+
    Y»j½%  ã                   óÈ   € R t ^ RIHt ^ RIt^ RIt^ RIHt ^ RIHtH	t	 ^RI
Ht ^RIHt R^R^R	^R
^
R^R^/t]P                   ! R4      tR tR tR tR tR tR tRR ltR# )z=Dice rolling and SVG assembly, ported from roll_dice_svg.php.)ÚCounterN)Útransaction)ÚFÚQ)Úsvg_data)ÚDieFaceStatÚd4Úd6Úd8Úd10Úd12Úd20z^[0-9A-Fa-f]{6}$c                óˆ  € \        V 4      pV'       g   R# \        P                  ! 4       ;_uu_ 4        \        P                  P                  V UUu. uF  w  r#\        W#R7      NK  	  uppRR7       \        4       pV F  w  r#V\        W#R7      ,          pK  	  \        \        P                  P                  V4      4      pV F6  p\        R4      WP                  VP                  3,          ,           Vn        K8  	  \        P                  P                  VR.4       RRR4       R# u uppi   + '       g   i     R# ; i)zEincrements: iterable of (dice_type, face) tuples, one per die rolled.N)Ú	dice_typeÚfaceT)Úignore_conflictsÚ
ever_count)r   r   Úatomicr   ÚobjectsÚbulk_creater   ÚlistÚfilterr   r   r   r   Úbulk_update)Ú
incrementsÚcountsr   r   ÚfiltersÚrowsÚrows   &      Ú3/var/www/darrelraines.com/django_app/dice/engine.pyÚincrement_everr      sþ   € ä�ZÓ €FßÙä	×	Ò	×	Õ	Ü×Ñ×'Ñ'á$*ô,Ù$*‘�ô  9×8Ù$*ò,à!ð 	(ô 	
ô “#ˆÛ%‰OˆIØ”q 9Ô8Õ8ŠGñ  &ä”K×'Ñ'×.Ñ.¨wÓ7Ó8ˆÛˆCÜ˜|›_ØŸ™ s§x¡xÐ0Õ1õ2ˆCŽNñ ô 	×Ñ×'Ñ'¨¨|¨nÔ=÷ 
Ñ	ùó,÷ 
×	Ð	ús   ³D0ÁD*Á)B7D0Ä*D0Ä0E	c                 óÒ  € \         P                  4        U UUu/ uF3  w  rT \        ^V^,           4       Uu/ uF  p\        V4      ^ bK  	  upbK5  	  ppp p\        P
                  P                  4        Fc  p\        VP                  4      pVP                  V9   g   K+  W#VP                  ,          9   g   KD  VP                  W4P                  ,          V&   Ke  	  V# u upi u uppp i )zDReturns {dice_type: {face: ever_count}}, zero-filled for every face.)
Ú
DICE_SIDESÚitemsÚrangeÚstrr   r   Úallr   r   r   )r   Úsidesr   Ústatsr   s        r   Ú
ever_statsr(   (   sÂ   € ô !+× 0Ñ 0Ô 2õá 2ÑˆIð 	¬U°1°e¸aµiÔ-@ÓAÑ-@ T”C˜“I˜q’LÑ-@ÑAÒAÙ 2ð 
ò ô ×"Ñ"×&Ñ&Ö(ˆÜ�3—8‘8‹}ˆØ�=‰=˜EÖ! d°C·M±MÕ.BÖ&BØ),¯©ˆE—-‘-Õ  Ó&ñ )ð €Lùò Bùôs   ™C"¶CÁC"ÃC"c                 óð   € \        \        P                  ! \        P                  T ;'       g    R \        P
                  4      4      pV'       g   R.# V Uu. uF  q"P                  R 4      NK  	  up# u upi )Ú )Ú0r	   Únumrr*   r*   r*   )r   ÚreÚfinditerÚdataÚ	DIE_REGEXÚ
IGNORECASEÚgroups)ÚdshortÚmatchesÚms   &  r   Úparse_dshortr6   5   sQ   € Ü”2—;’;œtŸ~™~¨v¯|¨|¸¼R¿]¹]ÓKÓL€GßØ/Ð0Ð0Ù")Ó*¡'˜Q�H‰H�RŽL¡'Ñ*Ð*ùÒ*s   ÁA3c                 óX   € \         P                  ! ^\        P                  V ^4      4      # )é   )ÚrandomÚrandintr!   Úget)Údicetypes   &r   Úroll_dier=   <   s   € Ü�>Š>˜!œZŸ^™^¨H°aÓ8Ó9Ð9ó    c                 ó†   € V R 8X  d   R# V R8X  d   R# \         P                  T ;'       g    R4      '       d
   RV ,           # V# )Úblackú#000000Úwhiteú#FFFFFFr*   Ú#)ÚHEX_REÚmatch)ÚvalueÚfallbacks   &&r   Úresolve_colorrI   @   s<   € Ø�ÔÙØ�ÔÙÜ‡|�|�E—K�K˜R× Ò Ø�U�{ÐØ€Or>   c                óŽ
  € RpRpRp	Tp
VR8X  dP   \         P                  p\         P                  V\        V4      ,          ,          pVR,          pW² R2,          pRpEM¦VR8X  dP   \         P                  p\         P                  V\        V4      ,          ,          pVR,          pW² R2,          pRpEMPVR	8X  dN   \         P
                  p\         P                  V\        V4      ,          ,          pVR,          pVR
,          pRpEMüVR8X  dP   \         P                  p\         P                  V\        V4      ,          ,          pVR,          pW² R2,          pRpEM¦VR8X  dW   \         P                  p\         P                  V\        V4      ,          ,          pVR,          pVR,          pVR
,          pRpEMIVR8X  dW   \         P                  p\         P                  V\        V4      ,          ,          pVR,          pVR,          pVR
,          pRpEMìVR8X  dW   \         P                  p\         P                  V\        V4      ,          ,          pVR,          pVR,          pVR
,          pRpEM�VR8X  dy   \         P                  R,          p\         P                  \         P                  \        V4      ,          ,          pV\        V4      ,          p
RpRp	VR,          pVR
,          pRpEMVR8X  dP   \         P                  p\         P                  V\        V4      ,          ,          pVR,          pW² R2,          pRpEMºVR8X  du   \         P                  \         P                  \        V4      ,          ,          p\         P                  V\        V4      ,          ,          pVR,          pW² R2,          pRpEM?VR8X  dM   \         P                  p\         P                  V\        V4      ,          ,          pVR,          pVR
,          pRpMìVR8X  d9   \         P                  \         P                   \        V4      ,          ,          pRpM­VR8X  dO   \         P"                  p\         P                  V\        V4      ,          ,          pVR,          pW² R2,          pRpMX\         P                  R,          pV R/9   d   RRRrÙpM4V R8X  d   RRRrÙpV^
8X  d   ^ MTp
MV R8X  d   RR R!rÙpMV R"8X  d   R#R$RrÙpMRp\         P$                  \         P&                  V,          ,          pR%VR&VR'VR(VR)VR*VR+VR,VR-V	R.V
/
# )0z‡Port of the PHP $diceface switch. `position` is this die's 1-based
index within its dshort group (only meaningful for the 'pdrt' face).z
sans-serifÚ525pxÚ278ÚrfdwÚ	die_colorÚ_colorÚSSÚrfdgÚrfdbÚ	pip_colorÚrfdpÚdddrÚ	out_colorÚSRÚdddbÚdddwÚpdrtr,   zPNew Century Schoolbook, Century Schoolbook, Century Schoolbook L, Georgia, serifÚ258ÚmemrÚdldsÚquidÚpipsÚcpipÚ350pxÚ338ÚTSr   ÚKSr   Ú298ÚPSr   Ú250pxÚ378ÚpipÚdie_backÚdieshapeÚdiecolorÚoutcolorÚpipcolorÚfontÚfontsizeÚyÚnumber)r   r
   )r/   ÚRFD_WHITE_DIEÚDIE_PIPr$   ÚRFD_GREY_DIEÚRFD_BLACK_DIEÚRFD_PINK_DIEÚDDDS_RED_DIEÚDDDS_BLUE_DIEÚDDDS_WHITE_DIEÚPAYDIRT_DIEÚPAYDIRT_ORDERÚ
MEMOIR_DIEÚDLD_DIEÚ	DLD_ORDERÚQUIDITY_DIEÚSTANDARD_DIEÚCPIP_DIEÚDIE_BACKÚDIE_BACK_FILE)r<   ÚdicefaceÚrollÚpositionrl   rm   rn   ro   rp   rq   rr   Údieri   rk   Ú	order_dierj   s   &&&&&&&         r   Ú
render_dierŠ   J   s‚  € ð €DØ€HØ€AØ€Fà�6ÔÜ× Ñ ˆÜ�l‰l˜3œs 4›y�>Õ*ˆØ�{Õ#ˆØ˜˜v�Õ'ˆØŠØ	�VÔ	Ü×ÑˆÜ�l‰l˜3œs 4›y�>Õ*ˆØ�{Õ#ˆØ˜˜v�Õ'ˆØŠØ	�VÔ	Ü× Ñ ˆÜ�l‰l˜3œs 4›y�>Õ*ˆØ�{Õ#ˆØ�{Õ#ˆØŠØ	�VÔ	Ü×ÑˆÜ�l‰l˜3œs 4›y�>Õ*ˆØ�{Õ#ˆØ˜˜v�Õ'ˆØŠØ	�VÔ	Ü×ÑˆÜ�l‰l˜3œs 4›y�>Õ*ˆØ�{Õ#ˆØ�{Õ#ˆØ�{Õ#ˆØŠØ	�VÔ	Ü× Ñ ˆÜ�l‰l˜3œs 4›y�>Õ*ˆØ�{Õ#ˆØ�{Õ#ˆØ�{Õ#ˆØŠØ	�VÔ	Ü×!Ñ!ˆÜ�l‰l˜3œs 4›y�>Õ*ˆØ�{Õ#ˆØ�{Õ#ˆØ�{Õ#ˆØŠØ	�VÔ	Ü�l‰l˜6Õ"ˆÜ×$Ñ$¤T×%7Ñ%7¼¸H»Õ%FÕGˆ	Øœ3˜t›9Õ%ˆØaˆØˆØ˜[Õ)ˆØ˜[Õ)ˆØŠØ	�VÔ	Ü�o‰oˆÜ�l‰l˜3œs 4›y�>Õ*ˆØ�{Õ#ˆØ˜˜v�Õ'ˆØŠØ	�VÔ	Ü�l‰lœ4Ÿ>™>¬#¨h«-Õ8Õ9ˆÜ�l‰l˜3œs 4›y�>Õ*ˆØ�{Õ#ˆØ˜˜v�Õ'ˆØŠØ	�VÔ	Ü×ÑˆÜ�l‰l˜3œs 4›y�>Õ*ˆØ�{Õ#ˆØ�{Õ#ˆØ‰Ø	�VÔ	Ü�l‰lœ4×,Ñ,¬S°«YÕ7Õ8ˆØ‰Ø	�VÔ	Ü�m‰mˆÜ�l‰l˜3œs 4›y�>Õ*ˆØ�{Õ#ˆØ˜˜v�Õ'ˆØ‰ä�l‰l˜6Õ"ˆØ�|Ô#Ø$+¨U°D˜ˆH˜Ø˜ÔØ$+¨U°D˜ˆHØ "œ*‘Q¨$‰FØ˜ÔØ$+¨U°D˜ˆH˜Ø˜ÔØ$+¨U°D˜ˆH˜àˆHä�}‰}œT×/Ñ/°Õ9Õ:€Hð 	ˆs�J ¨*°hØ�H˜j¨(°JÀØ��j (¨C°°H¸fðð r>   c                ó¼  € Rp^ p. pRpRp. p\        V 4       EFõ  w  r‰r«rÍ \        V4      pV^8  g   V^8”  d   ^ pV
R8X  d   ^pV
R8X  d   ^pV^ 8X  d   K?  TP                  V V	 V
 2V'       d   RV RV RV 2MR,           4       / p\	        ^V^,           4       EFÏ  pV^,          p\        V	4      pT;'       g    RpT;'       g    RpT;'       g    Rp\        WšVVVVV4      p\        VR,          R	4      p\        VR
,          R4      p\        VR,          R4      p\        P                  VR,          ,           VR,          ,           \        P                  ,           pVP                  RV4      P                  RV4      P                  RV4      P                  RR4      P                  R\        VR,          4      4      P                  R\        VR,          4      4      P                  RVR,          4      P                  RVR,          4      P                  RVR,          4      pRV	 V
 V V V 2pVRVR,           RV R V R!V R"2	,          pVVV&   VP                  V	V34       EKÒ  	  V
R8X  g   EKc  \        \        P                  \        P                  R,          ,          \        V^,          4      ,          4      ^
,          \        \        P                  \        P                  R#,          ,          \        V^,          4      ,          4      ,           \        \        P                  \        P                  R$,          ,          \        V^,          4      ,          4      ,           p\        \        P                  \        P                  R%,          ,          \        V^,          4      ,          4      \        \        P                  \        P                  R&,          ,          \        V^,          4      ,          4      ,           pEKø  	  V'       d   V'       d   \        V4       R'VR(VR)VR*VR+VR,RP!                  V4      /#   \         d    ^ p EL.i ; i)-aR  Roll every dice group in `dshort` and assemble the result HTML.

Returns a dict with roll_html, dnum, increments (list of (dicetype, roll)
for stat tracking), paydirt_off/paydirt_def (None unless a pdrt group was
rolled), and dshort (the input normalized to the dice counts actually
used, e.g. any pdrt/dlds group's count forced to 5/3).
r*   NrZ   r]   rD   rB   r@   rl   rC   rm   rA   rn   rj   ri   z
%diecolor%z
%outcolor%z
%pipcolor%z%fillopacity%Ú1z%desc%rr   z%text%z%font%ro   z
%fontsize%rp   z%y%rq   z<div class='rk   z F die' data-dnum='z' data-die='z'>z</div>
Ú2Ú3Ú4Ú5Ú	roll_htmlÚdnumr   Úpaydirt_offÚpaydirt_defr3   )r6   ÚintÚ
ValueErrorÚappendr#   r=   rŠ   rI   r/   Ú
SVG_HEADERÚSVG_TAILÚreplacer$   r{   r|   r   Újoin)r3   Útrack_statsr‘   r’   r   r“   r”   Únormalized_groupsÚinvalue_strr<   r…   ÚdcolorÚocolorÚpcolorÚinvalueÚ	this_rollr‡   r†   rl   rm   rn   r   ÚsvgÚdie_keys   &&                      r   Úroll_dshortr¦   º   s
  € ð €IØ€DØ€JØ€KØ€KØÐäCOÐPV×CWÑ?ˆ˜x°ð	Ü˜+Ó&ˆGð �QŒ;˜' Bœ,ØˆGØ�vÔØˆGØ�vÔØˆGØ�aŒ<Ùà× Ñ Øˆi˜�z ( Ð,ß17��6�(˜!˜F˜8 1 V HÑ-¸RõAô	
ð
 ˆ	Ü˜a ¨1¥×-ˆHØ�A�IˆDÜ˜HÓ%ˆDØ×(Ð( ˆHØ×(Ð( ˆHØ×(Ð( ˆHä˜h°$Ø&¨°(¸HóFˆDä$ T¨*Õ%5°yÓAˆHÜ$ T¨*Õ%5°yÓAˆHÜ$ T¨*Õ%5°yÓAˆHä—/‘/Ø�ZÕ õ!Ø#'¨¥;õ/Ü15·±õ?ˆCà—;‘;˜|¨XÓ6ß‘w˜|¨XÓ6ß‘w˜|¨XÓ6ß‘w˜°Ó4ß‘w˜x¬¨T°(­^Ó)<Ó=ß‘w˜x¬¨T°(­^Ó)<Ó=ß‘w˜x¨¨f­Ó6ß‘w˜|¨T°*Õ-=Ó>ß‘w˜u d¨3¥iÓ0ð ð ˜(˜ H :¨h¨Z¸°zÀ(ÀÐLˆGØØ˜t JÕ/Ð0Ð0CÀDÀ6ð JØ$˜I R¨ u¨Hð6õˆIð #'ˆI�hÑØ×Ñ˜x¨Ð.×/ñ? .ðB �v×ä”D×$Ñ$¤T×%7Ñ%7¸Õ%<Õ=Ü˜ 1�Ó&õ(ó )Ø+-õ.ä”d×&Ñ&¤t×'9Ñ'9¸#Õ'>Õ?ÄÀIÈaÅLÓ@QÕRÓSõTô ”d×&Ñ&¤t×'9Ñ'9¸#Õ'>Õ?ÄÀIÈaÅLÓ@QÕRÓSõTð ô ”D×$Ñ$¤T×%7Ñ%7¸Õ%<Õ=Ü˜ 1�Ó&õ(ó )ä”d×&Ñ&¤t×'9Ñ'9¸#Õ'>Õ?ÄÀIÈaÅLÓ@QÕRÓSõTó ñy DX÷D —kÜ�zÔ"ð 	�YØ�Ø�jØ�{Ø�{Ø�"—'‘'Ð+Ó,ðð øôE ô 	Ø‹Gð	ús   ¡Q
Ñ
QÑQ)T)Ú__doc__Úcollectionsr   r9   r-   Ú	django.dbr   Údjango.db.modelsr   r   r*   r   r/   Úmodelsr   r!   ÚcompilerE   r   r(   r6   r=   rI   rŠ   r¦   © r>   r   Ú<module>r®      sp   ðÙ CÝ Û Û 	å !ß !å Ý à�A�t˜Q  a¨°°E¸2¸uÀbÐI€
à	�ŠÐ'Ó	(€ò>ò.
ò+ò:òòmö`[r>   