
    3jU                        S SK r S SKrS SKJrJr  S SKJr  S SKrS SKJ	s  J
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Jr  S S	KJr  S S
KJrJrJrJr  S SKJ r   S SK!J"r"  S SK#J$r%  \RL                  " \'\'" 5       5      r(\RR                  " \RT                  \RT                  \RV                        5      r,\RZ                  \R\                  \R^                  " SS9S\R`                  S\Rb                  4S j5       5       5       r2\RZ                  \R\                  \R^                  " SS9S\RT                  \Rf                     S\RT                  \RT                  \Rh                        S\Rj                  S\Rb                  S\RT                  \RT                  \Rl                        S\Rb                  4S j5       5       5       r7\RZ                  \R^                  " SS9S\RT                  \Rf                     S\RT                  \RT                  \Rh                        S\Rj                  S\Rb                  S\RT                  \RT                  \Rl                        S\Rb                  4S j5       5       r8\RZ                  \R\                  \R^                  " SS9S\RT                  \Rf                     S\RT                  \Rh                     S\Rb                  4S j5       5       5       r9\RZ                  \R^                  " SS9S\RT                  \Rf                     S\RT                  \Rh                     S\Rb                  4S j5       5       r:\RZ                  \R\                  \R^                  " SS9S\RT                  \Rf                     S\Rv                  4S j5       5       5       r< " S S\5      r= " S  S!\5      r>\R~                   " S" S#5      5       r@           S%S$ jrAg)&    N)FlagIntEnum)Path)timeout_info)InputContainer)OutputContainer)pyio_close_custom_gilpyio_close_gil)	err_checkstash_exception)build_container_format)avdict_to_dictavrational_to_fractiondict_to_avdictto_avrational)int64_t)dereference)CaptureFcheckpreturnc                    [        [        R                  " [        R                  [           U 5      5      nUR
                  S:  a  g[        R                     [        R                  " 5       nX!R                  :  a%  [        [        [        S5      S 45         S S S 5        g S S S 5        WUR                  UR
                  -   :  a  gg! , (       d  f       N-= f)Nr   z.Clock has been changed to before timeout start   )r   cythoncastpointerr   timeoutgiltime	monotonic
start_timer   RuntimeError)r   infocurrent_times      K/home/wildlama/miniconda3/lib/python3.13/site-packages/av/container/core.pyinterrupt_cbr'      s     %V[[1Mq%QRD||a 
~~'//)  !QR  
) 
 doo44 
s   AC		
Cspburlflagsoptionsc                 r    [         R                     [        XX#U5      sS S S 5        $ ! , (       d  f       g = fN)r   r   pyav_io_open_gil)r(   r)   r*   r+   r,   s        r&   pyav_io_openr0   9   s!     
s7; 
s   (
6c           	          [         R                  " [        [        U 5      R                  5      nU[         R
                  Lan  [        [        [         R                  " [         R                  [         R                  [        R                        U5      5      UR                  UR                  S9nO0 nUR                  U[         R
                  La  [         R                  " [        U5      OSX65      n[        XuR                  U[        R                   -  S:g  5      nUUR"                  [         R                  " [$        UR&                  R                  5      '   UR&                  US'   g! [(         a    [+        5       s $ f = f)N)encodingerrors r   )r   r   	Containerr   opaqueNULLr   r   libAVDictionarymetadata_encodingmetadata_errorsio_openstrPyIOFilebuffer_sizeAVIO_FLAG_WRITE
open_filesr   	iocontext	Exceptionr   )	r(   r)   r*   r+   r,   	containeroptions_dictfile	pyio_files	            r&   r/   r/   G   s/   !KK	;q>+@+@A	&++%)KKv~~c6F6F'GH'
 #44 00L L  %(%;FKKS!U
 ''%#2E2E*E!)K
	  	V[[)2E2E2L2LMN ##1 !  !s   E&E) )F ?F c                 n    [         R                     [        X5      sS S S 5        $ ! , (       d  f       g = fr.   )r   r   pyav_io_close_gil)r(   r)   s     r&   pyav_io_closerJ   u   s     
 ' 
s   &
4c                    Sn [         R                  " [        [        U 5      R                  5      nUR
                  bp  [         R                  " [        UR                  5      UR
                  ;   a=  [        U5      nUR
                  [         R                  " [        UR                  5      	 U$ [        U5      n U$ ! [         a    [        5         [        R                  n U$ f = fNr   )r   r   r5   r   r6   rA   r   r	   r
   rC   r   r8   AVERROR_UNKNOWN)r(   r)   resultrD   s       r&   rI   rI      s     F%KK	;q>+@+@A	  ,GRYY/93G3GG*2.F $$V[["))%DE M $B'F M	  %$$M	%s   B)B= /B= =$C%$C%ctxc           
         U R                   [        R                  :w  Ga\  [        U R                  5       H  nU R                   U   [        R                  :w  d  M&  U R                   U   R
                  [        R                  :w  aA  [        R                  " [        R                  " U R                   U   R
                  5      5        [        R                  " [        R                  " [        R                  [        R                  " U R                   U   5      5      5        M     [        R                  " [        R                  " [        R                  [        R                  " U R                   5      5      5        SU l        g rL   )chaptersr   r7   rangenb_chaptersmetadatar8   av_dict_freeaddressav_freepr   pp_void)rO   is     r&   _free_chaptersrZ      s    
 ||v{{"s'A||A&++-<<?++v{{:$$V^^CLLO4L4L%MNKKs||A0OP	 ( 	V[[1MNOCO    c                      \ rS rSr% \R
                  rS\S'   \R                  r	S\S'   \R                  rS\S'   \R                  rS\S	'   \R                  rS
\S'   \R                   rS\S'   \R$                  rS\S'   \R(                  rS\S'   \R,                  rS\S'   \R0                  rS\S'   \R4                  rS\S'   \R8                  rS\S'   \R<                  rS\S'   \R@                  r!S\S'   Sr"g) Flags   z?Generate missing pts even if it requires parsing future frames.gen_ptszIgnore index.ign_idxz-Do not block when reading packets from input.	non_blockz1Ignore DTS on frames that contain both DTS & PTS.ign_dtszWDo not infer any values from other values, just return what is stored in the container.	no_fillinzDo not use AVParsers, you also must set AVFMT_FLAG_NOFILLIN as the fill in code works on frames and no parsing -> no frames. Also seeking to frames can not work if parsing to find frame boundaries has been disabled.no_parsez#Do not buffer frames when possible.	no_bufferzDThe caller has supplied a custom AVIOContext, don't avio_close() it.	custom_ioz Discard frames marked corrupted.discard_corruptz#Flush the AVIOContext every packet.flush_packetszWhen muxing, try to avoid writing any random/volatile data to the output. This includes any random IDs, real-time timestamps/dates, muxer version, etc. This flag is mainly intended for testing.bitexactzTTry to interleave outputted packets by dts (using this flag can slow demuxing down).sort_dtsz3Enable fast, but inaccurate seeks for some formats.	fast_seekz0Add bitstream filters as requested by the muxer.auto_bsf N)#__name__
__module____qualname____firstlineno__r8   AVFMT_FLAG_GENPTSr_   __annotations__AVFMT_FLAG_IGNIDXr`   AVFMT_FLAG_NONBLOCKra   AVFMT_FLAG_IGNDTSrb   AVFMT_FLAG_NOFILLINrc   AVFMT_FLAG_NOPARSErd   AVFMT_FLAG_NOBUFFERre   AVFMT_FLAG_CUSTOM_IOrf   AVFMT_FLAG_DISCARD_CORRUPTrg   AVFMT_FLAG_FLUSH_PACKETSrh   AVFMT_FLAG_BITEXACTri   AVFMT_FLAG_SORT_DTSrj   AVFMT_FLAG_FAST_SEEKrk   AVFMT_FLAG_AUTO_BSFrl   __static_attributes__rm   r[   r&   r]   r]      s   QTQfQfGNf"44G_4ADAXAXI>XCFCXCXG@Xkn  lC  lCIh  C kn  kA  kAH  h  A7:7N7NI4NX[XpXpIUp:=:X:XO7X;>;W;WM8W UX  Ul  UlH  R  lgjg~g~Hd~GJG_G_ID_CFCZCZH@Zr[   r]   c                   `   \ rS rSrSr\R                  r\R                  r	\R                  r\R                  r\R                  r\R                   r\R$                  r\R(                  r\R,                  r\R0                  r\R4                  r\R8                  r\R<                  r\R@                  r!\RD                  r#\RH                  r%\RL                  r'\RP                  r)\RT                  r+\RX                  r-\R\                  r/\R`                  r1\Rd                  r3\Rh                  r5\Rl                  r7\Rp                  r9\Rt                  r;\Rx                  r=\R|                  r?\R                  rA\R                  rC\R                  rE\R                  rG\R                  rI\R                  rKSrLg)
AudioCodec   z Enumeration for audio codec IDs.rm   N)Mrn   ro   rp   rq   __doc__r8   AV_CODEC_ID_NONEnoneAV_CODEC_ID_PCM_ALAWpcm_alawAV_CODEC_ID_PCM_BLURAY
pcm_blurayAV_CODEC_ID_PCM_DVDpcm_dvdAV_CODEC_ID_PCM_F16LE	pcm_f16leAV_CODEC_ID_PCM_F24LE	pcm_f24leAV_CODEC_ID_PCM_F32BE	pcm_f32beAV_CODEC_ID_PCM_F32LE	pcm_f32leAV_CODEC_ID_PCM_F64BE	pcm_f64beAV_CODEC_ID_PCM_F64LE	pcm_f64leAV_CODEC_ID_PCM_LXFpcm_lxfAV_CODEC_ID_PCM_MULAW	pcm_mulawAV_CODEC_ID_PCM_S16BE	pcm_s16beAV_CODEC_ID_PCM_S16BE_PLANARpcm_s16be_planarAV_CODEC_ID_PCM_S16LE	pcm_s16leAV_CODEC_ID_PCM_S16LE_PLANARpcm_s16le_planarAV_CODEC_ID_PCM_S24BE	pcm_s24beAV_CODEC_ID_PCM_S24DAUDpcm_s24daudAV_CODEC_ID_PCM_S24LE	pcm_s24leAV_CODEC_ID_PCM_S24LE_PLANARpcm_s24le_planarAV_CODEC_ID_PCM_S32BE	pcm_s32beAV_CODEC_ID_PCM_S32LE	pcm_s32leAV_CODEC_ID_PCM_S32LE_PLANARpcm_s32le_planarAV_CODEC_ID_PCM_S64BE	pcm_s64beAV_CODEC_ID_PCM_S64LE	pcm_s64leAV_CODEC_ID_PCM_S8pcm_s8AV_CODEC_ID_PCM_S8_PLANARpcm_s8_planarAV_CODEC_ID_PCM_U16BE	pcm_u16beAV_CODEC_ID_PCM_U16LE	pcm_u16leAV_CODEC_ID_PCM_U24BE	pcm_u24beAV_CODEC_ID_PCM_U24LE	pcm_u24leAV_CODEC_ID_PCM_U32BE	pcm_u32beAV_CODEC_ID_PCM_U32LE	pcm_u32leAV_CODEC_ID_PCM_U8pcm_u8AV_CODEC_ID_PCM_VIDCpcm_vidcr   rm   r[   r&   r   r      s   *D''H++J%%G))I))I))I))I))I))I%%G))I))I77))I77))I--K))I77))I))I77))I))I##F11M))I))I))I))I))I))I##F''Hr[   r   c                      \ rS rSrS rS rS rS rS rS r	\
R                  \
R                  " SS	S
9S\
R                  S\
R                  4S j5       5       rS r\
R                  S 5       r\
R                  S 5       r\
R                  S 5       r\S 5       r\R*                  S\R.                  4S j5       r\S 5       r\R*                  S\
R                  4S j5       r\S 5       rS rS rSrg)r5      c           	      `   U[         La  [        S5      e[        U [        5      nU(       d   [        U [        5      (       d  [        S5      e[        U[
        5      (       a  X l        O[        [        USS5      5      U l        [        U=(       d    S5      U l	        [        U=(       d    S5      U l
        U=(       d    S Vs/ s H  n[        U5      PM     snU l        Xpl        Xl        Xl        Xl        Xl        Xl        Xl        S nUb*  SU;   a  UR'                  S5      u  nn[)        U5      U l        [,        R.                  " U R                  5      nUnU(       a  U =R0                  S-  sl        U R*                  (       a  U R*                  R2                  O3[4        R6                  " [8        R:                  U[8        R:                  5      nU[8        R:                  :X  a  [=        S5      e[8        R>                     [4        R@                  " [8        RB                  " U RD                  5      U[8        R:                  U5      nS S S 5        U RG                  W5        O[4        RH                  " 5       U l"        U R                  c  U R                   bX  [J        U RD                  RL                  l'        [8        RB                  " U RP                  5      U RD                  RL                  l)        Ub  [        [T        U5      U RD                  l+        U RD                  =RX                  [4        RZ                  -  sl,        [8        R\                  " [8        R^                  U 5      U RD                  l)        0 U l0        [        U[b        5      (       d6  [e        X*U5      U l3        U Rf                  Rh                  U RD                  l5        UbW  [l        U RD                  l        [n        U RD                  l8        U RD                  =RX                  [4        Rr                  -  sl,        U(       Gd'  U R*                  (       a  U R*                  Rt                  O[8        R:                  n[w        U R                  U R                  5      nU Ry                  U R                  5        U R{                  5         [8        R>                     [4        R|                  " [8        RB                  " U RD                  5      UU[8        RB                  " URD                  5      5      nS S S 5        U Ry                  S 5        U RG                  W5        U =R0                  S	-  sl        Uc:  [        U RD                  R                  U RD                  R                  5      U l        g g s  snf ! , (       d  f       GNN= f! , (       d  f       N= f)
Nzcannot construct base Containerz&Container cannot be directly extended.namez<none>rm   :r   z!Could not determine output format   )B_cinit_sentinelr#   
isinstancer   r   r=   r   getattrdictr,   container_optionsstream_optionshwaccelr:   r;   open_timeoutread_timeoutr?   r<   splitContainerFormatformatosfsencode_myflagoptrr8   av_guess_formatr   r7   
ValueErrornogilavformat_alloc_output_context2rV   ptrr   avformat_alloc_contextr'   interrupt_callbackcallbackinterrupt_callback_infor6   r   audio_codec_idr+   rr   r   p_voidrA   
basestringr>   rF   rB   r)   r0   rJ   	io_close2rz   iptr
Dictionaryset_timeoutstart_timeoutavformat_open_inputr   iformatoformat)selfsentinelfile_format_namer,   r   r   r   r:   r;   r?   r   r   r<   	writeablexacodecname_objr   ofmtresifmt	c_optionss                          r&   	__cinit__Container.__cinit__   s     ?*@AA!+D/!B	D.!A!AGHHeS!!IGE68<=DIGMr*!%&7&=2!>0>0D"0DE0D1tAw0DE!2.((&"k!&1&7&7&<#V)+6DK ++dii0& LLAL ;;   ((dFKKH 
 v{{" !DEE88NN488,KK	  NN3 113DH   ,0A0A0M7C++45;^^006++2 !*1*f*E'#/// ++fmmT: %,, Y?DI))--DHHK+DHH!.DHHHHNNc666N '+{{4;;##D"4<<1G1GHIT../ --NN488,dD&..:W  T"NN3LLAL01A1A488CSCSTDK o FD Z s    V AV5AV
V
V-c                     [         R                     [        R                  " U R                  5        S S S 5        g ! , (       d  f       g = fr.   )r   r   r8   avformat_free_contextr   r   s    r&   __dealloc__Container.__dealloc__^  s%    \\%%dhh/ \\s	   !;
A	c                     U $ r.   rm   r  s    r&   	__enter__Container.__enter__b  s    r[   c                 $    U R                  5         g r.   )close)r   exc_typeexc_valexc_tbs       r&   __exit__Container.__exit__e  s    

r[   c                     [         er.   )NotImplementedErrorr  s    r&   r  Container.closeh  s    !!r[   c                 x    SU R                   R                   SU R                  =(       d    U R                  < S3$ )Nz<av. >)	__class__rn   rF   r   r  s    r&   __repr__Container.__repr__k  s0    dnn--.a		0FTYY/IKKr[   Fr   valuer   c                 (    [        XR                  S9$ )N)filename)r   r   r   r  s     r&   r   Container.err_checkn  s     33r[   c           
          U R                  5         [        5        n[        R                  " U R                  SS[        U [        5      5        S S S 5        SR                  S W 5       5      $ ! , (       d  f       N&= f)Nr   r4   c              3   *   #    U  H	  oS    v   M     g7f)r   Nrm   ).0logs     r&   	<genexpr>)Container.dumps_format.<locals>.<genexpr>w  s     .#1vs   )_assert_open
LogCapturer8   av_dump_formatr   r   r   join)r   logss     r&   dumps_formatContainer.dumps_formats  sV    \TtxxB
40QR ww.... \s   2A--
A;c                 N    Uc  SU R                   l        g XR                   l        g )Ng      )r   r   )r   r   s     r&   r   Container.set_timeouty  s!    ?37D((03:((0r[   c                 L    [         R                  " 5       U R                  l        g r.   )r    r!   r   r"   r  s    r&   r   Container.start_timeout  s    26..2B$$/r[   c                 V    U R                   [        R                  :X  a  [        S5      eg )NzContainer is not open)r   r   r7   AssertionErrorr  s    r&   r(  Container._assert_open  s#    88v{{" !899 #r[   c                 N    U R                  5         U R                  R                  $ r.   r(  r   video_codec_idr  s    r&   r8  Container.video_codec_id  s    xx&&&r[   c                 D    U R                  5         XR                  l        g r.   r7  r   s     r&   r8  r9    s    "'r[   c                 N    U R                  5         U R                  R                  $ r.   r(  r   r+   r  s    r&   r+   Container.flags  s    xx~~r[   c                 D    U R                  5         XR                  l        g r.   r<  r   s     r&   r+   r=    s    r[   c                      U R                   S-  $ )Nr   )r   r  s    r&   input_was_openedContainer.input_was_opened  s    ||ar[   c                    U R                  5         / n[        U R                  R                  5       H  nU R                  R                  U   nUR                  UR                  UR                  UR                  [        [        R                  " UR                  5      5      [        UR                  U R                  U R                   5      S.5        M     U$ )N)idstartend	time_baserT   )r(  rR   r   rS   rQ   appendrC  rD  rE  r   r   rV   rF  r   rT   r:   r;   )r   rN   rY   chs       r&   rQ   Container.chapters  s    txx++,A""1%BMM%%XX66!7r||8T!U .T%;%;T=Q=Q!
 - r[   c           
      t   U R                  5         [        U5      n[        R                     [	        U R
                  5        S S S 5        US:X  a1  SU R
                  l        [        R                  U R
                  l        g [        R                  " [        [        R                  " U[        R                  " [        R                  [        R                     5      -  5      5      nU[        R                  :X  a  [!        S5      e[#        U5       GHr  nX   n[        R                  " [        R                  [        R                     [        R                  " [        R                  " [        R                  5      5      5      nU[        R                  :X  a  [!        S5      eUS   Ul        [        R                  " [&        US   5      Ul        [        R                  " [&        US   5      Ul        [-        US   [        R.                  " UR0                  5      5        [        R                  Ul        SU;   aC  [5        [        R.                  " UR2                  5      US   U R6                  U R8                  5        XcU'   GMu     X R
                  l        X0R
                  l        g ! , (       d  f       GNm= f)	Nr   zav_malloc failed for chapterszav_malloc failed for chapterrC  rD  rE  rF  rT   )r(  lenr   r   rZ   r   rS   r7   rQ   r   AVChapterPtrPtrr8   	av_mallocsizeofr   	AVChapterMemoryErrorrR   rC  r   rD  rE  r   rV   rF  rT   r   r:   r;   )r   rQ   countch_arrayrY   entryrH  s          r&   set_chaptersContainer.set_chapters  s   #&x= \\488$  A:#$DHH  &DHH;;MM%&--s}}0M"NNO
 v{{"=>>uAKEs}}-fmmCMM:;B V[[ !"@AA$KBE{{7E'N;BH[[%,7BF%,fnnR\\.JK ++BKU"NN2;;/*%**((	 QK) ,  %$M \s   J((
J7)r?   r   rF   r   r   r<   r:   r;   r   rA   r   r,   r   r   r   N)rn   ro   rp   rq   r  r  r
  r  r  r  r   cfunc	exceptvalintr   r-  r   r   r(  propertyr8  setterr8   	AVCodecIDr+   r@  rQ   rT  r   rm   r[   r&   r5   r5      sD   vUp0"L \\b&4vzz 4fjj 4 ' 4/ \\; ; \\C C \\: : ' ' (CMM ( (   \\6::      &/%r[   r5   c                    Ub/  [        U[        5      (       a  US:X  d  US:X  d  [        SU 35      e[        U [        5      (       a  O)[        U [        5      (       a  U  n OUc  [	        U SS5      nUc  Sn[        U	[
        5      (       a  [        U	5      S:X  d  [        S5      eU	u  pOU	nU	nUR                  S5      (       a  [        [        U UUUUUUUUUUU
5      $ U(       a  [        S5      e[        [        U UUUUSUUUUUU
5      $ )	a!	  open(file, mode='r', **kwargs)

Main entrypoint to opening files/streams.

:param str file: The file to open, which can be either a string or a file-like object.
:param str mode: ``"r"`` for reading and ``"w"`` for writing.
:param str format: Specific format to use. Defaults to autodect.
:param dict options: Options to pass to the container and all streams.
:param dict container_options: Options to pass to the container.
:param list stream_options: Options to pass to each stream.
:param str metadata_encoding: Encoding to use when reading or writing file metadata.
    Defaults to ``"utf-8"``.
:param str metadata_errors: Specifies how to handle encoding errors; behaves like
    ``str.encode`` parameter. Defaults to ``"strict"``.
:param int buffer_size: Size of buffer for Python input/output operations in bytes.
    Honored only when ``file`` is a file-like object. Defaults to 32768 (32k).
:param timeout: How many seconds to wait for data before giving up, as a float, or a
    ``(open timeout, read timeout)`` tuple.
:param callable io_open: Custom I/O callable for opening files/streams.
    This option is intended for formats that need to open additional
    file-like objects to ``file`` using custom I/O.
    The callable signature is ``io_open(url: str, flags: int, options: dict)``, where
    ``url`` is the url to open, ``flags`` is a combination of AVIO_FLAG_* and
    ``options`` is a dictionary of additional options. The callable should return a
    file-like object.
:param HWAccel hwaccel: Optional settings for hardware-accelerated decoding.
:rtype: Container

For devices (via ``libavdevice``), pass the name of the device to ``format``,
e.g.::

    >>> # Open webcam on MacOS.
    >>> av.open('0', format='avfoundation') # doctest: +SKIP

For DASH and custom I/O using ``io_open``, add a protocol prefix to the ``file`` to
prevent the DASH encoder defaulting to the file protocol and using temporary files.
The custom I/O callable can be used to remove the protocol prefix to reveal the actual
name for creating the file-like object. E.g.::

    >>> av.open("customprotocol://manifest.mpd", "w", io_open=custom_io) # doctest: +SKIP

.. seealso:: :ref:`garbage_collection`

More information on using input and output devices is available on the
`FFmpeg website <https://www.ffmpeg.org/ffmpeg-devices.html>`_.
Nrwz%mode must be 'r', 'w', or None, got: moder   z0timeout must be `float` or `tuple[float, float]`zAProvide stream options via Container.add_stream(..., options={}).)r   r=   r   r   r   tuplerK  
startswithr   r   r   )rF   r_  r   r,   r   r   r:   r;   r?   r   r<   r   r   r   s                 r&   openrb    s=   z LZc22ts{dck@GHH$	D$			tVT*|'5!!7|q OPP%,"ls
 	
  O
 	
  r[   )NNNNNzutf-8stricti   NNN)Br   r    enumr   r   pathlibr   r   cython.cimports.libavcimportslibavr8   !cython.cimports.av.container.corer   "cython.cimports.av.container.inputr   #cython.cimports.av.container.outputr   !cython.cimports.av.container.pyior	   r
   cython.cimports.av.errorr   r   cython.cimports.av.formatr   cython.cimports.av.utilsr   r   r   r   cython.cimports.libc.stdintr   cython.operatorr   
av.loggingr   r)  declareobjectr   typedefr   rO  rL  rV  r   rW  r   rX  r'   AVFormatContextAVIOContextp_const_charr9   r0   r/   rJ   rI   voidrZ   r]   r   cclassr5   rb  rm   r[   r&   <module>r{     s   	     # # : = ? S ? <  0 ' ,..2..s}}0M!NO FMM fjj    0 <~~c))*<v~~coo67< 
		< ::	<
 ^^FNN3+;+;<=< ZZ<   < )!~~c))*)!v~~coo67)! 
		)! ::	)!
 ^^FNN3+;+;<=)! ZZ)!  )!X (~~c))*(06s0O(ZZ(   ( ~~c))*06s0OZZ  2 s':':;     [D [ $( $(P ~% ~% ~%F 
vr[   