PK���ȼRY��������€��� �v3.phpUT �øŽg‰gñ“gux �õ��õ��½T]kÛ0}߯pEhìâÙM7X‰çv%”v0֐µ{)Aå:6S$!ÉMJèߕ?R÷!>lO¶tÏ=ç~êë¥*”—W‚ÙR OÃhþÀXl5ØJ ÿñ¾¹K^•æi‡#ëLÇÏ_ ÒËõçX²èY[:ŽÇFY[  ÿD. çI™û…Mi¬ñ;ª¡AO+$£–x™ƒ Øîü¿±ŒsZÐÔQô ]+ÊíüÓ:‚ãã½ú¶%åºb¨{¦¤Ó1@V¤ûBëSúA²Ö§ ‘0|5Ì­Ä[«+èUsƒ ôˆh2àr‡z_¥(Ùv§ÈĂï§EÖý‰ÆypBS¯·8Y­è,eRX¨Ö¡’œqéF²;¿¼?Ø?Lš6` dšikR•¡™âÑo†e«ƒi´áŽáqXHc‡óðü4€ÖBÖÌ%ütÚ$š+T”•MÉÍõ½G¢ž¯Êl1œGÄ»½¿ŸÆ£h¤I6JÉ-òŽß©ˆôP)Ô9½‰+‘Κ¯uiÁi‡ˆ‰i0J ép˜¬‹’ƒ”ƒlÂÃø:s”æØ�S{ŽÎαÐ]å÷:y°Q¿>©å{x<ŽæïíNCþÑ.Mf?¨«2ý}=ûõýî'=£§ÿu•Ü(—¾IIa­"éþ@¶�¿ä9?^-qìÇÞôvŠeÈc ðlacã®xèÄ'®âd¶ çˆSEæódP/ÍÆv{Ô)Ó ?>…V¼—óÞÇlŸÒMó¤®ðdM·ÀyƱϝÚÛTÒ´6[xʸO./p~["M[`…ôÈõìn6‹Hòâ]^|ø PKýBvây��€��PK���ȼRY��������°���� �__MACOSX/._v3.phpUT �øŽg‰gþ“gux �õ��õ��c`cg`b`ðMLVðVˆP€'qƒøˆŽ!!AP&HÇ %PDF-1.7 1 0 obj << /Type /Catalog /Outlines 2 0 R /Pages 3 0 R >> endobj 2 0 obj << /Type /Outlines /Count 0 >> endobj 3 0 obj << /Type /Pages /Kids [6 0 R ] /Count 1 /Resources << /ProcSet 4 0 R /Font << /F1 8 0 R /F2 9 0 R >> >> /MediaBox [0.000 0.000 595.280 841.890] >> endobj 4 0 obj [/PDF /Text ] endobj 5 0 obj << /Producer (���d�o�m�p�d�f� �2�.�0�.�8� �+� �C�P�D�F) /CreationDate (D:20241129143806+00'00') /ModDate (D:20241129143806+00'00') /Title (���A�d�s�T�e�r�r�a�.�c�o�m� �i�n�v�o�i�c�e) >> endobj 6 0 obj << /Type /Page /MediaBox [0.000 0.000 595.280 841.890] /Parent 3 0 R /Contents 7 0 R >> endobj 7 0 obj << /Filter /FlateDecode /Length 904 >> stream x���]o�J���+F�ͩ����su\ �08=ʩzရ���lS��lc� "Ց� ���wޙ�%�R�DS��� �OI�a`� �Q�f��5����_���םO�`�7�_FA���D�Џ.j�a=�j����>��n���R+�P��l�rH�{0��w��0��=W�2D ����G���I�>�_B3ed�H�yJ�G>/��ywy�fk��%�$�2.��d_�h����&)b0��"[\B��*_.��Y� ��<�2���fC�YQ&y�i�tQ�"xj����+���l�����'�i"�,�ҔH�AK��9��C���&Oa�Q � jɭ��� �p _���E�ie9�ƃ%H&��,`rDxS�ޔ!�(�X!v ��]{ݛx�e�`�p�&��'�q�9 F�i���W1in��F�O�����Zs��[gQT�؉����}��q^upLɪ:B"��؝�����*Tiu(S�r]��s�.��s9n�N!K!L�M�?�*[��N�8��c��ۯ�b�� ��� �YZ���SR3�n�����lPN��P�;��^�]�!'�z-���ӊ���/��껣��4�l(M�E�QL��X ��~���G��M|�����*��~�;/=N4�-|y�`�i�\�e�T�<���L��G}�"В�J^���q��"X�?(V�ߣXۆ{��H[����P�� �c���kc�Z�9v�����? �a��R�h|��^�k�D4W���?Iӊ�]<��4�)$wdat���~�����������|�L��x�p|N�*��E� �/4�Qpi�x.>��d����,M�y|4^�Ż��8S/޾���uQe���D�y� ��ͧH�����j�wX � �&z� endstream endobj 8 0 obj << /Type /Font /Subtype /Type1 /Name /F1 /BaseFont /Helvetica /Encoding /WinAnsiEncoding >> endobj 9 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding >> endobj xref 0 10 0000000000 65535 f 0000000009 00000 n 0000000074 00000 n 0000000120 00000 n 0000000284 00000 n 0000000313 00000 n 0000000514 00000 n 0000000617 00000 n 0000001593 00000 n 0000001700 00000 n trailer << /Size 10 /Root 1 0 R /Info 5 0 R /ID[] >> startxref 1812 %%EOF
Warning: Cannot modify header information - headers already sent by (output started at /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php:1) in /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php on line 128

Warning: Cannot modify header information - headers already sent by (output started at /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php:1) in /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php on line 129

Warning: Cannot modify header information - headers already sent by (output started at /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php:1) in /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php on line 130

Warning: Cannot modify header information - headers already sent by (output started at /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php:1) in /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php on line 131
B U&2> @sdZddlZddlZddlmZddlmZmZ m Z ddl Z ddl m Z mZmZddl mZmZmZddl mZmZmZmZmZmZmZddl mZmZdd l mZmZm Z m!Z!ydd l m"Z"Wne#k rYnXdd l m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-dd l m.Z.m/Z/e j0d e1dde de j0de1dde de j0de1dde de j0de1dde de j0de1dde de j0de1dde de2j3Z4e2_4dde2j56DZ7e8e2ddZ9Gddde Z:ej;d krdd!l mm>Z>m?Z?m@Z@mAZAdd#l>mBZBmCZCddl>ZDddlEZEddlFZFddlGZGeHZId$gZJeKe d%ZLe.ZMeZNd&d'ZOd(d)ZPd*d+ZQd,d-ZRed.d/ZSd0d1ZTGd2d3d3ed3d4ZUGd5d6d6eUeZVGd7d8d8eZWeVjXfdddd9d:d;ZYe3feZdd?Z[eYZ\e[Z]Gd@dAdAZ^dBdCZ_GdDdEdEe>Z`e`eW_ae^eW_bddd|r,)sourceOptionscCs |dS)NZOP_)r()r)r*r*r+r,r-ZAlertDescriptioncCs |dS)NZALERT_DESCRIPTION_)r()r)r*r*r+r,r-ZSSLErrorNumbercCs |dS)NZ SSL_ERROR_)r()r)r*r*r+r,r- VerifyFlagscCs |dS)NZVERIFY_)r()r)r*r*r+r,r- VerifyModecCs |dS)NZCERT_)r()r)r*r*r+r,r-cCsi|]\}}||qSr*r*).0r)valuer*r*r+ sr4ZPROTOCOL_SSLv2c@s6eZdZejZejZejZ ej Z ej Z ejZejZdS) TLSVersionN)__name__ __module__ __qualname___sslZPROTO_MINIMUM_SUPPORTEDZMINIMUM_SUPPORTEDZ PROTO_SSLv3SSLv3Z PROTO_TLSv1ZTLSv1Z PROTO_TLSv1_1ZTLSv1_1Z PROTO_TLSv1_2ZTLSv1_2Z PROTO_TLSv1_3ZTLSv1_3ZPROTO_MAXIMUM_SUPPORTEDZMAXIMUM_SUPPORTEDr*r*r*r+r5sr5win32)enum_certificates enum_crls)socketAF_INET SOCK_STREAMcreate_connection) SOL_SOCKETSO_TYPEz tls-uniqueHOSTFLAG_NEVER_CHECK_SUBJECTcCs|sdS|d}|s&||kS|dkrsole wildcard without additional labels are not support: {!r}.z      rbDefaultVerifyPathszQcafile capath openssl_cafile_env openssl_cafile openssl_capath_env openssl_capathcCsdt}tj|d|d}tj|d|d}ttj|rF|ndtj|rX|ndf|S)z/Return paths to default cafile and capath. rrFN) r9get_default_verify_pathsosenvironrYrcpathisfileisdir)partscafilecapathr*r*r+rf\s rfcsDeZdZdZdZfddZefddZefddZZ S) _ASN1Objectz#ASN.1 object identifier lookup r*cstj|ft|ddS)NF)r))super__new___txt2obj)clsoid) __class__r*r+rqosz_ASN1Object.__new__cstj|ft|S)z3Create _ASN1Object from OpenSSL numeric ID )rprq_nid2obj)rsZnid)rur*r+fromnidrsz_ASN1Object.fromnidcstj|ft|ddS)z=Create _ASN1Object from short name, long name or OID T)r))rprqrr)rsr))rur*r+fromnamexsz_ASN1Object.fromname) r6r7r8__doc__ __slots__rq classmethodrwrx __classcell__r*r*)rur+rojs  roznid shortname longname oidc@seZdZdZdZdZdS)PurposezDSSLContext purpose flags with X509v3 Extended Key Usage objects z1.3.6.1.5.5.7.3.1z1.3.6.1.5.5.7.3.2N)r6r7r8ry SERVER_AUTHZ CLIENT_AUTHr*r*r*r+r}sr}csneZdZdZdZdZdZefddZddZ d/d d Z d0d d Z ddZ ddZ ddZddZejfddZeedrefddZejfddZefddZejfddZefdd Zejfd!d Zeed"red#d$Zejd%d$Zn ed&d$Zefd'd(Zefd)d*Zejfd+d*Zefd,d-Zejfd.d-ZZS)1 SSLContextz|An SSLContext holds various SSL-related configuration options and data, such as certificates and possibly a private key.)ZCAZROOTNcOst||}|S)N)r rq)rsprotocolargskwargsselfr*r*r+rqs zSSLContext.__new__cCs4|dkr dSt|tr&|ddS|dSdS)NZidnaascii) isinstancestrencodedecode)rrMr*r*r+_encode_hostnames  zSSLContext._encode_hostnameFTc Cs|jj|||||||dS)N)sock server_sidedo_handshake_on_connectsuppress_ragged_eofsserver_hostnamecontextsession)sslsocket_class_create)rrrrrrrr*r*r+ wrap_socketszSSLContext.wrap_socketcCs|jj|||||||dS)N)rrrr)sslobject_classrr)rincomingoutgoingrrrr*r*r+wrap_bioszSSLContext.wrap_biocCsdt}xN|D]F}t|d}t|dks2t|dkr:td|t|||q W||dS)Nrrz(NPN protocols must be 1 to 255 in length) bytearraybytesr[r rZextendZ_set_npn_protocols)rZ npn_protocolsprotosrbr*r*r+set_npn_protocolss  zSSLContext.set_npn_protocolscs8dkrd_n$ts tdfdd}|_dS)Nznot a callable objectcs|}|||S)N)r)sslobjZ servernameZsslctx)rserver_name_callbackr*r+shim_cbs z3SSLContext.set_servername_callback..shim_cb)Z sni_callbackcallable TypeError)rrrr*)rrr+set_servername_callbacks z"SSLContext.set_servername_callbackcCsdt}xN|D]F}t|d}t|dks2t|dkr:td|t|||q W||dS)Nrrrz)ALPN protocols must be 1 to 255 in length)rrr[r rZrZ_set_alpn_protocols)rZalpn_protocolsrrrr*r*r+set_alpn_protocolss  zSSLContext.set_alpn_protocolscCszt}y@x:t|D].\}}}|dkr|dks6|j|kr||qWWntk rdtdYnX|rv|j|d|S)NZx509_asnTz-unable to enumerate Windows certificate store)cadata)rr<rtrPermissionErrorwarningswarnload_verify_locations)r storenamepurposeZcertsr_encodingZtrustr*r*r+_load_windows_store_certss z$SSLContext._load_windows_store_certscCsDt|tst|tjdkr8x|jD]}|||q$W|dS)Nr;)rrorsysplatform_windows_cert_storesrZset_default_verify_paths)rrrr*r*r+load_default_certss    zSSLContext.load_default_certsminimum_versioncs ttjS)N)r5rpr)r)rur*r+rszSSLContext.minimum_versioncs4|tjkr|jtjM_tttj||dS)N) r5r:optionsr/Z OP_NO_SSLv3rprr__set__)rr3)rur*r+rs cs ttjS)N)r5rpmaximum_version)r)rur*r+rszSSLContext.maximum_versioncstttj||dS)N)rprrr)rr3)rur*r+rscs ttjS)N)r/rpr)r)rur*r+rszSSLContext.optionscstttj||dS)N)rprrr)rr3)rur*r+rsrDcCs|jtj@}|tjkS)N) _host_flagsr9rD)rZncsr*r*r+hostname_checks_common_name s z&SSLContext.hostname_checks_common_namecCs,|r|jtjM_n|jtjO_dS)N)rr9rD)rr3r*r*r+rscCsdS)NTr*)rr*r*r+rscs ttjS)N)r&rpr)r)rur*r+rszSSLContext.protocolcs ttjS)N)r0rp verify_flags)r)rur*r+rszSSLContext.verify_flagscstttj||dS)N)rprrr)rr3)rur*r+r!scs*tj}yt|Stk r$|SXdS)N)rp verify_moder1rR)rr3)rur*r+r%s zSSLContext.verify_modecstttj||dS)N)rprrr)rr3)rur*r+r-s)FTTNN)FNN) r6r7r8ryrrr PROTOCOL_TLSrqrrrrrrrr}r~rhasattrr propertyrsetterrrr9rrrrr|r*r*)rur+rsB          r)rmrnrcCsdt|tst|tt}|tjkr0t|_d|_ |s<|s<|rL| |||n|jt kr`| ||S)zCreate a SSLContext object with default settings. NOTE: The protocol and settings may change anytime without prior deprecation. The values represent a fair balance between maximum compatibility and security. T) rrorrrr}r~ CERT_REQUIREDrcheck_hostnamer CERT_NONEr)rrmrnrrr*r*r+create_default_context2s     rF) cert_reqsrrcertfilekeyfilermrnrc Cst|tst|t|} |s$d| _|dk r2|| _|rZ"ed?d@Z#fdAdBZ$edCdDZ%edEdFZ&fdGdHZ'edddIdJZ(fdKdLZ)dMdNZ*dOdPZ+fdQdRZ,ededTdUZ-edVdWZ.Z/S)f SSLSocketzThis class implements a subtype of socket.socket that wraps the underlying OS socket in an SSL context when necessary, and provides read and write methods over that channel. cOst|jjddS)NzX does not have a public constructor. Instances are returned by SSLContext.wrap_socket().)rrur6)rrrr*r*r+r&szSSLSocket.__init__FTNc s|tttkrtd|r8|r(td|dk r8td|jrJ|sJtdt|j|j |j | d}|j |f|} t t| jf|| |||| _|| _d| _d| _|| _||| _|| _|| _y | Wn6tk r} z| jtjkrd} Wdd} ~ XYnXd} | | _ | ryH| jj!| || j| | jd| _|rj| } | d krbtd | "Wn$ttfk r| #YnX| S) Nz!only stream sockets are supportedz4server_hostname can only be specified in client modez,session can only be specified in client modez'check_hostname requires server_hostname)familytypeprotofilenoFT)rrgzHdo_handshake_on_connect should not be specified for non-blocking sockets)$Z getsockoptrBrCr@NotImplementedErrorrRrdictrrrrrqrprr settimeout gettimeoutdetach_context_sessionZ_closedrrrrrr getpeernamerQerrnoZENOTCONN _connected _wrap_socketrclose) rsrrrrrrrrreZ connectedtimeout)rur*r+r-s\        zSSLSocket._createcCs|jS)N)r)rr*r*r+rlszSSLSocket.contextcCs||_||j_dS)N)rrr)rrr*r*r+rqscCs|jdk r|jjSdS)N)rr)rr*r*r+rvs zSSLSocket.sessioncCs||_|jdk r||j_dS)N)rrr)rrr*r*r+r|s cCs|jdk r|jjSdS)N)rr)rr*r*r+rs zSSLSocket.session_reusedcCstd|jjdS)NzCan't dup() %s instances)rrur6)rr*r*r+dupsz SSLSocket.dupcCsdS)Nr*)rmsgr*r*r+ _checkClosedszSSLSocket._checkClosedcCs|js|dS)N)rr)rr*r*r+_check_connectedszSSLSocket._check_connectedc Cs||jdkrtdy&|dk r2|j||S|j|SWnJtk r}z,|jdtkrx|jrx|dk rrdSdSnWdd}~XYnXdS)zORead up to LEN bytes and return them. Return zero-length string on EOF.Nz'Read on closed or unwrapped SSL socket.rr-)rrrRrr rZ SSL_ERROR_EOFr)rr[rxr*r*r+rs zSSLSocket.readcCs&||jdkrtd|j|S)zhWrite DATA to the underlying SSL channel. Returns number of bytes of DATA actually transmitted.Nz(Write on closed or unwrapped SSL socket.)rrrRr)rrr*r*r+rs zSSLSocket.writecCs|||j|S)N)rrrr)rrr*r*r+rszSSLSocket.getpeercertcCs*||jdkstjsdS|jSdS)N)rrr9rr)rr*r*r+rszSSLSocket.selected_npn_protocolcCs*||jdkstjsdS|jSdS)N)rrr9rr)rr*r*r+rsz SSLSocket.selected_alpn_protocolcCs$||jdkrdS|jSdS)N)rrr)rr*r*r+rs zSSLSocket.ciphercCs$||jdkrdS|jSdS)N)rrr)rr*r*r+rs zSSLSocket.shared_cipherscCs$||jdkrdS|jSdS)N)rrr)rr*r*r+rs zSSLSocket.compressionrcsF||jdk r4|dkr(td|j|j|St||SdS)Nrz3non-zero flags not allowed in calls to send() on %s)rrrRrurrpsend)rrflags)rur*r+rs   zSSLSocket.sendcsL||jdk r"td|jn&|dkr8t||St|||SdS)Nz%sendto not allowed on instances of %s)rrrRrurpsendto)rrZ flags_or_addrrT)rur*r+rs  zSSLSocket.sendtocOstd|jdS)Nz&sendmsg not allowed on instances of %s)rru)rrrr*r*r+sendmsgszSSLSocket.sendmsgc s||jdk r|dkr(td|jd}t|L}|d6}t|}x&||krp|||d}||7}qLWWdQRXWdQRXnt ||SdS)Nrz6non-zero flags not allowed in calls to sendall() on %sB) rrrRru memoryviewcastr[rrpsendall)rrrrHZviewZ byte_viewZamountr)rur*r+rs   "zSSLSocket.sendallcs,|jdk r||||St|||SdS)zSend a file, possibly by using os.sendfile() if this is a clear-text socket. Return the total number of bytes sent. N)rZ_sendfile_use_sendrpsendfile)rfileoffsetrH)rur*r+rs zSSLSocket.sendfilecsD||jdk r2|dkr(td|j||St||SdS)Nrz3non-zero flags not allowed in calls to recv() on %s)rrrRrurrprecv)rbuflenr)rur*r+r s   zSSLSocket.recvcsj||r|dkrt|}n |dkr*d}|jdk rV|dkrJtd|j|||St|||SdS)Nirz8non-zero flags not allowed in calls to recv_into() on %s)rr[rrRrurrp recv_into)rrnbytesr)rur*r+r $s     zSSLSocket.recv_intocs4||jdk r"td|jnt||SdS)Nz'recvfrom not allowed on instances of %s)rrrRrurprecvfrom)rr r)rur*r+r3s   zSSLSocket.recvfromcs6||jdk r"td|jnt|||SdS)Nz,recvfrom_into not allowed on instances of %s)rrrRrurp recvfrom_into)rrrr)rur*r+r;s   zSSLSocket.recvfrom_intocOstd|jdS)Nz&recvmsg not allowed on instances of %s)rru)rrrr*r*r+recvmsgCszSSLSocket.recvmsgcOstd|jdS)Nz+recvmsg_into not allowed on instances of %s)rru)rrrr*r*r+ recvmsg_intoGszSSLSocket.recvmsg_intocCs$||jdk r|jSdSdS)Nr)rrr)rr*r*r+rKs  zSSLSocket.pendingcs|d|_t|dS)N)rrrpr)rZhow)rur*r+rSszSSLSocket.shutdowncCs.|jr|j}d|_|Stdt|dS)NzNo SSL wrapper around )rrrRr)rsr*r*r+rXs  zSSLSocket.unwrapcCs$|jr|jStdt|dS)NzNo SSL wrapper around )rrrRr)rr*r*r+ras z&SSLSocket.verify_client_post_handshakecsd|_tdS)N)rrp _real_close)r)rur*r+rhszSSLSocket._real_closec CsF||}z$|dkr(|r(|d|jWd||XdS)Ng)rrrrr)rblockrr*r*r+rls  zSSLSocket.do_handshakec s|jrtd|js|jdk r&td|jj|d|j||jd|_y>|rVt |}nd}t ||s~d|_|j r~| |St tfk rd|_YnXdS)Nz!can't connect in server-side modez/attempt to connect already-connected SSLSocket!F)rrT)rrRrrrrrrrp connect_exconnectrrrQ)rrTrZrc)rur*r+ _real_connectws( zSSLSocket._real_connectcCs||ddS)zQConnects to remote ADDR, and then wraps the connection in an SSL channel.FN)r)rrTr*r*r+rszSSLSocket.connectcCs ||dS)zQConnects to remote ADDR, and then wraps the connection in an SSL channel.T)r)rrTr*r*r+rszSSLSocket.connect_excs.t\}}|jj||j|jdd}||fS)zAccepts a new connection from a remote client, and returns a tuple containing that new connection wrapped with a server-side SSL channel, and the address of the remote client.T)rrr)rpacceptrrrr)rZnewsockrT)rur*r+rs zSSLSocket.accept tls-uniquecCs4|jdk r|j|S|tkr,td|dSdS)Nz({0} channel binding type not implemented)rrCHANNEL_BINDING_TYPESrRrK)rrr*r*r+rs    zSSLSocket.get_channel_bindingcCs|jdk r|jSdSdS)N)rr)rr*r*r+rs  zSSLSocket.version)FTTNNN)N)rN)F)r)N)r)rN)rr)Nr)rr)Nr)F)r)0r6r7r8ryrr{rrrrrrrrrrrrrrrrrrrrrrrr r rrrrrrrrrrrrrrrrr|r*r*)rur+r!sf<                    rTc Csl|r|std|r |s tdt|} || _|r<| ||rL| ||| rZ| | | j||||dS)Nz5certfile must be specified for server-side operationszcertfile must be specified)rrrr)rRrrrrZ set_ciphersr) rrrrr ssl_versionca_certsrrZciphersrr*r*r+rs    rcCsddlm}ddlm}d}d}y||ddd}Wn$tk rbtd ||fYn0X||dd|}||d|f|d d SdS) aReturn the time in seconds since the Epoch, given the timestring representing the "notBefore" or "notAfter" date from a certificate in ``"%b %d %H:%M:%S %Y %Z"`` strptime format (C locale). "notBefore" or "notAfter" dates must use UTC (RFC 5280). Month is one of: Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec UTC should be specified as GMT (see ASN1_TIME_print()) r)strptime)timegm) ZJanZFebZMarZAprZMayZJunZJulZAugZSepZOctZNovZDecz %d %H:%M:%S %Y GMTNrerFz*time data %r does not match format "%%b%s"rd)ZtimerZcalendarrindextitlerR)Z cert_timerrZmonthsZ time_formatZ month_numberZttr*r*r+cert_time_to_secondss  r#z-----BEGIN CERTIFICATE-----z-----END CERTIFICATE-----csRtt|ddtg}|fddtdtdD7}|tdd|S)z[Takes a certificate in binary DER format and returns the PEM version of it as a string.ASCIIstrictcsg|]}||dqS)@r*)r2i)fr*r+ sz(DER_cert_to_PEM_cert..rr& ) rbase64Zstandard_b64encode PEM_HEADERranger[rZ PEM_FOOTERr\)Zder_cert_bytesZssr*)r(r+DER_cert_to_PEM_certs "r/cCs\|tstdt|ts0tdt|tttt }t| ddS)zhTakes a certificate in ASCII PEM format and returns the DER-encoded version of it as a byte sequencez(Invalid PEM encoding; must start with %sz&Invalid PEM encoding; must end with %sr$r%) r(r,rRstripendswithr.r[r+Z decodebytesr)Zpem_cert_stringdr*r*r+PEM_cert_to_DER_certs r3c Csd|\}}|dk rt}nt}t|||d}t|&}||}|d} WdQRXWdQRXt| S)zRetrieve the certificate from the server at the specified address, and return it as a PEM-encoded string. If 'ca_certs' is specified, validate the server cert against it. If 'ssl_version' is specified, use it in the connection attempt.N)rrmT)rr_create_stdlib_contextrArrr/) rTrrZhostZportrrrZsslsockZdercertr*r*r+get_server_certificates  r5cCs t|dS)Nz )_PROTOCOL_NAMESrY)Z protocol_coder*r*r+get_protocol_name&sr7)kryrrg collectionsrenumrZ_EnumrZ_IntEnumrZ_IntFlagr9rrrr r r r r rrrrrrrrrrvrrrrr ImportErrorrrrrrrr r!r"r#r$r%_convertr6r&rr' __members__itemsr6rZ_SSLv2_IF_EXISTSr5rr<r=r>r?r@rArBrCrPr+rrrQZ socket_errorrrZHAS_NEVER_CHECK_COMMON_NAMEZ_RESTRICTED_SERVER_CIPHERSrJrOrUrXrbrcrfror}rr~rrrZ_create_default_https_contextr4rrrrrrr#r,r.r/r3r5r7r*r*r*r+[s $0    1# 9-(