Ë ­xÉ�'Œãó—ddlZddlZddlZddlZddlZddlmZddlmZddl m Z ddl m Z m Z mZmZddlmZmZmZhd£Zeed d «Ze«Zeed ej.ed ««rej1d «eedej.ed««rej1d«eedej.ed««rej1d«d„Zd„Zdd„Z d d„ZGd„de«Zd!d„Zd„Z d„Z!d„Z"d„Z#y)"éNé)Ú_)Úgetattr)Úhex)ÚencodingÚerrorÚpycompatÚutil)ÚhashutilÚ resourceutilÚ stringutil>ótls1.0ótls1.1ótls1.2ÚHAS_SNIFÚ HAS_TLSv1ÚPROTOCOL_TLSv1rÚ HAS_TLSv1_1ÚPROTOCOL_TLSv1_1rÚ HAS_TLSv1_2ÚPROTOCOL_TLSv1_2rc óð—tj|«}dgdddddddœ}d„}tdhz sJ‚d}d}|jd ||«}|||«d |z}|jd ||«}|||«|jd d «}|jd d |z|«}|jrd}|sd }||d<||d <|j d d|z«} | D]Œ} | j d«s.tjtd«|| fztd«¬«‚| jdd«\} } | jdd«j«} |dj| | f«ŒŽ|j d|«D]=} | jdd«j«} |djd| f«d|d<Œ?|drtj|d<d|d<n)|jrd|d<tj|d<d|d<|j!dd«rd|d<|jd d|z«} |dr| r|j#td «|z«|d�€%| rat%j&| «} t(j*j-| «s'tjtd!«d"|fz| fz«‚| |d#<n”|jd$d%«} | rUt%j&| «} t(j*j-| «sGtjtd&«| z«‚|dr!t/|«} | r|j1d'| z«| |d#<| s|drtj2|d<ntj|d<|d€J‚|S)(zhObtain security settings for a hostname. Returns a dict of settings relevant to that hostname. TNF)óallowloaddefaultcertsócertfingerprintsócafileódisablecertverificationólegacyfingerprintóminimumprotocoló verifymodeóciphersc ó®—|tvrMtjtd«||fztd«dj t t««z¬«‚y)Ns-unsupported protocol from hostsecurity.%s: %ssvalid protocols: %só ©Úhint)ÚconfigprotocolsrÚAbortrÚjoinÚsorted)ÚprotocolÚkeys ú5usr/lib/python3.12/site-packages/mercurial/sslutil.pyÚvalidateprotocolz'_hostsettings..validateprotocolZsT€Ø œ?Ñ *Ü—+‘+ÜÐBÓCؘ�/ñ"äÐ-Ó.Ø—)‘)œF¤?Ó3Ó4ñ5ôð ð +órrró hostsecuritys%s:minimumprotocolr s %s:cipherssDEFAULT:@SECLEVEL=0s%s:fingerprints)ssha1:ssha256:ssha512:sinvalid fingerprint for %s: %ss0must begin with "sha1:", "sha256:", or "sha512:"r#ó:rr-rshostfingerprintsósha1rrrródevelsdisableloaddefaultcertss%s:verifycertsfiless(hostsecurity.%s:verifycertsfile ignored when host fingerprints defined; using host fingerprints for verification) s'path specified by %s does not exist: %sshostsecurity.%s:verifycertsfilerswebscacertsscould not find web.cacerts: %ssusing %s for CA file )r ÚbytesurlÚsupportedprotocolsÚconfigÚinsecureconnectionsÚ configlistÚ startswithrr&rÚsplitÚreplaceÚlowerÚappendÚsslÚ CERT_NONEÚ configboolÚwarnr Ú expandpathÚosÚpathÚexistsÚ_defaultcacertsÚdebugÚ CERT_REQUIRED) ÚuiÚhostnameÚ bhostnameÚsr,Údefaultminimumprotocolr*ÚminimumprotocolÚciphersÚ fingerprintsÚ fingerprintÚalgÚcafiles r+Ú _hostsettingsrR=sâ€ô ×!Ñ! (Ó+€Ið#'àðà$)à#ð!ààñ' €Aò.ô    Ò +Ð+Ð +Ø&Ðà €CØ—i‘i °Ð6LÓM€OÙ�_ cÔ*à  )Ñ +€CØ—i‘i °°oÓF€OÙ�_ cÔ*à�i‰i˜¨Ó4€GØ�i‰i˜¨¸Ñ)BÀGÓL€Gð  ×ÒØ#ˆÙØ,ˆGà+€AÐÑØ€A€j�Mð—=‘=ØÐ+¨iÑ7ó€Ló$ˆ Ø×&Ñ&Ð'IÔJÜ—+‘+ÜÐ3Ó4¸ À;Ð7OÑOÜÐJÓKôð ð '×,Ñ,¨T°1Ó5шˆ[Ø!×)Ñ)¨$°Ó4×:Ñ:Ó<ˆ ð Ð Ñ×%Ñ% s¨KÐ&8Õ9ð$ð—}‘}Ð%8¸)ÖDˆ Ø!×)Ñ)¨$°Ó4×:Ñ:Ó<ˆ ð Ð Ñ×%Ñ% w° Ð&<Ô=à"&ˆÐ Òð Eð Ð ÒÜŸ=™=ˆˆ-ÑØ&+ˆÐ "Ò#ð × Ò Ø(,ˆÐ $Ñ%ÜŸ=™=ˆˆ-ÑØ&+ˆÐ "Ñ#à ‡}�}�XÐ9Ô:Ø&+ˆÐ "Ñ#ð �Y‰Y�Ð(=À Ñ(IÓ J€FØÐ Ò¡&Ø �‰Ü ð#ó ð ñ  ô ð ˆÑÑá Ü—_‘_ VÓ,ˆFÜ—7‘7—>‘> &Ô)Ü—k‘kÜÐ@ÓAà:¸i¸\ÑIØðñóðð"ˆAˆiŠLð—Y‘Y˜v zÓ2ˆFáÜŸ™¨Ó0�Ü—w‘w—~‘~ fÔ-ÜŸ+™+ÜÐ;Ó<¸vÑEóððÐ+Ò,ä(¨Ó,�ÙØ—H‘HÐ6¸Ñ?Ô@à!ˆAˆi‰Lñ �QÐ/Ò0Ü"×0Ñ0ˆAˆmÒ ô #Ÿ}™}ˆAˆmÑ à ˆ]Ñ Ð 'Ð'Ð 'à €Hr-cój—|tvrtd|z«‚tjtjz}|dk(rna|dk(r|tj z}nH|dk(r%|tj tj zz}ntjtd««‚|ttdd«z}|S)z8Return SSLContext options common to servers and clients.s protocol value not supported: %srrróthis should not happenÚOP_NO_COMPRESSIONr) r%Ú ValueErrorr<Ú OP_NO_SSLv2Ú OP_NO_SSLv3Ú OP_NO_TLSv1Ú OP_NO_TLSv1_1rr&rr)rLÚoptionss r+Úcommonssloptionsr\ís¡€àœoÑ-ÜÐ<¸ÑNÓOÐOô�o‰o¤§¡Ñ/€Gà˜)Ò#à Ø ˜IÒ %Ø”3—?‘?Ñ"‰Ø ˜IÒ %Ø”3—?‘?¤S×%6Ñ%6Ñ6Ñ6‰ä�k‰kœ!Ð5Ó6Ó7Ð7ð Œw”sÐ/°Ó3Ñ3€Gà €Nr-c óZ ‡‡‡—|stjtd««‚dtjvrK ddl}|j tjtjd««‰jd«‰‰fD]e}|sŒtjj|«rŒ&tjtd«|tj|«fztd«¬ «‚t‰|«}t!j"t$d «�rJt%j&t$j(«}|d } | d k(rXt+j,«5t+j.d dt0«t$j2j4|_ddd«n | dk(rXt+j,«5t+j.d dt0«t$j2j8|_ddd«nC| dk(r t$j2j:|_ntjtd««‚|xj<t?t$dd«zc_nDt%j&t$j@«}|xj<tC|d «zc_d|_"|d|_#|dr( |jItjJ|d««‰�ˆˆˆfd„} |jU‰‰| «|d� |jW|d¬«d} n|d r|j[«d} nd} |j]||¬!«}|jo«stjptd-««‚| ||‰d.œ|_9|S#t$r‰jd«Y�Œ wxYw#1swY�ŒvxYw#1swY�ŒƒxYw#t$jL$rW} tjtd«tOjP| jRd«ztd«|dz¬ «‚d} ~ wwxYw#t$jL$r€} tY| jR«dk(r| jRd} n| jRd} tjtd«|dtOjP| «fztd«¬ «‚d} ~ wwxYw#t$jL$�rÔ} | r@|dt$j^k(r*|ja«s‰jctd"««n#t$jL$rYnwxYwt!j"| d#«�rZ| jdd$v�r|d d k(rŠtfd hk7rO‰jctd%«tj|«d&jitktf««fz«‚‰jctd'«tj|«z«‚‰jctd(«|d tj|«fz«‰jctd)«tj|«z«‰jctd*««‚| jdd+k(r*tjlr‰jctd,««‚d} ~ wwxYw)/a¾Add SSL/TLS to a socket. This is a glorified wrapper for ``ssl.wrap_socket()``. It makes sane choices based on what security options are available. In addition to the arguments supported by ``ssl.wrap_socket``, we allow the following additional arguments: * serverhostname - The expected hostname of the remote server. If the server (and client) support SNI, this tells the server which certificate to use. s#serverhostname argument is requireds SSLKEYLOGFILErNs8sslkeylog enabled by SSLKEYLOGFILE environment variable s?sslkeylog module missing, but SSLKEYLOGFILE set in environment s:certificate file (%s) does not exist; cannot connect to %ss:restore missing file or fix references in Mercurial configr#Ú TLSVersionrrÚignoreú"ssl.TLSVersion.TLSv1 is deprecatedrú$ssl.TLSVersion.TLSv1_1 is deprecatedrrTrUFrr scould not set ciphers: %ss#change cipher string (%s) in configcóL•—‰xs‰}‰jtd«|zd«S)Nspassphrase for %s: r-)Úgetpassr)ÚfÚcertfileÚkeyfilerGs €€€r+Úpasswordzwrapsocket..passwordns)ø€ØÒ#˜8ˆAØ—:‘:œaÐ 6Ó7¸!Ñ;¸SÓAÐ Ar-r©rQrserror loading CA file %s: %ssfile is empty or malformed?Tr)Úserver_hostnames¬(an attempt was made to load CA certificates but none were loaded; see https://mercurial-scm.org/wiki/SecureConnections for how to configure Mercurial to avoid this error) Úreason)ÚUNSUPPORTED_PROTOCOLÚTLSV1_ALERT_PROTOCOL_VERSIONsÞ(could not communicate with %s using security protocols %s; if you are using a modern Mercurial version, consider contacting the operator of this server; see https://mercurial-scm.org/wiki/SecureConnections for more info) ó, sã(could not communicate with %s using TLS 1.0; the likely cause of this is the server no longer supports TLS 1.0 because it has known security vulnerabilities; see https://mercurial-scm.org/wiki/SecureConnections for more info) sš(could not negotiate a common security protocol (%s+) with %s; the likely cause is Mercurial is configured to be more secure than the server can support) sé(consider contacting the operator of this server and ask them to support modern TLS protocol versions; or, set hostsecurity.%s:minimumprotocol=tls1.0 to allow use of legacy, less secure protocols when communicating with this server) sE(see https://mercurial-scm.org/wiki/SecureConnections for more info) ÚCERTIFICATE_VERIFY_FAILEDsR(the full certificate chain may not be available locally; see "hg help debugssl") sssl connection failed)ócaloadedóhostnameósettingsóui):rr&rrÚenvironÚ sslkeylogÚ set_keylogr ÚfsdecodeÚ warnnoi18nÚ ImportErrorrArBrCr2rRr Ú safehasattrr<Ú SSLContextÚPROTOCOL_TLS_CLIENTÚwarningsÚcatch_warningsÚfilterwarningsÚDeprecationWarningr^ÚTLSv1Úminimum_versionÚTLSv1_1ÚTLSv1_2r[rÚPROTOCOL_SSLv23r\Úcheck_hostnameÚ verify_modeÚ set_ciphersÚsysstrÚSSLErrorr Ú forcebytestrÚargsÚload_cert_chainÚload_verify_locationsÚlenÚload_default_certsÚ wrap_socketrFÚ get_ca_certsr?rjr3r'r(Ú iswindowsÚcipherÚ SecurityErrorÚ_hgstate)ÚsockrfrerGÚserverhostnamertrdÚsettingsÚ sslcontextrLÚergÚmsgÚcaloadedÚ sslsockets ``` r+Ú wrapsocketržs=ú€ñ Ü�k‰kœ!ÐBÓCÓDÐDàœ8×+Ñ+Ñ+ð Û à × Ñ Ü×!Ñ!¤(×"2Ñ"2Ð3CÑ"DÓEô ð �M‰MØLô ð�xÓ ˆÚ ”R—W‘W—^‘^ AÕ&Ü—+‘+ÜÐOÓPØ”h×'Ñ'¨Ó7Ð8ñ9äð+óôð ð!ô˜R Ó0€Hô ×Ñœ˜\Õ*ä—^‘^¤C×$;Ñ$;Ó<ˆ Ø"Ð#5Ñ6ˆØ ˜iÒ 'Ü×(Ñ(Õ*Ü×'Ñ'ØØ8Ü&ôô .1¯^©^×-AÑ-A� Ô*÷ +Ð*ð  Ò )Ü×(Ñ(Õ*Ü×'Ñ'ØØ:Ü&ôô .1¯^©^×-CÑ-C� Ô*÷ +Ð*ð  Ò )Ü),¯©×)?Ñ)?ˆJÕ &ä—+‘+œaÐ 9Ó:Ó;Ð ;ð ×Òœg¤cÐ+>ÀÓBÑBÖô —^‘^¤C×$7Ñ$7Ó8ˆ Ø×ÒÔ.¨xÐ8JÑ/KÓLÑLÕð!&€JÔØ% mÑ4€JÔà� Òð Ø × "Ñ "¤8§?¡?°8¸JÑ3GÓ#HÔ IðÐö Bð ×"Ñ" 8¨W°hÔ?à� ÑÐ&ð Ø × ,Ñ ,°H¸YÑ4GÐ ,Ô Hð‰Ø Ð*Ò +à×%Ñ%Ô'؉àˆðsØ×*Ñ*¨4ÀÐ*ÓPˆ ðn × Ñ Ô Ü×!Ñ!¤!Ð$<Ó"=Ó>Ð>ðØ#ØØñ €IÔð ÐøôWò Ø �M‰Mð:÷ ð ú÷@+Ñ*ú÷+Ñ*ûô8�|‰|ò Ü—+‘+ÜÐ.Ó/Ü×)Ñ)¨!¯&©&°©)Ó4ñ5äÐ=Ó>ؘ:Ñ&ñ'ôð ûð ûô&�|‰|ò Ü�1—6‘6‹{˜aÒØ—f‘f˜Q‘i‘à—f‘f˜Q‘i�Ü—+‘+ÜÐ1Ó2ؘIÑ&¬ ×(?Ñ(?ÀÓ(DÐEñFäÐ5Ó6ôð ûð ûô( �<‰<óqð áØ˜]Ñ+¬s×/@Ñ/@Ò@Ø"×/Ñ/Ô1à—‘Üð$óôùô�|‰|ò Ù ð úô × Ñ ˜A˜xÕ (ð �x‰xðòð Ð.Ñ/°9Ò<ô *¨i¨[Ò8ØŸ™Üð!4óô!)× 1Ñ 1°.Ó AØ %§ ¡ ¬6Ô2DÓ+EÓ Fðñ ô ðH ðkŸ™Üð!4óô'×/Ñ/°Ó?ñ@ô ðj ðK—G‘GÜðPóð %Ð%7Ñ8Ü$×-Ñ-¨nÓ=ðñ ô ð—G‘GÜðAóô#×+Ñ+¨NÓ;ñ<ô ð—G‘GÜð0óôð ð—‘Ð8Ò8¼X×=OÒ=Oà—‘Üð>óôð ûðcqús”·A NÅ;N%Æ2;N2Ê9'N?ÌP,Ì5SÎN"Î!N"Î%N/Î2N<Î?P)ÏAP$Ð$P)Ð,R?Ð?A;R:Ò:R?ÓZ*ÓATÔZ%ÔT0Ô-Z%Ô/T0Ô0E5Z%Ú%Z*có —|||fD]E}|sŒtjj|«rŒ&tjt d«|z«‚t jtd«�r.tjtj«}|xjttdd«zc_ |jdd«}|dk(rždtvrtjt d««‚tj «5tj"d d t$«tj&j(|_tj&j(|_d d d «�n`|d k(ržd tvrtjt d ««‚tj «5tj"d dt$«tj&j.|_tj&j.|_d d d «�n½|dk(rfdtvrtjt d««‚tj&j0|_tj&j0|_�nR|�rOtjt d«|z«‚tj2} t5d«} |jdd«}|dk(r7dtvrtjt d««‚tj6} n›|d k(r7d tvrtjt d ««‚tj8} n_|dk(r7dtvrtjt d««‚tj:} n#|r!tjt d«|z«‚tj| «}|xj| zc_ |xjttdd«zc_ |xjttdd«zc_ |r|j=d«n]t jtd«rC|xjttdd«zc_ |j=tj>«|rtj@|_!ntjD|_!|s|r|jG||¬«|r|jI|¬«|jK|d¬«S#1swY�Œ.xYw#1swY�Œ;xYw)aæWrap a socket for use by servers. ``certfile`` and ``keyfile`` specify the files containing the certificate's public and private keys, respectively. Both keys can be defined in the same file via ``certfile`` (the private key must come first in the file). ``cafile`` defines the path to certificate authorities. ``requireclientcert`` specifies whether to require client certificates. Typically ``cafile`` is only defined if ``requireclientcert`` is true. s/referenced certificate file (%s) does not existr^rUrr1sserver-insecure-exact-protocolrs$TLS 1.0 not supported by this Pythonr_r`Nrs$TLS 1.1 not supported by this Pythonrars$TLS 1.2 not supported by this Pythons4invalid value for server-insecure-exact-protocol: %sÚOP_SINGLE_DH_USEÚOP_SINGLE_ECDH_USEzDEFAULT:@SECLEVEL=0Ú_RESTRICTED_SERVER_CIPHERSÚOP_CIPHER_SERVER_PREFERENCE)rerfrhT)Ú server_side)&rArBrCrr&rr ryr<rzÚPROTOCOL_TLS_SERVERr[rr4r3r|r}r~rr^r€r�Úmaximum_versionr‚rƒr„r\rrrr‡r¢rFr†r=rŒr�r�) r–rGrerfrQÚrequireclientcertrdr™Ú exactprotocolr)r[s r+Úwrapserversocketr©sþ€ð"˜ Ó (ˆÚ ”R—W‘W—^‘^ AÕ&Ü—+‘+ÜÐDÓEÈÑIóð ð)ô  ×Ñœ˜\Õ*ä—^‘^¤C×$;Ñ$;Ó<ˆ Ø×Òœg¤cÐ+>ÀÓBÑBÕ🠙  (Ð,MÓNˆ Ø ˜IÒ %ØÔ 2Ñ2Ü—k‘k¤!Ð$KÓ"LÓMÐMÜ×(Ñ(Õ*Ü×'Ñ'ØØ8Ü&ôô .1¯^©^×-AÑ-A� Ô*Ü-0¯^©^×-AÑ-A� Ô*÷+Ñ*ð˜iÒ 'ØÔ 2Ñ2Ü—k‘k¤!Ð$KÓ"LÓMÐMÜ×(Ñ(Õ*Ü×'Ñ'ØØ:Ü&ôô .1¯^©^×-CÑ-C� Ô*Ü-0¯^©^×-CÑ-C� Ô*÷+Ñ*ð˜iÒ 'ØÔ 2Ñ2Ü—k‘k¤!Ð$KÓ"LÓMÐMÜ),¯©×)?Ñ)?ˆJÔ &Ü),¯©×)?Ñ)?ˆJÖ &Ú Ü—+‘+ÜÐIÓJØñ óð ô×&Ñ&ˆÜ" 9Ó-ˆðŸ ™  (Ð,MÓNˆ Ø ˜IÒ %ØÔ 2Ñ2Ü—k‘k¤!Ð$KÓ"LÓMÐMÜ×)Ñ)‰HØ ˜iÒ 'ØÔ 2Ñ2Ü—k‘k¤!Ð$KÓ"LÓMÐMÜ×+Ñ+‰HØ ˜iÒ 'ØÔ 2Ñ2Ü—k‘k¤!Ð$KÓ"LÓMÐMÜ×+Ñ+‰HÙ Ü—+‘+ÜÐIÓJØñ óð ô—^‘^ HÓ-ˆ Ø×Ò˜gÑ%Õð×Òœ'¤#Ð'9¸1Ó=Ñ=ÕØ×Òœ'¤#Ð';¸QÓ?Ñ?ÕñØ×ÑÐ4Õ5Ü × Ñ œ#Ð;Ô <Ø×Òœg¤cÐ+HÈ!ÓLÑLÕà×Ñœs×=Ñ=Ô>ñÜ!$×!2Ñ!2ˆ Õä!$§¡ˆ Ôá‘7Ø×"Ñ"¨H¸gÐ"ÔFá Ø×(Ñ(°Ð(Ô7à × !Ñ ! $°DÐ !Ó 9Ð9÷q+Ñ*ú÷+Ñ*úsÄAS)Æ$AS6Ó)S3Ó6Tcó—eZdZdZy)Ú wildcarderrorz2Represents an error parsing wildcards in DNS name.N)Ú__name__Ú __module__Ú __qualname__Ú__doc__©r-r+r«r«‹s„Ú‰>Ð,Ó -ò °·±Ø7ó2ðr-cóâ— ddl}|j«}tjj |«r&|j d«t j|«S t«rutjjtjjt jt««d«}tjj |«r|Sy#ttf$rYŒ‘wxYw)a™return path to default CA certificates or None. It is assumed this function is called when the returned certificates file will actually be used to validate connections. Therefore this function may print warnings or debug messages assuming this usage. We don't print a message when the Python is able to load default CA certs because this scenario is detected at socket connect time. rNs#using ca certificates from certifi s dummycert.pem)ÚcertifiÚwhererArBrCrEr ÚfsencoderxÚAttributeErrorrÚr'ÚdirnameÚ__file__)rGrÜÚcertsÚ dummycerts r+rDrD s´€ð Ûà— ‘ “ˆÜ �7‰7�>‰>˜%Ô Ø �H‰HÐ<Ô =Ü×$Ñ$ UÓ+Ð +ð !ôÔÜ—G‘G—L‘LÜ �G‰G�O‰OœH×-Ñ-¬hÓ7Ó 8Ð:Jó ˆ ô �7‰7�>‰>˜)Ô $ØÐ à øô œÐ (ò Ù ð ús‚ACÃC.Ã-C.c ód—|jd}tj|«}|jd}|jd} |jd«}|j«}|s!t j td«|z«‚|dr|jtd«|z«y ttj|«j««ttj|«j««ttj|«j««d œ}d „}d ||d «z} |dr½|dD]_\} } || j!«| k(sŒ|j#d|| || «fz«|dr |jtd«||| fz«y |drd} ||d«} nd} d ||| «fz} t j td«|| fztd«| z¬«‚|jds1t j td«|ztd«|| fz¬«‚t%||«}|r3t j td«||fztd«|| fz¬«‚y #t$r"t j td«|z«‚wxYw)zxValidate a socket meets security requirements. The passed socket must have been created with ``wrapsocket()``. rprrrqTs%s ssl connection errors-%s certificate error: no certificate receivedrs�warning: connection security to %s is disabled per current settings; communication is susceptible to eavesdropping and tampering N)r0ósha256ssha512c ó~—djtdt|«d«D�cgc] }|||dz‘Œ c}«Scc}w)Nr/ré)r'ÚrangerŽ)rJÚxs r+Úfmtfingerprintz&validatesocket..fmtfingerprint[s<€Ø�y‰y´°a¼¸Q»ÀÔ0CÓDÑ0C¨1˜!˜A  A¡š,Ð0CÑDÓEÐEùÒDs¤:s sha256:%srårs)%s certificate matched fingerprint %s:%s rsñ(SHA-1 fingerprint for %s found in legacy [hostfingerprints] section; if you trust this fingerprint, remove the old SHA-1 fingerprint from [hostfingerprints] and add the following entry to the new [hostsecurity] section: %s:fingerprints=%s) shostfingerprintr0r.s%s:%ss0certificate for %s has unexpected fingerprint %sscheck %s configurationr#rosPunable to verify security of %s (no loaded CA certificates); refusing to connects£see https://mercurial-scm.org/wiki/SecureConnections for how to configure Mercurial to avoid this error or set hostsecurity.%s:fingerprints=%s to trust this servers%s certificate error: %ss^set hostsecurity.%s:certfingerprints=%s config setting or use --insecure to connect insecurely)r•r r2Ú getpeercertrßrr”rr?rr Úsha1ÚdigestÚhashlibÚsha256Úsha512r:rErÓ)r–ÚshostÚhostrGr˜ÚpeercertÚ peercert2ÚpeerfingerprintsrêÚnicefingerprintÚhashrOÚsectionÚnicer›s r+Úvalidatesocketrú-s€ð �M‰M˜+Ñ &€EÜ × Ñ ˜UÓ #€DØ �‰�uÑ €BØ�}‰}˜[Ñ)€HðHØ×#Ñ# DÓ)ˆØ×$Ñ$Ó&ˆ ñ Ü×!Ñ!Ü Ð>Ó ?À$Ñ Fó ð ðÐ*Ò+ð �‰Ü ð#ó ð ñ  ô ð ô ”X—]‘] 8Ó,×3Ñ3Ó5Ó6Ü”w—~‘~ hÓ/×6Ñ6Ó8Ó9Ü”w—~‘~ hÓ/×6Ñ6Ó8Ó9ñÐò Fð#¡^Ð4DÀYÑ4OÓ%PÑP€OàÐ#Ò$Ø!)Ð*=Ô!>Ñ ˆD�+Ø Ñ%×+Ñ+Ó-°Ó<Ø—‘ØAؘT¡>°+Ó#>Ð?ñ@ôðÐ0Ò1Ø—G‘GÜðMóð   Ð7ñ8ô ñð%"?ð* Ð(Ò )Ø(ˆGÙ!Ð"2°7Ñ";Ó<‰Dà%ˆGؘt¡^Ð4DÀTÑ4JÓ%KÐLÑLˆDÜ×!Ñ!Ü ÐAÓ BØ�Tˆlñ äÐ,Ó-°Ñ7ô ð ð �=‰=˜Ò %Ü×!Ñ!Ü ð'ó ðñ  ô ðHóð �_Ð%ñ &ô  ð ô �i Ó '€CÙ Ü×!Ñ!Ü Ð)Ó *¨d°C¨[Ñ 8Üðóð �_Ð%ñ &ô ð ð øôu òHÜ×!Ñ!¤!Ð$>Ó"?À$Ñ"FÓGÐGðHús Á!JÊ+J/)N)NNNF)r)$rîrAr¶r<r|Úi18nrr rÚnoderÚrrr Úutilsr r r r%ÚhassniÚsetr3ryÚaddrRr\ržr©Ú Exceptionr«rÃrÓrÚrDrúr°r-r+Úrs ðóÛ Û Û ÛåÝÝ÷ó÷ ñò€ñ ��i Ó '€ñ“UÐÙ ˆ3� Ð-˜T×-Ñ-¨cÐ3CÓDÔEØ×ј9Ô%Ù ˆ3� Ð/˜t×/Ñ/°Ð5GÓHÔIØ×ј9Ô%Ù ˆ3� Ð/˜t×/Ñ/°Ð5GÓHÔIØ×ј9Ô%òm ò`ó2EðRKPóz:ôz=�Iô=ó1+òh0Jòfò( óFp r-