
    7q]j(              
         d dl mZ d dlZd dlZ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
  e
e                                          j        d         Zedz  Zd Zd Zd Zd	 Zed
k    rv ej         e                       dS # e$ rTZ e ej        dd ee          j         de dd          ej                    ej        d           Y dZ[dS dZ[ww xY wdS )    )annotationsN)Path   zscript/project-manifest.jsonc                   t          j                    }|                     d          5 t          fdd          D ]}|                    |           	 d d d            n# 1 swxY w Y   |                                S )Nrbc                 .                          d          S )Ni   )read)fs   script/validate-candidate.py<lambda>zsha.<locals>.<lambda>	   s    qvvk**     r   )hashlibsha256openiterupdate	hexdigest)phbr
   s      @r   shar      s    
>ffTll <a****3//;;a;< < < < < < < < < < < < < < <	s   ,A##A'*A'c                p   |                      di                                |          }|st          d|           t          |                                          rt          |          n	t          |z  }|                                                    t                                                     |S )Nactive_pathszmissing active_paths.)getRuntimeErrorr   is_absoluteROOTresolverelative_to)mkvr   s       r   r   r      s    55""	98Q8899
91gg!!##/4777a		0G0G0W0W0W_`X`r   c                   | j                             dd           t          j        |dd          dz                                   }t          j        | j         d| j        z   dz             \  }}	 t          j	        |d	          5 }|
                    |           |                                 t          j        |                                           d d d            n# 1 swxY w Y   t          j        ||            t          j                            |          rt          j        |           d S d S # t          j                            |          rt          j        |           w w xY w)
NT)parentsexist_okF   )ensure_asciiindent
.)dirprefixwb)parentmkdirjsondumpsencodetempfilemkstempnameosfdopenwriteflushfsyncfilenoreplacepathexistsunlink)r   odfdnr
   s         r   atomicrD      sy   d+++tz!VW/X/X/XY]/].e.e.g.gAmum}  CD  CK  SV  WX  W]  S]  ^a  Sa  nb  nb  nbhlhjkl$	yDHQqwwqzzz!'')))BHQXXZZ4H4H4HHHHHHHHHHHHHHHH*Qq///W^^A#ry|||||##RW^^A#ry||||#s1   3D; AC$D; $C((D; +C(,D; ;6E1c                    t          j        t                                                    } t	          | d          }t	          | d          }t	          | d          }t          j        |                                          }|                                }|                    dd          t          |          }t          	                                          }|
                    d          dk    s|
                    d          d	urt          d
          |
                    d          |k    oR|
                    d|
                    d                    t          |          k    o|
                    d          |k    }                                }	t          t          j        d                    t          t          j        d                    t!          d |	D                       t          t          j        d                    t          t          j        dt          j                            d}
g d}fd|D             }|g dz   D ]}                    |d          fddD             }ddgddgdd gd!d"gd#d$gd%d&gd'd(gd)d*gd+d,gd-	}fd.|                                D             }d/ t          j	        d0          D             }g }d1}|D ]R}t          |	                                          }|r||z   d2k    r n#|                    |           ||z  }|d3k    r nSd                    |                                          d3|cxk    od2k    nc d4v d5v d6v d7v d)v od*v t!          fd8d9D                        d:}g d;}fd<|D             }|d=|cxk    od>k    nc t!          |
                                           t1          d? |                                D                       t1          d@ |                                D                       t1          |                                          t1          |                                          | t          dA t          j	        d0          D                       d3k    dB	}t1          |                                          }i d|rdndCdD|dEt3          |          d|dt          |          dF|dt3          |          dGt          |          dHdI |                                D             dJ|
dK|dL|dM|dN|dO|dPdQ |                                D             dRt4          j                            t4          j        j                                                  }t?          ||           tA          t          j!        |d         ||||dP         t3          |          dSdTU                     |rd1ndVS )WN	candidateproducer_close_receiptcandidate_receiptzutf-8strictstatus	completedwriter_closedTzproducer is not closedcandidate_sha256bytes
byte_count
word_countz(?m)^\s*#{1,6}\s+uA   (?mi)^\s*(?:chương|phần|cảnh|scene|act)(?:\s+\d+|\s*[:.\-])c              3  B   K   | ]}|                                 d v V  dS )>   ***---===Nstrip).0xs     r   	<genexpr>zmain.<locals>.<genexpr>   s0      IIa&99IIIIIIr   uS   (?mi)^\s*[\{\[]|\b(?:TODO|TBD|PLACEHOLDER|ghi chú sản xuất|candidate_sha256)\bu>   Gác Mái Audio|đăng ký kênh|like video|like và subscribe)markdown_headingscene_markerseparator_markerjson_or_metachannel_cta)u   Du Hạ Linhu   Kiều Dịch Thầnu   La Cảnh Duu   Tần Nhược Chiu   Phó Minh Triếtu   Kiều Tử Duc                <    i | ]}|                     |          S  )count)rW   rC   texts     r   
<dictcomp>zmain.<locals>.<dictcomp>$   s%    666!a

1666r   )
u	   Hạ Linhu   Dịch Thầnu	   Cảnh Duu   Nhược Chiu   Minh Triếtu   Tử Duu   bác sĩ Duu   kỹ sư Kiềuu   quản lý Lau
   thợ Phó c                    i | ];}|t          t          j        d t          j        |           d                    <S )z(?<!\w)z(?!\w))lenrefindallescape)rW   rC   scrubs     r   rc   zmain.<locals>.<dictcomp>(   sC    {{{q!C
#Bbill#B#B#B5IIJJ{{{r   )Linhu   ThầnChiu   TriếtDuu
   mái kínhu	   mái vòmu
   đàn chimu
   chim yếnu   bảy mươi hai giờu   72 giờu	   cơn bãou   bãou
   hành langu   đường bayu   luồng khíu
   thoát ápu   dây an toànu   dây bảo hộu   đóngu   mởu   khe làm tổ   mùa chim năm sau)	
glass_domeswift_colonyseventy_two_hoursstormflight_corridorairflowsafety_harnesschoice_questionpermanent_nestingc                N    i | ]!\  }}|t          fd |D                       "S )c              3  h   K   | ],}|                                                                  v V  -d S N)casefold)rW   r"   rb   s     r   rY   z"main.<locals>.<dictcomp>.<genexpr>-   s8      CCQZZ\\T]]__4CCCCCCr   )any)rW   r!   valsrb   s      r   rc   zmain.<locals>.<dictcomp>-   s<    ccc$qCCCCdCCCCCcccr   c                ^    g | ]*}|                                 |                                 +S r`   rU   rW   r   s     r   
<listcomp>zmain.<locals>.<listcomp>.   s-    OOO1QWWYYOQWWYYOOOr   z\n\s*\nr      P   u	   hạ linhu   dịch thầnu   kínhchimc              3      K   | ]}|v V  	d S rz   r`   )rW   rX   firsts     r   rY   zmain.<locals>.<genexpr>6   s[        Cw  Cw  ST  DE  IN  DN  Cw  Cw  Cw  Cw  Cw  Cwr   )u   ba tháng saurn   u   quảng trường mở lạiu   bắt đầu hẹn hò)teaser_80_180_words
has_halinghas_dichthan	has_glasshas_bird
has_choiceno_final_outcome)u   Tống Vãn Ninhu   Cố Trạch Xuyênu   Lục Mạn Thanhu   Lâm Tri Viu   Tống Nghi Hòau   Lê An NhiênzMai Thanh Lamc                    g | ]}|v |	S r`   r`   )rW   rX   rb   s     r   r   zmain.<locals>.<listcomp>8   s    
0
0
0a4ii1iiir   i)  i0  c              3  "   K   | ]
}|d k    V  dS r   Nr`   rW   r"   s     r   rY   zmain.<locals>.<genexpr>9   sZ        Z}  Z}  cd  [\  ]^  [^  Z}  Z}  Z}  Z}  Z}  Z}r   c              3  "   K   | ]
}|d k    V  dS r   r`   r   s     r   rY   zmain.<locals>.<genexpr>9   sZ        Px  Px  Z[  QR  TU  QU  Px  Px  Px  Px  Px  Pxr   c                :    g | ]}|                                 |S r`   rU   r   s     r   r   zmain.<locals>.<listcomp>9   sd      L  L  L  ST  uv  u|  u|  u~  u~  L  MN  L  L  Lr   )	producer_close_matchesword_count_10500_12500narration_hygienerequired_castnaming_rulescore_conceptscold_open_contractno_old_project_entitiesparagraphs_presentfailedverifiedcandidate_pathwords_whitespaceproducer_close_sha256checksc                     i | ]\  }}|||d S ))r   valuer`   rW   r!   r"   s      r   rc   zmain.<locals>.<dictcomp>:   sd      TJ  TJ  TJ  tw  tu  vw  UV  cd  mn  Wo  Wo  TJ  TJ  TJr   hygiene_findingsname_countsforbidden_single_name_countsconcept_hits	cold_openold_entity_hitsblockersc                    g | ]	\  }}||
S r`   r`   r   s      r   r   zmain.<locals>.<listcomp>:   sV      Bh  Bh  Bh  IL  IJ  KL  fg  Bh  CD  Bh  Bh  Bhr   
checked_at)rJ   r   wordsrM   r   receiptFr'   r   )"r0   loadsMP	read_textr   
read_bytesdecoder   rf   splitr   r   
splitlinesboolrg   searchr|   Ir<   itemsappendjoinr{   valuesallstrdatetimenowtimezoneutc	isoformatrD   printr1   )r    candclosepoutclosedatachr   close_oklineshygienerequired_namesr   rC   forbidden_callsconceptsr   opening_paragraphsteaser_partsteaser_words	paragraphra   coldold_entitiesold_hitsr   r   rr   rj   rb   s                               @@@r   mainr      sK
   :bllnn71[#9#9dKcAdAd&ipqr  tG  jH  jHehz&""$$%%4??+<+<d$++gV^B_B_Tcfgkclcl`bsvw{  xB  xB  xD  xD  tE  tEmr	IIh$$		/(B(B$(N(NUabzU{U{O{
))&
'
'
+  I		'%))LBYBY0Z0Z\_`d\e\e0e  Ijojsjs  uA  kB  kB  DI  kI")$8>>??bi deijjkkII5IIIIIbi vw{||}}RY`aefhfjkkll
 
 A  A  A6666~666
  h  h  h  h  Qa%%{{{{Tz{{{[)<:U  mE  FP  lQv
<2P]klx\y#$568TZJ[  sB  CW  rXY Y dcccRZR`R`RbRbcccOOD(A(AOOOq,$  YIOO%2l5(,,UUi   u!42ee
xx&&((2222s2222u@Tdsw|d|  JQ  UZ  JZ  fl  pu  fu  CK  OT  CT  Ch  Y_  ch  Yh  @C  Cw  Cw  Cw  Cw  Xv  Cw  Cw  Cw  @w  @w  |w  x  x N  N  N
0
0
0
0l
0
0
0"*E5DWDWDWDWRWDWDWDWDWpst{  uC  uC  uE  uE  qF  qF  mF  WZ  Z}  Z}  hs  hz  hz  h|  h|  Z}  Z}  Z}  W}  W}  MP  Px  Px  _n  _u  _u  _w  _w  Px  Px  Px  Mx  Mx  IL  MY  M`  M`  Mb  Mb  Ic  Ic  y|  }A  }H  }H  }J  }J  yK  yK  jr  fr  HK  L  L  XZ  X`  ak  lp  Xq  Xq  L  L  L  H@  H@  BD  HD  	E  	E
fmmoo

  "o	((+P;;  "o	Q[\d  "o	euvyz~vv  "o	  AS  TV  "o	  W^  _b  cg  _h  _h  "o	  i{  |A  "o	  BZ  [^  _e  [f  [f  "o	  g~  B  CI  J  J  "o	  KS  TJ  TJ  {A  {G  {G  {I  {I  TJ  TJ  TJ  "o	  K]  ^e  "o	  fs  t  "o	  @^  _n  "o	  o}  ~J  "o	  KV  W[  "o	  \m  nv  "o	  wA  Bh  Bh  PV  P\  P\  P^  P^  Bh  Bh  Bh  "o	  iu  v~  vG	  vK	  vK	  L	T	  L	]	  L	a	  vb	  vb	  vl	  vl	  vn	  vn	  "o	qAuTZ!H+RWkmyz  |F  zG  RU  VY  RZ  RZ  ![  ![  in  o  o  o  p  p  p  }E  xL  xy  xy  KL  qLr   __main__r   Fz: )rJ   r   errorr   )file)
__future__r   r   r   r0   r6   rg   sysr3   pathlibr   __file__r   r$   r   r   r   rD   r   __name__exit	Exceptioner   r1   typestderrr`   r   r   <module>r      s   " " " " " " 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5      	T(^^%a(T2P-P"  
a a a$ $ $%L %L %LL ZSXddff  a  a  auuZTZ(eW[W[\]W^W^WgTnTnklTnTn(o(o  ~C  D  D  D  JM  JT  U  U  U  U  V^  VY  V^  _`  Va  Va  Va  Va  Va  Va  Va  Va  Va  a s   (B CA	CC