python311-aiohttp-3.9.3-150400.10.27.1<>,9̉gD:p9|I|iJ,/|_Ypo-:L  5muc"+%ݏG +}"=)U4li,a{30BXh]fx <[-lormJLԆAŐbR7]D1+|[֭t|IY2 yjJ`J]>鏗f軥i")[))[ÂLsEf,:L?m **[nmiEƉjIr`>D ? xd ) S8<HLe      2 36$9g<<?t??A(B+8B4A9C8A:GAFGHpI XY\]^bcd#e(f+l-u@v wxy(z    & ( , 2 tCpython311-aiohttp3.9.3150400.10.27.1Asynchronous HTTP client/server frameworkAsynchronous HTTP client/server framework for Python. - Supports both the client and server side of HTTP protocol. - Supports both client and server WebSockets out-of-the-box. - Web-server has middleware and pluggable routing.gD:s390zp3206SUSE Linux Enterprise 15SUSE LLC Apache-2.0https://www.suse.com/Unspecifiedhttps://github.com/aio-libs/aiohttplinuxs390xLhR-,-,V(O@@--DD##NN3S%r%rBB((88T*st$$  F*^}^}FFEESMy{Q^^33MMop1FF23!,w,w[xNyA2525PQ.ljk/a/D3P0mp | $!S+>6vQ2 Ph\-pE~4'-UQdN;K?G(x-+yZpTlQ- H rLAA큤A큤큤큤큤큤A큤A큤gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD9gD:eIeIeIgD:eIceebae7b8927a3227e5303cf5e0f1f7b34bb542ad7250ac03fbcde36ec2f15089f80d0db7d755a941db4572172c270ecbd8f082ba215ddd095985942ed94a9ebe4c94901f241791e0353b06db9369907e43b65fbce8809733861256f42106fa246f97f76f99b39f0d22a4c27350e43a6d7c68983b1ede763a82c0e6e5329dff0e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855f2233ae9d3fa9da1617e7b1043276a4dbbafdfa16b6cd4c39de59a2220b355fb8aff8921a69c99397e852868dd09a985c2a76d1458c75b2de3bca3cffd7bf11a6ea7e37aaa6ff03937cf4be3ec71980b864121c3fb57c315ce82d863d83dbd166d5e6320ac0594e066e3dd6c78d0d3a7360e67c5b84f4ae06d954cbca23be3316d5e6320ac0594e066e3dd6c78d0d3a7360e67c5b84f4ae06d954cbca23be331783acdd0d78434bfae400540be8f87c81a202b98d28bc916383d6ee11db863e7783acdd0d78434bfae400540be8f87c81a202b98d28bc916383d6ee11db863e72bced037dc56e988155c62380a020635fce2dfcf3903edc85f85e9ad7853fc13fd382cff6fcdf53363df243cf7cc6b726ae8be7d8618720807de21e1de2e6c2da291b3cc3a32f1384448251c20e131d22935f25ecc1b205a419e756e944226aba3d89460877172c563c13b094da958274c2aa40f0fd3d8cf7890d6cf8fec71a45cf9875f08e8afa51790179381cf00130fe260333f2039bf5e4b961bf33c4c315cf9875f08e8afa51790179381cf00130fe260333f2039bf5e4b961bf33c4c315fef74c4ab7d97a51b2f86dbe1776c83e41cbcd3f252cc49e2e930c23702863b5fef74c4ab7d97a51b2f86dbe1776c83e41cbcd3f252cc49e2e930c23702863b8f7f246130200fa007b5584c55757e0bf6c7dc61915cf8f13780c16f464103ca582e7997ed1a589d0c2cee360e07ebabfbb0d217e20234ac58ab40ca1adb0a708fc7e83c9c34d089fcb5423843e1c6c77b86c441bc1f58bd20c209945c12df108fc7e83c9c34d089fcb5423843e1c6c77b86c441bc1f58bd20c209945c12df109c95afcd0d7af8c4b895bfe6e230d0ec231f3461b597e781e012a2b5a7fcebb89c95afcd0d7af8c4b895bfe6e230d0ec231f3461b597e781e012a2b5a7fcebb8c114c34191ca84b15ca0d5ee28d221bef1f5af146a079c0b96ffe8f102fb7bc32f333dbeebc8bcda2965f5f2bf67c3d890d1f3e76439c7fbeac3707a905f3e845f5603b23e0e545917c3610b88161df1ed1cb3b99753edd2bdae140852dafb68fab45004ec8ef8c1e6ec602e32841e750dc111f96a07551c06baaa8c25d3d8c343e841b52bf14a7e17f2ef3c41fe0cdcbc7ad06f0448dc787970f66d27bbf396addc6684e5a0d95ec68b8b97e537dc704da900dc98da7ae60f2d38aa657f42001c6d59a597de9d1698d31be6bd19af6758754e448840b416a347323c8f37de5b1c6d59a597de9d1698d31be6bd19af6758754e448840b416a347323c8f37de5bcab967b2b42c01d9b6925bd81ce7d92992576c7f3b753cac974708a69cbdd803cab967b2b42c01d9b6925bd81ce7d92992576c7f3b753cac974708a69cbdd803e239a2b4566fb2782ce03a6bec0ee5f3dd18da0dbf3ee40bea162fb21ebf130ee239a2b4566fb2782ce03a6bec0ee5f3dd18da0dbf3ee40bea162fb21ebf130ed8eaa78e477eaa87c39bed3682c7a671541fef7d33604e3fd829962f3790a14ad8eaa78e477eaa87c39bed3682c7a671541fef7d33604e3fd829962f3790a14a00d21b92bcc43a3c80aadef4fa1a456a702e045aa3361ba761144f33ce2f20034dc2000cbca3732f8ee4629c0bae0c92a014779e3835f983eb0059dbe47be4d2f387434b73efd938ae11b818678266c01698b1cfd98b866417d3bf89ca658481f873fd47f3576978d39b15e802c72dbb0d3153164c47bfb44871f0cae1cfaf9c659f2a0ea1792284e9dd502b44ef89816e2f6f29fde8a2517d8e78b71f7a4bdc659f2a0ea1792284e9dd502b44ef89816e2f6f29fde8a2517d8e78b71f7a4bdc760a3685ca944e46c8c102f0986ee7d38710bc37c8034b35b2500fa4e3234252760a3685ca944e46c8c102f0986ee7d38710bc37c8034b35b2500fa4e323425216ab75aa5742d86ee8880b197ca199669eb8d0dd97dab0d5117273096c90af7c16ab75aa5742d86ee8880b197ca199669eb8d0dd97dab0d5117273096c90af7c552ad175b30d7fb709c6a3b96f7b32603a042ae82014dadb06495a99c5e2f5efe7d575aa7804a5650245bbaca53edfe40b492ae06616095ac6426e5ac8dc2345d3d6b8219143d8700f8559560ce94e55130c7d9a71cf79d5749da23ca9d5cf8bd3d6b8219143d8700f8559560ce94e55130c7d9a71cf79d5749da23ca9d5cf8bcff432800cf67c60e1f56da55f0ca321dcbc63095af353a9ebc0b732aad7dad2cff432800cf67c60e1f56da55f0ca321dcbc63095af353a9ebc0b732aad7dad2bb6776293624ab5be115023f34226232265f1f88a9cc0b32de0cedac235adfc78503443d3e0ef235c3c8f8dc12b22546c588708c2d20e64a2314474a594915334d32a88da7e923dfb5d65a7f9ef8ee2dd91351eb770d7be4bcd49eff231ab93e97b81776c73b3bab6c90bb2ddffc43e086ef22ab0cb074dca0f9dcf40ec74a9b33240931ebecfe095bc3220a74a1978612dd5205c7011c835383f4f2e0e152432d03631d6907992a117f9d4daac694dc03cf4397f39a939cc58d3cf80f2057558ee0c456f4dc99719e7e5f57a559eb265b645bed6f3c21470664949bed41c9978ee0c456f4dc99719e7e5f57a559eb265b645bed6f3c21470664949bed41c99750cded6bf0eb6a8e082a8068e308a60e68cf0e94e8f13f46e150c57f5f4a382f5143b929b78fe6e78bf8f5515d5c82abefe0a37257a62971ab7239fb2d0bae6da11f89de25cef55586dd43454f3bb4f4a0fe9e51f72d32c0b90ce9f059e7d0e0a11f89de25cef55586dd43454f3bb4f4a0fe9e51f72d32c0b90ce9f059e7d0e0d970e821811be5e6b69f9c763fa232ddb19e787b22307c35a7e21dd551251f5dd970e821811be5e6b69f9c763fa232ddb19e787b22307c35a7e21dd551251f5d5c488f7f1c5380c08e0f9ed4907212cca46f19ac6d079599ca7a9c2fb928de751c4fdd3749e9169c43a40c699d418923cf1162b8b1632dfed3f2f4de035a04551c39720eabc7282cd35d080016b56e9ab64098bcc6abecd793d5e1e34ea7181740967b781123888517408e83401006d7a2ff1cc5bf68766ab934c7c719d5b45b674f3829e157014748972d90461dc3deec461dd827a5b8d314ab502ec980a33e674f3829e157014748972d90461dc3deec461dd827a5b8d314ab502ec980a33e7c077053b7f55f32cb6cc4f8e3146acad20e8773ac66f0d0d6f0441cc8b7c1ac3e72bc76fc285edaacc7fc4f280740be6363b980af73528dcc1434a1151b967dbb7caabeb9b5c2dd075496d36003b36a932cd6ab9cdabdc7e168b7fd1183f064bb7caabeb9b5c2dd075496d36003b36a932cd6ab9cdabdc7e168b7fd1183f064fe91eaaf1948e1e6bf8aaaafeea30615f6a197c05f3ef43ef5bfdf9bc07f77790a2cb7ac4b331b8702ba2fc3f4a98e139aba822617e3a65f935468110f4126e907b1f674655e0cc3cde1dd18788b4119fdda296dbe9b7cc85f9eaa4325d4882590644367f7d1f6a7fd15320d3e34ddff209972033b47b6d8e7d9fcf7ca8c29f9fec09af92543341322298c949e123e142fdf76d862302a15764b66953eb20edfac60e0093adb4180d99e3c2c4024a5ee069589f2134583c53218ef946c8bb3989ec8a74da930d98f39e60e740eebed5d89e4e776cf3888b271f69e0741db4a633390c471efb8672ab614f5dff57e29c3485601cb3c772af6330a26f2206a0b8a60e807182e7c0a5f3d14dc58dd66a458d9fc93467b82f3be5b3074b7ff87d6aa60e807182e7c0a5f3d14dc58dd66a458d9fc93467b82f3be5b3074b7ff87d6aa53f4b8e945bdb28e2b431a3658e0be21e3543f10f6947a92ca0614d4a4eaeff72be18611647f80c6d0b14b0394a1405db27b99ee6bf76434978f224c07a9ba55d30028721148e4010bbd49333144bbf51fc50080419e193fc55b64c7a8a347b9d30028721148e4010bbd49333144bbf51fc50080419e193fc55b64c7a8a347b99af138ec5a7ea0755950e0a7ab2cce095e8ee0dee8e7d9f08d977d4d99295c21fbfaa3c4afa1751f1f7cf40f1ac47b5986b4eb423a4914ed62c676f054228c0e619fe66a627884f3ec2bf8541739c065d35cbf480ee7e2e099f0401051182ca71e846596465bd814a4236f1bcdf92fd038d2cf89ff1969c9fb32a800849285b7524378785756a06698d6b7439dd83697468990eb57e40abeacc188a18fc6f95d2f5498ef6925d3a246991e235d7a53feaa25632a1a6403014a5b2304f2933c26f2318883e549f69de597009a914603b0f1b10381e265ef5d98af499ad973fb98d067f01423cddb3c442933b5fcc039b18ab651fcec1bc91c577693aafc25cf789fbd35936f1d54f8f0467c798fa2e92612d37e3eddaaedaf26dedfd0eeb43b283d22ee5122a6b13043b3921bfcfa4cfcaf68f7cc7bf83d2d077b7e2146b2046f6682a22524b9d4fc442e123672622be7bdfb6238d9709b7b15b2113b7ca6d52b5de2db35fb795ffe227e2f1007c8ba4f2ad1b9aca28cc48edc80c779203cf6e3f5685e76d12ee560f88c67f84133bd932f837081082da83884cf530e8982308b7f32b0c1595c1a71957a218ece8d3977ed9171caad97df8fcd82aa80addfc5d2d78403953aa9c57e20b01ac67857ec01a89033dcd5e574dc3800783eed08812e6881c0a7c838655e646c645d99971efaf5e310bc3633a7c62b226e39d81842ac4a160e7dab7d7d9e4f0864435f7d3231782ef6e77db5349bc368ce7b010d120ed57b8e48d0c26f20ebcc5e6e300da2b2a6aeb12b3c9768d64cb0e53432ccf48a5866791c7d21a021fbeea6884936faf3dca0a52f42c5f2a481408e7208d4da5ae49532b881b029feec1617f460b027937ebf864488c419cfe21374f5174c1869d8429913495c20c2e38da3190a102eff619a48d8fc4ee9aa861c201049a937a4ee5c7f61601ab944153b183f45e856f47644df8e1a9379469952477c2ae66fe04973066af756841c9862a2dfadac3d766a7dbbc8c1021182fd8fa9398c856871b1fd0dde8bc01ee7049d37779e824ebfd323ca92febc8651ebbc4d89b597c6729cdaf0bb5c00d14dc1d1c36c56beb541f5764bad1b6ca7da6571df5bb925165e182901349aabc9b321893406c2aaa13919da4cba511590fff94bd1b6767994445808a8eb9552f1c4e5cbfae0d89ee58707ff8a641628bd6c1493e75420d836463ddbec3a20dab0361850e3da6807eeb85273478089c871e3badd3662267f37c3ab68297a233d345b25fde4855711d9ed07b3e916ccf3f06e8c444c928a10931dbb39f96a09ff8d789dda1fa4cba63464043c06b3de4c62c31abfb07a231cb6caae4675345dcd42e7a8a744b8ce95cd6fe126dc06c78dc0f79735e21ac2c6580af28f23f311fbd0e5a39df4d603d578e0d47bf3940fc443eb52dccc5e2015a707ecb385154c2ad387d9b27640f8d3f99ee91de9cda2f1d68cf3e7a38f79dd6d240fd17c1a40f0eb194ea6fff6b9b9095b05c04b1b29b7c9e30ff64c9f06f8850466f83caf248ce9be4c5d462579c65d88b3f9b57f8584462e1b316c9ff60e938f7f1a72463fd2dd670197d7f1c45d39b7c61801403ed235b96ff3e355296e4f76c11605a3553cd8bc0105dab0536e0910f6a84c094a69a25dd85b5f0ca8644dbe05b34ac7d7b754c226d31623648d087010684bbc2375e21e49a88913bfaa2b68b0bb1ea1adf287fc42e0ca1ea7187f2dc93ceefc1aebf6aa997ee4cf68581e31c4ad3867e4d26a8faa89854c9e984a1bdfbac8ebe8a86b1904cede8144b89fd07804bc4be5167cb90431abd18cfd94bbd6a60b73e76d5efdc074cd0e8466627fb28c3db284f03fd4ff80401049587b19bf3ce79874e0dc2686cd967be2518193dc8c29bb1b45894545192fd98ad5aeaaf102486817416bc25b7d760764da54b6f297978c1e3cdafd218351129fcee8a7a7fe51e2d793f7c0331428ff6dc493a3bcd0b2d24e51ed796749fb324c44009010f843db4d660366efa1aa970f138e8905269da9559a0693050d15a785a691f78d4df4c88367b6dd4ebc6009bd025be37d70beaca857c55d03b45650f3246adabf9a027f46e4a707b1fff6c15defb2b15bde20160c45b5748158c5386a36eb387eb5989e261254667f2c4d530e85c0807fe13304181003134b89352d92380c00be4b42df351e5a184deb319e134cd3751c54d06a86152b9a4cdd89b1349b5997d7c6ad121d16cfcd865a317bbfe5263de1c5c3a9957e291d31327521438ef56ec100088b28238fc190327785a5f21bf2ee722e8b0859dfdbc927d2ab5aa02b03941c59b51daa4cf608bc04a496a978dfd5421af7ea1aa2773b16b371404d6ba47c949fd19aec31754bc99c41052511670ce7cec46ca1d94ecae4aff0e8eec82dd7c672ce2a39dcc7c4ec23dbe93773a7aba8b4186895bd49691adb1b666a7cf3ecc520a407c18b437794a906f28574460f1108a19c8bff707b0d74caca03f6d310f0e29f67903d8f91dbc9fe05e59edfcce4306addba42c7efd5433fa5f860582a279baf1c6d5edacc9c4f062acb4afc896a497540c88b22a2e50ea77fa8e3a9b1450b9074cf489f5b928c7c4f18930c6390cf55aec3d6e269dfb1cfe985eb3bc09dd41ac4b43c92f9f96339474f937d00cde494e72bef60195461bdf8b8d8a3cbc974705680dcc32ec9a2fdaa0a7c05e4ffbdb8f0a83c40e42bd20b6ef1179a490958f8674f1073770017c2f7b2c8397bd42e78651e727399ab8e02a5f2890a35a2fc85c7a87003526221fe6ce58b5f911a0445e27a4d6e3845dc295977fa44cd32fa3e62575ec6a081f3492e8815db6e4a3311ddab033412d2ab389279e7a653a6699e1335d62da965d25f1f5d8c47506eef004fc3896a7526b30a602ff1a5cbe7b60bf9a1562758d2810bc9b95598f18805d3a7603239a007772ccf7062c8c44c77ec803da6333487db12b079bcc0127db0d87aa0ba352ae1eb308a459816da78102d5c39a8c9a655b8acd2f1d3ac9f80d0db7d755a941db4572172c270ecbd8f082ba215ddd095985942ed94a9ebrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootpython-aiohttp-3.9.3-150400.10.27.1.src.rpmpython311-aiohttppython311-aiohttp(s390-64)@@@@@       (python311-charset-normalizer >= 2.0 with python311-charset-normalizer < 4)(python311-multidict >= 4.5 with python311-multidict < 7)(python311-yarl >= 1.0 with python311-yarl < 2)libc.so.6()(64bit)libc.so.6(GLIBC_2.2)(64bit)libc.so.6(GLIBC_2.4)(64bit)libpthread.so.0()(64bit)python(abi)python311-aiosignalpython311-attrspython311-frozenlistrpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PartialHardlinkSets)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)rpmlib(RichDependencies)3.111.1.217.3.01.1.13.0.4-14.6.0-14.0.4-14.0-15.2-14.12.0-14.14.3g<}f(@fCR@eeez@edeaeJ&e*d@d]@dI@dEdBzd7dcccch@c< @c.@brjb@Qaa)@aa;Ha9@a8`[``;`!'_<_$_]@^g@^g@]@]@]{]^\]@\v{\=@[@[[-[-[0@Z@ZJ@Z@Z@ZH@Z-!Z'Z#@Zr@ZC@YX@YzYdaniel.garcia@suse.comsteven.kowalik@suse.comadrian.glaubitz@suse.comadrian.glaubitz@suse.comdaniel.garcia@suse.comcode@bnavigator.dedmueller@suse.comdmueller@suse.comdmueller@suse.commcepl@cepl.eudmueller@suse.commartin.schreiner@suse.comdaniel.garcia@suse.commcepl@suse.comdmueller@suse.commcepl@suse.comdaniel.garcia@suse.comcode@bnavigator.dedaniel.garcia@suse.comdaniel.garcia@suse.comcode@bnavigator.dedmueller@suse.comdmueller@suse.comadrian.glaubitz@suse.comcode@bnavigator.decode@bnavigator.desteven.kowalik@suse.comsteven.kowalik@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commichael@stroeder.comadrian.glaubitz@suse.comjayvdb@gmail.comcode@bnavigator.dejayvdb@gmail.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.combuschmann23@opensuse.orgtchvatal@suse.comtchvatal@suse.commimi.vx@gmail.commimi.vx@gmail.comaplanas@suse.comadrian.glaubitz@suse.commcepl@suse.comtchvatal@suse.comadrian@suse.deadrian@suse.dearun@gmx.dearun@gmx.detbechtold@suse.comalarrosa@suse.comadrian@suse.deadrian@suse.dearun@gmx.dearun@gmx.dearun@gmx.dearun@gmx.dealoisio@gmx.comjengelh@inai.desebix+novell.com@sebix.at- Add upstream patch CVE-2024-52304.patch, gh#aio-libs/aiohttp@259edc369075 (bsc#1233447, CVE-2024-52304)- Add patch CVE-2024-42367-path-traversal-via-symlink.patch: * Do not follow symlinks for compressed file variants. (CVE-2024-42367, bsc#1229226)- Add patch to fix XSS on index pages for static file handling * CVE-2024-27306.patch (bsc#1223098, CVE-2024-27306) - Add patch to remove pytest.mark.internal marker to enable CVE-2024-27306 tests * remove-pytest.mark.internal.patch- Update to version 3.9.3 * Fixed backwards compatibility breakage (in 3.9.2) of ``ssl`` parameter when set outside of ``ClientSession`` (e.g. directly in ``TCPConnector``) * Improved test suite handling of paths and temp files to consistently use pathlib and pytest fixtures. - from version 3.9.2 (bsc#1219341, CVE-2024-23334, bsc#1219342, CVE-2024-23829) * Fixed server-side websocket connection leak. * Fixed ``web.FileResponse`` doing blocking I/O in the event loop. * Fixed double compress when compression enabled and compressed file exists in server file responses. * Added runtime type check for ``ClientSession`` ``timeout`` parameter. * Fixed an unhandled exception in the Python HTTP parser on header lines starting with a colon. * Improved validation of paths for static resources requests to the server. * Added support for passing :py:data:`True` to ``ssl`` parameter in ``ClientSession`` while deprecating :py:data:`None`. * Fixed an unhandled exception in the Python HTTP parser on header lines starting with a colon. * Fixed examples of ``fallback_charset_resolver`` function in the :doc:`client_advanced` document. * The Sphinx setup was updated to avoid showing the empty changelog draft section in the tagged release documentation builds on Read The Docs. * The changelog categorization was made clearer. The contributors can now mark their fragment files more accurately. * Updated :ref:`contributing/Tests coverage ` section to show how we use ``codecov``. * Replaced all ``tmpdir`` fixtures with ``tmp_path`` in test suite. - Refresh patches for new version * remove-re-assert.patch- Disable broken tests with openssl 3.2 and python < 3.11 bsc#1217782- Fix pytest call - Update requirements- update to 3.9.1: * Fixed importing aiohttp under PyPy on Windows. * Fixed async concurrency safety in websocket compressor. * Fixed ``ClientResponse.close()`` releasing the connection instead of closing. * Fixed a regression where connection may get closed during upgrade. -- by :user:`Dreamsorcerer` * Fixed messages being reported as upgraded without an Upgrade header in Python parser. -- by :user:`Dreamsorcerer`- update to 3.9.0: (bsc#1217684, CVE-2023-49081, bsc#1217682, CVE-2023-49082) * Introduced ``AppKey`` for static typing support of ``Application`` storage. * Added a graceful shutdown period which allows pending tasks to complete before the application's cleanup is called. * Added `handler_cancellation`_ parameter to cancel web handler on client disconnection. * This (optionally) reintroduces a feature removed in a previous release. * Recommended for those looking for an extra level of protection against denial-of-service attacks. * Added support for setting response header parameters ``max_line_size`` and ``max_field_size``. * Added ``auto_decompress`` parameter to ``ClientSession.request`` to override ``ClientSession._auto_decompress``. * Changed ``raise_for_status`` to allow a coroutine. * Added client brotli compression support (optional with runtime check). * Added ``client_max_size`` to ``BaseRequest.clone()`` to allow overriding the request body size. -- :user:`anesabml`. * Added a middleware type alias ``aiohttp.typedefs.Middleware``. * Exported ``HTTPMove`` which can be used to catch any redirection request that has a location -- :user:`dreamsorcerer`. * Changed the ``path`` parameter in ``web.run_app()`` to accept a ``pathlib.Path`` object. * Performance: Skipped filtering ``CookieJar`` when the jar is empty or all cookies have expired. * Performance: Only check origin if insecure scheme and there are origins to treat as secure, in ``CookieJar.filter_cookies()``. * Performance: Used timestamp instead of ``datetime`` to achieve faster cookie expiration in ``CookieJar``. * Added support for passing a custom server name parameter to HTTPS connection. * Added support for using Basic Auth credentials from :file:`.netrc` file when making HTTP requests with the * :py:class:`~aiohttp.ClientSession` ``trust_env`` argument is set to ``True``. -- by :user:`yuvipanda`. * Turned access log into no-op when the logger is disabled. * Added typing information to ``RawResponseMessage``. -- by :user:`Gobot1234` * Removed ``async-timeout`` for Python 3.11+ (replaced with ``asyncio.timeout()`` on newer releases). * Added support for ``brotlicffi`` as an alternative to ``brotli`` (fixing Brotli support on PyPy). * Added ``WebSocketResponse.get_extra_info()`` to access a protocol transport's extra info. * Allow ``link`` argument to be set to None/empty in HTTP 451 exception. * Fixed client timeout not working when incoming data is always available without waiting. -- by :user:`Dreamsorcerer`. * Fixed ``readuntil`` to work with a delimiter of more than one character. * Added ``__repr__`` to ``EmptyStreamReader`` to avoid ``AttributeError``. * Fixed bug when using ``TCPConnector`` with ``ttl_dns_cache=0``. * Fixed response returned from expect handler being thrown away. -- by :user:`Dreamsorcerer` * Avoided raising ``UnicodeDecodeError`` in multipart and in HTTP headers parsing. * Changed ``sock_read`` timeout to start after writing has finished, avoiding read timeouts caused by an unfinished write. -- by :user:`dtrifiro` * Fixed missing query in tracing method URLs when using ``yarl`` 1.9+. * Changed max 32-bit timestamp to an aware datetime object, for consistency with the non-32-bit one, and to avoid a ``DeprecationWarning`` on Python 3.12. * Fixed ``EmptyStreamReader.iter_chunks()`` never ending. * Fixed a rare ``RuntimeError: await wasn't used with future`` exception. * Fixed issue with insufficient HTTP method and version validation. * Added check to validate that absolute URIs have schemes. * Fixed unhandled exception when Python HTTP parser encounters unpaired Unicode surrogates. * Updated parser to disallow invalid characters in header field names and stop accepting LF as a request line separator. * Fixed Python HTTP parser not treating 204/304/1xx as an empty body. * Ensure empty body response for 1xx/204/304 per RFC 9112 sec 6.3. * Fixed an issue when a client request is closed before completing a chunked payload. -- by :user:`Dreamsorcerer` * Edge Case Handling for ResponseParser for missing reason value. * Fixed ``ClientWebSocketResponse.close_code`` being erroneously set to ``None`` when there are concurrent async tasks receiving data and closing the connection. * Added HTTP method validation. * Fixed arbitrary sequence types being allowed to inject values via version parameter. -- by :user:`Dreamsorcerer` * Performance: Fixed increase in latency with small messages from websocket compression changes. * Improved Documentation * Fixed the `ClientResponse.release`'s type in the doc. Changed from `comethod` to `method`. * Added information on behavior of base_url parameter in `ClientSession`. * Completed ``trust_env`` parameter description to honor ``wss_proxy``, ``ws_proxy`` or ``no_proxy`` env. * Dropped Python 3.6 support. * Dropped Python 3.7 support. -- by :user:`Dreamsorcerer` * Removed support for abandoned ``tokio`` event loop. * Made ``print`` argument in ``run_app()`` optional. * Improved performance of ``ceil_timeout`` in some cases. * Changed importing Gunicorn to happen on-demand, decreasing import time by ~53%. -- :user:`Dreamsorcerer` * Improved import time by replacing ``http.server`` with ``http.HTTPStatus``. * Fixed annotation of ``ssl`` parameter to disallow ``True``. - drop Update-update_query-calls-to-work-with-latest-yarl.patch (upstream)- update to 3.8.6 (bsc#1217181, CVE-2023-47627): * Security bugfixes * Upgraded the vendored copy of llhttp_ to v9.1.3 * https://github.com/aio-libs/aiohttp/security/advisories/GHSA- pjjw-qhg8-p2p9. * Updated Python parser to comply with RFCs 9110/9112 * https://github.com/aio-libs/aiohttp/security/advisories/GHSA- gfw2-4jvh-wgfg. * Added ``fallback_charset_resolver`` parameter in ``ClientSession`` to allow a user-supplied character set detection function. Character set detection will no longer be included in 3.9 as a default. If this feature is needed, please use `fallback_charset_resolver * Enabled lenient response parsing for more flexible parsing in the client * Fixed ``PermissionError`` when ``.netrc`` is unreadable due to permissions. * Fixed output of parsing errors * Fixed ``GunicornWebWorker`` max_requests_jitter not working. * Fixed sorting in ``filter_cookies`` to use cookie with longest path. * Fixed display of ``BadStatusLine`` messages from llhttp_.- Add remove-re-assert.patch, we really don’t need beautifuly presented exceptions for our testing; remove re-assert BR.- switch from unmaintained brotlipy to Brotli- Remove py3109-compat.patch, no longer required. The current spec builds successfully on Python 3.9, 3.10 and 3.11. - Update to 3.8.5: * Upgraded the vendored copy of llhttp to v8.1.1. More information here: https://github.com/aio-libs/aiohttp/security/advisories/GHSA-45c4-8wx5-qw6w * Added information to C parser exceptions to show which character caused the error. * Fixed a transport is None error.- Add Update-update_query-calls-to-work-with-latest-yarl.patch to fix problems with latest python-yarl - Delete aiohttp-pr7057-bump-charset-normalizer.patch not needed anymore - Update to 3.8.4: * Fixed incorrectly overwriting cookies with the same name and domain, but different path. (#6638) * Fixed ConnectionResetError not being raised after client disconnection in SSL environments. (#7180)- Move documentation into the main package for SLE15- add sle15_python_module_pythons (jsc#PED-68)- Make calling of %{sle15modernpython} optional.- Disable DeprecationWarning to avoid error with the latest setuptools and pkg_resources deprecation- Don't assume python3 to be present for d:l:p:backports/15.4_py39 - Requires pytest 6.2.0 when pytest.TempPathFactory was introduced.- Update py3109-compat.patch to work with python <= 3.10.8 too.- Add py3109-compat.patch to make tests compatible with python 3.10.9. These tests are not present anymore in upstream master version so this patch could be removed in future releases.- Drop ignore-pytest-deprecationwarning.patch - Add aiohttp-pr7057-bump-charset-normalizer.patch * gh#aio-libs/aiohttp#7057 * Sync requirement with rpm specs- skip more tests- update to 3.8.3: * Increased the upper boundary of the :doc:`multidict:index` dependency to allow for the version 6 -- by :user:`hugovk`. * Added support for registering :rfc:`OPTIONS <9110#OPTIONS>` HTTP method handlers via :py:class:`~aiohttp.web.RouteTableDef`. * Started supporting :rfc:`authority-form <9112#authority-form>` and :rfc:`absolute-form <9112#absolute-form>` URLs on the server-side. * Fixed Python 3.11 incompatibilities by using Cython 0.29.25. * Extended the ``sock`` argument typing declaration of the :py:func:`~aiohttp.web.run_app` function as optionally accepting iterables. * Fixed a regression where :py:exc:`~asyncio.CancelledError` occurs on client disconnection. * Started exporting :py:class:`~aiohttp.web.PrefixedSubAppResource` under :py:mod:`aiohttp.web` -- by :user:`Dreamsorcerer`. * Dropped the :class:`object` type possibility from the :py:attr:`aiohttp.ClientSession.timeout` property return type declaration.- Update in SLE-15 (bsc#1197831)- Add ignore-pytest-deprecationwarning.patch * gh#aio-libs/aiohttp#6663- Update to version 3.8.1 * Bugfixes * Fix the error in handling the return value of getaddrinfo. getaddrinfo will return an (int, bytes) tuple, if CPython could not handle the address family. It will cause a index out of range error in aiohttp. For example, if user compile CPython with --disable-ipv6 option but his system enable the ipv6. [#5901] * Do not install "examples" as a top-level package. #6189 * Restored ability to connect IPv6-only host. #6195 * Remove Signal from __all__, replace aiohttp.Signal with aiosignal.Signal in docs #6201 * Made chunked encoding HTTP header check stricter. #6305 * Improved Documentation * update quick starter demo codes. #6240 * Added an explanation of how tiny timeouts affect performance to the client reference document. #6274 * Add flake8-docstrings to flake8 configuration, enable subset of checks. #6276 * Added information on running complex applications with additional tasks/processes -- :user:`Dreamsorcerer`. #6278 - Release 3.8.0 (2021-10-31) (bsc#1217174, CVE-2023-47641) * Features * Added a GunicornWebWorker feature for extending the aiohttp server configuration by allowing the 'wsgi' coroutine to return web.AppRunner object. #2988 * Switch from http-parser to llhttp #3561 * Use Brotli instead of brotlipy #3803 * Disable implicit switch-back to pure python mode. The build fails loudly if aiohttp cannot be compiled with C Accelerators. Use AIOHTTP_NO_EXTENSIONS=1 to explicitly disable C Extensions complication and switch to Pure-Python mode. Note that Pure-Python mode is significantly slower than compiled one. [#3828] * Make access log use local time with timezone #3853 * Implemented readuntil in StreamResponse #4054 * FileResponse now supports ETag. #4594 * Add a request handler type alias aiohttp.typedefs.Handler. [#4686] * AioHTTPTestCase is more async friendly now. * For people who use unittest and are used to use :py:exc:`~unittest.TestCase` it will be easier to write new test cases like the sync version of the :py:exc:`~unittest.TestCase` class, without using the decorator @unittest_run_loop, just async def test_*. The only difference is that for the people using python3.7 and below a new dependency is needed, it is asynctestcase. #4700 * Add validation of HTTP header keys and values to prevent header injection. #4818 * Add predicate to AbstractCookieJar.clear. Add AbstractCookieJar.clear_domain to clean all domain and subdomains cookies only. #4942 * Add keepalive_timeout parameter to web.run_app. #5094 * Tracing for client sent headers #5105 * Make type hints for http parser stricter #5267 * Add final declarations for constants. #5275 * Switch to external frozenlist and aiosignal libraries. #5293 * Don't send secure cookies by insecure transports. * By default, the transport is secure if https or wss scheme is used. Use CookieJar(treat_as_secure_origin="http://127.0.0.1") to override the default security checker. #5571 * Always create a new event loop in aiohttp.web.run_app(). This adds better compatibility with asyncio.run() or if trying to run multiple apps in sequence. #5572 * Add aiohttp.pytest_plugin.AiohttpClient for static typing of pytest plugin. #5585 * Added a socket_factory argument to BaseTestServer. #5844 * Add compression strategy parameter to enable_compression method. #5909 * Added support for Python 3.10 to Github Actions CI/CD workflows and fix the related deprecation warnings -- :user:`Hanaasagi`. [#5927] * Switched chardet to charset-normalizer for guessing the HTTP payload body encoding -- :user:`Ousret`. #5930 * Added optional auto_decompress argument for HttpRequestParser [#5957] * Added support for HTTPS proxies to the extent CPython's :py:mod:`asyncio` supports it -- by :user:`bmbouter`, :user:`jborean93` and :user:`webknjaz`. #5992 * Added base_url parameter to the initializer of :class:`~aiohttp.ClientSession`. #6013 * Add Trove classifier and create binary wheels for 3.10. -- :user:`hugovk`. #6079 * Started shipping platform-specific wheels with the musl tag targeting typical Alpine Linux runtimes — :user:`asvetlov`. [#6139] * Started shipping platform-specific arm64 wheels for Apple Silicon — :user:`asvetlov`. #6139 * Bugfixes * Modify _drain_helper() to handle concurrent await resp.write(...) or ws.send_json(...) calls without race-condition. #2934 * Started using MultiLoopChildWatcher when it's available under POSIX while setting up the test I/O loop. #3450 * Only encode content-disposition filename parameter using percent-encoding. Other parameters are encoded to quoted-string or RFC2231 extended parameter value. #4012 * Fixed HTTP client requests to honor no_proxy environment variables. #4431 * Fix supporting WebSockets proxies configured via environment variables. #4648 * Change return type on URLDispatcher to UrlMappingMatchInfo to improve type annotations. #4748 * Ensure a cleanup context is cleaned up even when an exception occurs during startup. #4799 * Added a new exception type for Unix socket client errors which provides a more useful error message. #4984 * Remove Transfer-Encoding and Content-Type headers for 204 in StreamResponse #5106 * Only depend on typing_extensions for Python <3.8 #5107 * Add ABNORMAL_CLOSURE and BAD_GATEWAY to WSCloseCode #5192 * Fix cookies disappearing from HTTPExceptions. #5233 * StaticResource prefixes no longer match URLs with a non-folder prefix. For example routes.static('/foo', '/foo') no longer matches the URL /foobar. Previously, this would attempt to load the file /foo/ar. #5250 * Acquire the connection before running traces to prevent race condition. #5259 * Add missing slots to `_RequestContextManager and _WSRequestContextManager #5329 * Ensure sending a zero byte file does not throw an exception (round 2) #5380 * Set "text/plain" when data is an empty string in client requests. #5392 * Stop automatically releasing the ClientResponse object on calls to the ok property for the failed requests. #5403 * Include query parameters from params keyword argument in tracing URL. #5432 * Fix annotations #5466 * Fixed the multipart POST requests processing to always release file descriptors for the tempfile.Temporaryfile-created _io.BufferedRandom instances of files sent within multipart request bodies via HTTP POST requests -- by :user:`webknjaz`. [#5494] * Fix 0 being incorrectly treated as an immediate timeout. #5527 * Fixes failing tests when an environment variable _proxy is set. #5554 * Replace deprecated app handler design in tests/autobahn/server.py with call to web.run_app; replace deprecated aiohttp.ws_connect calls in tests/autobahn/client.py with aiohttp.ClienSession.ws_connect. #5606 * Fixed test for HTTPUnauthorized that access the text argument. This is not used in any part of the code, so it's removed now. [#5657] * Remove incorrect default from docs #5727 * Remove external test dependency to http://httpbin.org #5840 * Don't cancel current task when entering a cancelled timer. [#5853] * Added params keyword argument to ClientSession.ws_connect. -- :user:`hoh`. #5868 * Uses :py:class:`~asyncio.ThreadedChildWatcher` under POSIX to allow setting up test loop in non-main thread. #5877 * Fix the error in handling the return value of getaddrinfo. getaddrinfo will return an (int, bytes) tuple, if CPython could not handle the address family. It will cause a index out of range error in aiohttp. For example, if user compile CPython with --disable-ipv6 option but his system enable the ipv6. [#5901] * Removed the deprecated loop argument from the asyncio.sleep/gather calls #5905 * Return None from request.if_modified_since, request.if_unmodified_since, request.if_range and response.last_modified when corresponding http date headers are invalid. #5925 * Fix resetting SIGCHLD signals in Gunicorn aiohttp Worker to fix subprocesses that capture output having an incorrect returncode. #6130 * Raise 400: Content-Length can't be present with Transfer-Encoding if both Content-Length and Transfer-Encoding are sent by peer by both C and Python implementations #6182 * Improved Documentation * Refactored OpenAPI/Swagger aiohttp addons, added aio-openapi [#5326] * Fixed docs on request cookies type, so it matches what is actually used in the code (a read-only dictionary-like object). [#5725] * Documented that the HTTP client Authorization header is removed on redirects to a different host or protocol. #5850 - Drop patches * backport_fix_for_setting_cookies.patch * remove_deprecated_loop_argument.patch * stdlib-typing_extensions.patch * unbundle-http-parser.patch -- replaced by llhttp, nothing else than the bundled llhttp available. - Disable building the docs (no sphinxcontrib-towncrier)- Drop python39-failures.patch, no longer required.- Update python39-failures.patch to only fire with Python 3.9.7.- Restore python39-failures.patch, which is actually still needed.- Remove python39-failures.patch and replace it with actual fix of the issue in remove_deprecated_loop_argument.patch. - Add backport_fix_for_setting_cookies.patch for backport of fixes from 3.8 branch.- Add python39-failures.patch to fix test problems with Python 3.9.7+ (gh#aio-libs/aiohttp#5991).- Remove pytest-asyncio dependency which is actually harmful (gh#aio-libs/aiohttp#5787).- Add stdlib-typing_extensions.patch to avoid necessity for BR python-typing_extensions (gh#aio-libs/aiohttp#5374).- Update to 3.7.4 (bsc#1184745, CVE-2021-21330): * obsoletes CVE-2021-21330.patch in older dists * Fixes https://github.com/aio-libs/aiohttp/security/advisories/GHSA-v6wp-4m6f-gcjg- Include in SLE-15 (bsc#1176785, jsc#ECO-3105, jsc#PM-2352)- Allow use with chardet v4- Update to v3.7.3 Features * Made exceptions pickleable. Also changed the repr of some exceptions. #4077 Bugfixes * Raise a ClientResponseError instead of an AssertionError for a blank HTTP Reason Phrase. #3532 * Fix web_middlewares.normalize_path_middleware behavior for patch without slash. #3669 * Fix overshadowing of overlapped sub-applications prefixes. [#3701] * Make BaseConnector.close() a coroutine and wait until the client closes all connections. Drop deprecated "with Connector():" syntax. #3736 * Reset the sock_read timeout each time data is received for a aiohttp.client response. #3808 * Fixed type annotation for add_view method of UrlDispatcher to accept any subclass of View #3880 * Fixed querying the address families from DNS that the current host supports. #5156 * Change return type of MultipartReader.__aiter__() and BodyPartReader.__aiter__() to AsyncIterator. #5163 * Provide x86 Windows wheels. #5230 * Improved Documentation * Add documentation for aiohttp.web.FileResponse. #3958 * Removed deprecation warning in tracing example docs #3964 * Fixed wrong "Usage" docstring of aiohttp.client.request. #4603 * Add aiohttp-pydantic to third party libraries #5228 Misc * #4102 - Also clean header files in sitearch - Remove hidden .hash directory (remnant from build process) - Fix python 3.6 build * For Leap * For TW with python36 flavor gh#openSUSE/python-rpm-macros#66 * Always BuildRequire idna_ssl * Skip a failing test on python 3.6 * Next upstream release will drop python 3.6- Re-activate tests - Update to v3.7.2 * Fixed static files handling for loops without .sendfile() support - from v3.7.1 * Fixed a type error caused by the conditional import of Protocol * Server doesn't send Content-Length for 1xx or 204 * Fix run_app typing * Always require typing_extensions library * Fix a variable-shadowing bug causing ThreadedResolver.resolve to return the resolved IP as the ``hostname`` in each record, which prevented validation of HTTPS connections * Added annotations to all public attributes * Fix flaky test_when_timeout_smaller_second * Ensure sending a zero byte file does not throw an exception - from v3.7.0 * Response headers are now prepared prior to running ``on_response_prepare`` hooks, directly before headers are sent to the client * Add a ``quote_cookie`` option to ``CookieJar``, a way to skip quotation wrapping of cookies containing special characters * Call AccessLogger.log with the current exception available from sys.exc_info() * web.UrlDispatcher.add_routes and web.Application.add_routes return a list of registered AbstractRoute instances. `AbstractRouteDef.register` (and all subclasses) return a list of registered resources registered resource * Added properties of default ClientSession params to ClientSession class so it is available for introspection * Don't cancel web handler on peer disconnection, raise `OSError` on reading/writing instead. * Implement BaseRequest.get_extra_info() to access a protocol transports' extra info. * Added `ClientSession.timeout` property * Allow use of SameSite in cookies * Use loop.sendfile() instead of custom implementation if available * Apply SO_REUSEADDR to test server's socket * Use .raw_host instead of slower .host in client API * Allow configuring the buffer size of input stream by passing ``read_bufsize`` argument * Add method and url attributes to TraceRequestChunkSentParams and TraceResponseChunkReceivedParams. * Add ClientResponse.ok property for checking status code under 400 * Don't ceil timeouts that are smaller than 5 seconds. * TCPSite now listens by default on all interfaces instead of just IPv4 when `None` is passed in as the host * Bump ``http_parser`` to 2.9.4 * Fix keepalive connections not being closed in time * Fix failed websocket handshake leaving connection hanging. * Fix tasks cancellation order on exit. The run_app task needs to be cancelled first for cleanup hooks to run with all tasks intact. * Don't start heartbeat until _writer is set * Fix handling of multipart file uploads without a content type * Preserve view handler function attributes across middlewares * Fix the string representation of ServerDisconnectedError * Raising RuntimeError when trying to get encoding from not read body * Remove warning messages from noop. * Raise ClientPayloadError if FormData re-processed. * Fix a warning about unfinished task in web_protocol.py * Fixed 'deflate' compression. According to RFC 2616 now. * Fixed OverflowError on platforms with 32-bit time_t * Fixed request.body_exists returns wrong value for methods without body * Fix connecting to link-local IPv6 addresses. * Fix a problem with connection waiters that are never awaited * Always make sure transport is not closing before reuse a connection. Reuse a protocol based on keepalive in headers is unreliable. For example, uWSGI will not support keepalive even it serves a HTTP 1.1 request, except explicitly configure uWSGI with a ``--http-keepalive`` option. Servers designed like uWSGI could cause aiohttp intermittently raise a ConnectionResetException when the protocol poll runs out and some protocol is reused. * Handle the last CRLF correctly even if it is received via separate TCP segment. * Fix the register_resource function to validate route name before splitting it so that route name can include python keywords * Fix resolver task is not awaited when connector is cancelled * Fix Aiohttp doesn't return any error on invalid request methods * Fix HEAD requests for static content. * Fix incorrect size calculation for memoryview * Add HTTPMove to _all__. * Fixed the type annotations in the ``tracing`` module. * Fix typing for multipart ``__aiter__``. * Fix for race condition on connections in BaseConnector that leads to exceeding the connection limit. * Add forced UTF-8 encoding for ``application/rdap+json`` responses. * Fix inconsistency between Python and C http request parsers in parsing pct-encoded URL * Fix connection closing issue in HEAD request. * Fix type hint on BaseRunner.addresses (from ``List[str]`` to ``List[Any]``) - from v3.6.3 * Pin yarl to `<1.6.0` to avoid buggy behavior- Update to 3.6.2: * more compatibility fixes with python 3.8 - Disable tests as they explode in upstream git too and all other distributions also gave up on it- Do remove pytest configuration to not error out on deprecation warnings - Unbundle http parser headers: * unbundle-http-parser.patch- Update to 3.6.1: * Compatibility with Python 3.8. #4056 * correct some exception string format #4068 * Emit a warning when ssl.OP_NO_COMPRESSION is unavailable because the runtime is built against an outdated OpenSSL. #4052 * Update multidict requirement to >= 4.5 #4057 - Drop merged patch aiohttp-3.6.0-fix-typeerror.patch- Add patch to fix type error with old multidict: * aiohttp-3.6.0-fix-typeerror.patch - Require python-multidict 4.5 or newer- Update to 3.6.0: * Add support for Named Pipes * Removed Transfer-Encoding: chunked header * Accept non-GET request for starting websocket handshake on server side - Drop merged patch pytest5.patch- Add patch to work well with pytest 5: * pytest5.patch- Fix Requires and BuildRequires- update to 3.5.4 - drop invalid-escapes-in-tests.patch and rename-request-fixture.patch * big list of changes from 3.4.4 - https://github.com/aio-libs/aiohttp/blob/master/CHANGES.rst- Remove version dependency from Cython (boo#1121578).- Add patch to address name collision issue with pytest fixtures + rename-request-fixture.patch- Upgrade to 3.4.4: - Multiple small bugfixes - Remove remove-failing-tests-due-to-pytest-timeout-issues.patch - Add invalid-escapes-in-tests.patch to fix invalid escapes in non-raw regexp strings.- Match up requirements to the setup.py- update to version 3.4.0: * please check the longer list in CHANGES.rst- update to version 3.3.2: * Raise ``ConnectionResetError`` instead of ``CancelledError`` on trying to write to a closed stream. (`#2499 `_) * Implement ``ClientTimeout`` class and support socket read timeout. (`#2768 `_) * Enable logging when ``aiohttp.web`` is used as a program (`#2956 `_) * Add canonical property to resources (`#2968 `_) * Forbid reading response BODY after release (`#2983 `_) * Implement base protocol class to avoid a dependency from internal ``asyncio.streams.FlowControlMixin`` (`#2986 `_) * Cythonize ``@helpers.reify``, 5% boost on macro benchmark (`#2995 `_) * Optimize HTTP parser (`#3015 `_) * Implement ``runner.addresses`` property. (`#3036 `_) * Use ``bytearray`` instead of a list of ``bytes`` in websocket reader. It improves websocket message reading a little. (`#3039 `_) * Remove heartbeat on closing connection on keepalive timeout. The used hack violates HTTP protocol. (`#3041 `_) * Limit websocket message size on reading to 4 MB by default. (`#3045 `_)- update to version 3.1.3: * Fix cancellation broadcast during DNS resolve (#2910)- update to version 3.1.2: * Make LineTooLong exception more detailed about actual data size (#2863) * Call on_chunk_sent when write_eof takes as a param the last chunk (#2909) - changes from version 3.1.1: * Support asynchronous iterators (and asynchronous generators as well) in both client and server API as request / response BODY payloads. (#2802)- update to 3.1.0: - Relax JSON content-type checking in the ``ClientResponse.json()`` to allow "application/xxx+json" instead of strict "application/json". (#2206) - Bump C HTTP parser to version 2.8 (#2730) - Accept a coroutine as an application factory in ``web.run_app`` and gunicorn worker. (#2739) - Implement application cleanup context (``app.cleanup_ctx`` property). (#2747) - Make ``writer.write_headers`` a coroutine. (#2762) - Add tracking signals for getting request/response bodies. (#2767) - Deprecate ClientResponseError.code in favor of .status to keep similarity with response classes. (#2781) - Implement ``app.add_routes()`` method. (#2787) - Implement ``web.static()`` and ``RouteTableDef.static()`` API. (#2795) - Install a test event loop as default by ``asyncio.set_event_loop()``. The change affects aiohttp test utils but backward compatibility is not broken for 99.99% of use cases. (#2804) - Refactor ``ClientResponse`` constructor: make logically required constructor arguments mandatory, drop ``_post_init()`` method. (#2820) - Use ``app.add_routes()`` in server docs everywhere (#2830) - Websockets refactoring, all websocket writer methods are converted into coroutines. (#2836) - Provide ``Content-Range`` header for ``Range`` requests (#2844) - Fix websocket client return EofStream. (#2784) - Fix websocket demo. (#2789) - Property ``BaseRequest.http_range`` now returns a python-like slice when requesting the tail of the range. It's now indicated by a negative value in ``range.start`` rather then in ``range.stop`` (#2805) - Close a connection if an unexpected exception occurs while sending a request - Fix firing DNS tracing events. (#2841) - Change ``ClientResponse.json()`` documentation to reflect that it now allows "application/xxx+json" content-types (#2206) - Document behavior when cchardet detects encodings that are unknown to Python. - Add diagrams for tracing request life style. (#2748) - Drop removed functionality for passing ``StreamReader`` as data at client side. (#2793)- update to version 3.0.1 * async/await everywhere. The minimal supported Python version is 3.5.3 now. * Application Runners. * Client Tracing. Now it is possible by registering special signal handlers on every request processing stage. * HTTPS support * Dropped obsolete API. The release dropped a lot of already deprecated features. * The full changelog can be read at https://aiohttp.readthedocs.io/en/stable/changes.html - Add python3-idna_ssl, python3-Pygments and python3-aiohttp-theme to BuildRequires. - Add Requires: python3-idna_ssl - Fix tests by removing a file and adding a patch to remove another failing test due to a DeprecationWarning being issued by pytest because of a problem in python-pytest-timeout. * remove-failing-tests-due-to-pytest-timeout-issues.patch- update to version 2.3.7- add MarkupSafe as build depdency to fix documentaion generation- update to version 2.3.6: * Correct request.app context (for handlers not just middlewares). (#2577)- specfile: * require pluggy - update to version 2.3.5: * Fix compatibility with pytest 3.3+ (#2565) - changes from version 2.3.4: * Make request.app point to proper application instance when using nested applications (with middlewares). (#2550) * Change base class of ClientConnectorSSLError to ClientSSLError from ClientConnectorError. (#2563) * Return client connection back to free pool on error in connector.connect(). (#2567)- update to version 2.3.3: * Having a ; in Response content type does not assume it contains a charset anymore. (#2197) * Use getattr(asyncio, ‘async’) for keeping compatibility with Python 3.7. (#2476) * Ignore NotImplementedError raised by set_child_watcher from uvloop. (#2491) * Fix warning in ClientSession.__del__ by stopping to try to close it. (#2523) * Fixed typo’s in Third-party libraries page. And added async-v20 to the list (#2510)- specfile: * updated requirements according to requirement/ci-wheel.txt in tar-ball * removed 'changes' from %doc - update to version 2.3.2: * Fix passing client max size on cloning request obj. (#2385) * Fix ClientConnectorSSLError and ClientProxyConnectionError for proxy connector. (#2408) * Drop generated _http_parser shared object from tarball distribution. (#2414) * Fix connector convert OSError to ClientConnectorError. (#2423) * Fix connection attempts for multiple dns hosts. (#2424) * Fix ValueError for AF_INET6 sockets if a preexisting INET6 socket to the aiohttp.web.run_app function. (#2431) * _SessionRequestContextManager closes the session properly now. (#2441) * Rename from_env to trust_env in client reference. (#2451) - changes from version 2.3.1: * Relax attribute lookup in warning about old-styled middleware (#2340) - changes from version 2.3.0: * Features + Add SSL related params to ClientSession.request (#1128) + Make enable_compression work on HTTP/1.0 (#1828) + Deprecate registering synchronous web handlers (#1993) + Switch to multidict 3.0. All HTTP headers preserve casing now but compared in case-insensitive way. (#1994) + Improvement for normalize_path_middleware. Added possibility to handle URLs with query string. (#1995) + Use towncrier for CHANGES.txt build (#1997) + Implement trust_env=True param in ClientSession. (#1998) + Added variable to customize proxy headers (#2001) + Implement router.add_routes and router decorators. (#2004) + Deprecated BaseRequest.has_body in favor of BaseRequest.can_read_body Added BaseRequest.body_exists attribute that stays static for the lifetime of the request (#2005) + Provide BaseRequest.loop attribute (#2024) + Make _CoroGuard awaitable and fix ClientSession.close warning message (#2026) + Responses to redirects without Location header are returned instead of raising a RuntimeError (#2030) + Added get_client, get_server, setUpAsync and tearDownAsync methods to AioHTTPTestCase (#2032) + Add automatically a SafeChildWatcher to the test loop (#2058) + add ability to disable automatic response decompression (#2110) + Add support for throttling DNS request, avoiding the requests saturation when there is a miss in the DNS cache and many requests getting into the connector at the same time. (#2111) + Use request for getting access log information instead of message/transport pair. Add RequestBase.remote property for accessing to IP of client initiated HTTP request. (#2123) + json() raises a ContentTypeError exception if the content-type does not meet the requirements instead of raising a generic ClientResponseError. (#2136) + Make the HTTP client able to return HTTP chunks when chunked transfer encoding is used. (#2150) + add append_version arg into StaticResource.url and StaticResource.url_for methods for getting an url with hash (version) of the file. (#2157) + Fix parsing the Forwarded header. * commas and semicolons are allowed inside quoted-strings; * empty forwarded-pairs (as in for=_1;;by=_2) are allowed; * non-standard parameters are allowed (although this alone could be easily done in the previous parser). (#2173) + Don’t require ssl module to run. aiohttp does not require SSL to function. The code paths involved with SSL will only be hit upon SSL usage. Raise RuntimeError if HTTPS protocol is required but ssl module is not present. (#2221) + Accept coroutine fixtures in pytest plugin (#2223) + Call shutdown_asyncgens before event loop closing on Python 3.6. (#2227) + Speed up Signals when there are no receivers (#2229) + Raise InvalidURL instead of ValueError on fetches with invalid URL. (#2241) + Move DummyCookieJar into cookiejar.py (#2242) + run_app: Make print=None disable printing (#2260) + Support brotli encoding (generic-purpose lossless compression algorithm) (#2270) + Add server support for WebSockets Per-Message Deflate. Add client option to add deflate compress header in WebSockets request header. If calling ClientSession.ws_connect() with compress=15 the client will support deflate compress negotiation. (#2273) + Support verify_ssl, fingerprint, ssl_context and proxy_headers by client.ws_connect. (#2292) + Added aiohttp.ClientConnectorSSLError when connection fails due ssl.SSLError (#2294) + aiohttp.web.Application.make_handler support access_log_class (#2315) + Build HTTP parser extension in non-strict mode by default. (#2332) * Bugfixes + Clear auth information on redirecting to other domain (#1699) + Fix missing app.loop on startup hooks during tests (#2060) + Fix issue with synchronous session closing when using ClientSession as an asynchronous context manager. (#2063) + Fix issue with CookieJar incorrectly expiring cookies in some edge cases. (#2084) + Force use of IPv4 during test, this will make tests run in a Docker container (#2104) + Warnings about unawaited coroutines now correctly point to the user’s code. (#2106) + Fix issue with IndexError being raised by the StreamReader.iter_chunks() generator. (#2112) + Support HTTP 308 Permanent redirect in client class. (#2114) + Fix FileResponse sending empty chunked body on 304. (#2143) + Do not add Content-Length: 0 to GET/HEAD/TRACE/OPTIONS requests by default. (#2167) + Fix parsing the Forwarded header according to RFC 7239. (#2170) + Securely determining remote/scheme/host #2171 (#2171) + Fix header name parsing, if name is split into multiple lines (#2183) + Handle session close during connection, KeyError: (#2193) + Fixes uncaught TypeError in helpers.guess_filename if name is not a string (#2201) + Raise OSError on async DNS lookup if resolved domain is an alias for another one, which does not have an A or CNAME record. (#2231) + Fix incorrect warning in StreamReader. (#2251) + Properly clone state of web request (#2284) + Fix C HTTP parser for cases when status line is split into different TCP packets. (#2311) + Fix web.FileResponse overriding user supplied Content-Type (#2317) * Improved Documentation + Add a note about possible performance degradation in await resp.text() if charset was not provided by Content-Type HTTP header. Pass explicit encoding to solve it. (#1811) + Drop disqus widget from documentation pages. (#2018) + Add a graceful shutdown section to the client usage documentation. (#2039) + Document connector_owner parameter. (#2072) + Update the doc of web.Application (#2081) + Fix mistake about access log disabling. (#2085) + Add example usage of on_startup and on_shutdown signals by creating and disposing an aiopg connection engine. (#2131) + Document encoded=True for yarl.URL, it disables all yarl transformations. (#2198) + Document that all app’s middleware factories are run for every request. (#2225) + Reflect the fact that default resolver is threaded one starting from aiohttp 1.1 (#2228) * Deprecations and Removals + Drop deprecated Server.finish_connections (#2006) + Drop %O format from logging, use %b instead. Drop %e format from logging, environment variables are not supported anymore. (#2123) + Drop deprecated secure_proxy_ssl_header support (#2171) + Removed TimeService in favor of simple caching. TimeService also had a bug where it lost about 0.5 seconds per second. (#2176) + Drop unused response_factory from static files API (#2290) * Misc + #2013, #2014, #2048, #2094, #2149, #2187, #2214, #2225, #2243, [#2248]- Fixed build on non Factory targets- Repair package description grammar.- first singlespec package - fixes boo#1054580 boo#1054581s390zp32 1732524573  !"#$$&&((**,-./0022446788::<=>?@ABBDEFFHHJKLMNNPQRRTUVWXYZ[\\^_``bcdefghijklmnopqrstuvwxyz{|}~3.9.3-150400.10.27.13.9.3-150400.10.27.1aiohttpaiohttp-3.9.3.dist-infoINSTALLERLICENSE.txtMETADATARECORDREQUESTEDWHEELtop_level.txt__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycabc.cpython-311.opt-1.pycabc.cpython-311.pycbase_protocol.cpython-311.opt-1.pycbase_protocol.cpython-311.pycclient.cpython-311.opt-1.pycclient.cpython-311.pycclient_exceptions.cpython-311.opt-1.pycclient_exceptions.cpython-311.pycclient_proto.cpython-311.opt-1.pycclient_proto.cpython-311.pycclient_reqrep.cpython-311.opt-1.pycclient_reqrep.cpython-311.pycclient_ws.cpython-311.opt-1.pycclient_ws.cpython-311.pyccompression_utils.cpython-311.opt-1.pyccompression_utils.cpython-311.pycconnector.cpython-311.opt-1.pycconnector.cpython-311.pyccookiejar.cpython-311.opt-1.pyccookiejar.cpython-311.pycformdata.cpython-311.opt-1.pycformdata.cpython-311.pychdrs.cpython-311.opt-1.pychdrs.cpython-311.pychelpers.cpython-311.opt-1.pychelpers.cpython-311.pychttp.cpython-311.opt-1.pychttp.cpython-311.pychttp_exceptions.cpython-311.opt-1.pychttp_exceptions.cpython-311.pychttp_parser.cpython-311.opt-1.pychttp_parser.cpython-311.pychttp_websocket.cpython-311.opt-1.pychttp_websocket.cpython-311.pychttp_writer.cpython-311.opt-1.pychttp_writer.cpython-311.pyclocks.cpython-311.opt-1.pyclocks.cpython-311.pyclog.cpython-311.opt-1.pyclog.cpython-311.pycmultipart.cpython-311.opt-1.pycmultipart.cpython-311.pycpayload.cpython-311.opt-1.pycpayload.cpython-311.pycpayload_streamer.cpython-311.opt-1.pycpayload_streamer.cpython-311.pycpytest_plugin.cpython-311.opt-1.pycpytest_plugin.cpython-311.pycresolver.cpython-311.opt-1.pycresolver.cpython-311.pycstreams.cpython-311.opt-1.pycstreams.cpython-311.pyctcp_helpers.cpython-311.opt-1.pyctcp_helpers.cpython-311.pyctest_utils.cpython-311.opt-1.pyctest_utils.cpython-311.pyctracing.cpython-311.opt-1.pyctracing.cpython-311.pyctypedefs.cpython-311.opt-1.pyctypedefs.cpython-311.pycweb.cpython-311.opt-1.pycweb.cpython-311.pycweb_app.cpython-311.opt-1.pycweb_app.cpython-311.pycweb_exceptions.cpython-311.opt-1.pycweb_exceptions.cpython-311.pycweb_fileresponse.cpython-311.opt-1.pycweb_fileresponse.cpython-311.pycweb_log.cpython-311.opt-1.pycweb_log.cpython-311.pycweb_middlewares.cpython-311.opt-1.pycweb_middlewares.cpython-311.pycweb_protocol.cpython-311.opt-1.pycweb_protocol.cpython-311.pycweb_request.cpython-311.opt-1.pycweb_request.cpython-311.pycweb_response.cpython-311.opt-1.pycweb_response.cpython-311.pycweb_routedef.cpython-311.opt-1.pycweb_routedef.cpython-311.pycweb_runner.cpython-311.opt-1.pycweb_runner.cpython-311.pycweb_server.cpython-311.opt-1.pycweb_server.cpython-311.pycweb_urldispatcher.cpython-311.opt-1.pycweb_urldispatcher.cpython-311.pycweb_ws.cpython-311.opt-1.pycweb_ws.cpython-311.pycworker.cpython-311.opt-1.pycworker.cpython-311.pyc_cparser.pxd_find_header.pxd_headers.pxi_helpers.cpython-311-s390x-linux-gnu.so_helpers.pyi_helpers.pyx_http_parser.cpython-311-s390x-linux-gnu.so_http_parser.pyx_http_writer.cpython-311-s390x-linux-gnu.so_http_writer.pyx_websocket.cpython-311-s390x-linux-gnu.so_websocket.pyxabc.pybase_protocol.pyclient.pyclient_exceptions.pyclient_proto.pyclient_reqrep.pyclient_ws.pycompression_utils.pyconnector.pycookiejar.pyformdata.pyhdrs.pyhelpers.pyhttp.pyhttp_exceptions.pyhttp_parser.pyhttp_websocket.pyhttp_writer.pylocks.pylog.pymultipart.pypayload.pypayload_streamer.pypy.typedpytest_plugin.pyresolver.pystreams.pytcp_helpers.pytest_utils.pytracing.pytypedefs.pyweb.pyweb_app.pyweb_exceptions.pyweb_fileresponse.pyweb_log.pyweb_middlewares.pyweb_protocol.pyweb_request.pyweb_response.pyweb_routedef.pyweb_runner.pyweb_server.pyweb_urldispatcher.pyweb_ws.pyworker.pypython311-aiohttpCHANGES.rstCONTRIBUTORS.txtREADME.rstpython311-aiohttpLICENSE.txt/usr/lib64/python3.11/site-packages//usr/lib64/python3.11/site-packages/aiohttp-3.9.3.dist-info//usr/lib64/python3.11/site-packages/aiohttp//usr/lib64/python3.11/site-packages/aiohttp/__pycache__//usr/share/doc/packages//usr/share/doc/packages/python311-aiohttp//usr/share/licenses//usr/share/licenses/python311-aiohttp/-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.suse.de/SUSE:Maintenance:36489/SUSE_SLE-15-SP4_Update/441a7e89521c9b9b2eaf6ec0f7b6df54-python-aiohttp.SUSE_SLE-15-SP4_Updatedrpmxz5s390x-suse-linux     directoryASCII textUTF-8 Unicode textASCII text, with CRLF line terminatorsemptyPython script, ASCII text executableELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=ecabf25c79531a45be3b0220600daf2599ee31bf, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=b91d44f37022892ce9ee7ea38499970fda0611c1, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=94aa731e5d89188d5cf5bc424036a432f257087b, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=6bc4c35555e3c41a3fa82c261ec247a02e910608, strippedPython script, UTF-8 Unicode text executableUTF-8 Unicode text, with very long lines  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^cdejkpqvwxyz{|}~RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRjRz^prjpython311-Brotlipython311-aiodnspython311-cChardetpython311-aiohttp-docutf-8de570a4882d0aaa5d8d22bee6a5d99741e86b672891a0d21c54ea0ebd92e1454?7zXZ !t/(]"k%0a I;cRkAג/G}E)ZT1t$3N a5An0$?bfDtW #"eN<||c)0Υc]l ܩ0!au K8ƗT!6ŀK+vD`/԰ϟ+=>EYqOG+6 ieʤo7Ev>/ݑm|Lz  GGFy{ 8!Bkkv$~(!Mzn ڴ^ß"*+RC cqܮ2+N<)^+{u>fnio&Z:D\RkyH1>S|v ώH7Kw@ƅ㣔TZAvAE.Xw}F.#XM̩A~['GG_Wh`$UtG;{ M @l|ht:qo@%c92 Z^/-m?dNhO9 EW #fOH\'9C.s^`8n2QIh򷵍eT~mBg|}@yv,L$HPrEW ml .D\7JϣZ9DnKY Qn1rH;х4~ 463P0mJQDN}| ;*ۨ*e"4UX FT$[oJ cQwkРy(ho첲BXmHFK:}1Ȟ#nVCcdNGD!l $ lq i=@͂ۏ̧̮%TB::\T.=Iڋ8V4-!◺29,%y2DC܇Ty;(9bPU#Q<|jeÜX{)^I bVXhLH3µ7E{պ9B kw p߲( D-LB^>@32d>aos- ejM]S-XP c0=5rduy"79|7}bW`>ӂÅ27~~7[yuB!iW`,q'8+JJ^[+L"q@7̀|8RuhW%IE.ݲ~dEVwTkOCe+GSδx?uyA`2 8; b;CHڗg);Ma} _\F0=2^S1uܙq'y) H ǹPn"Û8/C@R\0-9\z.J"RNh}|eyU%WvA訇-xMS9LFH~aw2klE[SkB*GLѡ\1?ة&J!`(^ӑ zV.) %s*=\y@OAc1 ץ}q:Q>>a+_SSp_u^L9)/qBU..-uçMlO7ņO(~+Z1Ἇ8S0zg}e͢ @=+&0yN&#)W(қ0~Xr㵧.+a]|LX>!_[1ovmwL9} 1}8gtwu9+lj h5]7(SyBVgo9tJ% ")FbލxqJD#Q{IWH[iv[9qvDb@\CjʲL(]_!b|iof\%`$6Z; h0n^|+MKHFU?걮 oV.!v* !qw(N4jH$bo21iTX]Ux2{ТTP\.q37ݺ@4X;0 E5 AH̙oR`\W#s(>kmfEO/π7}eޔȞU0B{zΑ, v$`VTmQ #ic40%U 7fhA09r"j178܈-pi4A j o8#GP"'MojMފZz' 284T}o-Ya8DJ 5J!n A~ Adb &F7srܢJsd( X<`%'`8 ŢBr$p=Y`!3L˭!N5tPޱRZėD>k9f9y1($&nL_=YTr`RjDtOQ'[9j$*䊇_QQ)c{vCR D$eP+@ 櫜8<۱b=H`D4*m?p&%t`~GG'ͺ"r8?whuRk1f(tvTV1["=:J%*⽡1gmt %Qp7D/Ke6P8FvCX,}e]!YӲ7O&7 (},1Z=>'^n`S9R6ԎW;~/OQny:֜6θ{'l FO!cbp5 uuP1xMxJ$(hRYlEzYOV;S_ԧp 9Ԛ̚Y 9#<Î7UJd9j.O'ŷ;"8k)2B%y#ȳjg la{4XJ~tnP ix3~xP"Xc|If-=PH[nW?l:#)tyCא]jhC%o2E ] V/eV2Ta:3GKVLi~ cs~-=Ud"ϸtѓ-;[%D|42ru(}eI*RR7(ktĢXyHtL\А|1`.㣹O *U5XZS8A׸C8gН$CݞB(Ԟ:mWN}vpcQ\\y 7Ai,ޣ*|0ۇ4/u;G[YRijl^|7~ Ae#(#ҕ_\L6k4'6Nin񈚞҆ʀ<;Z<$._C٧zOq$[R|YÕ%Ԁ(p0ŅO .K b6հz lpzv/ 5* 3eq2 |܅ڇ "xP&MKy!{ά%7ʽ^G敄]&Yvp FWޓ(s_ rAx{YTzR?g+T I$0$Vщg*!fB\wV밳~)#Pih̉gޠ `y {Bi&L+1CͿc#m5c鱹XZہkfS]TX38?|8vGl%S5TAϒ*_%#7KR踂Tl>N4yHbFY& ݺ]0?{9(zIKLTAGGSTOiI/vø@|ӺSS.53Ph㥝cjMy{MQpO,z^aJ,qf KK=H>EI^ }/!" FYڷ Mt!mx6qG7jŐPj_pOv"v41a++?a7})Q*$L YZ