From 43443087b0e0d6d0c98d30575c0304d9c205e05b Mon Sep 17 00:00:00 2001
From: Kimberly
![DONE] Full PHP7 Compliancy (Passes [PHPCompatibility](https://github.com/wimg/PHPCompatibility): 100%)
-![DONE] Amazon Web Services (AWS) v4 Signature Support (IPv4 & IPv6) with New Endpoints/Regions
+![DONE] Security Headers Management for X-Frame-Options, X-XSS-Protection, X-Content-Type-Options, HPKP, CSP, HSTS policy
+![DONE] Amazon Web Services (AWS) v4 Signature Support (IPv4 & IPv6) with All Endpoints/Regions
![DONE] Option to Embed Minified JS and CSS Content Directly into HTML Page
-![DONE] Extended WP-CLI Support
+![DONE] Extended WP-CLI Support, including Priming the Page Cache Asynchronously
![DONE] Memcache & Memcached Extension Support
![DONE] APCu Support
![DONE] OPcache Support
diff --git a/changelog.txt b/changelog.txt
index e6a5622..d63e8b3 100644
--- a/changelog.txt
+++ b/changelog.txt
@@ -1,3 +1,11 @@
+= 0.9.4.6.3 =
+* Security Headers section added to Browser Cache -- X-Frame-Options, X-XSS-Protection, X-Content-Type-Options, HTTP Public Key Pinning, Content Security Policy, HTTP Strict Transport Security, and Session Cookies
+* Checkbox under CDN to allow CDN URLs to be used for the Media Library when on admin pages
+* Bug fix to Amazon Web Services (AWS) Cloudfront (origin pull) distributions
+* Bug fix for page cache's categories, tags, author, and custom fields
+* WP-CLI prime - tweak for sitemaps
+* Bug fix to now allow flushing of a post/page's cache when changing from published to draft/pending review
+
= 0.9.4.6.2 =
* Fixed a strict mode error specific to PHP 5.4/5.6 users
* Configuration file loader adjustment to handle a case of someone going from v0.9.5.2+ to v0.9.4.x
diff --git a/inc/define.php b/inc/define.php
index 7bc2921..a07e891 100644
--- a/inc/define.php
+++ b/inc/define.php
@@ -5,7 +5,7 @@
}
define('W3TC', true);
-define('W3TC_VERSION', '0.9.4.6.2');
+define('W3TC_VERSION', '0.9.4.6.3');
define("W3TC_TESTED_ON_WP_VERSION", '4.7.1');
define('W3TC_POWERED_BY', 'W3 Total Cache/' . W3TC_VERSION);
define('W3TC_EMAIL', 'w3tc@w3-edge.com');
diff --git a/inc/options/browsercache.php b/inc/options/browsercache.php
index a648d33..7eec860 100644
--- a/inc/options/browsercache.php
+++ b/inc/options/browsercache.php
@@ -374,6 +374,322 @@
+ checkbox( 'browsercache.security.session.cookie_httponly' ) ?>
+ + |
+ |
---|---|
+ checkbox( 'browsercache.security.session.cookie_secure' ) ?>
+ + |
+ |
+ checkbox( 'browsercache.security.session.use_only_cookies' ) ?>
+ + |
+ |
+ checkbox( 'browsercache.security.hsts' ) ?>
+ SSL/TLS) connections to the server. This can help mitigate adverse effects caused by bugs and session leaks through cookies and links. It also helps defend against man-in-the-middle attacks. If there are SSL negotiation warnings then users will not be permitted to ignore them.', 'w3-total-cache' ); ?> + |
+ |
+ + | ++ + + | +
+ checkbox( 'browsercache.security.xfo' ) ?>
+ + |
+ |
+ + | ++ + sealing_disabled( 'browsercache' ) ?> value="_config->get_string( 'browsercache.security.xfo.allow' ) ); ?>" size="50" placeholder="Enter URL" /> + + | +
+ checkbox( 'browsercache.security.xss' ) ?>
+ + |
+ |
+ + | ++ + + | +
+ checkbox( 'browsercache.security.xcto' ) ?>
+ + |
+ |
+ checkbox( 'browsercache.security.pkp' ) ?>
+ + |
+ |
+ + | +
+ sealing_disabled( 'browsercache' ) ?> value="_config->get_string( 'browsercache.security.pkp.pin' ) ); ?>" size="50" placeholder="Enter the Base64-Encode of the SHA256 Hash" />
+ required and represents a SPKI fingerprint. This pin is any public key within your current certificate chain.' ); ?>
+ |
+
+ + | +
+ sealing_disabled( 'browsercache' ) ?> value="_config->get_string( 'browsercache.security.pkp.pin.backup' ) ); ?>" size="50" placeholder="Enter the Base64-Encode of the SHA256 Hash" />
+ also required and represents your backup SPKI fingerprint. This pin is any public key not in your current certificate chain and serves as backup in case your certificate expires or has to be revoked.' ); ?>
+ |
+
+ + | ++ + + | +
+ + | +
+ sealing_disabled( 'browsercache' ) ?> value="_config->get_string( 'browsercache.security.pkp.report.url' ) ); ?>" size="50" placeholder="Enter URL" />
+
+ |
+
+ + | ++ + + | +
+ checkbox( 'browsercache.security.csp' ) ?>
+ + + |
+ |
+ + | +
+ sealing_disabled( 'browsercache' ) ?> value="_config->get_string( 'browsercache.security.csp.base' ) ); ?>" size="50" />
+
+ |
+
+ + | +
+ sealing_disabled( 'browsercache' ) ?> value="_config->get_string( 'browsercache.security.csp.connect' ) ); ?>" size="50" />
+
+ |
+
+ + | +
+ sealing_disabled( 'browsercache' ) ?> value="_config->get_string( 'browsercache.security.csp.font' ) ); ?>" size="50" />
+
+ |
+
+ + | +
+ sealing_disabled( 'browsercache' ) ?> value="_config->get_string( 'browsercache.security.csp.frame' ) ); ?>" size="50" />
+
+ |
+
+ + | +
+ sealing_disabled( 'browsercache' ) ?> value="_config->get_string( 'browsercache.security.csp.img' ) ); ?>" size="50" />
+
+ |
+
+ + | +
+ sealing_disabled( 'browsercache' ) ?> value="_config->get_string( 'browsercache.security.csp.media' ) ); ?>" size="50" />
+
+ |
+
+ + | +
+ sealing_disabled( 'browsercache' ) ?> value="_config->get_string( 'browsercache.security.csp.object' ) ); ?>" size="50" />
+
+ |
+
+ + | +
+ sealing_disabled( 'browsercache' ) ?> value="_config->get_string( 'browsercache.security.csp.script' ) ); ?>" size="50" />
+
+ |
+
+ + | +
+ sealing_disabled( 'browsercache' ) ?> value="_config->get_string( 'browsercache.security.csp.style' ) ); ?>" size="50" />
+
+ |
+
+ + | +
+ sealing_disabled( 'browsercache' ) ?> value="_config->get_string( 'browsercache.security.csp.form' ) ); ?>" size="50" />
+
+ |
+
+ + | +
+ sealing_disabled( 'browsercache' ) ?> value="_config->get_string( 'browsercache.security.csp.frame' ) ); ?>" size="50" />
+
+ |
+
+ + | +
+ sealing_disabled( 'browsercache' ) ?> value="_config->get_string( 'browsercache.security.csp.plugin' ) ); ?>" size="50" />
+
+ |
+
+ + | +
+ sealing_disabled( 'browsercache' ) ?> value="_config->get_string( 'browsercache.security.csp.sandbox' ) ); ?>" size="50" />
+
+ |
+
+ + | +
+ sealing_disabled( 'browsercache' ) ?> value="_config->get_string( 'browsercache.security.csp.default' ) ); ?>" size="50" />
+
+ |
+
+ nonce_field('w3tc'); ?> + +
+ postbox_footer(); ?> diff --git a/inc/options/cdn.php b/inc/options/cdn.php index 2e4f50e..82e8405 100644 --- a/inc/options/cdn.php +++ b/inc/options/cdn.php @@ -164,6 +164,12 @@ When SSL pages are returned no CDN URLs will appear in HTML pages. +idFe3{;2M>r<8D z@h{5cCeLzRJmDqNL=MRmBS|vKs!Z_1wADEjfg~pIrsF*?j?u^6jTvl9YYdMC z>gVF_PusE{FOFION*?EHj(htpxNz0+Nli8)x93OQ2iu?ThA(IqWTsG;j}x0H12rz! z1ij^C(*Hm$;ckP%^A*30Z7{vdkR)c$_fg|%@q@C~a}v$MN7ifU7+_8}d9aj(@VHpk zI8E{R(BStCboBM4i4d&@KAe~$gNwagQMaZ^#2O(Zy|d}IFY+vE2j--<=N6Xch#N!b z`y$j49T(#$WCtWav=tP(+~@TaC4#2Z3mm@2WYz&aqQ|y>UG#i&s|2DE(*^c%J0<*- z(@&~!QGPzTYJ?vu*r)l)*K~hcuxFEtX5eUHaXSv9d!8@8nRGZ_9gv&!8oQNcNc7?T zGj}tUT=nd`xRMN1T-Ea8D{=A=aBfdQuCkN1aCn|pobiOd#hZ8&V#(WaT<|n5b;M>v z$)#_XMT{$!KX;}D_$)Cc1>gBh kK2(ookR9N;i=z z$($n>7kDKnG!;N7%LUH+@-Fe5Y)eH$=yt)DMK7jI)~JP`p!Tq1ydmZIS|vV~!_<3X z;o75P**~r1*u8oUD-V6)CopvE^M!LW=x%pK@pvoQ$jh!AYqnW1%sAOlG<{wz;0loI z#_%+##hHB7Ta78<{OUBzEx|4Rlg9{Lf^~eb5yEXY)L^YQ8~JYiEdZiSRLU$Ee_WAO zDpwBMW=5)HKcEtNfBx-Chd{+m9s9G|QE16V>iv4p`gWcaZ=>_!7iH2Jo2taUS<@x5 zY-VEa#Thn-(m>UMOP *;a)gvv9)5O>;Fyq2n$#n+b8*@j= zo*hA!3W>SMhf_%_)4??-;^s5Df1nw+OerY`nPvTC 8{Q!Tf zqy$+boziTi8Y^IK)4ZC}u5idf%D!wzQ6=E1tZ$WPF8@rwgP9ebO%pIOQqSPQF==1^ zRmyatbNli)vE7_&$GaTvYRMJ*0{txt^|_b|#H-Y>3HEAxdu21;Pvo;F%-4orY`TNo z2!E};x*#DwIg25YcO5E0z{RBxV^5E){!LV`pzJf n_yqy!83&7r4O-J}$#+UVh3dvZ<(7@`n z(Tc`#^QfOYEzr-S)V-RXArFNYkoDGOY2urc=QV?`pI>0qD^ih#=(9#k7k+_IJ|ySB zjZNpPAXWyRvVgGcG#&1chpRaM1J6oWuJ?VU& 7yb#aVeQc(`JjX7^`9#{ z{P5;Og2Feo|0XLPY0v@w=MRbpIKuyRYWlxMr{2|J8`@K#rn9#^f9JWgInp-%#;e{4 z|L>>;4t$tnp$pSOZ*x}p ; zb{SMN$w?k5SNRb36hIvj;a_`a{j8;0IC7AbgEXU+=dA?OC&XqL?+ye&mA&S%bF6k` zXYz203ga~tGp%1}^8Ir5$N-sXPhrmp-m_fm9D_d!3q7nww^!1hT}`-{H_*?lPU{`? zgb0oBy@Kf@W(wt?qo +Nu=DTVD4)hxw~fz|o?Yq%51ho53`@YK=@kr6tu|*My`Jm3#^{4*2q` zX-X;@>Uo#q1<(5jZX>-p`C|m5@=k3*iEG`oisDI>01>8dw`&a9W T6Wp;p%yN zdp%rF9W&?CQQRw2?P`j0X+_71FbLut%brU3Rp8C}m&Y~qOV$Q5D2D L(RQe2ug-h?@N=K~})_wL~j9yc&W^>!|A+?-?G@5GKj&5ga z4l--9#qX_suz4$!-nFR^?c}D@Y(u*0&IiB4qpL!vMoMD2Z^Z|k*D#fr(bQ;KcD$ AW6IiEjOEIU!YUGE2He zx2Dne-XJeV3Eh%$qcr$_zRshm{HFK}(6m)w6O}t*K)Yn|9rQx+DjAH}Oy8yqK`ahg z$pjo^7#hEkQ*@>;CD1 RL&3!q937P;p-^>+f &!jQM~vm={enVl {te)0j!BOtosV&t< x}*1%OGNfQ7KRM;^YNr=(nN8PpPj5 z^k;aBm(0V_R?JgUqmfY^767o``XcZb9T^66(c_R8c>b=_=*<&S!<7bO163DtSZ$C* ze@FUerD)cMo(^$4Rg0OC 5R*t_Pzl4G zuWs^4cJYU$Ven)?qyGHe8wbAgnq}pu)gwG9LdND@(CFV#?v>}iP|jZXaJdF9p51{s zD?S8BsMKNQYb`E$(gs#nz`E*3Bn)QM=aE(~Q_xT_f2Yu~-9kzF0AyV(WYAJ 2&u-uWb#$@M-H1|YgVd`&WKOs6 zjbRB(DPYvqPVPSZNjUvoT5Hpt9V3f8-^N7l4M4?W!4hX>KJE`0#<=Oh!iEzYZzV7$ z&g-B>IKgAyzc+a35!k(fhH@PC-tldb^op$wZ7~|nA@iiw(cA9}3MKrPC(#ma3qM!- ze{=}WUJq=O9r>9s@#>uve?71u7qN}i{Ed3*it-eo?hN#|PuGjH;p65NTsp! cRJqFye zBk-HVpaW_E2Hl~|FQp-xXF4VCwDiW*#m CXk37)xv4> zM2QaUrxMCplY%>m!p^F49!40RABBgOL{%B!&>9oRm;=o`TbyiJc@X>5M;AkrdR!R_ zl14d|kywoI1HW(djT-SN(MC&6fxyY=wS#4D&3<4OInH~n?!41)S{mFUBB8c-d+3(U zmgq;7=V}YzlM|CFii51aRq?HsGmq1MP&s(rg99}j1J Ne-%7A}km;Z~kw~mTqUAMhSNJ0`U zxI=Jv3!b3C-5Pgo+&u($clXBKB|vc3#@*drZj-h4zUQp5&l%si R-ryZ3*ixd_XN`(dYbW1DYVI^Sj z6~9sKPpM=a)RHxW{j`PE-T%ecK4sY25vQ2;`qq^$^-0*|Y)Q6gDM^*_>p{9%4?7N% zcxz2jZGnW^)9Q}e_QWtm9D-aYiT-u%yPuyK{_$J*$(k&7574XG0Hu$j4vV$;UTZIz zj-H;t!+Hg@x3$)B^kIsetk9ZgM$*+p#cU_>%d7Na8ONZ7Op`LC0baliZq(8T&)u*CMJK~k$ zb=Ps@y}@vcCHCnG!)$B4q`x(~lI3ep{w%h2)Hz&UfF)s@atId_re>nCod5%q(+*7) zMb<5ctHYJ1D)au9$U z*#(2}M^b6ol}}h!${!pjR1QCc!uhTrvR{7N?-xs~vu+~8LsD*3FaN0C(D?a76&hSU zI@5UQW{I>ShB6GL$fL0O9CPM`{G4OJBEM?os`#C|BVlfAyw-#=Ds4{Q0HOj$c)A_g zN#b&(Vd-+&VJ8X?e2zCw%M?VOOYyjQk>_Yec3Z Zi$6Qngsq5S; zwWHF;98X?wKhbzt5-NLoW;TF>V?u$y(_Pb_I>eDmT~$aylE7Fe0GV}pZ(h?T;3UI> z_|URcP7Bv!Mymx-gFqpBU}I8kxD~o4Y~Yo%N}?EjA)QFfEp-%uj_p*}hleGlXjbLO zt1=$PGnVmtyKX1lf_B8b`953Oawi)*U4H$gG7I_Xahe}?cs=1CHaFy=Bt8_){y6Zq zL1b*&;apa4WMQuSOWkOlKCU{T`N_Lh^7-m#Ab8e#7qukq90mn6--LWXecT5CuAOsB zk*ChU>*SB)`##pAE4^Whi6!{bBm6ze%iSG =!8@HX%`I0Yw t?J($BG} zjEk1)^Hz@MBVCh&6OAyBXYm~BI?err4nnAsWp7pMKV=Cn8& Nex|c*ZxyLEUGba{&z4hBVr<|Gsa1_2E}7y_&ByOH!v`xRYv%Jg+C^OG zEL-q=SH4G1&uaPBKuS<~&dZlL{@tDw|7O*AubHsc0Uy_WzuDugy@jhr6kOQ)@3M~i z8P%ciKz26VOh?Ern>WTD2YPJ+-W@N#TePH4%0TwF55rCu@@Av1`O@;Jbs(rKCT=F3 z!ZXqrSAN3nlXGFsgN(>jxd+#khH-xX0%m)tsIrHikzq6wnuxZ83zdR h-IY3;-!b}+`6J8T`bMMGNbOrh=Xc0% zP3IQfJHSl>i0hDaXPY*kDtQ8_7%{UKe^1AC2ro@17ZNlt>QNHro#O^V3OFD35&AbV z4AGU7tAEvgNt}IuN n(;N1u3QqL zT|MVD%AqiwaxRu8P<&k)7mD?DsI{%pxnxY#V-2>493~xTu@EQ1KRMa^FzPBAE{Ru* zXH`L=p{yq7_g-=J*29e{yI78zq{o8d+4nC&>yBf!8?C@9ZV6;vF$7fXpxR+<0-9F& zPY!E`rHWR|}P{JHDs4TWh+Bymo_%bF0yN&~xJJ>)>iZc8o}t09+@rL9ZdW)KLtM zzA7an-ly?$^Y>QLDU}nQ@bp{1T`KV2Q^HHFaf$91Xw>wJ!|Dv3$Dj>)tyu|FRkBt+ zBt%-tFH{E6sAEfsoBB}6sy^PD+vB`N9 DICkGN`F7Bp+5XZM(IcSk=?n+`IfJc_bQ1#3A z_Py>UxujxE>SVe4>^i+3IG2Ecjg9JKHeVF$=C=McKfT~VC;iQbjmw@Z(s#&Ps=}i} z>hZM@InJ;|{CxQn)ETt1npOiu6SV9|$*RHUG_JWcY{_itS# mlsXcHJF(T2etW1MIR~l~F@PL(=Gm6PCOpcAEsXnW`d6;UvqMJ1CL#!m*6Bff zv$tn98Z_O=a~D>f6WwPv?uU&H<)BO>{zn|G$Od9aE%~CzJ 8()eA|cRI%7%S z6;(X#bLLs~{iWz8th(jXYNB3I?Lb9;3aKeKOL$5)@hF`ccGQa!8{6F$v`C;k?!S#C zA^D%SwhAbM(gIPCTDFU;bBMZv^1^*flC%ONi_(SbWa|e$YHYSnpY6-eZ4$*XrMEhh z+-gb)zJK iu~R>pb!r@F!pZ+-R;|2AQe zx^VsDr>kDL@60fq6)mdGDC=Co+pmU;@9?C~V6PyW+Xp8S7RW3okdo1%7lS};Fil7y zln{2KaDK;ji9WP5yVe3%n$+rp@GB&dPjR@{ukJqt%!qlL>4d^7JoqAW-ZtH%7tdOB z+KBOlg1 Gax*Q!+jhFeZ9QSV5e75+CtwTj%|6P#I=1+TAFr>S EoTi>8AQl?X?pQl!Nwnj{(BVxn4i_ZOYXlCa$FeY#t%C&dQtlz!-0z2iRUH| z!UplU>YFb?rjpd9yfPMe=wUGHX&aCLQ-l!PueVTMQ@NSn_6rJi(+_%%AjJzuJ|4$! zMA#k;h99$F#{wz?-fp9ZajV-Owq5ELYh#dE7$Xc$a3MWNRQ!9T0x0-P3C<3mf+6O% z&5Jx*u9Wa%6_~Lryo~k>dO#J!cT3|pTCFT#^+MuPDjX2u74l)Bp!k1)O#l4x4~za^ zv%&o*neyfR|L6s(3|No-`QIc|O^*LxBvdNI5&{UMeXtewxO(Mf2HEJZ!~d&+KQlNq zR8nN~>d%HRBQ-u-L8b`WPH-|Wt~#@NPPx$`?Umb#3DtQD0yMD&Y!FSehJ`n_q_kXp zl((2JO3wx4C^~ctG2f@^x3TeKRhD*O8`YFm77W!V4W${d=@Uo)sT53(ubN%fKUxH4 z{F<3lR8z>KeYUzNIXBsst)^`-vW?86rPZ`-a+!Ywns0yAC4T-AEoM)vFLwlJneLV% z&!?iI@{@Xr-3MYgX#5dk8@+?i&bL*YrjyZ@* m#Wx+^SoI-og*8M&K74S z&Qu^?XOgKD?Lh9*-{b wbE5`a;JP^XOr;hWG|S+S4Jyf q%{FNv8hDjh`|a_h zVs;~fW(1@Uk&KB~70&7tb#fD}$~^?rWTd&|veNBpNr%mGK-&ftf|7YGvH#{3n0b~7 zecGs3QldK5p||%LrQMku8?7|~f2+;C8hK8bVlEnm3?nEO(KYdt@01&UI25WA+8bim zB!~@9s~RY4PVz INTzDziDSB#2Cop66-!}eBKrLY%?ozYfr>>s$e`Tl4t zBJNhIn~Ru>k)2gHQ2JRBLk !aJV>>5>VsupevnFt)s5NTv z!axrjsTenk642830yML|*mSw>X+z@x+JcelN|Sj+GPycOQZ|f5fN5IuE)Ivdn@8|d z;Ms!Hwa6Xn;gLoK1b5^!>5b=ipa%{weOpP1A3y{;ge{3`IOy9U>%4 ~09X0Ln?#$**`+vFjW>~v9TKjdajoqR5xihis;#O* zF_?P~>cXaFl~+%jw~jV+N?E+MeiS!V)l}CW602?TYonEtj9KPwxsGMyW%B%n+pM zvQOmh&A(iu9jOUrA>Blu&CbuJAx5f_1aKJ$Jz#&M2nIDRVbjgg)#d1Tsd3b5;S$pa zaSTk%v|b8r$@x074qGKRw{*;W8k5?$12Jb$6Xm6kkP^@*dxpukfuY@D2@A^{gM;o8 z&_^?LxXAmI$6(M%?H;=XIQkvJ7W}g9c1=lPxi C`!fpX(9VL#=D!wF zf0wr-%w-l>B$|%3B6(YGaC)f#jxsE1!e(!6bX~oiyd~AUI1JjIur;SU?*4-)$K@nk z1gLLZs!S_V`}~Uq*qelFN&zjF+|9Py+ly&qb=4XbBVEG^wQaGcnhg3uAjpuJ z==8_W4F3_sm)Hbn{)#AYnq>Sdq40STG5*39zd4s+mB^%1w>JQ^ACa~2)3t=RtW15O zX-eyoiL1=waPIn7xIVJH+)-om^o`e53Znv^nM4w2CoHT`%x@nDD$ppJp16kIy^vC@ zYDrFM&KfE#$FS6C=9RIU5DLNi?^AOAEmrHHklzVEwTYRN{n%Y`w;-~%Bg1w~wfTjz zOkBXcXf@^b_Y%eOpaD||bEYeXRsMF#)$!uz5VOlhE4IC3v%!!{R7P=3SqE$Cn4j?E z3$J|yF%yG{@?fhHK9B207L_@|mK>;j4NscraFEJRB93%yZkq;d>{!S2bI4U)uB?Du zbVBtE$ffoBgn@LX(lY7Cz|UQ1zf*|!`8|du_R%XGeD%h*4%-@ZLNd%3r^c_`5fheq zthB?C_OxF`)j^-1ailBsO7>QDtWVRTZ@a3f-3>L-d^PT_zA_chllwd7p!6(y+1GRS zH+Gqh6SghY>KU?+RGG6Y@;Np2$k|Bn<(joMFO;~}Eojw}%aXn$1MQ$8?w1~#g+2oE z=Pl%OKg|X-3;9{}G2ewYz69%ukwgio#llP-KL3C>IGENPLwAO6WBgdDDlXRd1c2wG zgo~fFn1T-wkIg2V2%S9#V#DLK`!Q^PcL4yEOc~jea`(8<@@e|iJvs3=+OD16NUu`( z+A6RqRPz|&O$(9V?;=&{>tUCw^geDTrZIyZe#>@Em+~O0V@jTm* sG*)bKu)bJ z6(28kOe}4kD9Uf{E?f8A-A7k<$|!C#`z^hEfBkH4R%y&SX+-w^B$Rz?E@3(Jl;1kZ z z0Bx^JX&vO}afIqThE;%u`;!pKp0Sv13=Nh$J(W!+xMjxdXL9sh+%yrh62`JRYRt+D z+{xZNScWgpUWBx?xytYJR)q@*${ziNdz%YDvpc}KMf@l ZT8D~JQ)_;A zy$B*{G`3nnez-faK=(pXeMvlo-INxKm>mx=4Ng(r@8PQ^IMY+{YlmY-HT_1QO9`W7 zRHvCdl_(z(U+gj+d4nw}wAyk7*|?VUuB9^kJ}A&--$qPPCToplb{5l!YgqNmz&M3X zqRAN<$^~DbR8H50D!mL1c2SHwJ$i%fgZUSr
ce$$kdI!LL&UngI%`6>D|Rl0v@bx zG#%HbgO5>~XC7#x`{ XTkFgL?@Uo5EIEh=+%t^Tm^|u$$Yv_A(CTK? z=yp>C4sNxh1g;3vy2=9EZ &YGz1Oh3N?4wx=Ol*|&CaB_uU_EB>-D?8d))pJ zzV*UIaR`OH0rF7U{tt0rZApe{tTW%{{SHW6qt~ WiRZYZRR0`hYMyR_Gbvq4Ad2weuG}QYBO+aT znFa4ke?l$Jyz *qNIeu-e$-t?~e!0o1^x}eVemY9hVJ6lYDT}E2F>(R1x*1lUp~2u=XE9Wbo53 zHpXdQKn6d5M9l*JtQ?}FHKMOOIY{uZOJ@;St9;iF8N-bivXlAL7%3@=sM&fD s?yzA;PqIi e*oN3N_dP>C%$IHpi{w%5nbGFfGjQc55y3z~{raWA3YGDxVD|`E%mSui zg8)ej#LX`g38_mtOf4}llrS~7X)KY&S)B_HLp1eIzQMR^wpSnYH_#VhP?f3jV6fO3 zgg}c^A!MZMe?k9x1!Wchhf4692ny Qo$2zazg&a|+ zF9#Hb`Al@{P;O{Y=%mgDc~&Uo`M>kym2dvv?5lrFRnbd?^PA7m$Y}MiAo%C5)Bg7B zWlsY9zpOF2f5GuT{_THY;eUB$D{fHrh@PifmK~~QelLM3lN_p1-Uv;Dm!+;iqS=sN zkjHiQ8|Z`ED0Vx0!#r;=zN(Co))d=2a`GZ8JtY&A#ovNhJX{@IqPBbAYA zO{R4;t*xVV3SJ0wb8!n*4FS9hFV%b?0*sfPz6&JK+uZDS)Ab|2FgX~uiSET18_RN- z(8Qj`b|I50R!g6GY+nu9GPE<1$ jLjnm0_S7}Aae6zQ!D_@8E0GDR6*oUlmrNAagb_en^&JRqv!zMPrH zR5$|HhzmM*T?qi@;6D&WrpO|?RaW9}0Jfvg`==68-qTB~Dw+Cs5@Bg$j58LSbmINV z2&q}D Xb6N)W zwRbsoIhB^CI_*r1p5xPqhqx7NMH&LWefuCHNj=y6INYSXqEJ@t^1aFB@d{9~7+VAj zRJP2H{YKVU0TFQa*7iPc7Qp(Br+r9$(Vomvb^841cl8GO#i;4q^2(glzDvdv6wpE3 zIf)hKc=922g7<&SFO~~6m!fsRKF8z91gKR CYjq_qMIpCO1C>lX;KDz_A}gQ5UOk#Y!{4(Dv2rsUi}7=o z4NZGdPq*sS!QZ(| %|Wz7GJBk{)GT~G zetQ~)w&M=Pg+(w9yH<;ui4ARvgh_}SaT583h)0qyn72DEcRr73e7snjC4)DA4CXuQ zGt(n--J0&Mq$QA`dD5D?3Y|M^;wf7i_1&5-oy%fM8|S6K#X#JPZksDH01k8$ad~?B zJRF`kh|Wn+P1XF8E^j@X%dX|Cwf$USZF0I;S7*5;dI8rp4ylf_TAW!&@wG1GZh8{c zj_HOMR|sbUJcik}1RuuN?B%)k6q{ |K?0ZDmK{T1VUC zjQ+%$kTlJxF5Uu@H6Ibl24mr}1Pm>JDk*Begwl=&5u3lLd#vClXOMlE0bh?hRq1Nl zdOUR435+C~+L9cZ6zpjmVZ@tae5X}1I|qx2i~GwLk8PKk ^Oo+e!1o&!%(XH&m^liyk@saJ#m3G!5&2w}H;MTI4*ygv>af^J4OpA^B8Z z+)kR(4Ui>GFnonoj_4mwII4S`s%^U6)-~NSS^Vj7JAhltptG#USejbc|vG-E6pqYDSvEhZm*RqP`j zx)Ktm!!dySbA)f0;w`Fk@iD&}^WjRSg3%Nqy3)A^5 ~Oz z{q|im&25?M$ooo^v=w}^PeiaBd3m?m7YbnPG)G?hNODOuJEzZV6(7t%TVei2=ml zxcT|~Q(#Jy*_(ol>iQX}EXi}g%*PN#$Y}`?5{hkNNT;dcp{r%yQvMyn%AIIe=vIdH z&Ic$WRoHcQI7_AxavfP~xYRaOMP1SvAP!De9F?Xm&c0RM@=)?M<&~l6u)Z!uoZs^g z-K<+$y8cznI-@3LvAb9_kbJpxzbbNBKY64fgd$Jlr(Cj#=O`5G NTO^=`19@X0icRjy^`8!dcEvkrI zYe<>VU8|@sSAU3 sXGFviq!DE9ivayJrQ zNPQ=vP}VfO-y_fe<@ ;ASUfgC3s#^}HgPl`tZPOq>kd0iOY_l{RKL*)f z+RmO@klS{%MheNhydU!ZI2roZ$YM8yiS?XndSP(FzqY2ox><18J-^gCn$OTs6L~j` ziYPW*>`_Y%He+AEZpM((V{EO%=qX`iNbMFjpQV93>C*SokU7I t$VS`jKs~`yTV?M;P^383HfThDM{3OlCdD# z=J#dZk9j+tjPqr-Q>zh_wQ?G)$;oOGL6O74k0G=gbj3-!1Ca`c29xCz%Pe26eJco= z*mJu=Ukl)|lJL1 T4R0?mb$UI$pp#NoZl|!;tO1g%EaErz`5$W)pIAGT}M+I# W!0-YNa@s5>n6XBva=X>ge}W(g 662oAtV(lzNzrK3hD-kUne^;ZjakeO0p&QQ`aV$dHke)Wb+Q +&U=m8H z4X3*yR7Jj|_f;t~pL6m(HYF9+fc9C;?DmC?C2TAgbgAl#q8Fmz5Sto)^Zl+!-p2Rh zh^fsJQhFhNj=HuSB{Now^|fC?JKs0k*eFHE6YUqJ49D&(jJiQ#i?bM(JMHoG(h+;w zR1&(jYU{YJ)6>a5S0gO%*fz}t;&V!ADN1GH!-4yY#a|Cc;lTLvFc>rGvk7L552CPG zN(8)Z9(0e_SgO}#Y $+pfxfb@vYRqe9jCw}4E2$(vlS3i3! e%DcMP9lW zDh@4}_-y8YHhrmz9WWX3;}uh3lJPl7-Ph9npgq+!1G~U+)P0pz8Tvps3{-roIUxms zCn6oB`%gCqkZDi52?+Q+P;>9EJvBR3y$e)O5~*(;(~jxeo{BIT71tOujIZNTS0A6{ zF4nMNe|>wa!FV5QyBrd={;;_Tb@EFZ;Rva*-TJM?2_nzAon0F$9uzsN?xURHord6- z&mW-*Fr_-)c4d18uNrGfwmY)Fri+^b-f3{(%vo7I$bgwsrzKxOWw^D=U0UbR#1#%S zRlGn4#T)Ve-qIU`aA5r=tze<$ bkRu4^+{*9AlQ@6kWzFi_2MPqp0*K!eg=M_2jUJgcyx#WD8*%hQPW=&dA!exO z1PJT9d1V1viwL?P?l)(~wg`MbjF+{(7m-<=?7H^`9+;|Xs?{|!V8)eBRTiZ*dJM@K z+78rA0ZFdEl7VwfH)~)fEV~06a>UP+>>I>e_9ROvbkWy_q!#hd$*7wFEt+wgPDy6r zqaOTfja<~0j$)>9kVAY|KkvP3%9mv r>j(NPyY#|0m6!r_JJ;|>Q$C|dfHq|Z8 zWCx@Rw%3Vbg!b8G*UL}N`o>h2GiYd%asV6UeD9$-CSa(l_^2_?`WU_`iC9x4MA 8I{zUgqsgV&Shpq(tYBoVP0?Ermw5Y z3ht$zlWOJZ9p$B*GSZ+~N`j=!R!gV+lH|-89dA@!_7t+69p>wJ$cgYSg|#hD;1b2T zNYLjy>pWez1Xf&aId~Z+i9to%t&cCgK`}`qyzY1U52vT=B2I6tZXu_j8e(L`!TszW z_G1w)tv_FN%g?)1bF$i7XR$)am+Pa%o(PT ;X)nddH+YeDh zXUteCp%SG;@SJWbKz7OcldG)hFKOA(i sX6P$>P{Vw$)DYTdu5|CtZ5N1)JRiZTAv%A?aRthkcvL}S=b&(3bnoo-ORM}> zQOIyXUi>2nWlWX}ZJ a_4 zQ*zvDaa8nPG*vGk 9wwB`m^L<*f1Sbq)~MyBtfZ_ANtL{)Fg+$mZP$v9j@O6z z)2`B%j-K|GQ!W(*F$Gq+m_rZlHMOrZ(=rdj<#&GFw(UOf76=kFsI`V4a{ci4OLfXI94ROCN$0DOrEFR{izg?L-s#vyp{*P%iwV5W7#HBp&z1ts3GuiL zhM(yj=a%!GSuPBcqO@w3fY-Uwq0Q6Cv{=X1& ?R_-J|?ESdB9BmLwID;J~6SaVGF8zVNHI_}kP34Av^R zZ$_Shjh{zs%v2W`Yhl0~EE5K!$ZJdy&G1fOC9CcaIbD&+VfLqx^AL;)D#22ubJ-h- zZ}`n2i9TKXfr9cJcK0LvPk288fp6zO^>ELwPwe!1PU>1{-7WefKls)*jbJ&>BP;J# z^H)i78!{`q_}bag3=|#MRIJNs4NS~m!6BIGFLcbN7%h2tTvuj!!?mzhaz8{Ywl+j1 zti(1XV5&BN4Adna(la?PLJ;YB){OL>32G_@J(r9#Yk3-TriGX_ri`35_XXjte*xlU zcRF>lk|o@*v|;rr@w1UcXg3m;DSo5|2gU~bH8l}b?fZAK5CP3Z2SWK`n{ouK^YF(~ zzN2!gYrCaku3a;=p}5jhQR3qO% `6) z-Lg0J&Cn`d&q2;2?~wo;Sc6=sd0SXtE>2tc60WL+N a`0f*dTo&Hrm{pv|Wv|yzPkC;Bzz0!wPGJQv-rK1>A zZ;MrTw#J!QIm63gt-&9Kb+KZeWS4`7O;z;czIYWWJPoadi`z`R@ww@4JGp0CUA;g8 z=$Qk_Lo!?b8kdq#9zC>9yU0;KpIQY+Si))H+v*-t?!n9OU854*Z4VmCqHB+&o%)N2 zVZ@*}5+ok3E&}DHePlaLo>zNW8%LW*NJ#)w;&9ZO8S#xx$gL3r(e7pj267H{#an}% zkF@ 1wMNiux uUtHm79T84eD&HA z)_ Z_6Twv52*0hTQx%**E%te5@Dtm?aAQvJ0p2 zA@a0(t)SbF-G-)wN4e3IWisc-Q;u)a9U9Cq&}_JDiBUJDf>kJ*HOx@44h&CqoPZU# zr7(REP#V2&k?!^cD0@uP$7qFPYqs{Rh3SlYmCe1q%4yiPq< {7|x-f z?{)1b9*F|!%6QOh5Yu5jY9;A)wT{sgoyl$rU52D7V^xGu4O-soZ20XOshLmYMdtRZ z^NK#Ne#;B-bM4aZ!`2FR!7)Uhw)pmww8i87&d9{QZL9#785Ivrs#l1;(K9bAJzpA> z<6iM57h0gdvR)JQ{|bosh#VGFHU$q`3G)pvL?QjNhTQKMnB$?_djX0m`D73oEd6+j zar9lq*W}N9e4XCx+gv}Zf-ipZ#~cinD+8n-^&+q4nJs_HV#71T-8>BXLoo9u-K3Nv z`lyOle7+_yPO8z*c(_@sck0W$^F^QGZhkKP_pL)$?9Y>Um}FQQvcRs*5qYCQ*_e%y z%|zd{ZiVzrGT_Kk9@f@^t|=L$2I4VnW|fiMw=mg%uIw~PBE>HyHrXy2vR|D;0ZzZl zhLg=Tm8bJZ<}iR7h-1)E^o&2-Fr%^Lycc<-F@w|I%c_r-u`Tz1zM?uoJjAfAdgUH( zu6vv# FrNJ9o}eP;+Yi${ILjmZn+3@q0MbZ>{XbdZ2`1zB zI;OZhXT=tsQ!B8v7kyXE5iRZJVEi*wy3(X7qwOkD7?uw8hn?>9vrNPg)8~V<)lq`g zPB{=kcuH^h)9WHpuqx+gF+XFuPqh}Aiop_$kHjc1P|s+1Zui^~m)~Zd4AQ0!;!Bn- z8Jn!`3d{oxTnr+s7jrx>HHg|IrRk%m2^1lBfmst@2Eb;B+d0mpQN3s)=}&C!$xCM# zQYJRi)jP2Jw1(WpLw{=`?nLytElJ8U@qEyL=3QbPOR0E=0B69O(lz2ul!KimaP72Z z+MvhYw8;oJXn;T>h#C-}9fEe)NR*^%^SobjQhNzCo`sv+<>4NlJ5I3iZPYX!$H9c$j+ygwGSDyN2E&*krfKQhizqCiHKMh81A4 zzD;xTk<&GdhRL5=l0TL1ZCRD;-}+5 EE5=Vpj2*wf&i^hCPUx_)qiJ1;C2Lqfx+4-b` z#>g@Q1-(bzWhD}Ll1Aeii($S_30aR#Q(CX?U381pU!#SB%h%Z_rHFYXk7|a*gwIC< zv8^s6gg^rhZ1Ionz|?X=yHFXvv2W~gANQC>+!OqL-LX~#oIc=c0tCCyW7It8o7g@_ zQhdP>_zgV*f;ImsYVT_ta@b|xn%o!rfd5V|?HN{WwL)vbtNM$RNrg00&o9+R@IFBi zyC`SX5^*kxS^4iTJmp;XYw(MycbgyN@FaXi%`ME_?8(QB=+2QugQ9CL$!f7m|AVx` zGl4l1Qw6WFrwZeO{w?%$&U?K0D-aeNj1P0qjAKh1)oLyVQ9;t%E|Njz`l?c_wPk0A z5{A99?Tzdej8hqG&&Le&s1jV((Qk0DQS=Xu8g+zrc{wcbg$WbQhkuew2@ZPkT^=@< zEMY5w8uG0?2!Xr79khe42-3qPsY3+JbJHgLg=Ic$Tgy||;3#cc;N?ljw3eknw!7)x z;^qOJEk6W8o(CxrJLai)V7a7;FPJshSLfGH5U5YWHzOh(JT;dWhK_sWoMR#SipR`A z;KnF169#Pl9*!q3iI&FUk)fxm9{C=xCmFgxiM};I;%g8L%!Ru`{4p;EjM^LDc`=!f z_4oCzK3$^4yIg+$^wB=bU3TjuP1K8fYup1jz4jRCO7X23WjNptU}~?pX^ZJu*lJTJ z9x?R;=4_`9Po128nJ0Af{kPF%k2O{EYV||ShWm#w>El@(+8qOMBgVW_qb$P-ZsXV6 zs>^(fT08T7rXx)1X?r17c?K^H805NajuNXq4EnEt_c^{qU7n_k@i%8i>Adb|QIH$J z$2SClyyyw(KTnY>M%0kvL-+q&tYi+M*Q*mz87Wno5ee?c?%eEsYH9lU=tuXhY~go& zvhoqj8xvVnku7qVT{<5$ZpGNn+is}#_==zFAk-4AS&6pbUNC#OSLImfM0oF0aVhlo zV4JNCS!16kpmVl6E2&oM8`7@IJ+U_2S6bZ`kLm;Hyp1`%WB0An+Cmy1m-g>)zo-xO zdQ|y2;NKnXyfz_R*`ZNXChBnkVQa%dFfA`r%vJ5l(~9vAVEw~fUeP{n?D@-{# u{${8{7wz<~dQ>HX{J?Fz!f zJzv>svA{OiGnMD}9JL)BZs`PMSzg(1{xgyOy=gH~%4M2(^K-9!vX$R;W@cuD-$Qu` zBrD4;3lc>V7#3d}dIY#dyBM_0Ac`r}%Y_&|wE|o>C<%_yRQP)+4t4E|(X*PjPNFyk zovvw#1Mc|)@yq6!)BKKk?fh#TWQAfG46iz`DsisTzBKqZ|Hw@1{%(KNevy32WUg8O zdhYDD>OOz`2qc3N;ir3uR5!J>On)G~v}c)Cp9KakC52{*gfk3PEF0-H5;gKpc|JSZ z_6m2=GrsFKv=pK>)w#e4%*~9~H&?>pV6okRF_VMa%6|N a<<1&6XIE-&6m=XA+!-(?hs%2BW!AvCSi4pG8p0Xt z%ybl0y$EMJ+r&h;XoWbv!_95+xRo(7{gdqG7K5&>$Nc4atDX1GuWttFbNnAotf9{A ziBs8 U`<8p@NbG)b(kYtwH6ji1T6dR9Ac!MMKjk0rBMJt$dd z=Hbed*vam`;JUNf;ca?MO-b2^ZHU2*ZJS`CBemRrD|``heV>1WrMg5JNP5RJUEEcs zfD *;!^xah4n<0oS2naf8)>>^K6>>|ja5R00lfn`(u z-Qrn}EV|=prc-;kNJAk~07jKHMP8%J?y 5C6Skl4kE;1?(5CwB>8828+Tqc`9bcrMX|VVJ+E#SNY?n)${)>cK?Wk`P z%C>wG%lOX0X!B4CL}t7%j}RBuORIeR(1n}jA`QAQk{em5=ej4-*qPZp=)0U^(N}Fa zr@9=_cYSu}G@(Xj01c)ywj<+BAnLV=TsGL7e`XSsXHO@V4+4ZlDbtUna ZwtO#-LvqjPeDUQG&Z|U|b^u>j< zX^HN$uWB)*R>8zq!&nr%Fl3G2^eA!~T_nOngeNm|;SehVrruO@ewx}h+ iub= zT0=XAh3Obl{h{ATH$Y!^LM`cP52WQ>8wrtsW%d;3ny@5T4=Eb{kY`Md)u1_?w55!4 z3Y!J6D_^v^%t2#!h(2l3?-Lta_k>s{4$ji(SQe+Ma_AQMM?4K UArbwQ&q8jsdE`8Vx>>oHcVi{3-_?9`NW-p7?aVe39aVFB* !+|6!RXM3zKPT4N1!^si12D+2 z9+^9p)StNRyB`GGpA(XXX)aju?%-HWg4-;TbcRc;0p_1wOkD>9w8oM6pP#97R8+rg~Z3%&KxJhjV)=@Si^Nt${3sre4qitn@ol>`kWl!8hfUI7??wPiVY zvvVh)8dA7{P+1<&6ZWGjsCNK!Exeh{Adv{^X^VE<<{0c-bpG0(%SBf06fz@RDsU%C z&Rw%rpl2izQ>ehb7cDQu!vy#q7PvJjnOGZ-I%ba6-`o(Q#;cePYlbfF&6;XHk#DVa zz7e^sa%<7kIp$DEsW)-39Gv=;2K`0pEy7J`OiSko02AkPR%n wuwzD2P5Z@E@NrpU!@q(?*Ohv;kckdP2n&1+Aq z{l+*m m|Ii;r4XkP)`B zO3oCNMVmBlLNIs=dF)0bF~X+x=z;>O1NedsvEjtGBGr!Eg%TBEvKlEAj>6OC7^l7M zZ|m92z}jM!3hAhIJwF~(1D)%tOcdiF3;4?)&y6ch8XBU_ZlM--h4|fj;)dZGb7uqO z=g-8cp^XANHl|akYNb<(pwf~yZ5--wR5jb2X{#}9@z8ykSLw_34Ls+BCoRsc$#>lN zL>UM6*&1jGB9gaax|7@iUrcd@6qnY>qeaQkcbgt3Cv&cNEmEUiFwBF^dUb2#+jYM* zvi)6_1NN?o4M8N!xr{di!I0gOacl7H6~onR)X2@>YsgF>B94aUu4RPA^>Ys#3_yiz zUKZd+i _~+Kt4xh@52uJ$S9B2%8JgQ}o${|Gcv5WuU`hFvMAIV-~#v!1>eM^GI zkED_XR0b@>0bk-tLF-i^RA73n)*{Ee?oJaFp7pRdySvKFd=+&uV}42E)A(hCNlKLP znx>l0{hJnhY2rL*WPC9>!`$C)^~K4*-D*pXEm;n-_~FyHG4g$HvEE+A!`cZ5og*UI zcKX%E?J9eG=%I4WD;3dilpEe(Zc#bnOem?j$6b9QNcpp)=p7Vbxq9Ul?l3^=!iO&? z#q@M@bDB-D*!Fzxl1_sO#~#^$>{eG>kRlhWh464!)`|M<1+9$2<5G2ch^It;nLsIw z`^b0@(6% K@E2Y0vN?gR)LJh(&fKp+Hn2=4CExLf1y?$B5VcbMuV_sn_jJ@?Gao&Je* z^;c9;d#`t`{k6|Og>M~A)hgD-0h+6KfxTg+cqTbNE@CWgs^C}%lPXpfNJFn(Im*49 zN#7`5p@{eIR?l;A628uT+&U_}8)nMbXE|Ec=>81)2{?+k%`>njCm~NR3{Z&&Jiz^? z$p0moiiBC}hTp~nm#BsO++qaCC@ZM`3)4ERA^N8dY#%K>N5rHR>;e1wdrqG_W#fE) zDne@c^(VrzhGu&6Cmyz3d`bnm_q_FZe}1(q$`dWhJ_8G`L-w2JVcgG8vL=U6Tj+(K z1!ZdS;MT}2?5%uBIWrKepJA%jG%f=+>qqZxlY9}r678;ew6VKJxG~;+e{te-7EqFq zW;aTyZ9v7mXWoG@pK ETDgT<`S^1x9