
    ,F[j1                         d dl Z d dlZd dlZd dlZd dlZd dlmZ dZh dZg dZ	g dZ
d Zd Zed	k    r e             dS dS )
    N)Pathgacmai_20260718_091744>      Vũ Minh   Đỗ Thanh Lan   Phạm Gia Khải   Trần Bảo Uyên   Nguyễn Quốc Đạt   Lê Hoài Thư)uj   bãi bồi|thủy lợi|nguồn nước|kiến trúc|trùng tu|bệnh viện|y khoa|dầu khí|xăng dầuuG   radio|băng ghi âm|cassette|ca khúc|bài hát|siêu nhiên|livestreamu[   an toàn thực phẩm|ngộ độc|phá hoại|truy cập trái phép|gian lận kho vận)global_ordinalpart	paragraphscenepov
charactersgoalconflictactioncausal_resultevidence_stateconsent_privacyauthority_limit	end_statec                     t          j        ddt          |                                                                                     S )Nz\s+ )resubstrstriplower)ss    e/data/video-pipeline/GacMaiAudio/project/gacmai_20260718_091744/artifacts/scripts/validate_outline.pynormr"   	   s/    26&SVV\\^^%9%9%;%;<<<    c                     t          t          j                  dk    rt          d          t	          t          j        d                   } |                                 }t          j        |          }t          j        d         }g }|                    d          t          k    r|
                    d           |                    d          |k    r|
                    d           t          |                    dg                     t          k    r|
                    d	           |                    d
          dk    r|
                    d
           |                    dg           }t          |          dk    r|
                    d           g t          |d          D ]\  }}|                    d          |k    r|
                    d|            |                    dg           }t          |          dk    r|
                    d|            t          |d          D ]O\  }	}

                    |
           t          D ]1}||
vs|
|         d dg fv r|
                    d| d|	 d|            2|
                    d          |k    s;|
                    d          |	k    s"|
                    d          |dz
  dz  |	z   k    r|
                    d| d|	            |
                    d          dk    r|
                    d| d|	            t          |
                    dg                     }|                    t                    s|
                    d| d|	            Qt                    dk    r|
                    d           d  D             }|t!          t#          dd!                    k    r|
                    d"           t          j        d|id#$                                          }g }t(          D ]L}t+          j        ||t*          j                  }|r(|
                    |                    d%                     M|rE|
                    d&d'                    t5          t          |                              z              d(D ]t7          j        fd)D                       }d* |                                D             }|rH|
                    d+ dt=          t?          |                                                     z              t                    dk    rAd,                    fd-t#          d.d          D                                                       ndtC          fd/d0D                       s|
                    d1           |sd2nd3t=          |           tE          j#        |          $                                |t          |          t                    |d4}tK          t          j        |d#d5                     |rt          d          d S )6N   z+usage: validate_outline.py FILE CONCEPT_SHA      
project_idsource_concept_sha256concept_shacast
exact_castsole_povr
   parts   
part_countr   zpart_number:beatszbeat_count: zmissing:.:r   r   zordinal:r   zpov:r   zextra_cast:   total_beatsc                 8    g | ]}|                     d           S )r   )get).0bs     r!   
<listcomp>zmain.<locals>.<listcomp>!   s%    ...1quu...r#      global_ordinalsF)ensure_asciir   z
forbidden:,)r   r   r   r   r   r   r   c              3   ^   K   | ]'}t          |                    d                     V  (dS )r2   N)r"   r8   )r9   r:   fields     r!   	<genexpr>zmain.<locals>.<genexpr>+   s7      ==!QUU5__--======r#   c                 *    i | ]\  }}||d k    ||S )r'    )r9   kvs      r!   
<dictcomp>zmain.<locals>.<dictcomp>,   s(    ---sq1-1qr#   	repeated_r   c              3   t   K   | ]2}d D ]-}t          |                             |d                    V  .3dS ))r   r   r   r2   N)r   r8   )r9   irE   r1   s      r!   rB   zmain.<locals>.<genexpr>/   sK      qqQJpqqQU1X\\!B''((qqqqqqqr#      c              3       K   | ]}|v V  	d S )NrD   )r9   xendings     r!   rB   zmain.<locals>.<genexpr>0   s'      kkAAKkkkkkkr#   )u   điều kiệnu   nếuu	   rà soátu   mốcu
   kiểm trau   thanh toánconditional_ending_missingpassedfailed)statussourcesource_sha256concept_sha256r.   r1   errors)r>   indent)&lensysargv
SystemExitr   
read_bytesjsonloadsr8   PROJECTappendsetCAST	enumerateREQ_BEATissubsetlistrangedumpsr   	FORBIDDENr   searchIgroupjoinsortedcollectionsCounteritemsr   maxvaluesanyhashlibsha256	hexdigestprint)prawdexpectedrV   r.   pir   bsqir:   rE   charsordstexthitspatmcbadoutr1   rN   rA   s                        @@@r!   mainr   
   sm   MM1:&STTTS$*S//38A;(VXvEE,  |!<!<!<EE
!""H,,V]]=-I-I-IfR4l ; ; ;EE*'''j(A(A(AuuWRJJNN6==...	%"" F FWR	XXfr&--(;r(;(;<<<	XXgb"WWb[[1R112221oo F Fdb<<??? R RqzzQqTd2b\))&--8P28P8P8P8PQ8P8P*Q*Q*QeeFmmR155--r11QUU;K5L5LrRStUWiXZl5Z5Z[a[h[hi}tvi}i}y{i}i}[~[~[~eeEll$$$V]]3C"3C3Cr3C3C%D%D%D	QUU<##	$	$5
..

Ev}}-D2-D-D-D-DEEEF JJOOFMM-000.....$uQs||

V]]+<===
j'%e444::<<  SIc$rt!t{{1771::@|CHHVCII->->$?$??	@	@	@j D DU====u=====!--aggii---#C+5+++CCJJLL0A0A,B,BB	C	C	C ~A  BG  ~H  ~H  JM  ~M  ~Mqqqq%C..qqqqqwwyyy  SUkkkk!jkkkkk  Xlrlyly  {W  mX  mX  mX%3xx8SVVT[TbcfTgTgTqTqTsTs  FN  WZ  [`  Wa  Wa  jm  ns  jt  jt  ~D  E  Etz#5222333
Ar#   __main__)r]   r   rY   ru   ro   pathlibr   r_   rb   ri   rd   r"   r   __name__rD   r#   r!   <module>r      s    & & & & & & & & & & & & & & & & & & & &       vvv d  d  d	 
v  
v  
v < < <) ) )T Zr#   