
    `j                        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j
        dej                  Zh dZd Zd Zd Zed	k    r ej         e                       dS dS )
    N)Path   u   [^\W_]+(?:['’-][^\W_]+)*>      Yếu tố high-concept$   Hào môn / tổng tài / liên hôn$   Thanh mai trúc mã / nuôi từ bé)   Ngôn tình học đường / thanh xuân0   Cưới trước yêu sau / hôn ước từ bé5   Trà xanh / bạch nguyệt quang / người thứ baA   Thiên kim thật–giả / gia đình phản diện / trở vềc                 b    t          j        t          | z                      d                    S )Nutf-8encoding)jsonloadsPROJECT	read_text)rels    /data/video-pipeline/Chanel-HuyenAnAudio/project/016-Ngay-Chung-Toi-Nop-Don-Ly-Hon-Anh-Dua-Toi-Ban-Hon-Uoc-Khong-Con-Dieu-Khoan-Nao/script/validate-story.pyloadr      s'    :w}///AABBB    c                    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   r   <lambda>zsha.<locals>.<lambda>   s    !&&"9"9 r   r   )hashlibsha256openiterupdate	hexdigest)pathhblockr   s      @r   shar'      s    A	4 A99993?? 	 	EHHUOOOO	               ;;==s   ,A##A'*A'c                     t          d          } t          d          }t          d          }t          d          }t          d          d t          dd          D             }d	 |D             }|r2t          t          j        d
d |D             dd
                     dS d |D             }d                    |          dz   }t          dz                      d          }t          dz                      d          }	t          t          
                    |                    }
|                     d          }g d}d |D             }|t          v ||                    d          cxk    o2|                    d          cxk    o|                    d          k    nc |                    d          du p|                    d          dk    |                     d          du o|                     d          dk                        d          d k    o                    d          d!k    t          fd"|                                D                       ||k    |	|k    t          | d#         d$                   |
cxk    ot          | d#         d%                   k    nc d&|
d'z  cxk    od(k    nc t          |          d)k    d*|d+         d,         v d-}t          |                                          d ||
t#          |
d'z  d.          |t%          t          dz            t%          t          dz            d/d0}t          t          j        |d
                     |d         rd1ndS )2Nscript/story-brief.jsonscript/story-outline.jsonscript/continuity-ledger.jsonscript/family-causal-map.jsonzscript/authority-baseline.jsonc                 2    g | ]}t           d z  d|ddz  S )zstory/chapterszchapter-02dz.txt)r   ).0is     r   
<listcomp>zmain.<locals>.<listcomp>   s2    ZZZ**-C-C-C-C-CCZZZr   r      c                 T    g | ]%}|                                 t          |          &S  )is_filestrr/   ps     r   r1   zmain.<locals>.<listcomp>   s+    ;;;!qyy{{;s1vv;;;r   Fc                     g | ]}d |z   S )zmissing:r4   )r/   xs     r   r1   zmain.<locals>.<listcomp>   s    7X7X7X1
Q7X7X7Xr   )verifiedissues)ensure_asciic                 `    g | ]+}|                     d                               d          ,S )r   r   
)r   rstripr7   s     r   r1   zmain.<locals>.<listcomp>    s4    JJJAQ[['[**11$77JJJr   z

r?   zstory/spoken-narration.txtr   r   zstory/story-canon.txtprimary_story_family)r)   r*   r+   zscript/identity-registry.jsonzscript/reveal-ledger.jsonr,   z#script/workflow-copy-authority.jsonc                 >    i | ]}|t          t          |z            S r4   )r'   r   )r/   r   s     r   
<dictcomp>zmain.<locals>.<dictcomp>'   s&    ===3sC#&&===r   familyr;   Tstatusprelock
lock_state
BRIEF_LOCK
project_id016lockedc              3   x   K   | ]4\  }}                     d i                                |          |k    V  5dS )authority_hashesN)get)r/   kvbaselines      r   	<genexpr>zmain.<locals>.<genexpr>.   sN      (v(v^b^_ab6H")M)M)Q)QRS)T)TXY)Y(v(v(v(v(v(vr   length	min_words	max_words(      <   
   z
chapter-02reveal_boundariesR2)family_closed_taxonomyfamily_exact_bindingfamily_causal_gatebrief_lockedbaseline_projectbaseline_authority_hashes
exact_joincanon_byte_identical
word_rangeduration_rangechapter_countreveal_ledger_consistent   )spokencanon)r;   rI   rD   
word_countduration_minutes_at_231_wpmcheckshashesr   )r   rangeprintr   dumpsjoinr   r   lenWORD_REfindallrN   ALLOWEDallitemsintvaluesroundr'   )briefoutlineledgerfmapchaptersmissingtextsjoinedri   rj   wordsrD   
auth_filescurrentrm   resultrQ   s                   @r   mainr      s   *++E.//G122F/00D455HZZUSTVX\\ZZZH;;x;;;G zdje7X7XPW7X7X7XYYhmnnnoooxyxyJJJJJE[[$&F44???QQF..9979KKE''((EYY-..F q  q  qJ==*===G"(G"3 &$((3I*J*J { { { {gkkZbNcNc { { { {gmgqgqrzg{g{ { { { {"hhz22d:]dhhx>P>PT]>]		*--5a%))L:Q:QUa:a$LL66%?fHLLQYDZDZ^fDf%((v(v(v(vfmfsfsfufu(v(v(v%v%v& %%/+6775eeeeChXcHdDeDeeeee1111r1111X",$0F;N4OPT4U$U F fmmoo..evej  LQ  RW  Z]  R]  _`  La  La  ms  JM  NU  Xt  Nt  Ju  Ju  @C  DK  Ne  De  @f  @f  g  g  h  hF	$*V%
0
0
0111z")11)r   __main__)r   r   resyspathlibr   __file__resolveparentsr   compileUNICODErt   rv   r   r'   r   __name__exitr4   r   r   <module>r      s      				 



      
$x..
 
 
"
"
*1
-
"*2BJ
?
? U  U  UC C C  "* "* "*H zCHTTVV r   