Ë
    bQêj  ã                  óˆ   — d dl mZ d dlZd dlZd dlm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y)é    )ÚannotationsN)Ú
Collection)ÚHeadersÚMutableHeaders)ÚPlainTextResponseÚResponse)ÚASGIAppÚMessageÚReceiveÚScopeÚSend)ÚDELETEÚGETÚHEADÚOPTIONSÚPATCHÚPOSTÚPUTÚQUERY>   úContent-TypeúAccept-LanguageúContent-LanguageÚAcceptc                  ó†   — e Zd Z	 	 	 	 	 	 	 	 d		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d
d„Zdd„Zdd„Zdd„Zdd„Zdd„Ze	dd„«       Z
y)ÚCORSMiddlewareNc
                ó€  — d|v rt         }d }
|�t        j                  |«      }
d|v }d|v }| xs |}i }|rd|d<   |rd|d<   |rdj                  |«      |d<   ddi}|sd|d<   |j	                  dj                  |«      t        |	«      d	œ«       t        t        t        |«      z  «      }|r|sdj                  |«      |d
<   |rd|d<   || _	        || _
        || _        |D �cg c]  }|j                  «       ‘Œ c}| _        || _        || _        || _        || _        |
| _        || _        || _        || _        y c c}w )NÚ*úAccess-Control-Allow-OriginÚtruez Access-Control-Allow-Credentialsú, zAccess-Control-Expose-HeadersÚVaryzmOrigin, Access-Control-Request-Method, Access-Control-Request-Headers, Access-Control-Request-Private-Network)zAccess-Control-Allow-MethodszAccess-Control-Max-AgeúAccess-Control-Allow-Headers)ÚALL_METHODSÚreÚcompileÚjoinÚupdateÚstrÚsortedÚSAFELISTED_HEADERSÚsetÚappÚallow_originsÚallow_methodsÚlowerÚallow_headersÚallow_all_originsÚallow_all_headersÚallow_credentialsÚpreflight_explicit_allow_originÚallow_origin_regexÚallow_private_networkÚsimple_headersÚpreflight_headers)Úselfr,   r-   r.   r0   r3   r5   r6   Úexpose_headersÚmax_ageÚcompiled_allow_origin_regexr1   r2   r4   r7   r8   Úhs                    ú^/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/starlette/middleware/cors.pyÚ__init__zCORSMiddleware.__init__   s‹  € ð �-ÑÜ'ˆMà&*Ð#ØÐ)Ü*,¯*©*Ð5GÓ*HÐ'à =Ð0ÐØ =Ð0ÐØ.?Ð*?Ò*TÐCTÐ'à)+ˆÙØ<?ˆNÐ8Ñ9ÙØAGˆNÐ=Ñ>ÙØ>B¿i¹iÈÓ>WˆNÐ:Ñ;ð ð  Dð-
Ðñ /Ø?BÐÐ;Ñ<Ø× Ñ à04·	±	¸-Ó0HÜ*-¨g«,ñô	
ô Ô1´C¸Ó4FÑFÓGˆÙÑ!2Ø@DÇ	Á	È-Ó@XÐÐ<Ñ=ÙØDJÐÐ@ÑAàˆŒØ*ˆÔØ*ˆÔØ1>Ö?¨A˜aŸg™g�iÒ?ˆÔØ!2ˆÔØ!2ˆÔØ!2ˆÔØ/NˆÔ,Ø"=ˆÔØ%:ˆÔ"Ø,ˆÔØ!2ˆÕùò @s   Ã#D;c              ƒ  ó>  K  — |d   dk7  r| j                  |||«      ƒ d {  –—†  y |d   }t        |¬«      }|j                  d«      }|�.|dk(  r)d|v r%| j                  |¬«      } ||||«      ƒ d {  –—†  y | j	                  ||||¬«      ƒ d {  –—†  y 7 Œu7 Œ%7 Œ	­w)	NÚtypeÚhttpÚmethod©ÚscopeÚoriginr   úaccess-control-request-method)Úrequest_headers)r,   r   ÚgetÚpreflight_responseÚsimple_response)r9   rE   ÚreceiveÚsendrC   ÚheadersrF   Úresponses           r>   Ú__call__zCORSMiddleware.__call__M   s¹   è ø€ Ø�‰=˜FÒ"Ø—(‘(˜5 '¨4Ó0×0Ð0Øà�x‘ˆÜ Ô&ˆØ—‘˜XÓ&ˆàÐ &¨IÒ"5Ð:YÐ]dÑ:dØ×.Ñ.¸wÐ.ÓGˆHÙ˜5 '¨4Ó0×0Ð0Øà×"Ñ" 5¨'°4ÈÐ"ÓQ×QÑQð 1øð 1øð 	Rús4   ‚B¡B¢ABÁ3BÁ4BÂBÂBÂBÂBc                óˆ   — | j                   ry| j                  �| j                  j                  |«      ry|| j                  v S )NT)r1   r5   Ú	fullmatchr-   )r9   rF   s     r>   Úis_allowed_originz CORSMiddleware.is_allowed_origin]   sB   € Ø×!Ò!Øà×"Ñ"Ð.°4×3JÑ3J×3TÑ3TÐU[Ô3\Øà˜×+Ñ+Ð+Ð+ó    c                óÖ  — |d   }|d   }|j                  d«      }|j                  d«      }t        | j                  «      }g }| j                  |¬«      r| j                  r||d<   n|j                  d«       || j                  vr|j                  d«       | j                  r|�||d<   nc|�a|j                  d	«      D �cg c]  }|j                  «       ‘Œ c}D ]1  }	|	j                  «       | j                  vsŒ |j                  d
«        n |�#| j                  rd|d<   n|j                  d«       |r"ddj                  |«      z   }
t        |
d|¬«      S t        dd|¬«      S c c}w )NrF   rG   zaccess-control-request-headersz&access-control-request-private-network©rF   r   rC   r"   ú,rN   r   z$Access-Control-Allow-Private-Networkzprivate-networkzDisallowed CORS r    i�  )Ústatus_coderN   ÚOKéÈ   )rI   Údictr8   rS   r4   Úappendr.   r2   Úsplitr/   Ústripr0   r6   r&   r   )r9   rH   Úrequested_originÚrequested_methodÚrequested_headersÚrequested_private_networkrN   Úfailuresr=   ÚheaderÚfailure_texts              r>   rJ   z!CORSMiddleware.preflight_responsef   sv  € Ø*¨8Ñ4ÐØ*Ð+JÑKÐØ+×/Ñ/Ð0PÓQÐØ$3×$7Ñ$7Ð8`Ó$aÐ!ä�t×-Ñ-Ó.ˆØ ˆà×!Ñ!Ð)9Ð!Ô:Ø×3Ò3ð :J�Ð5Ò6à�O‰O˜HÔ%à 4×#5Ñ#5Ñ5Ø�O‰O˜HÔ%ð ×!Ò!Ð&7Ð&CØ6GˆGÐ2Ò3ØÐ*Ø.?×.EÑ.EÀcÓ.JÖK¨˜1Ÿ7™7�9ÒKò �Ø—<‘<“>¨×);Ñ);Ò;Ø—O‘O IÔ.Ùðð
 %Ð0Ø×)Ò)ØBH�Ð>Ò?à—‘Ð 1Ô2ñ
 Ø-°·	±	¸(Ó0CÑCˆLÜ$ \¸sÈGÔTÐTä  °3ÀÔHÐHùò% Ls   ÃE&c              ƒ  óŠ   K  — t        j                  | j                  ||¬«      }| j                  |||«      ƒ d {  –—†  y 7 Œ­w)N)rM   rH   )Ú	functoolsÚpartialrM   r,   )r9   rE   rL   rM   rH   s        r>   rK   zCORSMiddleware.simple_response“   s4   è ø€ Ü× Ñ  §¡°ÀÔWˆØ�h‰h�u˜g tÓ,×,Ò,ús   ‚9A»A¼Ac              ƒ  ó  K  — |d   dk7  r ||«      ƒ d {  –—†  y |j                  dg «       t        |¬«      }|j                  d«      }|�|j                  | j                  «       |�+| j
                  r| j                  r| j                  ||«       nZ|�1| j
                  s%| j                  |¬«      r| j                  ||«       n'dj                  g |j                  d«      ¢d‘«      |d<    ||«      ƒ d {  –—†  y 7 Œé7 Œ­w)	NrA   zhttp.response.startrN   rD   ÚOriginrV   r    r!   )Ú
setdefaultr   rI   r'   r7   r1   r3   Úallow_explicit_originrS   r&   Úgetlist)r9   ÚmessagerM   rH   rN   rF   s         r>   rM   zCORSMiddleware.send—   sü   è ø€ Ø�6‰?Ð3Ò3Ù�w“-×ÐØà×Ñ˜9 bÔ)Ü  wÔ/ˆØ ×$Ñ$ XÓ.ˆØÐØ�N‰N˜4×.Ñ.Ô/ð Ð $×"8Ò"8¸T×=SÒ=SØ×&Ñ& w°Õ7ð Ð¨×(>Ò(>À4×CYÑCYÐagÐCYÔChØ×&Ñ& w°Õ7à"Ÿi™iÐ(L¨'¯/©/¸&Ó*AÐ(LÀ8Ð(LÓMˆG�F‰Oá�7‹m×Ñð'  øð& 	ús"   ‚D–D —C#DÃ:DÃ;DÄDc                ó\   — || d<   dj                  g | j                  d«      ¢d‘«      | d<   y )Nr   r    r!   rj   )r&   rm   )rN   rF   s     r>   rl   z$CORSMiddleware.allow_explicit_origin®   s3   € à17ˆÐ-Ñ.ØŸ)™)Ð$H g§o¡o°fÓ&=Ð$H¸xÐ$HÓIˆ�ŠrT   )© )r   rp   FNFrp   iX  )r,   r	   r-   úCollection[str]r.   rq   r0   rq   r3   Úboolr5   z
str | Noner6   rr   r:   rq   r;   ÚintÚreturnÚNone)rE   r   rL   r   rM   r   rt   ru   )rF   r(   rt   rr   )rH   r   rt   r   )
rE   r   rL   r   rM   r   rH   r   rt   ru   )rn   r
   rM   r   rH   r   rt   ru   )rN   r   rF   r(   rt   ru   )Ú__name__Ú
__module__Ú__qualname__r?   rP   rS   rJ   rK   rM   Ústaticmethodrl   rp   rT   r>   r   r      s¶   „ ð *,Ø)1Ø)+Ø"'Ø)-Ø&+Ø*,Øð;3àð;3ð 'ð;3ð 'ð	;3ð
 'ð;3ð  ð;3ð 'ð;3ð  $ð;3ð (ð;3ð ð;3ð 
ó;3ózRó ,ó+IóZ-óð. òJó ñJrT   r   )Ú
__future__r   rg   r$   Úcollections.abcr   Ústarlette.datastructuresr   r   Ústarlette.responsesr   r   Ústarlette.typesr	   r
   r   r   r   r#   r*   r   rp   rT   r>   ú<module>r      s6   ðÝ "ã Û 	Ý &ç <ß ;ß BÕ BàS€ÚVÐ ÷bJò bJrT   