ÿØÿàJFIFÿþ ÿÛC       ÿÛC ÿÀÿÄÿÄ"#QrÿÄÿÄ&1!A"2qQaáÿÚ ?Øy,æ/3JæÝ¹È߲؋5êXw²±ÉyˆR”¾I0ó2—PI¾IÌÚiMö¯–þrìN&"KgX:Šíµ•nTJnLK„…@!‰-ý ùúmë;ºgµŒ&ó±hw’¯Õ@”Ü— 9ñ-ë.²1<yà‚¹ïQÐU„ہ?.’¦èûbß±©Ö«Âw*VŒ) `$‰bØÔŸ’ëXÖ-ËTÜíGÚ3ð«g Ÿ§¯—Jx„–’U/ÂÅv_s(Hÿ@TñJÑãõçn­‚!ÈgfbÓc­:él[ðQe 9ÀPLbÃãCµm[5¿ç'ªjglå‡Ûí_§Úõl-;"PkÞÞÁQâ¼_Ñ^¢SŸx?"¸¦ùY騐ÒOÈ q’`~~ÚtËU¹CڒêV  I1Áß_ÿÙELF> g@8Q@8@xx ''"'"x ''"'"00$$XXX PtdQtdRtd''"'"GNUVN]&O':Sl+ ('  @U䐉DJ@(0C0    a@HF& H4 ($0D P)D. $3`ST m\šy_cKtkMa| DZR#=JYϟ {z4K𫮦nG#3^:<. ӰUm "\x:+iKLI1#eY|zg,1[^ZmV!`m7ncbBDqęUx [夫u 5-h h2cnw'. [M7]nX9nq o[[0|rS+z`-JqXO8Є}<,$K ʬa!D]K%qcx38(BO Q>3$E*qJ|)E7HCE%*wdiaD#[! BjiʑȤA){f bavi:å;{[d&"&?2۝CGkE7if 뎥 RMo-C  F m   ;N R  4   :T '  0g\   , u?F"?   0  D P  N&" y ?}4   m I ` A -    5 3  g Q  _    y [ G       #5 [ `  `4  ` PO:"v_ Ml i_ y|  `Xy@Wzwk P4),  N=@{# m P#  DF:"n zU[v Y  ) Mtq 9"~ 0z: @W 0ld }  :"<Q  O=c N uF  0ER m)`fp |  0jf  `Y0:"f^9 Po @mkf :"(@C  PKP pY`eAh% 4@  "a@ ~B  .k :" 4"| Q:" ЄP`*:"O Y&[:"! Y`6" <@r$ Pi  PU Vh  0 pO5  PY  V 4 0.`c  Zf Z \ a :"h{y6:"2 p0~:"#:"`? g  N* @8"]0"* t TlTt 0Z P<1 0VxR x p < X& @Y +`ov:" :" T)   64 1 :" e X 1" ft 0( ld@ Z __gmon_start___ITM_deregisterTMCloneTable_ITM_registerTMCloneTable__cxa_finalizeshare_setopt_docshare_close_docshare_docpycurl_version_info_docpycurl_module_docpycurl_global_init_docpycurl_global_cleanup_docmulti_timeout_docmulti_socket_all_docmulti_socket_action_docmulti_setopt_docmulti_select_docmulti_remove_handle_docmulti_perform_docmulti_info_read_docmulti_fdset_docmulti_close_docmulti_assign_docmulti_add_handle_docmulti_doccurl_unsetopt_doccurl_setopt_string_doccurl_setopt_doccurl_set_ca_certs_doccurl_reset_doccurl_perform_rs_doccurl_perform_rb_doccurl_perform_doccurl_pause_doccurl_getinfo_raw_doccurl_getinfo_doccurl_errstr_raw_doccurl_errstr_doccurl_close_doccurl_docPyExc_TypeErrorPyErr_SetStringcurl_easy_setoptg_pycurl_useragent__assert_faildo_curl_newempty_keywordsPyArg_ParseTupleAndKeywordsp_Curl_Typecurl_easy_initErrorObjectdo_curl_traversedo_curl_getattroPyObject_GenericGetAttrPyExc_AttributeErrorPyErr_ExceptionMatchesPyErr_Clearcurlobject_constantscurlobject_methodsmy_getattroassert_curl_statepycurl_get_thread_statedo_curl_setattromy_setattrocheck_curl_statePyErr_Formatutil_curl_xdecrefcurl_multi_remove_handlePyEval_SaveThreadcurl_easy_cleanupPyEval_RestoreThreadPyObject_ClearWeakRefscurl_formfreecurl_slist_free_alldo_curl_deallocPyObject_GC_UnTrackPyThreadState_Get_PyTrash_thread_deposit_object_PyTrash_thread_destroy_chain_Py_NoneStructdo_curl_clearcurl_easy_resetPyType_GenericAllocPyObject_GC_Deldo_curl_errstrdo_curl_errstr_rawdo_curl_getinfodo_curl_getinfo_rawdo_curl_pausedo_curl_performdo_curl_perform_rbdo_curl_perform_rsdo_curl_setoptdo_curl_setopt_stringdo_curl_unsetoptdo_curl_set_ca_certspycurl_acquire_threadPyErr_Printpycurl_release_threadPy_BuildValuePyEval_CallObjectWithKeywordsPyLong_AsLong__stack_chk_failkhkey_typePyObject_Callwrite_callbackheader_callbackopensocket_callbackPyMem_Mallocinet_ntopPyMem_Freecurl_sockaddr_typePyObject_HasAttrStringPyObject_CallMethoddupPyErr_SetFromErrnoPyErr_NoMemorysockopt_cbPyObject_ReprPyText_AsString_NoNULstderr__fprintf_chkclosesocket_callbackssh_key_cbseek_callbackread_callbackPyBytes_AsStringAndSizememcpyPyUnicode_AsEncodedStringprogress_callbackPyObject_IsTruexferinfo_callbackdebug_callbackioctl_callbackssl_ctx_callbackBIO_new_mem_bufSSL_CTX_get_cert_storePEM_read_bio_X509X509_STORE_add_certX509_freeERR_peek_last_errorERR_clear_errorERR_reason_error_stringBIO_freePyExc_OverflowErrorPyExc_MemoryErrorPyExc_ValueErrorPyList_NewPyTuple_NewPyList_SetItemstrchrPyUnicode_FromStringPyBytes_FromStringPyArg_ParseTuplecurl_easy_getinfoPyFloat_FromDoublePyLong_FromLongcreate_and_set_error_objectPyList_AppendPyList_SizePyUnicode_FromEncodedObjectPyText_AsStringAndSizePyText_CheckPyListOrTuple_CheckPyListOrTuple_Sizecurl_slist_appendPyListOrTuple_GetItemPyLong_AsLongLongPyCFunction_TypePyFunction_TypePyCallable_CheckPyMethod_Typedo_curl_setopt_filelikecurl_formaddp_CurlShare_TypePyObject_GetAttrStringcurl_easy_performbytesiocurl_easy_pausePyErr_SetObjectdo_global_cleanupcurl_global_cleanuppycurl_ssl_cleanupPyDict_GetItemPyDict_SetItemdo_global_initcurl_global_initdo_version_infocurl_version_infoPyInit_pycurlp_CurlMulti_TypePyType_TypePyType_ReadyPyModule_Create2PyModule_GetDictPyErr_NewExceptionPyDict_SetItemStringPyDict_Newcurlmultiobject_constantscurlshareobject_constantscurl_versionstrlenstringioPyErr_OccurredPyExc_ImportErrorpycurl_ssl_initPyImport_ImportModulePyEval_InitThreadsdo_multi_cleardo_multi_traversedo_multi_newcurl_multi_initpycurl_acquire_thread_multido_multi_setattrocurl_multi_cleanupdo_multi_dealloccurl_multi_fdsetselectcurl_multi_assigncurl_multi_timeoutcurl_multi_socket_allcurl_multi_socket_actioncurl_multi_performcurl_multi_info_read__fdelt_chkPyDict_DelItem_Py_TrueStructcurl_multi_add_handlecurl_multi_setoptmemsetdo_multi_getattrocurlmultiobject_methodsPyExc_KeyErrorPyTuple_SizePyTuple_GetItemPyList_GetItemdo_share_traversedo_share_cleardo_share_newshare_lock_newcurl_share_initshare_lock_callbackcurl_share_setoptshare_unlock_callbackdo_share_dealloccurl_share_cleanupshare_lock_destroydo_share_setattrodo_share_getattrocurlshareobject_methodsPyText_FromString_Ignorepycurl_get_thread_state_multiPyEval_AcquireThreadPyEval_ReleaseThreadshare_lock_lockPyThread_acquire_lockshare_lock_unlockPyThread_release_lockPyThread_allocate_lockPyThread_free_locklibcrypto.so.1.1libssl.so.1.1libcurl.so.4libpython3.6m.so.1.0libpthread.so.0libc.so.6_edata__bss_start_endOPENSSL_1_1_0GLIBC_2.15GLIBC_2.14GLIBC_2.4GLIBC_2.3.4GLIBC_2.2.5 m;`ITii _ti iui um;'"g'"g'"'"0"1"1"u1"1"2" 2"@2"`2"2"2"2"2" 3" 3"(3"v@3"`3",h3"h3"93"g3"X4"@4" 4"@4"`4"_4"D4"O`6"h6"PF6"6" 86"6"@6"6"=6"6"<7"z7"@; 7"](7" :@7"H7"G`7"Fh7"P97"17"`87"7"D7"7"57",7"18"98"p1X8"19"9"PS:":"S :",(:"O@:"9H:"O`."5"h."p."x."."." ."."."."."#.".")."."."3."."."."6/"/"</" /"> /"(/"0/"N8/"@/"H/"P/"TX/"`/"h/"p/"(9"x/"/"]/"^/"d/"/"/"/"n/"/"r/"/"/"/"/"0"/"/"00"0"0"0"0"0"01"{5"{p9"{81"@1"6"9"1"1"1"1"1"2"2"(2"82"H2"X2"h2"x2"2"2"2"2"2"2"2"2"3"3"83"H3"X3"3"H4"X4"h4"x4"4"4"4"P5"X5"p5"x5"5"5"x6"6"6"6"6"7"87"X7"x7"7"7"7"p8"8"8"8"8"9"x9"9":")")")")"*"*"*"*" *" (*" 0*" 8*"@*" H*"P*"X*"`*"h*"p*"x*"*"*"*"*"*"*"*"*"*"*"*" *"!*""*"*"$*"%+"&+"'+"(+"* +"+(+"0+",8+"-@+"H+".P+"/X+"`+"0h+"1p+"2x+"4+"5+"+"6+"7+"8+"9+":+";+"+"=+"+"?+"+"+"@+","A,"B,","C ,"D(,"E0,"F8,"G@,"HH,"IP,"JX,"K`,"Lh,"Mp,"x,"O,"P,"Q,"R,"S,"U,"V,"W,"X,"Y,",","Z,",","[,"\-"_-"`-"-" -"(-"a0-"b8-"c@-"H-"eP-"fX-"`-"gh-"hp-"ix-"j-"k-"l-"-"m-"o-"p-"q-"s-"t-"u-"v-"w-"-"x-"y-"z."|."}."~." ."(."0."8."@."H."P."X."HH!HtH5!%!hhhhhhhhqhah Qh Ah 1h !h hhhhhhhhhhqhahQhAh1h!hhhh h!h"h#h$h%h&h'qh(ah)Qh*Ah+1h,!h-h.h/h0h1h2h3h4h5h6h7qh8ah9Qh:Ah;1h<!h=h>h?h@hAhBhChDhEhFhGqhHahIQhJAhK1hL!hMhNhOhPhQhRhShThUhVhWqhXahYQhZAh[1h\!h]h^h_h`hahbhchdhehfhgqhhahiQhjAhk1hl!hmhnhohphqhrhshthuhvhwqhxahyQhzAh{1h|!h}h~hhhhhhhhhqhahQhAh1h!hhh%!D%!D%!D%!D%!D%!D%!D%}!D%u!D%m!D%e!D%]!D%U!D%M!D%E!D%=!D%5!D%-!D%%!D%!D%!D% !D%!D%!D%!D%!D%!D%!D%!D%!D%!D%!D%!D%!D%!D%!D%!D%!D%!D%}!D%u!D%m!D%e!D%]!D%U!D%M!D%E!D%=!D%5!D%-!D%%!D%!D%!D% !D%!D%!D%!D%!D%!D%!D%!D%!D%!D%!D%!D%!D%!D%!D%!D%!D%!D%}!D%u!D%m!D%e!D%]!D%U!D%M!D%E!D%=!D%5!D%-!D%%!D%!D%!D% !D%!D%!D%!D%!D%!D%!D%!D%!D%!D%!D%!D%!D%!D%!D%!D%!D%!D%}!D%u!D%m!D%e!D%]!D%U!D%M!D%E!D%=!D%5!D%-!D%%!D%!D%!D% !D%!D%!D%!D%!D%!D%!D%!D%!D%!D%!D%!D%!D%!D%!D%!D%!D%!D%}!D%u!D%m!D%e!D%]!D%U!D%M!D%E!D%=!DH=Y!HR!H9tH!Ht H=)!H5"!H)HHH?HHtH]!HtfD=!u+UH=R!Ht H=޿!d!]wHH!H5*\H81HÐf.HH!H5*\H81HÐf.UH1'SH(HHH H01HDž(HHw'HDž!H)HH} BuvH} ++u_H} 1Ҿ)uKH} 1Ҿ'u7H!HHt/H} 1"'H[]H :]TH5[H=["fSH t!H1HHhH!1HH0HHtoH@H0H9sst ]fuUHH9uHC HtHkxH[H+u HCHP0H!H52[H81H[H n\qH5ZH=ZFfDATIUHSHHHt HՅH{0Ht LՅH{8Ht LՅHHt LՅHHt LՅkHHt LՅRHHt LՅ9HHt LՅ HHt LՅHHt LՅHHt LՅHHt LՅHHt LՅHHt LՅHHt LՅuuHHt LՅu`HHt LՅuKHHt LՅu6HHt LՅu!H 1Ht[LH]A\[]A\Ðf.ATIUHSHHt H[]A\DH1!H8tH![LHULb!HH]A\\ff.HHtH!HH9Gu(HJH Y H5-XH=gXH YH5XH=UXlff.ATIUHSHH{L[H]A\ATIUHStH} t>u 1[]A\HHtLH5!WH:!H81LH5VDAUIATUSHHt%HHtHCH/f.@t:Lc0Mt1I|$ HC0Ht MtL2I,$@HHtHǃH/HHtHǃH/THHtHǃH/#HHtHǃH/HHtHǃH/HHtHǃH/HHtHǃH/_HHtHǃH/.HHtHǃH/HHtHǃH/HHtHǃH/HHtHǃH/jf.@tjHHtHǃH/)HHtHǃH/HHtHǃH/@@t*HHtHǃH/f@t:Lc8Mt1I|$ HC8tMt1Ҿt'L1KI,$tt@@ t"H{HHtHCHH/ot!H HtHǃ H/OH[]A\A]@ID$LP0ID$LP0HGP0@HGP0Y@HGP0(@HGP0@HGP0@HGP0@HGP0d@HGP03@HGP0@HGP0@HGP0@HGP0T@HGP0@HGP0@HGP0?@HGP0@HGP04@HGP0@HGH@0H[]A\A]ff.ATUSHH!HHH9GHo HG HoHG(HBHH2HIL1ҾH H{tHH{@Ht HC@H{PHt HCPH{XHt HCXH{`Ht HC`H{hHt HChH{pHt HCpH{xHt zHCxHHtaHǃHHtEHǃHHt)HǃHHt Hǃ[]A\DH(uoH0H8tH (RH5PH=TQ H RH5PH=PH QH5PH=PH QH5ePH=PH QH5FPH=P@USHHHŋ1kH{HtHCH/uHGP0HLHչ!H@Ht~H[]HH[]fH[]5DSH'PH1҅uHHҹ!HHH[fDSHCHuHS H߾1[H bP=H5 OH=Njf.SHH HS H߾H{@Ht HC@H{PHt HCPH{XHt HCXH{`Ht HC`H{hHt xHChH{pHt bHCpH{xHt LHCxHHt3HǃHHtHǃHHtHǃHHtHǃHxH1!H[H+u HCHP0HY!H5CNH8B1[f.@AWIAVALAUIATULS1H(Ht$Ht$dH%(HD$1tcLELDMtBMtrMtmDAxHc1HIL9tbH!H5N1H8H|$HL$dH3 %(HH([]A\A]A^A_DH|$1fHt$H=4R1IHt{1HLImHtTHt_H;-ж!tHEHtSHHHmPHEHP0H|$AA@IELP0@1@H!H5MH8fDHSHHGWH7HuSH=YQ1HHtXH!1HH89H+uHSHD$HR0HD$H[fH=PH1MHHuH1[DH!Hff.IHHH1fIHHHffDAVAUATIUSHHdH%(HD$1HCftff ,fHC!H5BPH8,7AH<$DHL$dH3 %([H[]A\A]A^IHr{HsHH SH=OL1fLIM`KSMH=O31HHaHHu!1H8CH+Iu HCHP0M LH=[O1tHH6I$1HHmHu HEHP0HHCtHH H5NH m1H5NH1HHdH@H+AH+u HCHP0Hm6HEHP0'HsH=LO1~IfD.IH{Hs.HHt@SDC(L1KH=MfALI=#H!H81Lh@H!H5IAH8tCAh3+HG!H5IH80;H+AHCHAP0I.IFLAP0ImIELAP0H AHQHH0ATAUHSH dH%(HD$1Ht$1DH=LH#HH1H2H+HHEHtEHmu HEHP0H|$sHL$dH3 %(H []A\@IHtHt$HHHHH!H81H|$Ht H/uHGP0I,$t;[fHCHP0HEH-mDID$LP0>Df.ATUHSH dH%(HD$1Ht$1H=K%H HH1HH+Ht_Ht(HEHtU@Hmu HEHP0H|$HL$dH3 %(H []A\@HCHP0@;IHtHt$HHGHH!H81fH|$Ht H/uHGP0I,$tPfDID$LP057?Df.AVLAAUIATUHSLH dH%(HD$1Ht$HHrLIIH{HDL1H=rIxHHBH1HHmHtaHCHI,$toImtXHtH+t=H|$3HL$dH3 %(H []A\A]A^HEHP0@HCHP0@IELP0@ID$LP0Imu@SIH\Ht$HHnEHH!H81uH|$Ht H/uHGP0I.u IFLP0 1۽TI,$ID$LP0@AUIATIUSHdH%(HD$1HM$MtuLH=G1HH1LHH+IMt|1L;%ë!t%ID$LŃI,$t]H<$LHHAEuf u%eu CE~  ttHclHH !H8H-H<$OHL$dH3 %(H[]A\A]A^ffl{JHH<$1H6!H5<H8_mH!H5=H8DMH!H5<H8$2H =H5y<H=;H <jH5Z<H=<f.fDf.Df.Df.Df.Df.Df.Df.Df.AWAVAUATAUSHH|$Hc?HIHD$D$HD$Hc\$H@L4ML1H@HuHcHHHHL1XfD:LHHHL)LEtIH=;1HtIMvHcӃHDMM>MuH!Hf1H=L;HuImtvE1HL[]A\A]A^A_ÐLEt놐{fD1HtHHLfDHt$D$D$;IELE1P0{@f.AUATUSHHH5:H(dH%(HD$1HT$ keH:HIt$  W0@]@A0t !0mH{ 1HT$HD$D$Hf"@$H{ 1HT$"@HD$fH|$HH1Hu)t*f }t H{ 1HT$HD$H|$HHf P } uXH{ 1HT$HD$H|$HD t|vHA!H581H8hzfD$&f0W* h~&. Z|,,@H1HL$dH3 %(HH([]A\A]f.H{ 1HT$HD$u1Hl$IHHI;DHHtkHLuLH+u HCHP0Md$MtrI<$HuH!H@H-!HE+H+u HCHP0Imu IELP0H15HDHLKf.AVAUATUHSHH56HH dH%(HD$1HT$ |$ "@HHHHH]D$ = =)-@HHIIHtNM~L1E11fAHHLIcHI9~$HS1H<1bHuIm"E1H+HCHLP0HL$dH3 %(HH []A\A]A^@=}=t=u11HH+Hu~HCHHP0=$uH} 1HT$"@HD$tH1UDH|$Ht6|H4@H(LHY!HIELP0 ff.SH.H7uƃ(H([1[@SH?.Huƃ(H([1[@Df.Df.Df.Df.Df.Df.Df.Df.Df.Df.Df.Df.Df.Df.Df.Df.Df.Df.Df.Df.Df.SHq'(N~@NLNN|H%!H52H861[f(|܁(~(uH{ 113H!H[fD(}Ё''}t'H 11t'u{H{8Ht H/oHC8D(' ''N]H 11g4H1[Ðv''f!'&'qD]'|\'4'Q'x-'0H 11-'3HHWHǃH/BHGP06 @H 11N6H{ 1Ҿ'HHHǃH/@H 11NoH{ 1Ҿ'WHH{HǃH/f@H 11NvH{ 1Ҿ'^HHHǃH/@H 1H@H 11NH{ 1Ҿ'oHHHǃH/~7@H 11(''H{@HS H|HC@4HGP0ff.AUATIUHSH8dH%(HD$(1HD$HD$''|O'N'd"'P 'L''HL$ HT$LHt$HT$H} Hu1kHT$HH} '1ELl$ `MHU @H.LH!HHL$(dH3 %(uH8[]A\A]D'th'tZ'<'}D't<'t4@HQ!H5,H8b1fD$wDHt$ LHD$HH} H‰1MmLl$ 'MIm IELP0H!HfD''p'd'(S'\'8',&'' *'X)'&'i'~p'Bq'v'D/'4'`'|'@kf'\]'\'DQ'3'$' @(P('C@i@(T(x(Hp!HH@f.SHp!H;HwLL$LT$2I1H%HNLL$LT$ I1H H%LL$LT$I1HHLL$LT$I1HHLL$LT$I1HHLL$LT$eI1 HHLL$LT$H H7LL$LT$I1?HHLL$LT$I1@HHLL$LT$I1AHHLL$LT$wI1CHHLL$LT$NI13HHjLL$LT$%I1DHHALL$LT$I1EHrHLL$LT$I1FHUHLL$LT$I1GH<HLL$LT$I1HH"HLL$LT$XI1IH HtLL$LT$/I1JHHKLL$LT$I1KHH"LL$LT$I1LHHLL$LT$I1NHHLL$LT$I1OHHLL$LT$bI1THlH~LL$LT$9I1UHUHULL$LT$I1VH>H,LL$LT$I1XH*HLL$LT$I1WHHLL$LT$I1 HHLL$LT$lI1YHHLL$LT$CI1HH_LL$LT$I11HH9LL$LT$I1HHLL$LT$I1HHLL$LT$I1HrHLL$LT$yI1H[HLL$LT$PI1HCHlLL$LT$'I1HH2HALL$LT$I1HHHLL$LT$I1HHLL$LT$I1HHLL$LT$I1HHLL$LT$VI1HHrLL$LT$-I1HHILL$LT$I1HH LL$LT$I1 HoHLL$LT$I11HZHLL$LT$I1H?HLL$LT$cI1H$HLL$LT$:I11HHYLL$LT$I1HH0LL$LT$I1HHLL$LT$I11HHLL$LT$I1HHLL$LT$sI1HHLL$LT$JI1HHfLL$LT$!I11HtH@LL$LT$I1H[HLL$LT$I1H>HLL$LT$I1 H!HLL$LT$I1 HHLL$LT$WI1HHsLL$LT$.I1 HHJLL$LT$I1HH!LL$LT$I1HHLL$LT$I11HHLL$LT$I1HiHLL$LT$dI1HSHLL$LT$;I1H:HWLL$LT$I12HH.LL$LT$I1`HHLL$LT$I10HHLL$LT$I1'HgHLL$LT$nI1!'HHLL$LT$EI1'HzHaLL$LT$I1uHXH8LL$LT$I1*'HHLL$LT$I1HHLL$LT$I1HHLL$LT$xI1HsHLL$LT$OI1'HHkLL$LT$&I1'HHBLL$LT$I1'HcHLL$LT$I1'HHHLL$LT$I1'H-HLL$LT$I1'HHLL$LT$YI1,NHHuLL$LT$0I1 'HHLLL$LT$I1uHH#LL$LT$I1V'HHLL$LT$I1 H-HLL$LT$I1'HHLL$LT$cI1wHHLL$LT$:I1"'HHVLL$LT$I1'HH-LL$LT$I1+NHHLL$LT$I1HHLL$LT$I1HHLL$LT$mI1HiHLL$LT$DI1'HUH`LL$LT$I1'H@H7LL$LT$I1'H+HLL$LT$I1'HBHLL$LT$I1'H HLL$LT$wI1'HHLL$LT$NI1'HHjLL$LT$%I1;HHALL$LT$I1=HeHLL$LT$I1)HLHLL$LT$I1*HHLL$LT$I1+HHLL$LT$XI1,HHtLL$LT$/I1-HHKLL$LT$I1.HH"LL$LT$I1/HHLL$LT$I10HSHLL$LT$I12H6HLL$LT$bI13HH~LL$LT$9I14HHULL$LT$I15HH,LL$LT$I16HHLL$LT$I1uHHLL$LT$I1&'HHLL$LT$lI1''HUHLL$LT$CI1'H7H_LL$LT$I1HH6LL$LT$I1HH LL$LT$I1HHLL$LT$I1('HHLL$LT$vI1)'HXHLL$LT$MI1*'HtHiLL$LT$$I1HYH@LL$LT$I1,'HBHLL$LT$I17'H HLL$LT$I1m'HHLL$LT$I1-'HHLL$LT$WI1oNHHsLL$LT$.I1NHHJLL$LT$I1/'HzH!LL$LT$I1 H\HLL$LT$I1!H>HLL$LT$I1"H#HLL$LT$aI14'HH}LL$LT$8I15'HHTLL$LT$I1N'HH+LL$LT$I1O'HHLL$LT$I1O'HHLL$LT$I1XNHiHLL$LT$kI1NHQHLL$LT$BI1H9H^LL$LT$I1'HH5LL$LT$I1HH LL$LT$I1'HHLL$LT$I1@HHLL$LT$uI1q'H3HLL$LT$LI1Q'HHhLL$LT$#I1EHLH?LL$LT$I1DH0HLL$LT$I1GHHLL$LT$I1JHHLL$LT$I1KHHLL$LT$VI1\'HHrLL$LT$-I1]'HHILL$LT$I1NHuH LL$LT$I1PH[HLL$LT$I1QH:HLL$LT$I1b'H HLL$LT$`I1c'HH|LL$LT$7I1THYHSLL$LT$I1UHH*LL$LT$I1f'HHLL$LT$I1g'HHLL$LT$I1h'HHLL$LT$jI1*'H(HLL$LT$AI1i'H H]LL$LT$I1ZHH4LL$LT$I1\HH LL$LT$I1[HHLL$LT$I1~NHHLL$LT$tI1bHHLL$LT$KI1cHrHgLL$LT$"I1t'HIH>LL$LT$I1eH)HLL$LT$I1v'H#HLL$LT$I1v'HHLL$LT$~I1HHLL$LT$UI1x'HHqLL$LT$,I1iHHHLL$LT$I1jHHLL$LT$I1kHdHLL$LT$I1nHDHLL$LT$I1oH3HLL$LT$_I1pHH{LL$LT$6I1qHHRLL$LT$ I1uHH)LL$LT$I1uHHLL$LT$I1uHHLL$LT$I1uHHLL$LT$iI1'H~HLL$LT$@I1wH`H\LL$LT$I1uH?H3LL$LT$I1yH*H LL$LT$I1H HLL$LT$I1NHHLL$LT$sI1NHHLL$LT$JI1NHHfLL$LT$!I1NHH=LL$LT$I1'HHLL$LT$I1HsHLL$LT$I1'HHLL$LT$}I1'H7HLL$LT$TI1HHpLL$LT$+I1HHGLL$LT$I1HHLL$LT$I1HHLL$LT$I1HHLL$LT$I1'HHLL$LT$^I1uHHzLL$LT$5I1uHqHQLL$LT$ I1H]H(LL$LT$I1HHHLL$LT$I1H0HLL$LT$I1'HHLL$LT$hI1'HHLL$LT$?I1'HH[LL$LT$I1NHH2LL$LT$I1HH LL$LT$I1HHLL$LT$I1HrHLL$LT$rI1H[HLL$LT$II1HCHeLL$LT$ I1H0HI1HXHZLL$LT$I1'HDH1LL$LT$I1'H*HLL$LT$I1:HH߼LL$LT$I1'HH趼LL$LT$qI1'HH荼LL$LT$HI1HHdLL$LT$I1'HH;LL$LT$I1HyHLL$LT$I1H]HLL$LT$I1'H>HLL$LT${I1H#H藻LL$LT$RI1HHnLL$LT$)I1HHELL$LT$I1HHLL$LT$I1HHLL$LT$I1HHʺLL$LT$I1HcH衺LL$LT$\I1 HDHxLL$LT$3I1@H&HOLL$LT$ I1H H&LL$LT$I1HHLL$LT$I1HHԹLL$LT$I1HH諹LL$LT$fI1HH肹LL$LT$=I1HuHYLL$LT$I1 HWH0LL$LT$I1@H:HLL$LT$¾I1HH޸LL$LT$I1HH赸LL$LT$pI1HH茸LL$LT$GI1HHcLL$LT$I1HH:LL$LT$I1HHLL$LT$̽I1 HkHLL$LT$I1@HNH迷LL$LT$zI1H2H薷LL$LT$QI1HHmLL$LT$(I1HHDLL$LT$I1HHLL$LT$ּI1HHLL$LT$I1HHHʶLL$LT$I1HH衶LL$LT$\I1'HfHxLL$LT$3I1HSHOLL$LT$ I1'H<H&LL$LT$I1'HHLL$LT$I1'HHԵLL$LT$I1'HH諵LL$LT$fI1HH肵LL$LT$=I1'HHYLL$LT$I1HH0LL$LT$I1HzHLL$LT$ºI1H`H޴LL$LT$I1HFH赴LL$LT$pI1H)H茴LL$LT$GI1HHcLL$LT$I1'HH:LL$LT$I1'HHLL$LT$̹I1'HHLL$LT$I1'HH迳LL$LT$zI2$NHLL$HLT$茳LT$LL$GI2!NHtHcLT$LL$I2H\H:LT$LL$I2H@HLT$LL$̸I2H%HLT$LL$I2 HH迲LT$LL$zI2HH薲LT$LL$QI29uHHmLT$LL$(I2:uHHDLT$LL$I2'HHLT$LL$ַI2'HHLT$LL$I21HH̱LT$LL$I2HH裱LT$LL$^I2HzHzLT$LL$5I11HcHLT$LL$JLL$LT$I1HCH!LL$LT$ܶI1H'HLL$LT$I11HHҰLL$LT$I1HH詰LL$LT$dI1HH耰LL$LT$;I1HHWLL$LT$I1HH.LL$LT$I1HHLL$LT$I1HHܯLL$LT$I1HH賯LL$LT$nI11HsH药LL$LT$HI1HXHdLL$LT$I11HAH>LL$LT$I1H+HLL$LT$дI1HHLL$LT$I1HHîLL$LT$~I1HH蚮LL$LT$UI1HHqLL$LT$,I1HHHLL$LT$I1HHLL$LT$ڳI1HHLL$LT$I1HyHͭLL$LT$I1HgH褭LL$LT$_I1HUH{LL$LT$6I1HCHRLL$LT$ I11H4H,LL$LT$I1HHLL$LT$I1HHڬLL$LT$I1HH豬LL$LT$lI1HHH艬LL$LT$DI11HHcLL$LT$I1HH:LL$LT$I1HHLL$LT$̱I1HHLL$LT$I1HrH迫LL$LT$zI1HH\H藫LL$LT$RI1HDHnLL$LT$)I11H-HHLL$LT$I1HHLL$LT$ڰI1HHLL$LT$I1HHͪLL$LT$I11HH觪LL$LT$bI11HH聪LL$LT$HyLL$LT$4I1H#HPLL$LT$ I1HH'LL$LT$I1HHLL$LT$I1HH՟LL$LT$I1 HH謟LL$LT$gI1 HH胟LL$LT$>I1 HHZLL$LT$I1 H{H1LL$LT$I1H_HLL$LT$äI1HAHߞLL$LT$I1H#H趞LL$LT$qI11HH萞LL$LT$KI11HHjLL$LT$%I1HHALL$LT$I1HHLL$LT$ӣI1'HHLL$LT$I1HHƝLL$LT$I1HfH蝝LL$LT$XI1HLHtLL$LT$/I1H2HKLL$LT$I1(HH"LL$LT$ݢI1. HHLL$LT$1HHќLL$LT$1HH詜LL$LT$d1HH聜LL$LT$<11HH\LL$LT$1HyH4LL$LT$1H`H LL$LT$ǡ1HIHLL$LT$1H,H輛LL$LT$w1HH蔛LL$LT$OH1HHmLL$LT$(11HHHLL$LT$1HH LL$LT$۠1HHLL$LT$1HHКLL$LT$1HeH訚LL$LT$c1HIH耚LL$LT$;1H.HXLL$LT$1HH0LL$LT$1HHLL$LT$ß1HHLL$LT$1HH踙LL$LT$s1 HH萙LL$LT$K1@HHhLL$LT$#1 HH@LL$LT$1HmHLL$LT$Ӟ1HWHLL$LT$1H>HȘLL$LT$1H(H蠘LL$LT$[1H HxLL$LT$31HHPLL$LT$ 1HH(LL$LT$1@HHLL$LT$1HHؗLL$LT$1HH谗LL$LT$k1HwH舗LL$LT$C1HdH`LL$LT$I2HHLL$H@LT$.LT$LL$I2HH+HLT$LL$I21H HLT$LL$I2HH跖LT$LL$rI2HH莖LT$LL$II2HHeLT$LL$ I2HHH=LT$LL$I2HHLT$LL$ϛI2HHLT$LL$I2HH•LT$LL$}I2HH處LT$LL$TL|$0HLT$HcLL$I7aLL$LT$I7H>H8LL$LT$I7H HLL$LT$ʚI7HHLL$LT$I7HH轔LL$LT$xF8LL$LT$aH=X9LL$LT$HH?H5H#8LL$LT$IHg!MHD$(L8H5H7LL$LT$IH!MHD$ L8H=U8LL$LT$HIH5?H7LL$LT$HI@1H#H5(H='77LL$LT$HH1HLLT$@LL$7LL$LT$@H !HHL$HHmuHELT$@HLL$P0LT$@LL$HD$H|$8LT$@H5LL$H01HH5H=t6LL$LT$@HHi1HLLT$HLL$@7LL$@LT$HH !HHL$HHmu HEHP0HD$H|$8H5H+03黙H+3HCLT$@H1LL$8E1E11P0HY!LL$8LT$@HD$(H!HD$ H!HD$Hk!HD$H NH5bH=O0H MH5CH=0H LH5$H=01E1酗H |H5H={s01H"!HD$H!HD$kH!1E1HD$H!HD$IfSHHHtHǃH/H{HtHCH/tdHHtHǃH/t7HHtHǃH/t [HG[H@0DHGP0HGP0HGP0i@H31Hff.ATIUHSHHHt HՅuH1Ht[LH]A\[]A\Ðf.SH T H1HH`0H 1HH0HHttH@HH9sst vfunHH9u 6HHt@1HC HtH[H+u HCHP0H H5?H841H[H+uHCH1P0H -DH5YH=Ɠ .f.HH! H5H8241HÐf.HH H5H841HÐf.AUHAATAULSHHdH%(HD$1H2trHt_HIHDDH=11HHH1H]-HmHu HEHP0HtdH+tFH<$,1HL$dH3 %(uSH[]A\A]H- HEkHCHP0H<$e,1H<$R,k1f.UHHSHHdH%(HD$1H1tRHt?HH=Η10HHtnH1H],HmHt3HtNH+t8H<$+1HL$dH3 %(u4H[]fDHEHP0@HCHP0@10@HHt#H HH9Gu2H(tH tCHH = H5H=Ae+H H5H=F+H H5sH='+ATIUHSHZH{L[H]A\-Ht,HG HG(HtHG HJ.f.PH YH5H={*Df.USHH*-Hŋ1cH߉*HbH{tH.H H@Ht~&H[]HH[]-f.H[]%-DATIUSHtH{ tH{(u)1[]A\LH5KH H81*LH5QAVAUATUSHHH5H0dH%(HD$(1HdHT$D$HD$1*1HH7D$ff/f/H,fH*\f/D$= f/JYHT$Hk0HH,HT$HHLHLHL0HLHH{ LD$LLH.uzD$1x/C+LD$LLIƋD$Hx(L|*Hc-fH! H5yH8J.1HL$(dH3 %(uUH0[]A\A]A^HzH=1a,HHtHH H8)H+uHCHP01n,H gIH5H=o'H HIH5H=P'SHHW1҅uH9H2 HHH[fDSHHH5H dH%(HD$1HL$HT$ ;(HHusHT$H{ t$ He(uH HN@HOH=1+HHt)HH H8(H+uHCHP01H\$dH3%(uH [ +f.SHHHdH%(HD$1H{ H/%u+H4$H=ƾ1i*HL$dH3 %(uUH[HH=ח19*HHt)HH H8'H+uHCHP01?*Df.ATH0USHHdH%(HD$1D$8+(HC(H'H{ Ht$IH,L>'EHC(w.T$H=M1Z)HL$dH3 %(uVH[]A\ÐHH=ǖ1))HHt)HH H8&H+uHCHP01/)H H5|H=20$ATUSHHH5"H dH%(HD$1HL$HT$ D$P%HH&HC(H&H{ T$HL$t$ I<#L%HC(uT$1H=1(JHH=1'HHt)HH H8%H+uHCHP01H\$dH3%(u H []A\'H aH55H="fATHPUSHHdH%(HD$1D$%HC(H%H{ Ht$I(L$EHC(w.T$H=ݍ1&HL$dH3 %(uVH[]A\ÐH!H=W1&HHt)HH_ H8O$H+uHCHP01&H ,H5 H=“!AWAVAUATUSHHH5غH8dH%(HD$(1HT$D$D$"D$HHoD$c1 (HHP1'IHLd$Ll$ H{ LT%IHHD$ D$PT$tI1Lu}Ht$ HtwH HH9FAWH%{1I.uIVHD$LR0HD$HmHUHD$HR0HD$pfDD$I.u IFLP0Hmu HEHP0t$HPH=H1$HHt"HHP H8@"H+u HCHP01HL$(dH3 %(H8[]A\A]A^A_H(H=1C$IH HL$ugI/nIGLP0_t$LH1H=#H H5BH8%1M1I/IGLP0}H !H55H=.#@AWH:AVAUATIUSH8dH%(HD$(1D$$It$0ALHHI$LHHM$0LLHI|$ LD$$L$Å1%IH:11$HD$H1$HD$HD$$IfDHX%Mİ HB%M04D$$9HcAH% ?)IMl0tH"IHHLh"I/fIGLP0WHH=g1!HHt)HHo H8_H+uHCHP01Ht$(dH34%(H*H8[]A\A]A^A_HH"IHH|$H!u[I/IGLP0fH"IHH|$Ho!uI/IGLP0fI/ujIGL1P0Ht$HHD$HHu H|$HGP0Ht$HHD$HHu HFHP0I.IFLP01@HL$HT$L1H=/] Hw UHSHHH{ H{(uMHH}(u^HE0HtH9u 1H[]H H5H8!f.H H5 H8z!Hq H5*H8Z!HT H5H8=!uSHHH5AHdH%(HD$1H HH1H4$Hu|H$Hp HH9X0uOH{ NHH4$vH$H9X0H@0H+tJHC HDHy H5¶H8b 1HT$dH3%(H[fDHCHP0H HfHH=1YHHtHH H8H+uHCHP01xHHH.HH4$x.H H5{H=/Df.ATUHHH5SHdH%(HD$1H HH1CH4$HH4$H^ HH9n0tXHHJ H$HX0HHp H} /AąuXH$H} Hh0HEH fDH H5ZH8f1HT$dH3%(Hu~H[]A\fHH4$0HAD1H=4HHtHH> H8.HmuHEHP0H H5eH8oH sH5կH=TfAWAVAUATUSHHH5HXdH%(HD$H1HL$8HT$4*HňHFl$4E=>u躭h )‰i')ЃbH|$8HGoAŅ$Hl$8HEH;4 tjH; taHHl$8uPHq H9EtCH H5H81H\$HdH3%(HX[]A\A]A^A_DD$4=!Ny=$N&HW H5H8h1@.}u6H{ H‰1H Hd@ t| NJvH H5H811D$4D$$-' HD$8DHD$@HHD$HHHH@H9ZHHHD$((HD$H;HH9HD$(LxLIHL1HE1HD$@HD$;fDHt$LHHL$JHD$@KIL9H|$DLcHIuH H5H811f.IHH H8H+tH[]HCHH@0H[]DHmuHEHH@0H[]HHsetopt(option, value) -> None Set curl share option. Corresponds to `curl_share_setopt`_ in libcurl, where *option* is specified with the ``CURLSHOPT_*`` constants in libcurl, except that the ``CURLSHOPT_`` prefix has been changed to ``SH_``. Currently, *value* must be either ``LOCK_DATA_COOKIE`` or ``LOCK_DATA_DNS``. Example usage:: import pycurl curl = pycurl.Curl() s = pycurl.CurlShare() s.setopt(pycurl.SH_SHARE, pycurl.LOCK_DATA_COOKIE) s.setopt(pycurl.SH_SHARE, pycurl.LOCK_DATA_DNS) curl.setopt(pycurl.URL, 'https://curl.haxx.se') curl.setopt(pycurl.SHARE, s) curl.perform() curl.close() Raises pycurl.error exception upon failure. .. _curl_share_setopt: https://curl.haxx.se/libcurl/c/curl_share_setopt.htmlclose() -> None Close shared handle. Corresponds to `curl_share_cleanup`_ in libcurl. This method is automatically called by pycurl when a CurlShare object no longer has any references to it, but can also be called explicitly. .. _curl_share_cleanup: https://curl.haxx.se/libcurl/c/curl_share_cleanup.htmlCurlShare() -> New CurlShare object Creates a new :ref:`curlshareobject` which corresponds to a ``CURLSH`` handle in libcurl. CurlShare objects is what you pass as an argument to the SHARE option on :ref:`Curl objects `.version_info() -> tuple Returns a 12-tuple with the version info. Corresponds to `curl_version_info`_ in libcurl. Returns a tuple of information which is similar to the ``curl_version_info_data`` struct returned by ``curl_version_info()`` in libcurl. Example usage:: >>> import pycurl >>> pycurl.version_info() (3, '7.33.0', 467200, 'amd64-portbld-freebsd9.1', 33436, 'OpenSSL/0.9.8x', 0, '1.2.7', ('dict', 'file', 'ftp', 'ftps', 'gopher', 'http', 'https', 'imap', 'imaps', 'pop3', 'pop3s', 'rtsp', 'smtp', 'smtps', 'telnet', 'tftp'), None, 0, None) .. _curl_version_info: https://curl.haxx.se/libcurl/c/curl_version_info.htmlThis module implements an interface to the cURL library. Types: Curl() -> New object. Create a new curl object. CurlMulti() -> New object. Create a new curl multi object. CurlShare() -> New object. Create a new curl share object. Functions: global_init(option) -> None. Initialize curl environment. global_cleanup() -> None. Cleanup curl environment. version_info() -> tuple. Return version information.global_init(option) -> None Initialize curl environment. *option* is one of the constants pycurl.GLOBAL_SSL, pycurl.GLOBAL_WIN32, pycurl.GLOBAL_ALL, pycurl.GLOBAL_NOTHING, pycurl.GLOBAL_DEFAULT. Corresponds to `curl_global_init`_ in libcurl. .. _curl_global_init: https://curl.haxx.se/libcurl/c/curl_global_init.htmlglobal_cleanup() -> None Cleanup curl environment. Corresponds to `curl_global_cleanup`_ in libcurl. .. _curl_global_cleanup: https://curl.haxx.se/libcurl/c/curl_global_cleanup.htmltimeout() -> int Returns how long to wait for action before proceeding. Corresponds to `curl_multi_timeout`_ in libcurl. .. _curl_multi_timeout: https://curl.haxx.se/libcurl/c/curl_multi_timeout.htmlsocket_all() -> Tuple. Returns result from doing a socket_all() on the curl multi file descriptor with the given timeout.socket_action(sockfd, ev_bitmask) -> tuple Returns result from doing a socket_action() on the curl multi file descriptor with the given timeout. Corresponds to `curl_multi_socket_action`_ in libcurl. .. _curl_multi_socket_action: https://curl.haxx.se/libcurl/c/curl_multi_socket_action.htmlsetopt(option, value) -> None Set curl multi option. Corresponds to `curl_multi_setopt`_ in libcurl. *option* specifies which option to set. PycURL defines constants corresponding to ``CURLMOPT_*`` constants in libcurl, except that the ``CURLMOPT_`` prefix is replaced with ``M_`` prefix. For example, ``CURLMOPT_PIPELINING`` is exposed in PycURL as ``pycurl.M_PIPELINING``. For convenience, ``CURLMOPT_*`` constants are also exposed on CurlMulti objects:: import pycurl m = pycurl.CurlMulti() m.setopt(pycurl.M_PIPELINING, 1) # Same as: m.setopt(m.M_PIPELINING, 1) *value* specifies the value to set the option to. Different options accept values of different types: - Options specified by `curl_multi_setopt`_ as accepting ``1`` or an integer value accept Python integers, long integers (on Python 2.x) and booleans:: m.setopt(pycurl.M_PIPELINING, True) m.setopt(pycurl.M_PIPELINING, 1) # Python 2.x only: m.setopt(pycurl.M_PIPELINING, 1L) - ``*FUNCTION`` options accept a function. Supported callbacks are ``CURLMOPT_SOCKETFUNCTION`` AND ``CURLMOPT_TIMERFUNCTION``. Please refer to the PycURL test suite for examples on using the callbacks. Raises TypeError when the option value is not of a type accepted by the respective option, and pycurl.error exception when libcurl rejects the option or its value. .. _curl_multi_setopt: https://curl.haxx.se/libcurl/c/curl_multi_setopt.htmlselect([timeout]) -> number of ready file descriptors or -1 on timeout Returns result from doing a select() on the curl multi file descriptor with the given timeout. This is a convenience function which simplifies the combined use of ``fdset()`` and the ``select`` module. Example usage:: import pycurl c = pycurl.Curl() c.setopt(pycurl.URL, "https://curl.haxx.se") m = pycurl.CurlMulti() m.add_handle(c) while 1: ret, num_handles = m.perform() if ret != pycurl.E_CALL_MULTI_PERFORM: break while num_handles: ret = m.select(1.0) if ret == -1: continue while 1: ret, num_handles = m.perform() if ret != pycurl.E_CALL_MULTI_PERFORM: breakremove_handle(Curl object) -> None Corresponds to `curl_multi_remove_handle`_ in libcurl. This method removes an existing and valid Curl object from the CurlMulti object. IMPORTANT NOTE: remove_handle does not implicitly remove a Python reference from the Curl object (and thus does not decrease the reference count on the Curl object). .. _curl_multi_remove_handle: https://curl.haxx.se/libcurl/c/curl_multi_remove_handle.htmlperform() -> tuple of status and the number of active Curl objects Corresponds to `curl_multi_perform`_ in libcurl. .. _curl_multi_perform: https://curl.haxx.se/libcurl/c/curl_multi_perform.htmlinfo_read([max_objects]) -> tuple(number of queued messages, a list of successful objects, a list of failed objects) Returns a tuple (number of queued handles, [curl objects]). Corresponds to the `curl_multi_info_read`_ function in libcurl. This method extracts at most *max* messages from the multi stack and returns them in two lists. The first list contains the handles which completed successfully and the second list contains a tuple *(curl object, curl error number, curl error message)* for each failed curl object. The number of queued messages after this method has been called is also returned. .. _curl_multi_info_read: https://curl.haxx.se/libcurl/c/curl_multi_info_read.htmlfdset() -> tuple of lists with active file descriptors, readable, writeable, exceptions Returns a tuple of three lists that can be passed to the select.select() method. Corresponds to `curl_multi_fdset`_ in libcurl. This method extracts the file descriptor information from a CurlMulti object. The returned lists can be used with the ``select`` module to poll for events. Example usage:: import pycurl c = pycurl.Curl() c.setopt(pycurl.URL, "https://curl.haxx.se") m = pycurl.CurlMulti() m.add_handle(c) while 1: ret, num_handles = m.perform() if ret != pycurl.E_CALL_MULTI_PERFORM: break while num_handles: apply(select.select, m.fdset() + (1,)) while 1: ret, num_handles = m.perform() if ret != pycurl.E_CALL_MULTI_PERFORM: break .. _curl_multi_fdset: https://curl.haxx.se/libcurl/c/curl_multi_fdset.htmlclose() -> None Corresponds to `curl_multi_cleanup`_ in libcurl. This method is automatically called by pycurl when a CurlMulti object no longer has any references to it, but can also be called explicitly. .. _curl_multi_cleanup: https://curl.haxx.se/libcurl/c/curl_multi_cleanup.htmlassign(sockfd, object) -> None Creates an association in the multi handle between the given socket and a private object in the application. Corresponds to `curl_multi_assign`_ in libcurl. .. _curl_multi_assign: https://curl.haxx.se/libcurl/c/curl_multi_assign.htmladd_handle(Curl object) -> None Corresponds to `curl_multi_add_handle`_ in libcurl. This method adds an existing and valid Curl object to the CurlMulti object. *Changed in version 7.43.0.2:* add_handle now ensures that the Curl object is not garbage collected while it is being used by a CurlMulti object. Previously application had to maintain an outstanding reference to the Curl object to keep it from being garbage collected. .. _curl_multi_add_handle: https://curl.haxx.se/libcurl/c/curl_multi_add_handle.htmlCurlMulti() -> New CurlMulti object Creates a new :ref:`curlmultiobject` which corresponds to a ``CURLM`` handle in libcurl.unsetopt(option) -> None Reset curl session option to its default value. Only some curl options may be reset via this method. libcurl does not provide a general way to reset a single option to its default value; :py:meth:`pycurl.Curl.reset` resets all options to their default values, otherwise :py:meth:`pycurl.Curl.setopt` must be called with whatever value is the default. For convenience, PycURL provides this unsetopt method to reset some of the options to their default values. Raises pycurl.error exception on failure. ``c.unsetopt(option)`` is equivalent to ``c.setopt(option, None)``.setopt_string(option, value) -> None Set curl session option to a string value. This method allows setting string options that are not officially supported by PycURL, for example because they did not exist when the version of PycURL being used was released. :py:meth:`pycurl.Curl.setopt` should be used for setting options that PycURL knows about. **Warning:** No checking is performed that *option* does, in fact, expect a string value. Using this method incorrectly can crash the program and may lead to a security vulnerability. Furthermore, it is on the application to ensure that the *value* object does not get garbage collected while libcurl is using it. libcurl copies most string options but not all; one option whose value is not copied by libcurl is `CURLOPT_POSTFIELDS`_. *option* would generally need to be given as an integer literal rather than a symbolic constant. *value* can be a binary string or a Unicode string using ASCII code points, same as with string options given to PycURL elsewhere. Example setting URL via ``setopt_string``:: import pycurl c = pycurl.Curl() c.setopt_string(10002, "http://www.python.org/") .. _CURLOPT_POSTFIELDS: https://curl.haxx.se/libcurl/c/CURLOPT_POSTFIELDS.htmlsetopt(option, value) -> None Set curl session option. Corresponds to `curl_easy_setopt`_ in libcurl. *option* specifies which option to set. PycURL defines constants corresponding to ``CURLOPT_*`` constants in libcurl, except that the ``CURLOPT_`` prefix is removed. For example, ``CURLOPT_URL`` is exposed in PycURL as ``pycurl.URL``, with some exceptions as detailed below. For convenience, ``CURLOPT_*`` constants are also exposed on the Curl objects themselves:: import pycurl c = pycurl.Curl() c.setopt(pycurl.URL, "http://www.python.org/") # Same as: c.setopt(c.URL, "http://www.python.org/") The following are exceptions to option constant naming convention: - ``CURLOPT_FILETIME`` is mapped as ``pycurl.OPT_FILETIME`` - ``CURLOPT_CERTINFO`` is mapped as ``pycurl.OPT_CERTINFO`` - ``CURLOPT_COOKIELIST`` is mapped as ``pycurl.COOKIELIST`` and, as of PycURL 7.43.0.2, also as ``pycurl.OPT_COOKIELIST`` - ``CURLOPT_RTSP_CLIENT_CSEQ`` is mapped as ``pycurl.OPT_RTSP_CLIENT_CSEQ`` - ``CURLOPT_RTSP_REQUEST`` is mapped as ``pycurl.OPT_RTSP_REQUEST`` - ``CURLOPT_RTSP_SERVER_CSEQ`` is mapped as ``pycurl.OPT_RTSP_SERVER_CSEQ`` - ``CURLOPT_RTSP_SESSION_ID`` is mapped as ``pycurl.OPT_RTSP_SESSION_ID`` - ``CURLOPT_RTSP_STREAM_URI`` is mapped as ``pycurl.OPT_RTSP_STREAM_URI`` - ``CURLOPT_RTSP_TRANSPORT`` is mapped as ``pycurl.OPT_RTSP_TRANSPORT`` *value* specifies the value to set the option to. Different options accept values of different types: - Options specified by `curl_easy_setopt`_ as accepting ``1`` or an integer value accept Python integers, long integers (on Python 2.x) and booleans:: c.setopt(pycurl.FOLLOWLOCATION, True) c.setopt(pycurl.FOLLOWLOCATION, 1) # Python 2.x only: c.setopt(pycurl.FOLLOWLOCATION, 1L) - Options specified as accepting strings by ``curl_easy_setopt`` accept byte strings (``str`` on Python 2, ``bytes`` on Python 3) and Unicode strings with ASCII code points only. For more information, please refer to :ref:`unicode`. Example:: c.setopt(pycurl.URL, "http://www.python.org/") c.setopt(pycurl.URL, u"http://www.python.org/") # Python 3.x only: c.setopt(pycurl.URL, b"http://www.python.org/") - ``HTTP200ALIASES``, ``HTTPHEADER``, ``POSTQUOTE``, ``PREQUOTE``, ``PROXYHEADER`` and ``QUOTE`` accept a list or tuple of strings. The same rules apply to these strings as do to string option values. Example:: c.setopt(pycurl.HTTPHEADER, ["Accept:"]) c.setopt(pycurl.HTTPHEADER, ("Accept:",)) - ``READDATA`` accepts a file object or any Python object which has a ``read`` method. On Python 2, a file object will be passed directly to libcurl and may result in greater transfer efficiency, unless PycURL has been compiled with ``AVOID_STDIO`` option. On Python 3 and on Python 2 when the value is not a true file object, ``READDATA`` is emulated in PycURL via ``READFUNCTION``. The file should generally be opened in binary mode. Example:: f = open('file.txt', 'rb') c.setopt(c.READDATA, f) - ``WRITEDATA`` and ``WRITEHEADER`` accept a file object or any Python object which has a ``write`` method. On Python 2, a file object will be passed directly to libcurl and may result in greater transfer efficiency, unless PycURL has been compiled with ``AVOID_STDIO`` option. On Python 3 and on Python 2 when the value is not a true file object, ``WRITEDATA`` is emulated in PycURL via ``WRITEFUNCTION``. The file should generally be opened in binary mode. Example:: f = open('/dev/null', 'wb') c.setopt(c.WRITEDATA, f) - ``*FUNCTION`` options accept a function. Supported callbacks are documented in :ref:`callbacks`. Example:: # Python 2 import StringIO b = StringIO.StringIO() c.setopt(pycurl.WRITEFUNCTION, b.write) - ``SHARE`` option accepts a :ref:`curlshareobject`. It is possible to set integer options - and only them - that PycURL does not know about by using the numeric value of the option constant directly. For example, ``pycurl.VERBOSE`` has the value 42, and may be set as follows:: c.setopt(42, 1) *setopt* can reset some options to their default value, performing the job of :py:meth:`pycurl.Curl.unsetopt`, if ``None`` is passed for the option value. The following two calls are equivalent:: c.setopt(c.URL, None) c.unsetopt(c.URL) Raises TypeError when the option value is not of a type accepted by the respective option, and pycurl.error exception when libcurl rejects the option or its value. .. _curl_easy_setopt: https://curl.haxx.se/libcurl/c/curl_easy_setopt.htmlset_ca_certs() -> None Load ca certs from provided unicode string. Note that certificates will be added only when cURL starts new connection.reset() -> None Reset all options set on curl handle to default values, but preserves live connections, session ID cache, DNS cache, cookies, and shares. Corresponds to `curl_easy_reset`_ in libcurl. .. _curl_easy_reset: https://curl.haxx.se/libcurl/c/curl_easy_reset.htmlperform_rs() -> response_body Perform a file transfer and return response body as a string. On Python 2, this method arranges for response body to be saved in a StringIO instance, then invokes :ref:`perform ` to perform the file transfer, then returns the value of the StringIO instance. This behavior is identical to :ref:`perform_rb `. On Python 3, this method arranges for response body to be saved in a BytesIO instance, then invokes :ref:`perform ` to perform the file transfer, then decodes the response body in Python's default encoding and returns the decoded body as a Unicode string (``str`` instance). *Note:* decoding happens after the transfer finishes, thus an encoding error implies the transfer/network operation succeeded. Any transfer errors raise ``pycurl.error`` exception, just like in :ref:`perform `. Use :ref:`perform_rb ` to retrieve response body as a byte string (``bytes`` instance on Python 3) without attempting to decode it. Raises ``pycurl.error`` exception upon failure. *Added in version 7.43.0.2.*perform_rb() -> response_body Perform a file transfer and return response body as a byte string. This method arranges for response body to be saved in a StringIO (Python 2) or BytesIO (Python 3) instance, then invokes :ref:`perform ` to perform the file transfer, then returns the value of the StringIO/BytesIO instance which is a ``str`` instance on Python 2 and ``bytes`` instance on Python 3. Errors during transfer raise ``pycurl.error`` exceptions just like in :ref:`perform `. Use :ref:`perform_rs ` to retrieve response body as a string (``str`` instance on both Python 2 and 3). Raises ``pycurl.error`` exception upon failure. *Added in version 7.43.0.2.*perform() -> None Perform a file transfer. Corresponds to `curl_easy_perform`_ in libcurl. Raises pycurl.error exception upon failure. .. _curl_easy_perform: https://curl.haxx.se/libcurl/c/curl_easy_perform.htmlpause(bitmask) -> None Pause or unpause a curl handle. Bitmask should be a value such as PAUSE_RECV or PAUSE_CONT. Corresponds to `curl_easy_pause`_ in libcurl. The argument should be derived from the ``PAUSE_RECV``, ``PAUSE_SEND``, ``PAUSE_ALL`` and ``PAUSE_CONT`` constants. Raises pycurl.error exception upon failure. .. _curl_easy_pause: https://curl.haxx.se/libcurl/c/curl_easy_pause.htmlgetinfo_raw(option) -> Result Extract and return information from a curl session, returning string data as byte strings. Corresponds to `curl_easy_getinfo`_ in libcurl. The ``getinfo_raw`` method should not be called unless ``perform`` has been called and finished. *option* is a constant corresponding to one of the ``CURLINFO_*`` constants in libcurl. Most option constant names match the respective ``CURLINFO_*`` constant names with the ``CURLINFO_`` prefix removed, for example ``CURLINFO_CONTENT_TYPE`` is accessible as ``pycurl.CONTENT_TYPE``. Exceptions to this rule are as follows: - ``CURLINFO_FILETIME`` is mapped as ``pycurl.INFO_FILETIME`` - ``CURLINFO_COOKIELIST`` is mapped as ``pycurl.INFO_COOKIELIST`` - ``CURLINFO_CERTINFO`` is mapped as ``pycurl.INFO_CERTINFO`` - ``CURLINFO_RTSP_CLIENT_CSEQ`` is mapped as ``pycurl.INFO_RTSP_CLIENT_CSEQ`` - ``CURLINFO_RTSP_CSEQ_RECV`` is mapped as ``pycurl.INFO_RTSP_CSEQ_RECV`` - ``CURLINFO_RTSP_SERVER_CSEQ`` is mapped as ``pycurl.INFO_RTSP_SERVER_CSEQ`` - ``CURLINFO_RTSP_SESSION_ID`` is mapped as ``pycurl.INFO_RTSP_SESSION_ID`` The type of return value depends on the option, as follows: - Options documented by libcurl to return an integer value return a Python integer (``long`` on Python 2, ``int`` on Python 3). - Options documented by libcurl to return a floating point value return a Python ``float``. - Options documented by libcurl to return a string value return a Python byte string (``str`` on Python 2, ``bytes`` on Python 3). The string contains whatever data libcurl returned. Use :ref:`getinfo ` to retrieve this data as a Unicode string on Python 3. - ``SSL_ENGINES`` and ``INFO_COOKIELIST`` return a list of byte strings. The same encoding caveats apply; use :ref:`getinfo ` to retrieve the data as a list of potentially Unicode strings. - ``INFO_CERTINFO`` returns a list with one element per certificate in the chain, starting with the leaf; each element is a sequence of *(key, value)* tuples where both ``key`` and ``value`` are byte strings. String encoding caveats apply; use :ref:`getinfo ` to retrieve certificate data as potentially Unicode strings. On Python 2, ``getinfo`` and ``getinfo_raw`` behave identically. Example usage:: import pycurl c = pycurl.Curl() c.setopt(pycurl.OPT_CERTINFO, 1) c.setopt(pycurl.URL, "https://python.org") c.setopt(pycurl.FOLLOWLOCATION, 1) c.perform() print(c.getinfo_raw(pycurl.HTTP_CODE)) # --> 200 print(c.getinfo_raw(pycurl.EFFECTIVE_URL)) # --> b"https://www.python.org/" certinfo = c.getinfo_raw(pycurl.INFO_CERTINFO) print(certinfo) # --> [((b'Subject', b'C = AU, ST = Some-State, O = PycURL test suite, CN = localhost'), (b'Issuer', b'C = AU, ST = Some-State, O = PycURL test suite, OU = localhost, CN = localhost'), (b'Version', b'0'), ...)] Raises pycurl.error exception upon failure. *Added in version 7.43.0.2.* .. _curl_easy_getinfo: https://curl.haxx.se/libcurl/c/curl_easy_getinfo.htmlgetinfo(option) -> Result Extract and return information from a curl session, decoding string data in Python's default encoding at the time of the call. Corresponds to `curl_easy_getinfo`_ in libcurl. The ``getinfo`` method should not be called unless ``perform`` has been called and finished. *option* is a constant corresponding to one of the ``CURLINFO_*`` constants in libcurl. Most option constant names match the respective ``CURLINFO_*`` constant names with the ``CURLINFO_`` prefix removed, for example ``CURLINFO_CONTENT_TYPE`` is accessible as ``pycurl.CONTENT_TYPE``. Exceptions to this rule are as follows: - ``CURLINFO_FILETIME`` is mapped as ``pycurl.INFO_FILETIME`` - ``CURLINFO_COOKIELIST`` is mapped as ``pycurl.INFO_COOKIELIST`` - ``CURLINFO_CERTINFO`` is mapped as ``pycurl.INFO_CERTINFO`` - ``CURLINFO_RTSP_CLIENT_CSEQ`` is mapped as ``pycurl.INFO_RTSP_CLIENT_CSEQ`` - ``CURLINFO_RTSP_CSEQ_RECV`` is mapped as ``pycurl.INFO_RTSP_CSEQ_RECV`` - ``CURLINFO_RTSP_SERVER_CSEQ`` is mapped as ``pycurl.INFO_RTSP_SERVER_CSEQ`` - ``CURLINFO_RTSP_SESSION_ID`` is mapped as ``pycurl.INFO_RTSP_SESSION_ID`` The type of return value depends on the option, as follows: - Options documented by libcurl to return an integer value return a Python integer (``long`` on Python 2, ``int`` on Python 3). - Options documented by libcurl to return a floating point value return a Python ``float``. - Options documented by libcurl to return a string value return a Python string (``str`` on Python 2 and Python 3). On Python 2, the string contains whatever data libcurl returned. On Python 3, the data returned by libcurl is decoded using the default string encoding at the time of the call. If the data cannot be decoded using the default encoding, ``UnicodeDecodeError`` is raised. Use :ref:`getinfo_raw ` to retrieve the data as ``bytes`` in these cases. - ``SSL_ENGINES`` and ``INFO_COOKIELIST`` return a list of strings. The same encoding caveats apply; use :ref:`getinfo_raw ` to retrieve the data as a list of byte strings. - ``INFO_CERTINFO`` returns a list with one element per certificate in the chain, starting with the leaf; each element is a sequence of *(key, value)* tuples where both ``key`` and ``value`` are strings. String encoding caveats apply; use :ref:`getinfo_raw ` to retrieve certificate data as byte strings. On Python 2, ``getinfo`` and ``getinfo_raw`` behave identically. Example usage:: import pycurl c = pycurl.Curl() c.setopt(pycurl.OPT_CERTINFO, 1) c.setopt(pycurl.URL, "https://python.org") c.setopt(pycurl.FOLLOWLOCATION, 1) c.perform() print(c.getinfo(pycurl.HTTP_CODE)) # --> 200 print(c.getinfo(pycurl.EFFECTIVE_URL)) # --> "https://www.python.org/" certinfo = c.getinfo(pycurl.INFO_CERTINFO) print(certinfo) # --> [(('Subject', 'C = AU, ST = Some-State, O = PycURL test suite, CN = localhost'), ('Issuer', 'C = AU, ST = Some-State, O = PycURL test suite, OU = localhost, CN = localhost'), ('Version', '0'), ...)] Raises pycurl.error exception upon failure. .. _curl_easy_getinfo: https://curl.haxx.se/libcurl/c/curl_easy_getinfo.htmlerrstr_raw() -> byte string Return the internal libcurl error buffer of this handle as a byte string. Return value is a ``str`` instance on Python 2 and ``bytes`` instance on Python 3. Unlike :ref:`errstr_raw `, ``errstr_raw`` allows reading libcurl error buffer in Python 3 when its contents is not valid in Python's default encoding. On Python 2, ``errstr`` and ``errstr_raw`` behave identically. *Added in version 7.43.0.2.*errstr() -> string Return the internal libcurl error buffer of this handle as a string. Return value is a ``str`` instance on all Python versions. On Python 3, error buffer data is decoded using Python's default encoding at the time of the call. If this decoding fails, ``UnicodeDecodeError`` is raised. Use :ref:`errstr_raw ` to retrieve the error buffer as a byte string in this case. On Python 2, ``errstr`` and ``errstr_raw`` behave identically.close() -> None Close handle and end curl session. Corresponds to `curl_easy_cleanup`_ in libcurl. This method is automatically called by pycurl when a Curl object no longer has any references to it, but can also be called explicitly. .. _curl_easy_cleanup: https://curl.haxx.se/libcurl/c/curl_easy_cleanup.htmlCurl() -> New Curl object Creates a new :ref:`curlobject` which corresponds to a ``CURL`` handle in libcurl. Curl objects automatically set CURLOPT_VERBOSE to 0, CURLOPT_NOPROGRESS to 1, provide a default CURLOPT_USERAGENT and setup CURLOPT_ERRORBUFFER to point to a private error buffer. Implicitly calls :py:func:`pycurl.global_init` if the latter has not yet been called.Curl objects do not support deserializationCurl objects do not support serializationcannot invoke %s() - no curl handlecannot invoke %s() - perform() is currently runningpycurl_get_thread_state(self) == NULLsrc/easy.cg_pycurl_useragent*ptr == 0initializing curl failedself != NULLPy_TYPE(self) == p_Curl_Typeself->state == NULLself->multi_stack == NULLself->share == NULLcloseresetting curl failedpycurl.Curlerrstrerrstr_rawperformperform_rbperform_rssetopt_stringresetset_ca_certs__getstate____setstate__do_curl_clearutil_curl_closeutil_curl_initdo_curl_newassert_curl_stateinteger overflow in write callbackwrite callback must return int or NoneOpen socket callback returned an object whose fileno method did not return an integerOpen socket callback's return value must be a socketsockopt callback returned %s which is not an integer closesocket callback returned %s which is not an integer ssh key callback returned %s which is not an integer invalid return value for seek callback %d not in (0, 1, 2)seek callback must return 0 (CURL_SEEKFUNC_OK), 1 (CURL_SEEKFUNC_FAIL), 2 (CURL_SEEKFUNC_CANTSEEK) or Noneinteger overflow in read callbackinvalid return value for read callback (%ld bytes returned when at most %ld bytes were wanted)invalid return value for read callback (%ld bytes returned after encoding to utf-8 when at most %ld bytes were wanted)read callback must return a byte string or Unicode string with ASCII code points onlyinteger overflow in debug callbackioctl callback returned invalid valuePyBytes_Check(self->ca_certs_obj)(y#)(y#i)(yi)(si)(siii)Unsupported address family(iiiN)(iN)fileno(ii)(i)(OOi)(i,i)strictascii(dddd)(LLLL)(iy#)src/easycb.cEmpty certificate dataCertificate data is too long.Can't allocate bufferstore != NULLadd_ca_certsssl_ctx_callbacks#sy#yi:getinfo_rawinvalid argument to getinfoi:getinfounsetopt() is not supported for this optionstrings are not supported for this optionintegers are not supported for this optionlist items must be list or tuple objectslist or tuple must contain two elements (name, value)list or tuple must contain a byte string or Unicode string with ASCII code points only as first elementlist or tuple must contain at least one option and one valuelist or tuple must contain an even number of itemsvalue must be a byte string or a Unicode string with ASCII code points onlyunsupported second type in tuplelists are not supported for this optionold_slist != NULL && slist == NULLlist items must be byte strings or Unicode strings with ASCII code points onlyfunctions are not supported for this optionCurl object already sharing. Unshare first.objects are not supported for this optionobject given without a read methodobject given without a write methodinvalid arguments to setopt_stringset_ca_certs argument must be a byte string or a Unicode string with ASCII code points onlysrc/easyopt.cstr != NULLi:unsetoptinvalid arguments to unsetoptiO:setoptexpected valueoption must be an integerunsupported optioninvalid arguments to setopt(iO)writeO:cadatado_curl_setopt_listdo_curl_setopt_string_implsrc/easyperform.cself->state != NULLgetvaluei:pausepause/unpause failed(is)do_curl_pausedo_curl_performSymbol already defined: %s src/module.ci:global_initinvalid option to global_initunable to set global option|i:version_infounable to get version info7.61.1d != NULLpycurl.errorversionCOMPILE_LIBCURL_VERSION_NUMREADFUNC_ABORTREADFUNC_PAUSEWRITEFUNC_PAUSEIOE_OKIOE_UNKNOWNCMDIOE_FAILRESTARTIOCMD_NOPIOCMD_RESTARTREADSOCKET_BADINFOTYPE_TEXTINFOTYPE_HEADER_ININFOTYPE_HEADER_OUTINFOTYPE_DATA_ININFOTYPE_DATA_OUTINFOTYPE_SSL_DATA_ININFOTYPE_SSL_DATA_OUTE_AGAINE_ALREADY_COMPLETEE_BAD_CALLING_ORDERE_BAD_PASSWORD_ENTEREDE_FTP_BAD_DOWNLOAD_RESUMEE_FTP_COULDNT_SET_TYPEE_FTP_PARTIAL_FILEE_FTP_USER_PASSWORD_INCORRECTE_HTTP_NOT_FOUNDE_HTTP_PORT_FAILEDE_MALFORMAT_USERE_QUOTE_ERRORE_RANGE_ERRORE_REMOTE_ACCESS_DENIEDE_REMOTE_DISK_FULLE_REMOTE_FILE_EXISTSE_UPLOAD_FAILEDE_URL_MALFORMAT_USERE_USE_SSL_FAILEDE_UNSUPPORTED_PROTOCOLE_FAILED_INITE_URL_MALFORMATE_NOT_BUILT_INE_COULDNT_RESOLVE_PROXYE_COULDNT_RESOLVE_HOSTE_COULDNT_CONNECTE_FTP_WEIRD_SERVER_REPLYE_FTP_ACCESS_DENIEDE_FTP_ACCEPT_FAILEDE_FTP_WEIRD_PASS_REPLYE_FTP_WEIRD_USER_REPLYE_FTP_WEIRD_PASV_REPLYE_FTP_WEIRD_227_FORMATE_FTP_CANT_GET_HOSTE_FTP_CANT_RECONNECTE_FTP_COULDNT_SET_BINARYE_PARTIAL_FILEE_FTP_COULDNT_RETR_FILEE_FTP_WRITE_ERRORE_FTP_QUOTE_ERRORE_HTTP_RETURNED_ERRORE_WRITE_ERRORE_FTP_COULDNT_STOR_FILEE_READ_ERRORE_OUT_OF_MEMORYE_OPERATION_TIMEOUTEDE_OPERATION_TIMEDOUTE_FTP_COULDNT_SET_ASCIIE_FTP_PORT_FAILEDE_FTP_COULDNT_USE_RESTE_FTP_COULDNT_GET_SIZEE_HTTP_RANGE_ERRORE_HTTP_POST_ERRORE_SSL_CACERTE_SSL_CACERT_BADFILEE_SSL_CERTPROBLEME_SSL_CIPHERE_SSL_CONNECT_ERRORE_SSL_CRL_BADFILEE_SSL_ENGINE_INITFAILEDE_SSL_ENGINE_NOTFOUNDE_SSL_ENGINE_SETFAILEDE_SSL_INVALIDCERTSTATUSE_SSL_ISSUER_ERRORE_SSL_PEER_CERTIFICATEE_SSL_PINNEDPUBKEYNOTMATCHE_SSL_SHUTDOWN_FAILEDE_BAD_DOWNLOAD_RESUMEE_FILE_COULDNT_READ_FILEE_LDAP_CANNOT_BINDE_LDAP_SEARCH_FAILEDE_LIBRARY_NOT_FOUNDE_FUNCTION_NOT_FOUNDE_ABORTED_BY_CALLBACKE_BAD_FUNCTION_ARGUMENTE_INTERFACE_FAILEDE_TOO_MANY_REDIRECTSE_UNKNOWN_OPTIONE_UNKNOWN_TELNET_OPTIONE_TELNET_OPTION_SYNTAXE_GOT_NOTHINGE_SEND_ERRORE_RECV_ERRORE_SHARE_IN_USEE_BAD_CONTENT_ENCODINGE_LDAP_INVALID_URLE_FILESIZE_EXCEEDEDE_FTP_SSL_FAILEDE_SEND_FAIL_REWINDE_LOGIN_DENIEDE_PEER_FAILED_VERIFICATIONE_TFTP_NOTFOUNDE_TFTP_PERME_TFTP_DISKFULLE_TFTP_ILLEGALE_TFTP_UNKNOWNIDE_TFTP_EXISTSE_TFTP_NOSUCHUSERE_CONV_FAILEDE_CONV_REQDE_REMOTE_FILE_NOT_FOUNDE_SSHE_FTP_PRET_FAILEDE_RTSP_CSEQ_ERRORE_RTSP_SESSION_ERRORE_CHUNK_FAILEDE_FTP_BAD_FILE_LISTE_FTP_ACCEPT_TIMEOUTE_NO_CONNECTION_AVAILABLEE_HTTP2PROXYTYPE_HTTPPROXYTYPE_HTTP_1_0PROXYTYPE_SOCKS4PROXYTYPE_SOCKS4APROXYTYPE_SOCKS5PROXYTYPE_SOCKS5_HOSTNAMEHTTPAUTH_ANYHTTPAUTH_ANYSAFEHTTPAUTH_BASICHTTPAUTH_DIGESTHTTPAUTH_DIGEST_IEHTTPAUTH_GSSNEGOTIATEHTTPAUTH_NEGOTIATEHTTPAUTH_NTLMHTTPAUTH_NTLM_WBHTTPAUTH_NONEHTTPAUTH_ONLYGSSAPI_DELEGATION_FLAGGSSAPI_DELEGATION_NONEGSSAPI_DELEGATION_POLICY_FLAGGSSAPI_DELEGATIONFTPSSL_NONEFTPSSL_TRYFTPSSL_CONTROLFTPSSL_ALLFTPAUTH_DEFAULTFTPAUTH_SSLFTPAUTH_TLSFORM_BUFFERFORM_BUFFERPTRFORM_CONTENTSFORM_FILEFORM_CONTENTTYPEFORM_FILENAMEFTPMETHOD_DEFAULTFTPMETHOD_MULTICWDFTPMETHOD_NOCWDFTPMETHOD_SINGLECWDCOOKIESESSIONDIRLISTONLYFTPPORTINFILEINFILESIZELOW_SPEED_LIMITLOW_SPEED_TIMEPROXYPASSWORDPROXYUSERNAMEPROXYUSERPWDREADFUNCTIONRESUME_FROMTELNETOPTIONSUSE_SSLUSERAGENTWRITEFUNCTIONOPT_RTSP_CLIENT_CSEQOPT_RTSP_REQUESTOPT_RTSP_SERVER_CSEQOPT_RTSP_SESSION_IDOPT_RTSP_STREAM_URIOPT_RTSP_TRANSPORTWRITEDATAREADDATAPROXYPORTHTTPPROXYTUNNELVERBOSENOPROGRESSNOBODYFAILONERRORFTPLISTONLYFTPAPPENDNETRCFOLLOWLOCATIONTRANSFERTEXTPUTPOSTFIELDSIZEHTTPHEADERPROXYHEADERHEADEROPTPATH_AS_ISPIPEWAITHTTPPOSTSSLCERTPASSWDCRLFPOSTQUOTEPREQUOTEWRITEHEADERHEADERFUNCTIONSEEKFUNCTIONCOOKIEFILESSLVERSIONTIMECONDITIONTIMEVALUECUSTOMREQUESTSTDERRINTERFACEKRB4LEVELKRBLEVELPROGRESSFUNCTIONXFERINFOFUNCTIONFTP_USE_PRETLOGIN_OPTIONSSASL_IRXOAUTH2_BEAREROPT_FILETIMEMAXREDIRSFRESH_CONNECTFORBID_REUSERANDOM_FILEEGDSOCKETCONNECTTIMEOUTHTTPGETSSL_VERIFYHOSTCOOKIEJARSSL_CIPHER_LISTFTP_USE_EPSVSSLKEYPASSWDSSLENGINESSLENGINE_DEFAULTDNS_CACHE_TIMEOUTDNS_USE_GLOBAL_CACHEDEBUGFUNCTIONBUFFERSIZENOSIGNALPROXYTYPEACCEPT_ENCODINGTRANSFER_ENCODINGHTTP200ALIASESUNRESTRICTED_AUTHFTP_USE_EPRTHTTPAUTHFTP_CREATE_MISSING_DIRSPROXYAUTHFTP_RESPONSE_TIMEOUTIPRESOLVEMAXFILESIZEINFILESIZE_LARGERESUME_FROM_LARGEMAXFILESIZE_LARGENETRC_FILEFTP_SSLPOSTFIELDSIZE_LARGETCP_NODELAYFTPSSLAUTHIOCTLFUNCTIONOPENSOCKETFUNCTIONCLOSESOCKETFUNCTIONSOCKOPTFUNCTIONFTP_ACCOUNTIGNORE_CONTENT_LENGTHOPT_COOKIELISTFTP_SKIP_PASV_IPFTP_FILEMETHODCONNECT_ONLYLOCALPORTLOCALPORTRANGEFTP_ALTERNATIVE_TO_USERMAX_SEND_SPEED_LARGEMAX_RECV_SPEED_LARGESSL_SESSIONID_CACHESSL_VERIFYSTATUSSSH_AUTH_TYPESSSH_PUBLIC_KEYFILESSH_PRIVATE_KEYFILESSH_KNOWNHOSTSSSH_KEYFUNCTIONFTP_SSL_CCCCONNECTTIMEOUT_MSACCEPTTIMEOUT_MSEXPECT_100_TIMEOUT_MSTCP_KEEPALIVETCP_KEEPIDLETCP_KEEPINTVLHTTP_TRANSFER_DECODINGHTTP_CONTENT_DECODINGNEW_FILE_PERMSNEW_DIRECTORY_PERMSPOST301PROXY_TRANSFER_MODEPROXY_SERVICE_NAMEPROXY_CAPATHPROXY_CAINFOPRE_PROXYPROXY_SSLCERTPROXY_SSLCERTTYPEPROXY_SSLKEYPROXY_SSLKEYTYPEPROXY_SSL_VERIFYPEERCOPYPOSTFIELDSSSH_HOST_PUBLIC_KEY_MD5AUTOREFERERCRLFILEISSUERCERTADDRESS_SCOPEOPT_CERTINFOPOSTREDIRNOPROXYREDIR_PROTOCOLSPROTO_HTTPPROTO_HTTPSPROTO_FTPPROTO_FTPSPROTO_SCPPROTO_SFTPPROTO_TELNETPROTO_LDAPPROTO_LDAPSPROTO_DICTPROTO_FILEPROTO_TFTPPROTO_IMAPPROTO_IMAPSPROTO_POP3PROTO_POP3SPROTO_SMTPPROTO_SMTPSPROTO_RTSPPROTO_RTMPPROTO_RTMPTPROTO_RTMPEPROTO_RTMPTEPROTO_RTMPSPROTO_RTMPTSPROTO_GOPHERPROTO_SMBPROTO_SMBSPROTO_ALLTFTP_BLKSIZESOCKS5_GSSAPI_SERVICESOCKS5_GSSAPI_NECMAIL_FROMMAIL_RCPTMAIL_AUTHPINNEDPUBLICKEYWILDCARDMATCHUNIX_SOCKET_PATHSSL_ENABLE_ALPNSSL_ENABLE_NPNSSL_FALSESTARTSSL_OPTIONSSSLOPT_ALLOW_BEASTSSLOPT_NO_REVOKETLSAUTH_TYPETLSAUTH_USERNAMETLSAUTH_PASSWORDDEFAULT_PROTOCOLM_TIMERFUNCTIONM_SOCKETFUNCTIONM_PIPELININGM_MAXCONNECTSM_MAX_HOST_CONNECTIONSM_MAX_TOTAL_CONNECTIONSM_MAX_PIPELINE_LENGTHM_CONTENT_LENGTH_PENALTY_SIZEM_CHUNK_LENGTH_PENALTY_SIZEM_PIPELINING_SITE_BLM_PIPELINING_SERVER_BLPIPE_NOTHINGPIPE_HTTP1PIPE_MULTIPLEXIPRESOLVE_WHATEVERIPRESOLVE_V4IPRESOLVE_V6CURL_HTTP_VERSION_NONECURL_HTTP_VERSION_1_0CURL_HTTP_VERSION_1_1CURL_HTTP_VERSION_2_0CURL_HTTP_VERSION_2CURL_HTTP_VERSION_2TLSCURL_HTTP_VERSION_LASTNETRC_OPTIONALNETRC_IGNOREDNETRC_REQUIREDSSLVERSION_DEFAULTSSLVERSION_SSLv2SSLVERSION_SSLv3SSLVERSION_TLSv1SSLVERSION_TLSv1_0SSLVERSION_TLSv1_1SSLVERSION_TLSv1_2SSLVERSION_TLSv1_3SSLVERSION_MAX_DEFAULTSSLVERSION_MAX_TLSv1_0SSLVERSION_MAX_TLSv1_1SSLVERSION_MAX_TLSv1_2SSLVERSION_MAX_TLSv1_3TIMECONDITION_NONETIMECONDITION_IFMODSINCETIMECONDITION_IFUNMODSINCETIMECONDITION_LASTMODSSH_AUTH_ANYSSH_AUTH_NONESSH_AUTH_PUBLICKEYSSH_AUTH_PASSWORDSSH_AUTH_HOSTSSH_AUTH_KEYBOARDSSH_AUTH_DEFAULTSSH_AUTH_AGENTHEADER_UNIFIEDHEADER_SEPARATESOCKOPT_ALREADY_CONNECTEDSOCKOPT_ERRORSOCKOPT_OKKHTYPE_UNKNOWNKHTYPE_RSA1KHTYPE_RSAKHTYPE_DSSKHMATCH_OKKHMATCH_MISMATCHKHMATCH_MISSINGKHSTAT_FINE_ADD_TO_FILEKHSTAT_FINEKHSTAT_REJECTKHSTAT_DEFERSOCKTYPE_ACCEPTSOCKTYPE_IPCXNUSESSL_NONEUSESSL_TRYUSESSL_CONTROLUSESSL_ALLEFFECTIVE_URLHTTP_CODERESPONSE_CODETOTAL_TIMENAMELOOKUP_TIMEAPPCONNECT_TIMEPRETRANSFER_TIMESIZE_UPLOADSIZE_DOWNLOADSPEED_DOWNLOADSPEED_UPLOADHEADER_SIZEREQUEST_SIZESSL_VERIFYRESULTINFO_FILETIMECONTENT_LENGTH_DOWNLOADCONTENT_LENGTH_UPLOADSTARTTRANSFER_TIMECONTENT_TYPEREDIRECT_TIMEREDIRECT_COUNTREDIRECT_URLPRIMARY_IPPRIMARY_PORTLOCAL_IPLOCAL_PORTHTTP_CONNECTCODEHTTPAUTH_AVAILPROXYAUTH_AVAILOS_ERRNONUM_CONNECTSSSL_ENGINESINFO_COOKIELISTLASTSOCKETFTP_ENTRY_PATHINFO_CERTINFOCONDITION_UNMETINFO_RTSP_CLIENT_CSEQINFO_RTSP_CSEQ_RECVINFO_RTSP_SERVER_CSEQINFO_RTSP_SESSION_IDRTSPREQ_NONERTSPREQ_OPTIONSRTSPREQ_DESCRIBERTSPREQ_ANNOUNCERTSPREQ_SETUPRTSPREQ_PLAYRTSPREQ_PAUSERTSPREQ_TEARDOWNRTSPREQ_GET_PARAMETERRTSPREQ_SET_PARAMETERRTSPREQ_RECORDRTSPREQ_RECEIVERTSPREQ_LASTPAUSE_RECVPAUSE_SENDPAUSE_ALLPAUSE_CONTSEEKFUNC_OKSEEKFUNC_FAILSEEKFUNC_CANTSEEKDNS_SERVERSREDIR_POST_301REDIR_POST_302REDIR_POST_303REDIR_POST_ALLCONNECT_TOINFO_HTTP_VERSIONGLOBAL_SSLGLOBAL_WIN32GLOBAL_ALLGLOBAL_NOTHINGGLOBAL_DEFAULTGLOBAL_ACK_EINTRCSELECT_INCSELECT_OUTCSELECT_ERRSOCKET_TIMEOUTPOLL_NONEPOLL_INPOLL_OUTPOLL_INOUTPOLL_REMOVEVERSION_IPV6VERSION_KERBEROS4VERSION_KERBEROS5VERSION_SSLVERSION_LIBZVERSION_NTLMVERSION_GSSNEGOTIATEVERSION_DEBUGVERSION_CURLDEBUGVERSION_ASYNCHDNSVERSION_SPNEGOVERSION_LARGEFILEVERSION_IDNVERSION_SSPIVERSION_GSSAPIVERSION_CONVVERSION_TLSAUTH_SRPVERSION_NTLM_WBVERSION_HTTP2VERSION_UNIX_SOCKETSVERSION_PSLE_CALL_MULTI_PERFORME_MULTI_CALL_MULTI_PERFORME_MULTI_OKE_MULTI_BAD_HANDLEE_MULTI_BAD_EASY_HANDLEE_MULTI_BAD_SOCKETE_MULTI_CALL_MULTI_SOCKETE_MULTI_OUT_OF_MEMORYE_MULTI_INTERNAL_ERRORE_MULTI_UNKNOWN_OPTIONE_MULTI_ADDED_ALREADYSH_SHARESH_UNSHARELOCK_DATA_COOKIELOCK_DATA_DNSLOCK_DATA_SSL_SESSIONioBytesIOStringIOcollectionsnamedtuplekey keytypeKhKeyssfamily socktype protocol addrCurlSockAddrcurl module init failedCOMPILE_PY_VERSION_HEXpycurlglobal_cleanupPyDict_GetItem(dict2, key) == NULLCurl_Type.tp_weaklistoffset > 0CurlMulti_Type.tp_weaklistoffset > 0CurlShare_Type.tp_weaklistoffset > 0pycurl: curl_version_info() failedpycurl: libcurl link-time version (%s) is older than compile-time version (%s)insobj2PyInit_pycurlPycURL/7.43.0.2src/multi.c(iiOO)self->multi_handle != NULLd:selectinvalid timeout periodtimeout >= 0.0timeout < 1.0multi_fdset failediO:assignassign failedtimeouttimeout failedsocket_allperform failedii:socket_actionmulti_socket_action failed|i:info_readPy_TYPE(co) == p_Curl_Type(Ois)(iOO)fdset(OOO)O!:remove_handleobj->multi_stack == selfO!:add_handlecurl object already closedobj->multi_stack == NULLpycurl.CurlMultiinitializing curl-multi failedCurlMulti objects do not support deserializationCurlMulti objects do not support serializationPy_TYPE(self) == p_CurlMulti_Typecannot invoke %s() - no multi handlecannot invoke %s() - multi_perform() is currently runningargument to info_read must be greater than zeroUnable to fetch curl handle from curl objectcurl_multi_fdset() failed due to internal errorscannot add/remove handle - multi-stack is closedcannot add/remove handle - multi_perform() already runningcannot add/remove handle - perform() of curl object already runningcannot add/remove handle - curl object already on another multi-stackcurl object not on this multi-stackcurl_multi_remove_handle() failed due to internal errorscurl object already on this multi-stackcurl_multi_add_handle() failed due to internal errorslist/tuple items must be stringslists/tuples are not supported for this optioncallables are not supported for this optiondo_multi_add_handledo_multi_info_readdo_multi_performdo_multi_socket_actiondo_multi_socket_alldo_multi_remove_handleassert_multi_statedo_multi_selectutil_multi_closedo_multi_new8~A?.Atrying to obtain a non-existing attributetrying to delete a non-existing attributesrc/pythoncompat.cPyListOrTuple_GetItemPyListOrTuple_SizeCurlShare objects do not support deserializationCurlShare objects do not support serializationinitializing curl-share failedPy_TYPE(self) == p_CurlShare_Typesrc/share.cself->lock != NULLres == CURLE_OKpycurl.CurlShareassert_share_statedo_share_newsrc/stringcompat.cPyUnicode_Check(obj)s != NULLreplacePyText_AsString_NoNULPyText_AsStringAndSizesrc/threadsupport.cself->handle != NULLlocklock->locks[i] != NULLself->multi_stack->state == NULLself->multi_stack->multi_handle != NULLshare_lock_destroypycurl_get_thread_state_multipycurl_get_thread_state;8SH\f8fhf(xgTXhxXjj8khk0k\prss88tTuxhwx8xXxH|\}HH D  X  D Ȋx  ( 8 H X h$ x8 L ` X 8 x, L p   ( 8 H X h x $ 8 L ` Ȗt ؖ   ( 8H؛@Ƞ|x$ȷ`xH T8(dȿ8h-(.<H.T.///11Hx2d2334H6T6px7H8h9: ;T>ABxD<Fp8KK(L,LXLl8MxMMMN8NP P`xQ|QRSxS XTlTThUVW8W,hWHxW\WpWWWXXXX$X8zRx $xN FJ w?:*3$"D`W \a%H\t a%H\(8aAKN  AAH bE A l A 4bFDD  GBI AAB4ddFDD Q ABF `UBLddHY E (h,e)FDD PDB(0ekFDD [ ABD LteFEA C(G0? (A ABBE L(A ABB,i\BAA  ABF <@lEAG x AAI D DAG DAAl:EtlFEa A lrE? D iH8nBEH E(A0D8F` 8A0A(B BBBF ((oJD W AJ _CFT ph,p@|8pFBB D(C0G@| 0A(A BBBD 0sFDD F@  AABE 0@uaFAD F@  AABE @(|vFHE A(D0GP 0A(A BBBA 8l8xFED F(F@ (A ABBD HyFBH E(G0D8G` 8A0A(B BBBH (|6EFGP AAE H }.FEE E(D0F8GP 8A0A(B BBBI 8lx~FHD D(G@l (A ABBA 0<4FGF G0  AABA DHDFEB D(A0G@E 0A(A BBBJ $P8LLH`Dt@<84H0BBB B(D0A8DP  8D0A(B BBBB 8FBA A(QP (A ABBK @LH4FBB A(D0QP 0A(A BBBE D<Eg L C d<Eg L C|xt$p8lLh`dt`\XTPLH D @( << 8P 4d 0(x ,Al C A G  B 8 BBD D(F`: (A ABBF DEQ  AA  FBO B(A0A8GR 8A0A(B BBBB GOBGBa UADa8 LKFDA  ABD b ABK `EQ0 AA ( ECQ` AAA 8 PFMA M ABD A CBB 0P EHD0j AAC OCA0 XED c AC X AG DC8 L1FBA A(Q@ (A ABBA  P"HY hEW`( ljEEB A(A0 (C BBBF W (C BBBH K (C BBBD 8 x\BED G(D0h (A ABBA  H ] K  @40 l)FKA D0  AABH L, h.kFBB B(A0A8D 8D0A(B BBBE | HAv I E K  HK4 EFDD d GBE AAB E A l A %H\,%H\8DFHD D(G@ (A ABBI (EGG0 AAG Dg A ( )FDD PDBQr<\EAG q AAH D DAO DAA(HYBDC ^ ABA @t 0FBB A(A0Q` 0A(A BBBD !:Et "EQ0 AA "ES S AD 0# FMA G0  AABB 0Pt$GFAA Q@  AABA 0% FMA G0  AABB H|&FBB B(A0A8Qp 8A0A(B BBBD H)0FNB B(D0A8Dp 8A0A(B BBBA (P+ADG z AAA |,EQ  AG 04.FAN D0  AABC L/FBB B(A0A8Q  8A0A(B BBBF 4$p4lFDA _ ABC qAE0\4tEDG d AAJ oCA(4ED0T AJ O CF h5*5=^5=^555dP( 6%H\@$6%H\(X<6E A F J l A <7EAG  AAG D DAO DAA8D` A 80Ej 9'EQ0 AH ( :)FDD PDB4L:lFDA _ ABC qAEHP:XDD G0Q AABDP0S  AABI :xH F B H;0T;hEP h AB X AG DC 4;Q| C HCX/ GA$annobin gcc 8.3.1 20190507 GA*GOW*GA+stack_clashGA+GLIBCXX_ASSERTIONSGA!stack_realign GA$running gcc 8.3.1 20191121@/|M GA$annobin gcc 8.3.1 20190507 GA*GOW*GA+stack_clashGA+GLIBCXX_ASSERTIONSGA!stack_realign GA$running gcc 8.3.1 20191121MMO GA$annobin gcc 8.3.1 20190507 GA*GOW*GA+stack_clashGA+GLIBCXX_ASSERTIONSGA!stack_realign GA$running gcc 8.3.1 20191121POLU GA$annobin gcc 8.3.1 20190507 GA*GOW*GA+stack_clashGA+GLIBCXX_ASSERTIONSGA!stack_realign GA$running gcc 8.3.1 20191121PU8W GA$annobin gcc 8.3.1 20190507 GA*GOW*GA+stack_clashGA+GLIBCXX_ASSERTIONSGA!stack_realign GA$running gcc 8.3.1 20191121@WZ GA$annobin gcc 8.3.1 20190507 GA*GOW*GA+stack_clashGA+GLIBCXX_ASSERTIONSGA!stack_realign GA$running gcc 8.3.1 20191121Zj[ GA$annobin gcc 8.3.1 20190507 GA*GOW*GA+stack_clashGA+GLIBCXX_ASSERTIONSGA!stack_realignGA$3a1U UGA$3a1t[y[pycurl.cpython-36m-x86_64-linux-gnu.so-7.43.0.2-4.el8.x86_64.debugM<7zXZִF!t/(}]?Eh=ڊ2N/c=Vv27>fD RmuK7tޮ*z&F>o#Hx >KY%ok(Tg :#f8geV2 Nԣ.}gZ;U#LKq i`99&:a;v:*)j+~?Ai<,Lݲ=#=->ǎ{؂QZ  Izh݉W*8e{d2lſ\Hs9@Kp'z148s$h)JYVx9|M|z13{_#G (P4%;ЁG&~V*1f5#V;_YWmlX+E,q`)E < JWc 1KELw)3b!YW8L<"%uC[S/}j\_UTIz9~lQ,,B$~̜_T ;enF$n#o,d0 ,$T:5O_@Y?_ E-J/[?%YTSe|a F᩸:l 3"~2L0 /9c [ fYˌySi%=Aw&]74c**) 4>,߇~^QIٶЂ&o׫ ۡ,Tzk}6baԌM' & ?ڽKXX9 Vh\w}a~@iSkLU$xFDT"_p%jXGM+iR rBfbO xj&7.iP8^z(+-oC:"4<': |o("ujiOm`$Ԙ1ԯdDŲyimy4M}#99[6V䣕m4xK,+`a Q~rɎSC,-q+Y dڍ܆[0ÂWN[e *Ĭr-W[q3H K,0JrLfsIvm O]/"ك|d38DKLQߛ$gYZ.shstrtab.note.gnu.build-id.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.plt.sec.text.fini.rodata.eh_frame_hdr.eh_frame.note.gnu.property.init_array.fini_array.data.rel.ro.dynamic.got.data.bss.gnu.build.attributes.gnu_debuglink.gnu_debugdata $o((( 08oB2B2EoX4X4T44x^BpGpG hTTcUU n ^ ^ w g gJ}l[l[ [[X xxXX '"''"''"''"'0)")80"0 :":x:b:  GHPGP(