From 9db36804406b406f5356b938f4969b5e027c6867 Mon Sep 17 00:00:00 2001 From: Evert Timberg Date: Sat, 12 Jun 2021 10:47:14 -0400 Subject: [PATCH] `null` or `undefined` should skip grid lines in the time scale (#9252) * `null` or `undefined` should skip grid lines in the time scale * Refactor implementation per code review --- src/core/core.scale.js | 18 +++++----- .../scale.time/skip-null-gridlines.js | 32 ++++++++++++++++++ .../scale.time/skip-null-gridlines.png | Bin 0 -> 19521 bytes .../scale.time/skip-undefined-gridlines.js | 32 ++++++++++++++++++ .../scale.time/skip-undefined-gridlines.png | Bin 0 -> 19521 bytes 5 files changed, 74 insertions(+), 8 deletions(-) create mode 100644 test/fixtures/scale.time/skip-null-gridlines.js create mode 100644 test/fixtures/scale.time/skip-null-gridlines.png create mode 100644 test/fixtures/scale.time/skip-undefined-gridlines.js create mode 100644 test/fixtures/scale.time/skip-undefined-gridlines.png diff --git a/src/core/core.scale.js b/src/core/core.scale.js index 8850ad759..a640d332a 100644 --- a/src/core/core.scale.js +++ b/src/core/core.scale.js @@ -552,14 +552,6 @@ export default class Scale extends Element { tick = ticks[i]; tick.label = call(tickOpts.callback, [tick.value, i, ticks], me); } - // Ticks should be skipped when callback returns null or undef, so lets remove those. - for (i = 0; i < ilen; i++) { - if (isNullOrUndef(ticks[i].label)) { - ticks.splice(i, 1); - ilen--; - i--; - } - } } afterTickToLabelConversion() { call(this.options.afterTickToLabelConversion, [this]); @@ -769,6 +761,16 @@ export default class Scale extends Element { me.generateTickLabels(ticks); + // Ticks should be skipped when callback returns null or undef, so lets remove those. + let i, ilen; + for (i = 0, ilen = ticks.length; i < ilen; i++) { + if (isNullOrUndef(ticks[i].label)) { + ticks.splice(i, 1); + ilen--; + i--; + } + } + me.afterTickToLabelConversion(); } diff --git a/test/fixtures/scale.time/skip-null-gridlines.js b/test/fixtures/scale.time/skip-null-gridlines.js new file mode 100644 index 000000000..f8ded0318 --- /dev/null +++ b/test/fixtures/scale.time/skip-null-gridlines.js @@ -0,0 +1,32 @@ +module.exports = { + threshold: 0.01, + tolerance: 0.0025, + config: { + type: 'line', + data: { + labels: ['2017', '2018', '2019', '2020', '2025'], + datasets: [{data: [0, 1, 2, 3, 4], fill: false}] + }, + options: { + scales: { + x: { + type: 'time', + time: { + parser: 'YYYY', + unit: 'year' + }, + ticks: { + source: 'auto', + callback: (tick, index) => index % 2 === 0 ? null : tick, + } + }, + y: { + display: false + } + } + } + }, + options: { + spriteText: true + } +}; diff --git a/test/fixtures/scale.time/skip-null-gridlines.png b/test/fixtures/scale.time/skip-null-gridlines.png new file mode 100644 index 0000000000000000000000000000000000000000..d0609a8db5cab8d7c306405583eff6ab3b367278 GIT binary patch literal 19521 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 Xq$>ICU$qCoUp9yB552YYjQ;-sMns65 literal 0 Hc-jL100001 diff --git a/test/fixtures/scale.time/skip-undefined-gridlines.js b/test/fixtures/scale.time/skip-undefined-gridlines.js new file mode 100644 index 000000000..2871a8184 --- /dev/null +++ b/test/fixtures/scale.time/skip-undefined-gridlines.js @@ -0,0 +1,32 @@ +module.exports = { + threshold: 0.01, + tolerance: 0.0025, + config: { + type: 'line', + data: { + labels: ['2017', '2018', '2019', '2020', '2025'], + datasets: [{data: [0, 1, 2, 3, 4], fill: false}] + }, + options: { + scales: { + x: { + type: 'time', + time: { + parser: 'YYYY', + unit: 'year' + }, + ticks: { + source: 'auto', + callback: (tick, index) => index % 2 === 0 ? undefined : tick, + } + }, + y: { + display: false + } + } + } + }, + options: { + spriteText: true + } +}; diff --git a/test/fixtures/scale.time/skip-undefined-gridlines.png b/test/fixtures/scale.time/skip-undefined-gridlines.png new file mode 100644 index 0000000000000000000000000000000000000000..d0609a8db5cab8d7c306405583eff6ab3b367278 GIT binary patch literal 19521 zc-nQm2|U!__dos``&RZO*+N+=A}KMpN+J}!RkEd0DU@}LF(OH_L`4fTWv?`q?8^)l zSu&yQ49VCH24iN-%>VTo@AdQh{(C&q^15?h=brmK&+|OzUg90?tv85l5di>TgU!)H zCjo#5fPM=JfPXB7{a^rq3Se`{!a2-+HZ$~%M$?%U%wVrgl|k{rE2gFN`=N=6*W>4H zGE^jl4hcx|Z95kAl}GrQdaC*Mc$H|v(F>CI0X1`;rV9^7#HH1vyH|YftF_$UF*A2N z^GRlA1tzO_uy{P{04;0dsX^IDT+r|3fjJQhZfZ9F)$3OjsXK!6fD(Z>3=nr7zg6|> z^&Z&<=pVx{6UTJHjeCFAl%BiJXYQ65)%Oc#5+yiqZmP6jb5hmDNMmr&nW>oimVuW9 zmiO{qy|+G5Fk*Ntb+@57N8$KS<&-5M9_-sY=GPav@4#*p4-23OvTQXFeVi*c6+ThbP0w00v5#$)qL8R>F!J)A&_vtuT9=NRRFh>2NmSkKnxiXlT1W*5 zxy;NpN;0lmBcJ_*Do#FD#Y4`Ooc#kMRlyvrRc5dUi+|mbGvXP3oU=pSRAVyI#{ZWr zA#+3C=Z5wo*B>a^f$33kDkCF(AMfxZR^&vP&YDZSpW*bH(zQ*jGn!#toY|c`=SZu< zB7CvNrj8y(lhez4bS;3e+a&u1N-yk%HQiyKI3fX1=m!pd42`xF+#wq#JRo|z^2ISd zTr%P<4x*vS3ZxnY}%UlMxix-Da06&+cwzAn6*L& zTX;+#ri}YrGu;P_dL#g$sJg^_tb&uc2!Dm~lUD>2d6~3L>Zj&rWjJib>JdQ{^Si(J zlKkv`a9+0zv%1XCvPd3tQiA60yOId+%-+twCypO(%*B1i#2p1A}joi-@6A`X@@#0qKM^omW098N&*wc5)?@Gf)kqUbD zoyGcUf#%SzJ)3AD#9D`e{wo%wg8z;a0mr?_1IKOeBX$|8(+1)7o#csK$l3SR*()=R zgjm2F_JjMt92S?e&9J{lTlU^dgwkE%-^ z%dC^L1l>r!99lTm^hw2V+d>O3bro*EC+^~0B)deE5yB8kPX2X0d2Cs-=CC{u0CRMX zQ93QJB*3efzHnWSxOwRA%V*3Aat+%Lxzg{As0qcNhBoHj^#N1uhELeIVv!0Na%|Mh z>BJBs`%@xtI@GlTxpJ_pxcefwLFPCCr-?5nVj}!iwk4kKg4Ca;OyYx}ONCRtGyir< zTAYR7=Z17S@+d0fsz?>;cD^jY{^eeU)%_WMNLLQDOQPn%#T1x$jF<}l?rp8S2ZPAJ zDX;#g|iZ;{PEeYa3r;4)_tEOp3p;iRmrVsGVwUR{XVC?&6#`YA8heG>X zQ)}iMFCV@PZG7T2ThNtGj73oXTAjS-)tPN#c?IqX}Nz zvFDfG-0xJ^yddW9+3p4Ze#6wCn#BsS@F1BoO^c_34h%q++q>mvB?yTuzw`4Ip_aGy ze~EDKDQhz+BKeW1k~L29+(CumuG{GnGWsytcNu!(6Rq0|zav*ZrKe;^mC+x9UySxd zTi)ND9{DuD0drzPs@~+jHA`$ElC>Ee^)O{KK3iE5*qgLDb7$FJ#OB{eu0FytfcH;BI8Tou0$FG}* z2roaaooPfoqzH1rfHAG1czpFn2)8HZd_LT2x3x*4(}D{A6p@Trce?2}$#P z-%&yPbr-aH>8f6=yPcz^%*^he+7Bv55mi`XHanOsPWdRxI7x!$di)jj4)b@`5EkLD zn>qa`HN&4FTwKx{m5#MzvOFP2AT<&EWBYriQIo2z+6HI<;CK_|S;!*S@^_#zxvf2F|hd}hcH2NT>ucCPY&oHi5BX|C}AM<@R8=+D)I#gsUh?IfLpzdVw28#)6p-wZV17UaWW!rePj)p)$b4upDwuzt0oo&x z)Z};X3+jW&?N)Bm?#;S+JOP`cQ!z5OvFW)f^V0!4l+V#Qr*zY>Na!{5M;>`a^Tmq2 zNZff-h&-ExQYKE*)?RmkP^vZjrd|k`w^6#iZ-hjeUdI3N?i3l!JmjeysXUw-5OOVL zZ&D6p>O$--=7qQR+tm!riud->1QA_N@>f~zoN#@Od=+mKa}S6j8Eop4m>+9dS{QiNlG|?v^bEHa-&i4mx#w`B{?6T-wc36Kq z9J!L#c%VFLDHxJh0W>Y@k!Z^&=R*67Ng`3c-$43Gctn9QjG;UnX+}9^6>X^-s)4?d zZpx(DhAV)d_K~k#|FlXFuGz#i+L8=BbD~!V6ETBsWmsYy^`q08k$Rm8nrw9yfKrL) zQKHtWQnY1OKoyuSU(;%^M5nbDQHE#M4(j{dI}q;lO66oj%q&!Ov8rJDGtni#I3~)? zLeBo$>Wa~p3>DKNQr7n}zk8%?CYTaHYxEp2i2G9YiroCY&coZQL0zT1rnHPJet}%^ z%Gyrt$&H4lm#9j=_!w@Xy36w!yk7b|5#HK)9)9WympJWy_UkvrVfD;3DZMliHmJCy zZ-N8Hec;x@+ySlaRH?Q!te*07kR56+;!GcRyV5P?TdffKxFGI`-#>k_(;s6c2EX*{ zm*>k*hC(D5q?bJMbE)$-H>@JfGC$tti(Q>lD)uouGU=)G>Gfp3Fn5KlNaHKQ!XgU; zgORrzvr!3Ar>JqEebS8Ta)0d@x^tGjj&ivg7)e)_n|f`n9EB3F5DnDkGhMzRS6JU^ zxRxx|yIkaU!;HrHtBfmLhaAOY?9W<8TW$_5d%bE!=@oaXoGm1n+;Qo2ke-90iopu% zkdl(QQ-uVR%qQD2YUcl8ZRA{5I58665nQ!}Jh(k4^tno3?VCAQO%&kHnYw z;9VyfZv50pw)WUnuA#Y0WbSp)jX2-dYCTX2EwnrVq8V3Ik^?lu0tj&oq@}BCaV8Vt>=%D1MJ$^^V z4hzgy(sq%gRN zd2>ggNNxUO>@X;6yiBL_R#7tkVE*Z3X}IocwY{`I$B+BAJ4?@_DOv|K!z?@we({IB zYwPny;AC6FO0H@c;Do#>uedIs7`)zG`{Fa!u>-WW2zQ9QXU+NS(|EVj#H7VQI%s`WlX-1c2D$!sfDXK{iBfgsx^Gbhk2e9oa9cjed=1p zg*0!+o+U{ou#{0|xDUi#rGrR zv@%~w<|>p?EArY*j%3<6aU;WAy@z~DCMMcpjJje<>8JgwJ@xtuxGChP+o+qD)sMTg zW_kpwqlA!MykLpxYNb5@#&EuAL8B=1-H6iBSo-{yfN=?NLZ&=$Y28y#4r+!i*IF~! zMbcyJRzJ|87}A#pq^BQw)Yn|Z%H$tP$T|>h2?}I!Rxl(&xMiBBm#Lm0^_`(giK{q7B5;rI5hSveRF-+;)CmRZuP-w^7oKoT+r~v+Qjf6S2}$IOoTeT^$*9d z2X=d>ezV#U$N4PQN(*utUO%c8nY_aCBVmTVBRAX=w1{lAe7Kn#Pjb~K3*7!ANME$DJq}-Bn1B z>$nuw`$^vp=>!=YVxf#&G2pAt`}!;+{e+L;>DA?9oHPuRc-Z*SHj%s5ph>M*530V6!_i8Q4$gz1QaYu~ z=se-44>7VLF-p*);#%nIb-``SWY3;OPLVpxPJYcM1nFtn@5b#16)YrAVj!aW>ZJo=X;u1MvtnM=>& zKO*Km9xO$vJFt+Kh9x7MVgTVl=1S656A%8{pY@Rz1AS2)I7 z1jVC`_v5;xxLcHo;)E1|gjt2|UnZX-WItl&lul7q3KCZhmSZ8TIr@-1e)Lf|rVRgY z37l#H@PAyghb+FG1T+;G8%wfrF7ez-pkhQ?rg@_XoJG`OU57W*7RdM!_kFbBk{AT4 z)y=z{DiY-a$gZ${w&TT_S6tSlWu|;3^l-@scsyed;DFMDx3P|Xj{CP4vR+|mZ06?S zu3`7xw9KmlR7M5_fvVDQFqvD_?O4k^{i<*BkuJTi#%`|arwDm@53~RYaB`&C+Af}J z=^Ae57QkATv4y{N+8f$z6+nBM#wH{?tQD7Fn9H2q3gR)%Tlf>|rg(>bWYpH)&N2i{ zgpMWi!GHVsJ2ly+uDKdUTTT`M+8+Q@&lp8Y>o!la$eqHF?>ir#w=9-yhs95Pc1b<-YA0wJQ#R?;X~tO=zL0w?jG{VE5xNw5+Zf6y$7?URSM>Vfu=PJB@W*)7VKI zgEobJrVQ2!Zi(3MKb^+T2~uyKUMUpjh6~(udyH=liImOhs-7p}fXXcvFJ9+2S8ODY zfmNF{mncx-b^_gu&t{l4AL>gpUG}s$Uo3n`d-QBZdfj{fU0j2fW(|csD8+0P8SP7X zv=l^Kl#&TIeiPN=}XDS%LyC7XZ7@Q4`pV5w~z?R^f6~ykBAvb+45J8 zm8$l^<)qn;EefL7MliKU94DsVui@elY_Yf>f01w6uxX>ltbg;E1B;P{x4Mtj`|OJ# z@lvbl8+Ms;7xtoN#|!3)jq!Wutj<)w4Lg-Bys)GCwHwG_O?)DVyDl|jN9{7kh`*#~ z)y~OZccUd`j_lX%boI*8Du3{0U1ole{)S@0Y#N_hhW(&C;#gU8?C)UpjM^uuar7m) zgQ_)mBCVy*k{9Po&HOpVZdW7KQmugdH{A1Riz;7b2ELyE#9dc!Jh^(%m0i6|B%i>$ zu>BKvN?3U1@ETMrlI1N$9WQVvf*E(5vswM>q0I87zCz>J%D#ND@0D69ks0HSI}gQk z>G<}9jX}=HXe4R|_l?OiWr%z6#Y(uh>TJju|Dxl3Wqr)laq0YG69z3F4X5kgmXxs! z+k@NdnI(sF%;i#-#4DrY8A)c#(+=!AO00vX(e<}gq?<&@@lhG&o7eTjT#$Eh)oc0y zW$?IVvQ4G&zV=+Eum~*kiOoqpBA@f{c`lU-4HTZ=5qdfmU8<1UCeW6GmFRgPuP#Ux zQ#q`;jk^&-iaLL!zRu=|roQEGyZ`_5+*)1n-hM`C2Vd;zrH zFLQfqCt3P+(0a3I`EArBHkfXQw`|dk(4ITm8UW2c(t=f!K4ll3NU`}WuhaP{{kanY1g{L;8CyM#<+!4*{oGgDPG4+Z(X zwE1LmLhnHWKX=&89SYCZ_SgtMJrps3OJ*fr;fu`}I&N@1Bfm)_q;S0jGj~y~gS2Dv za|eq(oNTrx-6wEK0Svt+nJN=d490vNDd_qe>mzJhOxW@?X6&;S{m1Bt4yBU z^W^0r?$YumuJA7Q=uWP7pz<{ax1`vUT>sC&+Fm}MlT&jX4s!W(6$c*+$BeJ-!WVg| zw>|An%W(ZD9a8@G3<9F#UXv+WGe_$P2V}|H&6P=l7H3SVx&*k1v3p2=BzS0Ld=_15 z`_2E=jIf9k!Ztsv({# zOvLJyG>#L+$y9@kY(B0B$P)5|(2Go8Dg=7}t7@8dvkP=;41GWYN)CSJ0%@xd2wxErGWUDd^!1A*PCLP*5mKxD%;FL*Z9r*#XL zcJ3>_`^I>u&bel!o|*aHjxSa|)6A($57V?@;KQvxJ<0YHp=@_LhdiyKt?a!;36@`b9*E4`7Z7%p~^4P`4~p-WE^}n zuwKM|SD+m;u6T$uqcNAn#!jbeSg1<=kGopGt0vp_k$z9}q9f)Vw2wF*jr|-n7DW%L zwb$CQjwjkzRI2^Xu}N|E>L;^8@IA6posW3Qopj^e=j)<-K#etDCiKqj!P4i?bpPfg z?7JqbF_t2EY|rdTHSQ#C;m5GP8;=^7KJ2<;Q^u34s4X9Dsp&vY+t^C=lKqgwMS$f> z!G#DatMqOP`hz`l}H;T&E5Yw1%*^#(4hwDp} z4Q=;KoqmtyHqn$EEcua3xELMi0azpH8zNY&(JC=hcN@k3`7}5zlTm zuQ$7Cj_9dw%vuQokGJM%fuViT_(rn;b${e>(^K5FOCl%TQb8W~L0?a{4c9*(shYZ7 z^Y;9C_bUVwUH5;Q9%s|qylmKG`i#&6!XlCihyKe&CwI6ivY6Fq3=>l+DRXj%Ol^do zIHhyzNpATrQJAmvAgI8Gc_*j%!J=^HP7BqK)}0RG^2!BkXW6mCc=x-C)PE@Y*1>d8nT?@+Ar^mb z-TM3go^M|E?67J?p*}OM;;-ifNCvR~reb>#fMZ>9hL)|s1PSo@J z>n*uh#AY+{V-ap}MAfWh)9u8GRRGFLH?bCa?gF#SMUh}3FkaReKN~|g+zF5f(+x{zLUP{xsvZCt8+7b2i z&qaK(>Uwr(g)$tb<}T=Slb_zZgA8vo_JqShE@j`kk{bj9Qe#W!Lw<7S>VcAT+;|n6 zdBh&TK`e_z<2kx@LLwTDGcJM|G^&f1%lfjuKLaVYV_=-cR$`@}=ZiggGz7Q$3SIQq zT>!z>D(0&k9q#&;X4*pyG0f{A>)M8Y@Y$l}VefeKiT(2rbtXw3P7bo%?I5~`Ljt4Y z2&YPv0rH!IfnOvU4v6di@-! z@sc}+MhRS3DG#rLzG<2}r<>8;_`J7PmOR@$XZ)-_vt+xb$!Ho_(#f$AFwa5(+R3JE zz?51QGI4Uc70}~-r>ea*EeKoDkif29#a&R-d}tSn8uWBm4ur~&o|2!^GC2_IBAPHv zROS3>7_AcAUedwm8wEKJ{Y=D;?TGMUL7xZL2*BPY2(H)~*Di&k=Nqj# zkGaq90|m+Rj4hqr>1*}d2(yVfD-9#p(eA)y2;RqD9+@4`sjDt}s)u`E>=St{8+y-2 zrPH9O;mm%_aeeezNJ-#Pl>4jgpbc$0fIDnn#PbU;e3nRInJ)WVOdLj!tGm6?gwN|0 z2!%ME0{sDX-OYiW2!b*LVG&r%QMEy;)6pcA$)f1Im3}alJ(^EY`?Brw#7krTbN>U+GIFU8B;)I@w$|+0s+X&T zPuOiet-ue#XHY+?@*|^9iH~F55tyDtuNm0i`^rNnMRPrPsU5;NobmwZ z1)V6+3#APs{81d24ySK|=-r0J0OwTuMj($LA@O7Kma(s!>wVHAeIBek%yWhK;A7dD zRUgUWWcJ5x*t~gj$Ab73gWy=Oj3243-wJcY0jI&*GZqbB#{Dts<*1DK(+S{qc1y`r z{{n^29{>XdvLo*2)e(0cQt>?qStb#TERA*4~_7?J6ge2;_zbSN5;Jgc{UgQil@ESdh zMVG`0Mq8plZLz$^dIqOAE^F?F1J-iQ&bDiVu~l7h3E9ihLo^DsA7VQ@STG=;8g_wJFt}fMA`;e0Y7>K!X$ni&8)3W zG{yl_2>t-Oj$3(^-Rg)1<(2z_VVi$+OF?*K7_WcOp(8%`DH2NVUP4i4`@u-GUkm`v z3I@%B!~>mxc?w_Z)M%BIsSGQ8&+SYcb@xp+ z!>LsVwweU;|8IHxN)muCHTH9$4#`ZXlXm4}tfS;i-YW=q=h5q3n4BE!Ft=d44%Jgd z#>};bv+18v-WMyP&S38K1E@^-DD6wYS_R4U_;FpEMR8XO4B7!+a0h$@qU0g}YFX5A z3xMlN%a|*dU{f=T&wSlPXx|LS?sf6%;fi+=z)4>E0BdI(v(f04ZZeG>$w{7_fhH>Y zd!k=Hz(yP6`U$*C(5Tn<7PrIa#Hic!R^IY~DAEiO@C;t!+|JRdsXB@>l92Iq#|Tcn z*@IGqIlck*?`$&b|3)4}XAV|-6bXy4)=t&`)YH9no?{HspJNU%e-Mpl`j>@p8wGLK zR{#sIe=aaVM-umB04@pdLr)St);?7tqOjk;IcT`?Q$f1MiGpeKi!cCb-=9;U%ot=I zT6U3=neycUJz3!^7RqOSgNLw#P5*7yzrn_5dZs_d_qgNcnaXSaw-KciM`X9o2}Ql+ ziy|^;PdG)H=|L!GxkAdNXr9(-s(Gd%baHl23b58tymoczVNPK1%Jd14Xz$tLPNSR4pPA=off%FVvYX}q&6 zICtLH@zM1tL5oK{y#nR;YfKH_w&ex*6a@;4Ff|l?mXzQ0lIu-R$J*Q#w8*_4Rof+*Vr1nT{{U%p2d&O3Or78YF!7%;L`*js*pUiYx3NtmMMaGQEX0Q6j_gA>Cxb?s9FGU|Vyp8=n*%i164yeIrZox7&&W3i6P=)bKv z2pgV#%59_V!_#O?^v?T&LLy#k8BW@I#P~nTKY*1|N+z&heNrf!6L7*)LnGR9Z};|R zdaY@PrAs_PO1q!|{9(;;I9e%HlJFyazXgoEjKH>SfiA0@5svzlx>h`RZHU#~8$9~+ zDOQ45R+uM7b#D5+OAaz$2*6WmRh*TtmoTg2X`FZOlvFftFZ*mPtTPcjHqs&l0%0Ey z;WfL4K_ct2=n3f4Vc=HQGxsjbcx4&C*gpp9B^6QFa66|kH`P5QXqP>v0DcOLv*Q5w zY9F)>mcS~vVOFI&c`cI_oC^AR`;EYpPY5PjThnC0Iy&k%|G%*MVfRUoBYgZB-Q!^5 zumcHMT^C3?X58~|QOjn0YUXtsxD34~uhW`@$W7Rck1C)G)OSHHh+K8$^IR}7cf32^ z@9cC30hSn#MZwu~_z6(+K`I;qgVzmHaKJQ4#wiYQ&-qunFgV}>KLKvD*yhN z+?Qp*LKUoV>=embC*wV~gW;Mg3qX_iyge4aGZL*LSSoO;7o=_H_{{53Ej|6x`OR43X87a8)>g4myv(S zyYd6b8Y$0#d8nc23#o+8<@l+nfkDx`eHaWXeFK2~17}9}r514P3`8A$x}W2^_+sf1W-e`dm=-FP43=5u zQaprW-SyUQLh5c}ztO92nINdc{|2=%EZ}H|}a>?P_Px^}lk8(%D=58!I0C|U9h zPtRP6R&+Fp&KyKfBiA8IH__v#(XU#!O`8Bz<9>dSzB7Ua{*Bq5Y7o_})0_i0AR5$ODGRVMkB{C>0bpECurscJd5EU4=FW8)FwAj_n7~iR$kU z?UHHDt~BcX3@!8=@Fs~375s#bc@S}6$@Q3r>=b@5vwE2O6e8HBpOCN>w`~N;E$Fn} zDX9#HvB{5%U^@3a3FB&ktu?d6e$Klf5cWsozBp^#`uo^>`@cY2#5TXuv&H$M!mx#- zMo1}axA(X@VK!4G$gxLva(_1Gx7zW`b4@N8Jc}v?A2)pO23>efU>NF<`N8M98`U`N0%@Kwa(yPJ%#paZVOob=*0u`FU*G6 zKGgh3R+Goh;~;Nz{FW+q)=Qoo4C;hXQVGo8z{6L%OMgbprMH_|sJe;&aM4%dgA%l7 z?12QJ?4Y`{Tl)8Zv`!HIF#LacY=8r>ZzTkfW8`_c$`r2fF>`skV zt8fF%N6?#hw*w~GzuNI&tyZNuc@vJx?n?#psTFiTxT*o%%tO*ZoVudd62|RZ;Bmn*U;3kcu~6# z0H>vjfGem11yZmXBn}FHD}e7=s4#$#UU(YypHT0%QkU+yB7Tfp^xjwcSxNU={rjSTB@ehl#AYE4%UPO=fSz#OL)iW4tkE3DwDE z%@vzK5xtZJo9DjZnKjGj>6xgTm4^onRW*M!D*vNyS(Vt~Gg8THR5fLt4J%S#pXv!ppULX6b=AAI){Tr^$i-35{hp>>s4XssS zh1I?g!H>)Tjo0*UjRMKP@M^$IfF7>Pfsp*$TsWOZC=Gi#Ds>(=jHYiFe?$*0H{kt# zMSwtIvDkm zJs=WR<+G+zu082VB|`Lyh%0=-5Q^HON$TxZF2eQw?9QmI{lO;z5RE^1(2+N&Z}Ex? z%n^Uds7DYmdLz1jZUp^3E(_p*uF`NpUOWwL0hTujN+W}4L&@kk3&R2gzoYV1ZgD>T z2W65S_f(oaghxzJ9tEB4sM4nFEOAzbIf_pDObh?%JAz`-kSKet#Ei2QDp6h85sM^O z`jm(432;8y40++MIC>J)H8@wl1(?jqkxtz>@q|+f%r~R`c_R!I^F%<%y&~KP3d9X~ zJdMagQ9ep*xXbVbP^Df$W7fvK(PuQyS${SMe$*i<9z!J+4hZ89uzp*H1 zf9e8ozAgQ=1b-KqKaZ~GE-x!BBik|GIIM6F%Uc{Ag7C^LZ(Pa1bz=D!Xpe zr#5LCypr(B_uD5de2sg04#3`h<7E%vlo_Qh-?}+r6b}#2VJ{FeCXPNJ7HtQ7-T5X? zvEgftA+{azHpGh~9*<7k0@XkW)XRZd34TaV#1i`b6PSvogv`{EIjSTNw_eeo4jWF% zQPasrg^)u=xU#52q}f)A&r9BLM^p@RoPCfR)(}WVwq8?=Vyj`crS{fTa{XDUL4I+i4vs3CKPGQ6t{(S*9F4Vv1vnHh;)^Pk z*_&X~_pzWN>EvDh`Lq^_8}nG6VW^v1gR@!uh0pxorx$rVp@ZV!73k#E3i#1WAK6Ij z;uVTA?&lduFHet@8opt}e8zBpwA6EFpTp?C-)sQLegjtP{9)hw^4iT3v)iITCs(Ke z!|wTl+D~BfKky!~o~(zzz0pSU7G7y_&1(k-T7Fl$7D1fzIa0&mA8LJVh1>xh;onLp z)R-42yyD|tuF#eQTCzDUsk=k2P4mSjC27y-m&*x!vp7Xzb=$x@87m zZ7kJj%0_ei<+5)CEu2Jj6KYKIo?Ydm9#_()QUY|(0jqztZY%d)++ywG@F-YupygL@ z?mj)ruiVAAw~%!_!|pcXdzYyPIR>UjIJJolC*0#GC)LVB7fzn(CRFdta`WY-Me`FD zCrA*F;gj3xBAB*EqI0_ZD@we6{?dnUmI*jH%}7m{Ns>$!$)Kk$ZF5i7m5OO4*{zm&2a0| zR!w1hqIV9jL5^Eh{p45_T8KGUa6HDSw7x$-LB9J-hiYJfllP(R%hYdQax60 zi?xt0IbC3Y`Y(ZjB>#zS?!5w0uf0hU?yb5T%Eue8U5odEcf}xv#A&Vk1PI~ATnV7i ze0l4-bRs6W-0i40xh+Sv<(-ok1=i0h#v@Tn{+ii0ZZBSNpCp*-x~m=&rLIrvvlB2` zrnms5I;mMg1MJINZz(>txfwv@b0(axH^CYh921#)BEprvX8nIqD@d-l6qFLx-dP#g zY@B-%C34y>Lon#l5t}+wC)hg^27c${`P)aVNAC{*5KFy{6iDHblO+E+r6aKV*J%ZX zZ7M3!2O4eq)H*zX7~}NyWW7m_5!FU?PF@61rcY<1uPf1!0xEaf_n!|lWbGZvf@go% zxQ)1+On#s=U?2_9j)i+hx8sYkH-5LrTcu0Qfm20>>p5Uf+?T31HGpj4s)FQ;dy`IQ z9Y5$+p8svf-`8nr_xT9WJ)OmHJf6gA+`Glvj*|Cm-$3U@>DL$ZlE->KcE%#N^9;Ww z2jWAG#+JF4De^#D!i@$$j%4kAc3L9_v6GmWxqHAs5{T2F`%uqt;8e3xa0qh$x22J+ z?dci0(TMd~4I}`iWi!n}MV8t2$tk|;_Zs%xN|SEonG?2*Kc}8y9TM=e>60lhjLXz! zV-qAq`+lj}k_QR=w67cO^$;05gf2#Jt24a;8$Q7)%+=3I4?;!Xxdmi=Z4$m@<#<%$ z*zaw1CLdy?k1Nf^i$*au2D=|FfYNsRwWE8JgflZ8{|ImpYB+TG7X46?{Z57Q9Xo-D zJ`9ajMvlWDCO97%&1mktGR8~$7-n~3ONPV9*wSJYvYv;)y$;cDXd}1X&uni}ykgeT zkN^k1&$qus(QmieYwDEm&<5tN{J}2!LWPj}tmE?5^@1*IV?yCE9%`XU<{$6?2WM_= zr}YdveI@+>-_|#J<+mVh?|!>8A{h>ovq6i|$mn&*k3IEXqRd>`IvMms%a(_xRg-zd zUC$xr(~sOJaL90Z4(oUYx9ZRQba`uF7>aE&0ym2(v<0YzrddZK103xBWcDjIWtXn% z>`i*I)hw_y03%Nj>-`iVkiR2EV?bIO$YRiRfc}d%az5A8_a@0_nt68xVA|;h7dKGX zKj3h5y_eQo`jp6OGh~FyU*2j!YkTq`j%k;K+2fi)oLG}DzJs*nfpWb~DmrjWqPIPT zm~J#MPGy}t@F`+9k@!q^Kw1*up0)ItOqq4I^0fAvfM#<`e>jFR-YicJL_`injAY#f z<{#kUjP=&7Sy}sj@^(E3b^xZ45=a)I9;h+%7z%Iz=|yMq7RZ|}?0nC?Niv#t9s=bK ze|=vTxk-6WSSV_&ogbsw>alUj^+8jn*`KZbbg9Ls}oiaB|i+$2FllO0LgO?W*xp<-n!m-!E}+dehX07 z-%iv7Hrg%{A#L2sd3e9!fmGsTGY@StBJ-HNoCk7H3xJ03zdTTr8fdk^S%OQg5o z-lW9c+KW8pa`D04$LiLLIv*(@l0u4307GbszX+p#jY+R>@qrziAmPGfyHcTKpK}>>X5nXD>48z^{*tYpSz8`lY38NH|5;@2 zw|~TNp>m9n^sp=+;HL84V;qr+r(j zn}dEm+Ay~e@$71|p2H)%ftz)xZLk37bXpfZ)2Pg{83f-Zea{JA-nih~Tv%^%(RiU* zfF{fr1>N{7q6gy3e(l-tSU*uML#Ozd(A=33k&~x01aEkU#1l|Fuwf`ky>ojUv?uM7 z<>*)LwJuYT){kx^%bVYGJXCJ|XAQY8nZcSv>+pQtY}4_7k+GU61Ud~H_SpHoN#~Bn z?%FZ%iD3};!!wIFcmCpS1So?jhe<(Ni@5Zrd zDsWnf#e{mV>Cf8t-&EU_R~;Ze+W7qBErk8Y`bV;Jl6+Czc48m5lSOR5y!F6I1&>SR z$uuuNErN;Bd9P+s8sRV2pM-Cpyt?_1w0z6ajDazm3qrJipPM5+VF9O8(G|&Tx5zEl z`mCUiXaeeF=#B^St!V^3gzB)8BM|n3gUtz9g6{J)J-E}7(jeKEejt~R_WW|JmQL%Z z)jeg-(6Fu06$}c<*EfAP=#1swxUez6b72Jj{f0bAfO>xN9f;0weZoZjj& zqATYZs8WPwnBA~B7V0rmQID88{BH3RDhDXfKSL*NAGJb9tU3rE8P(*T2-V<;H}SmW z3hAwXM3yJZ0FCO3mpizF^NIL*v{As+8smj(5OX zD5@sae)k~yY)27WEVU-4;la+Q1^h8cXWI5B`&-jKOVv0AD60ZVwtb`l3ik%6hJ0eS z`qRN_9@<>3_SmtEbndKhM{XkU?7s@9xpqvDmS5gjnzqY5w}A%TN%-p?0yrvcii88M zr9bts*}w~P-12R1SyeNLc1p{ozFH=gH3g%=cnDBal1M(md2(qJ7Bk(6f7p1oP) zHuB#$4V6`Z$JQJ<4Y#DjKIEV)TMc+Kw2dS)vGn_Gm_5GbG#NlpL$SzniKr7L zj~r_~BQ0}DK+kGL4^uZOd_kC&^`A&61U>p_W^Oqei5h@<2?7Y6R!ZM@f%UF8x1%v| zO-N+@t~@UJAorAiLJP8D{WiokzSz{sZNOAcRV`SN8N2d=l@Vnh?=aVG`?&2fTca)3 zlefX**k-luY-jiMHQ@k?3b0cQ6mnG+E73W=vLEHPSo5cJJ4?5D85d#AQ0$Lm{#&gQ zcJpA{$b^q70~$&K%OyPjobOA^2#ExTV{0MT|9M4YYK9gN$J{3l{_UDXfXA=e$v{Gh zq2w0p>z^@&x_=h^o!w8M+a5?*j-1)~U<5E1yby97GO1h*{Mho3EznQ8h!UJ9d=L!d zH%Aiw`q>vR1ny|Rri+19!73WlWT1Z(8pdd-FU%TL@SVI)nCQig`pJApM+TA{s!)ApKQM2-`;x=9( zW|^KBP_c{In%11CU{u=LIN&!_UEvuy)AOERxnJ7BBX@YMm3RX zf|>v6s^ThP5dENV8EwwW( zOL6GcxP)ajlg&F$$j>-Smnm9wr#&u^Q{~y)gpZkxfA4*FCOQFs>IpD;$3o) zBXUy*@zjHIcKEdx{5c$I)>lrPBzSZpSSF4pG3`spz#T01Pd$spbz&Fq&17H-@jzCc<3mSlOb z$2_Le%;;&$Hkc)waMrX3&VjS!;BlYF^yCuphdB0AKMoTUp_lp%@?8vn2NQg(Nhc%nwFdv4mxSSKpUk$x zQULlG*7J_i7<$PXz4WV&qpG~98a{rIgs8G|1$J^crK_kpb0PhvKSqw%DLnBl{^;q7mE zu-|T++Pq34&EGMa_=$^L{-t_ztXZ~($gC#*GJT-1(ZXy0Ysb)1i@Iz!h4GfsfnoJx zc6EiX8n)TGFQz8)U@0h}D97IoxdwSS5as7yy8RNY_uu-VJ+yIRdg#EMMOHq?Y(yIF zwNRPv0%V`~mPY7wFsm8+5^1&?V^&aByIhpOSq6(bKLemj7{D8>Seg?x!`$jXSJNh; z@Q@P~k_4y$?rlFU>O{j#V#l@6#FemH`Jq?eB(1t|I4MjCfNBsbd}k$?BGaqI-7v=5 zfcMfennOc(L%^K~1b2NIraTYp7ZA(U*Zrf3O$1}73uF-DR4@)Xc>Y0_-10|qk(cu7 zE#)xe2EvZWUpsaWjdR!(4tv(O>l+a9T@aO$q+}Y-tQ~XV%iWhkuL`G0ty;_rqUQw@ z47Y-nDbM%O#$;WourE69FVL)R^w0jGmC}A+z$9T5O?^pFrPU1c>uQ#Af@q92myNU2 z$#6zN$UVs_R$?vOjJg>$nDDt~<8ZDnst`^!FmvKC@tmsD1}h*?7a}#zUGUKTaMCXe zGF>fG-g$Yfv)4E_LemW|#b&2LO2B7lLhNk?TstJiiUwmGip7f~J`iJW8vhd3 zPJ@^vOy|Y}RL$38^24v)mtXBND==N=%zqNs#fEG5#4*D9yK(F(-0n@`)uW1(({I)| zped4w+xUK+CYYp=nT36$i1l`Zak7U~!FlvFq5yRVwY z?5~~e-&AZQD6VvFr!aoU|e{u-35exH|}YYkZJg@R5-N_s4tIm{_Cf0J)FFC-Un#@e7NYZ|GB+D;0TJY Xq$>ICU$qCoUp9yB552YYjQ;-sMns65 literal 0 Hc-jL100001 -- 2.47.2