python-Twisted-doc-22.2.0-150400.5.7.1<>,cdFp9|w,?tzKxU. j{ivk A{x7|s_>Tc&rYLj1>k .g|6L]}2& b*(>vlb-77X<]&AۢtY\`y7xߢ_ʩwv WNلSrWiH`_2 2͋n4T)x\<*NVBv;sLMpƩa@M`8Xg ׏8wO [ 2le|b>;X?Hd ) p48DHa  8 j  !  @g(889t8:8FQGQH\TIfXiTYi\\i]s^[bcd$e)f,l.uDv)zDCpython-Twisted-doc22.2.0150400.5.7.1An asynchronous networking framework written in Python - DocumentationAn extensible framework for Python programming, with special focus on event-based network programming and multiprotocol integration. This package contains the documentation for python-TwistedcdFibs-arm-3'hSUSE Linux Enterprise 15SUSE LLC MIThttps://www.suse.com/Unspecifiedhttps://twistedmatrix.com/linuxaarch64ox(>Z=O3~N *m ~>&0AB v"~@ Yug1D;4qHx / ^zKw i+Z'P$1 ^#:t"  +LfFr  F:0 ? ^ Nr f($ N6B6g>f?\@J*=d*S0]\o@W@EX&MDQr}Eu FsGG Sm"DDuB\@]n0#n]1A7chS/a"Q Ae#1 P?C&C$$ yq  : %$"43pW[ N w Y~V 5 % UwY"t Ad$3*9Z=% % Nk+10>+Bikp@i; [=4$G LO% M{dN OC d"scOW\09tNcQ< < o .jSsI M ep+ #wV6Rmm,d2p`;d]sSyTWbpn=V $ 1  %' d~ -:V$:{+9o^vd%#. K~ S rA큤A큤AA큤AAA큤A큤AA큤A큤AA큤A큤A큤A큤A큤AA큤A큤A큤A큤A큤AAAAA큤A큤AA큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤AA큤A큤A큤A큤AA큤A큤AA큤A큤A큤A큤A큤AAAA큤AA큤A큤AA큤AA큤A큤A큤AA큤A큤AA큤A큤AA큤AA큤A큤AA큤A큤AA큤A큤A큤AA큤A큤cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd08be394444142c629fc7fd811c94409d3391814fa68432fba6a24ec8811fcc3d8d513c6703d4858d1a7cfde465773d450aace5124c68398784223dc0156f0e11c8c3cced44cf696afca3ee5fa63a8e1f09dc465008b0f2d00ff740d217c99a3756830cdadd0bcf42826cf4297ed32d46a9e7878f06703d13bc6e66375f0aef9d6da2f287a51e55c40da240855ab2995fedbd42bcf95a918020c6294505b3d9bd96fd50b8f1b659533d6d25cfcc0f86648d3f9731a92a3d38e04317a54dd96614f5910188ef8d77b5fc7356f52e388d83e6eff41c33da75398e660108b8acfc551e1a5b5b6b1b0fd72a9bb856814beacd7e699f576d69650090c468ca07364e5a0ea299164620f3dd5ec6161ab5208ab7dba2de59f6f21b1eca81486ef97cb81579e4ecdee446cf34cced60ffc64be23c4e5b0a54a7a3d55e91bfb2e7159b2dece5f387a3f941a4af1483cab6ffd12683a94a01daf2c262fcdc74a5facb95eaefcaa6f9ee385fc707e4f8cb2b3ce2b1963aece9199dc789878b9749ec27c7dfdb987585221bed491c1fdc1f399e4a189232878a8f09025f259c1603394a72de5799846fd0827fd82ff1c8b6416b4d6ba2e6131df321d6be9f5180adc1860abcbe17b378fac846b0423645386cc86f7975567e6d10027da3c4a80416b7f9d71f54c8c33b061622b607982e0142c549b48384a8cea17b55b34c593fb9978b233eec2ddbf3df6f5a10efeed327ffecc1c0093a82cfb9e022605577c274596e8e04a17cb4ce1c81d4ea8d1c49d0c0401d4810644d6473f131d6c2f1e6c91ca43f5ef0388b3bb4b199281c28886fba58351a4e7a980fa4cf085ae1ce7dc81df63c6cfc7902c5cc719e0e1b727b48a634c639a63c3d362085b03d8b0f481c4d3b4b2c69281865354bcc354b1c2130ac22c921e5001b806cbc853bb4744acb43cbed28aaf0f8247b7f3f4ba3ad97a2dfaa88687e52d1846b21f48335c868b9d55a2b061b497687f89aa6b5b230a785f376d07f15889cdc0c3c9ff8daf6dbc68390f8ff1bdaaba20491f9f8757e18adb6890f8a65a98ff4426463fcdec30eb5986d16c8c4809ca270c58ac6c3c8f7fe75f9c0a5af3415f483ad9d6f07452a714740246f1999c2596b07acc89b85174a46b8efdfdb4399d75043795909020481a99cdace55c77bd4dc80ac4afaf84b9862f3f90973f650e3e3f4a49b4f382eaa486b77d62826563d67219e50e0a4776b9aff7dd3ddf0d965719f0eac267fb5cd8cb87a6f4a31e0f25e6c313a36c3aa7c96674d7a1d91d8b8ff7e8590d4059fcf52deb10d716648823e4fce68e666c95923418da01beb4cd9c7f32600d9eaab97e1bee29d52a8a7b6b2218ee2855cc5b3902365a0406d5bd5594122057b480d7659da1df90a514599e4173e9620aec9e04a73518512d77af1456592175be19e888d951c30ea0e2b0f8b5cc20b06decc3160bd402a88c04a51790ddf8ff3efca54cd8da73bd95fb96b5bdcfb6982ef5c216ef754e7ff44021d255d4d691d057caaa27cf799a7c4cc825f46d37bbc71df57f22681d5c91a7626025a7cba6e6c5817156603873c4265e87f0707ed0cf5d5f31dcecb154fb0c9bec2c112fba6aaade2429b6c57cac47c9a9b107b2962d8a17c18cce53fa0d9fe23913b57f70a885c711be75400dd049b55de689f82aaa9b71e0655bf3265350fd130c636063015d0c0f5030104d3df9c9f05465416e2c118f2f7ab2a458d2e1c42582ef084fd318f8dbeda815670034c7937c27f4c7f4c2c7705ad6be539d7520bb0f514e1d572607a8f4dbe2d14bd3fbe2a0c40a5e9da8b11873f22b806453ddd3a4619ba9e623fd7ca45fbca86860f22748985282ed478a05b90f144829c8573ddf43818fe6559f97b42ccbb6f96fc8856c81ab24b8c9a74681d256586d4872fef05e7de6d871088f9693134ba12501adea779e77b662256303e40462e9f01dca4920dd0b5d9ca95df93dacc741106c2cbc6617806d752e302b130a4273c23130eb3478c435789dadd0239176b9e4cf713b81bea9b729e65623baedce5604631047cd4bb16cb417f3d82d8a903512d5ac2ef60d3985a768604ed4852afa65e94603fbe2ba1904926faedd923f91e06c2729951574d701b2d4153c320e89afb53f69c3f8d0db964624d5ebd16b8621f7a72e03d5e5625802ecb7e69116fa14e4005bebe491248abdf8de8347062eff4eae3f976c3e6d407d59809f992324a1e4311477a12f0d4222d08553074fd41ba9a900aa3b4972a3823de8cc185784e08197acba246ac54d22e41fe71e51e3c171e093acf2933d4504566d479e8f3cdc6dc2116af3ad522d4a5e94dfcedf54463d6b9f19cfde0bc2cc5b8ece404712256cc819b558f59dc70531f2d1454fe3eca853121234ea814952dba3189db2659d68e6c1f15645dfa159adfdbe14ac017e1e8ea66d6c69cc02827cbf6b63f08e469d8c74ac1a3089139ecfcc285de23879c1c3adb3f1957e269018802ace30edade194d41bda9827d77550e6d5762df118ffeacab23fe922d66162417ef5335286d6b99a17e6626789c7c0ed35166f3221f130a451ee2d4849b236b7ed563c58ff85b02f817d918f9f33078b21e43ab279b14c2ff006307c52d78527b5794ca306d20732495fe4477bcc6a8eacb264b5efd8114953965bf07abef59573f59b578299c14c9a22793a85fb9fd50f4eb6611266f0b939d8618dd39010cdb92e47e08d7809464e5dd0c67ddd5a14958c5d88599f2d529c2d31eafe1783bc2f3ca6e0598cd02bb35b173646614633471ddd0fa4324b3d11dfcc479b183b7d5dd9e770f93e04fb932f52cb6fe3839ae3b9d9f7422121b42a3d2b1730bb2ed2da9a6dcfd4b8770df201770957bfb193508e75f239cc7420007787cad850d70c1eb4785c81c01e116ce5cb7798f0afc478d96571c437c23006200b686f88c7c130634e20f101bf3ae4e839ba719dc18b10ba9d31ba91955da6f4e2915a8d96b9aa58b94a0b1f26f9cb8ee58b315f33f7dad345949d11f1ac8f771ff8f3f971612762416f647156141c30bc592bfb6c9ed0bab1e1b69e24fb937c171fbb87807c44984c88383b62c4f9b44981d499ba584d26866258d110b69eb1e161843d644e7230232432c1889b8f49066334d833927adfdb9876e8c5f78d8e2484c4caf65df015950422d5abaeceb78e04f558294f57ea3f1022752aed194dc697baa9f8659916863e2048619ee9d389e35fb1496aaeb97a83dd8745dcc3fe7e2eff6dbdb55e012416e2d5c7826dcc27d9d69423cbbcd05a25bac0ff27fc28af1c16059f38aaedf88f2a9c679901445ee57f21592ba8bac9382d9a3135e8defb2d4a0da409a213eee3dfa11071f5ba13c0fa3bdef5b96f9db5d16717707b951368267ce65178ce55335326b8eae707f8d40d6473a750afc464663c25486178ec1581541408951bac17035aa6b9e52a39bc11b0b7c6ee31d0cfbc890753aa165e18d9acc464f6a976aa0bc44969453daf5d6636f963337f96aeca91ee32bcd5335d890c477a2f61ea4bc2860e45e3d99cf26ad5ca1b4ae8005ddabb8861e99e7fc495d31d79574e0f6b3a53ab78868c8b249bd92f5a1c04f0179f6f91191706cce3326bb0da9a9a097102213f172ac550eadff9b545a8dbb670285ed55feb423edf7c4f71c6dfa32d711f0908c672c08683d4296e1bf9ee05346299b2e692a85d7985ac642248650412f6d7cadbdcd4ed4cb30efd4259d1fbf2b04edadcd15313f9cef8e4f29ac8a3d44d0bdcb77c6792b0c37da5de938f52714f109304377a8f79255afb6b84220a9e24f4de38171bc481aca59d2497f44b0124348d5b8b92a2fa221cdb60165edeeae8947527ac91e3534971a81ca4ff4b4f28c96d7858ce356ef33b95ab54da021a46b6f4d05bae86a7e33e102db7f9a76e3cc73942d0e4e0d6c21ed8d94bde0689e48ca5a2d928585e4530b927517467896d312271b2498a309654adcc79369ce04d3609e5a5c36164a66944e070b870c546476f5d43f0b800841b4d9c4d70eb784f28b449d7f514fdbadbb0eb5732dfc90e1d1cc670e8548bc3ba6480961fee6437ec80b25d78e06f4a0f70340f6fc938082989cccb0c02c5ab6ab29855779c54df8830326217711530c09a95a99cd9af19bc87843b54785d3de7b8fad707387bb9f2bb694773f3591119b2fbc0be3702372442ada6a452854e7c067ef02c61d811bfb4d28d6f0cc937b76c225543c5e68fd6bd47139ea42237cc26b959b94649020a496a9913af10879ba75c884a33da7e1a2c694ea5306ba100f378e2ab7e9fbe049ff7fc2be3f709908538c890da107dd677e174b6baab2748e993fd7de63aee065ef85c8e082161221c4be9c82b4eabe17d81929c0673efbdfe3eb08baa63e0be5f28608344f3d17b3faa45c54a68ab88ae961a512bd70d024d4f40216aecc303af15a3f27bb7ba5feff8e7587cccb2d8d42f9dfc060c66b12b98c0c6d0ed0caace3a39a61399240e591e24372145eac65f4862517512da6c4af9053ff4e37958f5e956f65a2d353792ad6621f4eac8b8844a47b119b6d3e6edf59ec5e89eb8176b029b49ba627b9943552832e726e09c3da92d942cec4a58977e3e007276e6c27cfc9ae7315e451b6579e19ff3558b4e6244f835f1d5788f2debb4ac69bf6da7313edbf7cea0a71a7416511b03d9de2c0d9957fe195f56e6cb618f88f33a1b16dbc47a977f16c3b4c4bf11edd83564352dc9cff899defd02dfa5ca0261f7090014469267b30119ad07f04b9a11819202fbbe01ab422f87d3c57f25663f70704b2358cfd70fddfb56228acf6ceab8ca0ca5bd240344972b031f052d8fd5103a99fc1b5bd5a24a12e06c5b5341b5bef332d218790c54d4366ebee5e02cd4a4fd8e9330b75903cb2100274688da9169f2994f76164300a1e9feff262ec6f200b1d9dba2224ee5641efd54d439f793584e544510321bbdc5d96007e76f693aed238ee144181796a0a3346084c86e33a54eeb9b3a8416bb34cb90bc90f2b0a2039cd3591c54e676133ac291818533bc8248186b90f081471562fc43915727b3dc3f88cf4ecb852c10406eeb6a6409abdf878a362274f09ee0758c57c1dace40f9cc238f9facad0b65cf96f93d2d6184935522a1578fda3b8b42c3945b74613163ffb194b0854da3487f109fab0c86aa81f186229ce0d6a321449d02e141c093e657b1d814ee4774ca083859e61e19b5b8a5c0b3e56ba9c50430ccaf3cf83b087a6d3bb6a6bf3f1fbf4036291e8e08c0c3e18ff293ee15143a9d74d376562f5c4acfbb8569905dddc2d9836987c3d9e613fc0c91757a198cf7d19e9e4b05ad44f47d3d4f9906a641dfabadbb8ee1d72eb424aa260ef23abc723f20858abeab9857b55765b8e0bf476036f99f4d4fa4bb26382d6d21fc5f9f4b0e315b2e3e14f489b01404cacb7828aa41305eda01b739bfc43d057364c664879eb6eaf6e01a38a5143a6fd8f0b38efc5daae2341c547cfaa3ccc321e035ca7fc00edd00826a91145d3e8e5897b35f948fe77dcd73ea7f0fae6e5124e0a7c8f55c0320becf0e2116bd6f59cfae8eb116672f463af61d9782d9c45841b8f8602c254c55090f1366db814149163d474e2e39fa15e2a26f951d08a7d56c50195a38777ca63b3a8769bdc8b08aefb2cd40afe650208f824fac8064de4d62e138a32f0a368056aa030fe89f713eb6532e306b756108184fe4084b7fdc172ffc5859ed6bbfb4bcf7eb58981c47dace0ebe7abd6a6fc5957099f28ea685c3eadf600fd930e952a90368f9cc073a9f1a8fd37e3a5b5cdc9979eada6a7766fed4659628c674b10fc2d73eb0f95fffaa0951e29488f26c84c04858d8c478ecf22cd71197d9b02c1389089c3e97d7dcb5fd196d898abf4c38fa38a7acdd84f2b912b7b8fc61295f4888ba43af0d7909f69230a2dadd1e62837831b735716cc2f0710331f8e18ab561915e3dc76bd60f5a2b26cdc75e3781acd8bb0a17df3cb0f53177d62d12f1566a40e8f7decbb02b735d247ca5c4146dda51ae6a0a45168319169150ba4fff28535ffbfb428953170a22433588e339e211eeab996a2ac7cdcc256cfd06402691a74374242f33b100a910ca00213382d23accc1b8b20dbb195e0474cb2d5e39c4604a2239942486f25cde31b49b191458d264f0adae9d550bc1a9777f959f2d2514aeeb88af1bb4f68923d41b8b4258a51fad121af28e5013a94608965cbc49cfa67ae3b1a018e812237da98e4a0e2ecd188b23a8496b1176b5cbd48eb53eb5a6443647b54e1b29f089f45003d6ea3ee6ad577416d1477ef8369965575a220ccb8c152bbdd4e7cb8a2d080bbfd9fe2d7d9931962dee987692a2062e3372770ad4ca848874449635712b9af5952b29576f850cffca7ec90dd4b7d7024205dca8231c5fdd1999c9faeaf84829792b73f5e4807027822596c76cb811e66945807b8c1fcafa6eb41d10a305d2f25d7255b80239c9946ef6f783729b3e5c56a118f1b2e9ba2b2518a15e18299e68bdf44dbff3aed5e6f08cb7f6667e01fac2266a830b3e6529d8ad6132dd309bd61fcc176ba0484c1dc2291e197726b32fc2f10e4fb1495dcb70464daca9b003513d285ee92df39dbad10ef2a805316c4df79970fbabe1caa35ceaed7bfda3dd22fe937779f711f8796892dcb36c795fdb919b3883ce6be04234210f34c4c5f6576fc96e1540f47abd000b19e8787c36a67a9d3020e0ea28f8bd654619f0f4a15116f49a874c0dfcab0cde1b8b2add3d299565528307d742fb724ee902a96ec71b333185ff370f5601cd4e0789da918cc612f3988729c25574f4f9c91b3ac1fb17a88e28a5296dc519bac36928464c3239de02e057eef5911743932a195128f5de29d3976f628dfafd413926cc98521ad3c4ed1c38ca92873a4493fa750a35494fc6347a4938a592df29c96ed5f0a267fd6320a6ee7f12d8f1f8688f6a28b554ee447c2fda072569f309d190752a3ad019e734973f53cadf661ac6b4f9e8be41eb302cc6f6653fc636ed52abf803aec768fc51ee3cf1054f59cb3281ada62aa34c33ecee52badb643a99ef5064b5114d80b701073b9009914d258a642c745d5bdeaed4445522f2c1432ba410471248555635db130f97a4d1ef600104b0f5ac37a4be448e245c76ee5e2465dd70b666d8c907eb24407d41e6b15d3a816877ba305a11088cc3d46a360304fcc570a24ed5752d94b57dd21050165111234ae77c6030bc052ee1f012b350688ed5b747de53613d886a0ce4838f291b1d344a163f08bf5a905811c97fdb98e97366c83acfd6730e4edab4b9d10026ed7c3c4d2d784fd9c40fba0a2e51425bccc4cdccd4bd772db90e7fe42a0fa4f9c043a7300ff2b84319ba5a58626472ac6de6e3ac21e1a60827a3390d80a3414c5e35183091348e51b205d04663cea1628a57ce6822f4e14ab161408a4e6cdf42e2067d0c05bdd8248513e02ffc54b0ee0e89163cc479265834d8040008539f6fd5d9a5220edfa5ac1ca895063465c4b56dac0ae4c434d755a898839df501e81c2a6b738dbdb8501310f5b403cd27a5c9d6748c76808a6d7ae3c23f6c194fcbea78d6f875961f292280bafac0a21fcbe5a7c71328c4f7c15179af37ef875740670efe0f89895c8a63c6918e90f2974211cb71d98082dbd8af0f5bc618d6392cbb8687149390a9cbeccac0aa895681ec75ccdc6cf9534adbb9a10eb752bb21f5f2caf3604771f2097472ebcc986f646bf400b212bc5266fa9e348d9f96395b4810cb519bb2abb0bbc085e0f499a710850c03aca7019eb66a60677c4f0bd27e0dfbba7214ae7eb99fdb67e4f8fcee8bd27b8e2eec65c847fe414562d6e276f705345f75ceb5be9ba2ea790c61663cfbd12aa27c375ad6948437e34a57472f7dabe41e9edc151d6304bbfbf7911970ea360db9282edc03a3d7647f6dc86988c52537e3bc41b5eb3ff0eb25b7fa5c17dcc7a4d746416a0d93ea0f349b560db51961cd46f2e9fcd5d46dfb6f4322f342d51cb11ed1a881ecd3fd283bdc73bb4c875db56df4197bf41ea1f4595602ad126f063ef75a17ae81b6359b90c218335be2a044dd5a3911005fb3651c141179497f5517917b85843e64d731d63b54b29275bfc357e35d8171ab4b35f673f6862d276b29d269d6beebd50ed11da2c936a6c19a4e24eacad64a28e963c2cfa37073db2c0692efe410a16e4ad154b62c915b96cd5f85eb7cfe3bff3fe7ce591c13fb86865b491fede07ff8bac8770d8aafc935d69cea19f48d9c94f026782eab8d5d7ab29abf9070d30798183d22f0fa1ee90d60b90107ef5d28bdbc19eb0d4e66bb90c3bc437b5204edd419089af305910fb6a8bd63eec583386979f5660f17eaae4faa2a530387784fd542c1564f9aef5c1d26abe94813441df447bb9f236b9ed6dd5bf5c44d610448022529662961f31c0fc3323d2e05dfba6519685a0889e9e8ffb4db5f04541d0fe71077e9a214d6b024978b27550a6d15fba5d9816c546a613101b261098a943f986c0ad7cfd374c268debc7807fe29fb07b1893877eae8b7e476a4b496d04211ae9776fea4a80765a48065e606afca370909c0156033b5a406c1e5b7f7b18eed02697cc8d353be8dc7c75691143410b26f77c6906b74a2ab336293d72d7e25219e0b065b13f431c59df8a587b4d37c3483a48989f9143ad8b64f13e735b187bc743cfff0d0be99139defe6db7f377769adaa45c717aef92c059c30f61eea04abb081a1c9ab69ee0e225886cdc5cee009eec0652ea014cfd343bcc3b426cdab82c74b95699a32dfae6057d92c9a38154c79f452de8974312cc4eb7fb41367ab8568648c93bea697f3b7db36a19fb648997a19a9f0585072446a2336b25c4390e8d2c6f242fdc24451a300479659e8739eca15d3ead1856c7a11df25d6ddf4c09de85857c8a164f0fab247a8c79e0b3575b70ece6d99c0114bc09f5059578d75b2934c9312c9ec99b0fcced5d7a9c2ed62ab6403431570151787678d61c6a3c58a30fb7ed64b27c95ee2585a9109accf4dab20f8096a4df6c6843c67d8be1ded3690a1b63967125f3bc70018be3d91b9a587449150c6ad7ccfb3f25a5ac897638ad2fe96f271a10d937174482e1791c3a26f1d6b3b79a1f5987cd66f0430203a30805fd1dbb7709bdff28caeb79fe3748e001b36e9d7671b88c55fe790fbbe6ac0edfc880defdb3cb491ea9561d5ef5b3d1dff706166a26d702d2011ec1b074025d294497f6cfd4654b936983a30098747c9318ed587c5d4ee26933eb92c05e51f180bdc8c0f1fefb2f21cfe327d99b92be937f599f502d3ad62f23b212913ccade8a76d12353d9af9e2c799cb66560f2da8e99e8809eea4d8f5dae13892065b1fb741172bbe86a1d9a7ce86451f6f1476449b73f9f77a931fc83703ebb3e6ce30c3a2236c4559cdd6c8e5fe1b7873f709d6e0bb855bd1ce6ed7bb57db0605f84d8ed9c0ca02bd8699997cf043e4f58604c6892d033369e43449ba0f64a99cb1e28661c144507e7fb73056a224312047a26982803c434a073771890a703792a549b64538740ba7062df321fd8f15cd4ef9f60ea0c8ed0e044b510034dd1b0148f7d2335dd6746ad6cbb513d4db1761a7348db5cab3fda7a3a634c5a53d7bfa69af4e196121e5f50797a4d24d5b9e3c763c3c91227f2450b3f76373ecc1e14b24737ecd08433a01d2ba6ae9246d768007aa73c3b1df437614ca8f096f6fa56e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8559d33f79b5db206ef26d582ce4921ed7772453610ba075b865c494d43ae16a0eccc965bfee813d2d290e84f4ba8d87e0ab10bff5e8b8858ce134c701fa173d200769f8952945edf331346113ccd68d53cc299f2fd65e11d9b4b84ce30ebf5434d3604fc1df03b310403e9cda20f93e30d66a79faedb61a8cc17a9292c8b972e5dbdd07b593f9bbca584453cf436db1f3d07d9c90677ff425166e7b58fe6516aff0f3ce8ec04a0f4460ca57db228aef8f8a86d7f393c716e7619295f922d94bff8be97d02f4be39dbb14e82aabb3db47e7b25cc3192c39c819f55baff7d05cc4f17467637cf73e6c61ea120f7dc43f48a46a16e5e7849e2f6bdd32c41b3a06ca21e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8557a0393f505fe9c5a2fbde0fb46227d8cb295c9146d48a6fd86fa9ddefd405dfcd58de11444bfff732b31ee3b96f5b396f540e65ad5a57af942780354f36037d8a1f1cb9f25553fd7d1394382f4c8950b3e0da83cc07a3bb8a847a5b58f393b5d740829eb342542a954e754a7bcd975a42e30435e9206a9bde9480d1990aaf6ead8b9cced9cf23c8acd3e36bd87a2ce54736daa15eee2244de2b1a841a6e5f50ba4fbec9bf606aca5874723f1cda24b066aefa512af4f935d498eca1cf105ea5bec6320496624b6ab55e151859c207e02555fad383a43721cda30870065390e7bbcf9b801b55f31d3154c647b0ab535776258ac4840971801e0b9884e6da50920bfb9c63800eccee435d43e98950cb071b46eb948e9e74451ecfcdad3b688ec6ed80b8a4ad206345373b0410b00f537cc367124a74cd778c506df8892f266744921225febfafe6a580be2d2d40809b3eed7732e1e07a8fc5d6aa1ef92fe91a0d6db65f55e1d6dd89ccd18afe9175ae57f69a2f263bb8dcaebcf7160c0f4c8bb848af2864ca833a78f9767c8202d0fc228e1f8119c7046f4106d07afadbb14dc30fa07674fa63489209d710566dd4331d4b5db9451fab054ff351f48464ca4e6237b0799dcda22f22c29a6b7fb92adc0d7a2ee4b6d54c22a6a4b960a521a7a4fac07e888e8a8057fb2ebcae38333e130b660cf356754effd6bfbc3710d718e5de4de493b1993a9c9fd66b5443c0382f3ae313959cffb67396a683fdbd14afbc3a381d960ef113ff188aaf9fab82adaff9ed66c3d194ccf240eb20f745ce910d1fc443207a32399aace7c7dcbe477dd1fb1d64d0f6146a0657fc8c372e13f547d2184f39c754500b9ae2849ae7a57a754f9ec0c9cf7d3eb26575b482208c3d86c14622c229879dee5005b9655e8a57377d72e301c0e45e1af91a70f6314de223b5a7f798a63a6469e1a2f4d42e4b98b47a72b5bcb9e0c1dc5154d8dcb98c73271f2206b0ac89f72ce214660d4d1e1ba698503f7b12b9f61ab81b119102ed0953546aaab7343caf3c0bf99fd5b069ffe723eec73cfa8519221729149fe350b73947731589bfe107fa8a573355b1e2f22d57b7d3916f01b74b78adc6f249e2c7428bdeb7897eddfb96a5b0ba768bd236efadfe340cb381f27103802b38f9173be742b522137ab40e07fb238ae3cd0fb9163021f976214decd427b8a155b0eeb7d5d76edc365f724b0f6ad875be93bb3eef5daada3232fccdf8505eb1af0aa5ea07a21ca06daefada0a8c839b90e301761394295dc436332f6043d66d5940041d0c8f90e34ac20d6b518c9a512fa13de3b4996802d14d3a94c614b54c15739d50488bbc42b01f325605a37f8c0ae86239a62c534d43b964bf3668d69ece9a2dca59fb6e8394fe980275cd26ca3a89e22857f3c8d0a8d2491bcf93c8072f9d48543d2963269b5b8b3fa42c0dc7672b0248488de43109109829abdbbae934ef1270cfe7e9dc6e57d2a932f7fce26702325f855487e941656cf33889895cf27df4f9fdcffb41541e73e5292bfbeeb68444569b052a2d679ab2953f4c79346b0d3199ef838fbde0e0271d7a580b6c86c894313c7beb12c5184beb1405a2df231bee51a2e20a2ad513348b8a4fbe40c5ed9c57b67033cf4ad54e29e32b4f5f1f82d727de930b233d9255f5845ac17b9f913fb0f1fdec06003d91e8a7256a304bd5e8dfbb7480d92ed3421f85426c78a77103885f6b4e7c47e0358fec4b316e12a45b82f3722fa587b9e6cc12b3041317e11b130a629fcae350f24d01294f0dfac21968fa69fbcd821e21254c174f5e932f74965c68c25f89f167593c1ac8047b88c87e20d6f1ad72ac9e000fce474d3fd070a89d1c6ff84b9e4e39c93776442948ad696d34ed4256e57ef59886edda06713878fc17322716d3cf22863502dad709001c2a32421b015a4c3aff3780577badaa869455aed3fb4eeb43d7fe2030e4465c9d6f834d3ec938f5489ad0c154b6ed22db7934b9580c62ccb61b5f81ee282cb157831b5f48383110da3023c0efdde6cf8df660fce812a08ab52daeb2fcc7af514b5ca9f60b2662f5b3f127e4ebcb2811dfd88a5efd3efa48cffa51b9cc04d46d79ebbda8ae3fe23b7a464edeb747c6255547b6837af765970c50f42085d3bf19a9ee691065b3c580a19d81fee6b75e088c2c2fb0ab19843321abec4a93b2cbd735149f60f3dbaa0f02d445384496b062526315faac6f5461d0768175d7baffe6c148ac7233cd2778f33417141c58c039aa0c0e425ae9e7d9a68393709a303a4d4582cf40b38e40f26d5120fbc56b2394627bf2e7027850930902dc4a77d04a743847da4adeaba07329d3d8610b0f05352aa1f9fdfd9ae5a206af55971e8cfc75f43960f94f90ca69605bcf8c2670e5b59f19a9e0ce16be8ec3abda17b3553e53fdea95d8389e6891093c027a47e11fc2133da3664764e6659431a7afdad59b5eabe39bbe01d15d1e8f265bfbde8108cd6cc10e4c702a85801d401f29eae0129b71988a1b1c09b3f83b2532fa529c4b1e301c867375e42f3e98fe603f11bdea47bb5e41660025a7dc1a65ef22dc493850a421071c9d0d084186e5aca41640162c6ecdd0efaf00336e56ff63a700a7b71af93d9889fd9babaacf69503b783f61d86e5cb57cc1484bf4c81c126b4cf52355116558488cdd02f2840b225f9f81377a750840c1494d25d5a836fc7132e0444526b55b8adfed14e6d02bb016b03ebb3dbee0c9a196614cca21f03ae9589a62934e896ef28bd4356708a940598f00019af99da21ebe50b80fc1feb2e4ac219e9905f689f2b39c4cddd331842fabef54dbfe5f00fa010528b1aa66c3d82858e6eef0295b4666dd74fb0d950c3c27beb3f3c145a0afb59ea9f374b7de20bdf8015d34cf18178ce7094797b7e89e3b8228e5c74449a9371b99e87fd510cdbc58512e270765b8efcf21f6a9779f6430975684abb0e3296703c921ca461ca188214883b5fe77fedbdb11b21becd828c8060e40a69bf06d22ac1d7da60f490bac593fe0a1fed8406c03c31baa748603f60931392ef08c1c9bb08f245871d0b800fdb1c18d5dbfbfadd6a4cb0e5e08d4e577ea373769c937bf96ba7ff0d0332184890cfd1a8203bccd0bd8de32120fbeaa1c6c93c6788090ee8c4611bec5796f326f50dafd78ec21b9690a7af53af06b267d4a11761af21dbf60009f65a7ec86ee4de4648540845ffb7bfed7adaf7b1d9ae0c18cffa8d0e6d56ce331f7d7e13d6f20c0a2332a207385933dd7689e5a0d688d2617bb227829c25ada6ab491b7907e6efd5b045d08e94fcdcd3450ca4c275f8c82810098241a65fc8208ea389fb378dbfd9329195341a039c34e02f3b6d01fbe63015a9897057276aea1c88bbd7a36df51ed3c4d0dbc08b83e8fdfd7872ec1479bf0f764b516fb381add9d614cb49272f2d3091d3b1dadc5dbb97691c347fc8a61f6ac1b1d697ff1933ad1e392b8f1b6ed041e8d780ce1aa0a684551f79547d09424dfed029e841912eac355822734822da6ca8fb032006e3c53944bc29cd06e04d3ea20e7a2a4895ff5b3d05f68a7bdd81903637a135f2c9c0f0a9c83a873558d018dc3757833268c5c9b2bbf6de6c5e7454cc85f2dd25e6773a1b68d72633f7994802b02f4d55eda9b13c84bd7af9e0cae29d29bff00565fd3d299c89b1df4f5c1d78c733c3bd50d6498311b73932cc572b4d1977bd49a43998de5231c0679f34cfeb8cec9b1758611c6dc739c824a206469a6165cc0298abb7000eef7b8f2a4b5560112283aa54b755316923f6eb30ad0ba44632dcdca77cdb5a4b83d89cf3cca8129f56570994596c335fc830a53f99ba08bdaa063ad4d5bc9b0526ec40483073f78fa7c78baff0f2ca919b4930e4d0b89f98c514f6f41d793d504684baf7572fb34ffcb82b3e461db01f1e762af413fc90e39856f73a6e8c6002324e015f7039f55c5b7fe66af458e719b88508eed934a25bd86709956a3d85f08e302ebb2834b4693d1887b9c64a6d5c17d074499b2208cc6d8a43cd5b9b7ef8c17211483c15d3fcc3d66a66b551d926687ff6751b780f95499b7e7c5fd87defba06deea7832352d6d4e413c6bf9ea1533c6105c54a12abceac7eb292983bfed19d8244320727c08e90dfec5d05ebdaf98f70b7ef4965f9921b9851380f91e9b6bec09020451caf4c610e67e1ae886cf27a4e9cc1fe65bf0816f5c727e2ca94545ae4fc86212ac43a2e3cf53aaae3634ca1f09fa4ef1ea79301199246cadf1621503ed1f74bcfb2ad67b84493432b316efc6b0170d80f1be8c8d04dbf25291ab32556279acfddacca6cad7948e990c8d70b1b5e136c7b2416ec94972e82465851f023d7c156472b184d08a8e9ca6be02982ac2048c6010903384235f817d7ca681a5725c61cff980364558a6e396e7e34281cf9017accf475bb97d9d461422a4937fdead6d62494380d0d8089f159981093156d357da00b5d08970cd040d225d21c5d585930b1ed928959fdc8ebbd26f472b471a2867a9caa8c292d6b8439f05a7981dda38be752229dfe8292645377327b007bbf3b2e6756c11ea9df19a0efc5c7c207c9543696e0b51244105113c104cde7667ea2b51319fc34c2a1f6ec3a1b81cd219cf6c277fb2fca1b1a687146ef59585d202975a7fd938ce5bc6c65f44fa92a0b82bd44f53e53cb73b5dd550df9db0fe1dd2d67723f47707179e4791e3a050a1f96870beaf831fd08318e8b36e2b30971ae7fc962f527cebfe68c61b59bfcd983408e6a28405dd69c5573392423604baf929a001b016c6de425580b00e89e56e477aa4599934a5617765c392d1da3c77ac17fa95d6b451a6d5072a6cfe71972321fbb7c24fae2ab1c786cfc3c19cf2085ae488e3be832fbd2e2cf19163bcd0ef74b269dc82ce6113a8ffc26130972ab0838151ac1ab4f893a691472a9bbb2d7e915315e31bbe831dd4f2684cce30428817968cf322458b88e83699881d0cce5aaab3f17ac35a25fc545849617eab2afc041ade8219c7f467fee4fdd34b1c0fee2d69004a619db3ec45d834cb5e66a530ad07713a75453bc7574927e388c1111f8283a73d5eca1b86bce4c19c15cea5c8c79573bd3b25d93905df44070d0fe03eb4d62a1dbfe66f63f33ca5a7a958a845bb6be091c42506edbc16b6559ec02562f7bdb443b7dea1c60e3c9f4f16309cc820f00bffea3bc8bf823629bd1f6a7c73d04c2b8304c33116c32082cb83c87c35dd1b5c7402186fc5348e4f5842697bd642b6712d5097cad514637e93c043d32e5b993512d491af7b610398e65ae54e5759538ad0f6645de18f43ada8b17316f77ffc22698cdc2424b69c24c597fc2c740aad4ac701e176129065244975b26f7aa200dc04cb153e44c8c627baf50409b4f6a2d9d54ff186bd7299c5773fd6dbcb53bc7f9dc29bc4044b3168274bac3abb56fb8edeead1b7404879ba76c27834f296cd282c0f95142c0431f7487f5e9af3d8416bacc1a8f1ae4320060e0292e84e0cd848d49426eb9037911e8df4603a55f5b4eac48dc08996c58a53e169affe559981721c55dfc8fadcaf07e09c4dd2e069eb285707b426631fe779b4e9411cabcfa359ee8b6543bff300e879adef4b43c1159bc5d91ddabd5bb6b356723ce16f55ae464a941e58cee80b90b1e8ee2cb084a2b6465471fcff369cbfe5c647a75fdf07f6ff3899d8921d219a19bc74094c6a39ae9545baa8a83f2067a4617e65999190405d18b6599c4fd6f677b77da69a1c09e83a60792b43cbbdc79bd6c44c243b87a6a77ed4b8321787f40d9591a25df847618371d0bb94eeb7a45a6bc8be1486c12b178ad181a8b4404100a53021f283d5ec9b1e67b7e9cffad2a0dc2c07007065a2a9043390262a8dc9b077bd2246e5f1deb75f62f900abd755744cbc07e1f64761231fc597531ea218701f4380c6148c3edaf1621c888239d79c89e0251e10598462f85adc256f96512a2daa8a8925cc37543e56c60d6ddd7bb76de07c0fe802c60ec4ff2ac6fe66d2e561ce87d001562f7d2d5b275a15cb12cfd569c3bca8cffb087c7ca323002d85546eb261acdecfe421dbe0b4955ccb81ea86ce7cfb3a2b9ba736afbec177004f70fc03cc8255c0202fdab9b38072964477002587fe3a66e3307f27f99fcfb3f6fe13c6bf89d1c14043779db78c339830e2f350639ff4e70a0d4a9e5cb46f927297bd2fea1c20090eaf21ee23d032c5549cf0888c4884dd7a7207925750fb33dcd59b00f39f328a2b15df8f4208af9475f88c528ab01b66614d1706abaf6246d8259587f23ee548ba33b0594c019d5445f3fabe8beb27b57b83a2a82a5ab707a66782f0274515303d09da00f2d7ee4e37920ea685f3afad546b2bf7f48e4aa89f354d404b35f5b15f85bafa2e9827f6509a977cf7beb585d5706b94747393eb959d10f34a6f884786db4dc26f4dbdab0607ae492e03714a0291af557f12b3f8207eeb16bbe40d18b3c462c00687ec75b9f42aa50100022a5248d49df5eb4b9462f3d1dc1cf4d58a258f7f8201ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b507da450083b0e5dccdd1b3355a067748cdca1037527f6f710ba275333625bd7bee489a89a04162bd59e2a95dbe018e7bbb24da7c2b47f57d78feb2513f1f3aeea7579f3026242c99ddf4604823f4e47757920b06f09acc87ffe633427a2c6c028a6336815709cafb420d008ca642fc404f32d49b0d0e80ee76798955d45be48aad719c1560d3b3c1a9fe6c8246037c0b6f894a86d9ceccc048b8a3058dc16c6263a0d020e13016563c9c74d128653612f5664b04f3c4c215f39d063782097d279d89dc8b9734e5ac0dd3cd3843581a8b505f5937d45fa90bcfc547242baacf13ca0a51c2cd83d3e017181417d596bdc2182f7f7083cd8bd7f3e71cd89291969985dcefa39449620af2eb07d8d6a3ea6ffb89e8a20e2d66ef63496f1b0210cf7bce1183ded93d5e089ce59512d2cdfc23d0a695144550b59e0c9f106e793984d145cea423efa84d01f2326d3baa77e40aa1877aa7ddc8c59476719c5d577985f646d5f36dcbd1a8e1125a68614f90ab7408427dc2b39ce0e5b7e4f13f1228f7321175dedc9573a3f64fa33dc31e62a7ae98ab3755953d2921328d106308b45e61e070818559360651e4476cb6a79fa65bdff750afacd125f5b57030808040d6e0d858e816268bd7553e8d26dadc14febb722ab27ce4c614b417aec29c44dadf1a70018da2a3e95b81fbd2a1fae515f77c5c8ada406d4c3ad8c3138084a7b962bc0dae98fa96cc22092f6db8d93a60f459f3fdc467a85b1b90b5e31c914f8de96a2ebad80de87a07fd6b59e70220329272469c755d5e7be27b96fb124e3ed9766469406e76d625635d0c63220d7fc8cdefdfbf0d46221b02a16ffeff9369c0fd0bb494be6d099e3839c1319c88bfcadc37d2bae1b1831429a9cf62921339ee15a533d95da34d932c35677b44070d44e4fe7b1e1188cc838f5b316b4942070c86776129065244975b26f7aa200dc04cb153e44c8c627baf50409b4f6a2d9d54ff194034daeaa913575b8da3a36fc5960480d289401b36e26ad3a6f58e08d216400eb471397d1aec64f969f00469d555e94232fde28bd4aae993f17b86b5300982eea19dee77c8165a993415efc8ecc6ea985123d71241edb299766681042369933bf0257ae4e18244bad553551faff98cff734184535c23eb446bb0c44f90d014ccb9ddc33066612acc6be8bb5fc7319ae69c148cf625f8d725a4515b59f9faf58088d14067b8bdd43dcb713044ab83ebd667882bf400543f1805912009805126e7fdb51fe1f6bc91417e0694c9857a76a38cfd63724c87ed27d6d8ed9680bc7c36077d55b60a02f2f5f64af49a15b58241d1fb33a9a012ea7cb94719b09c8926685e827c1f37b57d693997a3e3ca01f76cb16287d74b5875f4ea28f3d51e6d01b95187c055121c1e5a4b3e8b78938206be19bb167050c6a87e2fb700250534b657ccc703a4a5ced62ff95621590d28ffed3971da2c20533e1c81d8cdc6d5cb06ae3bd69c6fed5892592ebd1d434d37d858c1d8b015520ac5e97b53c9998ccbe53778b63f159ce64159d4b8cfebdd17b4366db0ee7324445f98f077a731caa6c2462ec46c570a1af8409631af9ff64e2a8a24078850fe0085ac22d926b9359d06ac435ee541ac03e35ac1e4de39530ec8c71dc3b09041965bcd4904116733869a316e79d5ac34ba9858764598c5ad3dc17bb5aca16dc8b17d968c5b2cccf7cfceb354eeee4bd98ab084f57c9856f8b1557aa89324cbac4e01b89bed148642bcca22f5748c765be04965f13f835d301fc330cae94bcaaaf72bac93a482e6c615b46d8df6f92b010a8aa5adc86ab7969c7c3d23acef6339edac3ecf3b55794ceb4ef333e93c2b5f5e23cf6703ffb1348e6e497a1e3d3112c22ba79048d3b6a4411d085bd02f8c48a961e66933b179cf4e9654c94f3750fc253b184b176ec57e7ff2d26fd4902199d6d34b29c404b41be919e84ff1cd36f1f2292ceadbfd9df77868c9c92646f90bd242056f544eee599c6ddb9dc76a8e62461cf35897bae0f545f726db2e57f8a786871a5b841e0f774ac17e050712442ad4c9171255991eb6559dccc1677d6d9cfe9cf2d03fb28390ccffcb97d042096470d6feffda4715687bc3fce20fc4b160f1e9f941316d7ee8f73f95333bbf3c956be158a5025557370aea21728a9771119124b493d21a5d906b6be7c0269aac224e55bd1b40dec48e561cb6f3f0092b46ac43bb7f681b5bd25ae376530784d6d6db622f214e936b3126dad38291c3b798c55e1402062138e15a165574dc829fcc90c808d7f2a6fc4367057fd06736e9960c5a3f4a39c0ccb28395088d78a9b6c94233c8578daa8feb63c839c095963370fc3010fb9a1d5d985765ab8a209ba550d8fc0a2f467a44a210ac16632f7a9dd952a9fb052d9334e6f9989b09a4c428d83f02aee3e788d62d441fe4ab5b91adb48f35d50887b42ce6a649b94db9bd7898270a62d0fcdb18efd1e1f8c85529e47b4dc615aaabfd60f23474067f30190b5d24d9cfc4aedaa0f6c597b1483da87d37f5d87e354a52b357355e53c4568d30e7e364f71466542a82c0037340ac0087c6e1b10723a0b678c4e422839d5c0ae00a4e07716f92a60d0778ff144630b58ade7da714e9452faf36503aa3512b0f86520151b0de95ee02c823a958dced51a4d464cd3cfba05dd4b359aeaa4650d642987d8050befbdb2aa37ae8ca57159761a9016ab858d4b85f92efc2691c213408292a7f5d4f2aac6143818c94c6b96b5b445690b047bee072dc33cff04b4480a9fa07fbd2ea4380a817e7a149123a591d2bd8e60b24280a21b78b4df4cce7670bc941647f2697159e10ff133bb09c36bb9cf0bf60e0014ccbc0769a7f246119acb24e0239bb83f785be3d1c738ad1292b86798728d067bbf2ca116d7d83816427e86766ccb6aa304ba5ba7494000b4ec9d5890835e562d913fe7ab779de83ec3a5287f587f1650bb62e370b93080c66432220f074c6529da692b91c8b83e98dd17e9e75beb879ba7ac1c86d4cc30807a34c3ffa2abea979e675fe4244fedef4f1e6c7f033c3c83f2502a9f60e7a7576d4df685be39f16e22b6ea92b8ee838b7b138f3957ba778cf28cc054b96c6bf47fddf5272d960f1dedd6dedff02d2fe18b118b742ad856034f3a5acb521b63de3a8e34992b34b3d912da2b0307c491eabd0d5951e030c3cf923e01956ff3f31bd32c6ad4e20eebeb11877459894c175bd0233c53a8edd709b2c387871b53b7720a674c98b2b4349ae1bce9512810abbab84c96b85a1d988799a7fd714f7137ab780139840b71d1c4e2dd05ee096396c306210e1fefc5e69fc12e451559689329d01a0200f256354ae5979092daef5fb26ce310d7103fe498d0863afdd73447e14b396686a82e10e979e6cc35e1768cad2d463d14798a748fdd482732cd0f461b0fe3c2c26d583cb74fdc89674b7bb8c84019453be63a55091e0c974a04e51a0dc861348705b6f4bebcbcd04e0acd6a83a897546a24d55ce29d6797b00e873940a59b141cfea57a7c7d998368e19c0355be2f4a91e7a908eb599450699314bac7a42427e75c47eaa93bd204bb90899ee91b8f027b6bfcaa1780aeb654d54d4d7909a82f901ae19ea5d7da4a52827dc60e707b86ca028c3689082d5eb944b346618983e7c1b3124751d257200f229adf3a94e8c53ce5d463552f273de3fc90949d7dbdf152321b2b5721f6011d279c561af41b6ed0c51184a86ce55422c5bcd821e21254c174f5e932f74965c68c25f89f167593c1ac8047b88c87e20d6f9e538fe57040141ebe3258cda5ded49ac4ee69a74fc3de12d1f6beb52246dd542dbd566336f2ecce2a5921fbb747f23102efa215684f922eb0cdd97841f6ff1700002853abfe114960ca93607c280274373c102788be70686be6b8e0a2b458591d4dfad05321c80ea7777287c4922dfcdc5ab0cb363e2c4f6cf942a63658a97ea4846d04bd9a9454cdf87df90733eac04599c5f32903530a08000675a3ef5c8ad02ebfe8b504bfaf731f66ce4cee740a1cae342c5e7cc387dd4eff8dd0f39c2311306be43162b961c4516f57260b1227c57cb3a4a0970e59f4df99753efabafe82997b0cf0ade2c87a2afcc99304ddfeffe92e37f76739c14b694efbdefa70a8eaf5fb302d114074107b031e241ac510413604e17530ed837f57bc4f96cd717bb42c8837fccde53d9d3998f2fa420075cafbfa7a6242b2cb1b185c47cf816fcdf08a0cd4b2c3a9a2cd8cbbf72b7c4e034f89d1fdf3469f5931a1ed77fd749ad8967ade2b33cd662c97b8995f8232f6d7d104507d5542d2fd5b13dd23ae74a9d2249a20d398b4a4951c9193482de767ba73e35d00f49a0c7fcd99e73a9bc8475d1527fdb000ea70060b93bcd558e68f0cfeda0ba86e555a30b0dbf2dba2c032c5884af3f84c8c4c2782a0e205ea916b866d6fee1f7654d65acde4d02939e071e282059dc9cbc8895bb48cc84b101a480059fd880f367cf49bb115a05317c612a1a0494fba96c20291b7bf389fd2657f3c0617600abed9f52df799d7743e5ae309081a73ac95d001fa3405c062478410acee56a903b08df929c79df223a41e59c790e7bb2b10a07ab9f1602e75c3af86283238f2c41c41abda2e619bd1fa8a29447b100913ead94709eee5d92093f05328f1a5508f832e5f4d2b29d3e1857e18f89ba2e120538c3152025c174bccc32ee39f10b1799b7611326c168e70756c5461b5a9ced98de24723e304cce45f660df29e777001d79d797e68786721c474d72c8605f7ccb91e362dcd2b5ed14ceb15201cf2b25d56d466cb221253125e864bf0129b20c9bb1b6108540384c0410016d90f277e0bd3a9332f8964c4fb765c393623fc984a87021bfb9abfa3b0c0a393bd65c5535d3bebbc2475fa00df32fc4edfc6d42357e0a4e63c92fcdffa8da691ba1792c7e434041bf756fb01b54c4768adfed5229c4f8a9d1b661aa721de80a8f3922e42791ae9f9b63402a0dc78a14a68e3b5cd81a8737a8f1e5a254229731a9e6832d9b2db24b68f1a4aabb6204f62720816d01ca1e58dbad3dc81ecbbd3df9849fa15731cef561364789449865b7bb8c50b08aaf34610fdb6cb76cd700801a5ff9018937fd82bb8a02d3e4d12f2d8ee64098e91150cc0afe5a2e152bd94aa69f390035ea39fe869d03845c36bdc4cdcacdba8858285cd990894f585da2a803a9c8c4cb2bb4cd7c4b9ded1a4313231cbfa7b4e67593661ed3a911afecfc7374d41b4fdca1f2e891e03f9294aa325bd8679efc9ec2a72e921bec65ca1ceed505f0dc08d684f6a4076d5eca8429f1053eb0a07dfe9778ccb20e7b899c0556d040d1e78d316b933096f797a6a0020ec27401447aed60a008bc4bd6203f71bd75e959463f961978071411c53449050fc860bc25c289067f6fba6ea6ce03afd04b166698db3bb87745303714d128d7fd9e86bc6376f824b34c903b82dad7dac62924b20cf004d5e63c52685709803f6c13c8483bf567ddfbc7d40494a63adb42798647106405c90799f5e7936f1e688c26699a902cf3fca6289c9d3dc42c9b4266543ecf6eae2504b1b70e98cb115636e1d55fad1390fcc17f86173b7727784719fd550e104b04f7a3fd7967077456dd6afd03f9e5aa40e0e05c571c45cbbb94e018c517745e2da55d188ce743f2d0813c42895e87e88984a089131d2383ecad5fe816e280d014f1a40256c5f4bd0e0ed0c83acce90f4a9041d3cbfafcd0024a1c8f3a4b29355f7b95f4ba272a6f400f78f414949354bda327e0deda03f5221f63d83088ea4b65fed25a17f11ad9de179a8fe2258cd45e5227d808e4d526c256c5461c8ec7e65d74d7ed9ce7254ed73c585d3364973d399cb30e98c7285ded32363f8f3f0d0f31fb5f81892b0dc6b4c597941a5328bd388a52d032ced47087a9d6c7948d0e9933f58f7ff88c2afb3f538fc8ea13b6f1d860f5b75248aa09cc0950bbbc3a6925b6fdd9d695edd287ff8051ec3c489efee9ddf395a2f472efb4ad65d5250be4cacb29514a5552730b3330e47d5480c817fff3f8618c18cdfebb9318e0cf1b16e9e77d0b4d6b897e1af6c0749b665d44df9663c27d19628c94d59375ae1a6ab527ad32cf0a4c1b0994a19bf90c4352e26817c1fc3ef97b633a21af010d298d03f7bcffcfcd87915bf5b7dfd6791fbaf13975917be96a0d6c15165f3e1c5c796d2a08d931754f24a60f692d0a4472f5d27d49456a4b1ca993c0e3afd7fcb0d20c1651ab886ac9c8fc08fd7b659854049a07a559574f5777ed1ec3dec7f4f1c0d84ec84eaf25b52b7468d6d549d094059cc43dacef37ab51fedcce14a414dd2d142d0d70b71062b26ca7dadfdd71dffe72282cb1e9135d4cc9390e5bea31f177c689bf2421811836978fc1f9fedd72022072b3488d511cb3b843d460bae809c8fccde856ada14f7fc087080ca16e95253815f358eb6e866a692908f08ff0c5d85c102c2fdd589f5336f8a95b2f3b7deb5c9993d7ffe808bf086d396040ccb997f815c00340e319946dff858f5d39858ea3a7f6dcc25c92a6315f0fcd1fc96349b5cd724bcc81189aaaab03d977e69be3ad4223a2e56ab4d452b80558e688d968cc03dbe19977a25ec579c1f086f3ebe3ad4223a2e56ab4d452b80558e688d968cc03dbe19977a25ec579c1f086f3e151f47bd3c9baffc62e71cf619be39157c8f4ecddd639587f97b83b6f21f9626120913b5749249087e935cf1d2fd91ebfce7037bb81cd7bb362393b80c31921dd5b632ebb34a5bd3673372fa80d9f23a70ef67333e2e1568e6a769cec2167683d789ae97c285ef7be3256747756379262ab04d6dbc91a4aabe41e73560c77d1ecad2cbeb85d3dbf9ef896eb730910eb150691a1d0194c1318c4917aa8f4fcd971dca9d0f603dceb2e22b965f089dc86e4a7415e89bc99688dec0dfa5aeb26f87194e84373e0ccab70836493e0c749b7b6ea2ea819555c95ddcceac6b03a720ef0cebbf4119e4b9877adf567cd3f91bafd162f3f0424f1105820aa50242cf8da7ed434e61dceeb3c4b238f9f339b5f891a9441d87b28dec2b8d537e1343d15999c4d6c1e1fdbc2d9ada659bd1f5de97923a6d78f9c1f877d089ff62f956c74738720575822c17081c7413eefc827eb6700893316d096b25b023bb42d9acce7650c3f11ee33eb5046ca29d8dd2ce44d2c41fa493353db14345284759f0190ea328fc35e06d8bfc453438dac56d8b5aa523f6619907da8861e6f3a914d55c053dc6800a52a08d0f1e2ccc6037f64cadb071f1d8568062156f2024fb389ef8fc024b0d44734dbffd963197d1977c86398c3c1260c2ea7065ca82621a376d28da093d065cbb6fcb25b9cb1d1f373dd550f773000074f0fc44bd22fcb3ea728829f0369d656f91ab2efb8f1f85e2284905f729a51817f6826a6211386f25f8324b6df3f6d16e6712e90fee80ff5701e3488a4970143b131f5201e9d9cdeccc8780b9b18f772c5e8d5319fa9ba829a77b46905ecff6634fe487407dda9048113ee53aa988788f26ed579c71192662c1a9da1641cdaaae3a5b73565012cb80488359b4902af88497ad4f5533547055fdaecc914948254132e8d29661b2454b622616115af74c9a045f4bc678fbdac3c3df4f198cdc33d1bc9ad05a994aa8697dba3e4e4a1960b53458237f441a0578952e43bb866ceb18ebf6621e80d7f96644cde9414e7031dc7222607a570da9c30003e12b8fbd838a742980ff564ffb4764c6cfaf521df7733e30e9ad3f63e5e7d10feca1746be07ae5425f9e9a2821a59aab1c046b724b40588b3e060f8ba93d229efc5944457f3c25d1834f193e96f8e917dd03ecb9b227a2015d56a669d4196d1c31a7cf9232c007200f89f34325cb9bac176a9fccf6d06f6dc09f442681b84273162c7894ef35790e2ec4e62cf6e36507caa3b791b28a8fde70eb8f74b894692e038938a08d5dec1315fe1ff83774ed0679eac1928e59b2b973b769ae1148bf889208573de951b8d366a572a704d9d6a7147c7c484c8084f2da110864989b88f03751542092e26280c31809f3b457e4d3dd2124e0e5e8a22e690e11616e4f008ebf4871010c1879c99d02bb1f7cfc18b34cd6a6a20f69b3d8b6a6160340cad054112ddd4e782143017e64070c7881ed9e8a694f1afa705bd016f8caf98850fb46ee86b5aa8155a409d0fe66ad95a643f6199266b0bdbdf36c3655295c804ee1de20d143e33aa72d31e78ea1e2cbe157f970c26efa8e5ba00c984f17ae6bf31049f1b11144e58d5907d9a219e8d6aa246335a34fe012d973fe6cb4e4716f37fb208dc37186bd4fe18042a64c4f87293507c4b4ea03e639a8f088513cdf620a6b8454206ae0f9e4542ebed2d9b5f7745d4b8aede2c91eec30038804e4d201326d0131ea372c37bf6ffb2c6b50db23b87b8a67505b68e751e0a40013d0c44cba77d1cd4eb83fb4dec3609616d09a82c48388e9720c779b5709b2e1d44892754b6522dabdf9c68c50e97cb4672f56cfa9070593c5887ed526b5ab6fc3ffade502858ebdb8995257ab8224aed7532a575b5651a3af4e8f5560d7a2c8920d7d66dc6ed5904139ab9acc1100b47865824aac5f562bfe8f5728b6511970444658dfc768e8b8122f9c049eae6c2830bff4240e1bd27be100301337a4ae971acd951d7ec57cc86ab0003bacbd2fc42e0094ff86bbb5e0c2efbd403ca1c8ac4712d1ae119b58375f4c0b1c8fc80280329d047a76e04d23e5bfbb6957b464dea4a66bdbdad84a7ee8be292bf009c8017f3422abf317348af6ad6163f8c58ed7ddc759c3aa96c176faeca0fa9265da25906e82c655f232cf01365945ab22fe3ae193b333579b63fd2f318309d1310c535a5b7af48d14fc1d2d68e6ef0b3903bf5ce05691fb2efa59da9eceacdfc34b78be2053f254283240d36bd22ad2266aa33110e5e81e1f976d9097b50e26f1afd4dd7aff8ce8242af407b1e2b6eeea4379e5702e82ebff6b49742a7264fd6a24f1af9941b27e65b97089e0444b44790a4cf0ce5334d239afb326ead0c61610c8d0fe916a710340bc4609846f4b669cfc24025f3178504c2fa3a81a1b2ba0e9801090c897536115424240aerootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootpython-Twisted-22.2.0-150400.5.7.1.src.rpmpython-Twisted-docpython-Twisted-doc(aarch-64)     rpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PartialHardlinkSets)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)3.0.4-14.6.0-14.0.4-14.0-15.2-14.14.3cdbrjbN@b<]@b!bbaaA@aa/k@a^a@a;@`Z`H`4@`%@__@_E@^ϧ^x]]|@]{]S]@]@\9\j@\I[%@[[ͻ[@[[;@[M@[ @Z@ZY[@YJ_YEXWWiV^@VVUUUp=UhTUKSU"steven.kowalik@suse.comsteven.kowalik@suse.comsteven.kowalik@suse.commcepl@suse.comsteven.kowalik@suse.commrueckert@suse.demrueckert@suse.desteven.kowalik@suse.comcode@bnavigator.decode@bnavigator.deqydwhotmail@gmail.comgumsley_6@hotmail.commmachova@suse.commcepl@suse.comdmueller@suse.comsteven.kowalik@suse.commcepl@suse.compmonreal@suse.comcode@bnavigator.demcepl@suse.commcalabkova@suse.compgajdos@suse.comsteven.kowalik@suse.comjayvdb@gmail.comtchvatal@suse.comtbechtold@suse.comtbechtold@suse.comtbechtold@suse.comtchvatal@suse.comtchvatal@suse.comschwab@suse.demcepl@suse.comtchvatal@suse.comtchvatal@suse.commcepl@suse.comecsos@opensuse.orgtchvatal@suse.comdmueller@suse.combjorn.lie@gmail.comtermim@gmail.commimi.vx@gmail.comtbechtold@suse.comjmatejek@suse.comokurz@suse.comokurz@suse.comarun@gmx.determim@gmail.comtermim@gmail.comtoddrme2178@gmail.comtoddrme2178@gmail.comtermim@gmail.comseife+obs@b1-systems.comtermim@gmail.comtermim@gmail.comjmatejek@suse.czmatwey.kornilov@gmail.com- Add CVE-2022-39348-do-not-echo-host-header.patch: * Do not echo the Host header in HTML, it is not escaped. (bsc#1204781, CVE-2022-39348)- Stop removing test directories, it also removes a public module. (bsc#1198852, bsc#1198854, bsc#1198855) - removed true-binary.patch- Update to 22.2.0: * Bugfixes + twisted.internet.gireactor.PortableGIReactor.simulate and twisted.internet.gtk2reactor.PortableGtkReactor.simulate no longer raises TypeError when there are no delayed called. This was a regression introduced with the migration to Python 3 in which the builtin min function no longer accepts None as an argument. (#9660) + twisted.conch.ssh.transport.SSHTransportBase now disconnects the remote peer if the SSH version string is not sent in the first 4096 bytes. (#10284, CVE-2022-21716, GHSA-rv6r-3f5q-9rgx) * Improved Documentation + Add type annotations for twisted.web.http.Request.getHeader. (#10270) * Deprecations and Removals + Support for Python 3.6, which is EoL as of 2021-09-04, has been deprecated. (#10303) - Add patch CVE-2022-24801-http-1.1-leniency.patch: * Do not be as lenient as earlier HTTP/1.1 RFCs to prevent HTTP request smuggling. (CVE-2022-24801, bsc#1198086)- Add patch skip-namespacewithwhitespace.patch: * Skip a failing test with Expat 2.4.5.- Remove 9580-test_fails_cryptography_25.patch which is not necessary with changes in OpenSSL- Add 9580-test_fails_cryptography_25.patch to overcome test failures on SLE-15 with older version of OpenSSL. - refreshed patches - 1521_delegate_parseqs_stdlib_bpo42967.patch - currentThread-deprecated.patch - no-cython_test_exception_raiser.patch - no-pygtkcompat.patch - no-test_successResultOfWithFailureHasTraceback.patch - remove-dependency-version-upper-bounds.patch - skip_MultiCast.patch - remove upstreamed patches currentThread-deprecated.patch - remove tests from the package- Update to 22.1.0: (boo#1195667) - CVE-2022-21712 / GHSA-92x2-jw7w-xvvx twisted.web.client.RedirectAgent and twisted.web.client.BrowserLikeRedirectAgent now properly remove sensitive headers when redirecting to a different origin. (#10294) - Python 3.10 is now a supported platform (#10224) - Type annotations have been added to the twisted.python.fakepwd module. (#10287) - twisted.internet.defer.inlineCallbacks has an improved type annotation, to avoid typing errors when it is used on a function which returns a non-None result. (#10231) - twisted.internet.base.DelayedCall.__repr__ and twisted.internet.task.LoopingCall.__repr__ had the changes from [#10155] reverted to accept non-function callables. (#10235) - Revert the removal of .whl building that was done as part of [#10177]. (#10236) - The type annotation of the host parameter to twisted.internet.interfaces.IReactorTCP.connectTCP has been corrected from bytes to str. (#10251) - Deprecated twisted.python.threading.ThreadPool.currentThread() in favor of threading.current_thread(). - Switched twisted.python.threading.ThreadPool.currentThread() and twisted.python.threadable.getThreadID() to use `threading.current_thread()to avoid the deprecation warnings introduced forthreading.currentThread()`` in Python 3.10. (#10273) - twisted.internet.utils.runWithWarningsSupressed behavior of waiting on deferreds has been documented. (#10238) - Sync API docs templates with pydoctor 21.9.0 release, using new theming capabilities. (#10267) - #1681, #9944, #10198, #10218, #10219, #10228, #10229, #10234, [#10239], #10240, #10245, #10246, #10248, #10250, #10255, #10277, [#10288], #10292 - twisted.conch.ssh now supports SSH extension negotiation (RFC 8308). (#10266) - twisted.conch now uses constant-time comparisons for MACs. (#8199) - twisted.conch.ssh.filetransfer.FileTransferServer will now return an ENOENT error status if an SFTP client tries to close an unrecognized file handle. (#10293) - SSHTransportBase.ssh_KEXINIT now uses the remote peer preferred MAC list for negotiation. In previous versions it was only using the local preferred MAC list. (#10241) - twisted.web.client.RedirectAgent and twisted.web.client.BrowserLikeRedirectAgent now properly remove sensitive headers when redirecting to a different origin. (#10294) - Add type annotations for twisted.web.client.readBody. (#10269) - twisted.web.client.getPage, twisted.web.client.downladPage, and the associated implementation classes (HTTPPageGetter, HTTPPageDownloader, HTTPClientFactory, HTTPDownloader) have been removed because they do not segregate cookies by domain. They were deprecated in Twisted 16.7.0 in favor of twisted.web.client.Agent. GHSA-92x2-jw7w-xvvx. (#10295) - trial.runner.filenameToModule now sets the correct module.__name__ and sys.modules key (#10230)- Add patch currentThread-deprecated.patch: * Do not call a deprecated method which causes reactor startup to abort.- Fix Source tags- Drop true-binary.patch which is not compatible with python310 - Some rpmlint cleanup: * Deduplicate docs * Remove she-bangs in test files * Remove empty doc files * Filter test certificate warning- Remove h2 < 4.0 and priority < 2.0 version restriction. (boo#1190036) * remove-dependency-version-upper-bounds.patch- Restore no-pygtkcompat.patch due to boo#1110669- typing_extensions is now required- Update to 21.7.0: - Python 3.10 beta is now a supported platform and should be ready for the final 3.10 release. - twisted.web.template.renderElement() now accepts any IRequest implementer instead of only twisted.web.server.Request. Add type hints to twisted.web.template. (#10184) - Type hinting was added to twisted.internet.defer, making this the first release of Twisted where you might reasonably be able to use mypy without your own custom stub files. (#10017) - Patch incremental-21.patch removed, because included in the upstream tarball.- add incremental-21.patch: support newer incremental versions- Update to 21.2.0: * Features - The enableSessions argument to twisted.internet.ssl.CertificateOptions now - actually enables/disables OpenSSL's session cache. Also, due to - session-related bugs, it defaults to False. (#9583) - twisted.internet.defer.inlineCallbacks and ensureDeferred will now associate a contextvars.Context with the coroutines they run, meaning that ContextVar objects will maintain their value within the same coroutine, similarly to asyncio Tasks. This functionality requires Python 3.7+, or the contextvars PyPI backport to be installed for Python 3.5-3.6. (#9719, #9826) - twisted.internet.defer.Deferred.fromCoroutine has been added. This is similar to the existing ensureDeferred function, but is named more consistently inside Twisted and does not pass through Deferreds. (#9825) - trial now allows the @unittest.skipIf decorator to specify that an entire test class should be skipped. (#9829) - The twisted.python.deprecate.deprecatedKeywordParameter decorator can be used to mark a keyword paramater of a function or method as deprecated. (#9844) - Projects using Twisted can now perform type checking against a Twisted - installation, for example using mypy. (#9908) - twisted.python.util.InsensitiveDict now fully implements MutableMapping. (#9919) - Python 3.8 is now tested and supported. (#9955) - Support a coroutine function in twisted.internet.task.react (#9974) - PyPy 3.7 is now tested and supported. (#10093) * Bugfixes - twisted.web.twcgi.CGIProcessProtocol.processEnded(...) now handles an already-finished request, for example when request.connectionLost(...) was called previously. (#9468) - Twisted's dependency on PyHamcrest has been moved from the base package to the new "test" extra. Consequently the test extra must be installed for Twisted's test suite to pass. (#9509) - Fixed serialization of timedelta, date, and time objects in twisted.spread. (#9716) - twisted.internet.asyncioreactor.AsyncioSelectorReactor now raises an exception if instantiated with an event loop which is not compatible with asyncio.SelectorEventLoop. This fixes the AsyncioSelectorReactor in Python 3.8+ on Windows, where in bp-34687 the default Windows asyncio event loop was changed to ProactorEventLoop. Applications that use AsyncioSelectorReactor on Windows with Python 3.8+ must call asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy()) before instantiating and running AsyncioSelectorReactor. (#9766) - twisted.internet.process.registerReapProcessHandler and ._BaseProcess.reapProcess will no longer raise a TypeError when processing a None PID (#9775) - INotify will close its file descriptor if a directory is automatically removed by twisted from the watchlist because it's deleted, avoiding orphaned filedescriptors. (#9777) - DelayedCall.reset() is now working properly with asyncioreactor (#9780) - AsyncioSelectorReactor.seconds() now correctly returns an epoch time. (#9787) - The _connDone parameter has been removed from twisted.internet.abstract.FileDescriptor.loseConnection()'s signature in order to match the signature in the base class twisted.internet._newtls.ConnectionMixin loseConnection(). (#9849) - The Gtk3 reactor now runs on Wayland-only sessions (#9904) - Descriptive error messages from twisted.internet.error are now present when running with 'python -OO'. (#9918) - Comparator methods such as eq() now always return NotImplemented for uncomparable types. (#9919) - When installing Twisted it now requires a minimum Python 3.5.4 version to match the version used with automated testing. This is the minimum Python version that we know that Twisted works with. (#10098) - Drop patches no-pygtkcompat.patch, python-38-hmac-digestmod.patch, python-38-no-cgi-parseqs.patch, twisted-pr1369-remove-pyopenssl-npn.patch, twisted-pr1487-increase-ffdh-keysize.patch and test-mktime-invalid-tm_isdst.patch as they have been merged. - Refresh other patches. - Add no-cython_test_exception_raiser.patch to avoid another dependency. - Update URL and make use of sitelib, not sitearch macros- Add 1521_delegate_parseqs_stdlib_bpo42967.patch to overcome effects of bpo#42967, which forbade mixing amps and semicolons in query strings as separators (https://twistedmatrix.com/trac/ticket/10096).- Relax the crypto policies for the test-suite- Add twisted-pr1369-remove-pyopenssl-npn.patch to support pyOpenSSL 20 - Add twisted-pr1487-increase-ffdh-keysize.patch to support crpytography 3.3 - Fix the update-alternatives setup * manpages were cloned but never registerd with u-a * install alternatives as master and slave links now- Add no-test_successResultOfWithFailureHasTraceback.patch to skip sted.conch.test.test_keys.KeyTests.test_fromOpenSSH, which fails. Upstream suggests https://twistedmatrix.com/trac/ticket/9665, but it has never been confirmed, even less fixed.- Update to 20.3.0 * drop Python 2 * twisted.news is deprecated. * twisted.conch.ssh now supports the curve25519-sha256 key exchange algorithm (requires OpenSSL >= 1.1.0). * many bugfixes and other miscelaneous fixes - Fixed update-alternatives mechanism - Added true-binary.patch - Dropped python-38-xml-namespace.patch - Reapplied python-38-hmac-digestmod.patch- %python3_only -> %python_alternative- Update to 19.10.0 bsc#1162424: * twisted.trial.successResultOf, twisted.trial.failureResultOf, and twisted.trial.assertNoResult accept coroutines as well as Deferreds. (#9006) * Fixed circular import in twisted.trial.reporter, introduced in Twisted 16.0.0. (#8267) * The POP3 server implemented by twisted.mail.pop3 now accepts passwords that contain spaces. (#9100) * Incoming HTTP/2 connections will now not time out if they persist for longer than one minute. (#9653) * twisted.conch.ssh.keys now correctly writes the "iqmp" parameter in serialized RSA private keys as q^-1 mod p rather than p^-1 mod q. (#9681) * twisted.web.server.Request will now use twisted.web.server.Site.getContentFile, if it exists, to get a file into which to write request content. If getContentFile is not provided by the site, it will fall back to the previous behavior of using io.BytesIO for small requests and tempfile.TemporaryFile for large ones. (#9655) * twisted.web.client.FileBodyProducer will now stop producing when the Deferred returned by FileBodyProducer.startProducing is cancelled. (#9547) * The HTTP/2 server implementation now enforces TCP flow control on control frame messages and times out clients that send invalid data without reading responses. This closes CVE-2019-9512 (Ping Flood), CVE-2019-9514 (Reset Flood), and CVE-2019-9515 (Settings Flood). Thanks to Jonathan Looney and Piotr Sikora. (#9694) - Add python-38-xml-namespace.patch to fix dictionary mutation under Python 3.8 - Add python-38-hmac-digestmod.patch to add digestmod parameter where required - Add python-38-no-cgi-parseqs.patch to no longer import parse_qs from cgi- Remove mailmail when only building Python 3 flavour- Update to 19.7.0: * The callable argument to twisted.internet.task.deferLater() is no longer required. (#9577) * twisted.internet.utils.getProcessOutputAndValue now accepts stdinBytes to write to the child process's standard input. (#9607) * Add new twisted.logger.capturedLogs context manager for capturing observed log events in tests. (#9617) * twisted.internet.base.PluggableResolverMixin, which implements the pluggable resolver interfaces for easier re-use in other reactors, has been factored out of ReactorBase. (#9632) * The PyPI page for Twisted has been enhanced to include more information and useful links. (#9648) - Refresh patch: * skip_MultiCast.patch - Remove merged patch hyperlink.patch - Remove patch 0001-Prevent-CRLF-injections-described-in-CVE-2019-12387.patch - Remove patch PR-1147.patch- Add PR-1147.patch (bsc#1138461, CVE-2019-12855) In words.protocols.jabber.xmlstream in Twisted through 19.2.1, XMPP support did not verify certificates when used with TLS, allowing an attacker to MITM connections.- Add 0001-Prevent-CRLF-injections-described-in-CVE-2019-12387.patch (bsc#1137825, CVE-2019-12387) Prevent CRLF injections- update to 19.2.1 (bsc#1137825, CVE-2019-12387): * Prevent CRLF injections described in CVE-2019-12387- Update to 19.2.0: * twisted.internet.ssl.CertificateOptions now uses 32 random bytes instead of an MD5 hash for the ssl session identifier context. (#9463) * DeferredLock and DeferredSemaphore can be used as asynchronous context managers on Python 3.5+. (#9546) * t.i.b.BaseConnector has custom __repr__ (#9548) * twisted.internet.ssl.optionsForClientTLS now supports validating IP addresses from the certificate subjectAltName (#9585) * Twisted's minimum Cryptography requirement is now 2.5. (#9592) * twisted.conch.ssh.keys can now read private keys in the new "openssh-key-v1" format, introduced in OpenSSH 6.5 and made the default in OpenSSH 7.8. (#9515) * twisted.web.client.HostnameCachingHTTPSPolicy was added as a new contextFactory option. The policy caches a specified number of twisted.internet.interfaces.IOpenSSLClientConnectionCreator instances to to avoid the cost of instantiating a connection creator for multiple requests to the same host. (#9138) - Remove merged patches: * openssl-errormsg.aptch * openssl111.patch - Add patch to tests for new hyperlink: * hyperlink.patch- Add another patch for openssl 1.1.1 (from upstream git): * openssl-errormsg.aptch- test-mktime-invalid-tm_isdst.patch: don't pass invalid tm_isdst value to mktime (see also bpo-15750)- Add no-pygtkcompat.patch to avoid dependency on Gtk (boo#1110669)- Version update to 18.9.0: * Fixes for the 3.7 python - Remove merged python37.patch - Add patch openssl111.patch which fixes tests with new pyOpenssl * Asserts changed behaviour- Do not write bytecode stuff when running the tests- Add BuildRequires python-tz, which seems to be required to test suite to pass. - Also, add skip_MultiCast.patch to skip tests requiring full netrworking stack.- Add missing Requires.- Fix the dependencies to match up upstream setup.py - Run the tests - Add patch to build with python3.7: * python37.patch - Add missing dependency on pyamcrest - Remove unused patch lp1102685.diff- update to 18.7.0: for full list of changes please see https://github.com/twisted/twisted/blob/twisted-18.7.0/NEWS.rst- Add python-service_identity Recommends.- update to 18.4.0 For full list of changes please see: https://github.com/twisted/twisted/blob/twisted-18.4.0/NEWS.rst- update to 17.9.0 For full list of changes please see: https://github.com/twisted/twisted/blob/twisted-17.9.0/NEWS.rst * mailman is only in python2 package- Adjust Requires and BuildRequires - Fix rpmlint warnings- remove alternatives altogether in favor of versioned executables - clean up spec file - update to 17.5.0 * too many changes to list, see full changelog in NEWS.rst- Simplify alternatives handling - Fix RPM warnings- Change to singlespec approach- specfile: * make twistd the update-alternative master, same as in the python3 version (bnc #1001523)- Update to version 16.4.0 For the complete list of changes plese see https://github.com/twisted/twisted/blob/twisted-16.4.0/NEWS - Update to version 16.3.0 For the complete list of changes plese see https://github.com/twisted/twisted/blob/twisted-16.3.0/NEWS - Update to version 16.2.0 For the complete list of changes plese see https://github.com/twisted/twisted/blob/twisted-16.2.0/NEWS - Update to version 16.1.1 For the complete list of changes plese see https://github.com/twisted/twisted/blob/twisted-16.1.1/NEWS - Update to version 16.1.0 For the complete list of changes plese see https://github.com/twisted/twisted/blob/twisted-16.1.0/NEWS - Update to version 16.0.0 For the complete list of changes plese see https://github.com/twisted/twisted/blob/twisted-16.0.0/NEWS- Update to version 15.5.0 * This is the last Twisted release where Python 2.6 is supported, on any platform. Python 3.5 (on POSIX) support has been added. * This release introduces changes that are required for Conch's SSH implementation to work with OpenSSH 6.9+ servers. * twisted.python.url is a new abstraction for URLs, supporting RFC 3987 IRIs. (#5388) * twisted.python.logfile is now ported to Python 3. (#6749) * twisted.python.zippath has been ported to Python 3. (#6917) * twisted.internet.ssl.CertificateOptions and twisted.internet.ssl.optionsForClientTLS now take a acceptableProtocols parameter that enables negotiation of the next protocol to speak after the TLS handshake has completed. This field advertises protocols over both NPN and ALPN. Also added new INegotiated interface for TLS interfaces that support protocol negotiation. This interface adds a negotiatedProtocol property that reports what protocol, if any, was negotiated in the TLS handshake. (#7860) * twisted.python.urlpath.URLPath now operates correctly on Python 3, using bytes instead of strings, and introduces the fromBytes constructor to assist with creating them cross-version. (#7994) * twisted.application.strports is now ported to Python 3. (#8011) * twistd (the Twisted Daemon) is now ported to Python 3. (#8012) * Python 3.5 is now supported on POSIX platforms. (#8042) * twisted.internet.serialport is now ported on Python 3. (#8099) * twisted.logger.formatEvent now can format an event if it was flattened (twisted.logger.eventAsJSON does this) and has text after the last replacement field. (#8003) * twisted.cred.checkers.FilePasswordDB now logs an error if the credentials db file does not exist, no longer raises an unhandled error. (#8028) * twisted.python.threadpool.ThreadPool now properly starts enough threads to do any work scheduled before ThreadPool.start() is called, such as when work is scheduled in the reactor via reactor.callInThread() before reactor.run(). (#8090) * Twisted Development test standard documentation now contain information about avoiding test data files. (#6535) * The documentation for twisted.internet.defer.DeferredSemaphore now describes the actual usage for limit and tokens instance attributes. (#8024) * twisted.python._initgroups, a C extension, has been removed and stdlib support is now always used instead. (#5861) * Python 2.6 is no longer supported. (#8017) * twisted.python.util.OrderedDict is now deprecated, and uses of it in Twisted are replaced with collections.OrderedDict. (#8051) * twisted.persisted.sob.load, twisted.persisted.sob.loadValueFromFile and twisted.persisted.sob.Persistent.save() are now deprecated when used with a passphrase. The encyption used by these methods are weak. (#8081) * twisted.internet.interfaces.IStreamClientEndpointStringParser has been removed and Twisted will no longer use parsers implementing this interface. (#8094) * #5976, #6628, #6894, #6980, #7228, #7693, #7731, #7997, #8046, [#8054], #8056, #8060, #8063, #8064, #8068, #8072, #8091, #8095, [#8096], #8098, #8106- Make "trial" the master file for update-alternatives, since it is the only one that supports python 3 so far.- Implement update-alternatives in preparation for python 3 version.- Update to version 15.4.0 * add dependency on setuptools * lore removed * please see the NEWS file- change dep from python-asn1 to python-pyasn1 (renamed long ago)- Wrong dependency rpm name, should be python-pycrypto- Add missing dependencies on python-asn1 and python-Crypto - Update to version 15.2.1: * twisted.logger now marks the `isError` key correctly on legacy events generated by writes to stderr. (#7903) * twisted.logger's documentation is now correctly listed in the table of contents. (#7904) - Changes from version 15.2.0: * twisted.internet.process has now been ported to Python 3. (#5987) * twisted.cred.credentials is now ported to Python 3. (#6176) * twisted.trial.unittest.TestCase's assertEqual, assertTrue, and assertFalse methods now pass through the standard library's more informative failure messages. (#6306) * The new package twisted.logger provides a new, fully tested, and feature-rich logging framework. The old module twisted.python.log is now implemented using the new framework. The new logger HOWTO documents the new framework. (#6750) * twisted.python.modules is now ported to Python 3. (#7804) * twisted.python.filepath.FilePath now supports Unicode (text) paths. Like the os module, instantiating it with a Unicode path will return a Unicode-mode FilePath, instantiating with a bytes path will return a bytes-mode FilePath. (#7805) * twisted.internet.kqreactor is now ported to Python 3 (#7823) * twisted.internet.endpoints.ProcessEndpoint is now ported to Python 3. (#7824) * twisted.python.filepath.FilePath now has asBytesMode and asTextMode methods which return a FilePath in the requested mode. (#7830) * twisted.python.components.proxyForInterface now creates method proxies that can be used with functools.wraps. (#7832) * The tls optional dependency will now also install the idna package to validate idna2008 names. (#7853) * Don't raise an exception if `DefaultLogObserver.emit()` gets an event with a message that raises when `repr()` is called on it. Specifically: use `textFromEventDict()` instead of a separate (and inferior) message rendering implementation. (#6569) * twisted.cred.credentials.DigestedCredentials incorrectly handled md5-sess hashing according to the RFC, which has now been fixed. (#7835) * Fixed an issue with twisted.internet.task.LoopingCall.withCount where sometimes the passed callable would be invoked with "0" when we got close to tricky floating point boundary conditions. (#7836) * twisted.internet.defer now properly works with the new logging system. (#7851) * Change `messages` key to `log_io` for events generated by `LoggingFile`. (#7852) * twisted.logger had literal characters in docstrings that are now quoted. (#7854) * twisted.logger now correctly formats a log event with a key named `message` when passed to a legacy log observer. (#7855) * twisted.internet.endpoints.HostnameEndpoint now uses getaddrinfo properly on Python 3.4 and above. (#7886) * Fix a typo in narrative documentation for logger (#7875) * tkunzip and tapconvert in twisted.scripts were deprecated in 11.0 and 12.1 respectively, and are now removed. (#6747) * twisted.protocols.gps is deprecated in preference to twisted.positioning. (#6810) * twisted.scripts.tap2deb and twisted.scripts.tap2rpm are now deprecated. (#7682) * twisted.trial.reporter.TestResult and twisted.trial.reporter.Reporter contained deprecated methods (since 8.0) which have now been removed. (#7815) * #6027, #7287, #7701, #7727, #7758, #7776, #7786, #7812, #7819, [#7831], #7838, #7865, #7866, #7869, #7872, #7877, #7878, #7885 * twisted.conch.ssh.forwarding now supports local->remote forwarding of IPv6 (#7751) * twisted.mail.smtp.sendmail now uses ESMTP. It will opportunistically enable encryption and allow the use of authentication. (#7257) * twisted.web.static is now ported to Python 3. (#6177) * twisted.web.server.Site accepts requestFactory as constructor argument. (#7016) * twisted.web.util had some HTML generation functions deprecated since 12.1 that have now been removed. (#7828) * #6927, #7797, #7802, #7846 * The resumeOffset argument to twisted.words.protocol.irc.DccFileReceive now works as it is documented. (#7775)- Version 15.1.0: * deprecated MSN protocol support * improved docs for Trial * removed deprecated UDPClient * twisted.web.static.File allows defining a custom resource for rendering forbidden pages. * minor bugfixes- Version 15.0.0: + please, see NEWS file - Update lp1102685.diffibs-arm-3 1667559238  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     : !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]]_`abcdefghijklmnopqrstuvwxyz{|}~22.2.0-150400.5.7.122.2.0-150400.5.7.1     !"#########$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%&&&''())***+,,,,,,,,,,------------......./////////0112221111111111111111111111111111111111134////555555555566677889:;<<9=>99???????????????????????????????????????????9999999@A@BCCCCCCCCBDDBBEBFGGGGGGGGGGGGFHHHHHHHHIJJJJJIKKKKLMMMMKINOONPPPNQRRRRRRRRRRRRRRRRRRRRRQSSSSTUUUUUUUUUTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTSSSSSVVVVVVVVVVVVVVVVVVVVSSQWWWWWWWWWWWWQXYYYYYYXZZZZXpython-Twisted-docMakefile_extensionstraclinks.py_staticjscustom.js_templates_themestwisteddefaulttheme.conftwistedtraclayout.htmlstaticcsstrac.csswiki.cssctxt_grad.pngextlink.giffooter_grad.pngmain_grad.pngmenu_grad.pngtab.pngtop_grad.pngtrac_banner.pngtwisted-icon.icotwistedtrac.csstheme.confapiindex.rstconchbenchmarksREADMEbuffering_mixin.pyexamplesdemo.tacdemo_draw.tacdemo_insults.tacdemo_manhole.tacdemo_recvline.tacdemo_scroll.tacindex.rstsshsimpleclient.pysshsimpleserver.pytelnet_echo.tacwindow.tachowtoconch_client.rstindex.rstlistingsechoclient_shared_ssh.pyechoclient_ssh.pyindex.rstmancftp.1ckeygen.1conch.1tkconch.1conf.pycorebenchmarksbanana.pydeferreds.pyfailure.pylinereceiver.pynetstringreceiver.pytask.pytimer.pytpclient.pytpclient_nt.pytpserver.pytpserver_nt.pydevelopmentindex.rstlistingsnew_module_template.pynaming.rstphilosophy.rstpolicycode-dev.rstcoding-standard.rstcompatibility-policy.rstindex.rstrelease-process.rsttest-standard.rstwriting-standard.rstsecurity.rstexamplesampclient.pyampserver.pybananabench.pychatserver.pycourier.pycred.pydbcred.pyechoclient.pyechoclient_ssl.pyechoclient_udp.pyechoserv.pyechoserv_ssl.pyechoserv_udp.pyfilewatch.pyftpclient.pyftpserver.pyindex.rstlongex.pylongex2.pypb_exceptions.pypbbenchclient.pypbbenchserver.pypbecho.pypbechoclient.pypbgtk2.pypbgtk2login.gladepbinterop.pypbsimple.pypbsimpleclient.pypostfix.pyptyserv.pypublic.pempyui_bg.pngpyuidemo.pyrecvfd.pyrotatinglog.pysendfd.pyserver.pemshaper.pyshoutcast.pysimple.tacsimpleclient.pysimpleserv.pyssl_clientauth_client.pyssl_clientauth_server.pystarttls_client.pystarttls_server.pystdin.pystdiodemo.pystreaming.pytestlogging.pythreadedselectCocoaSimpleWebClientEnglish.lprojMainMenu.nibclasses.nibinfo.nibkeyedobjects.nibREADME.txtTwistzilla.pysetup.pyREADMEblockingdemo.pypygamedemo.pytkinterdemo.pytls_alpn_npn_client.pytls_alpn_npn_server.pytwistd-logging.tacudpbroadcast.pywxacceptance.pywxdemo.pyhowtoamp.rstapplication.rstbasics.rstchoosing-reactor.rstclients.rstcomponents.rstconstants.rstcred.rstdebug-with-emacs.rstdefer-intro.rstdefer.rstdesign.rstdirdbm.rstendpoints.rstgendefer.rstglossary.rsthowto.tidyrcindex.rstinternet-overview.rstlistingsTwistedQuotes__init__.pypbquote.pypbquoteclient.pyquoteproto.pyquoters.pyquotes.txtquotetap.pyquotetap2.pywebquote.rpyampbasic_client.pybasic_server.taccommand_client.pyapplicationservice.taccredpop3_server.pydeferredsynch-validation.pyloggerad_hoc.pyad_hoc_save.pyanalyze.pyloader-math.pyloader.pylogsource.pyoffline_analyze.pyonline_analyze.pysaver.pypbcache_classes.pycache_receiver.pycache_sender.pychatclient.pychatserver.pycopy2_classes.pycopy2_receiver.pycopy2_sender.pycopy_receiver.taccopy_sender.pyexc_client.pyexc_server.pypb1client.pypb1server.pypb2client.pypb2server.pypb3client.pypb3server.pypb4client.pypb5client.pypb5server.pypb6client1.pypb6client2.pypb6server.pypb7client.pypbAnonClient.pypbAnonServer.pytrap_client.pytrap_server.pypositioningnmealogger.pyprocessprocess.pyquotes.pytrueandfalse.pysendmsgcopy_descriptor.pysend_replacement.pyserverschat.pysslcheck_echo_certificate.pycheck_server_certificate.pysystemdwww.example.com.socketwww.example.com.socketactivated.servicewww.example.com.static.servicetrialcalculus__init__.pybase_1.pybase_2.pybase_3.pyclient_1.pyclient_2.pyclient_3.pyremote_1.pyremote_2.pytest__init__.pytest_base_1.pytest_base_2.pytest_base_2b.pytest_base_3.pytest_client_1.pytest_client_2.pytest_client_3.pytest_client_4.pytest_remote_1.pytest_remote_2.pytest_remote_3.pyudpMulticastClient.pyMulticastServer.pyadopt_datagram_port.pybasic_example.pyconnected_udp.pygetting_ip.pyipv6_listen.pylogger.rstlogging.rstoptions.rstpb-clients.rstpb-copyable.rstpb-cred.rstpb-intro.rstpb-limits.rstpb-usage.rstpb.rstplugin.rstpositioning.rstprocess.rstproducers.rstpython3.rstquotes.rstrdbms.rstreactor-basics.rstsendmsg.rstservers.rstssl.rststylesheet-unprocessed.cssstylesheet.csssystemd.rsttap.rsttemplate.tpltesting.rstthreading.rsttime.rsttrial.rsttutorialbackends.rstclient.rstcomponents.rstconfiguration.rstfactory.rstindex.rstintro.rstlibrary.rstlistingsfingeretc.usersfinger__init__.pyfinger.pytap.pyfinger01.pyfinger02.pyfinger03.pyfinger04.pyfinger05.pyfinger06.pyfinger07.pyfinger08.pyfinger09.pyfinger10.pyfinger11.tacfinger12.tacfinger13.tacfinger14.tacfinger15.tacfinger16.tacfinger17.tacfinger18.tacfinger19.tacfinger19a.tacfinger19a_changes.pyfinger19b.tacfinger19b_changes.pyfinger19c.tacfinger19c_changes.pyfinger20.tacfinger21.tacfinger22.pyfingerPBclient.pyfingerXRclient.pyfinger_config.pyfingerproxy.tacorganized-finger.tacsimple-finger.tactwistedpluginsfinger_tutorial.pypb.rstprotocol.rststyle.rstweb.rstudp.rstvision.rstimgTwistedLogo.bmpcred-login.diacred-login.pngdeferred-attach.diadeferred-attach.pngdeferred-process.diadeferred-process.pngdeferred-states.svgdeferred.diadeferred.pngindex.rstmanpyhtmlizer.1trial.1twistd.1specificationsbanana.rstindex.rstfunlightbulbregister.htmlhistoric2002ipc10twisted-network-frameworkerrata.htmlindex.html2004ibmtalk.htmlNEWS.rstQuotesREADME.FirstTwisted-1.0Twisted-1.1Twisted-1.2Twisted-1.3Twisted-10.0Twisted-10.1Twisted-10.2Twisted-11.0Twisted-11.1Twisted-12.0Twisted-12.1Twisted-12.2Twisted-12.3Twisted-13.0Twisted-13.1Twisted-13.2Twisted-14.0Twisted-15.0Twisted-15.1Twisted-15.2Twisted-15.3Twisted-15.4Twisted-15.5Twisted-16.0Twisted-16.1Twisted-16.2Twisted-16.3Twisted-16.4Twisted-16.5Twisted-16.6Twisted-17.1Twisted-17.5Twisted-17.9Twisted-2.0Twisted-2.1Twisted-2.2Twisted-2.3Twisted-2.5Twisted-8.0Twisted-8.1Twisted-8.2Twisted-9.0index.rstipc10errata.htmlipc10paper.htmlstylesheet.csstemplate-notoc.tpltemplate.tpltwisted-debian.htmlindex.rstinstallationhowtooptional.rstindex.rstmailexamplesemailserver.tacimap4client.pyindex.rstsendmail_gmail.pysendmail_message.pysendmail_smtp.pysmtpclient_simple.pysmtpclient_tls.pyhowtoindex.rstsending-mail.rstindex.rstmanmailmail.1tutorialsmtpclientsmtpclient-1.tacsmtpclient-10.tacsmtpclient-11.tacsmtpclient-2.tacsmtpclient-3.tacsmtpclient-4.tacsmtpclient-5.tacsmtpclient-6.tacsmtpclient-7.tacsmtpclient-8.tacsmtpclient-9.tacsmtpclient.rstsmtpserversmtpserver-1.tacsmtpserver-2.tacsmtpserver-3.tacsmtpserver-4.tacsmtpserver-5.tacsmtpserver-6.tacsmtpserver-7.tacsmtpserver-8.tacmake.batnamesexamplesdns-service.pygethostbyname.pyindex.rstmulti_reverse_lookup.pytestdns.pyhowtoclient-tour.rstcustom-server.rstindex.rstlistingsnamesexample-domain.comoverride_server.pyreverse_lookup.pysimple_server.pynames.rstindex.rstpairexamplesindex.rstpairudp.pyhowtoconfiguration.rstindex.rsttunnels.rstindex.rststylesheet.csswebexamplesadvogato.pydlpage.pyfortune.rpygetpage.pyhello.rpyhttpclient.pyindex.rstlogging-proxy.pyproxy.pyreport.rpyreverse-proxy.pyrootscript.pysilly-web.pysimple.rtlsoap.pyusers.rpyweb.pywebguard.pyxmlrpc-debug.pyxmlrpcclient.pyxmlrpcserver.pyhowtoclient.rstglossary.rstindex.rstlistingsclientbytesprod.pycookies.pyendpointconstructor.pyfilesendbody.pygzipdecoder.pyrequest.pyresponse.pyresponseBody.pysendbody.pyelement_1.pyelement_2.pyelement_3.pyiteration-1.pyiteration-1.xmliteration-output-1.xmloutput-1.htmloutput-2.htmloutput-3.htmlquoting-output.htmlquoting_element.pyrender_1.pyrender_2.pyrender_3.pyrender_quoting.pyrender_slots_attrs.pyrender_transparent.pyslots-attributes-1.xmlslots-attributes-output.htmlslots_attributes_1.pysoap.rpysubviews-1.pysubviews-1.xmlsubviews-output-1.xmltemplate-1.xmltransparent-1.xmltransparent-output.htmltransparent_element.pywait_for_it.pywaited-for-it.htmlwaited-for-it.txtwebquote.rtlxmlAndSoapQuote.pyxmlquote.rpyxmlrpc-customized.pyresource-templates.rsttwisted-templates.rstusing-twistedweb.rstweb-development.rstweb-in-60access-logging.rstasynchronous-deferred.rstasynchronous.rstcustom-codes.rstdynamic-content.rstdynamic-dispatch.rsterror-handling.rsthandling-posts.rsthttp-auth.rstindex.rstinterrupted.rstlogging-errors.rstother-request-bodies.rstrpy-scripts.rstsession-basics.rstsession-endings.rstsession-store.rststatic-content.rststatic-dispatch.rstwsgi.rstweb-overview.rstxmlrpc.rstimgcontroller.pnglivepage.pngmodel.pngplone_root_model.pngview.pngweb-overview.diaweb-overview.pngweb-process.pngweb-process.svgweb-session.pngweb-widgets.diaweb-widgets.pngindex.rstwordsexamplescursesclient.pyindex.rstircLogBot.pyminchat.pypb_client.pyxmpp_client.pyhowtoim.rstindex.rstircclient.rstircserverclientcomm.rstindex.rst/usr/share/doc/packages//usr/share/doc/packages/python-Twisted-doc//usr/share/doc/packages/python-Twisted-doc/_extensions//usr/share/doc/packages/python-Twisted-doc/_static//usr/share/doc/packages/python-Twisted-doc/_static/js//usr/share/doc/packages/python-Twisted-doc/_themes//usr/share/doc/packages/python-Twisted-doc/_themes/twisteddefault//usr/share/doc/packages/python-Twisted-doc/_themes/twistedtrac//usr/share/doc/packages/python-Twisted-doc/_themes/twistedtrac/static//usr/share/doc/packages/python-Twisted-doc/_themes/twistedtrac/static/css//usr/share/doc/packages/python-Twisted-doc/api//usr/share/doc/packages/python-Twisted-doc/conch//usr/share/doc/packages/python-Twisted-doc/conch/benchmarks//usr/share/doc/packages/python-Twisted-doc/conch/examples//usr/share/doc/packages/python-Twisted-doc/conch/howto//usr/share/doc/packages/python-Twisted-doc/conch/howto/listings//usr/share/doc/packages/python-Twisted-doc/conch/man//usr/share/doc/packages/python-Twisted-doc/core//usr/share/doc/packages/python-Twisted-doc/core/benchmarks//usr/share/doc/packages/python-Twisted-doc/core/development//usr/share/doc/packages/python-Twisted-doc/core/development/listings//usr/share/doc/packages/python-Twisted-doc/core/development/policy//usr/share/doc/packages/python-Twisted-doc/core/examples//usr/share/doc/packages/python-Twisted-doc/core/examples/threadedselect//usr/share/doc/packages/python-Twisted-doc/core/examples/threadedselect/Cocoa//usr/share/doc/packages/python-Twisted-doc/core/examples/threadedselect/Cocoa/SimpleWebClient//usr/share/doc/packages/python-Twisted-doc/core/examples/threadedselect/Cocoa/SimpleWebClient/English.lproj//usr/share/doc/packages/python-Twisted-doc/core/examples/threadedselect/Cocoa/SimpleWebClient/English.lproj/MainMenu.nib//usr/share/doc/packages/python-Twisted-doc/core/howto//usr/share/doc/packages/python-Twisted-doc/core/howto/listings//usr/share/doc/packages/python-Twisted-doc/core/howto/listings/TwistedQuotes//usr/share/doc/packages/python-Twisted-doc/core/howto/listings/amp//usr/share/doc/packages/python-Twisted-doc/core/howto/listings/application//usr/share/doc/packages/python-Twisted-doc/core/howto/listings/cred//usr/share/doc/packages/python-Twisted-doc/core/howto/listings/deferred//usr/share/doc/packages/python-Twisted-doc/core/howto/listings/logger//usr/share/doc/packages/python-Twisted-doc/core/howto/listings/pb//usr/share/doc/packages/python-Twisted-doc/core/howto/listings/positioning//usr/share/doc/packages/python-Twisted-doc/core/howto/listings/process//usr/share/doc/packages/python-Twisted-doc/core/howto/listings/sendmsg//usr/share/doc/packages/python-Twisted-doc/core/howto/listings/servers//usr/share/doc/packages/python-Twisted-doc/core/howto/listings/ssl//usr/share/doc/packages/python-Twisted-doc/core/howto/listings/systemd//usr/share/doc/packages/python-Twisted-doc/core/howto/listings/trial//usr/share/doc/packages/python-Twisted-doc/core/howto/listings/trial/calculus//usr/share/doc/packages/python-Twisted-doc/core/howto/listings/trial/calculus/test//usr/share/doc/packages/python-Twisted-doc/core/howto/listings/udp//usr/share/doc/packages/python-Twisted-doc/core/howto/tutorial//usr/share/doc/packages/python-Twisted-doc/core/howto/tutorial/listings//usr/share/doc/packages/python-Twisted-doc/core/howto/tutorial/listings/finger//usr/share/doc/packages/python-Twisted-doc/core/howto/tutorial/listings/finger/finger//usr/share/doc/packages/python-Twisted-doc/core/howto/tutorial/listings/finger/twisted//usr/share/doc/packages/python-Twisted-doc/core/howto/tutorial/listings/finger/twisted/plugins//usr/share/doc/packages/python-Twisted-doc/core/img//usr/share/doc/packages/python-Twisted-doc/core/man//usr/share/doc/packages/python-Twisted-doc/core/specifications//usr/share/doc/packages/python-Twisted-doc/fun//usr/share/doc/packages/python-Twisted-doc/historic//usr/share/doc/packages/python-Twisted-doc/historic/2002//usr/share/doc/packages/python-Twisted-doc/historic/2002/ipc10//usr/share/doc/packages/python-Twisted-doc/historic/2002/ipc10/twisted-network-framework//usr/share/doc/packages/python-Twisted-doc/historic/2004//usr/share/doc/packages/python-Twisted-doc/historic/2004/ibm//usr/share/doc/packages/python-Twisted-doc/historic/Quotes//usr/share/doc/packages/python-Twisted-doc/installation//usr/share/doc/packages/python-Twisted-doc/installation/howto//usr/share/doc/packages/python-Twisted-doc/mail//usr/share/doc/packages/python-Twisted-doc/mail/examples//usr/share/doc/packages/python-Twisted-doc/mail/howto//usr/share/doc/packages/python-Twisted-doc/mail/man//usr/share/doc/packages/python-Twisted-doc/mail/tutorial//usr/share/doc/packages/python-Twisted-doc/mail/tutorial/smtpclient//usr/share/doc/packages/python-Twisted-doc/mail/tutorial/smtpserver//usr/share/doc/packages/python-Twisted-doc/names//usr/share/doc/packages/python-Twisted-doc/names/examples//usr/share/doc/packages/python-Twisted-doc/names/howto//usr/share/doc/packages/python-Twisted-doc/names/howto/listings//usr/share/doc/packages/python-Twisted-doc/names/howto/listings/names//usr/share/doc/packages/python-Twisted-doc/pair//usr/share/doc/packages/python-Twisted-doc/pair/examples//usr/share/doc/packages/python-Twisted-doc/pair/howto//usr/share/doc/packages/python-Twisted-doc/web//usr/share/doc/packages/python-Twisted-doc/web/examples//usr/share/doc/packages/python-Twisted-doc/web/howto//usr/share/doc/packages/python-Twisted-doc/web/howto/listings//usr/share/doc/packages/python-Twisted-doc/web/howto/listings/client//usr/share/doc/packages/python-Twisted-doc/web/howto/web-in-60//usr/share/doc/packages/python-Twisted-doc/web/img//usr/share/doc/packages/python-Twisted-doc/words//usr/share/doc/packages/python-Twisted-doc/words/examples//usr/share/doc/packages/python-Twisted-doc/words/howto/-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:26705/SUSE_SLE-15-SP4_Update/d1019246f07fbca87729c86315d307fb-python-Twisted.SUSE_SLE-15-SP4_Updatedrpmxz5aarch64-suse-linux        !""#$###%&'(directoryASCII text, with very long linesPython script, ASCII text executableASCII textHTML document, ASCII textPNG image data, 14 x 35, 8-bit/color RGBA, non-interlacedGIF image data, version 89a, 13 x 7PNG image data, 1 x 215, 8-bit/color RGBA, non-interlacedPNG image data, 1 x 178, 8-bit/color RGBA, non-interlacedPNG image data, 1 x 22, 8-bit/color RGBA, non-interlacedPNG image data, 282 x 32, 8-bit/color RGBA, non-interlacedPNG image data, 1 x 26, 8-bit/color RGBA, non-interlacedPNG image data, 338 x 75, 8-bit/color RGBA, non-interlacedtroff or preprocessor input, ASCII textUTF-8 Unicode text, with very long linesXML 1.0 document, ASCII textPNG image data, 1500 x 1500, 8-bit colormap, non-interlacedPython script, ASCII text executable, with very long linesPython script, UTF-8 Unicode text executable, with very long linesemptyassembler source, ASCII textHTML document, UTF-8 Unicode text, with very long linesPython script, UTF-8 Unicode text executableUTF-8 Unicode textXML 1.0 document, UTF-8 Unicode text (gzip compressed data, from Unix)PNG image data, 654 x 467, 8-bit/color RGB, non-interlacedXML 1.0 document, ASCII text (gzip compressed data, from Unix)PNG image data, 503 x 187, 8-bit/color RGB, non-interlacedPNG image data, 240 x 382, 8-bit/color RGB, non-interlacedSVG Scalable Vector Graphics imagePNG image data, 635 x 837, 8-bit/color RGB, non-interlaceddiff output, ASCII textDOS batch file, ASCII textexported SGML document, ASCII textPNG image data, 504 x 387, 8-bit colormap, non-interlacedPNG image data, 484 x 429, 8-bit colormap, non-interlacedPNG image data, 250 x 302, 8-bit/color RGB, non-interlacedPNG image data, 504 x 361, 8-bit/color RGBA, non-interlacedPNG image data, 504 x 216, 8-bit colormap, non-interlacedPNG image data, 471 x 264, 8-bit/color RGB, non-interlaced{.2Sx utf-8e79e7235214871f7ed110a9f4ea733c0afb3a1638f6b16317e7c5c93e17db19c?P7zXZ !t/!m]"k%0a H]f8抧fwm 1@$2weW&@*_TU%d %m4*y.:z6PZwtIfWvE¤۔;:F04m'g*"NEoV㱤*E;n1e'06 NbR:8}(7S%u+,}%w{-4¶ӧe|JCm óLhZ0%*~Uq]7n޲P7U0yhEb(T|\+(q1H:оNT EYY&pŠ! 8P`ke-m)EgeaT< aTX¿q=Lg9{ӊ|el_,\ E VSMRR|u/B26sSb]O3;߈] ~qWUus /a$YrmD“kwP+]' jYw`͞Xw A[m63j|}joS3S2k X4?Aǥ%t?W濋Pm`kKBu<ęe+}鿉Mcfs_D|ڹ;oytơ@C& ~~GfT ;*PshI~/u ,X,>7#0U=/K'蚆9l5iԲn eNܝ+t|}8Ɇ`>c:viNXKd"c39)Q*AM-pS <[+ amz77\VCezABm˨l{UgLe·EYb/wD (2f#-W'Ak n+kI 8q 5Fȝr]KۏYVf_{ 0Aa˶cuRX!z] IeZP*/95%s@Y*\JP/x߉Z=jT:$ʽ4"WBky650`xNTG9fvR  ?8]JF|yvC^tGhN #OTeĤu.C-뀨=Yα.Ȉm*S|=1)s떱K([-r1Hh)ܹG(O;K^#%-R]83f&B]Y"s&P mBЏGJR|~Q"Z-qc[ ?؟Azg`7d.=>zEu,ẽ>;+ (Q9+Za% Ym!R+ 42aCkPT*VZ;o2]}#!owN3ϕ ~@|8etNX3 jT{iyogA8Fe欜Gץ5b$!o]7Vid'pƔ$j)_ϴ@jֵSqM>uZrSu6 TPpl9'䁝hM+ah\qGs$̮09*+_OhNٛ:l,E/;&['b^翾6.E&hًs,#y ֚h=츬i\|͛qzcJ[mrZo*ŇeȜٱ. 5r^u bm>}XӾQQ@6H1بGa|e`3y +oo*;Wf7]:qM`(yIFLGIɳ140sԛ[7y!:~z: 7qFݠ`kZ."U$FΫnr[\|C7ä#KLtïrH5ߝFm ^&7xӶuKo5h  E϶caVPmwk4$pB!ڽonA8xdփjbwSfP^Vn$4Im,EdEx<\ ei~QSpf y@&<\j M@]/|l w'7#R!N$hMgXl&C-v5K=vqCj,=n3\=hB( O[=a>=m6\lc0Գ2r\ ,7Ԝ;}# %Xח^Y7e+o  z f];SKKrn@E}K,^6=ӮS0}:x@Hu߂€6QNT2[96ox*V1AQ\F.lj,>ٹߊCZ qF©Ѯqy1V3nasT\!7Wnn0Ttab[rHe6\w:c\DH,x Oc*. Ͳ6UC3KeCq5#B'0np|:wZU`blf'WLZ'i8jX`D/xaZ.I~=oReF?+9I%d)Lgݬ ;ޗwQoP;x!'~O/ Oȟgt:>80VCe [H2K $7L$\q6!jɜ5!NB+P- j7Q 6(%ov(ήކlQTv$0 JF gl@/uE0> 2mޕ%֗^? 9%*eKre>ޏv8G#LJ咵p˸-4%#/1"qJZٻlW~ I\1pئ"Ir1Z/#0l+BNFR YZ