From 80fa504cb89a878aa5adaa1dd7cecdb7018073b4 Mon Sep 17 00:00:00 2001 From: archmoj Date: Wed, 22 Jul 2020 15:32:41 -0400 Subject: [PATCH 1/2] enable hiding grid lines and zero lines for oriented traces even when color is coming from the template --- src/plots/cartesian/axis_defaults.js | 1 + src/plots/cartesian/layout_defaults.js | 2 ++ src/plots/cartesian/line_grid_defaults.js | 12 ++++++++++++ 3 files changed, 15 insertions(+) diff --git a/src/plots/cartesian/axis_defaults.js b/src/plots/cartesian/axis_defaults.js index c1fbf92f9ea..5dec11fec88 100644 --- a/src/plots/cartesian/axis_defaults.js +++ b/src/plots/cartesian/axis_defaults.js @@ -99,6 +99,7 @@ module.exports = function handleAxisDefaults(containerIn, containerOut, coerce, dfltColor: dfltColor, bgColor: options.bgColor, showGrid: options.showGrid, + hideGrid: options.hideGrid, attributes: layoutAttributes }); diff --git a/src/plots/cartesian/layout_defaults.js b/src/plots/cartesian/layout_defaults.js index 3e411ae0574..515b30fa138 100644 --- a/src/plots/cartesian/layout_defaults.js +++ b/src/plots/cartesian/layout_defaults.js @@ -239,6 +239,7 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) { letter: axLetter, font: layoutOut.font, outerTicks: outerTicks[axName], + hideGrid: noGrids[axName], showGrid: !noGrids[axName], data: ax2traces[axName] || [], bgColor: bgColor, @@ -303,6 +304,7 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) { letter: axLetter, font: layoutOut.font, outerTicks: outerTicks[axName], + hideGrid: noGrids[axName], showGrid: !noGrids[axName], data: [], bgColor: bgColor, diff --git a/src/plots/cartesian/line_grid_defaults.js b/src/plots/cartesian/line_grid_defaults.js index 18fd9974134..a6fed55751c 100644 --- a/src/plots/cartesian/line_grid_defaults.js +++ b/src/plots/cartesian/line_grid_defaults.js @@ -42,6 +42,12 @@ module.exports = function handleLineGridDefaults(containerIn, containerOut, coer var gridColorDflt = colorMix(dfltColor, opts.bgColor, opts.blend || lightFraction).toRgbString(); var gridColor = coerce2('gridcolor', gridColorDflt); + if( // reject template color to hide the grid when requested by hideGrid flag + gridColor && opts.hideGrid && + containerOut.gridcolor !== containerIn.gridcolor && + containerOut.gridcolor === containerOut._template.gridcolor + ) gridColor = false; + var gridWidth = coerce2('gridwidth'); var showGridLines = coerce('showgrid', opts.showGrid || !!gridColor || !!gridWidth); @@ -52,6 +58,12 @@ module.exports = function handleLineGridDefaults(containerIn, containerOut, coer if(!opts.noZeroLine) { var zeroLineColor = coerce2('zerolinecolor', dfltColor); + if( // reject template color to hide the grid when requested by hideGrid flag + zeroLineColor && opts.hideGrid && + containerOut.zerolinecolor !== containerIn.zerolinecolor && + containerOut.zerolinecolor === containerOut._template.zerolinecolor + ) zeroLineColor = false; + var zeroLineWidth = coerce2('zerolinewidth'); var showZeroLine = coerce('zeroline', opts.showGrid || !!zeroLineColor || !!zeroLineWidth); From 70050e2af51cbc4eaaf08770abbc160e4d5bbbcf Mon Sep 17 00:00:00 2001 From: archmoj Date: Thu, 23 Jul 2020 09:25:37 -0400 Subject: [PATCH 2/2] add test and apply similar grid hiding logic for defined width in template --- src/plots/cartesian/line_grid_defaults.js | 32 ++++---- .../hide_gridline-template_color.png | Bin 0 -> 34591 bytes .../mocks/hide_gridline-template_color.json | 70 ++++++++++++++++++ test/jasmine/tests/mock_test.js | 2 + 4 files changed, 88 insertions(+), 16 deletions(-) create mode 100644 test/image/baselines/hide_gridline-template_color.png create mode 100644 test/image/mocks/hide_gridline-template_color.json diff --git a/src/plots/cartesian/line_grid_defaults.js b/src/plots/cartesian/line_grid_defaults.js index a6fed55751c..2ed89aff7c4 100644 --- a/src/plots/cartesian/line_grid_defaults.js +++ b/src/plots/cartesian/line_grid_defaults.js @@ -31,6 +31,18 @@ module.exports = function handleLineGridDefaults(containerIn, containerOut, coer return Lib.coerce2(containerIn, containerOut, opts.attributes, attr, dflt); } + function _coerce(attr, dflt) { + var val = coerce2(attr, dflt); + + if( + val && opts.hideGrid && + containerOut[attr] !== containerIn[attr] && + containerOut[attr] === containerOut._template[attr] + ) return false; + + return val; + } + var lineColor = coerce2('linecolor', dfltColor); var lineWidth = coerce2('linewidth'); var showLine = coerce('showline', opts.showLine || !!lineColor || !!lineWidth); @@ -41,14 +53,8 @@ module.exports = function handleLineGridDefaults(containerIn, containerOut, coer } var gridColorDflt = colorMix(dfltColor, opts.bgColor, opts.blend || lightFraction).toRgbString(); - var gridColor = coerce2('gridcolor', gridColorDflt); - if( // reject template color to hide the grid when requested by hideGrid flag - gridColor && opts.hideGrid && - containerOut.gridcolor !== containerIn.gridcolor && - containerOut.gridcolor === containerOut._template.gridcolor - ) gridColor = false; - - var gridWidth = coerce2('gridwidth'); + var gridColor = _coerce('gridcolor', gridColorDflt); + var gridWidth = _coerce('gridwidth'); var showGridLines = coerce('showgrid', opts.showGrid || !!gridColor || !!gridWidth); if(!showGridLines) { @@ -57,14 +63,8 @@ module.exports = function handleLineGridDefaults(containerIn, containerOut, coer } if(!opts.noZeroLine) { - var zeroLineColor = coerce2('zerolinecolor', dfltColor); - if( // reject template color to hide the grid when requested by hideGrid flag - zeroLineColor && opts.hideGrid && - containerOut.zerolinecolor !== containerIn.zerolinecolor && - containerOut.zerolinecolor === containerOut._template.zerolinecolor - ) zeroLineColor = false; - - var zeroLineWidth = coerce2('zerolinewidth'); + var zeroLineColor = _coerce('zerolinecolor', dfltColor); + var zeroLineWidth = _coerce('zerolinewidth'); var showZeroLine = coerce('zeroline', opts.showGrid || !!zeroLineColor || !!zeroLineWidth); if(!showZeroLine) { diff --git a/test/image/baselines/hide_gridline-template_color.png b/test/image/baselines/hide_gridline-template_color.png new file mode 100644 index 0000000000000000000000000000000000000000..49023fb0667f7c8fe1ee264c5ad920b90e3bfa2c GIT binary patch literal 34591 zcmeFZcTm*H^9D>>k_eJ>2FY0of`DW}vcMu~B`TRkKr$?nL6R&;4gxA^iIQPaksv_? zk*tzIf+PU}-&yax@7?LW|Grgk{i+a4Yi2$(Jv}|$Pd`1;dOGT7i5ZBou&~Zv)lf0O z!oq=K{t)7W|7o*NpTfdo!@8<+<@#OA&)Ed&)T&Jp3S1iarpe0%$u(>nF%?8!XYo|4 zqdJ8(2BL6dxvo+$sc`o+#1cNnbGSpqfm51hhv$uLs((&ZRV6x^>-p5u<|0Xou8)^V z?%R^~AeLPJv?oWUt0zvyvxY{~JSLi&n#6aLu!s_W{xqnu(L(wzB1u$mxD@~V!N(@1 z;lcS^n`4JpDU{!A(5ZCS?= zUXwX9^0J_lqkNyuna9wof>IX=IwHJmEQr9eL+B&D_h)c9K&2h`Zc-*lrp ziSyRm;2WIHQF9^~sXS`Xt>?sr*Jtvu%NfL_PfXoz-0?>(824 z1=fApiDdC3oa>6$dZx-NK)tgx`0A-qsr$j!O>_VCx~~1+Ff#dc&UI#4Z@N;I*?^t1 zIyrI=E6R2Yucn;uBEC|n7QfXzdqP^{FxaK5aB?pcm*CUsw@s-aWYr*}q;p4>jOW&K zGKCKrP8H~Wso6OALhr|EpV_)P)rQ+|&)YZ|t)}woR1e*G?dX~4yK&TDgKnl93ukB<*pdy8EDcuSc{+P&lbM)SuA#;q5Wx*rmP zk8RGoiWe7YrG0u|W%ESA|M<(RH-+kCbHU%&tiE@G?TPnT>PaD}a~u_~U*f<1IPr$% zk>~OdyWHN0;oZZ9wD`8G_lFndT%Na|9+g(vHF?abF)0KwfdM7AMH*XIpOzZL+NW{e zOdh4F+oG%xZ;zqkLnwSd99({1RrtoOv8)=o{&~9Dr^M!>^Lx>$z^~I??cq-9y;+yM zh->WoJAp2{6CYZJy#{`zwhigDK&GqP)xyYrhCxVQa4wA z`XF1twEEGP_J!nt;N3Us?`s?q-sH?5iv%B@acx{cjzG7+)xyv?8nWV2wvame{tP-9 zxUJ(ucbjkP&t~H!6~29zP*x201o{}yi8W^7V-a#n41XNNrHJ0Pd580EX((P(MR@== z?Z4R?!P{f{h+4pyF1O9CY2|#FrkZKeI#1(DkG7HP$Tqap7La=-`tS2UB z>fVCANGIpQyuC1jqG{YtMWj@W!la%{b$`B?LyGIkw_btDylW4|Bhoe6V`xS0yS1OZ z6K@w*O^ix$;rti`IJcZ zhe?@jyL0=KZjsIxuPV$(2pyig*`F#vixe`m7iAEIg(QVh^61blwau#ukVsga%{($qPPNlwu6B?a_8luoL_Kg&R87Fq2`Yfax5bNfJif^iHsBCXE%#kXmTLtbJDeH0P z-i8P;InkGNx0#EN%_koUZ95b(^L; z!YkpodyCTt*iX?%8jo(shuo7#LFqHy$D4gbn!MKR=bvK`U|ez`N}QycB;n8D#i0DcdD#k8mz@!>vl9+PHc`! zI3^#wn;5h`-_u2Wb$RG+*Mn|HlYoGhDt=BWhDH^(`7QyesiB9=D`{o!J=&XJ+rI}k ziPC=)jGVC>RaFsMA8ii~=8VWz-WV^3MW=V8w`)z--j$!t*$!SvW-ObUnzv`Tu`=Es z+%8tnt{g#EEnsuJT3ShRpTpc(IGR0~&)LpSM>t99wux&Shf2Pdarb<1EL}KU1i>w! zUX61AtjN;)NAtlOQ;l8095tYUpDnj4ok@lH_`%X=_ydpF8!uFh+c#Qvbh;0VhPXXH z7NuE=b15G&K6OZ~dvVntzt2&YBMwMh{GfYNW0`{7ccXEsnp%*LHsdSD>)V5{@Wp;y zGPy(@rJ69I9ThxdV>K}UOn(2{CZC4i)m@VGJ*QfqwBVCMOLP#A1?h96KLZO^mf~-G z)9bB1p;b>jPv*B=oTYC(U(7kFv>mCizIV8k%Sh0!jHtW&#afw5{@?@d9A&_AvhFyC z-u5Phn5tXF>eS-V)ki#BbnpsQ`I~)D72_E$8o13=Q*cBUNmv5uCciB+l~7h1w&WnH zW?qVb^=L-cCM6Y>LGQWRCtTi7uR@#`u(&Nkej`c1ls;*+{z@1=J;A%8*=I9;PE9V) z%8H$g5!@d4!ca(~q}sIZs$*JfK_F4r+YcSSIJ2$fcVP2N}!s z@n9B$eZ)>lrj5hI$Wd=w(%#;=?S;O#S2te9 z(#EGs^;mi9l1ESqnue!NMKr6V+fqw$T^HB2GtxSG;LRvW^=jb#JP|Zn$ZVaRo^*`$ zGz+gF6x@Og)gAKl8f+!X8yw*FqPX-tMc>$VRNa_T$xI|a!uE{nY6PB^EB+?f*B2F$ceo8#uVi(S~9;41{JRz?YXquV? zhkIW0=RSX)LEyG4p|Npgi$uczwO*W^0=6og^)7udRQ)5~w~wTT zxEq{nx>|f$^tAJg2pvJlLV(eP*1%SGua*XCUX9I67Op2IN5?D>1T+xUU}Ntk9e9mEL@>y6Ds;A1-amY<8mp-fa=2yWpcZV6VF7|Mq|<6Hf`)wX8Gxx*Y@Y{Do!R z?~;$J(!OWzU)I}M?3ZxGVn-8a+dP!^DDXgy4RBBD!3+C!c;QXH4to+ZcZF<_B@N&Z z-Gkd~Yoct;Ie6d|-K&TEE0tMJ6gkzZjz%ckBE5UtIsO}0E#gT=Q%A2R$;eQNq%ngl zNg~NUX{pu$WxJ!Q5kT2)mn$Bk2)wQ%Jgz=`y@(7 z&zIWt#gv!T_R=^{?5`iURSOc`RRsYV_3iq?Yd=;E>oL@-)?~-wigZ`4o$S8~8mV(P*2_tw< zl3Fxo7G5W3O{bJ>R`)3{&(>rFS7)4e2vd=qw-*sG-hPo26<%hk>F>Q*UiP}1Ue=U4 zr3B0Fn?6e~YWV)Hp>fLmRW+GS?#Wxp1c!R;JF3Q&)n;ho==<}~gKqPb@~td9t;J$F za$X0zh3G3E`N$}{%?|A{rFLJG6E?}QamaD`Y&Y}T*?xlx3)rN%zz!`QxY(Fpp-H0T zqtP*K#aB5@AQ4Co!N;KzJgY}PY=PtLdfhbo+H#VYZ=89~ZVF>TSxk4lxpB0TRVrsG zFI?JWer+i?Skg5aUPIn^ZoFqTneoBYEjt0Ob?(XY+tbWVP|Dzp$vM8-yPAVcJ$&*v^Kbn)xX zgxBZUnrXZ8!*eupuDxD8xu!46>m7%u5rU`DK@B8tA}X$Nj;MR`i5>MdW0aCv3_EGQ z5rb(eVQZFHRGhRu28tl$$0jz`lNj`nJ!KY+|IF!OQzPOL_xeyRm%^NtF-%=w-fgEb07-kKiSM zTj;LLQq)y2r5`^RfU&)e|9a~$pajjSh$glikg@&?7r}U08Q2nXKfx2lEkZpMBF*!D z`k!NHC`y1C*mscV{={3($>C6yeOSoiJpU7383J%h5xwa1l%EjG|4jw#-v3DjhwJ}y zU3u7Rw_=Gxl&Y!-i_E_NeGxI5KX z?yLe{MPT=lbSr{=Y*PDKc7aU`D6(zd3hdchNQR^7wNbwqZ9?UmehZyPqf)Bb; zb&W9^Q4}dqn2be)7XzH@wL6BWDNY?UJb@dcMW&_34NQO_I8I|vN??uZS%?J|En*}K zGENgn3JPpUr6DUt89FTV%UrALw4c9Rm|b>iYBKmMoTBf?_gIK%NS~*cfAF45Up&Bt_&){uTXpql#=pvi?75?@b{Bl#6=jEs9g+8g^<~5bl+nx zSY*eim+!RHcbXZ>6F987`JgmIB9<+5Jv}|ro{J>-By@`C>W_2&R% zVhQxPf^_@T!fa#{ByB{6ua-Po<8KkA7s194@30Et61gkL%iJBhs~4Jf8E3De5&z}( z;#sTc(u$At`Y0wb&GM;AD}~*S=}g1|sm_xAJ9(1h7V$u)Afx-@W8|D6w3ZrHt---; z@|H5T*G*mhf@s~mF;Z$m2IOP-xQE}H&>hl;UoHp{sLi(KyuTTP z6r|6#*a%{J>@6HPYflC7o{w!iwQRy;lCj?J)5?h?HMRHPYLBfgGK zzDA4~Sy!v($w!R5;mr$mocjE(05;A>14UP(yWbXgV6EET^1umk$=Tf0Tx6{sESJPqN}%)KFayr9K9eTs)e^#0$QPWx*?mV6#hDY zqP{8WUhuqHzEZ`7=WJXbE@9?p@W1(iejVEdypTSzg~~RZVfhu|*i=<5i}={?c$|_1 ztiv5y*D!1iMOsWZ)1TeEqh*8!Y2z<(-z}1d^pW@VXNDf_Ro;{KrC4+{Qk)4}AY>6x zhk!0O82%C=_hN0!EZ$l)PYC2p*8Lm0fy7AhvEc8F4Lbt@qax;5@TIonc0OpYx#=4- za6&K6{9M;(3eOukh=m7iCMYI~;{%%ygTZYSTyOmu_@JajHBBbqVs(7P_j9MfXXGG# zd{>B(xCpH@9PP|SHj`~m@UPCYRc_28T>icYT{K)X5mBV!{)QvZ%c-WiCDdl|wKI-B zii)TvV+=DgFgJhd!2d?ZK{tAak}|)JIXS{MES^7i4^gC;Zp3i~T+V9Qh@!53S0Q4g zg|$wfAu5aF5p0}G+KFbUJk#{{77TWLAc_t2f~e;1Bj5mxbQ_{Z8pg|2(bZb7Z~GD> z4G~m=jCfW-^oee$B&QKx*n#_*RB(XVsx&SDlk~(c^w;rCx#%(+4FW!?z=qgjsX^l_ zRnSMkij0UWq7CNkpV2`2gvCl0_@FvO1}MREOky~9KSF9glvd)j`k6ka;#WdfW5=p; zUd2p5_t)XW*$<{XJ04xN&mXS|9msa!D1nXRb$v?W0Hbs2{`v(t+xupztqCXlP~V*p zp4{sl+GvB2F8(Ao(7sUT*Y?%y2d^a*l@N!|xwS$T`>FK}QB>%v|CGKl4c_E4g2h3p zU{rw2RyQZ9s3D4}!^TJiv*KI7inELa&#V?}#((hmRh?6)|E5<|I%44*Td6+?m5S6d zeqFD{dG`&bp)z`ub@(A!Pmf|4zVL@4SR+;vd&`d{T>EtiSWL3`a;FWA*4$(7$~*d{ zn(rYI3ltg=Z?rMrNdNaYNLpa)vu+jUf&27&t(OuX;9Y<6iN#nCWqz+m?-FJi%Lf0} zicp%e&337U)t$jmGgq;N)vxV7WKYPWe`Md@{#Xg}m#>t;0{2q+Oss;>PI*M~nG|U@ zMoL_yfN0@fj~Mx(tEsHI*%X5=@$U2!+L$ij#`?oR{XEF9JUpj8N5cx89K0KK zI5fg{$gJv=J+mY$k z6e;`)d?G=yhQ0)INb&xCNYRRf?+R2E*WNAaHQ&Lu?}w9_z1N^BLq$Q^E@6({_Ae)+ zs|D7&hXgxl0&H}jNORVY}dcfY!u-d90a z$HhQ6wZN`-{c@7xOwk#asF%kEnPwjAcWiy!$gif3M%bO9J)?df81neb;7{iC4JyIr z7g@*>m<%^v3W7R=M!bQDGGr;olPqN&EP1jU$}Wys^3*R&PNytO;_RmuXteZ&EKg5f zR?!4P)qD@_@yG1K;xD^!jmX%XNz|i2=FyLHJ^j3psiy>ynw*TFm#~NRXI$(Cu=+%u zQ)IDrrhO+W@S8UYlk^ZTWz&rB5;GP5bq#uY0ksIs%w_+WIndE;Ss!bF2us7~2|>an z1OT^rD$x`V>AGINymHFB)D$r1`?>1Xkm;U|2D(~Sy+)*c|K^9K)Ro|wE#(grkyB33 z%Qe33V~<%lsA*jlI|Z13M`>lo_X}<;Tk|Qd7Z*kE>q4BseGd>vA+-dScnODryx{Mr zU7L3ndQ;zGn?7@8u6G_s%#d60-$~~&CV*(UQ2eoT)KD}4)+sJ|e~yw5Jo@m?%uUtW znnTiU#`)M|;I7xoFa)HOlmNv2dAr{nTsK)ac@YVawTBKN_wYQ~Vrg-OZZt%`^x(=R zem9h_{HDd%6O(FFWNUv*K+2>zHe~ZK4J~NVM5Ugd;r}DlH#_l;|a6pd!jo z42s;3c5h#QdYx#x$xC^>+HMqhT3YdD#&rR_P@x@>m&p?G`n8YwOwKYkMLw_7kf$!I zcbT+aeEpEuvZW!^da~Z7i=g=6;NZ?J+r6WyM$ZWI^~q;sAlnhrJ)Z3|^TY&Yu5}JK zoG<`Bc$rEtd){p~JBKxCL!Wo_q4(8zQ@#==^OGrsby_t{#aK7QGg1rKKYrJ)ka)#@ipW_g#`!RT zQHm7kp9DV_507#^u0#dQE)J-nc(?Cs>}o&mZ*?sJ${$j~2;!#+EcXdVnim+2d<9m$*{hC`_ZeTQ#>oGP7QWnWtWNL?}qe%n_CiAVUoiDGTWYnhT~0oIIHV1#1Q zK9hU>KCT{*vK3GFuf_8#uaW=-Nlv_*ns(9QXAuNlK2PGc1o>Ed?8 z#k#q!qA8 z8Vk)4DaqjLprhV0D(`#@?nY`Gz8j}{eIHHvO746iK~mHU3aB2^gG-ly zC79`b6ZK=0HM!)r$M?1ugs~J(=2>u=lLGwkwe+~Sxag9(E3YS!DQ$mts;FC0hlWZNvv80TYryz!3qEK6w#Ci zLE?oS+6PZPh1izDc%jJQJ|(Vm;6@Q($}bE4!{0K_11_MT2{10^=v#Qv2Iz_Emk&xW z`-gzcdoGP&01$>62&)%zlW=r_ftd)OFOY|mq#^Gj)F z#Vb|B{_vXq!|rXi;GnPDFEzM6h-2Jry??veqK*)7>+ifCjiwBdn{K(KpOJ5Xn(C9~ zOzN=1+^|o6xsuh2U?6E*VQ$fYCAUW<>f;)5^Uoe2=6=JJ2b1Y^XcUL^iSwrs8=%Z_ z=r22<=BFQ&-+1_Zbr?d}8YVfdh*?#3k_JGSV5tTA{u^g5N=0|w7V`${Rq~GC%%o?J6cm5t5|gZ z^a<;#OFbY+wYEr50GExaA9UdiKnfV51PkF$*dTq}iAmIDCYE9*W%CR&6m()7uTdcQ z|9_cG7EC)G>t0)@!Rhym2mb6xA>I&Ta=1^x$p({IJZ~?P0JZB_I^f` zS?_JQct}$T#^yoe@X7$%VCs-s&-I6{{mrKk15mFqB~M0w-(jgkPL&uHG4d=_P!s1J zaEr=3dZ97@_6g&nU_HJ9rd7#WIZV#8GmD}idI_zPCc4K1AkIPFQi^{&7I{ku?#=p) z%ahK=Grpq*;hpDrp~OSba6I^Vu*I3|zqBtwaJ$*%N|AMEjvZT~)#9m|K~#bF%8@Ja zG7##-XK;)D(;d7_DR?N42GK%+YUm4<4{hI=?qnktuvkiy72jceBZ;toFJeR(x-^(M zE6@-iqt{g12>1H7PTH)Eh7%@^US-4Jt`lXye5H=~T{LB}dATX>lzSMTiPu`w5YUA) z=jai5!$7=G`U(H7;(D1dW@%Wj5nNoaJcG}~sI+Osf*7gAMjwG!fpKj6@qg(N3p?2Y zgPT3W*;{?+P+<${tBXY}Flgd)gr37p%lwyVS@+J61zNLsdyE9t{b0K9QAB5mAQH^OBdpQD}Nsz-3U;ZI5jKlhmsP&FEYQ8MB z%)Dp3v@2e_u{Y&a>qb$m3VIk1c{2=yLL))^{s+c^0Ru2`^bnw9l;EjW%s;u}J3CsS zy5S|z2R_mtLN6bM`H1Nsp3vXidge3ls_lxw`Gy6R2wQ|UheuWZc9r&3l%tpMhWm(hPF0cUG*8<708T&gNKB3F>;(RKYO&xA4b} z^0(l=76bt;IJ@gk#*AV(bTY%O!q7j1fU6xK1%Wg&Sn1RMcjQoy=hTS@+k(}^R^MyzJ^U2h4gJOQS46<9vtbRhSS1Y4%IwWLVGB)H2H+ zZe8MD$}sX)UMTs?!7iH=jCd;ly;K+!z54Bwa-ydRyhpZT-ok{u9kkcQmObZ>*)N%* zpXV<0J)pRV`EJ`X$-wcb`L6>kS6Qz>h3L%18eS#fH6V@3>&S2wDzAM_5$+3q@%eC! z@%woMvE%F)jxT!ej?lXI(Wb&Oyj2Xgw&>ceX3`d%$m+kb&m&+m^Qqx_3(z~XEA-ObtAgQ4q< zaJz5qgXGH!nJr2mQU=>D+1aJl-&+aANE;a8+S{XPH#R(kHQ~yEa->J;69vaWg))W#|iwRi!sOo`jlx zDh#p(*s&_eRO?%*P>9N3V3u~rvS{{(NRnZBUyD8xLxr6W)g_(9T}?e1*Q;Enq3ZLO z3wY`Mh>^u$AK ztCG>dz5Ew!X*neBx!}l?myt4Gf_-`s&1+a3C-y=+Q<9yJkI3fLeSqld_}L18aO&VE z%0jH{e7L=Eu$bu5}pY{Cv`_q;Su55IMt5uz|+=> zkJ5K59ynDYs2+D1mFP(ix_yj%OFxSPc0PQe_XMJ@q^fNBvdVj`pt^7ir>^JL_ z)vDRb5JYJHEwNCt_WGg|LoLjRh<}M6aHk#~QRSDZkugc115~+sCRe~ClRnR?bQds` zo)~bOv)Zw~cRm{uezgNI#gPzbv(Kg^>C4^}wS~SksroaZwNt)5jVi{w#B!c?>>VXj zNOzOdU>aglP2et0P)8dqX5Og!n?t$ur9f0kNeRJj+6Z3|H-5Cx1Cs?#7iqbG9mZTh z`*MM$vRsNs6sgF`j6V?Y&3@35A;3q}-7LHlt9Au#@F}yx01K~=4|r1yS1{)C-8K)H z+L&)4Z2WwicR8QQs{|0*W5v>1ktV&&1gJ{=7yAm}*_=rN7ll6ZhbR2M&)CH_wCGvR zuO9pE$U+vHA%-HvNFgNhj3KJCpa2%Gs)9C9esM!g1^Am@;(SnKw1_Eup&2jN7ys_b z9*Gh7AJYkb4K#6VEan;l!2r3_OUyk#*7FEv${`P6juAuqH#4oFCYC(~43Itwt;uk3 znv?WVog4+QC+ybcbO3hUzVr}aSuY$0@tf|5#rAyF)=f{;rY1IqA~nH$Z&v-LHB)r^ z5&yX(;{uRVN#gY6)jedb9~K_21{N6wg0QGM>nLF0 z*K7??;^b+YZ%DIiGA^$59+sk>fM%+Xt^*1H4dbsPYpSef-S;#g)8Ujo^uGjbqkO{b6QBgqSqM!m1z{hRTIS=V$ zJKcS|Xg0nxFV=2?@~{b4(L+(?nLbtm+y28p_~*vt8wu=u!#hJOxv+ZrjXDK5S$MR? z3}6l>V0aa9tE!YyD`WJKN1_Aa^$`cSS{=hhicbuR&8Iyg!|*_K(9xIA|Jx3E2(Rr& zheiFRCb$cInQ)`Z9OVNl!APu{Cpu{2zSMtf2}vG|S?*Tv=+U0y=+k0zqtZp3yBMFe zh7j1n-!xB$t&iLEjv|E=r<)Y5Io#*sg|C40Bc8Z29hiH?zeQsog6FiPV^{%<0mB7R zlZxI49^}%HKGpQwN)tLQF4_{ZDJMF;6U@`1t;8Nx(#S&H>O+=`Qv4XnIr$S~o_>}V2@CzAy6AqAGL8tQ({(Fr$0#M+p zb;Qw2i0*CYfHElJ8_!(hWjq)2^zxNf45lh9WMAhhD0o5o^iKoNL(BVuBUJreB_cqv zK*z~fS%%hTke=JvCQ;pa0$7=-W1Y%BT-@;E8Gy%LpyV`-XOVW#(?5Twb!R~KVbG>0 zLJLG`exSOd6BJ%l8b7Sl=y1RT(`DdzD zCb(}30o3_7NWMd8@)QHfo5(1pFWzXn!*`$Mvg2_@DG1~)!Z9IG*@7+(NZ!a4snnB8 zx=ux*Z_gx-|Icge6U%g&s6~V5M6deR8-avT)Bf)hbsaI(iq9iDI1`}d3#N@>?bI*k z+$5j3x3`lTZCy-$dRA?(eP+Y-TRp>(1y17kwOu1pAN+yqRn%Q6oxs7c>B16s$O)cF zIiJdSI5`VkSC6@}a#)cIZ^@|H0;y@~`+Q}BYgy9dcD)b8_?;(edkz#Ycz=F>2b)Id z2HxRTs)&{R{9rDtcE$yCVS>CPl3o-mk-9~64C%M$ehq$m>8bv6ot1P!vz2GF?k7(S z#bhLBNgTgeuUTkct+GUNOOO+m!PY10&KMS7L+`Gvgs)t!fNakH=FD z8JSWeXubbuOZ@=+wO6d6_WdCstDos69rK8F^JR3{Xr(3Md3OfwipH>OGdrevjl;8-h;!=5C{{ zf(~CE%nSSttkqyX+!e@;E6N(CE<)_>jTM^*?okirVJD8TliM{(5#-!OAc`I=lcesi z<5o12@|utytnf&2tj3ZTA*fwDwy$qBc+BbP(BW$6=tMXZ*qft!=^Q}vBGIItBym(A zHh1IM@sYs&Yz5W|tz%z&oK#}ku06<^bAjkwB%2E2SK@&jYgU?-^gQq-0IZy(Qnm)cGARvN=%pTbRV2ceY=MyV1;eYwBGD1ibqR89UDK< z|EbF$?H2V&uorKwW-w$@gtaP}^CpMM;WqYNK&e?h&Vx0^NR-01ZMOjV*D#mk!Ony2 zOA+8GGYSljmYS%S->8e@AzZln5!9twe?L9xN{IjnxpMX;`rP#HwmtyN-oYfJtB?u+ ztNoXNIm4M}Lhw*n_XuW$8O)-ENY=nYAqRcn@885k@Z(@}`r{|Wg zJkjgSG;BOb-}J*PXn2~#y+VMZfGg(@>w@us-SpX@fJ0Mz>n5prn}NsvXF)bS)KoS- zm7tHWnluBzJFtHqcHpY+(A>ma=7gO*APWZ*?)(fPgm3^jsuH*% zfp=+Q0PjO_TbCTnrsD6j>E}eR&a&P;wDWX#Ya^07sqGInKsn=_F$9dc->y~eT$$^1 zh-uC1P$6@|TE`+$4PqotEz{Hg5M-u3$WUUZ%Z@RP5U^rtXY!K*vJIhdrsIF?Qn5a2 z-f4_RNSvV7ks7wMHaeUF^!Go7sT~HhXu_Kx2()8cdxsr-l=3_jaLRCA>j5j}Hugz$z5&7~!XUaobzX`VZ*8qI^r=zh zo#UlkP)=&WLI~-z$osG9=%MOea9!IDHA@m$ATiW$MF9rgtcP(xexqysp)i;CSQl=& z7d>|v#5vr)%>V*13sewAnR(;us$BWA^Mjkhk#x~&Xag-wqJYuq5CDaJYb|`l;EY2q zINvR*;p5AY1++?9QP4Ao{63~Bz!Lw~l<*z684J}|dQ&d|QU2$V%G5?{Uc<|fl9C;N zLYbKOK|c~q8d3ZoQei~Y!LWfVZ%^RAhhrHy`W)O2Q{l`Mg3(U{gU4=;`Qi%*Dq?~! zQ<{HBGZwMe#Rzag`z8FdIOlbC8w!CSL&5p_-6_w6p#9b_=J~kQ*nq61NXrK=9$)-E zuTNBhV@Yb_Y+#l0e_v@hd09^ihF;MXj~hYqr70|Jat;Xp!+!{0hycxSnSoAz>hsV8 zK7dnN`Uq?LgV}uikJ*?>BKDrOW6!VZ{n1jl}38kfe_g!>$fUv+CBN{Wo%MbRvhpHVI3jZ_wfW8Uzxp^v%z&#FeUi< zdNXfmzHR(-b&k|q9k?`? zKG^|t)m-~q@k(yL`-3(5Ee2x&UZ>yW>zt^pd>&YNq3^o)abXYL@dtY?F*%{#-0$fG zovy9a%kSU3Ef$h8zRQsKwRHET?mpgt$up+T8pNyn*vgR^{XMY*1&7I%XA`wp?D{ju zEOq_&YfWZKFiE#)VDbMvu-FH)-%lgQsvB0k)+eZ+O~JJs?Inni$6V{|Pni}wROBM1 zuXSJlO)c@O4$?ZiI)am%$^DGv~!|5|_m$%MOm`vLi(y~xb*PS_7=FEfJeLxdj zb{w&nxOhrLHJj2loTeRGxZr}nop<2Y{!jn`SN+C6SbN)Eq1g);)I>ArJia!Od!&LQ zWs!^e_&gF+VlznJSw08p3tM4zL?9N}oh7L~0ItKx*9|U#5w~GHX#Ho+aNw!DtEeOI z=qr#5TM%~10oQR!*sT(s>`svBjs*4JoMK{0h=q`%>8F^C3Up==Kp~RVOV?44o=BOA zJP)P`jLc-^iyY|7{6T#Ec_LSoYC-rmck*>sR|JZSpYAZ&X>PVU`n;+@^*OcH_Z^0d zpHmai!>K{v&W`0?q7LKSd6P&ZQa>~PfNIUoRGbo^X7N`)M!?XWX_qILliLc|(aAIg zduh(=&pQSM-b&m$V0T|vK5BTZ2AquK8jDTfuP(nW(Jl4^)M^z#J2Ct|9Svg^H0t$k zhoX|`LjJ(Ym&N3w($k3f@rOT*)?xGgDdS^wR zxT`}rF~k^0$jtF9>l&I5YUu!&g)AO`GcE|o+)#0Tz*~o5ye6H?U=(0izCr;kfwH|$ z!4}%_!{zbA@XKlEdzoS#P+2=?w`uY{{o;N+wt>M<$0$R8j)&U-;&T=Z;XE+}<8|y^ z1E=%1ympX@`(x4oDiEYk#nWIzVW6oJc`oR%>xFik7i6300@%vKR&1HDpF?6jBjl7I zP(ew$Nlsceh>8cIhMy7|TU+1x>S?j|n)AtfK0m7q6O~qXc1Yeh2R>YzY7{$R5fo_0 z7gWa7syxL5v(vo4_eU)Z<~JK7&?B9*f7Jm{xC7=xpIsh_`p?=HMbKd2XITrV;rO$G zcjrG@_I4#tk=4TqzagYKIsujy-TxwMUQlX;46>u$1-1O?(jFWjdIA7^41M5J)0*Ov z!0z|yqw+#f6c$LSC<8J}{5eb>YvhR`=Y-E~xrxO`u53YrCO70+19!nPxSE7u*cMu>t9%oDuH`Qsx*Ctn)rAZ7!G%iY(iex^cR=Hjq8} zg%9dVSx2||&pH6ra9BCC3I}j&UIO6W%pg3UbA|^OLvw-Fr>QI>0+3NCEWK$P1bG?DP1oO%#d_pa2%_M2hUkdDqVMrQJKpc zxeQlW5)jI4_5b>*aVh8d13tqak1dE-IF3He2U&_Ha{iakCT1}O@WGMb>5K;xUz(CJ zli$Zo-alKnWL+Onmamru|FbrsPzg1kaubt{Y7YvuxjtNpOF)_jma?MOcxT0c>9QXc z2D=qBD&PP5iZ%F!KxGR8ydA;!Y{5>o{e;wX z-R;70|5xz@*E(=MV;@;({b@xKh|$TZY~yeNOxh~r&$JZ>?(NE7nQ(N~9~QVv!4n&M z67}OsX#u@LH)?rrM9$33+eKp8a1T4?<^-SmcK6SLtB%*SnhQf31h9+W)LdC+Y_ZG} zN{zC4ExMPlUKJXb-?$67RA+6gwRu?;=ey|Q(?(B&PWHySdd;ILxZ`G1CtaKS6EzN- zDf`oapgZ@Z7)}?}J=<#57$I7Q?*?)%J7tA--vtjqoCEnU?UN;U%E|SOcvc0L*hSWLH`6on**(o(In&xE=>!2y+if4{g%-F%JcNAuvDf{*y2#TE8+s6=^aC-qo<( zHLb@}9y4=mg{)-ma#N&b%l8~7?wD-nx+7goWxg9fz5Ybw&Si^C%fYMJxC1L+wl`8v6&*Kn%#d^W&MVp+!t7)N!_eQ%8&KpoPPcj~)iE!`OgZ<$1$hFKsmp*8i&zIHypy?2 z-=>6y_N0*nf_&z=nvYkKUcELoAEqkJ>CIC=uu%b0x9<%IFRQ+P=4LfFN&r7+w*LX3gRWUSi9Cb=AafL) z-26d$(;HwJePXEY@KyXJk};|b+S8jkrDxlxSAU_%Dya#+YIq|e7m&7R??M#pruA2xkwX<*JpEJ*5SekoYDKTq&dc}a4fd~+z& zBZ=3yD8%_ncZxs!z(SZDXFS>eLnwjs{V87$nH2WO?FD9`>KJZ^86{oCO9>S;>?QI= zcD%ZBn(Ye~*4uiaWpdp#x);pfNb-1zM~4T5A9M>C+YjcPl@U3=o%6-Q>ypgV7XuaT z)$8pJgDk*LTmpOF`?USdfs~cc%+!5wIcDc&L1Vg;CFY1Vjjc^9A|(Nc7gYiL_x^o3@O!06HdQyn<9o9Q|l`VM6tS%wfS%*X|Jlhhj|JEIGQI{#Y|bQe>?X4(8JRo(RR=ohR-bN z(b!%@#UdKxM&ho~C zWga&Ec^cdTb)1Iwo0e?sXlMWV?(SW*PO1Obf?EM{u3*#bf0n8?d{NoTSB~U`dN1Pk zIkJnov4Dh zmOwU613fGqNOwstRMKTQIQGWL(c(Zrj@-w!YLz=cq$>kt5G~f5#7O!2{BAK`Xnwv6 zpmc#J+=Bej45C=+;x8|aZA_P^*yOr&9PioZ$FWvet= z@jf7qcfEhSgTL9^E|(v0dv9OEaC?;ipA(`H15k>X56;)mWWemcUY)@gr`b~oon9Ka zIoRkqK~TL`GQ2Ear(EnEQEPgiV9jl8CMbHUQNKhn^z&pA?#)K{?M?MENk#N>!7n(;D@%giv{?T5i4~m)C3y8+#gYF*wMVi|e|mMjZ1u2zZQ2 zPvx;5YS$WkYC#J<+>?eVN~xfijd(`5_uS@85Ohy3B9+gmOokuTsmw?4@IW6iY zh!$0K(ZhY1)*=us9zbagYI0`RBwD5@3qC2mpceo1W?Ykcg4@v3(U~X^*RH($ee-i= z-%r0X$bI|V-xZY`bVP8xATp~OuuCP_$_G0AH6vk&mV!n7xgxwNnzG7vVMK++8e^f$ zyU#qk>zU7+OXO_9+RtQywPPj&POwfBmEg&pais?o?uMwKQyB%2+%ah$mNaqd9a`139QGeq=|f2pyG8Gdl~|yS`0|XX_f8w!VyLOl5~}qK}F;E zKzGv7q~`<2POCmeqX0;9|#9Zu4-U9ZBd4xn*ownz znu7ZwhUnz4<~`pk<~21A$oP%r=)G(nU<%5M!8d-h8t}|TgtxC@v$vh-x4d?$;DmQAm+?nw0ZK7blP+ZmuKC4zEszm_be? z4U{&BV0NU<96fw>EUuqg@FZ?rX@ndl0R8?oxJWeMuC@)6MRQPWy-RRhlbGEoJ27(R z0$9;DFqZQ`C9eV{%M~_@GQjc1b6R`%X?eE2LM)jlcPeZk+edxnvA7SQ2um3Ol?mX3 zUOEKkcNp|6>7yxl5MqQr+Mn!Po;ozPq0-LWcpidnrM?nXy+H%fa%%#N1x#zqcOHT7 z=%xv&@L>xeygqb{(n+I)_cw$>{5LO$kaM=h4ZpFS1r*r?HmeUIr$QAik0nxDe-sm1hZ<$#`L!0PE~GV^3n*v-IK*c}^0c%AG4V0vJuNLFb% z@!P1$H=EPdMf5=^+c_Q7r%$V}xh{&w1`Bwf<`mTPm1qNcz!pon{C%C;?Fd!$@L-0J z%GuB?Jg3*`4A9o53l**VB$j@+OTPr4_R-Zfnl6Bu&iy~_eR(*PZTmkO8B&O`RKj>Xwn0SMw``#lVU%TTMYf{I&P0V4%94?U^}apt_dS09{QmuR9R1_C=f1D|y3gypKIeIT&d-^4 z7AXI^%@>taT#D--ZX3rZv*(s~&xL%O#C|A3Iv_bn9>;$6DY0k)rZvC z+%Uzqy3rpgwk4+i)3%WG?W;coB(FG#r3SVr=I@{SJQY?_E-8kaRYN3jfOL%3L*7gwuGNEvM}F^X9KF#msK6 ziCj<0yhh{ggJ=Gk`36VPs3;81=pN9*lO@mHlBW?hovvmzh_1=07&$grqcYfa!Ar}6 zr-zbc-5uUl3&5iP4af+7B$%;YzI=JCD_@Y7Omo;E9GrmduT>xZw%q@%(o$mW(Y~Q- z3oq`fT@udsUTzk5aWTXuNFT0+q4t0IEtz0{J-+=Z8z$@8oqq6vl%>Wj>#-9`cX1m& zPb|w)Ya%o}hQl9C7xzLgeM090Efk~oL-vxI905Puh=v`VD?ju(Uu%Id@rv-NvQ@d# z<*$FUiTNmBTz!_x&xYYXlT-EIf5S_u#69OmJxt!QwOo7e^|zOu3LhV{NYm=gd<1Ug z|9;9X*0Bzzhw><(n_$cK37NUWz8IEeDrH9t)93XKbO^o!!#HSI^EB))4a$27kQ;}r z*AAz4f?98>_j@4XNXIB8Gj;%xNb*v@YO4O2&uEg@spqHoHWVpNhEs+C82FQL9`*Je z(+)ZRE{~79->Lzu+0$?KT$hwbC443XZ@(j!Lla(Gcuj|BLcj(CI=2A^QH`ka>e9?T zO1&y5j*iQMIMp5i-;xKh11M*joN|VRaa$?K9$x!OKfjfMqxH3XEd$BhbARPWyyLj@ zZF}QB!q%mYm$@=_O4_aWz>kTJqdv(%QTm-JlNI}Sap;eE+g+#iaJ`ECFESdZ%NF;w z=8wi?gSN#Hm-25Q^Wg>VY846FR_>1!+|{vGYDm~=#7o)V?sfZIK!5!BaZUwKXZe#6 z>|&Jw*dzaw91^c+reajce3^#qbw+jY=%f7`oExq3id%0ljIS1~RnkrtUlIPg@v$d( zZ?SvI$wygp`cqK;G_>H+!@b}Q6=u^2SZgd`kG2!XNEbl>_k43=7});)vc5u>{ebmt z{mP6#Pqd}$fog9epD83_-`!&2=XLjl@6k}SLSyu7Y_x$Lt;Ne#G#Egrab!~s)K^p7 zY4?px!Da`&6A#to?A5;eqR)#M0=)4KnBe_QdmzCd-UBm;{;9u2fHjL(_ zBQIBUh&Oiczfp5%e=0~L)&L#K{1!0rQ=qI@ZqG6#hTZ}->s@TV+8xc*$hW~eM$Ub% zSf+{O9$4yYDSx1N9TiHyU>yem!UHW*n>JMb-*XYly9f2|-#%fXeBhf=2oU6DENf4_ z@pP#x&iwW%lafQMVGS|PG|_~_T5jN0z~J#?-s-PUCdsdQ=Y`&4j?~;2m1&?tJ6%Hd z>o7j49RWoe$Bi0gbOCaLkjGER=`VzB8x9FU9Lody4TXx$r%+#9qoeV3x_r%5ajuR( z(#x`bz^j-dK?{Kvs^OCCUAyy+v?;i$}hlx z^6hthre{2WtUH#rG7sF$TJH8oKyn_eGL)l)1COB&?C0HoUVE0lZlVP!QqDHxhEQNQ z(R7+f$hWDVgnM6U+4K7~;oe<&v@VEe1{HJX7mGb|N^^TIUT4E(reVbeX#hsg0}8tb zFoXwcV*;R?EdFnJLn1K^or|5F3&0? zZb;|V-`l5gqLdo6X)b_6+h0=*!0EZdev#l435{MBNwU`2XY0SkP`GabwLXs9gQfeA z+af^(nKwsjZGi5Hzi)q5QDW#boZMjT=f5d8j)%bE&l@uY^J_Q8WM-Xf5~Kx*x(pz@ z19Z&5c}voPPY|N`1b{FX$m|DLBWKXDF_|(>L0{aC_FXl85;RDJlE@2nNC00dl&d-a zyxO5_FE+2rPvK2nOleln9Vi*wsaey{o-z$(j{g|JE!8-2AjYbWw>>le^m16pyrf}U za!3x8BfJ*j18h5{pM!{|uc`*;MB_bA!xPBZ?O){n93u)x^}}2rfmHLKG0iFTA#0jL z*NA2^!t~cBCDRYdnLNc6w@BY&5yqC}10(&9iNGZQFLZ~+n@68EH@*5L0&}@54QYSs zF;FB2mH?pt87>huakDm0j79Ss^dzWv?CgB$nt6zp%r4H}ynXdYFt|U0E26&Yo?P+- z=g>ZRHqOH}?#AhOHjIEXAsXaG^_HUl<6;dQnSEaKX~ibP!WgxF!uc1EQq`fZVi~(a zDRiBNy461i&K&!8sV~9(mG9BkLb30QU#v4<8^VDd92U~SkROAM{%Q4cdu0Q8_3O^}k~(+o468yL%N=1eJD45NQ2e+}l7|vbl@-z9OfB=4QVe9}t9p>V#oBiJyot>f8;y5zt;1x|F` zeus&;;13R~6IRo1FTzp5Lv|ZexuI`abheo%H^r=m*1J8Tv{gyretT?Epir{M3<76< zKQm&ROzXA)#lov`X{picMtB0xF@*9;m0!oF>WH`fq_@kn?aAWnn?TB_MXy>W)mKd*$2eB{%xSY zSs@qjh>6`XEiDZPd_`>j`Q39PO%YJwlmdFA>`wU)jcD%dqZT!xD(bc=pLlugat2FJ z4rI}j9U=eo|D%Q)l6qaq_dK28{jmqWK=zdAIdyi>Yojs# zFa&xPvjY&AG_dm%ABqGoP6e;b2k&>29)77#`$@-Vf&veA>n^-yXa`hq+aQ;sjO{L# zd=b*5|6*&;NhDtyZAnfp!P`5zFaJu=IiJu>ucW*s9k3n#h0QM3-OT(2&EAeszr8EW z&OdyLfZaVRX@gOpi9a^`xy@6^WDH?)Zz^Oprciqd>BS>)M@dju%Vo=aytC`NP}CCg z8{3A};=t$h*KKD`T?dA`Nsgrp+=HP^o>LX5n(s4BCC+4>mFe+wXeV$%PB#?j2dReX zx?}BG`x~GZ%BA`DAPG%sg6ZqhJea%rfHo-S*A3CawjVnS99cow{E+7)b_qeYvBDcV zSKU8-ZJ=zR=90?3b>2;LU*j`O{!1?sh@%CyeTTTI(GW7W0yUK!Cjk+}f6%QN`^0_z z5XabL-WJCoC>u={?T=1gg}8XFL+$Are4R9)@SbZ-lw+-y;MwddbVj}ae^<;r4180wfFN>E_)xl&AV}~cJRG|$|d$zttmg#q<7pM z-@ni~^ODV@&xPFmPHO@-_pkE3ovLO@+xhF}qzJTT_z=>#p`y3pX|~$XJt<@K=95-Kbe(q(U{U|4V5& zIXowpbpO~?lKfSv&F42Bqs=P<%4Q4t|5qx!S{7O1@E$$bcq2Oh%E~VT#+*>o4yD+} zo-@r>*+2C#%w9oJ0WTc??><1bep6+$?jYgW|6S5=<%eZf&-z#Lea=J62SIxu^|_!k z%r&XV(M2M&A4)Yz+&?}fXZ$E-4RDKOa*}Pp;b`@q*QdUA?=*hQD`Hh%nrk6+vtwAl zMo*&5j$l~-lf`Tb?J`cKYVEEwu`!t;H%PGtyir?uQ30D^#d@p=#a{MBnhEjoks>kP zMM(r5GHaDu@sQi+IIC~0^*jMWAzN-U-Kkdzb99@=u2JR<>2niLBlMyJ9HaEb9HYX= zZK_+?bd7|U-k2Mri`gGY#~(M8#J1gUV{HG32{)74$s*h|uFfeCB3tn)x#*po?5MwM z-%{6FVoQFkimdOspRVL@XO4_x)A!U`yWo~x$+1g z$kX#gA-kJ6N7F6=Ye|fG0|%*1*|$fYXTgyz9C;QmbM2CnS^2v2i_?RG2H6d9Dv3f8 z2+`B)h|#^)JDaKFLTCZN@yYTmaIvPS((J?kXgvICXk#h!_;3TAQt?Ym|G=-ts>Hn# zYEcG3D9n^mki;3KN&;>?w~4Fk)x2r)t$CKO>;w+W*JnnWv&7T&cxH!QdQS0V;X-g` zr*EK>5cqV9&3nrCdCnC?e#$xmZWbNr9l+8De3x1wc}aJaB*yw&=g`e9*N4Bp<}Ec}ciGS;&g z9#DylJ$MeGm+Yd>@)X&AWA_DbUkh%@gfj{bNd zaR8}C>(ogsnH#t{S{KSOJwNo)F#Q-;v#hx+LiE5 z*F>VRwlyE4z50|)o0ZohZ}U`WiI*N)G3{TjzJXg2&{PnEL9%z5Tb=42%0_UJ3~3Ua zuqMO>t_!kwD-b#Ru{U06Eig?ZEVZ}6xTi$LPWFSt05id1eT+Ma3Xe*%Ch-&T>Drv6 zHd`{FO8C;tEQAiLic`-{yy+xg`uIGMe6?drSLn-kYZk)y$uTY_YJ}*)yDRtbzvdE+ zU3F#+k33224Oml*mz{N&c%ydxi0=GIpFp%@0TF2;9k6isB)nX6BnsnlW91H*;)Bt> zDawP4+Cn2p1Jp0nyxKzELnCtTlP<`2IGn?)t2V9i3Lu-&Ew}QU3!Z1Uz_53 zZ0^5g;aI#fG9`8Gdj`EdyBiiEYWes!dm>C!&iMjUYEQu4{Fj;GVxO=75tXrE%_4BtL6fk zrl!&IR|6InOGJ#n>8P7k^RSb`lZE+r@(1B)2T`Rm@YwjigUDDb!+|fkpbDFmuH=Dm zTK+CNG!vME`II@cGz8%7dhGcF;$r`_E%jd$Vz#|N5&YOBg)Q_hj>m#1kpqjC!A7Yy zQf4EG1rj5)TC9X7hZei)GwD z8T(?$haO*HCR~%1(!BcSXa2*1?Bs7u5NvyPLIlb=RqF2?-8_8#{R8??oWQ%J=SY*0W@?yk zncw~?1*sPoF6|V{u(&*kR`QvQ1S+bXkdM1HGhwKcRZf%Q&JR%*)Ro zuI8|chL%FQaIT#OxuZ7dw)B8A%c{Z>{)yqK}9|6dSeHx7)KsvSGGWWkK;t(f} zHhOl8Z6R-zF(YH&9+F`-xnCK{i&f^;yokqXR+{22z_7Be<9|%QnQ4G(Lc6M4EOYZM zDtbAVWp*I+=H6u=H$1QaJ(7+ouMDw{Lt_)=3IxCNm)Nt#tLq+7g)W-sn{)-P;{>p5 z>Kwx04*u;{>1dt4_mkX#xmGXJVLoWD61eGS@Hd4EsF=tuZZ71zI2i>UgiMpI)L9m% zPt=1_1G*_80%Pf?$bt|}dCFW^$D#_`$K79xU0w(a-K3%=ZEJMk(y~d@tg`}cpw)Q$ zfSeRl22^U+m3q%tnX8LfloWIatWC86RqxDx+rL8l9o|p5dv6WSwLMu>Hj}b{kZ8QP zEPBavvPX1(xmdRW^P|177)$eg9nViAU&i;dWtSZx^-tf_`eRj|6~fXn9gLptd6O(X z3IqvV5H2ZIf!HI40VQ(Hr9In16fk`pJ?q~?;~ooRr{%7UMGBfi+p9Z@vsJ7%Lj+(h zqRV_E^b?=A7)w@e)h9^leXbXnE5<~fcTaI9v$|-Pexa+VCG9BaE)&7g4q zvP{IJv+3a?v>QV24I}JT)|Af`ijQ&40}OfpbgEXp_h{0nj76?Z=tFX_U^XsE7TBt# z`~aix_iAN3vtxKN>F>ErNEmshE!txJtNq=t#-9+h{&G4y(fPTF828E1K+Cx}tF&1T zD_NC$Z&`17px8+aw^h985TbjPd6HN#Jdx^0)QIZ%U9C+iceHNq;T9?C@l24u_^~db z-)eJ?qpR2>gVK(P_9TVE8A~7#3Z`gI>7|WF@}cESkHukFipQaU5lIOf7Jc)HW+WAU zICX3!un1)C9so~64^+)c1s{kQzZ^=QkOS)COS^xaou)*10cc zMRRT`epeMqRoOf}v{WG>tAHRs`xd2VO?mW-X-FxTHSJ0UVrfo#S7YmX+mWL!tDhe- zL(sJj9tbuJPkrJ-a3{)|L=&Yjturj`voOmc#}O@nw>RBg|Lpr-Rbt!6c5}}|q9(vx zRcLQ>KGpfk$#h2Q*ykN2-3Xy8I}oDM@_pPan7-#yJ>Rc0X}Fe3qOQITipH(TF=JGs z9d-ndA(#o$j2vQT|ANzv`uS_uput<&35JP|oaAzFp*~vH=XkN!^(!+s0gS|uVkg?e zK4!)-IEd3f(z_nOgdj@@e^%q&2Ycjhm3hnj7*W#(NP^#cHQAOP@o>L`)2Ej)kCpK; zk56~9BTcaGn`?a7O*8xF!yQ%;XL24hcrNvzJw|u#x(%C(rV}zm0A_}-$b0@gr4Ng~ zq}y>+6uRsnQ3|yI!2>F3vB~KG|#(0x@tL5RX^+@8VVl*`A^Bs2gXA%9O3M zAedUv(aQ@>nBYU{wq4?{5ni+R%nF<9y zeylR`rZXNFir{#%ACIDnb^Wk5%^ELv7-dUlkJ1yT=U^f+)ZVdVM(R?L7<4fXz5pI1 zx29MyTZGC&4Pxc}h*!zpw1Y$SFZfKe*=A?k6a5DHvAMA~NW75}uurTFsr~~zWP}~^ zdtLXy;MqPgOH5m-cR}HT4muexTjtp6G^v4=;AJfs0c}CqiM57$@kff zYx5_fJg3mRN3UuTpB}bDAeR9juB5P~@5ZA-ElK_qjQw-Fn-2r2W;C~aT7bhro9Q-z z$7i;8R0c#FIN>&y@Kq1Wjn~&Gm2`R=A>I7i2E*j)!2o-?ZwrTq86va9+XZJ4u! zqZBsdxD_-+Oxt$>UIa9P9Qqr?BNtZyT5kt36pR*lr}f2yy3Cwsn|YU0b($WPq_AKt z%5U!pJ^-8GV)37sYNmO)MTM~%rI-+y9Y5-*U|>!jBAE}t*PEILAhEs6YZ5j}@D$LyK_Q~|ok)XoIa5ZZLQ{mIM2l*=`68XYm$vpm924yp%AJw;UQpWr-iG|RZ z`?ukHa50V@JpaCB=OZtMLbv370d0Rpx%PZiPjbg0MDt6-Os-Jk*;m@X?2HA2Dx4`3 zY|FF1I3}2^7!YO}Ng zy$>jeH4+X>;Zb3ir%n4|f37PY)!HW>3s++}xezptFfWcQn$AHuO$1ie3rt81kBWD3 zEk0XxawuFB&BR5f`Y)FPdZ%8HloADGmDHUU7#NjnYqYgFa1(vvQOG{6bXI&iK1Pl2 z(q78yPNS^ue1L+nC_<}qvbWaIY^_lb2Zq_PM}Fay2>5Ljfsp}R>)@#BU7UsgtGe$4 zTueN&IFs1A0>>Awg`*RBIIi;J$^f>j>dZ*)0#?cM@|XI9fKioyKPgGf;1Rcqt-Phr z@u4Vf!|NxK#oKai^>@_DGU8GE`Zw^Z)Ceq~SEXMc=}ThNt`waA*2a<)bf0`-lyP^m zyZCS(ZmLhh{j($5twIboH-_#IdUTo3c$}a<0wKyMv#QD~3nP@x$0;!raHaSHEh4^^ zp`(zQp?z~>Z8$=rJQ8S~h=BTm z!s1K@8=<#M6DmWiUxgfqwMx78xDYj5k#|mH4zMj9JXWOgH ze5YvFQkYgk%0)n8s2mve&-}!mU9na|r)e|qPsVQPRx1vON9Ncin2#L|ZG2@bfc7A~ z;-|&h-$`V^qv-kIfAYO%WGs^oUji?dk3>6Wf}9~W#BT`Gic&o)_t&hs*Yd@>^H3Bg zk1k{6?h|}e)L$qr52f~Nl}3DHFj0MKpcqwB-&5*F^!JS-UEi@s)dQ*eq?O|F^wu(Q z_QpBlQWx%0@;HHuU9)cVU*;{28rrq&b8EiZ+#UJI_rsD#vkObo^>$=-7P2_jEvQ5j z7|G1x&zOT$S^fg|!O`BJW0ZiKqWNn+ACvYqTmAO=vVFH3vmI^^mKxTbk~HI;-7W(hiYlUS65|J9x)V#z4*NJij6GA<^JoNC+XutsvGOl{rYr1@wWid+-%mX$TFAbS#J*WWDcT2NU1)l zV`zt_uIT{Td+)aF-Y5ON_xSn8BKst5s*ZQ^_>A#!DR>g1fkAQYxcSc)6J1{6EVv0T z)>{1jAiP)*Iv6dA-G9_In#0QPG^H?z$<5QVkWwBa<-dAG7=YBlAvj}+gC4CLoeU;V zd|ofo4jYyuO`aG@p0SN$hY-%& zq3?1nw;@mj_>!;5aUs2YG7xV`sL00KMIkl@D zf*(i@_NmZ!Ezb@P14AJaT6Ye43j;FtABL`gF{^^5!TzA^;9kRZ0XhY14}qlO{ff;W zIdj0GUJ(ub^)*%$=u!*Z;e$&Vtg2JdFyD$-g&-P_1>VXTr~wj&(-OsY0x;j(phxZt zpeqDFgi<6?iPG=*M2}`U$++tS@Qz6Mn9M?qh;RaQ5-2qTZE}zi)Svz4V3P5)v( z`Nl{%<3VB1eQ55^ygCwpf&GR@kR0Vl@VR)I4^!rPxFkZEWyafp;2MA%ZdVH%35k~D zTHLOtrU@unLwO{}nx#vr_^ys;D2pT zMsE2tt`!@e#S__YoOS9yA8_9E6QpgL8RdPk?i{u@TgyX!emd0-nBea90&$)9*}XMj z?P?;%iq_yT;j4cT@=|ejT*(r+UWRre(aZ0tdjp#+WMEuYZ_aPm}o|0FBW`*3K4U=9pKK)cPqLfaBnSd9y zn;2DiF)vaFQ+B}RmeVG`tx0c_XxBmCNl66x#?z|k9e5P0PQ|;28K@cH#$+PM7`=|H zbEc1ux=o*WXa2Xe)w5k3;*E#1T9nrs&y7nhCC7V9J9oA|$OFRDT2g@Xl;?D}u#)fM zf_TpGf%EoLg#6|?&mn_3}3m&`pNy zH~VPos{QJrrJY>aBlmI5v!9)E!n|wKitQc_vHVqZosP+8$tqrDWPo8_Tz{THaDIg9 z+#ZCeaTxxHcr(-nyl5#B8`Ygw#QW`WZdCao2fOy)**r`D)Ds2qcPfIK%1lQdX9CU0 zr+8nORHiB=197XN`;EP;dmxmk9@alynsvC*=?=7jZnDjVVsR1Z70s5<;(T8_y1UWe z=e#`;3RaGv-G7zgz5pH-V#4U+vQF#lnkQYs z$P=(^?RI12#$}JLLp>8gPzN&7^Ex@(g0b`DzRK=CYw=f)?pS-6Fx{Sv&p41%vFURs zvb^^8{RA^o$@sH`y~)R>>(SV9y%~#ducp|kwz_J+NHvV|_Uda@z05B7t zk_GQqRA!Ubps48}&IOItt9yO9nkGUTEpa1~{`qVEp$w=}vgt?|M}F7ElW#a% z5eF-WoJXRj|6HBCc6}{ut2uldGZd<{5`F0PEzse<+*d@CgNeHot$AZUw9r0@|@Vbag~x+Gp@QaQ`xwHfN-_SWy5bRS*=ve zW%G88!iTX`KJ0t0&qrwR_UAO~=zh9tD(X>y%*}C;^uL`qZa+1GTo@k7MA_>oZnPOv z&WRFytQ5CQ`ODiQ5F)vt_;`N%*hIk~oSc>V-@mqvpdc5(>|aFGmA5wo_^Ye|70JCk zME}?J@Dmsn8i)A(-f1p9hP09&ef+N{P|*}ZWa*rVT=_kyenlA6%3i5|`E_T=6Lgud z%mx1*ls61&Ucm16TOm8Os7QHP=%F3IeiAefgBsPV`~6nT#5+{~HxZQi{lAI$Ww`%0 f5&s_(u^jk}aP?8p8IChl@b9?hNsVlE9R7a*ZxiW4 literal 0 HcmV?d00001 diff --git a/test/image/mocks/hide_gridline-template_color.json b/test/image/mocks/hide_gridline-template_color.json new file mode 100644 index 00000000000..a412a1ded05 --- /dev/null +++ b/test/image/mocks/hide_gridline-template_color.json @@ -0,0 +1,70 @@ +{ + "data": [ + { + "type": "scatter", + "marker": { "color": "blue" }, + "x": [-1, 1], + "y": [-1, 1] + }, + { + "type": "bar", + "marker": { "color": "rgba(127,127,127,0.5)" }, + "y": [-1, 1], + "xaxis": "x2", + "yaxis": "y2" + }, + { + "type": "bar", + "marker": { "color": "rgba(127,127,127,0.5)" }, + "x": [-1, 1], + "xaxis": "x3", + "yaxis": "y3" + }, + { + "type": "bar", + "marker": { "color": "rgba(127,127,127,0.5)" }, + "y": [-1, 1], + "xaxis": "x4", + "yaxis": "y4" + }, + { + "type": "scatter", + "marker": { "color": "blue" }, + "x": [-1, 1], + "y": [-1, 1], + "xaxis": "x4", + "yaxis": "y4" + } + ], + "layout": { + "title": { + "text": "hide grid lines for oriented traces" + }, + "showlegend": false, + "width": 600, + "height": 600, + "grid": { + "rows": 2, + "columns": 2, + "xgap": 0.2, + "ygap": 0.2, + "pattern": "independent" + }, + "template": { + "layout": { + "xaxis": { + "gridcolor": "red", + "gridwidth": 2, + "zerolinecolor": "orange", + "zerolinewidth": 5 + }, + "yaxis": { + "gridcolor": "red", + "gridwidth": 2, + "zerolinecolor": "orange", + "zerolinewidth": 5 + } + } + } + } +} diff --git a/test/jasmine/tests/mock_test.js b/test/jasmine/tests/mock_test.js index eb7abbbfa29..169323a3c52 100644 --- a/test/jasmine/tests/mock_test.js +++ b/test/jasmine/tests/mock_test.js @@ -596,6 +596,7 @@ var list = [ 'heatmap_xyz-gaps-on-sides', 'heatmap-reverse-autocolorscale', 'heatmap-with-zero-category', + 'hide_gridline-template_color', 'hist_0_to_093', 'hist_0_to_1_midpoints', 'hist_003_to_093', @@ -1639,6 +1640,7 @@ figs['heatmap_xyz-dates-and-categories'] = require('@mocks/heatmap_xyz-dates-and figs['heatmap_xyz-gaps-on-sides'] = require('@mocks/heatmap_xyz-gaps-on-sides'); figs['heatmap-reverse-autocolorscale'] = require('@mocks/heatmap-reverse-autocolorscale'); figs['heatmap-with-zero-category'] = require('@mocks/heatmap-with-zero-category'); +figs['hide_gridline-template_color'] = require('@mocks/hide_gridline-template_color'); figs['hist_0_to_093'] = require('@mocks/hist_0_to_093'); figs['hist_0_to_1_midpoints'] = require('@mocks/hist_0_to_1_midpoints'); figs['hist_003_to_093'] = require('@mocks/hist_003_to_093');