
    MȂilf                        S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	J
r
  S SKJr  S SKJr  S SKJrJr  S SKJr  S SKJrJr  S SKJr  S S	KJr  S S
KJr  S SKJr  S SKJ r   S SK!J"r"  S SK#J$r$  S SK%J&r&J'r'J(r(  S SK)J*r*  \*" S\RV                  5      r, " S S\ 5      r- " S S\.5      r/ " S S5      r0 " S S\05      r1 " S S\05      r2 " S S\25      r3 " S S\15      r4 " S  S!\45      r5 " S" S#\45      r6 " S$ S%\15      r7 " S& S'\15      r8 " S( S)\15      r9 " S* S+\15      r: " S, S-\15      r; " S. S/\15      r< " S0 S1\15      r= " S2 S3\>5      r? " S4 S5\15      r@g)6    N)Header)	responses)urlsplit)async_to_syncsync_to_async)settings)signalssigning)DisallowedRedirect)DjangoJSONEncoder)SimpleCookie)timezone)CaseInsensitiveMapping)
iri_to_uri)cached_property)MAX_URL_REDIRECT_LENGTHcontent_disposition_header	http_date)_lazy_re_compilez ;\s*charset=(?P<charset>[^\s;]+)c                   @    \ rS rSrS rS
S jrS rS rSS jrS r	S	r
g)ResponseHeaders%   c                 ^    0 U l         U(       a  U R                  U5       H	  u  p#X0U'   M     gg)zU
Populate the initial data using __setitem__ to ensure values are
correctly encoded.
N)_store_unpack_items)selfdataheadervalues       ED:\sksbv-state-backend\venv\Lib\site-packages\django/http/response.py__init__ResponseHeaders.__init__&   s1    
 !%!3!3D!9$V ":     c                 z    [        U[        5      (       a  UR                  U5        OC[        U[        5      (       a  UR	                  U5      nO[        U5      nUR                  U5        SU;   d  SU;   a  [        SU< S35      e U$ ! [         a  n[        U[        5      (       a  SU;   d'  SU;   d!  [        U[        5      (       a  SU;   d  SU;   a  [        SU< S35      UeU(       a-  [        US[        R                  S9R                  5       n S
nAU$ U=R                  S	U-  -  sl
        e S
nAff = f)z
Convert headers key/value to ascii/latin-1 native strings.
`charset` must be 'ascii' or 'latin-1'. If `mime_encode` is True and
`value` can't be represented in the given charset, apply MIME-encoding.

z*Header values can't contain newlines (got )   
   utf-8)
maxlinelenz,, HTTP response headers must be in %s formatN)
isinstancestrencodebytesdecodeBadHeaderErrorUnicodeErrorr   sysmaxsizereason)r   r   charsetmime_encodees        r    _convert_to_charset#ResponseHeaders._convert_to_charset0   s$   	%%%W%E5))W-E
W%u}$@	K  !.( !  	
 5%((eun5#&&DEMTU]$@	K ug#++FMMO  JWTT	s   BB 
D:BD5D55D:c                 &    U R                  U5        g N)pop)r   keys     r    __delitem__ResponseHeaders.__delitem__W   s    r#   c                     U R                  US5      nU R                  USSS9nX4U R                  UR                  5       '   g )Nasciilatin-1T)r7   )r9   r   lowerr   r>   r   s      r    __setitem__ResponseHeaders.__setitem__Z   sA    &&sG4((	t(L$'<CIIK r#   Nc                 V    U R                   R                  UR                  5       U5      $ r<   )r   r=   rD   )r   r>   defaults      r    r=   ResponseHeaders.pop_   s    {{syy{G44r#   c                     X;  a  X U'   g g r<    rE   s      r    
setdefaultResponseHeaders.setdefaultb   s    ?I r#   )r   Fr<   )__name__
__module____qualname____firstlineno__r!   r9   r?   rF   r=   rM   __static_attributes__rL   r#   r    r   r   %   s!    %%N0
5r#   r   c                       \ rS rSrSrg)r1   g   rL   NrP   rQ   rR   rS   rT   rL   r#   r    r1   r1   g       r#   r1   c                   @   \ rS rSrSrSr S S jr\S 5       r\R                  S 5       r\S 5       r
\
R                  S	 5       r
S
 r\r\S 5       rS rS rS rS r\rS rS!S jr        S"S jrS rS#S jrS$S jrS rS rS rS rS rS rS rS r S r!Sr"g)%HttpResponseBasek   z
An HTTP response base class with dictionary-accessed headers.

This class doesn't handle content. It should not be used directly.
Use the HttpResponse and StreamingHttpResponse subclasses instead.
   Nc                    [        U5      U l        X@l        SU R                  ;  a!  Uc  SU R                   3nXR                  S'   OU(       a  [	        S5      e/ U l        S U l        [        5       U l        SU l	        Ub5   [        U5      U l        SU R                  s=::  a  S::  d  O  [	        S5      eX0l        g ! [        [        4 a    [        S5      ef = f)	NContent-Typeztext/html; charset=zX'headers' must not contain 'Content-Type' when the 'content_type' parameter is provided.Fz$HTTP status code must be an integer.d   iW  z4HTTP status code must be an integer from 100 to 599.)r   headers_charsetr6   
ValueError_resource_closers_handler_classr   cookiesclosedintstatus_code	TypeError_reason_phrase)r   content_typestatusr5   r6   r`   s         r    r!   HttpResponseBase.__init__u   s     'w/-#!4T\\NC+7LL(8  "$ ##~H#&v;  $**1c1 !WXX$ 	* H FGGHs   B= =Cc                 v    U R                   b  U R                   $ [        R                  " U R                  S5      $ )NzUnknown Status Code)rj   r   getrh   r   s    r    reason_phraseHttpResponseBase.reason_phrase   s4    *&&& }}T--/DEEr#   c                     Xl         g r<   )rj   r   r   s     r    rq   rr      s    #r#   c                     U R                   b  U R                   $ U R                  R                  S5      =n(       a1  [        R	                  U5      =n(       a  US   R                  SS5      $ [        R                  $ )Nr^   r6   " )ra   r`   ro   _charset_from_content_type_researchreplacer   DEFAULT_CHARSET)r   rk   matcheds      r    r6   HttpResponseBase.charset   sn    ==$==   <<++N;;<;7>>|LLwL
 y)11#r::'''r#   c                     Xl         g r<   )ra   rt   s     r    r6   r}      s    r#   c           
          SR                  U R                  R                  5        VVs/ sH+  u  pUR                  S5      S-   UR                  S5      -   PM-     snn5      $ s  snnf )zHTTP headers as a bytestring.s   
rB   s   : rC   )joinr`   itemsr.   rE   s      r    serialize_headers"HttpResponseBase.serialize_headers   s`    || #',,"4"4"6"6JC 

7#e+ell9.EE"6
 	
s   1A"
c                 J    SU R                   ;   a  SU R                   S   -  $ S$ )Nr^   z, "%s"rw   r`   rp   s    r    _content_type_for_repr'HttpResponseBase._content_type_for_repr   s2     - t||N33	
 	
r#   c                      X R                   U'   g r<   r   )r   r   r   s      r    rF   HttpResponseBase.__setitem__   s    $Vr#   c                     U R                   U	 g r<   r   r   r   s     r    r?   HttpResponseBase.__delitem__   s    LL r#   c                      U R                   U   $ r<   r   r   s     r    __getitem__HttpResponseBase.__getitem__   s    ||F##r#   c                     XR                   ;   $ )z$Case-insensitive check for a header.r   r   s     r    
has_headerHttpResponseBase.has_header   s    %%r#   c                 6    U R                   R                  5       $ r<   )r`   r   rp   s    r    r   HttpResponseBase.items   s    ||!!##r#   c                 8    U R                   R                  X5      $ r<   )r`   ro   )r   r   	alternates      r    ro   HttpResponseBase.get   s    ||22r#   c
                 R   X R                   U'   Ub  [        U[        R                  5      (       a  [        R                  " U5      (       a%  [        R
                  " U[        R                  5      nU[        R                  R                  [        R                  S9-
  n
U
[        R                  " SS9-  n
SnUb  [        S5      e[        SU
R                  S-  U
R                  -   5      nO$X@R                   U   S'   OS	U R                   U   S'   Ub  [        U[        R                  5      (       a  UR                  5       n[        U5      U R                   U   S
'   U(       d1  [        [         R                   " 5       U-   5      U R                   U   S'   Ub  XPR                   U   S'   Ub  X`R                   U   S'   U(       a  SU R                   U   S'   U(       a  SU R                   U   S'   U	(       a1  U	R#                  5       S;  a  [        S5      eXR                   U   S'   gg)aI  
Set a cookie.

``expires`` can be:
- a string in the correct format,
- a naive ``datetime.datetime`` object in UTC,
- an aware ``datetime.datetime`` object in any time zone.
If it is a ``datetime.datetime`` object then calculate ``max_age``.

``max_age`` can be:
- int/float specifying seconds,
- ``datetime.timedelta`` object.
N)tz   )secondsz/'expires' and 'max_age' can't be used together.r   iQ expiresrw   zmax-agepathdomainTsecurehttponly)laxnonestrictz,samesite must be "lax", "none", or "strict".samesite)re   r,   datetimer   is_naive
make_awareUTCnow	timedeltarb   maxdaysr   total_secondsrg   r   timerD   )r   r>   r   max_ager   r   r   r   r   r   deltas              r    
set_cookieHttpResponseBase.set_cookie   s   2 "S'8#4#455$$W--&11'8<<HG("3"3"7"78<<"7"HH ++A66&$%VWWae!3emm!CD/6S!),+-DLLi('8#5#566!//1+.w<DLLi(/8w9N/OS!),(,LLf%*0LLh'*.DLLh',0DLLj)~~'@@ !OPP,4LLj) r#   c                 :    U R                   R                  X5        g)z,Set a header unless it has already been set.N)r`   rM   rE   s      r    rM   HttpResponseBase.setdefault  s    +r#   c                 r    [         R                  " X-   S9R                  U5      nU R                  " X40 UD6$ )N)salt)r
   get_cookie_signersignr   )r   r>   r   r   kwargss        r    set_signed_cookie"HttpResponseBase.set_signed_cookie  s3    ))sz:??Fs4V44r#   c           
          UR                  S5      =(       d    U=(       a    UR                  5       S:H  nU R                  USUUUSUS9  g )N)z	__Secure-z__Host-r   r   zThu, 01 Jan 1970 00:00:00 GMT)r   r   r   r   r   r   )
startswithrD   r   )r   r>   r   r   r   r   s         r    delete_cookieHttpResponseBase.delete_cookie"  sW    
  89 
3)V3 	 	3 	 	
r#   c                    [        U[        [        45      (       a  [        U5      $ [        U[        5      (       a$  [        UR	                  U R
                  5      5      $ [        U5      R	                  U R
                  5      $ )z=Turn a value into a bytestring encoded in the output charset.)r,   r/   
memoryviewr-   r.   r6   rt   s     r    
make_bytesHttpResponseBase.make_bytes6  s^     eeZ011<eS!!dll3445z  ..r#   c                     U R                    H  n U" 5         M     U R                   R                  5         SU l        [        R
                  R                  U R                  S9  g ! [         a     Me  f = f)NT)sender)rc   	Exceptionclearrf   r	   request_finishedsendrd   )r   closers     r    closeHttpResponseBase.closeL  sh    ,,F - 	$$&  %%T-@-@%A  s   A%%
A32A3c                 F    [        SU R                  R                  -  5      eNz This %s instance is not writableOSError	__class__rP   r   contents     r    writeHttpResponseBase.writeW      84>>;R;RRSSr#   c                     g r<   rL   rp   s    r    flushHttpResponseBase.flushZ  s    r#   c                 F    [        SU R                  R                  -  5      e)Nz)This %s instance cannot tell its positionr   rp   s    r    tellHttpResponseBase.tell]  s!    7$..:Q:QQ
 	
r#   c                     gNFrL   rp   s    r    readableHttpResponseBase.readablee      r#   c                     gr   rL   rp   s    r    seekableHttpResponseBase.seekableh  r   r#   c                     gr   rL   rp   s    r    writableHttpResponseBase.writablek  r   r#   c                 F    [        SU R                  R                  -  5      er   r   )r   liness     r    
writelinesHttpResponseBase.writelinesn  r   r#   )ra   rd   rj   rc   rf   re   r`   rh   )NNNNNr<   )rw   NN/NFFN)rw   )r   NN)#rP   rQ   rR   rS   __doc__rh   r!   propertyrq   setterr6   r   	__bytes__r   rF   r?   r   r   __contains__r   ro   r   rM   r   r   r   r   r   r   r   r   r   r   r   rT   rL   r#   r    rZ   rZ   k   s    K RV%< F F $ $ ( ( ^^ 
 "I
 
%!$& L$3 >5@,5
(/,	BT
Tr#   rZ   c                      ^  \ rS rSrSrSrSU 4S jjrS rS r\r	\
S 5       r\R                  S 5       r\S	 5       rS
 rS rS rS rS rS rSrU =r$ )HttpResponseir  zg
An HTTP response class with a string as content.

This content can be read, appended to, or replaced.
Fc                 2   > [         TU ]  " U0 UD6  Xl        g r<   )superr!   r   )r   r   argsr   r   s       r    r!   HttpResponse.__init__{  s    $)&)r#   c                 d    SU R                   R                  U R                  U R                  S.-  $ Nz5<%(cls)s status_code=%(status_code)d%(content_type)s>)clsrh   rk   r   rP   rh   r   rp   s    r    __repr__HttpResponse.__repr__  s4    F>>**++ 77J
 
 	
r#   c                 B    U R                  5       S-   U R                  -   $ )z6Full HTTP message, including headers, as a bytestring.s   

)r   r   rp   s    r    	serializeHttpResponse.serialize  s    %%'+5DDr#   c                 8    SR                  U R                  5      $ Nr#   )r   
_containerrp   s    r    r   HttpResponse.content  s    xx((r#   c                 p  ^  [        US5      (       a_  [        U[        [        [        45      (       d?  SR                  U 4S jU 5       5      n[        US5      (       a   UR                  5         OOT R                  U5      nU/T l	        T R                  R                  SS 5        g ! [         a     N1f = f)N__iter__r#   c              3   D   >#    U H  nTR                  U5      v   M     g 7fr<   r   ).0chunkr   s     r    	<genexpr>'HttpResponse.content.<locals>.<genexpr>  s     I5%tu555s    r   text)hasattrr,   r/   r   r-   r   r   r   r   r  __dict__r=   )r   r   r   s   `  r    r   r    s     5*%%jE:s+/
 /
 hhI5IIGug&&KKM ' ooe,G")&$' ! s    B( (
B54B5c                 ^    U R                   R                  U R                  =(       d    S5      $ )Nr*   )r   r0   r6   rp   s    r    r  HttpResponse.text  s     ||""4<<#:7;;r#   c                 ,    [        U R                  5      $ r<   )iterr  rp   s    r    r  HttpResponse.__iter__  s    DOO$$r#   c                 X    U R                   R                  U R                  U5      5        g r<   )r  appendr   r   s     r    r   HttpResponse.write  s    tw78r#   c                 ,    [        U R                  5      $ r<   )lenr   rp   s    r    r   HttpResponse.tell  s    4<<  r#   c                     U R                   $ r<   )r   rp   s    r    getvalueHttpResponse.getvalue  s    ||r#   c                     g)NTrL   rp   s    r    r   HttpResponse.writable  s    r#   c                 8    U H  nU R                  U5        M     g r<   )r   )r   r   lines      r    r   HttpResponse.writelines  s    DJJt r#   )r  r   )r#   )rP   rQ   rR   rS   r   	streamingr!   r   r   r   r   r   r   r   r  r  r   r   r  r   r   rT   __classcell__r   s   @r    r   r   r  s     I

E I) ) ^^( (" < <%9! r#   r   c                      ^  \ rS rSrSrSrSU 4S jjrS r\S 5       r	\S 5       r
\S 5       r\R                  S	 5       rS
 rS rS rS rSrU =r$ )StreamingHttpResponsei  a  
A streaming HTTP response class with an iterator as content.

This should only be iterated once, when the response is streamed to the
client. However, it can be appended to or replaced with a new iterator
that wraps the original content (or yields entirely new content).
Tc                 2   > [         TU ]  " U0 UD6  Xl        g r<   )r   r!   streaming_content)r   r)  r   r   r   s       r    r!   StreamingHttpResponse.__init__  s    $)&) "3r#   c                 d    SU R                   R                  U R                  U R                  S.-  $ r   )r   rR   rh   r   rp   s    r    r   StreamingHttpResponse.__repr__  s4    F>>..++ 77J
 
 	
r#   c                 F    [        SU R                  R                  -  5      e)NzMThis %s instance has no `content` attribute. Use `streaming_content` instead.AttributeErrorr   rP   rp   s    r    r   StreamingHttpResponse.content  s'    +-1^^-D-DE
 	
r#   c                 F    [        SU R                  R                  -  5      e)Nz)This %s instance has no `text` attribute.r.  rp   s    r    r  StreamingHttpResponse.text  s!    7$..:Q:QQ
 	
r#   c                    ^ ^ T R                   (       a  T R                  mUU 4S jnU" 5       $ [        T R                  T R                  5      $ )Nc                 V   >#    T  S h  vN n TR                  U 5      7v   M   N
 g 7fr<   r  )part	_iteratorr   s    r    awrapper9StreamingHttpResponse.streaming_content.<locals>.awrapper  s&     "+ 0$//$//0)s   )'%')'))is_asyncr6  mapr   )r   r7  r6  s   ` @r    r)  'StreamingHttpResponse.streaming_content  s9    == I0 :t77r#   c                 &    U R                  U5        g r<   )_set_streaming_contentrt   s     r    r)  r;    s    ##E*r#   c                      [        U5      U l        SU l        [        US5      (       a&  U R                  R                  UR                  5        g g ! [         a    [	        U5      U l        SU l         N[f = f)NFTr   )	r  r6  r9  ri   aiterr  rc   r  r   rt   s     r    r=  ,StreamingHttpResponse._set_streaming_content  sh    	!!%[DN!DM 5'""""))%++6 #  	!"5\DN DM	!s   A !A54A5c           	           [        U R                  5      $ ! [         aX    [        R                  " S[
        SS9  S n[        U R                  [        [        U5      " U R                  5      5      5      s $ f = f)NzStreamingHttpResponse must consume asynchronous iterators in order to serve them synchronously. Use a synchronous iterator instead.   
stacklevelc                 T   #    / nU   S h  vN nUR                  U5        M   N
 U$ 7fr<   )r  )r6  as_listr
  s      r    to_list/StreamingHttpResponse.__iter__.<locals>.to_list
  s,     #, *%NN5)*9s   (%#%(%()
r  r)  ri   warningswarnWarningr:  r   r   r6  )r   rG  s     r    r  StreamingHttpResponse.__iter__  sm    	V..// 	VMMP	 t]7-CDNN-S(TUU	Vs    AA98A9c                  #     U R                     S h  vN nU7v   M   N
 g ! [         aQ    [        R                  " S[        SS9  [        [        5      " U R                   5      I S h  vN   H  nU7v   M
      g f = f7f)NzStreamingHttpResponse must consume synchronous iterators in order to serve them asynchronously. Use an asynchronous iterator instead.rB  rC  )r)  ri   rI  rJ  rK  r   list)r   r5  s     r    	__aiter__StreamingHttpResponse.__aiter__  su     	"44 d
4 
	MMS	 ,D1$2H2HIII
 J
	sJ   B$ " "$ "$ BAA?*A-+A?<B>A??Bc                 8    SR                  U R                  5      $ r  )r   r)  rp   s    r    r  StreamingHttpResponse.getvalue"  s    xx..//r#   )r6  r9  r)  )rL   )rP   rQ   rR   rS   r   r#  r!   r   r   r   r  r)  r   r=  r  rO  r  rT   r$  r%  s   @r    r'  r'    s     I3
 
 
 
 

 8 8 + +	7V( 0 0r#   r'  c                   L   ^  \ rS rSrSrSrSSS.U 4S jjrU 4S jrS	 rS
r	U =r
$ )FileResponsei&  z6
A streaming HTTP response class optimized for files.
i   Frw   )as_attachmentfilenamec                n   > Xl         X l        SU;  =(       d    US   S L U l        [        TU ]  " U0 UD6  g )Nrk   )rU  rV  _no_explicit_content_typer   r!   )r   rU  rV  r   r   r   s        r    r!   FileResponse.__init__-  sA    * &(JF>,Bd,J 	& 	$)&)r#   c                 8  >^ ^ [        US5      (       d  S T l        [        TT ]  U5      $ U=T l        m[        TS5      (       a%  T R                  R                  TR                  5        [        UU 4S jS5      nT R                  T5        [        TT ]  U5        g )Nreadr   c                  :   > T R                  TR                  5      $ r<   )r[  
block_sizefileliker   s   r    <lambda>5FileResponse._set_streaming_content.<locals>.<lambda>=  s    X]]4??;r#   r#   )	r  file_to_streamr   r=  rc   r  r   r  set_headers)r   r   r_  r   s   ` @r    r=  #FileResponse._set_streaming_content5  s    uf%%"&D71%88)..h8W%%""))(..9;SA"&u-r#   c                   ^ ^ [        TSS5      n[        U[        5      (       a  UOSn[        TS5      =(       a(    [        TS5      (       + =(       d    TR	                  5       n[        TS5      (       Ga  U(       ac  TR                  5       nTR                  S[        R                  5        TR                  5       U-
  T R                  S'   TR                  U5        GO[        TS5      (       a9  TR                  5       R                  TR                  5       -
  T R                  S'   O[        R                  R                  U5      (       a=  [        R                  R                  U5      TR                  5       -
  T R                  S'   OeU(       a^  [!        [#        UU 4S	 jS5      5      T R                  S'   TR                  [%        T R                  S   5      * [        R                  5        [        R                  R'                  T R(                  =(       d    U5      nT R*                  (       a^  U(       aH  [,        R.                  " U5      u  pVS
SSSSS.R1                  Xe5      nU=(       d    ST R                  S'   OST R                  S'   [3        T R4                  U5      =n(       a  UT R                  S'   gg)z
Set some common response headers (Content-Length, Content-Type, and
Content-Disposition) based on the `filelike` response content.
namerw   seekr   r   r   zContent-Length	getbufferc                  L   > [        T R                  TR                  5      5      $ r<   )r  r[  r]  r^  s   r    r`  *FileResponse.set_headers.<locals>.<lambda>[  s    St!?@r#   zapplication/x-brotlizapplication/x-bzipzapplication/x-compresszapplication/gzipzapplication/x-xz)brbzip2compressgzipxzzapplication/octet-streamr^   zContent-DispositionN)getattrr,   r-   r  r   r   rg  ioSEEK_ENDr`   rh  nbytesosr   existsgetsizesumr  rg   basenamerV  rX  	mimetypes
guess_typero   r   rU  )r   r_  rV  r   initial_positionrk   encodingcontent_dispositions   ``      r    rc  FileResponse.set_headersA  s4   
 8VR0)(C888b8V, 
*--D1B1B1D 	 8V$$#+==? a-19CS1S-../;//&&(//(--/A -. ))GGOOH-? -. -0@!D.DLL)* MM3t||,<=>>L77##DMM$=X>)))2)=)=h)G& 11 8.,  #h-  !>$> ^, 0J^,"<#
 
 
 3FDLL./
r#   )rX  rU  rb  rV  )rP   rQ   rR   rS   r   r]  r!   r=  rc  rT   r$  r%  s   @r    rT  rT  &  s/     J,1B * *
.4F 4Fr#   rT  c                   L   ^  \ rS rSr/ SQrSU 4S jjr\" S 5      rS rSr	U =r
$ )HttpResponseRedirectBaseix  )httphttpsftpc                 r  > [         TU ]  " U0 UD6  [        U5      U S'   [        U5      n[	        U5      [
        :  a  [        S[
         S35      e[        U5      nU(       a  U R                  U l	        UR                  (       a3  UR                  U R                  ;  a  [        SUR                  -  5      eg g )NLocationzUnsafe redirect exceeding z charactersz)Unsafe redirect to URL with protocol '%s')r   r!   r   r-   r  r   r   r   status_code_preserve_requestrh   schemeallowed_schemes)r   redirect_topreserve_requestr   r   redirect_to_strparsedr   s          r    r!   !HttpResponseRedirectBase.__init__{  s    $)&)%k2Zk*"99$,-D,E[Q  /*#@@D==V]]$2F2FF$;fmmK  G=r#   c                     U S   $ )Nr  rL   rp   s    r    r`  !HttpResponseRedirectBase.<lambda>  s	    Z 0r#   c                 z    SU R                   R                  U R                  U R                  U R                  S.-  $ )NzD<%(cls)s status_code=%(status_code)d%(content_type)s, url="%(url)s">)r   rh   rk   url)r   rP   rh   r   r  rp   s    r    r   !HttpResponseRedirectBase.__repr__  s:    R~~..#// $ ; ;xx		
r#   )rh   rO   )rP   rQ   rR   rS   r  r!   r   r  r   rT   r$  r%  s   @r    r  r  x  s$    .O  0
1C	
 	
r#   r  c                       \ rS rSrSrSrSrg)HttpResponseRedirecti  i.  i3  rL   NrP   rQ   rR   rS   rh   r  rT   rL   r#   r    r  r        K#& r#   r  c                       \ rS rSrSrSrSrg)HttpResponsePermanentRedirecti  i-  i4  rL   Nr  rL   r#   r    r  r    r  r#   r  c                   d   ^  \ rS rSrSrU 4S jr\R                  R                  S 5       rSr	U =r
$ )HttpResponseNotModifiedi  i0  c                 ,   > [         TU ]  " U0 UD6  U S	 g )Nzcontent-type)r   r!   )r   r   r   r   s      r    r!    HttpResponseNotModified.__init__  s    $)&) r#   c                 6    U(       a  [        S5      e/ U l        g )Nz7You cannot set content to a 304 (Not Modified) response)r/  r  rt   s     r    r   HttpResponseNotModified.content  s     I  r#   )r  )rP   rQ   rR   rS   rh   r!   r   r   r   rT   r$  r%  s   @r    r  r    s-    K!    !r#   r  c                       \ rS rSrSrSrg)HttpResponseBadRequesti  i  rL   NrP   rQ   rR   rS   rh   rT   rL   r#   r    r  r        Kr#   r  c                       \ rS rSrSrSrg)HttpResponseNotFoundi  i  rL   Nr  rL   r#   r    r  r    r  r#   r  c                       \ rS rSrSrSrg)HttpResponseForbiddeni  i  rL   Nr  rL   r#   r    r  r    r  r#   r  c                   2   ^  \ rS rSrSrU 4S jrS rSrU =r$ )HttpResponseNotAllowedi  i  c                 N   > [         TU ]  " U0 UD6  SR                  U5      U S'   g )Nz, Allow)r   r!   r   )r   permitted_methodsr   r   r   s       r    r!   HttpResponseNotAllowed.__init__  s(    $)&)		"34Wr#   c                 l    SU R                   R                  U R                  U R                  U S   S.-  $ )NzC<%(cls)s [%(methods)s] status_code=%(status_code)d%(content_type)s>r  )r   rh   rk   methodsr   rp   s    r    r   HttpResponseNotAllowed.__repr__  s;    T>>**++ 77G}	X
 
 	
r#   rL   )	rP   rQ   rR   rS   rh   r!   r   rT   r$  r%  s   @r    r  r    s    K5
 
r#   r  c                       \ rS rSrSrSrg)HttpResponseGonei  i  rL   Nr  rL   r#   r    r  r    r  r#   r  c                       \ rS rSrSrSrg)HttpResponseServerErrori  i  rL   Nr  rL   r#   r    r  r    r  r#   r  c                       \ rS rSrSrg)Http404i  rL   NrW   rL   r#   r    r  r    rX   r#   r  c                   6   ^  \ rS rSrSr\SS4U 4S jjrSrU =r$ )JsonResponsei  a   
An HTTP response class that consumes data to be serialized to JSON.

:param data: Data to be dumped into json. By default only ``dict`` objects
  are allowed to be passed due to a security flaw before ECMAScript 5. See
  the ``safe`` parameter for more information.
:param encoder: Should be a json encoder class. Defaults to
  ``django.core.serializers.json.DjangoJSONEncoder``.
:param safe: Controls if only ``dict`` objects may be serialized. Defaults
  to ``True``.
:param json_dumps_params: A dictionary of kwargs passed to json.dumps().
TNc                    > U(       a   [        U[        5      (       d  [        S5      eUc  0 nUR                  SS5        [        R
                  " U4SU0UD6n[        TU ]  " SSU0UD6  g )NzTIn order to allow non-dict objects to be serialized set the safe parameter to False.rk   zapplication/jsonr   r   rL   )r,   dictri   rM   jsondumpsr   r!   )r   r   encodersafejson_dumps_paramsr   r   s         r    r!   JsonResponse.__init__  ss     
4..+  $ ".*<=zz$AGA/@A000r#   rL   )	rP   rQ   rR   rS   r   r   r!   rT   r$  r%  s   @r    r  r    s      "1 1r#   r  )Ar   rq  r  ry  rt  rer3   r   rI  email.headerr   http.clientr   urllib.parser   asgiref.syncr   r   django.confr   django.corer	   r
   django.core.exceptionsr   django.core.serializers.jsonr   django.http.cookier   django.utilsr   django.utils.datastructuresr   django.utils.encodingr   django.utils.functionalr   django.utils.httpr   r   r   django.utils.regex_helperr   Irx   r   rb   r1   rZ   r   r'  rT  r  r  r  r  r  r  r  r  r  r  r   r  r  rL   r#   r    <module>r     sX    	   	 	 
    ! ! 5   ( 5 : + ! > , 3 
 7 0'! 
?, ?D	Z 	DT DTNF# FRh0, h0VOF( OFd
| 
B'3 '
'$< '
l  \ < L 
\ 
 | l 	i 	1< 1r#   