python3-doc-3.6.15-150300.10.78.1<>,ٌgMXp9|)Mv{H*7GH< h7C,u ?Av0JD 3ky3ٿ6-Z$ &lcm=P@"T-m ~* 9rbpb5M/؅RrgيrUE렆E5h>A?d $ G  9Ze {!0! r! "! 38! 7! ;!L@!`!uu!Dt(8 9p:vB)F)G)!H:!IK!XO(YO4ZOh[Ol\Ot!]_!^!b'cdVe[f^l`ut!v z$(048>Cpython3-doc3.6.15150300.10.78.1Package Documentation for Python 3Tutorial, Global Module Index, Language Reference, Library Reference, Extending and Embedding Reference, Python/C API Reference, Documenting Python, and Macintosh Module Reference in HTML format.gMXs390zp35bSUSE Linux Enterprise 15SUSE LLC Python-2.0https://www.suse.com/Unspecifiedhttps://www.python.org/linuxs390xe?M(a- +CC5B%Aq +,b ]wW<#mj4W Y  32e̟pOih( Sy , GZ)y E0 ] d6&Z A KOuXz(A!R!w%@12 .bD a=[Qf zLa/̡]$cA7-WH+{`T%>}.3O/H*<(!P4VYbR8<#vc>58U)(2"y*X f$n6d( 2=#B& Cn @MZ%#8 *m9b7$ut7i$M# 1{5E#F% -7 l%{cs -3TDmI%Zd' q mg4x', Il!EczO z<o U`;oi hc)^WCO8'&o,t cH(.S U5J-,@E ;,u]KO "% n;*mA 3  Pod HG.P0 ]*n" @9i;CB%*6[ j\ w&M; Md",6!fH)?Y/2gX}y /'EVII5' Rlhu  S"8PNSP&7^W'BS_<'/e=Z:Cb6Xv#)S[  wh_:+ RC lD]*M;& l''v^C ,0Unk+K*= $a6R*_Z@Z +:`/lc !a1&W9*^(:;]cU&/ 0XSwE%L%Og/93;G^p+T= '.XKINB5)BX"3aa4,q`z@4$LuOK7W#iՏ5r;I y!-?:dISdK iD)&c%CC3SJGL:J'>'{t,?)U1)"/BM6.&t ˅C8n??!8>O )jV"vh*[O &H{]p>#$LZn5~O52f`eU]Hcm5Hd2a -de-y2@BKmQ &8CS]1nS6z'E[U7Q9O+ b"A"]:7tbx2)m*q$gQu8OzYl5CURT,Y Io M[kb0+u4BDuF5*#scl/+H}072XF,+Ex' FH)Cco4|  y'ߞ<2<@#955Gp=$f>KG{ 'H+VHD9K-;=>мb(s Z<ǼC7>|ry?E+- E3<@>[CPn6'b+8hRNahp({~c 0P@a0yhvIA*|p68"fc<vR0Pgw-Gg76=8-$]$Ev'HX}r<{)f'x$@R.g8%CJTCg0}8!uuix)6Swq:}j^Ld Bt!FZo`(SWonN?jHk YgY¨Y ~HAA큤AA큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤gMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMOgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMNgMNgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMNgMNgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMNgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMNgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMNgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMNgMNgMNgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMNgMNgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMOgMO6aa499d7c3461364544167e66f6dbbfd8b05c8e4a4dd7c61645e0b3fc1d5789368316b92abab82bbfae78a09d600a8a043c8feb37b13f75db3fa2aea444a6e9866ca0604b9e41bab114e68b7407cfb2a2ee65558d3d31ab364847d9e0cb3ef26667ed7b6f1f4e599516465fc9617d3adb40c60087558155e03eaa6aa3303b7a36ee1cc2e08d6f0ccc0714aea55b412593635a4c82e2688034be4b2eadbc8e33f9e03c96a6816979d7643add104aaf2e333990622483c4c38845c1e1e61240056ffd112649b2ec6b0b90451b5ae86322bbaffdbba6a54acb637a49d73e15b898d0ebed85d25349a766fd0659270a28d2738e8cbbf8a899cd7e3836c3311d6c473871ad4562764fea7c62a09e90b4717f1e3c16e2afbf22827898eff6f104095440035b62dfaa19cdf5d2a9da10932252da5fe4596aa67fb5dd493c8f5ab39d309e0812dac74d45c6290f97c7d6a0415bc73f2c8c016dc9b872ff9a65c27916cf8543f067633c754314e41b6590876b310fc14120d6b6bedd4ffecdf965bc4ec375e962cac6ec219c7e6084346d85ddbcc5c3f81e7c65404191aa7b69826225dd8e1fc6e043509f379b3405f36d2ea1f6ed3b90aff3161fded688f0f87c2a8b95f47db348ef82ea1481286c12ad68a788305aed2d95e17183a7640526eca45a9d39042918a36fa26b1122c0254b1acdf0999c29efa41b701c3a6becd6cb4c0c8964dc395f3f94b51c3d8cadeea326c225ac86d768ddb9418407b8d8aea50b1af487f9b923ce8865b8136978cb0257b9087f116d1ec236478f6c165e177bfc08efce1cae1ee5536e97f2d823023a7e141d92b3f33711b0d6bf57a967efdc3d6fdc1eabc9e89bf440e9453ea8bf223cbaa548b1dc3143b0b8071b9a6d5f501b456867ff436bbe3656eb6fc0e3c076bb4b6b4b3eaf2e94a8d4821653223a7cfee467b170294984476012a2b4d9439572ca1abeb37b503361043aaddd15e47891654ebc563a7ee487c395283da502061e15020a15d2a5ac07a6ed429eea0c16de70de0349f4f436705f1c0557a6ed959225f3c2c37d57ca86dc0a755dca8da33d91dedbf257dd9f5b340b733cf2eb0fda20bc7bfe4d4f43cae08edfb20c97776353c02fec25fd62cefb31fc857f9e07f37274ebb6193e092c32997eff3acd825355a1880bd324f6d29be02476aca6b5291d0aeb82bed20de9d9c3d6c106994bbd4320f4e386ca84660e741365580262b3da0ac58b3358e2a89149606f977eb3842ae710bad158062087b225e669c2556360d882b6d1c883e181a9b2403c8897e49f2230c542f1261829858583589813fdad1d0473612aa681571d4c3b752459ffd72509ab24df71583315c0c67a95bc8c0332130bac7f2ed3b5f72acbcec57a63e027aa33bc1ebb5f3dbe444c9799cec41b49d3ba713eabf8b793944d9c2d2f070d0bbf28eef505e6842d8a7729cd633e757ad89784712b5a025afbbd416f325cc282ba97eec1ef77d1e3d73d0715ffe8c4fc295d91502d7bdffde9e9677415df5415238cb26339911b2d4bd54c1e61fc2c7b2a340388a24f735b0e9070f3a0e8d87f0e4ffdcc85bf073264f10cdd777a30022292ef6b71b68bc5c00aca79ec6b8f0b65d399a5a6bfc45ba067160cfc0b17b91e2472eeb975e7892db2fcfcd711720063944c4773641b23bf1cc98dae1ccce6f218d817419df4d94e2b2f84fafb6c28daf0cc35540de3b27128b4b22bbaedeb8e0ed84e2875d9d65359937d547338e29da7bda50a866005b2dffb1a1931a079bb1d583c434528c643f812c8771eda09fe752387bcdb9cc0694293ac434de6f1cc0d5a77ee1d9fe1d285d699df753c8a41b2b7000f4d2e6d44d9dda25d3e5080bed8f855b1983c983d6eb7f65b1ad96e9310f72f7446921a54bff08c81ef4fdc0b54f6241d333d93db7af76508b51ce4384a4655c83fbdc7c9921fe174b47d640b3f786173a8c27a34941e91aa83850bcbfdc0ed1e29b11e8b56bd1a84cad6ded4052cb2f50ee9200355c10f522ea2b07833083f8abd8a53b0698027f1fe450df39cc527ff808a9bdf6a6e01f673076daf68bbbd23e11c1485428595b6a70e66cd42b5cca5e711957c824f6a9bdc697babc4c58745fb9dda6ea1e64e4a2d59b8e412d49fb0a7f768f624d9120a9ea4a49f549bb4de45482506e646e55ddb9dd84daed5b18b92c341095f835cd37847cdc968e1d4176c5e824d7ed04b462766f63a462ad11f847e765befa2eebc36fd87775ae6f2248f4bfbbeb0902a9495c7ec91b814930cc566958a0df889d2e6f301f85ed47176ca644cadc170da60e5ecfaeea3658e5a55464f491be0df86ab10d7fbf9bf7fbf2512d9977ef1816758ec374b96743f8d3d81e486d1974d3b3f021489316f58cd574597e58996fbf425cafa7594a275a72f3aa5a9b0484d94a3aa3056619bef4f564ea34bf31576ec0bb23c3046bf2fc6078565530f62c49f08c212c67b103c6aebee15f6ce38293821ce56c326f0ce9e88b0c306c8766ec8edb81ff3fb11cd200163e79d68d9848e727c715b727aeb9974f7ed5754ea680301d883f471b8f34804c6ba5c3aafca5f7c75b0e10d2b4250668a5746de02099c0f4096fb7580bc4174511c7a18cbb47fc65f803e2aab7db1881e61c42315925c9b21490f80a8dd784c3beeb273224a2ef03a0d9db86b031439f0e2b7b9d1026020b85341dfe82739272d573da40be79c19cadfc9bd7ad4226325db8e1a8934b470c2aed790b807e2cd7606defb6436711bf53e2d7b21adff9d77a2082f184e626b46e9fedc2db3d2630e78770cc867deaabff4dce6c70837f9f92e342b1887c35a754e2b68b4340f8c7c991fd3f3ebbd04bf00c86d1518741cd31015f8ee9f64e1bb5de8a4d1df78dd13ebab63f49b0fec91d9ef086d4b7e4410bae16af822eeec08e3216f4cd0268e738a0d9d939ebbcda8ebc46d67d173cb95d25bf86da848569a0582e5ab1f12759ffa9cf5d88eaffc3c4c30fbaae41d11fa76853c647e6fe32ec09a928f3b1671ee52aa367e3ff50fad717d0a3f7c164e320e8892df1b67f9f240f9b5937ff2f3ad94eda3e6b2eaa80edf8b7b31e6c66cbb064f7791d647e49598538dc4866a6fce1ea1f892c11a40718670a32545d1781f84d5771c8adab1bc2a2ac3dab410f3db7607029aeeb1798d3849dd82d6b7ca990be426ea995b20d049e4d66563ba01a4733e06446f2239370da2b1c0a6e3856c4ffb24180b8af98996f843beed7bb572dadb631b1f5977439e2be8b11e081ee894adc7e62a803a51d83a193424572a5af88e40c62fa10ec94f4ff8853931d3a0b616fd9485dd20f78255dc1c6157228a9ce96bf01fc7b84aca888b8e7b844c11d6931da22e8896622fa41e18cb070632b93f4b3ca004ddbf6a89fc45bff5c11c5c95a4607f0dcee1f602201cbfa1806facf7bab9f4aeb9f5c053645007ab3b455d78dbe2e25407960d625b5a7c7b881316648c849a3012af7146813d895fb2679e4de5172783872e5627b62431223107c026252bb67131715f504dd384a9517333389890c7cd29198db333adfa8fcdbf5af1b841c4f60601e1b9e3e72e18c738d905352d838e25f95801d2990ffeb955cb629cd54ad217a28f924bf84c9d2db588516cd988eb4145283a3ded08c0da413f6083487674133764e3a7f9a57084da7668c0b946e276eaf4646210c6c26fdb60e716b2c1d706122b650d4818a154fde60089b0f8865bd2f374b3ccc78df8ea507f88ae713f4d1cd8c6ae2976f7d959c7e962487d94701dd172796b42d485f35733eac7f375ba8b0060bc371e6877419dae8dd4b7e329eef77076ffb742f86aa84a75ca80e7e46b79987343e055e6f5b38dc24628140f55ccd22c44e1ac1d66fbf70b249d807c87032269957ba9938f5e2233d4dd66d01c3e459ff5bbc59fa14c40e0fc76574e2f80f7951e2949dd1da1078cd367e3ed6b8cc36c880549e2595e4164fb27829c89becdb72165eb82ded7a75f93c810f9de11cc3e06d9a0f7f4ce7bb72638fad64aa1e599e77716b8d26e2ab9c6e81ff28006a258b1e3bb1eb3cea355c145dc7c65205046262acc28de1f33a28c5ccfa99fa044cc961455aa44392595936ee04648653ccc657b54b238dbea6e7b90998a7a306a7f1fdaf9699362555d9845ebc7752600aa69c9161f77b6dc3187ab2b1c9200687396ef8203eebce22954e6a29a91ba6c5854c323b25c798ce3b33dd6ec246fc72bb59163eda5128d4e6962ba11ccd32c127672dcbb484690d73e05adf1550abde39af8366952ad547a64110c917634cbf4a1685dcc27e1da1b38a2d5f20992e0988c3fa0806eeaf9605669fbf7a2707cbf4563dde4869615abae4c0d50e0d78f3e3cc782388fad6b2ce913ed808c4f3688dc043254b0e913c8d6bcb6d90163cff669f30c2af8e6fc8724dcd2eb00d6d73a8be3d00e4eb6f1e3932f5e97b041462a7b4716f756e1b5fe8aeed863cbc58c7366d4376b463a06714ab6e7c6db4b947fac54c39462ea9e2006e5a5631de78acfebf77deef3e836361c0a31cd2346b7d4eb5b1740fee0a1197988b1d4dd3fc282d60234981b76af8a150a3501046f615ae1683152125a1bd0901dc6fb8444d6095f03751406d5dd799a1d09f26e043d6e6d441fe8ec639bd9d428fe838194e540fe33e12b2dd2b69a8552a44d05ac4de309a6bc55496ddea34046fac0ba99f4a08fcd9b97df8b29a539e414c4c0fac3afb86ac1927ab06ed4e4e103e70d7d1bc8ac9985454643f89b7028a44d9048df62fe7902f659b50572c856ef718720c83b009d9aec25582fd8809511773b62b817e575d9edc1e757b28a35f897f12e5c7ec0efe088fac2d1ed9ea6dc0c31844eded828e3507bd09eb4b9f52c4a1b95849ea6a9ab6f4ec0b0dba5d9cc33112ed74fd60f7a2dd06ec5017b8f7112c200c74b285a8d1b7a2361629dbff3479ab84df8f70eecc732cc09f3538ecfab24a3f34c26e46bca5fdaa66513f345d20d93ebf44cc903bd7b14e7a7f614030d0f9a287e6550ae055df68f63b38a5719033948af540a794a7d038bab6717d35deb7f4b601036de6337d7cf2bf54ba04a5bc7bdb9abdff94168fb1d26fd6b607d93a2f109daa5da328e41a7f9dc56db983ae8d3cf75d195de125769cc55b8b9c3d0a8cf1653d0aa3538fd4e0738f7eea04e56c7a398d30665f67d9f685e144476c0de832c19b9ced37215982a7e5a8620b57290656ee55c64e58e5a73aa24ec12c8e673f1feae56b68230d6067b7a8993bccae08be16edf2262b224a99fc8918e4ea6319b3a9e8f6821d023e717826864251bfb992eadfc05321955787a4a609e307c00383812ea9b030ab9906c1c433e6a1d3f27fac82d1c6521803db86be6bf470590cc76ef60f35c60ff68ccc3f871a131c72c370076003f0f0770c8b0ddfe4be2c9338ead06c792de1b4140d5501fc940aab75bb93e8e8a71d27e457dfdb451db4280893fc788318ed3310251b9abb5d70982ab1202f44014912e52922d038c7b7a005292b12bb4d1ccd417dafa0b6a296dd20816c9b6d5ad533e5d9dfb95cd917c168e7db9905b4ab69483fbdb3b5205f1e6f33af887262154701a76a9c0dc02a0758b0aff30ab9058dc682d80b10f88fa743d20aa3a24d7c71c023fe271673c4a87928ad6808ae1312ef44f748148ca6777f20e255e0afbbee50b6b5711ef200e187b758a66cde030e55dfd8cfbb875ba12efe13ff082f927edafebc42682ff5681e61fae41057e2916e1f2b3e73201f2e46b1fa59bd296e74e008442df275afaa26727de8049b328c1140fe25a6fcebfb33ad8e344750fa1867e1dbd89748013cd7ad2f8c6ff41b198991af0db4521e1692f92ef264ba175bb6724b628ffb2619d489ecbcdad97b9c9d2dd11b07fa0810a5fb56b818b335d901ded9418a45fa32651a5cb5ff81d033b0cea732758a557b6e31a04003b5ca235931cb9a1aea86c94b8bbbc2d9ccab380e954a60543841d86b441da4c63e4e009b7115b9b9bceb2697980cf3ebad637a5e6f0d979c56c9274416684bd397655bae2808b5545644e3450f37ea1667794de4522a3c2303537eb1aced93a7fab2087d2e578459f69515033aef9abc01ebd5991145c14391a48dfb8ad3ca335387e86cdf43dff216d5a8fe2e551fad35dac46e66f6e3325bbb2d6a097a8cfc2851b3b04028ec37e6fd5b890ef30dc74f07e5512522c867a21fed711a15a77bada38eef358a878965daa56db155a7a9b1712fcc664e12358c8d18675e24dec81a0b5bc519aa5e135e88c70f6e6568e825803604f93049e5d2c48c35fba87a7879d7a53c45795d1201b442706114bd5eca64d0f0821357aaa8fa3301ec229e0bceee647cc4aef75f2b9368a1b60552ebba538d0a40fff1841514ce188d11fa51cf46355d14373496294d675ea5b9f894dcfe518d5e703a8ae4830dcc9382f4f10da514d6664530a6bc622dae75758f9b3dc97d249826c4af4b94a26c2f4605e4c086a7f04705d36ece8666c8f575a817622ab6b695cbe18618817b5ce177a79da922744d7c1a149bd161276f535ec550dde37b478a1014d7f45f34aec2e6bb5efbdb7a6aaaa830aeaa6b808e02f3e9cf9531fb91ecd03da0e6294873b5ee8d71e0e957b250dedf389460ffa03a7468341f0b7b9b666d763c7c2c909d23baed0f42db8e6b2743d322fe1befca35326846c6f27e71a01a526f9dc75d5152ca230ff717600e760fd94e3addf763c471ac1f315c5f1db97d97ebb756e95db9ca214de39dfb3d146100fe450fbeb05b5fe8ad499a175e0c5a24f901c2d36a0d3da83d4a21c2350f81e8581e271e7a720a75d18beb867bcd924287796ffa0fcc2108c8533ca79f601ce90acfedb0afb0d43d53bdb37be69afe4d6c51382feab78095c51db3b6ed20f62f38e41b5546d7ead75faa5b4f46af5604549ee081390441f6c2bc11eb44f13f327fd188ac73f4ac8607177908f06cb1e63150dfcc9f83d4349141ec171f99bf34dc22fe280e7f42973cc5f7e621aa845576b86bf1eb926f436280e4e3714bfda069790eb32b3b2287959706952d95e0e71ca28b1d173f26bd44cd30e04a458f81939c999340ac81e244bd61c072ace38be403948c7238487d8a4777503260cb1c3869caf28cec627141c82344814b02c0a35e22aceacae1d7e9ec474b38a7a3cf310593e1eddabf29f668b4c08df503427bfd65436067c88594b8024a2c8e8c235f0cd64f6c5083e46cfd9d3c6b0931fa434755c5e017122a5eae671670759ec650be761687a856f65208b27545b40e885e68ef557a2fc646b0813635e79b00d1f9cb8126f267f7d5d2d73e06341c5bb9b42e78a5b2a001f54aa58d6a179bf349e1c4defc8d6812dd62ac1bfb9f4db991506c6daaf898ed3bfa900d7375d49f48dc72c68e8360ba8c6fdfc5673c65b131c916341be00d98de520493ba5a2867159549023b0bcb59f18d04c143d254cc77f57090a1b46955a14685abc96d988cb909435d21e57877b79b28fa0c538e0f2c75882ddbfdb3afe5e2d52945a996f6b725cdf9ff2f2c9e7e4e585a4d453591aab8401da4ae6506f4372204ae1bba0a7eaa9e46b732a7ff632d8ab6dc31cb14acd25f8096858eeacbe175a60a70612d04864b738b2c13d4325b5792cd38d2a0b3c281f17653e2d3ff9bf0a699885f0a8348e6a02458222d60b9fd63590840f572cb39992d7516f4a59f86e41c77b8b3753417a2931b43ec8a578b7cda3d05f9ca6952a69971c446be1207f81ef67388ba7206d10076e17fb9a5a773f601cd243ccc510530ddb046fdcd9125dec6f375664c655ac4a669863f544ad88f313490c08b5b835b8f5e80976761c96d55886d7b209375e91d8fce830fa409f7c219c46429ee284353cb2e2b3a62844a6bba7a9758008e26f2d69e8e370ee9173b1560f3288f5620d1e22bee18f31e423dbfc6b1736831445ac086279ad549cdf59b60ce7ed05bc826c72dfed65593b9e9291021693b3fe5b06d1aff6f0c3fd87fae9238bab602c74e894ecf6f62835db74b4a40a1a0108a4fac847036bf928609d36235fabfddae3655e364564879dc90aeb6edac6e0534cdff3cc9f056977dd061887f45ac32d503dccd215933addd34f1f14a1676a4496ffa804c2019af0f0b9f1c89e6e6954b8f1203cd71c25497b86aca7bf61a925ea4b0bf531b72cd4611cbbbd59efbc5b5981d15a3976c602c1be1c1e380d8620057ba4a39751274a60c820b16556fca567ef20b5c948610cbc2e9177424e8bf119f8ffb7e29127a0ddd73c230faa6dc41a3f29b3f5c1095f6be2674b8478c20e0d7e69ddd56adb0ea9a9c3b52a721f4e2fabbd20a51dbeeb6f93b05e330f92e056ae35f19ea292d624434d40621545a44e8c51cccc64ad974d29eb7bfa2b48822d3c59256c2ad4cf2614a68d617d9584bee84706e3e511f22883e4462ff36c9c7a1d392bfd6dc5fd464ba8a135f20bbeefe6cff47702d41721799726f83ce406a7833a94ce3db71793ab9a65460d028020f45da0b6d5add5dbf786e62d0f7ddf0d6cbcbf63fa4eaecf34b554f1a6658f1f97d709bc7334c3ef56b753bbc168ccc26f6dea37ffac38734739234129ba9ded050f82b43eb0a97827d66bb8226899aeeafa6fdce79848dba51f72b2b29d52784e383ce6120f3eceada2d4913fe68439f0f01373fce2528b9c2c57f7dea7bfca2413756b2a18d3b8650b76465ac7d9ddc42382503a1f8908f650e08f73b40faabc3b0fd577bab77ee42a211bd7b74837df97acd36026ef6ab856a2922486319af49e230977077f8c87ebeb7fa29f6fb3e2000e7b0f61104f6e7cf6e1ae6ab39381203e0c8047871a72ccf55c9e377fc789d36ff514c46ef2ebf3d544c49c3c0b05c13772af3f749ac3064058c0da5bbc96cb80d5eded98e0872bfe309bd75ccade26097d318fb758abed5ff39912ae6dc993310abe249c0b609c6756c3d9ef279cc8d7fd4fb1b6b9df0651554c2cc4cbbf43b1e5d5da95718b3d1982b81931e59c0625e7645ce86013019a1e8b554048b27ea4458c46c1fc2bcac5dd2b1fdf0a0c9bf3393b7cc46b6b1b5ff2dc9bb3c7d38fceb398fc484a6775b99843098a4129327efc5923daeae586c90fd98b4cf305a49d488bf1a28eb09a87522e3584046b4916bcf0342d8b4c080b7ef61aa6c423ca3f1eac6cf9220fb23b9230268c245c21d753cac86eeacfd6454331105981d19ad1c68a4e75c6ed0f3004b951c72b0d9b7008eec7112d14657bc54557b9011157e278e800d86d3ef644e2b9024d64edff3911360bdcc2fc34b3373ed6ddd7c1b526b01bb150b4ed360b9c7c93838f448e3b6c725a5f8c69fabdcd0635076b884cd14903bd102b2d80527fe44f891fd89d80bd558d93c93949666a129f2e785165af6913d3ee6cc0211c622e1c7e7496ea8d2bb0d49ae2915b12cd2c5891e3e91dce823168d030cf7cc04bdbed9873acc54b35449d7cddadb41755bd8af24a53cc5807f19804667248a7596b459d008de14bb1fee04a35ae49e5545ae8095d1a8ccc354f95293cc2b832be97ca5312242506b8d70bc7607cdfcf8021e763c7e853b9bef3ad4905e4ea313da685307dadcc494466684a7bc3126dc76df5b27f0186b684d0debe60acf3bf5b8c46b0cf8d550bb69119608ee777c26d48d2d7d5cd368222aeb79c381dc3016387a5a8a460b3648f4e8d9a45208badfb76056ef60ed24beed2ab3c6681e100455393a63e2269b6a0e3e23357cdb51161d990b1de1fd12d304a974bb0be13ca1750f147c5779e0dec79216b17b8aa24245c965eb288b9f8db860fcab69af8abf2678f2813c71e51d6a6504975671ba1f1e669562f95b907fa784c5df286ede1a71dd70765e60935712a2f4a424cc7ddcd360f7df507234b1b335d70710335deb14bd9f3925f3904d2089cc9efad42324bf0ad49ec05d637b265230d8e31d8db9f662e4a2244cbfbb47859ea86adfca4708f92610e5cc59b2ccbe31eab47c2edeceef413e02e6b07c4f5ab6976051ecaffc1e3d9227e708fe0ee0af738db7a6c073b02a795e2d008a37cdb754a082f6418e635ddd3363ad4c90b9ff06b3baec291fedeccc15746b56f8d7fea5a052f012b48fb0ae19360c11f1cbfa7678e2b1f194f1571e90ad76bcfe9bcb7061d3265a0ad08925e5d5724d9e63b8636c3e876c0ba43cff5aa32759bd25b9e7c2ea962ba8cc42203579b2e91bd2473825ac91a05cac2dbcde702ec7b5e8b0bc01e32c852745fc2dccafdfbfea53a48cd0c656f8a03f2160b03ae256148bff321813b0b16f647f3ffd9e19b42d3a591e9d2241f4cb4b22851cd1638d72118a9dbc5c180bb6efc2a363c180a9bf41bc8a8c4e8a8b41bca4e2be43d0cf890ff792bb1ade093b3bd51b72beef39a5786c52a67693a6e571b65ae6f4819a232c1257a06566f426ab5564b2ccbd9a9934f1541b61292f3a176dff145f8551eca72cb79a0f24b95eac3b97a15ff58aad7ff1d26357e59f111bd6e951def8128fb0b539c719312ae9acef4ee8f14f36b0848f7ee45eb18c3afa6d5246643597d98a9039184be8a28451d287d675314e34b83e567ccd6d00fb085588e36cdd41318ae4f2aec931182e95a13f8ac2049837f6e60a6ed9c18e97dac262980ad2d3c7704648daa5800f095d6e862f79d4b1b84a80470b8d868bfbbf2b429c5e51e9f0663a29b057252012be8682301a83e0813731ddd3800cff96b037073fe50d5c1f6629ec375ae45f7be412e5fa8152fa03a70e6f121e3bc9b7d21ba4d225bd41b115dae37b92803892d8ddf57bd89fe544d051e12ac0be39045cb5118aa62af31840efbc41236bb009ddb75f732d65d74ce4b6fcbc7205f68883986ef33e8588805b425d492cea4b171df8d491e4c78acbf7ef4fb4f04c518958a01ff9882d75059baf6d1260baabeb48ef5b2946bb065452c1e18f10827feda5f9af12def9559f1ed7c56c23c3d0ece44534a2920b6525819148ac1555ba957eedc238aaa370ceb534da8b688dff8470889973eddce208d2ea971891a9f2908d7fa2bd1231f214def9a786e3ad756df7da2b51a50364398ac509778baf79d617d04ab99304b526dcb08b837809efac51fc6a60f57de90f17470c26b80de37a18841c8b6db6f3ef37a3da7c68e382145f4ba546242ccf479f24552987856cdbf14d9ca73c9984b439e26df2a16d424b0bd215f66bcd47016207a7c903dbeaf4664e39092ffed737305e467ef97fbdcf61cd718ac838a4fa09c1514d9b9e55ddfc43710b9b296e92c2e282e803c1190678597bcdbb8537641dab9ec2a2400df4d31b101d34f71bc9cd19173a240af5a2c64fc09a6360948b90d1b40a7f0aa3d29a5417933b3f0ae5e64ce7cae68ad3be325966d39d3f7df12932892f678508e2c9fd87bd11632184a5d4faf3025fa193a294aae0b2d2a18e1be1d95504ef727a161c8bb4b4c9722f2c0f4e30b27c75e24377e525bf05db0d8725c71a71930590f4d9fc6a28fbde1c4ba22525aa76d16e573a8230dc7f0b9fcfdc28d7bf47b46896f256cc2cd88165eaf5a1674cb42f55f5d87390c0c1625437c260438c76985a6ae92e004480fd63000ff2e31ec8c7bf3c6f8ea1d4a824f0494dcd612fdb610b14bde752d386fc98c48aff1a57baa26f4fdc6c232d8e451899fb6a673b7b0be112003f4d70a952dfd6ea7a1fd77e28a70b94e05cd9816ea3ce6da38d6095c6bb84d68f1d7e14adcd9ee88cf25c1c100d7d046f3c331f99ae7ab870280671385f28e729a81cc80637282b6b97bc92dca605fc10e8a864588717b64a749c084b3ecdf65eba4e9db6903e21af8d44230877ea547973b370ffbabaca760f6525e1311083e43bd80c454dee24e899553bf6f7cd385a23fb3b93a613d5cadc075879b869832334fcd68fc3d067e59b8cacf9232703cff2bba36b0f22f462f104353997a040ec3252b17ac95a2a6c2d41b8bc8c282372919763149f858703add7d103fa55f5f143611012cc7e3735e99b5e6745e2d841090e45e91cd8a4a8a7c847ca32e78269096e0e9a744f748b6cd7b6591437b7d94d93b1c363f1a2a328b6ccf684b014c62b6b70d23ea34f28b845d1a969ca4b1c8175f78222774855ac3aa6f8a690b586155c0df83be429431ffcb0608b7c328180425011a00597498ba1f5a588db056c44cdb435f6a1f3263541fa3fe1cb004dca9848cd8d5b591e6aff223149228836c92b2d006ddc5a163b5590220737e3e5c7376f7598a3fd2f3f625b9cc1c0eecbea9b45ccb5545746f98e4037c541f48f994c46674dc139f10d7eafe7b2b90416f88bd8c31aff889b8424eeb05b43cb88687082f5cf145c41ae8bf546eab45317e269b02078077e22e79e7399ca4707382cb684e9eccc8f8d650a8d31a3329d019b123e504e008eb2624ced96c52e60c4e5f8c55ce68e4e382606ced23b2cd0762d0d9d24ae2a7eba2bcb1dc8ca8b0579e9874a13562e0c089a9e7dbd3e7cc1297e10dc0805ccb1ff032f3a3d04a5f55bdfded4754ee7743b5df1628c81b63ef8c6fa15e6e08a8f4ade4a66c95c89307a0f7c3864a1977ba50946fa77569f92b9630ffa5cd96abf3abd0bf232d03f8aadbc1382d72e19d21531c2c8ff1b1ab66e56797ddfc1a3787d78e7055b551b73403eb526a845dc830ab8b4a4adbc409afb32f38dcd19822171a5e98d2c697b55056333c2b5a5eff32b697864b1c56ede57bcd4c2fe437f8ad89ee5a1781db9dd93eeb6ff0912e23634d29d96f0237685e2f1c973091640e309ac6e3c66166de82dfb39c2a866672320cd21ee66ee2ab1d49e3dca20f730fae2c03ce02a01f3d1a4b038d596275aa5fe7a58e5af4462a17e0016544a8532403bf11c5c12b84ac2e41bae3ff86dd3a6cf4d441ed6a56a455bc7f5e16e2f90148d6aad05edb04fd253ae643c796c94cea48eadd9c7f77fc2f0aa8a6631755719496d1337685f7c3a35f32abf35b5ce3d7f0ba71b9e11375427dcf88db454747fa6416b50be91dafe9c29104dda1c8d0e2b2f6efd649a003296bdef07f50eb063b937c54adb08edeb615694286f3aa852fbcde925983c45b6157aae5d02448443e015dd133b86be1dbc1c44b30715c739e3696818e2778c251d9b0c9fe48f89566eba4c3006e5d67996101ee5ec0840bad49825a6366152be46b5135c04f9efce7cf8ae874228a1f33b80fb6d6c5fe675f3a5bc77e5afdc4bfd1fb5ab3ecaf7d5b2e913406bd5bb44ad62c53b97f96d5400b06d6d441b0f08dcf681aa328c817c070cfbee2f94409760dcf2f72a66c7a87980079d5735cb34f703ad89e8305e0237d451c54469fdd91e21028a80a50e158eb641c84a258e9e8ad9b4f2ba684aa159f0fe9703626bcf04cd64accc64838fe71ed5067978dc1456a16aa8b0b823af422f4a104582b44178f4d4a112f313aadb2b31384c8a7904eeb0b253cc63ca9ccc709dc59f6323e63be98d8cae5e2642e0a131350224410eda368917f33d208cd6867930a7119519ef1181373f7e6a593576bc07864306afb83e96149a56bf3d085e268391ed28378332e1b130023e740a34a7b3e826faccbb13a8b1224867f3ff08078df7fa183b6efbbc68323aaedd1214c0d6de05b80ae6b4ecf034e52cd897abaff1814a659c5083aae4d609010ac6efbf36dc406e0d20e4938c9eb9724804c8bff9e00e8564018f5e6fdabf36a86a3510440108c0160f5aca3537437e34936a6b00c5c467c44eb747c94065cf6938d4aa433f50f7728e438555de7ad7502c338eb97fdcc3e4869f5ce436b2417b110b4caff907cd525ba4d1a191fc7d1a96f1698a2ea141b49d16c32016deb90cb6afc9f16fa08943a558875e65228f1508a21dd610502076a77b0f681d99764bb9199708bff3ff0c7b846beae2820e69d1dc4046ef2d5bd58091e55bea962ef8ce4773816a87e275418defc6570361a2b497afe14664661e42269109e2995c37c9fac34a2e3e174c561ed7f28344fef0888752322989f5ef07f74130af78a8d8fa5cb3e2d9046c80b12582ade092198df9ba358ee66321262071071dd5690e0a486cacb8a705205b60f4222e465a10edb2a918bd6a485600b9723c5673eadb600c5b64c692b62aeac0a27aa51596a664bcf1682eebe15ce8e68bdb8aa13c5db12cbdb98dbce6809b71c9017ff70b120872ad84d44dc8d4d3954845870e6b40c6767cb7f5e8c71fd2312bab8eee6684e3de7e6d0b6c300a6d93c01394d7f78812b3b9452a3d655c3d01929c10894e39e745696c316779c4ad18f64532cde25b1a1cd3b66cb073456d51fd7bf77b6c099752e2ec536f3500a170a6dba06d3526267fb00cf888678e67135dd69a551a723650cecb7718cabaeff7183681107af0443e5715f9b200bc24c8f4ab44de020f68511a5dd53615fbedbed923229082a24bee46c127331b8cb341ff7a8bf895b77f42812c4c5fe4eb1f3d64ecbc7b6857aae51786bfeee2d361e0b7f88d39cbb47f9f8d66fdd0685245c4d0b2fbef8fce4500bbe1b9079a4970b03b904d9cbe65b89c909f6b08c5259a9a49f4969c0685f66cb4865f6d4a8fd3770e8b3de4126adbbdd93dd62163cf4881e7ebe04f9577ebe9f470abd19403be94beb522f66876030f4852169237e7efcf97e98bedf1b703a337d9090941d8fdd46a76cbf0846a3356b103c6ec4a921340ea69aa59b1c2d3b5908d159f152c75caa8a2cf5b3c84f14743c7cb8fd279241804976875de59845e9b63f2e308d9fe91b3b032dffa0f68c7bf7ac91f2f635b5949223a4b3083c97e86f512bec7242c1b44d5310b82c85531ab7bc1628689ec828bf3ae42593526287080ffcb94f3a884783d4c370c0df2e6629dcda7cc7e82723eec4f76799d0ef013ad66a68323b7d8ee28d81cbac792ad68d8ed06c1533daa50e56377c52dca0d05266172ed988533843bc144c7977c1175376d4d6548ac32bdd084f93ccb69174fa42cd070d833f5356c4403d215c6dcd618c9d29c85e300a6deab3c2dfeca0557eb5c28c4b83637872e8c16ea2be47c17c7193602e2e5bae1bb3297d75183c97b344a1de5fa56aa2a75e087bc6fd77da868d9606ffe462ee29a18ab8f842bbdd2c9ca14c924e50eaacc908b958c72858906c371c8d18d9915adfa759a6d4e3dc04c9bcf6057c9e5cb4ab721eefe488404d69167151bdb0488d8d41ebf11cd916e1edb745376e1437baaf8eec23065540fc5dc1d48fac46a7e9713880a0afe5f8a8ff365c35cb6796d12a4c79fef5c6f0c52f038c5b5753a1d678c07a06937fcda40f48bb10fb0bc9e3412e8e90abfeb969406f16c640a09b46b56fe18ed3f9419ba05a9cc7fbc7a5d6d4d6dbec62555ffd1ed2463748c663de51ed0af22b7e45d31519de6c389764338c14445fe952197c813fcf19f337efa26b83f7adc0c48f48925533e3b302f605ab5c0e02c97f06bda62407a066b2f95f71d2591e295a7dd3eaa1fff7debb0ea2acdb5d3654a6f1c5daa50b66d3f281fb46b0548426a70d245e7000eadb0c4e36b2c68820728f360ed225b7d011349f2d1190c5e46484fd6a3a1f7bd56599a6e8a97b973cca0ceb995b41611102ea8eda75d3dd1611c7ede5e7220ee523ed81292671a0e73d69b7f8dbe003e7929c18c3d51000cef36d1f203831aa74806144096ccc89d7de20fd951f07b86b246684bd1dbb43bf95f49d778e3d3aac23f7811d988843590806e67993eb372b7927f4dc1722e4bb33bbf4ba8cce89f9df6c42a2b57a548e185e1b925b60ce803a9585464bbefa142be855aac011ced8c14ff3cd6f97fe156060cfe5e41d81087764d7dc6ce5858137ae20ddbf0f9a551229757f34fede7795aaa8bd09c263840a5e5a92e28b7121d8e9ffade5eafa02493f59daedb431760f285c9d6d003b25f6fb235a5f65e5a9a8d6888680ac0c9286dd49927ae32ae90dd05ab18c9b8256bbefc705e2dcc04a0cf6ed218405609c5127fcfc5a021d147e30aa8464d6449b99d07d6b40ac8f890dcaa4e5e665cba5f7fd022e895e5be1a8dcca3f6890240b13d5e10a10d7e18b26edeedda3b0ccdc3133b3050aaeffee4825ce89caa0b07cf09a7b4bcc94aca216d75bc629059667533c4035ad627bf0d1107029da4a52a951e77d5b3393d4233eb75aa0c3b7201b856bf752753f0550d5925396b62228fbca5f00c4da96c66f179c00529fc41ab9c99e8473dca4e4e1fe8c7021206acf5ddf586fe2b9745ad3a84cd0ef25da7846d0804abcb22ea21f12aec51e203e7b0ce68e15baa50466a532cd08a7cfcdf7dcdf2dcf6b1a9bbb07f175dbd0b630dfcdc9022ad1fb2c94960624764df87502b91ed9445e6ccdef332a6ca1cf8a791902ea05f72fe9fc66173a9b6e4130cb60210f464d6943face7ee082d59de7717de05da3055f67056d39eb502472df4891346bc58692b536d14d75a837fe2335f9ecc65ffda4003b82e6554247dec9bf8e71a94d1db1e526d28715e680a5766341b95bd2b2a998b4d32e14c887c010819fabd428096d833154032b440e77d1ee6ec39698cb1462fbca20f43cb87a2aae139381da29f609e24ac3f2c7be36e2d1d38be61a6dcb20d6add36f246a1c15a2d379646439535a6445e9d871115826deb704aa1e7400de5b245be82ab80fc35d5c4c1ff61019ddd959193790ccfc4ab17e106244aaa3f75587e11c654bd13d8897778fb68b785ac1f1baa4b29c91b51ae0504273cb0f1a0caf58b6fff763641d68b6b7bbafb9fba9d12ace06f611529e7c3bc39ee33680e77884042e43c81fbdf15e43282b9a45f13413f81651522cbf193246a2ea03f1b272001b2886c9514c54f48b868adba21172eb4bcb516d176f313f3b129a89c8d5b7f6d86694d63379ff3603ea517145ac0fc6dfbbb6008d528dbfd8a571ad7e07f8c1b89b25cee3aa5295fe95caac01d5fbfa6abe6cc9e7fdb67dea8d42893e3171e368f3e5e80d21d7b855c767e316a591e18ddb764e7a46232a903e216f1fff7a9ee03588dc93e37a792f67d933b9229970951670306512cacc5b1ef24131c5288e9499f2bd8e900484113ff3e9046da819757824eb65064d08c87ac5b8b637534db5e4e79405e6fc9650a84282d139db71eaec0133f52fbc3ef244952e9770ab6a0c3224b3fcdcb30cb8a75706c4a3a32cde59d5379097d2494c2c417edc168864b26bdb065349c2bdfac837a60806ccc46d8fbfa8ba258cca149ecde3c496b9c1963fe094b7046cce33b8a1c755cc97f0476c446372b2707e6429814b861b05e329accb9e61c322bccdfb3ea918e73c85189d053586e45ce49840999d039ebfdb1f1f578288d03d58cf12a533a428c8671375811d5c847fad85158278744b803e1e2212d40ffdee9855bdd938b1362b9418822a521aeac86398d0b33727b685ef6e230e76c755c81fee9c37998992de898358ab47f7b09034844da203124a3f862ea4bd4c96a6334f52cb6d2202359c68746df968a7c80543cc23b5d0c6806827380ba2997d724ba6e020feed56bced02f2172e9260607056020df1450a8dcd2ec9abb8957046a9ef71a51057ae6c5e813b744f4fc058ea7daeedbf756a94c1e5c35014beb8e8cd2a37092d6c35d5cf3499121cabbcbac056fcbe3ef63bdedf5530d6c18175c0946abccbcaef7912b5cfc5deab5ef88f4577d5b234c1ab85e5e1d1f9490b21883c880ce430cc751413d38c39f4212278aca7b7fa54d0e8795c18aad573ed440efdcd24c22044722c93608580199405678d8ec8cd23cf2ff73d63f792321f7c4f98a5fb83c17122ec1596a99830cb143052f657cd5ae1e8ff400bf3eb4d1fd9c11853d3b75f82f0740980fa015cf7f41e03bcbdcd8cd22b0adb429ff5b8e38ecf5a0de909cf6696ba384eacff2858e6ad7864250a89726c4017ec534e7a6fa3be57270522c15e61eda7ac3c9e0ad4e57770ae0d292ec5af8388d84705c74bc7cabd97c36970017be01daacd72831528515ef30f0cd64fd77f57eddd6331fbee9d102c583c444d5fb42181e44666e8e1d50f02ad341f0cac1218227a71a0530012611c0cbbf420fd490033c899ca258cbfbab8fea5fb2accf9033bc1479cba93c8dcbaab89aaf4282ad57b8c984b720c24a7b9f3af637bc6a47d4a9a49713dea594e6babd7844197485b5351859f0eebd611a9f35b4dcdb0675a6e6edd765709e78f0b5a80fa7207279e96086174fba8dcfe72660eb404480c2562e8de7875f669e336ad6f83af0226520e0952ebf27ee8cfc4622812cb48752a5a85a4155d5a2dc91590c5d8608d40c1f69bd2ccb74d1eb84aeaeda7db74409224d61ebe926eb13ce006942dd2a6d62eba38e8d8cfbc4032167e3e2bc698ac49e1785444ee8cb2754e74ed2e204c6313cf71b36924a6851f48ac97fbd0771b91b49790846633dfbbf258da7876a0b2374fe0658acf878fa1c786448f7c687dd17602768c5318f0dcb5401cbf2dc18df23ee2c14eeb02b1f779f726464ec9174e59096dcc327e2ebf7f67c241a358483676da9842820b74326dccd555a008c19a0ba134cbe4217a4d1e585dc3e021a38b0a57a51704e1d223d289acd19e7b00987b0aacd731bb9d22a8f3590ff40665377ed47ce2499db248e1c42a9d35e2868284b31612ed8d3bf28192a35ea8cdcaed10e5b771da79facd922773a2a8e9f2b8e91b4ef08a7df48981c41dac8f98872581bd86d2240768329c33f97d37f4a4b53557b75cf00b6afb7a4881ef6d9cef1a834714be830e60385119361806f60fb79c186c1e7747d6c272fd5f467e098460b4b7b9e84f11accfd45a5175e71188b7987dfb37d99dcceb6f614e4e068e223b7c488fb53ea70d6382cab3ce9af327533ff68936938894df857ec4237f25a634bc119303985ba419c69424031ac9cdf57bd66ff2b09ec1d743438f7626ec6ca5f1c3117cbe3782ac41dd6d98ec9ac0b668ffac6881f1c881b9c3c9a844da5354434c66ae81c7d6ff3a214227ac7585d93131bcc23f645bb1eda4bfb29d052849e9e34868f70133b7ce3c6a88315b59e7efc361217861ca1e48b505add292802d9194022fe5434eafe4e29f77adcc5473b5446f49f0b37e7f20baa8fcb52e774d16efa508ce92ba5754776a3ba84635cc8a877cbf4970368e001a05495c8df16248ab5e08afb56044235e1ab03c45d447c4faa43dbab8096caf2a43486ce96c886513c186e71df0e32bd9daaa334ccf246f4575cdc9831da363a01d59daba64b600652e0e567a32a62996359b316c267a30b56b30817bf3545418c3d8505e4448dae071848563a03dbe56e1229c15cae2fed47e39e79b621c70f79c608bcce447a77da7be7f475e1865d6d795aef7501121219daa80021b9a5b13f3f988350bfc92aa21e23a2bdfc37959789a00f54fb7fb20211df7011298c687e665d43c1163978f436952423a8f41d5787c7037d8c0d3226a50a9072d377741188fff5da07bc84cd468abe47d5db558b66e060861211dd26f1baeb47548427d55a2f83c6cb8c6f4ae651525c699c1a9471c87dd4509ad25e7254db5062c86d37cc23034c44f88e88f1a9093c74566dcaa5db6d5e0d6b8b2de3c8b939271fc152d20e79615905121d980fce48b269e94bb6f62c25cfb46e58c7fe14576946cab2888f2079db7185150388a48f47bfb3f02e1618034a41323066426308d84008786279c58e7602aa47b3c8e696a495150b3ab6572ac7823a83a2cf901c1186086c9fa0ffbee0f9b2b2119a90f30d5a7e7878b002bc49fbd61af4407482fa756d0909a41aea5c642d5f52f7a0a23d967614c64db83195b710b87c110d750336ee104dba80eb28301d9b86d01ab2f27c5e1424e3a505ff47ed6ddb8980015957535f57c30ce192b61b468ae2de064c31f641d2982c5972254f2fc42b68cc83ab9b44a525c673c33603e4e77bc24d156c8d346bced7003784ed2dc44f4db43f6acee0763120aadc9a03abc9f84afc295a1ab7e940415ee3d26da585355fcdf0e03378f648a2fb3673a5f7a91cd17850941b32655ec64c314ffff8c2822e8b3ae1a1607cd2c1b9f87687875c1eede8116685a48147de137055637f86fdbbed8fcf1893226c0bfc1461bdaa39a206a0fac0c8de14b6c105d6b0eeb2ea4a40a4b9107eed73681d72fd60f6d0e45152394c7becbe965e1285c920b7a54cc1bb373c6c4d393d2585917560bc57a1a4f314e64374c553e5f5eea90f7f6a58b69c67c6b5b95929b6b82f6d0bd9db1136e1505d68134ff0266002db437868155b7e355af5ca2975dc6f4adc71981e2f4b966a5f0f13fa1ebc1c03192f9bd29f36b0ae2d714f90db2917fa00a945133669bd1c4ed46f24f3eaff9dadd7732eaf38e5277826899ee344e0af93d7bcaceea338aedee62eb6f1baa2ea8c46052a7110bca75e0f0c19ebeb5f16b709fdf5728f8c0b225468b7ad5d662d6f6bac8ceac8c3a2d3c47d3bbea0422ecaca746530f0e647504d620e56242b9aba26c0acfa498ddfcf8ab5374b37b1ac53b9fa09d906f83231d1128601123efe48f472328f82070bbfb37c588cad20e0c7609029e68e96b001ad526933a013a9550f9d3d94aece7d03f93c5a44a9cf69d657510975c4be0119e51dd6f76d2a59036431831b5f9ea79b39c71c0d58ca31f569d50a8e331b01b0f899c10f9b4ce8129490f6a74826e0fc209eb69d3e18fa4bc4d51c9771bdb5850376f3a35fad2e0de520f392c8a0cee69a1e35d4b20b24f875fec58d6cbd0bdd2c8658c7826b4c1dbf70197b2ed1eb6f409c080bf3b4ff19ff0075209a2add76883140b8ce67814dace02472c798fd60172faed12546eb730d0160b69f2e1247a308d21238526b6b5ba58e7ad4d938656d67ccaac5a6f4e453935ab921be9d74f29d47856fce04d8860c28f0e6894849f7ca83dc3c279e42b7aa854cb125f1d41aef3ae9f5e1da72f9e54e82fdaf5ac3ae931bb292443097abed4fe0b0f3bb02baa7bca99153c16037658a616641a1168a05bba2116b9d7dee683295d12bba5e5fdbb42caf0b43c0178cdf8cebcda0d0255649112ec2ddf5c741ac46389b9d7af9a51c223a6576ba2b912908a256ab9b813f8ba5c10cf764a542383136ecffeca4c769ac1553a7c17d1d17b05a5b06d1b48f54e44e432eceb4b145b7b1d8459c48ecdd5b46385ba8e079762ab9701c8bf3d840900ab582d2dc5ed0b156e2be4700ea61f4111bd06959db8ee410373d9d6fd045e8acaf07c6c79810a54b93c63d96b5ef854984bcf3786bfe1e878e310b48c5abc0d7f02b785236fb0824c9e46f645b00f199d8f7f63dba2e53012fb8269078b8fa1ead8eab3a201d614d6747b22cc078a63cd2d828c642560712d4e05660742beabd55ca40cce142dc291436e32a6260c4cfaf80ca5377195460ccb7e2ed764ea6c07b357a98d25805fd77909115cbdf32ebf6aa8ff84ea85dda876c10932ce20551f2ee873c9b6bb3372aff7d30bc0ecd94f9dec3ca719734fff4709bace8b78025aa2f5fa1f500f7e2d043941630305e4657fca6fcbdd83d580a21272b3cbc9e6fd5bcd440b93b571455f6bba0a9688b19a1f224476f730e000da0e59f9ea187ae8a15d5de17cba62ccb7580219730c19acae623463e6da0f2807e1e31aa13394ed63ff5065fe3aa0a240a9cbf9acae4bd84075aa1d49a3dc3c8cfc0c50ed575e25280f8ae0b397660f0dd7f58b3482d4dff82f249253eb283892b614ec0b84ac85a14a1f6a63b467908735eb868002e6f7b9669530bad0c6ea7f83967f19e847d1f1c8df817d940d5d0134be07769fef7d5d80f935d5cff1ef9affa61f135f0b6bca402f969a7626eb7e90e40296e36ff4087a8c13ace15008b40be46596425fa091c171eb6195c71065fc20ba0c076a27f5652f15331104358d4a0590b57fa367267a066f0846d3832868b14f4354de8f265dde5d5262c42be930d4a2d935beda0555c4d9b84cff79eaaf3fa97b0be44e332656f767c39e3939562f027ef914a8ced5aac4eb4423fa636841342ac410e37ed221e9b88d117ccb21a65097c68bd38bd23666e01d5b65d4da0d1d0b1af302b0997d7790f4479bf2ec7c2ffc69a7fecb3efe2e4ef6c57a6a50e9a2f5842188040a0042a63ef8abd7f70bd3f8e3a0d0adaef30f7733346c8d99f224576020b2912a8fe6e43e352d899c2fc1b3450f4abfae6fea1bf8ae7d8e1ea78cef244840e992d68232fdd7411c7dc5273fa0fc39011107a05f1638054788ed49e9d65533f29989ce54a4bbe8d89e73ce8a95d045fd991ddf2b208dd9bf39a591f50e6ec793416e2867f54e8c6c7e89b68c2fa3d6cf351f97f403ee8128e55317e4ab17d88010ff3408bf10224deba6d7786acc84d1ad3e40648425cea6402468fb4ae5ede479b5314b2aacc6e164272dde80737b92f8825f5ed0740482819f3fba7826297908bbd44ff00b64ee95d262d60866319c7cf09c3d5b2926ea9d9f068801c8ee0724dac66604b03ac50b18295775fb8b0b215a51fc05bc152a12ab32d44cda758721c5df53f2aeab1b1e3490aa52901602e11113f4cbe12fa3a2a76011643036f3accbff3ceec27b4f0687f60def3d74d09f9a0d5c08e9ef211afed3397ace994a39748325ae53bea62124348b1f63a9274a946b68069af217f81e270b89473c8c61280d4fd5dc663d46a00bc6e576cecc8f40d39334e3e1ed29274bf78ed761fc754708f78d82a7dad2e2814c8c89ca40639d0bb71502306afdbc8646f6ef362b79c54a8f9211aa290ad8b363575fc30ab04aa494f8ab239fba636663b950ccff763bd3b95a3c214ee2344ec895c4bc9a16aebf38c4b950f59b8e501ca36495328cb9eb622218bce9064a35e3e0d9027289ffa5d9f6c8b4e0782bb31bbff2cef5ee3708ccbcb7a22df9128bb2187083882cc6015984eb0411a99d3981817f5dc5c90ba24f0940420c5548d82de4cd39856438b0eae2c0155ad15e281513959f7ccf998784e83e803b9be5b1b4747e7fc50db3699f1ca41ce9a2ffa202c00c5d1d5180c55f62ba859b1bd6cc008f85ba3a086cf955d3b46e51a00e19adfb56c1b984f7cbf05137c6eadfdae7dab54115199b96a130cba02147c47c0deb43dcc9b9f08b5162bba8642b34980ac63ae173dc4842351fc1c8a551afbdb58cb2b295490782130daa4f359a6a80d7256cbbcecfb9a97e5c4f2ffbd8a11f00d9fdef0aeff835e167c5092117f843447a6c67b5260b50a0f434e9b26585479ce67ab2184adc7b31c26d665642d3512835faf21e4e3f5dd5c44358c0e41840e73c7e9617bd6c5ef05ee30a46b2b9c0662597047cfbd663b2cac546ff55428a3b09155b8450e415dc42ccd6b71a69b29caa0d55104d7739d9fdb738c8151837b9fb19cd85b03885bdd76ed0a07c03ba35c1bf808f0aa32fbe90fb9c9c846917faff3fdd4e236c284b76c02dd33753dc9017742d8fad13bc28fc726775196ec9ab953febf9bde175c5845128361c953fa17f4cfe678a4446900f4081ab8d74ef3d1f8b1002edbf8cae3db292fcca0637310ed108f280badfe5ec5168738c4f70a59bc6ea9d1e9243ff2b951386fb668e93502180fb63dc404b6f3d32584692fdd10755edc8f0a2b79e60ff73cf40e689b4c1fcfe09d99de14af4c1cd2d40856997cd0f02ca4dba9e5611d11604bce986d1891e01e004bee02a13b61a1ba154308ed15dd5509548192892ec95d07804747859c8785bd1095a8d42ae5d657376d465c5ab1aea3cde80e3bf9c8e6910a944c0aaa742ed6537b7a83cd6bd6a7cd9843a926b5298caa9ddcb985291813f438f441228dd042f60a8047ac0f8b44c5fe34c02da4fdcf92f873effabc8028c9bebbfefc8559df077e63bb43d3ef3f5158016f7d07f103b886c0046422439b8fa699fac598c09ce519edeadc774bc6af9bb396d73dcfa2d031fc3809e82bbbde1d5499f9a6364ccf5c299079d4d3db9d86860287470ba95eb7649d173ab20450e1bb270021f57349e43856466eab823e4339438c70f6982ee44106d1f5b781269dc48544ae3d62f7bb40fdfe4bbe1da37c393ec79de89a6564169d956e9cd28231c196765497191f450542a3bbac08d2a2b6b986e9b6965c218ce73050bc499c061c5d9425d57a25640a18b8cef7329e03125463790b6edbc3c5db040cf04db9dff8ab61cdfd0c7f0a316b1fa49fa7dae597eb7a71d3e31fd5ff870619fecb00054f3dc652b21762e5bc3bde204f470b3742950692e4e75897d4473fb504f16205de930736e33f273588642dc4c9c1a26c96498015216424a56dbde62a4bad2fb5a2a17851658d9ff018c8dd00b432d7327918a13620157f4b3ae5640e384dc20ee89c2d9ecaa9fbf628a48f1dc56148dee7c12fa0ce363a3a0953600e52405ac3915cdfffd1a4ce2b4c84b2b8dc2777e32d691259fc89cf1654d3f9f1df1af711f213f4379dbf8d44b72baa3e9b46e19d96dcc469c27f36b8d94d9dda117cf8073cf07aa2a48eba0d9ff89a3aef9ba02c90e4861abbd199d939901381567df63ed821a1e328efe6ed80336c40d9470326ed3fae1ae324b8cbd7b643082217fd2a7fcbfa84cbb163b451b2f079abc1cc8bc8652997694f0083b1d747fd1244142e88d0977e403b0ec2640f39ea956f1a702a8700a8347755d81a5cf1d02ca69fa53663b87f0e7149c1ea506363ac95cd2ecdcc99e3386ed44c4a4dd0c7542dad806fe5a8e9b13c993cf2796d5753d0550fef082ad8bd2ae0df30976b4272c8538ff658254fd7b642a089b28a075a69d38d715e8cfbcfd4921d28b760840c3f2c9d1372682613044a4892b9060c89c7dd63b397c72cde0d37b143930c0571702558e3f51dd71819e3eb9ddd75242ff2780922b34094d75117d160e0fde3c44c363ca492ae81871fda56611c9fb590715b2a852b1b4b5ffa23a3291def70298837940afef66115440d77e1e5b67b59c91029be0f14c518158e9ae956768dd0a0b76d05868aa34df7ecd6676517e79c586cfb66ebc3afc8dc4cb838f9cf09d2a9d047e13698facb76ec7cc3a5f7633d46510315a2839f43c1168290a9651c3de8e1c66da9eba27b891880f0f2bf28b583f886c5f3a09c48bf68a4531e56da5f6d1930201aa9fa1734b80fa7a540e52df90dbce67765988a48ef1867e9eb79dd176522070206747bac9fc7e62d3cb92c08c52ed9cc3ecd8c6cb97afa2d124fa16c7261fc07f8c5bef31fe887811ed4017804c713753560ec47f2571589a6ad47ef0404060d7d8f9f397eb994dc30821196e73df95ad9cda617f9379cef20e5a19271fe321a9d1101538bf20b8750a21aff5d5380cd0abaabe8e143555de326b86f9dc451dca005db7d304b81ed9024ee610a75e18410a44150ac43f21f303d864ced4434bd1238b55ea4f5952fa3dde18b1a8551c52525c09a0d3e03d225403b13aa84da8831ef520434d7d1509a6ab11d18b7ba89d1d30bb5dbde22fe804d4183e5ac5e8c4bb3ba72a7836c615813185ce437a618d020b76b40a837f9660c121cda44b46c9e74cc62f0523d757069afd1a7f49b687f3004018c2f6a68d6480f2c2c042e85936cdee8ee363be57c6b61320b58337f0106258ee10899f7d8fa9207b9038bf11e51566a817b2ba148ffee586915605bfd3572172069ea97afea73d4589223fb9a234fc5a58bbe50045b99db95e04850132049b3e8d5ad98753981122d02ef41b1e98a9913b9791d158d530d625d4477ccefe53b89ee18dd8d2b674017b2b3c8d1d8e5521c3a284d1d363649583aad321bf64bf3e769f1b5c9fd3af2ace1f07cf1c9727755c30048106850a95194f84f689e00ae0fb22076a8bed88d082029c95f34adb1b360bc38d4c2677dd811e594f1759309a4f600f104a5fabedbea8bb8d54e3e153be598bbc9e89a1aa69422e475d139e54669b145c4d5e83d9572c94f77ac17f32eb920442053d055571089d17553a3aab7380f33ab7869cd45a3e50f3b72098972b5518f7296944034727f9a4f006245bf8971448572b0f9915b0b566fe62855e7f624503360290cd5679863198a7faedf438c0676e441b0f78e34ec34998ad1039c561e783d479e8c310030b778e75673640dcbf14c6e68cf4ea9030cea3974f0891892bebda2984b6a87e828257774429b28207c9e2bd5411b3ab649309c3aa7b2d598a7cca891b8c9b5464ad0dfc0481952fcbd2f9f8e9d0d59fbc63ac86fa8cf43c159885384bc0a99e9d7bfe0f0ecb475d6c78688788a5a43abc2386b2a5f6b030f8d5f021fb148805e45f7e1097045dc849facbf6015d4600d5999a9332d5100bbf4354e307e4d53c85dce3b0e4192327b07b067aa42c94535318904c9e137a14a1fe79a8fef613259354c955917cb18cbe41760a462dadde52be58ea8d6dbf4a5b16af63f7e25dff0c22db5907f53dc646a76a269397b58ac55747c8a972f82dca3857fe7ac2b811142da86c2f55f3735125244755e1bc528c6b3f1b0e874d6ffbe1e06c403ef0240b3a6936073056504ebba124ab698bb3564d9e6061835fb6ad312c7905150de6d7d21f1eed08f061814722b521f163f6c3c8b2334c5812ec951ae6a3b27a7760e96c0c577b2346c354683628fb5a412321876a6866f492ff781a3886e588a5a051edb06585bad43f784c2db727927279e9bf72244f78ba22a5e95365b5ad57a52b9bd28956bef64b4d0b75cd793db6ef84bbafa683d6b6cd4709c528a1225b6594d6517c020a3e4fb4122f5fc4fefedf8b005f08887619641eec4d84e5e4ca9b13b573f5e617936a9c5f7805a33b9556733da3acb8bf70050592a44983abc096554dbb31cf3fd3027e07988d105bddbffe8141face54d5a003d99cbd3b041504f03f5585dc8c5846a3e91fae207e2fbbf56bcb663307d7d905a5391d417b6ec807b48fd782adc6a1b1ed9b9e9521a8afb884cb86f6a632a3786601a84b10cd9b20015d7d25aca635f088eba63383a93605152ed159de4d4b23f5470f0a6e0fb3210da55d0cdbce238dbfa827c21c3aee717c964e261c9e644bc4e4999e48fea89b4dcd70e2f6eb9425c2022cd2d5ff834ece17fcb01cc90b88887daff568c2c1ca1fb6378c1d9d8cbabd497d155cad875925361003f3a4c8cbf8bd6cc269e9ccaeb9e7e5cf1e1e2e649cd411860fd3db7085484b7e44ceb0ab33762d23fc57d24186fe03c38759734c968428c16e777ecfde3a2dafd65ab682e624e3f83b6fd652323692d2764b6de235b36c4fa1812ccf4d44ff839a7a2e1e74039fdd0559dc30e7f4555e0148efb21092cb974358bd367b6d76487c73eeb75e9dbe0e4f0733f51ea12bd1b11a410f353c57b36633b94c32af0558d08f318b6df11a5613246dc753be7aca2f15e95a82c1fd3624d5c4cc39168031b06cfcd164b9bbbe9fde01ce6552cb53ab27db2f84997ae583b62401ade23355e378bd6467139733933acfb050ca29645116269a3d37033752acf838bb0eaffcd15b3d6faf52c3804638050409ae6ea3a77e06b98a82434caebd16ec67e4037b7e6495302d316ef8c949a217b6781b4ae4e62ce8c43e40f0a16fa8d26410a606f2c7a1ead583971882bfcaf2654d1f30743581e9bfe01d1c5649d73484af2476c27d0531aeacd07019ed85dae88f783d55cbdf4813c136b29660c4283246f92f53035f0be8c3583501262f33b60fabd82e34c440269731a81cba520a138b1dc82bb2e7cd14785eee4c4718c5a2edd5e072eaba3d33f8efa831f3ce2ca290fab0d42dc2aba5aa887d3199b9c732f0f1d1dc3f57a2da2143db1b43d8b525383e9be482cf5d898c99181dd857b4727655da6db66c4c4d4f8f86b4ebaf8965e9df4eacf60722f2bd27e9ad64a631a9330f6b3f94b5e078417bfdb64bef2c81832ba5aa1483487033ca088c7c085b1eb55a0873d25eda621daf5c3c958e5b6438001c163f94b1c47562455e9d568f9d4a427c811cd2889ce47e2b4716f9968e6dce07929e4379659610c96b84a96ad752d8f78685a068956b945e3c8de84b09f399bad40c1410cbd208d95636d0849773b4d9953708f7d5cf1e431d3d3788ea9e7fa62cb7f567759c939ef3f4da7f3bad072420508b05669f05e013daf342fb8df1eb33bc4e42e96cf40c2e77d6f612be985525fa0b8f977383f4f194cd4211844288371e4ca31a0137e89f695c13a3e0113c6638c8018a7e916c0d0afefd290841ad22c314b257a2c94b3090111994ec8800a45de0bb5637e53da0bef71122a8819e60011b3dc7cf878ae6f1a38227a813f96290131c2d8ce5138f6b762ec1b5468208347b66b6b720a38401195012b2e90309bfcaf22b38e6003322f066995cc60d757d8d1ab0d93ce7a7d98ce675a86334ca2a1068b2fa9d6c8de275c24a385c78a366dfe33e66bde40c098ba09628ef9ede1c9c8a93f4451c3b2aa9084199229b46252c1155e3388ed083d29931455d3d00e50ecb996a4527273f1b70648987627530180c46360a594a08f0346bf527b89f0a7af39a19f6276e51988a9cdcf2978ab0770839cc36e2450fb80c1d2c3c5ff6238289a36b2f723b71404c41ef887c3b3867f0f5e2ea655c59e3e46097cf215dc650ab56ea533df802a69acf741cd176475a07c1e60d3bcb3b061f20fca3db3dc50006e5ca994ebde0c0b07b12c41de2419e7cf8606d17a3c6da472f7846badb3342162b8c1b61f38554ffcec640066d0a17b60a665dfd1b978445a3fc05f862b59445db9495f92d60c25d65a3572bbf329cda229036b37eca61345595ceda9e22befcf8a3ba8842e6aeb8441a4023da7ef6a8f78a9f3648b28199aabe2fdba9f1c49d42c8128d27d403aa3546d7f1c75d9494aaf8c8688ac4d4d5df43d89e4bc4344675d55f4fe2a6cf3d24407427581b7d50e1b59ad138207306d77ffacc4c728929d2f9c701c5b91170dd94fc05b646c79da7958e38c6618d2ce12c8d3a380a1313cfc02a761039f49ab6cbe47f3e13d34a89833c1fbba321693a6cffe27253d132ad7e1d5ea27f94363dadb55afe4c9080bc5710f84e94d220705e37d1b9ddedeb0b16dd8c2a2ac427fc1d8d7e535bcc01900c6b99b6852347d998469b2d1c0f0350c931653e4fbf1af55039279cc5f1255fee218a74affa1d56a047f27b745642ee1c21346614793695bada66429764580972d36f93cfcfafd4205f7d2d6c6ac035e1b35248e56be5712be8428edb8abc19bf1da2c5a39e7ebc66989008f9837b46e8819af9dd6f888ae1c3468d7c98cbf4099ca15711b457174d3eae2f11fa52fb60972f5d599ecf5c0922484ed7535ba2133e79c5afd7e91c14ddeda6761a59144ed8a48761c080e2eba25c2bfefd124b50fb443bdea7a62f5abbf02107f352a13dfa0736f78259fb9816024c0c8a9efb08476b199f262dffcf5f917990998db7a2331da3c2e44d0e18a3c76cc8e381d287958057ad0b95dace40ee379e98ca41756b63d261226c2f14b22d8b5efaf43994e337df68fbb5ecea1e7125297c4da56b690fac525c55359ae5ecde2c96faf3ad26e59a2b0630539c33434e710687234f58846855c0003234bfe9c81c7503fba5c2c7cf47a8c7d216e626b0658ec1e2b1e1fc24d51c0f59740c51764170495581692bc97bb6eccbb588a7547815c7f8fe346868108ce3ea1db4a0b7a292b2380572b0ac0a2506f948982dc4ee17eda1d5c5c7088e23b8becea72b7d7ed847a40d6b8f4044aca27985df63f166740eda53c50fd375b9a32ddc9b7313c6406da99a265f3ad7098019e1773fea7d7f87aafdede4608c536f4bfe4d14506edb3d82454b511778b54023068ea5154c9577592084b94a2aed5901cc2ce83f15612ae00ae77deb5bf93cfa2ebee85e6205cb110e5816a293adf701dff4b114e05918d418708118b80a1f71bdb4fa601893c9f446a472495da76d6132e876d731d6d310f236bccf195561ea0bc7d6091b1757b514ad3f95bf69d8bc836869e3efadfcf24778450c80dd98e858748ff464479ffa616197f5d9c482b16cef7744b1e0c995eb613e637d18a1a4bf9f67a5ab4afe2d2daa013c2edc5b3ad409e329252b580c5b1ce30540b5367f4f238642e348e5f2c8a41fa170d7139c3f7afe77e71d1be997ec01851d23343b0db926d787ba754dc39cea09dfbb80fb500147a8cdd1cf610756688e2110400ac47e73187195e11056142452cd97df209a6c44f6078d3a4141dbc9b17c03557566fa98d20f68c95b4f375fd75a0362cabad87e84f056c512cef5762b1dcfadb21c417890ec3ee462cd072a70c96079c79918050a491cdc7d9464d0b16d953255bfe65ead52a21d77128349b20c3797d001e325eae14807b53abe9ae3f90755c491cf92fe0daf0364284756698bceebf37057f7b02b7d64afd1f0dc312aaab45f7a30a744ae9c01f02c8c4fe55fb88d70b3a4bc91d9d75a294c72e051b404c8f66d09d5eefd56b4da2723bc455aaaba7d484a495ca9f7c0e9aa9fd1aae7536db2e76a053ce3b88d406ef1676820e69cc75d4565ae2a72b3642f65429eb05827ca0b5a3b9a00512d490a0be9bf7490faa384351da37d0bdbf1ea5b5cc265edd05154798f1944de057fe026cc93e938d6f125be4d5917d178aef396bd3dca0af3e1aa515a6f2a3c4d7f94889f9e95e2672cd06253454e2571f2a03f46745299a8fa000a30b34c615edcd9347f94ef10bbc67c618db689e92ab7bcc1288ca195e21678ac0cccf5c6a1711165a4327f1b59e05cc7c3a02bccd1f54bd2a920c8558274da5827dfca840c1deeaea80f0f89fe3b805b43ff4c393f943ff04a4db3cb8c61c6972303d69f8ff978a188eb738caed72f2e7758d0e95c017ff5fe02974a1ee59ba90c8ebeb9323d63cd3c8e5432caf6cd60b6d6106029af9bf423f4225673572865fc4642eb9d77e2648c725de5cecf4ebc607883b6a852ad90406b0b53e24190da88562acc4c68c2fa1adcba2068d03629cd35884cc05a0285b05ee094b64bc4ccaa5b1660ffe40cb5814aa75830fc4adb27055caaf85868ee669af0b98676049b2f9dc56e590e619cba13e2baac91a88d31167453387e91591304d8a4201d63765b8ab31f7638145fe0733e06fd9fa16ff1b751686c9b0488b0ac6bb4a85ff04ba0f0f724e570e53fa0bdf4a3faacfc4639f41242c3d2bbb847842d81a18b1e7fb85be91fa189a703fcd8c27f854f6fa58123c298d92f68c5e51c9e2be962e6abcc44fcaa9572962e59f837d83eaceb58f2a664520f94a42f3f461b7107421abed04a5ddffe1af4b196eea03defb8c4ff7b56a7080570653914ff629d5a000c535610911ed87eeaacb8a1fdbc671372d887d12a7c21eb8549ed29684ea057d022c8c901e07a983bef26f0e3ded7d907dcbe5b9e4e6dbe862d21a844083218934a69e7a7f1842c3030cffcb5ee18bdd8cf8a51f452957555efde666b6f4907c481b12ebab2b18a238a71364ee2acb82aad7c2b345c95271154a5c4ed3d5d956d19e7307e04d4a0360686f070655bbc3b26da1e83bb5e11e78ea83e1f3592eba1cce53e1553ca396d7d2fad75928a7635988fd623da72fe46df11930640898414905c5c9e1c6027017afb1bff3feb8bc86b909ad24c577810de3671045d365db8532bf6a60aba0efcfe5a2239b8ce061ee55bf4f37c8d548a98d0635ca55353095b1f0ff5d3d95e0b57c98a877345f024719918b04ce5247209d1292aea55c2ccec32c2be4d8b1494c3e66f347c2e627f19e55952eb21e72cb730a9919f35fe973b5ce14f440e5c8aecb7e5d63754c28ef56f447ec87ad11cc87e135901840fa56d457836201592e785f9c74a5307cf35307f8306188847e9af9a2bf5ce885c04cc33d6009aded5a87dd504297d781b5dde93e454f25d0d8072c9e949b77681480aa7736e0d82b6a66e520e2759d4a05cc6fefd048667b44b6d33a11b2547e68505546793e5cec76ade1083fe7bf1f16775eb63c51ae33e3f0d68aa6eaa04db72ea77eb0689347a2b95719ed495c6ad4fcd446137810450d12538ad51aa3762a7c36a9baa5a4422fe7950ac313744d8252c93e9adb5d898ad206546fb8c0edca91b1a1516f95df0eb5ece34c1d5a5e71f41bf33d3d44b907282d3cd14b5e840e6b9a33590dcf5b2ae1f73641cb6f86caa6818e1ee843cf8bf9e6cfe259e7896400cb08b351e4ee11e4f95dbda7cb55769975482e0f5133c515530f604243d5bab75ef82c07524bc7bb77ab91ab79cb115e7c944dccd0ab74a5bc9fb10142d402108d6e8cccab4e2018d6e9a5ee5fddfb20def8aecb95e1beda1844babb917a7af46718cfb79b8c1683267833d8eff00aa060f7188459b4887990ae7b05e79d86a1436e07bf4d3ca614a3988e5e613da9d22332481344a57c660f5cc060d99634dc36ca27952a1a7229a1e3ccacdf0a364f4f8e66f591290dcaf648e3c547c6d6d541c461c5a61f6ea1a6d7db977f63b479ee09f18ff50fec971657eeef4a11bdffaed0de8faa0541321dbd80717d307a327fcebec2478e1b7fd46bddd89c1a42a7895e88a20155d7fcaf05b2c6a44b7bc570f5e954da2ef56075644ba11b1c237d099f107618b0ba3eae5a8c84e02ba7e5643333df73a440766c35bbc4109e6d5453a99f8162f191cb9b99005793fc882e5391b8763ad15ee424047f619ef1de44b93109471823d14940f2bc53010d6566c936cdd05998bb6ceb0417fc4c7c5cf90f2a5b452e8ef09e21e203220245b811237df613ae692003c6ea68678275a0118caf34e5d90ae5dd5b385c238a5037f5326782a9f62762061e5113b6e3152ca12956a84e96fcc1398a498181d0ed64f68a6d8f8bb23a4f387dedc94ada7cd9fdb07ae0b72cc886aa74153d02f3b38e6e47724e1e3057e319863a46b9f535d17fd65efdf26a71818871b1ef739e3003482c74c6be78eadc6e25dcfdc89bef18238212e59ff6c21a5f36012f693995ddb7e5688904d1e360bf8551f13b04bdf28761a53ae21194e649114db6fc69a46f2db506bfb3bcf6837fe14f47e9ee366b5c0d650bbd06cd476bcf26c5801d644bf945609ba04e2f7d2e478672368f0641563e6922742557285b7156602efe700cf97a1ed48a1cc3a60a2fd87ca59cc4fb5172d637a5bb59884454b3b5543264ff274ce8130fcbc5f474f0a3f97d1012f5d20c52331462416b63762210e9caf6c72b43e25634ee3c9ac9917b4fd92d3f7e4b6c4095debebd2f51db6343dce839fc6cb3e624fe8d2c9cfa45ea5a828e0218b3605447c2fad32ae9dfd73f0855a2f31bfaf0248af365f0863db82203acb206a1ad74602a62673ea4f9ab4ef4950413200299acdd0afa9b0cbd10224a43ae6dc5daa2781f80706af5cd0c36dd331419dc2054901c5eaa0b96530ed9896bd004e3da7acad628db296d929e91e1573d973322e26b8896d9760ce3003fd50db382bb5adabb896b33a98b28ec26468e84c9fa40585e7958097fa6ffac7e0efa8be88218d7d52c948bcc3b0ed3196856cceea093d8c32bdf3243842e20a4a30d44ccb00f443096dd7bcd74f72fdbc4d542571c0b7127a8d5653e86359a668acd83535e18887c2be4cf74eb8aba89c313971ff721f4fc35996f02e7f2d6a2b4c6472b6e8f3fa955d9f8b22ba510bae079e82dcd9294a7e8fb1ded341ff26a2564b9af0cf16a3b862c06797ac597402e9187419c852f246eaffe918d4dc7a3a943f717fa0bbe9bad3f7b55354c7fe16c162ea06a30cb7c5f01b6c2e4dff2f19d2b360d53cf9135ed259f65c7ad857697c7834dc256f07b45ede6934d58d1d5f3fc073deb87f23c3f0ff7332db797c10081399e9bbba3550bc6fa5b681685ed4de8dd28027fa9448556e09f10eb2f3f5136e56db32976c892df3bfcf1d59b8c214fc7a8298ca2c65459509c9e832d0378a571c6a551c69282de6fe13bb6d8a1289356feb7a0909240f35c67a84b561dbba70bc1eb1ec23ef18304ce50229d43488d4f774106bb62f54c6d1e74b9aad0dabc72d5c8750582aece348c1a75d16ef3cfde9d7150b49a21dc7057ad82ff2810d18c6959130fdc2544f0df0b0a935b425847e723a33e2cac6cd35336426b4f27db8c5e21ddc4313046da66261ca4d4048c2630d947cd2fcbb07ab49ac256f0bf31847f2fca91bf05c513c3d90e61c46744db1d1c5c5f52ba61552aaee2b9d62d3c9a0650351ed26e6293b0eb11094509acb627b2e650def5dd9c98f46d4bea72f2726922be1edab2865e7f4ece1ee2ad55bb47a9c95f112af5ca3a497ec4d6671314445db8a5f60d7a8df7fc866f4966bd7ae3f82657cc9c65e281dbc1726b9b82f3ea71314812bcc787cda2b54edcd6faa95d9f9c047408e083eb910557b8ca0cd5e223dce255795a9cb5a3cea64bf9b27b8e67e099886a65599c836b78ecd2dea380cc4145474074a2e0c9ac48147c70b77c2ff04116d75267efc215eef3ed8a535cbbeb1a604aa139ef9949a6260d77e401e5545d45c1eba549b741cfd0d4b4522982602a98b22584efe9df6c210ad4bcd9c662c97ff59a265c1dd688627aced252255883872203fc68cd8093b4d24b978550111b10d0c536c5baaf5ca49129740dc5f453f06635164019a06478336b6567f761130ed8e780512bfff867f22fcd75bdf884a883ca5c83f7bd068f182ce274f7992606c8aea650dc4b8f77be31e9e1cc41875b097eff2653535f0c5fc2c2ad6b4b97296024b3c4256dd394a306129cc23f1c56f23e230bc72f2310cb35e77b95799f396581a5e74a264b16fd118a62be2f7c476402af64ce6815f26a3e87d3b823a3b0b39b40458ed1dba4e05f3a4e3a0370a89a073e6ee3d3f61a1f3e85ef8d421374faa4a83a075687d1ae6cd33531238a217b10692d854c60a037a68ba62f5936ce2467cea9be4b9f22aaaa7dd2b900b091ff2269278935b15cac7ee6c2768e45d6cbce3d298ae10b0b3ab563c7d23d399ca5dd157d65f29d60aa0527a1eece003ae637d6ee0cdbacd27de2ec7b867454b361151b138911368c2a6596626cfba077e9e0d36950c7b14dab8e6042ee53d8961c4c2e3d8363eff3132280dbb23322488d5b3483c1069bb230a648a5fab0d43ddf89cafe87a88ecf006fc28fa1aeb0b0751ccc6535993b2bd0827a123efcbcc65ef683340d48f065ad75f2b5d66c34223404b331601b3567efa3b16fc16be31c99549cb03fd0c12cf7af0e092ad1328c782e4beb174054a8bddb99d304e702db1a1c7fb8c92f591825ff481a3d348f65b7e9f1e9e4931418ec356a20d046fd2b792289a68280b1f403a99cc5f8103c7253e46c5e459b20bec948a68787a448b48bebeda979fef1a4ee9ab34b2c056de09eaa3cd22775b21141b5053c48e13755e834a720c3dbf294f472eaa14058322691ad25a057d1c6f36284c7d54ac8e54ab4185c210c6d97d080d2b0f285e8c7a202286b65a93defb5d16a033490a977bc15fb1f87a8b9a79e83a88500101037b05ef9ea8112f9484a500b01e81340c75e50dca510f28c15c188400123850f49ed1346c0017aeaf6ba0fb39abc40b72bbbfbde50966c4871a72e3bd783fe4eb240b845d48ce4124cc7abdf114c177a2b0c85bc8dc28a9da47268818159d52f52546029b4f6f821fd7963a8fbd2adeebdd948f6a950851e8b9578c953086b5f114c30ef509a42eed1c53e2ee1cdc4c6cbf554ddcf02bbfe3d64cbf5d701433322a92d4c6b8e0f46e71b345fffb287c2955b6387540d3c46065a42e19e422aa0e0885509e022b60c31c9ba18214147d5a4ab5521ec3d2b4ee0e3766b5be54e3a67475edeba4a7cbf922d3969b33b44ea8c0e205cd4b67dec0f7d2cf8503e705c2d5dd6662152d279f41875037260297a8ed55b7b0f5168ca3eb8871259efb249eb04034f05275fa5a4ce4b1df395f318301a911377399134b019f9a68d185b65c05c45973e06dae0e9c456fa1b3f72ddc31390e1ef544e14dfc5b383a729a29549cf846555576954ec6c12567d94fa20152fa1f4f2d17974f65213780b00357f89cff3f63e603e39fb49afea1c3f710a6e3da644cc87b282d7c0f6ce59f2e4dbed71964180cc7c565afdbd87418e9ba69c25bb3f7906628bbb05544abafadf81fed7b4b1b25f8140b171b176760ae7b66b89fe532a778ba68cdfcefa142ab866a81d4e7c0c6804cfa2a56d641603ee6521c9e1a0de70f676753eeae3ea08d1ce8a7a8c67c1ba81828794dfdec507e271883e8a2ecb01927ea93d0a549c9322b5b10c1660e6c2a38b25bfdff0e630c9c30e97e749a75ef71232f87eb6d0d03838cb69a2c0e542ad4eb54c747de51e29d77463eb976d1025e706f214fc8589758176af2ea98e1e48534f1e3e40a99519e2efbd22d70b169c0e06f81f1b917662ebe42248c8c3bfc4ee0dc6feff770ed7e46df56b5a8c50ba6a355a4bdf081dbe72e0109f7994eef44a00ce7b42c0e6aea98197fd69c0b6fe63379f34b35d13837b6c4ea3a41b6efdf9729585e30f298c1f79f80ddd40fc5e02182d26b762df93cefb6527a511003c16d946046271089e1ae93b24c9bd779633f85828dc8810f8acf559eaf073b3fbffa23d49f99b4997b4665c8b927ba873237f31cc48ce56bebb8d41646911abb4c35d6ad9547fd9ae772f5e95d04b20daa7653d086d4bfe5c4a05bb125224aef9f9cf9888baa31daa184fc77dbaf269fa0196c1c8944ea46abc8e0fd98d8e2f9198a45476c8e6c13bd90574df74d8e39b7aa9a9168094b2c32e0de9b8ef44dc3cdd69a71b01994865e3fdc79590257461d3d0bcf1da3aa028a69a41a3ca55c41e33cc9cbaf558b4a30aed462c4d506b60bcd8e5ab6c203da29226636d07fcfa6f13e1ab12d133fe8619318fd1d3463fd74172bbf64e7cb582cbc13a96ae6d2efdb49a3e6caa919e02ddc257df1f72d039d63df78dd817e01591445b4601e22d7cc1278fa950a300c4785c78219b89100498b60d29c14daae9426379bea54f62affdf8ace820912336dba292d1e4314145a3b674c0942df06b4e25b49999741f102432b49c3fff8efacf7f846021e01d9e8032bda89cdab31064f70ab53ea1299b796020ad85a0fcb180377442cec76b993b6bd7c6c180fdd7cf57e7c4b0ed1f89cefd8e053bc065abcc34628781adda7348de0991d3cba09f27204a58a490943a443d76c0d59051432e110bb3ae3a1b4ac1fb8007be385e19badc63e6bda646b957b6e51109c706e4ad76c47a01e14be9d9d4ca0ca68640ef6fd1ce47183bc798e3ed7dd6ce56ed548f02b9c2585e78589e50de1d594556a688894dea853369163b1077aa32425a470c041d9b213e82b9836fecfae3c26fb04a0c12a7bb211e7dae5e31eab8d11ed78fa26e2936f7eb52b17e040fe0fda0776c3a86f892d16a22d6f1a3c1ac570d3fd7798faa9fc81cfa4eccf086b7b29e760c3deaf3c00bcce6eefa06f2806f750409427a1ab7592bd882112f776235160ca5ee81627d22335f93fb09288df8f3aec89655db7745c277448ddcd2665f93329fe79d7031cf8f941f9c1031f822923cab749bb712cb588ccf34cc0533641eafeeeb063c5449024178e977f5339da5aadffb4a42fe484504501b13c454e8713731490a2936d3354abdc299f969995a2d41542f415129f0b330fba6f8197be5059b30d8e3e63212d9a59ed1b197a27affad8d64f470be3f70665c12cea1d70589c023b51ce974dd5321dad1e85c65ec3f6d940d16cf71eb13806ef961933258944888cc28b7a5dc0809c85d6fb5d99731847f662afff6d264b9304ae799c13e253ae3fc0559db2780fca3910bfbe21c2e30da5b2c7603b973403108ea97d606d15035ab5b3073917fdd54e0c9a4389c0d760d3ed9b1082332745cc3cf323eb99083a1b5b4a6d612ddcf2c3ea89dd20410e7396bcd2d6926796e943feb287c9708205e58e5bab1d986d07526ef9e1dc7fae03c78bfcc6ddb49abfb1a5e75fea0ab421fd4d0485235ddfe1c3c881aa8045337927117a7bd4a21afcb306fc0a1254967e5885546ff7e13ecbdc2f55fbb8bb0516f66b01b10de35bbba3a1b603bfc2cdefd08da9b32cca43f201063112d58a4ad6c7955612a54158d820d1d5a4a1b68cc733df0fda28629e59ca8d93270c821159934077a79d0b209c3b4ca4e57b61885b17fcd57f02d6039b68c2fc85601eb21abdccfdbcb82f3582fe7bd26cee0edb2ee6a4932365266978e2fb8334659904deb002bfe4df2117269eb2f07392a98b480cbc90b205f1b554391952cdc2a40591806d06a0f2cbfb1356791c5c67930c834ad57bbe0db69b38f104bafb1717414f9a77cf42f316b780367a6de2263bcf36c88dbf649a34d300a5ec7b0a8d97e97c22cb68f0b8ecdb8522eb3f83d329894ff4e6ec0485a3797f2db00f46787bb9440504c679798351a0276a24f47dfce53d905f8cbbad0b7be1310102d9ba6a33cf6b2597f11385f994804b5513e0cf37588d3304b883908eac67fbf599df95869224d6990eefb8e2c608d90fbce8e585c96ff89c82aefd11978ea33693738d3e440238d607dce54982206d009570ec1d2219a19c8fb6da93c0bf08f902544e1a0e4c15fde6e3c110bad36f761b34b3e271245d139acc5d0811e7fd9ffe6f2b5f88302e16477a1660caba6748b297f0ebdb960776a618e073b6dc7b901d83cf605d8859a20cc07d52d1aa3eb60ca10941cec1e2492b34fa8e12ae3d32f282a2f28bc2af03329274a60dc93806ee5aab75281d3b9d2511ca29d86f43d7d47c2b93cd27919fd632d8acfd76494816e8dbf071d7fdb161d33a0f4114ffb181146ba75b939c2136f367191373910f277c915a264c929b1cc22373c30a8aee299a063744f5eec11e193959c250737041853ecfee4063c0297cae64f4019dbda2432a9c275abc1764a309abe803be2ca03506a17ad1eaf11c546b881eb6fcf772f571f70c43b3efd6cf36fe88b4657a96fa03a6638420514502616466e4f06e266eea2399a793c24d1bc755588821bdaa3f452cdb473439e089cf7333eab5469f92e07a57c52d28fe6cb52fff80573a7e811d44905966347acbd9c0f93a31ea950e651362f6e5b2e3ebac0b26fd3b06546427610e55eb15c75615cf9e4baf3c2e9703bddbad390278be0551a475e9e681c4acc70eba9bd6a17de6205f094c7a9a29af06fe8c25dafb606732d0a2403a1ffd522b0aab66babf6f355b4c6baa6c5ee35d1fd04ba24df53aa22edff4d42814c8b0fac6256545f984198f43cb4182f174212f71f5c4587a9074b69595375b7876b264d7d89223b3fc7272a3ac55279d5ecc42fe0550279623a4fb46799681985d536fd07328012cba0a915b56eabf9fdaff2fc4812b92f659a16062cdc2fd876b83e993f34d15a659d67427de3f31ea9bcaf2b18653526ae85927ec86a89cbf919a4735b922058bc69c3bac8a137fe833b376afab7bc4cf320dc5ab721af55eef587bda368257f0fbac6f9cc736cdd03030c176443438d7a5ba6e6e9dc344d53e6adf0e7d3d9b99c822853469083eaa89a174c6cdf20aff90687f63ddbb5a31fdbe692840da8b86a35d1972296c5087bde66649215c6c6c4f1b89d78bfdc8b26f6e4c559d8dc65321d0991d234481e385db9ee2fbcfbb5081aff4d9bea521b646c698b37e3be3623e5eaea945f8d0a70f6395fcc7b439046a7bf7d46c63fb28024846bb1b1d9abd2593231fe5592244068f5519ea0f4dc6efcb7b92bc821c5f9ec85fc1979bda184d11bb9616ae6fdc2c708ffe17a13f5bc20a2fcbb3fad51fcf313191007165711dce42655e532ca969631f17fdc39c5cc0b0efc82c7738d2d32e19c8c64a271a596ce47fbab43c912055c52b3e83f996eb5f1480a1e48a4d86494486a098f014aaee5fad64cea9b1f2df07b8c3658cae6885e4e04526aa3b81f08dc360aaa57448e482bd7cc6974d28fc191da89cb7baca79b2388c6878b37e36bc84a4c4e20f5cf508292e49c6a6bbea6e5abf78af3b2c1f07ce8ff339053440c3c435f99dce3af885b55032d83a17d1ea574340a9e84f1a58ca4c3891a177434b14b04488c6c075c287cb2c293404f0c5daf37db22d07ceb10ff44ecd5986564a771e1708729d23e3f6a61c5b605e804fb9758abccb210740c36ff42a589c3b9ff0afb33766ee6b3c887bbf0e9ff48e84a64674c26d4d72308a1bfbe314d505cbb78514069cbf9c333824f3c1a86af789423f0846915b412849ba2a0b1aeed799016c001a0f0915f523489d57e32dbd0c22ec926fb20298e8ae9bfb86939ab06954c4e003f93820450392cb65a39c8fa8c2c06d72b621ed6b56ad3a4f8bced68b5bb0e4c4d8e00acc7fec45ae7bbb9f5a2f0599ddddc396cfb814487d52564b4106bb027bfc7f9607ffeb354504bbdb0ad5bad8e9cde8e50f8a3b67838764820160d0113a82c6797b71c65eb5589bebc9194d610fef1b7930d5de16f62188f6f53a87661258fdb0a0483444c5de8c1040ebfde1d47b95fc105c848b6a448ba25b93258016f0225165d60e4ce01e2a58f1db5dc323f1a3285f501dc8076769fa86bd5040666db83ba57f499fbf5463e7db4906106b8dc1ec2568cd2dc5d3dae56490d26ba4bbb6626ef338734e6f2859e01c800417f45fc9797d5a78b094d7f055a0f35e00f7e18f54aa01fd820ae533c52f6ef65e59fb43fa38da658989677f54d0dec0774c246ef6d9c9ca5533de74b195661a88d9bddb2a9c5232f38a373b8b258fba872fd7b58cac02168885566665b6bd412ba8d9d35f96262c63c91dd20b4ca632cd149830d03bad6df271d719a3779095723b49efcc741b12748d44a2f10d414d0cc0ffd593bc2866380aa725a7b94c3801faaf23197f6e7235469640295a3ebd830ee9da3a56173a21bcfb3aceee8cf1c870fb6870aa0130851d184cc74c9b80e615690a65f623a574994634f84663bdcc42f87433abeb024648a76cc9e61621614acf4e3a944a71e5ca923d19c7773fe539c11b5dcf44d4f67a721f3e7221f578e957713a62ca8e05f9e1feab15679ca143562a788f930bd2544c846313f930ada460b4f34cdf141c73f5078652c86144347ec86db0879c288c3406fe32a4103cfa102d5c2b698d1e2e247e73c6e4908efbc7178f23022f177ceb08fe142f911f4fa0580f2ccb5552222c2bff5f416a68f8c8d417857b7e71efa92d9ad1a7a759666db3428931544f7f3bd80fd2ad00e9e0eb7cb3149007972364660a313589de5df7d3e7bc1aae749e14944c55d34f25fc8cd824cf04c8fe030faebb0cfedd8ad4c3943ab46c03f090d351432f8c0b1ec919c2e48806927f34cb2defbd0aaddf08af22118ca89d7ade6d2624d868fd06d200573070a151a62543f61df55f31ec9c54d2ccdc7c724b3a918e2ea4f1130f909634f8237da8149efb5f7e66759bb79238b87ced627b2427e240cae41a2e56a1797f3ce18560d57ddddfd56d006440531c3a2de0c349ff3f4ffe7e04dd24e3185fdff4f5a5bece66cd98845b794e2fc75186e18c5fc06a5ba8f8fa6fa415b8ab1d8f8de4c539594a20a86211ccd1eb2a4551a4bd196b6a94e0e11be6201021e9724170ea5d20cc17d8daad610b53e0e8d06e08c9620a26b56fb5eaf106c4e317d1ce953102d22b0f932e8fbbd40cc6813310419324a0933acb9328812c0f0498cb5bef7a221a4eaa221ce6a244a96e71d267dbe07c86e92dbac53b83fd66afe59d5c24d41d7e15917b92631cf9c6adc1cc6b74f7b3ad303666fbac46dc7953b835b716631a398e53454df01efe6fd61b944557df99506309d0c1c321c9e55fc383f3107235cb3e124677266af478f57a80aec8e116dce2dd2d64807365de43f0657095d5355449fb18554131f34ad162398a0d3b818ca590c86521e4f7346c5080350155bde8965ec0a55aa38e1fa0f31b2096175da4ebb92ba5126a1f936942b8e61177e6748a74485e600046992ecf804b93e46f62fd8f2ed40a2131a3e9768a27a07b91c4b35b5c27e152d953e0fb435071f185c3dac3354a467c2511f3e82aeeec43be9aaba9cbb9d2e1f8ee61edee7ae7f11679da24b498f5da765739650ed1c855ea680ebea6fa05cb8ab6fa684ddac4ec6a28cceecebe5168c3a788788051c07a57cd8655823de893b752243632a02a25efa7d6c3ff6bf7363b4bd91f93b14577edaa87016c48b6f4f335af919e9a901d2245f23637597ee28e87214bcd5d7d13d95d60845cac963d216c9c1fdef01030fe4dbc6db4d8cda543cd44ccfe611abf00186e1d82ee11008ff09db2620ff756e3116b4aa4091ec1e14ab5ce88655e1a94b6dce74ae29ce48bbbd1b7b0ed6c601313c468146a7609e44ecd8752d27fd8568779386febc7acb384fd321dd30e061d9152c49845be7b7548bd89625003082e0baacdc7a121c7ec46bf96c8073ae60f4d42ea1d620c6a6819d6af0c7895dadd7b1cb4a49e06dfd2414a47b0d6b5a51b561925ab412a54e7de2b6b825b2137cab49a81cee7e868771933a178ab06708cb8a764d24d6a586b0db1232146a4a5505988f022cf3a8fdef6046bff63045ca783abb8a73f4cd0eaa764e2f61135fa6f2a7a49b934f70cec000a1bfd003eac1f69daa22cb0e234ad9bceb49643b0c2f0eaa372cb9777fbefd7ce30b28a2d63dbd518f325b29123f67ed7d5f23be47f8952d3d614c823e0237eb52ccbb25bb985ec6444c893b7304e8814498d30a67022c8f9960ce3712c07b44a164f66c8e338763f3d8e55648460738b95bae53e8662ab6c50df0ae8f47db8de36129dfcb27bda8ed4472f7ac531d369926fc4315c1b40cbc9fed4d107f7588329a7561266c7eae7db92a67448eb1d192245670a82ece3b854580e8df70ec2a58ffd85b88edbc060c5adbdc3b473f09c9bf67777d80a8690fd4dd6eb1e20e8369b2da8346e7bcde11907a2d395eab6907ae6ccc4d3a2420da9bf346e7de5f967922a3c96222d260851c80718e7edfd911f81207d3d90224b1e265d7eb38df3cc78e55c447876aecdbf897d33a0cf2c26315f5cd629ad67b907bc151ac09e687e83799ad4c2e9ac3716fae9784ead5c00be3c83754a84061d1d037516b8ab6eb869e629f9c32ea7245821e0c6fdcad0322cb70556348d62dd3698f735456671d5fbfa6a65caf1bcbd4f785987f51a56f8a58dd5572ddc36fe24efa954c54ab3a41e44bda9c4e09cd0e80f42da8f2247e45cf22443afbf35c25af696236309ad8d6d995a0364de19b214a534d3501649c33f53f7b098e0bef8b699641ec6c457b05001a63f8d3a19512180b3337ef771ee621a4d14f78fca3840455049390fce89ba07689ef92d134a72dda6ee8ef320dcef044a19c560ba2c0c35bbf119790e3104d2be24fed8aafe349d201befb652d2ca1750458e0795e766f2ea28df3f1fcd6386ed55e3ebcc32dce7e260948ea652dd9f82fabf9041ec8f7ab83206d4c8e37b111b602467e25f5852f044c0a3436b4a9b70adc7e409edf58f86888adf2f05e6773760f83da239db63443a590b617a132ea58654e379ed2f881c59a179cf0d3bc538210537c73a377e3befbe377c7b5457dfad8e39c794accfc5649136f4d51b7d2dd76d805397d1d403c2c22e4abb4065cf09ecedc6199890700159943ebaebff5a2543f84868055b911fc44ded0de4a4146801ad18a8463f9e1628a4451b358bd5e576162751e4ca7296d2e9c9caf193e9f97741b84cdeaf194501bec527b2f550f28823bd05b602af234ab65bf1b7fcfbea534953e3acbd3121953fd8e3b8097eefeaea4ae076867ffd9e49e0129eaa5f1de355705b57f932a7bc8c27f47479e119606c291232ab7ed174bf2d4ec0b98464fc13c9b8ac6bebbb62a3e3c9e223f9c01288146e3c80b66f8bb2b94c23d2e3f5bf14a5c9a2987548a13c61ee9e2b1a38db7fcc2dd94656fff1880b428dbf460c0e3fde87e21bb726f739dea4754b1875f375361c3232c7695178dcbf1e11ef1fce8da52eaa96f5c4a030a66860a3de602e3d95eafb0767355c8484f0adfc3bab287df74606c8c0847d0100223b3b6fdebec213ae87d0e1c3e619e940b701676b564f3e0ff626e71bd36449472514632370ab07973d33af116c13db916ff095a5f799be13d102209981f1dc9c8d7574ee2dd50bc95672e21b52883da010f51bd7ce39c90abd016ffdb0835a33cd10900e644ab02e1d53e0e586b3983a2c180dfcec75d3bf70a54436803093d05f695956130122fc1cc55c84f8b2300f8ae1dfafee89255435ebcb88c26a890373cc098083964c1619e0586e23b0d6306c1ae76c60cc60596f4e9dd60908867dec6c92a3cfeb2705cae4b2b45dc57a32969c574b08af2c0f5886982c3d665e6bb013d3f40e371e4a14a452d0b0715a8c2a03d42b253461d9794d9de97c7f8a394459ab26ccad2479a6a05539ece87b894f213cfd7e2083730ee77fa6542ca766b76ad6239ee2132e5421446663dec48ec27998535515f88ada59a62f271c8147428e045f350e883b7f224094166c6360a48853bed07b35043045c3dc2fc11a5a87af2284b25155ccaaf1bdf8efa9a434a970a42be2065daf1cce28fd308324a0d7db27a5f6b912a9df38a2252f506155312f4b1981205c70876b4c6fff387e11a2e97b2dc3d973ae811c3852fd50496828d98677b04f1150c81de372d8592b390c0a8a33a6552533dbf6e3409e4b493bea7f4d0a5af71f1eb7b10cd0e5c82b6e9fb7d0d4bfb978a5bf798b75b008c51e326ea852e851e06c86725c2c7250de687ee18b34fec5ef55bf15d84b805df377f7c4d0f8b50352fae1a5f01c8ae882567c4a8b9c0607e6f30407518e4563d2bd3bc5dd1c9c7687a99b814cccaacad94c55715e8b1b8f82ca32c7fbdb3a79b9b5c5a2b85e22d19bcc6c380c90781b083a7930795e38b83aa983ca86e51b32e0c5dfec42b661f102fdc81fbe046a277506ef5704a8f873deafd7663b9f8a307f8561ab35413d93c4d368896c60d108bf982d0338f0587067f01984037e284c67405cdf05ed15cf509bc132a039badf11b363e529b841a448c4b5c772ef13539824e009b96a822cef91e4090c9dfc63dbd7a8974aef268695db3d0dcc694466afab7d4742cd291e71abb678829632469e74fed2f770860331a18837c0c76184cb430e7c9a2c7960043672a9cad7ecfc6f6514e8327e89e67f721811e614f40d50578f22c239501c1611a30251bc09c32888929d102cae6479a1b51ac95091803dd9d905d83209d2da17411323fd27bcdb5a4614bcb427bf66f80ac80a8e1d1aabc71014b40cd9a848159cfaff069f24c65825532387779382b9347d865b63e6c190af7357b42915ff10f9cc87da594821dd4ed8ba616d0920ac55b2ae1134627b2da08b2a402f0ef4d6be6d52019cfd52811516c0a6b4cfa41ff207355f584bcd5b03afc3367d3cdad4e86a8a859a099bf8df8d9833514fab1d03805bcd0b5446e06b94e8c01b8e1578e4009c9636acfd3cc9db96a8de7d6d74bb206da2b9307ac44c824915eca36ce027f2958c05f0896f73f5808e40ffb5542b2dcc47291aa1ecef2308cdc6dad9d6186db5a9afde5c78d6e62da648c1d486f255498b7374cb1cbdea91a5c0e3d6a8fd7449381a0a6a0f3c0c0cd84dcebc9a6401bd38272416e05f4b5920c432d950df3b2835606ca9109c6c7b5b2994c3ed0fd95eaf9eefc523e830f898fb67dd88da497663ef4744c284230a81f78165bdb5723f6724d42d7bff863acbfe203273c35ebfead12d6acf850c7bdabde788363990e70f53241cac15e76d6f9db8e8e7b10463f7762255278480fe7023303a8a6789d25fd5cd4da64e6046960e1ea1dee7643022586d5c6e9637eb803c931e89b140d932efd5859b6ada25652f59741825e9b56cd0348b5c62c0dd614b4ae4ca1c42427047e8b5526298c66d6d7f1714b66677d25293a0ab4ba6035a7a9be8f670fc2cbf52d0725bfb99c1e4105ccfdb22424da5c788522991a9ad44c1d53e62d699f0ef81b21b27e03257befb17df0851631ed1c29367393c662ae7bdd521bcc19d8af44bf45d5df06d47546525212962af8818c38f161279d7b6cae1d31ceeb5862f66285ea956e35023df38413fc4b22a7c3457eae9fa9e9a5873aec570fccf0e85bb273690a946cc7768aeb8c71ff9a6b660355c3479071e87eaeaddb2040b20fac6011d3f103b77ec49580498af6048ba184e60edf6b5c70ad43c841f8acfa5d2fd926dc7c3d75d8ec648a38578c0c6c857c868c1b3ffb616920c07a8988356082a3bbd9d9adeaa2aef98841cd1d39025656203ac65e5f47d9d93af5af90e57187678d580c9a42af64d5015296c30d3458fe37f3b6fb58aeaaf6cad1607406rootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootpython3-documentation-3.6.15-150300.10.78.1.src.rpmpython3-docpython3-docpython3-doc(s390-64)    rpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)3.0.4-14.6.0-14.0-15.2-14.14.3g5@g4g6f5fff@fIf@fz@fuk@f:f*Ee؈e4@d@dVA@dRLd>@d@c>@ccv"@ck@c[@c$e@cbb@b@a@a*@a*@aaaayay?@af@a]aLl@aLl@aA@a'@aj@```t`[``@``/@``U_T__@_v@_0@_0@_@_G@___P_P_m_O@_N7_L@_?@_>e_>e_=@_@_______^^g@^>^>^8 @^0"@]f@]+]@]m]y@]v>]8H@]8H@]1]]@\\8\@\E@\C@["@[6@ZZԐ@Zx@Z@Z@Z Z Zz@Zhu@Z`@ZLZ"Z }YYX@Yo@Y@YY@Y@YI@XӸXƉXXqX@Xv@W@Wx@W_W@Vm@VhV*!@VCV }@U@U@U@UU[%UT@UCjU@TeT;mcepl@cepl.eumcepl@cepl.eumcepl@cepl.eumcepl@cepl.eumcepl@cepl.eumcepl@cepl.eumcepl@cepl.eumcepl@cepl.eumcepl@cepl.eumcepl@cepl.eumcepl@cepl.eumcepl@cepl.eumcepl@cepl.eumcepl@suse.commcepl@cepl.eudaniel.garcia@suse.commcepl@suse.commcepl@suse.comsteven.kowalik@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.comsteven.kowalik@suse.commcepl@suse.commcepl@suse.comsteven.kowalik@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.comdmueller@suse.comschwab@suse.demcepl@suse.comdimstar@opensuse.orgmcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.comschwab@suse.deqydwhotmail@gmail.commcepl@suse.commcepl@suse.commcepl@suse.comdmueller@suse.commcepl@suse.comcode@bnavigator.demcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commeissner@suse.commcepl@suse.commcepl@suse.commcepl@suse.comsteven.kowalik@suse.commmachova@suse.commcepl@suse.commcepl@suse.commcalabkova@suse.comdimstar@opensuse.orgmcepl@suse.comdimstar@opensuse.orgmcepl@suse.commcepl@suse.comtchvatal@suse.comschwab@suse.demcalabkova@suse.commcalabkova@suse.commcalabkova@suse.commcepl@suse.commcalabkova@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.comtchvatal@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.comtchvatal@suse.comtchvatal@suse.commimi.vx@gmail.compsimons@suse.comadam@mizerski.plschwab@suse.debwiedemann@suse.comtchvatal@suse.comjmatejek@suse.comnormand@linux.vnet.ibm.comjmatejek@suse.comdimstar@opensuse.orgmimi.vx@gmail.comjmatejek@suse.comdmueller@suse.comvcizek@suse.comschwab@suse.dejmatejek@suse.comkukuk@suse.dejmatejek@suse.comasn@cryptomilk.orgjmatejek@suse.comjmatejek@suse.comjmatejek@suse.combwiedemann@suse.comjmatejek@suse.comjmatejek@suse.comhpj@urpla.nethpj@urpla.nethpj@urpla.netjmatejek@suse.comtoddrme2178@gmail.comtoddrme2178@gmail.comjmatejek@suse.comtoddrme2178@gmail.comjmatejek@suse.comdimstar@opensuse.orgjmatejek@suse.comfisiu@opensuse.orgmeissner@suse.comschwab@suse.dejmatejek@suse.commailaender@opensuse.orgrguenther@suse.comp.drouand@gmail.comjmatejek@suse.com- Remove -IVendor/ from python-config boo#1231795 - Fix CVE-2024-11168-validation-IPv6-addrs.patch - PGO run of build freezes with parallel processing, switch to -j1- Add CVE-2024-11168-validation-IPv6-addrs.patch fixing bsc#1233307 (CVE-2024-11168, gh#python/cpython#103848): Improper validation of IPv6 and IPvFuture addresses.- Add CVE-2024-9287-venv_path_unquoted.patch to properly quote path names provided when creating a virtual environment (bsc#1232241, CVE-2024-9287)- Drop .pyc files from docdir for reproducible builds (bsc#1230906).- Add CVE-2024-6232-ReDOS-backtrack-tarfile.patch prevent ReDos via excessive backtracking while parsing header values (bsc#1230227, CVE-2024-6232).- Add CVE-2024-5642-switch-off-NPN.patch switching off the NPN support eliminating bsc#1227233 (CVE-2024-5642).- Add CVE-2024-6923-email-hdr-inject.patch to prevent email header injection due to unquoted newlines (bsc#1228780, CVE-2024-6923). - Add CVE-2024-7592-quad-complex-cookies.patch fixing quadratic complexity in parsing cookies with backslashes (bsc#1229596, CVE-2024-7592) - %{profileopt} variable is set according to the variable %{do_profiling} (bsc#1227999)- Remove %suse_update_desktop_file macro as it is not useful any more.- Stop using %%defattr, it seems to be breaking proper executable attributes on /usr/bin/ scripts (bsc#1227378).- Add CVE-2024-4032-private-IP-addrs.patch to fix bsc#1226448 (CVE-2024-4032) rearranging definition of private v global IP addresses.- Add CVE-2024-0397-memrace_ssl.SSLContext_cert_store.patch fixing bsc#1226447 (CVE-2024-0397) by removing memory race condition in ssl.SSLContext certificate store methods.- Add bpo38361-syslog-no-slash-ident.patch (bsc#1222109, gh#python/cpython!16557) fixes syslog making default "ident" from sys.argv[0]. - Update CVE-2023-52425-libexpat-2.6.0-backport.patch so that it uses features sniffing, not just comparing version number (bsc#1220664, bsc#1219559, bsc#1221563, bsc#1222075). - Remove support-expat-CVE-2022-25236-patched.patch, which was the previous name of this patch. - Add CVE-2023-52425-remove-reparse_deferral-tests.patch skipping failing tests. - Refresh patches: - CVE-2023-27043-email-parsing-errors.patch - fix_configure_rst.patch - skip_if_buildbot-extend.patch- bsc#1221854 (CVE-2024-0450) Add CVE-2024-0450-zipfile-avoid-quoted-overlap-zipbomb.patch detecting the vulnerability of the "quoted-overlap" zipbomb (from gh#python/cpython!110016). - Add bh42369-thread-safety-zipfile-SharedFile.patch (from gh#python/cpython!26974) required by the previous patch. - Add expat-260-test_xml_etree-reparse-deferral.patch to make the interpreter work with patched libexpat in our distros. - Move all patches from locally sourced to the branch opensuse-3.6 branch at GitHub repo, and move all metadata to commits themselves (readable in the headers of each patch). - Add bpo-41675-modernize-siginterrupt.patch to make Python build cleanly even on more recent SPs of SLE-15 (gh#python/cpython#85841). - Remove patches: - bpo36263-Fix_hashlib_scrypt.patch - fix against bug in OpenSSL fixed in 1.1.1c (gh#openssl/openssl!8483), so this patch is redundant on all SUSE-supported distros - python-3.3.0b1-test-posix_fadvise.patch - protection against the kernel issues which has been fixed in gh#torvalds/linux@3d3727cdb07f, which has been included in all our kernels more recent than SLE-11. - python-3.3.3-skip-distutils-test_sysconfig_module.patch - skips a test, which should be relevant only for testing on Mac OS X systems with universal builds. I have no valid record, that this test would be ever problematic on Linux. - bpo-36576-skip_tests_for_OpenSSL-111.patch, which was included already in Python 3.5.- (bsc#1219666, CVE-2023-6597) Add CVE-2023-6597-TempDir-cleaning-symlink.patch (patch from gh#python/cpython!99930) fixing symlink bug in cleanup of tempfile.TemporaryDirectory. - Merge together bpo-36576-skip_tests_for_OpenSSL-111.patch into skip_SSL_tests.patch, and make them include all conditionals.- Refresh CVE-2023-27043-email-parsing-errors.patch to gh#python/cpython!111116, fixing bsc#1210638 (CVE-2023-27043).- Add CVE-2023-40217-avoid-ssl-pre-close.patch fixing gh#python/cpython#108310, backport from upstream patch gh#python/cpython#108315 (bsc#1214692, CVE-2023-40217)- Add 99366-patch.dict-can-decorate-async.patch fixing gh#python/cpython#98086 (backport from Python 3.10 patch in gh#python/cpython!99366), fixing bsc#1211158.- Add CVE-2007-4559-filter-tarfile_extractall.patch to fix CVE-2007-4559 (bsc#1203750) by adding the filter for tarfile.extractall (PEP 706).- Use python3 modules to build the documentation.- Add bpo-44434-libgcc_s-for-pthread_cancel.patch which eliminates unnecessary and dangerous calls to PyThread_exit_thread() (bsc#1203355).- Add CVE-2023-24329-blank-URL-bypass.patch (CVE-2023-24329, bsc#1208471) blocklists bypass via the urllib.parse component when supplying a URL that starts with blank characters- Add bpo27321-email-no-replace-header.patch to stop email.generator.py from replacing a non-existent header (bsc#1208443, gh#python/cpython#71508).- Add bsc1188607-pythreadstate_clear-decref.patch to fix crash in the garbage collection (bsc#1188607).- Add CVE-2022-45061-DoS-by-IDNA-decode.patch to avoid CVE-2022-45061 (bsc#1205244) allowing DoS by IDNA decoding extremely long domain names.- Add CVE-2022-37454-sha3-buffer-overflow.patch to fix bsc#1204577 (CVE-2022-37454, gh#python/cpython#98517) buffer overflow in hashlib.sha3_* implementations (originally from the XKCP library).- Add CVE-2020-10735-DoS-no-limit-int-size.patch to fix CVE-2020-10735 (bsc#1203125) to limit amount of digits converting text to int and vice vera (potential for DoS). Originally by Victor Stinner of Red Hat.- Add patch CVE-2021-28861-double-slash-path.patch: * http.server: Fix an open redirection vulnerability in the HTTP server when an URI path starts with //. (bsc#1202624, CVE-2021-28861)- Add CVE-2015-20107-mailcap-unsafe-filenames.patch to avoid CVE-2015-20107 (bsc#1198511, gh#python/cpython#68966), the command injection in the mailcap module. - Rename support-expat-245.patch to support-expat-CVE-2022-25236-patched.patch to unify the patch with other packages. - Add bpo-46623-skip-zlib-s390x.patch skipping two failing tests on s390x.- Update bundled pip wheel to the latest SLE version patched against bsc#1186819 (CVE-2021-3572).- Add patch support-expat-245.patch: * Support Expat >= 2.4.5- Rename 22198.patch into more descriptive remove-sphinx40-warning.patch.- Don't use appstream-glib on SLE-12. - Use Python 2-based Sphinx on SLE-12. - No documentation on SLE-12. - Add skip_SSL_tests.patch skipping tests because of patched OpenSSL (bpo#9425).- Don't use appstream-glib on SLE-12. - Use Python 2-based Sphinx on SLE-12. - No documentation on SLE-12. - Add skip_SSL_tests.patch skipping tests because of patched OpenSSL (bpo#9425).- Don't use OpenSSL 1.1 on platforms which don't have it.- Remove shebangs from from python-base libraries in _libdir (bsc#1193179, bsc#1192249). - Readjust patches: - bpo-31046_ensurepip_honours_prefix.patch - decimal.patch - python-3.3.0b1-fix_date_time_compiler.patch- build against openssl 1.1 as it is incompatible with openssl 3.0+ (bsc#1190566)- 0001-allow-for-reproducible-builds-of-python-packages.patch: ignore permission error when changing the mtime of the source file in presence of SOURCE_DATE_EPOCH- The previous construct works only on the current Factory, not in SLE.- BuildRequire rpm-build-python: The provider to inject python(abi) has been moved there. rpm-build pulls rpm-build-python automatically in when building anything against python3-base, but this implies that the initial build of python3-base does not trigger the automatic installation.- Due to conflicting demands of bsc#1183858 and platforms where Python 3.6 is only in interpreter+pip set we have to make complicated ugly construct about Sphinx BR.- Make python36 primary interpreter on SLE-15- Make build working even on older SLEs.- Update to 3.6.15: - bpo-43124: Made the internal putcmd function in smtplib sanitize input for presence of \r and \n characters to avoid (unlikely) command injection. Library - bpo-45001: Made email date parsing more robust against malformed input, namely a whitespace-only Date: header. Patch by Wouter Bolsterlee. Tests - bpo-38965: Fix test_faulthandler on GCC 10. Use the “volatile” keyword in faulthandler._stack_overflow() to prevent tail call optimization on any compiler, rather than relying on compiler specific pragma. - bpo-40791: Make compare_digest more constant-time (bsc#1214691, CVE-2022-48566). - Remove upstreamed patches: - faulthandler_stack_overflow_on_GCC10.patch- test_faulthandler is still problematic under qemu linux-user emulation, disable it there- Update to 3.6.14: * Security - bpo-44022 (bsc#1189241, CVE-2021-3737): mod:http.client now avoids infinitely reading potential HTTP headers after a 100 Continue status response from the server. - bpo-43882: The presence of newline or tab characters in parts of a URL could allow some forms of attacks. Following the controlling specification for URLs defined by WHATWG urllib.parse() now removes ASCII newlines and tabs from URLs, preventing such attacks. - bpo-42988 (CVE-2021-3426, bsc#1183374): Remove the getfile feature of the pydoc module which could be abused to read arbitrary files on the disk (directory traversal vulnerability). Moreover, even source code of Python modules can contain sensitive data like passwords. Vulnerability reported by David Schwörer. - bpo-43285: ftplib no longer trusts the IP address value returned from the server in response to the PASV command by default. This prevents a malicious FTP server from using the response to probe IPv4 address and port combinations on the client network. Code that requires the former vulnerable behavior may set a trust_server_pasv_ipv4_address attribute on their ftplib.FTP instances to True to re-enable it. - bpo-43075 (CVE-2021-3733, bsc#1189287): Fix Regular Expression Denial of Service (ReDoS) vulnerability in urllib.request.AbstractBasicAuthHandler. The ReDoS-vulnerable regex has quadratic worst-case complexity and it allows cause a denial of service when identifying crafted invalid RFCs. This ReDoS issue is on the client side and needs remote attackers to control the HTTP server. - Upstreamed patches were removed: - CVE-2021-3426-inf-disclosure-pydoc-getfile.patch - CVE-2021-3733-ReDoS-urllib-AbstractBasicAuthHandler.patch - Refreshed patches: - python3-sorted_tar.patch - riscv64-ctypes.patch- Rebuild to get new headers, avoid building in support for stropts.h (bsc#1187338).- Use versioned python-Sphinx to avoid dependency on other version of Python (bsc#1183858).- Modify Lib/ensurepip/__init__.py to contain the same version numbers as are in reality the ones in the bundled wheels (bsc#1187668).- add 22198.patch to build with Sphinx 4- Stop providing "python" symbol (bsc#1185588), which means python2 currently.- Make sure to close the import_failed.map file after the exception has been raised in order to avoid ResourceWarnings when the failing import is part of a try...except block.- Add CVE-2021-3426-inf-disclosure-pydoc-getfile.patch to remove getfile feature from pydoc, which is a security nightmare (among other things, CVE-2021-3426, allows disclosure of any file on the system; bsc#1183374, bpo#42988).Update to 3.6.13, final release of 3.6 branch: * Security - bpo#42967 (bsc#1182379, CVE-2021-23336): Fix web cache poisoning vulnerability by defaulting the query args separator to &, and allowing the user to choose a custom separator. - bpo#42938 (bsc#1181126, CVE-2021-3177): Avoid static buffers when computing the repr of ctypes.c_double and ctypes.c_longdouble values. - bpo#42103: Prevented potential DoS attack via CPU and RAM exhaustion when processing malformed Apple Property List files in binary format. - bpo#42051: The plistlib module no longer accepts entity declarations in XML plist files to avoid XML vulnerabilities. This should not affect users as entity declarations are not used in regular plist files. - bpo#40791: Add volatile to the accumulator variable in hmac.compare_digest, making constant-time-defeating optimizations less likely. * Core and Builtins - bpo#35560: Fix an assertion error in format() in debug build for floating point formatting with “n” format, zero padding and small width. Release build is not impacted. Patch by Karthikeyan Singaravelan. * Library - bpo#42103: InvalidFileException and RecursionError are now the only errors caused by loading malformed binary Plist file (previously ValueError and TypeError could be raised in some specific cases). * Tests - bpo#42794: Update test_nntplib to use offical group name of news.aioe.org for testing. Patch by Dong-hee Na. - bpo#41944: Tests for CJK codecs no longer call eval() on content received via HTTP. - Patches removed, because they were included in the upstream tarball: - CVE-2020-27619-no-eval-http-content.patch - CVE-2021-3177-buf_ovrfl_PyCArg_repr.patch- Add CVE-2021-3177-buf_ovrfl_PyCArg_repr.patch fixing bsc#1181126 (CVE-2021-3177) buffer overflow in PyCArg_repr in _ctypes/callproc.c, which may lead to remote code execution.- Provide the newest setuptools wheel (bsc#1176262, CVE-2019-20916) in their correct form (bsc#1180686).- (bsc#1180125) We really don't Require python-rpm-macros package. Unnecessary dependency.- readd --with-fpectl (bsc#1180377)- Adjust sphinx-update-removed-function.patch- (bsc#1179630) Update sphinx-update-removed-function.patch to work with all versions of Sphinx (not binding the Python documentation build to the latest verison of Sphinx). Updated version mentioned on gh#python/cpython#13236.- Add CVE-2020-27619-no-eval-http-content.patch fixing CVE-2020-27619 (bsc#1178009), where Lib/test/multibytecodec_support calls eval() on content retrieved via HTTP.- Add patch sphinx-update-removed-function.patch to no longer call a now removed function (gh#python/cpython#13236). As a consequence, no longer pin Sphinx version.- Pin Sphinx version to fix doc subpackage- Change setuptools and pip version numbers according to new wheels (bsc#1179756). - Add ignore_pip_deprec_warn.patch to switch of persistently failing test.- Replace bundled wheels for pip and setuptools with the updated ones (bsc#1176262 CVE-2019-20916).- Handful of changes to make python36 compatible with SLE15 and SLE12 (jsc#ECO-2799, jsc#SLE-13738) - Rebase bpo23395-PyErr_SetInterrupt-signal.patch- Fix build with RPM 4.16: error: bare words are no longer supported, please use "...": x86 == ppc.- Fix installing .desktop file- Buildrequire timezone only for general flavor. It's used in this flavor for the test suite.- Add faulthandler_stack_overflow_on_GCC10.patch to make build working even with GCC10 (bpo#38965).- Just cleanup and reordering items to synchronize with python38- Format with spec-cleaner- riscv64-support.patch: bpo-33377: add triplets for mips-r6 and riscv (#6655) - riscv64-ctypes.patch: bpo-35847: RISC-V needs CTYPES_PASS_BY_REF_HACK (GH-11694) - Update list of tests to exclude under qemu linux-user- Update the python keyring - Correct libpython name- Drop patches which are not mentioned in spec: * CVE-2019-5010-null-defer-x509-cert-DOS.patch * F00102-lib64.patch * F00251-change-user-install-location.patch * OBS_dev-shm.patch * SUSE-FEDORA-multilib.patch * bpo-31046_ensurepip_honours_prefix.patch * bpo34022-stop_hash-based_invalidation_w_SOURCE_DATE_EPOCH.patch * bpo36302-sort-module-sources.patch * bpo40784-Fix-sqlite3-deterministic-test.patch * bsc1167501-invalid-alignment.patch * python3-imp-returntype.patch - Working around missing python-packaging dependency in python-Sphinx (bsc#1174571) is not necessary anymore.- Update to 3.6.12 (bsc#1179193) * Ensure python3.dll is loaded from correct locations when Python is embedded * The __hash__() methods of ipaddress.IPv4Interface and ipaddress.IPv6Interface incorrectly generated constant hash values of 32 and 128 respectively. This resulted in always causing hash collisions. The fix uses hash() to generate hash values for the tuple of (address, mask length, network address). * Prevent http header injection by rejecting control characters in http.client.putrequest(…). * Unpickling invalid NEWOBJ_EX opcode with the C implementation raises now UnpicklingError instead of crashing. * Avoid infinite loop when reading specially crafted TAR files using the tarfile module - Drop merged fixtures: * CVE-2020-14422-ipaddress-hash-collision.patch * CVE-2019-20907_tarfile-inf-loop.patch * recursion.tar - This release also fixes CVE-2020-26116 (bsc#1177211) and CVE-2019-20907 (bsc#1174091).- Add CVE-2019-20907_tarfile-inf-loop.patch fixing bsc#1174091 (CVE-2019-20907, bpo#39017) avoiding possible infinite loop in specifically crafted tarball. Add recursion.tar as a testing tarball for the patch.- Make library names internally consistent- Disable profile optimalizations as they deadlock in test_faulthandler- Disable lto as it causes mess and works with 3.7 onwards only- Sync the test disablements from the python3 in sle15- Update to 3.6.11: - bpo-39073: Disallow CR or LF in email.headerregistry. Address arguments to guard against header injection attacks. - bpo-38576 (bsc#1155094): Disallow control characters in hostnames in http.client, addressing CVE-2019-18348. Such potentially malicious header injection URLs now cause a InvalidURL to be raised. - bpo-39503: CVE-2020-8492: The AbstractBasicAuthHandler class of the urllib.request module uses an inefficient regular expression which can be exploited by an attacker to cause a denial of service. Fix the regex to prevent the catastrophic backtracking. Vulnerability reported by Ben Caller and Matt Schwager. - bpo-39401: Avoid unsafe load of api-ms-win-core-path-l1-1-0.dll at startup on Windows 7. - Remove merged patch CVE-2020-8492-urllib-ReDoS.patch, CRLF_injection_via_host_part.patch, and CVE-2019-18348-CRLF_injection_via_host_part.patch.- Fix minor issues found in the staging.- Do not set ourselves as a primary interpreter- Add CVE-2020-14422-ipaddress-hash-collision.patch fixing CVE-2020-14422 (bsc#1173274, bpo#41004), where hash collisions in IPv4Interface and IPv6Interface could lead to DOS.- Change name of idle3 icons to idle3.png to avoid collision with Python 2 version (bsc#1165894).- Add CVE-2019-9674-zip-bomb.patch to improve documentation warning about dangers of zip-bombs and other security problems with zipfile library. (bsc#1162825 CVE-2019-9674) - Add CVE-2020-8492-urllib-ReDoS.patch fixing the security bug "Python urrlib allowed an HTTP server to conduct Regular Expression Denial of Service (ReDoS)" (bsc#1162367)- Add Requires: libpython%{so_version} == %{version}-%{release} to python3-base to keep both packages always synchronized (bsc#1162224).- Reame idle icons to idle3 in order to not conflict with python2 variant of the package bsc#1165894 * renamed the icons * renamed icon load in desktop file- Add pep538_coerce_legacy_c_locale.patch to coerce locale to C.UTF-8 always (bsc#1162423).- Update to 3.6.10 (still in line with jsc#SLE-9426, jsc#SLE-9427, bsc#1159035): - Security: - bpo-38945: Newline characters have been escaped when performing uu encoding to prevent them from overflowing into to content section of the encoded file. This prevents malicious or accidental modification of data during the decoding process. - bpo-37228: Due to significant security concerns, the reuse_address parameter of asyncio.loop.create_datagram_endpoint() is no longer supported. This is because of the behavior of SO_REUSEADDR in UDP. For more details, see the documentation for loop.create_datagram_endpoint(). (Contributed by Kyle Stanley, Antoine Pitrou, and Yury Selivanov in bpo-37228.) - bpo-38804: Fixes a ReDoS vulnerability in http.cookiejar. Patch by Ben Caller. - bpo-38243: Escape the server title of xmlrpc.server.DocXMLRPCServer when rendering the document page as HTML. (Contributed by Dong-hee Na in bpo-38243.) - bpo-38174: Update vendorized expat library version to 2.2.8, which resolves CVE-2019-15903. - bpo-37461: Fix an infinite loop when parsing specially crafted email headers. Patch by Abhilash Raj. - bpo-34155: Fix parsing of invalid email addresses with more than one @ (e.g. a@b@c.com.) to not return the part before 2nd @ as valid email address. Patch by maxking & jpic. - Library: - bpo-38216: Allow the rare code that wants to send invalid http requests from the http.client library a way to do so. The fixes for bpo-30458 led to breakage for some projects that were relying on this ability to test their own behavior in the face of bad requests. - bpo-36564: Fix infinite loop in email header folding logic that would be triggered when an email policy’s max_line_length is not long enough to include the required markup and any values in the message. Patch by Paul Ganssle - Remove patches included in the upstream tarball: - CVE-2019-16935-xmlrpc-doc-server_title.patch (and also bpo37614-race_test_docxmlrpc_srv_setup.patch, which was resolving bsc#1174701). - CVE-2019-16056-email-parse-addr.patch - Move idle subpackage build from python3-base to python3 (bsc#1159622). appstream-glib required for packaging introduces considerable extra dependencies and a build loop via rust/librsvg. - Correct installation of idle IDE icons: + idle.png is not the target directory + non-GNOME-specific icons belong into icons/hicolor - Add required Name key to idle3 desktop file- Unify all Python 3.6* SLE packages into one (jsc#SLE-9426, jsc#SLE-9427, bsc#1159035) - Patches which were already included upstream: - CVE-2018-1061-DOS-via-regexp-difflib.patch - CVE-2018-14647_XML_SetHashSalt-in_elementtree.patch- Add CVE-2019-16935-xmlrpc-doc-server_title.patch fixing bsc#1153238 (aka CVE-2019-16935) fixing a reflected XSS in python/Lib/DocXMLRPCServer.py- Add bpo-36576-skip_tests_for_OpenSSL-111.patch (originally from bpo#36576) skipping tests failing with OpenSSL 1.1.1. Fixes bsc#1149792 - Add bpo36263-Fix_hashlib_scrypt.patch which works around bsc#1151490- Add CVE-2019-16056-email-parse-addr.patch fixing the email module wrongly parses email addresses [bsc#1149955, bnc#1149955, CVE-2019-16056]- jsc#PM-1350 bsc#1149121 Update python3 to the last version of the 3.6 line. This is just a bugfix release with no changes in functionality. - The following patches were included in the upstream release as so they can be removed in the package: - CVE-2018-20852-cookie-domain-check.patch - CVE-2019-5010-null-defer-x509-cert-DOS.patch - CVE-2019-10160-netloc-port-regression.patch - CVE-2019-9636-urlsplit-NFKC-norm.patch - CVE-2019-9947-no-ctrl-char-http.patch - Patch bpo23395-PyErr_SetInterrupt-signal.patch has been reapplied on the upstream base without changing any functionality. - Add patch aarch64-prolong-timeout.patch to fix failing test_utime_current_old test.- FAKE RECORD FROM SLE-12 CHANNEL Apply "CVE-2018-1000802-shutil_use_subprocess_no_spawn.patch" which converts shutil._call_external_zip to use subprocess rather than distutils.spawn. [bsc#1109663, CVE-2018-1000802]- FAKE RECORD FROM SLE-12 CHANNEL bsc#1109847: add CVE-2018-14647_XML_SetHashSalt-in_elementtree.patch fixing bpo#34623.- boo#1141853 (CVE-2018-20852) add CVE-2018-20852-cookie-domain-check.patch fixing http.cookiejar.DefaultPolicy.domain_return_ok which did not correctly validate the domain: it could be tricked into sending cookies to the wrong server.- bsc#1138459: add CVE-2019-10160-netloc-port-regression.patch which fixes regression introduced by the previous patch. (CVE-2019-10160) Upstream gh#python/cpython#13812- FAKE RECORD FROM SLE-12 CHANNEL bsc#1137942: Avoid duplicate files with python3* packages (https://fate.suse.com/327309)- bsc#1094814: Add bpo23395-PyErr_SetInterrupt-signal.patch to handle situation when the SIGINT signal is ignored or not handled- Update to 3.6.8: - bugfixes only - removed patches (subsumed in the upstream tarball): - CVE-2018-20406-pickle_LONG_BINPUT.patch - refreshed patches: - CVE-2019-5010-null-defer-x509-cert-DOS.patch - CVE-2019-9636-urlsplit-NFKC-norm.patch - Python-3.0b1-record-rpm.patch - python-3.3.0b1-fix_date_time_compiler.patch - python-3.3.0b1-test-posix_fadvise.patch - python-3.3.3-skip-distutils-test_sysconfig_module.patch - python-3.6.0-multilib-new.patch - python3-sorted_tar.patch - subprocess-raise-timeout.patch - switch off LTO and PGO optimization (bsc#1133452) - bsc#1130840 (CVE-2019-9947): add CVE-2019-9947-no-ctrl-char-http.patch Address the issue by disallowing URL paths with embedded whitespace or control characters through into the underlying http client request. Such potentially malicious header injection URLs now cause a ValueError to be raised.- bsc#1129346: add CVE-2019-9636-urlsplit-NFKC-norm.patch Characters in the netloc attribute that decompose under NFKC normalization (as used by the IDNA encoding) into any of ``/``, ``?``, ``#``, ``@``, or ``:`` will raise a ValueError. If the URL is decomposed before parsing, or is not a Unicode string, no error will be raised. (CVE-2019-9636) Upstream gh#python/cpython#12224- bsc#1120644 add CVE-2018-20406-pickle_LONG_BINPUT.patch fixing bpo#34656 Modules/_pickle.c in Python before 3.7.1 has an integer overflow via a large LONG_BINPUT value that is mishandled during a "resize to twice the size" attempt. This issue might cause memory exhaustion, but is only relevant if the pickle format is used for serializing tens or hundreds of gigabytes of data.- bsc#1122191: add CVE-2019-5010-null-defer-x509-cert-DOS.patch fixing bpo-35746. An exploitable denial-of-service vulnerability exists in the X509 certificate parser of Python.org Python 2.7.11 / 3.7.2. A specially crafted X509 certificate can cause a NULL pointer dereference, resulting in a denial of service. An attacker can initiate or accept TLS connections using crafted certificates to trigger this vulnerability.- Add -fwrapv to OPTS, which is default for python3 anyway See for example https://github.com/zopefoundation/persistent/issues/86 for bugs which are caused by avoiding it. (bsc#1107030)- Apply "CVE-2018-1061-DOS-via-regexp-difflib.patch" to prevent low-grade poplib REDOS (CVE-2018-1060) and to prevent difflib REDOS (CVE-2018-1061). Prior to this patch mail server's timestamp was susceptible to catastrophic backtracking on long evil response from the server. Also, it was susceptible to catastrophic backtracking, which was a potential DOS vector. [bsc#1088004 and bsc#1088009, CVE-2018-1061 and CVE-2018-1060]- As we run in main python package do not generate the pre_checkin from both now- Move the tests from base to generic package wrt bsc#1088573 * We still fail the whole distro if python3 is not build * The other archs than x86_64 took couple of hours to unblock build of other software, this way we work around the issue - Some tests are still run in -base for the LTO tweaking, but at least it is not run twice- update to 3.6.5 * bugfix release * see Misc/NEWS for details - drop ctypes-pass-by-value.patch - drop fix-localeconv-encoding-for-LC_NUMERIC.patch - refresh python-3.6.0-multilib-new.patch- Apply "python-3.6-CVE-2017-18207.patch" to add a check to Lib/wave.py that verifies that at least one channel is provided. Prior to this check, attackers could cause a denial of service (divide-by-zero error and application crash) via a crafted wav format audio file. [bsc#1083507, CVE-2017-18207]- Created %so_major and %so_minor macros - Put Tools/gdb/libpython.py script into proper place and ship it with devel subpackage.- ctypes-pass-by-value.patch: Fix pass by value for structs on aarch64- Add python3-sorted_tar.patch (boo#1081750, bsc#1086001)- Add patch to fix glibc 2.27 fail bsc#1079761: * fix-localeconv-encoding-for-LC_NUMERIC.patch- move XML modules and python3-xml provide to python3-base (fixes bsc#1077230) - move ensurepip to base- Add skip_random_failing_tests.patch only for PowerPC- update to 3.6.4 * bugfix release, over a hundred bugs fixed * see Misc/NEWS for details - drop upstreamed python3-ncurses-6.0-accessors.patch - drop PYTHONSTARTUP hooks that cause spurious startup errors * fixes bsc#1070738 * the relevant feature (REPL history) is now built into Python itself- Install 2to3-%{python_version} executable (override defattr of the -tools package). 2to3 (unversioned) is a symlink and does not carry permissions (bsc#1070853).- move 2to3 to python3-tools package- update to 3.6.3 * bugfix release, over a hundred bugs fixed * see Misc/NEWS for details - drop upstreamed 0001-3.6-bpo-30714-ALPN-changes-for-OpenSSL-1.1.0f-3093.patch- drop python-2.7-libffi-aarch64.patch: this patches the intree copy of libffi which is unused/deleted in the line afterwards - fix build against system libffi: include flags weren't set so it actually used the in-tree libffi headers.- Fix test broken with OpenSSL 1.1 (bsc#1042670) * add 0001-3.6-bpo-30714-ALPN-changes-for-OpenSSL-1.1.0f-3093.patch- fix missing %{?armsuffix}- distutils-reproducible-compile.patch: ensure distutils order files before compiling, which works around bsc#1049186- Add libnsl-devel build requires for glibc obsoleting libnsl- update to 3.6.2 * bugfix release, over a hundred bugs fixed * see Misc/NEWS for details - drop upstreamed test-socket-aead-kernel49.patch - add Provides: python3-typing (fixes bsc#1050653) - drop duplicate Provides: python3- Add missing link to python library in config dir (bsc#1040164)- update to 3.6.1 * bugfix release, over a hundred bugs fixed * never add import location's parent directory to sys.path * switch to git for version control, build changes related to that * fix "failed to get random numbers" on old kernels (bsc#1029902) * several crashes and memory leaks corrected * f-string are no longer accepted as docstrings- prevent regenerating AST at build-time more robustly - add "--without profileopt" and "--without testsuite" options to python3-base to allow short circuiting when working on the package- FAKE RECORD FROM SLE-12 CHANNEL update to 3.4.6 (bsc#1027282): * fixed potential crash in PyUnicode_AsDecodedObject() in debug build * fixed possible DoS and arbitrary execution in gettext plurals * fix possible use of uninitialized memory in operator.methodcaller * fix possible Py_DECREF on unowned object in _sre * fix possible integer overflow in _csv module * prevent HTTPoxy attack (CVE-2016-1000110) * fix selectors incorrectly retaining invalid fds - drop upstreamed python-3.4-CVE-2016-1000110-fix.patch - move _elementtree to python3.rpm to match its pyexpat dependency (bsc#1029377)- Add 0001-allow-for-reproducible-builds-of-python-packages.patch upstream https://github.com/python/cpython/pull/296- reenable test_socket with AEAD patch (test-socket-aead-kernel49.patch) - reintroduce %py3_soflags macro (and better named %cpython3_soabi equivalent)- update to 3.6.0 * PEP 498 Formated string literals * PEP 515 Underscores in numeric literals * PEP 526 Syntax for variable annotations * PEP 525 Asynchronous generators * PEP 530 Asynchronous comprehensions * PEP 506 New "secrets" module for safe key generation * less memory consumed by dicts * dtrace and systemtap support * improved asyncio module * better defaults for ssl * new hashing algorithms in hashlib * bytecode format changed to allow more optimizations * "async" and "await" are on track to be reserved words * StopIteration from generators is deprecated * support for openssl < 1.0.2 is deprecated * os.urandom now blocks when getrandom() blocks * huge number of new features, bugfixes and optimizations * see https://docs.python.org/3.6/whatsnew/3.6.html for details - rework multilib patch: drop Python-3.5.0-multilib.patch, implement upstreamable python-3.6.0-multilib-new.patch - refresh python-3.3.0b1-localpath.patch, subprocess-raise-timeout.patch - drop upstreamed Python-3.5.1-fix_lru_cache_copying.patch - finally drop python-2.6b1-canonicalize2.patch that was not applied in source and only kept around in case we needed it in the future. (which we don't, as it seems) - update import_failed map and baselibs - build ctypes against system libffi (buildrequire libffi-devel in python3-base) - add new key to keyring (signed by keys already in keyring) - introduced common configure section between python3 and python3-base - moved pyconfig.h and Makefile to devel subpackage as distutils no longer need it at runtime - added python-rpm-macros dependency, regenerated macros file, drop macros.python3.py because it is not used now - improve summaries and descriptions (fixes bsc#917607) - enabled Link-Time Optimization, see what happens - including skipped_tests.py in pre_checkin.sh run - run specs through spec-cleaner, rearrange sections- FAKE RECORD FROM SLE-12 CHANNEL apply fix for CVE-2016-1000110 - CGIHandler: sets environmental variable based on user supplied Proxy request header: python-3.4-CVE-2016-1000110-fix.patch (fixes bsc#989523, CVE-2016-1000110) - refresh python3-urllib-prefer-lowercase-proxies.patch- FAKE RECORD FROM SLE-12 CHANNEL update to 3.4.5 check: https://docs.python.org/3.4/whatsnew/changelog.html (fixes bsc#984751, CVE-2016-0772) (fixes bsc#985177, CVE-2016-5636) (fixes bsc#985348, CVE-2016-5699) - drop upstreamed werror-declaration-after-statement.patch- FAKE RECORD FROM SLE-12 CHANNEL Due to being fixed upstream (differently), removed outdated patch CVE-2014-4650-CGIHTTPServer-traversal.patch (bsc#983582)- move _hashlib and _ssl modules and tests to python3-base - recommend python3- Add Python-3.5.1-fix_lru_cache_copying.patch Fix copying the lru_cache() wrapper object. Fixes deep-copying lru_cache regression, which worked on previous versions of python but fails on python 3.5. This fixes a bunch of packages in devel:languages:python3. See: https://bugs.python.org/issue25447- update to 3.5.1 * bugfix-only release, dozens of bugs fixed - Drop upstreamed Python-3.5.0-_Py_atomic_xxx-symbols.patch - "Python3" to "Python 3" in summary * This seems cleaner and fixes and rpmlint warning- FAKE RECORD FROM SLE-12 CHANNEL Issue #21121: Don't force 3rd party C extensions to be built with -Werror=declaration-after-statement. (werror-declaration-after-statement.patch, bsc#951166)- Add Python-3.5.0-_Py_atomic_xxx-symbols.patch This fixes a build error for many packages that use the Python, C-API. This patch is already accepted upstream and is slated to appear in python 3.5.1.- update to 3.5.0 * coroutines with async/await syntax * matrix multiplication operator `@` * unpacking generalizations * new modules `typing` and `zipapp` * type annotations * .pyo files replaced by custom suffixes for optimization levels in __pycache__ * support for memory BIO in ssl module * performance improvements in several modules * and many more - removals and behavior changes * deprecated `__version__` is removed * support for .pyo files was removed * system calls are auto-retried on EINTR * bare generator expressions in function calls now cause SyntaxError (change "f(x for x in i)" to "f((x for x in i))" to fix) * removed undocumented `format` member of private `PyMemoryViewObject` struct * renamed `PyMemAllocator` to `PyMemAllocatorEx` - redefine %dynlib macro to reflect that modules now have arch+os as part of name - module `time` is now built-in - dropped upstreamed patches: python-3.4.1-fix-faulthandler.patch python-3.4.3-test-conditional-ssl.patch python-fix-short-dh.patch (also dropped dh2048.pem required for this patch) - updated patch Python-3.3.0b2-multilib.patch to Python-3.5.0-multilib.patch - python-ncurses-6.0-accessors.patch taken from python 2 to fix build failure with new gcc + ncurses- Add python3-ncurses-6.0-accessors.patch: Fix build with NCurses 6.0 and OPAQUE_WINDOW set to 1.- improve import_failed hook to do the right thing when invoking missing modules with "python3 -m modulename" (boo#942751)- Build with --enable-loadable-sqlite-extensions to make it works as geospatial database.- dh2048.pem: added generated 2048 dh parameter set to fix ssl test (bsc#935856) - python-fix-short-dh.patch: replace the 512 bits dh parameter set by 2048 bits to fix build with new openssl 1.0.2c (bsc#935856)- ctypes-libffi-aarch64.patch: remove upstreamed patch - python-2.7-libffi-aarch64.patch: Fix argument passing in libffi for aarch64- python-3.4.3-test-conditional-ssl.patch - restore tests failing because test_urllib was unconditionally importing ssl (without really needing it) - restore functionality of multilib patch - drop libffi-ppc64le.diff because upstream completely changed everything yet again (sorry ppc64 folks :| )- Update to version 3.4.3 - Drop upstreamed CVE-2014-4650-CGIHTTPServer-traversal.patch (bpo#21766)- Add python-3.4.1-fix-faulthandler.patch, upstream patch for bogus faulthandler which fails with GCC 5.- asyncio has been merged in python3 main package; provide and obsolete it - Remove obsolete AUTHORS section - Remove redundant %clean section- add %python3_version rpm macro for Fedora compatibility - add missing argument in import_failed, rename Novell Bugzilla to SUSE Bugzillapython3-docs390zp35 1733142872  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !3.6.153.6.15-150300.10.78.13.6.15-150300.10.78.13.6.15      python3.6MiscACKSHISTORYNEWSPortingREADMEREADME.coverityREADME.valgrindSpecialBuilds.txtcoverity_model.cgdbinitindent.propython-config.inpython-config.sh.inpython-wing3.wprpython-wing4.wprpython-wing5.wprpython.manpython.pc.insvnmap.txtvalgrind-python.suppvgrindefshtml_imageshashlib-blake2-tree.pnglogging_flow.pngpathlib-inheritance.pngtulip_coro.pngturtle-star.pngwin_installer.png_sourcesabout.rst.txtbugs.rst.txtc-apiabstract.rst.txtallocation.rst.txtapiabiversion.rst.txtarg.rst.txtbool.rst.txtbuffer.rst.txtbytearray.rst.txtbytes.rst.txtcapsule.rst.txtcell.rst.txtcode.rst.txtcodec.rst.txtcomplex.rst.txtconcrete.rst.txtconversion.rst.txtcoro.rst.txtdatetime.rst.txtdescriptor.rst.txtdict.rst.txtexceptions.rst.txtfile.rst.txtfloat.rst.txtfunction.rst.txtgcsupport.rst.txtgen.rst.txtimport.rst.txtindex.rst.txtinit.rst.txtintro.rst.txtiter.rst.txtiterator.rst.txtlist.rst.txtlong.rst.txtmapping.rst.txtmarshal.rst.txtmemory.rst.txtmemoryview.rst.txtmethod.rst.txtmodule.rst.txtnone.rst.txtnumber.rst.txtobjbuffer.rst.txtobject.rst.txtobjimpl.rst.txtrefcounting.rst.txtreflection.rst.txtsequence.rst.txtset.rst.txtslice.rst.txtstable.rst.txtstructures.rst.txtsys.rst.txttuple.rst.txttype.rst.txttypeobj.rst.txtunicode.rst.txtutilities.rst.txtveryhigh.rst.txtweakref.rst.txtcontents.rst.txtcopyright.rst.txtdistributingindex.rst.txtdistutilsapiref.rst.txtbuiltdist.rst.txtcommandref.rst.txtconfigfile.rst.txtexamples.rst.txtextending.rst.txtindex.rst.txtintroduction.rst.txtpackageindex.rst.txtsetupscript.rst.txtsourcedist.rst.txtuploading.rst.txtextendingbuilding.rst.txtembedding.rst.txtextending.rst.txtindex.rst.txtnewtypes.rst.txtnewtypes_tutorial.rst.txtwindows.rst.txtfaqdesign.rst.txtextending.rst.txtgeneral.rst.txtgui.rst.txtindex.rst.txtinstalled.rst.txtlibrary.rst.txtprogramming.rst.txtwindows.rst.txtglossary.rst.txthowtoargparse.rst.txtclinic.rst.txtcporting.rst.txtcurses.rst.txtdescriptor.rst.txtfunctional.rst.txtindex.rst.txtinstrumentation.rst.txtipaddress.rst.txtlogging-cookbook.rst.txtlogging.rst.txtpyporting.rst.txtregex.rst.txtsockets.rst.txtsorting.rst.txtunicode.rst.txturllib2.rst.txtinstallindex.rst.txtinstallingindex.rst.txtlibrary2to3.rst.txt__future__.rst.txt__main__.rst.txt_dummy_thread.rst.txt_thread.rst.txtabc.rst.txtaifc.rst.txtallos.rst.txtarchiving.rst.txtargparse.rst.txtarray.rst.txtast.rst.txtasynchat.rst.txtasyncio-dev.rst.txtasyncio-eventloop.rst.txtasyncio-eventloops.rst.txtasyncio-protocol.rst.txtasyncio-queue.rst.txtasyncio-stream.rst.txtasyncio-subprocess.rst.txtasyncio-sync.rst.txtasyncio-task.rst.txtasyncio.rst.txtasyncore.rst.txtatexit.rst.txtaudioop.rst.txtbase64.rst.txtbdb.rst.txtbinary.rst.txtbinascii.rst.txtbinhex.rst.txtbisect.rst.txtbuiltins.rst.txtbz2.rst.txtcalendar.rst.txtcgi.rst.txtcgitb.rst.txtchunk.rst.txtcmath.rst.txtcmd.rst.txtcode.rst.txtcodecs.rst.txtcodeop.rst.txtcollections.abc.rst.txtcollections.rst.txtcolorsys.rst.txtcompileall.rst.txtconcurrency.rst.txtconcurrent.futures.rst.txtconcurrent.rst.txtconfigparser.rst.txtconstants.rst.txtcontextlib.rst.txtcopy.rst.txtcopyreg.rst.txtcrypt.rst.txtcrypto.rst.txtcsv.rst.txtctypes.rst.txtcurses.ascii.rst.txtcurses.panel.rst.txtcurses.rst.txtcustominterp.rst.txtdatatypes.rst.txtdatetime.rst.txtdbm.rst.txtdebug.rst.txtdecimal.rst.txtdevelopment.rst.txtdifflib.rst.txtdis.rst.txtdistribution.rst.txtdistutils.rst.txtdoctest.rst.txtdummy_threading.rst.txtemail.charset.rst.txtemail.compat32-message.rst.txtemail.contentmanager.rst.txtemail.encoders.rst.txtemail.errors.rst.txtemail.examples.rst.txtemail.generator.rst.txtemail.header.rst.txtemail.headerregistry.rst.txtemail.iterators.rst.txtemail.message.rst.txtemail.mime.rst.txtemail.parser.rst.txtemail.policy.rst.txtemail.rst.txtemail.utils.rst.txtensurepip.rst.txtenum.rst.txterrno.rst.txtexceptions.rst.txtfaulthandler.rst.txtfcntl.rst.txtfilecmp.rst.txtfileformats.rst.txtfileinput.rst.txtfilesys.rst.txtfnmatch.rst.txtformatter.rst.txtfpectl.rst.txtfractions.rst.txtframeworks.rst.txtftplib.rst.txtfunctional.rst.txtfunctions.rst.txtfunctools.rst.txtgc.rst.txtgetopt.rst.txtgetpass.rst.txtgettext.rst.txtglob.rst.txtgrp.rst.txtgzip.rst.txthashlib.rst.txtheapq.rst.txthmac.rst.txthtml.entities.rst.txthtml.parser.rst.txthtml.rst.txthttp.client.rst.txthttp.cookiejar.rst.txthttp.cookies.rst.txthttp.rst.txthttp.server.rst.txti18n.rst.txtidle.rst.txtimaplib.rst.txtimghdr.rst.txtimp.rst.txtimportlib.rst.txtindex.rst.txtinspect.rst.txtinternet.rst.txtintro.rst.txtio.rst.txtipaddress.rst.txtipc.rst.txtitertools.rst.txtjson.rst.txtkeyword.rst.txtlanguage.rst.txtlinecache.rst.txtlocale.rst.txtlogging.config.rst.txtlogging.handlers.rst.txtlogging.rst.txtlzma.rst.txtmacpath.rst.txtmailbox.rst.txtmailcap.rst.txtmarkup.rst.txtmarshal.rst.txtmath.rst.txtmimetypes.rst.txtmisc.rst.txtmm.rst.txtmmap.rst.txtmodulefinder.rst.txtmodules.rst.txtmsilib.rst.txtmsvcrt.rst.txtmultiprocessing.rst.txtnetdata.rst.txtnetrc.rst.txtnis.rst.txtnntplib.rst.txtnumbers.rst.txtnumeric.rst.txtoperator.rst.txtoptparse.rst.txtos.path.rst.txtos.rst.txtossaudiodev.rst.txtothergui.rst.txtparser.rst.txtpathlib.rst.txtpdb.rst.txtpersistence.rst.txtpickle.rst.txtpickletools.rst.txtpipes.rst.txtpkgutil.rst.txtplatform.rst.txtplistlib.rst.txtpoplib.rst.txtposix.rst.txtpprint.rst.txtprofile.rst.txtpty.rst.txtpwd.rst.txtpy_compile.rst.txtpyclbr.rst.txtpydoc.rst.txtpyexpat.rst.txtpython.rst.txtqueue.rst.txtquopri.rst.txtrandom.rst.txtre.rst.txtreadline.rst.txtreprlib.rst.txtresource.rst.txtrlcompleter.rst.txtrunpy.rst.txtsched.rst.txtsecrets.rst.txtselect.rst.txtselectors.rst.txtshelve.rst.txtshlex.rst.txtshutil.rst.txtsignal.rst.txtsite.rst.txtsmtpd.rst.txtsmtplib.rst.txtsndhdr.rst.txtsocket.rst.txtsocketserver.rst.txtspwd.rst.txtsqlite3.rst.txtssl.rst.txtstat.rst.txtstatistics.rst.txtstdtypes.rst.txtstring.rst.txtstringprep.rst.txtstruct.rst.txtsubprocess.rst.txtsunau.rst.txtsuperseded.rst.txtsymbol.rst.txtsymtable.rst.txtsys.rst.txtsysconfig.rst.txtsyslog.rst.txttabnanny.rst.txttarfile.rst.txttelnetlib.rst.txttempfile.rst.txttermios.rst.txttest.rst.txttext.rst.txttextwrap.rst.txtthreading.rst.txttime.rst.txttimeit.rst.txttk.rst.txttkinter.rst.txttkinter.scrolledtext.rst.txttkinter.tix.rst.txttkinter.ttk.rst.txttoken.rst.txttokenize.rst.txttrace.rst.txttraceback.rst.txttracemalloc.rst.txttty.rst.txtturtle.rst.txttypes.rst.txttyping.rst.txtundoc.rst.txtunicodedata.rst.txtunittest.mock-examples.rst.txtunittest.mock.rst.txtunittest.rst.txtunix.rst.txturllib.error.rst.txturllib.parse.rst.txturllib.request.rst.txturllib.robotparser.rst.txturllib.rst.txtuu.rst.txtuuid.rst.txtvenv.rst.txtwarnings.rst.txtwave.rst.txtweakref.rst.txtwebbrowser.rst.txtwindows.rst.txtwinreg.rst.txtwinsound.rst.txtwsgiref.rst.txtxdrlib.rst.txtxml.dom.minidom.rst.txtxml.dom.pulldom.rst.txtxml.dom.rst.txtxml.etree.elementtree.rst.txtxml.rst.txtxml.sax.handler.rst.txtxml.sax.reader.rst.txtxml.sax.rst.txtxml.sax.utils.rst.txtxmlrpc.client.rst.txtxmlrpc.rst.txtxmlrpc.server.rst.txtzipapp.rst.txtzipfile.rst.txtzipimport.rst.txtzlib.rst.txtlicense.rst.txtreferencecompound_stmts.rst.txtdatamodel.rst.txtexecutionmodel.rst.txtexpressions.rst.txtgrammar.rst.txtimport.rst.txtindex.rst.txtintroduction.rst.txtlexical_analysis.rst.txtsimple_stmts.rst.txttoplevel_components.rst.txttutorialappendix.rst.txtappetite.rst.txtclasses.rst.txtcontrolflow.rst.txtdatastructures.rst.txterrors.rst.txtfloatingpoint.rst.txtindex.rst.txtinputoutput.rst.txtinteractive.rst.txtinterpreter.rst.txtintroduction.rst.txtmodules.rst.txtstdlib.rst.txtstdlib2.rst.txtvenv.rst.txtwhatnow.rst.txtusingcmdline.rst.txtindex.rst.txtmac.rst.txtunix.rst.txtwindows.rst.txtwhatsnew2.0.rst.txt2.1.rst.txt2.2.rst.txt2.3.rst.txt2.4.rst.txt2.5.rst.txt2.6.rst.txt2.7.rst.txt3.0.rst.txt3.1.rst.txt3.2.rst.txt3.3.rst.txt3.4.rst.txt3.5.rst.txt3.6.rst.txtchangelog.rst.txtindex.rst.txt_staticajax-loader.gifbasic.cssclassic.csscomment-bright.pngcomment-close.pngcomment.pngcopybutton.jsdefault.cssdoctools.jsdocumentation_options.jsdown-pressed.pngdown.pngfile.pngjquery-3.2.1.jsjquery.jslanguage_data.jsminus.pngopensearch.xmlplus.pngpy.pngpydoctheme.csspygments.csssearchtools.jssidebar.jsswitchers.jsunderscore-1.3.1.jsunderscore.jsup-pressed.pngup.pngwebsupport.jsabout.htmlbugs.htmlc-apiabstract.htmlallocation.htmlapiabiversion.htmlarg.htmlbool.htmlbuffer.htmlbytearray.htmlbytes.htmlcapsule.htmlcell.htmlcode.htmlcodec.htmlcomplex.htmlconcrete.htmlconversion.htmlcoro.htmldatetime.htmldescriptor.htmldict.htmlexceptions.htmlfile.htmlfloat.htmlfunction.htmlgcsupport.htmlgen.htmlimport.htmlindex.htmlinit.htmlintro.htmliter.htmliterator.htmllist.htmllong.htmlmapping.htmlmarshal.htmlmemory.htmlmemoryview.htmlmethod.htmlmodule.htmlnone.htmlnumber.htmlobjbuffer.htmlobject.htmlobjimpl.htmlrefcounting.htmlreflection.htmlsequence.htmlset.htmlslice.htmlstable.htmlstructures.htmlsys.htmltuple.htmltype.htmltypeobj.htmlunicode.htmlutilities.htmlveryhigh.htmlweakref.htmlcontents.htmlcopyright.htmldistributingindex.htmldistutilsapiref.htmlbuiltdist.htmlcommandref.htmlconfigfile.htmlexamples.htmlextending.htmlindex.htmlintroduction.htmlpackageindex.htmlsetupscript.htmlsourcedist.htmluploading.htmldownload.htmlextendingbuilding.htmlembedding.htmlextending.htmlindex.htmlnewtypes.htmlnewtypes_tutorial.htmlwindows.htmlfaqdesign.htmlextending.htmlgeneral.htmlgui.htmlindex.htmlinstalled.htmllibrary.htmlprogramming.htmlwindows.htmlgenindex-A.htmlgenindex-B.htmlgenindex-C.htmlgenindex-D.htmlgenindex-E.htmlgenindex-F.htmlgenindex-G.htmlgenindex-H.htmlgenindex-I.htmlgenindex-J.htmlgenindex-K.htmlgenindex-L.htmlgenindex-M.htmlgenindex-N.htmlgenindex-O.htmlgenindex-P.htmlgenindex-Q.htmlgenindex-R.htmlgenindex-S.htmlgenindex-Symbols.htmlgenindex-T.htmlgenindex-U.htmlgenindex-V.htmlgenindex-W.htmlgenindex-X.htmlgenindex-Y.htmlgenindex-Z.htmlgenindex-_.htmlgenindex-all.htmlgenindex.htmlglossary.htmlhowtoargparse.htmlclinic.htmlcporting.htmlcurses.htmldescriptor.htmlfunctional.htmlindex.htmlinstrumentation.htmlipaddress.htmllogging-cookbook.htmllogging.htmlpyporting.htmlregex.htmlsockets.htmlsorting.htmlunicode.htmlurllib2.htmlindex.htmlinstallindex.htmlinstallingindex.htmllibrary2to3.html__future__.html__main__.html_dummy_thread.html_thread.htmlabc.htmlaifc.htmlallos.htmlarchiving.htmlargparse.htmlarray.htmlast.htmlasynchat.htmlasyncio-dev.htmlasyncio-eventloop.htmlasyncio-eventloops.htmlasyncio-protocol.htmlasyncio-queue.htmlasyncio-stream.htmlasyncio-subprocess.htmlasyncio-sync.htmlasyncio-task.htmlasyncio.htmlasyncore.htmlatexit.htmlaudioop.htmlbase64.htmlbdb.htmlbinary.htmlbinascii.htmlbinhex.htmlbisect.htmlbuiltins.htmlbz2.htmlcalendar.htmlcgi.htmlcgitb.htmlchunk.htmlcmath.htmlcmd.htmlcode.htmlcodecs.htmlcodeop.htmlcollections.abc.htmlcollections.htmlcolorsys.htmlcompileall.htmlconcurrency.htmlconcurrent.futures.htmlconcurrent.htmlconfigparser.htmlconstants.htmlcontextlib.htmlcopy.htmlcopyreg.htmlcrypt.htmlcrypto.htmlcsv.htmlctypes.htmlcurses.ascii.htmlcurses.htmlcurses.panel.htmlcustominterp.htmldatatypes.htmldatetime.htmldbm.htmldebug.htmldecimal.htmldevelopment.htmldifflib.htmldis.htmldistribution.htmldistutils.htmldoctest.htmldummy_threading.htmlemail.charset.htmlemail.compat32-message.htmlemail.contentmanager.htmlemail.encoders.htmlemail.errors.htmlemail.examples.htmlemail.generator.htmlemail.header.htmlemail.headerregistry.htmlemail.htmlemail.iterators.htmlemail.message.htmlemail.mime.htmlemail.parser.htmlemail.policy.htmlemail.utils.htmlensurepip.htmlenum.htmlerrno.htmlexceptions.htmlfaulthandler.htmlfcntl.htmlfilecmp.htmlfileformats.htmlfileinput.htmlfilesys.htmlfnmatch.htmlformatter.htmlfpectl.htmlfractions.htmlframeworks.htmlftplib.htmlfunctional.htmlfunctions.htmlfunctools.htmlgc.htmlgetopt.htmlgetpass.htmlgettext.htmlglob.htmlgrp.htmlgzip.htmlhashlib.htmlheapq.htmlhmac.htmlhtml.entities.htmlhtml.htmlhtml.parser.htmlhttp.client.htmlhttp.cookiejar.htmlhttp.cookies.htmlhttp.htmlhttp.server.htmli18n.htmlidle.htmlimaplib.htmlimghdr.htmlimp.htmlimportlib.htmlindex.htmlinspect.htmlinternet.htmlintro.htmlio.htmlipaddress.htmlipc.htmlitertools.htmljson.htmlkeyword.htmllanguage.htmllinecache.htmllocale.htmllogging.config.htmllogging.handlers.htmllogging.htmllzma.htmlmacpath.htmlmailbox.htmlmailcap.htmlmarkup.htmlmarshal.htmlmath.htmlmimetypes.htmlmisc.htmlmm.htmlmmap.htmlmodulefinder.htmlmodules.htmlmsilib.htmlmsvcrt.htmlmultiprocessing.htmlnetdata.htmlnetrc.htmlnis.htmlnntplib.htmlnumbers.htmlnumeric.htmloperator.htmloptparse.htmlos.htmlos.path.htmlossaudiodev.htmlothergui.htmlparser.htmlpathlib.htmlpdb.htmlpersistence.htmlpickle.htmlpickletools.htmlpipes.htmlpkgutil.htmlplatform.htmlplistlib.htmlpoplib.htmlposix.htmlpprint.htmlprofile.htmlpty.htmlpwd.htmlpy_compile.htmlpyclbr.htmlpydoc.htmlpyexpat.htmlpython.htmlqueue.htmlquopri.htmlrandom.htmlre.htmlreadline.htmlreprlib.htmlresource.htmlrlcompleter.htmlrunpy.htmlsched.htmlsecrets.htmlselect.htmlselectors.htmlshelve.htmlshlex.htmlshutil.htmlsignal.htmlsite.htmlsmtpd.htmlsmtplib.htmlsndhdr.htmlsocket.htmlsocketserver.htmlspwd.htmlsqlite3.htmlssl.htmlstat.htmlstatistics.htmlstdtypes.htmlstring.htmlstringprep.htmlstruct.htmlsubprocess.htmlsunau.htmlsuperseded.htmlsymbol.htmlsymtable.htmlsys.htmlsysconfig.htmlsyslog.htmltabnanny.htmltarfile.htmltelnetlib.htmltempfile.htmltermios.htmltest.htmltext.htmltextwrap.htmlthreading.htmltime.htmltimeit.htmltk.htmltkinter.htmltkinter.scrolledtext.htmltkinter.tix.htmltkinter.ttk.htmltoken.htmltokenize.htmltrace.htmltraceback.htmltracemalloc.htmltty.htmlturtle.htmltypes.htmltyping.htmlundoc.htmlunicodedata.htmlunittest.htmlunittest.mock-examples.htmlunittest.mock.htmlunix.htmlurllib.error.htmlurllib.htmlurllib.parse.htmlurllib.request.htmlurllib.robotparser.htmluu.htmluuid.htmlvenv.htmlwarnings.htmlwave.htmlweakref.htmlwebbrowser.htmlwindows.htmlwinreg.htmlwinsound.htmlwsgiref.htmlxdrlib.htmlxml.dom.htmlxml.dom.minidom.htmlxml.dom.pulldom.htmlxml.etree.elementtree.htmlxml.htmlxml.sax.handler.htmlxml.sax.htmlxml.sax.reader.htmlxml.sax.utils.htmlxmlrpc.client.htmlxmlrpc.htmlxmlrpc.server.htmlzipapp.htmlzipfile.htmlzipimport.htmlzlib.htmllicense.htmlobjects.invpy-modindex.htmlreferencecompound_stmts.htmldatamodel.htmlexecutionmodel.htmlexpressions.htmlgrammar.htmlimport.htmlindex.htmlintroduction.htmllexical_analysis.htmlsimple_stmts.htmltoplevel_components.htmlsearch.htmlsearchindex.jstutorialappendix.htmlappetite.htmlclasses.htmlcontrolflow.htmldatastructures.htmlerrors.htmlfloatingpoint.htmlindex.htmlinputoutput.htmlinteractive.htmlinterpreter.htmlintroduction.htmlmodules.htmlstdlib.htmlstdlib2.htmlvenv.htmlwhatnow.htmlusingcmdline.htmlindex.htmlmac.htmlunix.htmlwindows.htmlwhatsnew2.0.html2.1.html2.2.html2.3.html2.4.html2.5.html2.6.html2.7.html3.0.html3.1.html3.2.html3.3.html3.4.html3.5.html3.6.htmlchangelog.htmlindex.html/usr/share/doc/packages//usr/share/doc/packages/python3.6//usr/share/doc/packages/python3.6/Misc//usr/share/doc/packages/python3.6/html//usr/share/doc/packages/python3.6/html/_images//usr/share/doc/packages/python3.6/html/_sources//usr/share/doc/packages/python3.6/html/_sources/c-api//usr/share/doc/packages/python3.6/html/_sources/distributing//usr/share/doc/packages/python3.6/html/_sources/distutils//usr/share/doc/packages/python3.6/html/_sources/extending//usr/share/doc/packages/python3.6/html/_sources/faq//usr/share/doc/packages/python3.6/html/_sources/howto//usr/share/doc/packages/python3.6/html/_sources/install//usr/share/doc/packages/python3.6/html/_sources/installing//usr/share/doc/packages/python3.6/html/_sources/library//usr/share/doc/packages/python3.6/html/_sources/reference//usr/share/doc/packages/python3.6/html/_sources/tutorial//usr/share/doc/packages/python3.6/html/_sources/using//usr/share/doc/packages/python3.6/html/_sources/whatsnew//usr/share/doc/packages/python3.6/html/_static//usr/share/doc/packages/python3.6/html/c-api//usr/share/doc/packages/python3.6/html/distributing//usr/share/doc/packages/python3.6/html/distutils//usr/share/doc/packages/python3.6/html/extending//usr/share/doc/packages/python3.6/html/faq//usr/share/doc/packages/python3.6/html/howto//usr/share/doc/packages/python3.6/html/install//usr/share/doc/packages/python3.6/html/installing//usr/share/doc/packages/python3.6/html/library//usr/share/doc/packages/python3.6/html/reference//usr/share/doc/packages/python3.6/html/tutorial//usr/share/doc/packages/python3.6/html/using//usr/share/doc/packages/python3.6/html/whatsnew/-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:36642/SUSE_SLE-15-SP3_Update/df6e32a377fdd10600dff632973ed625-python3.SUSE_SLE-15-SP3_Update:docdrpmxz5s390x-suse-linux directoryUTF-8 Unicode textAlgol 68 source, UTF-8 Unicode textASCII textRuby script, ASCII textPython script, ASCII text executablePOSIX shell script, ASCII text executabletroff or preprocessor input, ASCII textPNG image data, 500 x 320, 8-bit colormap, non-interlacedPNG image data, 955 x 758, 8-bit/color RGB, non-interlacedPNG image data, 538 x 495, 8-bit/color RGBA, non-interlacedPNG image data, 1062 x 513, 8-bit/color RGB, non-interlacedPNG image data, 250 x 250, 8-bit/color RGB, non-interlacedPNG image data, 670 x 414, 8-bit/color RGBA, non-interlacedLaTeX document, ASCII textPython script, UTF-8 Unicode text executableC source, UTF-8 Unicode textAlgol 68 source, ASCII textHTML document, ASCII textUTF-8 Unicode text, with very long linesPython script text executable Python script, ASCII text executableASCII text, with very long linesGIF image data, version 89a, 16 x 16PNG image data, 16 x 16, 8-bit/color RGBA, non-interlacedPNG image data, 16 x 16, 8-bit gray+alpha, non-interlacedPNG image data, 11 x 11, 8-bit grayscale, non-interlacedXML 1.0 document, ASCII textHTML document, UTF-8 Unicode textHTML document, UTF-8 Unicode text, with very long linesHTML document, ASCII text, with very long linesASCII text, with very long lines, with no line terminators dܸ~rUpython33.6utf-8d0012797a78b5599469d2da7e58426663a780dd7d527c1e17e73137e83cec9f9?7zXZ !t/(y}]"k%a ZmۢL,%?:ժRIdU4ԃ,,"Bx!$Q-lVN\j[T{jM* &^o&Tsg@lM.d4&ň @U$ʃl,6ZnV,s8hi^I28$w*uPee22őZ ׁzc13vqC\KTN=bK *<^/`UY44CkaZۏ4fF|߇". MXpҵ3Mcv:qLeVP|qsX@40{prhl_G_|J4?^]4ٳH1!R_J%O5C݋8-_A|T:ƣ&}9e1b ~.%Et=a!<*o$o%$cp-p_2^`>\j?aBwG1&-c=W7sVST1C۽釽0h'lv fM0&*~sFv"sq:5!L$e0x@Rt 9J K5G)*UfWd`WCǩvʪpd1L#n 2^ kH).EUMy :ȂgBbPܟR3sXg7h 8tp:mRK:*]-MV+iRrl)N`+lA&br%ɘ-Y `(<8߬5-۬•槎_[0$6\G9ѭعMvb۪{z\4 jkZq:62+IfpB`/v㌯4e{[Z~3twZ7{%|LVdqg/l њ7[Ҩ9בG + = ZXt$о}ԬZa=eZHi@vDK5ˆixq"ҏzD>Lj¿~ӕm<'4Im$ Y"?CDڠ, +2{L>12֕·nSD5=[WHHDZ􈾯q3bT3OJ.i< ^y/Хnc $%BASOu3@͎C k?A -,&U; ,F6΢W\Jn$HnaY,A߹ШgQ$H2Q_}Ia2J .fN^=B, բcօԖ 6x ].zGz7B'[ߑ,S;Wʹjd- R^d[$/uؔ]38-v'@l 4av2=$Q<)W|2HJA>n>SADMClO),ITA LoY3|p`ih[iʐM,s}4dBGEl9ґp /sY}J>:-8Ê4ן/[(+8#9zޛ]V SS@Üu3s6TFiN.?oΧ0zjsm,:z+lRg%jۣ,SeOSq w6|@}oX"\tQFpv_NݮZm7!3(r7/!  Ro mlglif|;/tcl"t:dN $=t%k煪(CƑ/2hvCQAP i$a{+hAreVKwዤxo#R:.RE3]b`Ih7Ȉ"DteY T]g/a)/](QHd YLqv5P|oѯ']qDvc~Fs`Ɣ8&WKFkBoW] 9 }@SHNx٢RC>1Ci2 f~!=Wh$ -ov Z*9 U\~!TE'hDE}%IiXc'"!٤NCkVc!k?$B#,CDAq0`ad{%zh @)`=y3j;iQGo:^$nu&2pYxcGCg⬃[^ mJZJO/NgV^%֦j#M7휟!)!R(n(LciBBt8xBv &͝{qO6>o b?G%+-uFٙKI}f%xvy)tj`"K*Ѽc]~gGldaxLǐY/ZdC;z7BZNc%T#ݬy_ճQDej@dٕI.1҇ bx Elj-`ffm[lrKRH]L$$hԂEjN⺩@ ˆNᮆ4I;UM#=d; ɸb7?B>? c;r i5Q94PaD 2p™$wr\Mk`I<(cJBH\%&lraߟoEh痼Ze6Wm@V'ΎlJ~ȕdЍf(Aq:?d2nfQ=*̄ږ̸w=zː)V~ Z;O2֝zE-5n~جyⶊN9R~DX Da;R"Ȥ/<4­#dDs%soa[ƊHLNt)JqCVP]>(s$s 7W"⊖XGG5{ߩCvҫLdjoI$IEX_p]O'뺸U[:JVfs=K:m^ eКC-) *cϟ,p89^dۡeqJ"Ro'"goXZ:3-=eZ`YMCnW }g+JFW`HL/KC\TπڦCv$:c|Z^AUfhM~'ګT$7;|R˻"= ,y bxH%7Bro44g ;ph7E*lZT͎~TIy([7*gc d"-21؄,c8?]${ ȝo SCOtPn2ap& rc #7htMס6^~S<̿s(#wQtUk=KpD,n[m$6TGtk-uM'n;EY-͉ S6Ozā/.jre֖Z 0w"&ϼ= y \N "fQOKl)D4{ |b`e~ܬF`Z`·aKMl V_6lyRzC#zAgkU6"/ix =5UpG lnȀOez/ƺEEzAKH6n6M^]ۈ,lvb%&y$@gOXe#ߙЅoVs ͱXMm̒&c콶08aWZurSh6B|P٥ Xn gM)$EKQShތ͏u@#L)]59JddQ#FIiC 4ԡ`wY9DSxi_#MNjkM"+:;}Fuq55=BJ́vMX@-N|CoRsOTlo} үY/a{veÅ ðv9h9J" B9G,@,#Ls J݃0Կ#l&qUy0("Ɂ0+ L|tt^.+jj9 m*naD=9v[f,B4^Rl\be;tIgqGu7zm*uĨJUˆK MVgjŗe;t|u`f9g%?fYu.ghG0=%0 T7sZ̵'>1tk\]VFh3BJ 9WCK\X=ɒ/+0oGXtɪ+_٪`Kl$I\Udlhc#IB_npS.Aځ,x,W^eru=-qÓq[&}+6ET^#]t)Kqstұl_o-v3P(%q YZ