§
    £”jõÇ  ã                   ó´  — d Z dZddlmZ ddlT ddlT ddlmZmZ ddl	m
Z
mZmZmZmZmZ ddlmZmZmZ ddlmZ dd	lmZmZmZmZ ddlT dd
lmZmZ ddlm Z m!Z!m"Z" ddl#m$Z$m%Z% ddl&m'Z' ddl(m)Z)  G d„ de¦  «        Z* G d„ de+¦  «        Z, G d„ de¦  «        Z- G d„ d¦  «        Z. G d„ d¦  «        Z/ G d„ de/e"¦  «        Z0 G d„ de/e¦  «        Z1ddl2m3Z3  G d„ d e3¦  «        Z4 G d!„ d"e4¦  «        Z5g d#¢g d$¢gZ6 G d%„ d&e4¦  «        Z7 G d'„ d(e7¦  «        Z8 G d)„ d*e4¦  «        Z9 G d+„ d,e9¦  «        Z:d-„ Z; G d.„ d/e4¦  «        Z<d0„ Z=d1„ Z>d2„ Z?d3„ Z@d4„ ZAd5„ ZBd6S )7z3.3.0z9This module defines a very preliminary Line Plot example.é    ©Úcolors)Ú*)ÚflattenÚisStr)ÚDrawingÚGroupÚRectÚPolyLineÚPolygonÚ_SetKeyWordArgs)ÚTypedPropertyCollectionÚ
PropHolderÚ
tpcGetItem)ÚLabel)Ú
XValueAxisÚ
YValueAxisÚAdjYValueAxisÚNormalDateXValueAxis)ÚuSymbol2SymbolÚ
makeMarker)ÚGridÚ
DoubleGridÚShadedPolygon)ÚstringWidthÚgetFont)ÚPlotAreaé   )ÚFillPairedDatac                   óz  — e Zd Z e eed¬¦  «         eed¬¦  «         eed¬¦  «         eed¬¦  «         eddd¬	¦  «         edd
d¬	¦  «         eddd¬	¦  «         eed¬¦  «         e e	 e
ddd¦  «        ¦  «        dd¬	¦  «         eedd¬	¦  «         e e
ddddd¦  «        dd¬	¦  «        ¬¦  «        ZdS )ÚLinePlotPropertieszWidth of a line.©ÚdesczColor of a line.zDash array of a line.z,Color of infill defaults to the strokeColor.NzWidget placed at data points.r   ©r#   ÚadvancedUsagezShader Class.zFiller Class.zName of the line.ÚlineÚ
joinedLineÚbarzWhat kind of plot this line isz2Percentage of available width to be used for a barr   é   TFzIf true flood fill to x axis)ÚstrokeWidthÚstrokeColorÚstrokeDashArrayÚ	fillColorÚsymbolÚshaderÚfillerÚnameÚ	lineStyleÚbarWidthÚinFill)Ú__name__Ú
__module__Ú__qualname__ÚAttrMapÚAttrMapValueÚisNumberÚisColorOrNoneÚisListOfNumbersOrNoneÚisStringOrNoneÚNoneOrÚOneOfÚisNumberOrNoneÚ_attrMap© ó    úr/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/reportlab/graphics/charts/lineplots.pyr!   r!      s;  € € € € € ØˆwØ"�l 8Ð2DÐEÑEÔEØ"�l =Ð7IÐJÑJÔJØ&˜,Ð'<ÐCZÐ[Ñ[Ô[Ø �L Ð5cÐdÑdÔdØ�˜dÐ)HÐWXÐYÑYÔYØ�˜d¨ÀqÐIÑIÔIØ�˜d¨ÀqÐIÑIÔIØˆ|˜NÐ1DÐEÑEÔEØ �L  ¨¨¨f°\À%Ñ(HÔ(HÑ!IÔ!IÐPpð  @Að  Bñ  Bô  BØ�< Ð4hÐwxÐyÑyÔyØ�˜e˜e A a¨¨$¨uÑ5Ô5Ð<ZÐijÐkÑkÔkð
ñ 
ô 
€H€H€HrC   r!   c                   ó   — e Zd Zdd„ZdS )ÚInFillValueNc                 óJ   — t                                | |¦  «        }||_        |S ©N)ÚintÚ__new__ÚyValue)ÚclsÚvrK   Úselfs       rD   rJ   zInFillValue.__new__(   s!   € Ý�{Š{˜3˜qÑ!Ô!ˆØˆŒØˆrC   rH   )r5   r6   r7   rJ   rB   rC   rD   rF   rF   '   s(   € € € € € ðð ð ð ð ð rC   rF   c                   ót   — e Zd Z ee eed¬¦  «         e eedd¬¦  «        d¬¦  «        ¬¦  «        Z	d„ Z
dS )	ÚShaderzIf true shade to x axisr"   r)   )ÚloÚhiz(AxisColor, LineColor))ÚBASEÚverticalr   c                 óž   — d d g}t          | d|¦  «        p|}|d         st          |dt          j        ¦  «        |d<   |d         s||d<   d S d S )Nr   r   r-   r   )Úgetattrr   Úwhite)rN   ÚlpÚgÚrowNoÚrowColorÚrowÚcs          rD   ÚshadezShader.shade3   s]   € Ø�$ˆKˆÝ�D˜ !Ñ$Ô$Ð)¨ˆØ�ŒtÐ@�G B {µ6´<Ñ@Ô@�Q�q‘TØ�ŒtÐ$˜H�Q�q‘T�T�TÐ$Ð$rC   N)r5   r6   r7   r8   r   r9   Ú	isBooleanÚ
SequenceOfr;   rA   r^   rB   rC   rD   rP   rP   -   sr   € € € € € Øˆw˜HØ�< 	Ð0IÐJÑJÔJØ�˜j˜j¨¸!¸qÐAÑAÔAÐH`ÐaÑaÔað
ñ 
ô 
€Hð
%ð %ð %ð %ð %rC   rP   c                   ó   — e Zd Zd„ ZdS )ÚNoFillerc                 ó   — d S rH   rB   ©rN   rX   rY   rZ   r[   Úpointss         rD   ÚfillzNoFiller.fill:   s   € ØˆrC   N)r5   r6   r7   rf   rB   rC   rD   rb   rb   9   s#   € € € € € ðð ð ð ð rC   rb   c                   ó|   — e Zd ZdZ e eed¬¦  «         eed¬¦  «         eed¬¦  «        ¬¦  «        Zd„ Z	d„ Z
d	S )
ÚFillerz#mixin providing simple polygon fillzfiller interior colorr"   zfiller edge colorzfiller edge width©r-   r+   r*   c                 ó   — || _         d S rH   )Ú__dict__)rN   Úkws     rD   Ú__init__zFiller.__init__D   s   € ØˆŒˆˆrC   c                 ó¬   — |                      t          |t          | d|¦  «        t          | d|¦  «        t          | dd¦  «        ¬¦  «        ¦  «         d S )Nr-   r+   r*   çš™™™™™¹?ri   )Úaddr   rV   rd   s         rD   rf   zFiller.fillG   sb   € Ø	�Š�g�fÝ˜d ;¨xÑ8Ô8Ý  ]°8Ñ<Ô<Ý  ]°3Ñ7Ô7ð9ñ 9ô 9ñ 	:ô 	:ð 	:ð 	:ð 	:rC   N)r5   r6   r7   Ú__doc__r8   r9   r;   r@   rA   rm   rf   rB   rC   rD   rh   rh   =   s‡   € € € € € Ø-Ð-ØˆwØ �L Ð5LÐMÑMÔMØ"�l =Ð7JÐKÑKÔKØ"�l >Ð8KÐLÑLÔLð
ñ 
ô 
€Hð
ð ð ð:ð :ð :ð :ð :rC   rh   c                   ó   — e Zd ZdS )ÚShadedPolyFillerN©r5   r6   r7   rB   rC   rD   rs   rs   M   ó   € € € € € Ø€DrC   rs   c                   ó   — e Zd ZdS )Ú
PolyFillerNrt   rB   rC   rD   rw   rw   P   ru   rC   rw   )ÚAbstractLineChartc                   óü  — e Zd ZdZ ee eedd¬¦  «         eedd¬¦  «         edd¬¦  «         edd	¬¦  «         edd
¬¦  «         ee	d¬¦  «         ee	d¬¦  «         edd¬¦  «         edd¬¦  «         edd¬¦  «         edd¬¦  «         eddd¬¦  «         eedd¬¦  «         eedd¬¦  «        ¬¦  «        Z
d„ Zed„ ¦   «         Zej        d„ ¦   «         Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zej        ddfd„ZdS ) ÚLinePlotz‰Line plot with multiple lines.

    Both x- and y-axis are value axis (so there are no seperate
    X and Y versions of this class).
    zIf true reverse plot order.r   r$   z,Distance between a data point and its label.Nz(Handle to the list of data point labels.r"   z9Formatting string or function used for data point labels.zHexplicit array of line label values, must match size of data if present.z.Color used for background border of plot area.ú0Color used for background interior of plot area.zHandle of the lines.zHandle of the x axis.zHandle of the y axis.z2Data to be plotted, list of (lists of) x/y tuples.z<list of callables, will be called with self, xscale, yscale.z If true use separate line group.z#If true use draw grids before axes.)rS   ÚreversePlotOrderÚlineLabelNudgeÚ
lineLabelsÚlineLabelFormatÚlineLabelArrayr+   r-   ÚlinesÚ
xValueAxisÚ
yValueAxisÚdataÚannotationsÚ
behindAxesÚ	gridFirstc                 óö  — t          j        | ¦  «         d| _        t          ¦   «         | _        t          ¦   «         | _        ddg| _        t          t          ¦  «        | _
        d| j
        _        d| _        t          j        | j
        d         _        t          j        | j
        d         _        t          t"          ¦  «        | _        d | _        d | _        d| _        d | _        g | _        d| _        d| _        d S )Nr   ©)r   r   )r)   r)   )ç      @r   )é   r‹   )é   é   )©r   r)   ©r)   r‹   ©rŠ   r)   )r‹   rŒ   ©rŒ   é   r   é
   )r   rm   r|   r   r‚   r   rƒ   r„   r   r!   r�   r*   ÚjoinedLinesr   Úredr+   Úbluer   r~   r   r€   r}   Ú_inFillr…   r†   r‡   ©rN   s    rD   rm   zLinePlot.__init__l   sÒ   € ÝÔ˜$ÑÔÐØ !ˆÔå$™,œ,ˆŒÝ$™,œ,ˆŒð 2Ø1ðˆŒ	õ
 -Õ-?Ñ@Ô@ˆŒ
Ø!"ˆŒ
ÔØˆÔÝ$*¤JˆŒ
�1ŒÔ!Ý$*¤KˆŒ
�1ŒÔ!å1µ%Ñ8Ô8ˆŒØ#ˆÔØ"ˆÔð !ˆÔð
 ˆŒØˆÔØˆŒØˆŒˆˆrC   c                 ó"   — | j         j        dk    S )Nr'   ©r�   r2   r˜   s    rD   r”   zLinePlot.joinedLines“   s   € àŒzÔ# \Ò1Ð1rC   c                 ó&   — |rdnd| j         _        d S )Nr'   r&   rš   )rN   rM   s     rD   r”   zLinePlot.joinedLines—   s   € à/0Ð<˜|˜|°fˆŒ
ÔÐÐrC   c                 ót  — t          dd¦  «        }ddg}t          ¦   «         }d|_        d|_        d|_        d|_        ||_        d|_        d	|_        t          j
        |_        t          j        |j        d
         _        t          d¦  «        |j        d
         _        t          j        |j        d         _        t          d¦  «        |j        d         _        d
|j        _        d|j        _        d|j        _        d
|j        _        d|j        _        d|j        _        |                     |¦  «         |S )z Shows basic use of a line chart.é�  éÈ   r‰   ©rŽ   r�   r�   )g      @r�   r‘   é2   é}   é,  r   ú%2.0fr   ÚFilledCircleÚFilledDiamondr�   é   )r   rz   ÚxÚyÚheightÚwidthr„   r”   r   r   Úblackr+   r•   r�   r   r.   r–   r‚   ÚvalueMinÚvalueMaxÚ	valueSteprƒ   rp   )rN   Údrawingr„   rX   s       rD   ÚdemozLinePlot.demo›   s  € õ ˜#˜sÑ#Ô#ˆð 2Ø3ðˆõ
 ‰ZŒZˆàˆŒØˆŒØˆŒ	ØˆŒØˆŒØˆŒØ$ˆÔÝœˆŒå"(¤*ˆŒ�ŒÔÝ'¨Ñ7Ô7ˆŒ�ŒÔÝ"(¤+ˆŒ�ŒÔÝ'¨Ñ8Ô8ˆŒ�ŒÔà!"ˆŒÔØ!"ˆŒÔØ"#ˆŒÔà!"ˆŒÔØ!"ˆŒÔØ"#ˆŒÔà�Š�B‰ŒˆàˆrC   c                 óà  — t          | j        ¦  «        | _        t          t	          t          t           | j        ¦  «        ¦  «        ¦  «        | _        t          ¦   «         }g j        }| j	        j
        }| j        j
        }| j        }t          |¦  «        }t          |¦  «        D �]\  }}t          |t          ¦  «        r\|j        }	d|	cxk    r|k     r3n n0|	|k    rt!          d|z  ¦  «        ‚|                     ||	f¦  «         nt!          d|›d|	›�¦  «        ‚g j        }
t          |¦  «        D ]f\  }}|d         } |
t%          |¦  «        r% |t'          t)          |¦  «        ¦  «        ¦  «        n
 ||¦  «         ||d         ¦  «        f¦  «         Œg ||
j        ¦  «         �Œ|j        }|D ]\  }}	t          ||         |	¦  «        ||<   Œt          |¦  «        | _        || _        dS )z…Works out where they go.

        Sets an attribute _positions which is a list of
        lists of (x, y) matching the data.
        r   z)data row %r may not be paired with itselfz	data row z! is paired with invalid data row r   N)Úlenr„   Ú_seriesCountÚmaxÚlistÚmapÚ
_rowLengthÚsetÚappendr‚   Úscalerƒ   Ú	enumerateÚ
isinstancer   ÚotherÚ
ValueErrorrp   r   ÚmktimeÚmkTimeTupleÚ__self__Ú_pairInFillsÚ
_positions)rN   ÚpairsÚPÚxscaleÚyscaler„   ÚnrZ   r\   r½   r&   ÚcolNoÚdatumÚxvs                 rD   ÚcalcPositionszLinePlot.calcPositionsÂ   s   € õ   ¤	™NœNˆÔÝ�d¥3¥s¨4¬9Ñ#5Ô#5Ñ6Ô6Ñ7Ô7ˆŒå‘”ˆØŒIˆØ”Ô&ˆØ”Ô&ˆØŒyˆÝ�‰IŒIˆÝ# D™/œ/ð 	ñ 	‰JˆE�3Ý˜#�~Ñ.Ô.ð hØœ	�Ø�e�:�:’:�:˜A’:�:�:�:�:Ø˜e’|�|Ý(Ð)TÐW\Ñ)\Ñ]Ô]Ð]Ø—I’I˜u U˜mÑ,Ô,Ð,Ð,å$˜*ÐY^ÐY^ÐY^Ð`eÐ`eÐ%fÑgÔgÐgØ”9ˆDÝ )¨#¡¤ð ð ‘��uØ˜1”X�Ø�å7<¸R±y´yÐP�F�F�6¥+¨b¡/¤/Ñ2Ô2Ñ3Ô3Ð3ÀfÀfÈRÁjÄjØ�F˜5 œ8Ñ$Ô$ðñô ð ð ð ˆAˆdŒmÑÔÐÑØŒJˆð "ð 	6ð 	6‰LˆE�5Ý% a¨¤h¨uÑ5Ô5ˆAˆe‰HˆHÝ ™JœJˆÔØˆŒˆˆrC   c                 ó@  — | j         }| j        |         |         d         }|€d}nƒt          |t          ¦  «        r |dk    r| j        |         |         }nT||z  }nNt          |d¦  «        r,t          |d¦  «        s ||¦  «        }n" || ||||¦  «        }nt          d|z  ¦  «        ‚|rq| j        ||f         }|j        sdS |dk    r| 	                    ||| j
        z   ¦  «         n| 	                    ||| j
        z
  ¦  «         |                     |¦  «         nd}|S )z*Draw a label for a given item in the list.r   NÚvaluesÚ__call__Ú__labelFmtEX__z6Unknown formatter type %s, expected string or functionr   )r   r„   r¼   Ústrr€   Úhasattrr¾   r~   ÚvisibleÚ	setOriginr}   ÚsetText)	rN   rZ   rÉ   r§   r¨   ÚlabelFmtÚ
labelValueÚ	labelTextÚlabels	            rD   Ú_innerDrawLabelzLinePlot._innerDrawLabelí   sY  € ð Ô'ˆØ”Y˜uÔ% eÔ,¨QÔ/ˆ
àÐØˆIˆIÝ˜¥Ñ%Ô%ð 	aØ˜8Ò#Ð#Ø Ô/°Ô6°uÔ=�	�	à$ zÑ1�	�	Ý�X˜jÑ)Ô)ð 	aÝ˜8Ð$4Ñ5Ô5ð ;Ø$˜H ZÑ0Ô0�	�	à$˜H T¨%°°a¸Ñ:Ô:�	�	åÐUÐW_Ñ_Ñ`Ô`Ð`àð 
	Ø”O U¨E NÔ3ˆEØ”=Ð( & &à�1ŠuˆuØ—’  1 tÔ':Ñ#:Ñ;Ô;Ð;Ð;à—’  1 tÔ':Ñ#:Ñ;Ô;Ð;Ø�MŠM˜)Ñ$Ô$Ð$Ð$àˆEØˆrC   c                 ó\   — |                      |                      ||||¦  «        ¦  «         dS )zLDraw a label for a given item in the list.
        G must have an add methodN)rp   rÚ   )rN   ÚGrZ   rÉ   r§   r¨   s         rD   Ú	drawLabelzLinePlot.drawLabel  s0   € ð 	
�Šˆd×"Ò" 5¨¨q°Ñ3Ô3Ñ4Ô4Ð4Ð4Ð4rC   c                 ó  ‡6‡7— t          ¦   «         }| j        }| j        }t          | dd ¦  «        }|r!t	          |j        |j        ¦  «        }|j        }| j        }| j        }t          | dd ¦  «        }	| j	        Š6t          ‰6¦  «        Š7|	s0| j        s)ˆ6ˆ7fd„t          t          |¦  «        ¦  «        D ¦   «         rRt          |	dd ¦  «        }
|
€|j        }
n|                     |
¦  «        }
|j        }||j        z   }t          | d|¦  «        }d }t          | d|¦  «        }t          t          |¦  «        ¦  «        }| j        rt%          |¦  «        }|D �]6}||         }|‰7z  }‰6|         }t          |dd ¦  «        }t          |dd ¦  «        }t          |d	|¦  «        }t          |d
|	¦  «        }t          |dd ¦  «        }t          |dd ¦  «        }t'          |d¦  «        r|j        }nt'          ‰6d¦  «        r‰6j        }nd }|dk    �rW|€ét+          t-          t          |¦  «        ¦  «        dz
  }|dk    r| j        |z  dz
  n| j        }t          |dt1          d¦  «        ¦  «        }| j        }|                     d¦  «        }t+          |j        |¦  «        }t	          |j        |j        z   |¦  «        } | j        j        }!|!| j        j        z   }"t3          |t0          ¦  «        r	||dz  z  }n|dz  }|D ]g\  }}#|}$|#|k     r| n|}%||$dz  z  }||!k     r|$|!|z
  z  }$|!}n||$z   |"k    r|$|"|z
  z  }$|                     t7          ||%|$|#|%z
  |||¬¦  «        ¦  «         Œh�n|dk    �rt9          |¦  «        }&|st3          |t:          ¦  «        r©t          |dd ¦  «        }'t3          |t:          ¦  «        r+|&t9          t%          ||j                 ¦  «        ¦  «        z   }(n||
g|&z   ||
gz   }(|'r|'                     | ||||(¦  «         n0|                     tA          |(|||k    r|nd |pd¬¦  «        ¦  «         |r|dk    s||k    r:tC          |&|dd¬¦  «        })|r||)_        |r||)_"        |                     |)¦  «         t'          |d¦  «        r|j#        }*nt'          ‰6d¦  «        r‰6j#        }*nd }*|*rÄ|r| j$        |         }+tK          |¦  «        D ]¤\  },}-||,f‰6v rt          ‰6||,f         d|*¦  «        }.n|*}.|.|*u r|*}/|}0n|.}/t          |/d	|¦  «        }0tM          tO          |/|,¦  «        |-d         |-d         |0¦  «        }/|/r3|r||+|,         d         |z  dz  z  |/_(        |                     |/¦  «         Œ¥n³|r| j$        |         }+tK          |¦  «        D ]”\  },}-t          ‰6||,f         dd ¦  «        }.|.sŒ!t          |.d	t          |.d|¦  «        ¦  «        }0tM          |.|-d         |-d         |0¦  «        }/|/r3|r||+|,         d         |z  dz  z  |/_(        |                     |/¦  «         Œ•tK          |¦  «        D ]#\  }1}2|2\  }3}4|  )                    |||1|3|4¦  «         Œ$t          |dd ¦  «        }5|5r|5 *                    | ||||¦  «         �Œ8|S )NÚ_bubblePlotr—   c                 óH   •— g | ]}t          ‰|‰z           d d¦  «        ¯|‘ŒS )r4   F©rV   )Ú.0rZ   r�   Ú
styleCounts     €€rD   ú
<listcomp>z&LinePlot.makeLines.<locals>.<listcomp>$  sJ   ø€ ð Lð Lð L˜5Ý" 5¨¨zÑ)9Ô#:¸8ÀEÑJÔJðL�ð Lð Lð LrC   rK   Ú_inFillGÚ_lineGr+   r*   r-   r4   r,   r2   r(   r   r   r3   r    g{®Gázt?ç      à?r)   )r*   r+   r-   r'   r0   ro   ri   )r+   ÚstrokeLineCapÚstrokeLineJoinr.   r/   )+r	   rƒ   r‚   rV   ÚminÚ_bubbleRadiusÚ
_bubbleMaxr   rÃ   r�   r²   rÂ   ÚrangeÚ_yrº   Ú_xÚ_lengthr|   ÚreversedrÒ   r*   r´   r¶   rª   Ú
Percentager¼   rp   r
   r   r   r½   rf   r   r   r,   r.   r„   r»   r   r   ÚsizerÝ   r^   )8rN   rY   ÚyAÚxAÚ
bubblePlotÚbubbleRÚ	bubbleMaxrÖ   rÅ   r—   ÚinFillYÚinFillX0ÚinFillX1ÚinFillGÚbwÚlGÚRrZ   r\   Ú
styleRowNoÚrowStyler+   r*   r-   r4   Údashr2   rª   r§   r3   Úy0ÚbyposÚbynegÚxminÚxmaxr¨   ÚwÚ_y0re   r0   Úfpointsr&   ÚuSymbolÚdrowÚjÚxyÚjuSymbolr.   ÚsymColorrÉ   rÊ   Úx1Úy1r/   r�   rã   s8                                                         @@rD   Ú	makeLineszLinePlot.makeLines  sª  øø€ Ý‰GŒGˆØŒ_ˆØŒ_ˆÝ˜T -°Ñ5Ô5ˆ
Øð 	&Ý˜"Ô*¨2Ô+;Ñ<Ô<ˆGØœˆIàÔ'ˆàŒOˆÝ˜$˜y¨Ñ.Ô.ˆØ”
ˆÝ˜‘Z”Zˆ
Øð 	1�tÔ(ð 	1ðLð Lð Lð Lð L¥E­#¨a©&¬&¡M¤Mð Lñ Lô Lð	1õ ˜g h¨tÑ4Ô4ˆGØˆØœ%��àŸ(š( 7Ñ+Ô+�Ø”uˆHØ "¤*Ñ,ˆHÝ˜d :¨aÑ0Ô0ˆGØˆÝ�T˜( 1Ñ%Ô%ˆå•#�a‘&”&‰MŒMˆØÔ Ð1¥h¨q¡k¤k !Øð l	Bñ l	BˆEØ�E”(ˆCØ Ñ+ˆJØ˜ZÔ(ˆHÝ! (¨=¸Ñ>Ô>ˆKÝ! (¨=¸Ñ>Ô>ˆKÝ ¨+°{ÑCÔCˆIÝ˜X h¨wÑ7Ô7ˆFÝ˜8Ð%6¸Ñ=Ô=ˆDÝ ¨°TÑ:Ô:ˆIå�x Ñ/Ô/ð Ø Ô,��Ý˜ Ñ.Ô.ð ØÔ)��à�ð ˜%ÒÑØ�:Ý�C¥ A™JœJ™œ¨!Ñ+�AØ/0°ªs¨s˜$œ* Q™,¨Ñ*Ð*¸¼
�BÝ& x°
½:Àb¹>¼>ÑJÔJ�HØœ�AØŸš ™œ�BÝ ¤ R™LœL�EÝ ¤ Q¤Y¡¨rÑ2Ô2�EØœ?Ô-�DØ $¤/Ô"9Ñ9�DÝ! (­:Ñ6Ô6ð *Ø˜h u™nÑ,˜˜à% c™\˜Øð 
sð 
s‘D�A�qØ�Aà#$ R¢4 4˜%˜%¨U�CØ˜˜1™‘H�AØ˜’v�vØ˜T A™X™˜Ø ˜˜Ø˜1™˜tš˜Ø˜T A™X™˜Ø—E’E�$˜q  Q q¨¡u¸ÐQ\ÐgpÐqÑqÔqÑrÔrÐrÐrñ
sð ˜LÒ(Ñ(Ý  ™œ�Øð 	_�Z¨­NÑ;Ô;ð 	_Ý$ X¨x¸Ñ>Ô>�FÝ! #¥nÑ5Ô5ð SØ"(­7µ8¸A¸c¼i¼LÑ3IÔ3IÑ+JÔ+JÑ"J˜˜à#+¨GÐ"4°vÑ"=ÀÈ'Ð@RÑ"R˜Øð _ØŸš D¨°°yÀÑIÔIÐIÐIàŸš¥G¨G¸iÐcnÐpyÒcyÐcyÐT_ÐT_ð  @Dð  QVð  Q]ð  Z]ð  %^ñ  %^ô  %^ñ  _ô  _ð  _Øð ! ¨¢ ¨k¸9Ò.DÐ.DÝ# F°{ÐQRÐbcÐdÑdÔd�DØð 1Ø+0˜Ô(Øð 4Ø/3˜Ô,Ø—F’F˜4‘L”L�Lå�x Ñ*Ô*ð Ø"œ/��Ý˜ Ñ)Ô)ð Øœ,��à�àð &ØÐ6 d¤i°Ô&6˜tÝ% c™NœNð &ð &‘D�A�bØ" 1�~¨Ð.Ð.Ý#*¨5°¸A°Ô+>¸xÈÑ#PÔ#P˜˜à#*˜Ø 7Ð*Ð*Ø!(˜Ø#.˜˜à!)˜Ý#*¨6°+¸kÑ#JÔ#J˜Ý+­J°v¸aÑ,@Ô,@ÀÀAÄÀrÈ!ÄuÈXÑVÔV�FØð &Ø%ð NØ*1°4¸´7¸1´:¸iÑ3GÈ#Ñ2MÑ*M˜FœKØŸš˜f™œ˜øð&ð" Ð6 d¤i°Ô&6˜tÝ% c™NœNð &ð &‘D�A�bÝ& u¨Z¸¨\Ô':¸8ÀDÑIÔI�HØ#Ð- XÝ& x°½GÀHÈ]Ð[fÑ<gÔ<gÑhÔh�HÝ+¨H°R¸´U¸2¸a¼5ÀÑJÔJ�FØð &Ø%ð NØ*1°4¸´7¸1´:¸iÑ3GÈ#Ñ2MÑ*M˜FœKØŸš˜f™œ˜øõ  )¨™~œ~ð 8ð 8‘��eØ‘��BØ—’˜q %¨°°BÑ7Ô7Ð7Ð7å˜X x°Ñ6Ô6ˆFØÐA�v—|’| D¨¨5°¸SÑAÔAÐAùàˆrC   c                 óŒ	  — | j         }| j        }t          | dd ¦  «        rdx|_        |_        |                     | j        | j        | j        ¦  «         |r||_        |r||_        | 	                    | j
        ¦  «         |                     d¦  «        }|| j        | j        z   k    s|| j        k     r| j        }n|}|                     | j        || j        ¦  «         | 	                    | j
        ¦  «         |                      ¦   «          t          ¦   «         }|                     |                      ¦   «         ¦  «         | j        s| j        r||                     ¦   «          | j        r-t          ¦   «         | _        |                     | j        ¦  «         | j        r-t          ¦   «         | _        |                     | j        ¦  «         |                     ¦   «          |                     ¦   «          |j        r|j        gpg }|j        r|j        gpg }t          |dd¦  «        }|d k    rD|dv r"|                     |j        |j        z   ¦  «         |dv r|                     |j        ¦  «         t          |dd¦  «        }|d k    rD|dv r"|                     |j        |j        z   ¦  «         |dv r|                     |j        ¦  «         | j        r<|                     || |j        |¬¦  «         |                     || |j        |¬¦  «         |                     |                     ¦   «         ¦  «         |                     |                     ¦   «         ¦  «         | j        sbt          |d	d
¦  «        }	t          |d	d
¦  «        }
|	s|                     || |j        |¬¦  «         |
s|                     || |j        |¬¦  «         t          | dg ¦  «        }|D ]=}t          |dd ¦  «        r*|                      || |j        |j        ¦  «        ¦  «         Œ>|                     |                      ¦   «         ¦  «         | j        s@|	r|                     || |j        |¬¦  «         |
r|                     || |j        |¬¦  «         |D ]=}t          |dd ¦  «        s*|                      || |j        |j        ¦  «        ¦  «         Œ>|S )Nrß   r   r   ÚskipGridÚnone)ÚbothÚtop)r  Úbottom)ÚparentÚdimÚexcludeÚdrawGridLastFr…   ÚbeforeLines) rƒ   r‚   rV   rß   ÚsetPositionr§   r¨   r©   ÚjoinAxisÚ	configurer„   rº   rª   rÌ   r	   rp   ÚmakeBackgroundr—   r†   Ú_joinToAxisrå   ræ   ÚvisibleAxisrî   rï   r¹   rð   r‡   ÚmakeGridÚgetGridDimsÚdrawr  )rN   rô   rõ   ÚxAxisCrossesAtr¨   rY   ÚxAexÚyAexr  ÚxAdglÚyAdglr…   Úas                rD   r'  zLinePlot.draw¤  s”  € ØŒ_ˆØŒ_ˆÝ�4˜ dÑ+Ô+ð 	0Ø./Ð/ˆBŒN˜Rœ^Ø
�Š�t”v˜tœv t¤{Ñ3Ô3Ð3ØÐ˜RˆrŒ{ØÐ˜RˆrŒ{Ø
�Š�T”YÑÔÐð Ÿš !™œˆØ˜dœf t¤{Ñ2Ò2Ð2¸ÈÌÒ8OÐ8OØ”ˆAˆAàˆAà
�Š�t”v˜q $¤*Ñ-Ô-Ð-Ø
�Š�T”YÑÔÐØ×ÒÑÔÐÝ‰GŒGˆØ	�Šˆd×!Ò!Ñ#Ô#Ñ$Ô$Ð$ØŒ<ð 	#˜4œ?ð 	#Ø�NŠNÑÔÐØŒ|ð %Ý %¡¤�”Ø—’�d”mÑ$Ô$Ð$ØŒð #Ý#™gœg�”Ø—’�d”kÑ"Ô"Ð"Ø
�ŠÑÔÐØ
�ŠÑÔÐØŒ~Ð) 2¤5 'Ð/¨RˆØŒ~Ð) 2¤5 'Ð/¨RˆÝ˜2˜j¨Ñ0Ô0ˆØ�TŠ>ˆ>Ø˜>Ð)Ð)Ø—’˜BœE "¤*Ñ,Ñ-Ô-Ð-ØÐ,Ð,Ð,Ø—’˜BœEÑ"Ô"Ð"Ý˜2˜j¨Ñ0Ô0ˆØ�TŠ>ˆ>Ø˜>Ð)Ð)Ø—’˜BœE "¤*Ñ,Ñ-Ô-Ð-ØÐ,Ð,Ð,Ø—’˜BœEÑ"Ô"Ð"ØŒ>ð 	GØ�KŠK˜ ¨"¬.ÀˆKÑFÔFÐFØ�KŠK˜ ¨"¬.ÀˆKÑFÔFÐFØ	�Šˆb�gŠg‰iŒiÑÔÐØ	�Šˆb�gŠg‰iŒiÑÔÐØŒ~ð 	UÝ˜B˜~¨eÑ4Ô4ˆEÝ˜B˜~¨eÑ4Ô4ˆEØÐT˜"Ÿ+š+ a¨t¸¼Èt˜+ÑTÔTÐTØÐT˜"Ÿ+š+ a¨t¸¼Èt˜+ÑTÔTÐTÝ˜d =°Ñ4Ô4ˆØð 	1ð 	1ˆAÝ�q˜ tÑ,Ô,ð 1Ø—’�a�a˜˜RœX b¤hÑ/Ô/Ñ0Ô0Ð0øØ	�Šˆd�nŠnÑÔÑÔÐØŒ~ð 	QØÐP�b—k’k !¨4°B´NÈ4�kÑPÔPÐPØÐP�b—k’k !¨4°B´NÈ4�kÑPÔPÐPØð 	1ð 	1ˆAÝ˜1˜]¨4Ñ0Ô0ð 1Ø—’�a�a˜˜RœX b¤hÑ/Ô/Ñ0Ô0Ð0øØˆrC   Tc                 ó¸   ‡‡‡‡‡‡	‡
— ddl mŠ	mŠ
 ˆfd„t          | dg ¦  «        D ¦   «         }ˆ	ˆ
ˆˆˆˆfd„}||_        |                     |¦  «         || _        d S )Nr   )r	   ÚLinec                 ó>   •— g | ]}t          |d d¦  «        ‰k    ¯|‘ŒS )r1   Nrá   )râ   r-  r1   s     €rD   rä   z)LinePlot.addCrossHair.<locals>.<listcomp>ë  s1   ø€ ÐaÐaÐa˜QÅGÈAÈfÐUYÑDZÔDZÐ\`ÒD`ÐD`�qÐD`ÐD`ÐD`rC   r…   c           
      ó<  •—  |‰¦  «        } |‰¦  «        } ‰¦   «         }|j         }|                      ‰	|j        ||j        |j        z   |‰
‰¬¦  «        ¦  «         |j         }|                      ‰	||j        ||j        |j        z   ‰
‰¬¦  «        ¦  «         |S )N)r+   r*   )rÁ   rp   rï   rð   rî   )rN   ÚxScaleÚyScaler§   r¨   rY   rõ   rô   r	   r/  r+   r*   rË   Úyvs           €€€€€€rD   Ú
annotationz)LinePlot.addCrossHair.<locals>.annotationì  s¥   ø€ Ø��r‘
”
ˆAØ��r‘
”
ˆAØ�‘”ˆAØ”ˆBØ�EŠE�$�$�r”u˜Q˜rœu R¤ZÑ/°¸kÐVaÐbÑbÔbÑcÔcÐcØ”ˆBØ�EŠE�$�$�q˜œ˜q ¤ r¤zÑ!1¸kÐVaÐbÑbÔbÑcÔcÐcØˆHrC   )Úreportlab.graphics.shapesr	   r/  rV   r  r¹   r…   )rN   r1   rË   r4  r+   r*   r  r…   r5  r	   r/  s    `````   @@rD   ÚaddCrossHairzLinePlot.addCrossHairé  s¤   øøøøøøø€ Ø9Ð9Ð9Ð9Ð9Ð9Ð9Ð9ØaÐaÐaÐa¥'¨$¨}¸RÑ"@Ô"@ÐaÑaÔaˆð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð "-ˆ
ÔØ×Ò˜:Ñ&Ô&Ð&Ø&ˆÔÐÐrC   )r5   r6   r7   rq   r8   r   r9   r_   r:   r;   rA   rm   Úpropertyr”   Úsetterr°   rÌ   rÚ   rÝ   r  r'  r   r«   r7  rB   rC   rD   rz   rz   T   s   € € € € € ðð ð
 ˆw˜HØ'˜<¨	Ð8UÐdeÐfÑfÔfØ%˜ hÐ5cÐrsÐtÑtÔtØ!�\ $Ð-WÐXÑXÔXØ&˜, tÐ2mÐnÑnÔnØ%˜ dÐ1{Ð|Ñ|Ô|à"�l =Ð7gÐhÑhÔhØ �L Ð5gÐhÑhÔhØ�˜TÐ(>Ð?Ñ?Ô?Ø!�\ $Ð-DÐEÑEÔEØ!�\ $Ð-DÐEÑEÔEØˆ|˜DÐ'[Ð\Ñ\Ô\Ø"�l 4Ð.lÐ{|Ð}Ñ}Ô}Ø!�\ )Ð2TÐcdÐeÑeÔeØ �L Ð1VÐefÐgÑgÔgð
ñ 
ô 
€Hð$%ð %ð %ðN ð2ð 2ñ „Xð2ð Ôð=ð =ñ Ôð=ð$ð $ð $ðN)ð )ð )ðV ð  ð  ðD5ð 5ð 5ð
Nð Nð Nð`Cð Cð CðJ 28´È!ÐX\ð 'ð 'ð 'ð 'ð 'ð 'rC   rz   c            
       ó®   — e Zd Z ee eed¬¦  «         eed¬¦  «         eed¬¦  «         eed¬¦  «        ¬¦  «        ZdZdZ	dZ
d	Zd
„ Zd„ Zd„ Zd„ ZdS )Ú
LinePlot3Dzdx/dzr"   zdy/dzzdepth of an individual serieszz gap around series)rS   Útheta_xÚtheta_yÚzDepthÚzSpacerç   r“   r‹   c                 óî   — t                                | ¦  «         | j        }| j        }| j        }| j        j        dk    r||z  |dz   |z  z   }n|d|z  z   }| j        |z  | _        | j	        |z  | _
        d S )NÚparallel_3dr   r)   )rz   rÌ   r³   r?  r>  r‚   Ústyler<  Ú_3d_dxr=  Ú_3d_dy)rN   ÚnSeriesr?  r>  Ú	_3d_depths        rD   rÌ   zLinePlot3D.calcPositions  sƒ   € Ý×Ò˜tÑ$Ô$Ð$ØÔ#ˆØ”ˆØ”ˆØŒ?Ô  -Ò/Ð/Ø ™¨°©	°6Ñ'9Ñ9ˆIˆIà  6¡Ñ)ˆIØ”l 9Ñ,ˆŒØ”l 9Ñ,ˆŒˆˆrC   c                 óZ   — | j         }| j        j        dk    r|| j        |z   z  |z   }n|}|S )NrA  )r?  r‚   rB  r>  )rN   rZ   r?  Úz0s       rD   Ú_calc_z0zLinePlot3D._calc_z0  s;   € Ø”ˆØŒ?Ô  -Ò/Ð/Ø˜œ FÑ*Ñ+¨FÑ2ˆBˆBàˆBØˆ	rC   c                 ó6   — ||| j         z  z   ||| j        z  z   fS rH   )r<  r=  )rN   r§   r¨   Úzs       rD   Ú_zadjustzLinePlot3D._zadjust  s#   € Ø��4”<‘Ñ  1 T¤\¡>Ñ!1Ð1Ð1rC   c                 ó¢  — t          | dd ¦  «        }|r
J d¦   «         ‚| j        }| j        }t          t	          t          |¦  «        ¦  «        ¦  «        }| j        r|                     ¦   «          t          | dd ¦  «        }|r
J d¦   «         ‚| j        }| j	        }| j
        }| j        }	ddlm}
  |
¦   «         }ddlm}m} | j        j        dk    r•t          | d	d
¦  «        }t          | dd ¦  «        rpddlm} t          t)          ||¦  «        ¦  «        } |||¬¦  «        }d }|D ]8\  }}}}||k    r|}d}n|d
z  }||                              ||z   ||f¦  «         Œ9d }n|}nd }|}t          | j        ¦  «        }|D �]ù}||         }t          |¦  «        }| j        ||z           }|j        }t          |dd ¦  «        }|                      |¦  «        }||z   } t3          |d¦  «        r|j        }!n$t3          | j        d¦  «        r| j        j        }!nd }!| j        r_|r]||         }"|"d         \  }#}$t	          d
t          |"¦  «        ¦  «        D ],}%|"|%         \  }&}' |||#|&|$|'|| ||	|d |d d d d¬¦  «         |&|'}$}#Œ-t3          |d¦  «        r|j        }(n$t3          | j        d¦  «        r| j        j        }(nd }(|(r[|D ]X})||%         \  }&}' ||&|'|¦  «        \  }&}'t;          |(|)d         |)d
         |¦  «        }*|*r|                     d
|||&|'|*f¦  «         ŒYt	          |¦  «        D ]R}%||%         \  }&}' ||&|'|¦  «        \  }&}'|                      ||%|&|'¦  «        }+|+r|                     d|||&|'|+f¦  «         ŒS�Œû|                      ¦   «          tC          ¦   «         },| "                    ¦   «         D ]}-|,                     |-d         ¦  «         Œ|,S )Nrß   z$_bubblePlot not supported for 3d yetr—   zinFill not supported for 3d yetr   )Ú
_FakeGroup)Ú_make_3d_line_infoÚfind_intersectionsrA  Ú_3d_tilewidthr   Ú_find_intersections)Úcopy)Úsmallr,   r*   ro   )ÚfillColorShadedÚ	tileWidthr+   r*   r,   Úshadingr.   r)   éÿÿÿÿ)#rV   r   rÃ   rµ   rí   r²   r|   Úreverser>  rL  r<  r=  Ú$reportlab.graphics.charts.linechartsrN  Ú!reportlab.graphics.charts.utils3drO  rP  r‚   rB  rS  r¶   Úinsertr�   r+   rI  rÒ   r*   r”   r.   r   rp   rÚ   Úsortr	   Úvalue).rN   rö   rÖ   Ú	positionsrÅ   r4   r>  rL  r<  r=  rN  ÚFrO  rP  rV  rS  Ú
fpositionsÚIÚicÚir  r§   r¨   Újcrã   rZ   r\   rÈ   r  r[   r  rH  Úz1rª   ÚfrowÚx0r  rÉ   r  r  r  r  r.   ÚLrY   rM   s.                                                 rD   r  zLinePlot3D.makeLines  s§  € Ý˜T -°Ñ5Ô5ˆ
ØÐEÐEÐEÑEÔEÐEð Ô'ˆØ”Oˆ	å••s˜9‘~”~Ñ&Ô&Ñ'Ô'ˆØÔ Ð- !§)¢)¡+¤+ +Ý˜˜i¨Ñ-Ô-ˆØÐ<Ð<Ð<Ñ<Ô<Ð<ð ”ˆØ”=ˆØ”,ˆØ”,ˆØCÐCÐCÐCÐCÐCØˆJ‰LŒLˆà\Ð\Ð\Ð\Ð\Ð\Ð\Ð\ØŒ?Ô  -Ò/Ð/Ý  _°QÑ7Ô7ˆIÝ�tÐ1°$Ñ7Ô7ð 'Ø%Ð%Ð%Ð%Ð%Ð%Ý!¥# d¨9Ñ"5Ô"5Ñ6Ô6�
Ø&Ð& z¸	ÐBÑBÔB�Ø�Ø ð 5ð 5‘G�A�a˜˜!Ø˜1’u�uØ˜Ø˜˜à˜A™˜Ø˜q”M×(Ò(¨¨2©¨q°¨eÑ4Ô4Ð4Ð4Ø �	�	à&�
�
àˆIØ"ˆJõ ˜œ‘_”_ˆ
Øð 1	/ñ 1	/ˆEØ˜EÔ"ˆCÝ�C‘”ˆAØ”z %¨*Ñ"4Ô5ˆHØÔ+ˆHÝ˜8Ð%6¸Ñ=Ô=ˆDØ—’˜uÑ%Ô%ˆBØ�f‘ˆBå�x Ñ/Ô/ð Ø Ô,��Ý˜œ ]Ñ3Ô3ð Øœ
Ô.��à�ð Ôð (Øð 
(Ø% eÔ,�DØ! !œW‘F�B˜Ý!& q­¨T©¬Ñ!3Ô!3ð (ð (˜Ø!% e¤™˜˜BØ*Ð*¨A¨r°2°r¸2¸rÀ2Ø '¨Ø (¸$È)Ø,0¸dÐTXØ(+ð	-ñ -ô -ð -ð
 "$ R˜B˜˜å�x Ñ*Ô*ð Ø"œ/��Ý˜œ XÑ.Ô.ð Øœ*Ô+��à�àð =Øð =ð =�BØ  œZ‘F�B˜Ø%˜X b¨¨BÑ/Ô/‘F�B˜Ý+¨G°B°q´E¸"¸Q¼%ÀÑIÔI�FØÐ<˜qŸušu a¨¨2¨b°°FÐ%;Ñ<Ô<Ð<øõ ˜q™œð /ð /�Ø˜Uœ‘��BØ!˜ " R¨Ñ+Ô+‘��BØ×(Ò(¨°°r¸2Ñ>Ô>�ØÐ.�a—e’e˜Q˜r " R¨¨1Ð-Ñ.Ô.Ð.øñ	/ð 	
�Š‰ŒˆÝ‰GŒGˆØ—’‘”Ð(Ð(ˆA˜AŸEšE ! B¤%™LœL˜L˜LØˆrC   N)r5   r6   r7   r8   rz   r9   r:   rA   r<  r=  r>  r?  rÌ   rI  rL  r  rB   rC   rD   r;  r;  ù  sÍ   € € € € € Øˆw˜HØ�,˜x¨gÐ6Ñ6Ô6Ø�,˜x¨gÐ6Ñ6Ô6Ø�˜hÐ-LÐMÑMÔMØ�˜hÐ-BÐCÑCÔCð	
ñ 
ô 
€Hð €GØ€GØ€FØ€Fð
-ð 
-ð 
-ðð ð ð2ð 2ð 2ðjð jð jð jð jrC   r;  ) ©i‚¼0ç      Y@)éŸ¼0gq"Uoè
Y@)écß0gôt	âdY@)éÄß0gÀ˜ˆŒY@)é+à0gŸ=öŽhY@)éŽà0gÞkRæ°Y@)éóà0g#ïÁÞºY@)éVá0g™Þ´Ï™ÐY@)é»á0gþrwçÐY@)éâ0g_iÏ]^Z@)é‚â0g¯#ÙÀT[@)éçâ0g/+^vÿ[@)éJã0çÿbÈº[@)é¯ã0rx  )és1g¶ŠYŠ?ÿ[@)éÔ1g”åÚ¤r[@)é;1gaž:{�[@)éž1g'šQ=c›[@)é1gÿì¢C»U[@)éf1gãL¸ü[@)éË1gÑ–Îâ �[@)é/	1gæ`‘ºø½[@)é’	1gñ ‡R\@)é÷	1g%^OÏ.\@)éZ
1g¦cÎ3v\@)é¿
1g’+«Ÿm\@)éƒ-1gÄè^Ì;»[@)éå-1gªÕP´¡[@)éK.1gœ&}kñS\@)é®.1gó©ÜßÂ[@)é/1gøU¹Pùì[@)év/1g|\ÀpSe\@) rj  )rl  rk  )rm  g333333Y@)rn  g     €Y@)ro  gš™™™™yY@)rp  ç     ÀY@)rq  rŒ  )rr  çfffffÆY@)rs  r�  )rt  g33333³Y@)ru  gffffffZ@)rv  g33333[@)rw  gfffff[@)ry  gš™™™™ù[@)rz  gfffffF\@)r{  gÍÌÌÌÌŒ[@)r|  g33333ó[@)r}  g33333\@)r~  gfffff†[@)r  g33333S[@)r€  gÍÌÌÌÌÌ[@)r�  gÍÌÌÌÌì[@)r‚  çfffff&\@)rƒ  gÍÌÌÌÌL\@)r„  çš™™™™y\@)r…  gš™™™™Ù\@)r†  gÍÌÌÌÌ,\@)r‡  r�  )rˆ  g33333ó\@)r‰  gÍÌÌÌÌ\@)rŠ  rŽ  )r‹  gfffff¦\@c                   ó   — e Zd ZdZd„ ZdS )ÚSimpleTimeSeriesPlotzsA customized version of LinePlot.
    It uses NormalDateXValueAxis() and AdjYValueAxis() for the X and Y axes.
    c                 óž   — t                                | ¦  «         t          ¦   «         | _        t	          ¦   «         | _        t          | _        d S rH   )rz   rm   r   r‚   r   rƒ   Ú_monthlyIndexDatar„   r˜   s    rD   rm   zSimpleTimeSeriesPlot.__init__Í  s9   € Ý×Ò˜$ÑÔÐÝ.Ñ0Ô0ˆŒÝ$™,œ,ˆŒÝ%ˆŒ	ˆ	ˆ	rC   N)r5   r6   r7   rq   rm   rB   rC   rD   r‘  r‘  É  s-   € € € € € ðð ð&ð &ð &ð &ð &rC   r‘  c                   ón   — e Zd ZdZ ee edd¬¦  «         eed¬¦  «        ¬¦  «        Zd„ Z	d
d„Z
d	„ ZdS )ÚGridLinePlotaÃ  A customized version of SimpleTimeSeriesSPlot.
    It uses NormalDateXValueAxis() and AdjYValueAxis() for the X and Y axes.
    The chart has a default grid background with thin horizontal lines
    aligned with the tickmarks (and labels). You can change the back-
    ground to be any Grid or ShadedRect, or scale the whole chart.
    If you do provide a background, you can specify the colours of the
    stripes with 'background.stripeColors'.
    Nz3Background for chart area (now Grid or ShadedRect).r"   z&Scalefactor to apply to whole drawing.)rS   Ú
backgroundÚscaleFactorc                 óü   — ddl m} t                               | ¦  «         d | _        t          ¦   «         | _        d| j        _        d| j        _        d| j        _	        d| j        _
        |j        | j        _        d S )Nr   r   Ú
horizontalr   rç   )Úreportlab.libr   r‘  rm   r—  r   r–  ÚorientationÚuseRectsÚuseLinesr*   r«   r+   )rN   r   s     rD   rm   zGridLinePlot.__init__â  su   € Ø(Ð(Ð(Ð(Ð(Ð(Ý×%Ò% dÑ+Ô+Ð+ØˆÔÝ™&œ&ˆŒØ&2ˆŒÔ#Ø#$ˆŒÔ Ø#$ˆŒÔ Ø&)ˆŒÔ#Ø&,¤lˆŒÔ#Ð#Ð#rC   c                 óÌ  — ddl m} |st          dd¦  «        }t          ¦   «         }d|_        d|_        d|_        d|_        t          |_	        d|_
        |j        |_         |j        d	d
dddd	¬¦  «        }||j        d         _        d|j        d         _        d |j        d         _         |j        dddddd	¬¦  «        }||j        d         _        d|j        d         _        ddg|j        d         _        d|j        j        _        d|j        j        _        d|j        j        _        d|j        j        _        d|j        j        _        d|j        j        _        d|j        _        d|j        _        d|j        _        d|j        j        _        t;          ¦   «         |_        |j        |j         g|j        _!        d|j        _"        | #                    |d¦  «         |S )Nr   r   r�   rž   r    r¡   r¢   r   éd   éA   é   zPANTONE 288 CV)ÚspotNameÚdensityr)   éO   é[   zPANTONE Wm Red CVr‹   r“   Ústartr  iÓÿÿÿiøÿÿÿz	{mm}/{yy}z%5d%% r�   rT   Úplot)$rš  r   r   r•  r§   r¨   r©   rª   r“  r„   r”   r«   r+   Ú
PCMYKColorr�   r*   r,   r‚   ÚlabelsÚfontSizeÚ
textAnchorÚ	boxAnchorÚangleÚdxÚdyÚxLabelFormatrƒ   ÚlabelTextFormatÚtickLeftr   r–  ÚpinkÚ	lightblueÚstripeColorsr›  rp   )rN   r¯   r   rX   Úc0Úc1s         rD   r°   zGridLinePlot.demoí  s»  € Ø(Ð(Ð(Ð(Ð(Ð(Øð 	(Ý˜c 3Ñ'Ô'ˆGÝ‰^Œ^ˆØˆŒØˆŒØˆŒ	ØˆŒÝ#ˆŒØˆŒØœˆŒØˆVÔ˜s 2 a¨Ð5EÈsÐSÑSÔSˆØ"$ˆŒ�ŒÔØ"#ˆŒ�ŒÔØ&*ˆŒ�ŒÔ#ØˆVÔ˜q  B qÐ3FÐPSÐTÑTÔTˆØ"$ˆŒ�ŒÔØ"#ˆŒ�ŒÔØ'(¨ eˆŒ�ŒÔ#Ø(*ˆŒÔÔ%Ø*1ˆŒÔÔ'Ø),ˆŒÔÔ&Ø%(ˆŒÔÔ"Ø"#ˆŒÔÔØ"$ˆŒÔÔØ%0ˆŒÔ"Ø(0ˆŒÔ%Ø!"ˆŒÔØ(*ˆŒÔÔ%Ý™œˆŒØ&,¤k°6Ô3CÐ%DˆŒÔ"Ø$.ˆŒÔ!Ø�Š�B�vÑÔÐØˆrC   c                 ó  — | j         | j        }}|r||_        |r||_        |                     | j        | j        | j        ¦  «         |                     | j        ¦  «         | 	                    d¦  «        }|| j        | j        z   k    s|| j        k     r| j        }n|}|                     | j        || j
        ¦  «         |                     | j        ¦  «         | j        }t          |t          ¦  «        �r,|j        dk    r‹|j        r„t!          t#          |j	        |j        g|j        z   ¦  «        ¦  «        }g }t'          t)          |¦  «        dz
  ¦  «        D ])}|                     ||dz            ||         z
  ¦  «         Œ*||_        �n®|j        dk    r‰|j        r‚t!          t#          |j	        |j        g|j        z   ¦  «        ¦  «        }	g }t'          t)          |	¦  «        dz
  ¦  «        D ])}|                     |	|dz            |	|         z
  ¦  «         Œ*||_        �nt          |t.          ¦  «        �r| j        |j        _        | j        |j        _        | j
        |j        _
        | j        |j        _        | j        |j        _        | j        |j        _        | j
        |j        _
        | j        |j        _        |j        j        dk    r�|j        rˆt!          t#          |j	        |j        g|j        z   ¦  «        ¦  «        }g }t'          t)          |¦  «        dz
  ¦  «        D ])}|                     ||dz            ||         z
  ¦  «         Œ*||j        _        nž|j        j        dk    rŽ|j        r‡t!          t#          |j	        |j        g|j        z   ¦  «        ¦  «        }	g }t'          t)          |	¦  «        dz
  ¦  «        D ])}|                     |	|dz            |	|         z
  ¦  «         Œ*||j        _        |j        j        dk    r�|j        rˆt!          t#          |j	        |j        g|j        z   ¦  «        ¦  «        }g }t'          t)          |¦  «        dz
  ¦  «        D ])}|                     ||dz            ||         z
  ¦  «         Œ*||j        _        nž|j        j        dk    rŽ|j        r‡t!          t#          |j	        |j        g|j        z   ¦  «        ¦  «        }	g }t'          t)          |	¦  «        dz
  ¦  «        D ])}|                     |	|dz            |	|         z
  ¦  «         Œ*||j        _        |                      ¦   «          | j
        | j        | j        }}}
|r|dk    r|dd|ddf|_        nt;          ¦   «         }|                     |                      ¦   «         ¦  «         |                     | j         ¦  «         |                     | j        ¦  «         |                     |                       ¦   «         ¦  «         |S )Nr   rT   r   r™  )!r‚   rƒ   r   r  r§   r¨   r©   r!  r„   rº   rª   r–  r¼   r   r›  Ú_tickValuesrµ   r¶   Ú	_valueMinrí   r²   r¹   Ú
deltaStepsr   Úgrid0Úgrid1rÌ   r—  Ú	transformr	   rp   r"  r  )rN   ÚxvaÚyvar(  r¨   ÚbackÚxposÚstepsrd  Úyposrª   r©   r—  rY   s                 rD   r'  zGridLinePlot.draw  sn  € Ø”? D¤OˆSˆØÐ"˜s�”ØÐ"˜s�”à�Š˜œ ¤¨¬Ñ4Ô4Ð4Ø�Š�d”iÑ Ô Ð ð Ÿš 1™œˆØ˜dœf t¤{Ñ2Ò2Ð2¸ÈÌÒ8OÐ8OØ”ˆAˆAàˆAà�Š˜œ  4¤:Ñ.Ô.Ð.Ø�Š�d”iÑ Ô Ð àŒˆÝ�d�DÑ!Ô!ñ 0	.ØÔ :Ò-Ð-°#´/Ð-Ý�C ¤	¨C¬M¨?¸S¼_Ñ+LÑMÔMÑNÔN�Ø�Ý�s 4™yœy¨™{Ñ+Ô+ð 6ð 6�AØ—L’L  a¨¡c¤¨T°!¬WÑ!4Ñ5Ô5Ð5Ð5Ø"'�”‘ØÔ! \Ò1Ð1°c´oÐ1Ý�C ¤	¨C¬M¨?¸S¼_Ñ+LÑMÔMÑNÔN�Ø�Ý�s 4™yœy¨™{Ñ+Ô+ð 6ð 6�AØ—L’L  a¨¡c¤¨T°!¬WÑ!4Ñ5Ô5Ð5Ð5Ø"'�”ùÝ˜�jÑ)Ô)ñ #	.àœ6ˆDŒJŒLØœ6ˆDŒJŒLØ#œzˆDŒJÔØ $¤ˆDŒJÔØœ6ˆDŒJŒLØœ6ˆDŒJŒLØ#œzˆDŒJÔØ $¤ˆDŒJÔð ŒzÔ%¨Ò3Ð3¸¼Ð3Ý�C ¤	¨C¬M¨?¸S¼_Ñ+LÑMÔMÑNÔN�Ø�Ý�s 4™yœy¨™{Ñ+Ô+ð 6ð 6�AØ—L’L  a¨¡c¤¨T°!¬WÑ!4Ñ5Ô5Ð5Ð5Ø(-�”
Ô%Ð%Ø”Ô'¨<Ò7Ð7¸C¼OÐ7Ý�C ¤	¨C¬M¨?¸S¼_Ñ+LÑMÔMÑNÔN�Ø�Ý�s 4™yœy¨™{Ñ+Ô+ð 6ð 6�AØ—L’L  a¨¡c¤¨T°!¬WÑ!4Ñ5Ô5Ð5Ð5Ø(-�”
Ô%ØŒzÔ%¨Ò3Ð3¸¼Ð3Ý�C ¤	¨C¬M¨?¸S¼_Ñ+LÑMÔMÑNÔN�Ø�Ý�s 4™yœy¨™{Ñ+Ô+ð 6ð 6�AØ—L’L  a¨¡c¤¨T°!¬WÑ!4Ñ5Ô5Ð5Ð5Ø(-�”
Ô%Ð%Ø”Ô'¨<Ò7Ð7¸C¼OÐ7Ý�C ¤	¨C¬M¨?¸S¼_Ñ+LÑMÔMÑNÔN�Ø�Ý�s 4™yœy¨™{Ñ+Ô+ð 6ð 6�AØ—L’L  a¨¡c¤¨T°!¬WÑ!4Ñ5Ô5Ð5Ð5Ø(-�”
Ô%à×ÒÑÔÐà%)¤Z°´¸dÔ>N�{ˆvˆØð 	˜;¨š>˜>à&¨¨1¨k¸!¸AÐ>ˆAŒKˆKå‘”ˆAà	�Šˆd×!Ò!Ñ#Ô#Ñ$Ô$Ð$Ø	�ŠˆdŒoÑÔÐØ	�ŠˆdŒoÑÔÐØ	�Šˆd�nŠnÑÔÑÔÐàˆrC   rH   )r5   r6   r7   rq   r8   rz   r9   r@   rA   rm   r°   r'  rB   rC   rD   r•  r•  Ó  s–   € € € € € ðð ð ˆw˜HØ!�\ $Ð-bÐcÑcÔcØ"�l >Ð8`ÐaÑaÔað
ñ 
ô 
€Hð
	3ð 	3ð 	3ð"ð "ð "ð "ðHTð Tð Tð Tð TrC   r•  c                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚAreaLinePlotz@we're given data in the form [(X1,Y11,..Y1M)....(Xn,Yn1,...YnM)]c                 óh   — t                                | ¦  «         d| _        d| _        g d¢| _        d S )Nr   ))r   é   rŸ  r¡  )r)   é   r    é   )r‹   rÊ  éF   é(   )rz   rm   r—   r|   r„   r˜   s    rD   rm   zAreaLinePlot.__init__i  s6   € Ý×Ò˜$ÑÔÐØˆŒØ !ˆÔØ=Ð=Ð=ˆŒ	ˆ	ˆ	rC   c                 óÖ  — 	 | j         }t          |¦  «        }t          |d         ¦  «        }|dgz  }g | _         t          d|¦  «        D ]s}g }t          |¦  «        D ]E}||         ||         |         z   ||<   |                     ||         d         ||         f¦  «         ŒF| j                              |¦  «         Œtt                               | ¦  «        || _         S # || _         w xY w)Nr   r   )r„   r²   rí   r¹   rz   r'  )rN   ÚodatarÈ   ÚmÚSrd  ÚDr  s           rD   r'  zAreaLinePlot.drawo  sï   € ð	Ø”IˆEÝ�E‘
”
ˆAÝ�E˜!”H‘”ˆAØ�1�#‘ˆAØˆDŒIÝ˜1˜Q‘Z”Zð $ð $�Ø�Ý˜q™œð 1ð 1�AØ˜Qœ4 %¨¤(¨1¤+Ñ-�A�a‘DØ—H’H˜e Aœh qœk¨!¨A¬$Ð/Ñ0Ô0Ð0Ð0Ø”	× Ò  Ñ#Ô#Ð#Ð#Ý—=’= Ñ&Ô&àˆDŒIˆIø˜ˆDŒIÐÐÐÐs   ‚CC Ã	C(N)r5   r6   r7   rq   rm   r'  rB   rC   rD   rÆ  rÆ  g  s8   € € € € € ØJÐJð>ð >ð >ðð ð ð ð rC   rÆ  c                   ó   — e Zd Zd„ ZdS )ÚSplitLinePlotc                 óÐ  — t                                | ¦  «         t          ¦   «         | _        t	          ¦   «         | _        g d¢| _        d | j        _        d| j        _        d| j        _	        d| j        _
        t          j        d¦  «        | j        d         _        t          j        d¦  «        | j        d         _        t          j        d¦  «        | j        d         _        d S )N)È)i‰¤1çffffffî?çš™™™™™©?ç        )ií¤1rÕ  rÖ  r×  )iQ¥1rÕ  rÖ  r×  )iµ¥1rÕ  rÖ  r×  )i¦1rÕ  rÖ  r×  )i}¦1rÕ  rÖ  r×  )iá¦1rÕ  rÖ  r×  )i¥É1rÕ  rÖ  r×  )i	Ê1rÕ  rÖ  r×  )imÊ1rÕ  rÖ  r×  )iÑÊ1rÕ  rÖ  r×  )i5Ë1rÕ  rÖ  r×  )i™Ë1rÕ  rÖ  r×  )iýË1rÕ  rÖ  r×  )iaÌ1rÕ  rÖ  r×  )iÅÌ1rÕ  rÖ  r×  )i)Í1rÕ  rÖ  r×  )i�Í1rÕ  rÖ  r×  )iñÍ1rÕ  rÖ  r×  )iµð1rÕ  rÖ  r×  )iñ1rÕ  rÖ  r×  )i}ñ1rÕ  rÖ  r×  )iáñ1rÕ  rÖ  r×  )iEò1rÕ  rÖ  r×  )i©ò1rÕ  rÖ  r×  )ió1rÕ  rÖ  r×  )iqó1rÕ  rÖ  r×  )iÕó1rÕ  rÖ  r×  )i9ô1rÕ  rÖ  r×  )i�ô1rÕ  rÖ  r×  )iõ1rÕ  rÖ  r×  )iÅ2rÕ  rÖ  r×  )i)2rÕ  rÖ  r×  )i�2rÕ  rÖ  r×  )iñ2rÕ  rÖ  r×  )iU2rÕ  rÖ  r×  )i¹2rÕ  rÖ  r×  )i2rÕ  rÖ  r×  )i�2rÕ  rÖ  r×  )iå2rÕ  rÖ  r×  )iI2rÕ  rÖ  r×  )i­2rÕ  rÖ  r×  )i2rÕ  rÖ  r×  )iÕ>2rÕ  rÖ  r×  )i9?2rÕ  rÖ  r×  )i�?2rÕ  rÖ  r×  )i@2rÕ  rÖ  r×  )ie@2rÕ  rÖ  r×  )iÉ@2rÕ  rÖ  r×  )i-A2rÕ  rÖ  r×  )i‘A2rÕ  rÖ  r×  )iõA2rÕ  rÖ  r×  )iYB2rÕ  rÖ  r×  )i½B2rÕ  rÖ  r×  )i!C2rÕ  rÖ  r×  )iåe2rÕ  rÖ  r×  )iIf2rÕ  rÖ  r×  )i­f2rÕ  rÖ  r×  )ig2rÕ  rÖ  r×  )iug2rÕ  rÖ  r×  )iÙg2rÕ  rÖ  r×  )i=h2rÕ  rÖ  r×  )i¡h2rÕ  rÖ  r×  )ii2rÕ  rÖ  r×  )iii2rÕ  rÖ  r×  )iÍi2rÕ  rÖ  r×  )i1j2rÕ  rÖ  r×  )iõŒ2rÕ  rÖ  r×  )iY�2ç…ëQ¸í?ç
×£p=
·?r×  )i½�2rØ  rÙ  r×  )i!Ž2rØ  rÙ  r×  )i…Ž2rØ  rÙ  r×  )iéŽ2rØ  rÙ  r×  )iM�2rØ  rÙ  r×  )i±�2rØ  rÙ  r×  )i�2rØ  rÙ  r×  )iy�2rØ  rÙ  r×  )iÝ�2rØ  rÙ  r×  )iA‘2rØ  rÙ  r×  )i´2rØ  rÙ  r×  )ii´2çìQ¸…ëé?çR¸…ëQÈ?r×  )iÍ´2rÚ  rÛ  r×  )i1µ2rÚ  rÛ  r×  )i•µ2rÚ  rÛ  r×  )iùµ2rÚ  rÛ  r×  )i]¶2rÚ  rÛ  r×  )iÁ¶2rÚ  rÛ  r×  )i%·2rÚ  rÛ  r×  )i‰·2rÚ  rÛ  r×  )ií·2rÚ  rÛ  r×  )iQ¸2rÚ  rÛ  r×  )iÛ2rÚ  rÛ  r×  )iyÛ2ç
×£p=
ç?çìQ¸…ëÑ?r×  )iÝÛ2rÜ  rÝ  r×  )iAÜ2rÜ  rÝ  r×  )i¥Ü2rÜ  rÝ  r×  )i	Ý2rÜ  rÝ  r×  )imÝ2rÜ  rÝ  r×  )iÑÝ2rÜ  rÝ  r×  )i5Þ2rÜ  rÝ  r×  )i™Þ2rÜ  rÝ  r×  )iýÞ2rÜ  rÝ  r×  )iaß2rÜ  rÝ  r×  )i%3rÜ  rÝ  r×  )i‰3çö(\�Âõà?ç®GázÞ?r×  )ií3rÞ  rß  r×  )iQ3rÞ  rß  r×  )iµ3rÞ  rß  r×  )i3rÞ  rß  r×  )i}3rÞ  rß  r×  )iá3rÞ  rß  r×  )iE3rÞ  rß  r×  )i©3rÞ  rß  r×  )i3rÞ  rß  r×  )iq3rÞ  rß  r×  )i5)3rÞ  rß  r×  )i™)3ç)\�Âõ(Ü?çìQ¸…ëá?r×  )iý)3rà  rá  r×  )ia*3rà  rá  r×  )iÅ*3rà  rá  r×  )i)+3rà  rá  r×  )i�+3rà  rá  r×  )iñ+3rà  rá  r×  )iU,3rà  rá  r×  )i¹,3rà  rá  r×  )i-3rà  rá  r×  )i�-3rà  rá  r×  )iEP3rà  rá  r×  )i©P3ç
×£p=
×?rç   çìQ¸…ëÁ?)iQ3râ  rç   rã  )iqQ3râ  rç   rã  )iÕQ3râ  rç   rã  )i9R3râ  rç   rã  )i�R3râ  rç   rã  )iS3râ  rç   rã  )ieS3râ  rç   rã  )iÉS3râ  rç   rã  )i-T3râ  rç   rã  )i‘T3râ  rç   rã  )iUw3râ  rç   rã  )i¹w3ç333333Ó?ç=
×£p=Ú?ç�Âõ(\�Ò?)ix3rä  rå  ræ  )i�x3rä  rå  ræ  )iåx3rä  rå  ræ  )iIy3rä  rå  ræ  )i­y3rä  rå  ræ  )iz3rä  rå  ræ  )iuz3rä  rå  ræ  )iÙz3rä  rå  ræ  )i={3rä  rå  ræ  )i¡{3rä  rå  ræ  )iež3rä  rå  ræ  )iÉž3ç¤p=
×£Ð?râ  çR¸…ëQØ?)i-Ÿ3rç  râ  rè  )i‘Ÿ3rç  râ  rè  )iõŸ3rç  râ  rè  )iY 3rç  râ  rè  )i½ 3rç  râ  rè  )i!¡3rç  râ  rè  )i…¡3rç  râ  rè  )ié¡3rç  râ  rè  )iM¢3rç  râ  rè  )i±¢3rç  râ  rè  )iuÅ3rç  râ  rè  )iÙÅ3çš™™™™™É?rä  rç   )i=Æ3ré  rä  rç   )i¡Æ3ré  rä  rç   )iÇ3ré  rä  rç   )iiÇ3ré  rä  rç   )iÍÇ3ré  rä  rç   )i1È3ré  rä  rç   )i•È3ré  rä  rç   )iùÈ3ré  rä  rç   )i]É3ré  rä  rç   )iÁÉ3ré  rä  rç   )i…ì3ré  rä  rç   )iéì3ç¤p=
×£À?ç®Gáz®×?rç   )iMí3rê  rë  rç   )i±í3rê  rë  rç   )iî3rê  rë  rç   )iyî3rê  rë  rç   )iÝî3rê  rë  rç   )iAï3rê  rë  rç   )i¥ï3rê  rë  rç   )i	ð3rê  rë  rç   )imð3rê  rë  rç   )iÑð3rê  rë  rç   )i•4rê  rë  rç   )iù4ro   çš™™™™™Ù?rç   )i]4ro   rì  rç   )iÁ4ro   rì  rç   )i%4ro   rì  rç   )i‰4ro   rì  rç   )ií4ro   rì  rç   )iQ4ro   rì  rç   )iµ4ro   rì  rç   )i4ro   rì  rç   )i}4ro   rì  rç   )iá4ro   rì  rç   )i¥:4ro   rì  rç   r   iÌ3  iÿÃ™ r   i3 Ì r)   )rÆ  rm   r   r‚   r   rƒ   r„   ÚrequiredRangeÚleftAxisPercentÚleftAxisOrigShiftMinÚleftAxisOrigShiftIPCr   ÚtoColorr�   r+   r˜   s    rD   rm   zSplitLinePlot.__init__�  s½   € Ý×Ò˜dÑ#Ô#Ð#Ý.Ñ0Ô0ˆŒÝ'™/œ/ˆŒð xMð  xMð  xMˆŒ	Ø(,ˆŒÔ%Ø*+ˆŒÔ'Ø/0ˆŒÔ,Ø/0ˆŒÔ,Ý$*¤N°8Ñ$<Ô$<ˆŒ
�1ŒÔ!Ý$*¤N°8Ñ$<Ô$<ˆŒ
�1ŒÔ!Ý$*¤N°8Ñ$<Ô$<ˆŒ
�1ŒÔ!Ð!Ð!rC   N)r5   r6   r7   rm   rB   rC   rD   rÓ  rÓ  €  s#   € € € € € ð=ð =ð =ð =ð =rC   rÓ  c           	      óÈ   — t          | t          t          f¦  «        s| f} d„ | D ¦   «         } | r4t          t          t	          t
          ||fd„| ¦  «        ¦  «        ¦  «        pdS )z0return max stringWidth for the list of strings Tc                 ó   — g | ]}|¯|‘ŒS rB   rB   )râ   Ú_fs     rD   rä   z_maxWidth.<locals>.<listcomp>‘  s   € ÐÐÐ�˜2ÐˆÐÐÐrC   c                 ó   —  || ||¦  «        S rH   rB   )ÚtÚsWÚfNÚfSs       rD   ú<lambda>z_maxWidth.<locals>.<lambda>’  s   € ÐPRÐPRÐSTÐUWÐXZÑP[ÔP[€ rC   r   )r¼   Útuplerµ   r´   r¶   r   )ÚTÚfontNamerª  s      rD   Ú	_maxWidthrþ  Ž  sh   € å�a��t˜Ñ%Ô%Ð/¨A¨4 qØÐ�aÐÑÔ€AØÐ`••T�#­+¸ÀhÐ[Ð[Ð[Ð\]Ñ^Ô^Ñ_Ô_Ñ`Ô`ÐeÐdeÐerC   c            
       ó   — e Zd ZdZ ed+i de“d eed¬¦  «        “d eed¬¦  «        “d eed	¬¦  «        “d
 ee	d¬¦  «        “d eedd¬¦  «        “d eed¬¦  «        “d eed¬¦  «        “d ee
d¬¦  «        “d ee
d¬¦  «        “d eed¬¦  «        “d ee	d¬¦  «        “d ee	d¬¦  «        “d eed¬¦  «        “d  eed!¬¦  «        “d" eed#¬¦  «        “d$ eed%¬¦  «        “ŽZd&„ Zd'„ Zd,d)„Zd*„ Zd(S )-ÚScatterPlotzA scatter plot widgetrS   rª   z!Width of the area inside the axesr"   r©   z"Height of the area inside the axesÚouterBorderOnz/Is there an outer border (continuation of axes)ÚouterBorderColorzColor of outer border (if any)ÚlabelOffsetz.Space between label and Axis (or other labels)r   r$   ÚaxisTickLengthszLenth of the ticks on both axesÚaxisStrokeWidthzStroke width for both axesÚxLabelzLabel for the whole X-AxisÚyLabelzLabel for the whole Y-Axisr„   z#Data points - a list of x/y tuples.r+   z#Color used for border of plot area.r-   r{   ÚleftPaddingzPadding on left of drawingÚrightPaddingzPadding on right of drawingÚ
topPaddingzPadding at top of drawingÚbottomPaddingzPadding at bottom of drawingc                 óþ  — t                                | ¦  «         d| _        d| _        d| _        t
          j        | _        d | _        d}d}d}d | j	        _
        d | j	        _        d | j	        _        d| j	        _        d| _        d	| j        j        _        d
| _        d	| j	        j        _        g d¢| _        d| _        d| _        d| _        d| _        d| _        | j        |z   |dz  z   | _        | j        t5          t7          | j	        j        ¦  «        | j	        j        j        | j	        j        j        ¦  «        z   | _        | j        |z   |z   | j        j        j        z   | _        | | j        j        _        || j        _        || j        _         d| j        _!        | | j	        j        _"        || j	        _#        || j	        _         d| j	        _!        d| _$        d| j%        _        d| j%        _&        d| j%        _"        d| _'        tQ          dd¬¦  «        | j)        _*        tQ          dd¬¦  «        | j)        d         _*        tQ          dd¬¦  «        | j)        d         _*        t
          j+        | j)        d         _,        d S )NéŽ   éM   r   r‹   r)   rç   z%szX Labler’   zY Lable)))g¸…ëQ¸ž?g=
×£p]O@)g‹lçû©ñ²?gX9´Èv.K@)gÛù~j¼tó?gX9´Èö1@))gÃõ(\�Âõ?gË¡E¶ó='@)gþÔxé&1ö?gÅ °rhI@)g+‡Ùö?g¢E¶óý<Q@))g´Èv¾Ÿ÷?gF¶óýÔ¸U@)gªñÒMbü?g
×£p=ÊA@)g¨ÆK7‰Aü?gfffffB@r   r�   r“   r  z%.2fÚeéþÿÿÿr¤   )ró   r¥   ÚFilledSquare)-rz   rm   rª   r©   r  r   r«   r  r–  rƒ   r¬   r­   r®   r±  r  r‚   r©  rª  r  r„   r”   r  r	  r
  r  r§   rþ  rÑ   rý  r¨   r¯  ÚtickDownr*   Ú
rangeRoundr®  r²  r   r~   r¬  r}   r   r�   r.   Úgreenr+   )rN   Ú_labelOffsetÚ_axisTickLengthsÚ_axisStrokeWidths       rD   rm   zScatterPlot.__init__ª  sB  € Ý×Ò˜$ÑÔÐØˆŒ
ØˆŒØˆÔÝ &¤ˆÔØˆŒàˆØÐØÐà#'ˆŒÔ Ø#'ˆŒÔ Ø$(ˆŒÔ!Ø+/ˆŒÔ'àˆŒØ*+ˆŒÔÔ'àˆŒØ*+ˆŒÔÔ'ð
&ð 
&ð 
&ˆŒ	ð ˆÔàˆÔØˆÔØˆŒØˆÔàÔ!Ð"2Ñ2°LÀ±NÑCˆŒØŒv•i¥ D¤OÔ$<Ñ =Ô =¸t¼Ô?UÔ?^Ð`dÔ`oÔ`vÔ`ñ  Aô  Añ  AˆŒØÔ#Ð$4Ñ4°\ÑAÀ$Ä/ÔBXÔBaÑaˆŒà%1 MˆŒÔÔ!Ø#3ˆŒÔ Ø&6ˆŒÔ#Ø#)ˆŒÔ"Ø%1 MˆŒÔÔ!Ø#3ˆŒÔ Ø&6ˆŒÔ#Ø#)ˆŒÔ"à#ˆÔØ#$ˆŒÔ Ø$'ˆŒÔ!Ø)+ˆŒÔØˆÔÝ$ ^¸Ð;Ñ;Ô;ˆŒ
ÔÝ'¨¸QÐ?Ñ?Ô?ˆŒ
�1ŒÔÝ'¨¸AÐ>Ñ>Ô>ˆŒ
�1ŒÔÝ$*¤LˆŒ
�1ŒÔ!Ð!Ð!rC   c                 ó‚  — | j         | j        j        z   | j        j        j        dz  z   | j        j        j        z   }|dt          t          | j        j	        ¦  «        | j        j        j
        | j        j        j        ¦  «        z  z   }|| j        z   | j        z   }d| j        j	        z  }|t          || j        j        j
        | j        j        j        ¦  «        z   }| j        | j        j        z   | j        j        j        dz  z   | j        j        j        dz  z   }|| j        j        j        z   | j        z   | j        z   }||fS )Nr)   r�   z%.2f%%)r  rƒ   r²  r©  r®  r‚   rª  rþ  rÑ   r­   rý  rª   r	  r  r  r¯  r©   r
  )rN   Útxrö  Útys       rD   Ú_getDrawingDimensionsz!ScatterPlot._getDrawingDimensionsì  s  € ØÔ˜dœoÔ6Ñ6¸¼Ô8NÔ8QÐRSÑ8SÑTÐUYÔUdÔUkÔUtÑtˆØˆq•�3˜tœÔ7Ñ8Ô8¸$¼/Ô:PÔ:YÐ[_Ô[jÔ[qÔ[zÑ{Ô{Ñ{Ñ|ˆØˆdŒj‰=˜Ô*Ñ*ˆØ�D”OÔ,Ñ,ˆØ�y˜˜DœOÔ2Ô;¸T¼_Ô=SÔ=\Ñ]Ô]Ñ^ˆØÔ ¤Ô 8Ñ8¸$¼/Ô:PÔ:SÐTUÑ:UÑVÐX\ÔXgÔXnÔXwÐxyÑXyÑzˆØˆdŒoÔ$Ô-Ñ-¨d¬kÑ9¸$¼/ÑIˆà�2ˆwˆrC   Nc                 ó¦   — |s'|                       ¦   «         \  }}t          ||¦  «        }|                     |                      ¦   «         ¦  «         |S rH   )r  r   rp   r'  )rN   r¯   r  r  s       rD   r°   zScatterPlot.demo÷  sK   € Øð 	%Ø×,Ò,Ñ.Ô.‰EˆBˆrÝ˜b ‘n”nˆGØ�Š�D—I’I‘K”KÑ Ô Ð ØˆrC   c                 óâ  — t          | j        j        j        ¦  «        j        j        }|dk    rd}|| j        j        j        z  }t                               | ¦  «        }| j	        }|r‚t          ¦   «         }| j        | j        z   dz  |_        d|_        | j        j        j        |_        | j        j        j        |_        |                     |¦  «         |                     |¦  «         | j        }|r‰t          ¦   «         }d|_        d|_        | j        | j        dz  z   |_        | j        j        j        |_        | j        j        j        |_        |                     |¦  «         |                     |¦  «         | j        rL|                     t+          | j        | j        | j        | j        | j        | j        j        d ¬¦  «        ¦  «         |                     | j        | j        ¦  «         |S )Nr   g`åÐ"Ûùæ?g       @éZ   )r+   r*   r-   )r   r‚   r©  rý  ÚfaceÚascentrª  rz   r'  r  r   r§   rª   r¨   rÕ   rp   r  r­  r©   rƒ   r  r
   r  r*   Úshiftr  r  )rN   r   rX   r  Úxlr  Úyls          rD   r'  zScatterPlot.drawþ  s²  € Ý�t”Ô-Ô6Ñ7Ô7Ô<ÔCˆØ�1Š9ˆ9ØˆFØ�d”oÔ,Ô5Ñ5ˆõ �]Š]˜4Ñ Ô ˆà”ˆØð 	Ý‰wŒwˆBØ”F˜4œ:Ñ% sÑ*ˆBŒDØˆBŒDØœ/Ô0Ô9ˆBŒKØœ/Ô0Ô9ˆBŒKØ�JŠJ�vÑÔÐØ�FŠF�2‰JŒJˆJà”ˆØð 	Ý‰wŒwˆBØˆBŒHØˆBŒDØ”F˜4œ; s™?Ñ*ˆBŒDØœ/Ô0Ô9ˆBŒKØœ/Ô0Ô9ˆBŒKØ�JŠJ�vÑÔÐØ�FŠF�2‰JŒJˆJð Ôð 	*Ø�FŠF•4˜œ ¤¨¬
°D´KØ%)Ô%:Ø%)¤_Ô%@Ø#'ð)ñ )ô )ñ *ô *ð *ð
 	�Š�Ô! 4Ô#5Ñ6Ô6Ð6àˆ	rC   rB   rH   )r5   r6   r7   rq   r8   rz   r9   r:   r_   r;   ÚisStringÚ
isAnythingrA   rm   r  r°   r'  rB   rC   rD   r   r   ”  sM  € € € € € ØÐàˆwð ð ð ˜H˜Hð Ø(˜L¨Ð8[Ð\Ñ\Ô\Ð\ðà)˜\¨(Ð9]Ð^Ñ^Ô^Ð^ðð %1 L°ÐArÐ$sÑ$sÔ$sÐ$sðð (4 |°MÐHhÐ'iÑ'iÔ'iÐ'ið	ð
 #/ ,¨xÐ>nÐ}~Ð"Ñ"Ô"Ð"ðð '3 l°8ÐBcÐ&dÑ&dÔ&dÐ&dðð '3 l°8ÐB^Ð&_Ñ&_Ô&_Ð&_ðð *˜\¨(Ð9UÐVÑVÔVÐVðð *˜\¨(Ð9UÐVÑVÔVÐVðð (˜<¨
Ð9^Ð_Ñ_Ô_Ð_ðð #/ ,¨}ÐChÐ"iÑ"iÔ"iÐ"iðð !- ¨]ÐAsÐ tÑ tÔ tÐ tðð #/ ,¨xÐ>ZÐ"[Ñ"[Ô"[Ð"[ðð $0 <°Ð?\Ð#]Ñ#]Ô#]Ð#]ðð ". ¨hÐ=XÐ!YÑ!YÔ!YÐ!Yðð  %1 L°Ð@^Ð$_Ñ$_Ô$_Ð$_ð!€Hð&@1ð @1ð @1ðD	ð 	ð 	ðð ð ð ð'ð 'ð 'ð 'ð 'rC   r   c                  óô  — t          dd¦  «        } ddg}t          ¦   «         }d|_        d|_        d|_        d|_        ||_        d|_        t          j	        |_
        t          d	¦  «        |j        _        d
|j        d         _        d|j        d         _        d|j        _        d|j        _        d|j        _        d|j        _        d|j        _        d|j        _        |                      |¦  «         | S )ú2A line plot with non-equidistant points in x-axis.r�   rž   r‰   rŸ   r    r¡   r¢   r   ÚUK_Flagr)   r   rŒ   r�   r¦   )r   rz   r§   r¨   r©   rª   r„   r”   r   r«   r+   r   r�   r.   r*   r‚   r¬   r­   r®   rƒ   rp   ©r¯   r„   rX   s      rD   Úsample1ar*  '  sÝ   € õ �c˜3ÑÔ€Gð 2Ø3ð
€Dõ
 
‰Œ€Bà€B„DØ€B„DØ€B„IØ€B„HØ€B„GØ€B„NÝ”\€B„Nå  Ñ+Ô+€B„H„Oà€B„HˆQ„KÔØ€B„HˆQ„KÔà€B„MÔØ€B„MÔØ€B„MÔà€B„MÔØ€B„MÔØ€B„MÔà‡K‚K��O„O€Oà€NrC   c                  óÖ  — t          dd¦  «        } ddg}t          ¦   «         }d|_        d|_        d|_        d|_        ||_        d|_        t          d	¦  «        |j	        _
        d
|_        t          j        |_        d|j        _        d|j        _        g d¢|j        _        d|j        _        d|j        _        d|j        _        d|j        _        |                      |¦  «         | S )r'  r�   rž   r‰   rŸ   r    r¡   r¢   r   ÚCircler£   r   r�   ©r   r)   rŠ   r‹   rŒ   r�   ú%2.1fr¦   )r   rz   r§   r¨   r©   rª   r„   r”   r   r�   r.   r   r   r«   r+   r‚   r¬   r­   Ú
valueStepsr±  rƒ   r®   rp   r)  s      rD   Úsample1br0  M  sÙ   € õ �c˜3ÑÔ€Gð 2Ø3ð
€Dõ
 
‰Œ€Bà€B„DØ€B„DØ€B„IØ€B„HØ€B„GØ€B„NÝ  Ñ*Ô*€B„H„OØ €BÔÝ”\€B„Nà€B„MÔØ€B„MÔØ3Ð3Ð3€B„MÔØ$+€B„MÔ!à€B„MÔØ€B„MÔØ€B„MÔà‡K‚K��O„O€Oà€NrC   c                  ó$  — t          dd¦  «        } ddg}t          ¦   «         }d|_        d|_        d|_        d|_        ||_        d|_        t          d	¦  «        |j	        d
         _
        t          d¦  «        |j	        d         _
        d|_        t          j        |_        d
|j        _        d|j        _        g d¢|j        _        d|j        _        d
|j        _        d|j        _        g d¢|j        _        |                      |¦  «         | S )r'  r�   rž   r‰   rŸ   r    r¡   r¢   r   r¤   r   r,  r£   r�   r-  r.  r¦   )r   r)   r‹   r�   r’   )r   rz   r§   r¨   r©   rª   r„   r”   r   r�   r.   r   r   r«   r+   r‚   r¬   r­   r/  r±  rƒ   rp   r)  s      rD   Úsample1cr2  q  sø   € õ �c˜3ÑÔ€Gð 2Ø3ð
€Dõ
 
‰Œ€Bà€B„DØ€B„DØ€B„IØ€B„HØ€B„GØ€B„NÝ# NÑ3Ô3€B„HˆQ„KÔÝ# HÑ-Ô-€B„HˆQ„KÔØ €BÔÝ”\€B„Nà€B„MÔØ€B„MÔØ3Ð3Ð3€B„MÔØ$+€B„MÔ!à€B„MÔØ€B„MÔØ.˜˜€B„MÔà‡K‚K��O„O€Oà€NrC   c                 ó   — d„ | D ¦   «         S )z=Convert date strings into seconds and multiply values by 100.c                 óN   — g | ]"}t          |d          ¦  «        |d         dz  f‘Œ#S )r   r   rŸ  )Ústr2seconds)râ   r§   s     rD   rä   z"preprocessData.<locals>.<listcomp>™  s1   € Ð:Ð:Ð:¨a�[˜˜1œÑÔ  !¤ S¡Ð)Ð:Ð:Ð:rC   rB   )Úseriess    rD   ÚpreprocessDatar7  –  s   € ð ;Ð:°6Ð:Ñ:Ô:Ð:rC   c                  ó  — t          dd¦  «        } dg}t          |d         ¦  «        |d<   t          ¦   «         }d|_        d|_        d|_        d|_        ||_        d|_        t          d	¦  «        |j
        _        t          j        |_        t          t!          d
¦  «        ¦  «        }t          t!          d¦  «        ¦  «        }t          t!          d¦  «        ¦  «        }t          t!          d¦  «        ¦  «        }t          t!          d¦  «        ¦  «        }t          t!          d¦  «        ¦  «        }t          t!          d¦  «        ¦  «        }	||j        _        |	|j        _        |||||||	g|j        _        t*          |j        _        d|j        j        d         _        d|j        j        d         _        d|j        _        d|j        _        d|j        _        d|j        _        |                      |¦  «         | S )r'  r�   rž   ))ú
25/11/1991r   )ú
30/11/1991gea««Òð?)ú
31/12/1991gaÃÓ+eð?)z
31/01/1992gvqà-ð?)z
29/02/1992gÆm4€·@ð?)ú
31/03/1992gÔÀ²yìTð?)z
30/04/1992g­ )É
kð?)z
31/05/1992gcÈŽæø{ð?)ú
30/06/1992gïyë,�ð?)z
31/07/1992gQ è×¦žð?)z
31/08/1992g[B>èÙ¬ð?)ú
30/09/1992gYÎ)�ºð?)z
31/10/1992gñÎ~ý@Ìð?)z
30/11/1992gùÆ30àð?)ú
31/12/1992g`åÐ"Ûùð?r   r    r¡   r¢   r   r¥   r9  r:  r;  r<  r=  r>  r?  iìÿÿÿiÝÿÿÿr)   z%4.2frŸ  én   )r   r7  rz   r§   r¨   r©   rª   r„   r”   r   r�   r.   r   r«   r+   r¿   rÀ   r‚   r¬   r­   r/  Úseconds2strr±  r©  r¯  rƒ   r®   rp   )
r¯   r„   rX   r¦  Út0Út1Út2Út3Út4Úends
             rD   Úsample2rH  œ  s­  € õ �c˜3ÑÔ€Gð	ð
€Dõ& ˜T !œWÑ%Ô%€Dˆ�Gå	‰Œ€Bà€B„DØ€B„DØ€B„IØ€B„HØ€B„GØ€B„NÝ  Ñ1Ô1€B„H„OÝ”\€B„Nå•;˜|Ñ,Ô,Ñ-Ô-€EÝ	•˜LÑ)Ô)Ñ	*Ô	*€BÝ	•˜LÑ)Ô)Ñ	*Ô	*€BÝ	•˜LÑ)Ô)Ñ	*Ô	*€BÝ	•˜LÑ)Ô)Ñ	*Ô	*€BÝ	•˜LÑ)Ô)Ñ	*Ô	*€BÝ
•˜\Ñ*Ô*Ñ
+Ô
+€CØ"€B„MÔØ €B„MÔØ % r¨2¨r°2°r¸3Ð?€B„MÔÝ$/€B„MÔ!Ø!$€B„MÔ˜ÔÔØ!$€B„MÔ˜ÔÔà$+€B„MÔ!Ø €B„MÔØ €B„MÔØ€B„MÔà‡K‚K��O„O€Oà€NrC   c                  óv  — t          dd¦  «        } t          ¦   «         }|                      |¦  «         t          |j        d         d¦  «        |j        d         g|_        t          t          j        d¦  «        dd ¬¦  «        |j        d         _	        d |j        d         _
        d |j        d         _
        | S )Nr�   rž   r   r   z#9f9f9f)r-   r*   r+   )r   r‘  rp   r   r„   rh   r   rñ  r�   r0   r+   )ÚdÚcharts     rD   ÚsampleFillPairedDatarL  Ø  s—   € Ý��CÑÔ€AÝ Ñ"Ô"€EØ‡E‚Eˆ%�L„L€LÝ  ¤¨A¤¨qÑ1Ô1°%´*¸Q´-Ð@€E„JÝ!­F¬N¸9Ñ,EÔ,EÐRSÐ`dÐeÑeÔe€E„K�„NÔØ!%€E„K�„NÔØ!%€E„K�„NÔØ€HrC   N)CÚ__version__rq   rš  r   Úreportlab.lib.validatorsÚreportlab.lib.attrmapÚreportlab.lib.utilsr   r   r6  r   r	   r
   r   r   r   Úreportlab.graphics.widgetbaser   r   r   Ú$reportlab.graphics.charts.textlabelsr   Úreportlab.graphics.charts.axesr   r   r   r   Úreportlab.graphics.charts.utilsÚ"reportlab.graphics.widgets.markersr   r   Ú reportlab.graphics.widgets.gridsr   r   r   Úreportlab.pdfbase.pdfmetricsr   r   Úreportlab.graphics.charts.areasr   Úutilsr   r!   rI   rF   rP   rb   rh   rs   rw   rZ  rx   rz   r;  r“  r‘  r•  rÆ  rÓ  rþ  r   r*  r0  r2  r7  rH  rL  rB   rC   rD   ú<module>rZ     s  ðð
 €ØG€à  Ð  Ð  Ð  Ð  Ð  Ø &Ð &Ð &Ð &Ø #Ð #Ð #Ð #Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø ^Ð ^Ð ^Ð ^Ð ^Ð ^Ð ^Ð ^Ð ^Ð ^Ð ^Ð ^Ð ^Ð ^Ð ^Ð ^Ø YÐ YÐ YÐ YÐ YÐ YÐ YÐ YÐ YÐ YØ 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fØ -Ð -Ð -Ð -Ø IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LØ =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø !Ð !Ð !Ð !Ð !Ð !ð
ð 
ð 
ð 
ð 
˜ñ 
ô 
ð 
ðð ð ð ð �#ñ ô ð ð
%ð 
%ð 
%ð 
%ð 
%ˆ_ñ 
%ô 
%ð 
%ðð ð ð ð ñ ô ð ð:ð :ð :ð :ð :ñ :ô :ð :ð 	ð 	ð 	ð 	ð 	�v˜mñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	�˜ñ 	ô 	ð 	ð CÐ BÐ BÐ BÐ BÐ Bðc'ð c'ð c'ð c'ð c'Ð ñ c'ô c'ð c'ðJMð Mð Mð Mð M�ñ Mô Mð Mð^ð ð ð@ð ð ðA?Ð ðB&ð &ð &ð &ð &˜8ñ &ô &ð &ðRð Rð Rð Rð RÐ'ñ Rô Rð Rðhð ð ð ð �8ñ ô ð ð2=ð =ð =ð =ð =�Lñ =ô =ð =ðfð fð fðQð Qð Qð Qð Q�(ñ Qô Qð Qðf#ð #ð #ðL!ð !ð !ðH"ð "ð "ðJ;ð ;ð ;ð:ð :ð :ðxð ð ð ð rC   