ó a˜Qc@sddlmZddlZddlZddlZddlZddlZddlZddlZd„Z de fd„ƒYZ e ƒZ e d„Zd„Zddded„Ze d „Ze d „Zd „Zd „Zd „Zd„Zd„ZejZejZejZdS(iÿÿÿÿ(t_NcCsbg|jdƒD]}|d^q}|r^|ddkrI|jƒq^|dd |d>s(tdictRtupdateR(RtkwargsR((Rs3/sys/lib/python2.7/site-packages/mercurial/mdiff.pytcopy=s ( t__name__t __module__t__doc__tFalseRtkeysRRR#(((s3/sys/lib/python2.7/site-packages/mercurial/mdiff.pyRs    cCsp|jrtj|dƒ}n|jr<tj|dƒ}n|rl|jrltjdd|ƒjdƒ}n|S(Niis +s (R tbdifftfixwsR Rtretsubtstrip(RRtblank((s3/sys/lib/python2.7/site-packages/mercurial/mdiff.pytwscleanDs  !c csÎg|D]!}t||ƒr"dp%d^q}g|D]!}t||ƒrPdpSd^q5}dt|ƒ}}dt|ƒ}} xE||ks|| krÉ||d} } } | |ksé|| dksé| | ksé|| dkrLd} x*| |kr|| dkr| d7} qòWxt| | krH|| dkrH| d7} qWnGxD| |kr’|| dkr’|| dkr’| d7} | d7} qOW|||| |||| g| fV| }| }q…WdS(Niit=t~(R/tlen( tbase1tlines1tbase2tlines2RRts1te1ts2te2ti1ti2tbtype((s3/sys/lib/python2.7/site-packages/mercurial/mdiff.pyt splitblockMs&../ 'c cs¾|d krt}n|js'|jrNt||tƒ}t||tƒ}ntj||ƒ}xWt|ƒD]I\}}|dkr–||d} nddddg} | d|d| d|dg} | d| dksò| d| dkr«d} |j r|d krt |ƒ}n|d kr7t |ƒ}nt|dj || d| d!ƒƒ} t|dj || d| d!ƒƒ} | | krd} qn| | fVn|dfVqmWd S( s·Return (block, type) tuples, where block is an mdiff.blocks line entry. type is '=' for blocks matching exactly one another (bdiff blocks), '!' for non-matching blocks and '~' for blocks matching only after having filtered blank lines. If refine is True, then '~' blocks are refined and are only made of blank lines. line1 and line2 are text1 and text2 split with splitnewlines() if they are already available. iiiit!tR1R0N( Rt defaultoptsR R R/R'R)tblockst enumerateRRtjoin( ttext1ttext2RR4R6trefinetdifftiR7tsttypetoldtnew((s3/sys/lib/python2.7/site-packages/mercurial/mdiff.pyt allblocksgs0   "(   ''  c sçd‡fd†}| r$| r$dStjdƒ}tj|ƒ}tj|ƒ}ˆj r½tj|ƒsytj|ƒr½|r­|r­t|ƒt|ƒkr­||kr­dSd|g} nÙ|set|ƒ}|dkrîd||ƒ} ndd||||ƒf} dd ||||ƒf} d t|ƒ} | | | gg|D]} d | ^qK} n1|s t|ƒ}dd||||ƒf} |dkr³d ||ƒ} ndd ||||ƒf} d t|ƒ} | | | gg|D]} d| ^qó} n‰t|ƒ}t|ƒ}tt ||||dˆƒƒ} | sPdS| j dd||||ƒfƒ| j dd||||ƒfƒxAt t| ƒƒD]-}| |ddkr©| |cd7||||!V||7}qWdS(Ni(R2(RtcsizeRRI((s3/sys/lib/python2.7/site-packages/mercurial/mdiff.pytchunk7s  R@sGIT binary patch s literal %s s N(RtappendR2tzlibtcompressRD(ttottnRŒRŽRkR((s3/sys/lib/python2.7/site-packages/mercurial/mdiff.pytb85diff-s         cCs„d}g}xh|t|ƒkrvtjd|||d!ƒ\}}}|d7}|j||||!ƒ||7}qWdj|ƒS(Nis>llli R@(R2tstructtunpackRRD(tbintpostttp1tp2R((s3/sys/lib/python2.7/site-packages/mercurial/mdiff.pyt patchtextPs& cCs5t|ƒdkr"tj|dƒStj||gƒS(Nii (R2Rtbuffertmpatchtpatches(R\R—((s3/sys/lib/python2.7/site-packages/mercurial/mdiff.pytpatchZscCs@gtj||ƒD])}|d|d|d|df^qS(Niii(R)RB(R\R^td((s3/sys/lib/python2.7/site-packages/mercurial/mdiff.pytget_matching_blocksascCstjddd|ƒS(Ns>llli(R•tpack(tlength((s3/sys/lib/python2.7/site-packages/mercurial/mdiff.pyttrivialdiffheaderds(ti18nRR)RžRR+R•RˆRRtobjectRRARŠR/R>RR'RNRjRYR”RœR R¢R¥RŸt patchedsizettextdiff(((s3/sys/lib/python2.7/site-packages/mercurial/mdiff.pyts$$0 ,  * 8 d #