§
     @g£  ã                   ó€   — d dl Z d dlZd dlZd dlmZmZ d dlmZmZ d dl	m
Z
mZmZmZmZ dZh d£Z G d„ d¦  «        ZdS )	é    N)ÚHeadersÚMutableHeaders)ÚPlainTextResponseÚResponse)ÚASGIAppÚMessageÚReceiveÚScopeÚSend)ÚDELETEÚGETÚHEADÚOPTIONSÚPATCHÚPOSTÚPUT>   úContent-TypeúAccept-LanguageúContent-LanguageÚAcceptc                   óH  — e Zd Z	 	 	 	 	 	 	 ddedej        e         dej        e         d	ej        e         d
edej        e         dej        e         de	ddfd„Z
dedededdfd„Zdedefd„Zdedefd„Zdededededdf
d„Zdedededdfd„Zedededdfd„¦   «         ZdS )ÚCORSMiddleware© ©r   FNéX  ÚappÚallow_originsÚallow_methodsÚallow_headersÚallow_credentialsÚallow_origin_regexÚexpose_headersÚmax_ageÚreturnc	                 óv  — d|v rt           }d }	|�t          j        |¦  «        }	d|v }
d|v }|
 p|}i }|
rd|d<   |rd|d<   |rd                     |¦  «        |d<   i }|rd|d<   nd|d<   |                     d                     |¦  «        t          |¦  «        d	œ¦  «         t          t          t          |¦  «        z  ¦  «        }|r|sd                     |¦  «        |d
<   |rd|d<   || _	        || _
        || _        d„ |D ¦   «         | _        |
| _        || _        || _        |	| _        || _        || _        d S )NÚ*úAccess-Control-Allow-OriginÚtruez Access-Control-Allow-Credentialsú, zAccess-Control-Expose-HeadersÚOriginÚVary)zAccess-Control-Allow-MethodszAccess-Control-Max-AgeúAccess-Control-Allow-Headersc                 ó6   — g | ]}|                      ¦   «         ‘ŒS r   ©Úlower©Ú.0Úhs     úM/var/www/piapp/venv/lib/python3.11/site-packages/starlette/middleware/cors.pyú
<listcomp>z+CORSMiddleware.__init__.<locals>.<listcomp>A   s    € Ð?Ð?Ð?¨A˜aŸgšg™iœiÐ?Ð?Ð?ó    )ÚALL_METHODSÚreÚcompileÚjoinÚupdateÚstrÚsortedÚSAFELISTED_HEADERSÚsetr   r   r   r   Úallow_all_originsÚallow_all_headersÚpreflight_explicit_allow_originr!   Úsimple_headersÚpreflight_headers)Úselfr   r   r   r   r    r!   r"   r#   Úcompiled_allow_origin_regexr?   r@   rA   rB   rC   s                  r3   Ú__init__zCORSMiddleware.__init__   sÅ  € ð �-ÐÐÝ'ˆMà&*Ð#ØÐ)Ý*,¬*Ð5GÑ*HÔ*HÐ'à =Ð0ÐØ =Ð0ÐØ.?Ð*?Ð*TÐCTÐ'àˆØð 	@Ø<?ˆNÐ8Ñ9Øð 	HØAGˆNÐ=Ñ>Øð 	XØ>B¿iºiÈÑ>WÔ>WˆNÐ:Ñ;àÐØ*ð 	Cà(0Ð˜fÑ%Ð%à?BÐÐ;Ñ<Ø× Ò à04·	²	¸-Ñ0HÔ0HÝ*-¨g©,¬,ðð ñ	
ô 	
ð 	
õ Õ1µC¸Ñ4FÔ4FÑFÑGÔGˆØð 	YÐ!2ð 	YØ@DÇ	Â	È-Ñ@XÔ@XÐÐ<Ñ=Øð 	KØDJÐÐ@ÑAàˆŒØ*ˆÔØ*ˆÔØ?Ð?°Ð?Ñ?Ô?ˆÔØ!2ˆÔØ!2ˆÔØ/NˆÔ,Ø"=ˆÔØ,ˆÔØ!2ˆÔÐÐr5   ÚscopeÚreceiveÚsendc              ƒ   ó¤  K  — |d         dk    r|                       |||¦  «        ƒ d {V —† d S |d         }t          |¬¦  «        }|                     d¦  «        }|€|                       |||¦  «        ƒ d {V —† d S |dk    r/d|v r+|                      |¬¦  «        } ||||¦  «        ƒ d {V —† d S |                      ||||¬¦  «        ƒ d {V —† d S )	NÚtypeÚhttpÚmethod©rG   Úoriginr   úaccess-control-request-method)Úrequest_headers)r   r   ÚgetÚpreflight_responseÚsimple_response)rD   rG   rH   rI   rM   ÚheadersrO   Úresponses           r3   Ú__call__zCORSMiddleware.__call__I   s*  è è € Ø�Œ=˜FÒ"Ð"Ø—(’(˜5 '¨4Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0ØˆFà�x”ˆÝ Ð&Ñ&Ô&ˆØ—’˜XÑ&Ô&ˆàˆ>Ø—(’(˜5 '¨4Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0ØˆFà�YÒÐÐ#BÀgÐ#MÐ#MØ×.Ò.¸wÐ.ÑGÔGˆHØ�(˜5 '¨4Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0ØˆFà×"Ò" 5¨'°4ÈÐ"ÑQÔQÐQÐQÐQÐQÐQÐQÐQÐQÐQr5   rO   c                 ól   — | j         rdS | j        �| j                             |¦  «        rdS || j        v S )NT)r?   r!   Ú	fullmatchr   )rD   rO   s     r3   Úis_allowed_originz CORSMiddleware.is_allowed_origin]   sK   € ØÔ!ð 	Ø�4àÔ"Ð.°4Ô3J×3TÒ3TØñ4
ô 4
Ð.ð �4à˜Ô+Ð+Ð+r5   rQ   c                 ój  — |d         }|d         }|                      d¦  «        }t          | j        ¦  «        }g }|                      |¬¦  «        r| j        r||d<   n|                     d¦  «         || j        vr|                     d¦  «         | j        r|�||d<   nV|�Td„ |                     d	¦  «        D ¦   «         D ]4}| 	                    ¦   «         | j
        vr|                     d
¦  «          nŒ5|r*dd                     |¦  «        z   }t          |d|¬¦  «        S t          dd|¬¦  «        S )NrO   rP   zaccess-control-request-headers©rO   r'   rM   r,   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r   r.   r0   s     r3   r4   z5CORSMiddleware.preflight_response.<locals>.<listcomp>€   s    € ÐKÐKÐK¨˜1Ÿ7š7™9œ9ÐKÐKÐKr5   ú,rU   zDisallowed CORS r)   i�  )Ústatus_coderU   ÚOKéÈ   )rR   ÚdictrC   rZ   rA   Úappendr   r@   ÚsplitÚstripr   r9   r   )	rD   rQ   Úrequested_originÚrequested_methodÚrequested_headersrU   ÚfailuresÚheaderÚfailure_texts	            r3   rS   z!CORSMiddleware.preflight_responseh   sz  € Ø*¨8Ô4ÐØ*Ð+JÔKÐØ+×/Ò/Ð0PÑQÔQÐå�tÔ-Ñ.Ô.ˆØˆà×!Ò!Ð)9Ð!Ñ:Ô:ð 	&ØÔ3ð Jð :J�Ð5Ñ6øà�OŠO˜HÑ%Ô%Ð%à 4Ô#5Ð5Ð5Ø�OŠO˜HÑ%Ô%Ð%ð Ô!ð 	Ð&7Ð&CØ6GˆGÐ2Ñ3Ð3ØÐ*ØKÐKÐ.?×.EÒ.EÀcÑ.JÔ.JÐKÑKÔKð ð �Ø—<’<‘>”>¨Ô);Ð;Ð;Ø—O’O IÑ.Ô.Ð.Ø�Eð <ð ð 	UØ-°·	²	¸(Ñ0CÔ0CÑCˆLÝ$ \¸sÈGÐTÑTÔTÐTå  °3ÀÐHÑHÔHÐHr5   c              ƒ   ó|   K  — t          j        | j        ||¬¦  «        }|                      |||¦  «        ƒ d {V —† d S )N)rI   rQ   )Ú	functoolsÚpartialrI   r   )rD   rG   rH   rI   rQ   s        r3   rT   zCORSMiddleware.simple_responseŽ   sO   è è € õ Ô  ¤°ÀÐWÑWÔWˆØ�hŠh�u˜g tÑ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,r5   Úmessagec              ƒ   ó¨  K  — |d         dk    r ||¦  «        ƒ d {V —† d S |                      dg ¦  «         t          |¬¦  «        }|                     | j        ¦  «         |d         }d|v }| j        r|r|                      ||¦  «         n3| j        s,|                      |¬¦  «        r|                      ||¦  «          ||¦  «        ƒ d {V —† d S )NrK   zhttp.response.startrU   rN   r*   Úcookier\   )Ú
setdefaultr   r:   rB   r?   Úallow_explicit_originrZ   )rD   ro   rI   rQ   rU   rO   Ú
has_cookies          r3   rI   zCORSMiddleware.send”   s  è è € ð �6Œ?Ð3Ò3Ð3Ø�$�w‘-”-ÐÐÐÐÐÐÐØˆFà×Ò˜9 bÑ)Ô)Ð)Ý  wÐ/Ñ/Ô/ˆØ�Š�tÔ*Ñ+Ô+Ð+Ø  Ô*ˆØ Ð0ˆ
ð Ô!ð 	8 jð 	8Ø×&Ò& w°Ñ7Ô7Ð7Ð7ð Ô'ð 	8¨D×,BÒ,BÈ&Ð,BÑ,QÔ,Qð 	8Ø×&Ò& w°Ñ7Ô7Ð7àˆd�7‰mŒmÐÐÐÐÐÐÐÐÐr5   rU   c                 ó:   — || d<   |                       d¦  «         d S )Nr'   r*   )Úadd_vary_header)rU   rO   s     r3   rs   z$CORSMiddleware.allow_explicit_origin­   s'   € à17ˆÐ-Ñ.Ø×Ò Ñ)Ô)Ð)Ð)Ð)r5   )r   r   r   FNr   r   )Ú__name__Ú
__module__Ú__qualname__r   ÚtypingÚSequencer;   ÚboolÚOptionalÚintrF   r
   r	   r   rW   rZ   r   r   rS   rT   r   rI   Ústaticmethodr   rs   r   r5   r3   r   r      sè  € € € € € ð /1Ø.6Ø.0Ø"'Ø37Ø/1Øð93ð 93àð93ð ” sÔ+ð93ð ” sÔ+ð	93ð
 ” sÔ+ð93ð  ð93ð #œO¨CÔ0ð93ð œ¨Ô,ð93ð ð93ð 
ð93ð 93ð 93ð 93ðvR Eð R°Gð RÀ4ð RÈDð Rð Rð Rð Rð(	,¨ð 	,°ð 	,ð 	,ð 	,ð 	,ð$I°'ð $I¸hð $Ið $Ið $Ið $IðL-Øð-Ø%,ð-Ø48ð-ØKRð-à	ð-ð -ð -ð -ðØðØ&*ðØ=Dðà	ðð ð ð ð2 ð* ~ð *¸sð *Àtð *ð *ð *ñ „\ð*ð *ð *r5   r   )rm   r7   rz   Ústarlette.datastructuresr   r   Ústarlette.responsesr   r   Ústarlette.typesr   r   r	   r
   r   r6   r=   r   r   r5   r3   ú<module>rƒ      sÊ   ðØ Ð Ð Ð Ø 	€	€	€	Ø €€€à <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BàJ€ØVÐVÐVÐ ðc*ð c*ð c*ð c*ð c*ñ c*ô c*ð c*ð c*ð c*r5   