+
    bIi                       R t Rt^ RIt^ RIt^ RIHt ^ RIHt ^ RIH	t	H
t
HtHtHtHtHtHtHtHtHtHt ^ RIHtHt ^ RIHtHt ^ RIHtHt ^ R	IHt ^ R
I H!t!H"t"H#t# ^ RI$H%t%H&t&H't'H(t(H)t) ^ RI*H+t+H,t,H-t-H.t. ^ RI/H0t0H1t1 ^ RI2H3t3 ^ RI4H5t5 ^ RI6H7t7  ! R R]"4      t8 ! R R]34      t9 ! R R]94      t: ! R R]94      t; ! R R4      t< ! R R]94      t= ! R R]=]:4      t> ! R R ]=];4      t?R! t@R" tAR# tBR$ tCR% tDR& tER' tFR( tGR) tHR* tIR+ tJR, tK. RIOtLR- tMR. tNR/ tOR0 tPR1 tQR2 tRR3 tSR4 tTR5 tUR6 tVR7 tWR8 tXR9 tYR: tZR; t[R< t\R= t]R> t^. RIOtLR? t_R@ t`RA taRB tbRC tcRD tdRE teRF tf ! RG RH](4      tgR# )Jz3.3.0zThis module defines a variety of Bar Chart components.

The basic flavors are stacked and side-by-side, available in horizontal and
vertical versions. 

N)literal_eval)colors)isNumberisNumberOrNoneisColorOrNoneisString
SequenceOf	isBooleanisStringOrNoneNoneOrisListOfNumbersOrNoneEitherOrOneOfisInt)isStryieldNoneSplits)uSymbol2SymbolisSymbol)AttrMapAttrMapValue)stringWidth)TypedPropertyCollection
PropHolder
tpcGetItem)LineRectGroupDrawingPolyLine)XCategoryAxis
YValueAxisYCategoryAxis
XValueAxis)BarChartLabelNoneOrInstanceOfNA_Label)PlotArea)_objStrcmpc                      a  ] tR t^t o ]! ]! ]RR7      ]! ]RR7      ]! ]RR7      ]! ]RR7      ]! RR^R7      ]! ]	R	R7      ]! ]
! ]4      R
^R7      ]! ]RR7      ]! ]
! ]4      RR7      R7	      tR tRtV tR# )BarChartPropertieszColor of the bar border.desczColor of the bar interior area.zWidth of the bar border.zDash array of a line.Nz,A widget to be used instead of a normal bar.r,   advancedUsagez0Text to be associated with a bar (eg seriesname)z!None or makeMarker('Diamond') ...z(minimum width/height that will be drawn.z%if this bar should be drawn as a line)	strokeColor	fillColorstrokeWidthstrokeDashArraysymbolnameswatchMarkerminDimenisLinec                h    R V n         \        P                  V n        RV n        R V n        R V n        R # )N      ?)r/   r   bluer0   r1   r3   r2   selfs   &ڌC:\Users\petid\OneDrive\Desktop\Maestro\MAESTRO CLAUDE\MAESTRO\maestro-backend\venv\Lib\site-packages\reportlab/graphics/charts/barcharts.py__init__BarChartProperties.__init__,   s,    #    )r0   r/   r2   r1   r3   )__name__
__module____qualname____firstlineno__r   r   r   r   r   r   r   r   r   r	   _attrMapr>   __static_attributes____classdictcell____classdict__s   @r=   r*   r*      s     "=7QR 5VW"82LM&'<CZ[d)WfghH+]^#F8$4;^mno5_`fY/6]^

H$ $r@   r*   c                     a  ] tR t^4t o Rt]! RM/ R]bR]! ]! ]	]! ]
]34      34      R^R7      bR]! ]RR7      bR	]! ]R
R7      bR]! ]RR7      bR]! RRR7      bR]! RRR7      bR]! RRR7      bR]! RRR7      bR]! RRR7      bR]! RRR7      bR]! RR^R7      bR]! RRR7      bR]! ]	R^R7      bR ]! ]R!^R7      bR"]! RR#R7      bR$]! ]R%R7      bR&]! ]! R'R(R)4      R*R7      bR+]! RR,^R7      bR-]! ]R.R7      bR/]! ]R0^R7      bR1]! ]! ]! ]^ ^ ^R27      ^ ^^R27      R34      b tR4 tRNR5 ltR6 tR7 tR8 tR9 tR: tR; tR< tR= tR> tR? tR@ tRORA ltRPRB lt RC t!RD t"RE t#RF t$RG t%RH t&RI t'RJ t(RK t)RLt*V t+R# )QBarChartz(Abstract base class, unusable by itself.BASEuseAbsolutezrFlag to use absolute spacing values; use string of gsb for finer control
(g=groupSpacing,s=barSpacing,b=barWidth).r-   barWidthzThe width of an individual bar.r+   groupSpacingzWidth between groups of bars.
barSpacingzWidth between individual bars.barsNzHandle of the individual bars.	valueAxiszHandle of the value axis.categoryAxiszHandle of the category axis.dataz/Data to be plotted, list of (lists of) numbers.	barLabelsz!Handle to the list of bar labels.barLabelFormatzZFormatting string or function used for bar labels. Can be a list or list of lists of such.barLabelCallOutz`Callout function(label)
label._callOutInfo = (self,g,rowNo,colNo,x,y,width,height,x00,y00,x0,y0)barLabelArrayzGexplicit array of bar label values, must match size of data if present.reversePlotOrderz,If true, reverse common category plot order.naLabelzLabel to use for N/A values.annotationsz<list of callables, will be called with self, xscale, yscale.categoryLabelBarSizez=width to leave for a category label to go between categories.categoryLabelBarOrderfirstlastautoz,where any label bar should appear first/last	barRecordzJcallable(bar,label=labelText,value=value,**kwds) to record bar informationzIndexOverridesa!  None (the default ie use old z ordering scheme) or a ',' separated list of key=value (int/float) for new zIndex ordering. If used defaults are
    background=0,
    categoryAxis=1,
    valueAxis=2,
    bars=3,
    barLabels=4,
    categoryAxisGrid=5,
    valueAxisGrid=6,
    annotations=7categoryNALabelz'Label to use for a group of N/A values.seriesOrder)emptyOKNoneOKloz#dynamic 'mixed' category style casec                (   V P                   pV\        V4      ,          pWg,          p\        VR \        VR R4      4      p	\        VR\        VRR4      4      p
\        VR\        VRR4      4      p\        VR\        VRR4      4      p\        VR\        VRR4      4      pV'       d)   \        WVR,          ,           W5R,          ,           V
4      # \        VRR4      '       Ed#   W5R,          ,           p\	        VR	4      '       d   VP
                  pM!\	        VR	4      '       d   VP
                  pMRp\        Y.W$,           TVP                  ;'       g    VP                  VP                  VP                  R
7      pV'       d9   \        YVR,          ,           YP                  ;'       g    VP                  4      pV'       d7   V'       d/   \        4       pVP                  V4       VP                  V4       V# T;'       g    T# \        W#WEWWR7      # )r/   Nr0   r2   r1   r5          @r7   Fr3   r/   r1   r2   )r1   r/   r2   r0   )rQ   lengetattrr   hasattrr3   r   r/   r0   r1   r2   r   addr   )r<   rowNoxywidthheight	baseStylestyleIdxstyler/   r0   r2   r1   r5   yh2SLgs   &&&&&&            r=   makeSwatchSampleBarChart.makeSwatchSampleW   s   II	3y>)#e]GImTX4YZE;	+d0ST	!%):GIN_`d<efe]GE=QU4VWungiX\6]^!,rz!2I+iPPU8E**2I+Cuh''LLH--$$QAGS % 1 1 D DU__ % 1 1&+&;&;=A
 nQrz#6G6G6Z6Z5??[!QGaa66ME[(7M Mr@   c                P    \        \        V P                  V,          RV4      4      # )zreturn series name i or defaultr4   )r&   rl   rQ   )r<   idefaults   &&&r=   getSeriesNameBarChart.getSeriesNamez   s    wtyy|F7;<<r@   c                n   V P                   P                  R
9  g#   Q RV P                   P                  ,          4       hV P                  '       d    \        4       V n        \        4       V n        M\        4       V n        \        4       V n        \        RRRR4      V P                  P                  R,          n        \        P                  ! V 4       ^ V n        ^ V n        RR.V n        ^ V n        ^
V n        ^V n        ^ V n        \)        \*        4      V n        RV P,                  n        RV P,                  n        R	V n        R	V n        ^ V P,                  n        \)        \8        4      V n        ^V P:                  n        \>        P@                  V P:                  n!        R	V P:                  n"        \>        PF                  V P:                  ^ ,          n$        \>        PJ                  V P:                  ^,          n$        \>        PL                  V P:                  ^,          n$        R	;V n'        V n(        R	V n)        R	# )rK   zAbstract Class %s Instantiatedstackedparallelparallel_3dmixedrv   cmiddleN)rK   
BarChart3D)d   n   x      )F   P   U   Z   )*	__class__rA   _flipXYr!   rS   r"   rR   r   r    r   rE   validater%   r>   rP   rY   rT   rM   rN   rO   r   r#   rU   	boxAnchor
textAnchorrV   rX   nudger*   rQ   r1   r   blackr/   r2   redr0   greenr:   rZ   rc   rb   r;   s   &r=   r>   BarChart.__init__~   s   ~~&&.GG  	DIilplzlz  mD  mD  JD  	DG<<< -D'\DN -D'\DN7<YzR_`g7h""7+4$ ! '$&	 0?#& $,!"!  ! ,,>?	 !		 &		$(		!!'		!!'		!!'		!.22t+#r@   c                    V P                   P                  R8X  d   \        R4      h\        ^^d4      pV P                  4       pVP	                  V4       V# )zShows basic use of a bar chartrK   z#Abstract Class BarChart has no demo)r   rA   NotImplementedErrorr   rn   )r<   drawingbcs   &  r=   demoBarChart.demo   sH    >>""J.%&KLL#s#^^Br@   c           	        \        V R R4      p\        V P                  4      pV'       g   \        V4       Uu. uF  q33NK  	  ppEM$V P                  p\        \        V4      4      p\        4       p. pV F  pV Uu0 uF  p^ Tu;8:  d
   V8:  g   K  M K  VkK  	  p	pV	 Uu0 uF  q5P                  VRR4      '       g   K  VkK!  	  p
pV
'       d   W,          p	Wz,          pWj,          pV	'       g   K~  VP                  \        V	4      4       Wi,          pK  	  V'       d"   VP                  R \        V4       4       4       V'       d"   VP                  R \        V4       4       4       W@n        R# u upi u upi u upi )rd   Nr7   Fc              3   &   "   T F  q3x  K	  	  R # 5iN .0sss   & r=   	<genexpr>*BarChart.getSeriesOrder.<locals>.<genexpr>   s     82   c              3   &   "   T F  q3x  K	  	  R # 5ir   r   r   s   & r=   r   r      s     72r   )rl   rk   rT   rangerQ   set	checkAttrappendtupleextendsorted_seriesOrder)r<   bsnr   RrQ   unseenlinessrz   gls   &          r=   getSeriesOrderBarChart.getSeriesOrder   s&   T--		N!&q*2A*A99Dq]FEEA"#0!Bq"xaxRxR!0#$J1Rr(5(Ibb1JGAKELF1HHU1X&KF  888777) + 1Js#   E3<E8E8E8"E=E=c                D  aa V P                   P                  pV P                  o\        \	        \        \        S4      4      4      pSoVR9  dJ   . oV3R lpVR8X  d   V! S!   M3V P                  4        V P                   F  pV! V3R lV 4       !   K  	  SV n	        R# )r   c                  F  < \        R  V  4       4      ^ .,          pVR,          pV  FT  p\        V4       FB  w  rET;'       g    ^ pVR8:  d   W$;;,          V,          uu&   K.  W;;,          V,          uu&   KD  	  KV  	  SP                  V4       SP                  V4       R# )c              3   8   "   T F  p\        V4      x  K  	  R # 5ir   )rk   )r   ds   & r=   r   BBarChart._getConfigureData.<locals>._accumulate.<locals>.<genexpr>   s     /QSVVQs   NNNNư)max	enumerater   )Dpdatandatar   r~   vrT   s   *     r=   _accumulate/BarChart._getConfigureData.<locals>._accumulate   s    /Q/0!4aA(|FFe8!HMH!HMH  ,  E"E"r@   r   c              3   6   <"   T F  pSV,          x  K  	  R # 5ir   r   )r   j_datas   & r=   r   -BarChart._getConfigureData.<locals>.<genexpr>   s     !6Aq%((As   Nr   r   )
rS   rv   rT   r   listmaprk   r   r   _configureData)r<   cAStyleccr   br   rT   s   &    @@r=   _getConfigureDataBarChart._getConfigureData   s    ##))yyc#dm$%44D# 	!U###%**A!6A!67 +"r@   c                    V P                  4        V P                  P                  V P                  4       V P                  P                  V P                  P
                  3# )z Attempt to return the data range)r   rR   	_setRanger   	_valueMin	_valueMaxr;   s   &r=   
_getMinMaxBarChart._getMinMax   sE       !4!45~~'')A)AAAr@   c                2   V P                   pVP                  V P                  V P                  V4       V P	                  4        VP                  V P                  4       VP                  ^ 4      pVP                  '       g   WA8  d   WAV,           8:  d   V# T# )z8Position and configure value axis, return crossing value)	rR   setPositionrp   rq   r   	configurer   scale	forceZero)r<   orglengthvA	crossesAts   &&&  r=   
_drawBeginBarChart._drawBegin   sq    ^^
tvvtvvv. 
T(() HHQK	LLLY^	v:@Uy_\__r@   c                
   V P                   pV P                  pVP                  V P                  4       V P	                  4        \        4       p\        V RR4      pV'       EgR   VP                  V P                  4       4       \        VRR4      p\        VRR4      pV'       g   VP                  W0VP                  R7       V'       g   VP                  W0VP                  R7       VP                  V P                  4       4       VP                  V4       VP                  V4       V'       d   VP                  W0VP                  R7       V'       d   VP                  W0VP                  R7       \        V RR4       F.  qsP                  V! WP                  VP                  4      4       K0  	  V =V# \        ^ ^^^^^^^R7      pVP                  4       P                  R4       F  p	V	P                  4       p	V	'       g   K   V	P                  R	4      w  rY9  dZ   \!        RT
: RT: RRP#                  \%        TP'                  4       4       U
u. uF  q: R	Y,          : 2NK  	  up
4      : 24      h \)        T4      p\+        T\,        \.        34      '       g   Q h YT
&   K  	  VP1                  4        U
Uu. uF  w  rW3NK
  	  pp
pVP3                  4        V P                  4       pVP4                  P7                  R4      pV EF*  w  rV
R8X  d"   VP                  V P                  4       4       K.  V
R8X  d   VP                  V4       KH  V
R8X  d    VP                  W0VP                  R7       Kn  V
R8X  d   VP                  V4       K  V
R8X  d    VP                  W0VP                  R7       K  V
R8X  d   VP                  V4       K  V
R8X  d   VP                  V4       K  V
R8X  g   K  \        V RR4       F.  qsP                  V! WP                  VP                  4      4       K0  	  EK-  	  V =V#    \!        R
T	: RT: RRP#                  \%        TP'                  4       4       U
u. uF  q: R	Y,          : 2NK  	  Mu up
i up
4      : 24      h; iu up
i    \!        RYTRP#                  \%        TP'                  4       4       U
u. uF  q: R	Y,          : 2NK  	  Mu up
i up
4      3,          4      h; iu upp
i )z"finalize the drawing of a barchartrb   NdrawGridLastF)parentdimr[   )
backgroundrS   rR   rQ   rU   categoryAxisGridvalueAxisGridr[   ,=zBadly formatted zIndex clause z in z
allowed variables are

zUnknown zIndex variable zCBad zIndex value %r in clause %r of zIndex
allowed variables are
%sr   rS   r   rR   r   rQ   rU   r   )rS   rR   r   r   calcBarPositionsr   rl   rn   makeBackgroundmakeGridgetGridDimsmakeBarsr   dictstripsplit
ValueErrorjoinr   keysr   
isinstancefloatintitemssortcontentspop)r<   cAr   rz   zIndexcAdglvAdglaZzkr   r   bls   &             r=   _drawFinishBarChart._drawFinish  s   ^^
T(()G/5vEE$%%'(B~e4EB~e4E"++a+H"++a+HEE$--/"EE"IEE"Ibkk!R^^kDbkk!R^^kDT-3UU1T((288;T5U3b a !"	A \\^))#.GGI(pCA :$fghijnjsjs  QW  XY  X^  X^  X`  Qa  ub  Qa  LM  @A  BC  BF  vG  Qa  ub  kc  &d  e  ev$QA%as4444 ! / #$''),)31!)A,FFHA#Bl?EE$--/0&EE"I**KK2>>KB^EE"I'KK2>>KBYEE!H^EE"I%$T-;UU1T((SUS[S[C\=];! $ Cp$lmntuyu~u~  \b  cd  ci  ci  ck  \l  @m  \l  WX  KL  MN  MQ  AR  \l  @m  vn  &o  p  p ubv$%lpqtz{  |E  |E  bh  ij  io  io  iq  br  Fs  br  ]^  QR  ST  SW  GX  br  Fs  |t  pu  &u  v  v,s<   P>R"8)R'=T	>6R4RR'0TS/.Tc                  a%a&a'a(a)a*a+a,a-a.a/a0a1a2a3a4a5a6 V P                   o,S,'       d   V P                  o/MV P                  o/V P                  pVP                  o+V P
                  p\        V4      ;q0n        \        \        \        \        V4      4      4      ;V n        pV P                  pV P                  pV P                  p\        V R^ 4      p\        V RR4      p	V	R8X  d   S,;'       d    R;'       g    Rp	V	R8H  p	VP                   o1V P"                  o)\%        V)3R l\'        V4       4       4      p
W:,
          pS1R8X  da   V P(                  p\        V4      V
,
          pW,          pV^,
          V,          pV^8  d   TpTpM^ ;ppW,          ^ .,          o&S&R,          o'MCS1R9   d    ^pW,          pV^,
          V,          pTpTpMTpV^ .,          o&S&R,          o'Tp^ ;p;ppW^,           V,           ;V n        o-V P,                  o2S2'       dP   \/        S2\0        4      '       g   ^o2M8^ ^R
S29   ,          ,           ^RS29   ,          ,           ^RS29   ,          ,           o2M^ o2\3        S+! ^ 4      ^,          4      pVV,
          pS2^ 8X  d   VS-,          ;V n        ;p;ppMS2^8X  d   R;p;ppVP6                  o%MS2^8X  d   RpVV,
          W_,           ,          ;ppMS2^8X  d   RpVV,
          W,           ,          ;ppMS2^8X  d'   R;ppV'       d   VV,
          V,
          V,          M^ pMgS2^8X  d   RpVV,
          W^,           ,          ;ppMES2^8X  d   R;ppVV,
          V,
          V,          pM"S2^8X  d   ^;ppVV,
          V,
          V,          pXV n        XV n        XV n        V P>                  pVP                  o4VP@                  o3VPB                  VPD                  ppV^ u;8:  d   V8:  d   M M	S4! ^ 4      o*M^ V8  d
   S4! V4      o*MV^ 8  d	   S4! V4      o*S*V n#        VV,          o5RV,          V,          pVV,          VV,          ,           pV'       dn   V	'       d"   VVR,          ,           V,          pVV,          pM3VVV,          ,           VV,          ,           VR,          ,           V,          pVVPH                  n%        . V n&        V PL                  PN                  pV PP                  pV%V&V'V(V*V+V,V-V.V/V0V1V2V3V4V5V63R lpS1R8w  d   ^ p \S        V4       F  w  p!o0. o(V'       d   V^,
          V!,
          MT!o6VS6V,          ,           o6S)PU                  V!RR4      o.S.'       d)   V ^,          p VV^,
          V,          R,          ,           o6MS6V V,          ,          o6\'        V4       F  p"V! V"V"4       K  	  V! S(4       K  	  R# ^ p \S        V P(                  4       F  w  p#p$\        V$4      ^8:  d   R	MRo1V$ F  p!V'       d   V^,
          V#,
          MT#o6VS6V,          ,           o6. o(VV!,          o0S)PU                  V!RR4      o.S.'       d)   V ^,          p VV^,
          V,          R,          ,           o6MS6V V,          ,          o6\'        V4       F  p"V! V"V"V,          V#,           4       K  	  V! S(4       K  	  K  	  R# )zWorks out where they go. default vertical.

Sets an attribute _barPositions which is a list of
lists of (x, y, width, height) matching the data.
r\   r]   r`   r_   r^   c              3   \   <"   T F!  p\        SP                  VR R4      4      x  K#  	  R# 5i)r7   FN)r  r   )r   _rQ   s   & r=   r   ,BarChart.calcBarPositions.<locals>.<genexpr>o  s(     [HZ1T^^Ahu=>>HZs   ),r   r   r   r   rz   r         ?r9   g      @c                   < S^8X  d   SS! V 4      ,          S,           S,           pMS! V 4      w  r4VS,           pSV ,          pVf   RpSpMSR9  d   S'       g   VR8:  dH   S! S	V,          4      pS'       d	   VS8  d   MVS8  d   SpS	V;;,          V,          uu&   S	V,          pMIS! S
V,          4      pS'       d	   VS8  d   MVS8  d   SpS
V;;,          V,          uu&   S
V,          pMSpS! V4      V,
          pRTu;8  d   R8:  d   M MRpVR8  d   RpSP                  S;'       d    WrVS3;'       g    W'SV34       R# )   N:0yE>r   r   :0yE)r   )colNoaccxrp   rz   r  datumrs   rq   _cscaleaccumNegaccumPosbarRowbaseLinecScaleflipXY
groupWidthr7   r   rowrv   rM   vARDvScalerr   xVals   &&      r=   _addBar*BarChart.calcBarPositions.<locals>._addBar  s*   A~wu~-4s:HJE} ::6e|"8D>2*.AhJAhJX %/ ("8D>2*.AhJAhJX %/ ( A*%%!FU{UFMM&77a&%7MMAf;MNr@   r7   Fr   Nr   )+r   rq   rp   rS   r   rT   rk   _seriesCountr   r   r   
_rowLengthrO   rP   rN   rl   rv   rQ   sumr   r   _groupWidthrM   r  strr  _normFactor_scale_normFactorB_normFactorG_normFactorSrR   reverseDirectionr   r   	_baseLinelabelslabelPosFrac_barPositionsr   rY   r   r   )7r<   r  rT   seriesCount	rowLengthwGrP   rN   clbsclbo	lineCountseriesMLineCountr   barsPerGroupwBwSbGapBbGapSaW0aWfBfGfSr   vmvMoffsbGaplbpfaBPrY   r+  lineSeenro   r  sbsgr  r   r!  r"  rQ   r#  r$  r%  r&  r7   r   r'  rv   rM   r(  r)  rr   r*  s7   &                                    @@@@@@@@@@@@@@@@@@r=   r   BarChart.calcBarPositionsS  s	    &&C&&Cyy*-d)3'&)$s3t}*=&>>)__
==t215t3F;< 1 16 < <WW}yy[kHZ[\	&2'>""Br7Y.L&Bq.*,BA~ " !!#-qc1H{H00L!*B"1$j0BEE+L !}H{HB!""B"(*b0:&&k#..!SK%7"88C;<N9OOPQSVZeSePffKF1IaL!4Z>.0m;D;r;B!^BbiiG!^B"uruo%B!^B"uruo%B!^MB"$"R%(B!B!^B"uruo%B!^MBR%(BB!^KBR%(BB ^^""r||B=b=ayHVbzH!VbzH!2vbyRxb T#Xs*RU
2b5(c136%)BII"  ''00	O 	O 	O@ '>H'o
s3C|a'%/d4i'x?MH!1!!3T 9# ==DHTM)D"9-EE%( .F . H"4#4#452&)"gqj
iE4D<!+b0"D$t)+DFu+C!^^E8UCF A#\!^T$9#$==-!&y!1eL&82&=> "2K   6r@   c                   V P                   p\        V\        \        34      '       d-   W1,          p\        V\        \        34      '       d	   W2,          pVf   RpV# VR8X  d   V P                  V,          V,          pV# \        V4      '       d#   W0P                  V,          V,          ,          pV# \        VR4      '       d#   V! V P                  V,          V,          4      pV# RV,          p\        V4      h)zreturn formatted label textNvalues__call__z6Unknown formatter type %s, expected string or function)	rV   r  r   r   rX   r   rT   rm   	Exception)r<   ro   r  labelFmt	labelTextmsgs   &&&   r=   _getLabelTextBarChart._getLabelText  s    &&hU|,,H(D<00#?I  !**51%8I  8__ 99U#3E#::I  Xj)) 5!1%!89I  KXUCC. r@   c                   VP                   p\        VRR4      pVR8H  pV'       d   V) pT;rV'       d   ^ p
VRV,          ,           pV^ 8  ;'       d    ^;'       g    RV,          pVR8X  d   W5R,          ,           pMcVR8X  d$   V
^ 8  d   W:,           V,           pMEW6,
          pV	) p	M9VR8X  d$   V
^ 8:  d   W:,           V,           pMW6,
          pV	) p	MW:,           V,           pWn        WV	3# )	zCompute x, y for a label	boxTargetnormalantir9   midhirg   r   )r   rl   _pmv)r<   labelrp   rq   rr   rs   r   btrc  pmvaluer  r   s   &&&&&&       r=   _labelXYBarChart._labelXY&  s    U;x06z%E	Mq&&B-u9*AXaxI%ISXaxI%IS	E!A
2vr@   c                    V P                  W#4      pV'       d*   V P                  WP                  W#3,          WW4WVV4	       R # R # r   )r^  	_addLabelrU   )	r<   rz   ro   r  rp   rq   rr   rs   texts	   &&&&&&&& r=   _addBarLabelBarChart._addBarLabelC  s;    !!%.NN4!?5UV_ef r@   c
                >   V	f   V P                   p	V	'       d   V	P                  '       dq   \        P                  ! V	4      p	V P                  P                  ^ 8*  ;'       d    R;'       g    Rp
Vf   T
pVf   T
pV P                  V	P                  WW#WEWgVR7
      # R # R # )Nr  )calcOnlyr  )rZ   ro  copyrR   r   rn  )r<   rz   ro   r  rp   rq   rr   rs   rs  nar   s   &&&&&&&&&& r=   _addNABarLabelBarChart._addNABarLabelH  s    :DLLr"'''2B((!+55==A}ae~v>>"''2%e^f>gg 2r@   c                0   VP                   '       Ed   \        WP                  VP                  4      pV P                  pV'       d   V P                  W'WiV4      w  rpMV P                  W&WxV	4      w  rp\        VR R4      pVe#   VP                  W4      pYppV'       d   TpM.TpM+V'       d   TpWyR,          ,           pMWhR,          ,           pTp\        VRR4      pVe   VP                  W4      pV'       d   TpMTpV^ 8  d5   V'       d   RVP                  ,          p^ pMRVP                  ,          p^ pM^ ;ppV
'       d   VV,           VV,           3# VP                  VV,           VV,           4       VP                  V4       VP                  VP                  ppV'       d)   V'       d!   VP                  ^ \        VVWVVR7      4       VP!                  V4       \        V RR4      pV'       d   WWEWgWVVW3Vn        V! V4       V=R# R# R# )fixedEndNri   
fixedStart)r/   r1   rW   )visibler   fontNamefontSizer   rk  rl   	_getValuedxdy	setOriginsetTextlineStrokeColorlineStrokeWidthinsertr   rn   _callOutInfo)r<   ro  rg  rz   ro   r  rp   rq   rr   rs   rs  
labelWidthr%  y0x0ri  ry  r   x00y00rz  r  r  sCsWalxs   &&&&&&&&&&&               r=   rn  BarChart._addLabelQ  s   ===$T>>5>>JJ\\F!]]51EB
!]]516B
uZ6H#&&t/SBBC3J,C#I+CC |T:J%((1CC!tEHHBBEHHBBR2r"u,OOBrE2b5)MM$**E,A,ABb!((1T#c"RUW%XYEE%L$06C&*UU#cRT%X"E
& ] r@   c                    \        W#WE4      pVP                  Vn        VP                  Vn        VP                  Vn        VP                  '       d   VP                  Vn        VP                  V4       R # r   )r   r1   r0   r/   r2   rn   )	r<   rz   rp   rq   rr   rs   ro   rv   rs	   &&&&&&&& r=   _makeBarBarChart._makeBar  sX    u%))oo))    % 5 5A	ar@   c                
   V P                   p\        V R R4      pV P                  pV P                  pV P                  p/ pV'       d[   . p	\        V P                  4      ^,
          p
\        V4       F-  w  r\        V4       F  w  pw  rppRVV39  g   K  ^W&   K  	  K/  	  . P                  p. P                  p\        V4       EFe  w  r\        V4      pVV,          pVV,          pVP                  VRR4      p. P                  p\        V4       EF  w  pw  rppVV3V9   ;'       d    VVV3,          ;'       g    TpRVV39   d   V'       d   W9   d   V P                  W+WVVV4       MV'       d   VX	9  d   V P                  W+WVVVRV4	      pV'       d   VX
,          V,          w  rppV P                  W*WVVVRV4	      pV^ ,          V^ ,          ,           R,          pV^,          V^,          ,           R,          pV P                  W*WVRRVR7       V	P                  V4       V'       d	   V! R4       EK,  Rp\        VR4      '       d"   \        P                  ! VP                  4      pM2\        V P                   R4      '       d   V P                   P                  p\        VR	R4      pV'       dt   V'       d7   V^ 8  d   \        VP                   ) V4      pML\#        VP                   V4      pM5V^ 8  d   \        VP                   ) V4      pM\#        VP                   V4      pV'       d   V'       g   VV,           pVVR
,          ,           pMVV,           pVVR
,          ,           pV! V4       V! V4       V'       dG   \%        \'        VV4      TTVP(                  ;'       g    VP*                  4      p V '       d	   V! V 4       MV'       d/   VVn        VVn        VVn        VVn        VP5                  V4       M\7        V4      R8  d   \7        V4      R8  d   VP*                  f   VP(                  ec   V P9                  WVVVVV4       V'       dE   V! VP:                  R,          V P=                  W4      V P                  V,          V,          WR7       V P?                  W+WVVV4       EK  	  \A        VPB                  4       FT  pV'       g   K  T! \E        TVP(                  ;'       g    VP*                  VPF                  VPH                  R7      4       KV  	  EKh  	  VPB                   F  p!VP5                  V!4       K  	  VPB                   F  p VP5                  V 4       K  	  R# )ra   Nr7   FTri   g-C6?)ru  r3   r6   r9   gHz>)rg  rj  ro   r  rj   r   )%rQ   rl   r;  r   rc   rk   rT   r   r   r   rv  rm   rt  deepcopyr3   minr6   r   r   r   r/   r0   rp   rq   rr   rs   rn   absr  r  r^  rp  r   __self__r   r1   r2   )"r<   rz   lgrQ   brBPr%  catNALcatNNACBLrowNoLro   r'  r  rp   rq   rr   rs   r   lineSyms
styleCountru   rowStyler7   linePtsrv   r0r1r3   r6   yLxLsympls"   &&&                               r=   	_makeBarsBarChart._makeBars  s   yyT+d+%%C^a'F'm
4=cN0E0A%E&>1() 5C ,
 		99#B-JETJz)HH~H^^E8U;FiiG-6s^))E&!%(D0KKT8E:J5KWWxE&>)!U_++BUQuVLE$4!00%!E&QUV\]24V*U2C/A%!%!4!4RuqvVZ[a!bB!#Ar!uc 1A!#Ar!uc 1A //%!F6U[/\

5)wt} 5(++!]]5<<8FTYY11!YY--F z$7 7$'$>E$'u$=E!!8%(%..%@F%(%?F!Zs]Y^BKBK,Zu-EbEL]L]LpLpafapapq FH FH#(FL$*FMEE&MZ_Vd):@[_d_p_p_|MM!afU5A2ajjn43E3Ee3RY]YbYbchYijoYpw|  J!!"51U6B} .<@ +7+;+;<7(7(0(<(<(R(R@R@R(0(<(<.6.F.FH I =M (Z ..BEE"I !$$CEE#J %r@   c	                
   VP                   '       Edp   \        WP                  VP                  4      p	V P                  p
V
'       d   V P                  W&WXV4      w  rpMV P                  W%WgV4      w  rp\        VR R4      pVe#   VP                  W4      pYppV
'       d   TpM.TpM+V
'       d   TpWhR,          ,           pMWWR,          ,           pTp\        VRR4      pVe   VP                  W4      pV
'       d   TpMTpV^ 8  d5   V
'       d   RVP                  ,          p^ pMRVP                  ,          p^ pM^ ;ppVP                  VV,           VV,           4       VP                  V4       WP                  4       3# R# )ry  Nri   rz  r{  )r|  r   r}  r~  r   rk  rl   r  r  r  r  r  	getBounds)r<   ro  rg  ro   r  rp   rq   rr   rs   r  r%  r  r  ri  ry  r   r  r  rz  r  r  s   &&&&&&&&&            r=   _computeLabelPositionBarChart._computeLabelPosition  sR   ===$T>>5>>JJ\\F!]]51EB
!]]516B
uZ6H#&&t/SBBC3J,C#I+CC |T:J%((1CC!tEHHBBEHHBBROOBrE2b5)MM$oo'''S r@   c                   V P                   V P                  r!V'       d   Wn        V'       d   W!n        V P                  '       dM   VP	                  V P                  V P                  V P                  4      V P                  V P                  4       MKVP	                  V P                  V P                  V P                  V P                  4      V P                  4       VP                  V P                  4       V P                  4        R# )zRInformation function, can be called by charts which want to with space around barsN)rS   rR   joinAxisr   r   r   rp   rr   rq   rs   r   r   r   r<   r  r   s   &  r=   _computeBarPositionsBarChart._computeBarPositions  s    ""DNNBR{R{<<<NN4??466$**=tvvt{{SNN4664??466$++#F

S
T(()r@   c                   V P                   pV P                  4        \        V P                  4      pV P                  p. pVP
                  pV'       d   V P                  pWP                  ,           p	V P                  V P                  ,           p
V Fa  pV FX  w  rrW,           pW,           pV! \        VV4      \        VV4      \        VV4      V,
          V	\        VV4      ,
          34       KZ  	  Kc  	  MV P                  pWP                  ,           p	V P                  V P                  ,           p
V Fa  pV FX  w  rrW,           pW,           pV! \        VV4      \        VV4      \        VV4      V,
          V	\        VV4      ,
          34       KZ  	  Kc  	  VP                  4        V^ ,          .pV F  pVR,          pV^ ,          V^,          8  d   V^ ,          V^,          8  dl   \        V^ ,          V^ ,          4      \        V^,          V^,          4      \        V^,          V^,          4      \        V^,          V^,          4      3VR&   K  VP                  V4       K  	  TpRpRp\        V4      p\        V4       EF5  w  ppV^ ,          pVV,           pVV
8  d    VV3# TpR;ppVV8  dU   VV,          ^,          V8:  d@   \        VV,          ^,          V4      p\        VV,          ^,          V4      pV^,          pK[  VV8  dV   VV8  dM   TpT;'       d    VVVV,           VV,           ^ 3;'       g    VVVV,           VV,           ^ 3pVV8  d    VV3# K  K  VV8  g   K  TpT;'       d    V	V,
          VV	VV,           ^3;'       g    VV	V,
          VV,           V	^3pVV8  g   EK3   VV3# 	  VV3# )aC  helper for madmen who want to put stuff inside their barcharts
basically after _computebarPositions we slide a line of length size
down the bar profile on either side of the bars to find the
maximum space. If the space at any point is >= required then we're
done. Otherwise we return the largest space location and amount.
iNr   i  )r   r  rk   rT   r;  r   rp   rr   rq   rs   r  r   r  r   )r<   sizerequiredr%  lenDatar  CaCrg   re  endbprp   rq   whr   r  r   r   r  maxSmaxPnCr~   civ0v1r   aloahis   &&&                            r=   _computeMaxSpaceBarChart._computeMaxSpace+  sb    !!#dii.XXBjjB&&$C"$JA!AAAaQq3q8b="s1Qx-HI #%  Bkk!B&&#C"$JA!AAAa#a(C!HrM2Aa=IJ #% 
 	
qTFA"AtAaDyQqT!A$YQqT!A$AaD1s1Q4!~c!A$qQRtnU"  VaLDAbABDB#vu  Tz A""C#B$1Q47B;!A$q'#&!A$q'#&Q3wt8D!>>r"RVBtGA&>ZZ2bDQSTWQWXYBZDx'
 Tz (  T::2c6"R4":VVr"S&DQSTU>V8#UTz' !& Tzr@   c                
   V P                   V P                  r!V'       d   Wn        V'       d   W!n        V P                  '       dM   VP	                  V P                  V P                  V P                  4      V P                  V P                  4       MKVP	                  V P                  V P                  V P                  V P                  4      V P                  4       VP                  V P                  4       V P                  4        V P                  p. P                  pV P                  p\!        V4       EF=  w  rg. P                  p\!        V4       EF	  w  p	w  rrRW39   d   V P"                  pV'       d   VP$                  '       dw   \&        P&                  ! V4      pV P                  P(                  ^ 8*  ;'       d    R;'       g    RpVf   TpVf   TpV! V P+                  VP$                  WWWV4      4       K  V! R4       K  V P-                  Wi4      pV'       d1   V! V P+                  VV P.                  Wi3,          WiWW4      4       EK  V! R4       EK  	  V! VP0                  4       EK@  	  VP0                  # )zLInformation function, can be called by charts which want to mess with labelsNr  r  )rS   rR   r  r   r   r   rp   rr   rq   rs   r   r   r   rQ   r   r;  r   rZ   ro  rt  r   r  r^  rU   r  )r<   r  r   rQ   r   r  ro   r'  r  r  rp   rq   rr   rs   ru  r   ro  s   &                r=   _computeSimpleBarLabelPositions(BarChart._computeSimpleBarLabelPositionsk  s   ""DNNBR{R{<<<NN4??466$**=tvvt{{SNN4664??466$++#F

S
T(()yyII#B-JE		A09#,,eE>)Bbggg!YYr] NN44a7AAEIIT =!%!>A6$44RWWbST]cde$--e:D$44T4>>5.;Y[`ijot}~$! 1?" ajjM' (( zzr@   c                r    \        4       p\        4       pV P                  W4       VP                  V4       V# r   )r   r  rn   )r<   rz   r  s   &  r=   r   BarChart.makeBars  s,    GWq	b	r@   c                \   V P                   P                  pV P                  p\        V4      p\	        \        \        \        V4      4      4      pVR8X  d3   V^,
          V P                  ,          W0P                  ,          ,           pMV P                  pW@P                  V,           ,          # )z:for dynamically computing the desired category axis lengthr   )
rS   rv   rT   rk   r   r   r   rP   rN   rO   )r<   rv   rT   r   mr&  s   &     r=   _desiredCategoryAxisLength#BarChart._desiredCategoryAxisLength  s|    !!''yyIST]#$*A#t.q>JJ##J.//r@   c                   V P                   V P                  r!V'       d   Wn        V'       d   W!n        V P                  '       d\   VP	                  V P                  V P                  V P                  4      V P                  V P                  4       V P                  4       # VP	                  V P                  V P                  V P                  V P                  4      V P                  4       V P                  4       # r   )rS   rR   r  r   r   r   rp   rr   rq   rs   r  r  s   &  r=   drawBarChart.draw  s    ""DNNBR{R{<<<NN4??466$**=tvvt{{S !! NN4664??466$++#F

S!!r@   )r;  r8  r   r0  r2  r4  r5  r6  r.  r-  r   rX   rV   rU   rP   rN   rQ   rS   rc   rT   rO   rZ   rY   rM   rR   rb   r   r   )FN)F),rA   rB   rC   rD   __doc__r   r%   r   r   r	   r   r   r$   r   r
   r   r   rE   r{   r   r>   r   r   r   r   r   r  r   r^  rk  rp  rv  rn  r  r  r  r  r  r  r   r  r  rF   rG   rH   s   @r=   rK   rK   4   s    . 
H 
"8Yx(@S7T,U#V  ^S  bc  d
/PQ
 $H3RS
 "(1QR	

 D'GH
 !,GH
 $D/MN
 D'XY
 !,OP
 &d  2N  O
 't  3V  ef  g
 %T0yz
 (	8fuvw
 7>\klm
 #4.lm
   ,H;z{!
" !-U76&-IP~ #
$ !,x  IJ  K%
& '~ = '
8 ''?Fo~  A9
: #:jqPQUV.W`aijno#p  rW  X;
H@!MF=;$z4#8B	`FP} ~(:g
h2'hcJ*(X
 >@#J
0" "r@   rK   c                       ] tR tRtRt^ tRtR# )VerticalBarCharti  z3Vertical bar chart with multiple side-by-side bars.r   NrA   rB   rC   rD   r  r   rF   r   r@   r=   r  r    s
    9Gr@   r  c                       ] tR tRtRt^tRtR# )HorizontalBarCharti  z5Horizontal bar chart with multiple side-by-side bars.r   Nr  r   r@   r=   r  r    s
    ;Gr@   r  c                   <   a  ] tR tRt o RR ltR tR tR tRtV t	R# )	
_FakeGroupi  Nc                J    . V n         \        P                  ! V4      V n        R # r   )r   	functools
cmp_to_key_key)r<   r(   s   &&r=   r>   _FakeGroup.__init__  s    
((-	r@   c                <    V P                   P                  V4       R # r   )r   r   )r<   whats   &&r=   rn   _FakeGroup.add  s    

$r@   c                    V P                   # r   )r   r;   s   &r=   rj  _FakeGroup.value  s    zzr@   c                R    V P                   P                  V P                  R 7       R# ))keyN)r   r  r  r;   s   &r=   r  _FakeGroup.sort  s    

DII&r@   )r   r  r   )
rA   rB   rC   rD   r>   rn   rj  r  rF   rG   rH   s   @r=   r  r    s     . ' 'r@   r  c                      a  ] tR tRt o ]! ]]! ]RR7      ]! ]RR7      ]! ]RR7      ]! ]RR7      R7      tRt	Rt
R	tR	tR
 tR tR tR tR tRtV tR	# )r   i  zdx/dzr+   zdy/dzzdepth of an individual serieszz gap around series)rL   theta_xtheta_yzDepthzSpacer9   Nc                   \         P                  V 4       V P                  pV P                  pVf   V P                  pV P
                  pVf   V P                  pV P                  P                  R8X  d   W,          V^,           V,          ,           pMV^V,          ,           pW@P                  ,          pV P                  V,          V n        V P                  V,          V n        R # Nr   )rK   r   r-  r  rN   r  rP   rS   rv   r2  r  _3d_dxr  _3d_dy)r<   r<  r  r  	_3d_depths   &    r=   r   BarChart3D.calcBarPositions  s    !!$'''>DMM6>DOO6""M1#*KM6+AAI6)I%%%	ll9,ll9,r@   c                $   V P                   pVf   V P                  pV P                  pVf   V P                  pV P                  P
                  R8X  d*   V P                  WV,           ,          V,           ,          pV# V P                  V,          pV# r  )r  rN   r  rP   rS   rv   r2  )r<   ro   r  r  z0s   &&   r=   _calc_z0BarChart3D._calc_z0  s|    >DMM6>DOO6""M1!!5-#8#?@B 	 !!&(B	r@   c                   V P                   pVf   V P                  pV P                  p	V	f   V P                  p	V P	                  V4      p
WV P
                  ,          ,           pV^ 8  d   W$,          pV) pW*V P                  ,          ,          pW:V P                  ,          ,          pV P                  '       d
   W9,          pMW),          pVP                  ^ WW#WEWg3	4       R # r   )
r  rN   r  rP   r  r2  r  r  r   rn   )r<   rz   rp   rq   rr   rs   ro   rv   r  r  r  z1s   &&&&&&&&    r=   r  BarChart3D._makeBar  s    >DMM6>DOO6]]5!))))7JAFE	_	_<<<KAKA	qq545r@   c                :   V P                  V4      pV P                  p	V	f   V P                  p	Tp
WHV P                  ,          ,          pWXV P                  ,          ,          pV P
                  '       d
   WY,          pMWI,          pVP                  ^WWEWgW#3	4       R # r   )r  r  rP   r  r  r   rn   )r<   rz   ro   r  rp   rq   rr   rs   r  r  r  s   &&&&&&&&   r=   rp  BarChart3D._addBarLabel  sy    ]]5!>DOO6	_	_<<<KAKA	qq545r@   c                   ^ RI Hp \        V P                  R7      pV P	                  W"4       VP                  4        \        4       pV P                  pV P                  pVP                  4       pV P                  P                  pVR8X  d   VP                  4        M.VR8X  d(   \        R V 4       4       Uu. uF  q^,          NK  	  ppV Fu  p	V	^ ,          ^ 8X  g   K  V	R,          w  rrrppW,
          pV! W<W,           WV,           VV,          VV,          VP                  RVP                  VP                   RR	7       Kw  	  V F4  p	V	^8X  g   K  V	R,          w  rrrpp\"        P%                  WVVWW4       K6  	  V# u upi )
    )_draw_3d_barr'   r   r   c              3   h   "   T F(  q^,          V^,          V^,          V^,          3V3x  K*  	  R# 5i)   Nr   )r   ts   & r=   r   &BarChart3D.makeBars.<locals>.<genexpr>  s.     -ZQYA!QqT!A$qt/DQ.GQYs   02:r  NNNg?)r0   fillColorShadedr/   r1   shading)!reportlab.graphics.charts.utils3dr  r  _cmpZr  r  r   r  r  rj  rS   rv   reverser   r0   r/   r1   rK   rp  )r<   r  fgrz   r  r  fg_valuer   r  r  r  r  rp   rq   rr   rs   ro   rv   dzr  s   &                   r=   r   BarChart3D.makeBars  sV   BDJJ'r
	G,,,,88:##))Ig&,-ZQY-Z&[\&[!&[H\AtQw56rU2a%uUWQ17AxGRZ&+oot(-(9(9uGXGX$(*	  A!t56rU2a%uU%%dU5UJ   ]s   9F)r  r  )rA   rB   rC   rD   r   rK   r   r   rE   r  r  r  r  r   r  r  rp  r   rF   rG   rH   s   @r=   r   r     so     Hxg6xg6h-LMh-BC	
H GGFF-	6$6 r@   r   c                       ] tR tRtR tRtR# )VerticalBarChart3Di%  c                    \        V^,          ) V^,          V^ ,          V^,          ) 3V^,          ) V^,          V^ ,          V^,          ) 34      # r  r'   r<   r  r   s   &&&r=   <lambda>VerticalBarChart3D.<lambda>&  sE    #!uQqT!A$!u5!uQqT!A$!u6MNr@   r   NrA   rB   rC   rD   r	  rF   r   r@   r=   r  r  %  s    
NEr@   r  c                       ] tR tRtR tRtR# )HorizontalBarChart3Di(  c                    \        V^,          ) V^,          V^ ,          V^,          ) 3V^,          ) V^,          V^ ,          V^,          ) 34      # r  r'   r  s   &&&r=   r  HorizontalBarChart3D.<lambda>)  sE    S1Q4%!QqT1Q4%!81Q4%!QqT1Q4%9PQr@   r   Nr  r   r@   r=   r  r  (  s    QEr@   r  c                 ,   \        R^4      p R.p\        4       p^2Vn        ^2Vn        ^}Vn        RVn        Wn        \        P                  Vn	        ^ VP                  n        ^<VP                  n        ^VP                  n        RVP                  P                  n        ^VP                  P                  n        RVP                  P                  n        ^VP                  P                  n        RR.VP                  n        V P+                  V4       V # )z9A slightly pathologic bar chart with only TWO data items.  ,  neYingYang      r{  r   r  rp   rq   rs   rr   rT   r   r   r/   rR   valueMinvalueMax	valueSteprS   r9  r   r  r  anglecategoryNamesrn   r   rT   r   s      r=   	sampleV0ar+  ,  s     c3G:D		BBDBDBIBHG\\BNBLLBLLBLL'+BOO$ !BOO "BOO#%BOO %+V$4BOO!KKONr@   c                 *   \        R^4      p R.p\        4       p^2Vn        ^2Vn        ^}Vn        RVn        Wn        \        P                  Vn	        ^ VP                  n        ^2VP                  n        ^VP                  n        RVP                  P                  n        ^VP                  P                  n        RVP                  P                  n        ^VP                  P                  n        R.VP                  n        V P+                  V4       V # )z/A pathologic bar chart with only ONE data item.r  r  r  Jan-99*   r{  r$  r*  s      r=   	sampleV0br0  K  s     c3G7D		BBDBDBIBHG\\BNBLLBLLBLL'+BOO$ !BOO "BOO#%BOO %-JBOO!KKONr@   c                    \        R^4      p R.p\        4       p^2Vn        ^2Vn        ^}Vn        RVn        Wn        \        P                  Vn	        ^ VP                  n        ^<VP                  n        ^VP                  n        RVP                  P                  n        ^VP                  P                  n        RVP                  P                  n        . VP                  n        V P)                  V4       V # )z8A really pathologic bar chart with NO data items at all!r  r  r  r   r{  )r   r  rp   rq   rs   rr   rT   r   r   r/   rR   r%  r&  r'  rS   r9  r   r  r  r)  rn   r*  s      r=   	sampleV0cr2  i  s     c3G4D		BBDBDBIBHG\\BNBLLBLLBLL'+BOO$ !BOO "BOO$&BOO!KKONr@   c                    \        R^4      p RR.p\        4       p^2Vn        ^2Vn        ^}Vn        RVn        Wn        \        P                  Vn	        ^ VP                  n        ^<VP                  n        ^VP                  n        RVP                  P                  n        ^VP                  P                  n        R	VP                  P                  n        ^VP                  P                  n        RP)                  R4      pV Uu. uF  qDR,           NK  	  ppW2P                  n        V P-                  V4       V # u upi )
!Sample of multi-series bar chart.r  r  r  Jan Feb Mar Apr May Jun Jul Aug -99r"     r#     %   -                     &   .   r#  r9  r{  )r   r  rp   rq   rs   rr   rT   r   r   r/   rR   r%  r&  r'  rS   r9  r   r  r  r(  r   r)  rn   r   rT   r   catNamesr   s        r=   sampleV1rH    s    c3G +*D
 
	BBDBDBIBHG\\BNBLLBLLBLL'+BOO$ !BOO "BOO#%BOO 066s;H!)*A%H*$,OO!KKON	 +s   D<c                    RR.p Rp\        R^4      p\        4       p^2Vn        ^2Vn        ^xVn        RVn        Wn        ^ Vn        ^
Vn        ^
Vn	        R	VP                  n        ^VP                  n        ^VP                  n        RVP                  P                  n        ^VP                  P                  n        RVP                  P                  n        RVP                  P                  n        WP&                  n        RVP&                  P                  n        ^VP&                  P                  n        R
VP&                  P                  n        VP-                  V4       V# r4  r  r  	Helveticar   r   333333@   r9  gffffff"@333333?皙r>  g333333@zQ3 2000zYear to Datez	12 monthszAnnualised
3 yearszSince 07.10.99r   r  rp   rq   rs   rr   rT   rP   rO   rN   rR   r%  r&  r'  r9  r}  r~  r   r   rS   r)  r  rn   rT   r9  r   r   s       r=   	sampleV2arY         ##D7F c3G		BBDBDBIBHGBMBOBKBLLBLLBLL#.BLL #$BLL $'BLL!%-BLL"$*OO!&1BOO#&'BOO# #BOOKKONr@   c                    RR.p Rp\        R^4      p\        4       p^2Vn        ^2Vn        ^xVn        RVn        Wn        ^Vn        ^
Vn        ^
Vn	        R	VP                  n        ^VP                  n        ^VP                  n        RVP                  P                  n        ^VP                  P                  n        RVP                  P                  n        RVP                  P                  n        WP&                  n        RVP&                  P                  n        ^VP&                  P                  n        R
VP&                  P                  n        VP-                  V4       V# rJ  rW  rX  s       r=   	sampleV2br\    rZ  r@   c                    RR.p R	p\        R^4      p\        4       p^2Vn        ^2Vn        ^xVn        RVn        Wn        ^Vn        ^
Vn        ^
Vn	        R
VP                  n        ^VP                  n        ^VP                  n        RVP                  P                  n        ^VP                  P                  n        WP"                  n        RVP"                  P                  n        ^VP"                  P                  n        RVP                  P                  n        RVP                  P                  n        RVP"                  P                  n        ^
VP,                  n        RVn        ^ VP,                  n        ^ VP,                  n        RVP,                  n        RVP,                  n        ^VP,                  n        VP5                  V4       V# )r4  r  r  rK  r   r   %0.2frM  rN  rO  r9  {G#@rQ  rR  rS  r>  r`  rT  rU  rV  )r   r  rp   rq   rs   rr   rT   rP   rO   rN   rR   r%  r&  r'  r9  r}  r~  rS   r)  r   r   r  rU   r   rV   r  rn   rX  s       r=   	sampleV2crb    sn    $$D7F c3G		BBDBDBIBHGBMBOBKBLLBLLBLL#.BLL #$BLL $*OO!&1BOO#&'BOO#$'BLL!%-BLL" #BOOBLLBBLLOBLLO BLL'BLLBLLKKONr@   c                    Rp RpRp\        V 4      \        V4      8X  g   Q R4       h\        V 4      \        V4      8X  g   Q R4       h\        R^4      p\        4       p^ Vn        ^ Vn        ^dVn        ^Vn        V3Vn        \        P                  VP                  n        RVn        ^ VP                  n        ^ VP                  n        RVP                  n        ^ZVP                  n        RVP                  n        ^VP                  n        ^
VP                  n        ^ VP*                  n        R	VP*                  n        ^VP*                  n        ^VP*                  n        ^ VP4                  n        ^ VP4                  n        WP4                  n        ^ZVP4                  P<                  n        RVP4                  P<                  n        ^ VP4                  P<                  n        R
VP4                  P<                  n        RVP4                  P<                  n        ^VP4                  P<                  n        \?        V4      pVPA                  ^d^4       VPC                  R4       VPE                  V4       V# )zBFaked horizontal bar chart using a vertical real one (deprecated).bad datar  r^  r  rK  
zUK EquitieszUS EquitieszEuropean EquitieszJapanese EquitieszPacific (ex Japan) EquitieszEmerging Markets EquitieszUK BondszOverseas BondszUK Index-LinkedCash
g      333333?r9   r  g?gffffff?g?g?r  rh  
g        Q?g?皙?g)\(?gp=
ף?g)\(?g)\(?rk  rj  r{  ii)#rk   r   r  rp   rq   rs   rr   rT   r   r   rQ   r0   rV   rU   r  r  r   r(  r}  r~  r   rR   r|  r%  r&  r'  rS   tickUptickDownr)  r9  r   	translaterotatern   namesseries1series2r   r   rz   s         r=   sampleV3rt  -  s   GE BGHGu:W%1z1%u:W%1z1%c3G		BBDBDBIBHjBGBGGBBLLOBLLO BLLBLL'BLLBLLBLLBLLBLLBLLBLLBOO BOO$)OO!#%BOO '*BOO$ !BOO $BOO&1BOO#&'BOO#b	AKKSHHSMKKNNr@   c                    \        R^4      p R.p\        4       p^2Vn        ^2Vn        ^}Vn        RVn        Wn        \        P                  Vn	        ^ VP                  n        ^<VP                  n        ^VP                  n        RVP                  P                  n        RVP                  P                  n        RR.VP                  n        V P'                  V4       V # )AA bar chart showing value axis region starting at *exactly* zero.r  r  r   r  r   r!  r   r  rp   rq   rs   rr   rT   r   r   r/   rR   r%  r&  r'  rS   r9  r   r  r)  rn   r*  s      r=   	sampleV4ary  e  s     c3G:D		BBDBDBIBHG\\BNBLLBLLBLL'*BOO$ "BOO%+V$4BOO!KKONr@   c                    \        R^4      p R.p\        4       p^2Vn        ^2Vn        ^}Vn        RVn        Wn        \        P                  Vn	        RVP                  n        ^<VP                  n        ^VP                  n        RVP                  P                  n        RVP                  P                  n        RR.VP                  n        V P'                  V4       V # )	<A bar chart showing value axis region starting *below* zero.r  r  r   r  r   r!  rw  rx  r*  s      r=   	sampleV4br}    s     c3G:D		BBDBDBIBHG\\BNBLLBLLBLL'*BOO$ "BOO%+V$4BOO!KKONr@   c                    \        R^4      p R.p\        4       p^2Vn        ^2Vn        ^}Vn        RVn        Wn        \        P                  Vn	        ^
VP                  n        ^<VP                  n        ^VP                  n        RVP                  P                  n        RVP                  P                  n        RR.VP                  n        V P'                  V4       V # )z;A bar chart showing value axis region staring *above* zero.r  r  r   r  r   r!  rw  rx  r*  s      r=   	sampleV4cr    s     c3G:D		BBDBDBIBHG\\BNBLLBLLBLL'*BOO$ "BOO%+V$4BOO!KKONr@   c                    \        R^4      p R.p\        4       p^2Vn        ^2Vn        ^}Vn        RVn        Wn        \        P                  Vn	        RVP                  n        RVP                  n        ^VP                  n        RVP                  P                  n        R	VP                  P                  n        RR.VP                  n        V P'                  V4       V # )
<A bar chart showing value axis region entirely *below* zero.r  r  r   r  r   iir|  rw  rx  r*  s      r=   	sampleV4dr    s     c3G<D		BBDBDBIBHG\\BNBLLBLLBLL'*BOO$ "BOO%+V$4BOO!KKONr@   c                    \        R^4      p \        p\        4       p^2Vn        ^2Vn        ^}Vn        RVn        Wn        \        P                  Vn
        ^ VP                  n        ^<VP                  n        ^VP                  n        RVP                  P                   n        RVP                  P                   n        RR.VP                  n        V P)                  V4       V # )8A simple bar chart with no expressed spacing attributes.r  r  r   r  r   rw  )r   dataSample5r  rp   rq   rs   rr   rT   r   r   r/   rR   r%  r&  r'  rS   r9  r   r  r)  rn   r*  s      r=   	sampleV5ar    s     c3GD		BBDBDBIBHG\\BNBLLBLLBLL'*BOO$ "BOO%+V$4BOO!KKONr@   c                    \        R^4      p \        p\        4       p^2Vn        ^2Vn        ^}Vn        RVn        Wn        \        P                  Vn
        ^ Vn        ^(Vn        ^Vn        ^
Vn        ^ VP                  n        ^<VP                  n        ^VP                  n        RVP&                  P(                  n        RVP&                  P(                  n        RR.VP&                  n        V P1                  V4       V # )-A simple bar chart with proportional spacing.r  r  r   r  r   rw  r   r  r  rp   rq   rs   rr   rT   r   r   r/   rM   rN   rO   rP   rR   r%  r&  r'  rS   r9  r   r  r)  rn   r*  s      r=   	sampleV5br         c3GD		BBDBDBIBHG\\BNBNBKBOBMBLLBLLBLL'*BOO$ "BOO%+V$4BOO!KKONr@   c                    \        R^4      p \        p\        4       p^2Vn        ^2Vn        ^}Vn        RVn        Wn        \        P                  Vn
        ^Vn        ^(Vn        ^ Vn        ^ Vn        ^ VP                  n        ^<VP                  n        ^VP                  n        RVP&                  P(                  n        RVP&                  P(                  n        RR.VP&                  n        V P1                  V4       V # z6Make sampe simple bar chart but with absolute spacing.r  r  r   r  r   rw  r  r*  s      r=   
sampleV5c1r    s     c3GD		BBDBDBIBHG\\BNBNBKBOBMBLLBLLBLL'*BOO$ "BOO%+V$4BOO!KKONr@   c                    \        R^4      p \        p\        4       p^2Vn        ^2Vn        ^}Vn        RVn        Wn        \        P                  Vn
        ^Vn        ^(Vn        ^Vn        ^ Vn        ^ VP                  n        ^<VP                  n        ^VP                  n        RVP&                  P(                  n        RVP&                  P(                  n        RR.VP&                  n        V P1                  V4       V # r  r  r*  s      r=   
sampleV5c2r  =  s     c3GD		BBDBDBIBHG\\BNBNBKBOBMBLLBLLBLL'*BOO$ "BOO%+V$4BOO!KKONr@   c                    \        R^4      p \        p\        4       p^2Vn        ^2Vn        ^}Vn        RVn        Wn        \        P                  Vn
        ^Vn        ^(Vn        ^ Vn        ^
Vn        ^ VP                  n        ^<VP                  n        ^VP                  n        RVP&                  P(                  n        RVP&                  P(                  n        RR.VP&                  n        V P1                  V4       V # r  r  r*  s      r=   
sampleV5c3r  ^  s     c3GD		BBDBDBIBHG\\BNBNBKBOBMBLLBLLBLL'*BOO$ "BOO%+V$4BOO!KKONr@   c                    \        R^4      p \        p\        4       p^2Vn        ^2Vn        ^}Vn        RVn        Wn        \        P                  Vn
        ^Vn        ^(Vn        ^Vn        ^
Vn        ^ VP                  n        ^<VP                  n        ^VP                  n        RVP&                  P(                  n        RVP&                  P(                  n        RR.VP&                  n        V P1                  V4       V # r  r  r*  s      r=   
sampleV5c4r    r  r@   c                    \        R^4      p R.p\        4       p^2Vn        ^2Vn        ^}Vn        RVn        Wn        \        P                  Vn	        ^ VP                  n        ^<VP                  n        ^VP                  n        RVP                  P                  n        ^VP                  P                  n        RR.VP                  n        V P'                  V4       V # )z>Make a slightly pathologic bar chart with only TWO data items.r  r  ser  r   r!  r   r  rp   rq   rs   rr   rT   r   r   r/   rR   r%  r&  r'  rS   r9  r   r(  r)  rn   r*  s      r=   	sampleH0ar    s     c3G:D		BBDBDBIBHG\\BNBLLBLLBLL'+BOO$#%BOO %+V$4BOO!KKONr@   c                    \        R^4      p R.p\        4       p^2Vn        ^2Vn        ^}Vn        RVn        Wn        \        P                  Vn	        ^ VP                  n        ^2VP                  n        ^VP                  n        RVP                  P                  n        ^VP                  P                  n        R.VP                  n        V P'                  V4       V # )z4Make a pathologic bar chart with only ONE data item.r  r  r  r-  r.  r  r*  s      r=   	sampleH0br    s     c3G7D		BBDBDBIBHG\\BNBLLBLLBLL'+BOO$#%BOO %-JBOO!KKONr@   c                    \        R^4      p R.p\        4       p^2Vn        ^2Vn        ^}Vn        RVn        Wn        \        P                  Vn	        ^ VP                  n        ^<VP                  n        ^VP                  n        RVP                  P                  n        ^VP                  P                  n        . VP                  n        V P'                  V4       V # )z=Make a really pathologic bar chart with NO data items at all!r  r  r  r   r  r*  s      r=   	sampleH0cr    s     c3G4D		BBDBDBIBHG\\BNBLLBLLBLL'+BOO$#%BOO $&BOO!KKONr@   c                    \        R^4      p RR	.p\        4       p^2Vn        ^2Vn        ^}Vn        RVn        Wn        \        P                  Vn	        ^ VP                  n        ^<VP                  n        ^VP                  n        RVP                  P                  n        RP#                  R4      pV Uu. uF  qDR,           NK  	  ppW2P                  n        V P'                  VR4       V # u upi )
r4  r  r  er5  r6  r7  barchartr8  r?  )r   r  rp   rq   rs   rr   rT   r   r   r/   rR   r%  r&  r'  rS   r9  r   r   r)  rn   rF  s        r=   sampleH1r    s     c3G +*D
 
	BBDBDBIBHG\\BNBLLBLLBLL'*BOO$066s;H!)*A%H*$,OO!KKJN	 +s   5C,c                    RR.p Rp\        R^4      p\        4       p^PVn        ^2Vn        ^xVn        RVn        Wn        ^ Vn        ^
Vn        ^
Vn	        R	VP                  n        ^VP                  n        ^VP                  n        RVP                  P                  n        ^VP                  P                  n        RVP                  P                  n        RVP                  P                  n        VP                  P'                  VP                  4       WP(                  n        RVP(                  P                  n        ^VP(                  P                  n        R
VP(                  P                  n        VP/                  V4       V# r4  r  r  rK  r   r   rL  rP  rT  rU  j)r   r  rp   rq   rs   rr   rT   rP   rO   rN   rR   r%  r&  r'  r9  r}  r~  r   r   r   rS   r)  r  rn   rX  s       r=   	sampleH2ar    s6    ##D7F c3G		BBDBDBIBHGBMBOBKBLLBLLBLL#.BLL #$BLL $'BLL!%-BLL"LL277#$*OO!&1BOO#&'BOO# $BOOKKONr@   c                    RR.p Rp\        R^4      p\        4       p^PVn        ^2Vn        ^xVn        RVn        Wn        ^Vn        ^
Vn        ^
Vn	        R	VP                  n        ^VP                  n        ^VP                  n        RVP                  P                  n        ^VP                  P                  n        RVP                  P                  n        RVP                  P                  n        WP&                  n        RVP&                  P                  n        ^VP&                  P                  n        R
VP&                  P                  n        VP-                  V4       V# r  )r   r  rp   rq   rs   rr   rT   rP   rO   rN   rR   r%  r&  r'  r9  r}  r~  r   r   rS   r)  r  rn   rX  s       r=   	sampleH2br  @  s     ##D7F c3G		BBDBDBIBHGBMBOBKBLLBLLBLL#.BLL #$BLL $'BLL!%-BLL"$*OO!&1BOO#&'BOO# $BOOKKONr@   c                    RR.p R	p\        R^4      p\        4       p^PVn        ^2Vn        ^xVn        RVn        Wn        ^Vn        ^
Vn        ^
Vn	        R
VP                  n        ^VP                  n        ^VP                  n        RVP                  P                  n        ^VP                  P                  n        RVP                  P                  n        RVP                  P                  n        WP&                  n        RVP&                  P                  n        ^VP&                  P                  n        RVP&                  P                  n        ^
VP,                  n        RVn        ^ VP,                  n        ^ VP,                  n        RVP,                  n        RVP,                  n        ^VP,                  n        VP5                  V4       V# )r4  r  r  rK  r   r   r^  r_  ra  rT  rU  r  )r   r  rp   rq   rs   rr   rT   rP   rO   rN   rR   r%  r&  r'  r9  r}  r~  r   r   rS   r)  r  rU   r   rV   r  rn   rX  s       r=   	sampleH2cr  i  sn    $$D7F c3G		BBDBDBIBHGBMBOBKBLLBLLBLL#.BLL #$BLL $'BLL!%-BLL"$*OO!&1BOO#&'BOO# $BOOBLLBBLLOBLLO BLL'BLLBLLKKONr@   c                    Rp RpRp\        V 4      \        V4      8X  g   Q R4       h\        V 4      \        V4      8X  g   Q R4       h\        R^4      p\        4       p^dVn        ^Vn        ^Vn        ^Vn        V3Vn        \        P                  VP                  n        RVn        ^ VP                  n        ^ VP                  n        RVP                  n        RVP                  n        ^VP                  n        ^
VP                  n        ^ VP(                  n        R	VP(                  n        ^VP(                  n        ^VP(                  n        ^ VP2                  n        ^ VP2                  n        WP2                  n        RVP2                  P:                  n        R
VP2                  P:                  n        RVP2                  P:                  n        ^VP2                  P:                  n        \=        V4      pVP?                  V4       V# )zEA really horizontal bar chart (compared to the equivalent faked one).rd  r  r^  r  rK  re  rg  ri  r{  iV) rk   r   r  rp   rq   rs   rr   rT   r   r   rQ   r0   rV   rU   r  r  r   r}  r~  r   rR   r|  r%  r&  r'  rS   tickLeft	tickRightr)  r9  r   rn   rp  s         r=   sampleH3r    s   GE BGHGu:W%1z1%u:W%1z1%c3G		BBDBDBIBHjBGBGGBBLLOBLLO BLL'BLLBLLBLLBLLBLLBLLBLL BOO !BOO$)OO!'*BOO$ $BOO&1BOO#&'BOO#b	AKKNNr@   c                    \        R^4      p R.p\        4       p^2Vn        ^2Vn        ^}Vn        RVn        Wn        \        P                  Vn	        ^ VP                  n        ^<VP                  n        ^VP                  n        RVP                  P                  n        RR.VP                  n        V P%                  V4       V # )rv  r  r  r  r  r   r!  r   r  rp   rq   rs   rr   rT   r   r   r/   rR   r%  r&  r'  rS   r9  r   r)  rn   r*  s      r=   	sampleH4ar    s     c3G:D		BBDBDBIBHG\\BNBLLBLLBLL'*BOO$%+V$4BOO!KKONr@   c                    \        R^4      p R.p\        4       p^2Vn        ^2Vn        ^}Vn        RVn        Wn        \        P                  Vn	        RVP                  n        ^<VP                  n        ^VP                  n        RVP                  P                  n        RR.VP                  n        V P%                  V4       V # )r{  r  r  r  r  r   r!  r|  r  r*  s      r=   	sampleH4br    s     c3G:D		BBDBDBIBHG\\BNBLLBLLBLL'*BOO$%+V$4BOO!KKONr@   c                    \        R^4      p R.p\        4       p^2Vn        ^2Vn        ^}Vn        RVn        Wn        \        P                  Vn	        ^
VP                  n        ^<VP                  n        ^VP                  n        RVP                  P                  n        RR.VP                  n        V P%                  V4       V # )z<A bar chart showing value axis region starting *above* zero.r  r  r  r  r   r!  r  r*  s      r=   	sampleH4cr    s     c3G:D		BBDBDBIBHG\\BNBLLBLLBLL'*BOO$%+V$4BOO!KKONr@   c                    \        R^4      p R.p\        4       p^2Vn        ^2Vn        ^}Vn        RVn        Wn        \        P                  Vn	        RVP                  n        RVP                  n        ^VP                  n        RVP                  P                  n        RR.VP                  n        V P%                  V4       V # )	r  r  r  r  r  r   r  r  r|  r  r*  s      r=   	sampleH4dr  !  s     c3G<D		BBDBDBIBHG\\BNBLLBLLBLL'*BOO$%+V$4BOO!KKONr@   c                    \        R^4      p \        p\        4       p^2Vn        ^2Vn        ^}Vn        RVn        Wn        \        P                  Vn
        ^ VP                  n        ^<VP                  n        ^VP                  n        RVP                  P                   n        RR.VP                  n        V P'                  V4       V # )r  r  r  r  r  r   )r   r  r  rp   rq   rs   rr   rT   r   r   r/   rR   r%  r&  r'  rS   r9  r   r)  rn   r*  s      r=   	sampleH5ar  ?  s     c3GD		BBDBDBIBHG\\BNBLLBLLBLL'*BOO$%+V$4BOO!KKONr@   c                    \        R^4      p \        p\        4       p^2Vn        ^2Vn        ^}Vn        RVn        Wn        \        P                  Vn
        ^ Vn        ^(Vn        ^Vn        ^
Vn        ^ VP                  n        ^<VP                  n        ^VP                  n        RVP&                  P(                  n        RR.VP&                  n        V P/                  V4       V # )r  r  r  r  r  r   r   r  r  rp   rq   rs   rr   rT   r   r   r/   rM   rN   rO   rP   rR   r%  r&  r'  rS   r9  r   r)  rn   r*  s      r=   	sampleH5br  Z       c3GD		BBDBDBIBHG\\BNBNBKBOBMBLLBLLBLL'*BOO$%+V$4BOO!KKONr@   c                    \        R^4      p \        p\        4       p^2Vn        ^2Vn        ^}Vn        RVn        Wn        \        P                  Vn
        ^Vn        ^
Vn        ^ Vn        ^ Vn        ^ VP                  n        ^<VP                  n        ^VP                  n        RVP&                  P(                  n        RR.VP&                  n        V P/                  V4       V # )z)A simple bar chart with absolute spacing.r  r  r  r  r   r  r*  s      r=   
sampleH5c1r  z       c3GD		BBDBDBIBHG\\BNBNBKBOBMBLLBLLBLL'*BOO$%+V$4BOO!KKONr@   c                    \        R^4      p \        p\        4       p^2Vn        ^2Vn        ^}Vn        RVn        Wn        \        P                  Vn
        ^Vn        ^
Vn        ^Vn        ^ Vn        ^ VP                  n        ^<VP                  n        ^VP                  n        RVP&                  P(                  n        RR.VP&                  n        V P/                  V4       V # 'Simple bar chart with absolute spacing.r  r  r  r  r   r  r*  s      r=   
sampleH5c2r    s     c3GD		BBDBDBIBHG\\BNBNBKBOBMBLLBLLBLL'*BOO$%+V$4BOO!KKONr@   c                    \        R^4      p \        p\        4       p^2Vn        ^Vn        ^Vn        RVn        Wn        \        P                  Vn
        ^Vn        ^
Vn        ^ Vn        ^Vn        ^ VP                  n        ^<VP                  n        ^VP                  n        RVP&                  P(                  n        RR.VP&                  n        V P/                  V4       V # r  r  r*  s      r=   
sampleH5c3r    r  r@   c                    \        R^4      p \        p\        4       p^2Vn        ^2Vn        ^}Vn        RVn        Wn        \        P                  Vn
        ^Vn        ^
Vn        ^Vn        ^
Vn        ^ VP                  n        ^<VP                  n        ^VP                  n        RVP&                  P(                  n        RR.VP&                  n        V P/                  V4       V # r  r  r*  s      r=   
sampleH5c4r    r  r@   c                    \        R^4      p \        p\        4       p^2Vn        ^2Vn        ^}Vn        RVn        Wn        \        P                  Vn
        ^
Vn        ^Vn        ^Vn        ^ VP                  n        ^<VP                  n        ^VP                  n        RVP$                  P&                  n        RR.VP$                  n        ^ RIHp V! 4       p\        P                  Vn        \        P2                  Vn        RVn        ^ Vn        V! 4       p\        P                  Vn        \        P:                  Vn        RVn        ^ Vn        V! 4       p\        P2                  Vn        \        P<                  Vn        RVn        ^Vn        ^ Vn        WBP@                  n!        WRP@                  ^,          n!        WbP@                  ^,          n!        V PE                  V4       V # )	(Simple bar chart using symbol attribute.r  r  r  r  r   
ShadedRect
horizontalvertical)#r   r  r  rp   rq   rs   rr   rT   r   r   r/   rN   rO   rP   rR   r%  r&  r'  rS   r9  r   r)   reportlab.graphics.widgets.gridsr  fillColorStartr:   fillColorEndorientationr1   pinkwhitecylinderModerQ   r3   rn   )r   rT   r   r  sym1sym2sym3s          r=   sampleSymbol1r    sr    c3GD		BBDBDBIBHG\\BNBKBOBMBLLBLLBLL'*BOO$%+V$4BOO!;<D ,,DD#DD<D ,,DD#DD<D ++DD!DDDGGNGGAJGGAJKKONr@   c                 Z   \        R^4      p \        p\        4       pRVP                  n        ^2Vn        ^2Vn        ^}Vn        RVn        Wn	        \        P                  Vn        ^
Vn        ^Vn        ^ VP                  n        RVP                  P"                  n        RR.VP                  n        ^ RIHp V! 4       VP,                  n        \        P0                  VP,                  P.                  n        \        P4                  VP,                  P.                  n        RVP,                  P.                  n        ^VP,                  P.                  n        ^ VP,                  P.                  n        V! 4       VP,                  ^,          n        \        P>                  VP,                  ^,          P.                  n        \        P4                  VP,                  ^,          P.                  n        RVP,                  ^,          P.                  n        ^VP,                  ^,          P.                  n        ^ VP,                  ^,          P.                  n        V! 4       VP,                  ^,          n        \        P@                  VP,                  ^,          P.                  n        \        P4                  VP,                  ^,          P.                  n        RVP,                  ^,          P.                  n        ^VP,                  ^,          P.                  n        ^ VP,                  ^,          P.                  n        V! 4       VP,                  ^,          n        \        PB                  VP,                  ^,          P.                  n        \        P4                  VP,                  ^,          P.                  n        RVP,                  ^,          P.                  n        ^VP,                  ^,          P.                  n        ^ VP,                  ^,          P.                  n        V PE                  V4       V # )	r  r  r   r  r  r  r   r  r  )#r   r  r  rS   rv   rp   rq   rs   rr   rT   r   r   r/   rN   rO   rR   r%  r9  r   r)  r  r  rQ   r3   r   r  r  r  r  r  r1   magentar   r:   rn   )r   rT   r   r  s       r=   sampleStacked1r  /	  s    c3GD		B%BOOBDBDBIBHG\\BNBKBOBLL'*BOO$%+V$4BOO!;\BGGN$*JJBGGNN!"(,,BGGNN!+BGGNN"#BGGNN!"BGGNN"BGGAJ'-~~BGGAJ$%+\\BGGAJ"$.BGGAJ!%&BGGAJ"$%BGGAJ!"BGGAJ'-||BGGAJ$%+\\BGGAJ"$.BGGAJ!%&BGGAJ"$%BGGAJ!"BGGAJ'-{{BGGAJ$%+\\BGGAJ"$.BGGAJ!%&BGGAJ"$%BGGAJ!KKONr@   c                   .   a  ] tR tRt o RtRR ltRtV tR# )
SampleH5c4ih	  r  c                   \         P                  ! WV.VO5/ VB  \        4       p^2Vn        ^2Vn        ^}Vn        RVn        \        Vn        \        P                  Vn        ^Vn        ^
Vn        ^Vn        ^
Vn        ^ VP                   n        ^<VP                   n        ^VP                   n        RVP(                  P*                  n        RR.VP(                  n        V P1                  VRR7       VP3                  4        R# )2   r  r  r  r   HBC)r4   N)r   r>   r  rp   rq   rs   rr   r  rT   r   r   r/   rM   rN   rO   rP   rR   r%  r&  r'  rS   r9  r   r)  rn   r  )r<   rr   rs   argskwr   s   &&&*, r=   r>   SampleH5c4.__init__k	  s    F6D626!	 ! "!#+.()/(8%
**,r@   r   N)r     )rA   rB   rC   rD   r  r>   rF   rG   rH   s   @r=   r  r  h	  s     -- -r@   r  ))
   <   )r#  r  )   (   )r  r  )h__version__r  rt  r  astr   reportlab.libr   reportlab.lib.validatorsr   r   r   r   r   r	   r
   r   r   r   r   r   reportlab.lib.utilsr   r   "reportlab.graphics.widgets.markersr   r   reportlab.lib.attrmapr   r   reportlab.pdfbase.pdfmetricsr   reportlab.graphics.widgetbaser   r   r   reportlab.graphics.shapesr   r   r   r   r   reportlab.graphics.charts.axesr   r    r!   r"   $reportlab.graphics.charts.textlabelsr#   r$   reportlab.graphics.charts.areasr%   !reportlab.graphics.charts.legendsr&   	reportlabr(   r*   rK   r  r  r  r   r  r  r+  r0  r2  rH  rY  r\  rb  rt  ry  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  r  r  r   r@   r=   <module>r     s   	    B B B B 7 G 7 4 Y Y J J _ _ X 4 5 $ $*w"x w"rx  ' '` `DO$4 OR:&8 R><: F&R&R/d5p:::B 78BBBBF:88>'T&R/d/d8888 76@@@@>4l6r- -r@   