
    Dj                       d Z ddlmZ ddlZddlmZ ddlmZ ddlm	Z	m
Z
mZmZ ddlmZ dd	lmZ d
dlmZmZ d
dlmZ d
dlmZmZ  G d de          Zd=dZd>dZg dg dg dg dg dg dg dg dg dg dd
Zd?d Z ed!"           G d# d$                      Ze G d% d&                      Z d@d(Z!dAd.Z"	 dBdCd5Z#dDdEd:Z$ G d; d<          Z%dS )Fzi
Pure renderer for Apple Notes (proto3).

Converts a parsed pb.Note into minimal, readable HTML. No I/O.
    )annotationsN)	dataclass)IntEnum)ListOptionalTuplecast)urlsplit   )	notes_pb2   )AttachmentContextrender_attachment)ExportConfig)AttachmentRefNoteDataSourcec                  2    e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
S )	StyleTyper   r   r      d   e   f   g   N)__name__
__module____qualname__DEFAULTTITLEHEADING
SUBHEADING
MONOSPACEDDOTTED_LISTDASHED_LISTNUMBERED_LISTCHECKBOX     e/home/thesage/.hermes/venv/lib/python3.11/site-packages/pyicloud/services/notes/rendering/renderer.pyr   r      s;        GEGJJKKMHHHr(   r   stOptional[int]returnboolc                b    | t           j        t           j        t           j        t           j        fv S N)r   r#   r$   r%   r&   )r*   s    r)   _is_list_styler0   "   s,    	  r(   urlOptional[str]c                0   | sd S d                     d t          |                                           D                       }|sd S t          |          }|j                                        }|dvrd S |dv r	|j        sd S |dv r|j        s	|j        sd S |S )N c              3  2   K   | ]}|d k    |dk    |V  dS ) Nr'   .0chs     r)   	<genexpr>z$_safe_anchor_href.<locals>.<genexpr>/   s.      TTrsrV||||||TTr(   >   telhttphttpsmailto>   r=   r>   >   r<   r?   )joinstrstripr
   schemecasefoldnetlocpath)r1   	candidatepartsrC   s       r)   _safe_anchor_hrefrI   +   s     tTTSXX^^%5%5TTTTTI tYE\""$$F777t"""5<"t"""EJ"%,"tr(   )z"Comic Sans MS"z"Comic Sans"z"Chalkboard SE"z"Comic Neue"cursive)z"Helvetica Neue"	HelveticaArial
sans-serif)rL   rK   rM   )z"Times New Roman"Timesserif)z"Courier New"Courier	monospace)
ComicSansMSzComic Sans MSHelveticaNeuezHelvetica NeueArialMTrL   TimesNewRomanPSMTzTimes New RomanCourierNewPSMTzCourier NewnamerA   c                L   t                               |           }|rd                    |          S 	 |                     dd          }n# t          $ r | }Y nw xY w|                                 }d}d|v sd|v sd|v rd}nd	|v sd
|v sd|v rd	}nd|v sd|v sd|v rd}d| d| S )Nz, "'rM   monocouriercoderQ   rO   timesgeorgiacomicchalkhandrJ   z", )_FONT_STACKSgetr@   replace	Exceptionlower)rW   stacksaferg   generics        r)   _css_font_stackrk   X   s    T""E  yy||C%%   JJLLEG)u,,%	E		W--e1C1C	E		W--5!t!!!!!s   A
 
AAT)frozenc                      e Zd ZU ded<   ded<   ded<   ded<   ded<   ded<   ded	<   d
ed<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ed"d            Zd#dZd#dZd#d Zd!S )$StyleSigr+   font_weight
underlinedstrikethroughsuperscriptr2   link	color_hexemphasis_stylezOptional[float]font_size_pt	font_name
style_type	alignmentindent_amountblock_quotewriting_directionchecklist_donestart_number	highlightzOptional[bytes]paragraph_uuidrunpb.AttributeRunr,   
'StyleSig'c           
     6   |                      d          r| j        nd }d x}x}x}x}}d }t          | dd           }t          | dd           }	t          | dd           }
t          | dd           }t          | dd           }t          | dd           }|                      d          r| j        nd }|t          |d	d           nd }|t          |d
d           nd }t          | dd           }d }t	          | d          r|                      d          r	 t          | j        dd          }t          | j        dd          }t          | j        dd          }t          dt          dt          |dz                                }t          dt          dt          |dz                                }t          dt          dt          |dz                                }d|d|d|d}n# t          $ r d }Y nw xY wd }|	 |                     d          r|j
        }n# t          $ r Y nw xY w	 |                     d          r|j        }n# t          $ r Y nw xY w	 |                     d          r$|j        }t          |t                    r|dk     rd}n# t          $ r Y nw xY w	 |                     d          r|j        }n# t          $ r Y nw xY w	 |                     d          r|j        }n# t          $ r Y nw xY w	 |                     d          rt          |dd           }n# t          $ r d }Y nw xY w	 t	          |d          r|                     d          r|j        nd }n# t          $ r d }Y nw xY w	 |                     d          r*	 t          |j        dd           }n# t          $ r d }Y nw xY wd }n# t          $ r d }Y nw xY wd }d }t'          d$i d|d|	d|
d|d|d|d|d|d
|d|d|d|d|d |d!|d"|d#|d|S )%Nparagraph_stylero   rp   rq   rr   rs   ru   font
point_sizerw   highlight_colorcolorredg        greenbluer      #02Xrx   ry   rz   r{   writing_direction_paragraphr   starting_list_item_number	checklistdonert   rv   r|   r}   r~   r   r'   )HasFieldr   getattrr   hasattrr   maxminroundrf   rx   ry   rz   
isinstanceintr{   r   r   r   rn   )r   psr*   alignindentbqwd	start_numfwulsttsuprs   emphr   fszfnamehlrt   rgbr8g8b8	para_uuidr}   s                              r)   from_runzStyleSig.from_run   s   $'LL1B$C$CMS  (,,,U,V,b2	S-..S,--c?D11c=$//sFD))s,d33<<//9sxxT373CgdL$///484Dk4000$S+T22	3   
	!S\\'%:%: 
	!	!CIuc22CIw44CIvs33CU1s7^^4455CU1s7^^4455CU1s7^^445588888888		 ! ! ! 			!	>;;|,, 'B   ;;{++ )LE   ;;// #-F!&#.. #6A::!"   ;;}-- (B   ;;<== 87B   !;;/00 D ',<d C CI ! ! ! 			!! r#>??$?@@B00 	 	  ! ! ! 			!	&;;{++ *.)0vt)L)L$ . . .)-. &*N & & &!%& "NI 
 
 

r
 #
 	

 
  i
  4
 
 e
 r
 e
 !&
 
 !b
 *>
  #!
" b#
$ %9%
 	
s   CG, ,G;:G;H! !
H.-H.2I 
II 9J 
J'&J'+K 
KKK6 6
LL&L. .L=<L=.M0 0M?>M?O N0 /O 0N?<O >N??O OOotherr-   c                P   | j         r|j         r| j         |j         k    rdS | j        }|j        }t          |          r|dS ||k    o_| j        |j        k    oO| j        |j        k    o?| j        |j        k    o/| j        |j        k    o| j        |j        k    o| j        |j        k    S )NFT)	r   rx   r0   ry   rz   r{   r|   r}   r~   )selfr   st_selfst_others       r)   same_paragraph_aszStyleSig.same_paragraph_as   s     	$	 #u';;;5 /#'"" 	x'74 x 	8%/1	8"e&99	8  E$55	8 &%*AA		8 #u';;	8 !U%77	
r(   c                B   | j         |j         k    o| j        |j        k    o| j        |j        k    oo| j        |j        k    o_| j        |j        k    oO| j        |j        k    o?| j        |j        k    o/| j        |j        k    o| j        |j        k    o| j	        |j	        k    S r/   )
ro   rp   rq   rr   rs   rt   ru   rv   rw   r   r   r   s     r)   same_inline_aszStyleSig.same_inline_as  s     11 	25#33	2"e&99	2  E$55	2 	UZ'		2
 %/1	2 #u';;	2 !U%77	2 %/1	2 %/1	
r(   c                V    |                      |          o|                     |          S r/   )r   r   r   s     r)   same_effective_stylezStyleSig.same_effective_style  s)    %%e,,K1D1DU1K1KKr(   N)r   r   r,   r   )r   r   r,   r-   )	r   r   r   __annotations__staticmethodr   r   r   r   r'   r(   r)   rn   rn   k   sW             !!!!!!!!     $$$$!!!!####i
 i
 i
 \i
V
 
 
 
8
 
 
 
L L L L L Lr(   rn   c                  .    e Zd ZU ded<   ded<   ded<   dS )	MergedRunr   lengthrn   sigzOptional[AttachmentRef]
attachmentN)r   r   r   r   r'   r(   r)   r   r     s0         KKKMMM''''''r(   r   List[MergedRun]c                   g }| D ]}t                               |          }d }|                    d          r>|j        }t	          |dd           pd }t	          |dd           pd }t          ||          }|rK|I|d         j        <|d         j                            |          r|d         xj	        |j	        z  c_	        |
                    t          |j	        ||                     |S )Nattachment_infoattachment_identifiertype_uti)
identifieruti_hintr   )r   r   r   )rn   r   r   r   r   r   r   r   r   r   appendr   )runsoutr   r   r   air   r   s           r)   _merge_runsr   $  s
   C S S""
::'(( 	Q"B %<dCCKtJr:t44<H&*xPPPJ	S"B"*B0055 + GNNah&NNNJJycjQQQRRRRJr(   sstartr   length_unitsTuple[str, int]c                ~    ||z   }	 | ||         }t          d |D                       }||z   |z   }||k    r||fS |}8)NTc              3  @   K   | ]}t          |          d k    dV  dS )i  r   N)ordr8   s     r)   r;   z!_slice_for_run.<locals>.<genexpr>>  s2      <<B3r77V+;+;a+;+;+;+;<<r(   )sum)r   r   r   	end_guesschunkastralsnew_ends          r)   _slice_for_runr   :  sj    $I%	/"<<%<<<<<,&0i)##	r(   notepb.Note
datasourceOptional[NoteDataSource]configOptional[ExportConfig]c                  456789:;< | j         pd}t          | j                  }g 9d<d;d8dBd6d}g :dC9:fd	5dD5:fd4d d ddE59:fd7dF479:;<fd}dC89:;fd}dGd}dH6fd}	t          |          }
d }t	          |          D 
](\  }}|dz   |
k     r||dz            nd }|d u p|j                            |j                   }||                    |j                  s|d}t          t          |dd                     rpt          t          |j        dd                     rMt          t          |d d          pd          }t          t          |j        d d          pd          }||k    rd!}|r
 |              ||j                   |j
        |j
        j        pd}|j
                                      pd                                }d }d }d }d }d }	 |                    d"d|          }|                    d#d|          }t          ||          }||dk    r|dz   nd|         }n# t           $ r d }Y nw xY wr/|r,t          d$d           }t          d%d           }t          d&d           }t          d'd           } t#          |          r)t%          t&          t(                    ||                    nd }t#          |          r)t%          t&          t(                    ||                    nd }t#          |          r)t%          t&          t(                    ||                    nd }t#          |           r)t%          t&          t*                    | |                    nd }rt          d(d          rd)nd }!rt          d*d           nd }"rt          d+d           nd }#t-          ||||||||!|"rt          d,d           nd |#-          }$t/          |$fd.          }%9                    |%           :r:d/         d0         rd:d/         d1<   ||j        z  }nt5          |||j                  \  }&}|&                    d2d3                              d4d          }&:r|:d/         d0         rmt          |j        j                  r|&                    d"          }'t	          |'          D ]}\  }(})|)rB:r:d/         d0         r܉:d/         d5         }||t          9          k     r9|         }*d6|*v r9                    d7           d!:d/         d0<   9                    d8           d:d/         d0<   t          9          dz
  :d/         d5<   d!:d/         d1<   |j        j        t<          j        k    r-|j        j         dk    rd9nd}+9                    d:|+ d;           9                     |	|j        tC          j"        |)                               |)#                                rd:d/         d1<   n	 |(t          |'          dz
  k     r|(dz   t          |'          k     r|'|(dz            nd },|,dk    r|(dz   t          |'          dz
  k    r9                    d7           d!:d/         d0<   d}-|,dk    }.|.rd<}-9                    d=|- d>           t          9          dz
  :d/         d5<   d:d/         d0<   |.r9                    d?           d!:d/         d1<   |j        j        t<          j        k    r/|.s-|j        j         dk    rd9nd}+9                    d:|+ d;           n|&                    d"          }'t	          |'          D ]\  }(})|)rU9                     |	|j        tC          j"        |)                               |)#                                rd:d/         d1<   |(t          |'          dz
  k     r9                    d@           n*|r|&$                    dA          }&:r:d/         d0         r܉:d/         d5         }||t          9          k     r9|         }*d6|*v r9                    d7           d!:d/         d0<   9                    d8           d:d/         d0<   t          9          dz
  :d/         d5<   d!:d/         d1<   |j        j        t<          j        k    r-|j        j         dk    rd9nd}+9                    d:|+ d;           |&                    d"d                              d#d          dk    r/8|&%                    d"          |&%                    d#          z   z  8nʉ8dk    r9                    d@8z             d8|j        j        t<          j&        k    rtC          j"        |&          }/n ||&          }/9                     |	|j        |/                     :rJ:d/         d0         r<:d/         '                    d1          p|&#                                dk    :d/         d1<   |rd}0|t|j        j        }1|j        j        }2t          |1          rMt          |2          r>t          |j        j(        pd          }t          |j        j(        pd          }3|3|k    rd!}0|0r
 |             |j        }
*|;r
 |              4d/           d)                    9          S )INr4   r   emph_valr+   r,   	List[str]c                B    | g S t          |           }|dvrg S d| dgS )Nr   r      r      background-color:var(--hl-bg))r   )r   idxs     r)   _emphasis_cssz+render_note_fragment.<locals>._emphasis_cssS  s>    I (mmo%%I5C55566r(   Nonec                     sd S                                  } |                     d          r                    d                               d| d          d           d S )Nli_open</li></tag>)poprd   r   )top	fragments
list_stacks    r)   _close_top_listz-render_note_fragment.<locals>._close_top_listc  sq     	Fnn779 	&W%%%+c%j+++,,,,,r(   target_indentr   c                x    r2d         d         | k    r$              rd         d         | k    d S d S d S d S )Nr   r   r'   )r   r   r   s    r)   _close_lists_toz-render_note_fragment.<locals>._close_lists_tok  si     	Z^H5EEO  	Z^H5EEEE 	 	 	 	EEr(   r   clsr   desired_tagrA   r   r   r2   c                  
rx
d         d         | k    s$
d         d         | k    rT
d         d         |k    rB              
r6
d         d         | k    
d         d         | k    r
d         d         |k    B
r
d         d         | k     rS
rT
d         d         sF	                     d           d
d         d<   t          	          dz
  
d         d<   d	
d         d
<   
r
d         d         dz   nd}|}g }|r1|dk    r+|                     dt          j        |           d           |rE|dk    r?|| k    r9t	          |          dk    r&|                     dt	          |           d           |rdd                    |          z   nd}	                     d| | d           
                     ||d	d d	d           
>
d         d         | k     Qd S d S )Nr   r   r   r   <li>Tr   li_indexFli_has_contentr   r   zclass="rY   olzstart="r6   r4   <r   )r   r   r   r  r  )r   lenhtmlescaper   r@   )r   r   r   r   levelr   attrs	attr_textr   r   r   s           r)   _ensure_listz*render_note_fragment.<locals>._ensure_listo  sd     	rN8$v--2x(F22rN5)[88 O  	rN8$v--2x(F22rN5)[88  	*R.":V"C"C 9*R."; 9  (((,0
2y)-0^^a-?
2z*38
2/06@GZ^H-11aEC!E <sd{{:t{3'7'7:::;;; 6&SZZ!^^4s5zz44455538@sxx..bI22i222333#$ $&+   !  	*R.":V"C"C"C"C"C"Cr(   r   rn   c                j   | j         t          j        t          j        t          j        t          j        fv r<t          | j        pd          }| j         t          j        k    rdnd}| j         t          j        k    rdnd } 
||| j        |           d         d         r;d         	                    d          r 
                    d	           d
d         d<   d         d         sF
                    d           dd         d<   t                    dz
  d         d<   d
d         d<   | j         t          j        k    r(| j        dk    rdnd}
                    d| d           dd	d S  	d           | j         t          j        k    rd}nJ| j         t          j        k    rd}n2| j         t          j        k    rd}n| j         t          j        k    rd}nd}| j        dk    r|dk    rd}g }| j        dk    r|
                    d           nA| j        dk    r|
                    d           n | j        dk    r|
                    d           d}| j        dv rd}n| j        d v rd!}|rd"d#                    |           d$nd}d%| | | d&d'| d&
                               d S )(Nr   r  r   dashedr   r   r   r  r   Fr  Tr   r   checkedr4   <input type="checkbox" disabled> h1h2h3prep
blockquoteztext-align:centerr   ztext-align:rightr   ztext-align:justify)r   r   z
 dir="rtl"r   r   z
 dir="ltr"z style="; rY   r  r   r   )rx   r   r#   r$   r%   r&   r   rz   r~   rd   r   r  r}   r   r    r!   r"   r{   ry   r|   r@   )r   r   desiredr   checkedr   stylesdir_attr
style_attrr   r  r   r   para_tag_closepara_tag_opens            r)   paragraph_openz,render_note_fragment.<locals>.paragraph_open  s   >!!#	
 
 
 */a00F!n	0GGGddTG!n	0EEE((4CL0@cJJJJ "~i( 2Z^-?-?@P-Q-Q 2  ))),1
2y)b>), 9  (((,0
2y)-0^^a-?
2z*38
2/0~!333(+(:a(?(?**R  !N7!N!N!NOOO"M$NF>Y_,,CC^y000CC^y333CC^y333CCC?aC3JJC=AMM-....]aMM,----]aMM./// F**#HH"f,,#H8>F4		& 1 14444B
8C88X888$c'''''r(   c                 $   drdk    rerbd         d         rRd                              d          sd                              d          } t          | t                    r"d| cxk    rt                    k     rn nd| <   r\t          d         t                    rAd                                                             d          r                                 n{rdt          d         t                    rId         d	k    r=                                 r't          d         t                    rd         d	k    =                               d
d         d<   ndk    r                               dd S )Nr   r   r   r   r  r  r4   z<input type="checkbox"<br>F)	rd   r   r   r  rA   lstrip
startswithr   r   )r   deferred_breaksr   r   r  s    r)   paragraph_closez-render_note_fragment.<locals>.paragraph_close  s    	1((Z(b>), 6%b>--.>?? 9(n00<<%c3// 0A4M4M4M4Ms9~~4M4M4M4M4M-/IcN &, *9R=# > >, !*"#VXX'Z(@AA, &MMOOO &, *9R=# > >, !*" 7 7%MMOOO	 &, *9R=# > >, !*" 7 7 "((88805JrN9-7**  000r(   textc                <   g }d}t          |           }||k     r|}||k     r| |         dvr|dz  }||k     r
| |         dv| ||         }t          j        |          }d}g }|D ]D}	|	dk    r|                    d           |dz  }#|	dk    r|                    d           |dz  }D |r d                    |          ||d          z   }|                    |           ||k     r|                    d	           |dz  }|}||k     d                    |          S )
Nr   )
    r   r6   &nbsp;	z&nbsp;&nbsp;&nbsp;&nbsp;r4   r#  )r  r  r  r   r@   )
r(  r   injlineesckprefixr:   s
             r)   _preserve_leading_wsz2render_note_fragment.<locals>._preserve_leading_ws  s_    II!eeAa%%DG+;;;Q a%%DG+;;;!9D+d##CA "F  99MM(+++FAA4ZZMM,///FAA 0ggfooABB/JJsOOO1uu

6"""QA7 !ee8 wws||r(   	html_textc           	        g }| j         dv r|                    d           | j         dv r|                    d           | j        r|                    d| j                    |                     
| j        p| j                             | j        rJ| j        sC	 t          | j                  }|dv r|                    d| d           n# t          $ r Y nw xY w| j        r>	 |                    d	t          | j                  d
d           n# t          $ r Y nw xY w| j
        r7|                    dt          t          | j
                                        g }| j        dk    r|                    d           | j        dk    r|                    d           |r+|                    dd                    |                      |rd                    |          }d| d| d}n|}t!          | j                  }|rd}d}		 r%t%          dd           rt          j                  }r%t%          dd           rt          j                  }	n# t          $ r Y nw xY wdt+          j        |           dt+          j        |           dt+          j        |	           d| d	}| j        dk    rd| d }n| j        d!k    rd"| d#}|S )$Nr  zfont-weight:bold)r   r   zfont-style:italiczcolor:r   r   r   z
font-size:z.0fptzfont-family:r   	underlinezline-throughztext-decoration:r6   r  z<span style='z'>z</span>znoopener noreferrerzno-referrerlink_relreferrer_policyz	<a href="z" target="_blank" rel="z" referrerpolicy="z">z</a>z<sup>z</sup>r   z<sub>z</sub>)ro   r   rt   extendr   ru   r   rf   rv   floatrw   rk   rA   rp   rq   r@   rI   rs   r   r:  r;  r  r  rr   )r   r6  r  r   decor  styled	safe_hrefrelrpr   r   s             r)   wrap_inlinez)render_note_fragment.<locals>.wrap_inline  s   ?f$$MM,---?f$$MM-...= 	4MM23=22333mmCM$GS5GHHIII= 	!3 	#-((/))MM"Gc"G"G"GHHH    	J51A+B+BJJJJKKKK   = 	PMMNS]9K9K)L)LNNOOO>QKK$$$!!KK''' 	?MM=SXXd^^==>>>  	6**JEZEE9EEEFFF%ch//	 
	T'CB /gfj$?? /fo..C 5gf.?FF 5V344B    TY!7!7  T  TPTP[\_P`P`  T  Ttxt  AC  uD  uD  T  T  HN  T  T  TF?a+V+++FF_""+V+++Fs7   1C 
CC',D 
D! D!AI 
I+*I+r   Trx   rz   Fr*  r+  	get_titleget_primary_asset_urlget_thumbnail_urlget_mergeable_gzlink_target_blank_blankr:  pdf_object_heightr;  )idutititleprimary_url	thumb_urlmergeable_gz
prior_textlink_targetr:  link_referrerpolicyrJ  c                (    t          |           S )Nr   )render_note_fragment)	cell_noter   r   s    r)   <lambda>z&render_note_fragment.<locals>.<lambda>  s    "6z&# # # r(   r   r   r   u   ␀u   ￼r  zstyle="list-style-type: none"r   r  r  r  r  z style="list-style-type: none"z<lir   r,  r#  u   
 )r   r+   r,   r   )r,   r   )r   r   r,   r   )
r   r   r   rA   r   r+   r   r2   r,   r   )r   rn   r,   r   )r(  rA   r,   rA   )r   rn   r6  rA   r,   rA   )*	note_textr   attribute_runr  	enumerater   r   r0   r   r   r   r   resolved_utirg   rfindr   rf   callabler	   r   rA   bytesr   r   r   r   r   re   rx   splitr   r&   r}   r  r  rB   rstripcountr"   rd   rz   r@   )=r   r   r   r(  mergedr.  r!  r'  r5  rC  totalprev_sigr   mrnext_mris_para_boundary
close_prevprev_indent
cur_indentidentrL  rM  primarythumbgzrQ  lb_nlb_ulbrD  get_pget_tget_mrR  r:  pdf_hctxhtml_attr   segsr3  segr   r  next_segr  is_next_emptyri   should_closecur_stnxt_st
nxt_indentr   r   r   r  r&  r   r   r  r   s=    ``                                                 @@@@@@@@@r)   rV  rV  E  sg   
 >RD+,,FIMNO	7 	7 	7 	7 	
A 	 - - - - - - -        $!' ' ' ' ' ' ' ' ' 'R9( 9( 9( 9( 9( 9( 9( 9( 9( 9( 9(v# # # # # # # # #J" " " "H5 5 5 5 5 5 5n KKE#'HV$$ P PR%(1Wu__&q//$"d?W"&2J2J7;2W2W.W8#=#=bf#E#E# "
!HlD99  +$WRV\4%H%HII+ #&gh&K&K&Pq"Q"QK!$WRV_a%H%H%MA!N!NJ!K//%*
 &#O%%%N26"""=$M,2E=--j99?RFFHHCEGEBJ" zz$1--zz(Aq11t__!bAgg2661q"@A

 " " "!


" Ve V#JTBB	
,CTJJ
,?FF
,>EE  	**D#		%(8(8999 
 @HX$x}eeEll;;;TX=Ee__VXc]EE%LL999RV<DUOOUT(5/55<<888QU
 &v/BDII 
 =CLwvz4888HBHRGF$7>>>dE##%'!%GF4Et$L$L$L"'  C )     H X&&& 8jnY7 837
2/0NAA
 "$2955DAq		&(++33HbAAA _/jnY7 _/!"&"344 o5774==D"+D// b" b"3 %!  * .jnY.G .&0nZ&@#&?sS^^7K7K*3C.C'F#'M'M(1(8(8(A(A(ADI
2y(A )2(8(8(@(@(@DH
2y(AEH^^VWEW
2z(BKP
27G(H+-6+<	@R+R+R 4663HA3M3M 1;
57 -4
 -6,<,<0]RY0]0]0]-. -. -. &,,[[SAQAQ-R-RSSS"yy{{ HCG
2/? @ !s4yy1},,781uD		6I6ItAE{{tH  (2~~1q5SYY]2J2J (  &,,W5558=JrN95 *,J -5NM  - N-M
%,,-@:-@-@-@AAA9<Y!9KJrN:68<JrN95, ; ) 0 0 : : :?DJrN+;<
 !# 1Y5G G G(5 !H 35&2G12L2LJJRT !( !* 0 0$Qg$Q$Q$Q!" !" !"Ab"J 774==D"+D// 5 53 H%,,[[SAQAQ-R-RSSS"yy{{ HCG
2/? @s4yy1},,%,,V4445 $ -,,A
  "*R."; "$R.4C3Y+?+?'n:cAA%,,W5558=JrN95%,,V4448<JrN959<Y!9KJrN:6?DJrN+;<!v0I4FFF24&2G12L2LJJRT !( !* 0 0$Qg$Q$Q$Q!" !" !" 99T2&&..x<<BB#qwwt}}qwwx7H7H'HHOO&**!((/)ABBB*+v(I,@@@#{1~~  43A66$$[[%>%>???! /jnY&? /;Eb>;M;M,< < </ggii2o #2'78  	"
  L"* /!&)) -nV.D.D -!$RV%9%>Q!?!?J!$W[%>%C!!D!DJ!J..', "!!!6OB779s   +AH??IIr4   rM  html_fragment	extra_cssc                >    dt          j        |            d| d| dS )Nz[<!doctype html><meta charset="utf-8"><meta name="color-scheme" content="light dark"><title>u  </title><style> :root{--hl1-bg:#BA55D333;--hl2-bg:#D5000044;--hl3-bg:#FF6F0022;--hl4-bg:#289C8ECC;--hl5-bg:#2196F333}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;line-height:1.4;background:#fff;color:#000}pre{white-space:pre-wrap}blockquote{margin:.5em 0 .5em 1em;padding-left:.8em;border-left:3px solid #ddd}a{text-decoration:underline}img{max-width:100%;height:auto}table{border-collapse:collapse;margin:.5rem 0}td,th{border:1px solid #ccc;padding:.25rem .5rem;vertical-align:top}ul.dashed{list-style:none;padding-left:1.2em}ul.dashed li::before{content:'— ';position:relative;left:-0.6em}@media (prefers-color-scheme: dark){ :root{--hl1-bg:#BA55D380;--hl2-bg:#FF525266;--hl3-bg:#FFB74D55;--hl4-bg:#80CBC480;--hl5-bg:#64B5F680}body{background:#111;color:#eee}a{color:#8ab4f8}blockquote{border-left-color:#444}td,th{border-color:#555}img{max-width:100%;height:auto}pre{background:#1b1b1b;color:#eee}ul.dashed li::before{color:#bbb}}z"</style><div class="note-content">z</div>)r  r  )rM  r  r  s      r)   render_note_pager  m  sO    	N+e$$	N 	N8 9	N 	N8 9F9	N 	N 	Nr(   c                  .    e Zd ZdZdddZdddZddZdS )NoteRendererz)Class-based interface for note rendering.Nr   r   c                0    |pt                      | _        d S r/   )r   r   )r   r   s     r)   __init__zNoteRenderer.__init__  s    .r(   r   r   r   r   r,   rA   c                0    t          ||| j                  S )z0Render the note body to an HTML fragment string.rU  )rV  r   )r   r   r   s      r)   renderzNoteRenderer.render  s    #D*T[IIIIr(   rM  r  c                "    t          ||          S )z.Wrap an HTML fragment in a full page with CSS.)r  )r   rM  r  s      r)   render_full_pagezNoteRenderer.render_full_page  s    }555r(   r/   )r   r   )r   r   r   r   r,   rA   )rM  rA   r  rA   r,   rA   )r   r   r   __doc__r  r  r  r'   r(   r)   r  r    se        33/ / / / /J J J J J6 6 6 6 6 6r(   r  )r*   r+   r,   r-   )r1   r2   r,   r2   )rW   rA   r,   rA   )r,   r   )r   rA   r   r   r   r   r,   r   r/   )r   r   r   r   r   r   r,   rA   )r4   )rM  rA   r  rA   r  rA   r,   rA   )&r  
__future__r   r  dataclassesr   enumr   typingr   r   r   r	   urllib.parser
   protobufr   pbattachmentsr   r   optionsr   renderer_ifacer   r   r   r0   rI   rc   rk   rn   r   r   r   rV  r  r  r'   r(   r)   <module>r     s    # " " " " "  ! ! ! ! ! !       . . . . . . . . . . . . ! ! ! ! ! ! & & & & & & = = = = = = = = ! ! ! ! ! ! 9 9 9 9 9 9 9 9
 
 
 
 
 
 
 
      (     NMMNNN333111@@@>>>???<<<- 4" " " "& $nL nL nL nL nL nL nL nLb ( ( ( ( ( ( ( (   ,    &*e e e e eP    D6 6 6 6 6 6 6 6 6 6r(   