From 97c5d210e84211f7701ca253473592470d00b77b Mon Sep 17 00:00:00 2001 From: Basile Burg Date: Mon, 6 Mar 2017 15:15:46 +0100 Subject: [PATCH] add a profile viewer widget, close #124 --- docs/img/profile_viewer.png | Bin 0 -> 106146 bytes docs/index.md | 1 + docs/widgets_profile_viewer.md | 23 +++ lazproj/coedit.lpi | 25 +-- lazproj/coedit.lpr | 13 +- src/ce_main.pas | 7 +- src/ce_profileviewer.lfm | 205 ++++++++++++++++++++++++ src/ce_profileviewer.pas | 278 +++++++++++++++++++++++++++++++++ src/ce_stringrange.pas | 11 ++ 9 files changed, 545 insertions(+), 18 deletions(-) create mode 100644 docs/img/profile_viewer.png create mode 100644 docs/widgets_profile_viewer.md create mode 100644 src/ce_profileviewer.lfm create mode 100644 src/ce_profileviewer.pas diff --git a/docs/img/profile_viewer.png b/docs/img/profile_viewer.png new file mode 100644 index 0000000000000000000000000000000000000000..eed7681c2b7231980462de296083d99dd24b65dd GIT binary patch literal 106146 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
h??mB#xISOZyvRVE}H0 z?kUA_WVpPtq%CNZ9VJN>mhbF>oO=L~iTMD@3^P3Rqv;i9Gv z82v1s8yguJ7!fRVcXtPA%FiAH#WI_$!7vp=D?{7;Whtoh28&w<*8kQ$EOWp!e2`KT;e`rr{dsPFe($K`OwYu=fG>h2P&_XsqMO0DK^AsQT| zc^kc0OsO1}OLR`6XP|H>ix(Ai>d#RpVr6BW8GvA}MqZU&r04Zi#b*Gii_E45m2Sx5 zsh;Ar=G;_PR*sI2rekKlMUmo;5eKngd?CHe+F(|idX;kosVo{Hrv_+tlq4C0f`Z(S zASPFG^>}>WP(=#0fh@~HceLc$RifJ2etb@jke3uPq>oF}HLi~PJ%WL)H|stLrS(Bf z<$eT?H$}cZ>F~u?GjuP%;iX%%5iEZjc<<0t(YIhCz} zB%;L*M>MbnfN%X89TJuc2BZ_%d~ym3-Yof`s3=M+fkGujxZ+kwOmY}lV~l)S03Vmrip z!szZWgilhuls?ZuiD{UnPEJsCz+6Kk`KFp-bmPH;2UaV+?n5vI4}s?58Je5Z!QW9S z=6(j!2>dBcW*&t&EPfuC20eDL@IKij5b`_UymbqihYoD2t7@4IvLUT%X+2cii9i+) zmc4Ft6c2&n-nap|_DsdmBryjEJ}e8wCa9+E7FU-}R8&;k2M4z_hO$+aSUEjXQw6k~ zSA7s*9G;+{U{;if6Z`c{wF;%RJB0M*9;t9D93f1XIDs$!QYi!EtJIeIQ0(337MXrhMrz$AmBlbbKLd9 zcy)jES(1ckC>5f%a2Db!C3;%PtDN*osUbU~+vafC^g%=fAZ|!oHrRxck4fG13Ym&E z5S?rW;Ae~5wc7J!CVpZ3WB&&Hgk#=1jp!4O=9ah1-iPmai~|K}*(16kAzTr?&1 zMF?CF!77+RKnf6;KwBs^8*^t%)QGI47wAR~hkoDD;9f+ieJXp?|wqlsn(W6N&4DdvMkZ7`Cb)VVV6!Ib^Y18ftJHEJIL0`EjUAw3vPxyOe{ z%tU~2)B`1!jAg&GQ^RnyZNfCS4etSuU`2M`M^ATl0M zn}OMuA~{)DSjcyoqQPUPP)mr6ifa3jkT<`Cz1C9nS{FL{ zmZWzvJ_0`iex-iqw7!OcrD3Aznk*zKIW#(-Nb!y$B(Nwp$5__d*NB~;-v|Tc zfFuU6E4%H&;rcM3mJ%LV&Vj8*J95bY@h@&vYx;#fAa+IKapup zRlpSyA0H`uAHBF#Xd*l2UuZVs53wh_{|m=%?tg4_iIly0aTNR4cRe`2P~JY<(zhOk zK)$m*;`e^?!OqS?Z<6T3pO$7>X1R$;EUIr>J--4nsCdY&Hb!CU0j<1oL{gfsN5JYq z;@Wc={InC-fJmOt880BlQ+z)_x##U0{k-J?ox!_rp&bnk6=JXOS)B#ny)(vR$|WUB zWds1f`uNyj=emlnd#W|x=6+CslT+92M>n#cVdOEB+L?w0f@ z^rd!HMlnzA6&Sx9-K{gq+$0y8vXT-I0 zi;&&H67;c$hJ-YUC52`0=^Cd?+Fz3#@Ph`zFh_wAgWzdMuWU9!P{B$e%4XMs+Js^e{o8F(BX6I=#5q z+8)t|%VeN|8--zVKMDKy(!xT*yXvB;?1kM0A78u!ygH8x5#CzVndmf`lpmpo*kQC+ zHId92kVxMK@ye|;Xr%{N+#`ZJ;c&P<+r=~YzQ~l?crcTM z{gdd4d*%x*cJD%ZK6arz{N8wA`MbNH0T>$zTA%F(>^5AEL-EVwIW%e_)PqNPZ1RFc zfxUzjV?-4ADJe1A+b%9UZw`h78wLXEr#i}P25gui_1OQsj}%JO9x~DGJL9^xH@40ImuxGA5?=0v1_Pb zhm6w;GEkvEd^;}U!O_}!dda#`jQTW|i|vaGVGeTu=&lXc*xB35i%w98f@BwPvPlTF z)l*c(@bmUP)>&8v9nW{3D-}Ix1gP}~@s*FKCkKQcH-7&7`5F9ivSge`MFkhEl1BH> zH-OAZHP7`XwYhm-;fsojIy&L^RXEs!+>(miRqeol>-4mKLF{5^EU!I~|FJHW_??}m z_wg`zVF`4I;G>8Ky}U&9EMWtXlJxEa=iB=FtN>ysSffXThBoGE=FBb(+;zFaf>uxr zHG0kJL`3Rv>3=B~VH@-%KY_dX;N%3Ys5F-2h!2l>x2~Zf=I75rh|mR6svyGGtW#?k zE2H1sR0D)nKDQ%+F#y=5x%v58xZJa_aY_rcYUOSSq8evdBtuQhf-X1*qv{G&gnI3E zad5JCrmimUK>7`V9WJOkMZ;*)dMejAwqk5weg}k9NC@ZhlG^P{YCr(350;Y{G|@5~ z`@^MCtQx%7^T!}HYvuV%JqWC=u(-pTnm!%i!4FX+`uRrJu8&x{b$K|_1A{6aHK^p2 z%3^SwswTbmoLFY;FW452_l=pEE1Dvw&S-lklTmo6%Lc%U-R2-}Rw;fcXk-NRt~gN6 z0m4BqA#FKRJa-BFW~hL`qlCrE`5|J1!ryY}8Fd5l0C!6W$(R@1?Jl7^7Fe zaj;V=l3%M6J@T0gTID+(b(JODK$ClvQd$kMBc!)P@86FgL52;283~ApAi((koi5ht z@V)7z7!07`0RapvB%)vC3E@k*x#pJ#IhEs;PCl%YICV!;W`VMo@Bxs~0yH*8&Fp5} zH*0s6m$QJce@?SW0J;pVu|FHHEzSrTUJyW13#mch9J8v$l z$!IXK-~)>#iTv&UV?f;>t*1!F%|HVbU{1Xuutzyyz_`PAB64sBTL^&A>|N=;<9^IiHgW`k&YKB;-M(i(~qs;VRB}D|NWf!7h3nW#AruFv`rk2}_TPKxE2q@H4 zZ?=J3;I9k@D82z@b-jUABQz8XstQ5@Rt$=aYy|~6Kn9qxjm}3ghtun@yoo6(fIZHE zYIJ{j=elYcH?7j4B+rIce=6%Rh#9)LhSb_vAQ=O&!Q9+@TK#IZZRB@@q#9i6W~kdh zsBXfeqJY_`38znhT)XUrOOr3IACRVvjg7uf&TdDsVoO3{cy8-8oSM!+F zAX86sPDx48*46d$^Yfdu>zAEMidBeYog(mwh`?PzZP zsm67Ix3(vBpI#klbs$4fpmB=5Z%7vPU`02ThJhhKdasDizV)^_;01}GCjErnviAFE z_24;RdB4B{h()t~$ySY9@+5M;SzTL8@Ofu$sn)hsf=qy4W1nT~mgqq${cbpAx3N+14F@wK!S9gt%bPpY5Bs5*hi` zWAGOiwzi~9Ol}af4iqyBYnh0N-AQ9#>8k;>qa&(n2^s`48O_5oGXiJUbDGc6FIYdT zIN>Ce`S&UK5WV^sA!(c>K!xF}J+(pTAtLUO3c`-mmZ+)4rpnqD^k&FXaB_~rzSq(d z5t;RTgy7kr81#+9cIw zBe>gm7-$S4SKYTXv}FRKqwm~y>RU*_(W*oOMd`At^g9{m{*%K8DF^THsMvT&hS;le1%9L&zr z%x-O=VMunA*=*p!S!jSj1IKZF>gspmxpjPxLF@VT)5J%{+FI;FJu6a#12un3R|BJ? zo4?#RE3s$%0UYJBxO!>8w}w3Svv>AmuH04!o~?~(G*Him1l3oK2+VP(DF(1jr0Ln& zTDY(UgK;D;Cu5dES0X(dMQpfE>V!74Qc7{A8 zii7dzKLAnt2*QH)g*F$6DJjH^vG~*p>UTqCZT}?<&DS-?jS@%zpN!Am)hu*mBDLa7 z{m))}2FT^kgY_YbB6~|0)A8bXYccNtBnW8c7q~ts9Bn3v9^QJ&%^kbgabX>Liy0BT z38(q^ikZx%;Z`^NTaX#n78|tpxg#n8U}-Q&zx6tl4mT%K3MGt&bMJ=ITm%EI5-**0 zyxWG!Z2BaG8#ItD9Uc5x@(J=8@E_E_`GTKq)c4}&XABq#_&Y)hRQ0~lC`m&hW8n2p zP~7+L4;Q=CtEXJ9I$DBKpi3@3pC{H7n}c1kwy|*=pt59SWKT&*+yPYR1@VmViN3Dx zZ^x6c@$v{EAYsOewx)r$O#lE|j<(>g7CW91Z2Py7q-Ar^tOBwwBrL31^OX#)ajS8T z-_827Z;AvBs|s@83IPa0s=J71ut*pEzZ9X7M*me2I?I-=gaTRk@BgUdKc%E565AVU!SK@#oz!X*qAtIT#QFgCVR zkce7qdwTYX7_E9`yIEDtPrxRDJ^?h$Ed>>#dd%CKpfWfas1&FQ)xEc%=vu;gFap_u<#>QW% zO!kZBUnho?bV?7(KnY%byorr%yS`2U%FKBm+RDehg8bAVp1BRl-NMurVe5Fw75boO z_sesh94tc8(-XyJv(6S9%U!TQP-X!Zb+*O2+d?Y3(wjv2L22*EF00Nl05#|?wm{eP9E79l=5{~X>CC_Ucvcj$jMsJ_sWDX%F}`foH39!~ zT6M=fU$e^hP!s&-=FI|7Y#cz!R3>m{x?KK0deYYW$s*rJ|Bl`8s^L>Nq{JCrZ9gRB zb_)-$fDjA0De?F&h^Md1XRGi-1`xq+jYnJ2FPiIhf>@*Nqa#G7^-TOfPEOizG>PA$ zW@-03;z(A7>DBb7tV7>Et)K)CitPIMzKf)2xf;X4mmwKBd8zT?Yeer&zaPjbe&mfJ zmMAFgAt>7Sh|$rF6Q29|rKRO%{ooyWmnOv|i$}grYqg9Y7@GVmHT76wx3?;kZ-*bD z(Owy>NSS25`L_yC&JU86GMft_K$7DMC>gB7$z_s3YSad(nY@WElnMmEq5>YJT^RCS zjx$}sB-^K*50p~J3)9Y;PqXDSUfHkS_xFDQj!R2N#|?H5#r?WFuaq8znWpBov^1AT z-O@(~r8>gyfNo9JMEsoN;m`14vK>GX|MWv3CN@qz{JlALLz4R_CYn01>s#L2EIIuTc8B=W2>BlX@^64GIrQD!9rN8A zGXMNGP^}upW8LRAI{zD}TwJN{>I#5ny~_pS5e)7teJKjR1q<)JPe`AUdV*TmwwnC% zL|W!#yABO%ZZu1JfwA9iB63+S%OiVhUpj>{#xt~d0CpPff z`0>u1;dn6+>?{a*5U8=FWMy9rBa~w~Y86nF`>Z39SsT(xrIoq4xs{1BRwxVuH3S2o z@>%;NP-xr>HOFf93n5KvDe1G2;iUkf1QwCrbexS^+1Z&JSe+F3wE$_vAz;ur=TqS| z0(z7B0!$xq-3#+yKx)I$#OHpR75E0Gry|eW89)A<3t(7N*>6?F}fX?=<3@89bRPFhmD3B1x^{ zQ*l`tBM1hydj(yC)E+7=GKq?~$A}FF=oNe&oJ^inmO5Ilbzjc?{e?H0Gf@}nGbD!_u zzcc&+p*Fz2;B%&dd_w3YL9_Pw@nbj3`-a5)%6xfgC|C8n0id~qS`vuL@}O`Xz|%%3 zCZZrUy7h2Rrd{o8Hj5&r1s#SyuzL)QjP79~Nwux5-q&v2zPn=V-5Ijc=CS&W{|;^) zaNq_`sa<+=aJLM8~mg<|_B-P9C=g5Ju&orgH^C3S8=SqtMQfl{V>B zO(D+|cMu~%N6v>?+UPIE5PFkaPoF*e0vR#DPH#b*H`q7b+lQ!q76TC{WUW6TdH@&! zk7@{57uu@xKu}&Hw2~lP5|)ri2JIA7$A5=s`5qKR9BtN&1_2NtJnmhfzS4oCU%Pa5 zvE>36003hlxTLSFS22)4(&y&sIk&jz5f?`U*DWno4O*}_4h><0WEzf66P&w()dEoZ zu-mL79D)5t;ZT9;d|QST^65E-PfYwN?(RWW(d2Vx<`8IPF}t)xx{vF`F7LM5D<$R% z;{p)E1qc*WUuJ>Z=Hx^`F%Z?`FdGHGajM_F0d8C$mz)ia&_whVJ$3n5cC(~>T;SZ{^`ZB1-YP#y66@5}8h znEU5je*9YriQ$jiE8zX-Cl8Cx=-p41;_D1S8Nr zmN&;AGl|_Q_}3ed_^O8(dcr#aCz8zj3Ur#!pim3KTf>145G@0F|8ctd+Ki%=6%#0aXTWfRV9p=3 zh{e7yJz8@Nd=C(fEI_DOGhSj@;(Wmla$zN#yy4X~^uh`32(8%2YbrWAFGwY#HK5Z0 zm0Ec?l>A-qP83Fmqk&LzLFEAfk8?C|o>})?K+6j?YzQ?q;wFMfT+MNZzlPgvk`pvr zK*(or8p+{KMw>6$W;-P zI#l((B*+j3r2=hO3Sp_0oe~smzW~J=C_b)z24xV`$F+cD6u>Nf5J~Hv?yo?sg(68$ zRH1o!aWn;W0{TEl0uJ@*a9tSo{cW4SuW$Y2Bq0$I5#mAvg#@5S_2_6M*bQ^&+l|!X zyj%->4nnYtjV%Z+d2(_RWMPl6v6}!WJBFwM5fSzE1%a!`w_cNXJpqe9Ge7Spou)J2 z{6kSu(cq%=Vlm1LBy(SZ{R8)jt%oD~9~##}PWII~uo!^)%h~xo;rKIZ9sH|C*{s4n zBI11nQ9ANpK?jD29JVS1A)DRimxe-1h;^X3(NmB;0`<`u%hh&%viD^+4I8Lc9q4x; znQjyi13)^+37}fP`xC>nWWVq~B+GwCFjF9xdA)XOVc(lL)l5`*mIqoE zG#y~emiyC!2DP>#e_86DeY9VV7xhf>0&URD;?mhx6?QUTnkj2h23sLV_`&1>Js1!0Ioyl_h_Hg1tcwSBUAY(fkBl!MtyS5PA`M1}PkmgK5^h5Cu6MbgI_{)e-{P-Q1J_T@bX@0kMo9 z1XX}=QE^H*Z%0lEal@#mD2uCA^m^V zxz)Y`JB$Fdf`c&-qGnLb*TS=_KIQocY&U4Td1x7`Q0*wPa5+IkF^djf!}Q z>z<>xP5q}B?>52}K&&*teMcFxjIv-B#RxVbFUD%HenO(6|A)5sj_106`-e4^kuow% zn-C$H5uzx2MOH>u5hD{4;jbcJJR4tR&y}?~X>)r(6$kSC5;@u^(2Qo9I!(>ZiOw ziQ(t^D&-tq+d!w+LM!TJ2T92PEV~o<&$7Fv{P-zO>Tgg&T2OM;d+w#ITs);W*KZNu zK=lQ4GqAz0g@dsP_$q47j z23i9av>A6I^YaCu+SO5Wu;fG615XvPV!1repkhK*}LapgR+>65$?KFSyI|o5iJ>m z2vsU+5itb{M!q|E^erhH0CT}B1i(6hP*Xe4m`5DBpgF+9{0shSB6krrGa;Sjn7DDi>pMsIq9&kiESbI-@vvS9UKq# zW#!SLuZ&9%6Vp2kd70g}s<;`~Y^qC_2G**(qpM{!R@T;pDeC{aS9fUX$zApw^9T2$ z&PJSd*Oipkt+UGvDm1fnS5P>T%he)oZDGCjnKs#j{<4SU9BE&C{SA$_q*hQ&FTIWv zJRRkw@qXG>Y+&+B_s*Sv8TQ;tL=~o-YYYd^h@sBSrO*PH% zdJ>a9^sT0vDLR>ljvWibiK6kr<(h`}S?h7>8{_kI1_rFdFA}O1q5HfG<@j&Ta8GD$ zaIJ|~@}+e3g~X)K$rlZq1RZvl-`*ctZ+kUW=107NQQM{mFRy^ER?^Dg`)QryCIy7&x>kHMi|kMw(|LTywQOj=PZs^=fQvErTST2)mPU&`hCTJUHF@W=446o;XbHW+KYt&7`{vEfSiDlZ?+Rvi6YwS?^^5bZUvV5) zKHsW;4(F1j<9x=87cZt)ey$~WtQBBrxMkvz!!t4(85AvGb^O|Z>)|T~#W$cO(z3li z`(1I89F94DzE@2RRy+j;BOFNIHiY zbN@Jl6JY5r^G@*a1gRucZD(M(RaKSGrfh-rQH&mR+{Ul&+=Fk)7B7U^ROPX4-%^KdFC=D`mUS_r!_905`-{Sg03nw5X|`2#FU;xypt?ANQ`^m$bmn2&+cMvy_=5_Q95MQG>x!l6vKuR*Vk9C z>Le(rh3zb7f_8ttKGI6>BHd4l<%uaNY+BC_j0atY>MnrcT8v8c(&Bx(GhE zSpzi|0)_de`pB$3$8VIHbkL{d)P%+hF*j?eFia(sEG5KG@rbCX*l66FP<**R;>gmi zm!3Y&kcL4OE+_Ts@Zwwm6ixY!Iu9iAl-?>YFV9<9933M(+bVk5*`r&jY;I*{2INgt z1<+#BAz^d{u(i#kF;6&=X~ty`q3YG&AgSJ7Dj>1+gwShs2uRY4q8CLNRFrc zF)Z;w-~3ABrv@9@sOe^RqG^Vg41)NsU>IN0Uxbq`+B4PBob=my5hJ5=sq=MsbpOiF zkJrifn4li@Q`7FNRenS{oWV}9pwhk4q`WYAtMFR+6Q#H^oh8U2s!_bxolz`%`_P7v zcTq`68#FsVSng}hL}%uwWpG6yQ^$H{Xonr)_w1qEzX-j_TL@vvQzkb z3Z`Ql!{rZl0vm?!QbJ$9Y~#jbUocvRUS6C*{kYivw3FZhs{$TQ^{ly{(eExltEUvV z%2-zBj#@&)^6BokY9-nF< ztDg!DnsQ7zZ{L>6TjmQRb(>{MSb_-S+=H2|KzY8zICNLFwb23J!?=kS$3Vk!Y@$>! zYJPqf-byc2IDEQ_rY3DG`HQx9{rnKfa5ZMupeQU+YdUnOIV&rOgO&`;YGPYYeO*tA z8-MZ%l={_@?HgXOX&2fF;31^@D307wRE3tb7LO0b4q15;f`XC!X4I(S35vTsT-{a> z_r^uVD$Yf}VtP+@+B{}g^tq+A!Gj0H9(;5k>w-;foQ8$vKbG~u_6dk zBe(79!Vw}jWpeIOy?jq@^0Ad{t~#w71T5mZye%guXB`~D&_mv_7|U0tU9&`FSCfVR>EM5*26o_Ny9VCPCc>W6&vE z9I+x%j1{W{BLFMLc6n1G)ag}alIGr0OgpD!=c>B9WAEH)IlyL+Xwzd}J3cYd*j-u- z^yhwTpoHTOxI-n}Z-Z8`L(U_hlsyYcJXDJ#0-8S|8mK{b-M%Mgdp~}gNUuwGo9ta{ z0x$>QU*4!!7=@|{V~tcbV?7FB>V<-54T~$wBMknP-=cOVp(k+zLvn)1DeJMJ6Bq|yw`UTG5_EdSbHT}3Ny!{d=EtC%y7uFX_}uu4 zC*r8!v;Jf^mplVh7Pjxo@0|w0k&)F%S-lq&6zQ%GN&1Ro*N0`%>#rIb6c<$lOgus` zye9Bc?3BAFPIvbMH%Gg>r4 zbgHAngdJKS0Ck-$%Wq^tYzBHCq#S~w_XpSam(1y0(8+ghGyDkqJ}0InQ<%2#BJv;k z2pt)WAJA3ZUt3P$XHyb)e&q@aa6_Du$>NNX3Og-;cv#d8!Ty+pb?=qljO-rYw6w#( z!VexAXlgZ7QxpCcnLi&j<{{H);`E*7x5653;{ z9>8>InhFjqGZyaDdW*BOP1V?38c^)8c3AW@<-Df;7#g~7j`5qXLfE($rqjW*Q$^ox zN+v~MU~SF35D6!C6LNkocTVv`I73Dv>p#x}7>XdpE`QjLcs24igHAYw_a7QyBR1e= zWwAoocnEm#;>+CU?#GVSH>^6GjEIgt{LV|z#N!-*N6f<2O-;9W%A)kR0v3&I?k+F8 z0<%OPU<1*m2tD_sLEMbDu`5p5$HD}?QRZ8WG38x_>Wq)?Hr`0uCB5>Hf!Ys3k(vgk zkAJ`MbU?l_ac)Aq?fK!_d*Gc>3XzjHd>*=yusZe3DfuL7oHBiOg?WwD)gKLu$#=Ro zKD4>PHT5}`E$$7j-u=+f4PwrM>}a7-u&Jq=qk@BfjjjOd6J|t&h2=d^TjeG;34o5l z8vt3unomj!)kMiOH{tl+t9SUYAW*Ru;g}mZk?;7F%j3*I%{`e`QVIFgf#Om(g<+es zXTAF9hZ;P~oCDhQ5Ri?E7#bd~kvLxWwDcHmj>2g2!JC;^1n}phN6grFJ}zz?8chg7 zg4*Foi{TCQvoh8kzD0x-_qG>d}N_P8@QN{4%m~R3ELL z-`&s2iD%9jX-dS55a-b?pQXQp1g9N@&*`(Pov8H?-?nielN`3zF8c1_;R4F%#YUBU z?rUy>2JRNi6k8k|1d;C{_|PaFVv znt*RJ0$R}Od$%9|(z?4OZFc;VF-S*7{!1)99_2Uv=xOB6iTONym~kw#YkSd@VXD5d zy^puIAsp(9v&>|jNHtGt*JmOKjeM(=_Oiv<4KG|5assI<>y1^2x5ne+nJ4ZmH>GC7 zcj}deYq_kyRUwpKLGtXf(A6({hKGk?KFL2n_vq0Q(2XbR90;f~T$rMJQ$6wC*&_wz zeBj-ZH(=z)>KqHJOEMY*E3r5~Y(Wykj$H|(IAP00654jhnLcnSw^64jL9$+*8R7*r zeg++~Y-byhc~OSk&$YkohmCNS;gmgpgRMGP1tpQ3mov^gCRXlVsk>L9Bh3RVr7*S#Vd!-%|}5M1@mrFxNB}s z4h+yw&@PZ%{`g$as=|DWp3{4+tn4BLV?Y?jLCkizEuV_6`vJMec=F1JH88!k>#Q{L zZ!s0~Q&4=}bv;Xlct8Rn2PnVC>6+G#p*|L$Yo}B;Y zg;HlqoXC}3UFqj<1jxRIv)H0Fb?fTtI>149=s4ZKBt@>eEl$?5g#su@ko4U1K#+<} zOw1ouH9SMYR0b^ylYpg^=Vr<8Jsvk9IIyflpqVz(XOIx+(e0c;g?T4^*4 zX?o|U&nKJ~`UlXo^IlIM_t?D5byPN`Oe{JoiU2EN^pk`3DeA-$IfRK=*}l zP!7 zcr9h^UG;_{x{5`u@b~+%m5gUzy9z>V}Hme0{=*TG!LW#J5ZA0KyTFX{lduazI+Uh3>)rGElX>069Q@R)48Eq@DY3{Vg3&BxuBiO_}fFMZQ@?vpir z-D2C?!Bg+qoX56Uk^2?Y?>Fdacr+OirUfc6rA5DKWt4%P?>v0a9U_WMW6VNuUMIs_H9tR(WhYO} z5})@HvIv~W@Tx~(Y$sgS@CJ}5r>TR*pk0InL5CwQEbJ5*L*#Q1>@awOv;Fn2wqXZ3 z2mC~kY#cm#G#Jm<+2hiM55c74JV8BtfXLkPbH-ZjL({pCA?XNTwXhhT$v=vU@0t8dFa}ObFz!>@l(_OKAk_H}v1I4eDcT>y?x{Z0-4!)iy<~@+(uD}TU zp$${I$0I8(Ee*9oKzkYJdMx-kzq6TRSNND1WEC>;%2&~;XRZLQc!}bN#3~7XJ+#xX zq2k2aN<}pYskC&ardDboMB9@{PY=ReVmU^n#~=*|=z-<$*7hhgh5pY9xE3Yl8j4{9 zL&g|6k|kg&PQlNU)U2$jgYHQ4kVq^&kP}_JOnlM);9wB*E3+A*RcHtx4Qb{jR4XS= z5XRITyMFmY=b|c*gAx}%;+uf*H+XqMp)P`;oM^j<^gI&yUk-voUIgh2DfBRAEp>O$ z5~$nYQ7GNfW)iY8L=Y)on!|a)d-2sq3=L=^`5>CZaIccXTo;49G$J}--@Yfhy;_SxTMj?XG*p4MBp zIBl3(K5WHG5l7W13YOJtvGk-e9dz&qxi2s_dIF;{r+kv7TS#OlBRaHEnT|`ZC=5IY zM%`KjXh02}1!%;^%aWjjAg`+gKG#*?IBB%H)U(D1T^&BuOSt$DrXmRQ^#%xnWZRaW zF22O?0f6Xx6!Z9p0FOaW8)LwYq)`V$2CZekJ2O>{d1O^dWN zTYG!Ji#s9Dz*CxT_O!$ZVx(&5#BkPr8673KA#_L~dhyC<;!y61qy>l)4lLm|gJGol z4K?{7P9p%~z{qH~k=8Wu>zzk1c% z;}Lz4op{WTJ~DG#MEuqnSVA|!UW$y2x>)7T3TVOAr5r)<^w+@q5YyDP4G@Y|O$ zim;}y2e}oGY&D%Fyr-2AI02(lOa>l7KytLSiL-fgwTGoai$l4!9@rUN>+(1-yKkHj z6Pt(Phsekjuxd8}I}QT%N0(KW3Pub(Sh6VZ_9f!G@WX+QmivhI6JfiDo99yE+84xpMZ0Z{-{$Z?p^KN1IaP8!rZeS~DC_t?9X zX@{rwebHgfa(B0G=g}h;A3HjR_%&RUxasnsI_Tnt4I6Hqp0>JXX9pZMB5*4i zS-Ks)Lej;lzFLrnL>3;AD-3Jj{puCCV@{nuZ8bKEryoQ30O|u&LX+r(ry)fRyLSQz z8|oNvG7!&#v9YoKEW#l^RIKY8mBuL+7NQ{2QZ2r5rK`XOiyT}MS1JQuw+vRah{c#m zFCJT4yU`XZ(MJN~L*-qm%8QphI_TK+oY?*5C}VguZUGd-Acg$g^(QkmbCLf<-<(WO<#KlkuI{hkHiGK}P&7Z1 zk@W%+EIh^Gv6q-K64;4dJ5a{g0trU_9K?#Jml)0iWThd=!rKe<7-s}Gkv9pPbG99C z{Rzk&PC7dm&9wdmz!|cFD@6c-xD3;1bmZvI9t^lI9FI2cLTZUXNVcZ?gDs zr;xnUAQTbidpCiX7t^ozw3Qt*iR3EES03rrqQ z;9>mUm4CL2o|zf3?=HeFb6l8S5e#3>)fZYO1ZL$usx1a{xpU|G@Qr|8Qn4?V@V~)x zM2Ih=kRS(5J6!D2XZyi>7n*2f!o1 z?k@L~#Sq!4$nnGFXDel2F6nCsjw3-73=uDiNh$zYE6wn6S@;^+_A0ju|2QDi-x*wn zs?v)m8A)KZ_4VK2`~?bVp(mzs$bWdEs5g;^%CxC0emaTc%kZ!qT)==k*BK&`4zln` zxFQg!FNaDKg#;NK9L+7gDLheFg`yOnalof?k2nao;8TD`51SkU2o+bHL?fi`-cs>^0z)As$-ek{ zbLlKv4svLc`s{=eBZ(yrs-w?-LOa0A&ksoxX1%U6N_WmO?RUet+`zDAZ*fGC<@zL+ z4}BRK;c$a^PxGtou|u1|N3BC|;bm>UFh6f-Z2TIhM<+ZsxVj>U5C)=k~#ZuISReWB#P8oqIM$%V4aJLi}>Qu{>;O(K~3~Ngw7LNWdLV`1*t@!mDSui zZDaOE?*?hf&dFC4Utp6&TGA^3mxyeWU%GPnGD#ly4Pc3WVw16iy&bmB6uh*=vFW-n zB~|@Yw~&w`o0lp-gsT^c#gh2sAcXL~5;qS3t@fcCkTsFW2D02k$PbDomQy`~uJ+49 zZOmSYbtp+nxbds2tH>{oK-tZ8n!Z#qFEk`V8k?9Z#@uXn=~5N0CK1i4udk1QgX)=) zwzCtJA9CL)dvwsVxjC_4S@Lf1Nk0W?ULyH@!Zz?AB1N48L2{KybQNibo&o>;1MX4% z0r#p6iyp=6BnSuhYsXD{lvCYzQSEA>c5qAi=7LcPRd_=pDqO2Yirb z$fgk1RgJqg(_VlMmyjMqMgyfB`Y{Yr`#Zngd!_Zc~B3C2LlmeI*KTdEiwYAyVE9iDIui!qTO8J)Db4K08K7+(7kTee4C@Cq0$(zRWE%qXB z>^3s@;)j>}z2c*oM5s2Ip6+L@2!C0B2N4KJhk!+#IA<4gkoSr{MBb`M3t`as(Rtin zYix(k4g$^i6`*QdGcy3PtcWKUPa3P2)GeH^SnFm4L9eM%mPW=-1bldnn}`oM5qH=R zVL!S$7WGj=L!!TLX+jo;Q0SNv)H$Fk5kz$dF{I|Csg5p4&FH?9YP7a|P>=Ny8ouYP^C3F)BKNk`zF&%mk65<2+hrSef!ZgJ~b%sPF*O} zhyij<>;?huD-S6xj&l=KKG5Sbqc5N<3yqCcL_yA0FLp5=aPi*PxpLX*Sc;wT8Dpk^SBWf;rK?xLKX4jGCTwAqcSo`?otXDO~t zSVLL)CL9#7S)dXS!FZ5!o1=d(oHwAw%Saro&CipP4nk04iZFXZq#qq!3j+obNs6|; zS=5rmz-^Wev7m%#9*S}L!rR$pLK{g*@lST44LFUcJpV z#=@?>2)TqK-;2NvAQ2+6v_a431zte5FwymQb?I1@dwFfbqeSGE#YY6$QJdP2=8_T*dlNn)S1-f>NOjix<_k&o1jZK;` zZ_Fa_`+UA-csmWZo9)p77Lw0S#}ldc-~%DZ3|lyeT8pMlrhS@=_tygzB{no_ZWPK-;A9$aM7&tsh(->rSFfpZTXcEvSb3M!iNToAI1wjH%;oCgM zW+LJbXW}UgbPS?5xOR!y2iILPGvkMZ7o(;Z8gx`#L_87kyAZS^EDs5*&~+mTDY%=C zl3Bo#ILfd+Z!3m(QwU9D8~3nV`1?0$tB=d~_Jk7a4}!!Ox1c$(82312sT|0MvR^B%*UdA}B4Hm%T1HY>dt+ zXd5vc@?ClxB{e(h=XvfBf!E+f9Cn*w({glOEb%<8v6P{#mw65(_PmGrz zWwJH>Z=j-Smtyv(+Gv| zs2OsceOF+-=Zc5&HGmd_<+O8Z2uINa&Wl%|9zno9AF%2-n4b><8TkC6Yz2*-oDo#{SQvZz!-v`a5jAaI z^Y?}b_W{Npy-T$B1M=cIHJ7(wx9fkam-8BFq7%Id4bInw7!+4I(2*t< z_KvjG6YHWdv0a0EDdFSa7YeOABE3&RN~T|fW!NGheqob4BP7#PMr`?LPo3fjPuHE*h;V0SE{^^2V<$38 z&MX1YtbyAMxigK*(Rl2w^zW|wgmOx-htQ<~V7)IJAO-zVtH`C%b^{1^^K90<+gAZT z8W|fS4s|^|On1BlQsCM|^sTH&GIWkmrV+hmS(!M#hcZYovdPT6M-p*o)LSoL8YXy5 z?CO?AKTGob`Ef*^urLXb5k1bW4LvVkzmCB%ZqXLcc_Rq(sq`CjLp>&fQwU`K1Ya)6yeYbppe9J;$ z#v9RhJAa&=OnZ%kcY-)}c8A5~mXz7oRHyI5kA3PC&-(RDXEyNY*}8_n?{?IpnGI8d zC&Wd}2y(-uFw~yOIX&Q(lxxizC-OFW`rx|4__) z^PHk%>TJ9+5+(NE7+d^oNCCBR+gG$p{n(T>aBe-)w+TWLx))r$e)Po6yu!jiA^0c5 zc1x%DDR4GyY=dx~OE#B1e(deVt(bBy+BY(i2eeC)L3tU%K+2XMaY%O+czB{v*&$aM z$^~M0Li5Kt_2Kts9T1fpEaJ*OoIn~1d?0+mrYoA@=(j_8WxnuGR8#m$`$y~xb?E+Tjr5+7`T4MdDH;MA-Fao}kP z)KLJO`#0b>KS={HEfg7UwwUEWd8nr|47a55I8@E2oE_~jXsqn)jQ;T9`hi2S`#DCA z#Mp9ibmO4}>&s;lT5BTHz7mDHmu=QK0aZ7zr|n^j-M+6rxTj`)egf&FC%_VAwAoV5 z>(`IiBA?!q7wnvdkG#aqmarUG%XDghle)TMq*UXW^dvqMOppMV4-bqMzP9uJ{S%XO za~$g8Y=ccy(E;zu)u{1AC9=LC0ck>?qa>`3)0+?-|M;?(WtY_s z78d!XIh*&-K3jPO*1vm~={+G@p|$+|~qC4AR?pE?0s4ALOC9y5U zgjK|T3$}$J)PaEcKp1KK+da0j?VUgNFIAh>`+^ks;uwCRZHja zG&gC*+lcf>6>}C1HMJDdr5R5+(`M?F)u>(yPbxHyrSrOHh#Gt!l8e|yl9g6G%`w{aeMuG zSD`NV*!1M&@ej{(b8}}3!o%qR3M*Z{07sM>*DjeRKw6lm>e%9zS&4X_>4xHE7>JSY z=?Ss}G#U~tjiscR_&ru#(J%n^Lb}zf*9J+}pGiRT6qSeo|U2amm0-`uaWzGE_fF)u`|MA-NV8G7!)1Kju@Fw{*bU&d}kEP3;(1j*;kB?mHl5ndL1o%c2&3kQ66hUf zYf;ibu$}@KQ`;zEgUz0Le}rtl80EJld-F-E>dP+IhfrE5ZD@6XbMJ;AO@UodtBE>PH9dZr zkXD4HHetyE%v13Pc3hm6IPG80AqQl5dgopQN52?2tHYvuJUAW^b;QJfydE^csjD+|^@HbIv~ z3G4t~s;QNqeu)mPi!=9nzjyMph`ZiI#=ucrT8ws8u_ru8f?^d3&-=9jE`;o{5+QK_ zO@~|9$Q);QHt*z`j|HxcecO5f(BA?U82(h)!av<{9zlNDxw*zoPh|QA2Z>}92$@bA zeo44>6K>5f6+elW7F$UC5weBz6DUl@)$fE(oQB2^OGbfd^w(=`XDyc=U8z8KO29_{ zRL#9loueGi;=rND!Vxaty!s)i+HXf#cpUa19RT-E@boV{!Z(3Jc=h@M(G3EGNU})X zyZ0sD+o^>?gJ1wjkO3eGVt=W#jCnW}CFRRz)x9SUD$2_r!h+OrykabDj0uYH0ZtELfvdsP(^=oF|C{)@UTqsB{kHx!;;cr|h6Z#G1FscxzBJ9bui zrv1_)*ZZFxSUrKIXB%p3*PglmLX{%3upHy`B(`gt!0>x6>gauZ(_ibV`1#@4C1-UP zO0Ovj_*#2hKGdh#F!giF3Jx`}GGLJ(Wi1sr99aR5#5ClR(L=(#vcMjB2&}Pcp z=G|hCe*8F!<-aqPHWn6u?sI1V(o}u=M8THgks^jnYCnQ09~^AFU^9CWs^+Bdeq!@E zz$`d~6RkfxL!7&*$4xK}n7#y!fuAQ}9-LdI(*s9d6uV4K)xSe42Nl}swJpaF_8%JU zurUN+3MSRqX5vn1DGfROD%DXI(f>g)$8?sd_nQOgVH&1mTa4CLH{fNZv$En$=n_mU zPv0}8YzsF2pNh8-O?oa)2>^A{cqfzQOH*e?=xSL#zPB?ys_nNkGVaLsSd$bx;l?0h zFNF3|A>PAn?|-9FOZ#r^%h)`*FqlgWPG|}zn@-c@Y2J9(&~UM@rs+kYlWIz!1V{J- zs9-J{8NI@>g-PMqWd?sAA3^YCEya8$kU;L(al)dV%fG|GrV-EHOvAWi7g04CVq|{Z z>snk$&|ZAcp6y=#@!BrNcH@UUi`@2;CSNKX&cFB}>OOx__|~nL__D9iz$I=v8~f}d zL+oYfY}qNjyWF~Xq=oPLjvzu&44|IsE|2BxhX9!{WYm3T#mH+*>#=*|P1$Li!kRNQ zBOQ@nM>xKHm8MBItqJ~EQ_Fc&(wduXf>rJEyMB|w=v!%wJMH+79lBI=Y#^!*rb5m> zKDDzn{QS(J>jN?i3)5omozqu)cE2s`VGWDo@lgib!3ldZvfZCIdAJHL^Ma*=9P@pV zf@o$^(;qjU{(-8XwYwOkegM>6|Gw}VJ(fTq_U>Zi`RJ3%B9Lk>eES*G{B8?^0h^53 zfHl7P^oa#8J03C2Q!Oy?*6|nIdkEH$zZ6@a$)ir>qJCx5u^`**veh?b{YY!@xzQmmYm;xgJtxJUoU$u|7fh5h-h#+|`S zWJzgh!pX@-bn<_T(Y`oIWpd9+1vCo$KY1JfmYDthr8e^3#H7DoGKt6x!<ma@@Q5DmWt|1p+Z9G1bJ*9Y~82t5pc# zHv4;3D-|pytkg_QI(%$(ze3cpR}4nI2ArwqpI>G~*$n*-C>HL^tth+?G0;OtaVsGq z!Gsm8KBVQkC64#u66Ax@3sxMS&Oet0%$o@xBS9o14F?Ek6f%_1^VN%->kq7vUNH7o zbaP7OaMv`2tv-J-|FK=JNi8+8cWm+JL?iB_F!nxz12O|4)TpBqPG|@E`ueUeOqmj~ z5Ad+*_1O{#NtYHoZF9Z?)J>rNh{dVRH&Dy{xU?R88Wm|gJ7SC#G$4pL5LwYIE?w>f zL+K$P>c}&RNPXvfYG#L|3i0IN#BNGcW5cLqzZ+615b`JEm1&ELjccsWtw^jb^Fuy| z+=;MH_wDu|ObQ!5Ay>Es?iF8G$NgN4NI1m&@9`C&(FZ$%P2Kt==q7TJZwA*Tv0H}- zuK=BjM@z1MmUwieZ~RYUu^cgJP42s5VG@Lq!6&_UFqhb|09ih zmlMnH7Q(s;2By(q8&NS40-4&mx? zoenT*Ng+bMuqoXioECE1UP0!ggv?`;H7uOOx&ur}_pmt=enZVf{r{{%sy%*vL>*!@ zPbB^0a5u$$&>3sQA~xj6;HG8uN5&IwAcoJxb}j7S10?E4EN%tpk*<|RP<@0#n=}80 zao%u!#$GsN8)D9aj>ww}fTRcvn%qailK$X{kJ$aJ zvqYg6dH9#Z@GVA)>+PJ2XZlC>gA*6IHoH%Cf%Ga9rSdAw$@mJb&-5Nbi~`~nVehjr z=DY@M8!hT!tzCOWjkw=XIKqkm8tW!5)%u`VA;@wb04hOehpR{g7KypeZ+AR)@EG=y zf)q-7hNYwsgV?ASd)Ltyto}w-WDN}sC)X>>0V+Fh4>p+8xW0S{;}%ef(|;C@f+TN2 z0u)**a9Tu!A(%O09UR(7Ls;fAHGKZFEb5uVgND%WP%8m+%Z7$P-(^g|!UJy!NWVTX zN`OvI6}<--f^XFO^{XVLn<%5$Vj=@2&S&;gBH#+-`yetIiSLEbGU}UnK|)ajVEx+) zuPF?S2H4F%6yF$L<(o4z_QPotfI$u{!T$FFh!R0b zL!1%RM@W-LL9*N6MNmya(eSm97845L-%E#X?mV@4i)Psr}sp#(*P1-LlMszD3v zxfHrS5~f%@v_Cu}2*6JLV-Ftca1Ro#bws`fu5m81gSwtyISWQCe}I8GhuH|JZV-cz zW7VgfvVk*LOd_%Fe3AWO=&btj))Bjbv7VKX`Vm(QEGg7ZO3o@!f-#@8>bi{}?U@9t zEz7(qNcUm|H#@Cq{IKMPufkH3MiFuhzdJR9l+}g z*Z7WW*RBm)jJJ5^5_bWV3y51UU2Y=b65ie}!;gSjOhL2}Bqv?~t4@4YAIM=q%@Rzz zvmKTn5bIhOuq;&hmpzb}R$=Qg4C@BGeet(F5bI~lj`g>MLc?!{hg9bgJpSu-V0nx6q1eE`VVgX?sEr-q_-c`kPXf zj=!}4)U2mi(>{n#*>@Y*zaiO%$dD5_iRYJ=h-6KK2)@IG3wS=dA0rhQNP=jb3Nav} zUH+j-vLgX0f9rJ6H0~|_!fgJ>S4hs*L3y>|@%6oN(a~ww?B?9yIKJ@eRn<+pP4OR=15Gzt}2un#x5do>VghUS4r(%aj_EIHo%l_}* zxk}Xt<`u9Yb}3M!OCZV>iXnY-_;10^eYKxon|fu4?a;_&#Aim73?}jW-*M75_dvK5 zV(?h>m&exu`KyqVe}#@nX5`u1u7IXw&aA2~)|LVr0|Wq)SKx)j0`j1U6@>rqfnXGU zOE#37NGy8NRt{!b!=x064IX-fCsl??(7vg6ywuC_d%v2RrV<4NksN#T$}+>kD)HY<5rPC0|&GI zpx!P-YT+fyi|9pgA+Z%vHs3V0gm)G;HMAlS93pd2YV>v%$Nnj0aaygxP$zb|1^RH* zF#^yguofJRiGDWp^z=x%%yc36;-eOZ;0#AE!*8}KG1nj_mOSdQoE2TWd&jArod*tV**j;sRlZH% zikdP$^PqXThKokNMypOyd_b3c-WwfxW$_#NJbSYbSZ>wU*?Yhwx^{WBrtyj_-!-I=h3Z6HdLj!xE_r;ydXp6A?9MJSmSvTOm#8)DNlY_&Ta1h{&bwlmCzCQZl z!xp^$$ZN7c9_(DyQ}F!xA;LBAC?w>`e!(htzzMOb?o?onnyT==nj~F{FF4--wxR*V64aWSnqX>f04Kzx%(TFB;kiF_!o#KX z!iBmkum$UacS3xk9W;RA^ItaTyUl9E_+=$J&i~kpV2?gD4v?M`x&;K~4TAwtzl5AL zqA`X^HWHdl><;AWw6?UA|1HS-f`_`M%XZv?^p@B6_p+$IjFaUkjbvH$W46M)de5aGd`EO z%N8Bj`eY8c%NNpUqe@@(RAotL)zZtIe2}Pax(Q1Ux>2Asx6oCf^G}-a0qbN4WChE5 zNuV(IX;6sgU1f(W0Cs)&f6roDQv;Hj-{zRspMe+{if`iZfT`mz^-*ho>&0Hnr^{RM z{^J1j1L+FzUJbf6`#zK%pkwF&5NP)W=Qi&Pu8)ul=X?X$2Js|o$lKr*uS(@{db98S z&k8Y0098xBrikH3$gb~h1Fv+CQ}D+)R?!>h22W_;-|v->Xm=|3Y#~Dhx=BhD0X(0? zOhUBsfnqwD5g=&J7(Bs}X;7IDaCI3EMrQOhH&erSFq|djMF!~p>(J1A@2*K&0HSzE zh-bmF{b?;U!3a;~1%nk@M=YgmP1hhtG9@9WEH9S;KpWYIV?6xEcXGrR;-nXuuwj@A z;2mTR!FFt#9Xnp)k|1NTqP=}5J{ANw>W{2l#_tN1F!arY`AKVM=jIVB-a#5=@PB|C z!%nFns@QUEkwuX>F?x`i74~imuZMiE`G|D68_y+)BUg`;_G%2S1(m zPldmD)$T`_k{wEp$~f1=p`c>^?x>1(aLko>)u{6v3JRR;*Yb{|v_6;jO81q|NPVKp zksj-mbgklZacy(Zu=q;eg(Ow%iR-a<%;g*y*eUb#&M!}$R|Nz|cy>zb|JrCuQ}|-% z@o{LkFjPSq`flHq=X-;ZkYo#jiH3>EQhfnk4hY@EeKra_c72th(a|r*^*odlWXG4@ zBi!~Io8s3mhC%3naI`0>-upFXK2{%TP)Td+JaBMD+O6j{sjrg$J!K9Jpyw?^9|E^1 z1kM=*NIeWmXiGFPO;fuT=IbL2%^6eXB5!gsW2yk7Ih{7UT~2MQiKoazvP+#}Z<`G@ zkcVQ}0jSW!XWy={IHr;K#86M;#H~46+p90H?)ueaorUnmpdH zh?fs*FjD_*R`jhvza+1-Ns@ODo|kXdSFXg^ke+;5e+&PUoErCW-W~q}o7M}Htw`x? z{ioVS*3lwDIlWCgRlV0|^>0|}cI4K4k&HwQc8$A?|K^Eg-~YEZ=+}=G_D_%F&78ji z?)}LJ`|&9Hm<69&va5cxWtfhuE5WfwuQ!d2)rZrCUgywJ|GjbKzCMHf*9un?pUw(a z&6^@A2Smgyd2{M_74FSf@d^*LX(7a^X54lzJt^#gZpn`M5WLF}?Z)KOjoJwfYF;4tr_vlwOx3J6HJP*8w45w!2! z*o7MX=n;#YHT&^Kwen^-sK2G^6?0?6B64MbHYijpRSlR++6GVWufU%I91-2NO%dBj z3}1T(R2rLaHS%Ze>m~W?(z`5d;7GRXPse`-pc4u?_bhA27Woa`-PdD>lko^2$-D9~ zFkNGpt;5emhl#S~*^cZ%)q=-{`gaT{EAvysG)m*Y587!@)?-A-e*P@=+IMguT-rHd z@87>4Y;UNSMR_iKAp~nC@%Ti zrAL6(mc4sD@A?&Qz6qaLUudyI=)IuwTlx8PC!A+$v^qXye?!B1vFzJxZ?E3*@rE9c z>TD~m14KSmf1SaB!uStjN-OfBkY+>mEdfXVd30N~SVME~?)faWswkEt?Az?zA)wp1 zc`iXNvMRCYiGRki9Hb`Uh8HI|9+19O$=wi#6u9u=pvyh# zj&C1S?!kHaGKUyxfWD&q3dy+BQ>n4eTvBk-$*M{6&h>yUj4+FUjUc>;@omjP0ScSS zR-JdF6?g^j+Dp$KC_TdgE6AJ1&cA^{w5BEo98hykzm>==7Hv{`Nl8L8JDm?KQu^wT zkH9;=_G^UVyx2iQv%i+Ia=>X=Yo~cz`auCpN7XddgO;s7-c%*8r{f$EzaLVs;)Vz2 z8(g3;j(-bP60btCrN^2kBp$cgGG6;Nexa_2at-l&{YOxQ&rO8>;FwS;Eh;`Bn4EQ( z3h6OBc0S)IQ7$VaB*Y8l3fTUZY-2M>%Z5G*2G7i#R$X}U!peShZYLHgBBM>+Z1W4F z$~suaSl5A+4FG_ud|Y=>mRPr%XE80JsK`AtOmmVr8Oxee2A3De zhk7JVrF@4{1NNhmr*7W%D?2j1g)@$*Qx6TPLB)aI{WRcN$2Mqov09-1R(&b_^C znM&zaQ%UE0W7kN_g$Amsxm{I5dOB{~yqA~@SKkDeJYCwfhtG~J^TN_7OU8wcj-lze z=;k#t-C@>>Qg)2LlE|$Z?wUOU9j}*>A6G6ZROOCG8QO9|Rhl5~N#-g9i+bH4z28-B93v zl!%R;&OBa_qRMXXahjK7-P6pV z$NBzwiLE+t<=0AAL>u6F=k9n`Nod%CByYVbo3MA!p1Xund$i-*{8yg|2H`0;Kw&%| zs~}AwEYb6m2?q|m$u+G%l&*12Dx(cV^-;pVRL1hIA?7|XU)6p49hjbG;Wc0p`YTA( zp*M-Kt2&7F>=ecTXl$(EjD3l<@DNjnnn)`vAGIlMi@~7FXY}SO4C6 z!8C9zEdawZ;D7Tl9D_&{U%(qky(2p!D#~voX?bQx(53}ZsNrwkEL$)k^LkQI6nC|+ zMg`b+J*Z}rm8m;`t!Y@qZiaJ4wgCMZc0BcF^S=FSdpJh8s)OQ!FZ1`&8&46>B|x}P zWN>b0Wo<;<#F-n+-{Mg8*Kb(5Xl8a=y;Zok_t|!8zLUOjx=UX7v?bk-jN~7n*Aj+( zbx&zPQ`3hsX~l`=@7Lb<^wi9<*-hn))7R)}Y9n1Ip)NuTFa}C3JAmL{avdx&j6Jbb zVqag~hcGUa_m6)%PLw);^td6ufcJ?A(#OZ{5Ech{j!)40Ri(7T89Dbafof$JIJ|1i z+JT2AQQAjPKg!+o9z>rAOI#PhwQvtvE&W)j7jlmKbbs%UJGYmI#>N7CPG5&&`z%1p z(?P411e|KEYjB*RA4WrX%5Q3B9K-{SL8!0d)|%~)FBj1y8c-h!BXG0;Nb6%`cjsMR zU?N=dutk&6J;j_x3hZqIR$^SkgNDL$iinu%oD#sH^E#`%j_T&QbLwKwGX%|mv-ii3 zRAMIsTGKruBHqI-5x(P1MHOx>HM4`^13l<=bq>0TvZZa}K! zghS4(p|7DkR`^;35d*zwPK$P3u-jY-?T*Q;U}8#fF*7CeVm6ZK_c$EI9z{8HgZ?>6 zanHOazqMe%ge%SqR?VkZl%`jg_9MGq(DEb+vW{3$wr&GaoEpg}%Dn-zHVh;?FdQOG zrP$=*-g1Uev)4X881;w{d-xs^7&YrPr367d-c&F!G|Uglkb`lSQ_A0>{3tJHO_oe) zMC`$5h9w>qLJ|xg9cqU49=L5=Bx=VgMg8_=?2ZTG7Tu5y%ta;JsA(#@1U=Tt>OdR9 zP6q6y5_~V{Cdv!Xm(dTE9?i+k#bI}+)J+4$LeDVz#}9$L%bnD?dcz+O#gBv(DvU%J z`_byQK*U0v^!@csaP~#On{Re6*2mqH5})!#5ti06K*Hf>-%WQcEWys!@wT|cg9i_C ztUud8ef9{YVqvD`FfyQqR@QTm)(}qzOfn=#En9tXy1>j>S9AY$XJN~ar;1L{o2o4K z;J`Y4+D9zz2sR9m+C@GR78OMz$iCVPEeE!}Ujr{QZh4u+L;q~UF1&59iOa=6*moIj4^5t%#Aq$ zIRp)1)bOYfKs;6%emZD@X0#7>FqpTg$;ruwlO2DKOBmdBH)YJ!d^mAWU4LpIRhQ*t zcM$d$fd>empJzrA!$U|X-otL*%lm92@A0_UV8LyGl`*(5p77jrG!PG$?O?;Mn4eL= zkL2<#8%~Z>>RuY~nArEZ^x>0hs};BQvWUHi^P_K^{_=7I3WjG!204yjJW3(CW=ghm z-w$)^`}cMj%$9dBGBa1>P(xCajBX*d^trb(y1I{&4p!M6U!D#cr?j%0lE@jX9quf4 z;DPz>4H1*G@-q`LObpj!S>#PuvsP~}&mRM``UY7dv!jB2p(iHQB(Hngo}HXR^aUSg z_391-W{KBVYIy9NHY28ka(E4(w<2M4ZLFHFZfhfg^hZlXe{MAH61>Cfe#DZw>Py z@r%Q0%`L3i)_NN;nG>*-QKkHi@lW9sD+!T1pg(~Y3%e!6vDNv$E3irXx?SR~cL1C~ zE}M3(#AD5nTUV&jz+)F^lWqLi^?{%yU=wQ_FtgJA228M;@DN~Y{KQ{ImwNnCy^W@y zE{4WA_Taw?w6_8~=(M=cJs8T4z@U0r5SBNqtT#Nt+2B!M!L50j$ zivAzk-aDM@zJDLr(54|#RzpULhO()wkP)&+$V&E>(IO!tvy7}LE0i6{j50&nTPSfYB3d zc_^e{n;FEw#J-@&iy;MAQVZPrwT0{%z39!=3oh8G46or%`F7Dd@>NeWlz_z-QP z4J(pRK6`rDy0Hhk5qV%C%F;~IOAqlI16w1^zz#Tjxvk-CMRy=>K6B{^ zhm})^K@`o1dH)gxkE80e6bfE~o5Isv=yC_ngtr0(2ZF55+c=>EYAgZkVcZa3gv%5({j%aC_PHP_@|d)&5g#7ox}hLttys*TKriX? zlRo72HFHE+N$x}t#$n!gvGn@X{`KfPfwNVXkl>+`}v!tp7ZdX z8;^@B!4TiGX@d(#U=lUgqJbD zE{3p#Y;4z$#B0JEH!d~Ah)Q)jXHuX35MzHrOaT5BGk$^Tp>J;u9;+uJO$$bVGUXV|dg^KqP(gEQKW@CeGAH(6eX#$3F9NmR*qUr?A=@-ox+(AQV0&yrFoe7XM0 zDCiZ-JA=@~la)1Da;#TR2EBSk8OWnXbM734di>?|h+1~HF)i;XU9kHgknV`nQOZ&q@@;85-pcWx5-yrmD{?x)Dw<$@)Fvds*z2Ow3 zKN$VFel6*mk%HB`=Yh#5ZEyL?Po73ft90yjq4IB>o8B{RN;$eyROUk1^V@QU3dJX1 zJW@UM<;3gyo5rUV246}vPQ3Iwu+y7%ti668U5b83-g;+~Jj;&N5>loq(SP7a8}D_O zowgmJ675t;;FsI7#X`TkWrp}mxshB1k$`e*a4$n>z5V)0zO-PG7sOvQBjW;@)iH5R zEbjyVp4aWow$-eV z4hA>a8PFF!03U`~HZt%gp{qw{qxf3h9S!_j7`H@NBh3$l+jDR>A{?xcLjlu($PjNW zYAc?lhmd~Dm7sBf#X1Or*G-HSjo#;RaNTioIxtFh+p>j&rGwvOh0C<{Ay9sd zvpzwj0rU+vmi0sOTp#gmee?5|&ov!kq2-8?Wl4O3A%KoqYJLxqE<@mhP z$Yr70#Ek)<;QER+$OALMs&J=5q#b7dR$xp~C2D^54+{gj3$9Q&Q1d;94iP?qa7H9S z3i}m7xF#Pza%2N!vN&*$H|Y@1aT8&50?7UhCOQ}ts6eQOIqStS5;PTpoTjaT5WQjm z0vE9X%mo@2@hiQ;zb4EgfrVvYo)yfYt);=vcERWKwYw1MdICut;1dKd3%sjbtAQO! zN-4T8ua(p2ufI{$0nZPR9%1by7cWVP1ttogBSk@I*U`lj zxlDMkHU{^-bz{Q?mO|mXh1nts{(3|;0e^a_*NE&IBe+n&HxrEBBfMPi-Dm45W`=nX zPlp08LBS5}Xu`O!Sx`7{#JfmPXm9{@Wg?9e>?IP;+~Oc;B#1+CO{{yt zYk@uJmcqh9(kdeC5#AOP?IX2cz7SL?0`ltVAv{RH`)4|KY|}+GgLpX>n-Lh<1gwqY zw8LKml<@riT?PGx6r_&c$$G}eF}sFZ7Lt|~=M0>DkQe$!MMc>pWAiL-$p8zr7~^-$ z=sF#T=s=N>|K$|IHM>wZ2iR2#>f-1P2!|LCuh`>N{4@=1MLP8xC#N{%cfgI zIR&4&n*bO<=D(ichsyLcy1!oh+8L&iV55PEXo=`FoDDzV#STLn(&n_LTSUwgwiirt zz@Q-f)A;OuA)5>tZ5JW7C#Jzr=O6*(e8z8cSZe_@vc@-odzJ)tjq2MQ8@S9n`-zEp z6$vzIU;rA|$B?2>AoycYvT@2%sdwREKaN-0`^JTr81x1)Lxpp^0d9B)Hr~ zXZ?=|z@-ctr+!=q@-(m^OaOUI>_>uZ%l+Q8T7YoN7{WsKKlqGwzt>Q3zUapnoQq;p)2k_*f^*w7|NBTHy}Z(%s!zYshm7|)Nmn2)eyQpG?O)n5X70UU^$ zhN{;ciEus~b_DwlG{I-Gt`LKu9W|P$j(a=Xm215oBaEE-Z&p}?cL6#~P!S&B zhz$q|Dg)pKkCt!4yHIU^#bPe1OxO1u+Qfd97sL5ZnmNr++cmD_1@X3?zIx@wN#D9+nF3zH3A} zF61TPRUmzEGuSFvNqTQn*O!adOORvU^)ml3xbF@Ci^00PsjpA0d2es2d-}04F|h0$ zOiC-n#RPcG9!^W2(eZJ+EOD~3vVvK(B}h^ftIh#Hxqe&JX`PK&b!Cl>&oERb@>#(O zm37}iNjQaoN=e#{xjcdHIZoXKx)*oQTF*>r=7&)wy)gQCO!7S?<8_HCvznR}m@^W@ zdHgqEM@;gSWcN3Td(7CtCJJNl+dnc$@8Zos=v2m*R-j9Oxu<*>qL_{!C&j&cLMfTW zq^)s3lYNv}QWJ2Z@ky8w4u265c#_Uz=(8SaxHkB{18i6Prjn-k_TJD5k9@gGxU^t5 z1FwV;8yQhANiyiQHc~Brn%Pb|%>L-ehgm|$^$);}GE^@{)_+`~>KxPYl#9kMak4b5 zgI@qsYGKIZRmZP>s}@76jNoU`*{HZnHoXNU6KB@-II5J{Cdgm5_p>K}(Yx7-V+?c$ zqNM^OuL=*DTEK}Dqnrew-gr6^o1Ved5;pafaPA`v%GTGGISBqVdT~q>U)MPWD`A0u zha}{llrzZ*#YB>RGXx1q9X@~le3z3GF4^0+Z~tsbV*o=BjWH!BwzoqNhiK(MBgL-8 z*9G&GJ^F?eoEDL`{nXwNH;4Q?qnZn-@CRW{zvO)v!ki(T8 z1UIh(-^)QF`;1o#LSaKXTz?=MB^V9xa6~@IXUOvP+uRx+T^b9BFNlH}cKp^;z(cqR zaBr%s#T?83iP}<1t(fo}wJ!b-;g?ieDgyWxUjX z03If^{e;K3adYy)r};J$KwX?CinoGN2{4r4BY|sn;$38X7^;VT3=Dqoa{+IU;8EjM z_x=7&)^GO>u424W8?ZIO*huZ=$j3%_L{#Hi z&qbCAWCk~ZZG*o~majSgbL!woteGh zJ^_D*jSWE(!c|2{MHS-A_i!XLnnf_6F%z{faZ=%!#r)@hF^Mudb$L10;p(6QA_^X_ zbMM~0{<3qWn1`pP6C@+drXQj*6U?^19o6LK=wGc}X}*kU9v85C|4qbyFV5tn z*8?aldaHI%`P}v;8!j7xLk;TMG$^4k4U!#FfuzIcf<4>Gfm~Tu_Wtwijwn>2{(0u_ ze@RA${BQiOz7d3H0AXUtv#$Q|B!;AA&yJ~RUNFrOY>Si^H5;Hc2hN@Z=AG92NMgRwkazI+>jVnm6Chy?=5 zLk8?w9va-2fsv!M)In(gqEI7D zA7fkH!cGUG>_1WKBB}$$Q!lPo{3-;!2rZcyLO<(Z zz)M0?L$Jsgy>Scu*>3Rj{dK`0uY)jY6OPjF47yF;dB85j7wFCu430hS`B>@f@ zPQinfA6WhGjK`kFxcEPLa{isOC*Gi9sIS0+e~U2n>gt`9ble!}cd*cSjU3|z{Tmwc<4!fQ`Xh!E5vLBd+qBw)NtUV>tf@bV<;7a^kEYESm`5 zsMc0Vz6qoEYOtF>s_FR`i>7{k{BKY8@W9to5zX~=ztLQ%qT}+CdJ8R6RZHIPUTjfGjPvFNqxm+5(hOrY73S| zlF*4iL$LxQ0bT4_L&aqd3Xds?8rgx|G?tUN+zgR$ibWu}*iV5GQ7P8aA`CTotopYR z`Yy-aH=+F?%oH(K9n8=DT#b%_FwR8z?}K{9P`nvDMS{eR0}}SD_)f;GvyHR=od@?{ zS#)k@h5wCo7wAeK$8zCNhByQG7EDMz1!b@v=qm(6rWVa>#x!2N$Mj}?;SR*8tSR>r zhnI_^Bk!7rl|Hr#8Q6gDeX^WJWyBzP`lN@Qj-u)~2@G)VDvi+oQ zcAUtt3QYW>c(a46xcsW9S}<#9sBY?6(IigM=<_8a`j_mo+$D8%Uvr*MdHJQj6|KYf z6O?aGoJfiBl6;-$l;@amH!#pGj-k=T$?nR3Bf&+|z$}E6s0>im64uU@5nrP~8V3XS z6j0JrI%K5qY&t3^NDpBYDAKBN(mGmpgwOyt6qxkKQzT!*HvBdU77vxdP)rw>oCK}@&W!t=P55gV1rh`26_JPV}rD>E!|`4 zk}j0tCL~C0V+0ixjb9Y>GZt$rj_=e?q1e#FN7kKS+7oyTfRze597qCnCtf{*(G{jv z4+4~gP?VpzY9I&!u=PfFp$;e`5`2db3&5Fd< zOFv>5mjjulSV(gNy```I8@8!`ao4|@|G)H^XgC?In3O5^+AHfdtg`-=cd|qzHj%F1 zaB__QR{Jq%t!3Na@>qPM?lQTNt$zh#{)J&yivH(!{0B#m-w@ymgpE-l?+(QuV2E;p z%IOsWk$Pezq*@(?9evKcv!!7OpA|kS?)$!7k!xn%v?<5XZKqk!r?P^jTWq&YlL!Uk zz_a;bio5S^MTgVW&bJtvWuAPBUI@ImiCNQ&O>cY)rm6@E@tpHObMhjkP*J&Jss`~t z;k>qL0h+m1K{#ppy1O5ynQy{YOtdz;eVeu;?}K}+9zd801Nd2h;z+GobR<_TrTKB& zvm%(_335<<*ds!#MeDJ&QSaB&>CAAARE~gWJ2%&EG9TxywVBSx*chrGar}G?lN<8w zwK22$Zv9$aZi!WPahiVy2A4-LtvJrfsmMF$wm!cB#HQKgk?mgIXWwoRKS=#ifDhi1 zP+x`#y1+ghDcoI_^JZu5$C<2Go!WPPOC`t{m!t1$yQ)fD{X&YW{_>T|!{B{L=-d7B zByv6pV<0wVU6n#-R3!Ja)9XZ@g;<2K@oa zXsT)X9X#P986Yn!R}L^G2R4m$@lu9p6XLRckS_+o4$4?4Hr6)2XX61&Zeq4&8a2RP zl%l&ZVlgvI4Mz;=iF2l{HsCZ#hOkGZXJ;n>)>KRzBmelnk=Ej;V`KHUk-O3W)GH{s z)sU)5^zlA$`B{7xs;Z*0=U^@c=-_Hu&MDj-bM3^3uAC+H`1?bfbcGhaISC^eQI+re zR#p!6ba$7=NkoB>BU|Ac0fu*sdDle@Xe9>vdQiPuwto{Z z5=8ulbmO%ZQX+7d4YRR+@X6e_qo;_09DjFt1jf zBjh)FatD$}W(n8SmX}8Jr|VZMA=3{esx_FsUEf8!K(6g35Mt8On`1vt4@=?Ae?eEJ z002ILj0!sgdmq|G!J*oy5YxUdVVS6ZtydPV?c3Ljf{dc+4Nr8_t>G39YKX4bwS5hS zYOc7hIkNiu^N}?x10F}9UquApWW&`3JmKSuV2^&!G~^;Oz|g3H<1dkMgoPzEyK|)G zcN-U?OSp?xvy_zFgq?5|5FOs+gwFGC@FaP$ZPzZ&DnXY#*Xgg$n971WDg{Er{Rdsm zqZRj8BA!2&ym+z8`K@d>mcY;drVn9laGV7g1@xSQ7#?(VJn1PBj(;KN0va&J02_iN%Mh*d zAU>Wjd<}3e_3R1NUV9Y>AI?BCi&@V_l$x00HslP|A+`_+!4QiC!Mt) zyFHwP4@43x=HiLb2sn|T?}SJ2Sw}U5{WqG`6*_xhO`!EAAR#*U4p&%pNG#&BPl9lK z=8Y?lqt>UAmbwgmDVR%neU>Wo^AsMAKFrs@a*~mLLQhA;@IpZjJW#gtj`=nMhyo~ll#R_Bud)%`E4a{n!t{}- zm&ph}r?iFT>}aJ^49?CY{!gD)Vk~t$H$szg*iA}mCmjtmj40*<+8Y~%mE3p;P*^3K zedFEtCdY_fG{P^Oci^F*kf8J*V8@LS8wd?-AV=Ucm2B^{unSUftg8>J}cbK1rG92-E=x%8k@G^r`$_K#X#?ZbbQ znw)zF`ua-deyhjV5)V@+j4fAXWg-Z3x;R$LqF*q@xT-nNUlhQY(_ zfzuOlDbM}l*+pH)fGHXL0E}lSmcM`JMi%79u@3)lNg?^pxmq8V8X8o1Xx0|R=RMBz zEHd!(CzC}Ejg08Z)uM3(Z}KMLDnDLit`EtNSOoJU`LOjLrk7j^=v^iZT^G@7B9YGl z<06}zYAFZ)oIy|Bj3=ir_xn{w86p~k;6V|FL2zXkTx?vb98kZM*PJq1f=j?*_Ik(s zJVwD~^ABED26`XlMsh8zy$?Ovf^mSDn8(azGmzw(Q@n|QQ7|j<0zTJ7sy*O!*0J3=cQpo00iJ`RMs_>|3*>r)KVXqN;ynKvH+s6^)==s ze0B+YPOrG^i*jJ80mCh=sks;Brd5SPCq2{psa{`n$n{6lJ-8o3EPc~p@Xr8a&m{)m%9WbXi8(g zhlF6fiIK+s@Q4nS@$One8v(+o4hkQldC#IbL3^0hcJTet1jj%`uOb!PMI?sgRs8)Jm1mUpgb{dY-4#iK*#`MrtP z_m0OnWv*y?}6;u@9fTq zJ4+L*|KI|ARfibZGbzbr`z=P6(ZA(oRixSGU4u`!c64%f*9zHFR{KUDuYdK@Vb7vM zUj0x~Teh{mr;Vj$4fCCAg75y&hAuCi++u#;@b4~Kj@`o2@(9yl*;=`w#5-0NdXcq2 zvxjM$2Oe9cKYskr27OP#uK&=p$^Bdvk$f0pus#0qWyiVA8)F%Sy8;iON0n z9$~5kEaML|=>C6_jxPPzCZ2^7(nZX0UvJb0I)|3?vs10DwRK-_+5PN2T#OXkBDp-K za^hH|TP|8I3}Ms<)-aD)$o%{~^NAB9xg&DaBEHnG;#L(7bY|Td-U@!}A#3YtXE)G) z&P$TlfyPT0_Ta$-85)#bFj78NbFbeoTC+RdKcGpf&xJEl@VDGbFN|x!}Om#?;5$#*8YHwdlHP#hEUA@LaqK!_3S39Dp!tXm>CMLABcg=M#?7EW_gRau2|s z9;gvv82%CSQAAavM>{9>xtO~R(tLY7B=k`1ipw{+FO-LCAJ}8*aHewD5iZ}TH_-3O zg0vF@+6gfwUjg9EJNt7w_HYR16$8tc8DO;!lExMygyG+bEIiZfFCasV2DpL&Y$KK{ z?$IaBJs>%ObM^q1Dhj-In2{6LC~S=|XQ--?}T;pSunD7L9W4oQ~@GCgra@LMW_A7mP?FF*fQvu zkj~o5B8I}lv@{qJ!z$Nb5a>Aybz(Px-+nXV3o0o`X#Ufw3b70t2Ty7$gzIco05_6iI9rRJ$?>Gfmm@hufFcqd$3NxMH17{pasPk zsq~1CvZIb4CtQpmKL7)=A6p*j!YxD^+y5lmEY5uW{5cwvO`>_nFbwm!gWMJ`8PjkC z0%K>w$n?2{!^%QBqY${xIHCGL+JUQuL`Jn7?Jn5mbP`5M*hPQXF9Nw9l1XFbKVNaA zmRD`S;eiNqDonYyS{Yu!uc3TnJuEo59Ev7MjPY!I83dg}!J!+-7u#{U#?__e;w9>; z)uFw2TrM1H6Yn3uPlCCXdYVR;eE^bYP%SsziLCT*2s(z3>i<5C|61x63xZ{XT@Sc# zzoek^f<<$hb}b+dW3&_~(pyxO&V!jm&LDUd8HNO}4BM6)3FwaBi-6X)mWk9_@aZ+L&4A*|@Zak&8s0|7VmSMEJ}?3it#oX@PDV|hnM1d1{s zKnD)nUxYg!LGt*7sT2{ZgiDNYZGLl|4dl!zvKkm+Ny8lm8{rZ%MFA^mxvkp%$il~{ z!pHdW&X^+Y!`yS<+ZgPj&F$^(Cb&*<36p5sAqbxac@`}NLGywh>n6%cv0*-FEwG;u zGt+~OegpiFi(?IaxM48;7KQ2!b1T@1_BSqK-4f<1AisfLahi*(MRfxa>H|MG=*jR9 z^o)%^1KT_f?r@PGU{cKL-e-g?p87+>L=DcA0Wp>S)% z1KT!V4!!iWs{EQeiIVAi%Iv$rIw`hIQB6u0MMsx%<=T^MqZNzyil@Zf4bs-%?iG7= zYunSOoA*^7why|zLM?`O(A_Vj7-dSX#E>5jDqxJac$(>=s~ z^&HGk3JMB5XQ!v933;N2&O@PUgsA3sA+q$jbq&uWof3~G)=_-Sg>fLkii(PVOsrO1 zg|LM5z+)m@5t$<$?jyG3VQ&i0>+65w6~7UdWANwmD_WaPvl(rEQq7+46B84|YY9jH z2ApBM!qZ6wbFC)8dIFG)Kp2f66$_ZGY)%2r(4L|@A37~Q9A0wteBU9`H-B80=+qj7p_%08|3eQ zZQO2@B5keSb?XSlXsfx8wYI`n-ty%L^g5ags@W%iPR}+U?<|rS7#Oh4YI@3BdA@vYfxs4x(FJeODF6h!S#&<-);igy2MMIu;_A#iFoAD zCe1k3=ga4dc(^2ay%(|=a z>S+$+Wb=1>=DIQ|4qCU0`BkeYr7ar7>(bqq1Ji?RDk_!kR9fF(PI-Cl=yd3NGQqV8 z@Sp(#n!|0IRWJVRslu;1JzumQfgOgrpz`x)9cXcl!I;5S^XVdF7tHo0yRK0uVLR|ivaMW&V7%wS5MT}NXLw3+gQ<)`-${wAesxW zM;9xr9TguzS=MkI2)ek^$MPmVApxKSb!txU4%9nz^m&}PcwjYz%mb$48&9F_65(%C z9LVYOEg7Bl5a%Tvi~NMvxT9Cu!4@Or<#06Ok5+lK>)>S^(8No`f>jAF!<3q!Cs26J zr&rL&CMJ3!E_R~(!EWe*91e4)*Ac1!&D{G+tjFmo!<;=tsB^akp$y-z-g_=>v>9ci|sc+xgHYlTsaRrRUt)3_S}z7t)5 zBmO7{BSm$aUyn-<{4QWp(<;Lk7L!t049AC9ecH~9NLD{jE97WPKg0XL0Gb7uH_wVQ zcnCdCpg6jN`uwO`x2Y&vS94j~ajb8(hVsCHsRk(y(d6kQ?Nxv`N)O#+`nAke4}c)= zhEEkY9jLR-NNS7bg}3{tauHF9(ODuG+V4?J2?vWtclN|2poFfqP5eFZQL#& zr&rI1`OagoI>+*j#BbhmFt&Xk&LgmgOORhG25mO6Q?N_=ut}v8`L#MeXmJ1}-M)^x zvUtF%9(1OMS^vIo{jY?B0d)hPggDvp*BR);EL{5N#P<#dNU;-1YI{HX>QED2r9`iS z&dCz@!t|GOwci|%KhUAZKzHJ2tY1Jx#8)u>d2k=@Yc&Vfh%%=a_fa1%hsXH^siXKh z!ayBwSIWSENmRMVgWL)hR@jU=QmUBwO=WoMD zObx0r-nm!DRZSQV;s)p$I;{N7Jco5Rt4a`A=Jdra~l zmy=lx1SwCoTh|gyZP&TXC?eGp)l3N_vugi(=Z(0+K$p{uh_>A0M0yp%K)5Hg!;OM} zzTFzP0pmy(JxsSF-PRms_$Ni+&P9KQ#w>Y>OR>PD=yi=t!77HU&5KqB1g{3iM2}X2 z$k;42YX%?hZa|~Ryb`8yjI8m`F3%B^h=0@a;`AlMk0ejNTqTQ=Wlm8kxpHRPcV3U` z!*5$Iy{Uf5-@W+}MRt$KungzGCmn}vTLe4?Cq`rpz08snL#pd#T71Yo8hEMmnvG{4 z8~S#sXYj4a_qKM8(0CMsWVP6IP|q@7V5=MB!#$Thw_w`574O-TcbC*VnaLUx;o3W} zyM%~<$m~4BY`bTxIl_eyHtYv%fj4@fmUr|dp1Wn8LSyxLtA)i?K|xhc41O-x3abYr z=+9MjsAf1vgWX0`yv3GNTDXzZMj*qlit_=o9?v+)tv=RmI<2nRV(g|UF0){D%~wCE zBlwk-s2&Mzu6QnBN+K+fL?HMm%a_YqGF#3grrFBcL*z>MpnL^Yc zts)y+dYR7{lW{cu`6+uY)6zd`*hHnwc11w#(ne-Hf8uvN;-S+$%cRrxSYJIW1y}E> zIf3_NO$Huv&kaaQo>HxD$JbomRv#Q{aJbh{optHvER+3^j0U@5gevo~;P<8*?~#Be z`Td&KfzH-98Z~uhT+awW)FH7qd5Jx1(%>-KQ!-}s$UB+k^cKx?YaE!#4BTY z4UKQ@I-EPhN=5MVJax)_+H#=4jSV)`pVdeGM8-~$PIu?mMPviM7$om|+Usfmo6{rM zDqLhbjA!~1_KW{St(EMp0;_9$Dw`W~zuleeU>A?>*byYa^UiP= zE{%*ntfJ^}HG$y#1p9}Xv$%r4e7yHy@vC`_!C1RvqS|i%`O*1ICeynYX6HmTAN7S6 z%{I4%J6m0#_Y^+r`-SGwbL@F01L=+EX;&)^^Z#G5_u^q>{GHa*xg%?1ms&OH0|L!mNK zz#V{H?xg`LEr$)bVv!olH93-G?Jy9;)8ocT!79sGh&o%i(VCmKXKDP0!WFYIJKP)G z;|0@q7v{YjMmK>BxX~>Cw;jDhw;&F>V}z$L8V$)re*fRuOqm7(UwjT`L)yq#xMD>K zCCI>MW`?0^4rS}LMJjn!)v$@ItBtomT@khB{${<@Ae9NMVExm#*KRrh5@D0S7v`@% zba%*Ii-bm;pdUhT^p5Hs0)Mn1_lpm&uZ}1+C01Zf?vf~*uPbq z9$)S85nvuN74xGP#jseX%}^@K;43eD{Ppzy1BP|;WX z+m0&{O2^wvGoNEnMa&F8!;jnn@5k*S%=@%W4iEKAB)%y^*;jnu9oD_>zkc~&)SdTI z8Qp{{<^%rgK#68fu-kL`Jb*yfVr`lhy>1joTjP{PJg!^*_r*HT`VE6)8S1LUiJ4mN#rL zR=6BFQ47L=kjoNmj9bQb(K*p3DZ5eHF2jZQYS=w(0!dC;2Lt;0C*A)(VDv z`9i;o!F3}Rj9Jb}wj_>ohJuy&zBQ8->*1qm>*wxWoaJnrrSo2b<2sDU#(#D!8{rf# zJKv)5Vq%TKW#&w|&mt+XJMTng;Tq#)7m>c{MO2FUp*+*BMEZl8+93?~4Lb{3zQ0ep z3&w<~z!sE?w6Baa5H~~uVP!Gc)ZBxiu6v_q@mf%z-m5&~l|Di?nHFI*>oVKa0+XrB z4!K8!JuvEt?}_r`8B~F=Qek{D(QCY9_t3MTCa#qPsgTr_UaEwqd>JJrZQK>4C?jQt zY7XMQW5Xg1cN{eT+0OF-GiAAJ=|Tn0$)oS0+q~>Gn+n9}-Bz|E`N-QNsyE#a}~nZQ~fEK8j(tt`(Rk4!Lq)fe`3TICEBN_{Lu; zrwP*HDQY+k?{}Skq0OujdBxfEUihQ(d2IAB?#b+H)qNdox6;Pvm(e+$A|)k-1Rj_6 z(iyP1oCUQn50E`cJASA8Uf9ZS^V)8!+|cu*I>ewi&DE9(xp!QC{8KDk?G^%P_P4Uc zJD@uuQW1D~%%N*t^5jiZndFIb$qEIEb#_d!XmL;-)-=`V(Pdm++0m2HYvvn#%Xf+2 zAEI&AAG7l5)p;6~9E%NLNAE-NQJQg*z0lz(x+!w>f!%&?1s+g#o{M&JoBLsi5fyp} zt-+bbB$^r?o^kjfI%5PGjDH&dclzCj&1m~7w7*C&N0ernzHo#iX6{_;`eUO~x5=^) z6n&Qga9=`6<0mlZ@I~+13)8l%p%&YL2;ThNx(*)R?yF(@Zk=S#SZ_)y>V+<*2X#(A z(4O5bZ1vX9D+NcUXIr`mYhm`B!&ZrQ^78xiDk95z%hsu8sZr<1aQAFRRYm?V;63&` z8mE|M!ynh?8B#hYQzKMn=^*tX28dav=zh0v-k7X5OG*OA@7RKZaL5VE_}LAk1cGrS z!>Nb~)JcyoU(BGjWF48pW82_Owf+Lg_gTZ5B)nUF{;A57$U47@CN8bu>{d^ghzmCA zkHe>*w^SYv(f9%@+I=z)r5hQUhv={rskI7Ur}lZYD~xyxM5J#3~0D6jt_Sg zxmiDIJi$Nl@ha0*YH?@>M@|)uykT>k{_2PWQ;6sHJ8cV`_=uERdRV;y(~qjD0V%XD zLk_>vnHQ$2o3@8kc&DX2ovzFI+qkqmPGXkJtha-0L|ur3gCTxD7Q@XluXqfv-Oy8n z!=8;Zddj1;C4h4O{->Z_p+Nxmu1|Y?=`Nb#iLre1Oy@-_XF&$?M?~%R6f+BJ_4R3? zmR`I3dd^d0u5{!NR+rgS^X*REyLcCkQ9XKlrw~nm#xxgh_jle|r}C>1#>_fr@Octu zEc3*)n3bJ=V{1Yy7J|x}v*IvNmKO8j=7~WAOG9h|TqfbL zYj&Rgnr+#)FxR$DoYOuBxd5hB*3f?zrP3@NO;cvx+@fK9p8V0KMB3`X48?wIY&<2nH;`y-`o-1x}2t#WwMEzNbhkR8{=|F}psHeQ@H# zwb!OXY<@p4CfGgDU*PvUI4xRso;5zF*DHzoOz%y!@4K&sytwe2!{*m_|K#M(n}&Y< zxEOR`!Hj#!8j9D+uJtvle_MK2(2fCj-8DY?Om%=rixn~vITJCHx7(HkfUBvZouB;L z(v|huu-7+qGduMz2)V~mx0WWW?nZH*@(DY?;t@m5P&v)|KHIQ!wfql&=2?C@Qvu_M zC&U>(v9`P}nL~S7xP`!a9&YbD$TfC!@XMn3<$=egEeB8#IzzE}jE^tBbL%=quJX6+ z!j{nu-5xZl3HWmY{xV7X-~rMalVYTi^C?YW%?>|*5V5~~KIaHYFK{&!ElLi#pFSN0 z&Y@?+(myyBhr?x-JXhxCI*zz)>m8%B4@W7bzWzDM2srq} zi8%!&C9Q}~$EUo#zkPe> zdF0LY)>Z+)7C$+C{}JW%Y|Bu?dlO|ZucI^v+}$U; z&T$&n+=hkFZa;qcZ1MBY9W46?21NN^z~G%c&+hB4b&bqx8MdQY7QM8iD&IQSfiND6 zRCpawxuz%4A5Q;E5Ud$70C}(&oIfgvb6se9$Zh}Fte4#`*R|;=1vRxQ%mw$2g(1-Z zwBgi(l_@qzMQ2}%QIzJ}^)}gK;7UL~NR>N%OL6XAR7g6ou26yd=Ury%D+*>Bs^P_} z_F&%w6~6n3$yHGt11)u`ZKD&rw>_`QMSCbH{Tmf>BT|4OHM=MW9efBYQDMl zhkln#>IW&ft1}i#7*dh4&4Hw+jeo(MnbLH_R~vUR_`T6nn62i4Hz8nQ3=^sem!=l2 zJEw4Qo<(+*+r^)`3E7=hN09yiKBAVRJ~{j}b_mf>rWGV7hZ{z%5@yN?ad8jlJC~VJ z>+lYRpSut}@vn9)}#@SwM3Pla4X-UPhyv2x$RE2m!z>35*Lzr*moM{mClS z{pX?QCSvUf|E4o~VsMI3#bG;$giS+Cwohv0?1@SXz{PO5K*q_5`GUFc`rAcJ-4_7u zl6@p_9AIlD`k2Jt1hqQ!70e<|u(E#cG50btcf;@k&J^A_Ny)3K+1{S?hK-^x>KomK z2_1(IkrumWaXZ5e;8Oc{A`fPvZ}(z_kk-Is=19q(DrH`1AfsU*JzXc9xoyh>=e0#i zoco$6(VQJtiBE$eqJoCT7o5fC%-Y>8{V?16((_FAa)kwk-ZQ`NaGo=0mvnR_buA*E z2?^u7_3stO)_6=S1#gxAo^{F{P36lO2v&Do{%y~4>eK*kdC)OG<0qbToQeyr_y~-( z-Lk}S>T|+Do(!kT)=GcoX~+{9W=b!is3MM`Tl=whi-(ek(~h{JaP@q}wt~Y6`z1l-#ky>PJ48 zU9GXnw?T@W_Vx(qR{02dE8qyia~EpwFI{VM8rF}RkG9))ZNkYBhMM@XvR0Td!G^3ZSnhwsrdM&m=#k;c>$in z_2&$&^_NpSNGhd^poH<Xppu&K6C3fmg-=zqvBaIu7Ar;ld1Ht5k?L$KhZN0ogV?oU@|71*opHM2?1U;aq5sNpYD@RtT-_mKB)2S!%+Iu|S1!!fF6Ix^pl{o;W?IQqlWi ze(j*yFXQKSH`epH=f2+~nxdYAv=l$wPCgEA^!OEP(7wkhl^7)GG$)J0)?jzh%0L(< zhEtI5_D(wJ(r?;!TuM|_)Q47e^>$sQ|1s7RCw3GGzKrhG zQp;S>a~z3PoOPmL`nikxrGMD#p6TH@N)u|P^RbY6R;*%2Irvc_<yR;%S}^5h;2r&XTmnbJy86m?m!+E< zY^U!DU!OhxICb=$d6z$h5=T|~?e}dBis>oIy%#^W8;+`l(d`OWuSzZ*p3zYg3_Nf# z^T9&O;m}L+8kedz9!Q;IQu_EQzD;G|Ks?=kdOvBcNZpbxW$NbFg(_l<$y|+}A6q*L zfK{ZV-LgVk6*ERz{z*pMW}>WR@LJq`1uZCCfC@d5X3CN&c09Y!(0~sh$%0 zB5lmu!vT*ooxw~C1_X`mI@^w@z4r22y{SJNE$$atuAv+33FnLA@^U0Y+4e>lAlI}%9#Xy+qggXsN#fa91`>B&D! z4jFz4Ef%GEG9>Hvyh=e<;Ie^%GEsxLHkxkUxFOPE<#7r1a8JE~Q+HrS9|r;Y6M*+Q z-{F==D567t^VwOnXwF|#QmSccS$PaW#4stDgVO*3%%xOvt}ErTePb(r*4zHN=f>LmkWSOhD&Q{$iH* zwfR(6W>L&l4}~3gxL|M#0j5oIsy0KB1WYokg!bC#(F&F0y8ETPyEOmxZ~wLZ}IIKoi2M3n^4H;+7OOBtuL$d9m3bH zwYiYG+sT=*UjNYfa69j&Ek-vDZY?uZ%c7j?^HW#JcHLB! zRnn*Bz9&65T&DHCY{~DrUMtZkGD%{DVXCbk??*;cxG5gzw7B&n>r(Ec6x{Lq+p^3{ zhEM-&KmJUDg4sVjpt)UVd;NXZ6IIm?Lml=%)a9?LsqFwQXUg;iehtgbJ2&5V_&{&B z63Di_UFTabMa~1dI+YB2jxN&$G+`dy(oj>uSNiAEBvgsRk#n+XgI2y6k>cDCnlo zO)k+*oEv-71fCkT6{u%l6!+%c;g>uI-e>%JOIZMxR)ee8kimS7b$> z{^x*Nc<0MUuD0zA3{kcKvG0P;Op3w_iEc?rN#s>9?<(mIx2`oD4IWQFd2VFt`K#E` z>tw2Y-!3R!f6}{2=poIQ+4BxZzP(Ku`;eG_)mAEJP3sU@qDz^HZPl&0ns4+YsvRF& zMgp5U?4R&TxWpH3Rn?Ymtg~JHIR3OiQXZ?7JK*~J?YB&f+GsxxC6#9E2;-VRzeL*+ z;#R=xxA&OLtxm&UwU-y3ebhIw)4Mrmq;yhSvPM1a-0h#;P7F^sTX2W>(C;KsXXT_E zd$5f|dDirD)A`rG^2oH>QqzOIZcj9?U5K&ckWOTdHFLfm)k1res^}iPfp2n1KFOm^ z%=)H0a_8-Akl~+~bS?gkK(__=nXe-i0f!ncq`l6`37w>1LXb<&R23UQx<(eZwwA!_ zMz(6M8gy~$1{Ej@>+B564IMd~=GFx^_W@&NztQO08!~Pa(FY=!xCu>~|w_!CeJQFg&CdhoJ z-;lYT*c7NEetrCB{DD_x%ob!-o&R5LSN_)Iv4tTj zVM|1o2m!1jvV=tn0RjkxfD0i&zyM(pp_rIJf$8K|_WfjKmke8qK@${4+K z{~gtl3tW>ty7^vZPcH(aH=B(9dbEf4}Ck4&~b0Rs3V zclPfdT>9$UJhXux+Vu<+30Y%&e7FlxA?FmA1Tb!4^Yhou5m&}zVD&U8@AMpFE&7L; zEa_fMkpJQ^=ROA@pEOYdTC0D4cDs1#-Sy`PzdQ}Aw2tYYL%^HH2PyOl|5`1|e{7nIO5LhA}t7w-T|LHU0p}m3ErU+Ofy(yHbuk_Ud z7NS+S1b->0+&@qoY{R?@$T0TfHkhrF%v9We`r!jPu+sMXnP3$FeK!l=IvJ=do+*8s5*|EqAGP$)2TB0wn}y+|4xChEq=AzP?;?AJpn_X^ z1Sz7%a!`^}Fy|qHx99_up{{h%MeYOuQ)com`#? z3=e>YvC?~Re&suCth88{bJ*`16J)SV!yZcAqP|@X9gJ@A4}#+Jwe0V9rzpiwxp#e9 zrfY|-+!LHS?CrGurRoXumzZgsgOC*SfR@hCZz5Ib!}2}!J$H^mk7|VP5R?Vg>h%!g zGI?*53IgXcc8mp+xpUOK@8rgKrBH>(QC8gR8)@}u^SDQ}k$i{k)T~{dwizol{f0rY zkhUg8jXQWJ*Vy$WB0yYmvW4=VUs)eQ-tRr=&pOBV9BR%jx(W9Cqs+`vrwwzM6T*8R zG8MeNN4pID*$!XxqVMiPsDpKffT{zKN)nr*i%g)6N$QRHB#H(SIZhd?>+%;FeeqEy z`2_NWnyZ*qhwm9Z6PjF1u_&EuKlAZcYE|uCYwY)K`lc{v2VoViKlYBCRJ>regkjAGHXAx5 zxAQgicRTP&6)sqH&nHXz1-uYVL1J}g{HRjYm?(Y+^7zO6X?oed<2co=af27$vLqJs z&yw?n#1O7!T@A>GRW>g?+l6izPJ`b_z z!aQ5q+WN<}+HAhz(BJg1wZr8##qGXDWp+`iM@ancfE2inY`eq>aiY5NrTclf%xzoY zSq=Q=%Qcx=MCSmJmgo5xnIE!)SR_*GTXepjsULps4cQtpi+*uUbh~NgpW!XK%D%AO zK&*_agC{HM>$rz(L`fDau3&nj!MI?BUg)u#@~TGr zCr&voE6CR2Kyh~KAs{<_cGE;1yTw#ZD z7{elJ9{;M**V5$@g)2LvKn#x}M1|@~Wn8xZy*t}feL^aS;clUk5$kLE$Q}zN`1|6! zb=HqL*uxuX(Rqe;I;@L2nWTzpip&k7Bfv$n-EmK%Lv_iza2dJCLt?1f8(0u;wuT_{ zobFg%4F*?uq`9;%oc>LagL=hTjMy<5X3J z69hC1uSO`iqsC%RsqU$?5hXpFXiv>F*{3{p1xD%eMeMyjyctdsf%Y>K20jpD8UQqnXF8o3w=1y?{uax z1|d;rkw(l0yDwihM7qyQd)lMPGFz1@x&A6e1?VR9`;>FvvPdO|7M_(5Ls3Y(yw+kE z8J5qSNO(&=6SIRFA!0W~^jBpVwGaY0dZY3C``q***Kxs0Mp*$9Nrm0*Y4A5MvN8id zec3K5CZ@{-Z^~juoi9|S)h4#erfei2B_fK>tI$&_QsOyw&7&lD5+UQm?h`Xsa?qiA zG$yg4EwE@$b9*YCVAgAt>WeVxA*ShJCJeajxA*BXht+J)TzgTY`6dDGPx!(2!7r0S zk_M75sl4RvXrBF%Hgma4CZUilws;=;u+k-!z1mLA%^WN*A29K5C~0kB|N8n?GYWa? zE+VCVUL)6$eDg|8^1+vxkg!gsiMb(CHQU~q^v6oNGs9v?>-4CzH|9y8b8redT`PRP z8M@S_2W78gp4fPfIT~;t%V7duNX*o<=;a+7pjz4?_t?;NND(Z(YL50<|gq&AW4p!i7K@5Wdh-tKAIQ9`-G zR`^B5pwsVF-HpqC8&h}_j#V>>6ls++v=DaTgH_oyJ$5C7_ZbAF;c5S0|9kZ?x1W`X z-{OlrSo5mO;$lVC4U(2RbK(q*?9jH3I7GGmFvG8vd| z08|IXv#KnVM=MRt*V-iNt1tv4!Y8}mTQ2W5<*M~icLo58W*mHw>KPH%+z$8 z+yKDg``PU50m*|2(J*EL-Jnk9@N%d7?B}}0v8D;`o%Ej8Lu{xa@{{5Yd(D=IRq#Cx zM<|DrY{64!eO{T!ojXkNN3)SS%;*4Tb8=oq>iE4BCF0hUwRc`DjuOpJEr?<{eezNV4?)>hV;N$Q55v4nb$%G%K8>9yt37!$c(T*v zeij}y?RC5ED6}ruDfM=7V-sG}NscdrVp9#)yR{S~(i_Sf8hK`!J za^j>WIO*aHz!z3b;>c?-Q4z5wGou3-uO%u0@D)$e?nox1q z1s+SC5U9_hQkGp>ec(wW@UrPSoFngFUHP{3D6?HY#*~bXf@aqF^QiN%ePKr6=T9Si zgDzj+LM}8?Sm$+%Pxc1d>$GYeo0C$Qgv)YRM+=Pm@_?F?*Icgd{a09C6+72?3)Ab% wHU76HWFd^xD0gQ$3dlRUWxW4`>=J3|^T08a;e(6J5(VJ%KJ4dp8y%JYUwg>roB#j- literal 0 HcmV?d00001 diff --git a/docs/index.md b/docs/index.md index 29fa4c72..998d7488 100644 --- a/docs/index.md +++ b/docs/index.md @@ -62,6 +62,7 @@ _Description of each widget._ * [Mini explorer](widgets_mini_explorer) * [Messages](widgets_messages) * [Options editor](widgets_options_editor) +* [Profile viewer](widgets_profile_viewer) * [Project groups](widgets_project_groups) * [Project inspector](widgets_project_inspector) * [Process input](widgets_process_input) diff --git a/docs/widgets_profile_viewer.md b/docs/widgets_profile_viewer.md new file mode 100644 index 00000000..c985f239 --- /dev/null +++ b/docs/widgets_profile_viewer.md @@ -0,0 +1,23 @@ +--- +title: Widgets - Profile viewer +--- + +{% include xstyle.css %} + +### Profile viewer + +#### Description + +The _profile viewer_ widget displays the results stored in the _trace.log_ file that a software compiled with DMD outputs when it's compiled with the `-profile` switch. + +![](img/profile_viewer.png) + +The pie displays the weight of a each function for a particular criterion. +This criterion can be selected in the combo box that's located in the toolbar. + +The list displays all the results, which can be inspected more accurately after sorting a column. + +#### Toolbar + +- : Propose to open the _trace.log_ from a dialog. +- : Reloads the current _trace.log_ or tries to load it from the current directory. diff --git a/lazproj/coedit.lpi b/lazproj/coedit.lpi index 19919569..e7e8d603 100644 --- a/lazproj/coedit.lpi +++ b/lazproj/coedit.lpi @@ -221,28 +221,31 @@ - + - + - + - + - + - + - + - + + + + @@ -536,12 +539,14 @@ + + - + - + diff --git a/lazproj/coedit.lpr b/lazproj/coedit.lpr index ce5ba4fb..63832dde 100644 --- a/lazproj/coedit.lpr +++ b/lazproj/coedit.lpr @@ -7,12 +7,13 @@ uses cthreads, {$ENDIF}{$ENDIF} Interfaces, Forms, lazcontrols, runtimetypeinfocontrols, anchordockpkg, - ce_sharedres, ce_observer, ce_libman, ce_symstring, ce_tools, ce_dcd, ce_main, - ce_writableComponent, ce_staticmacro, ce_inspectors, ce_editoroptions, - ce_dockoptions, ce_shortcutseditor, ce_mru, ce_processes, - ce_dialogs, ce_dubprojeditor, ce_controls, ce_dfmt, ce_lcldragdrop, - ce_stringrange, ce_dlangmaps, ce_projgroup, ce_projutils, ce_d2synpresets, - ce_dastworx, ce_dbgitf, ce_ddemangle, ce_dubproject, ce_halstead, ce_diff; + tachartlazaruspkg, ce_sharedres, ce_observer, ce_libman, ce_symstring, + ce_tools, ce_dcd, ce_main, ce_writableComponent, ce_staticmacro, + ce_inspectors, ce_editoroptions, ce_dockoptions, ce_shortcutseditor, ce_mru, + ce_processes, ce_dialogs, ce_dubprojeditor, ce_controls, ce_dfmt, + ce_lcldragdrop, ce_stringrange, ce_dlangmaps, ce_projgroup, ce_projutils, + ce_d2synpresets, ce_dastworx, ce_dbgitf, ce_ddemangle, ce_dubproject, + ce_halstead, ce_diff, ce_profileviewer; {$R *.res} diff --git a/src/ce_main.pas b/src/ce_main.pas index 4dc284a1..1403ca22 100644 --- a/src/ce_main.pas +++ b/src/ce_main.pas @@ -16,7 +16,7 @@ uses ce_toolseditor, ce_procinput, ce_optionseditor, ce_symlist, ce_mru, ce_processes, ce_infos, ce_dubproject, ce_dialogs, ce_dubprojeditor,{$IFDEF UNIX} ce_gdb,{$ENDIF} ce_dfmt, ce_lcldragdrop, ce_projgroup, ce_projutils, ce_stringrange, ce_dastworx, - ce_halstead; + ce_halstead, ce_profileviewer; type @@ -377,7 +377,8 @@ type {$IFDEF UNIX} fGdbWidg: TCEGdbWidget; {$ENDIF} - fDfmtWidg: TCEDfmtWidget; + fDfmtWidg: TCEDfmtWidget; + fProfWidg: TCEProfileViewerWidget; fCompStart: TDateTime; fRunProjAfterCompArg: boolean; @@ -1297,6 +1298,7 @@ begin fDubProjWidg:= TCEDubProjectEditorWidget.create(self); fDfmtWidg := TCEDfmtWidget.create(self); fPrjGrpWidg := TCEProjectGroupWidget.create(self); + fProfWidg := TCEProfileViewerWidget.create(self); {$IFDEF UNIX} fGdbWidg := TCEGdbWidget.create(self); {$ENDIF} @@ -1319,6 +1321,7 @@ begin fWidgList.addWidget(@fDubProjWidg); fWidgList.addWidget(@fDfmtWidg); fWidgList.addWidget(@fPrjGrpWidg); + fWidgList.addWidget(@fProfWidg); {$IFDEF UNIX} fWidgList.addWidget(@fGdbWidg); {$ENDIF} diff --git a/src/ce_profileviewer.lfm b/src/ce_profileviewer.lfm new file mode 100644 index 00000000..cd3be4d2 --- /dev/null +++ b/src/ce_profileviewer.lfm @@ -0,0 +1,205 @@ +inherited CEProfileViewerWidget: TCEProfileViewerWidget + Left = 979 + Height = 537 + Top = 198 + Width = 551 + Caption = 'Profile viewer' + ClientHeight = 537 + ClientWidth = 551 + inherited Back: TPanel + Height = 537 + Width = 551 + ClientHeight = 537 + ClientWidth = 551 + inherited Content: TPanel + Height = 501 + Width = 551 + ClientHeight = 501 + ClientWidth = 551 + object list: TListView[0] + Left = 4 + Height = 283 + Top = 214 + Width = 543 + Align = alClient + BorderSpacing.Around = 4 + Columns = < + item + AutoSize = True + Caption = 'Num calls' + Width = 71 + end + item + AutoSize = True + Caption = 'Tree time' + Width = 67 + end + item + AutoSize = True + Caption = 'Func time' + Width = 72 + end + item + AutoSize = True + Caption = 'Per call' + Width = 55 + end + item + AutoSize = True + Caption = 'function' + Width = 274 + end> + ReadOnly = True + ScrollBars = ssAutoBoth + SortType = stText + TabOrder = 0 + ViewStyle = vsReport + end + object Panel1: TPanel[1] + Left = 2 + Height = 200 + Top = 2 + Width = 547 + Align = alTop + BorderSpacing.Around = 2 + BevelOuter = bvNone + ClientHeight = 200 + ClientWidth = 547 + TabOrder = 1 + object pie: TChart + Left = 2 + Height = 196 + Top = 2 + Width = 543 + AxisList = < + item + Marks.Clipped = False + Minors = <> + end + item + Alignment = calBottom + Marks.Clipped = False + Minors = <> + end> + AxisVisible = False + Foot.Brush.Color = clBtnFace + Foot.Font.Color = clBlue + Frame.Style = psClear + Title.Brush.Color = clBtnFace + Title.Font.Color = clBlue + Title.Text.Strings = ( + 'TAChart' + ) + Toolset = pieTools + Align = alClient + BorderSpacing.Around = 2 + object pieSeries: TPieSeries + Legend.Visible = False + Marks.Clipped = False + Marks.Distance = 10 + Marks.Shape = clsRoundRect + Marks.Format = '%2:s %1:.2f%%' + Marks.Style = smsLabelPercent + FixedRadius = 100 + MarkPositions = pmpLeftRight + end + end + end + object Splitter1: TSplitter[2] + Cursor = crVSplit + Left = 0 + Height = 6 + Top = 204 + Width = 551 + Align = alTop + OnMoved = Splitter1Moved + ResizeAnchor = akTop + end + end + inherited toolbar: TCEToolBar + Width = 543 + object btnRefresh: TCEToolButton[0] + Left = 29 + Hint = 'reload current trace log file or auto load from the current directory' + Top = 0 + Caption = 'btnRefresh' + OnClick = btnRefreshClick + resourceName = 'ARROW_UPDATE' + scaledSeparator = False + end + object btnOpen: TCEToolButton[1] + Left = 1 + Hint = 'open a trace log file' + Top = 0 + Caption = 'btnOpen' + OnClick = btnOpenClick + resourceName = 'FOLDER' + scaledSeparator = False + end + object button0: TCEToolButton[2] + Left = 57 + Height = 28 + Top = 0 + Width = 13 + Caption = 'button0' + Style = tbsDivider + scaledSeparator = False + end + object selPieSource: TComboBox[3] + Left = 70 + Height = 28 + Hint = 'select the pie representation' + Top = 0 + Width = 154 + BorderSpacing.InnerBorder = 3 + ItemHeight = 0 + ItemIndex = 0 + Items.Strings = ( + 'Number of calls' + 'Tree time' + 'Function time' + 'Time per call' + ) + OnSelect = selPieSourceSelect + Style = csDropDownList + TabOrder = 0 + Text = 'Number of calls' + end + end + end + inherited contextMenu: TPopupMenu + left = 16 + top = 152 + end + object pieTools: TChartToolset[2] + left = 192 + top = 112 + object pieToolsZoomMouseWheelTool1: TZoomMouseWheelTool + ZoomFactor = 2 + ZoomRatio = 2 + end + object pieToolsPanDragTool1: TPanDragTool + Shift = [ssRight] + end + end + object datNumCalls: TListChartSource[3] + Sorted = True + left = 192 + top = 56 + end + object datTreeTime: TListChartSource[4] + Sorted = True + left = 232 + top = 56 + end + object datFuncTime: TListChartSource[5] + Sorted = True + left = 272 + top = 56 + end + object datPerCall: TListChartSource[6] + Sorted = True + left = 312 + top = 56 + end +end diff --git a/src/ce_profileviewer.pas b/src/ce_profileviewer.pas new file mode 100644 index 00000000..c58a28ae --- /dev/null +++ b/src/ce_profileviewer.pas @@ -0,0 +1,278 @@ +unit ce_profileviewer; + +{$I ce_defines.inc} + +interface + +uses + Classes, SysUtils, FileUtil, TASources, TAGraph, TATransformations, TASeries, + TATools, Forms, Controls, Graphics, Dialogs, ExtCtrls, Menus, ComCtrls, + StdCtrls, ce_widget, ce_common, ce_stringrange, ce_dsgncontrols, ce_ddemangle; + +type + + TCEProfileViewerWidget = class(TCEWidget) + btnOpen: TCEToolButton; + btnRefresh: TCEToolButton; + button0: TCEToolButton; + selPieSource: TComboBox; + pieTools: TChartToolset; + pieToolsPanDragTool1: TPanDragTool; + pieToolsZoomMouseWheelTool1: TZoomMouseWheelTool; + datNumCalls: TListChartSource; + datTreeTime: TListChartSource; + datFuncTime: TListChartSource; + datPerCall: TListChartSource; + Panel1: TPanel; + pie: TChart; + list: TListView; + pieSeries: TPieSeries; + Splitter1: TSplitter; + procedure btnOpenClick(Sender: TObject); + procedure btnRefreshClick(Sender: TObject); + procedure selPieSourceSelect(Sender: TObject); + procedure selPieSourceSelectionChange(Sender: TObject; User: boolean); + procedure Splitter1Moved(Sender: TObject); + private + logFname: string; + procedure clearViewer; + procedure updateFromFile(const fname: string); + procedure updatePie; + procedure listCompare(Sender: TObject; item1, item2: TListItem; Data: Integer; var Compare: Integer); + public + constructor create(aOwner: TComponent); override; + end; + +implementation +{$R *.lfm} + +constructor TCEProfileViewerWidget.create(aOwner: TComponent); +begin + inherited; + clearViewer; + updatePie; + list.OnCompare:=@listCompare; +end; + +procedure TCEProfileViewerWidget.btnRefreshClick(Sender: TObject); +var + fname: string; +begin + if logFname.isNotEmpty and logFname.fileExists then + updateFromFile(logFname) + else + begin + fname := GetCurrentDir + DirectorySeparator + 'trace.log'; + if fileExists(fname) then + begin + updateFromFile(fname); + logFname:=fname; + end; + end; +end; + +procedure TCEProfileViewerWidget.selPieSourceSelect(Sender: TObject); +begin + updatePie; +end; + +procedure TCEProfileViewerWidget.btnOpenClick(Sender: TObject); +begin + with TOpenDialog.Create(nil) do + try + if logFname.fileExists and logFname.isNotEmpty then + FileName := logFname; + if execute then + begin + updateFromFile(filename); + logFname := FileName; + end; + finally + free; + end; +end; + +procedure TCEProfileViewerWidget.updatePie; +begin + case selPieSource.ItemIndex of + 1: pieSeries.ListSource.DataPoints.Assign(datTreeTime.DataPoints); + 2: pieSeries.ListSource.DataPoints.Assign(datFuncTime.DataPoints); + 3: pieSeries.ListSource.DataPoints.Assign(datPerCall.DataPoints); + else pieSeries.ListSource.DataPoints.Assign(datNumCalls.DataPoints); + end; + pieSeries.FixedRadius:= pie.Height div 2 - 10; +end; + +procedure TCEProfileViewerWidget.selPieSourceSelectionChange(Sender: TObject;User: boolean); +begin + updatePie; +end; + +procedure TCEProfileViewerWidget.Splitter1Moved(Sender: TObject); +begin + updatePie; +end; + +procedure TCEProfileViewerWidget.clearViewer; +begin + list.Clear; + pieSeries.Clear; + datFuncTime.Clear; + datNumCalls.Clear; + datTreeTime.Clear; + datPerCall.Clear; +end; + +procedure TCEProfileViewerWidget.updateFromFile(const fname: string); +var + log: string; + rng: TStringRange = (ptr:nil; pos:0; len: 0); + tps: qword; + idt: string; + fnc: qword; + fft: qword; + ftt: qword; + fpc: qword; + + procedure fillRow(); + var + itm: TListItem; + begin + list.AddItem(fnc.ToString, nil); + itm := list.Items[list.Items.Count-1]; + itm.SubItems.Add(fft.ToString); + itm.SubItems.Add(ftt.ToString); + itm.SubItems.Add(fpc.ToString); + itm.SubItems.Add(idt); + datNumCalls.Add(100, fnc, idt); + datFuncTime.Add(100, fft, idt); + datTreeTime.Add(100, ftt, idt); + datPerCall.Add(100, fpc, idt); + end; + +begin + clearViewer; + + if not fname.fileExists or (fname.extractFileName <> 'trace.log') then + exit; + + with TStringList.Create do + try + loadFromFile(fname); + log := strictText; + finally + free; + end; + + if log.length = 0 then + exit; + + // ======== Timer Is 35.... ============ + rng.init(log); + rng.popUntil('=')^.popUntil(['0','1','2','3','4','5','6','7','8','9']); + if rng.empty then + exit; + idt := rng.nextWord; + tps := StrToQWordDef(idt, 0); + + // columns headers + if rng.popLine^.empty then + exit; + if rng.popLine^.empty then + exit; + if rng.popLine^.empty then + exit; + if rng.popLine^.empty then + exit; + if rng.popLine^.empty then + exit; + + list.BeginUpdate; + + // each function + while true do + begin + + idt:= 'unknown function'; + fnc:= 0; + fft:= 0; + ftt:= 0; + fpc:= 0; + // num calls + fnc := StrToQWordDef(rng.nextWord, 0); + if not rng.empty then + rng.popFront + else + break; + // function time + fft := StrToQWordDef(rng.nextWord, 0); + if not rng.empty then + rng.popFront + else + break; + // tree time + ftt := StrToQWordDef(rng.nextWord, 0); + if not rng.empty then + rng.popFront + else + break; + // per call + fpc := StrToQWordDef(rng.nextWord, 0); + if not rng.empty then + rng.popFront + else + break; + // function name + rng.popWhile(' ')^.empty; + idt := demangle(rng.takeUntil(#10).yield); + + fillRow; + + if not rng.empty then + rng.popFront + else + break; + end; + + list.EndUpdate; + updatePie; + +end; + +procedure TCEProfileViewerWidget.listCompare(Sender: TObject; item1, item2: TListItem; Data: Integer; var Compare: Integer); +var + txt1: string = ''; + txt2: string = ''; + i1, i2: qword; + col: Integer; +begin + col := list.SortColumn; + if col = 4 then + begin + Compare := AnsiCompareStr(txt1, txt2); + end + else + begin + if col = 0 then + begin + i1 := item1.Caption.ToInt64; + i2 := item2.Caption.ToInt64; + end + else + begin + i1 := item1.SubItems[col-1].ToInt64; + i2 := item2.SubItems[col-1].ToInt64; + end; + if (i1 = i2) + then Compare := 0 + else if (i1 < i2) + then Compare := -1 + else + Compare := 1; + end; + if list.SortDirection = sdDescending then + Compare := -Compare; +end; + +end. + diff --git a/src/ce_stringrange.pas b/src/ce_stringrange.pas index bb1d19b2..b3cde56e 100644 --- a/src/ce_stringrange.pas +++ b/src/ce_stringrange.pas @@ -75,6 +75,9 @@ type // advances the range until the front is equal to value. function popUntil(value: Char): PStringRange; overload; {$IFNDEF DEBUG}inline;{$ENDIF} + // advances the range until the beginning of the next line. + function popLine: PStringRange; {$IFNDEF DEBUG}inline;{$ENDIF} + // returns the next word. function nextWord: string; {$IFNDEF DEBUG}inline;{$ENDIF} // returns the next line. @@ -267,6 +270,14 @@ begin Result := @self; end; +function TStringRange.popLine: PStringRange; +begin + popUntil(#10); + if not empty then + popFront; + Result := @self; +end; + function TStringRange.nextWord: string; const blk = [#0 .. #32];