§
   iƒ]jÿA"+ã            	       ón  — d Z ddlZddlZddlZddlmZmZ dZddddœZd	Z	d
dddd
d
dœZ
ej                             ej                             e¦  «        dddddd¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Zd"d„Zd„ Zd#d„Zd„ Z G d „ d!¦  «        ZdS )$zKWhole-story content contract. Pure Python; shared by authored demos and AI.é    N)Ú
NamedTupleÚTupleÚABCDé
   é   é   )ÚeasyÚmediumÚhardé   éÜ   éŒ   é   éð   )ÚsetupÚquestionÚoptionÚrevealÚendingÚreasonz..Ú	resourcesÚdemoÚstoryc                   ó   — e Zd ZdZdS )ÚContentErrorzOA pack cannot safely be played. Details are diagnostics, not provider payloads.N©Ú__name__Ú
__module__Ú__qualname__Ú__doc__© ó    úe/Users/chudy/Library/Application Support/Kodi/addons/plugin.video.milionar/wcs/games/story/content.pyr   r      s   € € € € € ØYÐYÐYÐYr"   r   c                   ó   — e Zd ZdZdS )ÚUnavailablez7The source explicitly cannot provide the selected plot.Nr   r!   r"   r#   r%   r%      s   € € € € € ØAÐAÐAÐAr"   r%   c                   ó\   — e Zd ZU eed<   eed<   eed<   eedf         ed<   eed<   eed<   dS )	ÚSceneÚchapterr   r   .ÚoptionsÚcorrectr   N)r   r   r   ÚintÚ__annotations__Ústrr   r!   r"   r#   r'   r'      sQ   € € € € € € Ø€L€L�LØ€J€J�JØ€M€M�MØ�3˜�8Œ_ÐÐÑØ€L€L�LØ€K€K�K€K€Kr"   r'   c                   ó>   — e Zd ZU eed<   eedf         ed<   eed<   dS )ÚPackÚ
difficulty.Úscenesr   N)r   r   r   r-   r,   r   r'   r!   r"   r#   r/   r/      s7   € € € € € € Ø€O€O�OØ�%˜�*ÔÐÐÑØ€K€K�K€K€Kr"   r/   Fc                 ól  — t          | t          ¦  «        r|                      ¦   «         s"t          d                     |¦  «        ¦  «        ‚|                      ¦   «         } t          | ¦  «        |k    st          j        d| ¦  «        s
|s*d| v sd| v r"t          d                     |¦  «        ¦  «        ‚| S )Nz{}: missing textz[\x00-\x08\x0b-\x1f]Ú[Ú]z{}: invalid length or markup)Ú
isinstancer-   Ústripr   ÚformatÚlenÚreÚsearch)ÚvalueÚfieldÚlimitÚallow_bracketss       r#   Ú_textr?   %   s«   € Ý�e�SÑ!Ô!ð =¨¯ª©¬ð =ÝÐ-×4Ò4°UÑ;Ô;Ñ<Ô<Ð<Ø�KŠK‰MŒM€EÝ
ˆ5�z„z�EÒÐ�RœYÐ'>ÀÑFÔFÐØð Ø$'¨5 L L°C¸5°L°LÝÐ9×@Ò@ÀÑGÔGÑHÔHÐHØ€Lr"   c                 ót   — d                      |                      ¦   «                              ¦   «         ¦  «        S )Nú )ÚjoinÚcasefoldÚsplit)Útexts    r#   Ú_normalizedrF   /   s(   € Ø�8Š8�D—M’M‘O”O×)Ò)Ñ+Ô+Ñ,Ô,Ð,r"   c                 ó  ‡— |t           vs>t          | t          ¦  «        r)t          |                      d¦  «        ¦  «        t
          urt          d¦  «        ‚| d         dk    rt          d¦  «        ‚|                      d¦  «        dk    r<t          t          |                      d¦  «        dt          d         ¦  «        ¦  «        ‚|                      d¦  «        dk    s|                      d	¦  «        |k    rt          d
¦  «        ‚|                      d¦  «        }t          |t          ¦  «        st          d¦  «        ‚t          |                     d¦  «        ddd¬¦  «        }|                     d¦  «        dvrt          d¦  «        ‚dD ]G}|                     |¦  «        }|�.t          |¦  «        t
          us|dk     rt          d|z   ¦  «        ‚ŒHt          |                     dd¦  «        t          ¦  «        st          d¦  «        ‚|��:t          |¦  «        t          |j        ¦  «        k    rt          d¦  «        ‚|j        dv rdn|j        }|d         |k    rt          d¦  «        ‚t          |                     dd¦  «        ¦  «        t          |j        pd¦  «        k    rt          d ¦  «        ‚dD ]O}t          ||d¦  «        }|d!vr8|                     |¦  «        t          |¦  «        k    rt          d"|z   ¦  «        ‚ŒPd#D ]:}t          ||d¦  «        €'|                     |¦  «        �t          d$|z   ¦  «        ‚Œ;|                      d%¦  «        }	t           |         }
t          |	t           ¦  «        rt#          |	¦  «        |
k    r"t          d&                     |
¦  «        ¦  «        ‚g t'          ¦   «         }}t)          |	¦  «        D �]e\  }}t          |t          ¦  «        st          d'¦  «        ‚||
t*          z  z  dz   }t          |                     d(¦  «        ¦  «        t
          us|d(         |k    rt          d)¦  «        ‚t          |                     d*¦  «        d*t          d*         ¦  «        }t          |                     d+¦  «        d+t          d+         ¦  «        }t          |                     d,¦  «        d,t          d,         ¦  «        }|                     d-¦  «        Št          ‰t          ¦  «        r%t'          ‰¦  «        t'          t,          ¦  «        k    rt          d.¦  «        ‚t/          ˆfd/„t,          D ¦   «         ¦  «        }t#          d0„ |D ¦   «         ¦  «        d1k    rt          d2¦  «        ‚|                     d3¦  «        }|t/          t,          ¦  «        vrt          d4¦  «        ‚t          |¦  «        }||v rt          d5¦  «        ‚|                     |¦  «         |                     t5          ||||t,                               |¦  «        |¦  «        ¦  «         �Œgt          |                      d6¦  «        d6t          d6         ¦  «        }t9          |t/          |¦  «        |¦  «        S )7zOValidate raw JSON completely, then normalize once. Never guess missing answers.Úschema_versionzInvalid pack or difficultyé   zUnsupported schema versionÚstatusÚunavailabler   Úreadyr0   zInvalid status or difficultyÚidentityzMissing identityÚtitlezidentity.titleéÈ   T)r>   Ú
media_type)ÚmovieÚserieszInvalid media type)ÚyearÚseason_numberÚepisode_numberNr   zInvalid identity.Úepisode_titleÚ zInvalid episode titlez<Different work title; identity must echo the requested title)ÚtvÚepisoderR   zDifferent work typezDifferent episode title)rW   NzDifferent identity.)rT   rU   zUnexpected scope.r1   zExpected {} sceneszInvalid scener(   zInvalid chapter sequencer   r   r   r)   zExpected A-D optionsc              3   ó\   •K  — | ]&}t          ‰|         d t          d          ¦  «        V — Œ'dS )r   N)r?   ÚLIMITS)Ú.0Úletterr)   s     €r#   ú	<genexpr>zparse.<locals>.<genexpr>i   s8   øè è € Ð`Ð`Èf•u˜W Vœ_¨h½¸xÔ8HÑIÔIÐ`Ð`Ð`Ð`Ð`Ð`r"   c                 ó,   — h | ]}t          |¦  «        ’ŒS r!   )rF   )r\   r;   s     r#   ú	<setcomp>zparse.<locals>.<setcomp>j   s    € Ð7Ð7Ð7 u•˜EÑ"Ô"Ð7Ð7Ð7r"   é   zDuplicate optionsr*   zInvalid correct letterzDuplicate questionr   )ÚCOUNTSr5   ÚdictÚtypeÚgetr+   r   r%   r?   r[   r-   rF   rN   rP   rV   ÚgetattrÚlistr8   r7   ÚsetÚ	enumerateÚCHAPTERSÚLETTERSÚtupleÚaddÚappendr'   Úindexr/   )Úrawr0   ÚsubjectrM   rN   Úkeyr;   ÚmediaÚexpectedÚitemsÚcountr1   Úseenro   Úitemr(   r   r   r   Úvaluesr*   Ú
normalizedr   r)   s                          @r#   Úparser{   3   s  ø€ à�ÐÐ¥z°#µtÑ'<Ô'<ÐÅÀSÇWÂWÐM]ÑE^ÔE^Ñ@_Ô@_ÕgjÐ@jÐ@jÝÐ7Ñ8Ô8Ð8Ø
ÐÔ Ò!Ð!ÝÐ7Ñ8Ô8Ð8Ø
‡w‚wˆxÑÔ˜MÒ)Ð)Ý�% §¢¨Ñ 1Ô 1°8½VÀHÔ=MÑNÔNÑOÔOÐOØ
‡w‚wˆxÑÔ˜GÒ#Ð# s§w¢w¨|Ñ'<Ô'<À
Ò'JÐ'JÝÐ9Ñ:Ô:Ð:Ø�wŠw�zÑ"Ô"€HÝ�h¥Ñ%Ô%ð /ÝÐ-Ñ.Ô.Ð.Ý�(—,’,˜wÑ'Ô'Ð)9¸3ÈtÐTÑTÔT€EØ‡|‚|�LÑ!Ô!Ð)<Ð<Ð<ÝÐ/Ñ0Ô0Ð0Ø:ð :ð :ˆØ—’˜SÑ!Ô!ˆØÐ¥$ u¡+¤+µSÐ"8Ð"8¸EÀAºI¸IÝÐ2°SÑ8Ñ9Ô9Ð9øÝ�h—l’l ?°BÑ7Ô7½Ñ=Ô=ð 4ÝÐ2Ñ3Ô3Ð3ØÑÝ�uÑÔ¥¨W¬]Ñ!;Ô!;Ò;Ð;ÝÐ]Ñ^Ô^Ð^Ø#Ô.Ð2CÐCÐC��ÈÔI[ˆØ�LÔ! UÒ*Ð*ÝÐ4Ñ5Ô5Ð5Ý�x—|’| O°RÑ8Ô8Ñ9Ô9½[ÈÔI^ÐIdÐbdÑ=eÔ=eÒeÐeÝÐ8Ñ9Ô9Ð9Ø>ð 	@ð 	@ˆCÝ˜w¨¨TÑ2Ô2ˆHØ˜zÐ)Ð)¨h¯lªl¸3Ñ.?Ô.?Å3ÀxÁ=Ä=Ò.PÐ.PÝ"Ð#8¸3Ñ#>Ñ?Ô?Ð?øØ6ð 	>ð 	>ˆCÝ�w  TÑ*Ô*Ð2°x·|²|ÀCÑ7HÔ7HÐ7TÝ"Ð#6¸Ñ#<Ñ=Ô=Ð=øØ�GŠG�HÑÔ€EÝ�:Ô€EÝ�e�TÑ"Ô"ð ?¥c¨%¡j¤j°EÒ&9Ð&9ÝÐ/×6Ò6°uÑ=Ô=Ñ>Ô>Ð>Ø•s‘u”uˆD€FÝ  Ñ'Ô'ð _ñ _‰ˆˆtÝ˜$¥Ñ%Ô%ð 	0Ý˜Ñ/Ô/Ð/Ø˜E¥XÑ-Ñ.°Ñ2ˆÝ�—’˜Ñ#Ô#Ñ$Ô$­CÐ/Ð/°4¸	´?ÀgÒ3MÐ3MÝÐ9Ñ:Ô:Ð:Ý�d—h’h˜wÑ'Ô'¨µ&¸´/ÑBÔBˆÝ˜Ÿš *Ñ-Ô-¨z½6À*Ô;MÑNÔNˆÝ�t—x’x Ñ)Ô)¨8µV¸HÔ5EÑFÔFˆØ—(’(˜9Ñ%Ô%ˆÝ˜'¥4Ñ(Ô(ð 	7­C°©L¬L½CÅ¹L¼LÒ,HÐ,HÝÐ5Ñ6Ô6Ð6ÝÐ`Ð`Ð`Ð`ÕX_Ð`Ñ`Ô`Ñ`Ô`ˆÝÐ7Ð7°Ð7Ñ7Ô7Ñ8Ô8¸AÒ=Ð=ÝÐ2Ñ3Ô3Ð3Ø—(’(˜9Ñ%Ô%ˆØ�%¥™.œ.Ð(Ð(ÝÐ7Ñ8Ô8Ð8Ý  Ñ*Ô*ˆ
Ø˜ÐÐÝÐ3Ñ4Ô4Ð4Ø�Š�ÑÔÐØ�Š•e˜G U¨H°f½g¿mºmÈGÑ>TÔ>TÐV\Ñ]Ô]Ñ^Ô^Ð^Ñ^Ý�3—7’7˜8Ñ$Ô$ hµ°xÔ0@ÑAÔA€FÝ�
�E &™MœM¨6Ñ2Ô2Ð2r"   c                 ó²   ‡ — t          ‰ t          ¦  «        oAt          t          j        d‰ ¦  «        ¦  «        ot          ˆ fd„t          D ¦   «         ¦  «        S )zROnly complete local fixtures are selectable; never replace a missing demo with AI.z
[a-z0-9-]+c           	   3   ó¤   •K  — | ]J}t           j                             t           j                             t          ‰|d z   ¦  «        ¦  «        V — ŒKdS )ú.jsonN)ÚosÚpathÚisfilerB   ÚDEMO_DIR)r\   r0   Údemo_ids     €r#   r^   z!demo_available.<locals>.<genexpr>z   si   øè è € ð [hð [hØR\�Œ�Š•r”w—|’|¥H¨g°zÀGÑ7KÑLÔLÑMÔMð[hð [hð [hð [hð [hð [hr"   )r5   r-   Úboolr9   Ú	fullmatchÚallrb   ©rƒ   s   `r#   Údemo_availablerˆ   x   s}   ø€ å�g�sÑ#Ô#ð h­­R¬\¸-ÈÑ-QÔ-QÑ(RÔ(Rð hÕWZð [hð [hð [hð [hÝ`fð[hñ [hô [hñ Xhô Xhð hr"   c                   ó$   — e Zd ZdZd„ Zd„ Zd„ ZdS )Ú
DemoSourcer   c                 ó   — || _         d S ©Nr‡   )Úselfrƒ   s     r#   Ú__init__zDemoSource.__init__�   s   € ØˆŒˆˆr"   c                 ó<  — |j         €|j        €|j        r|S t          t          j                             t          d¦  «        d¬¦  «        5 }t          j	        |¦  «         
                    | j        i ¦  «        }ddd¦  «         n# 1 swxY w Y    |j        di |¤ŽS )zSStory-only episode metadata; the existing Millionaire subject/catalog stays intact.Nzscopes.jsonúutf-8©Úencodingr!   )rT   rU   rV   Úopenr   r€   rB   r‚   ÚjsonÚloadre   rƒ   Ú_replace)r�   rq   ÚhandleÚscopes       r#   Úscoped_subjectzDemoSource.scoped_subject„   sÐ   € àÔ Ð,°Ô0FÐ0RÐV]ÔVkÐ0RØˆNÝ•"”'—,’,�x¨Ñ7Ô7À'ÐJÑJÔJð 	<ÈfÝ”I˜fÑ%Ô%×)Ò)¨$¬,¸Ñ;Ô;ˆEð	<ð 	<ð 	<ñ 	<ô 	<ð 	<ð 	<ð 	<ð 	<ð 	<ð 	<øøøð 	<ð 	<ð 	<ð 	<àˆwÔÐ(Ð( %Ð(Ð(Ð(s   Á.BÂB
ÂB
c                 ót  — |t           vst          | j        ¦  «        st          d¦  «        ‚t	          t
          j                             t          | j        |dz   ¦  «        d¬¦  «        5 }t          t          j        |¦  «        ||                      |¦  «        ¦  «        cd d d ¦  «         S # 1 swxY w Y   d S )Nz)This offline story has not been authored.r~   r�   r‘   )rb   rˆ   rƒ   r%   r“   r   r€   rB   r‚   r{   r”   r•   r™   )r�   rq   r0   r—   s       r#   ÚpreparezDemoSource.prepareŒ   sô   € Ø�VÐ#Ð#­>¸$¼,Ñ+GÔ+GÐ#ÝÐIÑJÔJÐJÝ•"”'—,’,�x¨¬°zÀGÑ7KÑLÔLÐW^Ð_Ñ_Ô_ð 	VÐciÝ�œ 6Ñ*Ô*¨J¸×8KÒ8KÈGÑ8TÔ8TÑUÔUð	Vð 	Vð 	Vð 	Vñ 	Vô 	Vð 	Vð 	Vð 	Vð 	Vð 	Vð 	Vøøøð 	Vð 	Vð 	Vð 	Vð 	Vð 	Vs   Á*6B-Â-B1Â4B1N)r   r   r   ÚnamerŽ   r™   r›   r!   r"   r#   rŠ   rŠ   ~   sK   € € € € € Ø€Dðð ð ð)ð )ð )ðVð Vð Vð Vð Vr"   rŠ   )FrŒ   )r    r”   r   r9   Útypingr   r   rk   rb   rj   r[   r€   rB   ÚdirnameÚ__file__r‚   Ú
ValueErrorr   r%   r'   r/   r?   rF   r{   rˆ   rŠ   r!   r"   r#   ú<module>r¡      sß  ðØ QÐ QØ €€€Ø 	€	€	€	Ø 	€	€	€	Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $à
€Ø ¨BÐ	/Ð	/€Ø€Ø C°2ÀÐPSÐ_bÐ	cÐ	c€ØŒ7�<Š<˜œŸš¨Ñ1Ô1°4¸¸tÀ[ÐRXÐZaÑbÔb€ðZð Zð Zð Zð Z�:ñ Zô Zð ZðBð Bð Bð Bð B�,ñ Bô Bð Bðð ð ð ð ˆJñ ô ð ðð ð ð ð ˆ:ñ ô ð ðð ð ð ð-ð -ð -ðB3ð B3ð B3ð B3ðJhð hð hðVð Vð Vð Vð Vñ Vô Vð Vð Vð Vr"   