python3-matrix-synapse-0.28.1-lp150.2.4.1<>,rL[! /=„DAخQ`!*XW7uʲ sid_/ pL3k# 6;{Zn (V[A k1o ХuՉxO zh%@Sg^>~2y!>v1=#O. ܣq 8)(F`hpn+ O/wB{iHq˧[0#:BI̵Է `U>FKl?K\d  , Q  0Zr z}@' 1 ; P t* zdDՌդ)H))(ٕ8ٜ 9 :ڔ =,>,?,@,F,G,HADIUXZYZ\Z]o^Qbcd!e&f)l+u@vwx'Hy;zJK KKKXCpython3-matrix-synapse0.28.1lp150.2.4.1Matrix protocol reference homeserverSynapse is a Python-based reference "homeserver" implementation of Matrix. Matrix is a system for federated Instant Messaging and VoIP.[! cloud131v_openSUSE Leap 15.0openSUSEApache-2.0http://bugs.opensuse.orgProductivity/Networking/Instant Messengerhttps://github.com/matrix-org/synapselinuxnoarchgetent passwd synapse >/dev/null || \ /usr/sbin/useradd -r -g nogroup -s /sbin/nologin -c 'Matrix Synapse' \ -d /var/lib/synapse synapse test -n "$FIRST_ARG" || FIRST_ARG="$1" # disable migration if initial install under systemd [ -d /var/lib/systemd/migrated ] || mkdir -p /var/lib/systemd/migrated || : if [ "$FIRST_ARG" -eq 1 ]; then for service in synapse.service ; do sysv_service="${service%.*}" touch "/var/lib/systemd/migrated/$sysv_service" || : done else for service in synapse.service ; do # The tag file might have been left by a preceding # update (see 1059627) rm -f "/run/rpm-matrix-synapse-update-$service-new-in-upgrade" if [ ! -e "/usr/lib/systemd/system/$service" ]; then touch "/run/rpm-matrix-synapse-update-$service-new-in-upgrade" fi done for service in synapse.service ; do sysv_service="${service%.*}" if [ -e /var/lib/systemd/migrated/$sysv_service ]; then continue fi if [ ! -x /usr/sbin/systemd-sysv-convert ]; then continue fi /usr/sbin/systemd-sysv-convert --save $sysv_service || : done fi update-alternatives --install /usr/bin/synctl synctl /usr/bin/synctl-3.6 36 \ --slave /usr/bin/hash_password hash_password /usr/bin/hash_password-3.6 \ --slave /usr/bin/register_new_matrix_user register_new_matrix_user /usr/bin/register_new_matrix_user-3.6 \ --slave /usr/bin/synapse_port_db synapse_port_db /usr/bin/synapse_port_db-3.6 \ --slave /usr/bin/rcsynapse rcsynapse /usr/bin/rcsynapse-3.6 \ --slave /usr/bin/synapse.service synapse.service /usr/bin/synapse.service-3.6 \ --slave /usr/bin/log_config.yaml log_config.yaml /usr/bin/log_config.yaml-3.6 test -n "$FIRST_ARG" || FIRST_ARG="$1" [ -d /var/lib/systemd/migrated ] || mkdir -p /var/lib/systemd/migrated || : if [ "$YAST_IS_RUNNING" != "instsys" -a -x /usr/bin/systemctl ]; then /usr/bin/systemctl daemon-reload || : fi if [ "$FIRST_ARG" -eq 1 ]; then if [ -x /usr/bin/systemctl ]; then /usr/bin/systemctl preset synapse.service || : fi elif [ "$FIRST_ARG" -gt 1 ]; then for service in synapse.service ; do if [ ! -e "/run/rpm-matrix-synapse-update-$service-new-in-upgrade" ]; then continue fi rm -f "/run/rpm-matrix-synapse-update-$service-new-in-upgrade" if [ ! -x /usr/bin/systemctl ]; then continue fi /usr/bin/systemctl preset "$service" || : done for service in synapse.service ; do sysv_service=${service%.*} if [ -e /var/lib/systemd/migrated/$sysv_service ]; then continue fi if [ ! -x /usr/sbin/systemd-sysv-convert ]; then continue fi /usr/sbin/systemd-sysv-convert --apply $sysv_service || : touch /var/lib/systemd/migrated/$sysv_service || : done fi test -n "$FIRST_ARG" || FIRST_ARG="$1" if [ "$FIRST_ARG" -eq 0 -a -x /usr/bin/systemctl ]; then # Package removal, not upgrade /usr/bin/systemctl --no-reload disable synapse.service || : ( test "$YAST_IS_RUNNING" = instsys && exit 0 test -f /etc/sysconfig/services -a \ -z "$DISABLE_STOP_ON_REMOVAL" && . /etc/sysconfig/services test "$DISABLE_STOP_ON_REMOVAL" = yes -o \ "$DISABLE_STOP_ON_REMOVAL" = 1 && exit 0 /usr/bin/systemctl stop synapse.service ) || : fi if [ ! -e "/usr/bin/synctl-3.6" ]; then update-alternatives --quiet --remove "synctl" "/usr/bin/synctl-3.6" fi test -n "$FIRST_ARG" || FIRST_ARG="$1" if [ "$FIRST_ARG" -ge 1 ]; then # Package upgrade, not uninstall if [ -x /usr/bin/systemctl ]; then /usr/bin/systemctl daemon-reload || : ( test "$YAST_IS_RUNNING" = instsys && exit 0 test -f /etc/sysconfig/services -a \ -z "$DISABLE_RESTART_ON_UPDATE" && . /etc/sysconfig/services test "$DISABLE_RESTART_ON_UPDATE" = yes -o \ "$DISABLE_RESTART_ON_UPDATE" = 1 && exit 0 /usr/bin/systemctl try-restart synapse.service ) || : fi else # package uninstall for service in synapse.service ; do sysv_service="${service%.*}" rm -f "/var/lib/systemd/migrated/$sysv_service" || : done if [ -x /usr/bin/systemctl ]; then /usr/bin/systemctl daemon-reload || : fi fi*!{"ob00]/n/n{{2.2..~.~..,2,2OOllGGhh[[((nn''''!.!.++::$$1K1K::CCQQAA ffXXTT^T^Tn>4Q<@a&DD h h C C n PBT=9 [0 .8'V.DGFPTqgtt/qNr 6Q % % "sc qyAW   "6 : : ~,1,6,.&.S Rm;9ZZ ,j$30V;>  cE&< ) w  pE9i Hq%" p7____ v v10~699'O'O  ! !.4.4 >>]]dd  2pDODO55yy d d ; ;\J}-%5 E 4B NZ L b! [/N'J))xAAA큤A큤A큤A큤A큤A큤A큤큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤AAA큤A큤A큤A큤A큤A큤A큤A큤AAA큤A큤A큤AA큤A큤A큤A큤A큤A큤AA큤A큤A큤A큤A큤A큤A큤A큤AA큤A큤A큤AA큤AA큤A큤AA큤AA큤A큤A큤AA큤A큤A큤A큤A큤AA큤A큤A큤A큤A큤AA큤A큤AA큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤[! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! Z裷[! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! Z裷[! [! [! [! [! [! [! [! [! [! [! [! [! [! [! Z裷Z裷Z裷Z裷Z裷Z裷[! Z裷[! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! Z裷[!@[!@[!@[!@[!@[!@[!@[!@[!@[!@[!@[!@[! Z裷[! [! [! [! [! [! [! Z裷Z裷[! Z裷Z裷[! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷[! Z裷[! [! [! [! [! [! [! [! [! [! [! Z裷Z裷Z裷Z裷Z裷[! Z裷[! [! [! [! [! [! [! [! [! [! [! [! [! Z裷Z裷Z裷Z裷Z裷[! Z裷[! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! Z裷Z裷Z裷Z裷Z裷Z裷[! Z裷[! [! [! [! [! [! [! Z裷Z裷Z裷[! Z裷[! [! [! [! [! [! [! Z裷Z裷[! Z裷[! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷[!@Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷[! Z裷[! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! Z裷Z裷Z裷Z裷Z裷Z裷Z裷[! Z裷[! [! [! [! [! [! [! [! [! Z裷Z裷Z裷[! Z裷[! [! [! Z裷[! Z裷[! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷[!@Z裷[!@[! Z裷[! [! [! [! Z裷[! [! [! [! [! [! [! Z裷Z裷[! Z裷[! [! [! [! Z裷[! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷[! Z裷[! [! [! [! [! [! [! [! [! [! [! [! [! Z裷Z裷Z裷Z裷Z裷[! Z裷[! [! [! [! Z裷[! [! [! [! [! [! [! Z裷[! Z裷[! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷[! Z裷[! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷[! Z裷[! [! [! [! Z裷[! [! [! [! [! Z裷[! Z裷[! [! [! [! [! [! [! Z裷Z裷[! Z裷[! [! [! [! Z裷[! [! [! [! [! Z裷[! Z裷[! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷[! [! [! Z裷[! Z裷Z裷Z裷Z裷[! Z裷[! Z裷Z裷Z裷Z裷Z裷[! Z裷[! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷[! Z裷[! [! [! [! [! [! [! [! [! Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷[! [! [! Z裷[! Z裷[! Z裷[! [! [! [! Z裷Z裷[! Z裷Z裷Z裷[! Z裷Z裷Z裷Z裷Z裷Z裷[! Z裷Z裷Z裷[! Z裷[! Z裷[! [! [! [! Z裷Z裷[! Z裷Z裷[! Z裷Z裷[! Z裷[! Z裷[! Z裷[! [! [! Z裷Z裷Z裷Z裷[! Z裷[! [! [! [! Z裷Z裷Z裷[! Z裷Z裷Z裷Z裷Z裷Z裷[! Z裷[! [! [! [! Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷[! [! [! [! [! [! Z裷Z裷Z裷Z裷Z裷[! Z裷Z裷Z裷Z裷Z裷[! [! [! [! [! [! Z裷Z裷Z裷Z裷Z裷Z裷Z裷[! [! [! [! [! [! [! [! Z裷Z裷Z裷Z裷Z裷Z裷[! Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷[! Z裷[! [! [! [! Z裷Z裷[! Z裷[! Z裷Z裷Z裷Z裷Z裷[! Z裷Z裷Z裷Z裷Z裷[! Z裷Z裷Z裷Z裷[! [! [! [! Z裷Z裷Z裷Z裷[! Z裷Z裷Z裷Z裷[! Z裷[! Z裷Z裷[! Z裷Z裷Z裷Z裷Z裷Z裷[! [! [! [! Z裷Z裷Z裷Z裷[! Z裷Z裷[! [! Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷[! Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷[! Z裷[! [! [! [! [! Z裷[! Z裷[! [! [! [! [! [! [! Z裷Z裷Z裷[! Z裷[! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! Z裷[! Z裷[! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! [! Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷Z裷[!@Z裷Z裷[! [! [! [! [! Z裷Z裷Z裷Z裷Z裷Z裷Z裷a409d14fd0654fa21db098cf33a6204c41ca8bdb6c41f6c50316531941376d28e8f5e48358e4e31a59e865830ddb64858e76a58f572fa890ae2d783b0308a4102e8b82e2e6524cccfe7943272b26eb65708c1e8c2fde38b9135dbb0cbaa37339de4944c63866df01ed88121201cd84d0367a48bf0297b0c7d88eaada842ef0efd47ab16152716fc9ca17bacd35e6b3b6b0895ecdaca00bc4f38a42e1c6a6f06f2cf263c4d69f8498ea2e39a841eab0745e5b56fa7ce3701077bdd17f044c153ca424dfff8fdb768473dc7a8f9108986e07457d3ac6e39ec556a11d8b471db8a80055bb77043e8895c8b7f1c3746ea86658e578ef39d6744b07588b3dd19478215b1a52e8ea3be52298d38c7055d4f64ef4aa919201408197b12b4e78f938d6df01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b5c61a7b0027dc08e2fdcc9a9d409215a01c1dc66874e21c7f875aa42d9f4fba4bffd58b2a8e6a120b308ab3ba088734cd996b5262839188132fd532643a1c7c00bf0d210a423e31df7283f12fa24bd1111fc6793758729934c03960a3ba0f761537baab5c9ddf334980e551f7836bd996012aa4d170af240a9efee10f6858757537baab5c9ddf334980e551f7836bd996012aa4d170af240a9efee10f685875703fa7d630ff93f4a6df0ac618e03a31e92ac7eb7c80725a177e96dc18c70801857904c921878bd061f9012756097cd912c9f76abf8fc4d3303ed5dd2d4ace52ac24b6ce3b897f738b87b9f52253120cfefc7885c8e0086a26381663c249df8e7e24ea31d79811e3b404fee1b70fb194ed0f175c5cb5742ace63ed61da6c83ae9a04b709b031da2278b145900c9ae672fc22683c92c6e0cbea2a6439354b37328318c54cb84ce94120c9eee1ab740991bc650f1a6e2f1cc4a8f6ca170b311d03bf058f1bfabb3945746697680edb45d9ada79c24a6013cfb9dd686d1323ddd2ae12facc632b73d87f647cc2f2ae330a7febeec57229e964ad8d00313d3e0e1ef76ee18d7300b9d0c973b8398dcaecc746c2cf59833b91a7c1eb2bfa4c32a8bf37f57f0caae34db30586588a0be69afb3bfe4fb4b11d5fc162ff3a732cb0af7dd3554418df3f91e8fad25fe2031332bbb2215ffaa9fdf86b62ebf4e1e486c24f5535b77a321e6a4d12f6244b55d2eadd545677d190ebf7960823760e065f72b8336150137d4c463d3068e1d1799e40771449ff133ba8fa7c51b293c4641dc8bc6fc02844041f565242ab5b39f620d97669d8541316d797f8f654c83a14a4d111ea94fcc79d88f3dd146f987f4e67de4c97f9cd13225faeb2aba342e8bca0238e6bc8e10df504ee1bd452f86ce61a909d5c179d6c8feadb6328291cb9b7bc8d4badc8e10df504ee1bd452f86ce61a909d5c179d6c8feadb6328291cb9b7bc8d4badaab287f41cddc8e842fa38e2390396bbe9915e668e1682525849b06ce6e846e3346dd17186251a3947116c52820839be23d80d7a5be0d45c064f9528ef00364f16edbabb29cb31972dca0956be686ace85dfdc5410affa08a574be2a8bd000fb5bf0d67c6c87adb6a4d3b7c13ee9e46297d231c0a8d24de0dd75d4dd333a39783dc6d1590d474ab548df8396795dea06c7fc87e88a9e3c81661c0b63749fda0451ca779279288a4bcc162c9e8e07a7e73a418d45039d8c4bb1ba89ad703f344fca8c2a0d75c89fe3d3b33ef706d96ddb481fa648afdf22a456d1c5b7a95a5879ec539771faa68b63412d5742dca34aa727a4593ba5f02cdae29d9728b5aa93b2b7ccd30679bbca0df3dac7ef90d542e55078a8509447f17e716baffae8cefa7ab7ccd30679bbca0df3dac7ef90d542e55078a8509447f17e716baffae8cefa7aa934ae2396f287b78dee8326e36f6c5bfb021bb38b39b94590b2e5772ab4d98ea934ae2396f287b78dee8326e36f6c5bfb021bb38b39b94590b2e5772ab4d98ebfd8817ac2402544335b292d1d1b68c5f4030f5909f1815b10f6210403a436ab21dc1570d6c3eaf81f2529a33855841fa8d50abb87d5c3163e0b77c24c0bc6ad2ab3f9415e11a9ea4f2ec5ef2f718a6d4c6cae749d8e3d574a5173ce2caf36cea6fd467fb07790dbed03231f6763d15dc9285c298ddaae6fd2066ddb03c250bd7a415741d8b9b692ac3bcb9346f7d467192b6ad05fb76a592969f8efa76465ddd42a09c4e1c71ee05d5558dbf25f95adb5462a4d9c397a81d5a3d0731251ac10ecd3618106ec9fbce3f187da6347438e7b06fa7c749bc78b31db9d8f10f1efb1e3433f9e58e90aef355c5b064d2d3bc0b7c35c5faba2c608d32fa9351db820639c8581ac1d2045cae790e0d205445ff5477046aab18690f7a6bf6c028514c1bd1b668e1d0f1a91e42576575bc5dc5c5119bf99a156cccb09afcb2edde6f547cc1b668e1d0f1a91e42576575bc5dc5c5119bf99a156cccb09afcb2edde6f547cc5af26e1586ca9cb1e14650e5716dffef45ad185bf06c4f4e1da2be3558d86241145f8a4928c69c7e10d9af3a4c6706b6ec974a363314f0612df92f88df52fcc9f497d53d19f2a7be6485e28bce8d6f1ca91447384674e5281b4dbd64e20a3c189e9b7fecaac86dd0dc91201c1b96e71d5a87638d50c39c75dd96ca7027ba4e328466d2b4c038303c31f0a0266e6afb3fb58f40d40f4c5d8ef4ae0ed564541ad0fba82274bf5762f296d257c019db8abbf804e7f158f7f2e2c2763c7683cfb614f8db57d08dac19e2aa13e1d3d3484d8731166e3c1934ce974624e75541701df0248abd7260fc1278165cc8c6392cbe9e1095bac6f8a7c730becd4a2b944a8b56a2a69f1c924ce4dec5f2dc3575f720c644394aca2d9b7c6ee7f38d642478479494897b1ed19bf615e99d802ef61490bb5d8556243a91f9f9237b49f2286e44b1f5ccd1007d170df8e805b4a8c08279a89e416dbce60a82fa7c4f233f77f1b79d097b4df114eb7b210bf7abe8453089f15e5bd336716620690e7646a36811e1cf8ca45422a0efb70e20faba2ec9feaf6194291a918970eb0a30eb59fe8333c72f416e2282bae8f0c8a8f867cd0028413c2e668d19b6da6415861511c880439f3925dd1f92fde01f364168b7d2971787a57204c63bd3bfac533dda5695da3c499b6384a37217e6067038fd85ae0eeee643ae1e8f9406da4c9cd101a2d79d8cd63b4eaea4429e7801f81dc5ff19cc2117ec80c520e2aa1bb5a7b9248b560fc3f31d8fea4b221b933c63997c8225a812f497e478419232f6309bfd27a941259db2546d8af3f014fa88c3b4f2d3a727e8459f562c7738ad0831fd4431e1b94fd3c27b6d4849c85af44d38b65c330616d145e03aebe314cad0e8913fc7ef780fb1c485951005f9ef68ee9a9fe4f78f119cf2a74a15e119165bb8c3579e3c452f7f0bea8aab5f26d2f7db788fe5ce40cb778976ba4674c4f0db25e624d921f8f61a0f33d2af1ba1ed39ced1cd2c806f16d9125d3309d061fe30eb8f3188bd1af32a8a39b9cdd9209cd37b82d28ca1a8bfcffd29b223052306f47ffc909572ea841e124482dcad1d7e4d4c27437fa3cf157b08df64f8db0898e580a62b281fd9c552c05c8a0154b2b1a6b0b146fa4df672749e2efcb19f7505686ac347538f2aee95de4b9f9ffbd029a68537d49c37642116b254fd3d17f68b412d62487cb36932b74642cf4dc29b79208165f888a920721347308a42afea248b46c77979cd75d129fd166c6449590ce860e50963f44606559f0ada74d1ea81fd5898f1cbfb0df691139f7f31ba432b214a19f61162edd710e64c885ae61aed4561e770b100d203beb5612b0b5f2a90b7c59bebc52a7c94ee648650c75e5004d00cb18457f988a6f7f616928e64c2bbb3bbf8e71d733e78315c64777184586159c8f3f88cb05eb9ac2cc7ee4603eca145e703bffc5b296122e3c5288ca6bde8e1209e33532689766f40f83541b81692c7c10d3afcd88131e3a5e18cc78c905a3d2444c6cba48f6d7e7751e4c546e4666ccc7c8db0eab078e9510cbd6a01e42133f1c56f0c620d520a6e935c18d63f7c13e09c7a65a47cc16fa512f7718e80768092a7efa5af86043c22735c6d98fff28522e8df1415501599b3c565f16bc9d53cc0976b64d075269257fd0f6201f885747c4f9395f85590a699743e244b410b6a64b9b0a206498bc09e0220b7394a8306ac53fe4eb74d013d3e55e147dbfb2fec008d7a40669780dea6dd762b9a3503febe6167fdea7298577e2475cb9ac7edc88efa50fe739976093b1d0a241baf4bc1340437bb62ebf4b67c1a27b780c4bd9396268cb9ffea8371aa9dd4506791d23b9974deb77db1ea615a1b63db5713df40d2172f03bf9a25657f54d02cda7469b98a222f61e1a246f8852544cd0c59c2fbe12022c6b39636b9ebec8f8e98d8db455a37e8e1ad2cbdc2392e12a7c28764399ab1ab5d9e60bdefcff66e0ebced961678672842c4ee0791b02f8a909f63637c3381e6051144614cc83e3640ec5b298f2477fcbc2e806b50f79e8315e6d789784922410fad211cb8db5594fcc79d88f3dd146f987f4e67de4c97f9cd13225faeb2aba342e8bca0238e6bd86a88e89be6f5187f965d4b896c725056ef75c2308675299652f3687103d8eefa9a985a7b0661a3ca67d6f92e23359e06db4604649febf81254a27cfbda35f2fa9a985a7b0661a3ca67d6f92e23359e06db4604649febf81254a27cfbda35f2d296b042bbaa4afb312724bd58c2d8b394b60d2ff1f20268a2a6465e90e487d9d296b042bbaa4afb312724bd58c2d8b394b60d2ff1f20268a2a6465e90e487d950256178c2d5273fd32c6ece882689718bd40d7aab9d442ede5e18b4f3a40ac2ce8f528a77f11f4af3a1cc6f2b045921702f853e60995ad7c774bb2db786acdd205681493dcdccc33307fd8e237622a84647c9af9706a50a817348d027003b35205681493dcdccc33307fd8e237622a84647c9af9706a50a817348d027003b358f128aef77ecbc1e9609a1b53e2f607d7cc7bb52b523a3cd6b720ad01122b9d5d9b0c2fd0c17a33f8af47efc9bd7a418bed072ac5718a0cd8070a8bbd0ccda86d83ab9f56dc0b1ba57a474dad6555eda5cdc7e69d5465e490551e809c55588c6d83ab9f56dc0b1ba57a474dad6555eda5cdc7e69d5465e490551e809c55588c6a496df308f4dec5dc86655cff19761b8086359ee625b33072c8ace12024af7debccfeffa68b3bdd901a788e3ccfeecd99822d49212d8263129db43f9cc648afe07b31ae36ba1283766858bfe7bc5987d4b4ac2cafaa0eac107a1c457d78ec68335d62460d7926013bfa9a01134fb62936dc9d1313117bb94c8e7f45cb493005ff67c9f5bb81e163afece9564e30929b7cee74e2885975229f3dc3d273e1d40dfb6219ba73ba3a27da2dea465e93c3fea08cbd322e428d90dd7760410e647502599741620586a479266b6975076ffca4eed4ecdf6f0f8d75fd6d6c107e3afaa7799741620586a479266b6975076ffca4eed4ecdf6f0f8d75fd6d6c107e3afaa77104dcfd9d96a5e9f3ac178f6108e9de68b497e46a3be5f982fecff39369c7b3cf8c73120a467c24cb088e404b3e4a3a09398534701362e27566e5df925a729b17b7735106c6c911921c692cda39c0c4178ae890ac3a74c0b55e81c38227cc052b3b5577f505099a43fd4b5cebcb370ceffa7404ce872f88528d8557e16516bd0bec37d4905914e499202a2b4567ff40834cc2fe3238a0caac3bf3199eb94ba03fac0a8189323fa883816d6c219757f29619fb6778c3ad90dd5156d3655898bd8f48349b58ebf702241c8aca318714f2616b1a8a7ede1bea33621416e47ccdf41589f18cbc3fa82dd49023b5cf54e92dd07593b1d94b0b3d37c8a83d081bd08ed13d0e0bf66a5f7caeb3a0f65fa577d0d3eae39b87f162a6ca1353c3460176a3913d0e0bf66a5f7caeb3a0f65fa577d0d3eae39b87f162a6ca1353c3460176a39db31c2bc3cd1691b6aed3d0ec9c30d99eaf30bcb1a2128468fb58e50f98d409e3f5578a9f15aadb2ad63db226e233cf6c55260ff8ab36006ff0688dc61c1a7091b977f5694c547659ba1e22b677904c773f131b1257dd0b9dbb90530e80ffdc35e5528b4ec518a9ecc74ec2512b422c9a9ded7c3c95f518b0c8a83edbd4e4efdec28cbf7bf505fbb69b199778d908563e3956bbeb7ada89f662f9953904b54fffed336f96ba63d5549a82dc4df7678ea259055494553c96cbdabaafa4be30cea9b1a3c8171c95c424e5999f59895b2902f01b452cfe722990978c7c395b50cbd9b1a3c8171c95c424e5999f59895b2902f01b452cfe722990978c7c395b50cbd94aa9692eaa48797beb875502299482ad2c0a434887afb2e5c5d0163bae9cd1f7f3e6109003019fb0f01cbe36f4b7dc797a0ffd8e3b89845833c5d57223874fd5dadce9a72a34d950355f517a1d9b2b8a4ce5ed1b5cd178c5c0245bbc2123267ad338f698c49318d9c087831aa5ae8b6c8f9d9099606aa1c53fc1fcafa7840234873d08d72ca42dd60e8427f2b17b358af28c59936fbef1893d6f5003da3364bfbc63fc71dc982e54c299a715e5c976a7aa9a93a890d2f33410cfa8fc2335ca68982784db6f0baca4bfdc92fed7b116634032d8baf10feb9004ed1cbdf4d986151b966a8991dfdcbc09358378fd48fba37a7a943cf5741f4e11ebc69dd56b75b5a66c90d36c0e7b1ab36968fb61a57f5298eef880e50370eb4c32e80154ded2f5a66c90d36c0e7b1ab36968fb61a57f5298eef880e50370eb4c32e80154ded2f650316579b8d4d739d4185cd4ba421d67093ac740faf81d3f5a53e4d33588d14a6553d4ef2541b92136dded697879b040f3291dacebd09d0468bb4c82f2efb2e4a81695b4d83e26217c067500675df035e603e8e7ddea45675735f9fb3e9becd4a81695b4d83e26217c067500675df035e603e8e7ddea45675735f9fb3e9becd931a342e56e98a9a28ae87b0b869e7c41e7321ea4bb0382d476813b45c250cd8931a342e56e98a9a28ae87b0b869e7c41e7321ea4bb0382d476813b45c250cd8efaea2600255aecb734859609eef82277a9d469f58376564c9bd95cdf1f39917efaea2600255aecb734859609eef82277a9d469f58376564c9bd95cdf1f39917f79363c1412f33030b084896d082883a89b3a8668d4daab37635877a92102e211e2abe1f0c65453803f87ba75b52aee895c914858b371f0051c3069a9d5a5078e6f205f0b4c1911ed05b8230b05d4156c7da9a5ab74c36e52c7aa19a64da827226603965919600e36301aea79056b6b96184ce76549447d2e9902b7e625053724867e247f48e21e4974ac5bf47765c9eff6b7e1aca8c48334f543c79249c29a517b14b74f2ef9cde08123d43cd80a6d7253f0b6a9f542a75df72aa24512d4fb386f49b8c39d3ef2778317c9534979f49cc85095edfe0a89bd322441e76471ab4a752ff617be4c05f0c4ce1c0d34b036e7a8d2eaff1876fb92b630b0d985d7d385927138774196295e708ce50a0d1201b64aa4bd91013ab28be06163399a614bcf06399d5d754dd8f0532e80e86f77e3c3e23333509dd5c0253d768d0f070fa37d0b876f794f84de290748ff5f89c3bc1b55ac26761d75afd05403644697dca5a32a63e58ccac880315e911a63d50335dedcfb07a799d0624f3869d9c4857c5317b8a4e61f33ae5b3a791d3b3a98e13e79293bfd5be3dbc366b23bb6cf24ec9f6fc13d4fc212c847f560762c0ed81367de2bb3cd28c5894f79e749feeeed4099d2fedb15d5be82db493ecf55687eda8b31826e5d5ee7208898391a7393321fae66bcfc44e3606bc7821e6937bb4bc11c6492b771191afaa464ea11e83c8ef3d5a82b9f3e0246814a2968c9cdc9f41fd22152775bf39285ac75018efbc82c08c093a5ed4447633ae60f6a99664b51b617356f2e193cc4ac37e8997b66a589118970bef135635d3840e71829c65b0244a4da0fc0b3bf80d66c6e291f1751aaa4acb1d9256f7b571b3fda50eadbf5ceaffb448c27d634096848fb9f088c8f7b8d0eab45611de68a323d838bdf99190259b7fc0db7fa96943ca0ec397f607eafd74bbe2e75084afede537804e429b4e889d18c9e39ec27764243cfbb7f9d7aa2414c23a66d6f55152d7f33c2bb909a768c14af107b5a9d5a8d1be2ecaba21aac8d0acb75363128f82652338d8543bd907e97a051186956e30b0462909c1e02798138f7a792dab8bd388c6cd78e8d6895f073c5d1760f512f0324cb4e6c665a90848786e1750e349155391249b8729c61e331c35bb120f2c1c6f216b581f0b1e93c08894fcc79d88f3dd146f987f4e67de4c97f9cd13225faeb2aba342e8bca0238e6b024609c094e084baf325a5d1e5458c38990a60c0a3d92a41b1ba200cc8c9abb6024609c094e084baf325a5d1e5458c38990a60c0a3d92a41b1ba200cc8c9abb676e86738bb3acaa1dcec6e270d1fee8c43833500feb69de145fd8cf7ebfb100750a4500213b21518b3b76b5662afcf11135bbb1ed90fceb608a1d2d2422adbd5ec06db67ab5fc9f46f238499bec9c5876847b9831768483b74a1fa663ef35a93b7686a7709f781f11c976fd9681a6bf43749f822a9d21f9cc21dc8a3188d5c07e802156cb592c187fb0b6c843c40445a8cede6353825eee3694ef4add55196836859f69b600ca48f2000a8450aaddf6053ab3bdfa78dcf6334065a49d36d55f26ba31d87b3fb46f13c04a240c6e5005eef2b97929a929892f39c8149c48ffbc3c7422a5a2c96228baee8dcdf034294e0bf533770fc7bd6f853c743ed6c275ace215e4c043db3fa343cd1dd9d15b3a7bcefc67f038c4b7388a9617e923bd070aef30c3544e52912ccb061052c044cb069d2b8e14275c83ed3ff9e33c22e405c69cec8fea56bf887aa0f4804be694a708cc7a363eaf12a387dfcfeffabe9174cd739ee25c7809e813e14d6c464235891e9f54efd77d7b276eb57326a0e953b13e12f3dfaa5c1e53c43e6ca418d4a550e7251a3b909ff5b51582871ab6eefdbaef730794775fb69c9ff0690fd775e4a8f762fb779fffc2f077388ad2908a14075b08121681f7edf77d4f51fa1fcc32cc9aec38f0380f1467c46664bcc1f4521484e8121681f7edf77d4f51fa1fcc32cc9aec38f0380f1467c46664bcc1f4521484ec2276863ebd20222ec5285fb8c8b515b8ea8b770be7b6d84c4bc516ec799cb54c2276863ebd20222ec5285fb8c8b515b8ea8b770be7b6d84c4bc516ec799cb54f58240cfb6e99819909e0602fc8e9c996fa332b7b54a1e57e130dd71a3dd79228aee47e580fecc50c036b94f2a0d65bed2d70254868e3176557f2a09ec92225a8343d1bb52b3dfa72000bbda4e845c423c2f0f5b0d70f7b400fabdc92bf477018343d1bb52b3dfa72000bbda4e845c423c2f0f5b0d70f7b400fabdc92bf477017ad2836d9a73a9e0c0ce5327e2cec9a8679cdd76b1031cc0ff5064a9afa9be32ff2adca3870ad628ba8d1be406c1f12488fccec793bac9a404568c5109a1bd568d6e4e119f5ed2afb143acf8f59b9c40829151dbb5a08636bddde1548784a166138e7f85037cbab622b1719d874d6f647bfa231cffeeccc5cc03e6aadecf6f93d80bc8867abb27809d6297fcd299541cc9e0f5c9ca79cd339f098d5b53ddac20f8993db6705e4d009353f21e6e31b209b9d20d254af1b9f6df52fedf368b9ad431436aea2ed0e440c8178698c0071a854bf843b9a66948fca4cadf2a716a748b614664c5fca74038dc60ca9c5f84d6af3d740449c6b6ec01da48da43b8c4d05ecc9b63511abc348d48b017b8868852d92414504d8173d94ea203516b91efef954a76d85df6fe830786b14325d86cd85193f940959030ccecfcd769b0e772c021fcf5c6b03247c216703d3f2ce039da6c2f65c6002d340aef3a2e08d5f3551202fcf5c6b03247c216703d3f2ce039da6c2f65c6002d340aef3a2e08d5f3551202f1f187e30350b82e8b18334508fd3056fe8e22ebe4d85aa10e1d1673eacc04a09f3817290f18b62b48cf2e1268359246d444afb0dbf2e49cc1085010d263b88cb9c7c6d4b6c2357a41948965bbe99d1ea4c1056e3e3d1484825973f7641149dc6753d78673a74cec24780d579c80bc02e2902ce92de451395d6010133d762c63007655a954051c2a46d594591d7f93e7089995db564d6b2cb2a67fdaa2a53f08c9e6425512fa7c8355760374ae968ce63407a982c7838ba944d8e92e098a04072e68812973758c200f5f6be42615582633a8176a570ad2c47b1e56f12cd1b4b8df727862cc9f68ad9412251d7510d91506432cca42c2894ca267028e21f53465b9e1af4d6d12f1c7e4137677299b0aaef7f36aaf8c155dd548883217f3b4f4ea7c439c187efb42640d7a63cb5af12887d4c2e222d6e58edd0825dd0492d5a80b4b7e9d6cb9c8da884f40f3bfec6279f0a84cc185c51dd97222e92fc701a0723bd9232c9258743d93c8abe1599edbbb5b36aed2484fd2018f8085082aa34a7956357ae1243cbd5f4e4de42fef91d8769dd250cf8378f07c9a31721c474729cf4cb022db8ea36762e4de58c2d3556587f92a4ea6c2efbae3c07c3a8c4f12bdc4e7b8dfb04f0df8224a9938a11ca00eee39a7a7beb3f70f5cc741613c79669b78a5601807b1efcebfcde12c74b05edd6edede80b5f03d0965b79163548f4311456f151b1abfbb886ddf95c1d1a04ee123831806c171b3886100cda806d82a1f932f4a2cc31fd877feb24a4e1437d6999ddd356e99a130573aa2d7fc1762c72ed7e8a7fdf62fae2648726556f1a8022f25fbf2afef8ba601640856e62b48bd96e264a6319274e7d61e47c4ffddec9f9deebc8d608005870865f6c4d61c269675b7f7aa1c1c5b9f6c3fc922d7c43e72de0e3dc4eff770aa54b93ab88ecaf495013ee69fb0240d37145f7871fa61c7f471848c56bf70caa712db10112d1b479cceb2819fb0240d37145f7871fa61c7f471848c56bf70caa712db10112d1b479cceb281151dff04e7f0e96332ae53454339ebc6d405ae7c9fe9493a9f7a4b119174b6dc9d00a3c873d79afcbddfdd21a9bfcbc09c2d0591370be04cf511c072291e3eb34a38fe4abf7903be32329eb6c4f0284f7e21ca385a2eca98d9361d0349c93eb692bfc7ba05b3b47de3a4b450af52418463848ec917bef3038ebb2ba8c489331f9cee13bc356f85d5552cb8d2f890a3f0b796eea1201bee66638c807ba3ca90c64e03a462a4a10a80c5df0636bfe82793f045440194772ac843701d37bb0b93ea0f14fc2a9839099b1e8bfa2fc510953f2a73486b74d6aecb5e081fc6bb803e00e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8554dfe3d2bcc9628fe0546291a01c0274f9ead0c9c51b1d4d15ebaa597123d84944dfe3d2bcc9628fe0546291a01c0274f9ead0c9c51b1d4d15ebaa597123d8494edeb49ab85a69638e4692817024746207caeb98ecb7c33c8466c2bd458d642154b9b61497f28f631c9ad31a6086ba1f7a11baabeeca50ce028b63a6d3e4a88f36a944a282e0cf942bf769b69b3a323c0f669d63f6eccaaab430b1bb9c90b06ec06d9317f5257e92ac4e1ac37a7ffa3806e57c11d4a4d8417cc434ba8767fa502605e74e87893e391b3511f4e02904f3f2147243e652d47e6ac848cd43621d1bc2dd07fe5a5cd01a3d37576a5e9b594a2158c8c3e482ba44d823e10db027f18ad8fe42f128648871b1a21258e525a56684bbd5ffe1b1ed801983a2c469e81e13729eb694f4ceabf3d8f0c77a076b5fbb84e8b424d02c49794d0e42b3a4a2fc2c959458bb3f14a93a574a6c011666cfbd87fa3dfbeaf47c256388884a4948cc368017d9a81aa51ad9cb0c050a26c5fac945fbb0440512da1f6f83dd9eba6dadfad5b026311a7b8bce51a28cd205c2c9650915e878a547e9cca59f67177ba38a7430af6ffcfaf042813b72b4d31a4f627a4dca4bdf38fea8445884a8d85f2af8591c140327ff3865124d1b1dae413c2f19ee728b220ab41369b6ac54efea91ac7777527e0103db9fc52f1bbb3f5c4819c0b27b1f68712c3a1a8b8b85bb823a69bcb7d2230e17370148257ffd1b09edb3231b38d265e53622f111a577947696970e2f086872de347205964bbe66e83cfeeb148fb27ea526fb96da43947bdf2efdbe04e364c382444c30d705b11c170b8ab555bfb3a0e7d7492ba7cf2c06f914262e9f8849570052c282731a7cd9ab10541385c320c618dc75a9652771ee33941e107f8174145780a947e269302667c1187feca14743ea57d4273119b9387f4c4656f9d95682fadececc62f61b59ea267961241476aded6212c88ae9f41801105f6c32b8fb36e36143118e35f9c3ab6143ab021af3cc8378c8e0b2a8ac1ed7432ffca0c9facfb17150133e02f33afc1ef5cff7c1212cbfd4ee45b0a2beecacad19bf35861056bb937b02647b553f21b27aca909c30ad57498cab82018d5bef6b6dc9086a6159f7c97c83d6e4ccb25b0369f51c0a4c834c718582d41a1e63494476936c3e74aec68802919d686d15f919bc043e90f216abbb7e2eae9cda088dba47be99abcf3df4dfa5110b329e44f76b705bd9678e095dea6a26c7720a4a9c2bfbbf554580bc6ca88f9b42fae48ffb528d7e2d929d6ae33178eb305960e2e511e0566798a85f6affabb745e216ecc61dba00ad4312fd96872445ea90e62205e4e378a84d9e02769ab350894709573196a22f6475117ed0027da720471a246852b03df58723df3d4aa0a367a80dab0ca49f716be9566ca31d4a985ec306f974d083d84adee3f6d080c7a2836d6c2b966ae9c53598bf7ad750d7d058d0ba3be0e25fd41868572574f6e2d5f3c41928d1256c00b1952441e5e8efca4c3f157b2e0fe18340b221091d14c56d637798176153bc12a3111131aadfb050cb12b62d7429c28ce45405bbb3355db28a655ceabb235cbc7c64b845bfb1a71c52661026fcb135a89bbbe65381a959d096e68c6ce1b37a76cf37ebbc15f917522f143374fda0bcde83c758f276278eba47cc969bea441a4635917025ab621e8196a38194b7d401337a08f2fca317bb83a6ae8a4dbef6500a07a6f7001eb9b5065637f1016795a32344dbcf9dd29c25eaf055b59d4aafef39f4cac2223811d9fffcefcd101acb632fa21ef94b81ced9a2a0ea48985a415f6ea6fd89c4b8fbece0551dd8cca926b62fe1f978d493309e18806e779421bc68ca7e28d364ea08fd82e2095be0ec7f824228c100bca55f4b84f6802e4dadfa6a957f21d55088b67016e811073ff7d7ecdd2056d13d4549613ef57bf443a7797ed3c39ef13b82f11fbbc3bfe6f4c045b893ee3df203e52505ce16c9cdc374fc5cf6a12bd73c2991391e44e9d4f182df99f85843ed91fbcb4e678f849c03a0c51fbd53ef25316c98d7af64e17a2e5f6e6ef03f7edaf4bc1c7e5856e5382d0335792a24227e148909beb8f72413961ad096e76573c82b024eab037206c00a4d2faec9f637d7178b4ebcd9a1a62f6093ff29ff2fb9f45d80fd389857e71b1a02c9f5331b18ddebad0e77d07d0a6c7cfa5434c5453abb08dabb5d5ca40c3cc8993e2ad5cbc1cb9419581089761a64849f4ef1c88988a084d274ab12e653ecab953b3390bd1768a333bfa0854725f4fd6fa797046cf678854f5f9ff6d7c13a0e69312d15fce058f623a7d8dc62a75fbab776b4247799f6f7f483b6307b557844f88ccbf141cfdae60ff66f9ba1aa82576b20a1725c2c66cb3e1bb6a8ff076422d1bbd58387c96b9dc48253e33b82227b8ae01dcb2f73971aaf5e793e22237f0619fdd199bc2b4468d74939b57b699a9c75e22edd7a815d65509e3fe6a8342c21faf95931327e95b9cd3014d589fad77ec259f77750ab35caaf3965ba776152b313e6ff233e74b9bbf0a95c8d3f2d3824c6a032182ddbfbfba95944bb7d0b9bc541314101cef43a43311d1aafe60cbdcc2f2f12cf9d71e821f735ec888ccd3a522e51a6807c69938bc8f29276d6634ac2e8ebc7ba4054e064ddd175e484cace2fa2fd41f31cbb615105cd7d1edb9f325ae616fb36ba68706d174e36dbeb89ed7869c369f864ca4688461eb63fb2ae2508a50b12b6068e799ea3b7fb3f3c26d21be331968e25ab1fe3f19f6586d8b9b7b91425354862edacfa019161c004b999582d18d2d4fbcdbd67d5e1723140f325c7ff2b5eb5a2d143c33c9387795fc30c002ef10895c4c500515acf785dbb11fb91595cfdb44b33728b050a5fda7089e0157cc90847db76eb849dc846a7e2d224509abce49f573528fe9e01889490e25edde8b0f34e57e67d0a5e7378b8762ee8d636d0cc3dd3830d3e6955f1faeb42725d6853e11dfef68e3594895946c1eb5da7c1c78af3ebf9d892ffccbaf798e0bcb11fe312b2bd8f7f3c6b532dfaaea0cf0b938169de3ee97668ed8afb12b358fa67f7583f61b50ce83a9f091f7a4da3f5c656d1540fac58a07b884e92fd1547c4c47ab1e8127a1760e6d7e69bd14be6087ea8715d8102bd22a53602aed56c361fc8267c285edb953a78b5455d9fb8d45580a67968b3cb65f856be27ff11661bb970f87b65a8173e05bebc43734edd20d89e8ade769a1f6c04edd9e7981c927e4c8a0f922ad68034f9eba70c12fabb74b7016d0a0115ed30da801ca609d8c95952502922a6b74e1af9af75b57fa01e0b52adaaff7b2ed8ea056075aca63e648b9c6ffc01a6c2eb8970d86bcda1e3e8f4e1fc0746729fc7e89c15f223980424f917b238ad218940d30dccf1acdf51e194c5a59cd5984f28c4a2f0ecc524e1841f7aa6c4305c8c2921882b23c3d62a9d97f20901b322d6e2d62d463b33c8c36140e928dd873b676f6bccbe2730217854caf71267b48d19de4c0573030f86693a3bba196fe55feb9ef059977308c9fad6569472fd986b5904de9227647b4ea0d7463b0b966c3ea9676154ce16090fc727d92f30bc7cbb142fc91c834c4ed9aceacf5dac4487521f32ec54a2774770a9bf61ac242e2809e4fd3269c421f93fbaa22e4294f00f41d70c4068299da79252c2497eb8a8d4eff7a4c3b26f74613e456f5dd95f842a2c2ef9e49d930185b9af07358c051c044121fca6a4645cd7764641c92339ea01fcf14e784188503341213053f1193dc6f42b7b3d8282427819619980689f8662537443e5f3e113460c7ecf66d6a88e38336529f9d98edc5bbd1135072680cb7c30097d15989719d41a589bd04381572593f587a487fdb9cacc7ccbbdda10ff3b1935559d8febdfccf8e194f81a312f3204a7c6bfa803b2ada1ab5d4ee2eeb4f478e11f23b8bd3219c2c9acf2b1774eee36997b5a0762a55614eb40c13cd56be99b68e55f89c8b301e74cbc9619ff297fc5218b1d19bd099cfa07253ebc9bbf2e9b92ebf2b592bb772e4636eb0d35bcb3f3f8054d5583719b88966cea78eeba1ab41453a6f520adb0bf028ef3c5d3a4853a07136b9eecdb80b7de627a98381f1e70fd685659369505516060f9dff45cc7898750c0101187ae9734e9e98bd257a20981cedd1cff2f22340bfc5433eb53a5465ad63140db65fce333add9ebfa8a5b1b26e2f6498260532ebf558643352ecdd9e52cee0ac268b0a72af78a7a65c56b01c0f62585a2d6a15f716b3a1a63c409a3b4f219a7b4e16abd8f3d565eb8ea0fa81152dbc9748e3b0edbb9cef973484523e56b21c7a333ae989f2b089d686359845adba1493617513a5baea0b65e673537e8f82fcd82804072c05b7062264d89fb881db1c1df0002187799d3644c42e9f56def1bcf18985af5f098d614d8e300b9ba6d0f1ab36514a5c59c6f1d42610eb7d8f043d0bac04276fe3edc67264920ae8b9ead975487688d70352bd2de7d58b2dbb6a4afeec63a7cd93dc1f8fd257d50b32dafde026b65174086800a19769f743a594fcc79d88f3dd146f987f4e67de4c97f9cd13225faeb2aba342e8bca0238e6b718e00587bef0aa3f9ba2bd68664a96f3c2812d16bc0409b3b9c34f8ecbcb210718e00587bef0aa3f9ba2bd68664a96f3c2812d16bc0409b3b9c34f8ecbcb210bc8e23bb79b65b2961f37ab43ac309d305fea9c892977bb4ce8e42f5f9ba881150e8dadd711e16a7235a33f368f95fa57dd5e7e66cd58654f3297a401d255ef5d5c3ec34f3449bccd574a289a8dcda72b9080ea1a2f7d3c8c38b8a5839f365da4a47f4d90d7930b6cc1664bffedff1de81856fe3ac9c0cc2583c3dd633fb984c54cb48d29be6940432653495b874f5590fc4b8bcfad6de73dfb3f1a970ff4fb7652d5cd58fbe71e9575943fada1f1297dab152d70730ce7e2728f35295eef8aad84cad6c239c579d376f7955dd7a6f660b7f311820a3eb6797cc863883044430b46e598e385ffb38389309cd6add15b37443b6e00a2afd02aaf5ca230b8f90b58a50ad02557a0fc67c386108f024ca2a2aae91fdc67998549adea542b576f12ff593270520ba60a0731bfc0bacd56a3187218978e16b6488bd74035001e9a40f8891c423bcb84795fb4b8ca2c35496b06bc369e1e6741235a536b13f92ca5d2b88976fbaf47a854041664053edf541f80890522a08222242f8f104ced45c32aa29b3b7dac4eb0bc6e3d1660c5dd32c40c8262cbe9f381dab54f6a10cad17ade762d9e050ed9c10999ac9ceef1bd03f79ddc1b71fe8a932292e23cddb64189754d0b67c6d2596a41fa2d81e2d5459427e21706ee0a2685d66d85efa3580350ae1c6ada460a039c038fbaaf71e12cf5b7b1679ef1cfab6dcf7fc082659ea8449d30bd400f800a821a304997024a93d6a8584c8fef88d08c36cfb543b36dfbd9679b7fc00db529973111686d7d8eef7bb8e4ed62002beeb2ed06c79ef32c1ff91f39edc94ceeaabe09aa33065c5962e9ac4a3461b1e7b9235bab9e74e78caecc3061788438a4f8895ad10285e0566a725ed555de28480ed2e7c16aa7f0cc0ea2e6a051b1ef08da961865bed7f5ad47fec34ff1ee33bd9a43796416ff32d623e7432910363eddabc596aad0fbfeb4364bc96d03ac951a5fcb40e3aae4d1eafef087ee3b3579dbf6a8774765f91437ccde9b16233cb04da611af6afa028cc90aab933cffdfb32953bdc6d9e134741cd2af62b87bf2e59e1e2aa897ba75069ed95300509d79a9f2816dc852e7f6dc4ed1e1e31aa0647a961ea1c33fb3d036be091bd00ae847ed439f9989fd4e90c3050e6fc6281d2d3f507c2191948d81e5b2ec336c8a81d1f037803ed13af1530b8af33b84de687872e109ad663d650c4981a44132a2cd7d8d307195294c208d3eca426c3cd13be6ed931d6cdb46ebbd13b2223e9387553aa68bef7ca9c5c1a1895e30eb28c890ff15d13b6434ad305037e320b7d4a6f2ec009e3acbd9fffe54871f288f3b9ecdade7ded4d0491ce282a38dc3a93034dcbeced593312c187189f7b300653e8c7b08680933d635df409d717719b4f79278782631d4250ff5153d2d579cf03eafa7c7635747823b8a88a91571d8f89815e9e6f0175a8a6ffa0df0baea0929f62450d2ecfe76eb62cc4ed9ff87cf4d5a99f53d6c94f66536d125f7fcae9abbbc64d0a70d55c3b0e004e252482d842a66de6912c6dcdfababda75229b236796fa83acced8bc49cf812b934da29980d69e6888e3dc5fadd1ec1d0160e1ba224fae9545f2a71ee17aaf1729f3a033ff2b99f5dc121e265904a1f1f82064863056e5dccce9d5de68ade66c8659fbf392e95631abc7f349ccb030f409a14d30935fa7220751ac6e5cb8712e21187809a640144d87f4a3905c598bd3d6e299b90870c2b53f277c7b2120e5b1bc00703a29acbb6d87f4a3905c598bd3d6e299b90870c2b53f277c7b2120e5b1bc00703a29acbb63b2bff616e0017f491179a4b7720dcdf6b5c8989a8e51f5701df5ba9172369b52315d73d4d6f50b7f6dc4c89af9c28d868577d63268bfc81221bc75ea3f12f1047761477ab8d94cb61bdf6d3e9e0187eac325ac60d9c1b087e290a6a31a278c6aeac8e1986811e6bfb6e6e7ac20fed40a28abefad2b6ef16d98b70a010c42ffc72233285891c9e7b332d72a662d8550271abdba9a350e5e45ea8473c5a83c59a941fb039237dae7e4facb26bbc297ff8cbc2a694656b3c11d9fb90b2c7975ef62a82384ebb9c5b3db616ed8986e29560a33211a666f6ccf17e6a3b8baf93b95c587a9b65ed7023b5ea11dda850ba47f131b16e9f84e1ddbea86f8b766af32bd7d8862c86bd79c528c44ae95fd3a35f5f0e0f3341491d14d5d8991c284764d73d3ec39cbddd6545655cc0fe88a5cb0b083c687af024ea4fdc431e5981055c9ad5cd9fd0c6f9f503276632b799427e47a40043806e59026877843484f256b295942391c8e1d90a4669e50865afa7e2def45ac5a1aa84d89c99839ddd52cb4e8000ee037a116568e8c28e2f24ad5a66cb9c39783477f05b13c1c4d701d9d76c6133b0c38297fcdbde3fc8e513b44bc3014a0d9239c236b518e2e44f04c29cef49a78edd3f9389401d77e0a537c6ed6920a08d268610b1e17537092991b56ebcf585e1efe441b82797862e22449560dd560419fc5aaadb8f19ac154cc3780b71bb484b2475886b03c0ab4f778a771b8eb820258c70e7d67326ba5c4835c9aba4f340073a174655a34bfa26b57dbc08473decd4419161e45b22a9389df79ed58afd047d53a04326ecc8375bc9c3c55d3f3b091eef0caea62e91e4d3d60dfd41f43db1f00f12fb8e749f8fb791c5eeeebf30eb5c95084bf4ea0af72657f117b5bff6cce57dec565f37ef615c2bac1f05ba49f7d885be6b5ac386920468a78c87de070e3b99544894fa3fd0e8e3fb5173c0c03478628b7ce5c37762ba1d3000f893f2d9f5b45a969da6c3bfe57af39b1fef66b1e8f47090f79f2889e4e9ba10b2128f1311aa18ea31f2fef86de0ba0f7d6bd022fc934d48f2b8cb74d4501389e4b3a2b55b70d204ab25fd34a350b00336a48931ea19822579d0f87c58e3ab4a2a6a5848f8e4ae588c65db6712266d9329a13a74021063956d00327e70b1d35aa9867894ab3555508c0b526ff63ae121e5ba94acece442fc7a5d638a439ee6ac86da8ea4a8ee7c07d77be044ba49ff6c05df494e8b2fde2a6101d9d15181c49b16ecf1c78fd2ff699ba59ba29dfc9fbb2baa5edc1512221fa01f7da36774cb53d6492eff0cf57a03aebefe5f997bf271a46489cef31320f6648ae04fcc2ecb385b946fad0fd7ec1d62a6438436b46c7245ca5ec4f5dfb34b2b737576d4dc2bb017f5deab5d693fa9005b94f849f91ee7e96a5a490b3b274495166a312cbc681d0041152d100725d6ec33f85c7baec871fb218818ab7b56e0ed583d1fb03bb1b6a652d473acbd0abfe6b3dd622722fa25a40224de1edd5f0868b4587a9423dba4bc8ea2bb73f45fb0fb9dc0c74b189a7413caa868a0f0a66def05e069396208e0200f9f1f8cbd13b83be2aedfef8d97b7a2678b6c1b1d3b83e4e7d151d55c17468c3a4dd716231c48e3badbffcdd2a397025842ad64790fd6236709efc1e169416d596288082e8d9528f8439f416ab7c93e871c27d80adc48a591f8aeb4e8b5a697bdaf19128f5ece1e62d3a477d4cc42bba89f85f84daf95afb0ee29ca69f481eca04bbb2750fe482984b47f42a4ee219a60aa208ed8d456cb742119722ee45f747b946e0503576cab54eb11e3e2b77f0b9d099f5137d4059415ac5f54f2ce570e4d4afef36a7b2aad2ad977043d9d135379fe8bd644be0215b4e01394a200a8a0c54e2ff36a7b2aad2ad977043d9d135379fe8bd644be0215b4e01394a200a8a0c54e2f8e0c24f077b40ae9e355cfd7c367bec5fd625c8a9c773a7049e7832f87d171b8ef167f5eb496d2939258c87dccd4fabd8dcbfcf314a59e72882882bd67f09dcfef167f5eb496d2939258c87dccd4fabd8dcbfcf314a59e72882882bd67f09dcf8cc60690517856c86843e8725d7657c801615171c2460ccfa4ce752fa6073e415d6382c610b4823dec26fc5ebafc172355c1902e1b9a8da7b91bfd8170082f457c08dbc887636a2de3eebfdc783d7fb1da1767438b1e86ad34b833d563516b229f2dbeb4893f9009f047de62c81f7f204c644fe4433075eca2b9f26bda1139236e24d45f1f3054da9fa47f105156f313d0cfb0e9803b892c063e1d2b38b19f3c45d4dd7565d60bc30ce839e452f64e68a2ff158959c84ce002d8649e635c88220503576cab54eb11e3e2b77f0b9d099f5137d4059415ac5f54f2ce570e4d4afe3845e8875abd3fdf38bfd7e4c217ada8ffbabe0d74426b03491a124add433ca53845e8875abd3fdf38bfd7e4c217ada8ffbabe0d74426b03491a124add433ca50503576cab54eb11e3e2b77f0b9d099f5137d4059415ac5f54f2ce570e4d4afee8565c9669423f7962e8e6da1b1c8b42470ccdebb31796a24e5d71b4bedf1a67e8565c9669423f7962e8e6da1b1c8b42470ccdebb31796a24e5d71b4bedf1a67d988c047345cad821dd5355f0eb19ea34ee9b2f8313ad6dc640d49a11e1a8bf01510df8f52b8cd73983b403bbda3b368e770a83c90beaf20ecbade20a2a4db2577f52e4666a4d9f556a5168d0d5f3fa0e6b099d0cb024192693cd26a359b1e6b77f52e4666a4d9f556a5168d0d5f3fa0e6b099d0cb024192693cd26a359b1e6b4b266770e9ae6c013a85bade35ae1a98535d7fc8020c4b25f1a31088a504703d06a1064a9838bc35f71f9b8ca3534ee42f78c67b5a0c32ffbd255bb6dc995e6a1bf8d09d463192cb1bfbac757d3b1c1816fc3041eed82b17c676f18aa917a1731bf8d09d463192cb1bfbac757d3b1c1816fc3041eed82b17c676f18aa917a173e1dda538617de758f2de2c2ff9ada37236460931a1084cb42392d6f16d6cc6cef7ca03a3c845554165ee8338139c53bb27b22f72a3a1cdcb9a2c471981c4bc8c176a1b26ad640f3ba5f42978fc809bd89ba3e27e72acc7082063f0713fbc3e8ee82967632d2d7542c4053311d2016f0e60e08da73db9ba2f88caebc5de685ae5c735e481552c2a5560a6cd93dc4ddd6ccef4dae8f82d21d44132c2dabeaab711c735e481552c2a5560a6cd93dc4ddd6ccef4dae8f82d21d44132c2dabeaab711b77f59a12a4ba2c58e1a325447e94ba1362c3e11203f8a27557a50bc8e557cc3b77f59a12a4ba2c58e1a325447e94ba1362c3e11203f8a27557a50bc8e557cc3076db13673ad45c8e4848535e03f8201d9ab704d4194636a131e92dd278f2d42945f9193e9eb4d875a56d513f72eb06127cdde0e7200b3ed683cabeb27bd1100d5220a43b5d4a1daacbca30aa4ff34071a7a4efb7986620fb13fd67000893f23d5220a43b5d4a1daacbca30aa4ff34071a7a4efb7986620fb13fd67000893f2347dcb72f103220db94aa15e5a3d9c0e86ecf6cf31a484de0e16a8715ef5bf59b47dcb72f103220db94aa15e5a3d9c0e86ecf6cf31a484de0e16a8715ef5bf59b56a3160e8f768f6333d9251d98fb3ef122f86237643ff5cb3b63a84bf5e0be3e56a3160e8f768f6333d9251d98fb3ef122f86237643ff5cb3b63a84bf5e0be3e39462bfea6f907d1acfd28794fa9b5cc759a55a71797e937442fab5ec9c17aa1abfa7305cf1e1d8133eab4402460f49ef1851ef19aad42bb68326353e1b269e7d23bc6c9dade15217e07c31c1e963ce64272de30957eb72a50d4b6a68ef1f4fed23bc6c9dade15217e07c31c1e963ce64272de30957eb72a50d4b6a68ef1f4fe2e979736fc58463f7e5bdaae4b8b7e45efaae34af7ec6212b1843fd7704b83532e979736fc58463f7e5bdaae4b8b7e45efaae34af7ec6212b1843fd7704b8353bef2e4f199db26fb4cb9d65bc29221616bbac4117f0c84df73fbc5a1c18d890dbef2e4f199db26fb4cb9d65bc29221616bbac4117f0c84df73fbc5a1c18d890de1ad5e05f6204e4becef529a23b378c1307f22e560ac939e40300ab206e303e3e1ad5e05f6204e4becef529a23b378c1307f22e560ac939e40300ab206e303e3be6bdd4c7a5dcd57c0539bee80755d127225db29813256d1f324d1dcc41b2a4fbe6bdd4c7a5dcd57c0539bee80755d127225db29813256d1f324d1dcc41b2a4f9cc10578abd70182d6ee84aa36818ca29b3d2ed5398b0e534db5207ef16f5d0e9cc10578abd70182d6ee84aa36818ca29b3d2ed5398b0e534db5207ef16f5d0e97ace380b76f62cb242417b0b645f7f1192be17de2b836e022229e97a8ce77c997ace380b76f62cb242417b0b645f7f1192be17de2b836e022229e97a8ce77c91e2da3c0fa5f178bfd6fafbdccb606a160e3a248b70e57562422235426b0b695ce6f922e00d398133ba62181983a065bad638f58b6aa673f2ec5721e4d7d383e26e31d79cfc951c1117f9a9b08c7970824dc5ab71f03dd6412030023dd396e6128ebae66b84a4fe07bba8dc1d53d974e7ec1eceffe3612fff9c64c999ab271079c9a83406a018b8f986f2a9d835533a6015da116c3ada5c7180c0769b5ea9e8c8427203eaf56f82f4840b413bdbe16b086bcdcb2466402436500606895903dca049ce6c14654bb227d22f0a0db1422d6d02262ef3744355a9abda3c8620f555d3b4f73cccf4bfb5941264d66d6ef05aff2aa5783070b84b60ab4ea9d4cc0de1136a4154ddedf8373a6fe2535cc4c1570a2072e03dc6d42df93b19b3b766a1c37caa0ab52a8a27818ac82631bd87bed7b4f2f85920f8928efa612df0df3958927d48ff6138ecd594dae74b6b04d8a86520e1402463faf5aa9a72b0cf61a81bb18fc598cc023e67e572157960b6f095d9353b8650b3977841db3b8572032cf3862e9ad9b8a1029e69a238827da0a86e36b914b1c5e0aa9cb5d4c30a61325c0af2965f2d8492897e028870f072a2683368688d9900b1bb33742f8e6c8a82ba4bd4d2f271d896bc174771a3d822f046044b0774b3303e3c1de437380dee7f3dd1ed0aecff21110b20b24772d3c0ce97b727529c679e3a6c8f3c840b6a756b2385294ce7eb7ed612a3bd620acb55c47bcc73c3a0268d62b11d62d9705897861b99b82167d7ca58478f6f9a8bbef86612057376eaa35bfd11331660ee1a29dd2bcf119b52c03d852e6a83796c408d4f81abec9a4ca2a7eddcfebbcfab06c1d995398c6bde992453a795fc41298ad7fd71f435a8edbe014d9ee165be81018774d8b01c006f9418cda59607e166db82a74b967c5a2cf9d02b79a25197653f04c8a71fd9d82f4a870d08f0d7192752b265ec2aec64ce0b83ecc5cd1b916202da3eedb078682f4a870d08f0d7192752b265ec2aec64ce0b83ecc5cd1b916202da3eedb07860ee01ad3c207c5f35d0b9eecccd7ddc0e5f8b64e22e70798899556b7db52e00370f5786749c83e13d4146ec0fbb50a0221619bdd2735cea0fea68ea028ecdb4cf141121c4e270aab3b48ca507eed03c554f8908aaaadbbd7ad308d723a0ab46b9084209156a752a137456c897ef4d3e2f5d0e75a720a6974232284a0595765444b63187d848e4052668aee3abfa887c9bd0b2bebd52bac72066c678c5b05ec4bf147c55a9894d5a8ef5dce47cc84a47195ef96851aeda85a58f43fa50d9e397df70c51f23792d9b8efce2dfcbb3fa02c4ea1d117872608884809137b4402a5e8e7a2e8a3664b4af50069b6cfefa22ef4c725d9605c5a46728923f86d1793b8c873750d2bbdb98a5c6f82e8d93918e35d5b6b73b8906e817406ebefa2276e35921369b65a83189b131d1d3e59028fefb063b960345552e0615f8efe431d42ae7a2101757fb447a98ed5aab14430deec2c60029c0ad8470dbec2a884a50700d307a451cd57eaa1000fa6287af453d6d6620dbe437c00982f4dbd07d7130a73c57d01381583fe3c934f60c8af016535ad173cb9faaaf2a0fdacc14c1a9eb45a7f6951bdc0f082c36ba826dfc7caca4bac3884a278905c16c93bd5f6689f178c5a51df1b80c8439e5477a936f252a8fc755d9170276615fea9d3e3b37183efe92e97cd3dd188c711f760c8489770519489fd805d09d8e30f5151267b9abcc69a2cda703c67708a76614b7beecf0b389a32daabd36d953900f2b96e6041bc5a9cb93f703c67708a76614b7beecf0b389a32daabd36d953900f2b96e6041bc5a9cb93f64477be641e98c5fc649da101bf81f242ce9bf8244de9df761882630fa4c46c9b7ae528f57aad1405fcf391106d2e162c6c783565c390d24a81e96d8b4093b4eb7ae528f57aad1405fcf391106d2e162c6c783565c390d24a81e96d8b4093b4eaee86b8360f23c504f9284a8dd09aff1ba2727052a0c60694545d5ef2415501a3be0eea11c8234bd6c547bc27930f06551a3e6c9e33a68d866c46d97795babbef837d921aa8d5747da4201278caa60293f3128528aec4a5f5c6349de4810533958e96be8dd694b62d472ebda0523675ace4cd8efea1d95bd0fe32a59c8018fd0825a3ffc4cd463b3f2398cdc14170d3345fd235904bf58ad48ac6e118e06cf1294fcc79d88f3dd146f987f4e67de4c97f9cd13225faeb2aba342e8bca0238e6b0783ac1a739d96100f9b965cab0f9e95b6c70c6506d578feec4b51c2301f0df70783ac1a739d96100f9b965cab0f9e95b6c70c6506d578feec4b51c2301f0df72594024e463eda8793897441e8114a1d7d032a8b6ff0c9773fc7860ae7e36bfcfb20aa7996092459bcd6ec3beafb7df12f056cf76232fbda838a277bda990a6afef861a9aca9960236b00e1206272e12d99da9bf2288cf713dc918127e4c2e5d5a22cbafb0a79f045f836cf59df5266b3c680ada5d096e2a89c430bf566ca2c64370c3c02a9dbdb36dc95cae8c612a31c60db9e7e5b92a615f2ab603d77e358715ad95e72b1c1981cb2dc2ec9a4f3370d2458f86e7d018ac59bdf53c97fa3dc4edd6d371d36bf82157e6b097a2387948d60672d0efcb00d48c1cd3716f08bf844bec92384925d33474e0cd5347999099909fb30df5c18e12ad5933f2cf50e94f4e78f4c63c88e81c3b173e796737853b94dcfc6d81c198ed5dcf4fa5d7aaf6675a15c6f30726829f94274cb2569e4d0b5b344a91bf743c77258c4120ae46b5df747579a997881ff2ec50d4b88b69d5af992f5bcce9395ad2ef2c717989bb086311865e413f8e623a94f642594afb26cbb7428515a549275e2ffd685e7d69226bf07af91d2f5407116152c562cf917458442294622d969fedc8856ca4779cd7bb3172b95d49099056a182a84f0deda4efa9a329e13a05642021ddb4d8abc05ed665ae43dc502326f192cf4c9dd1d4d079e43710f1394af0425768b9cc7f39810381f74d75e2e90efcf054db949c4916fe4d42eec0121d82c73a62991ee7437405a118d8b163cbb2ab1cd84d738204fd1c8517b078a0ff71d7fdb38c4ef78dd277a118d8b163cbb2ab1cd84d738204fd1c8517b078a0ff71d7fdb38c4ef78dd2771c62263dabb2eb700afdb4c168ab5c9a687aa83411b66de76ad484dd29837188476104e7ee3f5a9efaf8bb863c08333c50b2a980d45804a430178bf250e04169f3c9abb4ce7926ded45fafb203f8a05d948d7df2a79409abfb2eaec3e8706f1e2dc37fcbe9e748731962a2d7707e2c6e130295630404ecdbba6a01b886af051a74a2b70c0d4564d99454939419232812ad6f10b0dd618fbb1e6289256044aed79427a4e8ffd2ec384887a6399f35ea19274287f1cd49a80b849db2c18bbfbc04aa5251d088a2fbba4ee5b702f5753c43aaf11ffe0a3e7a5cfc8ba0a53c77bf654c7a5df0fc8bf962f615474a9696ef2068b84d3fe2024cd1466f7df6d93f8b923d969c6c8524b834d0e705f9371a752435443fc02ef310ded94db8007cd31470506c6f70b52bd818a9569c94cb6faedef24846bd8d84f19553a250e62ec17c5366abc48d4aa184e19bbbe08f36962a1276844946bb69514ac74d91dacdfa94d688f557094d6594332ac663b3cffe31e0cb69ead01e016acfc4f5a3b22e3eb081b2f6944fc0b83d611a9969b65c9ccfec011a10e27f5fc31d6bdb70fe7549c2b0857532e589dde32d8d35edcec6c53f23217a23147003161c00bb32bac3f9c63e57fb01e488a9a4eff72539c91eaf75874a16829e5053f88c50c2c4fbcbf68326c2fdf12d47c3241ff3b3f248d3ef1f69580f21e078264aa6777d6fb8957b0f96141cf98f24104d96e4b36b822a558f0f6dda4f1ca22bf6f17cbbc3e81a043421a9352eda8b8f77af459df8ff6790eb348ce9466751153a4a1b30ef24dcfbf0a1ed1dc58ce4e8288ae53b3456c31bc6602b6bf6033a6ce7a467a71fde08a43a60aee4782ffff2b70c710428df3aa8539aee99152c8b8727e9c5bd6c971104f47c51b467ec26b0e1e33b9b3e4d27babde25842ae886a31bba879fd47d69055fdef4149b5f98582a77bdd1b5c6d28c234c9d38a6faa25256926f4f13c69e5fa069c6f436d60c08df4315d2567d399ed731bdcc8b91807928abd839657ac71e1abbd609625e54996be7a484c7519398db443f35b72a9ccc605e9d13b740724d4cb4294fcc79d88f3dd146f987f4e67de4c97f9cd13225faeb2aba342e8bca0238e6b6039480e465049a6e6cb49f07a928ac50417cbc649352d6228ea4fef88c325656039480e465049a6e6cb49f07a928ac50417cbc649352d6228ea4fef88c32565ef09593b8eab9e081072904d88a905c84ac71a6de0176fee4878362ed8faf7061e9231a98ca100d8a0d2653736a2afc33af1f3fe239995d8b2b20f699ee5560191313e0d1168956c1012c509b0aef2b4ee1986adb4d9a8e52826a3553dfc647a5131ae3fa1b1973d1c4b4570224e80010332f3346aa4104b932b166f0beab84bcd15f38fb41c432170a9f0816ae340e1193eeeb0add45d12305d758b9fed56c579bcbd4d36a9f7f49762292e17948e3d1ee93a7059bc223a4e915888c15f0fe97643218185b56709db13aa181d0ea40972d7ce170ae0b5f6b962cabfbd3fa769b175f138eddbf53cf8e2da612983375ba69417831a4be1a6642a55c592a4761b367bbe78f7d5935e50b2231699f698e51f2b0ddd4565bd29db7d7c98a33eb1e0c54f56266af625712c7a50b68133f4247ba9aa2bad0cd2567acdab6ed49710e4a91c59fad8e1cf28ac7aa2015da29756530973ef01fff268f994f59d21fc38aec0995fa994fadc631ca07b2f19f11975c94f510e989a5de78aa0618856935338cee53483b0c3933322845e8d4f55c4896aecbee7fb2e070830ad72e211cc666abe573a7b868f6a1fae4e2b60a2d50fa26d160940a9877f0e233a91bec41a1badd3f61ba3549be64470ae346c06717d6369e8fdc53ee5b11f1e9a0c1cf693c22a7d5f858ed34e9b549c54cfd5cc2897765e50a49cff7887ba7b289eabd3a2139526b658d57c9385e4c703a34fbdc08cfc86f1ea847095cb8c049958e07f95c2cacf19b8dc33c733153475bf3c3beda60de03048666444b80471015267a0f3fcf7b6e74e6f00eac53a1209f5da6789a00f81b051876b87f5ec5ed58f0f3259d82c35aa3cab5bb5af78e789a23e9d4868b461751efb3fee1b7142756264c15228cfe4c466de3fc375fcabc388a8e57509ec60ada3d2b9323541b03e6b52be25d47e91f68f139853b09da6df293427ff20f6d2a7dda42b8eb8523a223bbd1b3e5a01de9fb7d3747eeafb67d9fa68a9d89369f4693c05dd1f829abfe4501de6482fe84d5052b7c2dc2bd51159f3f137d946d9112891b1a9534cd661f06c56188baa3e2e295eed3838aac41a5bffc93c883c64845d9e587e6574899fdecb0f1fa3a482448352eecbad290777b1a1f673b84bc8e39f423abbf6b3bb3f59cfa314647778d0bd55fca8f5b2c1aff516d1519437662529668756ccbbd37b63cd520a14d73b3e59797fafd119713bc303b79f98c84c3613ae2a4d8e99dd07afb0d02f0417f3f2a92ccb1587309112110a9a320dd1a30ad56c93de742b5885b2355c077f994bdfe3912874b078008ddf6d6d7c04c6092a722bf359ef448cc3e2cf8b9460307653caa7e98431af672433e22b366a54d3467e029a977115ebf32c48233436720ed8a317773b5400955d2393f4a46977e34d3dcc9bccb3e87f5049d4fbd783a0423b33c798bcbcb3e01ced3cdeb8878a1516aba690c87eb191c5636a18edf4803b621d29d3c2808bff9b9576e243cb8da301e8d324c3745be4addbaf402b932c651ffa03807bc54391d7738792490597c8b8b26f413bf5e7dc8fcb850ef81add5dc7bda8b8ad1c970f671fdc1ae0034b954133c72be6651ab51aa264bc267c8820e958335dec25350fd6306b709f19d9b2eab152ea6f7ccda8e8163b0f2b14e2fa443466e7e80af44716192df66ef63328e5792363e410f892d3a860e277a8e2ca39860081561a2420ea238a1a7674e8283e833170c2899c6dec2da5e7dddccfba01cdcd32ddf29fcab8c65f9ec0632749401bb3e58ac43fc3c3ae5de8a5e5c90308b21e3b237b6f3f9a706be63d985770f8318246ab4b98e756278b3f6a723c4c4b70f85a78c17e2ec025301646b1d3c25a2c63fe45fc3e2a34bf610991d35fd8014e486c6b8f2b0930dffbe44363aeef89b89aa5b2daac4b4402da0a08f49f6606e4b1893df30df210bf12a4710879b1eeb1d2b925b3a36f7a0c9f1e18eea9401be75f7e9558ccf75e2105a8584f2e6192580dfccab4626062abd9d5ef40b08ce9315250796c0899514a6e472ae66699826e65a972e0dd6eacf63d0291ff46b23148693357bb3f76b1158f62822b3b5ffa2218e1ae5becbd0376347f73f58522b15d2d82463559a643087fe3406cf526f867664918cbecfce2a7de222daf290003951278aa4ec1f27f0bfff597dc8391815d70165be5c3c37e8f2bb74607c308d10600a0e44be499412a53c3fd615d4679d753168bb69831d205854245cf85a0a1aa2ea185feb43acc752a3f7c43b7085377a9d61ef08b8d31faf7fac3f311b62c97728ae56b708a8d23fe3c356de50f43da94ff53541be422261a4d2c20a0bdad7c2841070e3c67140396e6425231840a3c37fdd357085bb5942876ab7d92a34b6b7834925a9b28f55dc8169d63b4c75f65d794a1d3b908c31a14f0d1dd205aa7759f2ee629344b94554e5e95c71562d73da91f4d40dc973b6c14f05e58b9f4873a516e1598efce92207ebd5dcba46154518a067702c037d2a0443d847e945b5f789f731c2397af58042d7a66c8da7f8611d517909eb984b90498f117546c5d4dc83f42f51ec2b93fc46f05cd111edb415e90d98f8c5e21719cf39312bce0cb4f09cc38faffcb86ff8e2d370991a349f034fa84cc4f130c926d22c03889f6e6bbe9fa771ec4face0f197e4c37f049ac010a11fa87dfdf8fc11eb6a2584fe5af84b91c95727a87e49f879054cd4d82232280098ff9bcc2536744e675956daf7364477be641e98c5fc649da101bf81f242ce9bf8244de9df761882630fa4c46c959cc77c7abbaffa52bd32bf6fc75dba6a0c89a42c3b3e818fdccd5e5e3497a2659cc77c7abbaffa52bd32bf6fc75dba6a0c89a42c3b3e818fdccd5e5e3497a2664477be641e98c5fc649da101bf81f242ce9bf8244de9df761882630fa4c46c9548ed62be5192004411d247ddbb1490f761a9fb90e2d6c60f6e1eb8b3cc975fd548ed62be5192004411d247ddbb1490f761a9fb90e2d6c60f6e1eb8b3cc975fd5af25ed90ed4d38d17f9386aeb5c42fd8ca27cc6d42c3e373c54acc01d044f0b6d63cd55ed6da2dd57a6054a03b70c1c22142b935dafd39305fb8b9d229e68550dcd4c903f7aa1428b284df9982e82c4237ffb4d3a9488ec027dfe7ac43d432207c447bfcd963aed3d78a3345856288d163ea5dfe796adf5625be638ee21d6cfe265594789d745b48270f01f1ecb288de1a478dc5e1f44bd1ebe6ec4b0ad9d0a33a3a09e005e40c0449d7eb73ce821d7e3950ca2f9d10f3669a9d78c296ca1085eaa5410763a9e36e70739a14b7b60141dc7296323a901dfad068585b4e7ea7dae6b1abbc67616f8e2aa7675278d2f8bafe4c7a90ecdff303a9aaa891de6de1afecd0a927f5c8318a0323122bc49bdf80d6574ecd7b9c2b7155aed95723003388467914bb63cd0f8f35c86979f27d9cf91d24f4a35b9b99f732e8b02ea90272855d8320a2dfb2e2c8ff52dc5052de9de18208e52898bf4781d02c720621669831129a86e94252e0778a4ac6ea49a3cf1c8e07d171cf1277e2c07648ba85462b4e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855fe447a77b16ffe545a8209caea1d5ce365f04ab1b31ada9704d63c924006a623fe447a77b16ffe545a8209caea1d5ce365f04ab1b31ada9704d63c924006a623e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b85534e3ecb7f86c25105cd90e1acf2cd377b9566fc181f1bfea921636650c455c4234e3ecb7f86c25105cd90e1acf2cd377b9566fc181f1bfea921636650c455c42de57868c69534713bc4e1e1065ee96c8882a8b69c9b81d74fcee7d5fd62ead18f82287df07d6d8e4c72b95b03a6050e3220cf07f8449461de8fc92fd17d695990a1b61f4589c9adf8d614abc385c8ceb752e54f36264ccd43ab5bbdc96b60c448f350642d86af4525a4d67badb0388c42b58b19d9d1e73d60c7ecf23382268ea69334b7ce66e054bc258e4d522e69a44b13d3c902c77d7a6d0f4d7d468be3e7bd688c21f31c9d442e0c768f6768c77df0b5b611f8a0506eb8231d1fe36ad16741ef61ffdb8323d5f320e3c1c680ba073a1ca3ec8b9e2ac4e77e9c044e73d13f876fee9f6d4e0a02fd389d8accf38a48beb0cbabb514dcec77cbefba1e8ed697e6c53afeb58871ca76695051add757e83401469008aa96d2cc4587dd69fd0b63ede8c52e12c5b37dc4981bfe5a9a06cc6a1d90fc9b2d54fa8887f3e135274fd653048e4819e013f80e131d789fa923f9628b69a147b75b67a452f78dbde495dea3048e4819e013f80e131d789fa923f9628b69a147b75b67a452f78dbde495deacfa962c24958fb082b4a5a8f0cd6b74331333d56ad81574c266b12a1a10fc706f85e9c1b03cb75429f4b93a87dab3419f7e858e58c110adf2748247edc0cc344f5fc8d650ab16ab90dc5f364974687f97a8c899a68def2b43ab2082687fb8394a00527163ec95069bdd3a0ea724dcd442c5f14f181aca04711b32114c72616386c1c71d3274d1104843486a18ded5fd3ff298fbe349b300294e240116e74fa1c45159a13d35bb9dff25e710f1d04b4540eaddafd44616387f7e615638a31dd7de9b12ced0333d9afb7ecdae692279b9ddec3f2c5e8c297f568bcc323b0b2a997983a9654e0e259fd2709a365f0f257b744216b5a9754e198e7c44a83e6bd41938b68ab226c966b5036e89c0ce82d1a18f371c6e9ce838fd7690807a4c8ea7a510a41038c97578e0eb5db830db3667146682205a0740267e14b5b079ccdf3e8c13304bb48fbd70463761e25e774c91a101a6e5a1ec85b14d1bff88efb90c1c7c62d6c8df5f1b099b3927804fe7117844dd5531a25261003ee1b79b83b44b8011c8042cd2892b6f9ada5c22a8b1dc7206064d48edaa8efa8ec40345ae16c0f0fb5b32bc21d87232e2828598273e1c0d51347e388cbce681af8b7c5bf1fad807ff95b5128ffad3c5c9d47006dea98c7347fd6919c3ab42ccb7994e0612c9233a5cc5709feb882df6208a0756d09cd1993786d5d6b7b90b44ea5c40ab67e6e625331dde99b4e2303fb15daee79e8ec1191c14d1165a086eb11564042e3ccc910251e95e2e495d846de82c5db95b80601a88fadc6f381b816edb7ba5b06d5877dd4169b46b208c091dcb20e6834d9d010c1fa88e7d2ac6bbb8722b99f3659140db9ce78d03ffffd8616f099039ea40cbebebe2ff5119c6852e5140eb6a262a7e0dd4165427d5b63333f20a58e40659627854d8da7f34097aa3fce920699eba009cd7862bcf152977ed62346d22e6cdd0b24ae5fda8e11754ac085a770a656edabcb93b5af49c50d5d8a5856f156607efa1b987a8c2113eb94d2315e77efc1d0318b622d75c9afbc897fad08f7bfa6715336a5b4bae6c49416477329fdf8cfa615aa4b702e9666d30293910f2a175bcac19179c50614cbdf57bb6b9c2e7e38511a52f25c4064c08e1093cceffc12b45cc841b7e813ac3562c0d9a688d2c3741b9f52607b8e45e24445d1ca57900f40551c9a2f67ddc55ef6e28e011af4fb6f2db42a8a452505bcb3b45730751bea4f13215bd088afc2732fa4a66a5e902b21a0cbfbd3d96987d15e3e8ed3780a317f5e96b09a51b9284102d11ac44edc77fc93b2f850b04aa98439ea23f2f1d7980472c93e0ae57b06f3f31f723c7e0698d432b38f1bda12983e65b042f7f4f0cf1fb82e2e58374f94277104fbb21f2ef00325aef7c38af93bd675e1cfd9ecc850e862819fdac6e3ad1f5d761f970e409c7d9c63bdc3d7ebcf48c86e00c7c16b77512b1fb732ce8563a601575b61d7921df93299cb8997d84d042bc2622d7ad9496bcec10b62d383ff5aa68e338a3c03c529fa08625fa1e9bcdb8956b75f43c7346a048baaedcd99a3e6fb15bfff6aa6f8ec7b1f5fe651f268c99a84c9bc8377959e23f578e8ec84e64633b87a3c3ba0d4dace5820b28af93bd675e1cfd9ecc850e862819fdac6e3ad1f5d761f970e409c7d9c63bdc3838757d9c1fe5c53b644e29d233ec06cb5269a9b0d61c2d8a9acee5dd593b0ba9b20184f1f660849ac88ea3aa37d0efbbe1abe20761d45b7e3296929949bf7a7fe0a32eb0eb6cfd259f687a7856faa595078b3c9f339f3815ccd73a2f3aaa51a4ca27310fd3899609e8993d2e39c21054f6e66c22c126b086c2bd9625160a1f4762a560d91c2a0f4a32bf9165f27c0b96dcb72ee6a3c1c9cc4790d98cb5ff5f4af157a1907bfa919b0f17153fee283db8062889b741839e0870146870d09795fb787aa50292008739dd79a539195ab916dfbc66e218a1cc047f74d62129e337db243e9c2475ff0852819501ca3a91399ba798490e27f9d29a922fe78c3f3edb1d34a6c702e2b3ca4e4e5417a0495563d21c2bfe7f45612ed87a26dfc16e0afd99d12255285593dde34d6168994274eeb5ad83422d2f1b4c0f043aa50b65b9274ef499e1e22f6a8dc8ac09be29a5afc23ea7f9025e0796b3ef1f3864b621951509602dfbdd02096fb424407e4cc72ac38369d72cb24b1acce40166539fe110c574d88441ea02d3470c601f8b64c034b8eda8ba1c23de16edf921f4d70c27ba093f97eb907cebaeddf70f3520a98ce3457c6fa5908b2bc9ef827e074a66d3a7cb08f0afb1e4bb573ba738b5a573f3212bf5902f1c2a11f8c65d7610bf1b3fe65b1203c3047a9f945ce0022593812a70fb8010f082b568fd3c9acb98f2a8250dd3f1d0fc66a2f5278be4892170495fb6758285835dea3c1c5611469583694b79b6127db853a3262cafb2914825424c51fa83ae1f76b18dd991b8de596f4f1eaaedcaf6f44a983deeb3a550dee4d5f5569f27bbc14706f74b88b4eb0089eee6f3a222826a1e9c32e061132f045dcbc067cc9276695fceea8b443d66a2fb29dea8acbf38d4948b87fbd663ccbf2bce6056b791a263243c07ae75d2686e6e57d8b5c200b8607a3b680e8d4f8ef132152a40e5d726d596295b3c7ca880e87e5348ee8372d2415f948b71848e7234925330919834c3fd7d9853241a1e7555c9e385ff90ad31e945a37296966f69d2f143ce5b25040f78b806b4e4e41f78de92e30007409b1d9224cd73d80e9f6bf6cd9edb319d6d1534b10a5936a1a0da44f81d80af28fadd102da81b05568d2ed4e4333ff9ea0f410815e3ee377b9b611500fbbd13ae36cf4c2707d1f0c9c1a2c14d3bc7197c88b3f5c996c2e8fec28b9b153c1582260c9d2ede6599b709642028e83dd35fd2b4b5f4e3e3b4c0ff7959d0a98344d5c10773352222e0a44345b2d3499c9022e8d6265296773cfa02c73e0b08653cd5e4779e8d9768d8b429685f2733125438830fbfde70b5069a442a98fc7eaecb920bb5e1923e04e211e212639968b64e0bfeb2ba9c13a1615efba5840f96c81b7eaf6c39ea420a9cd82042140a5afb5900efbe3387fd7ccb33ee4e059a7ffd8c804ba8aeff8f437b321d253714de0d29516356b9fdaba1f315a30b062f1eec28febea04dc3805e2eb400c9f8166c94ee84e67a58499991c5492846468da006071a8a9727eead2e28d391d091b14a4f10252015b6b0eb8c2dab23aae1127795331c320ce8f38d5a93af0faebe5f38671c622cd2e4e1ec97d51ca5102ccd1de1c8058efda6b7846eb7ba3e855b23d43b99a01c79eff662cc28a8ff0ab3247db0ca2fad9eb41c989768fd00be4a5342721bf826df4faa53a3c1dc737fb64973fa47225992ee49b917d2fe610c297b57ac39d90bdd15245b9bce07c894e6599e7088a71fb512103e42baa1caede1b58f8de84218250d0561cc368d42aa5f31618cfe77ca9512103e42baa1caede1b58f8de84218250d0561cc368d42aa5f31618cfe77ca91cbfd8d0f64b1404d7edf25b94478b944f77cbd606a3c70e281a394bcba9fbef530f1f3a200b6bbd9274ae386faf4cedf1380b3f328083c4efdf2c05032761b9a1c4865ea8d6ff3de0d994967758dcccf79647edd8a7a06d55352773beb6c29d7bd88488fbe9e69404679def332402747958e3349757df4a2b57d6af54cb75801e3c6fd37b367ec564512230c3532150740335a190cc166b1b56479ec3746e83692bd4de465934052919b47fd1e4ac878c1c99356b3d8e9277c95db593f381effe91f7fdc5a451f3c2a67f65a3c56673a13848ab167292251d4f31d77e2be034fe91f7fdc5a451f3c2a67f65a3c56673a13848ab167292251d4f31d77e2be03499558704754734bb8df0962f118a7d23f82f4024d86b1ba194c2f33f4afa7115bc33b21069c650541c309c1b05cbf4c5622369ab953e05d1dbcd67c1cbc73eb252abc417d3005d3260b29b28187717eafcd76b5996c8b1d9cc60663696ee7ee9d9bd4304f5068a9d7d97a09ebc97b3810944e060ddcb4ed66e5a9b0cdac79abe784e818f8eed25de9d2e07c3ac588e476a5ca6589b02e9d9292bf83db900ddf979cac8c33f76864cbc3ea2bba78d7f0ec9a907f33cc9fb0d6a4db68cd8fb3e2d5309c1a361c6c86ef35b6d0e5ccdaf1c68682dcd286528c607acc692c4be59bedbc91fbdeb99f1352062345a7f6dc2262959098e727244636edb5b555154962ca73b93e964ac62797a4742f63eb468dbac64599112b16893b84693743bd3f57c4b0a2397068b28c2b4b817fa260056746666437ec2b9430d916fa67d50dd612cfae74f92b1179c3398d94301840ea3964f65c3aed34615460bd9f4b05443f338bbc46aa7d2c2ebe09584876782478bbf547432ab2edc041c700462400c839aebd9c2f09e23c583c113ed551bbe21d763449a68a44b662dac126c6384bb2b67ae3094953c45e4c97858943a4b7885349f59e246abb0b5642177919a47d80182d354d1f4e6d5a8892072ba6c2d96df5554e738cb23c450f3e3038f1ec1e0cc6e78c2d92b24dd4a71af41cd9058d5b9356ef0cd03f9d2fa88c822829edd558ff71beb4b66a4bfc769eacdcd294da613e989744a6c408e71261c5ae81864481b7aefe12ee82283e7fc78a9e5da6805717cb3cc8d505cbcb9032e95184bc4cf9d572de8cd6957fe6c29f473cdbe5258587bb6b72e8dd2bb2bfc76582da5faeffc9c0f5248867fab5d035f48257c1f33ede11bf0284ff1663c644a47e4fde3458577cc5c8c33367b8f60e72effed01f8965155fdd0c5a5a680eacadccd211252b1c7b47e124d02d23e9daf52fde366fbd762141fa736d7fe39cb500169c1b2ef6cc1989a59c627008b75a88aeaf1439f8065c045d21d7af6a9e333ff374dca81bd792c32cc7fa5bee5e73bf36dbdb803d57aad199e1d674eee8ed2943826c66641d6761b4e00b9c9ca3cc424b2e81c596b7f48b33e7de9d6b37ff057f858edbf3c788b15c0d00cc92306001f375cb673a2dba00f01e3426573117929e2142d10386b3c0382052f113f03b27609f5474199900afb98cb7755fbc747fcb756a4c0da8ad1cc1441956ce75164c6a2f316d62cff1608d130943a848c0a8ba846f8555b9148977298297ed44dd82f2bdca3460ab015c65b8cb7d75032b0209834391ddc583c8df56e09311b7da9c3ad83bff1c03aeb519329f8587f0136abc72736cb326a3c34c403ab070146daec8e53a385f3a256a5190192f6befec812eaeb562649611a6840d8cf86f1ddd8ebd5d06c97ea1e9f3a06bb94d79f616e165ab49406d8ffe4f0353ba64a596f40f0f3d738c3a9b3acc75129282c0c03e7edb419f67efc3b3f1c50e2cc94c924bfadb0167b417be78205efa1eb17f41685bcc09363399bcbdc5d9da3348807be67f8f53ee6603f6e117ec3d1085bb07f3a537d83f312c539fd04ca0192d9e6626fbdf832b68927baab23c0e03286f2ee2d4e6c4e02a6a42542909f312bb0f6845a8d0356c20c86339752296b97af241d466bb6afe8a7c25795c52779362231c5a407b94f80a42abd12346e31990bbf9055bd437059aa24b00f7f0e2695f4d2a49de55317fa2b7b20fde4150fc6a2ba8a85e645166e6af549bd544c5af9f742c94f5e79964115e57a66c986824c2409f343c0469773a270b68d5f22f1b9871e5047ab56c27f3f12d175a33282a2c0e57e0ce3b6c99cc41df1725f22f1b9871e5047ab56c27f3f12d175a33282a2c0e57e0ce3b6c99cc41df17275b02520163e2a8f3f32b7fd757dadceb775d2335dcec2aa02d61e315be766d1fff3c963588ae9696e0e766a672d0edd32f129d278cdbaf3f60b63b1672aeda703ab2d532af9dbfeda8a8a553fba87eb5f3ab3e0fe38e2b50d717f1b27c016043efaee4cdde914d1c89f0254b08a35cdd48ca27e11cbff05e6f1fbaef47b1573692b7a9f4f8e62a193b89e0e0cd049f3d7b3d0c94260ccb982caf0ae223be3d96dd91166e1ad0f2761bc4b32180a10a23e377fa59a98415b21c3a2e608985b796e3d0d336a1f07b3b8684c8485489a770eb2ff112e0a7b7614fe248bb70787fd04d4f54af1fcb67fe5567744224b0b6f1d5ff88bb220c5f0ced731c029b36ce4e348b686aeb3a0646d4b47892f7272e4760f0d6c9887163ede3f816911668b9fb9d18e84c007b56f160d4ce52187a028fdc6f0466cb91c23577269be237babcd82129593b031dcd005aa809a996d3bb0c31b6b9cf25877e1e51789ef27b44b42c03dc9f34e0f20a196d6561e6db108743fca3ab4a1c9c53a50c89cdefd7cade9cebeb9a37b394d7650b2d10a8550f5013e53c6a985977807fea42c43ee191c2582108bc3f483e7377b3fb470cde93d0c6d8d00394291d4edeb456d65aba97145a5eb3f142a51110fc0b2a11e185d2034b36c4b337f94b0ca942f731a2d11a608f91569c80d957eb643ff81f764cc65c26c6ea1773014c41cffc231f3d53c12337146ed30e98c142f891a747bc77e629d0be055eebc4861b861e48a0db77f904a040b31dfe22e5bd69388d463a5bdc0df145ffd261e08a106678fbe8c0bf89b775ecf3b5f99b7d1e1972fc8ecf45f2f0ddadde5c9f2c175a4e08adab45c696c06d2386229263dbc20e058ab9d9f5e01543001eee1fff872d421ca6eafc666960407d40bfd1b43bf7365ca28cafd67e845fb3360006f62d284b981059cc47a3760372978376c0c54edef3517a892272a8b2279c2c71c723f454b3f03b012388a55e9e8dc7b3c9e1336b82b4cd353ed822c62797c180370bd12e9de6df9f56f1d7851ba34c36eadd43c4284e421189c16f256be368de6cf32225605015e9894f817f2e2b6d3672500dada7f50f781e17f243ea3f9d3a9aa5539e474ee325f0c7fe421a2cfa4ea4e021fe85c651aba7a85f5ab42026e8f40beeaa392334485b7baf94c195bdff8db59ed60c6494a24435ea68b9ff2c66022fc5fa28cc270994b669d4cd822a34ebf4cb8ebd595071c76f40df44a048615844b9fbd032de6bc906d82d09f74d7e17b8f4bc5332b31758ecefba1451c64ca346522f68dec8268f73504e51a03f12515cd30cc4d520ea6927ddb458cd3e3171720cf24ae8e93a22c28a9221f9cadce0be1a8f34e4097b98bb8ce278c75ece617a1f26d9fa96cb0c5bb5a2704014a74cc13649a758c8c7162f08b946043a329aff2f7c0165616cff758dd21170f8529b8b476c9d7ab8498132d4ea0c5414a9c451a5b89fae855a2b4357293d56ba2c4d61415662e2365327b7eb12157f18cff18db8c0b1f8f14409d551c0f30173588a81490af68c541258bca3163560a47ab786c93fc83a7d00aae366e09163b470f0b6998ddcebacc882b3ef45748b83cb1e8fe6aa627f838ae3d47591765452fd3e1e29439331d4a36cd8a2122addcea218e7e43afffa7cb4e76875a906f335ee97aec2025e3bcf6937e7777a41bde0ac6943b6a43b6a9fff779bb573f2925e4307a08510624a0b3da80b320dae557bbd3777ac6f15edcdb59c739fdb1eed88449add8b83f5b86a9fe1e5e19dae531d20dcc7d2aca374b4c6cf153f9c412aa8dc725ed6ebbfc346b7db7e878b107bd8cd657e9ff32fc631b469c2cb11826f7e7624329d77cd44badf84c5d13b576204e42e34c330694b072aa7e24792586c015083a3962d804639eb1bd303b45df62c3b5f0eb2d335f7dcb6b4218bc847a4db132cb9ebeb7aff2714f4d187d118b6e1161e72a9c6c3e26975387e91f8f3d42d3261065708199e1139a50df95a363af01e849129f0539f1b1b4ee18074809ef2f4fca567a0abde9b2a790b755786d67ba9049587a7147b51837635a6852b000d641438511b08321bfcbac102b7a1b46c3604216ea131841d096b631f4425cc18888e9530f53dec1e0845fd2077aa71ceb7071e9db8a7d8ff5385df25f4bcfc2a0125984ad75db3a4c59452b4b1707f697e936224554abc83f9612047db4e0497804e46e0a0b0b8c31975b062152d551bac49c3c2e80932567b4085dcda790d5ebbec840bffd6f33b7ffc7392aac0d464e5fbb656e48d5b3e07257a53d5bbfb6f6b20a1b705e03f7488a433ddc8fb7a82a9bbf807a5ea7bf1af2b3b094b0b1081c0c171ace5c18825360e710fedb3defa9519bb953f32ddecb0536f5659f5f56d65a2348d19d281fdac98f80ad42a7db8d87a24bcb9e0d2d69d28bc97c6acb8fb306cfdfeaa6d7e495dd2a3ec73495678ba1db6cb1f9ea7a26035524c62ecc79f888cc0714c153831253992a0b63d40d985133b00adda988d41e8a682ea20ed0f2ca3b7ce4bf8b8cd3b0a7b07ccc9a6ea2124d2dfc217dcff154e86d08dc662b8423537874b96028690335226e8200b773c3487e65328ec67e04f92993e4525400443ba6ccdcebe0c0863ec4b3ee58994f49d5bbf699c6adb319efa6f4319c86a77e661b7cdaec9478772f1049069ec4511f21244cb314da3b0154020169557942573f0fccc4b94740adb8459148a4643dd8614b7949ade72126c79af62c4078cfed89b69023e4773484aeed443bb736b9cb15896e6459413806329ab709eb772a2901b9c9f2c400e7fdd9459352adb0d924df52ef084e8baf5fb290f8dad6a668fe2c091db478f1978d72474a583341e4a910dba63859e24312cf43b7d3634dabf69e611c68df3d1350082388fd4042a293466b4486c033b0efe18f70156d22c921746c17beb24c7ee51d4beea430cc81f3a84f761f2e4f1d3d1588f01ed02b67e464fda3c60c0e20aef158d00fb41b99ac06e06a06f76a079612a316a9f399e740b47e59bf2a33281ef90954b769851462eb97390c9c6260e94dcadc55739363fcda0eb34790fb1edfc07d0fa5684ab0d58a293e88d6f19fdbfce0441a75cca655db96c755d4b98a91a553e83b30044d3a3e01094a850ed61e9552be6041d406d69e8241d170da2123bfd5a73188ab26f0439d7e2dafc49a25c8f67db367ab68271464f4d9617743c44d6ec0c516828653b653ee7316b6201b545cc5cd998145f732d9c03c9054d942681b8354292cf3ee57c3ab466ad7553e6862b9f66c71b826b9365e57add0fa94856374e0f845dda2ceef142ed86ece69cb0c4f6c244b9a14fb04c769962bdcb5c35b587be2ecdbbbd2174e4cfa769f4c7a51f13d2211101abebeb18fe641d7c236537bb6914bfe32eca40ad2273464ef741680fae7bbe5a30874c4941008bf229f135924091029fc5ae16f83f8aed5b0640f7ea835cb0188623311bbe646dd4253dee5221f2e751b0bb0041d927ad71946c90d7a3cdabcc67e9b36cd911ed131a74e5fed8170b45011fcbaef9ba77c9a3a42ea3edf657a61137f0f6fd00d1162a5a90c00bb9b859ae46cbb93ad2845397146fb6dace3f693fb0e97d8bae9932efa2d516a7aa5670b41aa175134c066340f3a0cd5805902397bb0ee98504ec889c7be8d8ea8bb284c1171a428721362aedd6d6af2afb5e60aacc2eea77217ab1a4a232503394bd4a5d782d71e2ad9bad444c9f2eda49be3b920de21db3bae9c4d7e9b1e89291a9d436f0009b839119b375ac217226b2b88a3d991472fbe1d969aea3f3759dec6057080bca856b22c90229f431bcc1fe0c3fc78bc0c1161a6b40d5564c66c621d45ae2771fb283c1a7c4e4eb9a05a0a2638fd9986361b2d1ea6aaa0ef5edd594284ba0858929214e59b440a2d9a29db5d87495da05b4e49483a13ac4fd2906a4d2833b8c135c599e2558f50fdfd8f5944666ac683f6d62da6a682319cb589194bd2ca9b425c2bd209c34f99f48165d581fe157e08dd7c656f590cd89484ee67acf8337a6005a22f06c724ece40fa424a87edf11790459a6e2f5a7d1de0007c1fa876fa587f2233ba4618700c1c76b86f27e7b5fbcf3ef8daad9e335e773451a8a37a7776203b9156af453ca7599aae6047751fa1c5b3bd36795f2016c8ef8abeeb15a3089d29723fec3551aab075b8455fd9c27a2c2d887aebb1f60392a7df2025c409bf7339b41f9d6bc9e3d802184630231fc3b3fcf60145030516ebbc76c95c6689c33c5215e68d3a3ef67c94b0cfc29dd8fde32608a8395283b9d30d61ec03117712b188a93ba3346409306758334ec039b48a6c24374cc529c8940fe81c188eadcb6bca0a5cab9d1458b55bef14ca26dab05667e3462b011cad8eb80f003acd6927df7141136db414cb5bd8222533c0259df2c49ee0b5cd3fcfca4719f807c2444cb44e3ce5b861207018193d50b851bf4064b455fabd3c116c727f03374ce76e05e495e57b1b4a147565aab61c7164c1f1e32a1553160076c990f9b0a0b3dc099aad73e566d69719fc0dff47394c5a4cfbe1681738f0e5113da7b10c04ea3bf7e70d72a6cc048db4b3014a9a0b4c0ea72cac37c3a2b4d3820b64f8fd70aaeea2499182705c11675d23cdb49daa760bb95d8ad0f593891f743d96260632e8ddbf105575e2b1c5be58382c349daa760bb95d8ad0f593891f743d96260632e8ddbf105575e2b1c5be58382c3a557cd93fd254b30f97dd41342363f282e95625c3b72ce2269c52be3a6ae6a157ab503d69a465f33bf0232b690e411d3abe6e399e1967702e8d5163daec9489e74f2f696896b6213351af80101c0ddd8686b333f1150dd0218a2a54a6a0d54efc7c12cc491b46cdf6196b752aaf37a7bb06f008626b3e07b8660ff74e71aeed1a937dbb0b67a18957893655d82da9ecd69186519490659c3c63ce7ca0fb933d99771dac221a4fbceb066e39d18238d39e1ac79ecb0524f600b94f8584ccd49744184ef214f258acea4f8171d9b5be3ea9fdd375772b02f697d0dae154e05d23dbac3f3ed336d6eb4372829c985b7231302d5620c1ec66848cefab9fb2d7df64bb4b70bf6fe07382ff3d679fbdce60877f339cfc225beb61af15b9db2415f5e95cfe52530dba6921e3a93146549eb597c9564d024b90ec9ba8d08b913aa79b739187f22e1fc98e515a186101890c3ff93b4a723bf71176334f990f136d591b7eb60864565077bf03c09d7e5945c9cbf6e894de80882e28b0b09910dcf2e98799b9a2b6a5762394f3bfcf482a449a64e3e66d088c73a55599a24febf69502f6d6a5ba1c6d491013ac6650d83d599b94fe2005069632ebc792608bdfb9e9a8b352270bac56f387ddcde62a3c8ee714b71c3dc5bfe9ecc734424a5f0562e73bdc07a8090000afa9ec79362a4dec2e3779493d2d0d70e96220d2cfdc85a01d564214921ef8d7c39dbca9a4f669a494be84d8dc136c35c5bb7dd919336c03f7fa2a35134d8fa7c627a8eb337c314f52a805993ae1eea9629f37342ef6d9e6523b3c20b1169601ce9abd261c54fcab4ac945a06b1c6a7c126fbe97dd25e6bacf056ed51cd73641a323bb2fc94e3f605e7ba427cc5d7ffc023b4e9436d22dac453d35d3a3a150e86fa88d3713278a69523564011a6bc00d571b6d840e86d6263307d1d1466eac80363fb50b1910eab24eb5f50bd7c0edf7b801bcb0ac6dc8f651fc007d04e01c3c0e7d9aed9da9b42c965c4290253e88c7a02f132323032218f3fc83c95a219a74adf90a36663127b992d6bdf01724772aa526aa39ad5d9d22accf3b387cf40438f84ded0162223d2a9b887c08387a049c7a5380425a523d271c3713caad7aa1f23de72adc5d6ba07d19571b589737e3a9bb78b020869b75160eebf74cc5c674f51e5f22d1f7838c75f5bb2e5d9bc350bb873db0590a79472539c6b1789e334b5d47d0cb77fabfbf5363572164932b81a379b07f0883067aea232c3ae8baed489f7443d92551578c36da9ec23d6e5e8b70ac380f92799b12e4e789995dba7f05b027db03c1ec49790ba6300f6e379510181b96ffb4212026f4b56e0f1c06cacb929425766692eef0146d91e63720be29e0b78a601d79add3b2a92b0674be4e279792b46452a97920ca712c16dd844b59841bd755da3c048cb159088d92706808bf7dea2a1c5602d7e68968b476e0cdf154f55b00eb448edc7bb61666f214100f56279bfff41b353d507aa3267d90290c907776b09fb6bc05403ae2d3398fb7a291f1a7c909305412f10e1a9c62430491762c4b68120592f48d914bf1039fdc907397af3ee6cde5fcf1ab43c86019d74adf4a6c1bb1c2ae9c68896f7c0a51e6e6f30e078d396b3997d969a51eb9b36e1ab5b8dc859b2468e26e98e80663462a19243dd0be9d3d12d670e788cb8a4de8c527bf009204639d29796bbb354edc9d8e57c107d25a7b64e5e98160644112f49fcd00e413fc2383f12e25703f82680104e3fcbab830ca6e223a768a6a4f2ab97fea1b133784bccc564551ae88adff8673bd1123e320f957986d2aa768121e5187527c3e9aa9ae5c0ecb47fbe2320fdfebc463b0250e8c1283b2c3aa74f42a2a7017b21dea57fa5590188b8dcf579fad900999067b0d57e6779ab015248898c610c7a75830f9906bce9f030ab4399626b8c557ac3e8efb1c13cbefe2351090dab5964beb67b784af669281943ced7ebea54dfcf0ce16919fa8f301f81c2bd895bcf03973c424de75fc2fee02dda8c0f3c816f4e42e235172cb346ed0bdb5ca5303daa8f7e67852ab9d2a7c2495a8468ec00a2bbdae5ec2fc888291d6dc1b830ee2e4570ba4b22096ed75098eea5f5f9d1a4c93f6c0b4f3f1f7856bef34a6f17ca52b132c4d917596bd900f006c33d6b1ce5fecf696de62264ebfc121b78d434ef63403a29a177e9b6b06675ba1c06a08550be511084959212d7ab96f7bd021b7caf18f2fb0009585a5982baf576b3e192dbcef5ca1d1b6f88350ff41f6f2eae5db03f6efe862ef251f68bf4a92e8d946f567902bb1b320f1a485a0d01bc216b86ec4c7f785fe47f5752e0889ad539d088ffeb923ced3af44a89f1b45d4354c3810cd21677daaa9b94a297d131730b27b2f827116f3657895a4fc644450c4fc4cebbc9f70df15af10e474cd940db2f9f28ea95644487b48908a73f0a28eaca3ea553967be54710a168fd5092366907b11d886cd5f4a37b0bcaf202d14ea95bb7650118f4d5aacaf178efa7cd18eed89807de4e244caadd5c2894ccb2bfbe30db076746bf252f9f8533c9d44a143e9b08ac1a166f5f2d2e526f0ccac78b928a5b783bc876c9ec90abaf369dd8c8bc0095d4f99488c85a532d0596ba92e25afba448977bec5ffbf031d969048b3770f0adb594283cb8b8a37041ff7565b6fd509181e6f6cea27f5c32bf158e577754b46d490727efce441ce45f1750301e22ae6d4e918b6492f2afd2c617eee7dcc7f84aed306e2522a9b38c16c464dc1a3d26ff472c8d7c2fef38ba2b2755696d424147e2cfe22ff53efa83efb2fdccb6211d8718a040d01aa0034c31d996dcf591c840c8c495763a0fb518b1ef048d502d2fab2f2c223b0bcc64e18d8b50efc2e6a53d7409627fee02805b78ae3b7df02a2c4a96a140253e5009519989171fe0b3b372f36674be6694887d8349a0501d2c74539dfe7bb8e8920e87660a192ca1a182087e13963adc8e5761ed6a714b0cb207c8ed6ca858711cd48cc0a847cb2df4309d54e94967ced89677c2217e96c01df874c74a3b301af35830011e47cca4346e686cf5bf16ad228a3cf50e97bfc29a6fc832da9fa70da106975b97312c13541f8e13e18ae11f4977fdbacd1616b2b157f630ce21f0f52079fa8868312b77debced9ddfcb4b806ed297d3683da6dc13d698bc8106b4d0e5be60789e05324208ad483c9c873e455cdbd7625fe5b05be34ce3e2005778a5b16f7a6626812cfd35b2c24cb18c1d16c3400051a3425146e6987541540472ecf4e5483187fa1361425adc9a9f8e92b182d088df0084b8df0ea2f0b69328f6e1accead4beaf8e0e564db59313c450bf70d996936d14679cd33b749b581a48d68baa4b171cf94edd4b1d33885d6dd27b1acfef9aa646d353fbdcd78e8fdc59de70d71d3416840d81b35c342dfd715ca87337eecb4c3ef1e9a185fc1f221e8daea9123271a9c6a4996b58e6e3892878d6666098af4470095904e78de7e67abc8b40d1b46df0d66f5d57ef1707b7cdb5b950bd8a5ae811053645d9d22be1c0abb9d8288a42d91383f9d7d7b4b39bf6703d91e6035fab82f462f230d5fc66fbb36b53234d67ec6a1510b2d72c75691d0bbebf9c760154ef7a650fab42b0a226d89b34278e5ea9fce762eceebdbfd1629d8099b6dea1bb027af554605ed048a546c1851f2c0ebbbb70e117a2c2567f03af11b0fb52ac05b740ffbbaf1c95341462eecff8d5d52d2052f28254e4dcb95a36b76526487c11b1154101ad68e9615e39021913107024efe7495359b77ed3921e7066541d5a225f383589e5dda55f1e20e4f51b2176f3f059b1a8883e4f6e733d4b08ae92b96c85b16fb6297007b18b2891980f12d37cbf2f2ae0b9d1fb7a72d5fb1d09e254e35b224fbd8537ade793600c4b0ed9c135ba63a3271c6e9d9b7183d0c7356acdef0a24b40558d6188d5ad795fba49869e7fa210e96d573885d6dd27b1acfef9aa646d353fbdcd78e8fdc59de70d71d3416840d81b35c342dfd715ca87337eecb4c3ef1e9a185fc1f221e8daea9123271a9c6a4996b58e3dd3acaeaa951a2e79b139ee184b3a9d5de244cfc4518ed97a8f0926932f6e06707b7cdb5b950bd8a5ae811053645d9d22be1c0abb9d8288a42d91383f9d7d7b1e593255f4b17a818a760f3a6ab6dccf76dfb64711b709e8d99dfab76cddea22e5e06ce87aa4f63e7721a6709e3c14e68391d81950a186e16be065974aa46ed2947ccb47e4611dddface9c83837244813dba3a5a8ba55cef5d7ee83d6a385bfc2f41a0518f1aa6706441e1a29ec735ef59754b01d5a41ca95ea41840192a33332567f03af11b0fb52ac05b740ffbbaf1c95341462eecff8d5d52d2052f28254e38178ba34b0d96fdad0a409e85053454f879cdda79c0af06044e1ccff0a58ffd636086a45bde29b66544a1e7069d85d22e71b1085de6ff8bb18349c743235927a50034e7b08354c428ce800428d08fc1c340598e67f9d7deadb6a2332c39644ccad6c07abce99317ef3ca169412062bd5f05cc0ed5b09cf367bca682715ed758bd7fca309f76b3141c43a3d9b17acff1f34850a3a43d5781a3cfa6fa97f1cfcda05a2a49145b35ed0aeb1a46e2560c360678e32e61cfe19962b6bdcd2ccc907f0059aa1c5555338a789c4605467e10eca2c03bff3d019bb29ec8391efed3c0fa5ec39c8606d89c893be546fef3b2dbb3a6eba5faa1f0d3eef4ed6ec5dfbf00c66026ae0666be04806e2c7f29cedd4a348a0a93426ad1319faf8d60222a1ff6ece37e85ace84599717cf89cd557b833806a98fb189d0f0307135e354a8e8dfdfa042e07a0c72f7a57999994d9be64f56ed887c91adb0e7acb16269d01b18764be3270fd295f1334c44c77ef7c2c3b204022c77a6a4bf8b711b5ba933701f7259794fcc79d88f3dd146f987f4e67de4c97f9cd13225faeb2aba342e8bca0238e6b43f33c3255b3db9e6077409fa0453cba44347a21db23396fd7bbda8d2f197b3943f33c3255b3db9e6077409fa0453cba44347a21db23396fd7bbda8d2f197b3910f45441075652e1f1a9b3cf76688a3f06aecd381e2b19388924cdedf901c97a0613cabfe9e1419087fcacfce207cecf3335124714b00c13c627ce6ef7ebfa8eba5e40432791bc3e4914afca03029bcb54821efc7f3ae5ee572beb38ceb7d3dc94fcc79d88f3dd146f987f4e67de4c97f9cd13225faeb2aba342e8bca0238e6bc89919a591ec82008e8190d30d5f93aeae9853775156a701f5ad36af6a23ca61c89919a591ec82008e8190d30d5f93aeae9853775156a701f5ad36af6a23ca61a3d03ef978cd8df472265632992897b0715a652349ef1f35b53063b8129a1a39c4217daefc9aedd95925785e207dfe902402a5c1dec7c15d93af6678fb1c1c5860b581af7d288840d64185a5e4f77d2e011dfb6165ec50789a48fd8890cd1be560b581af7d288840d64185a5e4f77d2e011dfb6165ec50789a48fd8890cd1be5dac1ce58be320e3768871c55d597237d99ee5f44b529fb2e06c29e536613dd30b7324ee2c8aa664cb84999bf5b7de7d9eda193d735a3cb888cfe82195eb963d655455b1e54992df63a1055ed4674b4a40f4298bd341ad42097ac53a2f903719a743ebe78128c9eeeb5815ba77cf1de651035e842601e5264a087acd4002041d9cadae67005fd3ec0471f9b858740a556f1450390ca626342b16122bb4c47e2fd1b70cdf2db8610ab386c83b56e362e72ce411f51afc69f420b7771ee156c0b81baf293363f04fe2c8517a25657c1b974bdf71d0aaa390fab836483a5e28327af9bcefcb3add92fbcf3abe04326f6a128ffa413e3b5fd9f9de8d97f3469753ea1347cf79568c1e2e7a83acfb3f383147c8e723c5fa1564a920167cf9fdcb4754f4b3ff3a1c14542d097547f076d33158312235f14622c42737ea33eb69edb00ced3f9f3e0dcedcd504f2a08357865c6539be3cb75ebaa492ac2bfdea590913092d3f9f3e0dcedcd504f2a08357865c6539be3cb75ebaa492ac2bfdea5909130927d5750d29d84397719a3b70bf3ba8647c663448ead96fc29d1ec784667f024a4dcfb735443e0fae58885b345ae806c52b9ec9f7768a872f49ddd1d3b2bf24ad46b8a2dfd9292ac5820085540ff14bb33377f5d31aae17cad08ea0a51b1433c616c36395a7e629e6c77eea62d02a8793c2453f05ceae9504dde4af7e06366862b21d63fdb1a24a8c130b678f1f10e2456a241c679bc3ef0fb3aa994b30999f13a21d63fdb1a24a8c130b678f1f10e2456a241c679bc3ef0fb3aa994b30999f13ab809c6a3fbde3a95b41ad2b19cd2399a5f89e63e07c63739e8607da2e2ef50cd381b08ead2826cfb2a28b91a7dc0004f0a8203f4f3d8e3dab42cfaa7c975e01e0704d6eebb3f4fb6ae058cc47e0a20fc63df6f8a139d2e13a75d708a4e53576910aec9f55cc6120b86bb37c9aee6a149148455c117c89c699fc199af816d6f1c09440084c6ecdd1ce169723241f462ade72e3c9404d2cb77422151bc011c1b5a09440084c6ecdd1ce169723241f462ade72e3c9404d2cb77422151bc011c1b5a07e7e7dcb28b38bca512f8175da13e11bf759592f907246ea2789e12f945138ba99ff3fde47d8988de964f13f79f8fbed1bb6c868f3baf9a53f59ec48ec69aa744820c3f67a9fa5294939c28fa9267f4a19efcb25138301f1b58b2633b30528a017e9c2be1fa4dd287187e6e7495b8b64596831e1cd6fe984f05b88fdc27d96f4dbe18ee434b6176be9a93d852d945840d76c8777a028f08527b0d956eef4bbd4dbe18ee434b6176be9a93d852d945840d76c8777a028f08527b0d956eef4bbda375433cf81ca02cf4975c6eb966c1d1617fed8d540e92949448eb6e16490795054234046897255fe4919ffe76afd5e227070881a3e7bee9ef40b65bb81d34f265eef6b0088e7fd0aca5f67f9e22ac80d58a62f0c98799936b95367e6e2d947266bcd23cff7b5c3a5ba61227d90b15d8e403d0848ed80d6af8b4ccf29b0cdad477c19cc0d26494f1d0337815c61af42765a67145e8a3b456bad9acd630211137f393356195856d6b3f84148f4170f4fd334a837b31c8531fdc55274d1b1c3d1b56bc1d80ec26091c59103b0a978b808b1138ee5bf256e5b9a5a3bb323d24ffd5a6a2017afa8aa3f146afbc2394e4ac575c95795d7ad1157f2bb666a2e37652c65ab672037cdc87ce7a9aad54056a3feb376973edadd43f7b6d24ba9c5637bdbf5ab672037cdc87ce7a9aad54056a3feb376973edadd43f7b6d24ba9c5637bdbf76ccc261ef15a9ecd456ce3fa689d3289d2b3659093fb5922eac3de733099663a27ad9c947203abb3cab00fac73ee9019e7d8a11de000a135c8e21a3c9d7bdbd66282bb01e0ae79c8f557aa57c458306cdcffceb7bc28bb3d97288ef567ca00788b19cb5ae11752f28fa19f8141e789d028000f49afb73f735ad3e3fb6484c4f3027b9e5a7491182ceb88b1ba5b708a40eb8d13602471f479d7a329a57447f23b8cb66b6ab462b334ec972971d8cb4682562937200ed38b4a7f093ee06fd8afd481ec33dfce3dba9acdfa65469bc604f236922ddbb575a9831c4cfa6a33618f683f696a16b9838e49ff84e4670daaca6bee4568db532a0819ae31ed13b2101faaabc40e4456fdcae4f05e7888ffdfef908052a7666fb200afb28b7269274280d1d3154055345579c35b0853920930abb8c327706b3d3b0ecf279f4e567b022470f927861f56e69cedbad27f5927053826f7123c92c8bceb6ec52555e151ca8edc78d450efdb781718fcbca80d0ed0d6d61a3cb76b86c81db46e7a2c819b80235ce71542455e3d961750312ce5ce09c31dd31421278dcc6cc082cf65134cc0c700957c8ae6223657cd576ae9e6bd78146e8d1d2b21f8c7d291459dcc169b6a1fd089f99883a33305d027a5dd90648b085ff7512e6615125f06921f207def620031802492f54e0352f481dfb5e75eaf1734b9017dd8f9b70d14ec392b167b29e499ab41b69a7c8f05b72c091cc9dae99d931eebddb124f4b6abdf2aecc55b5ec185da863fbfcb8f8769b0ba1f57fcf4e20380b144f14011d8f6b3e508ebeac28cbc0d2beb1e7985a7999893b421bc057b679a5fd87a135a9486ea77ce540abb9319ec52e7fed68f44495249f0641e272a0f56c1ea6d34445ce9e8d19edd2d4ce1159b4e8564fe0247bb34a98998b1433f5bf32fa39e307b446504556bfcc2d4a7259b4e8564fe0247bb34a98998b1433f5bf32fa39e307b446504556bfcc2d4a7254ed4fcf4bfbda0246e86385e4450e759ed31cc9a203fd16f6b810a0106fd9553b6e4aded5bc8992cb24df3fa5a6385f802b663331053a5608b4adc3e20e212505a6261c2c6a2fe73bf86e0c102c069edfd44408b75ffa80d4004cce6fbcc6aa9b806626dd7f8679f067d4970551210d5b91fdef79b3eb248a393492783947fcd9557609f8515b730989478790dce82794b0fbbb6967e118905ba0b883ecd64e4ccec27a29c797c5dfc4625a7e2ac45ed337229fd0674ec129689cfc756f46f78dd654cd08be9fa8a8d62ef4ec4bc09b8a1b8cfa64b3e8f3507c5068d52176c75de21a4a7f01843887a2046c02aee9015269a32e5254f7776c54bfabb4fb93e44b6b7b22bc24f9fa6d86871683106baaaeec2fcb63139e94c692177aa32d206975a62af3ba70f877b37a2a2c71790a25f239828df8655c6017418b9e4f35e716f91c1e242002305ee74037ceff23ac7853f88862a3b1e68b8fb23ab0564996c75fdcd508e6bd95eaf96fe0172826d00d69ca2ff65dd6071c29982261d602a11b0aaa4cdc7962b04a96dc08ef244d2efb6c238ce629e69f92b7da13006a95b07c3fdb89721ddcd7baf6cfdf63c7ec4ef0b1baa620cc35a1d716aa883c7a0486bb1bdfcdbda1e86602e062f51b0abdf533af50acbcddeeaf595e16d09c9757d49bb19f6c227c980f054e0883f9f32b70430fdf4b93563248860f7ce50e9bc0e4706d00c13e9e7334ca183dba5d0d345a737af74d606a1f27fdbba04932f04178d679694f58a99f6409067f642ffa441e7612acfb0f2097d99613a11b3f77e57fe4ab18b48b000af6ba1a644812a747811610c258c12bf6d05d1cf05069d533bdc49465bce9c30cd1dc61e64d8489288d04f84f1572e1ee89d21a1a43c504d633205c88136706a34f920ffc0140eef23267a3e15f2b53d3561fdb1b7f7468759495805b8c05d27b304ab291d7f151df39f336343deecf73af7a4b03fcaa1804ada839e0851649965385cd7210868d2f49ef1b76bfef4417dcc43027dc5c7dbbc9425c2288a32f69afc5cdaf0978502efa57af49fccb254c546517d8ac847a29f38ea6e5b0e3aae15ee6dd7e4fddc330299756d014736b55c8d07b1e89ea551e6ed3844cc29bc62d6f6f70f896e8f2e1d73779710f126b25da8be29bb75125efcc3090e233c4b30514736eb8ca937cc3ad39e9f625e372f1ec473cb00c3ee1fdb12df0a42937861624a0a11028ecb0899f050c26811481829b245fffcd01285092fb875cfeb81c464c7ae597349de9607ab7be4cfb25223d11e185699d2254eee792440702443aae4ec1968401c2be0507f935a3b97ce5659d86986cb2888679f49ae2a5c3184ed6531fccbe90722a3199e4052666c6f14ada4ff532c31fc0f0c8d040bc491e09143223bf0724a9dac3eb297adaf31eb3afc5c2887cbdc60e4a1c9c74970617a9fd37ad7dfc01171b56975c054d94bac274050a16673fc5bef87cb9a6375027e847b1e05f6606fe52f2c8338cd7be50f8d563d92efcbbc3a163049502c8eae0f54ad6e9dd25c0eeb74f16896a66173f40381cf83c1c31a0f172bb2cb3663aecc0a9837444896b2e6e06772b492d199ca7bb8592885404d744dd9e26c11babfca467bc15559f1feacd82cf6c2ed6511ddd0f740a88ca0e64b34808b90d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e9459451626bcab58b30399f3737c4c62695a72dad157435879fa6241ff8cebddea30d7bb4198ccea3af01d784bbd6b23505d64eb137ce23d7535b0a65134fb348d783a64eb2a80187147c7adf92b064b7d25b2c7c3b8c2ea4d527a02398ff6a212adf../alternatives/log_config.yaml/etc/alternatives/hash_password/etc/alternatives/register_new_matrix_user/etc/alternatives/synapse_port_db/etc/alternatives/synctl/etc/alternatives/synapse.service/etc/alternatives/rcsynapse@@@@@@@rootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootmatrix-synapse-0.28.1-lp150.2.4.1.src.rpmpython3-matrix-synapse@ @@@@      /bin/bash/bin/sh/bin/sh/bin/sh/bin/sh/usr/bin/perl/usr/bin/python/usr/bin/python3group(nogroup)python(abi)python3-Pillowpython3-PyNaClpython3-PyYAMLpython3-Twistedpython3-Twistedpython3-bcryptpython3-blistpython3-canonicaljsonpython3-daemonizepython3-frozendictpython3-jsonschemapython3-msgpack-pythonpython3-msgpack-pythonpython3-phonenumberspython3-pyOpenSSLpython3-pyasn1python3-pydenticonpython3-pymacaroons-pynaclpython3-pysaml2python3-service_identitypython3-signedjsonpython3-ujsonpython3-unpaddedbase64rpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PartialHardlinkSets)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)shadowupdate-alternativesupdate-alternatives3.616.0.01.1.30.42.5.10.3.08.2.00.143.0.01.0.01.0.01.1.03.0.4-14.6.0-14.0.4-14.0-15.2-14.14.1[!@ZK@ZZ@ZԐ@Z@ZR ZZ Z Y[@YTYFk@okurz@suse.comokurz@suse.comokurz@suse.comokurz@suse.comokurz@suse.comokurz@suse.comokurz@suse.comokurz@suse.comokurz@suse.comokurz@suse.comjengelh@inai.deokurz@suse.comokurz@suse.com- Fix security bug in the get_missing_events federation AP (CVE-2018-12291, boo#1096833) - Add boo1096833_event_visibility_rules_not_applied_correctly.patch- Update to version v0.28.1: * SECURITY UPDATE Clamp the allowed values of event depth received over federation to be [0, 2^63 - 1]. This mitigates an attack where malicious events injected with depth = 2^63 - 1 render rooms unusable. Depth is used to determine the cosmetic ordering of events within a room, and so the ordering of events in such a room will default to using stream_ordering rather than depth (topological_ordering). This is a temporary solution to mitigate abuse in the wild, whilst a long term solution is being implemented to improve how the depth parameter is used. Full details at https://docs.google.com/document/d/1I3fi2S-XnpO45qrpCsowZv8P8dHcNZ4fsBsbOW7KABI/edit# Pin Twisted to <18.4 until we stop using the private _OpenSSLECCurve API. * Bug Fixes: * Return 401 for invalid access_token on logout (PR #2938) Thanks to @dklug! * Return a 404 rather than a 500 on rejoining empty rooms (PR #3080) * fix federation_domain_whitelist (PR #3099) * Avoid creating events with huge numbers of prev_events (PR #3113) * Reject events which have lots of prev_events (PR #3118) * Fix quarantine media admin API and search reindex (PR #3130) * Fix media admin APIs (PR #3134) * Features: * Add metrics for event processing lag (PR #3090) * Add metrics for ResponseCache (PR #3092) * Changes: * Synapse on PyPy (PR #2760) Thanks to @Valodim! * move handling of auto_join_rooms to RegisterHandler (PR #2996) Thanks to @krombel! * Improve handling of SRV records for federation connections (PR #3016) Thanks to @silkeh! * Document the behaviour of ResponseCache (PR #3059) * Preparation for py3 (PR #3061, #3073, #3074, #3075, #3103, #3104, #3106, #3107, #3109, #3110) Thanks to @NotAFile! * update prometheus dashboard to use new metric names (PR #3069) Thanks to @krombel! * use python3-compatible prints (PR #3074) Thanks to @NotAFile! * Send federation events concurrently (PR #3078) * Limit concurrent event sends for a room (PR #3079) * Improve R30 stat definition (PR #3086) * Send events to ASes concurrently (PR #3088) * Refactor ResponseCache usage (PR #3093) * Clarify that SRV may not point to a CNAME (PR #3100) Thanks to @silkeh! * Use str(e) instead of e.message (PR #3103) Thanks to @NotAFile! * Use six.itervalues in some places (PR #3106) Thanks to @NotAFile! * Refactor store.have_events (PR #3117)- Disable web-client for package self-test to get rid of unfulfilled dependency- Introduce package self-test based on _multibuild- Update to version v0.27.4: * Bug fixes: * URL quote path segments over federation (#3082) * Add room_id to the response of rooms/{roomId}/join (PR #2986) Thanks to @jplatte! * Fix replication after switch to simplejson (PR #3015) * Fix replication after switch to simplejson (PR #3015) * 404 correctly on missing paths via NoResource (PR #3022) * Fix error when claiming e2e keys from offline servers (PR #3034) * fix tests/storage/test_user_directory.py (PR #3042) * use PUT instead of POST for federating groups/m.join_policy (PR #3070) Thanks to @krombel! * postgres port script: fix state_groups_pkey error (PR #3072) * Features: * Add joinability for groups (PR #3045) * Implement group join API (PR #3046) * Add counter metrics for calculating state delta (PR #3033) * R30 stats (PR #3041) * Measure time it takes to calculate state group ID (PR #3043) * Add basic performance statistics to phone home (PR #3044) * Add response size metrics (PR #3071) * phone home cache size configurations (PR #3063) * Changes: * Update canonicaljson dependency (#3095) * Add a blurb explaining the main synapse worker (PR #2886) Thanks to @turt2live! * Replace old style error catching with 'as' keyword (PR #3000) Thanks to @NotAFile! * Use .iter* to avoid copies in StateHandler (PR #3006) * Linearize calls to _generate_user_id (PR #3029) * Remove last usage of ujson (PR #3030) * Use simplejson throughout (PR #3048) * Use static JSONEncoders (PR #3049) * Remove uses of events.content (PR #3060) * Improve database cache performance (PR #3068)- Update to version v0.27.2: * Bug fixes: * Fix bug which broke TCP replication between workers (PR #3015) * Fix broken ldap_config config option (PR #2683) Thanks to @seckrv! * Fix error message when user is not allowed to unban (PR #2761) Thanks to @turt2live! * Fix publicised groups GET API (singular) over federation (PR #2772) * Fix user directory when using user_directory_search_all_users config option (PR #2803, #2831) * Fix error on /publicRooms when no rooms exist (PR #2827) * Fix bug in quarantine_media (PR #2837) * Fix url_previews when no Content-Type is returned from URL (PR #2845) * Fix rare race in sync API when joining room (PR #2944) * Fix slow event search, switch back from GIST to GIN indexes (PR #2769, [#2848]) * Fix bug where an invalid event caused server to stop functioning correctly, due to parsing and serializing bugs in ujson library. * Features: * Add ability for ASes to override message send time (PR #2754) * Add support for custom storage providers for media repository (PR #2867, [#2777], #2783, #2789, #2791, #2804, #2812, #2814, #2857, #2868, #2767) * Add purge API features, see docs/admin_api/purge_history_api.rst for full details (PR #2858, #2867, #2882, #2946, #2962, #2943) * Add support for whitelisting 3PIDs that users can register. (PR #2813) * Add /room/{id}/event/{id} API (PR #2766) * Add an admin API to get all the media in a room (PR #2818) Thanks to @turt2live! * Add federation_domain_whitelist option (PR #2820, #2821) * Changes: * Continue to factor out processing from main process and into worker processes. See updated docs/workers.rst (PR #2892 - #2904, #2913, #2920 - #2926, #2947, #2847, #2854, #2872, #2873, #2874, #2928, #2929, #2934, [#2856], #2976 - #2984, #2987 - #2989, #2991 - #2993, #2995, #2784) * Ensure state cache is used when persisting events (PR #2864, #2871, [#2802], #2835, #2836, #2841, #2842, #2849) * Change the default config to bind on both IPv4 and IPv6 on all platforms (PR #2435) Thanks to @silkeh! * No longer require a specific version of saml2 (PR #2695) Thanks to @okurz! * Remove verbosity/log_file from generated config (PR #2755) * Add and improve metrics and logging (PR #2770, #2778, #2785, #2786, [#2787], #2793, #2794, #2795, #2809, #2810, #2833, #2834, #2844, #2965, [#2927], #2975, #2790, #2796, #2838) * When using synctl with workers, don't start the main synapse automatically (PR #2774) * Minor performance improvements (PR #2773, #2792) * Use a connection pool for non-federation outbound connections (PR #2817) * Make it possible to run unit tests against postgres (PR #2829) * Update pynacl dependency to 1.2.1 or higher (PR #2888) Thanks to @bachp! * Remove ability for AS users to call /events and /sync (PR #2948) * Use bcrypt.checkpw (PR #2949) Thanks to @krombel! - Change spec-file to use service downloaded and recompressed file directly - Remove patch synapse_python_dependencies_allow_higher_versions_of_pysaml2.patch now included in upstream changes- Update to version v0.26.0: * Bug fixes: * Fix database port script (PR #2673) * Fix internal server error on login with ldap_auth_provider (PR #2678) Thanks to @jkolo! * Fix error on sqlite 3.7 (PR #2697) * Fix OPTIONS on preview_url (PR #2707) * Fix error handling on dns lookup (PR #2711) * Fix wrong avatars when inviting multiple users when creating room (PR #2717) * Fix 500 when joining matrix-dev (PR #2719) * Features: * Add ability for ASes to publicise groups for their users (PR #2686) * Add all local users to the user_directory and optionally search them (PR * #2723) * Add support for custom login types for validating users (PR #2729) * Changes: * Update example Prometheus config to new format (PR #2648) Thanks to @krombel! * Rename redact_content option to include_content in Push API (PR #2650) * Declare support for r0.3.0 (PR #2677) * Improve upserts (PR #2684, #2688, #2689, #2713) * Improve documentation of workers (PR #2700) * Improve tracebacks on exceptions (PR #2705) * Allow guest access to group APIs for reading (PR #2715) * Support for posting content in federation_client script (PR #2716) * Delete devices and pushers on logouts etc (PR #2722)- Update to version v0.25.1: * Bug fixes: * Fix login with LDAP and other password provider modules (PR #2678). Thanks to @jkolo! * Fix port script (PR #2673) * Fix port script (PR #2577) * Fix error when running synapse with no logfile (PR #2581) * Fix UI auth when deleting devices (PR #2591) * Fix typo when checking if user is invited to group (PR #2599) * Fix the port script to drop NUL values in all tables (PR #2611) * Fix appservices being backlogged and not receiving new events due to a bug in notify_interested_services (PR #2631) Thanks to @xyzz! * Fix updating rooms avatar/display name when modified by admin (PR #2636) * Thanks to @farialima! * Fix bug in state group storage (PR #2649) * Fix 500 on invalid utf-8 in request (PR #2663) * Features: * Add is_public to groups table to allow for private groups (PR #2582) * Add a route for determining who you are (PR #2668) Thanks to @turt2live! * Add more features to the password providers (PR #2608, #2610, #2620, [#2622], #2623, #2624, #2626, #2628, #2629) * Add a hook for custom rest endpoints (PR #2627) * Add API to update group room visibility (PR #2651) * Changes: * Ignore tags when generating URL preview descriptions (PR #2576) Thanks to @maximevaillancourt! * Register some /unstable endpoints in /r0 as well (PR #2579) Thanks to @krombel! * Support /keys/upload on /r0 as well as /unstable (PR #2585) * Front-end proxy: pass through auth header (PR #2586) * Allow ASes to deactivate their own users (PR #2589) * Remove refresh tokens (PR #2613) * Automatically set default displayname on register (PR #2617) * Log login requests (PR #2618) * Always return is_public in the /groups/:group_id/rooms API (PR #2630) * Avoid no-op media deletes (PR #2637) Thanks to @spantaleev! * Fix various embarrassing typos around user_directory and add some doc. (PR #2643) * Return whether a user is an admin within a group (PR #2647) * Namespace visibility options for groups (PR #2657) * Downcase UserIDs on registration (PR #2662) * Cache failures when fetching URL previews (PR #2669) * Add patch synapse_python_dependencies_allow_higher_versions_of_pysaml2.patch- Update to version v0.24.1: * Bug fixes: * Fix updating group profiles over federation (PR #2567) * Fix handling SERVFAILs when doing AAAA lookups for federation (PR #2477) * Fix incompatibility with newer versions of ujson (PR #2483) Thanks to @jeremycline! * Fix notification keywords that start/end with non-word chars (PR #2500) * Fix stack overflow and logcontexts from linearizer (PR #2532) * Fix 500 error when fields missing from power_levels event (PR #2552) * Fix 500 error when we get an error handling a PDU (PR #2553) * Fix regression in performance of syncs (PR #2470) * Fix caching error in the push evaluator (PR #2332) * Fix bug where pusherpool didn't start and broke some rooms (PR #2342) * Fix port script for user directory tables (PR #2375) * Fix device lists notifications when user rejoins a room (PR #2443, #2449) * Fix sync to always send down current state events in timeline (PR #2451) * Fix bug where guest users were incorrectly kicked (PR #2453) * Fix bug talking to IPv6 only servers using SRV records (PR #2462) * Fix synapse_port_db failure. Thanks to Pneumaticat! (PR #1904) * Fix caching to not cache error responses (PR #1913) * Fix APIs to make kick & ban reasons work (PR #1917) * Fix bugs in the /keys/changes api (PR #1921) * Fix bug where users couldn't forget rooms they were banned from (PR #1922) * Fix issue with long language values in pushers API (PR #1925) * Fix a race in transaction queue (PR #1930) * Fix dynamic thumbnailing to preserve aspect ratio. Thanks to jkolo! (PR [#1945]) * Fix device list update to not constantly resync (PR #1964) * Fix potential for huge memory usage when getting device that have changed (PR #1969) * Fix bug where pusher pool didn't start and caused issues when interacting with some rooms (PR #2342) * Fix bug with storing registration sessions that caused frequent CPU churn (PR #2319) * Fix users not getting notifications when AS listened to that user_id (PR [#2216]) Thanks to @slipeer! * Fix users without push set up not getting notifications after joining rooms (PR #2236) * Fix preview url API to trim long descriptions (PR #2243) * Fix bug where we used cached but unpersisted state group as prev group, resulting in broken state of restart (PR #2263) * Fix removing of pushers when using workers (PR #2267) * Fix CORS headers to allow Authorization header (PR #2285) Thanks to @krombel! * Fix bug in anonymous usage statistic reporting (PR #2281) * Fix API to allow clients to upload one-time-keys with new sigs (PR #2206) * Fix bug where users got pushed for rooms they had muted (PR #2200) * Fix nuke-room script to work with current schema (PR #1927) Thanks @zuckschwerdt! * Fix db port script to not assume postgres tables are in the public schema (PR #2024) Thanks @jerrykan! * Fix getting latest device IP for user with no devices (PR #2118) * Fix rejection of invites to unreachable servers (PR #2145) * Fix code for reporting old verify keys in synapse (PR #2156) * Fix invite state to always include all events (PR #2163) * Fix bug where synapse would always fetch state for any missing event (PR #2170) * Fix a leak with timed out HTTP connections (PR #2180) * Fix bug where we didn't time out HTTP requests to ASes (PR #2192) * Fix joining rooms over federation where not all servers in the room saw the new server had joined (PR #2094) * Fix bug where current_state_events renamed to current_state_ids (PR #1849) * Fix routing loop when fetching remote media (PR #1992) * Fix current_state_events table to not lie (PR #1996) * Fix CAS login to handle PartialDownloadError (PR #1997) * Fix assertion to stop transaction queue getting wedged (PR #2010) * Fix presence to fallback to last_active_ts if it beats the last sync time. Thanks @Half-Shot! (PR #2014) * Fix bug when federation received a PDU while a room join is in progress (PR [#2016]) * Fix resetting state on rejected events (PR #2025) * Fix installation issues in readme. Thanks @ricco386 (PR #2037) * Fix caching of remote servers' signature keys (PR #2042) * Fix some leaking log context (PR #2048, #2049, #2057, #2058) * Fix rejection of invites not reaching sync (PR #2056) * Fix bug in handling of incoming device list updates over federation. * Features: * Add Group Server (PR #2352, #2363, #2374, #2377, #2378, #2382, #2410, #2426, [#2430], #2454, #2471, #2472, #2544) * Add support for channel notifications (PR #2501) * Add basic implementation of backup media store (PR #2538) * Add config option to auto-join new users to rooms (PR #2545) * Add a frontend proxy worker (PR #2344) * Add support for event_id_only push format (PR #2450) * Add a PoC for filtering spammy events (PR #2456) * Add a config option to block all room invites (PR #2457) * Add a user directory API (PR #2252, and many more) * Add shutdown room API to remove room from local server (PR #2291) * Add API to quarantine media (PR #2292) * Add new config option to not send event contents to push servers (PR #2301) Thanks to @cjdelisle! * Add per user rate-limiting overrides (PR #2208) * Add config option to limit maximum number of events requested by ``/sync`` and ``/messages`` (PR #2221) Thanks to @psaavedra! * Add username availability checker API (PR #2183) * Add read marker API (PR #2120) * Add delete_devices API (PR #1993) * Add phone number registration/login support (PR #1994, #2055) * Add some administration functionalities. Thanks to morteza-araby! (PR #1784) * Changes: * Make the spam checker a module (PR #2474) * Delete expired url cache data (PR #2478) * Ignore incoming events for rooms that we have left (PR #2490) * Allow spam checker to reject invites too (PR #2492) * Add room creation checks to spam checker (PR #2495) * Spam checking: add the invitee to user_may_invite (PR #2502) * Process events from federation for different rooms in parallel (PR #2520) * Allow error strings from spam checker (PR #2531) * Improve error handling for missing files in config (PR #2551) * Make 'affinity' package optional, as it is not supported on some platforms * Use bcrypt module instead of py-bcrypt (PR #2288) Thanks to @kyrias! * Improve performance of generating push notifications (PR #2343, #2357, #2365, [#2366], #2371) * Improve DB performance for device list handling in sync (PR #2362) * Include a sample prometheus config (PR #2416) * Document known to work postgres version (PR #2433) Thanks to @ptman! * Improve performance of storing user IPs (PR #2307, #2308) * Slightly improve performance of verifying access tokens (PR #2320) * Slightly improve performance of event persistence (PR #2321) * Increase default cache factor size from 0.1 to 0.5 (PR #2330) * Various performance fixes (PR #2177, #2233, #2230, #2238, #2248, #2256, [#2274]) * Deduplicate sync filters (PR #2219) Thanks to @krombel! * Correct a typo in UPGRADE.rst (PR #2231) Thanks to @aaronraimist! * Add count of one time keys to sync stream (PR #2237) * Only store event_auth for state events (PR #2247) * Store URL cache preview downloads separately (PR #2299) * Various small performance fixes (PR #2201, #2202, #2224, #2226, #2227, #2228, [#2229]) * Update username availability checker API (PR #2209, #2213) * When purging, don't de-delta state groups we're about to delete (PR #2214) * Documentation to check synapse version (PR #2215) Thanks to @hamber-dick! * Add an index to event_search to speed up purge history API (PR #2218) * Always mark remotes as up if we receive a signed request from them (PR #2190) * Enable guest access for the 3pl/3pid APIs (PR #1986) * Add setting to support TURN for guests (PR #2011) * Various performance improvements (PR #2075, #2076, #2080, #2083, #2108, [#2158], #2176, #2185) * Make synctl a bit more user friendly (PR #2078, #2127) Thanks @APwhitehat! * Replace HTTP replication with TCP replication (PR #2082, #2097, #2098, [#2099], #2103, #2014, #2016, #2115, #2116, #2117) * Support authenticated SMTP (PR #2102) Thanks @DanielDent! * Add a counter metric for successfully-sent transactions (PR #2121) * Propagate errors sensibly from proxied IS requests (PR #2147) * Add more granular event send metrics (PR #2178) * Use JSONSchema for validation of filters. Thanks @pik! (PR #1783) * Reread log config on SIGHUP (PR #1982) * Speed up public room list (PR #1989) * Add helpful texts to logger config options (PR #1990) * Minor ``/sync`` performance improvements. (PR #2002, #2013, #2022) * Add some debug to help diagnose weird federation issue (PR #2035) * Correctly limit retries for all federation requests (PR #2050, #2061) * Don't lock table when persisting new one time keys (PR #2053) * Reduce some CPU work on DB threads (PR #2054) * Cache hosts in room (PR #2060) * Batch sending of device list pokes (PR #2063) * Speed up persist event path in certain edge cases (PR #2070) * Reduce database table sizes (PR #1873, #1916, #1923, #1963) * Update contrib/ to not use syutil. Thanks to andrewshadura! (PR #1907) * Don't fetch current state when sending an event in common case (PR #1955)- Update to version v0.24.1+4.632baf79: * Disallow capital letters in userids * Allow = in mxids and groupids * Validate group ids when parsing * Fix a logcontext leak in the media repo * Correctly wire in update group profile over federation * replace 'except:' with 'except Exception:' * fix vars named `l` * Bump version and changelog * Add jitter to validity period of attestations * Revert "Add jitter to validity period of attestations"- Do not suppress errors from useradd procedure. - Trim description to the essence of the package. It is not supposed to be a manual or architectural document. - Remove redundant %clean section. Replace %__-type macro indirections.- Prevent conflicts between python2/3 version of packages- Initial version of matrix-synapse version 0.19.2/bin/sh/bin/sh/bin/sh/bin/shcloud131 1528897791  "#$%&'()*+,-./0123356789:;<==??ABCDEFGHIJKLLNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~11      !""$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~1       ""$$&'()*+,-./0123456789:;<==?@ABCDEFGHIJKLMNOPQQSTUVVXYZ[\]1_``bcdefghijklmnopqrrtuvwxyz{|}~1TT      !"#$%&'!)*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRRTUVWXYZZ\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~qrtx11     0.28.1-lp150.2.4.1     !!""##$$$$$$$$$$$$$$$$$$$$$$$$$$$$#############%%&&%''((((((''%))**)++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,++++++++++++++++++++%--............-----//00/11222222113344444444444444444444444444444433333333333333155666666666666666666666666666666666666666666555555555555555555551/7788799::::97;;<<<<<<;;/==>>=??@@@@?=AABBBBBBBBBBBBBBBBBBBBBBBBAAAAAAAAAAACDEEFFEEDGGHHHGGIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJIIIIIIIIIIKKLLLLLLLLKKKIIIIIIIIIIIIIIIIIIIIMNONPNQNRSSRRNTTTNUUUUUUNVVVNWNXNYZZYYN[[N\\N]N^N__``____NaNbccbbbNddddddNeNfggffffffffNhiiiihhhhhNjjjjjNkllllkkkkkkkNmnnnnnnmmmmmmNoooooooooNpNqrrqqNsNtttttNuuuuuNvvvvNwxxwwwwNyyyyNzN{{N||||||N}~~}}}}NMMIIIIIIIIhash_passwordlog_config.yamlrcsynapseregister_new_matrix_usersynapse.servicesynapse_port_dbsynctlsynapselog_config.yamllog_config.yaml-3.6hash_passwordhash_password-3.6move_remote_media_to_new_store.pyregister_new_matrix_userregister_new_matrix_user-3.6synapse_port_dbsynapse_port_db-3.6sync_room_to_group.plsynctlsynctl-3.6site-packagesmatrix_synapse-0.28.1-py3.6.egg-infoPKG-INFOSOURCES.txtdependency_links.txtnot-zip-saferequires.txttop_level.txtsynapse__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pycevent_auth.cpython-36.opt-1.pycevent_auth.cpython-36.pycnotifier.cpython-36.opt-1.pycnotifier.cpython-36.pycpython_dependencies.cpython-36.opt-1.pycpython_dependencies.cpython-36.pycserver.cpython-36.opt-1.pycserver.cpython-36.pycstate.cpython-36.opt-1.pycstate.cpython-36.pyctypes.cpython-36.opt-1.pyctypes.cpython-36.pycvisibility.cpython-36.opt-1.pycvisibility.cpython-36.pycapi__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pycauth.cpython-36.opt-1.pycauth.cpython-36.pycconstants.cpython-36.opt-1.pycconstants.cpython-36.pycerrors.cpython-36.opt-1.pycerrors.cpython-36.pycfiltering.cpython-36.opt-1.pycfiltering.cpython-36.pycratelimiting.cpython-36.opt-1.pycratelimiting.cpython-36.pycurls.cpython-36.opt-1.pycurls.cpython-36.pycauth.pyconstants.pyerrors.pyfiltering.pyratelimiting.pyurls.pyapp__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pyc_base.cpython-36.opt-1.pyc_base.cpython-36.pycappservice.cpython-36.opt-1.pycappservice.cpython-36.pycclient_reader.cpython-36.opt-1.pycclient_reader.cpython-36.pycevent_creator.cpython-36.opt-1.pycevent_creator.cpython-36.pycfederation_reader.cpython-36.opt-1.pycfederation_reader.cpython-36.pycfederation_sender.cpython-36.opt-1.pycfederation_sender.cpython-36.pycfrontend_proxy.cpython-36.opt-1.pycfrontend_proxy.cpython-36.pychomeserver.cpython-36.opt-1.pychomeserver.cpython-36.pycmedia_repository.cpython-36.opt-1.pycmedia_repository.cpython-36.pycpusher.cpython-36.opt-1.pycpusher.cpython-36.pycsynchrotron.cpython-36.opt-1.pycsynchrotron.cpython-36.pycsynctl.cpython-36.opt-1.pycsynctl.cpython-36.pycuser_dir.cpython-36.opt-1.pycuser_dir.cpython-36.pyc_base.pyappservice.pyclient_reader.pyevent_creator.pyfederation_reader.pyfederation_sender.pyfrontend_proxy.pyhomeserver.pymedia_repository.pypusher.pysynchrotron.pysynctl.pyuser_dir.pyappservice__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pycapi.cpython-36.opt-1.pycapi.cpython-36.pycscheduler.cpython-36.opt-1.pycscheduler.cpython-36.pycapi.pyscheduler.pyconfig__init__.py__main__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pyc__main__.cpython-36.opt-1.pyc__main__.cpython-36.pyc_base.cpython-36.opt-1.pyc_base.cpython-36.pycapi.cpython-36.opt-1.pycapi.cpython-36.pycappservice.cpython-36.opt-1.pycappservice.cpython-36.pyccaptcha.cpython-36.opt-1.pyccaptcha.cpython-36.pyccas.cpython-36.opt-1.pyccas.cpython-36.pycdatabase.cpython-36.opt-1.pycdatabase.cpython-36.pycemailconfig.cpython-36.opt-1.pycemailconfig.cpython-36.pycgroups.cpython-36.opt-1.pycgroups.cpython-36.pychomeserver.cpython-36.opt-1.pychomeserver.cpython-36.pycjwt.cpython-36.opt-1.pycjwt.cpython-36.pyckey.cpython-36.opt-1.pyckey.cpython-36.pyclogger.cpython-36.opt-1.pyclogger.cpython-36.pycmetrics.cpython-36.opt-1.pycmetrics.cpython-36.pycpassword.cpython-36.opt-1.pycpassword.cpython-36.pycpassword_auth_providers.cpython-36.opt-1.pycpassword_auth_providers.cpython-36.pycpush.cpython-36.opt-1.pycpush.cpython-36.pycratelimiting.cpython-36.opt-1.pycratelimiting.cpython-36.pycregistration.cpython-36.opt-1.pycregistration.cpython-36.pycrepository.cpython-36.opt-1.pycrepository.cpython-36.pycsaml2.cpython-36.opt-1.pycsaml2.cpython-36.pycserver.cpython-36.opt-1.pycserver.cpython-36.pycspam_checker.cpython-36.opt-1.pycspam_checker.cpython-36.pyctls.cpython-36.opt-1.pyctls.cpython-36.pycuser_directory.cpython-36.opt-1.pycuser_directory.cpython-36.pycvoip.cpython-36.opt-1.pycvoip.cpython-36.pycworkers.cpython-36.opt-1.pycworkers.cpython-36.pyc_base.pyapi.pyappservice.pycaptcha.pycas.pydatabase.pyemailconfig.pygroups.pyhomeserver.pyjwt.pykey.pylogger.pymetrics.pypassword.pypassword_auth_providers.pypush.pyratelimiting.pyregistration.pyrepository.pysaml2.pyserver.pyspam_checker.pytls.pyuser_directory.pyvoip.pyworkers.pycrypto__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pyccontext_factory.cpython-36.opt-1.pyccontext_factory.cpython-36.pycevent_signing.cpython-36.opt-1.pycevent_signing.cpython-36.pyckeyclient.cpython-36.opt-1.pyckeyclient.cpython-36.pyckeyring.cpython-36.opt-1.pyckeyring.cpython-36.pyccontext_factory.pyevent_signing.pykeyclient.pykeyring.pyevent_auth.pyevents__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pycbuilder.cpython-36.opt-1.pycbuilder.cpython-36.pycsnapshot.cpython-36.opt-1.pycsnapshot.cpython-36.pycspamcheck.cpython-36.opt-1.pycspamcheck.cpython-36.pycutils.cpython-36.opt-1.pycutils.cpython-36.pycvalidator.cpython-36.opt-1.pycvalidator.cpython-36.pycbuilder.pysnapshot.pyspamcheck.pyutils.pyvalidator.pyfederation__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pycfederation_base.cpython-36.opt-1.pycfederation_base.cpython-36.pycfederation_client.cpython-36.opt-1.pycfederation_client.cpython-36.pycfederation_server.cpython-36.opt-1.pycfederation_server.cpython-36.pycpersistence.cpython-36.opt-1.pycpersistence.cpython-36.pycsend_queue.cpython-36.opt-1.pycsend_queue.cpython-36.pyctransaction_queue.cpython-36.opt-1.pyctransaction_queue.cpython-36.pycunits.cpython-36.opt-1.pycunits.cpython-36.pycfederation_base.pyfederation_client.pyfederation_server.pypersistence.pysend_queue.pytransaction_queue.pytransport__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pycclient.cpython-36.opt-1.pycclient.cpython-36.pycserver.cpython-36.opt-1.pycserver.cpython-36.pycclient.pyserver.pyunits.pygroups__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pycattestations.cpython-36.opt-1.pycattestations.cpython-36.pycgroups_server.cpython-36.opt-1.pycgroups_server.cpython-36.pycattestations.pygroups_server.pyhandlers__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pyc_base.cpython-36.opt-1.pyc_base.cpython-36.pycaccount_data.cpython-36.opt-1.pycaccount_data.cpython-36.pycadmin.cpython-36.opt-1.pycadmin.cpython-36.pycappservice.cpython-36.opt-1.pycappservice.cpython-36.pycauth.cpython-36.opt-1.pycauth.cpython-36.pycdeactivate_account.cpython-36.opt-1.pycdeactivate_account.cpython-36.pycdevice.cpython-36.opt-1.pycdevice.cpython-36.pycdevicemessage.cpython-36.opt-1.pycdevicemessage.cpython-36.pycdirectory.cpython-36.opt-1.pycdirectory.cpython-36.pyce2e_keys.cpython-36.opt-1.pyce2e_keys.cpython-36.pycevents.cpython-36.opt-1.pycevents.cpython-36.pycfederation.cpython-36.opt-1.pycfederation.cpython-36.pycgroups_local.cpython-36.opt-1.pycgroups_local.cpython-36.pycidentity.cpython-36.opt-1.pycidentity.cpython-36.pycinitial_sync.cpython-36.opt-1.pycinitial_sync.cpython-36.pycmessage.cpython-36.opt-1.pycmessage.cpython-36.pycpresence.cpython-36.opt-1.pycpresence.cpython-36.pycprofile.cpython-36.opt-1.pycprofile.cpython-36.pycread_marker.cpython-36.opt-1.pycread_marker.cpython-36.pycreceipts.cpython-36.opt-1.pycreceipts.cpython-36.pycregister.cpython-36.opt-1.pycregister.cpython-36.pycroom.cpython-36.opt-1.pycroom.cpython-36.pycroom_list.cpython-36.opt-1.pycroom_list.cpython-36.pycroom_member.cpython-36.opt-1.pycroom_member.cpython-36.pycroom_member_worker.cpython-36.opt-1.pycroom_member_worker.cpython-36.pycsearch.cpython-36.opt-1.pycsearch.cpython-36.pycset_password.cpython-36.opt-1.pycset_password.cpython-36.pycsync.cpython-36.opt-1.pycsync.cpython-36.pyctyping.cpython-36.opt-1.pyctyping.cpython-36.pycuser_directory.cpython-36.opt-1.pycuser_directory.cpython-36.pyc_base.pyaccount_data.pyadmin.pyappservice.pyauth.pydeactivate_account.pydevice.pydevicemessage.pydirectory.pye2e_keys.pyevents.pyfederation.pygroups_local.pyidentity.pyinitial_sync.pymessage.pypresence.pyprofile.pyread_marker.pyreceipts.pyregister.pyroom.pyroom_list.pyroom_member.pyroom_member_worker.pysearch.pyset_password.pysync.pytyping.pyuser_directory.pyhttp__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pycadditional_resource.cpython-36.opt-1.pycadditional_resource.cpython-36.pycclient.cpython-36.opt-1.pycclient.cpython-36.pycendpoint.cpython-36.opt-1.pycendpoint.cpython-36.pycmatrixfederationclient.cpython-36.opt-1.pycmatrixfederationclient.cpython-36.pycserver.cpython-36.opt-1.pycserver.cpython-36.pycservlet.cpython-36.opt-1.pycservlet.cpython-36.pycsite.cpython-36.opt-1.pycsite.cpython-36.pycadditional_resource.pyclient.pyendpoint.pymatrixfederationclient.pyserver.pyservlet.pysite.pymetrics__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pycmetric.cpython-36.opt-1.pycmetric.cpython-36.pycprocess_collector.cpython-36.opt-1.pycprocess_collector.cpython-36.pycresource.cpython-36.opt-1.pycresource.cpython-36.pycmetric.pyprocess_collector.pyresource.pymodule_api__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pycnotifier.pypush__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pycaction_generator.cpython-36.opt-1.pycaction_generator.cpython-36.pycbaserules.cpython-36.opt-1.pycbaserules.cpython-36.pycbulk_push_rule_evaluator.cpython-36.opt-1.pycbulk_push_rule_evaluator.cpython-36.pycclientformat.cpython-36.opt-1.pycclientformat.cpython-36.pycemailpusher.cpython-36.opt-1.pycemailpusher.cpython-36.pychttppusher.cpython-36.opt-1.pychttppusher.cpython-36.pycmailer.cpython-36.opt-1.pycmailer.cpython-36.pycpresentable_names.cpython-36.opt-1.pycpresentable_names.cpython-36.pycpush_rule_evaluator.cpython-36.opt-1.pycpush_rule_evaluator.cpython-36.pycpush_tools.cpython-36.opt-1.pycpush_tools.cpython-36.pycpusher.cpython-36.opt-1.pycpusher.cpython-36.pycpusherpool.cpython-36.opt-1.pycpusherpool.cpython-36.pycrulekinds.cpython-36.opt-1.pycrulekinds.cpython-36.pycaction_generator.pybaserules.pybulk_push_rule_evaluator.pyclientformat.pyemailpusher.pyhttppusher.pymailer.pypresentable_names.pypush_rule_evaluator.pypush_tools.pypusher.pypusherpool.pyrulekinds.pypython_dependencies.pyreplication__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pychttp__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pycmembership.cpython-36.opt-1.pycmembership.cpython-36.pycsend_event.cpython-36.opt-1.pycsend_event.cpython-36.pycmembership.pysend_event.pyslave__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pycstorage__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pyc_base.cpython-36.opt-1.pyc_base.cpython-36.pyc_slaved_id_tracker.cpython-36.opt-1.pyc_slaved_id_tracker.cpython-36.pycaccount_data.cpython-36.opt-1.pycaccount_data.cpython-36.pycappservice.cpython-36.opt-1.pycappservice.cpython-36.pycclient_ips.cpython-36.opt-1.pycclient_ips.cpython-36.pycdeviceinbox.cpython-36.opt-1.pycdeviceinbox.cpython-36.pycdevices.cpython-36.opt-1.pycdevices.cpython-36.pycdirectory.cpython-36.opt-1.pycdirectory.cpython-36.pycevents.cpython-36.opt-1.pycevents.cpython-36.pycfiltering.cpython-36.opt-1.pycfiltering.cpython-36.pycgroups.cpython-36.opt-1.pycgroups.cpython-36.pyckeys.cpython-36.opt-1.pyckeys.cpython-36.pycpresence.cpython-36.opt-1.pycpresence.cpython-36.pycprofile.cpython-36.opt-1.pycprofile.cpython-36.pycpush_rule.cpython-36.opt-1.pycpush_rule.cpython-36.pycpushers.cpython-36.opt-1.pycpushers.cpython-36.pycreceipts.cpython-36.opt-1.pycreceipts.cpython-36.pycregistration.cpython-36.opt-1.pycregistration.cpython-36.pycroom.cpython-36.opt-1.pycroom.cpython-36.pyctransactions.cpython-36.opt-1.pyctransactions.cpython-36.pyc_base.py_slaved_id_tracker.pyaccount_data.pyappservice.pyclient_ips.pydeviceinbox.pydevices.pydirectory.pyevents.pyfiltering.pygroups.pykeys.pypresence.pyprofile.pypush_rule.pypushers.pyreceipts.pyregistration.pyroom.pytransactions.pytcp__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pycclient.cpython-36.opt-1.pycclient.cpython-36.pyccommands.cpython-36.opt-1.pyccommands.cpython-36.pycprotocol.cpython-36.opt-1.pycprotocol.cpython-36.pycresource.cpython-36.opt-1.pycresource.cpython-36.pycstreams.cpython-36.opt-1.pycstreams.cpython-36.pycclient.pycommands.pyprotocol.pyresource.pystreams.pyrest__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pycclient__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pyctransactions.cpython-36.opt-1.pyctransactions.cpython-36.pycversions.cpython-36.opt-1.pycversions.cpython-36.pyctransactions.pyv1__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pycadmin.cpython-36.opt-1.pycadmin.cpython-36.pycbase.cpython-36.opt-1.pycbase.cpython-36.pycdirectory.cpython-36.opt-1.pycdirectory.cpython-36.pycevents.cpython-36.opt-1.pycevents.cpython-36.pycinitial_sync.cpython-36.opt-1.pycinitial_sync.cpython-36.pyclogin.cpython-36.opt-1.pyclogin.cpython-36.pyclogout.cpython-36.opt-1.pyclogout.cpython-36.pycpresence.cpython-36.opt-1.pycpresence.cpython-36.pycprofile.cpython-36.opt-1.pycprofile.cpython-36.pycpush_rule.cpython-36.opt-1.pycpush_rule.cpython-36.pycpusher.cpython-36.opt-1.pycpusher.cpython-36.pycregister.cpython-36.opt-1.pycregister.cpython-36.pycroom.cpython-36.opt-1.pycroom.cpython-36.pycvoip.cpython-36.opt-1.pycvoip.cpython-36.pycadmin.pybase.pydirectory.pyevents.pyinitial_sync.pylogin.pylogout.pypresence.pyprofile.pypush_rule.pypusher.pyregister.pyroom.pyvoip.pyv2_alpha__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pyc_base.cpython-36.opt-1.pyc_base.cpython-36.pycaccount.cpython-36.opt-1.pycaccount.cpython-36.pycaccount_data.cpython-36.opt-1.pycaccount_data.cpython-36.pycauth.cpython-36.opt-1.pycauth.cpython-36.pycdevices.cpython-36.opt-1.pycdevices.cpython-36.pycfilter.cpython-36.opt-1.pycfilter.cpython-36.pycgroups.cpython-36.opt-1.pycgroups.cpython-36.pyckeys.cpython-36.opt-1.pyckeys.cpython-36.pycnotifications.cpython-36.opt-1.pycnotifications.cpython-36.pycopenid.cpython-36.opt-1.pycopenid.cpython-36.pycread_marker.cpython-36.opt-1.pycread_marker.cpython-36.pycreceipts.cpython-36.opt-1.pycreceipts.cpython-36.pycregister.cpython-36.opt-1.pycregister.cpython-36.pycreport_event.cpython-36.opt-1.pycreport_event.cpython-36.pycsendtodevice.cpython-36.opt-1.pycsendtodevice.cpython-36.pycsync.cpython-36.opt-1.pycsync.cpython-36.pyctags.cpython-36.opt-1.pyctags.cpython-36.pycthirdparty.cpython-36.opt-1.pycthirdparty.cpython-36.pyctokenrefresh.cpython-36.opt-1.pyctokenrefresh.cpython-36.pycuser_directory.cpython-36.opt-1.pycuser_directory.cpython-36.pyc_base.pyaccount.pyaccount_data.pyauth.pydevices.pyfilter.pygroups.pykeys.pynotifications.pyopenid.pyread_marker.pyreceipts.pyregister.pyreport_event.pysendtodevice.pysync.pytags.pythirdparty.pytokenrefresh.pyuser_directory.pyversions.pykey__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pycv1__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pycserver_key_resource.cpython-36.opt-1.pycserver_key_resource.cpython-36.pycserver_key_resource.pyv2__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pyclocal_key_resource.cpython-36.opt-1.pyclocal_key_resource.cpython-36.pycremote_key_resource.cpython-36.opt-1.pycremote_key_resource.cpython-36.pyclocal_key_resource.pyremote_key_resource.pymedia__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pycv0__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pyccontent_repository.cpython-36.opt-1.pyccontent_repository.cpython-36.pyccontent_repository.pyv1__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pyc_base.cpython-36.opt-1.pyc_base.cpython-36.pycdownload_resource.cpython-36.opt-1.pycdownload_resource.cpython-36.pycfilepath.cpython-36.opt-1.pycfilepath.cpython-36.pycidenticon_resource.cpython-36.opt-1.pycidenticon_resource.cpython-36.pycmedia_repository.cpython-36.opt-1.pycmedia_repository.cpython-36.pycmedia_storage.cpython-36.opt-1.pycmedia_storage.cpython-36.pycpreview_url_resource.cpython-36.opt-1.pycpreview_url_resource.cpython-36.pycstorage_provider.cpython-36.opt-1.pycstorage_provider.cpython-36.pycthumbnail_resource.cpython-36.opt-1.pycthumbnail_resource.cpython-36.pycthumbnailer.cpython-36.opt-1.pycthumbnailer.cpython-36.pycupload_resource.cpython-36.opt-1.pycupload_resource.cpython-36.pyc_base.pydownload_resource.pyfilepath.pyidenticon_resource.pymedia_repository.pymedia_storage.pypreview_url_resource.pystorage_provider.pythumbnail_resource.pythumbnailer.pyupload_resource.pyserver.pyserver.pyistate.pystaticclientloginindex.htmljsjquery-2.1.3.min.jslogin.jsspinner.gifstyle.cssregisterindex.htmljsjquery-2.1.3.min.jsrecaptcha_ajax.jsregister.jsregister_config.sample.jsstyle.cssstorage__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pyc_base.cpython-36.opt-1.pyc_base.cpython-36.pycaccount_data.cpython-36.opt-1.pycaccount_data.cpython-36.pycappservice.cpython-36.opt-1.pycappservice.cpython-36.pycbackground_updates.cpython-36.opt-1.pycbackground_updates.cpython-36.pycclient_ips.cpython-36.opt-1.pycclient_ips.cpython-36.pycdeviceinbox.cpython-36.opt-1.pycdeviceinbox.cpython-36.pycdevices.cpython-36.opt-1.pycdevices.cpython-36.pycdirectory.cpython-36.opt-1.pycdirectory.cpython-36.pycend_to_end_keys.cpython-36.opt-1.pycend_to_end_keys.cpython-36.pycevent_federation.cpython-36.opt-1.pycevent_federation.cpython-36.pycevent_push_actions.cpython-36.opt-1.pycevent_push_actions.cpython-36.pycevents.cpython-36.opt-1.pycevents.cpython-36.pycevents_worker.cpython-36.opt-1.pycevents_worker.cpython-36.pycfiltering.cpython-36.opt-1.pycfiltering.cpython-36.pycgroup_server.cpython-36.opt-1.pycgroup_server.cpython-36.pyckeys.cpython-36.opt-1.pyckeys.cpython-36.pycmedia_repository.cpython-36.opt-1.pycmedia_repository.cpython-36.pycopenid.cpython-36.opt-1.pycopenid.cpython-36.pycprepare_database.cpython-36.opt-1.pycprepare_database.cpython-36.pycpresence.cpython-36.opt-1.pycpresence.cpython-36.pycprofile.cpython-36.opt-1.pycprofile.cpython-36.pycpush_rule.cpython-36.opt-1.pycpush_rule.cpython-36.pycpusher.cpython-36.opt-1.pycpusher.cpython-36.pycreceipts.cpython-36.opt-1.pycreceipts.cpython-36.pycregistration.cpython-36.opt-1.pycregistration.cpython-36.pycrejections.cpython-36.opt-1.pycrejections.cpython-36.pycroom.cpython-36.opt-1.pycroom.cpython-36.pycroommember.cpython-36.opt-1.pycroommember.cpython-36.pycsearch.cpython-36.opt-1.pycsearch.cpython-36.pycsignatures.cpython-36.opt-1.pycsignatures.cpython-36.pycstate.cpython-36.opt-1.pycstate.cpython-36.pycstream.cpython-36.opt-1.pycstream.cpython-36.pyctags.cpython-36.opt-1.pyctags.cpython-36.pyctransactions.cpython-36.opt-1.pyctransactions.cpython-36.pycuser_directory.cpython-36.opt-1.pycuser_directory.cpython-36.pyc_base.pyaccount_data.pyappservice.pybackground_updates.pyclient_ips.pydeviceinbox.pydevices.pydirectory.pyend_to_end_keys.pyengines__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pyc_base.cpython-36.opt-1.pyc_base.cpython-36.pycpostgres.cpython-36.opt-1.pycpostgres.cpython-36.pycsqlite3.cpython-36.opt-1.pycsqlite3.cpython-36.pyc_base.pypostgres.pysqlite3.pyevent_federation.pyevent_push_actions.pyevents.pyevents_worker.pyfiltering.pygroup_server.pykeys.pymedia_repository.pyopenid.pyprepare_database.pypresence.pyprofile.pypush_rule.pypusher.pyreceipts.pyregistration.pyrejections.pyroom.pyroommember.pyschemadelta11v11.sql12v12.sql13v13.sql14__pycache__upgrade_appservice_db.cpython-36.opt-1.pycupgrade_appservice_db.cpython-36.pycupgrade_appservice_db.pyv14.sql15appservice_txns.sqlpresence_indices.sqlv15.sql16events_order_index.sqlremote_media_cache_index.sqlremove_duplicates.sqlroom_alias_index.sqlunique_constraints.sqlusers.sql17drop_indexes.sqlserver_keys.sqluser_threepids.sql18server_keys_bigger_ints.sql19event_index.sql20__pycache__pushers.cpython-36.opt-1.pycpushers.cpython-36.pycdummy.sqlpushers.py21end_to_end_keys.sqlreceipts.sql22receipts_index.sqluser_threepids_unique.sql23drop_state_index.sql24stats_reporting.sql2500background_updates.sql__pycache__fts.cpython-36.opt-1.pycfts.cpython-36.pycfts.pyguest_access.sqlhistory_visibility.sqltags.sql26account_data.sql27__pycache__ts.cpython-36.opt-1.pycts.cpython-36.pycaccount_data.sqlforgotten_memberships.sqlts.py28event_push_actions.sqlevents_room_stream.sqlpublic_roms_index.sqlreceipts_user_id_index.sqlupgrade_times.sqlusers_is_guest.sql29push_actions.sql30__pycache__as_users.cpython-36.opt-1.pycas_users.cpython-36.pycalias_creator.sqlas_users.pydeleted_pushers.sqlpresence_stream.sqlpublic_rooms.sqlpush_rule_stream.sqlstate_stream.sqlthreepid_guest_access_tokens.sql31__pycache__pushers.cpython-36.opt-1.pycpushers.cpython-36.pycsearch_update.cpython-36.opt-1.pycsearch_update.cpython-36.pycinvites.sqllocal_media_repository_url_cache.sqlpushers.pypushers_index.sqlsearch_update.py32events.sqlopenid.sqlpusher_throttle.sqlremove_indices.sqlreports.sql33__pycache__event_fields.cpython-36.opt-1.pycevent_fields.cpython-36.pycremote_media_ts.cpython-36.opt-1.pycremote_media_ts.cpython-36.pycaccess_tokens_device_index.sqldevices.sqldevices_for_e2e_keys.sqldevices_for_e2e_keys_clear_unknown_device.sqlevent_fields.pyremote_media_ts.pyuser_ips_index.sql34__pycache__cache_stream.cpython-36.opt-1.pyccache_stream.cpython-36.pycreceived_txn_purge.cpython-36.opt-1.pycreceived_txn_purge.cpython-36.pycsent_txn_purge.cpython-36.opt-1.pycsent_txn_purge.cpython-36.pycappservice_stream.sqlcache_stream.pydevice_inbox.sqlpush_display_name_rename.sqlreceived_txn_purge.pysent_txn_purge.py35add_state_index.sqlcontains_url.sqldevice_outbox.sqldevice_stream_id.sqlevent_push_actions_index.sqlpublic_room_list_change_stream.sqlstate.sqlstate_dedupe.sqlstream_order_to_extrem.sql36readd_public_rooms.sql37__pycache__remove_auth_idx.cpython-36.opt-1.pycremove_auth_idx.cpython-36.pycremove_auth_idx.pyuser_threepids.sql38postgres_fts_gist.sql39appservice_room_list.sqldevice_federation_stream_idx.sqlevent_push_index.sqlfederation_out_position.sqlmembership_profile.sql40current_state_idx.sqldevice_inbox.sqldevice_list_streams.sqlevent_push_summary.sqlpushers.sql41device_list_stream_idx.sqldevice_outbound_index.sqlevent_search_event_id_idx.sqlratelimit.sql42__pycache__user_dir.cpython-36.opt-1.pycuser_dir.cpython-36.pyccurrent_state_delta.sqldevice_list_last_id.sqlevent_auth_state_only.sqluser_dir.py43blocked_rooms.sqlquarantine_media.sqlurl_cache.sqluser_share.sql44expire_url_cache.sql45group_server.sqlprofile_cache.sql46drop_refresh_tokens.sqldrop_unique_deleted_pushers.sqlgroup_server.sqllocal_media_repository_url_idx.sqluser_dir_null_room_ids.sqluser_dir_typos.sql47__pycache__state_group_seq.cpython-36.opt-1.pycstate_group_seq.cpython-36.pyclast_access_media.sqlpostgres_fts_gin.sqlpush_actions_staging.sqlstate_group_seq.py48add_user_ips_last_seen_index.sqlgroups_joinable.sqlfull_schemas11event_edges.sqlevent_signatures.sqlim.sqlkeys.sqlmedia_repository.sqlpresence.sqlprofiles.sqlredactions.sqlroom_aliases.sqlstate.sqltransactions.sqlusers.sql16application_services.sqlevent_edges.sqlevent_signatures.sqlim.sqlkeys.sqlmedia_repository.sqlpresence.sqlprofiles.sqlpush.sqlredactions.sqlroom_aliases.sqlstate.sqltransactions.sqlusers.sqlschema_version.sqlsearch.pysignatures.pystate.pystream.pytags.pytransactions.pyuser_directory.pyutil__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pycid_generators.cpython-36.opt-1.pycid_generators.cpython-36.pycid_generators.pystreams__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pycconfig.cpython-36.opt-1.pycconfig.cpython-36.pycevents.cpython-36.opt-1.pycevents.cpython-36.pycconfig.pyevents.pytypes.pyutil__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pycasync.cpython-36.opt-1.pycasync.cpython-36.pycdistributor.cpython-36.opt-1.pycdistributor.cpython-36.pycfile_consumer.cpython-36.opt-1.pycfile_consumer.cpython-36.pycfrozenutils.cpython-36.opt-1.pycfrozenutils.cpython-36.pychttpresourcetree.cpython-36.opt-1.pychttpresourcetree.cpython-36.pycjsonobject.cpython-36.opt-1.pycjsonobject.cpython-36.pyclogcontext.cpython-36.opt-1.pyclogcontext.cpython-36.pyclogformatter.cpython-36.opt-1.pyclogformatter.cpython-36.pyclogutils.cpython-36.opt-1.pyclogutils.cpython-36.pycmanhole.cpython-36.opt-1.pycmanhole.cpython-36.pycmetrics.cpython-36.opt-1.pycmetrics.cpython-36.pycmodule_loader.cpython-36.opt-1.pycmodule_loader.cpython-36.pycmsisdn.cpython-36.opt-1.pycmsisdn.cpython-36.pycratelimitutils.cpython-36.opt-1.pycratelimitutils.cpython-36.pycretryutils.cpython-36.opt-1.pycretryutils.cpython-36.pycrlimit.cpython-36.opt-1.pycrlimit.cpython-36.pycstringutils.cpython-36.opt-1.pycstringutils.cpython-36.pycthreepids.cpython-36.opt-1.pycthreepids.cpython-36.pycversionstring.cpython-36.opt-1.pycversionstring.cpython-36.pycwheel_timer.cpython-36.opt-1.pycwheel_timer.cpython-36.pycasync.pycaches__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pycdescriptors.cpython-36.opt-1.pycdescriptors.cpython-36.pycdictionary_cache.cpython-36.opt-1.pycdictionary_cache.cpython-36.pycexpiringcache.cpython-36.opt-1.pycexpiringcache.cpython-36.pyclrucache.cpython-36.opt-1.pyclrucache.cpython-36.pycresponse_cache.cpython-36.opt-1.pycresponse_cache.cpython-36.pycsnapshot_cache.cpython-36.opt-1.pycsnapshot_cache.cpython-36.pycstream_change_cache.cpython-36.opt-1.pycstream_change_cache.cpython-36.pyctreecache.cpython-36.opt-1.pyctreecache.cpython-36.pycdescriptors.pydictionary_cache.pyexpiringcache.pylrucache.pyresponse_cache.pysnapshot_cache.pystream_change_cache.pytreecache.pydistributor.pyfile_consumer.pyfrozenutils.pyhttpresourcetree.pyjsonobject.pylogcontext.pylogformatter.pylogutils.pymanhole.pymetrics.pymodule_loader.pymsisdn.pyratelimitutils.pyretryutils.pyrlimit.pystringutils.pythreepids.pyversionstring.pywheel_timer.pyvisibility.pysynapse.servicesynapse.service-3.6rcsynapsercsynapse-3.6python3-matrix-synapseAUTHORS.rstCHANGES.rstCONTRIBUTING.rstLICENSEMAP.rstREADME.rstUPGRADE.rst/etc/alternatives//etc//etc/synapse//usr/bin//usr/lib/python3.6//usr/lib/python3.6/site-packages//usr/lib/python3.6/site-packages/matrix_synapse-0.28.1-py3.6.egg-info//usr/lib/python3.6/site-packages/synapse//usr/lib/python3.6/site-packages/synapse/__pycache__//usr/lib/python3.6/site-packages/synapse/api//usr/lib/python3.6/site-packages/synapse/api/__pycache__//usr/lib/python3.6/site-packages/synapse/app//usr/lib/python3.6/site-packages/synapse/app/__pycache__//usr/lib/python3.6/site-packages/synapse/appservice//usr/lib/python3.6/site-packages/synapse/appservice/__pycache__//usr/lib/python3.6/site-packages/synapse/config//usr/lib/python3.6/site-packages/synapse/config/__pycache__//usr/lib/python3.6/site-packages/synapse/crypto//usr/lib/python3.6/site-packages/synapse/crypto/__pycache__//usr/lib/python3.6/site-packages/synapse/events//usr/lib/python3.6/site-packages/synapse/events/__pycache__//usr/lib/python3.6/site-packages/synapse/federation//usr/lib/python3.6/site-packages/synapse/federation/__pycache__//usr/lib/python3.6/site-packages/synapse/federation/transport//usr/lib/python3.6/site-packages/synapse/federation/transport/__pycache__//usr/lib/python3.6/site-packages/synapse/groups//usr/lib/python3.6/site-packages/synapse/groups/__pycache__//usr/lib/python3.6/site-packages/synapse/handlers//usr/lib/python3.6/site-packages/synapse/handlers/__pycache__//usr/lib/python3.6/site-packages/synapse/http//usr/lib/python3.6/site-packages/synapse/http/__pycache__//usr/lib/python3.6/site-packages/synapse/metrics//usr/lib/python3.6/site-packages/synapse/metrics/__pycache__//usr/lib/python3.6/site-packages/synapse/module_api//usr/lib/python3.6/site-packages/synapse/module_api/__pycache__//usr/lib/python3.6/site-packages/synapse/push//usr/lib/python3.6/site-packages/synapse/push/__pycache__//usr/lib/python3.6/site-packages/synapse/replication//usr/lib/python3.6/site-packages/synapse/replication/__pycache__//usr/lib/python3.6/site-packages/synapse/replication/http//usr/lib/python3.6/site-packages/synapse/replication/http/__pycache__//usr/lib/python3.6/site-packages/synapse/replication/slave//usr/lib/python3.6/site-packages/synapse/replication/slave/__pycache__//usr/lib/python3.6/site-packages/synapse/replication/slave/storage//usr/lib/python3.6/site-packages/synapse/replication/slave/storage/__pycache__//usr/lib/python3.6/site-packages/synapse/replication/tcp//usr/lib/python3.6/site-packages/synapse/replication/tcp/__pycache__//usr/lib/python3.6/site-packages/synapse/rest//usr/lib/python3.6/site-packages/synapse/rest/__pycache__//usr/lib/python3.6/site-packages/synapse/rest/client//usr/lib/python3.6/site-packages/synapse/rest/client/__pycache__//usr/lib/python3.6/site-packages/synapse/rest/client/v1//usr/lib/python3.6/site-packages/synapse/rest/client/v1/__pycache__//usr/lib/python3.6/site-packages/synapse/rest/client/v2_alpha//usr/lib/python3.6/site-packages/synapse/rest/client/v2_alpha/__pycache__//usr/lib/python3.6/site-packages/synapse/rest/key//usr/lib/python3.6/site-packages/synapse/rest/key/__pycache__//usr/lib/python3.6/site-packages/synapse/rest/key/v1//usr/lib/python3.6/site-packages/synapse/rest/key/v1/__pycache__//usr/lib/python3.6/site-packages/synapse/rest/key/v2//usr/lib/python3.6/site-packages/synapse/rest/key/v2/__pycache__//usr/lib/python3.6/site-packages/synapse/rest/media//usr/lib/python3.6/site-packages/synapse/rest/media/__pycache__//usr/lib/python3.6/site-packages/synapse/rest/media/v0//usr/lib/python3.6/site-packages/synapse/rest/media/v0/__pycache__//usr/lib/python3.6/site-packages/synapse/rest/media/v1//usr/lib/python3.6/site-packages/synapse/rest/media/v1/__pycache__//usr/lib/python3.6/site-packages/synapse/static//usr/lib/python3.6/site-packages/synapse/static/client//usr/lib/python3.6/site-packages/synapse/static/client/login//usr/lib/python3.6/site-packages/synapse/static/client/login/js//usr/lib/python3.6/site-packages/synapse/static/client/register//usr/lib/python3.6/site-packages/synapse/static/client/register/js//usr/lib/python3.6/site-packages/synapse/storage//usr/lib/python3.6/site-packages/synapse/storage/__pycache__//usr/lib/python3.6/site-packages/synapse/storage/engines//usr/lib/python3.6/site-packages/synapse/storage/engines/__pycache__//usr/lib/python3.6/site-packages/synapse/storage/schema//usr/lib/python3.6/site-packages/synapse/storage/schema/delta//usr/lib/python3.6/site-packages/synapse/storage/schema/delta/11//usr/lib/python3.6/site-packages/synapse/storage/schema/delta/12//usr/lib/python3.6/site-packages/synapse/storage/schema/delta/13//usr/lib/python3.6/site-packages/synapse/storage/schema/delta/14//usr/lib/python3.6/site-packages/synapse/storage/schema/delta/14/__pycache__//usr/lib/python3.6/site-packages/synapse/storage/schema/delta/15//usr/lib/python3.6/site-packages/synapse/storage/schema/delta/16//usr/lib/python3.6/site-packages/synapse/storage/schema/delta/17//usr/lib/python3.6/site-packages/synapse/storage/schema/delta/18//usr/lib/python3.6/site-packages/synapse/storage/schema/delta/19//usr/lib/python3.6/site-packages/synapse/storage/schema/delta/20//usr/lib/python3.6/site-packages/synapse/storage/schema/delta/20/__pycache__//usr/lib/python3.6/site-packages/synapse/storage/schema/delta/21//usr/lib/python3.6/site-packages/synapse/storage/schema/delta/22//usr/lib/python3.6/site-packages/synapse/storage/schema/delta/23//usr/lib/python3.6/site-packages/synapse/storage/schema/delta/24//usr/lib/python3.6/site-packages/synapse/storage/schema/delta/25//usr/lib/python3.6/site-packages/synapse/storage/schema/delta/25/__pycache__//usr/lib/python3.6/site-packages/synapse/storage/schema/delta/26//usr/lib/python3.6/site-packages/synapse/storage/schema/delta/27//usr/lib/python3.6/site-packages/synapse/storage/schema/delta/27/__pycache__//usr/lib/python3.6/site-packages/synapse/storage/schema/delta/28//usr/lib/python3.6/site-packages/synapse/storage/schema/delta/29//usr/lib/python3.6/site-packages/synapse/storage/schema/delta/30//usr/lib/python3.6/site-packages/synapse/storage/schema/delta/30/__pycache__//usr/lib/python3.6/site-packages/synapse/storage/schema/delta/31//usr/lib/python3.6/site-packages/synapse/storage/schema/delta/31/__pycache__//usr/lib/python3.6/site-packages/synapse/storage/schema/delta/32//usr/lib/python3.6/site-packages/synapse/storage/schema/delta/33//usr/lib/python3.6/site-packages/synapse/storage/schema/delta/33/__pycache__//usr/lib/python3.6/site-packages/synapse/storage/schema/delta/34//usr/lib/python3.6/site-packages/synapse/storage/schema/delta/34/__pycache__//usr/lib/python3.6/site-packages/synapse/storage/schema/delta/35//usr/lib/python3.6/site-packages/synapse/storage/schema/delta/36//usr/lib/python3.6/site-packages/synapse/storage/schema/delta/37//usr/lib/python3.6/site-packages/synapse/storage/schema/delta/37/__pycache__//usr/lib/python3.6/site-packages/synapse/storage/schema/delta/38//usr/lib/python3.6/site-packages/synapse/storage/schema/delta/39//usr/lib/python3.6/site-packages/synapse/storage/schema/delta/40//usr/lib/python3.6/site-packages/synapse/storage/schema/delta/41//usr/lib/python3.6/site-packages/synapse/storage/schema/delta/42//usr/lib/python3.6/site-packages/synapse/storage/schema/delta/42/__pycache__//usr/lib/python3.6/site-packages/synapse/storage/schema/delta/43//usr/lib/python3.6/site-packages/synapse/storage/schema/delta/44//usr/lib/python3.6/site-packages/synapse/storage/schema/delta/45//usr/lib/python3.6/site-packages/synapse/storage/schema/delta/46//usr/lib/python3.6/site-packages/synapse/storage/schema/delta/47//usr/lib/python3.6/site-packages/synapse/storage/schema/delta/47/__pycache__//usr/lib/python3.6/site-packages/synapse/storage/schema/delta/48//usr/lib/python3.6/site-packages/synapse/storage/schema/full_schemas//usr/lib/python3.6/site-packages/synapse/storage/schema/full_schemas/11//usr/lib/python3.6/site-packages/synapse/storage/schema/full_schemas/16//usr/lib/python3.6/site-packages/synapse/storage/util//usr/lib/python3.6/site-packages/synapse/storage/util/__pycache__//usr/lib/python3.6/site-packages/synapse/streams//usr/lib/python3.6/site-packages/synapse/streams/__pycache__//usr/lib/python3.6/site-packages/synapse/util//usr/lib/python3.6/site-packages/synapse/util/__pycache__//usr/lib/python3.6/site-packages/synapse/util/caches//usr/lib/python3.6/site-packages/synapse/util/caches/__pycache__//usr/lib/systemd/system//usr/sbin//usr/share/doc/packages//usr/share/doc/packages/python3-matrix-synapse/-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -gobs://build.opensuse.org/openSUSE:Maintenance:8311/openSUSE_Leap_15.0_Update/1971189be4d21c5e532825d86dcebae9-matrix-synapse.openSUSE_Leap_15.0_Updatedrpmxz5noarch-suse-linux      emptydirectoryASCII textPython script, ASCII text executablePerl script text executableASCII text, with very long linespython 3.6 byte-compiledPython script, UTF-8 Unicode text executableHTML document, ASCII textGIF image data, version 89a, 16 x 16HTML document, ASCII text, with very long linesBourne-Again shell script, ASCII text executableUTF-8 Unicode text  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~RRRRRRR R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R RR R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R Rs_4 uutf-8e6f2f7583f9e473f606581d1509b53b92169f8949ee41ecc0d1bb447e5c31f5f?7zXZ !t/?w"]"k%a Ú0j!O5}wϑrmmd&3ޛ>3>A@eWǿAx*z5N+e7"I-i6$֠z5B 0n\19[6W3*U3׻ಷF1, C=M>_%25ZʌfZ~qc &]Z|gN8׻7׮~4 wϳ8*d?*[".{~ꉵ4sH,,E{Яf{8%xY` \~Ҁ]y+\etF/C\ y| A*A-ofPN{(#7+R\*z N K@OZ-؉@0UBpT]K7fW*%k>䥟ʧذ+: ɰ)xVn`g쯱'nr.ŏiD(`RV3|3%* /BۢGj'!nNG)>8WDJ:园-we]v^_}[f;qc.ӎ&q@>"tNoU+mYİOKcz&n@ۛ6NX]F gH֑ GM _&ㆎ.x5fA䰻'D*w?4I~!Y٫$9*$ZQuF@ZwtWʙ"$'*)ZwcV-G"8niU7SSMx/|5L +[#,pvd'J011 QpZ5VŐ`9_ϰ9"_zB/ˤm̺E-jQ]L`6 g"|GQ4M9I&ρ3ObܵWt;\Nj,v9{ f|)&_ai cvn4\9w!/)ѫ#inees/5A|P,@^43H'9beS'q\iI1șaG9S#P[0ݐ5M{e : xKm/-0% S`6\+5N |ןpgMw&+\U? 1 s_~U7XaPA@l0GVGз&wЖ+լ{!ӸyS\6,}K:-!cgD9}]ܣ$] "ڕ,E]RW p&ѳ}X^43K;nt T.eVMRZ&V^n}Sޝ;~D՛\_HFY X\58 "Gtney5g_V;k]6*3{C7Ra&ּ)cf>p:60|O` ߿7PBdXNLmDa,j<[6z+Qu.;~}(KEDN|Q8;O}(i\ߨ+*эqeCN àSc[Ϡ4DݠuM=y#TG#9\[eh~Ƙ񑸉)c1l%~ὃl!ŭfv ># Tld1ͱ5ă7 Q! n͐`=zZ.>.dw rHl>ՎԲ m'!Y LTgAtsƤ_;(moC!5Ч<&V:_}cjaS=h/WE(DLf~7Iz'@'X9ľA6_<(N$U*8CwB&m/}ޤ1սjs̑A1́R2"GK$ֹ~\q>Y]كx΅WÇ˺kz +Q{?v$^Q؉7cGte^/5s"{rjKnU-w8 >UQ7OB^B^z;7I! !ɏ G|mB di7͒v\F$ zu 4X>ޕ:[̻#bXCad?l8lkءA4/ %ZB8=!߲ ,ejLp[8r~:׀~}8LPq]sdCJ̖yV1wZ>hZ0(!YRh0@]aF|mTcd@L.)|@b@,!%x>fj@6!~|5ft$S0R<ΙL&oBX22>0l5T=2`$C eZ4:klWz6>#u";w=@w&?aQ,1O4,} ؊֣US;?3/T/V,ڪ '}S1:C*jAD) pWZ xkEw&\jihG[& ݴq͛cef9=ə~`wGP]3ҔˤGYRĠ4`%6=^ ;Iyې'7e:.Bp̕t[ (?RVex~%!Rْ Vi07hKO #LxBgԊcf]Kk:GE" W ԘqI- @RsJ[{5w6E|KTF4CȬ#Bfzجټ7#{pCDFeڳ%LT\,6-cTVha݌ XɥʹjN8}e ]QT<D n"a'DPM-[lqd|mɖ\fjgL>op9n{T0Xsr+&H(/T ܗpy/I)Oԯ1= Q b=nW^W.uJf.}D% /jNKYpe9V/OϘwj_.CIʔuPՏZNT>d "]Bxn+]Ҏ+ P_QI aPGѮ\A"Be̗BHOf ',ju^rNȶ>'~ݑ{@w.O)/h2ZG2"d[asz){]gm mDBxO::U sv(whflX|MB=DQ.]k1.[VzȢ}:ET 29d:4g 6Tk 22H>2 ʲhL l;OdzMs|.VL^:BֵXm9 -ͮIʰ]BmVUİ5e&Ԩi{ DQ~,0g &k#G'eGw=z!3 :YSl !hYϕ|'aIbU_f>pfXIp2QU9:#IJn-`xe~? ulX<6K~ۗOTDípNJckE6"Z{cwoȪf8 6|x lcy܉hAL|:/}xXb~q.$If2 7)= )n/tw]EPIvYqotk~Q7c%$꫰]i7 3Oˊ&헪 Č_g EK ̝S=bxFto5S)׾+jܳi3n v\;TGX9A2Q.˥ Ԗ[}Mɜ_Ro>2!0Zh+Ψx2a^+t' ?ʮ,h7q+WnB@eV=bC=e7xnJTWHvUC7z7gV! r@A F %'whVyb:m41=lB!HuwCvRφQf%1t ?Z岛:cR":ar"9~i^ͦ@Tu6}u_&XDǖ;ZNIk"JFv`[}}H#gN,x7Ҫ($ӧz†9)@wZ+Q>˶m@zZUGVY@!5&ZpP@kt ԿTX2smYK٦6af%FPΚ#ʷFnKp^`u9ѷJ1,1,~c8]إS;y,X'ˈ66,f3 UxybcO{)k6s~ sȡBl=8Bx/ma ׊E"Ǫo?ʤa1U8p,#G ѣ FJoG1_GK0J~ b"A{[[ l~= )߭@9Jre 5cZk /&)# DUvzk$ o"Z,jҳeZ/є_̀=C9dʱ;Vrk~A؈MQQzNF}1*z /LL07ҸS`!Y^W _'&͛eZ "F+%k[N, r5* ܢ`/VXKGt6Jʔdg 05 "Tݼ`SGnZT< @-Lł_!ZE)n =61AAE\z$1ӗO`D^5³wfփ*Lfx(Ʈ9z8cw&ˣ4r騂N[RǪ>/ȇBJ\1)jP 1] 7mCVG1`eԄfܞ"o2VL&q٨ԧ #`2h|X #Ѓvا HHc kpa u;79#Ze"Z̡rGe2R\Z8Ҋ({/xznXJw23ټKGH2K"H:$edUq4yV6D~1 YZ