
    UHjY                       d Z ddlmZ ddlZddlZddlZddlmZ ddlm	Z	  ee
      j                         j                  d   Zedz  ZdZd	Zd
ZdZdddddZg dZg dZdddgddg dddg dddddgddg dddg ddgZd4dZd5d Zd6d7d!Zd8d"Zd9d#Zd:d$Zd;d%Zd<d&Zd=d'Zd>d(Z d?d)Z!d@d*Z"d@d+Z#dAd,Z$dBd-Z%	 	 	 	 	 	 dC	 	 	 	 	 	 	 	 	 	 	 	 	 dDd.Z&dEd/Z'dEd0Z(dFd1Z)dGd2Z*e+d3k(  r e*        yy)HzMCross-check map1_01a route candidates against strict hotspot review evidence.    )annotationsN)Path)Any   outmap1_01amap2_02dmap1_02b      )topbottomleftright)zstrict-source-coordinateztile-hotspot-confirmationzselected-root-execution-ref)zstrict source coordinateztile hotspot confirmationzselected-root execution refzout/map_exit_candidates.jsonexitCandidatesblockedTargetCandidates)pathfieldsz!out/map_exit_coordinate_refs.json)rows
promotableclassificationz.out/map1_01a_exit_coordinate_variant_scan.json)strictCoordinateEvidenceFound(targetSpawnStrictCoordinateEvidenceFoundpromotionStatusz/out/map1_01a_tile_hotspot_pattern_contrast.json
candidatesmatchesConfirmedLowNibblezdata/transition_reviews.json)sourcetargetstaterecordVaHexzout/event_transitions.json)maptargetseventsc                p    | j                         s|S t        j                  | j                  d            S )Nutf-8encoding)existsjsonloads	read_text)r   fallbacks     L/home/exedev/hwanse/tools/summarize_map1_01a_strict_hotspot_review_matrix.py	load_jsonr.   -   s*    ;;=::dnngn677    c                    i }| D ]8  }t        |j                  d      xs d      }|j                  |d      dz   ||<   : t        t        |j	                                     S )Nr   unknownr   r   )strgetdictsorteditems)r   countsrowr   s       r-   state_countsr9   3   s_    F 1CGGG$1	2

5!,q0u1 v||~&''r/   c                    g }| j                         D ]A  }||j                  d      |k7  r||j                  d      |k7  r1|j                  |       C t        |d       S )Nr   r   c                ~    | j                  d      xs d| j                  d      xs d| j                  d      xs dfS )Nr     xyr3   r8   s    r-   <lambda>zreview_rows.<locals>.<lambda>C   s<    )?)E2swws|GYWY[^[b[bcf[g[mkm(n r/   key)valuesr3   appendr5   )reviewsr   r   r   r8   s        r-   review_rowsrH   ;   sk    D~~ #''("3v"=#''("3v"=C $noor/   c                    | D cg c]/  }|j                  d      |k(  r||j                  d      xs g v r|1 c}S c c}w )Nr!   r"   r@   )r#   r   r   r8   s       r-   event_transition_rowsrJ   F   sG    775>V#37793E3K(L 	  s   4<c                   g }| D ]  }|j                  d      t        k7  r|j                  d      xs g D ]  }|j                  d      xs i }g |j                  d      xs g |j                  d      xs g }t        |vrMt        |j                  d      t              rt        |j                  d      t              s|j                  |         t        |d 	      S )
Nr!   r   sampler   selectorTargetCandidatesr=   r?   c                    t         j                  | j                  d      d      | j                  d      xs i j                  d      xs d| j                  d      xs i j                  d      xs dfS )Nsidec   rL   r?   r>   r=   )
SIDE_ORDERr3   rA   s    r-   rB   z!exit_candidates.<locals>.<lambda>_   sa    NN3776?B/WWX$"))#.4"WWX$"))#.4"
 r/   rC   )r3   SOURCETARGET
isinstanceintrF   r5   )map_exit_candidatesr   map_row	candidaterL   r"   s         r-   exit_candidatesrY   M   s    D& #;;u' %56<" 
	#I]]8,2F-- 9:@b-- :;ArG W$fjjos3:fjjQToWZ;[KK	"
	## 
 r/   c           
     T   | j                  d      xs g D ]  }|j                  d      t        k(  s|j                  d      |j                  d      |j                  d      |j                  d      |j                  d      |j                  d      |j                  d	      d
c S  i S )NtargetHintsr   rO   r=   r?   	standableautoTrigger	sideMatchprojectionDelta)rO   r=   r?   r\   r]   r^   r_   )r3   rS   )rX   hints     r-   first_target_hintra   g   s    m,2 
88H'(XXc]XXc]!XXk2#xx6!XXk2#'88,=#> 
 Ir/   c                f    | j                  d      | j                  d      | j                  d      fS )NrO   r=   r?   r@   rA   s    r-   coordinate_ref_keyrc   v   s'    GGFOSWWS\3773<88r/   c                    i }| j                  d      xs g D ]B  }|j                  d      t        k(  s|j                  d      t        k(  s5||t        |      <   D |S )Nr   r   r   )r3   rR   rS   rc   )coordinate_refsr   r8   s      r-   coordinate_refs_by_candidaterf   z   s^    D""6*0b 0778&3778+<+F,/D#C()0 Kr/   c                    i }| j                  d      xs g D ]L  }|j                  d      xs i }|||j                  d      |j                  d      |j                  d      f<   N |S )NcandidateSummariestilerO   r=   r?   r@   )variant_scanr   r8   ri   s       r-   variant_summaries_by_candidaterk      sk    D 45; Dwwv$"@Ccggfotxx}dhhsm<=D Kr/   c                    i }| j                  d      xs g D ]7  }|||j                  d      |j                  d      |j                  d      f<   9 |S )NcurrentRowsrO   r=   r?   r@   )tile_patternr   r8   s      r-   tile_rows_by_candidatero      sV    D.4" B>Acggfoswws|SWWS\:;BKr/   c                L    | j                  |      }t        |t              r|S dS )Nr   )r3   rT   rU   )scanrD   values      r-   
scan_countrs      s#    HHSMEuc*511r/   c           	     b   | s
ddddddi dS | j                  d      xs i }|j                  d      xs i }|j                  d      xs i }| j                  d      | j                  d	      d
u t        |d      t        |d      t        |d      t        |d      | j                  d      xs i dS )NmissingFr   )statusr   
xyHitCountxyAlignedHitCount
yxHitCountyxAlignedHitCountsceneEvidencepackedScansxyyxrv   r   TtotalalignedTotalr{   )r3   rs   )r8   scansr}   r~   s       r-   compact_coordinate_refr      s    !"!"
 	
 GGM"(bE	4	BB	4	BB''(#ggl+t3 W-'N; W-'N;17R r/   c                j   | sddddddddddd
S | j                  d      | j                  d      | j                  d      | j                  d      | j                  d      | j                  d	      | j                  d
      | j                  d      | j                  d      | j                  d      du d
S )Nr   F)
interestingHitCountcurrentRootHitCountcharacterDescriptorHitCountspanBoundHitCountspanBoundCurrentRootHitCountspanSequenceHitCountxyRowSequenceHitCountyxAxisSequenceHitCountyxOpcodeSequenceHitCountr   r   r   r   r   r   r   r   r   r   r   Tr@   rA   s    r-   compact_variantr      s    #$#$+,!",-$%%&&'()-2
 	
  #ww'<="ww'<='*ww/L'M WW%89(+0N(O #(> ?!$)@!A"%''*B"C$'GG,F$G),1P)QUY)Y r/   c                   | sd d dd ddS | j                  d      xs i }| j                  d      xs i }|j                  d      }|j                  d      |||v |j                  d      |j                  d      |j                  d	      |j                  d
      |j                  d      |j                  d      d| j                  dd      dS )NFr   )sourceOriginalStandablesourceLayer1LowNibbleHexr   targetSpawnOriginalStandable"strictTransitionReviewRowsForRoute
sourceTiletargetSpawnlowNibbleHexoriginalStandablerO   r=   r?   inwardMoveAllowed)rO   r=   r?   r   r   r   )r   r   r   r   r   r   r@   )r8   confirmed_low_nibblessource_tiletarget_spawn
low_nibbles        r-   compact_tiler      s    '+(,).,023
 	
 '','-2K77=)/RL0J#.??3F#G$.%/3H%H(4(8(89L(M $$V,!!#&!!#&(,,^<!-!1!12E!F
 /2gg6Z\].^ r/   c                   g }| d   dk(  r|j                  d       | d   dk(  r|j                  d       | d   d   dur|j                  d	       | d
   d   dur|j                  d       | d   d   du r|j                  d       |S )NrouteReviewRowCountr   z+no map1_01a->map2_02d transition-review roweventTransitionCountz#no strict map1_01a event transitioncoordinateRefr   Tz"coordinate refs are non-promotablevariantScanr   z9variant coordinate scan found no strict source coordinatetileEvidencer   z5tile signature matches only as geometry/tile evidence)rF   )rX   reasonss     r-   block_reasonsr      s    G&'1,DE'(A-<=!,/t;;< ?@LRS !<=ENONr/   c                v	   | | nt        t        dz  g       } ||nt        t        dz  i       }||nt        t        dz  i       }||nt        t        dz  i       }||nt        t        dz  dz  i       }||nt        t        dz  g       }t        |t        t
              }t        |t        d       }t        |t        t              }|D 	cg c]  }	|	j                  d      d	k(  s|	 }
}	|j                  d
      xs g D 	ch c]:  }	|	j                  d      d	k(  r$|	j                  d      xs i j                  d      < }}	|j                  d        t        |      }t        |      }t        |      }t        |t        t
              }t        |t        t              }g }t        |       D ]=  }|j                  d      xs i }|j                  d      |j                  d      |j                  d      f}|j                  d      |j                  d      |j                  d      d|j                  d      xs i |j                  d      |j                  d      t        |      t!        |      t!        |      t#        |j                  |            t%        |j                  |            t'        |j                  |      |      dd}	t)        |	      |	d<   |j+                  |	       @ t-        d |D              }t-        d |D              }t-        d |D              }t-        d |D              }t/        d |D              }d}i dt        dt
        d t         d!t         d"dd#d$d%d$d&t0        d't2        d(t4        d)t!        t4              d*d$d+d$d,t!        |      d-t!        |      d.t!        |      d/t!        |      d0t!        |
      t!        |      t7        |      t9        |D 	ch c]$  }	|	j                  d1      r|	j                  d1      & c}	      |
D 	cg c]E  }	|	j                  d      |	j                  d      |	j                  d2      |	j                  d3      d4G c}	t!        |      |||||||t!        |      k(  xr |xr |d5t2        |d6	S c c}	w c c}	w c c}	w c c}	w )7Nzmap_exit_candidates.jsonzmap_exit_coordinate_refs.jsonz*map1_01a_exit_coordinate_variant_scan.jsonz+map1_01a_tile_hotspot_pattern_contrast.jsondataztransition_reviews.jsonzevent_transitions.jsonr   	confirmedconfirmedRowsri   r   rL   rO   r=   r?   )r=   r?   spanr\   	tileCountblocked)rO   ri   r   geometryStandabler   
targetHintr   r   r   r   r   r   blockReasonsc              3  ,   K   | ]  }|d    dk(    yw)r   r   N .0r8   s     r-   	<genexpr>z build_summary.<locals>.<genexpr>=  s     SS23q8S   c              3  ,   K   | ]  }|d    dk(    yw)r   r   Nr   r   s     r-   r   z build_summary.<locals>.<genexpr>>  s     SS23q8Sr   c              3  0   K   | ]  }|d    d   du  yw)r   r   TNr   r   s     r-   r   z build_summary.<locals>.<genexpr>?  s       jTW_!5l!C4!O j   c              3  0   K   | ]  }|d    d   du  yw)r   r   TNr   r   s     r-   r   z build_summary.<locals>.<genexpr>@  s%      LOM:;4Gr   c              3  4   K   | ]  }|d    d   du rd  yw)r   r   Tr   Nr   r   s     r-   r   z build_summary.<locals>.<genexpr>C  s+      ~:;tC 	
s   a  The review matrix keeps map1_01a->map2_02d blocked: all four geometry candidates have zero route review rows and zero strict event-transition rows. Their coordinate refs and broader variant scans remain non-promotable, while the confirmed review ledger only covers the incoming map1_02b->map1_01a record at 0x00503350. Matching passable tile signatures are therefore diagnostic only, not a strict source hotspot.r   r   confirmedReferenceRoute -> r   
proofFoundFstrictHotspotReviewProofFound failedStrictHotspotReviewGateIdsmissingEvidenceevidenceRefsevidenceRefCountstrictSourceCoordinateFoundtileHotspotConfirmedr   transitionReviewRowCountsourceReviewRowCount!confirmedIncomingEventRecordCountconfirmedIncomingReviewCountr    spawnXspawnY)r=   r?   r   r   )"allCandidatesHaveNoRouteReviewRows"allCandidatesHaveNoStrictEventRowsallCoordinateRefsNonPromotableallVariantScansNonPromotablelowNibbleMatchCounttileSignatureOnly)	incomingReviewCountincomingReviewStateCountsconfirmedIncomingRecordHexesconfirmedIncomingTilescandidateCountcandidateRowscandidateGateSummaryremainingProofs
conclusion)r.   OUTROOTrH   rR   rS   CONFIRMED_SOURCECONFIRMED_TARGETr3   discardrf   rk   ro   rJ   rY   ra   lenr   r   r   r   rF   allsum%FAILED_STRICT_HOTSPOT_REVIEW_GATE_IDS&STRICT_HOTSPOT_REVIEW_MISSING_EVIDENCE#STRICT_HOTSPOT_REVIEW_EVIDENCE_REFSr9   r5   )rV   map_exit_coordinate_refscoordinate_variant_scantile_hotspot_patterntransition_reviewsevent_transitionsroute_reviewssource_reviewsincoming_reviewsr8   confirmed_incomingr   coord_by_candidatevariant_by_candidatetile_by_candidateroute_eventsincoming_eventscandidate_rowsrX   rL   rD   all_no_reviewsall_no_eventsall_coord_refs_blockedall_variants_blockedlow_nibble_matchesr   s                              r-   build_summaryr      sa    2E1P-V_((
W <T;_7en--
f :Q9\5bk::
c 4H3S/Yb;;
Z 0B/M+S\v11
T .?-J)PY&&
Q
   2FFCM !3VTBN"#57GIYZ)9]#SWWW=MQ\=\#]] (++O<B777{* ''&/
R	$	$^	4 
 !!$'56NO9:QR./CD():FFKL+,=?OQabON$%89 #	x(.B}}V$fjjovzz#GMM&) **S/

3@MM&)/R!'K!8"{3+I6#&}#5$'$534F4J4J34OP*+?+C+CC+HI():)>)>s)CEZ[(
 ,C0Nc"%#( SNSSNSNSSM  j[i jj Sa   # 
	 )&)&) 	"&6%7t<L;M#N) 	9	)
 	e) 	() 	+,Q) 	A) 	;) 	C CD) 	&u) 	) 	L 1) 	#C$6) 	N 3)  	,S-A!)" 	',>(?#)$  ##34%12B%C(.'0
ww}% GGM"0
 ) *#
 ''#,SWWS\SWWX=NZ]ZaZabjZkl#
 n-'2@2?.D,@#5!3s>7J!J!o~!obo!
 B Q) )i ^N0

#
s   R''R'?R,7)R1*A
R6c                   | d   }ddd| d    d| d    dd	| d
    dd| d    dd| d    dddj                  | d          ddt        | d          dd| j                  d       dd| d    d| d    d| d    d| d    d| d    d |d!    d"|d#    d$|d%    d&|d'    d| d(   dd)dd*d+g}| d,   D ]&  }|d-   }|d.   }|d/   }|d0   }|d1   }|j                  dj                  g d2|d3    d4|d5    d6|d7    d8|j                  d3      xs d9 d:|j                  d5       d6|j                  d7       d;|j                  d<       d=|j                  d>       d?|d@    d?|d    d?|dA    d?|dB    d|dC    dD|dE    dF|dG    dH|dI    dJ|dK    dL|dM    dN|dO    dP|dQ    d?|d    dR             ) |j	                  ddSddT| dU    dVdj                  | dW         xs dX dYdj                  dZ | d[   D              z   dd\dg	       |j	                  d] | d   D               |j                  d       d^j                  |      S )_Nr   z'# map1_01a Strict Hotspot Review Matrixr<   z
- route: `r   r   r   `z- confirmed reference: `r   z- promotion status: `r   z- proof found: `r   z'- failed strict hotspot review gates: `, r   z- missing evidence count: `r   z- evidence refs: `r   z- route transition reviews: r   z"- route strict event transitions: r   z- confirmed incoming reviews: r   /r   z- candidate count: r   z"- all candidates blocked: reviews=r    events=r    coordRefs=r   
 variants=r   r   z## Candidate Rowszr| side | tile | target spawn | reviews | events | coord ref | xy/yx hits | variant hits | tile evidence | status |z?| --- | --- | --- | ---: | ---: | --- | --- | --- | --- | --- |r   ri   r   r   r   r   z| rO   z | `r=   ,r?   z` | `- z` standable=r\   z auto=r]   z | r   rv   rw   ry   z | interesting=r   z currentRoot=r   z	 spanSeq=r   z strict=r   z | sourceStandable=r   z targetStandable=r   z lowNibbleMatch=r   z |z## Review Ledgerz- incoming review states: r   z- incoming record hexes: r   nonez- confirmed incoming tiles: c           	   3  N   K   | ]  }|d     d|d    d|d    d|d      yw)r=   r   r?   z->r   r   Nr   r   s     r-   r   zmarkdown.<locals>.<genexpr>  s8     {RUs3xj#c(2c(m_Ac(m_M{   #%r   z## Missing Evidencec              3  &   K   | ]	  }d |   yw)z- Nr   r   items     r-   r   zmarkdown.<locals>.<genexpr>  s     D2dVDs   
)joinr   r3   rF   extend)	summarygateslinesr8   ri   r   coordvarianttile_evs	            r-   markdownr  z  s
   *+E1

WX&'tGH,=+>a@
"7+D#E"FaH
(9 :;1=
7<013
1$))GDf<g2h1iijk
%c'2C*D&E%FaH
W[[);<=Q?
&w/I'J&KL
,W5K-L,MN
(1O)P(QQRSZ[pSqRrs
g&6789
,U3W-X,Y Z<=> ?;<=ZNlHmGn	p 	

|I/E2 ' 
6{\"O$m$n%	b 	bb 	bV 	bT 	b$s) 	bA 	bd3i[ 	b 9 	b

6")c*	b*+	b,2JJsO+<	b<=	b>Djjo=N	bO	bK01	b17	b8>

=8Q7R	bRU	b ()*	b +.	b /22H.I-J	b KN	b OTT\oM^	b _b	b \"#		b $%		b &+<%8$9		b:		b
 ##89:	b
 ;H	b
 IPPeHfGg	b
h	b 567	b 8@	b AHHg@h?i	bj	b  ''@AB	bC	b  ''EFG	bH	b &&ABC	b DG	b HKK\G]F^	b _a	b	

$ 
LL


$W-H%I$JK
#DIIg6T.U$V$`Z`#ab
&
)){Y`ayYz{
{	|

  
LLD1B)CDD	LL99Ur/   c                   dj                  d | d   D              }dj                  d | d   D              }dj                  ddd	d
| d    d| d    d| d    dd| d    dt        j                  dj                  | d                dt        | d          d| j	                  d       d	d| d    d| d    d| d   d    d | d   d!    d"| d   d#    d$| d   d%    d&d't        j                  | d(          d)d*|d+d,d-t        j                  t        | d.                d/t        j                  dj                  | d0         xs d1       d)d2| d3g      S )4Nr	  c              3    K   | ]  }d j                  g dt        j                  t        |d                d|d   d    d|d   d    dt        j                  t        |d	   xs i j	                  d      xs d
             d|d	   xs i j	                  d       d|d	   xs i j	                  d       d|d    d|d    dt        j                  t        |d   xs i j	                  d                   d|d   xs i j	                  d       d|d   xs i j	                  d       d|d   xs i j	                  d       d|d   xs i j	                  d       d|d   xs i j	                  d       d|d   xs i j	                  d       dt        j                  t        |d                d         y!w)"r<   z<tr><td>rO   z</td><td><code>ri   r=   r   r?   z</code></td><td><code>r   r  r  z</code></td><td>r   z	</td><td>r   r   rv   rw   r   ry   z</td><td>interesting=r   r   z; currentRoot=r   z	; strict=r   z</td><td>lowNibbleMatch=r   r   r   z
</td></tr>N)r
  htmlescaper2   r3   r   s     r-   r   zhtml_page.<locals>.<genexpr>  s       	 	 	 	{{3s6{+,-	.	[%&	&'	(+FC(8'9	:	 [[c,&7&=2%B%B6%J%Qc!RST	 UV	 #((-
.		 /0		 25\1B1Hb0M0Mc0R/S		T		
 ()*	
+	 )*+	,	 {{3O 4 :??IJKL	M	 O$*//=>	 ?@	 BE_AUA[Y[@`@`am@n?o	p	  .4"99:OPQ	R	 M*0b556KLM	N	 }%+001PQR	S	  #>28b==>YZ[	\	 {{3s#45678	9	 	s   GGr   r<   c              3  N   K   | ]  }d t        j                  |       d  yw)z<li>z</li>N)r  r  r  s     r-   r   zhtml_page.<locals>.<genexpr>  s#     \tDKK-.e4\r  r   zY<!doctype html><meta charset="utf-8"><title>map1_01a Strict Hotspot Review Matrix</title>z<style>body{font-family:system-ui,sans-serif;background:#111;color:#eee;max-width:1200px;margin:24px auto}table{border-collapse:collapse}td,th{border:1px solid #444;padding:6px 8px;vertical-align:top}code{color:#9bd4ff}</style>z.<h1>map1_01a Strict Hotspot Review Matrix</h1>z<p>Route <code>r   z -&gt; r   z </code>; promotion status <code>r   z</code>.</p>z<p>proof found <code>r   z2</code>; failed strict hotspot review gates <code>r   r   z&</code>; missing evidence count <code>z</code>; evidence refs <code>r   z<p>route transition reviews: r   z"; route strict event transitions: r   z"; all candidates blocked: reviews=r   r   r   r   r   r   r   r   z.</p>z<p>r   z</p>z<table><thead><tr><th>side</th><th>tile</th><th>target spawn</th><th>reviews</th><th>events</th><th>coord ref</th><th>xy/yx hits</th><th>variant</th><th>tile</th><th>status</th></tr></thead><tbody>z</tbody></table>z<h2>Review Ledger</h2>z<p>incoming review states: r   z; incoming records: r   r  z<h2>Missing Evidence</h2><ul>z</ul>)r
  r  r  r   r3   r2   )r  r   proofss      r-   	html_pager    sn   99   ?+! D$ WW\IZA[\\F99e 	n8
'(+,GGH4E3FFfgn  pA  hB  gC  CO  	P
 566himitituyu~u~  @G  Hj  @k  vl  jm  in  nT  UX  Y`  ar  Ys  Ut  Tu  uR  SZ  S^  S^  _q  Sr  Rs  s  	@
'0J(K'L M++23I+J*K L++23I+JKo+p*q r012VWX Y345UVW X234RSTTY	[ dkk',/016 	P 
%dkk#g>Y6Z2[&\%] ^![[7;Y3Z)[)e_efggk	m
'xu5'  r/   c                    |j                  dd       |dz  j                  t        j                  | dd      dz   d	       |d
z  j                  t	        |       d	       y )NT)parentsexist_okz*map1_01a_strict_hotspot_review_matrix.jsonFr   )ensure_asciiindentr	  r%   r&   *map1_01a_strict_hotspot_review_matrix.html)mkdir
write_textr)   dumpsr  )r  out_dirs     r-   write_outputsr$    sf    MM$M.;;GG

7q9D@ H  ;;GG	RYHZelGmr/   c                     t        j                         } | j                  dt        t               | j                         }t               }t        ||j                         t        d|j                  dz          y )Nz	--out-dir)typedefaultz&wrote strict hotspot review matrix -> r  )
argparseArgumentParseradd_argumentr   r   
parse_argsr   r$  r#  print)parserargsr  s      r-   mainr/    sc    $$&F
$<DoG'4<<(	24<<Bn3n2o
pqr/   __main__)r   r   r,   r   returnr   )r   
list[dict]r1  zdict[str, int])NN)rG   r4   r   
str | Noner   r3  r1  r2  )r#   r2  r   r2   r   r2   r1  r2  )rV   r2  r1  r2  )rX   r4   r1  r4   )r8   r4   r1  z)tuple[str | None, int | None, int | None])re   r4   r1  5dict[tuple[str | None, int | None, int | None], dict])rj   r4   r1  r4  )rn   r4   r1  r4  )rq   r4   rD   r2   r1  rU   )r8   dict | Noner1  r4   )r8   r5  r   zset[str]r1  r4   )rX   r4   r1  z	list[str])NNNNNN)rV   list[dict] | Noner   r5  r   r5  r   r5  r   r5  r   r6  r1  r4   )r  r4   r1  r2   )r  r4   r#  r   r1  None)r1  r7  ),__doc__
__future__r   r(  r  r)   pathlibr   typingr   __file__resolver  r   r   rR   rS   r   r   rQ   r   r   r   r.   r9   rH   rJ   rY   ra   rc   rf   rk   ro   rs   r   r   r   r   r   r  r  r$  r/  __name__r   r/   r-   <module>r?     s   S "      H~''*
Ul		  !Q;
) %
* & ,8HJc7de0<de@r
 B!<= ,7cd)5QR' # 8(p492
288  .2,0+/(,&*+/A*A)A )A &	A
 $A )A 
AH;|(Vnr zF r/   