Mini Kabibi Habibi

Current Path : C:/Program Files (x86)/DevExpress/DXperience 13.1/Bin/Framework/
Upload File :
Current File : C:/Program Files (x86)/DevExpress/DXperience 13.1/Bin/Framework/DevExpress.XtraCharts.v13.1.Web.dll

MZ����@���	�!�L�!This program cannot be run in DOS mode.

$PELvB�Q�!�N   `J�@�K ���@�  H.textT� � `.rsrc� �@@.reloc@�@B0H܈�{	ؕ�P ��'�	��]���L�	�>n't�w����{�l	��4����C��:�^�ׁˡ
ѱ��aλ1�ˤy�_�^�e��uRd���E���'~��R���ڻ�^,,o(�	�[F�`��)�b1�%��
,"(�
*0Oo�
+'o�
t�
o�
�(�
o�
,�o�
-��u
	,	o�
�**3:0g(�

o�
��+@o�

	o�
(-	+ 	o�
	��s�
�(�
�Xo�
2�s�
*"(�
*:(�
s*0�
�(�
%(�
~-o�X(�
(�
s�X(�
(�
�[(�
(�
s�[(�
(�
�(�
(�
s�(�
(�
��
,(�
�*��
o�
*{
*v{
.(�
}
(�
*{*v{.(�
}(�
*{
*v{
.(�
}
(�
*{*v{.(�
}(�
*V}
}(�
*Z}
}(�
*6{
��**{
�**{�*6{��*�(�
-(-(-(-(**0;u
,0{
}
{}{
}
{}*Zrp(�
o�
(�
*s*�*_�*zo�
-
o�
o�
o�
*{*{*�s�
}s�
}s�
}(�
s<}*0Wr
p(){oM{rp�

(�
�(�
�(�
�(�
�oJ*0�o�
-(+*rp(){oM{rpoLo�
((s�

s�
+0o�
�(,o�
o�
�(,o�
Xo�
2�{oM{rpo�
oK{oM{r!po�
oK{oM{r%po�
�oG*(+*:r)p(**:r-p(**:r1p(**:r5p(**0({�

(�
�(�
�oD*0Z{oP�i1=�&q&('
+!{oM�&q&('X
�i2�{oQ*J{r9poF*0L(){oM{r=poL(/{oM{rpoL(/*2rAp()*0{(
{rEpoI*0{(
{rKpoI*0Xu 
,M{o�
,@{o�
,2{oM{rSpoL{o�
(�
('*z{oNo�
{oO*0�{oNo�
,
o�
o�
-r[ps�
zo�
o�
(,o�
,#{oMo�
(-o�
(.{oM{rpoLo�
(/{oO*0�	{oPo�
,|+oo�
o�
u
	,V	o�
(�
,E	o�
u ,4{o�
-%{	o�
u 	o�
(�
o�
Xo�
2�o�
1;o�
(0+{oMo�
(0Xo�
2�{oQ*2{o�
*o�
*(�
*Zr�ptr�p(�
*(�
*R�-r�p*r�p*(�
*0D
�
l(�
k
l(�
k3+r�p(�
(�
(�
o�
(�
*(�
*:(�
}*0_(Po�
1I{o�
o3o�
&
+#(M{o�
o3o�
&X
o�
2�(Q*b{~o3o�
&*v{~�o3o�
&*v{~�
o3o�
&*v{~�o3o�
&*6~(=*6~(=*6~(=*6~(=*>(L(>*>(L(?*>(L(@*>(L(A*>(L(D*>(L(E*b{r�p(�
o�
&*J{r�po�
&*J{r�po�
&*J{r�po�
&*J{r�po�
&*J{r�po�
&*2{o�
*�s5�s7�s9�s;�*0\
E &+*r�p*r�p*r�p*r�p*rp*rp*rp*r!p(�
+�(�
*{*09{o�
+o�

oU,�o�
-��
,o�
�**+
:(X}*02
{o�
+o�

oWo�
-��
,o�
�*'
0[r�po�
&
{o�
+o�
,
+	,o�
&oVo�
-��
,o�
�r�po�
&**D
2(Yt*6�([*2s�
([*J(Yto�
*�(�
-(�
,�(�
o�
*,(�
**0��rMp�(�

(�
�,��(�
Y(�
�,��(�
(�
�(�

~�
(�
(b(�
(b(�
(b(�
(b(�
-,�(�

rap(�
*0d
r�po�

+)	o�
,
+,�(�
(g(�
	o�
-��	u,o�
�r�p(�
*5D0y

0&.=YE#)/5;A+E'.\3;rep�(�
*rip*rop*rup*r{p*r�p*r�p*r�p*(�
*00~�


+	o�
(e(�

	X
	o�
2�*0�-r�p*u,r�pt(fr�p(�
*u,�-r�p*r�p*u,�
(�
(�
*u
,�
(�
(�
*u,�(�
(�
*u,,�,(c*u-,t-(d*r�ps�
z�{$-s�
}${$os{$*0?(ho�
+(�

oU,�(
-���
o�
�**!-
*^ok-
{%��**F(i-ol**j{#,}#*,o�
&*0^(ho�
+6(�

oU,&(notr�p(�
o�
&oV(
-���
o�
�*CO0G{%oz,rKp{%oy�(q*rEp{%oy�(q*�(nr�p(g(�
o�
&*�ok,r9pok(q{%,(p**.r�ps�
z0B(

r�p(
(
r�p(
(
r�p(
(�
*�}#r�po�
&(oorr�po�
&*0�oj,Nojo�
,ojo�
s{}%+&ojo�
,ojo�
s{}%(ho�
+(�

oW(
-���
o�
�*b(X*{&*{'*V(�
}&}'*
*:(x}(*j(rr�p{((q*{)*0~(x})(�}*o
s'}+(�},(�}-(�}.(�}/oMsc}0oNsg}1*0�{)o
u3,{)o�t3s�*u5,{)o�t5s�*u8,{)o�t8s�*u9,{)o�t9s�**0J{)oo

s_+(o^{)oo
{)s�X2�*0D{)oo

s_+"o^{)oo
s,�X2�*0Vs`
{)oo

+	o�
td(L,oa	o�
-��	u,o�
�*)@0U{)oOo	

uh,thsZ*ui,{)tis\*uj,tjs_**0�(s{*,{*o�
{,o�
{+o�
{-o�
{.o�
{)o�o

-{)o�o
,{/o�
{0o�
{)o�o
,{1o�
*0�{*3r�p*{,3rp*{+3r=p*{-3r�p*{.3r%p*{/3rSp*{03r�p*{13r�p*(t*0�(rr�p{)o�(qr�p{)o�(q{)o�o

,!r�p{)o�o

�(q{)o�o
,!rp{)o�o
�(q{)o�o
,!rp{)o�o
�(q{)o
(�
-rp{)o
(q*{2*{3*{3*�(x}2}3o�}4o�}5*�(s{4o�
{5o�
*�{43rp*{53rp*(t*2(�t2*
*�(�o�}6o�}7o
s�}8(�}9*0W(�o
o
s_
+(o^(�(�o
o
s��X(�o
o
2�*�(�{6o�
{7o�
{8o�
{9o�
*0D{63r!p*{73r'p*{83r-p*{93r3p*(�*0=(r(�o
,((�o
.r9p+rKp
rap(q*2(�t3*rip*&(�*0[s`
o

+,	o�
t>(�s�(�o�oa	o�
-��	u,o�
�*
8E�(�rqp(�o
�(q*0/(�(�o
s�
(�o
(�o�*0/(�(�o
s�
(�o
(�o�*J(�o
(�*J(�o
(�*2(�t5*rwp*&(�*0Js`
o
+o�
t'(�s�oao�
-��u
	,	o�
�*
*70/ (�(�o
s�
(�o
(�o�*0/ (�(�o
s�
(�o
(�o�*J(�o
(�*J(�o
(�*{<*0Do
(}}:}<o
};o
,o
,(�}=*0�!{:o 
&s!

{;,p{;o"
o#
+Eo$
u={<o%
,({<(&

('
-o
	sro(
o�
-��,o�
�o)
s_+o^o*
�Xo)
2�*,R~�(s{:o
,{=,{=o�
*^{=3rp*(t*0<"(~{;-
+8{:{;o+
t=o,

{:{;o-
t=o,
r�p�(qr�p�(qr�p{:{<o.
�(q{:o/
tXo(9�{:{<o0
r�p(1
�(qr�p(2
�(qr�p(3
�(qr�p(4
�(qr�p{<o
�(q*2(�t8*r�p*&(�*^(�(�o5
s�*^(�(�o6
s�*2(�t9*r�p*n(�o7
s�}>*�(�(�o/
tXo(,{>o�
*^{>.(�*r�p*0/#(�(�o8
s�
(�o8
(�o�*0/#(�(�o9
s�
(�o9
(�o�*
*6{@��*0^$s`}A(x}?}@,;o:
,3o:
+"�;q;
{As�oaX�i2�*R(s{Ao�
*^{A.(t*r�p*0�%(rrp{@o;
�(qr�p{@o<

(=
�(qr�p{@o<
(>
�(qr�p{@o?
�(qr�p{@o@
�(qr�p{@oA
�(qr%p{@oB
�(qr�p{@oC
�(qr�p{@oD
�(qr�p{@oE
�(qr�p{?oF
��(qrp{@oG
�(qrp{@oH
�(qr
p{@oI
�(qrp{@oJ
�(q*
*
*:(x}B*0e&(rr%p{B
(K
�(qrp{B(L
�(qrp{B(M
�(q*{C*{D*{D*�s`}Fo
(}}C}DoN
s�}E*"}G*0a'oO
oP
+1(Q

u@,oR
{D3{Fs�oa(S
-���o�
�(w*>J0K(s{Eo�
{G,#(�o/
tXo(,{Go�
{Fo�
*�{E3rp*{G3r�p*{F3r=p*(t*2(�t=*0q((�oT
s�}H(�}J(�}K(�}LoU

oV
,
s�}I(�oW
s�}M*0D(�oX
o

s_+"o^(�oX
oY
s�X2�*0D(�oZ
o

s_+"o^(�oZ
o[
s�X2�*0E)(�(�o\

o]
s_+o^o^
s��Xo]
2�*0o(�{Mo�
{Ho�
{Jo�
{Ko�
{Lo�
{I,#(�o/
tXo(,{Io�
*0b{H3r9p*{J3rp*{K3rp*{L3r!p*{I3r%p*{M3r-p*(�*�(~r�p(�(�o,
�(q*2(�t>*&(�*�(�r5p(�o_
�(q*{N*
*:(x}N*~(rr;p{No`
(q*{O*
*:(x}O*0R(rr;p{Ooa
(qrAp{Oob
(qrGp{Ooc
�(q*
*
*:(x}P*0�(r{Pod
,rMp{Pod
(q{Poe
,r�p{Poe
(qrSp{Pof
�(qrYp{Pog
�(q*
*
*:(x}Q*0J(rrMp{Qoh
oi
�(qr�p{Qoh
oj
�(q*
*
*0`*s`}R(xok
+,(l

{R(m
o.
(n
s�oa(o
-���o�
�*9QR(s{Ro�
*^{R.(t*r!p*
*
*0I(x}Sop
s_}T
+{To^oq
s��X
op
2�*R(s{To�
*^{T.(t*r_p*~(rrgp{S�(q*
*
*:(x}U*0F+(rrp{U
(r
�(qr=p{U(s
�(q*0h,ot

uF,s�*uI,3ou
ov
ou
ow
ou
ox
ou
oy
s*uG
	,	s**
*(x*
*rop*:(�}V*~(rrsp{Voz
(q*
*ryp*:(�}W*0o-(r{Wo{
uC
,Ar=p�(qrpo|
�(qr}po}
�(q*r=p�(q*0S
_3`
_3`
_3`
_3`
_3`
 _ 3 `
@_@3@`
*
*r�p*0O(�}X}Y}Z}[,'o~
}\o
}]o�
}^*0�(rr�p{Y�Jo�
(qrp{Z�Ko�
(qr�p{X#o�
(q{[,Rr�p�(qr�p{\(�(qr�p{](qr�p{^(q*
*
*:(x}_*~(rr�p{_�,(q*{`*Ro
(}}`*0d(~{`o�
o�
,rMp{`o�
o�
(q{`o�
o�
,r�p{`o�
o�
(q*{a*Ro
(}}a*0W(~r�p{ao�
(q{ao�
o`
~�
(�
,r�p{ao�
o`
(q*{b*{i*{b*0ho�
(}}b}c(}d(}e(}fo�
s%}g(}h(�
}i*0H.((�

o�
s_
+$o^		o�
t {cs"�	X
	2�*0Q/
((�
,@((�
,1o�
s_
+o^o�
sn�Xo�
2�*0P0{bo�
uI
-*o�
o
s_
+o^	o�
	o�
s,�	X
	2�*0b1{bo�
uL
-*s`o�
o

+	o�
tW(.oa	o�
-��	u,o�
�*($L0{(s{co(,{do�
{e,{eo�
{go�
{h,{ho�
{co�o
,{f,{fo�
*0S{d3rp*{e3r�p*{g3r=p*{h3r�p*{f3r�p*(t*02(~{bo�
(�

,"r�p��(�
��(�
(q{bo�
,"r�p�Q(�
�Q(�
(q{bo�
."r�p�Q(�
�Q(�
(q{b(�

	9�{co�o

,${b(�
(�
-r�p(q{bo�
,X{co�o

-{co�o
,4{bo�
o�
(�
-r�p{co�
(qr�p�(q{co�o
9�((�
r�p�(q9�{i(�
,!r�p{i(�
(u(q{bo�
uR,o(�
	r�pr�pr�po�
(qo�
(�
-
+o�
	�	o�

rp
r�pr�po�
(qrp((�
�(q{bo�
uU,co�
,rpo�
o
(qo�
,rpo�
o
(qo�
,r3po�
o
(q{bo�
uX,co�
,rpo�
o
(qo�
,rpo�
o
(qo�
,r3po�
o
(q{bo�
-r!p�(q{co�o
,A{bo�
u[

,+
o�
~�
,	o�
r)p(q{bo�
u\,r/po�
�(q*0O3{m
E+.{jo�
*{jo�
�*{jo�
�,*s�
z073{n
YE+{jo�
*{jo�
*s�
z{j*
*�(x}j}k}loo�
}moo�
}n*0@4(rrp((qrp((q{ko(�

,M{lo�o
,;{j{ko(�
(�
-r5pr�pr�po�
(q{lo�o
9�{ko(�
->{ko{j(�
(�
,r;p{k(�
ou(q{koo�
uR
	,	{jo�
rCp(q{j{ko(�
(�
-rKp�(q{jo�
(�
-rQp{jo�
(q	u_,8rUp{jo�
�(qrYp{jo�
�(q	u`,L{jo�
#.r_p{jo�
�(q+r_po�
�(qrep{jo�
�(q*{o*:(x}o*{p*:(x}p*0.5
E+rkp*rup*r�p*s�
z086
E+r�p*r�p*r�p*r�p*s�
z{q*n(l-{qo�
�i�**:(x}q*0W(rr=p{qo�
(qr%p{qo�
(((qr�p{qo�
()(q*0�u],t]s@*uZ,tZs:*u[,t[s<*u`,t`sE*ua,tasG*ub,tbsI*uc,tcsK*r�p(�
*{r*
*Ro�
(}}r*{s*
*:(x}s*�(rr%p{so�
(qrsp{so�
(T(q*�(1o�
s4}to�
s4}u*�(s{to�
{uo�
*�{t3r�p*{u3r�p*(t*r�p*"(6*r�p*"(6*"(1*�(~rspojt\o�
(T(q*r�p*"(=*0.7
E+rp*rp*r1p*s�
z"(=*0k8(>ojt_
rcpo�
�(qripo�
(A(qo�
.	o�
3ropo�
�(q*rup*"(B*r}p*"(B*r�p*"(B*r�p*"(B*�ue,tesR*uf,tfsU*r�p(�
*{v*{v*Ro
(}}v*2(Mte*r�p*"(O*~(~r=p(Po�
(q*r�p*"(O*{w*
*:(x}w*r�p*"(X*r�p*Z(X}x}y*0�9(rr�p{xo�
�(qr�p{xo�
�(q{xo�
,C{xo�
u7,1r�p{yo�{xo�
t7o.
�(q{xo�

r-p�e(�
�e(�
(q*r�p*>(X}z*0@(rr�p{zo�
�(qr�p{zo�
�(q*{{*
*:(x}{*0�:(rr�p{{o
�(qr�p{{o�(q{{o
r�p�(�
�(�
(q{{orp�(�
�(�
(q*{*
*0C(x}}�(h}|o�
s�}}o�
s�}~*0@;{o�
30{o�

ug,sz*uh,
{�s|**�{|3r�p*{}3rp*{~3rp*(t*0`(s{|,P{�o�o
,>{|o�
{o�
,{}o�
{o�
,{~o�
*0<(rr!p{o�
�(qr'p{o�
�(qrp{o�
�(qrp{o�
�(qr%p{o�
�(qr-p{o�
�(qr5p{o�
�i(�
{o�
�i(�
(qr;p{o�
�f(�
{o�
�f(�
(q{o�
(�
(�
,rAp(�
(u(q{o�
(�
(�
,rIp(�
(u(qrQp{o�
�(q{o�
(�
,6{o�
�
{�oo
		�s�
o�
+{o�
rYpr�pr�po�
(q*2{��l*
*:(x}�*0@(rr�p|�(�
�(qrap|�(�
�(q*
*
*V(x}�}�*0�=(rr�p{�(qrgp{�
(�
�(qrmp{�(�
�(qrsp{�(4
�(qryp{�
(3
�(q*{�*{�*
*:(x}�*0@(rr�p{�o�
�(qr�p{�o�
�(q*rp*"(w*r�p*>(w}�*0~>(x(tth
o�
,9o�
u7,,r�p{�o�o�
t7o.
�(qo�
r-p�l(�
�l(�
(q*{�*
*:(x}�*0Z(rr�p{�o�
�(qr�p{�o�
�m(�
{�o�
�m(�
(q*:(x}�*
*�(rr�p{�o�
�
(qr�p{�o�
(q*{�*
*~(x}�o�
s�}�*^{�3r�p*(t*R(s{�o�
*0x(rr�p{�o�
r�pr�po�
(qr�p{�o�
�(qr�p{�o�
(�r�p{�o�
(�*0*?(�
(�
,(�
-(u(q*{�*2r�p(�
*6r�p(�
*2r�p(�
*6r�p(�
*2rp(�
*6rp(�
*(�
*�(�
r�po�
rpo�
r�po�
* j*(
*"(
*(
*(
*r3p*(�
*0�s�
��s�
��s�
��s�
��s�
��s�
��s�
��s�
��s�
��s�
��s�
��s�
��s�
��s�
��s�
��s�
��s�
��s�
��s�
��s�
����s
��s
(

*0$@(

,(��s
*�*0CA(

,9(�,X+Y/rIps�
zo
rp�o
*�o
rpo
-o
rp�o
o
rpo
�*(
*J(
~�o
*J(
~�o
*J(
~�o
*J(
~�o
*J(
~�o
*J(
~�o
*J(
~
o
*J(
~
o
*�(
~�o
%{�X}�*�(
~�o
%{�Y}�*�(
~�o
%{�X}�*�(
~�o
%{�Y}�*J(
~�o
*J(
~�o
*�(
~�o
%{�X}�*�(
~�o
%{�Y}�*J(
~�o
*J(
~�o
*J(
~�o
*J(
~�o
*J(
~�o
*J(
~�o
*J(
~�o
*J(
~�o
*J(
~�o
*J(
~�o
*J(
~�o
*J(
~�o
*J(
~�o
*J(
~�o
*J(
~�o
*J(
~�o
*J(
~�o
*J(
~�o
*J(
~�o
*J(
~�o
*J(
~�o
*J(
~�o
*J(
~�o
*J(
~�o
*J(
~�o
*J(
~�o
*
*
*
*
*
*
**
**
**~
**
**R(�-(
*(
*�(
,r�ps
z(�-o 
r�po!
*{�*n(Oo"
-(Oo#
**Z('o�r�p(�
*Z('o�r�p(�
*Z('o�r�p(�
*^(
~�o$
��*^(
~�o$
��*f{�,{�o%
�**�{�-s&
}�{�o'
{�*�{�(�
-{�*{�((
*Z(�,(�o)
**2o*
tV*{�*(+
*(,
*�(-
. �(.
s/
z(0
*(1
*�(-
. �(.
s/
z(2
*2{�o3
*2(�o4
*2(�o5
*2{�o6
*6{�o7
*2{�o8
*6{�o9
*
**2{�o:
*6{�o;
*2{�o<
*6{�o=
*2(�o>
*2{�o?
*6{�o@
*2{�oA
*6{�oB
*2{�oC
*
*2{�oD
*2{�o 
*6{�oE
*{�*~�
**2{�oF
*2{�oG
*6{�oH
*2{�oI
*2{�oJ
*6{�oK
*2{�oL
*2{�oM
*2{�oN
*0[{�-#sO
}�{�(�oP
oQ
+){�-!{�oR
{�(�oP
oQ
{�*2(�oS
*6(�oT
*2(�oU
*2{�oV
*6{�oW
*2(�oX
*2{�oY
*2{�oZ
*2{�o[
*2{�o\
*F{�o[
s2*F{�o\
s2*2{�o]
*6{�o^
*2{�o_
*6{�o`
*2{�oa
*6{�ob
*
**(c
*"(d
*2(e
tT*of
*"og
*
**(h
*^(i
(,�(j
*(k
*"(l
*(m
*"(n
*6r�p(o
*:r�p(p
*2(q
or
*6(q
os
*2(q
ot
*6(q
ou
*(v
*2(q
ow
*6(q
ox
*(y
*(z
*2(q
o{
*6(q
o|
*2(q
o}
*6(q
o~
*(
*"(�
*2{�o�
*6{�o�
*^rp��(�
��*brp����(�
*{�*"}�*2(�o�
*6(�o�
*2(�o�
*6(�o�
*{�*2(�o�
*2(�o�
*{�*"}�*o�
*(*"(*0�B
~�
}�~�
}�~�
}�(�
�X(�
�(�
&s�
}�{�s�
o�
 ,(�
o�
 �(�
o�
(--
�/s�

-
�0s�
s�
}�(�s}�o�
*Z(�}�}�*0[{�-R(�,({�,${�o�
1(�{�o�
o�
(�~�
o�}�*
*****
*
***0Co$

-*o
**************{��*
*
*{�*{�*
*(�
*(�
*
*0&Do�

(�
io�
(�
is�
*
*
*
*
*
*
*(�*
*
*{�*^(
~�o$
��*
*F(�-(C**
*(�
*
*
*
*
*
**
*>%{�X}�*>%{�Y}�*0>E(
-6{�-.(�
,&(�
В(�
o
t�
,o�
*0HE(
-@{�-8{�,0(�
,((�
В(�
o
t�
,
o�
*j{�,{�o)
o�
*6{�o�
*>(�
,(�**
*
*:{�o�
*2{�o�
*0lF(�
-_(�
(�
,Bs�
o�
s�
s�

	s�
�-	,	o�
�,o�
�,o�
�s�
�&�**42
<
+F
2P
\d
*"o�**"o�*"o�**"o�*"o�*"o�*"o�*"o�******"o�*"o�*"o�*"o�*"o�*"o�*"o�*0+(�
,"(�
-+(�
o�

(�
&*6{�o�
***
*"(�
*"(�
*"(�
*"(�
*&(�
*0CG(�

+"�u�,o�
,
�X�i2�s4*	*6(�
s4*2(�
o�
*2(�
o�
*"(�
*&(�
*
*
*
*2{�o�
*2{�o�
*2{�o�
*2{�o�
*2{�o�
*2{�o�
*2{�o�
*2{�o�
*2{�o�
*2{�o�
*2{�o�
*2{�oa
*2{�o�
*2{�o�
*2{�o�
*2{�o�
*2(�o�
*2(Mo*2{�o�
*
*0�Ho�
(�
io�
(�
i(�
(3
1
(4
0~�
*{�(�
o�
-~�
*s�
(�o�
o�
(E(�

�&~�

�
o�
o�
�	*e"�	e+�
0PI{�-~�
*s�

s�
{�o�
jo�
&o�
�,o�
�,o�
�*:
0D
0$Js�
,oooWoV*0RK{�-*s�

s�
o�
o�
jo�
&{�o�
�
,o�
��
,o�
�*%;
8G
R}�(�
(�
*0Ls
{�o�
o1*05M(�
С(�
o
u�
,o�
u�,o�
*0{N~�
(�
,*(�
,*r�po�
,/(��~�~�
�~�
�o�
(�
*s�

o�
(�
,	o�
��&�**Ut"}�*0"O(
~�o$
tx
,o�
*0"P(
~�o$
ty
,o�
*0"Q(
~�o$
t{
,o�
*0"R(
~�o$
t|
,o�
*0"S(
~�o$
t~
,o�
*0"T(
~�o$
t
,o�
*0"U(
~�o$
t�
,o�
*0"V(
~�o$
t�
,o�
*0"W(
~�o$
t}
,o�
*0"X(
~�o$
t]
,o?*0"Y(
~�o$
t_
,oE*0"Z(
~�o$
tb
,oM*0"[(
~�o$
t�
,o�
*0"\(
~�o$
t�
,o�
*0"](
~�o$
t�
,o�
*0"^(
~�o$
t�
,o�
*0"_(
~�o$
t�
,o�
*0"`(
~�o$
t�
,o�
*0"a(
~�o$
t�
,o�
*6(
&(�
*:o�
(�
*�{�,{�o�
}�{�,{�o�
}�*0r(�
}�(
}�o
{�o
{�o
{�o
o
,&r9p(
}�{�o
{�o
(
*0p{�o
(
o
{�(
{�o	
(

{�rUpo
{�o
{�{�(�o�
o

{�(�o
{�{�o
((9�(�-(�-(�-
(�o
, {�r]prupo
(�
(
(�-(�-(�,((, {�r�pr�po
(�
(
{�,{�(o
{�o
-{�o
-
{�o

,{�(
(
*�{�-(�,(Uu�,
o
s
(
*
*s�*r�p*"sQ*
*0$bt$
�(
�u,(�*0c(

(����*(�*f(
-o
-(�**R(�,rpo�
*0a(
�X(�
r	p(
�X(�
ri	p(
�X(�
r�	p(
�X(�
rQ
p(
(
*0^L(
o 
,Lr�
p(�
o�
&(�
r�
po!
&r�
p(�
o�
&(�r�
po!
&*r
p*6rAp(o
*:rAp(p
*6sKo�*0�do�
(�
io�
(�
i(�
(3
1L(4
1B{�(�
o�
, ("
("

{�	s#
o$
�
,o�
�*P%u
0e
-ryp+r�ps�

%9��~�:�
s%
%r�p(&
%r�p(&
%r�p(&
%r�p(&
%r�p(&
%r�p(&
%r�p(&
%r�p(&
%r�p(&
%r�p	(&
����~�('
9AE
.E\s�����8
r�ps(
o)
{�	o*
8�rp{�	o+
8�r�p{�	o,
8�r�p{�	o-
8�r�p{�	s.
o/
8�r
p{�	(
o0
+lr
p
r$
p{�	(1
o0
+Mr:
p{�	(
o0
+4rN
p{�	(2
o0
+rd
p{�	(3
o0
+*	sZ*0vf(�
-
+(%(�
-	(%
+rx
p
(
,=(
,6oWo�
(EoXoY(4
r�
p(5
}�*0�g(6
~�
}��:�o7

,
�i,�+~�
%
9�	r�
p(�
-6	r�
p(�
-?	r�
p(�
-@	r�
p(�
-J	r�
p(�
-P+co�
Xo8
(*��(	*�~�
r�p(*���(*�~�
�(**0�h�
	{�o9
�	r�
p�	{�o
�	r�
p�	{�o:
�	(;

o 
,4s<
(�r�
po�
&(�r�
po�
(�

*0)i(�,(�o=

,s>
(?
*~�
*0-j(�
,(�o@
*s>

(�oA
oB
*0B(�,9(2,%rx
p~�
(t
(�
-(�sBo�*0B(2,-(�
(�
,
(�o@
+rx
p~�
(sHo�*0BoC
(D
�r9p(�
oE
((�,((�o@
*0$k((
(,oF
oG
*n{�(�
-{�*(
*s�*no 
�X(�
rp(H
*:(�(I
*>(�(J
*&(&*j(K
{�o
,(L
*.�X(�
*�{�,{�oM
}�(�
*J{�o)
oN
*F{�oZ
oO
*F{�o[
oP
*6{�oQ
*F{�o)
oR
*6{�oS
*:{�o�
*0l{��&oT
*j{�sU
oT
*6{�oV
*2{�oW
*6{�oX
*6{�o�
*0Cm(�
(�
, �(.
(�
s/
zsY
()�
,o�
�*/	8
�jo�
&(Z
-s[
zjo�
&{�o�
*0Cm(�
(�
, �(.
(�
s/
zsY
(+�
,o�
�*/	8
b{�o)
o\
*b{�o)
o]
*J(m
on
t[*0?n(o
}�op
+ �
(m
oq
s;or
&X�i2�*�{�o5os
o5ot
(m
or
*0go��(�
o�
+6o�
t�
ou
rTp(�
,sv
(w
&+(w
&o�
-��u,o�
�*BU{�*2{�ox
*6{�oy
*2{�oz
*6{�o{
*^(�
~�
s|
}�*:(�
}�*{�*:(}
}�*"(=*:(<o*"(=*>(<o*{�*:(}
}�*2(~
tX*&(
*z(�
(Po�o)
o�
*R(Po�-(�
*rbp*.И(�
*(�
*{�*{�*{�*�(�
}�}�r~p(�
}�*R{�,{�o�
*"(�
*0y{�-j}�~�-F
�f(�
%(�
~�-r�p�f(�
o�
s�
���
,(�
�~�(�
o�
(�
(�
*:R
�'����lSystem.Resources.ResourceReader, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089#System.Resources.RuntimeResourceSet<PADPADP��p��_�2Y獷)?��1{�>�k���uu$�b�?Z�>�w��b:��Z���ɓ>�;�B�S�����^�F�S�ͷ1��v:G��}��x+E�iX��{�6�R�ߘ�u�������#����H�+����|2!�?�$\�%7���=��*A��Ae�M��SD�MT���U�ϨV��UW:f�Y�x�`rS	a��kc*��e�p.g�qo�on�kuĈ=|ZM�~
#�:0��o
�2
��Z>!<�
��t^�3	o�	t	S
��S��V�
��.U��
�	y}{d�����
�	���['0PChartClientSideEventsCustomDrawCrosshairJChartClientSideEventsObjectHotTracked�FChartClientSideEventsObjectSelected.FChartToolTipControllerImagePosition�<ChartToolTipControllerOpenMode>ChartToolTipControllerShowImage[<ChartToolTipControllerShowText�8WebChartControlAlternateText�FWebChartControlAnnotationRepositorye4WebChartControlAnnotations�:WebChartControlAppearanceNameRWebChartControlAutoBindingSettingsEnabledjPWebChartControlAutoLayoutSettingsEnabled�0WebChartControlBackColorJ0WebChartControlBackImage�@WebChartControlBinaryStorageMode�8WebChartControlBorderOptionsBWebChartControlClientInstanceNameF>WebChartControlClientSideEvents�8WebChartControlClientVisible�>WebChartControlCrosshairEnabled?>WebChartControlCrosshairOptions�>WebChartControlCustomDrawSeriesHWebChartControlCustomDrawSeriesPointX:WebChartControlDescriptionUrl�,WebChartControlDiagram�:WebChartControlEmptyChartText9	<WebChartControlEnableCallBacks�	LWebChartControlEnableCallbackAnimation,
PWebChartControlEnableCallbackCompression�
DWebChartControlEnableClientSideAPI�
0WebChartControlFillStyle_*WebChartControlHeight�HWebChartControlIndicatorsPaletteName�*WebChartControlLegend<WebChartControlLoadingDivStyleh@WebChartControlLoadingPanelDelay�@WebChartControlLoadingPanelImage�PWebChartControlLoadingPanelImagePositionl
@WebChartControlLoadingPanelStyle�
>WebChartControlLoadingPanelText,WebChartControlPadding}JWebChartControlPaletteBaseColorNumber�4WebChartControlPaletteNameoRWebChartControlPivotGridDataSourceOptions�>WebChartControlRuntimeSelection/FWebChartControlSaveStateOnCallbacks�*WebChartControlSeries�>WebChartControlSeriesDataMember;BWebChartControlSeriesNameTemplate�8WebChartControlSeriesSorting�:WebChartControlSeriesTemplateM>WebChartControlShowLoadingPanel{HWebChartControlShowLoadingPanelImage�:WebChartControlSmallChartTextb*WebChartControlTitles�@WebChartControlToolTipController�:WebChartControlToolTipEnabled�:WebChartControlToolTipOptions�(WebChartControlWidthL�Gets or sets the name of the JavaScript function or the entire code which will handle a web control's client CustomDrawCrosshair event. �Gets or sets the name of the JavaScript function or the entire code which will handle a client chart control's ASPxClientWebChartControl.ObjectHotTracked event.�Gets or sets the name of the JavaScript function or the entire code which will handle a client chart control's ASPxClientWebChartControl.ObjectSelected event.0Gets or sets an image position within a tooltip.XSpecifies the way a tooltip appears on a chart, on either a hover or on a mouse click.  RGets or sets a value indicating whether an image should be displayed in a tooltip.MGets or sets a value indicating whether text should be displayed in tooltips.eGets or sets the alternate text displayed instead of the chart image when this image is unavailable. WProvides centralized access to all annotations that are present in the WebChartControl.EProvides access to the annotations collection of the WebChartControl.cGets or sets the name of the appearance which is currently being used to draw the chart's elements.qSpecifies whether or not the chart's data binding is automatically adjusted during the creation of a Pivot Chart.kSpecifies whether or not the chart's layout is automatically adjusted during the creation of a Pivot Chart.6Gets or sets the web chart control's background color.<Gets the background image settings of the web chart control.\Gets or sets a value indicating the mode in which the chart's image is stored on the server.&Gets the chart control's border style.BGets or sets the WebChartControl's client programmatic identifier.QGets an object that lists the client-side events specific to the WebChartControl.`Gets or sets a value that specifies the initial visibility state of a web control on the client.^Gets or sets a value that specifies whether or not a crosshair cursor is enabled for a chart. kGets the settings for a crosshair cursor allowing you to specify its position and appearance on a diagram. JOccurs before a series is drawn when the chart's contents are being drawn.POccurs before a series point is drawn when the chart's contents are being drawn.BGets or sets the location of a detailed description of the chart. IGets the web chart control's diagram and provides access to its settings.sProvides access to the settings of the text to be displayed in the WebChartControl, when it has no data to display.|Gets or sets a value that specifies whether the callback or postback technology is used to manage round trips to the server.�Gets or sets a value that specifies whether an animation effect is used when a chart control's series are updated via a callback.<Gets or sets whether callback result compression is enabled.oGets or sets a value that specifies whether the WebChartControl can be manipulated on the client side via code.3Gets the web chart control's background fill style./Gets or sets the height of the WebChartControl.WSpecifies the palette that is used to paint all indicators existing in a chart control.HGets the web chart control's legend and provides access to its settings.OGets style settings that define the appearance of a specific Loading Div panel.;Gets or sets the delay before displaying the loading panel.tGets the settings of an image to be displayed within a specific loading panel while waiting for a callback response.pGets or sets the position of an image displayed within a Loading Panel with respect to the panel's text content.8Gets the style settings used to paint the Loading Panel.cGets or sets the text to be displayed within a loading panel while waiting for a callback response.tSpecifies the internal space between the WebChartControl's content (the diagram and legend) and its edge, in pixels.zGets or sets the number of a color within the selected palette, which will be used as a base color to paint series points.QGets or sets the name of the palette currently used to draw the chart's elements.kProvides access to the settings that determine the Chart's behavior after it has bridged with a Pivot Grid.ZGets or sets a value indicating if chart elements can be selected by end-users at runtime.hGets or sets a value indicating whether a chart's view state should be saved between multiple callbacks.DProvides access to the chart control's collection of series objects.lGets or sets the name of the data field whose values are used to automatically generate and populate series.1Gets the settings used to name data bound series.oGets or sets a value that specifies how series are sorted within the chart control based upon the series names.,Gets the template settings for bound series.rGets or sets whether the loading panel should be displayed within the chart while waiting for a callback response.qSpecifies whether or not the image can be displayed within a loading panel while waiting for a callback response.nGets the settings for the text to be displayed in the WebChartControl, when it's too small to fit the diagram.$Gets the collection of chart titles.�Specifies the tooltip controller component that controls the appearance, position and other settings of tooltips displayed for the Chart control. UGets or sets a value that specifies whether or not a tooltip is enabled for a chart. fGets the tooltip settings allowing you to specify the tooltip's position and appearance on a diagram. $Gets or sets the width of the chart.�BM��(>>00������k�vυ,�^ٗD׌#�C�Ɓ�À�ӟ�ԡ���g�˃�ԗ�2�7�?�M�J�W�U�e$�s(�}Tݙ;ߑl�������O�{�k�6��2��-��(��!��%���r�g�_����)+,-.%!#$* %!"$*
 %!"$*
 %!"$*
%!"$*
%!"$*
%!"$*
%!"$*
%!"$*
%!"$*	%!"$*%!"$*%!"$*%!#$*%&'(*2�ASPxClientWebChartControl = _aspxCreateClass(ASPxClientControl, {
 constructor: function(name) {
  this.constructor.prototype.constructor.call(this, name);
  this.ObjectHotTracked = new ASPxClientEvent();
  this.ObjectSelected = new ASPxClientEvent();
  this.CustomDrawCrosshair = new ASPxClientEvent();
  this.printFrame = null;
  this.exportWindow = null;
  _aspxAttachEventToElement(this.GetMainDOMElement(), "mouseout", function(evt) { this.HideElements(evt); } .aspxBind(this));
 },
 HideElements: function(evt) {
  var target;
  if (_aspxIsExists(evt.toElement)) {
   target = evt.toElement;
  }
  else {
   if (_aspxIsExists(evt.relatedTarget)) {
    target = evt.relatedTarget;
   }
  }
  if (_aspxIsExists(target)) {
   var parent = _aspxGetParentById(target, this.name);
   if (_aspxIsExists(parent)) {
    return;
   }
  }
  if (_aspxIsExists(this.crosshairRenderer)) {
   this.crosshairRenderer.Hide();
  }
  if (_aspxIsExists(this.chart.toolTipController)) {
   this.chart.toolTipController.Hide();
  }
 },
 CalculateEventX: function(clickedElement, mouseEventX) {
  var left = _aspxGetAbsoluteX(clickedElement);
  return Math.abs(mouseEventX - left);
 },
 CalculateEventY: function(clickedElement, mouseEventY) {
  var top = _aspxGetAbsoluteY(clickedElement);
  return Math.abs(mouseEventY - top);
 },
 OnClick: function(evt) {
  var processOnServer = this.IsServerEventAssigned("ObjectSelected");
  var mouseEventX = _aspxGetEventX(evt);
  var mouseEventY = _aspxGetEventY(evt);
  var htmlElement = _aspxGetEventSource(evt);
  if (_aspxGetIsParent(this.GetMainDOMElement(), htmlElement))
   htmlElement = document.getElementById(this.name + '_IMG');
  var x = this.CalculateEventX(htmlElement, mouseEventX);
  var y = this.CalculateEventY(htmlElement, mouseEventY);
  var showToolTip = _aspxIsExists(this.chart.toolTipController);
  var raiseObjectSelected = _aspxIsExists(this.RaiseObjectSelected);
  if (showToolTip || raiseObjectSelected) {
   var hitObjects = this.HitTest(x, y);
   if (hitObjects != null)
    var hitInfo = new ASPxClientWebChartHitInfo(hitObjects);
  }
  if (__aspxBrowserWithHardwareAcceleration) {
   x = Math.ceil(x);
   y = Math.ceil(y);
  }
  if (raiseObjectSelected)
   processOnServer = this.RaiseObjectSelected(x, y, htmlElement, mouseEventX, mouseEventY, hitObjects, hitInfo);
  if (processOnServer) {
   var eventParams = "SELECT:" + x + ":" + y;
   if (this.autoPostBack)
    this.SendPostBack(eventParams);
   else if (_aspxIsExists(this.callBack))
    this.ChartCallback(eventParams);
  }
  if (showToolTip && this.chart.toolTipController.openMode == "OnClick") {
   if (hitObjects == null)
    return;
   this.chart.toolTipController.Show(mouseEventX, mouseEventY, hitInfo, _aspxGetAbsoluteX(htmlElement), _aspxGetAbsoluteY(htmlElement));
  }
 },
 OnMouseMove: function(evt) {
  var raiseObjectHotTracked = _aspxIsExists(this.RaiseObjectHotTracked);
  var showToolTip = _aspxIsExists(this.chart) ? _aspxIsExists(this.chart.toolTipController) : false;
  var showCrosshair = _aspxIsExists(this.chart) ? this.chart.showCrosshair : false;
  if (raiseObjectHotTracked || showToolTip || showCrosshair) {
   var mouseEventX = _aspxGetEventX(evt);
   var mouseEventY = _aspxGetEventY(evt);
   var htmlElement = _aspxGetEventSource(evt);
   if (_aspxGetIsParent(this.GetMainDOMElement(), htmlElement))
    htmlElement = document.getElementById(this.name + '_IMG');
   var x = this.CalculateEventX(htmlElement, mouseEventX);
   var y = this.CalculateEventY(htmlElement, mouseEventY);
   var hitObjects = this.HitTest(x, y);
   if (hitObjects == null)
    return;
   var hitInfo = new ASPxClientWebChartHitInfo(hitObjects);
   if (raiseObjectHotTracked)
    this.RaiseObjectHotTracked(x, y, htmlElement, mouseEventX, mouseEventY, hitObjects, hitInfo);
   if (showCrosshair) {
    if (!_aspxIsExists(this.crosshairRenderer))
     this.crosshairRenderer = new ASPxClientCrosshairRenderer(this, this.name + '_CH');
    this.crosshairRenderer.UpdateCrosshair(x, y, this);
   }
   if (showToolTip) {
    if (this.chart.toolTipController.openMode == "OnHover")
     this.chart.toolTipController.Show(mouseEventX, mouseEventY, hitInfo, _aspxGetAbsoluteX(htmlElement), _aspxGetAbsoluteY(htmlElement));
   }
  }
 },
 ensurePrintFrame: function() {
  if (this.frameElement != null && __aspxIE) {
   this.frameElement.parentNode.removeChild(this.frameElement);
   this.frameElement = null;
  }
  if (this.frameElement == null)
   this.frameElement = this.createFrameElement("DXPrinter");
  this.printFrame = window.frames[this.frameElement.id];
 },
 createFrameElement: function(name) {
  var f = document.createElement("iframe");
  f.frameBorder = "0";
  f.style.overflow = "hidden";
  f.style.width = "0px";
  f.style.height = "0px";
  f.name = name;
  f.id = name;
  document.body.appendChild(f);
  return f;
 },
 getFrame: function() {
  this.ensurePrintFrame();
  return this.printFrame;
 },
 CallbackSaveToDisk: function(result) {
  this.getFrame().location = result;
 },
 CallbackSaveToWindow: function(result) {
  if (this.exportWindow != null && !this.exportWindow.closed) {
   this.exportWindow.location = result;
  }
 },
 OnCallback: function (result) {
  if (_aspxIsExists(this.chart)) {
   if (_aspxIsExists(this.crosshairRenderer)) {
    this.crosshairRenderer.Hide();
   }
   if (_aspxIsExists(this.chart.toolTipController)) {
    this.chart.toolTipController.Hide();
   }
  }
  var printSign = "PRINT:";
  if (result.indexOf(printSign) >= 0) {
   this.CallbackSaveToDisk(result.substring(printSign.length));
   return;
  }
  var saveToDiskSign = "SAVETODISK:";
  if (result.indexOf(saveToDiskSign) >= 0) {
   this.CallbackSaveToDisk(result.substring(saveToDiskSign.length));
   return;
  }
  var saveToWindowSign = "SAVETOWINDOW:";
  if (result.indexOf(saveToWindowSign) >= 0) {
   this.CallbackSaveToWindow(result.substring(saveToWindowSign.length));
   return;
  }
  var resultParams = result.split("|");
  if (resultParams.length >= 3) {
   var htmlImage = document.getElementById(this.name + '_IMG');
   if (_aspxIsExists(htmlImage))
    htmlImage.setAttribute("src", resultParams[0]);
   var htmlField = document.getElementById(resultParams[1]);
   if (_aspxIsExists(htmlField))
    htmlField.setAttribute("value", resultParams[2]);
   if (resultParams.length >= 5) {
    this.LoadHitInfo(eval(resultParams[3]));
    var objectModel = "";
    for (var i = 4; i < resultParams.length; i++) {
     if (objectModel != "")
      objectModel += "|";
     objectModel += resultParams[i];
    }
    this.InitObjectModel(eval("(" + objectModel + ")"));
   }
  }
 },
 LoadHitInfo: function(hitInfo) {
  this.hitTestController = new ChartHitTestController(hitInfo);
 },
 InitObjectModel: function(objectModel) {
  this.chart = new ASPxClientWebChart(this, objectModel);
  this.ResetCrosshairRenderer();
 },
 ResetCrosshairRenderer: function () {
  if (_aspxIsExists(this.crosshairRenderer)) {
   this.crosshairRenderer.Hide();
   this.crosshairRenderer = null;
  }
 },
 SetOperaCursor: function (cursor, htmlElement) {
  var divId = this.name + "_DIV";
  var div = _aspxGetElementById(divId);
  if (!_aspxIsExists(div) || (div.tagName != "DIV") || (div != htmlElement.parentNode))
   div = null;
  oldCursor = div != null ? div.style.cursor : htmlElement.style.cursor;
  if (!_aspxIsExists(oldCursor))
   oldCursor = "default";
  if (cursor != oldCursor) {
   if (div == null) {
    div = document.createElement("div");
    div.id = divId;
    div.style.backgroundColor = "transparent";
    div.style.border = "none";
    div.style.cursor = cursor;
    htmlElement.parentNode.replaceChild(div, htmlElement);
    div.appendChild(htmlElement);
   }
   else
    div.parentNode.replaceChild(htmlElement, div);
  }
 },
 ChartCallback: function(eventParams, command) {
  if (_aspxIsExists(this.callBack)) {
   this.ResetCrosshairRenderer();
   if (_aspxIsExists(this.chart) && _aspxIsExists(this.chart.toolTipController)) {
    this.chart.toolTipController.Hide();
   }
   this.ShowLoadingElements();
   this.CreateCallback(eventParams, command);
  }
  else
   this.SendPostBack(eventParams);
 },
 ShowLoadingPanel: function() {
  this.CreateLoadingPanelWithAbsolutePosition(this.GetMainElement().parentNode, this.GetMainElement());
 },
 GetCallbackAnimationElement: function() {
  return this.GetMainElement();
 }
});
function __chartClick(evt, name) {
 var control = aspxGetControlCollection().Get(name);
 if (control != null)
  control.OnClick(evt);
}
function __chartMouseMove(evt, name) {
 var control = aspxGetControlCollection().Get(name);
 if (control != null)
  control.OnMouseMove(evt);
}
ASPxClientScaleType = _aspxCreateClass(null, {});
ASPxClientScaleType.Qualitative = "Qualitative";
ASPxClientScaleType.Numerical = "Numerical";
ASPxClientScaleType.DateTime = "DateTime";
ASPxClientControlCoordinatesVisibility = _aspxCreateClass(null, {});
ASPxClientControlCoordinatesVisibility.Visible = "Visible";
ASPxClientControlCoordinatesVisibility.Hidden = "Hidden";
ASPxClientControlCoordinatesVisibility.Undefined = "Undefined";
ASPxClientWebChartControl.Cast = ASPxClientControl.Cast;
ASPxClientWebChartControl.prototype.GetChart = function() {
 return this.chart;
};
ASPxClientWebChartControl.prototype.SetCursor = function(cursor) {
 var htmlElement = this.GetMainElement();
 if (_aspxIsExists(htmlElement)) {
  if (__aspxOpera)
   this.SetOperaCursor(cursor, htmlElement);
  else
   htmlElement.style.cursor = cursor;
 }
};
ASPxClientWebChartControl.prototype.RaiseObjectHotTracked = function(x, y, htmlElement, absoluteX, absoluteY, hitObjects, hitInfo) {
 for (var i = 0; i < hitObjects.length; i++) {
  var args = new ASPxClientWebChartControlHotTrackEventArgs(
   false,
   hitObjects[i].object,
   hitObjects[i].additionalObject,
   hitInfo,
   this.chart,
   htmlElement,
   x, y,
   absoluteX, absoluteY);
  this.ObjectHotTracked.FireEvent(this, args);
  if (!args.cancel)
   break;
 }
};
ASPxClientWebChartControl.prototype.RaiseCustomDrawCrosshair = function(CrosshairElements, CursorCrosshairAxisLabelElements, CursorCrosshairLineElement) {
 var args = new ASPxClientWebChartControlCustomDrawCrosshairEventArgs(
  false,
  CrosshairElements,
  CursorCrosshairAxisLabelElements,
  CursorCrosshairLineElement);
 this.CustomDrawCrosshair.FireEvent(this, args);
};
ASPxClientWebChartControl.prototype.RaiseObjectSelected = function(x, y, htmlElement, absoluteX, absoluteY, hitObjects, hitInfo) {
 var processOnServer = this.IsServerEventAssigned("ObjectSelected");
 if (hitObjects == null)
  return processOnServer;
 for (var i = 0; i < hitObjects.length; i++) {
  var args = new ASPxClientWebChartControlHotTrackEventArgs(
   processOnServer,
   hitObjects[i].object,
   hitObjects[i].additionalObject,
   hitInfo,
   this.chart,
   htmlElement,
   x, y,
   absoluteX, absoluteY);
  this.ObjectSelected.FireEvent(this, args);
  processOnServer = args.processOnServer;
  if (!args.cancel)
   break;
 }
 return processOnServer;
};
ASPxClientWebChartControl.prototype.HitTest = function(x, y) {
 if (_aspxIsExists(this.hitTestController))
  return this.hitTestController.HitTest(x, y);
 else
  return null;
};
ASPxClientWebChartControl.prototype.PerformCallback = function(args) {
 if (!_aspxIsExists(args)) args = "";
 this.ChartCallback("CUSTOMCALLBACK:" + args, "CUSTOMCALLBACK");
};
ASPxClientWebChartControl.prototype.Print = function() {
 if (!_aspxIsExists(this.callBack)) return;
 this.ChartCallback("PRINT");
};
ASPxClientWebChartControl.prototype.SaveToDisk = function(format, filename) {
 if (!_aspxIsExists(this.callBack)) return;
 if (filename == undefined)
  this.ChartCallback("SAVETODISK:" + format + ":");
 else
  this.ChartCallback("SAVETODISK:" + format + ":" + filename);
};
ASPxClientWebChartControl.prototype.SaveToWindow = function(format) {
 if (!_aspxIsExists(this.callBack)) return;
 this.exportWindow = window.open('', '_blank', 'toolbars=no, resizable=yes, scrollbars=yes');
 this.ChartCallback("SAVETOWINDOW:" + format);
};
ASPxClientWebChartControl.prototype.GetMainDOMElement = function() {
 return this.GetMainElement();
}
ASPxClientWebChartControlCustomDrawCrosshairEventArgs = _aspxCreateClass(ASPxClientProcessingModeEventArgs, {
 constructor: function(processOnServer, crosshairElements, cursorCrosshairAxisLabelElements, cursorCrosshairLineElement) {
  this.constructor.prototype.constructor.call(this, processOnServer);
  this.crosshairElements = crosshairElements;
  this.cursorCrosshairAxisLabelElements = cursorCrosshairAxisLabelElements;
  this.cursorCrosshairLineElement = cursorCrosshairLineElement;
 }
});
ASPxClientCrosshairDrawInfoList = _aspxCreateClass(null, {
 constructor: function(crosshairDrawInfos) {
  this.CrosshairDrawInfoList = [];
  if (crosshairDrawInfos.length < 1)
   return;
  cursorCrosshairLineElement = crosshairDrawInfos[0].CursorCrosshairLineElement;
  for (var i = 0; i < crosshairDrawInfos.length; i++) {
   if (_aspxIsExists(crosshairDrawInfos[i].CursorCrosshairLineDrawInfo)) {
    crosshairDrawInfos[i].CursorCrosshairLineElement = cursorCrosshairLineElement;
    crosshairDrawInfos[i].CursorCrosshairLineDrawInfo = { cursorCrosshairLineElement: cursorCrosshairLineElement, crosshairLine: crosshairDrawInfos[i].CursorCrosshairLineDrawInfo.crosshairLine };
   }
  }
  this.CrosshairDrawInfoList = crosshairDrawInfos;
  this.CursorCrosshairLineElement = cursorCrosshairLineElement;
  this.CrosshairElements = [];
  this.CursorCrosshairAxisLabelElements = [];
  for (var i = 0; i < this.CrosshairDrawInfoList.length; i++) {
   var crosshairDrawInfo = this.CrosshairDrawInfoList[i];
   for (var j = 0; j < crosshairDrawInfo.CrosshairElements.length; j++) {
    this.CrosshairElements.push(crosshairDrawInfo.CrosshairElements[j]);
   }
   for (var j = 0; j < crosshairDrawInfo.CursorCrosshairAxisLabelElements.length; j++) {
    this.CursorCrosshairAxisLabelElements.push(crosshairDrawInfo.CursorCrosshairAxisLabelElements[j]);
   }
  }
 }
});
ASPxClientCrosshairDrawInfo = _aspxCreateClass(null, {
 constructor: function(chartControl) {
  this.chartControl = chartControl;
  this.CrosshairElements = [];
  this.CursorCrosshairAxisLabelElements = [];
  this.CursorCrosshairAxisLabelDrawInfos = [];
 },
 AddPaneCrosshairInfo: function(paneCrosshairInfo, rotated) {
  crosshairOptions = this.chartControl.chart.crosshairOptions;
  this.labelsBounds = paneCrosshairInfo.labelsBounds;
  for (var i = 0; i < paneCrosshairInfo.pointsInfo.length; i++) {
   var point = paneCrosshairInfo.pointsInfo[i];
   var crosshairLineElement = new ASPxClientCrosshairLineElement(crosshairOptions, point.crosshairLine, rotated);
   var crosshairAxisLabelElement = this.CreateCrosshairAxisLabelElement(point.crosshairLabel, crosshairOptions);
   var crosshairSeriesLabelElement = new ASPxClientCrosshairSeriesLabelElement(point, crosshairOptions.showCrosshairLabels);
   var crosshairElement = new ASPxClientCrosshairElement(point, crosshairLineElement, crosshairAxisLabelElement, crosshairSeriesLabelElement);
   this.CrosshairElements.push(crosshairElement);
  }
  if (_aspxIsExists(paneCrosshairInfo.cursorLine)) {
   this.CursorCrosshairLineElement = new ASPxClientCrosshairLineElement(crosshairOptions, paneCrosshairInfo.cursorLine, rotated);
   this.CursorCrosshairLineDrawInfo = { cursorCrosshairLineElement: this.CursorCrosshairLineElement, crosshairLine: paneCrosshairInfo.cursorLine };
  }
  for (var i = 0; i < paneCrosshairInfo.cursorLabel.length; i++) {
   var crosshairAxisLabelElement = this.CreateCrosshairAxisLabelElement(paneCrosshairInfo.cursorLabel[i], crosshairOptions);
   this.CursorCrosshairAxisLabelElements.push(crosshairAxisLabelElement);
   this.CursorCrosshairAxisLabelDrawInfos.push({ cursorCrosshairAxisLabelElement: crosshairAxisLabelElement, crosshairAxisLabel: paneCrosshairInfo.cursorLabel[i] });
  }
 },
 CreateCrosshairAxisLabelElement: function(crosshairLabel, crosshairOptions) {
  var option;
  if (crosshairLabel.isHorizontal) {
   option = this.chartControl.chart.diagram.axisY.crosshairAxisLabelOptions;
  }
  else {
   option = this.chartControl.chart.diagram.axisX.crosshairAxisLabelOptions;
  }
  return new ASPxClientCrosshairAxisLabelElement(option, crosshairLabel, this.chartControl.chart.diagram.rotated);
 }
});
ASPxClientCrosshairElement = _aspxCreateClass(null, {
 constructor: function(point, crosshairLineElement, crosshairAxisLabelElement, crosshairSeriesLabelElement) {
  this.Series = point.point.series;
  this.Point = point;
  this.LineElement = crosshairLineElement;
  this.AxisLabelElement = crosshairAxisLabelElement;
  this.LabelElement = crosshairSeriesLabelElement;
  this.visible = true;
 }
});
ASPxClientCrosshairLineElement = _aspxCreateClass(null, {
 constructor: function(crosshairOptions, crosshairLine, rotated) {
  if (crosshairLine.isHorizontal ^ rotated) {
   this.visible = crosshairOptions.showValueLine;
   this.color = crosshairOptions.valueLineColor;
   this.lineStyle = crosshairOptions.valueLineStyle;
  }
  else {
   this.visible = crosshairOptions.showArgumentLine;
   this.color = crosshairOptions.argumentLineColor;
   this.lineStyle = crosshairOptions.argumentLineStyle;
  }
 }
});
ASPxClientCrosshairAxisLabelElement = _aspxCreateClass(null, {
 constructor: function(crosshairAxisLabelOptions, crosshairLabel, rotated) {
  this.backColor = crosshairAxisLabelOptions.backColor;
  this.textColor = crosshairAxisLabelOptions.textColor;
  var axisValuePair = crosshairLabel.axisValuePair;
  var value = axisValuePair.axis.GetNativeArgument(axisValuePair.internalValue);
  var isValueAxis = crosshairLabel.isHorizontal ? !rotated : rotated;
  this.text = ASPxToolTipPatternHelper.GetAxisLabelText(axisValuePair.axis, isValueAxis, value);
  this.font = crosshairAxisLabelOptions.font;
  this.visible = crosshairAxisLabelOptions.visibility;
 }
});
ASPxClientCrosshairSeriesLabelElement = _aspxCreateClass(null, {
 constructor: function(point, visible) {
  var color = "#" + (_aspxIsExists(point.point.color) ? point.point.color : point.point.series.color);
  this.defaultMarker = "<div style='width:15px; height:12px; background-color:" + color + "' />"
  this.marker = this.defaultMarker;
  this.text = ASPxToolTipPatternHelper.GetPointToolTipText(point.point.series.crosshairLabelPattern, point.point, point.point.series);
  this.headerText = "";
  this.footerText = "";
  this.textColor = "#000000";
  this.font = { fontSize: 12, fontFamily: "Tahoma" };
  this.visible = point.point.series.actualCrosshairLabelVisibility;
  this.markerVisible = true;
  this.markerColor = color;
  this.textVisible = true;
 }
});
ASPxClientWebChartControlHotTrackEventArgs = _aspxCreateClass(ASPxClientProcessingModeEventArgs, {
 constructor: function(processOnServer, hitObject, additionalHitObject, hitInfo, chart, htmlElement, x, y, absoluteX, absoluteY) {
  this.constructor.prototype.constructor.call(this, processOnServer);
  this.hitObject = hitObject;
  this.additionalHitObject = additionalHitObject;
  this.hitInfo = hitInfo;
  this.chart = chart;
  this.htmlElement = htmlElement;
  this.x = x;
  this.y = y;
  if (typeof (absoluteX) != "undefined")
   this.absoluteX = absoluteX;
  else
   this.absoluteX = 0;
  if (typeof (absoluteY) != "undefined")
   this.absoluteY = absoluteY;
  else
   this.absoluteY = 0;
  this.cancel = false;
 }
});
ASPxClientHitObject = _aspxCreateClass(null, {
 constructor: function(object, additionalObject) {
  this.object = object;
  this.additionalObject = additionalObject;
 }
});
ASPxClientWebChartHitInfo = _aspxCreateClass(null, {
 constructor: function(hitObjects) {
  this.inChart = false;
  this.inChartTitle = false;
  this.inAxis = false;
  this.inAxisLabelItem = false;
  this.inAxisTitle = false;
  this.inConstantLine = false;
  this.inDiagram = false;
  this.inNonDefaultPane = false;
  this.inLegend = false;
  this.inSeries = false;
  this.inSeriesLabel = false;
  this.inSeriesPoint = false;
  this.inSeriesTitle = false;
  this.inTrendLine = false;
  this.inFibonacciIndicator = false;
  this.inRegressionLine = false;
  this.inIndicator = false;
  this.inAnnotation = false;
  this.chart = null;
  this.chartTitle = null;
  this.axis = null;
  this.constantLine = null;
  this.diagram = null;
  this.nonDefaultPane = null;
  this.legend = null;
  this.series = null;
  this.seriesLabel = null;
  this.seriesTitle = null;
  this.trendLine = null;
  this.fibonacciIndicator = null;
  this.regressionLine = null;
  this.indicator = null;
  this.annotation = null;
  this.seriesPoint = null;
  this.axisLabelItem = null;
  this.axisTitle = null;
  for (var i = 0; i < hitObjects.length; i++) {
   var obj = hitObjects[i].object;
   if (obj instanceof ASPxClientWebChart) {
    if (!this.inChart) {
     this.inChart = true;
     this.chart = obj;
    }
   }
   else if (obj instanceof ASPxClientChartTitle) {
    if (!this.inChartTitle) {
     this.inChartTitle = true;
     this.chartTitle = obj;
    }
   }
   else if ((obj instanceof ASPxClientAxis) || (obj instanceof ASPxClientSwiftPlotDiagramAxis) ||
      (obj instanceof ASPxClientAxis3D) || (obj instanceof ASPxClientRadarAxis)) {
    if (!this.inAxis) {
     this.inAxis = true;
     this.axis = obj;
    }
   }
   else if (obj instanceof ASPxClientConstantLine) {
    if (!this.inConstantLine) {
     this.inConstantLine = true;
     this.constantLine = obj;
    }
   }
   else if ((obj instanceof ASPxClientXYDiagram) || (obj instanceof ASPxClientSwiftPlotDiagram) ||
      (obj instanceof ASPxClientXYDiagram3D) || (obj instanceof ASPxClientRadarDiagram)) {
    if (!this.inDiagram) {
     this.inDiagram = true;
     this.diagram = obj;
    }
   }
   else if (obj instanceof ASPxClientXYDiagramPane) {
    if (!this.inNonDefaultPane) {
     this.inNonDefaultPane = true;
     this.nonDefaultPane = obj;
    }
   }
   else if (obj instanceof ASPxClientLegend) {
    if (!this.inLegend) {
     this.inLegend = true;
     this.legend = obj;
    }
   }
   else if (obj instanceof ASPxClientSeries) {
    if (!this.inSeries) {
     this.inSeries = true;
     this.series = obj;
    }
   }
   else if (obj instanceof ASPxClientSeriesLabel) {
    if (!this.inSeriesLabel) {
     this.inSeriesLabel = true;
     this.seriesLabel = obj;
    }
   }
   else if (obj instanceof ASPxClientSeriesTitle) {
    if (!this.inSeriesTitle) {
     this.inSeriesTitle = true;
     this.seriesTitle = obj;
    }
   }
   else if (obj instanceof ASPxClientIndicator) {
    this.inIndicator = true;
    this.indicator = obj;
    if (obj instanceof ASPxClientTrendLine) {
     if (!this.inTrendLine) {
      this.inTrendLine = true;
      this.trendLine = obj;
     }
    }
    else if (obj instanceof ASPxClientFibonacciIndicator) {
     if (!this.inFibonacciIndicator) {
      this.inFibonacciIndicator = true;
      this.fibonacciIndicator = obj;
     }
    }
    else if (obj instanceof ASPxClientRegressionLine) {
     if (!this.inRegressionLine) {
      this.inRegressionLine = true;
      this.regressionLine = obj;
     }
    }
   }
   else if (obj instanceof ASPxClientAnnotation) {
    if (!this.inAnnotation) {
     this.inAnnotation = true;
     this.annotation = obj;
    }
   }
   var additionalObj = hitObjects[i].additionalObject;
   if (additionalObj != null) {
    if (additionalObj instanceof ASPxClientSeriesPoint) {
     if (!this.inSeriesPoint) {
      this.inSeriesPoint = true;
      this.seriesPoint = additionalObj;
     }
    }
    if (additionalObj instanceof ASPxClientAxisLabelItem) {
     if (!this.inAxisLabelItem) {
      this.inAxisLabelItem = true;
      this.axisLabelItem = additionalObj;
     }
    }
    if (additionalObj instanceof ASPxClientAxisTitle) {
     if (!this.inAxisTitle) {
      this.inAxisTitle = true;
      this.axisTitle = additionalObj;
     }
    }
   }
  }
 }
});
ASPxClientDiagramCoordinates = _aspxCreateClass(null, {
 constructor: function() {
  this.argumentScaleType = '';
  this.valueScaleType = '';
  this.qualitativeArgument = '';
  this.numericalArgument = 0;
  this.dateTimeArgument = null;
  this.numericalValue = 0;
  this.dateTimeValue = null;
  this.axisX = null;
  this.axisY = null;
  this.pane = null;
  this.axisValueList = new Array();
 },
 SetAxisValue: function(axis, valueInternal) {
  var value = axis.GetNativeArgument(valueInternal);
  var axisValue = new ASPxClientAxisValue();
  axisValue.axis = axis;
  if (typeof (value) == 'string') {
   axisValue.qualitativeValue = value;
   axisValue.scaleType = ASPxClientScaleType.Qualitative;
  }
  else if (value instanceof Date) {
   axisValue.dateTimeValue = value;
   axisValue.scaleType = ASPxClientScaleType.DateTime;
  }
  else {
   axisValue.numericalValue = value;
   axisValue.scaleType = ASPxClientScaleType.Numerical;
  }
  this.axisValueList.push(axisValue);
 },
 SetArgumentAndValue: function(axisX, axisY, argumentInternal, valueInternal) {
  var argument = axisX.GetNativeArgument(argumentInternal);
  var value = axisY.GetNativeArgument(valueInternal);
  if (typeof (argument) == 'string') {
   this.qualitativeArgument = argument;
   this.argumentScaleType = ASPxClientScaleType.Qualitative;
  }
  else if (argument instanceof Date) {
   this.dateTimeArgument = argument;
   this.argumentScaleType = ASPxClientScaleType.DateTime;
  }
  else {
   this.numericalArgument = argument;
   this.argumentScaleType = ASPxClientScaleType.Numerical;
  }
  if (value instanceof Date) {
   this.dateTimeValue = value;
   this.valueScaleType = ASPxClientScaleType.DateTime;
  }
  else {
   this.numericalValue = value;
   this.valueScaleType = ASPxClientScaleType.Numerical;
  }
  this.SetAxisValue(axisX, argumentInternal);
  this.SetAxisValue(axisY, valueInternal);
 },
 IsEmpty: function() {
  return this.argumentScaleType == '';
 },
 GetAxisValue: function(axis) {
  for (var i = 0; i < this.axisValueList.length; i++)
   if (axis == this.axisValueList[i].axis)
   return this.axisValueList[i];
  return null;
 }
});
ASPxClientAxisValue = _aspxCreateClass(null, {
 constructor: function() {
  this.scaleType = '';
  this.qualitativeValue = '';
  this.numericalValue = 0;
  this.dateTimeValue = null;
  this.axis = null;
 }
});
ASPxClientControlCoordinates = _aspxCreateClass(null, {
 constructor: function() {
  this.pane = null;
  this.x = 0;
  this.y = 0;
  this.visibility = ASPxClientControlCoordinatesVisibility.Undefined;
 },
 GetValueSign: function(value) {
  if (value < 0)
   return -1;
  if (value > 0)
   return 1;
  return 0;
 },
 StrongRound: function(value) {
  return this.GetValueSign(value) * Math.floor(Math.abs(value) + 0.5);
 },
 SetPoint: function(x, y) {
  this.x = this.StrongRound(x);
  this.y = this.StrongRound(y);
 }
});
ASPxClientWebChartElement = _aspxCreateClass(null, {
 constructor: function(chart, interimObject) {
  this.chart = chart;
  if (_aspxIsExists(interimObject)) {
   this.InitializeProperties(interimObject);
   this.InitializeHitObjects(interimObject);
  }
  else
   this.InitializeDefault();
 },
 InitializeProperties: function(interimObject) {
  throw "ASPxClientWebChartElement abstract error";
 },
 InitializeDefault: function() {
  throw "ASPxClientWebChartElement abstract error";
 },
 InitializeHitObjects: function(interimObject) {
  var chartControl = this.chart != null ? this.chart.chartControl : this.chartControl;
  if (_aspxIsExists(chartControl)) {
   if (_aspxIsExists(chartControl.hitTestController)) {
    var hitTestController = chartControl.hitTestController;
    if (_aspxIsExists(interimObject.hi))
     hitTestController.objects[interimObject.hi] = this;
    else if (_aspxIsExists(interimObject.hia))
     hitTestController.additionalObjects[interimObject.hia] = this;
   }
  }
 },
 CreateArray: function(interimArray, createArrayItem) {
  if (!_aspxIsExists(interimArray))
   return [];
  if (!(interimArray instanceof Array))
   throw ASPxClientWebChartElement.objectModelError;
  var result = new Array();
  for (var i = 0; i < interimArray.length; i++)
   result.push(createArrayItem(this.chart, this, interimArray[i]));
  return result;
 }
});
ASPxClientWebChartElement.objectModelError = "Client object model error";
ASPxClientWebChartEmptyElement = _aspxCreateClass(ASPxClientWebChartElement, {
 constructor: function(chart, interimObject) {
  this.constructor.prototype.constructor.call(this, chart, interimObject);
 },
 InitializeProperties: function(interimObject) {
 },
 InitializeDefault: function() {
 }
});
ASPxClientWebChartRequiredElement = _aspxCreateClass(ASPxClientWebChartElement, {
 constructor: function(chart, interimObject) {
  this.constructor.prototype.constructor.call(this, chart, interimObject);
 },
 InitializeDefault: function() {
  throw ASPxClientWebChartElement.objectModelError;
 }
});
ASPxClientWebChartElementNamed = _aspxCreateClass(ASPxClientWebChartRequiredElement, {
 constructor: function(chart, interimObject) {
  this.constructor.prototype.constructor.call(this, chart, interimObject);
 },
 InitializeProperties: function(interimObject) {
  if (!_aspxIsExists(interimObject.n))
   throw ASPxClientWebChartElement.objectModelError;
  this.name = interimObject.n;
 }
});
ASPxClientWebChart = _aspxCreateClass(ASPxClientWebChartRequiredElement, {
 constructor: function(chartControl, interimChart) {
  this.chartControl = chartControl;
  this.constructor.prototype.constructor.call(this, null, interimChart);
 },
 InitializeProperties: function(interimObject) {
  this.diagram =
   _aspxIsExists(interimObject.d) ?
   this.CreateXYDiagram(interimObject.d) :
   new ASPxClientSimpleDiagram(this);
  this.series = this.CreateSeriesArray(interimObject.s);
  this.titles = this.CreateTitles(interimObject.ti);
  this.annotations = this.CreateAnnotations(interimObject.a);
  this.legend = new ASPxClientLegend(this, interimObject.l);
  this.appearanceName = interimObject.an;
  this.paletteName = interimObject.pn;
  this.showSeriesToolTip = _aspxIsExists(interimObject.sst) ? interimObject.sst : false;
  this.showPointToolTip = _aspxIsExists(interimObject.spt) ? interimObject.spt : false;
  this.showCrosshair = _aspxIsExists(interimObject.sc) ? interimObject.sc : false;
  this.toolTipPosition = this.CreateToolTipPosition(this, interimObject.ttp);
  this.toolTipController = this.CreateToolTipController(this, interimObject.ttc);
  this.crosshairOptions = this.CreateCrosshairOptions(this, interimObject.co);
  this.cssPostfix = _aspxIsExists(interimObject.css) ? interimObject.css : "";
 },
 CreateXYDiagram: function(interimXYDiagram) {
  if (interimXYDiagram.t == "XYD")
   return new ASPxClientXYDiagram(this, interimXYDiagram);
  else if (interimXYDiagram.t == "SPD")
   return new ASPxClientSwiftPlotDiagram(this, interimXYDiagram);
  else if (interimXYDiagram.t == "XYD3")
   return new ASPxClientXYDiagram3D(this, interimXYDiagram);
  else if (interimXYDiagram.t == "RD")
   return new ASPxClientRadarDiagram(this, interimXYDiagram);
  else
   throw ASPxClientWebChartElement.objectModelError;
 },
 CreateSeriesArray: function(interimSeriesArray) {
  return this.CreateArray(interimSeriesArray, function(nullChart, chart, intermSeries) {
   return new ASPxClientSeries(chart, intermSeries);
  });
 },
 CreateTitles: function(interimTitles) {
  return this.CreateArray(interimTitles, function(nullChart, chart, interimTitle) {
   return new ASPxClientChartTitle(chart, interimTitle);
  });
 },
 CreateAnnotations: function(interimAnnotations) {
  return this.CreateArray(interimAnnotations, function(nullChart, chart, interimAnnotation) {
   if (interimAnnotation.t == "TA")
    return new ASPxClientTextAnnotation(chart, interimAnnotation);
   else if (interimAnnotation.t == "IA")
    return new ASPxClientImageAnnotation(chart, interimAnnotation);
   else
    throw ASPxClientWebChartElement.objectModelError;
  });
 },
 CreateToolTipPosition: function(chart, interimPosition) {
  if (_aspxIsExists(interimPosition) && (chart.showSeriesToolTip || chart.showPointToolTip)) {
   if (interimPosition.t == "FP")
    return new ASPxClientToolTipFreePosition(interimPosition);
   else if (interimPosition.t == "RP")
    return new ASPxClientToolTipRelativePosition(interimPosition);
   else if (interimPosition.t == "MP")
    return new ASPxClientToolTipMousePosition(interimPosition);
  }
  return null;
 },
 CreateToolTipController: function(chart, interimToolTipController) {
  if (_aspxIsExists(interimToolTipController) && (chart.showSeriesToolTip || chart.showPointToolTip))
   return new ASPxClientToolTipController(chart, interimToolTipController);
  return null;
 },
 CreateCrosshairOptions: function(chart, interimCrosshairOptions) {
  if (chart.showCrosshair)
   return new ASPxClientCrosshairOptions(chart, interimCrosshairOptions);
  return null;
 }
});
ASPxClientSimpleDiagram = _aspxCreateClass(ASPxClientWebChartEmptyElement, {
 constructor: function(chart) {
  this.constructor.prototype.constructor.call(this, chart);
 }
});
ASPxClientXYDiagramBase = _aspxCreateClass(ASPxClientWebChartRequiredElement, {
 constructor: function(chart, interimXYDiagram) {
  this.constructor.prototype.constructor.call(this, chart, interimXYDiagram);
 },
 InitializeProperties: function(interimObject) {
  this.axisX = this.CreateAxis(interimObject.x);
  this.axisY = this.CreateAxis(interimObject.y);
 },
 CreateAxis: function(interimAxis) {
  throw "ASPxClientXYDiagramBase abstract error";
 }
});
ASPxClientXYDiagram2D = _aspxCreateClass(ASPxClientXYDiagramBase, {
 constructor: function(chart, interimXYDiagram) {
  this.constructor.prototype.constructor.call(this, chart, interimXYDiagram);
 },
 InitializeProperties: function(interimObject) {
  ASPxClientXYDiagramBase.prototype.InitializeProperties.call(this, interimObject);
  this.secondaryAxesX = this.CreateSecondaryAxes(interimObject.sx);
  this.secondaryAxesY = this.CreateSecondaryAxes(interimObject.sy);
  this.defaultPane = new ASPxClientXYDiagramPane(this.chart, this, interimObject.dp);
  this.panes = this.CreatePanes(interimObject.pa);
  if (_aspxIsExists(interimObject.pld))
   this.paneLayoutDirection = interimObject.pld;
 },
 CreateSecondaryAxes: function(interimSecondaryAxes) {
  throw "ASPxClientXYDiagramBase abstract error";
 },
 CreatePanes: function(interimPanes) {
  return this.CreateArray(interimPanes, function(chart, diagram, interimPane) {
   return new ASPxClientXYDiagramPane(chart, diagram, interimPane);
  });
 },
 FindPaneByXY: function(x, y) {
  if (this.defaultPane.InPane(x, y))
   return this.defaultPane;
  for (var i = 0; i < this.panes.length; i++) {
   if (this.panes[i].InPane(x, y))
    return this.panes[i];
  }
  return null;
 },
 FindPaneByID: function(paneID) {
  if (paneID == -1)
   return this.defaultPane;
  if (this.panes != null) {
   for (var pane in this.panes) {
    if (this.panes[pane].paneID == paneID)
     return this.panes[pane];
   }
  }
  return null;
 },
 FindAxisXByID: function(axisID) {
  if (this.axisX.axisID == axisID)
   return this.axisX;
  for (var i = 0; i < this.secondaryAxesX.length; i++) {
   if (this.secondaryAxesX[i].axisID == axisID)
    return this.secondaryAxesX[i];
  }
  return null;
 },
 FindAxisYByID: function(axisID) {
  if (this.axisY.axisID == axisID)
   return this.axisY;
  for (var i = 0; i < this.secondaryAxesY.length; i++) {
   if (this.secondaryAxesY[i].axisID == axisID)
    return this.secondaryAxesY[i];
  }
  return null;
 },
 CalculateAxisValues: function(pane, axis, location, length) {
  if (axis == null)
   return null;
  if (axis.reverse)
   location = length - location;
  var cacheItem = axis.intervalBoundsCaches.GetIntervalBoundsCacheItemByPaneID(pane.paneID);
  if (cacheItem == null)
   return null;
  var index = cacheItem.GetIntervalBoundsIndexByLocation(location);
  if (index < 0 || index >= axis.intervals.length)
   return null;
  var intervalBounds = cacheItem.intervalBoundsArray[index];
  var ratio = (location - intervalBounds.position) / intervalBounds.length;
  var interval = axis.intervals[index];
  var valueInternal = interval.GetInternalValue(ratio);
  return valueInternal;
 },
 AddAxisValueToAxisValueList: function(axisValues, pane, axis, location, length) {
  valueInternal = this.CalculateAxisValues(pane, axis, location, length);
  if (valueInternal != null)
   axisValues.push(new ASPxAxisValuePair(axis, valueInternal, location));
 },
 MapPointToInternal: function(pane, x, y) {
  var axisValues = [];
  var axesCoords = this.GetAxesCoordinates(pane, x, y);
  if (axesCoords == null)
   return axisValues;
  this.AddAxisValueToAxisValueList(axisValues, pane, this.FindAxisXByID(pane.primaryAxisXID), axesCoords.xLocation, axesCoords.xLength);
  this.AddAxisValueToAxisValueList(axisValues, pane, this.FindAxisYByID(pane.primaryAxisYID), axesCoords.yLocation, axesCoords.yLength);
  for (var i = 0; i < this.secondaryAxesX.length; i++)
   this.AddAxisValueToAxisValueList(axisValues, pane, this.secondaryAxesX[i], axesCoords.xLocation, axesCoords.xLength);
  for (var i = 0; i < this.secondaryAxesY.length; i++)
   this.AddAxisValueToAxisValueList(axisValues, pane, this.secondaryAxesY[i], axesCoords.yLocation, axesCoords.yLength);
  return axisValues;
 },
 AddAxisValue: function(coordinates, pane, axis, location, length) {
  var valueInternal = this.CalculateAxisValues(pane, axis, location, length);
  if (valueInternal != null)
   coordinates.SetAxisValue(axis, valueInternal);
 },
 GetAxesCoordinates: function(pane, x, y) {
  x -= pane.boundsLeft;
  y -= pane.boundsTop;
  if (x < 0 || x > pane.boundsWidth || y < 0 || y > pane.boundsHeight)
   return null;
  y = pane.boundsHeight - y;
  if (this.rotated)
   return { xLocation: y, yLocation: x, xLength: pane.boundsHeight, yLength: pane.boundsWidth };
  else
   return { xLocation: x, yLocation: y, xLength: pane.boundsWidth, yLength: pane.boundsHeight };
 },
 PointToDiagram: function(x, y) {
  var coordinates = new ASPxClientDiagramCoordinates();
  var pane = this.FindPaneByXY(x, y);
  if (pane == null)
   return coordinates;
  coordinates.pane = pane;
  var axesCoords = this.GetAxesCoordinates(pane, x, y);
  if (axesCoords == null)
   return coordinates;
  coordinates.axisX = this.FindAxisXByID(pane.primaryAxisXID);
  coordinates.axisY = this.FindAxisYByID(pane.primaryAxisYID);
  var argumentInternal = this.CalculateAxisValues(pane, coordinates.axisX, axesCoords.xLocation, axesCoords.xLength);
  var valueInternal = this.CalculateAxisValues(pane, coordinates.axisY, axesCoords.yLocation, axesCoords.yLength);
  if (argumentInternal != null && valueInternal != null)
   coordinates.SetArgumentAndValue(coordinates.axisX, coordinates.axisY, argumentInternal, valueInternal);
  for (var i = 0; i < this.secondaryAxesX.length; i++)
   this.AddAxisValue(coordinates, pane, this.secondaryAxesX[i], axesCoords.xLocation, axesCoords.xLength);
  for (var i = 0; i < this.secondaryAxesY.length; i++)
   this.AddAxisValue(coordinates, pane, this.secondaryAxesY[i], axesCoords.yLocation, axesCoords.yLength);
  return coordinates;
 },
 CalcIntervalIndexes: function(value, intervals) {
  var resultIndexes = new Array();
  var aboveIndex = -1;
  var belowIndex = -1;
  for (var i = 0; i < intervals.length; i++) {
   if (intervals[i].minLimit <= value && value <= intervals[i].maxLimit) {
    resultIndexes.push(i);
    return { indexes: resultIndexes, inRange: true };
   }
   if (value > intervals[i].maxLimit) {
    if (belowIndex == -1)
     belowIndex = i;
    else if (intervals[belowIndex].maxLimit < intervals[i].maxLimit)
     belowIndex = i;
   }
   if (value < intervals[i].minLimit) {
    if (aboveIndex == -1)
     aboveIndex = i;
    else if (intervals[aboveIndex].minLimit > intervals[i].minLimit)
     aboveIndex = i;
   }
  }
  if (belowIndex != -1)
   resultIndexes.push(belowIndex);
  if (aboveIndex != -1)
   resultIndexes.push(aboveIndex);
  return { indexes: resultIndexes, inRange: false };
 },
 CalcCoordWithinAndOutRange: function(value, intervals, cacheItem, index) {
  var min = intervals[index].minLimit;
  var max = intervals[index].maxLimit;
  var factor = max - min != 0 ? (value - min) / (max - min) : 0;
  var intervalBounds = cacheItem.intervalBoundsArray[index];
  return factor * intervalBounds.length + intervalBounds.position;
 },
 CalcCoordInScaleBreak: function(value, intervals, cacheItem, index1, index2) {
  var min = intervals[index1].maxLimit;
  var max = intervals[index2].minLimit;
  var factor = max - min != 0 ? (value - min) / (max - min) : 0;
  var intervalBoundsMin = cacheItem.intervalBoundsArray[index1];
  var intervalBoundsMax = cacheItem.intervalBoundsArray[index2];
  return factor * (intervalBoundsMax.position - intervalBoundsMin.highBound) + intervalBoundsMin.highBound;
 },
 CalcCoord: function(value, indexes, axis, cacheItem, length) {
  var coord;
  if (indexes.length == 1)
   coord = this.CalcCoordWithinAndOutRange(value, axis.intervals, cacheItem, indexes[0]);
  else
   coord = this.CalcCoordInScaleBreak(value, axis.intervals, cacheItem, indexes[0], indexes[1]);
  if (axis.reverse)
   coord = length - coord;
  return coord;
 },
 CheckIndexes: function(indexes, intervals, cacheItem) {
  if (indexes.length < 1 || indexes.length > 2)
   return false;
  for (var i = 0; i < indexes.length; i++) {
   if (indexes[i] < 0 || indexes[i] >= intervals.length || indexes[i] >= cacheItem.intervalBoundsArray.length)
    return false;
  }
  return true;
 },
 FindAxisXByName: function(name) {
  if (this.axisX.name == name)
   return this.axisX;
  for (var i = 0; i < this.secondaryAxesX.length; i++) {
   if (this.secondaryAxesX[i].name == name)
    return this.secondaryAxesX[i];
  }
  return null;
 },
 FindAxisYByName: function(name) {
  if (this.axisY.name == name)
   return this.axisY;
  for (var i = 0; i < this.secondaryAxesY.length; i++) {
   if (this.secondaryAxesY[i].name == name)
    return this.secondaryAxesY[i];
  }
  return null;
 },
 IsAxisValueVisible: function(pane, axis, value) {
  var cacheItem = axis.intervalBoundsCaches.GetIntervalBoundsCacheItemByPaneID(pane.paneID);
  if (cacheItem == null)
   return false;
  var result = this.CalcIntervalIndexes(value, axis.intervals);
  if (!result.inRange)
   return false;
  var indexes = result.indexes;
  if (!this.CheckIndexes(indexes, axis.intervals, cacheItem))
   return false;
  return true;
 },
 MapInternalToPoint: function(pane, axisName, value) {
  var isHorizontal;
  var axis = this.FindAxisXByName(axisName);
  if (axis != null)
   isHorizontal = !this.rotated;
  else {
   axis = this.FindAxisYByName(axisName);
   if (axis != null)
    isHorizontal = this.rotated;
   else
    return null;
  }
  var cacheItem = axis.intervalBoundsCaches.GetIntervalBoundsCacheItemByPaneID(pane.paneID);
  if (cacheItem == null)
   return null;
  var result = this.CalcIntervalIndexes(value, axis.intervals);
  if (!result.inRange)
   return null;
  var indexes = result.indexes;
  if (!this.CheckIndexes(indexes, axis.intervals, cacheItem))
   return null;
  var length = isHorizontal ? pane.boundsWidth : pane.boundsHeight;
  var pointValue = this.CalcCoord(value, indexes, axis, cacheItem, length);
  if (isHorizontal)
   pointValue += pane.boundsLeft;
  else
   pointValue = pane.boundsHeight - pointValue + pane.boundsTop;
  return pointValue;
 },
 DiagramToPoint: function(argument, value, axisX, axisY, pane) {
  var coordinates = new ASPxClientControlCoordinates();
  if (!_aspxIsExists(axisX.intervalBoundsCaches) || !_aspxIsExists(axisY.intervalBoundsCaches))
   return coordinates;
  coordinates.pane = pane;
  var cacheItemX = axisX.intervalBoundsCaches.GetIntervalBoundsCacheItemByPaneID(pane.paneID);
  var cacheItemY = axisY.intervalBoundsCaches.GetIntervalBoundsCacheItemByPaneID(pane.paneID);
  if (cacheItemX == null || cacheItemY == null)
   return coordinates;
  var argumentInternal = axisX.GetInternalArgument(argument);
  if (axisX.scale instanceof ASPxClientQualitativeMap
   && (argumentInternal < axisX.intervals[0].minLimit || argumentInternal > axisX.intervals[axisX.intervals.length - 1].maxLimit))
   return coordinates;
  var valueInternal = axisY.GetInternalArgument(value);
  var resultsX = this.CalcIntervalIndexes(argumentInternal, axisX.intervals);
  var resultsY = this.CalcIntervalIndexes(valueInternal, axisY.intervals);
  var indexesX = resultsX.indexes;
  var indexesY = resultsY.indexes;
  if (!this.CheckIndexes(indexesX, axisX.intervals, cacheItemX)
   || !this.CheckIndexes(indexesY, axisY.intervals, cacheItemY))
   return coordinates;
  coordinates.visibility = resultsX.inRange && resultsY.inRange ? ASPxClientControlCoordinatesVisibility.Visible
   : ASPxClientControlCoordinatesVisibility.Hidden;
  var x, y;
  if (!this.rotated) {
   x = this.CalcCoord(argumentInternal, indexesX, axisX, cacheItemX, pane.boundsWidth);
   y = this.CalcCoord(valueInternal, indexesY, axisY, cacheItemY, pane.boundsHeight);
  }
  else {
   x = this.CalcCoord(valueInternal, indexesY, axisY, cacheItemY, pane.boundsWidth);
   y = this.CalcCoord(argumentInternal, indexesX, axisX, cacheItemX, pane.boundsHeight);
  }
  coordinates.SetPoint(x + pane.boundsLeft, pane.boundsTop + pane.boundsHeight - y);
  return coordinates;
 }
});
ASPxClientXYDiagram = _aspxCreateClass(ASPxClientXYDiagram2D, {
 constructor: function(chart, interimXYDiagram) {
  this.constructor.prototype.constructor.call(this, chart, interimXYDiagram);
 },
 InitializeProperties: function(interimObject) {
  ASPxClientXYDiagram2D.prototype.InitializeProperties.call(this, interimObject);
  if (!_aspxIsExists(interimObject.dr))
   throw ASPxClientWebChartElement.objectModelError;
  this.rotated = interimObject.dr;
 },
 CreateAxis: function(interimAxis) {
  return new ASPxClientAxis(this.chart, this, interimAxis);
 },
 CreateSecondaryAxes: function(interimSecondaryAxes) {
  return this.CreateArray(interimSecondaryAxes, function(chart, diagram, interimSecondaryAxis) {
   return new ASPxClientAxis(chart, diagram, interimSecondaryAxis);
  });
 }
});
ASPxClientSwiftPlotDiagram = _aspxCreateClass(ASPxClientXYDiagram2D, {
 constructor: function(chart, interimXYDiagram) {
  this.constructor.prototype.constructor.call(this, chart, interimXYDiagram);
 },
 InitializeProperties: function(interimObject) {
  ASPxClientXYDiagram2D.prototype.InitializeProperties.call(this, interimObject);
 },
 CreateAxis: function(interimAxis) {
  return new ASPxClientSwiftPlotDiagramAxis(this.chart, this, interimAxis);
 },
 CreateSecondaryAxes: function(interimSecondaryAxes) {
  return this.CreateArray(interimSecondaryAxes, function(chart, diagram, interimSecondaryAxis) {
   return new ASPxClientSwiftPlotDiagramAxis(chart, diagram, interimSecondaryAxis);
  });
 }
});
ASPxClientXYDiagramPane = _aspxCreateClass(ASPxClientWebChartElementNamed, {
 constructor: function(chart, diagram, interimPane) {
  this.constructor.prototype.constructor.call(this, chart, interimPane);
  this.diagram = diagram;
 },
 InitializeProperties: function(interimObject) {
  ASPxClientWebChartElementNamed.prototype.InitializeProperties.call(this, interimObject);
  this.primaryAxisXID = interimObject.paxi;
  this.primaryAxisYID = interimObject.payi;
  this.paneID = interimObject.id;
  if (_aspxIsExists(interimObject.dx))
   this.boundsLeft = interimObject.dx;
  if (_aspxIsExists(interimObject.dy))
   this.boundsTop = interimObject.dy;
  if (_aspxIsExists(interimObject.dw))
   this.boundsWidth = interimObject.dw;
  if (_aspxIsExists(interimObject.dh))
   this.boundsHeight = interimObject.dh;
  if (_aspxIsExists(interimObject.dh))
   this.visible = interimObject.vsb;
  if (_aspxIsExists(interimObject.lb))
   this.axisLabelBounds = this.CreateAxisLabelBounds(interimObject.lb);
 },
 CreateAxisLabelBounds: function(interimAxisLabelBounds) {
  return this.CreateArray(interimAxisLabelBounds, function(chart, pane, interimObject) {
   return new ASPxClientAxisLabelBounds(chart, interimObject);
  });
 },
 InPane: function(x, y) {
  if (_aspxIsExists(this.boundsLeft) && _aspxIsExists(this.boundsTop) &&
   _aspxIsExists(this.boundsWidth) && _aspxIsExists(this.boundsHeight) &&
   (this.boundsWidth > 0) && (this.boundsHeight > 0)) {
   x -= this.boundsLeft;
   y -= this.boundsTop;
   return (x >= 0) && (x <= this.boundsWidth) && (y >= 0) && (y <= this.boundsHeight);
  }
  return false;
 }
});
ASPxClientXYDiagram3D = _aspxCreateClass(ASPxClientXYDiagramBase, {
 constructor: function(chart, interimXYDiagram) {
  this.constructor.prototype.constructor.call(this, chart, interimXYDiagram);
 },
 CreateAxis: function(interimAxis) {
  return new ASPxClientAxis3D(this.chart, this, interimAxis);
 }
});
ASPxClientRadarDiagram = _aspxCreateClass(ASPxClientXYDiagramBase, {
 constructor: function(chart, interimXYDiagram) {
  this.constructor.prototype.constructor.call(this, chart, interimXYDiagram);
 },
 InitializeProperties: function(interimObject) {
  ASPxClientXYDiagramBase.prototype.InitializeProperties.call(this, interimObject);
  if (_aspxIsExists(interimObject.m))
   this.mapping = new ASPxClientRadarDiagramMapping(interimObject.m);
 },
 CreateAxis: function(interimAxis) {
  return new ASPxClientRadarAxis(this.chart, this, interimAxis);
 },
 CorrectAngle: function(angle) {
  if (this.mapping.revertAngle && angle != 0)
   angle = 2 * Math.PI - angle;
  if (this.mapping.diagramStartAngle >= 0) {
   if (angle >= this.mapping.diagramStartAngle)
    angle -= this.mapping.diagramStartAngle;
   else
    angle = 2 * Math.PI - this.mapping.diagramStartAngle + angle;
  }
  else {
   if (angle < 2 * Math.PI + this.mapping.diagramStartAngle)
    angle -= this.mapping.diagramStartAngle;
   else
    angle = angle - 2 * Math.PI - this.mapping.diagramStartAngle;
  }
  return angle;
 },
 CalcArgumentAndValueForPolygon: function(angle, dx, dy) {
  if (this.mapping.vertices.length <= 1)
   return null;
  var k = angle / (2 * Math.PI / (this.mapping.vertices.length - 1));
  var index = Math.floor(k);
  if (index < 0 || index >= this.mapping.vertices.length - 1)
   return null;
  var min = this.mapping.vertices[index];
  var max = this.mapping.vertices[index + 1];
  var divisor1 = (min.x - max.x) * dy - (min.y - max.y) * dx;
  if (divisor1 == 0)
   return null;
  var maxFactor = (min.x * dy - min.y * dx) / divisor1;
  var dist;
  var divisor2 = (min.x - max.x) * maxFactor - min.x;
  var divisor3 = (min.y - max.y) * maxFactor - min.y;
  if (dx != 0 && divisor2 != 0)
   dist = dx / divisor2;
  else if (dy != 0 && divisor3 != 0)
   dist = dy / divisor3;
  else
   return null;
  if (dist > this.mapping.radius)
   return null;
  valueInternal = dist / this.mapping.valueScaleFactor + this.mapping.minValue;
  argumentInternal = (max.argument - min.argument) * maxFactor + min.argument;
  return { argument: argumentInternal, value: valueInternal }
 },
 PointToDiagram: function(x, y) {
  var coordinates = new ASPxClientDiagramCoordinates();
  if (!_aspxIsExists(this.mapping))
   return coordinates;
  if (this.axisX == null || this.axisY == null)
   return coordinates;
  coordinates.axisX = this.axisX;
  coordinates.axisY = this.axisY;
  var dy = this.mapping.centerY - y;
  var dx = this.mapping.centerX - x;
  var distance = Math.sqrt(dy * dy + dx * dx);
  if (this.mapping.radius == 0 || distance > this.mapping.radius)
   return coordinates;
  var argumentInternal, valueInternal;
  if (distance == 0) {
   argumentInternal = this.mapping.minArgument;
   valueInternal = this.mapping.minValue;
  }
  else {
   var angleCos = dy / distance;
   if (angleCos > 1 || angleCos < -1)
    return coordinates;
   var angle = Math.acos(angleCos);
   if (x < this.mapping.centerX)
    angle = Math.PI * 2 - angle;
   angle = this.CorrectAngle(angle);
   if (this.mapping.circle) {
    valueInternal = distance / this.mapping.valueScaleFactor + this.mapping.minValue;
    argumentInternal = angle / Math.PI / 2.0 * this.mapping.argumentDiapason + this.mapping.minArgument;
   }
   else {
    var values = this.CalcArgumentAndValueForPolygon(angle, dx, dy);
    if (values == null)
     return coordinates;
    argumentInternal = values.argument;
    valueInternal = values.value;
   }
  }
  if (this.axisX.scale instanceof ASPxClientQualitativeMap)
   if (argumentInternal > this.mapping.minArgument + this.mapping.argumentDiapason - this.mapping.argumentDelta / 2)
   argumentInternal -= this.mapping.argumentDiapason;
  coordinates.SetArgumentAndValue(this.axisX, this.axisY, argumentInternal, valueInternal);
  return coordinates;
 },
 DiagramToPoint: function(argument, value) {
  var coordinates = new ASPxClientControlCoordinates();
  if (!_aspxIsExists(this.mapping))
   return coordinates;
  var argumentInternal = this.axisX.GetInternalArgument(argument);
  var valueInternal = this.axisY.GetInternalArgument(value);
  var point = this.mapping.GetGetScreenPoint(argumentInternal, valueInternal);
  if (point == null)
   return coordinates;
  coordinates.visibility = valueInternal > this.mapping.maxValue ? ASPxClientControlCoordinatesVisibility.Hidden : ASPxClientControlCoordinatesVisibility.Visible;
  coordinates.SetPoint(point.x, point.y);
  return coordinates;
 }
});
ASPxClientRadarDiagramMapping = _aspxCreateClass(null, {
 constructor: function(interimMapping) {
  if (_aspxIsExists(interimMapping.r))
   this.radius = interimMapping.r;
  if (_aspxIsExists(interimMapping.cx))
   this.centerX = interimMapping.cx;
  if (_aspxIsExists(interimMapping.cy))
   this.centerY = interimMapping.cy;
  if (_aspxIsExists(interimMapping.ma))
   this.minArgument = interimMapping.ma;
  if (_aspxIsExists(interimMapping.mv))
   this.minValue = interimMapping.mv;
  if (_aspxIsExists(interimMapping.ra))
   this.revertAngle = interimMapping.ra;
  if (_aspxIsExists(interimMapping.a))
   this.diagramStartAngle = interimMapping.a;
  if (_aspxIsExists(interimMapping.f))
   this.valueScaleFactor = interimMapping.f;
  if (_aspxIsExists(interimMapping.d))
   this.argumentDiapason = interimMapping.d;
  if (_aspxIsExists(interimMapping.ad))
   this.argumentDelta = interimMapping.ad;
  if (_aspxIsExists(interimMapping.ci))
   this.circle = interimMapping.ci;
  if (_aspxIsExists(interimMapping.c))
   this.clipArgument = interimMapping.c;
  if (_aspxIsExists(interimMapping.mxa))
   this.maxArgument = interimMapping.mxa;
  if (_aspxIsExists(interimMapping.mxv))
   this.maxValue = interimMapping.mxv;
  if (_aspxIsExists(interimMapping.sa))
   this.startAngle = interimMapping.sa;
  this.vertices = this.CreateArray(interimMapping.v, function(interimVertex) {
   return new ASPxClientVertex(interimVertex);
  });
 },
 CreateArray: function(interimArray, createArrayItem) {
  if (!_aspxIsExists(interimArray))
   return [];
  if (!(interimArray instanceof Array))
   throw ASPxClientWebChartElement.objectModelError;
  var result = new Array();
  for (var i = 0; i < interimArray.length; i++)
   result.push(createArrayItem(interimArray[i]));
  return result;
 },
 GetGetScreenPoint: function(argument, value) {
  if (this.clipArgument && (argument < this.minArgument || argument > this.maxArgument))
   return null;
  while (argument < this.minArgument)
   argument += this.argumentDiapason;
  while (argument > this.maxArgument)
   argument -= this.argumentDiapason;
  if (value < this.minValue)
   value = this.minValue;
  var x, y;
  if (this.circle) {
   var distance = (value - this.minValue) * this.valueScaleFactor;
   var angle = (argument - this.minArgument) / this.argumentDiapason * Math.PI * 2.0;
   if (this.revertAngle)
    angle = -angle;
   angle += this.startAngle;
   x = Math.cos(angle) * distance + this.centerX;
   y = Math.sin(angle) * distance + this.centerY;
  }
  else {
   var distance = (value - this.minValue) * this.valueScaleFactor;
   var coord = (argument - this.minArgument) / this.argumentDelta;
   var index = Math.floor(coord);
   if (index < 0)
    index = 0;
   else if (index >= this.vertices.length - 1)
    index = this.vertices.length - 2;
   var min = this.vertices[index];
   var max = this.vertices[index + 1];
   var maxFactor = (argument - min.argument) / (max.argument - min.argument);
   var minFactor = 1.0 - maxFactor;
   x = (min.x * minFactor + max.x * maxFactor) * distance + this.centerX;
   y = (min.y * minFactor + max.y * maxFactor) * distance + this.centerY;
  }
  return { x: x, y: y };
 }
});
ASPxClientVertex = _aspxCreateClass(null, {
 constructor: function(interimVertex) {
  if (!_aspxIsExists(interimVertex.a))
   throw ASPxClientWebChartElement.objectModelError;
  this.argument = interimVertex.a;
  if (!_aspxIsExists(interimVertex.x))
   throw ASPxClientWebChartElement.objectModelError;
  this.x = interimVertex.x;
  if (!_aspxIsExists(interimVertex.y))
   throw ASPxClientWebChartElement.objectModelError;
  this.y = interimVertex.y;
 }
});
ASPxClientQualitativeMap = _aspxCreateClass(null, {
 constructor: function(interimMap) {
  if (!_aspxIsExists(interimMap.vl))
   throw ASPxClientWebChartElement.objectModelError;
  this.values = interimMap.vl;
 },
 GetNativeValue: function(internalValue) {
  var roundedValue = Math.round(internalValue);
  return (roundedValue < 0 || roundedValue >= this.values.length) ? null : this.values[roundedValue];
 },
 GetInternalValue: function(value) {
  for (var i = 0; i < this.values.length; i++) {
   if (this.values[i] == value)
    return i;
  }
  return -1;
 }
});
ASPxClientNumericalMap = _aspxCreateClass(null, {
 constructor: function(interimMap) {
  if (!_aspxIsExists(interimMap.l))
   throw ASPxClientWebChartElement.objectModelError;
  this.logarithmic = interimMap.l;
  if (this.logarithmic) {
   if (!_aspxIsExists(interimMap.lb) || !_aspxIsExists(interimMap.mlv))
    throw ASPxClientWebChartElement.objectModelError;
   this.logarithmicBase = interimMap.lb;
   this.minLogValue = interimMap.mlv;
  }
 },
 GetValueSign: function(value) {
  if (value < 0)
   return -1;
  if (value > 0)
   return 1;
  return 0;
 },
 TransformBackward: function(value) {
  return isFinite(value) ? Math.pow(this.logarithmicBase, Math.abs(value) + this.minLogValue) * this.GetValueSign(value) : value;
 },
 TransformForward: function(value) {
  if (!isFinite(value))
   return value;
  var transformedAbsValue = Math.log(Math.abs(value)) / Math.log(this.logarithmicBase) - this.minLogValue;
  if (transformedAbsValue < 0)
   transformedAbsValue = 0;
  return this.GetValueSign(value) * transformedAbsValue;
 },
 GetNativeValue: function(internalValue) {
  return this.logarithmic ? this.TransformBackward(internalValue) : internalValue;
 },
 GetInternalValue: function(value) {
  return this.logarithmic ? this.TransformForward(value) : value;
 }
});
ASPxClientDateTimeMap = _aspxCreateClass(null, {
 constructor: function(interimMap) {
  if (!_aspxIsExists(interimMap.su) || !_aspxIsExists(interimMap.sa) || !_aspxIsExists(interimMap.sv))
   throw ASPxClientWebChartElement.objectModelError;
  this.measureUnit = interimMap.su;
  this.gridAlignment = interimMap.sa;
  this.startDate = interimMap.sv;
  if (_aspxIsExists(interimMap.swo))
   this.workdaysOnly = interimMap.swo;
  else
   this.workdaysOnly = false;
  if (this.workdaysOnly) {
   if (!_aspxIsExists(interimMap.sw))
    throw ASPxClientWebChartElement.objectModelError;
   this.workdays = interimMap.sw;
   this.holidaysCount = this.CalcHolidaysCountInWeek();
   this.workdaysCount = 7 - this.holidaysCount;
   if (_aspxIsExists(interimMap.sh))
    this.holidays = interimMap.sh;
   else
    this.holidays = [];
   if (_aspxIsExists(interimMap.sew))
    this.exactWorkdays = interimMap.sew;
   else
    this.exactWorkdays = [];
  }
 },
 CalcHolidaysCountInWeek: function() {
  var result = 0;
  var dayFlag = 1;
  for (var i = 0; i < 7; i++) {
   if ((this.workdays & dayFlag) == 0)
    result++;
   dayFlag <<= 1;
  }
  return result;
 },
 AddDays: function(dateTime, count) {
  return new Date(dateTime.getTime() + count * 1000 * 60 * 60 * 24);
 },
 GetTotalDays: function(fromDate, toDate) {
  return (toDate.getTime() - fromDate.getTime()) / 24 / 60 / 60 / 1000;
 },
 GetDate: function(n) {
  return new Date(this.startDate.getTime() + n);
 },
 GetMonth: function(n, date) {
  var fromDate = _aspxIsExists(date) ? date : this.startDate;
  var monthsCount = Math.abs(n);
  var years = Math.floor(monthsCount / 12);
  var monthsFractional = monthsCount - years * 12;
  var months = Math.floor(monthsFractional);
  var fraction = monthsFractional - months;
  if (n < 0) {
   years = -years;
   months = -months;
   fraction = -fraction;
  }
  var year = fromDate.getFullYear() + years;
  var month = fromDate.getMonth() + months;
  if (month < 0) {
   year = year - 1;
   month = month + 12;
  }
  else if (month >= 12) {
   year = year + 1;
   month = month - 12;
  }
  var result = new Date(year, month, 1);
  if (fraction < 0) {
   var previousMonth;
   if (month == 0)
    previousMonth = new Date(year - 1, 11, 1);
   else
    previousMonth = new Date(year, month - 1, 1);
   return new Date(result.getTime() + (result.getTime() - previousMonth.getTime()) * fraction);
  }
  else {
   var nextMonth;
   if (month == 11)
    nextMonth = new Date(year + 1, 1, 1);
   else
    nextMonth = new Date(year, month + 1, 1);
   return new Date(result.getTime() + (nextMonth.getTime() - result.getTime()) * fraction);
  }
 },
 TruncateTime: function(date) {
  return new Date(date.getFullYear(), date.getMonth(), date.getDate());
 },
 IsHoliday: function(dateTime, applyHolidays, applyExactWorkdays) {
  if (!this.workdaysOnly)
   return false;
  var isHoliday = (this.workdays & (1 << dateTime.getDay())) == 0;
  if (applyHolidays || applyExactWorkdays) {
   var time = new Date(dateTime.getFullYear(), dateTime.getMonth(), dateTime.getDate()).getTime();
   if (applyHolidays)
    for (holiday in this.holidays)
    if (time == this.holidays[holiday].getTime()) {
    isHoliday = true;
    break;
   }
   if (applyExactWorkdays)
    for (exactWorkDay in this.exactWorkdays)
    if (time == this.exactWorkdays[exactWorkDay].getTime()) {
    isHoliday = false;
    break;
   }
  }
  return isHoliday;
 },
 SkipHoliday: function(dateTime) {
  var result = new Date(dateTime.getTime());
  if (this.workdays == 0)
   return result;
  while (this.IsHoliday(result, true, true))
   result = this.TruncateTime(this.AddDays(result, 1));
  return result;
 },
 Floor: function(dateTime) {
  return this.FloorToDateTimeMeasureUnit(dateTime, this.measureUnit);
 },
 FloorToDateTimeMeasureUnit: function(dateTime, dateTimeMeasureUnit) {
  var result = new Date(dateTime.getTime());
  switch (dateTimeMeasureUnit) {
   case 'Year':
    result.setMonth(0, 1);
    result = this.TruncateTime(result);
    break;
   case 'Month':
    result.setDate(1);
    result = this.TruncateTime(result);
    break;
   case 'Day':
    result = this.TruncateTime(result);
    break;
   case 'Hour':
    result.setMinutes(0, 0, 0);
    break;
   case 'Minute':
    result.setSeconds(0, 0);
    break;
   case 'Second':
    result.setMilliseconds(0);
    break;
   case 'Quarter':
    result = this.GetMonth(-(result.getMonth() % 3), result);
    result.setDate(1);
    break;
   case 'Week': {
     var offset = result.getDay() - this.startDate.getDay();
     result = this.TruncateTime(this.AddDays(result, -(offset >= 0 ? offset : (offset + 7))));
     break;
    }
  }
  return result;
 },
 Round: function(dateTime) {
  if (this.measureUnit != 'Millisecond') {
   if (dateTime.getMilliseconds() >= 500)
    dateTime.setSeconds(dateTime.getSeconds() + 1);
   dateTime.setMilliseconds(0);
   if (this.measureUnit != 'Second') {
    if (dateTime.getSeconds() >= 30)
     dateTime.setMinutes(dateTime.getMinutes() + 1);
    dateTime.setSeconds(0);
    if (this.measureUnit != 'Minute') {
     if (dateTime.getMinutes() >= 30)
      dateTime.setHours(dateTime.getHours() + 1);
     dateTime.setMinutes(0);
     if (this.measureUnit != 'Hour') {
      if (dateTime.getHours() >= 12)
       dateTime.setDate(dateTime.getDate() + 1);
      dateTime.setHours(0);
      if (this.measureUnit != 'Day') {
       if (this.measureUnit == 'Week') {
        var date = dateTime.getDate() - dateTime.getDay() + this.startDate.getDay();
        if (dateTime.getDay() >= this.startDate.getDay())
         dateTime.setDate(date);
        else
         dateTime.setDate(date - 7);
       }
       else {
        var half;
        if (dateTime.getMonth() == 2)
         half = 15;
        else
         half = 16;
        if (dateTime.getDate() >= half)
         dateTime.setMonth(dateTime.getMonth() + 1);
        dateTime.setDate(1);
        if (this.measureUnit != 'Month') {
         if (this.measureUnit == 'Quarter')
          dateTime.setMonth(Math.floor(dateTime.getMonth() / 3) * 3);
         else if (this.measureUnit == 'Year') {
          if (dateTime.getMonth() >= 6)
           dateTime.setFullYear(dateTime.getFullYear() + 1);
          dateTime.setMonth(0);
         }
         else
          return initialDate;
        }
       }
      }
     }
    }
   }
  }
  return dateTime;
 },
 AddUnits: function(range, factor) {
  range *= factor;
  var integerRange = Math.floor(range);
  var remain = range - integerRange;
  var result = this.GetMonth(integerRange, this.startDate);
  var daysInMonth = this.GetTotalDays(result, this.GetMonth(1, result));
  if (this.workdaysOnly) {
   var dayCount = 0;
   var currentDate = new Date(result.getTime());
   for (var i = 0; i < daysInMonth; i++) {
    if (!this.IsHoliday(currentDate, true, true))
     dayCount++;
    currentDate = this.AddDays(currentDate, 1);
   }
   remain *= dayCount;
   while (remain >= 0.5) {
    if (!this.IsHoliday(result, true, true))
     remain -= 1;
    result = this.AddDays(result, 1);
   }
   if (remain > 0)
    while (this.IsHoliday(result, true, true))
    result = this.AddDays(result, 1);
   return this.SkipHoliday(this.AddDays(result, remain));
  }
  else
   return this.AddDays(result, daysInMonth * remain);
 },
 CorrectRangeBasedOnHolidays: function(range, multiplier) {
  if (range == 0 || this.holidaysCount == 7)
   return range;
  var fromDate = this.TruncateTime(this.startDate);
  var actualDate = new Date(fromDate.getTime());
  var dayRange = Math.floor((range + (this.startDate.getTime() - actualDate.getTime()) / (1000 * 60 * 60 * 24) * multiplier) / multiplier);
  var remain = range - (dayRange * multiplier);
  if (dayRange > 0) {
   var fullWeeks = Math.floor(dayRange / this.workdaysCount);
   var remainWeekDays = dayRange % this.workdaysCount;
   for (; remainWeekDays > 0; ) {
    if (this.IsHoliday(actualDate, false, false))
     dayRange++;
    else
     remainWeekDays--;
    actualDate = this.AddDays(actualDate, 1);
   }
   dayRange += fullWeeks * this.holidaysCount;
   actualDate = this.AddDays(fromDate, dayRange);
   while (this.IsHoliday(actualDate, false, false)) {
    dayRange++;
    actualDate = this.AddDays(actualDate, 1);
   }
   for (holiday in this.holidays) {
    var holidayDate = this.holidays[holiday];
    if (holidayDate >= fromDate && holidayDate <= actualDate && !this.IsHoliday(holidayDate, false, false))
     do {
     dayRange++;
     actualDate = this.AddDays(actualDate, 1);
    } while (this.IsHoliday(actualDate, false, false));
   }
   for (workday in this.exactWorkdays) {
    var workDate = this.exactWorkdays[workday];
    if (workDate >= fromDate && workDate <= actualDate && this.IsHoliday(workDate, true, false))
     do {
     dayRange--;
     actualDate = this.AddDays(actualDate, -1);
    } while (this.IsHoliday(actualDate, true, true));
   }
   range = dayRange * multiplier + remain;
  }
  else {
   var fullWeeks = Math.ceil(dayRange / this.workdaysCount);
   var remainWeekDays = dayRange % this.workdaysCount;
   for (; remainWeekDays < 0; ) {
    if (this.IsHoliday(actualDate, false, false))
     dayRange--;
    else
     remainWeekDays++;
    actualDate = this.AddDays(actualDate, -1);
   }
   dayRange += fullWeeks * this.holidaysCount;
   actualDate = this.AddDays(fromDate, dayRange);
   while (this.IsHoliday(actualDate, false, false)) {
    dayRange--;
    actualDate = this.AddDays(actualDate, -1);
   }
   var revertedHolidays = new Array();
   for (holiday in this.holidays)
    revertedHolidays.unshift(this.holidays[holiday]);
   for (holiday in revertedHolidays) {
    var holidayDate = revertedHolidays[holiday];
    if (holidayDate >= actualDate && holidayDate <= fromDate && !this.IsHoliday(holidayDate, false, false))
     do {
     dayRange--;
     actualDate = this.AddDays(actualDate, -1);
    } while (this.IsHoliday(actualDate, false, false));
   }
   for (workday in this.exactWorkdays) {
    var workDate = this.exactWorkdays[workday];
    if (workDate >= actualDate && workDate <= fromDate && this.IsHoliday(workDate, true, false))
     do {
     dayRange++;
     actualDate = this.AddDays(actualDate, 1);
    } while (this.IsHoliday(actualDate, true, true));
   }
   range = dayRange * multiplier + remain;
  }
  return range;
 },
 GetNativeValue: function(internalValue) {
  var nativeValue;
  switch (this.gridAlignment) {
   case 'Year':
    nativeValue = this.AddUnits(internalValue, 12);
    break;
   case 'Quarter':
    nativeValue = this.AddUnits(internalValue, 3);
    break;
   case 'Month':
    nativeValue = this.AddUnits(internalValue, 1);
    break;
   case 'Week':
    if (this.workdaysOnly) {
     var fullWeeks = Math.floor(internalValue);
     var remain = internalValue - fullWeeks;
     nativeValue = this.AddDays(this.startDate, fullWeeks * 7);
     var weekDaysCount = 0;
     for (var i = 0; i < 7; i++)
      if (!this.IsHoliday(this.AddDays(nativeValue, i), true, true))
      weekDaysCount++;
     remain *= weekDaysCount;
     while (remain >= 0.5) {
      if (!this.IsHoliday(nativeValue, true, true))
       remain -= 1;
      nativeValue = this.AddDays(nativeValue, 1);
     }
     nativeValue = this.SkipHoliday(this.AddDays(nativeValue, remain));
    }
    else
     nativeValue = this.GetDate(internalValue * 1000 * 60 * 60 * 24 * 7);
    break;
   case 'Day':
    if (this.workdaysOnly)
     internalValue = this.CorrectRangeBasedOnHolidays(internalValue, 1)
    nativeValue = this.AddDays(this.startDate, internalValue);
    break;
   case 'Hour':
    if (this.workdaysOnly)
     internalValue = this.CorrectRangeBasedOnHolidays(internalValue, 24)
    nativeValue = this.GetDate(internalValue * 1000 * 60 * 60);
    break;
   case 'Minute':
    if (this.workdaysOnly)
     internalValue = this.CorrectRangeBasedOnHolidays(internalValue, 24 * 60)
    nativeValue = this.GetDate(internalValue * 1000 * 60);
    break;
   case 'Second':
    if (this.workdaysOnly)
     internalValue = this.CorrectRangeBasedOnHolidays(internalValue, 24 * 60 * 60)
    nativeValue = this.GetDate(internalValue * 1000);
    break;
   case 'Millisecond':
    if (this.workdaysOnly)
     internalValue = this.CorrectRangeBasedOnHolidays(internalValue, 24 * 60 * 60 * 1000)
    nativeValue = this.GetDate(internalValue);
    break;
   default:
    nativeValue = this.GetDate(0);
    break;
  }
  return this.Round(nativeValue);
 },
 TotalUnits: function(dateTime, majorUnit) {
  var monthRounded = this.FloorToDateTimeMeasureUnit(dateTime, 'Month');
  var dayRounded = this.FloorToDateTimeMeasureUnit(dateTime, 'Day');
  var daysInMonth = this.GetTotalDays(monthRounded, this.GetMonth(1, monthRounded));
  var monthAddition;
  if (this.workdaysOnly) {
   var dayCount = 0;
   var actualDaysInMonth = 0;
   var currentDate = new Date(monthRounded.getTime());
   for (var i = 0; i < daysInMonth; i++) {
    if (!this.IsHoliday(currentDate, true, true)) {
     actualDaysInMonth++;
     if (currentDate < dayRounded)
      dayCount++;
    }
    currentDate = this.AddDays(currentDate, 1);
   }
   monthAddition = actualDaysInMonth == 0 ? 0 : (dayCount / actualDaysInMonth);
   daysInMonth = actualDaysInMonth;
  }
  else
   monthAddition = this.GetTotalDays(monthRounded, dayRounded) / daysInMonth;
  var divider = daysInMonth * 24 * 60 * 60 * 1000;
  return (monthRounded.getFullYear() * 12 + monthRounded.getMonth() - 1 + monthAddition +
    (dateTime.getTime() - dayRounded.getTime()) / divider) / majorUnit;
 },
 CorrectDifferenceBasedOnHolidays: function(value, multiplier) {
  if (this.holidaysCount == 7)
   return value;
  var actualDate = this.TruncateTime(this.startDate);
  var totalDays = Math.floor((value + this.GetTotalDays(actualDate, this.startDate) * multiplier) / multiplier);
  if (totalDays > 0) {
   var fullWeeks = Math.floor(totalDays / 7);
   value -= fullWeeks * this.holidaysCount * multiplier;
   var remainWeekDays = totalDays % 7;
   for (var i = 0; i < remainWeekDays; i++) {
    if (this.IsHoliday(actualDate, false, false))
     value -= multiplier;
    actualDate = this.AddDays(actualDate, 1);
   }
  }
  else if (totalDays < 0) {
   var fullWeeks = Math.ceil(totalDays / 7);
   value -= fullWeeks * this.holidaysCount * multiplier;
   var remainWeekDays = totalDays % 7;
   for (var i = 0; i > remainWeekDays; i--) {
    if (this.IsHoliday(actualDate, false, false))
     value += multiplier;
    actualDate = this.AddDays(actualDate, -1);
   }
  }
  actualDate = this.TruncateTime(this.startDate);
  var finishDate = this.AddDays(actualDate, totalDays);
  if (finishDate < actualDate) {
   for (holiday in this.holidays) {
    var holidayDate = this.holidays[holiday];
    if (holidayDate <= actualDate && holidayDate > finishDate && !this.IsHoliday(holidayDate, false, false))
     value += multiplier;
   }
   for (exactWorkdate in this.exactWorkdays) {
    var workDate = this.exactWorkdays[exactWorkdate];
    if (workDate <= actualDate && workDate > finishDate && this.IsHoliday(workDate, true, false))
     value -= multiplier;
   }
  }
  else {
   for (holiday in this.holidays) {
    var holidayDate = this.holidays[holiday];
    if (holidayDate >= actualDate && holidayDate < finishDate && !this.IsHoliday(holidayDate, false, false))
     value -= multiplier;
   }
   for (exactWorkdate in this.exactWorkdays) {
    var workDate = this.exactWorkdays[exactWorkdate];
    if (workDate >= actualDate && workDate < finishDate && this.IsHoliday(workDate, true, false))
     value += multiplier;
   }
  }
  return value;
 },
 GetInternalValue: function(value) {
  if (this.workdaysOnly)
   value = this.SkipHoliday(value);
  var roundedToDate = this.Floor(value);
  switch (this.gridAlignment) {
   case 'Year':
    return this.TotalUnits(roundedToDate, 12) - this.TotalUnits(this.startDate, 12);
   case 'Quarter':
    return this.TotalUnits(roundedToDate, 3) - this.TotalUnits(this.startDate, 3);
   case 'Month':
    return this.TotalUnits(roundedToDate, 1) - this.TotalUnits(this.startDate, 1);
   case 'Week': {
     if (!this.workdaysOnly)
      return (roundedToDate.getTime() - this.startDate.getTime()) / 7 / 24 / 60 / 60 / 1000;
     var roundedToWeek = this.FloorToDateTimeMeasureUnit(value, 'Week');
     var roundedToDay = this.FloorToDateTimeMeasureUnit(value, 'Day');
     var weekDaysCount = 0;
     var spentDaysCount = 0;
     var tempDate = roundedToWeek;
     for (var i = 0; i < 7; i++) {
      if (!this.IsHoliday(tempDate, true, true)) {
       weekDaysCount++;
       if (tempDate < roundedToDay)
        spentDaysCount++;
      }
      tempDate = this.AddDays(tempDate, 1);
     }
     return this.GetTotalDays(this.startDate, roundedToWeek) / 7 +
        (spentDaysCount + this.GetTotalDays(roundedToDay, value)) / weekDaysCount;
    }
   case 'Day': {
     var totalDays = this.GetTotalDays(this.startDate, roundedToDate);
     if (this.workdaysOnly)
      totalDays = this.CorrectDifferenceBasedOnHolidays(totalDays, 1);
     return totalDays;
    }
   case 'Hour': {
     var totalHours = (roundedToDate.getTime() - this.startDate.getTime()) / 60 / 60 / 1000;
     if (this.workdaysOnly)
      totalHours = this.CorrectDifferenceBasedOnHolidays(totalHours, 24);
     return totalHours;
    }
   case 'Minute': {
     var totalMinutes = (roundedToDate.getTime() - this.startDate.getTime()) / 60 / 1000;
     if (this.workdaysOnly)
      totalMinutes = this.CorrectDifferenceBasedOnHolidays(totalMinutes, 24 * 60);
     return totalMinutes;
    }
   case 'Second': {
     var totalSeconds = (roundedToDate.getTime() - this.startDate.getTime()) / 1000;
     if (this.workdaysOnly)
      totalSeconds = this.CorrectDifferenceBasedOnHolidays(totalSeconds, 24 * 60 * 60);
     return totalSeconds;
    }
   case 'Millisecond': {
     var totalMilliseconds = roundedToDate.getTime() - this.startDate.getTime();
     if (this.workdaysOnly)
      totalMilliseconds = this.CorrectDifferenceBasedOnHolidays(totalMilliseconds, 24 * 60 * 60 * 1000);
     return totalMilliseconds;
    }
   default:
    return 0;
  }
 }
});
ASPxClientAxisBase = _aspxCreateClass(ASPxClientWebChartElementNamed, {
 constructor: function(chart, diagram, interimAxis) {
  this.constructor.prototype.constructor.call(this, chart, interimAxis);
  this.diagram = diagram;
 },
 InitializeProperties: function(interimObject) {
  ASPxClientWebChartElementNamed.prototype.InitializeProperties.call(this, interimObject);
  if (!_aspxIsExists(interimObject.r))
   throw ASPxClientWebChartElement.objectModelError;
  this.range = new ASPxClientAxisRange(this.chart, this, interimObject.r);
  if (_aspxIsExists(interimObject.m))
   this.scale = this.CreateMap(interimObject.m);
  if (_aspxIsExists(interimObject.l))
   this.labelItems = this.CreateLabelItems(interimObject.l);
 },
 CreateMap: function(interimMap) {
  if (interimMap.t == "N")
   return new ASPxClientNumericalMap(interimMap);
  if (interimMap.t == "Q")
   return new ASPxClientQualitativeMap(interimMap);
  if (interimMap.t == "D")
   return new ASPxClientDateTimeMap(interimMap);
  throw ASPxClientWebChartElement.objectModelError;
 },
 CreateLabelItems: function(interimLabelItems) {
  return this.CreateArray(interimLabelItems, createLabelItem = function(chart, axis, interimLabelItem) {
   return new ASPxClientAxisLabelItem(chart, axis, interimLabelItem);
  });
 },
 GetNativeArgument: function(value) {
  return (this.scale == null) ? value : this.scale.GetNativeValue(value);
 },
 GetInternalArgument: function(value) {
  return (this.scale == null) ? value : this.scale.GetInternalValue(value);
 }
});
ASPxClientAxis2D = _aspxCreateClass(ASPxClientAxisBase, {
 constructor: function(chart, diagram, interimAxis) {
  this.constructor.prototype.constructor.call(this, chart, diagram, interimAxis);
 },
 InitializeProperties: function(interimObject) {
  ASPxClientAxisBase.prototype.InitializeProperties.call(this, interimObject);
  if (!_aspxIsExists(interimObject.t))
   throw ASPxClientWebChartElement.objectModelError;
  this.axisTitle = new ASPxClientAxisTitle(this.chart, this, interimObject.t);
  this.strips = this.CreateStrips(interimObject.s);
  this.constantLines = this.CreateConstantLines(interimObject.cl);
  this.intervals = this.CreateIntervals(interimObject.i);
  if (_aspxIsExists(interimObject.ibc))
   this.intervalBoundsCaches = new ASPxClientIntervalBoundsCache(interimObject.ibc);
  this.axisID = interimObject.id;
  if (_aspxIsExists(interimObject.cao))
   this.crosshairAxisLabelOptions = new ASPxClientCrosshairAxisLabelOptions(this.chart, interimObject.cao);
 },
 CreateStrips: function(interimStrips) {
  return this.CreateArray(interimStrips, createStrip = function(chart, axis, interimStrip) {
   return new ASPxClientStrip(chart, axis, interimStrip);
  });
 },
 CreateConstantLines: function(interimConstantLines) {
  return this.CreateArray(interimConstantLines, function(chart, axis, interimConstantLine) {
   return new ASPxClientConstantLine(chart, axis, interimConstantLine);
  });
 },
 CreateIntervals: function(interimIntervals) {
  return this.CreateArray(interimIntervals, function(chart, axis, interimInterval) {
   return new ASPxClientAxisInterval(interimInterval);
  });
 }
});
ASPxClientAxis = _aspxCreateClass(ASPxClientAxis2D, {
 constructor: function(chart, diagram, interimAxis) {
  this.constructor.prototype.constructor.call(this, chart, diagram, interimAxis);
 },
 InitializeProperties: function(interimObject) {
  ASPxClientAxis2D.prototype.InitializeProperties.call(this, interimObject);
  if (!_aspxIsExists(interimObject.ar))
   throw ASPxClientWebChartElement.objectModelError;
  this.reverse = interimObject.ar;
 }
});
ASPxClientSwiftPlotDiagramAxis = _aspxCreateClass(ASPxClientAxis2D, {
 constructor: function(chart, diagram, interimAxis) {
  this.constructor.prototype.constructor.call(this, chart, diagram, interimAxis);
 },
 InitializeProperties: function(interimObject) {
  ASPxClientAxis2D.prototype.InitializeProperties.call(this, interimObject);
 }
});
ASPxClientAxis3D = _aspxCreateClass(ASPxClientAxisBase, {
 constructor: function(chart, diagram, interimAxis) {
  this.constructor.prototype.constructor.call(this, chart, diagram, interimAxis);
 }
});
ASPxClientRadarAxis = _aspxCreateClass(ASPxClientAxisBase, {
 constructor: function(chart, diagram, interimAxis) {
  this.constructor.prototype.constructor.call(this, chart, diagram, interimAxis);
 }
});
ASPxClientAxisTitle = _aspxCreateClass(ASPxClientWebChartRequiredElement, {
 constructor: function(chart, axis, interimAxisTitle) {
  this.constructor.prototype.constructor.call(this, chart, interimAxisTitle);
  this.axis = axis;
 },
 InitializeProperties: function(interimObject) {
  if (!_aspxIsExists(interimObject.tx))
   throw ASPxClientWebChartElement.objectModelError;
  this.text = interimObject.tx;
 }
});
ASPxClientAxisLabelItem = _aspxCreateClass(ASPxClientWebChartRequiredElement, {
 constructor: function(chart, axis, interimLabelItem) {
  this.constructor.prototype.constructor.call(this, chart, interimLabelItem);
  this.axis = axis;
 },
 InitializeProperties: function(interimObject) {
  if (!_aspxIsExists(interimObject.tx) || !_aspxIsExists(interimObject.av) || !_aspxIsExists(interimObject.iv))
   throw ASPxClientWebChartElement.objectModelError;
  this.text = interimObject.tx;
  this.axisValue = interimObject.av;
  this.axisValueInternal = interimObject.iv;
 }
});
ASPxClientAxisRange = _aspxCreateClass(ASPxClientWebChartRequiredElement, {
 constructor: function(chart, axis, interimRange) {
  this.constructor.prototype.constructor.call(this, chart, interimRange);
  this.axis = axis;
 },
 InitializeProperties: function(interimObject) {
  if (!_aspxIsExists(interimObject.ii) || !_aspxIsExists(interimObject.ia))
   throw ASPxClientWebChartElement.objectModelError;
  this.minValue = interimObject.mi;
  this.maxValue = interimObject.ma;
  this.minValueInternal = interimObject.ii;
  this.maxValueInternal = interimObject.ia;
 }
});
ASPxClientAxisInterval = _aspxCreateClass(null, {
 constructor: function(interimInterval) {
  this.minLimit = interimInterval.mi;
  this.maxLimit = interimInterval.ma;
 },
 GetInternalValue: function(ratio) {
  return this.minLimit + (this.maxLimit - this.minLimit) * ratio;
 }
});
ASPxClientIntervalBoundsCache = _aspxCreateClass(null, {
 constructor: function(interimCache) {
  this.items = this.CreateItems(interimCache.i);
 },
 CreateItems: function(interimItems) {
  var result = new Array();
  for (var i = 0; i < interimItems.length; i++)
   result.push(new ASPxClientIntervalBoundsCacheItem(interimItems[i]));
  return result;
 },
 GetIntervalBoundsCacheItemByPaneID: function(paneID) {
  for (var i = 0; i < this.items.length; i++)
   if (this.items[i].paneID == paneID)
   return this.items[i];
  return null;
 }
});
ASPxClientIntervalBoundsCacheItem = _aspxCreateClass(null, {
 constructor: function(interimCacheItem) {
  this.paneID = interimCacheItem.pid;
  this.intervalBoundsArray = this.CreateIntervalBoundsArray(interimCacheItem.ibl);
 },
 CreateIntervalBoundsArray: function(interimIntervalBoundsArray) {
  var result = new Array();
  for (var i = 0; i < interimIntervalBoundsArray.length; i++)
   result.push(new ASPxClientIntervalBounds(interimIntervalBoundsArray[i]));
  return result;
 },
 GetIntervalBoundsIndexByLocation: function(location) {
  for (var i = 0; i < this.intervalBoundsArray.length; i++)
   if (location >= this.intervalBoundsArray[i].position && location <= this.intervalBoundsArray[i].highBound)
   return i;
  return -1;
 }
});
ASPxClientIntervalBounds = _aspxCreateClass(null, {
 constructor: function(interimBounds) {
  this.position = interimBounds.p;
  this.length = interimBounds.l;
  this.highBound = this.position + this.length;
 }
});
ASPxClientStrip = _aspxCreateClass(ASPxClientWebChartElementNamed, {
 constructor: function(chart, axis, interimStrip) {
  this.constructor.prototype.constructor.call(this, chart, interimStrip);
  this.axis = axis;
 },
 InitializeProperties: function(interimObject) {
  ASPxClientWebChartElementNamed.prototype.InitializeProperties.call(this, interimObject);
  if (_aspxIsExists(interimObject.mi))
   this.minValue = interimObject.mi;
  if (_aspxIsExists(interimObject.ma))
   this.maxValue = interimObject.ma;
 }
});
ASPxClientConstantLine = _aspxCreateClass(ASPxClientWebChartElementNamed, {
 constructor: function(chart, axis, interimConstantLine) {
  this.constructor.prototype.constructor.call(this, chart, interimConstantLine);
  this.axis = axis;
 },
 InitializeProperties: function(interimObject) {
  ASPxClientWebChartElementNamed.prototype.InitializeProperties.call(this, interimObject);
  if (!_aspxIsExists(interimObject.v))
   throw ASPxClientWebChartElement.objectModelError;
  this.value = interimObject.v;
  this.title = _aspxIsExists(interimObject.ti) ? interimObject.ti : "";
 }
});
ASPxClientSeries = _aspxCreateClass(ASPxClientWebChartElementNamed, {
 constructor: function(chart, interimSeries) {
  this.constructor.prototype.constructor.call(this, chart, interimSeries);
 },
 InitializeProperties: function(interimObject) {
  ASPxClientWebChartElementNamed.prototype.InitializeProperties.call(this, interimObject);
  this.viewType = _aspxIsExists(interimObject.v) ? interimObject.v : "Bar";
  this.argumentScaleType = _aspxIsExists(interimObject.as) ? interimObject.as : "Qualitative";
  this.valueScaleType = _aspxIsExists(interimObject.vs) ? interimObject.vs : "Numerical";
  if (_aspxIsExists(interimObject.ax))
   this.axisX = interimObject.ax;
  if (_aspxIsExists(interimObject.ay))
   this.axisY = interimObject.ay;
  if (_aspxIsExists(interimObject.pa))
   this.pane = interimObject.pa;
  this.visible = !_aspxIsExists(interimObject.nvi);
  this.toolTipEnabled = _aspxIsExists(interimObject.tte);
  this.toolTipText = interimObject.st;
  this.toolTipImage = interimObject.tti;
  this.label = new ASPxClientSeriesLabel(this.chart, this, interimObject.l);
  this.points = this.CreatePoints(interimObject.p);
  if (_aspxIsExists(interimObject.ti))
   this.titles = this.CreateTitles(interimObject.ti);
  if (_aspxIsExists(interimObject.id))
   this.indicators = this.CreateIndicators(interimObject.id);
  this.regressionLines = this.indicators;
  this.trendLines = this.indicators;
  this.fibonacciIndicators = this.indicators;
  if (_aspxIsExists(interimObject.scc)) {
   this.color = interimObject.scc;
  }
  if (_aspxIsExists(interimObject.sg))
   this.stackedGroup = interimObject.sg;
  if (_aspxIsExists(interimObject.clp)) {
   this.crosshairLabelPattern = interimObject.clp;
  }
  this.groupedElementsPattern = _aspxIsExists(interimObject.gep) ? interimObject.gep : "";
  this.crosshairValueItems = this.CreateCrosshairValueItemsArray(interimObject.cvi);
  if (_aspxIsExists(interimObject.ace)) {
   this.actualCrosshairEnabled = interimObject.ace;
  }
  if (_aspxIsExists(interimObject.aclv)) {
   this.actualCrosshairLabelVisibility = interimObject.aclv;
  }
  if (_aspxIsExists(interimObject.is)) {
   this.invertedStep = interimObject.is;
  }
 },
 CreatePoints: function(interimPoints) {
  return this.CreateArray(interimPoints, createPoint = function(chart, series, interimPoint) {
   return new ASPxClientSeriesPoint(chart, series, interimPoint);
  });
 },
 CreateCrosshairValueItemsArray: function(interimValueItems) {
  return this.CreateArray(interimValueItems, createValueItem = function(chart, series, interimValueItem) {
   return new ASPxClientCrosshairValueItem(interimValueItem);
  });
 },
 CreateTitles: function(interimTitles) {
  return this.CreateArray(interimTitles, createTitle = function(chart, series, interimTitle) {
   return new ASPxClientSeriesTitle(chart, series, interimTitle);
  });
 },
 CreateIndicators: function(interimIndicators) {
  return this.CreateArray(interimIndicators, createIndicator = function(chart, series, interimIndicator) {
   if (interimIndicator.t == "RL")
    return new ASPxClientRegressionLine(chart, series, interimIndicator);
   if (interimIndicator.t == "TL")
    return new ASPxClientTrendLine(chart, series, interimIndicator);
   if (interimIndicator.t == "FI")
    return new ASPxClientFibonacciIndicator(chart, series, interimIndicator);
   if (interimIndicator.t == "SMA")
    return new ASPxClientSimpleMovingAverage(chart, series, interimIndicator);
   if (interimIndicator.t == "EMA")
    return new ASPxClientExponentialMovingAverage(chart, series, interimIndicator);
   if (interimIndicator.t == "WMA")
    return new ASPxClientWeightedMovingAverage(chart, series, interimIndicator);
   if (interimIndicator.t == "TMA")
    return new ASPxClientTriangularMovingAverage(chart, series, interimIndicator);
   throw ASPxClientWebChartElement.objectModelError;
  });
 }
});
ASPxClientSeriesLabel = _aspxCreateClass(ASPxClientWebChartElement, {
 constructor: function(chart, series, interimSeriesLabel) {
  this.constructor.prototype.constructor.call(this, chart, interimSeriesLabel);
  this.series = series;
 },
 InitializeProperties: function(interimObject) {
 },
 InitializeDefault: function() {
  this.text = "";
 }
});
ASPxClientSeriesPoint = _aspxCreateClass(ASPxClientWebChartRequiredElement, {
 constructor: function(chart, series, interimSeriesPoint) {
  this.constructor.prototype.constructor.call(this, chart, interimSeriesPoint);
  this.series = series;
 },
 InitializeProperties: function(interimObject) {
  if (!_aspxIsExists(interimObject.x) || !_aspxIsExists(interimObject.y) || !(interimObject.y instanceof Array))
   throw ASPxClientWebChartElement.objectModelError;
  this.argument = interimObject.x;
  this.values = interimObject.y;
  this.toolTipText = interimObject.pt;
  if (_aspxIsExists(interimObject.pcc)) {
   this.color = interimObject.pcc;
  }
  if (_aspxIsExists(interimObject.pv)) {
   this.percentValue = interimObject.pv;
  }
  if (_aspxIsExists(interimObject.h)) {
   this.toolTipHint = interimObject.h;
  }
  if (_aspxIsExists(interimObject.chv)) {
   this.crosshairValues = interimObject.chv;
  }
  if (_aspxIsExists(interimObject.o)) {
   this.offset = interimObject.o;
  }
  if (_aspxIsExists(interimObject.fo)) {
   this.fixedOffset = interimObject.fo;
  }
  if (_aspxIsExists(interimObject.bw)) {
   this.barWidth = interimObject.bw;
  }
  if (_aspxIsExists(interimObject.ie)) {
   this.isEmpty = interimObject.ie;
  }
 }
});
ASPxClientLegend = _aspxCreateClass(ASPxClientWebChartEmptyElement, {
 constructor: function(chart, interimLegend) {
  this.constructor.prototype.constructor.call(this, chart, interimLegend);
 }
});
ASPxClientTitleBase = _aspxCreateClass(ASPxClientWebChartRequiredElement, {
 constructor: function(chart, interimTitle) {
  this.constructor.prototype.constructor.call(this, chart, interimTitle);
 },
 InitializeProperties: function(interimObject) {
  if (!_aspxIsExists(interimObject.l) || !(interimObject.l instanceof Array))
   throw ASPxClientWebChartElement.objectModelError;
  this.lines = interimObject.l;
  this.alignment = interimObject.a;
  this.dock = interimObject.d;
 }
});
ASPxClientChartTitle = _aspxCreateClass(ASPxClientTitleBase, {
 constructor: function(chart, interimChartTitle) {
  this.constructor.prototype.constructor.call(this, chart, interimChartTitle);
 }
});
ASPxClientSeriesTitle = _aspxCreateClass(ASPxClientTitleBase, {
 constructor: function(chart, series, interimSeriesTitle) {
  this.constructor.prototype.constructor.call(this, chart, interimSeriesTitle);
  this.series = series;
 }
});
ASPxClientIndicator = _aspxCreateClass(ASPxClientWebChartElementNamed, {
 constructor: function(chart, series, interimIndicator) {
  this.constructor.prototype.constructor.call(this, chart, interimIndicator);
  this.series = series;
 },
 InitializeProperties: function(interimObject) {
  ASPxClientWebChartElementNamed.prototype.InitializeProperties.call(this, interimObject);
 }
});
ASPxClientFinancialIndicator = _aspxCreateClass(ASPxClientIndicator, {
 constructor: function(chart, series, interimFinancialIndicator) {
  this.constructor.prototype.constructor.call(this, chart, series, interimFinancialIndicator);
 },
 InitializeProperties: function(interimObject) {
  ASPxClientIndicator.prototype.InitializeProperties.call(this, interimObject);
  if (!_aspxIsExists(interimObject.p1) || !_aspxIsExists(interimObject.p2))
   throw ASPxClientWebChartElement.objectModelError;
  this.point1 = new ASPxClientFinancialIndicatorPoint(this.chart, this, interimObject.p1);
  this.point2 = new ASPxClientFinancialIndicatorPoint(this.chart, this, interimObject.p2);
 }
});
ASPxClientTrendLine = _aspxCreateClass(ASPxClientFinancialIndicator, {
 constructor: function(chart, series, interimTrendLine) {
  this.constructor.prototype.constructor.call(this, chart, series, interimTrendLine);
 }
});
ASPxClientFibonacciIndicator = _aspxCreateClass(ASPxClientFinancialIndicator, {
 constructor: function(chart, series, interimFibonacciIndicator) {
  this.constructor.prototype.constructor.call(this, chart, series, interimFibonacciIndicator);
 }
});
ASPxClientFinancialIndicatorPoint = _aspxCreateClass(ASPxClientWebChartRequiredElement, {
 constructor: function(chart, financialIndicator, interimFinancialIndicatorPoint) {
  this.constructor.prototype.constructor.call(this, chart, interimFinancialIndicatorPoint);
  this.financialIndicator = financialIndicator;
 },
 InitializeProperties: function(interimObject) {
  if (!_aspxIsExists(interimObject.a) || !_aspxIsExists(interimObject.vl))
   throw ASPxClientWebChartElement.objectModelError;
  this.argument = interimObject.a;
  this.valueLevel = interimObject.vl;
 }
});
ASPxClientSingleLevelIndicator = _aspxCreateClass(ASPxClientIndicator, {
 constructor: function(chart, series, interimIndicator) {
  this.constructor.prototype.constructor.call(this, chart, series, interimIndicator);
 },
 InitializeProperties: function(interimObject) {
  ASPxClientIndicator.prototype.InitializeProperties.call(this, interimObject);
  if (!_aspxIsExists(interimObject.vl))
   throw ASPxClientWebChartElement.objectModelError;
  this.valueLevel = interimObject.vl;
 }
});
ASPxClientRegressionLine = _aspxCreateClass(ASPxClientSingleLevelIndicator, {
 constructor: function(chart, series, interimRegressionLine) {
  this.constructor.prototype.constructor.call(this, chart, series, interimRegressionLine);
 }
});
ASPxClientMovingAverage = _aspxCreateClass(ASPxClientSingleLevelIndicator, {
 constructor: function(chart, series, interimMovingAverage) {
  this.constructor.prototype.constructor.call(this, chart, series, interimMovingAverage);
 },
 InitializeProperties: function(interimObject) {
  ASPxClientSingleLevelIndicator.prototype.InitializeProperties.call(this, interimObject);
  if (!_aspxIsExists(interimObject.pc) || !_aspxIsExists(interimObject.ki))
   throw ASPxClientWebChartElement.objectModelError;
  this.pointsCount = interimObject.pc;
  this.kind = interimObject.ki;
  if (this.kind == "Envelope" || this.kind == "MovingAverageAndEnvelope") {
   if (!_aspxIsExists(interimObject.ep))
    throw ASPxClientWebChartElement.objectModelError;
   this.envelopePercent = interimObject.ep;
  }
 }
});
ASPxClientSimpleMovingAverage = _aspxCreateClass(ASPxClientMovingAverage, {
 constructor: function(chart, series, interimMovingAverage) {
  this.constructor.prototype.constructor.call(this, chart, series, interimMovingAverage);
 }
});
ASPxClientExponentialMovingAverage = _aspxCreateClass(ASPxClientMovingAverage, {
 constructor: function(chart, series, interimMovingAverage) {
  this.constructor.prototype.constructor.call(this, chart, series, interimMovingAverage);
 }
});
ASPxClientWeightedMovingAverage = _aspxCreateClass(ASPxClientMovingAverage, {
 constructor: function(chart, series, interimMovingAverage) {
  this.constructor.prototype.constructor.call(this, chart, series, interimMovingAverage);
 }
});
ASPxClientTriangularMovingAverage = _aspxCreateClass(ASPxClientMovingAverage, {
 constructor: function(chart, series, interimMovingAverage) {
  this.constructor.prototype.constructor.call(this, chart, series, interimMovingAverage);
 }
});
ASPxClientAnnotation = _aspxCreateClass(ASPxClientWebChartElementNamed, {
 constructor: function(chart, interimAnnotation) {
  this.constructor.prototype.constructor.call(this, chart, interimAnnotation);
 },
 InitializeProperties: function(interimObject) {
  ASPxClientWebChartElementNamed.prototype.InitializeProperties.call(this, interimObject);
 }
});
ASPxClientTextAnnotation = _aspxCreateClass(ASPxClientAnnotation, {
 constructor: function(chart, interimTextAnnotation) {
  this.constructor.prototype.constructor.call(this, chart, interimTextAnnotation);
 },
 InitializeProperties: function(interimObject) {
  ASPxClientAnnotation.prototype.InitializeProperties.call(this, interimObject);
  if (!_aspxIsExists(interimObject.l) || !(interimObject.l instanceof Array))
   throw ASPxClientWebChartElement.objectModelError;
  this.lines = interimObject.l;
 }
});
ASPxClientImageAnnotation = _aspxCreateClass(ASPxClientAnnotation, {
 constructor: function(chart, interimImageAnnotation) {
  this.constructor.prototype.constructor.call(this, chart, interimImageAnnotation);
 },
 InitializeProperties: function(interimObject) {
  ASPxClientAnnotation.prototype.InitializeProperties.call(this, interimObject);
 }
});
ASPxClientCrosshairValueItem = _aspxCreateClass(null, {
 constructor: function(interimObject) {
  this.value = interimObject.v;
  this.pointIndex = interimObject.pi;
 }
});
ASPxClientToolTipController = _aspxCreateClass(ASPxClientWebChartEmptyElement, {
 constructor: function(chart, interimToolTipController) {
  this.constructor.prototype.constructor.call(this, chart, interimToolTipController);
  this.showImage = interimToolTipController.si;
  this.showText = interimToolTipController.st;
  this.imagePosition = interimToolTipController.ip;
  this.openMode = interimToolTipController.om;
  this.toolTipObject = null;
  this.toolTip = null;
 },
 Show: function(x, y, hitInfo, htmlElementX, htmlElementY) {
  var newObject = null;
  if (hitInfo.seriesPoint != null && this.chart.showPointToolTip) {
   newObject = hitInfo.seriesPoint;
  }
  else {
   if (hitInfo.series != null && this.chart.showSeriesToolTip) {
    newObject = hitInfo.series;
   }
  }
  if (this.toolTipObject != newObject) {
   this.toolTipObject = newObject;
   if (this.toolTipObject == null) {
    this.Hide();
    return;
   }
   var series = hitInfo.series != null ? hitInfo.series : hitInfo.seriesPoint.series;
   if (!series.toolTipEnabled) {
    this.Hide();
    return;
   }
   var showForPoint = hitInfo.inSeriesPoint && this.chart.showPointToolTip;
   var showForSeries = !hitInfo.inSeriesPoint && hitInfo.inSeries && this.chart.showSeriesToolTip;
   if (showForPoint || showForSeries) {
    if (this.toolTip == null) {
     this.toolTip = __aspxCreateChartToolTip(this.chart.chartControl, __aspxChartToolTipID, 0);
    }
    if (showForPoint) {
     var image = series != null ? series.toolTipImage : null;
     this.setToolTipContent(image, this.toolTipObject.toolTipText);
     this.showToolTip(x, y, hitInfo, htmlElementX, htmlElementY);
     return;
    }
    if (showForSeries) {
     this.setToolTipContent(this.toolTipObject.toolTipImage, this.toolTipObject.toolTipText);
     this.showToolTip(x, y, hitInfo, htmlElementX, htmlElementY);
     return;
    }
   }
   this.toolTipObject = null;
  }
 },
 Hide: function() {
  if (this.toolTip != null) {
   __aspxRemoveChartDiv(this.chart.chartControl, __aspxChartToolTipID, 0);
   this.toolTip = null;
   this.toolTipObject = null;
  }
 },
 getImageHTML: function(image) {
  return "<img src='" + image + "' />";
 },
 getVerticalTable: function(cell1, cell2) {
  return "<table><tr><td>" + cell1 + "</td></tr><tr><td>" + cell2 + "</td></tr></table>";
 },
 setToolTipContent: function(image, text) {
  var toolTipContent = "";
  if (this.showText && this.showImage && image != null) {
   var imageHTML = this.getImageHTML(image);
   switch (this.imagePosition) {
    case "Right":
     toolTipContent = __aspxChartGetHorizontalTable(text, imageHTML);
     break;
    case "Top":
     toolTipContent = this.getVerticalTable(imageHTML, text);
     break;
    case "Bottom":
     toolTipContent = this.getVerticalTable(text, imageHTML);
     break;
    default:
     toolTipContent = __aspxChartGetHorizontalTable(imageHTML, text);
     break;
   }
  }
  else if (this.showImage && image != null) {
   toolTipContent = this.getImageHTML(image);
  }
  else if (this.showText) {
   toolTipContent = text;
  }
  this.toolTip.innerHTML = toolTipContent;
 },
 showToolTip: function(x, y, hitInfo, htmlElementX, htmlElementY) {
  if (this.chart.toolTipPosition instanceof ASPxClientToolTipMousePosition) {
   __aspxChartSetDivPosition(this.toolTip, x, y);
   return;
  }
  if (this.chart.toolTipPosition instanceof ASPxClientToolTipFreePosition) {
   __aspxShowInFreePosition(this.toolTip, this.chart, this.chart.toolTipPosition, htmlElementX, htmlElementY);
   return;
  }
  if (this.chart.toolTipPosition instanceof ASPxClientToolTipRelativePosition) {
   this.showToolTipInRelativePosition(x, y, hitInfo, htmlElementX, htmlElementY);
  }
 },
 showToolTipInRelativePosition: function(x, y, hitInfo, htmlElementX, htmlElementY) {
  var left;
  var top;
  if (hitInfo.seriesPoint != null && !hitInfo.inLegend) {
   left = htmlElementX + hitInfo.seriesPoint.toolTipPoint[0] - this.toolTip.clientWidth / 2 + this.chart.toolTipPosition.offsetX;
   top = htmlElementY + hitInfo.seriesPoint.toolTipPoint[1] - this.toolTip.clientHeight + this.chart.toolTipPosition.offsetY;
  }
  else {
   left = x + this.chart.toolTipPosition.offsetX;
   top = y + this.chart.toolTipPosition.offsetY;
  }
  __aspxChartSetDivPosition(this.toolTip, left, top);
 }
});
ASPxClientToolTipPosition = _aspxCreateClass(null, {
 constructor: function(interimObject) {
 }
});
ASPxClientToolTipMousePosition = _aspxCreateClass(ASPxClientToolTipPosition, {
 constructor: function(interimObject) {
  this.constructor.prototype.constructor.call(this, interimObject);
 }
});
ASPxClientToolTipRelativePosition = _aspxCreateClass(ASPxClientToolTipPosition, {
 constructor: function(interimObject) {
  this.constructor.prototype.constructor.call(this, interimObject);
  this.offsetX = interimObject.ox;
  this.offsetY = interimObject.oy;
 }
});
ASPxClientToolTipFreePosition = _aspxCreateClass(ASPxClientToolTipPosition, {
 constructor: function(interimObject) {
  this.constructor.prototype.constructor.call(this, interimObject);
  this.offsetX = interimObject.ox;
  this.offsetY = interimObject.oy;
  this.paneID = interimObject.dt;
  this.dockPosition = interimObject.dp;
 }
});
ASPxClientCrosshairPosition = _aspxCreateClass(null, {
 constructor: function(interimObject) {
  this.offsetX = interimObject.ox;
  this.offsetY = interimObject.oy;
 }
});
ASPxClientCrosshairMousePosition = _aspxCreateClass(ASPxClientCrosshairPosition, {
 constructor: function(interimObject) {
  this.constructor.prototype.constructor.call(this, interimObject);
 }
});
ASPxClientCrosshairFreePosition = _aspxCreateClass(ASPxClientCrosshairPosition, {
 constructor: function(interimObject) {
  this.constructor.prototype.constructor.call(this, interimObject);
  this.paneID = interimObject.dt;
  this.dockPosition = interimObject.dp;
 }
});
ASPxClientLineStyle = _aspxCreateClass(ASPxClientWebChartElement, {
 constructor: function(chart, interimLineStyle) {
  this.constructor.prototype.constructor.call(this, chart, interimLineStyle);
 },
 InitializeProperties: function(interimObject) {
  this.dashStyle = interimObject.ds;
  this.thickness = interimObject.th;
 }
});
ASPxClientCrosshairOptions = _aspxCreateClass(ASPxClientWebChartEmptyElement, {
 constructor: function(chart, interimObject) {
  this.constructor.prototype.constructor.call(this, chart, interimObject);
  this.showArgumentLabels = interimObject.sx;
  this.showValueLabels = interimObject.sy;
  this.showCrosshairLabels = interimObject.sl;
  this.showArgumentLine = interimObject.sxl;
  this.showValueLine = interimObject.syl;
  this.showOnlyInFocusedPane = interimObject.sfp;
  this.snapMode = interimObject.sm;
  this.crosshairLabelMode = interimObject.lm;
  this.showGroupHeaders = interimObject.sgh;
  this.groupHeaderPattern = _aspxIsExists(interimObject.ghp) ? interimObject.ghp : "";
  if (_aspxIsExists(interimObject.clp)) {
   this.crosshairLabelPosition = this.CreateCrosshairPosition(interimObject.clp);
  }
  if (_aspxIsExists(interimObject.alc)) {
   this.argumentLineColor = interimObject.alc;
  }
  if (_aspxIsExists(interimObject.vlc)) {
   this.valueLineColor = interimObject.vlc;
  }
  if (_aspxIsExists(interimObject.als)) {
   this.argumentLineStyle = new ASPxClientLineStyle(chart, interimObject.als);
  }
  if (_aspxIsExists(interimObject.vls)) {
   this.valueLineStyle = new ASPxClientLineStyle(chart, interimObject.vls);
  }
 },
 CreateCrosshairPosition: function(interimPosition) {
  if (interimPosition.t == "CFP")
   return new ASPxClientCrosshairFreePosition(interimPosition);
  else if (interimPosition.t == "CMP")
   return new ASPxClientCrosshairMousePosition(interimPosition);
  return null;
 }
});
ASPxClientAxisLabelBounds = _aspxCreateClass(ASPxClientWebChartEmptyElement, {
 constructor: function(chart, interimObject) {
  this.constructor.prototype.constructor.call(this, chart, interimObject);
  this.axisName = interimObject.an;
  this.left = interimObject.ll;
  this.top = interimObject.lt;
  this.height = interimObject.lh;
  this.width = interimObject.lw;
 }
});
ASPxClientFont = _aspxCreateClass(ASPxClientWebChartEmptyElement, {
 constructor: function(chart, interimObject) {
  this.constructor.prototype.constructor.call(this, chart, interimObject);
  this.fontSize = interimObject.fs;
  this.fontFamily = interimObject.ff;
 }
});
ASPxClientCrosshairAxisLabelOptions = _aspxCreateClass(ASPxClientWebChartEmptyElement, {
 constructor: function(chart, interimObject) {
  this.constructor.prototype.constructor.call(this, chart, interimObject);
  if (_aspxIsExists(interimObject.clp)) {
   this.pattern = interimObject.clp;
  }
  this.visibility = interimObject.clv;
  if (_aspxIsExists(interimObject.clbc)) {
   this.backColor = interimObject.clbc;
  }
  if (_aspxIsExists(interimObject.cltc)) {
   this.textColor = interimObject.cltc;
  }
  if (_aspxIsExists(interimObject.clf)) {
   this.font = new ASPxClientFont(chart, interimObject.clf);
  }
 }
});�4function ChartHitRectangle(left, top, right, bottom) {
 this.left = left;
 this.top = top;
 this.right = right;
 this.bottom = bottom;
}
ChartHitRectangle.prototype = {
 IsVisible: function(x, y) {
  return (x >= this.left) && (x < this.right) && (y >= this.top) && (y < this.bottom);
 }
}
ChartHitRectangle.prototype.constructor = ChartHitRectangle;
function ChartHitEmpty() {
}
ChartHitEmpty.prototype = {
 IsVisible: function(x, y) {
  return false;
 } 
}
ChartHitEmpty.prototype.constructor = ChartHitEmpty;
function ChartHitExpression(leftOperand, rightOperand) {
 if(ChartHitExpression.AsProrotype)
  return delete ChartHitExpression.AsProrotype;
 this.leftOperand = leftOperand;
 this.rightOperand = rightOperand;
}
ChartHitExpression.prototype = {
 IsVisible: function(x, y) {
  throw "ChartHitExpression abstract error";
 }
}
ChartHitExpression.prototype.constructor = ChartHitExpression;
function ChartHitUnion(leftOperand, rightOperand) {
 ChartHitExpression.call(this, leftOperand, rightOperand);
}
ChartHitExpression.AsPrototype = true;
ChartHitUnion.prototype = new ChartHitExpression();
ChartHitUnion.prototype.constructor = ChartHitUnion;
ChartHitUnion.prototype.IsVisible = function(x, y) {
 return this.leftOperand.IsVisible(x, y) || this.rightOperand.IsVisible(x, y);
}
function ChartHitIntersection(leftOperand, rightOperand) {
 ChartHitExpression.call(this, leftOperand, rightOperand);
}
ChartHitExpression.AsPrototype = true;
ChartHitIntersection.prototype = new ChartHitExpression();
ChartHitIntersection.prototype.constructor = ChartHitIntersection;
ChartHitIntersection.prototype.IsVisible = function(x, y) {
 return this.leftOperand.IsVisible(x, y) && this.rightOperand.IsVisible(x, y);
}
function ChartHitExclusion(leftOperand, rightOperand) {
 ChartHitExpression.call(this, leftOperand, rightOperand);
}
ChartHitExpression.AsPrototype = true;
ChartHitExclusion.prototype = new ChartHitExpression();
ChartHitExclusion.prototype.constructor = ChartHitExclusion;
ChartHitExclusion.prototype.IsVisible = function(x, y) {
 return this.leftOperand.IsVisible(x, y) && !this.rightOperand.IsVisible(x, y);
}
function ChartHitXor(leftOperand, rightOperand) {
 ChartHitExpression.call(this, leftOperand, rightOperand);
}
ChartHitExpression.AsPrototype = true;
ChartHitXor.prototype = new ChartHitExpression();
ChartHitXor.prototype.constructor = ChartHitXor;
ChartHitXor.prototype.IsVisible = function(x, y) {
 return this.leftOperand.IsVisible(x, y) ^ this.rightOperand.IsVisible(x, y);
}
function ChartHitPath(lineSegments, alternate) {
 this.lineSegments = lineSegments;
 this.alternate = alternate;
}
ChartHitPath.prototype = {
 IsVisible: function(x, y) {
  if(this.lineSegments.length == 0)
   return false;
  var isVisible = this.IsVisibleInternal(x - 0.01, y);
  if(!isVisible)
   isVisible = this.IsVisibleInternal(x + 0.01, y);
  return isVisible;
 },
 IsVisibleInternal: function(x, y) { 
  var filteredLineSegments = this.FilterLineSegments(x, y);
  if(filteredLineSegments.length == 0)
   return false;
  var xIntersections = new ChartXIntersections(filteredLineSegments, x);
  var indicator = this.CalcIndicator(filteredLineSegments, xIntersections, y);
  return this.alternate ? (indicator % 2) != 0 : indicator != 0;
 },
 FilterLineSegments: function(x, y) {
  var filteredLineSegments = new Array();
  for(var i = 0; i < this.lineSegments.length; i++) {
   var lineSegment = this.lineSegments[i];
   if(this.ShouldFilterLineSegmentByX(lineSegment, x))
    continue;
   if(this.ShouldFilterLineSegmentByY(lineSegment, y))
    continue;
   filteredLineSegments.push(lineSegment);
  }
  return filteredLineSegments;
 },
 ShouldFilterLineSegmentByX: function(lineSegment, x) {
  return ((lineSegment.startX < x) && (lineSegment.finishX < x)) || 
   ((lineSegment.startX > x) && (lineSegment.finishX > x));
 },
 ShouldFilterLineSegmentByY: function(lineSegment, y) {
  return (lineSegment.startY < y) && (lineSegment.finishY < y);
 },
 CalcIndicator: function(lineSegments, xIntersections, y) {
  var indicator = 0;
  for(var i = 0; i < xIntersections.intersections.length; i++) {
   if(xIntersections.intersections[i] < y)
    continue;
   if(lineSegments[i].LeftToRight())
    indicator++;
   else if(lineSegments[i].RightToLeft())
    indicator--;
   else
    throw ChartLineSegment.err;
  }
  return indicator;
 }
}
ChartHitPath.prototype.constructor = ChartHitPath;
function ChartLineSegment(startX, startY, finishX, finishY) {
 this.startX = startX;
 this.startY = startY;
 this.finishX = finishX;
 this.finishY = finishY;
}
ChartLineSegment.err = "Invalid line segment";
ChartLineSegment.prototype = {
 LeftToRight : function() {
  return this.startX < this.finishX;
 },
 RightToLeft : function() {
  return this.startX > this.finishX;
 }
}
ChartLineSegment.prototype.constructor = ChartLineSegment;
function ChartXIntersections(lineSegments, x) {
 this.intersections = new Array(lineSegments.length);
 for(var i = 0; i < lineSegments.length; i++)
  this.intersections[i] = this.CalcIntersection(lineSegments[i], x);
}
ChartXIntersections.prototype = {
 CalcIntersection: function(lineSegment, x) {
  var delta = lineSegment.finishX - lineSegment.startX;
  if(delta == 0)
   throw ChartLineSegment.err;
  var k = (lineSegment.finishY - lineSegment.startY) / delta;
  var b = (lineSegment.startY * lineSegment.finishX - lineSegment.finishY * lineSegment.startX) / delta;
  return k * x + b;
 }
}
ChartXIntersections.prototype.constructor = ChartXIntersections;
function ChartHitTestController(hitInfo) {
 this.objects = new Array();
 this.additionalObjects = new Array();
 var hitInfoLoader = new ChartHitInfoLoader(hitInfo);
 this.regions = hitInfoLoader.regions;
}
ChartHitTestController.prototype = {
 HitTest: function(x, y) {
  var hitRegions = this.CreateHitRegions(x, y);
  return this.CreateHitObjects(hitRegions);
 },
 CreateHitRegions: function(x, y) {
  var hitRegions = new Array();
  for(var i = 0; i < this.regions.length; i++)
   if(this.regions[i].IsVisible(x, y))
    hitRegions.push(this.regions[i]);
  return hitRegions;
 },
 CreateHitObjects: function(hitRegions) {
  var hitObjects = new Array();
  for(var i = 0; i < hitRegions.length; i++) {
   var hitRegion = hitRegions[i];
   hitObjects.push(this.CreateHitObject(hitRegion));
  }
  return hitObjects;
 },
 CreateHitObject: function(hitRegion) {
  var hitObject = this.objects[hitRegion.id];
  var additionalHitObject = 
   hitRegion.additionalId != -1 ? 
   this.additionalObjects[hitRegion.additionalId] : 
   null;
  if (_aspxIsExists(hitRegion.toolTipPoint) && additionalHitObject != null)
   additionalHitObject.toolTipPoint = hitRegion.toolTipPoint;    
  return new ASPxClientHitObject(hitObject, additionalHitObject);
 }
}
ChartHitTestController.prototype.constructor = ChartHitTestController;
function ChartHitRegion(primitive, id, additionalId, toolTipPoint) {
 this.primitive = primitive;
 this.id = id;
 this.additionalId = additionalId;
 this.toolTipPoint = toolTipPoint;
}
ChartHitRegion.prototype = {
 IsVisible: function(x, y) {
  return this.primitive.IsVisible(x, y); 
 }
}
ChartHitRegion.prototype.constructor = ChartHitRegion;
function ChartHitInfoLoader(hitInfo) {
 this.regions = new Array();
 this.LoadHitInfo(hitInfo);
}
ChartHitInfoLoader.errPrefix = "ChartHitTestController loading error: ";
ChartHitInfoLoader.errRegionType = ChartHitTestController.errPrefix + "Invalid hit region type";
ChartHitInfoLoader.errRegionFormat = ChartHitTestController.errPrefix + "Invalid hit region format";
ChartHitInfoLoader.prototype = {
 LoadHitInfo: function(hitInfo) {
  for(var i = 0; i < hitInfo.length; i++)
   this.LoadHitRegion(hitInfo[i]);
 },
 LoadHitRegion: function(interimHitRegion) {
  var id = interimHitRegion.hi;    
  var additionalId = _aspxIsExists(interimHitRegion.hia) ? interimHitRegion.hia: -1;
  var primitive = this.LoadPrimitive(interimHitRegion.r);
  var toolTipPoint = interimHitRegion.ttp;
  this.regions.unshift(new ChartHitRegion(primitive, id, additionalId, toolTipPoint));
 },
 LoadPrimitive: function(interimPrimitive) {
  if(interimPrimitive.t == "R")
   return this.LoadRectangle(interimPrimitive);
  else if(interimPrimitive.t == "O")
   return new ChartHitEmpty();
  else if(interimPrimitive.t == "U")
   return this.LoadUnion(interimPrimitive);
  else if(interimPrimitive.t == "I")
   return this.LoadIntersection(interimPrimitive);
  else if(interimPrimitive.t == "E")
   return this.LoadExclusion(interimPrimitive);
  else if(interimPrimitive.t == "X")
   return this.LoadXor(interimPrimitive);
  else if(interimPrimitive.t == "P")
   return this.LoadPath(interimPrimitive);   
  throw ChartHitInfoLoader.errRegionType;
 },
 LoadRectangle: function(interimRectangle) {
  if(interimRectangle.r.length != 4)
   throw ChartHitInfoLoader.errRegionFormat;
  return new ChartHitRectangle(interimRectangle.r[0], interimRectangle.r[1], interimRectangle.r[2], interimRectangle.r[3]);
 },
 LoadUnion: function(interimExpression) {
  var leftOperand = this.LoadPrimitive(interimExpression.l);
  var rightOperand = this.LoadPrimitive(interimExpression.r);
  return new ChartHitUnion(leftOperand, rightOperand);
 },
 LoadIntersection: function(interimExpression) {
  var leftOperand = this.LoadPrimitive(interimExpression.l);
  var rightOperand = this.LoadPrimitive(interimExpression.r);
  return new ChartHitIntersection(leftOperand, rightOperand);
 },
 LoadExclusion: function(interimExpression) {
  var leftOperand = this.LoadPrimitive(interimExpression.l);
  var rightOperand = this.LoadPrimitive(interimExpression.r);
  return new ChartHitExclusion(leftOperand, rightOperand);
 },
 LoadXor: function(interimExpression) {
  var leftOperand = this.LoadPrimitive(interimExpression.l);
  var rightOperand = this.LoadPrimitive(interimExpression.r);
  return new ChartHitXor(leftOperand, rightOperand);
 },
 LoadPath: function(interimPath) {    
  var lineSegments = new Array();
  var points = new Array();
  var bezierPoints = new Array();
  var indexInStartArray = 0;
  var indexInBezierArray = 0;
  for(var pointIndex = 0; pointIndex < interimPath.p.length; pointIndex++) {
   if(this.IsStartPoint(interimPath, pointIndex, indexInStartArray)) {
    indexInStartArray++;
    this.UpdateLineSegments(lineSegments, points);
    points.length = 0;
   }
   else if(this.IsBezierPoint(interimPath, pointIndex, indexInBezierArray)) {
    indexInBezierArray++;
    if(bezierPoints.length == 0)
     bezierPoints.push(interimPath.p[pointIndex - 1]);     
    bezierPoints.push(interimPath.p[pointIndex]);
    if(bezierPoints.length == 4) {
     this.CalcBezierApproximation(
      bezierPoints[0][0], bezierPoints[0][1], 
      bezierPoints[1][0], bezierPoints[1][1], 
      bezierPoints[2][0], bezierPoints[2][1],
      bezierPoints[3][0], bezierPoints[3][1], points);
     bezierPoints.length = 0;
    }
    continue;
   }
   points.push(interimPath.p[pointIndex]);    
  }
  this.UpdateLineSegments(lineSegments, points);
  return new ChartHitPath(lineSegments, interimPath.a);
 },
 UpdateLineSegments: function(lineSegments, points) {
  if(points.length < 2)
   return;
  for(var i = 0; i < points.length - 1; i++)
   lineSegments.push(new ChartLineSegment(
    points[i][0], 
    points[i][1], 
    points[i + 1][0], 
    points[i + 1][1]));
  lineSegments.push(new ChartLineSegment(
   points[points.length - 1][0], 
   points[points.length - 1][1], 
   points[0][0], 
   points[0][1]));  
 },
 CreatePoint: function(x, y) {
  return [x, y];
 },
 IsStartPoint: function(interimPath, pointIndex, indexInStartArray) {
  return (indexInStartArray < interimPath.s.length) && (interimPath.s[indexInStartArray] == pointIndex);
 },
 IsBezierPoint: function(interimPath, pointIndex, indexInBezierArray) {
  return (indexInBezierArray < interimPath.b.length) && (interimPath.b[indexInBezierArray] == pointIndex);
 },
 CalcBezierApproximation: function(x1, y1, x2, y2, x3, y3, x4, y4, points) {
  var dx1 = x2 - x1;
  var dy1 = y2 - y1;
  var dx2 = x3 - x2;
  var dy2 = y3 - y2;
  var dx3 = x4 - x3;
  var dy3 = y4 - y3;
  var length = Math.sqrt(dx1 * dx1 + dy1 * dy1) + Math.sqrt(dx2 * dx2 + dy2 * dy2) + Math.sqrt(dx3 * dx3 + dy3 * dy3);
  var stepCount = Math.round(length * 0.25);
  var step = 1 / (stepCount + 1);
  var step2 = step * step;
  var step3 = step * step * step;
  var step13 = step * 3;
  var step23 = step2 * 3;
  var step26 = step2 * 6;
  var step36 = step3 * 6;
  var tempX1 = x1 - x2 * 2 + x3;
  var tempY1 = y1 - y2 * 2 + y3;
  var tempX2 = (x2 - x3) * 3 - x1 + x4;
  var tempY2 = (y2 - y3) * 3 - y1 + y4;
  var dx = (x2 - x1) * step13 + tempX1 * step23 + tempX2 * step3;
  var dy = (y2 - y1) * step13 + tempY1 * step23 + tempY2 * step3;
  var ddx = tempX1 * step26 + tempX2 * step36;
  var ddy = tempY1 * step26 + tempY2 * step36;
  var dddx = tempX2 * step36;
  var dddy = tempY2 * step36;
  var x = x1;
  var y = y1;
  for(var i = 0; i < stepCount; i++) {
   x += dx;
   y += dy;
   points.push(this.CreatePoint(x, y));
   dx += ddx;
   dy += ddy;
   ddx += dddx;
   ddy += dddy;
  }
  points.push(this.CreatePoint(x4, y4));
 }
}
ChartHitInfoLoader.prototype.constructor = ChartHitInfoLoader;
��var __aspxCrosshairVDivID = "_CHV-";
var __aspxCrosshairHDivID = "_CHH-";
var __aspxCrosshairLabelID = "_CHL-";
var __aspxCrosshairVLabelID = "_CHVL-";
var __aspxCrosshairHLabelID = "_CHHL-";
var __aspxChartToolTipID = "_CTT-";
var __aspxChartToolTipClassName = "dxchartsuiTooltip";
var __aspxChartCrosshairVLineClassName = "dxchartsuiCrosshairVLine";
var __aspxChartCrosshairHLineClassName = "dxchartsuiCrosshairHLine";
var __aspxChartCrosshairLabelClassName = "dxchartsuiCrosshairLabel";
function __aspxCrosshairValueItemsComparer(arrayElement, value) {
 if (arrayElement.value == value)
  return 0;
 else
  return arrayElement.value < value ? -1 : 1;
};
function __aspxSortPointInfoByArgument(p1, p2) {
 if (p1.argument < p2.argument)
  return 1;
 if (p1.argument > p2.argument)
  return -1;
 return p1.value > p2.value ? -1 : 1;
};
function __aspxSortPointInfoByValue(p1, p2) {
 if (p1.value < p2.value)
  return 1;
 if (p1.value > p2.value)
  return -1;
 return p1.argument > p2.argument ? -1 : 1;
};
function __aspxSortCrosshairElementByValue(p1, p2) {
 if (p1.Point.value < p2.Point.value)
  return 1;
 if (p1.Point.value > p2.Point.value)
  return -1;
 return p1.Point.argument > p2.Point.argument ? -1 : 1;
};
function __aspxSortCrosshairElementByArgument(p1, p2) {
 if (p1.Point.argument < p2.Point.argument)
  return 1;
 if (p1.Point.argument > p2.Point.argument)
  return -1;
 return p1.Point.value > p2.Point.value ? -1 : 1;
};
function __aspxChartGetHorizontalTable(cell1, cell2) {
 return "<table><tr><td>" + cell1 + "</td><td>" + cell2 + "</td></tr></table>";
};
function __aspxChartGetVerticalTable(row1, row2, row3) {
 return "<table><tr><td>" + row1 + "</td></tr><tr><td>" + row2 + "</td></tr><tr><td>" + row3 + "</td></tr></table>";
};
function __aspxGetToolTipX(dockPosition, dockTargetWidth, width, dockTargetX, offset) {
 if (dockPosition.indexOf("Right") > -1) {
  return dockTargetX + dockTargetWidth - width - offset;
 }
 else {
  return dockTargetX + offset;
 }
};
function __aspxGetToolTipY(dockPosition, dockTargetHeight, height, dockTargetY, offset) {
 if (dockPosition.indexOf("Bottom") > -1) {
  return dockTargetY + dockTargetHeight - height - offset;
 }
 else {
  return dockTargetY + offset;
 }
};
function __aspxSetCssClassName(object, chartControl, className) {
 if (chartControl.chart.cssPostfix != "") {
  className += "_" + chartControl.chart.cssPostfix;
 }
 object.className = className;
};
function __aspxCreateChartDiv(chartControl, prefix, index) {
 var div = document.createElement("div");
 div.onselectstart = function() { return false; };
 div.id = __aspxGetChartDivId(chartControl, prefix, index);
 chartControl.mainElement.appendChild(div);
 return div;
};
function __aspxGetChartDivId(chartControl, prefix, index) {
 return chartControl.uniqueID + prefix + index;
};
function __aspxCreateChartToolTip(chartControl, prefix, index) {
 var div = __aspxCreateChartDiv(chartControl, prefix, index);
 __aspxSetCssClassName(div, chartControl, __aspxChartToolTipClassName);
 return div;
};
function __aspxRemoveChartDiv(chartControl, prefix, index) {
 var id = __aspxGetChartDivId(chartControl, prefix, index);
 var mainElement = chartControl.GetMainDOMElement();
 var element = _aspxGetChildById(chartControl.GetMainDOMElement(), id);
 mainElement.removeChild(element);
};
function __aspxChartSetDivPosition(div, x, y) {
 _aspxSetAbsoluteX(div, x);
 _aspxSetAbsoluteY(div, y);
};
function __aspxShowInFreePosition(div, chart, position, htmlElementX, htmlElementY) {
 var left;
 var top;
 if (_aspxIsExists(position.paneID) && chart.diagram instanceof ASPxClientXYDiagram2D) {
  var pane = chart.diagram.FindPaneByID(position.paneID);
  if (_aspxIsExists(pane)) {
   left = __aspxGetToolTipX(position.dockPosition, pane.boundsWidth, div.clientWidth, htmlElementX + pane.boundsLeft, position.offsetX);
   top = __aspxGetToolTipY(position.dockPosition, pane.boundsHeight, div.clientHeight, htmlElementY + pane.boundsTop, position.offsetY);
  }
 }
 else {
  left = __aspxGetToolTipX(position.dockPosition, chart.chartControl.GetWidth(), div.clientWidth, htmlElementX, position.offsetX);
  top = __aspxGetToolTipY(position.dockPosition, chart.chartControl.GetHeight(), div.clientHeight, htmlElementY, position.offsetY);
 }
 __aspxChartSetDivPosition(div, left, top);
}
ASPxClientCrosshairElementsGroup = _aspxCreateClass(null, {
 constructor: function(seriesPoint, snapsToArgument) {
  this.headerText="";
  this.anchorValue = snapsToArgument ? seriesPoint.argument : seriesPoint.values[0];
  this.crosshairElements = [];
 }
});
ASPxClientCrosshairRenderer = _aspxCreateClass(ASPxClientControl, {
 constructor: function(chartControl, name) {
  this.constructor.prototype.constructor.call(this, name);
  this.chart = chartControl;
  this.hDivs = [];
  this.vDivs = [];
  this.labelDivs = [];
  this.hLabelDivs = [];
  this.vLabelDivs = [];
  this.diagram = chartControl.chart.diagram;
  this.snapToNearestArgument = this.chart.chart.crosshairOptions.snapMode == "NearestArgument";
  this.isHorizontal = this.snapToNearestArgument ^ this.diagram.rotated;
  this.indent = 2;
 },
 CreateVerticalLineDiv: function(index) {
  var div = __aspxCreateChartDiv(this.chart, __aspxCrosshairVDivID, index);
  __aspxSetCssClassName(div, this.chart, __aspxChartCrosshairVLineClassName);
  this.vDivs.push(div);
  return div;
 },
 CreateHorizontalLineDiv: function(index) {
  var div = __aspxCreateChartDiv(this.chart, __aspxCrosshairHDivID, index);
  __aspxSetCssClassName(div, this.chart, __aspxChartCrosshairHLineClassName);
  this.hDivs.push(div);
  return div;
 },
 CreateVerticalLabelDiv: function(index) {
  var div = __aspxCreateChartDiv(this.chart, __aspxCrosshairVLabelID, index);
  __aspxSetCssClassName(div, this.chart, __aspxChartCrosshairLabelClassName);
  this.vLabelDivs.push(div);
  return div;
 },
 CreateHorizontalLabelDiv: function(index) {
  var div = __aspxCreateChartDiv(this.chart, __aspxCrosshairHLabelID, index);
  __aspxSetCssClassName(div, this.chart, __aspxChartCrosshairLabelClassName);
  this.hLabelDivs.push(div);
  return div;
 },
 CreateMainLabelDiv: function(index) {
  var div = __aspxCreateChartToolTip(this.chart, __aspxCrosshairLabelID, index);
  this.labelDivs.push(div);
  return div;
 },
 GetPane: function(x, y) {
  if (this.diagram != null && this.diagram instanceof ASPxClientXYDiagram2D)
   return this.diagram.FindPaneByXY(x, y);
  return null;
 },
 ClearDivArray: function(divArray, prefix, index) {
  var length = divArray.length;
  if (index < length) {
   for (var i = index; i < length; i++) {
    divArray.pop();
    __aspxRemoveChartDiv(this.chart, prefix, i);
   }
  }
 },
 Hide: function() {
  this.ClearDivs(0, 0, 0, 0, 0);
 },
 ClearDivs: function(hLineIndex, vLineIndex, hLabelIndex, vLabelIndex, labelIndex) {
  this.ClearDivArray(this.hDivs, __aspxCrosshairHDivID, hLineIndex);
  this.ClearDivArray(this.vDivs, __aspxCrosshairVDivID, vLineIndex);
  this.ClearDivArray(this.hLabelDivs, __aspxCrosshairHLabelID, hLabelIndex);
  this.ClearDivArray(this.vLabelDivs, __aspxCrosshairVLabelID, vLabelIndex);
  this.ClearDivArray(this.labelDivs, __aspxCrosshairLabelID, labelIndex);
 },
 GetVerticalDiv: function(index) {
  if (index < this.vDivs.length)
   return this.vDivs[index];
  return this.CreateVerticalLineDiv(index);
 },
 GetHorizontalDiv: function(index) {
  if (index < this.hDivs.length)
   return this.hDivs[index];
  return this.CreateHorizontalLineDiv(index);
 },
 GetVerticalLabelDiv: function(index) {
  if (index < this.vLabelDivs.length)
   return this.vLabelDivs[index];
  return this.CreateVerticalLabelDiv(index);
 },
 GetHorizontalLabelDiv: function(index) {
  if (index < this.hLabelDivs.length)
   return this.hLabelDivs[index];
  return this.CreateHorizontalLabelDiv(index);
 },
 GetLabelDiv: function(index) {
  if (index < this.labelDivs.length)
   return this.labelDivs[index];
  return this.CreateMainLabelDiv(index);
 },
 GetCrosshairSeries: function(pane) {
  var crosshairSeries = [];
  for (var i = 0; i < this.chart.chart.series.length; i++) {
   var series = this.chart.chart.series[i];
   if (series.pane == pane.name && series.visible)
    crosshairSeries.push(series);
  }
  return crosshairSeries;
 },
 ClampCoord: function(coord, start, length) {
  if (coord < start)
   coord = start;
  else {
   if (coord > start + length)
    coord = start + length;
  }
  return coord;
 },
 GetAxisByName: function(name, isXAxis) {
  if (isXAxis) {
   return this.diagram.FindAxisXByName(name);
  }
  return this.diagram.FindAxisYByName(name);
 },
 GetDiff: function(value1, value2) {
  return value1 > value2 ? value1 - value2 : value2 - value1;
 },
 GetValueItemsByValue: function(series, index) {
  var items = [];
  var crosshairValueItem = series.crosshairValueItems[index];
  items.push(crosshairValueItem);
  for (var i = index - 1; i >= 0; i--) {
   if (series.crosshairValueItems[i].value == crosshairValueItem.value) {
    items.push(series.crosshairValueItems[i]);
   }
   else {
    break;
   }
  }
  for (var i = index + 1; i < series.crosshairValueItems.length; i++) {
   if (series.crosshairValueItems[i].value == crosshairValueItem.value) {
    items.push(series.crosshairValueItems[i]);
   }
   else {
    break;
   }
  }
  return items;
 },
 GetAxisValue: function(axisValues, axisName) {
  for (var i = 0; i < axisValues.length; i++) {
   if (axisValues[i].axis.name == axisName) {
    return axisValues[i].internalValue;
   }
  }
  return null;
 },
 FindNearestPoint: function(pane, series, valueItems, axisValues, primaryAxis, secondaryAxis) {
  var axisValue = this.GetAxisValue(axisValues, secondaryAxis.name);
  var value = null;
  var valueItem = null;
  for (var i = 0; i < valueItems.length; i++) {
   var point = series.points[valueItems[i].pointIndex];
   if (_aspxIsExists(point.isEmpty))
    if (point.isEmpty)
    continue;
   if (this.snapToNearestArgument) {
    for (var j = 0; j < point.values.length; j++) {
     var pointValue = point.crosshairValues[j];
     var isVisible = this.diagram.IsAxisValueVisible(pane, secondaryAxis, pointValue);
     if (isVisible && (value == null || this.GetDiff(axisValue, pointValue) < this.GetDiff(axisValue, value))) {
      value = pointValue;
      valueItem = valueItems[i];
     }
    }
   }
   else {
    var pointValue = secondaryAxis.GetInternalArgument(point.argument);
    var isVisible = this.diagram.IsAxisValueVisible(pane, secondaryAxis, pointValue);
    if (isVisible && (value == null || this.GetDiff(axisValue, pointValue) < this.GetDiff(axisValue, value))) {
     value = pointValue;
     valueItem = valueItems[i];
    }
   }
  }
  if (value == null || valueItem == null) {
   return null;
  }
  var point = series.points[valueItem.pointIndex];
  var argument = this.snapToNearestArgument ? valueItem.value : value;
  if (_aspxIsExists(point.offset)) {
   argument += point.offset;
  }
  value = this.snapToNearestArgument ? value : valueItem.value;
  var x = this.diagram.MapInternalToPoint(pane, this.snapToNearestArgument ? primaryAxis.name : secondaryAxis.name, argument);
  var y = this.diagram.MapInternalToPoint(pane, this.snapToNearestArgument ? secondaryAxis.name : primaryAxis.name, value);
  if (_aspxIsExists(point.fixedOffset)) {
   x += point.fixedOffset;
  }
  var ax = this.diagram.rotated ? y : x;
  var ay = this.diagram.rotated ? x : y;
  return { point: point, x: ax, y: ay, argument: argument, value: value };
 },
 AddCursorCrosshairItems: function(paneCrosshairInfo, value, isArgument, isHorizontal, axis) {
  paneCrosshairInfo.AddCursorCrosshairLine(value, isHorizontal, this.snapToNearestArgument ^ isArgument);
  paneCrosshairInfo.AddCursorCrosshairLabel(value, isHorizontal);
 },
 AddCrosshairItems: function(paneCrosshairInfo, point, value, isArgument, isHorizontal, axis) {
  point.axisValue = value;
  paneCrosshairInfo.AddPoint(point);
  paneCrosshairInfo.AddCrosshairLine(point, value, isHorizontal, this.snapToNearestArgument ^ isArgument);
  paneCrosshairInfo.AddCrosshairLabel(point, value, isHorizontal);
 },
 GetRange: function(pane, percent, maxValue) {
  var range = this.isHorizontal ? pane.boundsWidth : pane.boundsHeight;
  range *= percent;
  if (maxValue > 0 && range > maxValue)
   range = maxValue;
  return range;
 },
 AddCrosshairPointItems: function(paneCrosshairInfo, secondaryItem) {
  var value = this.isHorizontal ? secondaryItem.pointInfo.y : secondaryItem.pointInfo.x;
  var internalValue = this.snapToNearestArgument ? secondaryItem.pointInfo.value : secondaryItem.pointInfo.argument;
  this.AddCrosshairItems(paneCrosshairInfo, secondaryItem.pointInfo, new ASPxAxisValuePair(secondaryItem.secondaryAxis, internalValue, value), !this.snapToNearestArgument, this.isHorizontal, secondaryItem.secondaryAxis);
 },
 GetCrosshairValueItemIndex: function(series, axisValue) {
  var index = _aspxArrayBinarySearch(series.crosshairValueItems, axisValue, __aspxCrosshairValueItemsComparer, 0, series.crosshairValueItems.length);
  if (index < 0) {
   index = -1 * index - 1;
   if (index >= series.crosshairValueItems.length)
    index = series.crosshairValueItems.length - 1;
   else {
    if (index > 0) {
     var prev = this.GetDiff(series.crosshairValueItems[index - 1].value, axisValue);
     var next = this.GetDiff(series.crosshairValueItems[index].value, axisValue);
     if (!_aspxIsExists(series.invertedStep)) {
      if (prev < next)
       index--;
     }
     else
      if (!series.invertedStep && index > 0)
      index--;
    }
   }
  }
  return index;
 },
 IsBarSeries: function(series) {
  if (series.viewType == "Bar" ||
   series.viewType == "StackedBar" ||
   series.viewType == "FullStackedBar" ||
   series.viewType == "SideBySideStackedBar" ||
   series.viewType == "SideBySideFullStackedBar" ||
   series.viewType == "SideBySideRangeBar" ||
   series.viewType == "RangeBar" ||
   series.viewType == "SideBySideGantt" ||
   series.viewType == "Gantt") {
   return true;
  }
  return false;
 },
 IsContinuousSeries: function(series) {
  if (series.viewType == "Bar" ||
   series.viewType == "Line" ||
   series.viewType == "StackedLine" ||
   series.viewType == "FullStackedLine" ||
   series.viewType == "StepLine" ||
   series.viewType == "Spline" ||
   series.viewType == "ScatterLine" ||
   series.viewType == "SwiftPlot" ||
   series.viewType == "Area" ||
   series.viewType == "StepArea" ||
   series.viewType == "SplineArea" ||
   series.viewType == "StackedArea" ||
   series.viewType == "StackedSplineArea" ||
   series.viewType == "FullStackedArea" ||
   series.viewType == "FullStackedSplineArea" ||
   series.viewType == "RangeArea") {
   return true;
  }
  return false;
 },
 GetBarRange: function(pane, series, point, smallRange) {
  var barRange = smallRange;
  if (this.snapToNearestArgument) {
   if (_aspxIsExists(point.point.barWidth)) {
    var pointArgument = point.argument;
    var barWidth = point.point.barWidth;
    var pointValue = pointArgument;
    var barSidePoint = this.diagram.MapInternalToPoint(pane, series.axisX, pointValue + barWidth * 0.5);
    if (_aspxIsExists(point.point.fixedOffset))
     barSidePoint += point.point.fixedOffset;
    barRange = this.isHorizontal ? barSidePoint - point.x : barSidePoint - point.y;
    barRange = barRange > 0 ? barRange : -barRange;
    barRange = barRange < smallRange ? smallRange : barRange;
   }
  }
  return barRange;
 },
 GetContinuousSeriesRange: function(pane, series, point, crosshairPosition, smallRange, maxRange, primaryAxis) {
  var continuousRange = maxRange;
  if (point.argument == series.crosshairValueItems[0].value) {
   if (this.isHorizontal) {
    if (!primaryAxis.reverse && crosshairPosition < point.x || primaryAxis.reverse && crosshairPosition > point.x)
     continuousRange = smallRange;
   }
   else
    if (!primaryAxis.reverse && crosshairPosition > point.y || primaryAxis.reverse && crosshairPosition < point.y)
    continuousRange = smallRange;
  }
  else
   if (point.argument == series.crosshairValueItems[series.crosshairValueItems.length - 1].value) {
   if (this.isHorizontal) {
    if (!primaryAxis.reverse && crosshairPosition > point.x || primaryAxis.reverse && crosshairPosition < point.x)
     continuousRange = smallRange;
   }
   else
    if (!primaryAxis.reverse && crosshairPosition < point.y || primaryAxis.reverse && crosshairPosition > point.y)
    continuousRange = smallRange;
  }
  return continuousRange;
 },
 CalculatePaneCrosshairInfo: function(pane, x, y) {
  x = this.ClampCoord(x, pane.boundsLeft, pane.boundsWidth);
  y = this.ClampCoord(y, pane.boundsTop, pane.boundsHeight);
  var paneCrosshairInfo = new ASPxPaneCrosshairInfo(pane, x, y);
  var crosshairSeries = this.GetCrosshairSeries(pane);
  var axisValues = this.diagram.MapPointToInternal(pane, x, y);
  var smallRange = this.GetRange(pane, 0.08, 40);
  for (var i = 0; i < crosshairSeries.length; i++) {
   var series = crosshairSeries[i];
   var primaryAxisName = this.snapToNearestArgument ? series.axisX : series.axisY;
   var primaryAxisValue = this.GetAxisValue(axisValues, primaryAxisName);
   var primaryAxis = this.GetAxisByName(primaryAxisName, this.snapToNearestArgument);
   var primaryScreenAxisValue = this.diagram.MapInternalToPoint(pane, primaryAxisName, primaryAxisValue);
   this.AddCursorCrosshairItems(paneCrosshairInfo, new ASPxAxisValuePair(primaryAxis, primaryAxisValue, primaryScreenAxisValue), this.snapToNearestArgument, !this.isHorizontal, primaryAxis);
   if (!series.actualCrosshairEnabled || series.crosshairValueItems.length == 0)
    continue;
   var index = this.GetCrosshairValueItemIndex(series, primaryAxisValue);
   var valueItems = this.GetValueItemsByValue(series, index);
   var secondaryAxisName = this.snapToNearestArgument ? series.axisY : series.axisX;
   var secondaryAxis = this.GetAxisByName(secondaryAxisName, !this.snapToNearestArgument);
   var pointInfo = this.FindNearestPoint(pane, series, valueItems, axisValues, primaryAxis, secondaryAxis);
   if (pointInfo != null && pane.InPane(pointInfo.x, pointInfo.y)) {
    var diff = this.GetDiff(this.isHorizontal ? x : y, this.isHorizontal ? pointInfo.x : pointInfo.y);
    if (this.IsBarSeries(series))
     smallRange = this.GetBarRange(pane, series, pointInfo, smallRange);
    else
     if (this.IsContinuousSeries(series))
     smallRange = this.GetContinuousSeriesRange(pane, series, pointInfo, this.isHorizontal ? x : y, smallRange, this.isHorizontal ? pane.boundsWidth : pane.boundsHeight, primaryAxisName);
    if (diff <= smallRange)
     this.AddCrosshairPointItems(paneCrosshairInfo, { pointInfo: pointInfo, secondaryAxis: secondaryAxis, series: series });
   }
  }
  return paneCrosshairInfo;
 },
 AddUniqueValue: function(uniqueValues, value) {
  for (var i = 0; i < uniqueValues.length; i++) {
   if (uniqueValues[i] == value)
    return false;
  }
  uniqueValues.push(value);
  return true;
 },
 FindAxisLabelBounds: function(pane, axisName) {
  if (_aspxIsExists(pane.axisLabelBounds)) {
   for (var i = 0; i < pane.axisLabelBounds.length; i++) {
    if (pane.axisLabelBounds[i].axisName == axisName)
     return pane.axisLabelBounds[i];
   }
  }
  return null;
 },
 GetLineLabelHtml: function(axisValuePair, isValueAxis) {
  var value = axisValuePair.axis.GetNativeArgument(axisValuePair.internalValue);
  return ASPxToolTipPatternHelper.GetAxisLabelText(axisValuePair.axis, isValueAxis, value);
 },
 GetLineThickness: function(horizontal) {
  horizontal = horizontal ^ this.diagram.rotated;
  if (horizontal) {
   lineStyle = this.chart.chart.crosshairOptions.valueLineStyle;
  }
  else {
   lineStyle = this.chart.chart.crosshairOptions.argumentLineStyle;
  }
  if (lineStyle != null) {
   return lineStyle.thickness;
  }
  else {
   return 0;
  }
 },
 DrawCrosshairLineElements: function(crosshairDrawInfo) {
  var chartX = _aspxGetAbsoluteX(this.chart.mainElement);
  var chartY = _aspxGetAbsoluteY(this.chart.mainElement);
  for (var i = 0; i < crosshairDrawInfo.CrosshairElements.length; i++) {
   if (crosshairDrawInfo.CrosshairElements[i].visible) {
    var crosshairLine = crosshairDrawInfo.CrosshairElements[i].Point.crosshairLine;
    var crosshairLineElement = crosshairDrawInfo.CrosshairElements[i].LineElement;
    this.DrawCrosshairLine(crosshairLine, crosshairDrawInfo.pane, chartX, chartY, crosshairLineElement);
   }
  }
  if (!_aspxIsExists(crosshairDrawInfo.CursorCrosshairLineDrawInfo))
   return;
  var cursorCrosshairLine = crosshairDrawInfo.CursorCrosshairLineDrawInfo.crosshairLine;
  var crosshairLineElement = crosshairDrawInfo.CursorCrosshairLineDrawInfo.cursorCrosshairLineElement;
  this.DrawCrosshairLine(cursorCrosshairLine, crosshairDrawInfo.pane, chartX, chartY, crosshairLineElement);
 },
 SetLineStyle: function(lineDiv, crosshairLineElement) {
  var lineStyle = crosshairLineElement.lineStyle;
  lineDiv.style.borderRight = "0px";
  lineDiv.style.borderLeft = "0px";
  lineDiv.style.borderTop = "0px";
  lineDiv.style.borderBottom = "0px";
  if (lineStyle != null) {
   lineDiv.style.borderTop = lineStyle.thickness + "px";
   lineDiv.style.borderLeft = lineStyle.thickness + "px";
  }
  else {
   lineDiv.style.borderTop = "1px";
   lineDiv.style.borderLeft = "1px";
  }
  if (crosshairLineElement.color != null) {
   lineDiv.style.borderColor = "#" + crosshairLineElement.color;
  }
  var dashStyle;
  if (lineStyle != null) {
   switch (lineStyle.dashStyle) {
    case "Empty":
     dashStyle = "none";
     break;
    case "Solid":
     dashStyle = "solid";
     break;
    case "Dash":
     dashStyle = "dashed";
     break;
    default:
     dashStyle = "dotted";
   }
  }
  else {
   dashStyle = "solid";
  }
  lineDiv.style.borderStyle = dashStyle;
 },
 DrawCrosshairLine: function(crosshairLine, pane, chartX, chartY, crosshairLineElement) {
  var axisValuePair = crosshairLine.axisValuePair;
  if (!crosshairLineElement.visible)
   return;
  if (crosshairLine.isHorizontal) {
   var lineDiv = this.GetHorizontalDiv(this.hLineIndex);
   var offsetY = Math.floor(this.GetLineThickness(true) / 2);
   __aspxChartSetDivPosition(lineDiv, chartX + pane.boundsLeft, chartY + axisValuePair.screenValue - offsetY);
   lineDiv.style.width = pane.boundsWidth + "px";
   this.SetLineStyle(lineDiv, crosshairLineElement);
   this.hLineIndex++;
  }
  else {
   var lineDiv = this.GetVerticalDiv(this.vLineIndex);
   var offsetX = Math.floor(this.GetLineThickness(false) / 2);
   __aspxChartSetDivPosition(lineDiv, chartX + axisValuePair.screenValue - offsetX, chartY + pane.boundsTop);
   lineDiv.style.height = pane.boundsHeight + "px";
   this.SetLineStyle(lineDiv, crosshairLineElement);
   this.vLineIndex++;
  }
 },
 DrawCrosshairAxisLabelElements: function(crosshairDrawInfo) {
  var chartX = _aspxGetAbsoluteX(this.chart.mainElement);
  var chartY = _aspxGetAbsoluteY(this.chart.mainElement);
  for (var i = 0; i < crosshairDrawInfo.CrosshairElements.length; i++) {
   if (crosshairDrawInfo.CrosshairElements[i].visible) {
    var crosshairAxisLabel = crosshairDrawInfo.CrosshairElements[i].Point.crosshairLabel;
    var crosshairAxisLabelElement = crosshairDrawInfo.CrosshairElements[i].AxisLabelElement;
    this.DrawCrosshairAxisLabel(crosshairAxisLabel, crosshairDrawInfo.pane, chartX, chartY, crosshairAxisLabelElement);
   }
  }
  for (var i = 0; i < crosshairDrawInfo.CursorCrosshairAxisLabelDrawInfos.length; i++) {
   var crosshairAxisLabel = crosshairDrawInfo.CursorCrosshairAxisLabelDrawInfos[i].crosshairAxisLabel;
   var crosshairAxisLabelElement = crosshairDrawInfo.CursorCrosshairAxisLabelDrawInfos[i].cursorCrosshairAxisLabelElement;
   this.DrawCrosshairAxisLabel(crosshairAxisLabel, crosshairDrawInfo.pane, chartX, chartY, crosshairAxisLabelElement);
  }
 },
 SetCrosshairAxisLabelOptions: function(labelDiv, crosshairAxisLabelElement) {
  if (crosshairAxisLabelElement.backColor != null) {
   labelDiv.style.background = "#" + crosshairAxisLabelElement.backColor;
  }
  if (crosshairAxisLabelElement.textColor != null) {
   labelDiv.style.color = "#" + crosshairAxisLabelElement.textColor;
  }
  if (crosshairAxisLabelElement.font != null) {
   labelDiv.style.font = crosshairAxisLabelElement.font.fontSize + "pt" + " " + crosshairAxisLabelElement.font.fontFamily;
  }
 },
 DrawCrosshairAxisLabel: function(crosshairAxisLabel, pane, chartX, chartY, crosshairAxisLabelElement) {
  var axisValuePair = crosshairAxisLabel.axisValuePair;
  if (!crosshairAxisLabelElement.visible)
   return;
  if (crosshairAxisLabel.isHorizontal) {
   var axisLabelBounds = this.FindAxisLabelBounds(pane, axisValuePair.axis.name);
   if (axisLabelBounds != null) {
    var labelDiv = this.GetHorizontalLabelDiv(this.hLabelIndex);
    this.SetCrosshairAxisLabelOptions(labelDiv, crosshairAxisLabelElement);
    labelDiv.innerHTML = crosshairAxisLabelElement.text; 
    var offset = axisLabelBounds.left;
    if (axisLabelBounds.left < pane.boundsLeft)
     offset += axisLabelBounds.width - labelDiv.clientWidth;
    __aspxChartSetDivPosition(labelDiv, chartX + offset, chartY + axisValuePair.screenValue - labelDiv.clientHeight / 2);
    this.hLabelIndex++;
   }
  }
  else {
   var axisLabelBounds = this.FindAxisLabelBounds(pane, axisValuePair.axis.name);
   if (axisLabelBounds != null) {
    var labelDiv = this.GetVerticalLabelDiv(this.vLabelIndex);
    this.SetCrosshairAxisLabelOptions(labelDiv, crosshairAxisLabelElement);
    labelDiv.innerHTML = crosshairAxisLabelElement.text; 
    var offset = axisLabelBounds.top;
    if (axisLabelBounds.top < pane.boundsTop)
     offset += axisLabelBounds.height - labelDiv.clientHeight;
    __aspxChartSetDivPosition(labelDiv, chartX + axisValuePair.screenValue - labelDiv.clientWidth / 2, chartY + offset);
    this.vLabelIndex++;
   }
  }
 },
 DrawCrosshairSeriesLabel: function(pane, labelsBounds, pointsInfo, pointInfo, seriesLabelElement, isSingle) {
  if (!seriesLabelElement.visible)
   return;
  var labelDiv = this.GetLabelDiv(this.labelIndex);
  var marker = "";
  var text = "";
  if (seriesLabelElement.textVisible)
   text = seriesLabelElement.text;
  if (seriesLabelElement.markerVisible)
   marker = seriesLabelElement.marker;
  var textContent = __aspxChartGetHorizontalTable(marker, text);
  var content = __aspxChartGetVerticalTable(seriesLabelElement.headerText, textContent, seriesLabelElement.footerText);
  labelDiv.innerHTML = content;
  labelDiv.style.font = seriesLabelElement.font.fontSize + "pt" + " " + seriesLabelElement.font.fontFamily + " ";
  labelDiv.style.color = seriesLabelElement.textColor;
  var x = pointInfo.x - pane.boundsLeft;
  var y = pointInfo.y - pane.boundsTop;
  var labelBounds = { x: x, y: y, width: labelDiv.clientWidth, height: labelDiv.clientHeight };
  var direction = { x: 1, y: -1 };
  if (!isSingle) {
   direction = this.CorrectCrosshairSeriesLabelBounds(labelsBounds, pane, labelBounds, pointsInfo, x, y, direction.x, direction.y);
  }
  else {
   this.SetDirection(labelBounds, x, y, direction.x, direction.y);
  }
  var verticalPrefix = direction.y > 0 ? "Top" : "Bottom";
  var horizontalPrefix = direction.x > 0 ? "Left" : "Right";
  labelsBounds.push(labelBounds);
  var offsetX = _aspxGetAbsoluteX(this.chart.mainElement) + pane.boundsLeft;
  var offsetY = _aspxGetAbsoluteY(this.chart.mainElement) + pane.boundsTop;
  __aspxSetCssClassName(labelDiv, this.chart, __aspxChartToolTipClassName + "_" + verticalPrefix + horizontalPrefix);
  __aspxChartSetDivPosition(labelDiv, offsetX + labelBounds.x, offsetY + labelBounds.y);
  this.labelIndex++;
 },
 GetLabelHTML: function(point) {
  var color = _aspxIsExists(point.color) ? point.color : point.series.color;
  var marker = "<div style='width:15px; height:12px; margin-top:5px; background-color:#" + color + "' />";
  var text = ASPxToolTipPatternHelper.GetPointToolTipText(point.series.crosshairLabelPattern, point, point.series);
  return __aspxChartGetHorizontalTable(marker, text);
 },
 ClacSquareLength: function(x1, y1, x2, y2) {
  return (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2);
 },
 DrawCrosshairSeriesLabels: function(crosshairDrawInfo, paneCrosshairInfo) {
  if (this.diagram.rotated) {
   crosshairDrawInfo.CrosshairElements.sort(__aspxSortCrosshairElementByValue);
  }
  else {
   crosshairDrawInfo.CrosshairElements.sort(__aspxSortCrosshairElementByArgument);
  }
  if (crosshairDrawInfo.CrosshairElements.length < 1)
   return;
  var pointsInfo = [];
  for (var i = 0; i < crosshairDrawInfo.CrosshairElements.length; i++) {
   pointsInfo.push(crosshairDrawInfo.CrosshairElements[i].Point);
  }
  switch (this.chart.chart.crosshairOptions.crosshairLabelMode) {
   case "ShowForEachSeries":
    for (var i = 0; i < crosshairDrawInfo.CrosshairElements.length; i++) {
     if (crosshairDrawInfo.CrosshairElements[i].visible) {
      var pointInfo = crosshairDrawInfo.CrosshairElements[i].Point;
      var seriesLabelElement = crosshairDrawInfo.CrosshairElements[i].LabelElement;
      this.DrawCrosshairSeriesLabel(crosshairDrawInfo.pane, crosshairDrawInfo.labelsBounds, pointsInfo, pointInfo, seriesLabelElement, false);
     }
    }
    break;
   case "ShowForNearestSeries":
    var min = this.ClacSquareLength(paneCrosshairInfo.x, paneCrosshairInfo.y, pointsInfo[0].x, pointsInfo[0].y);
    var index = 0;
    for (var i = 1; i < pointsInfo.length; i++) {
     var distance = this.ClacSquareLength(paneCrosshairInfo.x, paneCrosshairInfo.y, pointsInfo[i].x, pointsInfo[i].y);
     if (distance < min) {
      min = distance;
      index = i;
     }
    }
    if (crosshairDrawInfo.CrosshairElements[index].visible) {
     var seriesLabelElement = crosshairDrawInfo.CrosshairElements[index].LabelElement;
     this.DrawCrosshairSeriesLabel(crosshairDrawInfo.pane, crosshairDrawInfo.labelsBounds, pointsInfo, pointsInfo[index], seriesLabelElement, true);
    }
    break;
  }
 },
 DrawCommonSeriesPointLabel: function(crosshairGroups, paneCrosshairInfoList) {
  var content = this.GetCommonSeriesLabelContent(crosshairGroups);
  if (!_aspxIsExists(content))
   return;
  var chartX = _aspxGetAbsoluteX(this.chart.mainElement);
  var chartY = _aspxGetAbsoluteY(this.chart.mainElement);
  var labelDiv = this.GetLabelDiv(this.labelIndex);
  labelDiv.innerHTML = content;
  if (this.chart.chart.crosshairOptions.crosshairLabelPosition instanceof ASPxClientCrosshairFreePosition) {
   __aspxShowInFreePosition(labelDiv, this.chart.chart, this.chart.chart.crosshairOptions.crosshairLabelPosition, chartX, chartY);
  }
  else {
   var paneCrosshairInfo;
   for (var i = 0; i < paneCrosshairInfoList.length; i++) {
    if (paneCrosshairInfoList[i].pane == this.focusedPane) {
     paneCrosshairInfo = paneCrosshairInfoList[i];
     break;
    }
   }
   var offsetX = this.chart.chart.crosshairOptions.crosshairLabelPosition.offsetX;
   var offsetY = this.chart.chart.crosshairOptions.crosshairLabelPosition.offsetY;
   var x = paneCrosshairInfo.x + offsetX;
   if (x + labelDiv.clientWidth > this.chart.GetWidth()) {
    x -= labelDiv.clientWidth + 2 * offsetX;
   }
   var y = paneCrosshairInfo.y - labelDiv.clientHeight - offsetY;
   if (y < 0) {
    y += labelDiv.clientHeight + 2 * offsetY;
   }
   __aspxChartSetDivPosition(labelDiv, chartX + x, chartY + y);
  }
  this.labelIndex++;
 },
 GetCommonSeriesLabelContent: function(crosshairGroups) {
  var content = "";
  for (var j = 0; j < crosshairGroups.length; j++) {
   var group = crosshairGroups[j];
   if (group.headerText != "")
    content += this.GetGroupHeaderContent(group.headerText);
   for (var pointIndex = 0; pointIndex < group.crosshairElements.length; pointIndex++) {
    content += this.GetSingleLabelContent(group.crosshairElements[pointIndex]);
   }
  }
  return content != "" ? "<table>" + content + "</table>" : null;
 },
 GetSingleLabelContent: function(crosshairElement) {
  var content = "";
  var seriesLabelElement = crosshairElement.LabelElement;
  if (!crosshairElement.visible || !seriesLabelElement.visible)
   return "";
  var style = "style = 'color:" + seriesLabelElement.textColor + ";" + "font:" + seriesLabelElement.font.fontSize + "pt" + " " + seriesLabelElement.font.fontFamily + ";'";
  if (seriesLabelElement.headerText != "")
   content += "<tr><td colspan='2' " + style + ">" + seriesLabelElement.headerText + "</td></tr>"
  if (seriesLabelElement.markerVisible) {
   var markerStyle;
   if (seriesLabelElement.marker != seriesLabelElement.defaultMarker)
    markerStyle = seriesLabelElement.marker;
   else
    markerStyle = "<div style='width:19px; height:14px; text-align:center'><div style='width:15px; height:12px; margin-top:5px; background-color:" + seriesLabelElement.markerColor + "'/></div>"
   content += "<tr><td style='vertical-align:top'>" + markerStyle + "</td>";
  }
  else
   content += "<tr><td></td>";
  if (seriesLabelElement.textVisible)
   content += "<td " + style + ">" + seriesLabelElement.text + "</td></tr>";
  else
   content += "<td></td></tr>";
  if (seriesLabelElement.footerText != "")
   content += "<tr><td colspan='2' " + style + ">" + seriesLabelElement.footerText + "</td></tr>";
  return content;
 },
 GetGroupHeaderContent: function(groupHeaderText) {
  var style = "style = 'color:#000000;font:12pt Tahoma;'";
  return "<tr><td colspan='2' " + style + ">" + groupHeaderText + "</td></tr>"
 },
 PointBelongsToGroup: function(point, group, snapsToArgument) {
  if (snapsToArgument)
   return point.argument.toString() == group.anchorValue.toString();
  else
   return point.values.length > 1 ? false : point.values[0].toString() == group.anchorValue.toString();
 },
 HasIntersection: function(v1, l1, v2, l2) {
  v1 -= this.indent;
  l1 += 2 * this.indent;
  var v12 = v1 + l1;
  var v22 = v2 + l2;
  return !(v1 <= v2 && v1 <= v22 && v12 <= v2 && v12 <= v22 || v1 >= v2 && v1 >= v22 && v12 >= v2 && v12 >= v22);
 },
 CalcIntersectionArea: function(bounds1, bounds2) {
  var x1 = bounds1.x > bounds2.x ? bounds1.x : bounds2.x;
  var right1 = bounds1.x + bounds1.width;
  var right2 = bounds2.x + bounds2.width;
  var x2 = right1 < right2 ? right1 : right2;
  var y1 = bounds1.y > bounds2.y ? bounds1.y : bounds2.y;
  var bottom1 = bounds1.y + bounds1.height;
  var bottom2 = bounds2.y + bounds2.height;
  var y2 = bottom1 < bottom2 ? bottom1 : bottom2;
  var width = x2 - x1;
  var height = y2 - y1;
  return width * height;
 },
 CheckWithLabelIntersection: function(labelsBounds, bounds) {
  var intersectionAreas = [];
  for (var i = 0; i < labelsBounds.length; i++) {
   var hasXIntersection = this.HasIntersection(bounds.x, bounds.width, labelsBounds[i].x, labelsBounds[i].width);
   var hasYIntersection = this.HasIntersection(bounds.y, bounds.height, labelsBounds[i].y, labelsBounds[i].height);
   if (hasXIntersection && hasYIntersection) {
    intersectionAreas.push(this.CalcIntersectionArea(bounds, labelsBounds[i]));
   }
   else {
    intersectionAreas.push(0);
   }
  }
  var sum = 0;
  for (var i = 0; i < intersectionAreas.length; i++) {
   sum += intersectionAreas[i];
  }
  return sum;
 },
 CheckWithPointIntersection: function(pane, bounds, pointsInfo) {
  for (var i = 0; i < pointsInfo.length; i++) {
   var x = pointsInfo[i].x - pane.boundsLeft;
   var y = pointsInfo[i].y - pane.boundsTop;
   if (x > bounds.x && x < bounds.x + bounds.width && y > bounds.y && y < bounds.y + bounds.height) {
    return false;
   }
  }
  return true;
 },
 SetDirection: function(bounds, x, y, dirX, dirY) {
  bounds.x = x;
  bounds.x += dirX > 0 ? -10 : 10 - bounds.width;
  bounds.y = y;
  bounds.y += dirY > 0 ? 20 : -20 - bounds.height;
 },
 CorrectCrosshairSeriesLabelBounds: function(labelsBounds, pane, bounds, pointsInfo, x, y, dirX, dirY) {
  var directions = [];
  directions.push({ x: dirX, y: dirY });
  directions.push({ x: dirX, y: -dirY });
  directions.push({ x: -dirX, y: dirY });
  directions.push({ x: -dirX, y: -dirY });
  var intersections = [];
  for (var i = 0; i < directions.length; i++) {
   this.SetDirection(bounds, x, y, directions[i].x, directions[i].y);
   var intersection = this.CheckWithLabelIntersection(labelsBounds, bounds);
   if (intersection == 0 && this.CheckWithPointIntersection(pane, bounds, pointsInfo)) {
    return directions[i];
   }
   else {
    intersections.push(intersection);
   }
  }
  var min = intersections[0];
  var index = 0;
  for (var i = 1; i < intersections.length; i++) {
   if (intersections[i] < min) {
    min = intersections[i];
    index = i;
   }
  }
  this.SetDirection(bounds, x, y, directions[index].x, directions[index].y);
  return directions[index];
 },
 ExtractGroups: function(crosshairDrawInfoList) {
  var options = this.chart.chart.crosshairOptions;
  var snapsToArgument = options.snapMode == "NearestArgument";
  var totalCrosshairElements = [];
  for (var i = 0; i < crosshairDrawInfoList.length; i++)
   for (var j = 0; j < crosshairDrawInfoList[i].CrosshairElements.length; j++)
    totalCrosshairElements.push(crosshairDrawInfoList[i].CrosshairElements[j]);
  var groups = [];
  for (var elementIndex = 0; elementIndex < totalCrosshairElements.length; elementIndex++) {
   var crosshairElement = totalCrosshairElements[elementIndex];
   var point = crosshairElement.Point.point;
   var isInGroup = false;
   if (options.showGroupHeaders) {
    for (var groupIndex = 0; groupIndex < groups.length; groupIndex++) {
     var group = groups[groupIndex];
     if (this.PointBelongsToGroup(point, group, snapsToArgument)) {
      isInGroup = true;
      group.crosshairElements.push(crosshairElement);
      break;
     }
     }
   }
   if (!isInGroup) {
      var group = new ASPxClientCrosshairElementsGroup(point, snapsToArgument);
      group.crosshairElements.push(crosshairElement);
      groups.push(group);
   }
  }
  var converter = new ASPxCrosshairGroupHeaderValueToStringConverter(snapsToArgument, !snapsToArgument);
  for (var groupIndex = 0; groupIndex < groups.length; groupIndex++) {
   var group = groups[groupIndex];
   var basePoint = group.crosshairElements[0].Point.point;
   var hasHeader = group.crosshairElements.length > 1 && options.showGroupHeaders;
   group.headerText = hasHeader ? ASPxToolTipPatternHelper.GetPointToolTipTextByConverter(options.groupHeaderPattern, basePoint, basePoint.series, converter) : "";
   for (var elementIndex = 0; elementIndex < group.crosshairElements.length; elementIndex++) {
    var point = group.crosshairElements[elementIndex].Point.point;
    var pattern = hasHeader ? point.series.groupedElementsPattern : point.series.crosshairLabelPattern;
    var seriesLabelElement = group.crosshairElements[elementIndex].LabelElement;
    seriesLabelElement.text = ASPxToolTipPatternHelper.GetPointToolTipText(pattern, point, point.series);
   }
  }
  return groups;
 },
 UpdateCrosshair: function(x, y, chartControl) {
  this.focusedPane = this.GetPane(x, y);
  if (this.focusedPane == null) {
   this.Hide();
   return;
  }
  var panes = [];
  if (!this.chart.chart.crosshairOptions.showOnlyInFocusedPane &&
   ((this.diagram.paneLayoutDirection == "Vertical" && this.isHorizontal) ||
   (this.diagram.paneLayoutDirection == "Horizontal" && !this.isHorizontal))) {
   panes.push(this.diagram.defaultPane);
   for (var i = 0; i < this.diagram.panes.length; i++) {
    panes.push(this.diagram.panes[i]);
   }
  }
  else {
   panes.push(this.focusedPane);
  }
  var paneCrosshairInfoList = [];
  var crosshairDrawInfoList = [];
  for (var i = 0; i < panes.length; i++) {
   if (!panes[i].visible)
    continue;
   var paneCrosshairInfo = this.CalculatePaneCrosshairInfo(panes[i], x, y)
   paneCrosshairInfoList.push(paneCrosshairInfo);
   crosshairDrawInfo = new ASPxClientCrosshairDrawInfo(this.chart);
   crosshairDrawInfo.AddPaneCrosshairInfo(paneCrosshairInfo, chartControl.chart.diagram.rotated);
   crosshairDrawInfo.pane = panes[i];
   crosshairDrawInfoList.push(crosshairDrawInfo);
  }
  var crosshairGroups;
  if (this.chart.chart.crosshairOptions.crosshairLabelMode == "ShowCommonForAllSeries")
   crosshairGroups = this.ExtractGroups(crosshairDrawInfoList);
  if (_aspxIsExists(chartControl.RaiseCustomDrawCrosshair)) {
   var crosshairDrawInfo = new ASPxClientCrosshairDrawInfoList(crosshairDrawInfoList);
   chartControl.RaiseCustomDrawCrosshair(crosshairDrawInfo.CrosshairElements, crosshairDrawInfo.CursorCrosshairAxisLabelElements, crosshairDrawInfo.CursorCrosshairLineElement);
  }
  this.hLineIndex = 0;
  this.hLabelIndex = 0;
  this.vLineIndex = 0;
  this.vLabelIndex = 0;
  this.labelIndex = 0;
  for (var i = 0; i < paneCrosshairInfoList.length; i++) {
   this.DrawCrosshairLineElements(crosshairDrawInfoList[i]);
   this.DrawCrosshairAxisLabelElements(crosshairDrawInfoList[i]);
   if (this.chart.chart.crosshairOptions.crosshairLabelMode != "ShowCommonForAllSeries") {
    this.DrawCrosshairSeriesLabels(crosshairDrawInfoList[i], paneCrosshairInfoList[i]);
   }
  }
  if (this.chart.chart.crosshairOptions.crosshairLabelMode == "ShowCommonForAllSeries") {
   this.DrawCommonSeriesPointLabel(crosshairGroups, paneCrosshairInfoList);
  }
  this.ClearDivs(this.hLineIndex, this.vLineIndex, this.hLabelIndex, this.vLabelIndex, this.labelIndex);
 }
});
ASPxPaneCrosshairInfo = _aspxCreateClass(null, {
 constructor: function(pane, x, y) {
  this.pane = pane;
  this.horizontalLines = [];
  this.verticalLines = [];
  this.horizontalLabels = [];
  this.verticalLabels = [];
  this.pointsInfo = [];
  this.labelsBounds = [];
  this.x = x;
  this.y = y;
  this.cursorLabel = [];
 },
 AddCursorCrosshairLine: function(axisValuePair, isHorizontal, isSingle) {
  this.cursorLine = this.GetCrosshairLine(axisValuePair, isHorizontal);
 },
 AddCursorCrosshairLabel: function(axisValuePair, isHorizontal) {
  this.cursorLabel.push({ axisValuePair: axisValuePair, isHorizontal: isHorizontal });
 },
 AddCrosshairLine: function(point, axisValuePair, isHorizontal, isSingle) {
  if (this.Contains(this.pointsInfo, point)) {
   point.crosshairLine = this.GetCrosshairLine(axisValuePair, isHorizontal);
  }
 },
 AddCrosshairLabel: function(point, axisValuePair, isHorizontal) {
  if (this.Contains(this.pointsInfo, point)) {
   point.crosshairLabel = { axisValuePair: axisValuePair, isHorizontal: isHorizontal };
  }
 },
 GetCrosshairLine: function(axisValuePair, isHorizontal) {
  return { axisValuePair: axisValuePair, isHorizontal: isHorizontal };
 },
 AddPoint: function(point) {
  if (!this.Contains(this.pointsInfo, point)) {
   this.pointsInfo.push(point);
  }
 },
 Contains: function(array, crosshairPoint) {
  for (var i = 0; i < array.length; i++) {
   if (array[i].axisValue.axisName == crosshairPoint.axisValue.axisName && array[i].axisValue.internalValue == crosshairPoint.axisValue.internalValue &&
     array[i].point.series.name == crosshairPoint.point.series.name) {
    return true;
   }
  }
  return false;
 }
});
ASPxAxisValuePair = _aspxCreateClass(null, {
 constructor: function(axis, internalValue, screenValue) {
  this.axis = axis;
  this.internalValue = internalValue;
  this.screenValue = screenValue;
 }
});E-var _argumentPattern = "A";
var _valuePattern = "V";
var _seriesNamePattern = "S";
var _stackedGroupPattern = "G";
var _value1Pattern = "V1";
var _value2Pattern = "V2";
var _weightPattern = "W";
var _highValuePattern = "HV";
var _lowValuePattern = "LV";
var _openValuePattern = "OV";
var _closeValuePattern = "CV";
var _percentValuePattern = "VP";
var _pointHintPattern = "HINT";
ASPxPointDataToStringConverter = _aspxCreateClass(null, {
 constructor: function() {
  this.allowArgument = _aspxIsExists(this.allowArgument) ? this.allowArgument : true;
  this.allowValue = _aspxIsExists(this.allowValue) ? this.allowValue : true;
 },
 GetHintText: function(seriesPoint) {
  return seriesPoint.hint != null ? seriesPoint.hint : "";
 },
 GetArgumentText: function(seriesPoint, series, format) {
  if (seriesPoint.argument == null)
   return "";
  if (series.argumentScaleType == ASPxClientScaleType.Numerical || series.argumentScaleType == ASPxClientScaleType.DateTime || format == null || format == "") {
   return ASPxFormatter.Format("{0:" + format + "}", [seriesPoint.argument]);
  }
  else
   return seriesPoint.argument;
 },
 GetValueTextByIndex: function(valueIndex, seriesPoint, format) {
  var formattedValue = format == "" || format == null ? seriesPoint.values[valueIndex] : ASPxFormatter.Format("{0:" + format + "}", seriesPoint.values[valueIndex])
  return valueIndex >= seriesPoint.values.length ? "" : formattedValue;
 }
});
ASPxValueToStringConverter = _aspxCreateClass(ASPxPointDataToStringConverter, {
 constructor: function() {
  this.constructor.prototype.constructor.call(this);
 },
 GetValueText: function(seriesPoint, format) {
  return this.GetValueTextByIndex(0, seriesPoint, format);
 }
});
ASPxRangeValueToStringConverter = _aspxCreateClass(ASPxPointDataToStringConverter, {
 constructor: function() {
  this.constructor.prototype.constructor.call(this);
 },
 GetValue1Text: function(seriesPoint, format) {
  return this.GetValueTextByIndex(0, seriesPoint, format);
 },
 GetValue2Text: function(seriesPoint, format) {
  return this.GetValueTextByIndex(1, seriesPoint, format);
 }
});
ASPxBubbleValueToStringConverter = _aspxCreateClass(ASPxValueToStringConverter, {
 constructor: function() {
  this.constructor.prototype.constructor.call(this);
 },
 GetWeightText: function(seriesPoint, format) {
  return this.GetValueTextByIndex(1, seriesPoint, format);
 }
});
ASPxFinancialValueToStringConverter = _aspxCreateClass(ASPxPointDataToStringConverter, {
 constructor: function() {
  this.constructor.prototype.constructor.call(this);
 },
 GetLowValueText: function(seriesPoint, format) {
  return this.GetValueTextByIndex(0, seriesPoint, format);
 },
 GetHighValueText: function(seriesPoint, format) {
  return this.GetValueTextByIndex(1, seriesPoint, format);
 },
 GetOpenValueText: function(seriesPoint, format) {
  return this.GetValueTextByIndex(2, seriesPoint, format);
 },
 GetCloseValueText: function(seriesPoint, format) {
  return this.GetValueTextByIndex(3, seriesPoint, format);
 }
});
ASPxPercentValueToStringConverter = _aspxCreateClass(ASPxValueToStringConverter, {
 constructor: function() {
  this.constructor.prototype.constructor.call(this);
 },
 GetPercentValueText: function(seriesPoint, format) {
  if (seriesPoint.percentValue == null)
   return format;
  return format == "" || format == null ? seriesPoint.percentValue : ASPxFormatter.Format("{0:" + format + "}", seriesPoint.percentValue)
 }
});
ASPxCrosshairGroupHeaderValueToStringConverter = _aspxCreateClass(ASPxValueToStringConverter, {
 constructor: function(allowArgument, allowValue) {
  this.allowValue = allowValue;
  this.allowArgument = allowArgument;
  this.constructor.prototype.constructor.call(this);
 }
});
ASPxToolTipPatternHelper = {
 ReplacePatternToValue: function(fragment, series, seriesPoint, converter) {
  var preparedFragment = this.PrepareFragment(fragment);
  if (preparedFragment == null)
   return fragment;
  var format = preparedFragment[0];
  var pattern = preparedFragment[1];
  var allowAllPatterns = converter != null ? (converter.allowArgument && converter.allowValue) : true;
  switch (pattern) {
   case _seriesNamePattern:
    return allowAllPatterns ? series.name : fragment;
   case _stackedGroupPattern:
    return series.stackedGroup != null && allowAllPatterns ? series.stackedGroup : fragment;
  }
  if (seriesPoint != null) {
   var result;
   switch (pattern) {
    case _argumentPattern:
     result = converter.allowArgument ? converter.GetArgumentText(seriesPoint, series, format) : fragment;
     break;
    case _valuePattern:
     result = (converter instanceof ASPxValueToStringConverter) && converter.allowValue ? converter.GetValueText(seriesPoint, format) : fragment;
     break;
    case _value1Pattern:
     result = (converter instanceof ASPxRangeValueToStringConverter) && allowAllPatterns ? converter.GetValue1Text(seriesPoint, format) : fragment;
     break;
    case _value2Pattern:
     result = (converter instanceof ASPxRangeValueToStringConverter) && allowAllPatterns ? converter.GetValue2Text(seriesPoint, format) : fragment;
     break;
    case _weightPattern:
     result = (converter instanceof ASPxBubbleValueToStringConverter) && allowAllPatterns ? converter.GetWeightText(seriesPoint, format) : fragment;
     break;
    case _highValuePattern:
     result = (converter instanceof ASPxFinancialValueToStringConverter) && allowAllPatterns ? converter.GetHighValueText(seriesPoint, format) : fragment;
     break;
    case _lowValuePattern:
     result = (converter instanceof ASPxFinancialValueToStringConverter) && allowAllPatterns ? converter.GetLowValueText(seriesPoint, format) : fragment;
     break;
    case _openValuePattern:
     result = (converter instanceof ASPxFinancialValueToStringConverter) && allowAllPatterns ? converter.GetOpenValueText(seriesPoint, format) : fragment;
     break;
    case _closeValuePattern:
     result = (converter instanceof ASPxFinancialValueToStringConverter) && allowAllPatterns ? converter.GetCloseValueText(seriesPoint, format) : fragment;
     break;
    case _percentValuePattern:
     result = (converter instanceof ASPxPercentValueToStringConverter) && allowAllPatterns ? converter.GetPercentValueText(seriesPoint, format) : fragment;
     break;
    case _pointHintPattern:
     result = allowAllPatterns ? converter.GetHintText(seriesPoint) : fragment;
     break;
    default:
     result = fragment;
     break;
   }
   return this.EscapeDollarSymbols(result);
  }
  else
   return fragment;
 },
 EscapeDollarSymbols: function(fragment) {
  var result = "";
  if (typeof(fragment) != "string")
   return fragment;
  for (var i = 0; i < fragment.length; i++) {
   var symbol = fragment.charAt(i);
   result += symbol;
   if (symbol == "$")
    result += "$";
  }
  return result;
 },
 PrepareFragment: function(fragment) {
  var pattern = "";
  var format = "";
  if (!(fragment.charAt(0) == "{" && fragment.charAt(fragment.length - 1) == "}"))
   return null;
  pattern = fragment.substring(1, fragment.length - 1);
  var formatIndex = pattern.indexOf(":");
  if (formatIndex >= 0) {
   format = pattern.substring(formatIndex + 1).replace(/^\s*/, "").replace(/\s*$/, "");
   pattern = pattern.substring(0, formatIndex);
  }
  pattern = pattern.replace(/^\s*/, "").replace(/\s*$/, "").toUpperCase();
  return [format, pattern];
 },
 SplitString: function(splitingString, leftSeparator, rightSeparator) {
  var substrings = [];
  var leftStringIndex = 0;
  var rightStringIndex = 0;
  var currentIndex = 0;
  if (splitingString != null && splitingString != "") {
   for (var i = 0; i < splitingString.length; i++) {
    var charElement = splitingString.charAt(i);
    if (charElement == leftSeparator) {
     leftStringIndex = currentIndex;
    }
    else {
     if (charElement == rightSeparator) {
      rightStringIndex = currentIndex;
      substrings.push(splitingString.substring(leftStringIndex, rightStringIndex + 1));
     }
    }
    currentIndex++;
   }
   return substrings;
  }
  else
   return null;
 },
 GetPointToolTipText: function(seriesPointPattern, seriesPoint, series) {
  return this.GetPointToolTipTextByConverter(seriesPointPattern, seriesPoint, series, this.GetPatternConverter(series));
 },
 GetPointToolTipTextByConverter: function(seriesPointPattern, seriesPoint, series, converter) {
  if (converter == null)
   return "";
  parsedPattern = this.SplitString(seriesPointPattern, "{", "}");
  var result = seriesPointPattern;
  if (parsedPattern != null)
   for (var i = 0; i < parsedPattern.length; i++) {
    var fragment = parsedPattern[i];
    var formattedFragment = this.ReplacePatternToValue(fragment, series, seriesPoint, converter);
    result = result.replace(new RegExp(fragment, "g"), formattedFragment);
   }
  return result;
 },
 GetSeriesToolTipText: function(seriesPattern, series) {
  if (seriesPattern == null || seriesPattern == "")
   return "";
  parsedPattern = this.SplitString(seriesPattern, "{", "}");
  var result = seriesPattern;
  if (parsedPattern != null)
   for (var i = 0; i < parsedPattern.length; i++) {
    var fragment = parsedPattern[i];
    result = result.replace(new RegExp(fragment, "g"), this.ReplacePatternToValue(fragment, series, null, null));
   }
  return result;
 },
 GetPatternConverter: function(series) {
  var viewType = series.viewType;
  if (viewType == "Pie" || viewType == "Funnel" || viewType == "Doughnut")
   return new ASPxPercentValueToStringConverter();
  if (viewType == "FullStackedArea" || viewType == "FullStackedBar" || viewType == "SideBySideFullStackedBar" || viewType == "FullStackedLine" || viewType == "FullStackedSplineArea")
   return new ASPxPercentValueToStringConverter();
  if (viewType == "CandleStick" || viewType == "Stock")
   return new ASPxFinancialValueToStringConverter();
  if (viewType == "Bubble")
   return new ASPxBubbleValueToStringConverter();
  if (viewType == "RangeArea" || viewType == "RangeBar" || viewType == "SideBySideRangeBar" || viewType == "SideBySideRangeBar" || viewType == "Gantt" || viewType == "SideBySideGantt")
   return new ASPxRangeValueToStringConverter();
  if (viewType.indexOf("3D") >= 0 || viewType.indexOf("Manhattan") >= 0)
   return null;
  return new ASPxValueToStringConverter();
 },
 GetAxisLabelText: function(axis, isValueAxis, value) {
  parsedPattern = this.SplitString(axis.crosshairAxisLabelOptions.pattern, "{", "}");
  if (parsedPattern != null) {
   var result = axis.crosshairAxisLabelOptions.pattern;
   for (var i = 0; i < parsedPattern.length; i++) {
    var fragment = parsedPattern[i];
    var preparedFragment = this.PrepareFragment(fragment);
    if (preparedFragment == null)
     return fragment;
    var format = preparedFragment[0];
    var formattedFragment = fragment;
    var pattern = preparedFragment[1];
    if (pattern == _argumentPattern && !isValueAxis || isValueAxis && pattern == _valuePattern) {
     var isDateTime = axis.scale instanceof ASPxClientDateTimeMap;
     if (isDateTime || axis.scale instanceof ASPxClientNumericalMap) {
      formattedFragment = ASPxFormatter.Format("{0:" + format + "}", [value]);
     }
     else {
      formattedFragment = value;
     }
    }
    result = result.replace(new RegExp(fragment, "g"), formattedFragment);
   }
   return result;
  }
  return value;
 }
};
M/* -- WebChartControl -- */
.dxchartsuiLoadingDiv
{
	background-color:Gray;	
	opacity: 0.01;
	filter: progid:DXImageTransform.Microsoft.Alpha(Style=0, Opacity=1);
}
.dxchartsuiLoadingPanel
{
	font: 12px Tahoma, Geneva, sans-serif;
	color: #303030;
	border: solid 1px #9F9F9F;
	background-color: White;
}
.dxchartsuiLoadingPanel td.dx
{
	white-space: nowrap;
	text-align: center;
	padding: 12px 12px 12px 12px;
}

/* -- Crosshair -- */
.dxchartsuiCrosshairHLine,
.dxchartsuiCrosshairVLine
{
    background-color: transparent;
    border-color: #de39cd;
}

.dxchartsuiCrosshairLabel,
.dxchartsuiCrosshairHLine,
.dxchartsuiCrosshairVLine
{
    position: absolute;
    z-index: 41998;
}

.dxchartsuiCrosshairLabel
{
    background-color: #de39cd;
    color: White;
	font: 11px Tahoma, Geneva, sans-serif;
	padding: 1px 4px 1px 4px;
    white-space: nowrap;    
}

.dxchartsuiCrosshairHLine
{
    height: 0px;
}

.dxchartsuiCrosshairVLine
{
    width: 0px;
}

/* -- Tooltip -- */
.dxchartsuiTooltip,
.dxchartsuiTooltip_TopLeft,
.dxchartsuiTooltip_TopRight,
.dxchartsuiTooltip_BottomLeft,
.dxchartsuiTooltip_BottomRight
{
	font: 12px Tahoma, Geneva, sans-serif;
	color: #201f35;
	background-color: White;
	border: 1px solid rgb(139, 139, 139);
	border: 1px solid rgba(0, 0, 0, 0.35);
	padding: 6px 10px 6px 10px;
	text-align: left;
    position: absolute;
    cursor: default;
    white-space: nowrap;
    -moz-box-shadow:    0px 2px 10px rgba(0, 0, 0, 0.35);
    -webkit-box-shadow: 0px 2px 10px rgba(0, 0, 0, 0.35);
    box-shadow:         0px 2px 10px rgba(0, 0, 0, 0.35);
    -moz-background-clip: padding-box;
    -webkit-background-clip: padding-box;
    background-clip: padding-box;
    z-index: 41999;
}
.dxchartsuiTooltip_TopLeft:before,
.dxchartsuiTooltip_TopRight:before,
.dxchartsuiTooltip_BottomLeft:before,
.dxchartsuiTooltip_BottomRight:before,
.dxchartsuiTooltip_TopLeft:after,
.dxchartsuiTooltip_TopRight:after,
.dxchartsuiTooltip_BottomLeft:after,
.dxchartsuiTooltip_BottomRight:after
{
    border-style: solid;
    content: "";
    display: block;
    position: absolute;
    width: 0;
}
.dxchartsuiTooltip_TopLeft:before,
.dxchartsuiTooltip_TopRight:before,
.dxchartsuiTooltip_BottomLeft:before,
.dxchartsuiTooltip_BottomRight:before
{
    border-width: 10px 5px;
    -moz-background-clip: padding-box;
    -webkit-background-clip: padding-box;
    background-clip: padding-box;
}
.dxchartsuiTooltip_TopLeft:after,
.dxchartsuiTooltip_TopRight:after,
.dxchartsuiTooltip_BottomLeft:after,
.dxchartsuiTooltip_BottomRight:after
{
    border-width: 8px 4px;
}
.dxchartsuiTooltip_TopLeft:before
{
    border-color: transparent transparent rgba(139, 139, 139, 0.35) rgba(139, 139, 139, 0.35);
    top: -20px;
    left: 10px;
}
.dxchartsuiTooltip_TopLeft:after
{
    border-color: transparent transparent White White;
    top: -16px;
    left: 11px;
}
.dxchartsuiTooltip_TopRight:before
{
    border-color: transparent rgba(139, 139, 139, 0.35) rgba(139, 139, 139, 0.35) transparent;
    top: -20px;
    right: 10px;
}
.dxchartsuiTooltip_TopRight:after
{
    border-color: transparent White White transparent;
    top: -16px;
    right: 11px;
}
.dxchartsuiTooltip_BottomRight:before
{
    border-color: rgba(139, 139, 139, 0.35) rgba(139, 139, 139, 0.35) transparent transparent;
    bottom: -20px;
    right: 10px;
}
.dxchartsuiTooltip_BottomRight:after
{
    border-color: White White transparent transparent;
    bottom: -16px;
    right: 11px;
}
.dxchartsuiTooltip_BottomLeft:before
{
    border-color: rgba(139, 139, 139, 0.35) transparent transparent rgba(139, 139, 139, 0.35);
    bottom: -20px;
    left: 10px;
}
.dxchartsuiTooltip_BottomLeft:after
{
    border-color: White transparent transparent White;
    bottom: -16px;
    left: 11px;
}BSJBv4.0.30319l<�#~���#Strings�2�#US�A#GUID�AP:#BlobW�	�%3�g�],�ioN	yt&
0		E		
f		
m		�	�	�	I�	�	<
%
N
�	Y
�	l
I
|
	�
�
�
�
�
	�
	K2~Z�Z
���	
�	
�	Z+:�	
O	[	v	
�	
���	I
th"��"
��I"g�I>I
�	B�	
��
)	
I�
��"��<IH�	��	F�	P�	��	�2��	��	�	!I�LZ�	�	��	e�	u�	��	�I�I
���I2.2;2X2d�	��	�2��	��	�	
c	��	,�	B�	"P�r�	��	��	��	��		�	�	&�	;�	J�	v�	��	��	��	��	��	 �	& �	6 �	O �	d �	x �	� �	!2"$!�:!�	g!�	"{!��!�	�"%
�"�	�"�	�%�%p&�	�&�	
'�	c'�	�'�		(�	D(�	�(�	�(�	()�	
�)	�)�	D*�	�*�	+�	+�	�+�	O,�	�,�	�,�	�-�-�-�-..�-h.I"�.�."0Ia0�-�0�	�0�	�0�	�1�	�2�	�2�	
�2�3�	�3�	�3�	�3�	=4�	g4�	�4�	�4�	�4�	5�	28�	��	j9�	�9�9g:�	�:�:�=�

>	m@�	A�	�A�	YB�	�B�	EEF	"eF�DH+H�II"�P�"R��R�	tS�	�S�	]T�	�T�	IU�	�U�	yV�	W�	pW�	�W�	X�	lX�	5Y�	�Y�	HZ�	�Z�	[[�	�[�	&�]Ed^	�^	_	
�_	�`	\e�e�	�eZh�gi�	Ni�	qi�	
�i�ij�	.j�	
{�%{�	S{�	
�{	
�{	
[}�i
�}�}
ˁ	
[�A�
t��}
����
����
܂��
����
���
-���
H���
c���
|�	
����ȃۃ
��
#��
1���
J���
g��}
����
����
����
�ք���
,��
L��
�����I
Ӆ	�	C�\�l�	
�����Ɔ
6���
A�	O�	��f�
��	"	��7�IK�I��I
ψ�
�	
�	
��	
��
;��
]�	��2
���
��	
�	
�	�6�
G�	X��	��	��	C��	e��	s��	���	���	ˋ�	���	#��	8��	N��	d��	���	���	�2�I���	���	��Iɍ�	ԍ�	��2���	���6���	g��	���	ȏ�	%�26�
N��e�2���	䐎	�24�2���	Ǒ�	ґ�	푎	/�2���	���	���	˒�	咎	�I{�I���	8|ѓ2ٓ2�2���	���	���	˔�	㔎	���	�2B�2��I̕2�2I�2_��	��2���	���	:��	���	Ɨ�	ݗ�	w��	�2�2D��	]��	��	�	0�	@�Z{�	��	Ě	ޚ	"���9�7�	P�Ic�Iv�I
���
��	ÛZ�	
��	
X�	��ĜI��-L�)�[�)�
s�	V��	
&��A�	P�	��a���I��I�	*��X�;�����"�-�.Ρ��.١��.桹�.�����	"t�����	
���i
¢�i
Ң�i
��i
��iP�;�^�;�2����
���i
ʣ�i�	$��	;�ZQ����-k�&Y�E&��E)��}Z��Z
���i
��i
��i�I7��	M�	_�	x�	��	��	��	̨	�	�	�
+���K��	��k�
	�	
%�	
=�	
N���.IfI	��I
������
�I
�I3#I
46I
6HI
8[I
:lI
<�}I
T��I
U��I@Y�ID^�ID`��I@b
&y�
IP(|"IP)�8IP2��LI`6�^Id:�nId:��IX:��I`>��I`>��IP?��IPB��IXC��I�H��I�N�IPN�#IPO�7IPP�GIPQ�ZIPR�tIPS��IPU���IPV��I�V��I�W�I�XIP_	IX`
IXa2IXb?IPjQIPo$cIPp&pIPq(�|IXr.�IPs2��I�t6�I�v9�I�v;��I�v=I�v?�I�vA0I�vDJI�vFiI�vH�I�vJ��IXvL�IwP�IwT��IPwV�IxYIx[)Iz^GIP{a_IP|evIP�l�IP�p��IP�t�I8�y�I8�{�IP�~IP��IP��6���L�!��g�%��}�
����)���Q�1�U�4��
�5��Y�<�]�> �p�B;�]�DY�p�Ht�Y�J��]�L�Ia�P�Ie�T �I
�W�q�\�
�^�B�IV��LV��LV��LV��L�IV��dV��d
B
B
d!
L������)�t?�?�?�?�CT�`�Q���Q���!��Q���Q���Q���Q���Q���Q���Q��Q���B�n�w&�I&�B!,�!1�!>�!N�![�!h�!u�!��!��!��!B!P!X!d!��!��!�B!��!B!��!��!��!��!P�!5�!=�!S�!B!c�!h�!t��!� !�%!��!��!��!*!o[!�g!�s!�!��!�I!��!�!*�!*�!*�!x�!��!�B!��!��!��!�!�!!)!1�!�!h�!,�!F.!R�!n3!�i!n!1�!�s!�s!<�!I�!o�!��!��!��!��!�?F qF �1�F �� �!F �!� �!� �� �1���!!�!.!�F �1�q!�!�! S��!�S��!�S�I#�Q�e#�Q�v#�Q��#�Q��#�Q��#�Q��#�1�#�1�#�1$�1$�1*$�16$�1G$�1^$�1i$�1x$�1�$�1�$�1�$�1�$�1�$�1%�1 %�1=%�1U%�1s%�By-o	�-B�-B�-I�-��-y	.~	.�	).�	<.�K.�Y.��.�	� ��.I{�
-{"B��{�h}�o}�{}�~�~B9�7"� �p#� ��)H!��/�!�p4�!��:�!��E�"�/
h�"�M
h�"�[
l�"�i
h�"�v
l�"��
q�"��
v#��
|	
#��
�	(#�p�
>#�p�
U#��
hc#��
hn#��
hy#�h�#�'h�#�7��#�>�$�G�$���$���
'$���F$�F�N$�R�V$�p��$����$���%�h��%���&�3�&���"&��4&�n�h&�}��&���&��<'���!L'��!x'��"�'��#(�
$((�+#%�(�P*&�)�>�'�>:'�)�>:(�)�p�)�)�>:)�)�p�*�)�>:**�p�+*�>:+l*�p�,t*�p�,�*��H-�*��/+��l0&+��Q1D+��V2b+��[3p+��a4~+��g5�+��m6�+��s7�+��y9�+��;�+���=�+���?�+���A�+��C,���D&,��D9,��DL,�$�D_,�4�Dr,�>�D,��%ED�,�M�D�
jhE�P�E�~�F-�p�H-���H$-�jhH|-�p�H�-�~�I�-�P�KT.���La.�pVLo.�p�M|.���M�.�KN�.�2QP�/�UXQ0�i_R�0�tdS�0��iT�1��{U�1��hU�
��U42�	��U72�	/
hUO2�jhUa2��U|2��V�2�5�WK3�F�Xl3�X�[�3�l�\�3�~�]�3���^�3�P�_(4�~�`�4�p�b�4���b�4��hb�4�p�b5�/
hd5�pd5�X�e/5���f85�p�f�5���g\6���g�6���g7�gx7� g�7�l�g�8�~�h9�X�i :�pj(:�z j0:���j8:�p&jf:�l�l�:�~�m��0n��0n�:�zFn�:�/
hn�:�pLn;���pc;�l�p�;�~�q�;�X�r�s�+s5<�z\sB<���sI<�pbsT<�hlu�<�X�v�<��0w0=��0wk=�w~=�+w�=�zzw�=���w�=�p�w�=�hly>��0zT>��0z�>�z�>�+z�>���z�>�p�z?���|�?�l�|@�~�}4@�X�~|A�z��A����A�p��A��0��A��0��A�z���A�����A�p���A�l��&B�~��@B��0�|B��0��B�����B�/
h��B�p��2C�l��GC�~��`C�X��+E����.E�/
h�1E�p��@E�X���E�p��E����E�����E�p	�F���F�~���F�l���F�~��G��/�(G�p5��G�"���G�5��HH�O���H�l��I�~���I�X���I��E��I�pK��I�X���I�����I�/
h��I�p`�J�X��'J����/J�/
h�2J�pl�DJ�X���J�����J�/
h��J�px��J�X��LK����OK�/
h�RK�p��dK�X���K�����K�/
h��K�p��<L�l��QL�~��iL����lL�/
h�pL�p���L�l���L�~���L�X��M����M�/
h�M�p��(M�X��|M����M�/
h��M�p���M�����M����N�p��N�X��4N����7N����>N�p��PN�X���N�G��+O����.O����8O�p���O�X��ZP����]P�/
h�`P�p
�oP�X���P�����P�p��P�X��Q����$Q�p"�<Q�X���Q�����Q�t=��Q�~H��Q�pN�,R�����R�����R����<S����S�l��DT�~���T�X���X���Y�x�SY����[Y�/
h�^Y�p~��Y�X���[�����[�p��\����\�p��\�`��X\�����\�����\�/
h��\�p���\�X��4]�����]�����]�/
h��]�p���]����^�/
h�^�p��^�X��N^�p��y^�l���^�~���^�����^�p���^�����^�p���^�p���^�X��_����_�p�$_�\�^_�p�h_�X���_�����_�p��_�����_�p!��_����`�p(�`����`�p/�`��6�T`��D�\`����d`�pJ�y`� W��`�����`�p]��`�X���`�����`�pj��`�����`�/
h��`�pv��`�����`�p}��`�����`�p��a�X���a�����a�p���a�X��@b����Hb�/
h�Kb�p��\b�X��c����c�/
h�c�p��`c�� ���c�~���c�l��Pd�X��lf����yf�/
h�|f�p���f�X���f�����f�/
h��f�p���f�X���g�Q!���g�����g�/
h��g�p���g�X��h����h�p��h����h�p��,h�X���h����h�/
h�h�p�h�X�6i�pEi�/
hHi�X��i����i�/
h�i�p%�i�~��i�l��i�X�`j��!,�j����j��!��j�"�j�'"��j�?"�j�W"�
�j�j"
�j�p��j�}"�!k��"�)k�p�1k�p�:k��"�Bk�#�Jk�#�Qk�p�\k��%EPl��%��l��%��l��%�m��%�m��%�(m��%�;m�&�Nm�.&�am�G&�tm�Z&��m��&��m��&��m�	�&��m�	�&��m�	,'�n�	F'�1n�	�'�Dn�	�'� Wn�	�'�!xn�	�'�"�n�	!(�#�n�	1(�$�n�	Y(�%�n�	l(�&�n�	�(	'�n�	�(	(o�	�(
	)o�	
)
	*1o�	W)	+Do�	~)	,Wo�	�)	-jo�	�)	.}o�	�)	/�o�	 *	0�o�	e*&	1�o�	~*&	2�o�	�*-	3�o�	�*-	4�o�	:+4	5p�	[+4	6p�	�+;	7(p�	�+;	8;p�	,B	9Np�	*,B	:ap�	k,I	;tp�	,I	<�p��,P	=�p��,P	=�p��,P	=�p��,P	=�p��,V	=�p��,�=�p�
-=�p�-h>�p�$-l>�p�3-\	?�p�<-?�p�E-b	@�p�S-h	@�p�a-hA�p�m-lA�p��.�	B�p��.�B�p��.hBq�/hB.q�>/hBEq�h/hB\q��/hBtq��/hB�q��/hB�q��/�	B�q�
0�B�q�00�	Br�G0�	Br�pBr�R0hB!r�f0�	B)r�p0�	BLr�z0�	CTr��0�	Cwr��0�	D�r��0�	D�r��0�	D�r�	�0�D�r�	1D�r�1�E�r�+1E�r�	E1�F�r�	U1F�r�e1hG�r��1lG�r��1hHs��1lHs��1�	Is�2�I)s�,2I7s�?2�JDs�^2JRs�}2V	K_s��2�	Kbs��2�	Kos�z K|s��2�	K�s��2�	L�s��2�L�s�3L�s�-3�	M�s�;3b	M�s�I3h	M�s�W3�	N�s�b3�N�s�}3VN�s��3�	O�s��3�	Ot�~
Ot��3
O{t�4�O�t�(4O�t�P4
P�t�s4
P�t��4"
P�t��4)
Q�t��4/
Q�t��45
Q�t�5;
Q�t�+5;
Q�t�K5A
Qu�_5A
Q#u�}5G
Q0u��5K
Q>u��5�RKu��5VRYu��5hSfu�6lStu�76�Twu�F6Tyu�U6�U�u�l6U�u��6P
V�u��6hV�u��6lV�u��6hW�u��6lW�u�7hX�u�"7lX�u�67hY�u�R7lY�u�n7hZ�u��7lZ�u��7h[�u��7l[v��7�\v��7V\'v�8�]4v�8]Bv�B8V
^Jv�X8\
^Wv�v8b
^ev��8�_mv��8�_uv��8h_�v��8l_�v��8h`�v�9l`�v�9ha�v�.9la�v�@9hb�v�U9lb�v�|9i
c�v��9o
cw��9�dw��9dw��9v
e&w�:|
e4w�:v
fAw�):|
fOw�<:�
gWw�R:�
gdw�v:�
gqw��:�gyw��:g�w��:�
h�w�p�hrx��:�h�x��:�h�x�	;�
h�x�	�;	h�x�	<	i�x�	�<	j�x�	=	k�x��=�
ly�#>�
my��>�ny�?�ny��?�
n(y�	�?�o*y�	@�p,y�	�@�
q.y�	�@�
r0y�	+A�
s2y�	rA�
t4y�	�A�
u6y�	B�
v8y�	qB�
w:y�	�B�
x<y�	C�
y>y�	bC�
z@y�	�Ch{Ky�	$Dh{Ny�	}Dh{Qy�	�D{Yy�	$E�
{ay�	mEh{dy�	�E�
{ly�	"F�
{ty�	rF{xy�	�F{�y�	Gh{�y�	{Gh{�y�	�G�{�y�	PH{�y�	�Hh{�y�	�Hh{�y�	KIh{�y�	�Ih{�y�	�I{�y�	(Jh{�y�	mJh{�y�	�Jh{�y�	1Kh{�y�	�Kh{z�	�K�{	z�	BLh{z�	�Lh{z�	Mh{z�	[Mh{z�	�Mh{z�	�Ml{z�	BNh|z��N�|-z��N�|@z�EO�|�z��O�|�z��O|�z�P}	{�MP�~{��P�~{��P~{�.Q!{�wQ�0{��Q��@{�R(��{�_R��{��R/��{�!S/��{��S6�|�T=�|�zTD�|��TK�|�^UR� |��UY�)|�V_�2|��Vf�;|�1Wm�=|��Wt�?|��W{�A|�-X��C|��X��E|��XY�N|�SY��W|��Y��`|�nZ��i|��Z��r|��[��{|�\���|�Y\s��|��\���|��\���|�E]���|��]���|�^���|�r^���|��^���|�'_���|�y_�
�}��_��O}��_/�]}��_��j}�C`��w}��`���}��`���}��`��}�9ah��}�Pah��}�oah��}��ah��}��ah��}��ah��}��ah��}�bh��}�0bh��}�Kbh��}�qbh�~��bh�~��bh�"~��bh�/~�ch�<~�2ch�I~�Pch�V~�zch�c~��ch�p~��ch�}~��ch��~�dh��~�0d��X�<d����Kd���fd�|��udl����5�����d�����d�����d�����S6�ԁ�ET=���3UK�4���UR�d���UY����`V_�Ă��Vf����dY�$��S/�T���d�����d%�����d,���YY����Y��D��&Z��t���Z�����A[��Ԅ��[����G\��2��e��@��eY�O��e�����-e����De�����ke3����reh�����e:�‡��e��ɇ��e@�҇��eh�؇�f���f��3�� fh�;��;fh�U��Sf��l��wf��܈��fG�F���f��M���fh�[���fl�j��g�x��gs���/gP�8��HgZ����fgc����yg��D���g��|���g�����g�����g��X��hh����$h�؏�7h����Iho����Vh����sht�'���hz�7���h�A���h��\���h��h���h������h������h�����i�����$i��ϐ�6i����R�����Q����i��(���i��C���i�Q���i��^���i��l���i��|���i�ܑ��i����
j�l��#j�����#j���w�� ��w���	����{�
����p�����
�,��p����5{'����A{��œ�J{�ӓ�d{-��r{3��p���p:��pM��p��pY��{_��{g��{u,��p�5���{|
�pY��{���{���{uD��p�M���{�]���{�e��p�pY��{���{���{u#t��|M$���p�$���|�&���*|�'���	@|�'Ɣ�	�|�'Ҕ�p�'ڔ��}�'���}�'���}�'��p�'���h�,2��p,<��
~�-&~5~@~T~_~h~h~h~h~n~t~x~x~�~t~��~�~�~�~�~�~�~�~�~�~��~�~�~�~�~t~�~�~�~�~�~h~h~h~h~h~��~�~h~h~h~h~�~�~�~�~,h~,h~,h~,h~,�~,�~,�������h~h~h~#h~h~����,h~��n�����,�1��BP�BP��BP&�BP&B���BPBP�P5��S�Bc���Bc��Bc�o�������1B��7���c*�*�J*x��S������1���1�<Icmo�����w������������������F F 1F �F �� �1� ����!.!�F �F 1F �q!��!�����nh~h~h~�B�-��h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~h~�
��h~h~h~h~h~h~h~h~h~h~h~h~h~t~t~��t~�!�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�,�oB4�8�<�G�R�5~5~a�d�h�z�h~d���~
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
��,����d�����h~��������ƀ̀ڀ���ƀ̀ڀ�����+��+�h~�8�t~,C�O�_�t�,C�}�O�_�t�,h}�~h}�~��!�������߁!�������h~�{��h~h~-{B����
��
�����B�����
��
�����B�h~�{����
��
�����#�,�h}o}��+�5�,
$$$
$X-X1XX=XAXEXIXMdiem1��1Z�1��1�1��1��1P��;�
<	�<	=	�=	>�
�>�
?�z?�a�?�
Y�?�YU@�Y�@�
YA�
YeA�
Y�A�
YB�
YMB�
Y�B�
Y�B�
YRC�
Y�C�
YDhYgDhY�DhYpY_E�
Y�EhYF�
YZF�
Y�FYGY]GhY�GhYH�Y�HY�HhY7IhYR0hY�IhYJYaJhY�JhYKhYsKhY�KhY2L�Y�LhY�LhYGMhY�MhY�MhY6NlY�NhY�N�Y1O�Y{O�Y�O�Y�OYDPY�P�Y�P�Y QYiQY�QYR�YTR(Y�RYS/YaS/Y�S6YET=Y�TDY3UKY�URY�UYY`V_Y�VfYgWmY�WtYX{YcX�Y�X�YYYY�Y�Y&Z�Y�Z�YA[�Y�[�YG\�Y�\sY7�Y']�Y�]�Y^��V^���^��_��f_���_�
�����/�6`���`���`���`��(a��|���|�p�p!p)p1p9pApIpQpYpapiplqp�yps�ps�pl�p�p�p�p�pl�p�p�p��pV�p�	p#������������兗�������h��h�	�/����{�"��q1��	p�{���p�p4�:!���������!���)ps)'h)
��)"��)p�)p�1A{�9H��Ap�Ip��������{�p�p�p�������ʇ!Շ�!�$p�!�%$�*$�0!�61�1%������{�	+�P)P_9@�ea@��ip9]��9o�kA}�q,{�q���4��hq���4ň���,��<��D{�>�9݈���������>�9݈��&��L�	Q>Im��Ix���"���)L��<T�����gdp�d�*9���9݈�9���a���aĉ�aΉ�9݈�9։�a܉�a쉼a���a��9݈�i����>_9��9m���$���>�Q>��>�d���l���l��hyA��>yL�yR�����{	{&����Ac�=�w�h���h���h�ϊh��h����3�I�[�O	{U���b���h���|�����䋎������������䋹���a	A{��Ȍ��،h�z tp����|��<�������q	��i"�ht�*t��t{��.�&�?�,�O�&�`�3�p�:�~�?i��i%��if0�iz0����P���V�	��\���b���n�ߍt��G
����	�G
�	%�G
��G
��G
�,�h�<�G
�R�G
�g�G
�|�G
�������h�ɎG
�َG
��G
�G
��G
�%�G
����
�����������	����h�(���2������I��w��	{����	{!���(����{����h�	Ώ��	Ώ��	׏��	�G
	��	َ�	��G
	�G
3�V�	>�G
�	F�G
���\���y�]�����h����{�)Q!�)m��i	r������
���
���
Ӑh
��1��	!�
N�G

b�G
ar�a�!a��!�	��,i��1)
a-h)
׏�i�7q׏�q(�=9��CyA{�
�Iq	�Oq	<�]����{�q	M��q	m������{����I
�4�Q
{�a
���q
��!&��.��J��q	]��y
��y���
����
Ɠ���h�ň��
�9���
���
@�$�
W�*q	n���
��0�
��6�
”<�
��B�
��H�
”<،h�
1���
R�h�c�G
y���
p�����y
���q	���
ݕ�y
�������
.�G
�
9���
R�G
R�G
"�h	n���x������)�A{������
���������
Ֆ���"��G
)n��!��!��I+��IL�+Y[�>Yq�>Y��DY���Y�hY�hY�hY1�hYE�hY]�hY��PY��b	�p*Y��b	Y��hYԘ�QpV�
��aňG
a5��i���i���q��q��A+��AL��yO��yg���u��A{��~�\	�������h���b	�șb	y"�h�ܙ��s9p�9}"���*qpypl�p�Ap�IpYIK��Id���p`�p��p�p��p�p��p��pY�pY���������p*���������DP����{��p�ћ��
��������y։��6���>���F��p�
r���{�A��hA��h{�i��ip����!����	��o�R0h�f0�	� ��1i��Ap�p0�	�z0�	��0�	��0�	��0�	��0�	��0��1�1��+1�e1h��1l��1h��1l��1�	�2��,2�?2��^2�}2V	��2�	��2�	�-3�	�;3b	�I3h	�W3�	�b3��}3V��3�	��3�	�~
p���3��������4��(4�P4
���
���"
��4)
��4/
��45
�5;
�+5;
�G
�ܝK
��5���5V��5h�6l�������4�:��fh��fl�Q�h�m�l���l���h�ƞl��h��l�6���F��k�I���I��VIΏ�I���B8V
I�
\
I�
b
��8���8�IM
hI[
lIa-hIm-l���h���l�@9h�U9l�՟t��z��9v
�:|
�:v
�):|
�R:�
�v:�
����
Qp�Qp�YX��pip������$ap0�	a�0�	pYpYpFy�:����0�ˠk�։s�
�|�
ZF�af0�	�ňG
az0�	ip��/���p��������O�DP��Q��R��p�����p��p��p��p�A{����)7�V^��^�_�f_ �_
 � ��h�`. �`6 �9ah��ah��ah�-�h��ah�bh�0bh�Kbh�qbh�O�h��bh�ch�2ch�Pch�zch��ch��chiu�B �y�H p����Q �%���[ ��h���h��p������͢z �ݢ��p�
�
����������"���:�� 	
h�� 
�P�9��C!
���9��c)
ϣ�)
棠9�� )
��1
p1
����{� ��{� ��{� ��{� ��{� ��{!�{!	�{� ��{-!�{� �{S!!�{a!)�{o!1�{}!9�{�!A�{�!�e�y�:�9
eY�
�h�A
G��!A
0d�!�
c��!I
��!�p�hA
���!�-e�a���!Q
���!A
���!�ƤhA
֤�!�
�Y�lY
�Y�9Y�:�
��A
$��!q7�A
A��!�De��|��!�p�!�ke3�f�f��;fh� fh�wf�����������fG���hѥ"�ܥ"�p"��",pV,��,M�F"a
p�a
j�l���O"������������i
p��ƦY"�ҦQ �হ�馹�����q"9H�"9
	��9��"9��"Y���qň�9݈�"p�f�q
p�q
P:i���q
>�|f�
J���
W��"�{�
g���De�y
{��"�
���"�
���"��h��§�)�h���h�ܧ�槍�$i��6i��Rl��i�"4p*��i��i���il�
p
#�
,�#�
p��#j��#j��
p�pl�
p#�p��
p&'�
pl�
p��
plqplqpV�
plqp�p�5�
p�p�B��	�{�p�	i�	{�6���6�A{���6[��p�6���6��������Ʃ-��3�p�p��|�6�p�6�|�����*|��p�p�9H��6���!p�6�p�W��6	p7�
~�	i��d�PUZ_ P$U\�`�d�l�p�t�x�|����(7,l0�4*8E<n@qD�H�.S�9.�7.�T7.K�.[�.cg.k':.s0:.�_7.�~7.��.��7.��7.��7.�~7.�.U.8.C8.�8.�8.(9.x9.#�.+�9.;�9.C�9Ik�IsUI��isUi�vik��sU�����&#�sU�����0#��U#�+�p���C;�k K#3ySY#c�6�;�6�cU)��)��)��)��I�I��I��I��i��i��i�0i������+U��p�#g�+U�#g��p�������#�#�p	��	p	#�#)��)#�#)pI#�#IpI��ipi#�#i���#�#����p�p�#�#�������#�#�p�#�#����p	p	��	#�#	��#)��#I��#IUI#gIk�#I��#ik�#i�p$i��$iUi#g�U���$���$�k�#�#g�k�%���$���#���$�k�%���#���$���&�#�#������&���&�p	��&	p	��$)p)�-')��$I�['IUI�&#Ik�'ikZ(i�7(i��#����#p�p�U���(���#�k�#�#�#����p��)���#�k�#�U	�7)	�S)	k�#	#p)��)p)#p)UI��IpI��i�a)i��#ik�#iU��)���#�k�#��S)���)�U���)���#�U��S)��*���)�#�#	�+	�*	U	�S))�c+)p)U)�S))�H+I��IpIUi�&#i�i�{,ipi��,���-�k�#�U��&#��&#���-�U���-��&#�p��9.��.��S)�U	��	#�#)��)#�#I#�#I��i��iUip�U����p����p����p�p���	��&	U	��	p	#p)�r/)�K/)#U)��I+�I��/I�r/IUI#gi#Ui�r/i3�i��/������&�3��p���/���$�3��#U�#U�3����/���$�� 0�#U���$�3�	#U	��$	3�	�N0)��$);�0)#U)�w0I��0I+UI��0I��0IC�i#gi��0i��0iU�KG1���0��1�#g�U���1���0���0��p�+U���1�#g�3��� 2���0	3�	#U	��0	�J2)�o2)#U)C�)3�)�r/I3�I��2I��$i#Ui��2iK�2�C���o3���3������#U���3�K�3���$�K�3��O4���$���$��r4�U�p�k�#	��4	��$	U	p	k�4)�`5)k�#)��$)U)pI��5IC�I[UI��3I��I#UIS�5i��i#Ui#�#i�r/�U4���>�U$?�U�ecUfcU���<LY�.N[n�������-C\hl���Hh{���H���}���N����%17J_w����Xw��� g � � � � � � � � � � !!!!'!5!;!A!G!M![!i!w!�!�!�!"
"&"c"�"�"�"�"�"�"##�6�6X=jtOj|aj�pj��j��j��"��j��j��"��j��j��jk k	=k
Rkrk�k�k�k!gq�q:r�xr��r��r�s�Hs�	 "$ &!("+#,$-%/&1'3(5)7*9+;,<->.@/B0D1E2F3I4M5N6O7Q8S:U;V=W?X@YAZB[C\D^E`FaGcHdIeJfKhLjMlNnOqPrQsRuSwTyU|V}XY�[�\acdef	\�v�������Z1b1'���'�����������\�'���\���<6H<��HV\�Ht��H�����H���H�����\���\�<6����?�U��\���\���\���\���\���\���\�\���������������\��������Xc�%���\�������\���\���\����������������Q�� d������\���������\���\���\���\�^!���\�������\�\���\����"��"��"��"�1#�>#��k��k��k��k��,�l�
l�{!�l�l��.�'l�3l�El�nl��l��l��l��l�m�"m�6m�Im
<6Pm�[m
am
hm
�0
�0
pm�|m��m��m��m��1 
�m��m��m��,&
n,
H<n2
)n�9n8
Cn�B>
Mn�dnD
�3J
P
pnV
�n�=4a
�ng
�nm
�ns
�4y
5
�n
�n�
�n�
�n�
o�7o�Oo�Zo�mo�
~o��o��o��o��o��o�p�p�+p�
=p�
�"��"�Wp�mp�~p��p�j9�
�p��p�
�p�
�p�
� �
g:�
�p��p�
�p�
�s��s�
t�Ct6vt�
�t��t�
'u�
[u�
�u�
�u�v�Vv��v�
�v�w�Iw��w��w�
�w�"x�jx��x��x�0y�iy��y��y�-z�nz��z��z�{%{A�{��{G<S|�8|S�|� }��i��}��}�~�����	��
��
		�
�
��
����U��Y��Z��^��h��i��j��k� � l!�"�"m#�$�$y%�&�&z'�(�(|)�*�*+W,X,�-Z.Y.�/`0a0�1c2b2�3d4e4�5g6f6�7i8h8�9j:k:�;�=�?�A�C�E�G�I�K�M�O�Q�S�U�W�Y�[�]�_�a�c�e�g�i�k�m�o�q�s�u�w�y�{}��	�
�
������� �!�$�&�*�+�/�0�2�3�9�;�?�D�F�H�J�M�N�P�Q�T�V�W�Y�[�^�a�b�e�f�l�m�p�q�t�u�v�y�{�~�����������������������������������	�	���
�
������������!�#�%�'�)�+�-�/�1�1�3�3�5�7�9�;�;�=�=�?�?�A�A�C�C�E�G�G�I�I�KMOQQSUUW	YY
[]]
_aceggikkmoqsuwy{{ }}"!#�$�%�&�'�)�(�*�+�-�,�/�.�0�1�3�2�4�5�7�6�8�:�9�;�<�>�=�@�?�B�A�D�C�E�F�H�G�I�J�K�L�M�N�O�Q�P�R�V�l�m�n�o�p�q�r�s�t�u�v�w�x�y�z�{�|�}�~����������������������������1�5�6�7�89<JPT	UW
XY]@BDF	HJ
LXuX�X�X�X�X�X�X�X�!X�#X�%X�'X�)X�+X�-X�/X�1X�3X�5X�7X�9X�;X�=X�?X�AX�CX�EX�GX�IX�KX�MX�OX�QX�SX�UX�WX�YX�[X�]X�_X�aX�cXeXgXiXkXmX
oXqXsX�XwXyX{X}XX�X�X �X"�X$�X&�X(�X*�X,�X.�X0�X2�X4�X6�X8�X:�X<�X>�X@�XB�XD�XF�XH�XJ�XL�XN�XP�XR�XT�XV�XX�XZ�X\�X^�X`�Xb�Xd�Xf�Xh�Xj�Xl�Xn�Xp�Xr�Xt�Xv�Xx�Xz�X|�X~�X��d��d�������4F{�������6?h���kt����+4="?"�"�
�j�	]	

r	

�	




�

�]

���t�y��'���)�����
G�`�������YXZX<Module>DevExpress.XtraCharts.v13.1.Web.dllChartElementTypeDescriptorDevExpress.XtraCharts.NativeChartElementDescriptionProviderAttributesSubstituterChartImagePositionDevExpress.XtraCharts.WebToolTipOpenModeChartToolTipControllerClientHitInfoSerializerIJavaScriptObjectConverterJSDefaultConverterJSStringConverterJSBooleanConverterJSFloatConverterJavaScriptWriterClientObjectModelHelperClientChartElementBaseClientChartElementsBaseClientChartElementsClientChartElementListClientChartElementHitInfoClientChartElementNamedClientWebChartControlClientXYDiagramBaseClientXYDiagram2DClientXYDiagramClientSwiftPlotDiagramClientXYDiagramPaneClientXYDiagram3DClientRadarDiagramClientRadarDiagramMappingClientVertexClientAxisClientAxis2DClientAxisXYDiagram2DClientAxisTitleClientAxisLabelItemClientAxisRangeClientAxisIntervalClientIntervalBoundsCacheClientIntervalBoundsCacheItemClientIntervalBoundsClientAxisScaleClientQualitativeAxisScaleClientNumericalAxisScaleClientDateTimeAxisScaleClientKnownDateClientStripClientConstantLineClientSeriesClientSeriesPointClientSeriesLabelClientLegendClientTitleClientIndicatorClientFinancialIndicatorPointClientFinancialIndicatorClientTrendLineClientFibonacciIndicatorClientSingleLevelIndicatorClientRegressionLineClientMovingAverageClientSimpleMovingAverageClientExponentialMovingAverageClientWeightedMovingAverageClientTrianglarMovingAverageClientAnnotationClientTextAnnotationClientImageAnnotationClientToolTipPositionClientToolTipMousePositionClientToolTipFreePositionClientToolTipRelativePositionClientToolTipControllerClientCrosshairOptionsClientCrosshairValueItemClientAxisLabelBoundsClientCrosshairLabelPositionClientCrosshairMousePositionClientCrosshairFreePositionClientLineStyleClientFontClientCrosshairAxisLabelOptionsChartClientSideEventsDXWebChartsLicenseProviderWebChartControlStylesResFinderWebChartControlPaletteWrapperCollectionWebChartControlPropertyDescriptorCollectionPaletteWrapperCallbackStateEventArgsCallbackStateLoadEventHandlerCallbackStateLoadEventArgsCallbackStateSaveEventHandlerCallbackStateSaveEventArgsCustomCallbackEventArgsCustomCallbackEventHandlerChartDataHelperChartControlBuilderExportPrintingInfoDevExpressXtraChartsWebLocalizedDescriptionAttributeSystemSystem.ComponentModelCustomTypeDescriptorTypeDescriptionProvidermscorlibObjectEnumDevExpress.XtraCharts.v13.1DevExpress.XtraChartsChartElementIHitRegionSerializerDevExpress.Web.v13.1DevExpress.Web.ASPxClassesCallbackClientSideEventsDevExpress.Data.v13.1DevExpress.Utils.AboutDXLicenseProviderStylesBaseASPxDataWebControlIChartContainerIServiceProviderDevExpress.Utils.CommandsICommandAwareControl`1DevExpress.XtraCharts.CommandsChartCommandIdISupportInitializeICustomTypeDescriptorDevExpress.Charts.v13.1.CoreDevExpress.Charts.NativeICoreReferenceDevExpress.Web.ASPxClasses.InternalIRequiresLoadPostDataControlIEndInitAccessorSystem.CollectionsCollectionBasePropertyDescriptorCollectionEventArgsMulticastDelegateDataHelperSystem.WebSystem.Web.UIControlBuilderIChartControlBuilderIDisposableDescriptionAttribute.ctorAttributeCollectionHasNestedTagAttributeGetPropertiesTypeGetTypeDescriptorcompletedPerformvalue__LeftTopRightBottomOnHoverOnClickshowImageshowTextopenModeimagePositionget_ShouldSerializePropertiesget_ShowImageset_ShowImageget_ShowTextset_ShowTextget_ImagePositionset_ImagePositionget_OpenModeset_OpenModeShouldSerializeImagePositionShouldSerializeShowImageShouldSerializeShowTextShouldSerializeOpenModeShouldSerializeAssignToStringCreateObjectForCloneShouldSerializePropertiesShowImageShowTextImagePositionOpenModeIsStartPointIsBezierPointSystem.Collections.GenericDictionary`2CalculateIDwriterobjectsadditionalObjectsSeriesPointDiagramPointseriesPointRelativePositionsget_Objectsget_AdditionalObjectsSystem.TextStringBuilderSystem.DrawingRectangleFDevExpress.XtraCharts.Native.IHitRegionSerializer.SerializeRectangleSerializeRectangleSystem.Drawing.Drawing2DGraphicsPathDevExpress.XtraCharts.Native.IHitRegionSerializer.SerializePathSerializePathDevExpress.XtraCharts.Native.IHitRegionSerializer.SerializeEmptyRegionSerializeEmptyRegionIHitRegionDevExpress.XtraCharts.Native.IHitRegionSerializer.SerializeUnionExpressionSerializeUnionExpressionDevExpress.XtraCharts.Native.IHitRegionSerializer.SerializeIntersectExpressionSerializeIntersectExpressionDevExpress.XtraCharts.Native.IHitRegionSerializer.SerializeExcludeExpressionSerializeExcludeExpressionDevExpress.XtraCharts.Native.IHitRegionSerializer.SerializeXorExpressionSerializeXorExpressionPointFSerializePointSerializePointsSerializeRegionTypeSerializeRegionExpressionSerializeObjectIDSerializeAdditionalObjectIDSerializeToolTipRelativePositionSerializeHitRegionHitTestParamsSerializeHitParamsHitTestControllerSerializeObjectsAdditionalObjectsdefaultConverterstringConverterbooleanConverterfloatConverterbuilderArrayWriteArrayWriteWritePropertyBeginWritePropertyWriteSerapatorBeginWriteObjectEndWriteObjectBeginWriteArrayEndWriteArrayValueLevelValueLevelToStringSeparatorget_ShouldSerializeInitializeHitInfoprefixpostfixIEnumerable`1elementsget_ElementsElementsAddarrayPrefixarrayPostfixdatePrefixdatePostfixpropertySeparatorerrorUpdateTimeStringDateTimeGetDateTimeValueStringIEnumerableGetArrayValueStringEscapeCharEscapeStringGetValueStringfirstPropertyList`1childElementshitInfoget_ChildElementsget_ShouldSerializeChildElementsget_InnerObjectget_TypeNameSerializeSeparatorSerializeChartElementsSerializeHitInfoSerializePropertySerializePropertiesFillChildElementsGetElementNameColorGetColorStringChildElementsShouldSerializeChildElementsInnerObjectTypeNameidisAdditionalObjectget_Idget_IsAdditionalObjectIdIsAdditionalObjectnamechartControlclientXYDiagramclientLegendclientSeriesclientTitlesclientAnnotationsclientToolTipPositionclientToolTipControllerclientCrosshairOptionsCreateClientXYDiagramCreateClientSeriesCreateClientTitlesCreateClientAnnotationsCreateClientToolTipPositionChartchartDiagramdiagramclientAxisXclientAxisYget_Chartget_DiagramCreateClientAxisXCreateClientAxisYclientSecondaryAxesXclientSecondaryAxesYclientDefaultPaneclientPanesXYDiagram2DCreateClientPanesCreateClientSecondaryAxesXCreateClientSecondaryAxesYXYDiagramSecondaryAxisCollectionCreateClientSecondaryAxesSwiftPlotDiagramPaneAxesDatadataXYDiagramPaneBasepaneclientAxisLabelBoundsCreateClientAxisLabelBoundsXYDiagram3DclientRadarDiagramMappingRadarDiagramRadarDiagramMappingmappingclientVerticesVertexvertexAxisBaseaxisclientRangelabelItemsscaleget_AxisSetClientAxisScaleAxisclientAxisTitleclientIntervalBoundsCacheclientStripsclientConstantLinesclientIntervalscrosshairAxisLabelOptionsAxis2DCreateClientStripsCreateClientConstantLinesCreateClientIntervalsAxisTitletitleAxisLabelItemitemAxisRangerangeAxisIntervalintervalclientItemsIntervalBoundsCachepaneIDclientIntervalBoundsListIList`1IntervalBoundsintervalBoundsCreateQualitativeMapmapNumericalMapWeekdayCoreWeekdaysToStringDateTimeMapDateTimeMeasureUnitmeasureUnitDateTimeGridAlignmentgridAlignmentworkdaysOnlyworkdaysholidaysexactWorkdaysIWorkdaysOptionsdateStripstripConstantLineconstantLineSeriesseriesclientPointsclientCrosshairValueItemsclientLabelclientIndicatorsNullable`1colorget_Colorget_SeriesCreateClientPointsCreateClientCrosshairValueItemsCreateClientIndicatorspointScaleTypeargumentScaleTypevalueScaleTypeget_Argumentget_ValuesArgumentValuesSeriesLabelBaselabelLegendlegendStringAlignmentAlignmentToStringChartTitleDockStyleDockToStringDockableTitleIndicatorCreateInstanceindicatorFinancialIndicatorPointclientPoint1clientPoint2FinancialIndicatorTrendLineFibonacciIndicatorSingleLevelIndicatorRegressionLineMovingAverageKindMovingAverageKindToStringMovingAverageSimpleMovingAverageExponentialMovingAverageWeightedMovingAverageTriangularMovingAverageAnnotationannotationget_AnnotationTextAnnotationget_TextAnnotationImageAnnotationToolTipPositionpositionToolTipMousePositionToolTipFreePositionToolTipRelativePositiontoolTipControllerargumentLineStylevalueLineStyleCrosshairOptionscrosshairOptionsCreateClientCrosshairLabelPositionCrosshairValueItemaxisNameRectanglelabelBoundsCrosshairLabelPositionget_PositionPositionLineStylelineStyleFontfontCrosshairAxisLabelOptionscrosshairLabelFontSerializeColorPropertyClientClickEventHandlerClientMouseMoveEventHandlerget_ObjectHotTrackedset_ObjectHotTrackedget_CustomDrawCrosshairset_CustomDrawCrosshairget_ObjectSelectedset_ObjectSelectedAddEventNamesObjectHotTrackedCustomDrawCrosshairObjectSelectedProductKindget_KindKindLoadingPanelStyleget_LoadingPanelLoadingDivStyleget_LoadingDivGetCssClassNamePrefixLoadingPanelLoadingDivChartDefaultCssResourceNameGlobalLoadingKeyexportPrintingSigncallBackResultSeparatorcallBackHiddenFieldNamecallBackChartPropertyNameimageIDcustomDrawSeriescustomDrawSeriesPointcustomDrawCrosshaircustomDrawAxisLabelcustomPaintboundDataChangedpieSeriesPointExplodedendLoadingobjectSelectedcallbackStateLoadcallbackStateSavecustomCallbackdateTimeMeasurementUnitsCalculatedcustomizeAutoBindingSettingscustomizeXAxisLabelscustomizeResolveOverlappingModecustomizeSimpleDiagramLayoutpivotGridSeriesExcludedpivotGridSeriesPointsExcludedcustomizeLegend.cctorGetGlobalLoadingSetGlobalLoadingHttpContextGetGlobalLoadingCounterPageProcessImageRequestadd_CallbackStateLoadremove_CallbackStateLoadadd_CallbackStateSaveremove_CallbackStateSaveadd_CustomCallbackremove_CustomCallbackCustomJSPropertiesEventHandleradd_CustomJSPropertiesremove_CustomJSPropertiesCustomDrawSeriesEventHandleradd_CustomDrawSeriesremove_CustomDrawSeriesCustomDrawSeriesPointEventHandleradd_CustomDrawSeriesPointremove_CustomDrawSeriesPointCustomDrawCrosshairEventHandleradd_CustomDrawCrosshairremove_CustomDrawCrosshairCustomDrawAxisLabelEventHandleradd_CustomDrawAxisLabelremove_CustomDrawAxisLabelCustomPaintEventHandleradd_CustomPaintremove_CustomPaintHotTrackEventHandleradd_ObjectSelectedremove_ObjectSelectedBoundDataChangedEventHandleradd_BoundDataChangedremove_BoundDataChangedPieSeriesPointExplodedEventHandleradd_PieSeriesPointExplodedremove_PieSeriesPointExplodedDateTimeMeasurementUnitsCalculatedEventHandleradd_DateTimeMeasurementUnitsCalculatedremove_DateTimeMeasurementUnitsCalculatedEventHandleradd_EndLoadingremove_EndLoadingCustomizeAutoBindingSettingsEventHandleradd_CustomizeAutoBindingSettingsremove_CustomizeAutoBindingSettingsCustomizeXAxisLabelsEventHandleradd_CustomizeXAxisLabelsremove_CustomizeXAxisLabelsCustomizeResolveOverlappingModeEventHandleradd_CustomizeResolveOverlappingModeremove_CustomizeResolveOverlappingModeCustomizeSimpleDiagramLayoutEventHandleradd_CustomizeSimpleDiagramLayoutremove_CustomizeSimpleDiagramLayoutPivotGridSeriesExcludedEventHandleradd_PivotGridSeriesExcludedremove_PivotGridSeriesExcludedPivotGridSeriesPointsExcludedEventHandleradd_PivotGridSeriesPointsExcludedremove_PivotGridSeriesPointsExcludedCustomizeLegendEventHandleradd_CustomizeLegendremove_CustomizeLegendBorderget_BorderLeftget_BorderTopget_BorderRightget_BorderBottomBackgroundImageget_BackgroundImageget_Cursorset_Cursorget_EncodeHtmlset_EncodeHtmlget_Fontset_Fontget_ForeColorset_ForeColorget_Enabledset_EnabledseriesSerializableloadingendLoadingCompletedlockChangeServiceCounterdtProjectPathSystem.Web.UI.WebControlsImageimageWebControlpanelStateBagcallbackStateHiddenFieldcallbackStateFieldcallBackResultalternateTextdescriptionUrlAspxSerializerWrapper`1diagramSerializerWrappercustomDrawEventsListenersCountSystem.Drawing.ImagingImageFormatget_ImageFormatget_ProjectPathget_IsToolTipsEnabledget_HasClientCustomDrawCrosshairEventHandlerget_HasClientObjectHotTrackedEventHandlerget_HasClientObjectSelectedEventHandlerget_HasServerObjectSelectedEventHandlerget_HasCustomCallbackEventHandlerget_IsCallbackStateInitializeget_CallbackStateget_ActualAlternateTextDataContainerget_ChartDataContainerget_Stylesget_DesignModeUnitget_Widthset_Widthget_Heightset_HeightRectangleIndentsget_PaddingEmptyChartTextget_EmptyChartTextSmallChartTextget_SmallChartTextget_PaletteNameset_PaletteNameget_IndicatorsPaletteNameset_IndicatorsPaletteNameget_DataAdapterset_DataAdapterget_AutoBindingSettingsEnabledset_AutoBindingSettingsEnabledget_AutoLayoutSettingsEnabledset_AutoLayoutSettingsEnabledPivotGridDataSourceOptionsget_PivotGridDataSourceOptionsget_AppearanceNameset_AppearanceNameget_AppearanceNameSerializableset_AppearanceNameSerializableget_BackImageBorderWrapperget_BorderRectangularBorderget_BorderOptionsset_DiagramIListget_DiagramSerializableget_DiagramTypeNameset_DiagramTypeNameRectangleFillStyleget_FillStyleget_BackColorset_BackColorget_Legendget_PaletteBaseColorNumberset_PaletteBaseColorNumberAnnotationCollectionget_AnnotationsAnnotationRepositoryget_AnnotationRepositorySeriesCollectionget_SeriesSerializableget_SeriesDataMemberset_SeriesDataMemberSeriesNameTemplateget_SeriesNameTemplateSortingModeget_SeriesSortingset_SeriesSortingSeriesBaseget_SeriesTemplateChartTitleCollectionget_TitlesAppearanceRepositoryget_AppearanceRepositoryPaletteRepositoryget_PaletteRepositoryget_IndicatorsPaletteRepositoryget_PaletteWrappersget_IndicatorsPaletteWrappersget_SideBySideBarDistanceVariableset_SideBySideBarDistanceVariableget_SideBySideBarDistanceFixedset_SideBySideBarDistanceFixedget_SideBySideEqualBarWidthset_SideBySideEqualBarWidthget_FakeObjectset_FakeObjectget_ClientInstanceNameset_ClientInstanceNameget_ClientSideEventsget_EnableClientSideAPIset_EnableClientSideAPIget_EnableClientSidePointToDiagramset_EnableClientSidePointToDiagramget_EnableCallBacksset_EnableCallBacksget_EnableCallbackAnimationset_EnableCallbackAnimationget_EnableCallbackCompressionset_EnableCallbackCompressionget_SaveStateOnCallbacksset_SaveStateOnCallbacksget_LoadingPanelDelayset_LoadingPanelDelayget_LoadingPanelTextset_LoadingPanelTextImagePropertiesget_LoadingPanelImageget_LoadingPanelImagePositionset_LoadingPanelImagePositionget_LoadingPanelStyleget_LoadingDivStyleget_ShowLoadingPanelImageset_ShowLoadingPanelImageget_ShowLoadingPanelset_ShowLoadingPanelget_ClientVisibleset_ClientVisibleget_RuntimeSelectionset_RuntimeSelectionBinaryStorageModeget_BinaryStorageModeset_BinaryStorageModeget_AlternateTextset_AlternateTextDevExpress.UtilsDefaultBooleanget_CrosshairEnabledset_CrosshairEnabledget_ToolTipEnabledset_ToolTipEnabledget_ToolTipControllerget_CrosshairOptionsToolTipOptionsget_ToolTipOptionsget_DescriptionUrlset_DescriptionUrlget_JSPropertiesBeginInitEndInitDevExpress.Utils.KeyboardHandlerCommandBasedKeyboardHandler`1DevExpress.Utils.Commands.ICommandAwareControl<DevExpress.XtraCharts.Commands.ChartCommandId>.get_KeyboardHandlerget_KeyboardHandlerDevExpress.Utils.Commands.ICommandAwareControl<DevExpress.XtraCharts.Commands.ChartCommandId>.add_BeforeDisposeadd_BeforeDisposeDevExpress.Utils.Commands.ICommandAwareControl<DevExpress.XtraCharts.Commands.ChartCommandId>.remove_BeforeDisposeremove_BeforeDisposeDevExpress.Utils.Commands.ICommandAwareControl<DevExpress.XtraCharts.Commands.ChartCommandId>.add_UpdateUIadd_UpdateUIDevExpress.Utils.Commands.ICommandAwareControl<DevExpress.XtraCharts.Commands.ChartCommandId>.remove_UpdateUIremove_UpdateUICommandDevExpress.Utils.Commands.ICommandAwareControl<DevExpress.XtraCharts.Commands.ChartCommandId>.CreateCommandCreateCommandExceptionDevExpress.Utils.Commands.ICommandAwareControl<DevExpress.XtraCharts.Commands.ChartCommandId>.HandleExceptionHandleExceptionDevExpress.Utils.Commands.ICommandAwareControl<DevExpress.XtraCharts.Commands.ChartCommandId>.FocusFocusDevExpress.Utils.Commands.ICommandAwareControl<DevExpress.XtraCharts.Commands.ChartCommandId>.CommitImeContentCommitImeContentSystem.IServiceProvider.GetServiceGetServiceDevExpress.XtraCharts.Native.IChartContainer.add_ObjectHotTrackedadd_ObjectHotTrackedDevExpress.XtraCharts.Native.IChartContainer.remove_ObjectHotTrackedremove_ObjectHotTrackedChartScrollEventHandlerDevExpress.XtraCharts.Native.IChartContainer.add_Scrolladd_ScrollDevExpress.XtraCharts.Native.IChartContainer.remove_Scrollremove_ScrollChartScroll3DEventHandlerDevExpress.XtraCharts.Native.IChartContainer.add_Scroll3Dadd_Scroll3DDevExpress.XtraCharts.Native.IChartContainer.remove_Scroll3Dremove_Scroll3DChartZoomEventHandlerDevExpress.XtraCharts.Native.IChartContainer.add_Zoomadd_ZoomDevExpress.XtraCharts.Native.IChartContainer.remove_Zoomremove_ZoomChartZoom3DEventHandlerDevExpress.XtraCharts.Native.IChartContainer.add_Zoom3Dadd_Zoom3DDevExpress.XtraCharts.Native.IChartContainer.remove_Zoom3Dremove_Zoom3DQueryCursorEventHandlerDevExpress.XtraCharts.Native.IChartContainer.add_QueryCursoradd_QueryCursorDevExpress.XtraCharts.Native.IChartContainer.remove_QueryCursorremove_QueryCursorDevExpress.XtraCharts.Native.IChartContainer.get_HasCustomDrawEventsListenersget_HasCustomDrawEventsListenersDevExpress.XtraCharts.Native.IChartContainer.get_ShowDesignerHintsget_ShowDesignerHintsDevExpress.XtraCharts.Native.IChartContainer.get_LogoVisibleget_LogoVisibleDevExpress.XtraCharts.Native.IChartContainer.get_ChartDevExpress.XtraPrintingIPrintableDevExpress.XtraCharts.Native.IChartContainer.get_Printableget_PrintableDevExpress.XtraCharts.Native.IChartContainer.get_IsDesignControlget_IsDesignControlDevExpress.XtraCharts.Native.IChartContainer.get_ServiceProviderget_ServiceProviderIComponentDevExpress.XtraCharts.Native.IChartContainer.get_Parentget_ParentGraphicsUnitDevExpress.XtraCharts.Native.IChartContainer.get_DisplayUnitsget_DisplayUnitsDevExpress.XtraCharts.Native.IChartContainer.get_DisplayBoundsget_DisplayBoundsDevExpress.XtraCharts.Native.IChartContainer.get_NeedRuntimeFillDataSourceget_NeedRuntimeFillDataSourceDevExpress.XtraCharts.Native.IChartContainer.get_CanUseBoundPointsget_CanUseBoundPointsDevExpress.XtraCharts.Native.IChartContainer.get_ParentDataSourceget_ParentDataSourceDevExpress.Data.BrowsingDataContextDevExpress.XtraCharts.Native.IChartContainer.get_DataContextget_DataContextDevExpress.XtraCharts.Native.IChartContainer.get_DataSourceVisibleget_DataSourceVisibleDevExpress.XtraCharts.Native.IChartContainer.get_ImageUrlVisibleget_ImageUrlVisibleDevExpress.XtraCharts.Native.IChartContainer.get_DesignModeDevExpress.XtraCharts.Native.IChartContainer.get_IsEUDget_IsEUDChartContainerTypeDevExpress.XtraCharts.Native.IChartContainer.get_ControlTypeget_ControlTypeDevExpress.XtraCharts.Native.IChartContainer.get_Loadingget_LoadingDevExpress.XtraCharts.Native.IChartContainer.get_ShouldCustomDrawAxisLabelsget_ShouldCustomDrawAxisLabelsDevExpress.XtraCharts.Native.IChartContainer.get_HitTestingEnabledget_HitTestingEnabledDevExpress.XtraCharts.Native.IChartContainer.get_SelectionEnabledget_SelectionEnabledDevExpress.XtraCharts.Native.IChartContainer.get_SeriesPointSelectionEnabledget_SeriesPointSelectionEnabledDevExpress.XtraCharts.Native.IChartContainer.get_LookAndFeelget_LookAndFeelDevExpress.XtraCharts.Native.IChartContainer.get_ShouldEnableFormsSkinsget_ShouldEnableFormsSkinsDevExpress.XtraCharts.Native.IChartContainer.get_EnableChartHitTestingget_EnableChartHitTestingDevExpress.XtraCharts.Native.IChartContainer.get_CanShowTooltipsget_CanShowTooltipsDevExpress.XtraCharts.Native.IChartContainer.get_DragCtrlKeyRequiredget_DragCtrlKeyRequiredDevExpress.XtraCharts.Native.IChartContainer.get_Captureget_CaptureDevExpress.XtraCharts.Native.IChartContainer.set_Captureset_CaptureDevExpress.XtraCharts.Native.IChartContainer.get_IsPrintingAvailableget_IsPrintingAvailableDevExpress.XtraCharts.Native.IChartContainer.LockChangeServiceLockChangeServiceDevExpress.XtraCharts.Native.IChartContainer.UnlockChangeServiceUnlockChangeServiceDevExpress.XtraCharts.Native.IChartContainer.ChangingChangingDevExpress.XtraCharts.Native.IChartContainer.ChangedChangedDevExpress.XtraCharts.Native.IChartContainer.OnObjectDeletedOnObjectDeletedDevExpress.XtraCharts.Native.IChartContainer.ContainsContainsDevExpress.XtraCharts.Native.IChartContainer.InvalidateInvalidateDevExpress.XtraCharts.Native.IChartContainer.InvokeInvalidateInvokeInvalidatePointDevExpress.XtraCharts.Native.IChartContainer.PointToClientPointToClientDevExpress.XtraCharts.Native.IChartContainer.PointToCanvasPointToCanvasDevExpress.XtraCharts.Native.IChartContainer.SetObjectSelectionSetObjectSelectionDevExpress.XtraCharts.Native.IChartContainer.ClearSelectionClearSelectionBitmapDevExpress.XtraCharts.Native.IChartContainer.LoadBitmapLoadBitmapDevExpress.XtraCharts.Native.IChartContainer.ShouldSerializeDataSourceShouldSerializeDataSourceHotTrackEventArgsDevExpress.XtraCharts.Native.IChartContainer.OnObjectSelectedOnObjectSelectedDevExpress.XtraCharts.Native.IChartContainer.OnObjectHotTrackedOnObjectHotTrackedCustomDrawSeriesEventArgsDevExpress.XtraCharts.Native.IChartContainer.OnCustomDrawSeriesOnCustomDrawSeriesCustomDrawSeriesPointEventArgsDevExpress.XtraCharts.Native.IChartContainer.OnCustomDrawSeriesPointOnCustomDrawSeriesPointCustomDrawCrosshairEventArgsDevExpress.XtraCharts.Native.IChartContainer.OnCustomDrawCrosshairOnCustomDrawCrosshairCustomDrawAxisLabelEventArgsDevExpress.XtraCharts.Native.IChartContainer.OnCustomDrawAxisLabelOnCustomDrawAxisLabelCustomPaintEventArgsDevExpress.XtraCharts.Native.IChartContainer.OnCustomPaintOnCustomPaintDevExpress.XtraCharts.Native.IChartContainer.OnBoundDataChangedOnBoundDataChangedPieSeriesPointExplodedEventArgsDevExpress.XtraCharts.Native.IChartContainer.OnPieSeriesPointExplodedOnPieSeriesPointExplodedDateTimeMeasurementUnitsCalculatedEventArgsDevExpress.XtraCharts.Native.IChartContainer.OnDateTimeMeasurementUnitsCalculatedOnDateTimeMeasurementUnitsCalculatedChartScrollEventArgsDevExpress.XtraCharts.Native.IChartContainer.OnScrollOnScrollChartScroll3DEventArgsDevExpress.XtraCharts.Native.IChartContainer.OnScroll3DOnScroll3DChartZoomEventArgsDevExpress.XtraCharts.Native.IChartContainer.OnZoomOnZoomChartZoom3DEventArgsDevExpress.XtraCharts.Native.IChartContainer.OnZoom3DOnZoom3DQueryCursorEventArgsDevExpress.XtraCharts.Native.IChartContainer.OnQueryCursorOnQueryCursorDevExpress.XtraCharts.Native.IChartContainer.OnCustomizeAutoBindingSettingsOnCustomizeAutoBindingSettingsCustomizeXAxisLabelsEventArgsDevExpress.XtraCharts.Native.IChartContainer.OnCustomizeXAxisLabelsOnCustomizeXAxisLabelsCustomizeResolveOverlappingModeEventArgsDevExpress.XtraCharts.Native.IChartContainer.OnCustomizeResolveOverlappingModeOnCustomizeResolveOverlappingModeCustomizeSimpleDiagramLayoutEventArgsDevExpress.XtraCharts.Native.IChartContainer.OnCustomizeSimpleDiagramLayoutOnCustomizeSimpleDiagramLayoutPivotGridSeriesExcludedEventArgsDevExpress.XtraCharts.Native.IChartContainer.OnPivotGridSeriesExcludedOnPivotGridSeriesExcludedPivotGridSeriesPointsExcludedEventArgsDevExpress.XtraCharts.Native.IChartContainer.OnPivotGridSeriesPointsExcludedOnPivotGridSeriesPointsExcludedCustomizeLegendEventArgsDevExpress.XtraCharts.Native.IChartContainer.OnCustomizeLegendOnCustomizeLegendDevExpress.XtraCharts.Native.IChartContainer.ShowErrorMessageShowErrorMessageDevExpress.XtraCharts.Native.IChartContainer.AssignDevExpress.XtraCharts.Native.IChartContainer.RaiseRangeControlRangeChangedRaiseRangeControlRangeChangedDevExpress.XtraCharts.Native.IChartContainer.RaiseUIUpdatedRaiseUIUpdatedDevExpress.Printing.v13.1.CoreComponentExporterDevExpress.XtraCharts.Native.IChartContainer.CreateComponentPrinterCreateComponentPrinterSystem.ComponentModel.ICustomTypeDescriptor.GetAttributesGetAttributesTypeConverterSystem.ComponentModel.ICustomTypeDescriptor.GetConverterGetConverterEventDescriptorSystem.ComponentModel.ICustomTypeDescriptor.GetDefaultEventGetDefaultEventPropertyDescriptorSystem.ComponentModel.ICustomTypeDescriptor.GetDefaultPropertyGetDefaultPropertySystem.ComponentModel.ICustomTypeDescriptor.GetEditorGetEditorAttributeSystem.ComponentModel.ICustomTypeDescriptor.GetPropertiesSystem.ComponentModel.ICustomTypeDescriptor.GetClassNameGetClassNameSystem.ComponentModel.ICustomTypeDescriptor.GetComponentNameGetComponentNameEventDescriptorCollectionSystem.ComponentModel.ICustomTypeDescriptor.GetEventsGetEventsSystem.ComponentModel.ICustomTypeDescriptor.GetPropertyOwnerGetPropertyOwnerShouldSerializeDiagramShouldSerializeDiagramTypeNameShouldSerializeDiagramSerializableShouldSerializeBackColorShouldSerializeSeriesDataMemberShouldSerializeSeriesSortingShouldSerializeAppearanceNameShouldSerializeAppearanceNameSerializableShouldSerializePaletteNameShouldSerializePaletteBaseColorNumberShouldSerializeIndicatorsPaletteNameShouldSerializeSideBySideBarDistanceVariableShouldSerializeSideBySideBarDistanceFixedShouldSerializeSideBySideEqualBarWidthShouldSerializeEmptyChartTextShouldSerializeSmallChartTextShouldSerializeAutoBindingSettingsEnabledShouldSerializeAutoLayoutSettingsEnabledShouldSerializeToolTipOptionsShouldSerializeToolTipControllerShouldSerializeCrosshairOptionsShouldSerializeEnableClientSidePointToDiagramCreateImageSaveChartStateSerializeClientObjectModelLoadChartStateSetLoadingStateInvalidateDesignerResolveFileUrlSetDesignTimeProjectPathOnEndLoadingOnCallbackStateLoadOnCallbackStateSaveOnCustomCallbackInitInternalOnInitClearControlFieldsCreateControlHierarchyPrepareControlHierarchyHtmlTextWriterRenderNeedVerifyRenderingInServerFormClientSideEventsBaseCreateClientSideEventsGetSkinControlNameDataHelperBaseCreateDataHelperHasDataInViewStateLoadViewStateSaveViewStateIsServerSideEventsAssignedHasFunctionalityScriptsGetClientObjectAssignedServerEventsRegisterIncludeScriptsGetCreateClientObjectScriptGetClientObjectClassNameget_EnableClientSideAPIInternalset_EnableClientSideAPIInternalCustomCallbackHandlerSelectCallbackHandlerCreateExportPrintingInfoPrintingExportCallbackHandlerProcessServerEventGetCallbackDefaultResultGetCallbackStateStringSetCallbackStateStringLoadCallbackStateSaveCallbackStateSystem.Collections.SpecializedNameValueCollectionLoadPostDataRaiseCallbackEventGetCallbackResultCreateStylesRegisterDefaultRenderCssFileGetCallbackPropertyValueSetCallbackPropertyValueRaisePostBackEventRegisterScriptBlocksGetLicenseTypeDisposeGetSeriesByNameGetAppearanceNamesGetPaletteNamesPaletteEntryGetPaletteEntriesResetLegendPointOptionsSummaryFunctionArgumentDescriptionSummaryFunctionRegisterSummaryFunctionUnregisterSummaryFunctionResetSummaryFunctionsRefreshDataSystem.IOStreamSaveToStreamSaveToFileLoadFromStreamLoadFromFileViewTypeBindToDataSeriesViewBaseCallbackStateLoadCallbackStateSaveCustomCallbackCustomJSPropertiesCustomDrawSeriesCustomDrawSeriesPointCustomDrawAxisLabelCustomPaintBoundDataChangedPieSeriesPointExplodedDateTimeMeasurementUnitsCalculatedEndLoadingCustomizeAutoBindingSettingsCustomizeXAxisLabelsCustomizeResolveOverlappingModeCustomizeSimpleDiagramLayoutPivotGridSeriesExcludedPivotGridSeriesPointsExcludedCustomizeLegendBorderLeftBorderTopBorderRightBorderBottomCursorEncodeHtmlForeColorEnabledProjectPathIsToolTipsEnabledHasClientCustomDrawCrosshairEventHandlerHasClientObjectHotTrackedEventHandlerHasClientObjectSelectedEventHandlerHasServerObjectSelectedEventHandlerHasCustomCallbackEventHandlerIsCallbackStateInitializeCallbackStateActualAlternateTextChartDataContainerStylesDesignModeWidthHeightPaddingPaletteNameIndicatorsPaletteNameDataAdapterAutoBindingSettingsEnabledAutoLayoutSettingsEnabledAppearanceNameAppearanceNameSerializableBackImageBorderOptionsDiagramSerializableDiagramTypeNameFillStyleBackColorPaletteBaseColorNumberAnnotationsSeriesSerializableSeriesDataMemberSeriesSortingSeriesTemplateTitlesIndicatorsPaletteRepositoryPaletteWrappersIndicatorsPaletteWrappersSideBySideBarDistanceVariableSideBySideBarDistanceFixedSideBySideEqualBarWidthFakeObjectClientInstanceNameClientSideEventsEnableClientSideAPIEnableClientSidePointToDiagramEnableCallBacksEnableCallbackAnimationEnableCallbackCompressionSaveStateOnCallbacksLoadingPanelDelayLoadingPanelTextLoadingPanelImageLoadingPanelImagePositionShowLoadingPanelImageShowLoadingPanelClientVisibleRuntimeSelectionAlternateTextCrosshairEnabledToolTipEnabledToolTipControllerDescriptionUrlJSPropertiesDevExpress.Utils.Commands.ICommandAwareControl<DevExpress.XtraCharts.Commands.ChartCommandId>.KeyboardHandlerDevExpress.Utils.Commands.ICommandAwareControl<DevExpress.XtraCharts.Commands.ChartCommandId>.BeforeDisposeDevExpress.Utils.Commands.ICommandAwareControl<DevExpress.XtraCharts.Commands.ChartCommandId>.UpdateUIDevExpress.XtraCharts.Native.IChartContainer.ObjectHotTrackedDevExpress.XtraCharts.Native.IChartContainer.ScrollDevExpress.XtraCharts.Native.IChartContainer.Scroll3DDevExpress.XtraCharts.Native.IChartContainer.ZoomDevExpress.XtraCharts.Native.IChartContainer.Zoom3DDevExpress.XtraCharts.Native.IChartContainer.QueryCursorDevExpress.XtraCharts.Native.IChartContainer.HasCustomDrawEventsListenersDevExpress.XtraCharts.Native.IChartContainer.ShowDesignerHintsDevExpress.XtraCharts.Native.IChartContainer.LogoVisibleDevExpress.XtraCharts.Native.IChartContainer.ChartDevExpress.XtraCharts.Native.IChartContainer.PrintableDevExpress.XtraCharts.Native.IChartContainer.IsDesignControlDevExpress.XtraCharts.Native.IChartContainer.ServiceProviderDevExpress.XtraCharts.Native.IChartContainer.ParentDevExpress.XtraCharts.Native.IChartContainer.DisplayUnitsDevExpress.XtraCharts.Native.IChartContainer.DisplayBoundsDevExpress.XtraCharts.Native.IChartContainer.NeedRuntimeFillDataSourceDevExpress.XtraCharts.Native.IChartContainer.CanUseBoundPointsDevExpress.XtraCharts.Native.IChartContainer.ParentDataSourceDevExpress.XtraCharts.Native.IChartContainer.DataContextDevExpress.XtraCharts.Native.IChartContainer.DataSourceVisibleDevExpress.XtraCharts.Native.IChartContainer.ImageUrlVisibleDevExpress.XtraCharts.Native.IChartContainer.DesignModeDevExpress.XtraCharts.Native.IChartContainer.IsEUDDevExpress.XtraCharts.Native.IChartContainer.ControlTypeDevExpress.XtraCharts.Native.IChartContainer.LoadingDevExpress.XtraCharts.Native.IChartContainer.ShouldCustomDrawAxisLabelsDevExpress.XtraCharts.Native.IChartContainer.HitTestingEnabledDevExpress.XtraCharts.Native.IChartContainer.SelectionEnabledDevExpress.XtraCharts.Native.IChartContainer.SeriesPointSelectionEnabledDevExpress.XtraCharts.Native.IChartContainer.LookAndFeelDevExpress.XtraCharts.Native.IChartContainer.ShouldEnableFormsSkinsDevExpress.XtraCharts.Native.IChartContainer.EnableChartHitTestingDevExpress.XtraCharts.Native.IChartContainer.CanShowTooltipsDevExpress.XtraCharts.Native.IChartContainer.DragCtrlKeyRequiredDevExpress.XtraCharts.Native.IChartContainer.CaptureDevExpress.XtraCharts.Native.IChartContainer.IsPrintingAvailableEnableClientSideAPIInternalrepositoryget_ItemItemICollectionPalettepaletteget_Paletteget_Nameset_NamePaletteScaleModeget_ScaleModeset_ScaleModeNameScaleModeInvokeIAsyncResultAsyncCallbackBeginInvokeEndInvokeGetPropertyValueSetPropertyValueparameterget_ParameterParameterget_ControlPerformDataBindingPerformSelectControlDevExpress.Web.ASPxClasses.IChartControlBuilder.get_BorderTagNameget_BorderTagNameDevExpress.Web.ASPxClasses.IChartControlBuilder.get_BorderTypeget_BorderTypeDevExpress.Web.ASPxClasses.IChartControlBuilder.BorderTagNameDevExpress.Web.ASPxClasses.IChartControlBuilder.BorderTypeMemoryStreamstreamcontentTypecontentDispositionget_Streamget_ContentTypeget_ContentDispositionContentTypeContentDispositionSystem.ResourcesResourceManagerrmloadedget_DescriptionDescriptiontypeDescriptorattributesdescriptionProviderobjectTypeinstancevalueownerobjpointTypedictionaryrectpathleftOperandrightOperandpointstypeadditionalObjhitRegionhitParamshitControllerarrayjsConvertervaluesvalueLevelcountelementtimechcollectioncacheintervalBoundsListweekdaysworkdaysOptionsalignmentdockStylefinancialIndicatortrendLinefibonacciIndicatorregressionLinekindmovingAveragetextAnnotationimageAnnotationserializeNamenameshttpContextpageeserviceTypepurldataSourcemessageminmaxinvalidateiPrintableeditorBaseTypepdstbhitInfoSerializerchartStatesavedStateeventNameslocalVarNameclientNameparamxyfilenameformatsaveToWindowshowPrintDialogcommandeventArgumentcallbackStringpostCollectionpropertyNamedefaultValueseriesNamedisplayNameresultDimensionargumentDescriptionsfunctionresultScaleTypeviewTypeseriesDataMemberargumentDataMembervalueDataMembersParamArrayAttributeviewindexwrapperdescriptorsobjectmethodsendercallbackresultcontrolextensiondispositionSystem.Runtime.VersioningTargetFrameworkAttributeNeutralResourcesLanguageAttributeSystem.ReflectionAssemblyTitleAttributeAssemblyDescriptionAttributeAssemblyConfigurationAttributeAssemblyCompanyAttributeAssemblyProductAttributeAssemblyCopyrightAttributeAssemblyTrademarkAttributeAssemblyCultureAttributeCLSCompliantAttributeSystem.SecurityAllowPartiallyTrustedCallersAttributeTagPrefixAttributeWebResourceAttributeSystem.Runtime.InteropServicesComVisibleAttributeGuidAttributeAssemblyVersionAttributeAssemblyFileVersionAttributeSatelliteContractVersionAttributeAssemblyDelaySignAttributeAssemblyKeyFileAttributeAssemblyKeyNameAttributeSystem.DiagnosticsDebuggableAttributeDebuggingModesSystem.Runtime.CompilerServicesCompilationRelaxationsAttributeRuntimeCompatibilityAttributeDevExpress.XtraCharts.v13.1.WebIEnumeratorGetEnumeratorget_CurrentGetTypeNestedTagPropertyAttributeRuntimeTypeHandleGetTypeFromHandleEqualsMoveNextget_CountMemberDescriptorget_Attributesget_ComponentTypePersistenceModeAttributePersistenceModeTypeDescriptorCreatePropertySystem.ThreadingMonitorEnterGetProviderAddProviderExitSystem.ComponentModel.Design.SerializationDesignerSerializerAttributeRaiseControlChangingRaiseControlChangedMemberInfoStringFormatTypeConverterAttributeDevExpress.Utils.SerializingXtraSerializablePropertyContainsKeySingleget_Leftget_Topget_Rightget_Bottomget_PointCountget_PathPointsget_PathTypesToArrayFillModeget_FillModeget_Xget_Yop_ExplicitIHitTestget_ObjectInternalExceptionget_AdditionalObjget_HitRegionGetItemsChartFocusedAreaget_RelativePositionget_HasValueget_Elementget_ValueICollection`1ConcatBooleanMathRoundCeilingInt32System.GlobalizationCultureInfoget_InvariantCultureNumberFormatInfoget_NumberFormatIFormatProviderget_LengthGetValueAppendDebugFailIEnumerator`1IsNullOrEmptyCharInsertget_Yearget_Monthget_DayEmptyget_Millisecondget_Secondget_Minuteget_HourConvertget_CharsDoubleget_InvariantInfoEnumeratorget_RByteget_Gget_BChartTitleget_ToolTipPositionget_ActualSeriesToolTipEnabledget_ActualPointToolTipEnabledget_ActualCrosshairEnabledget_SeriesToolTipEnabledget_PointToolTipEnabledASPxWebControlget_CssPostfixXYDiagramDefaultPaneget_DefaultPaneXYDiagramPaneCollectionget_PanesXYDiagramPanePaneLayoutDirectionget_PaneLayoutDirectionget_RotatedAxisXget_AxisXAxisYget_AxisYSecondaryAxisXCollectionget_SecondaryAxesXSecondaryAxisYCollectionget_SecondaryAxesYSwiftPlotDiagramAxisSwiftPlotDiagramAxisXSwiftPlotDiagramAxisYSwiftPlotDiagramSecondaryAxisXCollectionSwiftPlotDiagramSecondaryAxisYCollectionChartElementNamedGetPaneAxesDataget_VisibleIAxisget_AxesGetVisibilityInPaneCommonUtilsGetLabelBoundsget_IsEmptyget_PrimaryAxisXGetActualAxisIDget_PrimaryAxisYGetActualPaneIDget_ContainerGetPaneMappingBoundsAxisX3DAxisY3DIRadarDiagramget_RadarDiagramMappingRadarAxisXRadarAxisYget_Verticesget_RadiusGRealPoint2Dget_Centerget_MinArgumentget_MinValueget_RevertAngleget_DiagramStartAngleget_ValueScaleFactorget_ArgumentDiapasonget_ArgumentDeltaRadarDiagramDrawingStyleget_DrawingStyleget_ClipArgumentget_MaxArgumentget_MaxValueget_StartAngleget_RangeKeyCollectionget_KeysAxisLabelItemBaseget_TitleGetIntervalBoundsCacheget_CrosshairAxisLabelOptionsStripCollectionget_StripsConstantLineCollectionget_ConstantLinesGetAxisIntervalsget_ReverseTitleget_Textget_AxisValueget_AxisValueInternalget_MinValueInternalget_MaxValueInternalIMinMaxValuesget_Limitsget_Minget_MaxKeyValuePair`2get_KeyScaleTypeMapget_ScaleTypeMapDateTimeScaleOptionsget_DateTimeScaleOptionsget_MeasureUnitget_GridAlignmentget_WorkdaysOnlyWorkdaysOptionsget_WorkdaysOptionsGetValuesTransformationget_TransformationLogarithmicTransformationget_LogarithmicBaseget_MinLogValueget_Workdaysget_Holidaysget_ExactWorkdaysFinalToNativeMinStripLimitget_MinLimitStripLimitMaxStripLimitget_MaxLimitConstantLineTitleop_Inequalityget_LabelGetCrosshairMarkerColorISeriesPointGetDisplayPointsGetSeriesActualCrosshairEnabledGetCrosshairSortedDataget_ViewSimpleDiagramSeriesViewBaseSeriesTitleCollectionSeriesTitleXYDiagram2DSeriesViewBaseIndicatorCollectionget_IndicatorsSeriesViewFactoryGetViewTypeGetNameget_ActualArgumentScaleTypeget_ValueScaleTypeGetSeriesActualToolTipEnabledToolTipUtilsGetSeriesToolTipTextChartImageget_ToolTipImageget_ImageUrlResolveUrlIXYViewCrosshairPaneInfoGetActualPatternReplaceget_CrosshairLabelPatternToolTipPointDataToStringConverterget_CrosshairConverterGetGroupedPointPatternGetSeriesActualCrosshairLabelVisibilityXYDiagramSeriesViewBaseAxisXBaseAxisYBaseget_PaneSwiftPlotSeriesViewBaseSwiftPlotDiagramAxisXBaseSwiftPlotDiagramAxisYBaseISideBySideStackedBarViewget_StackedGroupIStepSeriesViewget_InvertedStepget_NumericalArgumentget_DateTimeArgumentDefaultSwitchExceptionget_DateTimeValuesGetPointToolTipTextISeriesPointInfoGetCrosshairValuesGetPointPercentValueIsNaNget_ToolTipHintISideBySideBarViewget_Offsetget_FixedOffsetIBarViewget_BarWidthMultilineTitleget_Linesget_Alignmentget_DockDebugHelperget_ValueLevelget_Point1get_Point2SubsetBasedIndicatorget_PointsCountget_EnvelopePercentToolTipPositionWithOffsetget_OffsetXget_OffsetYget_DockTargetToolTipDockCornerget_DockCornerget_ArgumentLineStyleget_ValueLineStyleCrosshairLabelModeget_CrosshairLabelModeget_CommonLabelPositionCrosshairMousePositionCrosshairFreePositionget_ShowArgumentLineget_ShowValueLineget_ShowArgumentLabelsget_ShowValueLabelsget_ShowCrosshairLabelsget_ShowOnlyInFocusedPaneCrosshairSnapModeget_SnapModeget_ArgumentLineColorget_ValueLineColorget_ShowGroupHeadersget_GroupHeaderPatternCrosshairGroupHeaderValueToStringConverterISeriesget_DefaulPointPatternget_PointIndexDockCornerget_ThicknessDashStyleget_DashStyleget_Sizeget_ActualFontget_ActualPatternget_ActualVisibilityget_ActualBackColorget_ActualTextColorGetEventHandlerSetEventHandlerDefaultValueAttributeNotifyParentPropertyAttributeEditorAttributeISkinOwnerget_LoadingPanelInternalget_LoadingDivInternalDesignerSerializationVisibilityAttributeDesignerSerializationVisibilityAutoFormatEnableAttributeDesignerAttributeToolboxBitmapAttributeToolboxTabNameAttributeControlBuilderAttributeLicenseProviderAttributeGetLoadingDelegateSetLoadingDelegateWebLoadingHelperInitializeIDictionaryget_Itemsset_ItemObsoleteAttributeBinaryStorageProcessRequestEventHandlerListget_EventsDelegateAddHandlerRemoveHandlerEventCustomJsPropertiesget_Pngget_Bmpget_GlobalLoadingInvalidOperationExceptionget_PageMapPathget_ShowForSeriesget_ShowForPointsIStateManagerTrackViewStateDefaultAlternateTextBuilderBuildTextForChartget_DataContainerget_StylesInternalUnitTypeget_TypeDevExpress.XtraCharts.LocalizationChartLocalizerChartStringIdGetStringArgumentExceptionAddRangeClearget_BoundSeriesSortingset_BoundSeriesSortingget_SideBySideBarDistanceset_SideBySideBarDistanceget_ClientInstanceNameInternalset_ClientInstanceNameInternalget_ClientSideEventsInternalget_EnableCallBacksInternalset_EnableCallBacksInternalset_AutoPostBackInternalget_EnableCallbackAnimationInternalset_EnableCallbackAnimationInternalget_EnableCallbackCompressionInternalset_EnableCallbackCompressionInternalGetBoolPropertySetBoolPropertySettingsLoadingPanelget_SettingsLoadingPanelget_Delayset_Delayset_Textget_ClientVisibleInternalset_ClientVisibleInternalGetEnumPropertySetEnumPropertyget_JSPropertiesInternal<.ctor>b__0<.ctor>b__1CompilerGeneratedAttributeLicenseManagerLicenseValidateDevExpress.XtraCharts.PrintingChartPrinterset_Printerop_ImplicitGetPropertyValue`1SetPropertyValue`1set_SeriesSerializableISiteget_SiteDevExpress.Utils.v13.1DevExpress.LookAndFeelUserLookAndFeelget_DefaultSystem.ComponentModel.DesignIComponentChangeServiceOnComponentChangingOnComponentChangedSystem.NetWebClientDownloadDataSystem.Windows.FormsMessageBoxDialogResultMessageBoxButtonsMessageBoxIconShowBrowsableAttributeget_BrowsableShouldSerializeBoundSeriesSortingShouldSerializeSideBySideBarDistanceSizeCreateBitmapSaveASPxWebControlBaseGetImageUrlStreamReaderSaveLayoutSeekOriginSeekTextReaderReadToEndStreamWriterTextWriterFlushLoadLayoutset_GlobalLoadingset_GlobalLoadingStaticget_HitTestControllerIDesignerHostIDesignerGetDesignerSystem.DesignSystem.Web.UI.DesignControlDesignerop_EqualityFileExistsStartsWithPathDirectorySeparatorCharAltDirectorySeparatorCharTrimStartCombineUriget_LocalPathASPxDataWebControlBaseRenderUtilsCreateDivControlCollectionget_ControlsIsCallBacksEnabledCreateHiddenFieldStyleget_ControlStyleCopyFromAssignAttributesIsClientVisibleSetVisibilityset_IDset_GenerateEmptyAlternateTextset_ImageUrlget_ClientIDSetStringAttributeset_ValueAppendMSTouchDraggableClassNameIfRequiredHtml32TextWriterget_InnerWriterRegisterIncludeScriptRegisterFormatterScriptIsClientSideAPIEnabledAppendLineToInt32SelectObjectsAt<PrivateImplementationDetails>{23B58E5D-1B73-4D8A-B3AD-25DE69A09FEF}$$method0x6000309-1TryGetValuePdfExportOptionsset_ShowPrintDialogOnOpenExportToPdfExportToXlsxExportToXlsExportToRtfMhtExportOptionsExportToMhtExportToImageget_Jpegget_Tiffget_GifGetResourceUrlEnsureDataBoundSplitSubstringObjectStateFormatterDeserializeget_UniqueIDget_IdSeparatorEnsureChildControlsRegisterCssResourceViewStateUtilsGetObjectPropertySetObjectPropertyRegisterCultureInfoScriptget_Namesget_PaletteNamesFileStreamFileModeFileAccessXtraSerializingHelperIsValidXmlLayoutStreamExceptionCategoryAttributeEditorBrowsableAttributeEditorBrowsableStateRefreshPropertiesAttributeRefreshPropertiesBindableAttributeAutoFormatDisableAttributeMergablePropertyAttributeLocalizableAttributeUrlPropertyAttributeDefaultMemberAttributeget_ListPaletteListBaseget_DisplayNameDevExpress.Utils.DesignCustomPropertyDescriptorget_NameSerializableset_NameSerializableget_ScaleModeSerializableset_ScaleModeSerializableset_DataSourceSerializableAttributeCloseAttributeUsageAttributeAttributeTargetsAssemblyget_Assemblyset_DescriptionValueDevExpress.XtraCharts.Web.Descriptions.resourcesDevExpress.XtraCharts.Web.Bitmaps256.ChartControl.bmpDevExpress.XtraCharts.Web.Scripts.WebChartControl.jsDevExpress.XtraCharts.Web.Scripts.WebChartCore.jsDevExpress.XtraCharts.Web.Scripts.WebChartCrosshairRenderer.jsDevExpress.XtraCharts.Web.Scripts.WebChartPatternEditor.jsDevExpress.XtraCharts.Web.Css.default.css({0})RrPpsbaUIEXtlOhihiattp;ClientHitInfoSerializer error'false	truef:,{}[]ValueValue_1Value_2Low	High	OpenClose+Incorrect value levelnew Date()\\0\b\t\n\v\f\r''3Client object model errorX2ndtittccoanpnsstsptsccssxysxsydppaVerticalHorizontalpldXYDdrSPDlb	paxi	payiiddxdydwdhvsb	XYD3RDmvcxcymamvraadcicmxamxvsacliibccaoartxavivmiiiiaiblpidQvlNmlvDsusvswoswshsewcviasvsstttitteacesccclp
<br/>gep	aclvaxaynvisgisptpccchvpvhofobwie	Near
CenterFarTop
Bottom	LeftRight-Unknown indicator typep1p2TLFIRLMovingAverageEnvelope1MovingAverageAndEnvelopepckiepSMAEMAWMATMA/Unknown annotation typeTAIAMPFPoxoydtRPsiipomalsvlsslsxlsylsfpsmlmalcvlcsghghppiltlllhlwCMPCFPthdsfsffclfclv	clbc	cltc!ObjectHotTracked'CustomDrawCrosshairObjectSelecteddxchartsui5GlobalLoadingCounter errorGlobalLoadingICan't get project path then loading.~)SaveStateOnCallbacks#BinaryStorageModeCallbackStateIMGonmousemove=__chartMouseMove(event, '{0}')onclick5__chartClick(event, '{0}')ChartcDevExpress.XtraCharts.Web.Scripts.WebChartCore.jsiDevExpress.XtraCharts.Web.Scripts.WebChartControl.js}DevExpress.XtraCharts.Web.Scripts.WebChartCrosshairRenderer.jsuDevExpress.XtraCharts.Web.Scripts.WebChartPatternEditor.js.LoadHitInfo();#.InitObjectModel(3ASPxClientWebChartControl7EnableClientSideAPIInternalattachment
inlinepdf	xlsxxlsrtfmhtpng	jpegbmp	tiffgifapplication/pdf��application/vnd.openxmlformats-officedocument.spreadsheetml.sheet1application/vnd.ms-excelapplication/rtfmessage/rfc822image/pngjpgimage/jpegimage/bmpimage/tiffimage/gifchart{0}:{1}CUSTOMCALLBACK
SELECTPRINTSAVETODISKSAVETOWINDOW|SDevExpress.XtraCharts.Web.Css.default.css
SeriesBorderOptions){0};filename={1}.{2}MDevExpress.XtraCharts.Web.Descriptions]��#s�M��%�i����z\V4���T��59�?_�
: A u U 	 Ay          (((
}8}}���� } �� �� ��	 ���� �� �� 
 ����  �� �� ��(} $�� ��$            ��, }}[]��@	 ��@
 ��@	(��@ @(@ @{}new Date():2Client object model error������@T	 ��@  ��
 ��@ @ ��	(��@((  (�``��HL��(�, �` ` H L ������� �� ��	 ���� ��(��(��p ��	 ����(�� ��	 ���� L��(�� ��	 ����(������	 ���� ��	 ����(��| ��	 ����(������	 ������ �������� ��	 ���� ��(�������L ��	 ����(�� ��	 ����(���� ��� �� ��	 �		 �
�� ��� ������ �� ��!�%�)�-�!	���� �%�)�-�1�� ���5 �5�9 �9�=��	�A��
 �A�� �=	 �=�`
(�A��(�=�����E �� �����`(���I �I�M �M�Q�U�Y �Y���]�] �]�a �a�� �e �i �m �q �u�y �} �� �� �� ������� �� ��(�� �� ��(�� ���� �� ����	 �`���� �� �8�D��	 �`�� �8�� ���� ���� �� ��(��	 �`���� ���� �����H ��
 ����4__chartClick(event, '{0}')<__chartMouseMove(event, '{0}')	 �� ��(�� �� ��(��(��RDevExpress.XtraCharts.Web.Css.default.cssGlobalLoading(ChartsExportPrinting|CallbackState
chartIMG�A���� �t �| �� �� �� �� �� �� �� �� �� �� � � �	 �
 � � � � �! �% �) �� �� ��	���=�-�1�5�9	�=�� �A �5 �E �X �I �I �M �Q �U �Y �] �a �� �e �i �M �m �q �u
 ���= �y �} �} �� �� �� �� �d 
 
 �P �� �� �� �� �� �� ��  �� �� }	 ��9	 �� ��9 �� �� y �� �� �� �� �� �� 1 �� �� �� �� ��  ���� �� �� �� �� �� �� �� Y �� �� � � �	 �
 � � � � �! �% �) ��  �-�� u �1 �5 �9 U�= �A	 �A�= �9 ��   ��  �x �� �� �E �I �M ��	 ��   �Q %   y �=  �U
 �Y�] �E�Y�] �a �e �i(�%(�)(��(��(�A(�5(�E(�X(�I(�M(�Q(�U(�Y(�](�a(�e(�i(�M(�m(�q(�u
(���=(�y(�}(��(��(��(��(�d(
(�P(��(��(��(��((��(��(}	(��9(��(1(��(��(��(��(���� �l �� �l(�l �m�q �q �u �u �q(�q(�u �`(�`  �x
 �y�x�} �y  ��
 �y���}  ��
 �y���} �` ��(y�� ��
 ��(���� �造$��$RSA1�͌���$��L�\J��|��-fQ UkK�T���+����VHv)Z"[��to=>T|�[&��n��:�gQ$��y �2�B�MS�Z6���s���YVn8�hBd���MY�8����]�
��'�� ��y�� y�=��m �9 �	�9y�9�= �9U�9�9�=	y	yy��WDevExpress.XtraCharts.Design.ChartItemSerializer,DevExpress.XtraCharts.v13.1.ExtensionsJSystem.ComponentModel.Design.Serialization.CodeDomSerializer,System.Design$ChartToolTipControllerShowImage y����DevExpress.Utils.Design.BooleanTypeConverter, DevExpress.Data.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a#ChartToolTipControllerShowText(#ChartToolTipControllerImagePosition#ChartToolTipControllerOpenMode}   
}����  ����    �-����������  �1 �� ����������� 
 �A���A�� �=�����*��������9���A���A��



�M �Q �U  ������@	 �]�]@@�]@@�]@ ��@�]@@��@ 	
��m �Q �U
	 �m�m@@�m@@�m@ �� �=H �uL�����m ���� �} �� ��H ��L������m ���� �� �� ��L����m ���� �� �� �� �������4
 ���������]�� �����������4������H�]�� �� �� �� - ������ �� �� �� ���� �� ��
���� �� ������������ � ���� ����
��� �� �
��}����� ���
 �� �5 �� �9
 ��	���=�	��	
��	H �� ��������� ��������� "���������������=����� �� � �) �- �����%� � �	�
 �!
 ���� 
 � � � �I
�A���=
��!�=�=�!��!��!H�=
�����=����
H���� �i �) �-	�%H �5�1L�]��m�e�iy �E�= �A�A���I  �Q  �Y �] �� �e �i3�e�E�E�I�U�a�m�q�A���A�� ���E 
 ��	���=�A���=�� ��
�y	
���=
$	�A���I��

�}���A���Q�U �Q �U �� �a�y �y�} ���� �� ���� �� ���A���A������������ ������ ��
�A����*%ChartClientSideEventsObjectHotTracked y���DevExpress.Web.ASPxClasses.Design.ClientSideEventsEditor, DevExpress.Web.v13.1.Design, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49auSystem.Drawing.Design.UITypeEditor, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a-(ChartClientSideEventsCustomDrawCrosshair(#ChartClientSideEventsObjectSelected �� ������DevExpress.XtraCharts.Design.WebChartControlDesigner,DevExpress.XtraCharts.v13.1.Web.Design, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a����DevExpress.XtraCharts.Design.ChartTypeConverter, DevExpress.XtraCharts.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a yD#DevExpress.XtraCharts.Web.ResFinderBitmaps256.ChartControl.bmpDX.13.1: Data & Analytics50DevExpress.XtraCharts.Native.ChartControlBuilder94DevExpress.XtraCharts.Web.DXWebChartsLicenseProvider	�������A���A �� �� ����The ProcessImageRequest method is now obsolete. Instead, select the WebChartControl on a Web Page at Visual Studio design time, open its smart tag and choose "Add an ASPxHttpHandlerModule to Web.Config". � ����A �� ��� �����= �=
 ��   �%�1y - �5�I�9���=���=�� �9�=�9���=�� �=Y1 �A �E �I�I�E ��I	 �    �Q�M������
�Y�]�au�1�5�9yUU�=�eU�=�A�A�= �i ���i	 �a�A�m���������I�I 

�u	�a�q\���} ��  �������� �� ���� ���� ���� ���� Y�� ���� ���� �����t�|���	 ��
 �� �� �!� �%� �)�!�1�- �� �E�9 �� ��	�1�1�1�1�1 �� ��  �����Q�I�I}} 	 �a��	 �a��
����
�m����  
�� �� 	��y�5	�5�A�E �A�E�Y�]
�A�E
 �������a	Data$WebChartControlCustomDrawSeries)$WebChartControlCustomDrawSeriesPoint ��WebChartControlWidthWebChartControlHeightWebChartControlPadding
AppearancezSystem.ComponentModel.ExpandableObjectConverter, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"WebChartControlEmptyChartText
Behavior"WebChartControlSmallChartTextWebChartControlPaletteName���DevExpress.XtraCharts.Design.PaletteTypeEditor,DevExpress.XtraCharts.v13.1.Wizard, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49auSystem.Drawing.Design.UITypeEditor, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a����DevExpress.XtraCharts.Design.PaletteTypeConverter, DevExpress.XtraCharts.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a)$WebChartControlIndicatorsPaletteName50This property is obsolete and isn't used at all.�.)WebChartControlAutoBindingSettingsEnabled ��-(WebChartControlAutoLayoutSettingsEnabled.)WebChartControlPivotGridDataSourceOptions����DevExpress.XtraCharts.Design.PivotGridDataSourceOptionsTypeConverter, DevExpress.XtraCharts.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"WebChartControlAppearanceName����DevExpress.XtraCharts.Design.AppearanceTypeConverter, DevExpress.XtraCharts.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aWebChartControlBackImage!WebChartControlBorderOptionsWebChartControlDiagram
ElementsWebChartControlFillStyleWebChartControlBackColorWebChartControlLegend*%WebChartControlPaletteBaseColorNumberWebChartControlAnnotations���DevExpress.XtraCharts.Design.AnnotationCollectionEditor,DevExpress.XtraCharts.v13.1.Wizard, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49auSystem.Drawing.Design.UITypeEditor, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a(#WebChartControlAnnotationRepositoryWebChartControlSeries���DevExpress.XtraCharts.Design.SeriesCollectionEditor,DevExpress.XtraCharts.v13.1.Wizard, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49auSystem.Drawing.Design.UITypeEditor, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a$WebChartControlSeriesDataMember���DevExpress.XtraCharts.Design.DataMemberEditor,DevExpress.XtraCharts.v13.1.Wizard, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49auSystem.Drawing.Design.UITypeEditor, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a&!WebChartControlSeriesNameTemplate!WebChartControlSeriesSorting"WebChartControlSeriesTemplateWebChartControlTitles���DevExpress.XtraCharts.Design.ChartTitleEditor,DevExpress.XtraCharts.v13.1.Wizard, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49auSystem.Drawing.Design.UITypeEditor, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a&!WebChartControlClientInstanceNameClient-Side$WebChartControlClientSideEvents'"WebChartControlEnableClientSideAPI#WebChartControlEnableCallBacks+&WebChartControlEnableCallbackAnimation-(WebChartControlEnableCallbackCompression(#WebChartControlSaveStateOnCallbacks% WebChartControlLoadingPanelDelay,$WebChartControlLoadingPanelText
Loading PanelLoading&hellip;% WebChartControlLoadingPanelImage-(WebChartControlLoadingPanelImagePosition��U��DevExpress.Web.ASPxClasses.ImagePosition, DevExpress.Web.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a% WebChartControlLoadingPanelStyle#WebChartControlLoadingDivStyle)$WebChartControlShowLoadingPanelImage$WebChartControlShowLoadingPanel!WebChartControlClientVisible$WebChartControlRuntimeSelection% WebChartControlBinaryStorageMode��U��DevExpress.Web.ASPxClasses.BinaryStorageMode, DevExpress.Web.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a!WebChartControlAlternateText
Accessibility$WebChartControlCrosshairEnabled��UzDevExpress.Utils.DefaultBoolean, DevExpress.Data.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"WebChartControlToolTipEnabled% WebChartControlToolTipController$WebChartControlCrosshairOptions����DevExpress.XtraCharts.Design.CrosshairOptionsTypeConverter, DevExpress.XtraCharts.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"WebChartControlToolTipOptions"WebChartControlDescriptionUrl yy��pSystem.Web.UI.Design.UrlEditor, System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3auSystem.Drawing.Design.UITypeEditor, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a	Item �q  �q �9 �9
�9��m ) ) �� � �G.NETFramework,Version=v4.0TFrameworkDisplayName.NET Framework 4
en-USDevExpress.XtraCharts.WebXtraCharts SuiteDeveloper Express Inc.4/XtraCharts(tm) SUITE SOFTWARE COMPONENT PRODUCT3.Copyright (c) 2000-2013 Developer Express Inc.)DevExpress.XtraCharts.Web
dxchartsuiF1DevExpress.XtraCharts.Web.Scripts.WebChartCore.jstext/javascriptI4DevExpress.XtraCharts.Web.Scripts.WebChartControl.jstext/javascriptS>DevExpress.XtraCharts.Web.Scripts.WebChartCrosshairRenderer.jstext/javascriptO:DevExpress.XtraCharts.Web.Scripts.WebChartPatternEditor.jstext/javascript7)DevExpress.XtraCharts.Web.Css.default.csstext/css)$6d1875db-a234-4228-8b34-7fea955d79cb
13.1.4.0
13.1.0.00+..\..\..\..\..\DevExpress.Key\StrongKey.snkTWrapNonExceptionThrowsvB�Q���RSDS����J�L�	�`�Y�c:\Projects\13.1\BuildLabel\Temp\NetStudio.v13.1.2005\ASP\DevExpress.XtraChartsWeb\DevExpress.XtraCharts.Web\obj\Release\DevExpress.XtraCharts.v13.1.Web.pdb(> 0_CorDllMainmscoree.dll�% �0�HX ��4VS_VERSION_INFO��

?DVarFileInfo$Translation��StringFileInfo�000004b0<CommentsXtraCharts SuitePCompanyNameDeveloper Express Inc.\FileDescriptionDevExpress.XtraCharts.Web4	FileVersion13.1.4.0h$InternalNameDevExpress.XtraCharts.v13.1.Web.dll�/LegalCopyrightCopyright (c) 2000-2013 Developer Express Inc.LLegalTrademarksXtraCharts Suitep$OriginalFilenameDevExpress.XtraCharts.v13.1.Web.dll�0ProductNameXtraCharts(tm) SUITE SOFTWARE COMPONENT PRODUCT8	ProductVersion13.1.4.0<	Assembly Version13.1.4.0P6�0��	*�H��
���0��10*�H��
0K
+�7�=0;0
+�70	���0 0*�H��
<+Ќj�{�RД7H@|���0��0�W�~��|�NY�K�w��;0
	*�H��
0��10	UZA10UWestern Cape10UDurbanville10
U
Thawte10UThawte Certification10UThawte Timestamping CA0
121221000000Z
201230235959Z0^10	UUS10U
Symantec Corporation100.U'Symantec Time Stamping Services CA - G20�"0
	*�H��
�0�
����ITK�
�%y�"W*oܸ&�Csk¿.PZ��v�C%C���E��{�t�"״��M��D$k�_E;�D�Cs��i�+˙�r&Mq�1�QaS���I,xE�/�����W?=ƒ�J�{3�y
��u�A���Q���l��i�e)���`���;���
tޒ"���t|'�J�Þ-����'}a��q��P�K�]���,��e �ؖ��|�NHD��D��h��]jxdE�`F~T�|�y��q���0��0U_��n\��t���}�?��L�.�02+&0$0"+0�http://ocsp.thawte.com0U�0�0?U80604�2�0�.http://crl.thawte.com/ThawteTimestampingCA.crl0U%0
+0U�0(U!0�010UTimeStamp-2048-10
	*�H��
��	��y�Y0��h���	�O�]7_�R����	Dn�m�X|0�i�#soG��9�*����Y���M��1�\*z��zWL�e�y@b%�n��7j�!�A���W?wI�*^�8j"�Q�~�0��0�����8��5n�j�P0
	*�H��
0^10	UUS10U
Symantec Corporation100.U'Symantec Time Stamping Services CA - G20
121018000000Z
201229235959Z0b10	UUS10U
Symantec Corporation1402U+Symantec Time Stamping Services Signer - G40�"0
	*�H��
�0�
��c9D��#�DI����a
S���ۭ,J�n��<SU�?+����پay[�L�v��CK"���+C���h��@O�8��#�dX�2oNW�����*�K��c��2[�^�Z��(P��a;EQ�V�G����f=G�pr��_��ăd��%����"�кz�w�[e��t�A�*�L����-�wDh֨tw�[2�V�3��c�I�:���3���ٳW�;��z"�$�.�pžN�&���O��(r����W0�S0U�00U%�0
+0U��0s+g0e0*+0�http://ts-ocsp.ws.symantec.com07+0�+http://ts-aia.ws.symantec.com/tss-ca-g2.cer0<U50301�/�-�+http://ts-crl.ws.symantec.com/tss-ca-g2.crl0(U!0�010UTimeStamp-2048-20UF�i�J�L�Rc?^6�
�0U#0�_��n\��t���}�?��L�.�0
	*�H��
�x;��*L�b07x��'o��%ܠԔ��N%��@���y�!hڶ2�m��,&c3�Idm
��g��5l|���߲�� �q͕tܶ\޽7Cx�x��( ���KĈ)�����\vnO^EFAn
��8��:�	q�y��{�i�+�[	=�[���m.8
�)�,��Z���,/I�"��x�QÆ���]�=�Q�y3+.{�� 	q�j[��0W,�I?��ɿ>"hcS��it��<��ü�u0��0�Ơ0
	*�H��
0c10	UUS1!0U
The Go Daddy Group, Inc.110/U(Go Daddy Class 2 Certification Authority0
061116015437Z
261116015437Z0��10	UUS10UArizona10U
Scottsdale10U
GoDaddy.com, Inc.1301U*http://certificates.godaddy.com/repository100.U'Go Daddy Secure Certification Authority10U079692870�"0
	*�H��
�0�
��-���&L�25�_�YZ�a�Y;pc���=�*��3�y�:�<0#���0����=�T�ߙ�%!�e)~5��T�29�&U���X�מ���*�BΧ?����R�ifھ�]�,f�k��QJ/Hǘuع)��fm
���x|������z����%.���enj�DSp0�Ü+X+=tJ�Q����L'Xk�5ŝ�1��6���:�%��I�g�E���9�6��~7��q�t0���?�
O��20�.0U��a2�lE���_���v�h��0U#0��İґ�Lq�a�=��ݨj��0U�0�03+'0%0#+0�http://ocsp.godaddy.com0FU?0=0;�9�7�5http://certificates.godaddy.com/repository/gdroot.crl0KU D0B0@U 0806+*http://certificates.godaddy.com/repository0U�0
	*�H��
�҆����g�f�:P�r�Jt�S�7�DI��k3ٖ�V�0<�2!{��
�$���F�%#g��o]{z̟�X*�Ğ!�Z�F��c�/��))�r,)�7'�O�h�!����	���S����Y�;��$I���H�E:6o�E�E�A���DN>�tvբU,Ƈ������u��L�n��=�q���Q@"(I�K��4���Zц6d5oown��P�^�S��#c�͹�c:��h5�S�0�S0�;�r^����0
	*�H��
0��10	UUS10UArizona10U
Scottsdale10U
GoDaddy.com, Inc.1301U*http://certificates.godaddy.com/repository100.U'Go Daddy Secure Certification Authority10U079692870
120127182954Z
150127182954Z010	UUS10	UCA10UGlendale1'0%U
Developer Express Incorporated1'0%UDeveloper Express Incorporated0�"0
	*�H��
�0�
��H���UN�eg�jhU�6�UM��|��;������1>��0���]�}~����U*�5�A/��F0�G9�5�%d�T����@BVh=��DN�$*�0rM���:!}��_�G��%�U�2�q�	�p6���bN��d�����_EI���0������@+�p
hUݤ�(�{g��t9��8ݢ�ͅ�u����-�&��[y9��:�i�:6����X���D����W�WVLaO��&�`93�מ�����0��0U�00U%0
+0U��03U,0*0(�&�$�"http://crl.godaddy.com/gds5-16.crl0SU L0J0H`�H��m0907++http://certificates.godaddy.com/repository/0��+t0r0$+0�http://ocsp.godaddy.com/0J+0�>http://certificates.godaddy.com/repository/gd_intermediate.crt0U#0���a2�lE���_���v�h��0Up��W��m�u�_
-x�Z0
	*�H��
�Z��f�`8lH�u/g\0)���D�"Vᤤ�
y��*J�0��r�d�H�t��� dj�νОDk�U?#��`Rb
�9�v�,1�X��0ka゛Sm$%�Qgָ:��i]�͂	����dr4�Lzoo=�a)�y�Y����Dh�H�B���ճ��#C��*��V�V�8_�-}�	��a�nW����_�n"�"	��ZW���/�R�BL�c�P��� ���c)�`���r
����l�1��0��0��0��10	UUS10UArizona10U
Scottsdale10U
GoDaddy.com, Inc.1301U*http://certificates.godaddy.com/repository100.U'Go Daddy Secure Certification Authority10U07969287r^����0*�H��
���0	*�H��
	1
+�70
+�710
+�70	*�H��
	1As��?4�Z^C�0.
+�71 0��http://www.devexpress.com 0
	*�H��
�h/�PF�*A7�0K�4Ѳ�:�T�_&a���ft����ۈ�������y��
��JԸ,����0� ��;�[88��ISOZ�1�ޱ�+pnAP�K f�_۵_�p�	^�i0��e�d�"��棱g`Y:�Ȗ��{L�2��
�ir�ߍ\l�=@�:���;�O!1=�(/G��~���Q��Z!^��^ �4��K�x׵0�^#��!��T���|&�z�&(З�1"���h#塂0�	*�H��
	1��0��0r0^10	UUS10U
Symantec Corporation100.U'Symantec Time Stamping Services CA - G2��8��5n�j�P0	+�]0	*�H��
	1	*�H��
0	*�H��
	1
130606082215Z0#	*�H��
	1rԍk٬��4q�̥#�0
	*�H��
�i�b�1��2��x4%�ī^lϼ�#�7�-"h1�D�B�q�Q,52�+ݟ�m�@e/K�8/��i�;�z#,��{����	ˢ���w�����R����!�F�L��A;��ڢ�1�]g��n�}5ˈ¾���>�����mz?TI�������)�'o`�8�PŝY�E�`�+��w��/([�%ͼi�jI��Q	�����%�.�-Vs���p:3�լ�!
�-�����@ܲ�gBi_��D�p��