From cc794e564a5b773e3eafcef46f497522f42d4e8f Mon Sep 17 00:00:00 2001 From: Katayama Hirofumi MZ Date: Tue, 28 Jan 2020 13:41:29 +0900 Subject: [PATCH] [CPL][DESK] Add icons to 'Background' tab (#2281) Add icons into "Background" tab of "Properties for Display" dialog. CORE-16665 --- dll/cpl/desk/background.c | 129 +++++++++++++++++--------------- dll/cpl/desk/desk.rc | 1 + dll/cpl/desk/resource.h | 1 + dll/cpl/desk/resources/none.ico | Bin 0 -> 23558 bytes 4 files changed, 69 insertions(+), 62 deletions(-) create mode 100644 dll/cpl/desk/resources/none.ico diff --git a/dll/cpl/desk/background.c b/dll/cpl/desk/background.c index a92f27b7185..f73cdcb9d19 100644 --- a/dll/cpl/desk/background.c +++ b/dll/cpl/desk/background.c @@ -203,6 +203,8 @@ AddWallpapersFromDirectory(UINT uCounter, HWND hwndBackgroundList, BackgroundIte return i; } + himl = ListView_GetImageList(hwndBackgroundList, LVSIL_SMALL); + token = _tcstok(szFileTypes, separators); while (token != NULL) { @@ -227,19 +229,13 @@ AddWallpapersFromDirectory(UINT uCounter, HWND hwndBackgroundList, BackgroundIte /* Don't add any hidden bitmaps. Also don't add current wallpaper once more. */ if (((fd.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN) == 0) && (_tcsicmp(wallpaperFilename, filename) != 0)) { - himl = (HIMAGELIST)SHGetFileInfo(filename, - 0, - &sfi, - sizeof(sfi), - SHGFI_SYSICONINDEX | SHGFI_SMALLICON | - SHGFI_DISPLAYNAME); - if (himl == NULL) - break; - - if (i++ == 0) - { - (void)ListView_SetImageList(hwndBackgroundList, himl, LVSIL_SMALL); - } + SHGetFileInfo(filename, + 0, + &sfi, + sizeof(sfi), + SHGFI_ICON | SHGFI_SMALLICON | SHGFI_DISPLAYNAME); + sfi.iIcon = ImageList_AddIcon(himl, sfi.hIcon); + i++; backgroundItem = &pData->backgroundItems[pData->listViewItemCount]; @@ -311,11 +307,20 @@ AddListViewItems(HWND hwndDlg, PBACKGROUND_DATA pData) BackgroundItem *backgroundItem = NULL; HWND hwndBackgroundList; HRESULT hr; + HICON hIcon; + INT cx, cy; hwndBackgroundList = GetDlgItem(hwndDlg, IDC_BACKGROUND_LIST); GetClientRect(hwndBackgroundList, &clientRect); + cx = GetSystemMetrics(SM_CXSMICON); + cy = GetSystemMetrics(SM_CYSMICON); + himl = ImageList_Create(cx, cy, ILC_COLOR32 | ILC_MASK, 0, 0); + hIcon = (HICON)LoadImageW(hApplet, MAKEINTRESOURCEW(IDI_NONE), IMAGE_ICON, cx, cy, 0); + + ListView_SetImageList(hwndBackgroundList, himl, LVSIL_SMALL); + /* Add a new column to the list */ ZeroMemory(&dummy, sizeof(LV_COLUMN)); dummy.mask = LVCF_SUBITEM | LVCF_WIDTH; @@ -335,9 +340,10 @@ AddListViewItems(HWND hwndDlg, PBACKGROUND_DATA pData) listItem.mask = LVIF_TEXT | LVIF_PARAM | LVIF_STATE | LVIF_IMAGE; listItem.state = 0; listItem.pszText = backgroundItem->szDisplayName; - listItem.iImage = -1; + listItem.iImage = ImageList_AddIcon(himl, hIcon); listItem.iItem = pData->listViewItemCount; listItem.lParam = pData->listViewItemCount; + hIcon = NULL; (void)ListView_InsertItem(hwndBackgroundList, &listItem); ListView_SetItemState(hwndBackgroundList, @@ -385,55 +391,51 @@ AddListViewItems(HWND hwndDlg, PBACKGROUND_DATA pData) } } - himl = (HIMAGELIST)SHGetFileInfo(wallpaperFilename, - 0, - &sfi, - sizeof(sfi), - SHGFI_SYSICONINDEX | SHGFI_SMALLICON | - SHGFI_DISPLAYNAME); - if (himl != NULL) + SHGetFileInfoW(wallpaperFilename, + 0, + &sfi, + sizeof(sfi), + SHGFI_ICON | SHGFI_SMALLICON | + SHGFI_DISPLAYNAME); + sfi.iIcon = ImageList_AddIcon(himl, sfi.hIcon); + + i++; + + backgroundItem = &pData->backgroundItems[pData->listViewItemCount]; + + backgroundItem->bWallpaper = TRUE; + + hr = StringCbCopy(backgroundItem->szDisplayName, sizeof(backgroundItem->szDisplayName), sfi.szDisplayName); + if (FAILED(hr)) { - if (i++ == 0) - { - (void)ListView_SetImageList(hwndBackgroundList, himl, LVSIL_SMALL); - } - - backgroundItem = &pData->backgroundItems[pData->listViewItemCount]; - - backgroundItem->bWallpaper = TRUE; - - hr = StringCbCopy(backgroundItem->szDisplayName, sizeof(backgroundItem->szDisplayName), sfi.szDisplayName); - if (FAILED(hr)) - { - RegCloseKey(regKey); - return; - } - - PathRemoveExtension(backgroundItem->szDisplayName); - - hr = StringCbCopy(backgroundItem->szFilename, sizeof(backgroundItem->szFilename), wallpaperFilename); - if (FAILED(hr)) - { - RegCloseKey(regKey); - return; - } - - ZeroMemory(&listItem, sizeof(LV_ITEM)); - listItem.mask = LVIF_TEXT | LVIF_PARAM | LVIF_STATE | LVIF_IMAGE; - listItem.state = 0; - listItem.pszText = backgroundItem->szDisplayName; - listItem.iImage = sfi.iIcon; - listItem.iItem = pData->listViewItemCount; - listItem.lParam = pData->listViewItemCount; - - (void)ListView_InsertItem(hwndBackgroundList, &listItem); - ListView_SetItemState(hwndBackgroundList, - pData->listViewItemCount, - LVIS_SELECTED, - LVIS_SELECTED); - - pData->listViewItemCount++; + RegCloseKey(regKey); + return; } + + PathRemoveExtension(backgroundItem->szDisplayName); + + hr = StringCbCopy(backgroundItem->szFilename, sizeof(backgroundItem->szFilename), wallpaperFilename); + if (FAILED(hr)) + { + RegCloseKey(regKey); + return; + } + + ZeroMemory(&listItem, sizeof(LV_ITEM)); + listItem.mask = LVIF_TEXT | LVIF_PARAM | LVIF_STATE | LVIF_IMAGE; + listItem.state = 0; + listItem.pszText = backgroundItem->szDisplayName; + listItem.iImage = sfi.iIcon; + listItem.iItem = pData->listViewItemCount; + listItem.lParam = pData->listViewItemCount; + + (void)ListView_InsertItem(hwndBackgroundList, &listItem); + ListView_SetItemState(hwndBackgroundList, + pData->listViewItemCount, + LVIS_SELECTED, + LVIS_SELECTED); + + pData->listViewItemCount++; } RegCloseKey(regKey); @@ -640,8 +642,10 @@ OnBrowseButton(HWND hwndDlg, PBACKGROUND_DATA pData) size_t sizeRemain; SIZE_T buffersize; BOOL success; + HIMAGELIST himl; hwndBackgroundList = GetDlgItem(hwndDlg, IDC_BACKGROUND_LIST); + himl = ListView_GetImageList(hwndBackgroundList, LVSIL_SMALL); ZeroMemory(&ofn, sizeof(OPENFILENAME)); @@ -715,7 +719,8 @@ OnBrowseButton(HWND hwndDlg, PBACKGROUND_DATA pData) 0, &sfi, sizeof(sfi), - SHGFI_SYSICONINDEX | SHGFI_SMALLICON | SHGFI_DISPLAYNAME); + SHGFI_ICON | SHGFI_SMALLICON | SHGFI_DISPLAYNAME); + sfi.iIcon = ImageList_AddIcon(himl, sfi.hIcon); backgroundItem = &pData->backgroundItems[pData->listViewItemCount]; diff --git a/dll/cpl/desk/desk.rc b/dll/cpl/desk/desk.rc index 08301b0fee7..60352eda891 100644 --- a/dll/cpl/desk/desk.rc +++ b/dll/cpl/desk/desk.rc @@ -14,6 +14,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL IDC_DESK_ICON ICON "resources/applet.ico" IDC_DESK_ICON2 ICON "resources/applet.ico" +IDI_NONE ICON "resources/none.ico" IDC_MONITOR BITMAP "resources/monitor.bmp" diff --git a/dll/cpl/desk/resource.h b/dll/cpl/desk/resource.h index 816ab45311f..bbe32ea6469 100644 --- a/dll/cpl/desk/resource.h +++ b/dll/cpl/desk/resource.h @@ -3,6 +3,7 @@ /* ids */ #define IDC_DESK_ICON 40 #define IDC_DESK_ICON2 100 /* Needed for theme compatability with Windows. */ +#define IDI_NONE 101 #define IDC_STATIC -1 diff --git a/dll/cpl/desk/resources/none.ico b/dll/cpl/desk/resources/none.ico new file mode 100644 index 0000000000000000000000000000000000000000..f306984bdb4e311617c4adbf420dae6e5001c608 GIT binary patch literal 23558 zcmeI4d0bW1+W6N26lVlYab$965L57qmLr-|nTn=a(PWurrT3f?H4ZfMx z0VmWnEpfnuIDoS_AcM>zqkv|BBK!A!_BjU-(eU2h&+q-?t`Cc~_g>F>ruFQ#*R$4o zj#36yPr14_rLefx^aBG_=wZcvTZ@I6hRKI2dZ@!;W zN2$y@152kws{R(Mx61zf8pD0M$HL8%6ig^#m<Ead~-nv!HkK5?US}-E4KaY^1eP zQtvM9J-m7dkF>Y-qQb_zgD#7g_W&DT?mfH)(^}fQ+M+0HwesrG&Bk|-tF_w33m&}D zrMb1T_3&1z1G?;?w}u?JY<;~3QIKpsI&>3S-coRZid`way@aF?_12lN8PvhU!`^|%WWeTmf1%vEOCffSm+Y5Fr|OQ zLeu<+g#lW`0)w^ybPG-Pnr(_hxqXUDiG86%p+kvME`nQVXaNSDuGqP#+LipjYv%?x zCn02Ta&mHn8vos}4Q{bbx26U+-fwp|S0|L{v)vYAa^HsCk0|JFGroAqtGpJQ7Xk=DHCJIf(1$~B0Ini z!-s0?tdw&vE~b+UsZTY-2&}Y`wxXwQcIzp zQ5`yLQ9XNxspp@MQXhVJK^cvCYWwzU>c=0isxQ7MqFsTSKfgfDnw3YHuNEyTP|KGW zs2_ePQros&RSOqhP%pk1t@`%e1YcSZg4p9O02F!JQ2snd;S7v(&tK z*=oy{D{9%Y4E5Agk?PxTi`3Mq`Re7D^VBoXWU3V_3ZRjUY`bW4NQH!4R)7Dy)FqPB z)LU<5LHn|L?6Gk5=9|aWrcH%v;>0*LZrl+yX3PQg$8_fNokD!NNYCl`_Ziu%Vt&QO;}zm=$= zL&McaA7!JzbTwjxNllqj1bn=D{q=OUVZ&wh#v8{mouA<6I5v^0e0|f=M+SO1pt^Ve zP5JpHBSS7c#se3unl(#Qb?b)E_Zhr08`R>($wnRZoFRE*=|Jhqw9S2$tOAR z6s>G**7Gb)b?TH#pXX3_UiIh^u54{LsunGh;P;f8KK-cv!V>AJ2Pmf@g=J6^1@9p_h2{ zoQ7VG)2|Wgop(}bcYyci9PdyP&y&>s_wQ6LE{Uo^gR`nmot^M=0^N$P_5r&FyG}>$ zt=OovU5D;A1NSTQg46Vc@D!)ow%tY_C86if(V>)|AloK*NXCZb{w4U^ip}gszX!R0 zocwq4eDeR9RD89hG(W$z)dk-E=JSZ7> z(#E_6$+>|wH3$rx{+iETft94UF}Ilgb5c;yZ7qUQvt4ok3=KVa?$VB}fk9g@g`bN` zOpJ<3jQsJNe^nN?55S>E4pkxx3cM6WgXpYTF`2hg2u%GkEfnOY^uSv%1qEG* zN{o(<&WO2q>+|GUg8W=1ZY#q%0eaAt>ian1Aac8adLBB27h^W@v z3fv0p2zBu2gww~PqodZJu@DIQ@iQJDsvuXY`*4yBNg1-#=^2>+`JE_qL^qa23 z1pfGGXbs#41#j9E78bEtz?BNz7a6&K#R0k8{luP?E5oa!4+`E3{I>RE%@u~}%a%Z5HfGH2{9uTf3M{1a6rHd^PZ`!69ox0JmUQ%5Lc7 z$;-C?`Us+o^$cCP@m6KR`H*Ta$blWw1W_W6>Ex}_uD27JcUSCFkr8sSSJU}X{ zriuQu{TKXGhp+RLqmQTOWK?A{;semb%#&3?<=T7tWPgA6xx@75e!`IF&?z=UyS)82 znt8Wjb@2E6`p@=%f3UZXU)|U8ovuEf{Thzw+4JqUXH0$bHgM%P*2mv}W(PBRrTj)t z=-Rc**sj1&s|ozo>Hhxye;?`n4-4HXufO5h)w4^NEP+v$EBzLnr(D_`f#E%)I{m`OYI>@a*E*^TpnkI4lib@*Cj;_Lm)< zs*2?|zWanOaP;)VXP&LZ%$2v_b6AUi-|pk9f-5zARQJ&c(51^`Lx+#4XK6CbZ`fF% zefp0Z{M4=BN_84E*i9tv+4Hd>Lx(jSKD^VfBvKd3uTG8$u78Q_PEM8aJbH8Ql_|Q zC5qvdvQSD>e=Wt1caYN5NJ>23_U2OcLnQ(8%hfz7XHHD5~89DH`c+sj}syV+`G+@~N_iC#KrCGb|S-I=GfT-a(Ot})_p3>h zj^h6v#dp}R`t{p`&vZzA{BaUKP@ek!`y%z#S4Hac&kJ<_@4N5v)N{{8sXl%7Fu&i6 ze-}mlCH3{!Me4ox#8=GK{mPeK%2O}Aki#52i!vMkE?4()pLynx?hg+bup9q0QTHGH z{nNpD3EwMAtz21vFPDIi8Lqzk@}m0m(*pQ8hR<_=d3ppsz#iu92Y7Z0+81=cbmGKJ z_|4V*+u_3_@PCBIR5f~Zlo~#KpBg{@C~y~nzlblBiGRA6dHoLjsziLMd}PZ3WFH)mMMdBAn;R~kWKjz?Lo>WVhrsJPv;q&jNANJ}# z`n&I51@5%^?6Xw-(}UPX8w27w)7V z5~xo=HQPADtf+vjPj1m-i+bdd3-Gv?_R-Lf z$9~Shdjh)tl=iXMR~qd@xu1dlR?_}wZ0H2{)-N}g{|m`Z(tGb!n^IW`6%-bAy)t9& zm3N8?uUel~mbvlSM}|e6P0Tx+m7m=Ga&BdfeswteWKN_x#l*y%`1b3=w*X`$T#P&# z8TtLO-Mcd{#m2h4CB4XdF$XlwH?q7J|;EL6U_C!U~VD)c1R)tk*{n65$ zJ9lkcf&Z~5e6NX3jV-HIRcXFD^rx-ANVQtNefzHuD79|=swI{68$y5jX`?ZiYUQ+P z{pO#Q`X8CZ%e|!4Km7R9m*#2}vgVuqYn5V7zEqck>g8Vq1%3H1K~DPWYdiuLK>xY$ z!;j2Q#>{=;9Z%+c$o%zfjH7f1S-VU?OPZ`S+(Ow!-G?>q9$ zb;cVrr*^KWR!*~Kz5AY0jt<@(-==!n^KZN{z4OxoX--2XP5L{~Zj)c@_|z2j`tvWm zF|}&7&zqB;dFxp~pY!k7#?$Tj@h`mi_)FHdlrK-3^vbJpKgMrt$8k@!96#alx>c&5 zo;d88=F(iL5s$ZN>)h&zkyWefJ~?dIsL^Klfxd$P7+j^AsbRli!)0|@Pd*R!YVF+n zk%uj}>d`)Zz5Dg=Ily|aoF06rwR5WuT|B$mKkV48yH`i=9)IgusR@L1Z|KpwRjXFc z9Xhma-KI@PW_)yQmE_dSJg0MZmRVgBW_496^-DuNeGb>SNkfPFO<5AJA?Xvgy7srs z8};eg|CxPKUK&yFz;p6A=1%=aXoEubTOb9Pf7!uMeh-||a*BhNB6 zh5^5h^}w~1TNv;6GPWLLU30VkEn2!Xm+|@t?Tn128>u@^xd~kBSbxptdIR5OnP0>* z&WGu1i}&BZ3w-+-&olTItfS3Q)>u;*^VjknImKAN4LXsG{SkbZBEhj9_=Ak`JD?lP zH|#jDr)%h;|33P!2L7voJ8Hn$2B*{6T5V|H)}dLmF5L~dU!(?YnmILZ(4cv@W~~}< zYiQoORRdt1oxAjC1%#Kk{O9?@ox3zMD1&ELfl`L{oga4Y*4^3W!G{Dfx9tti&AZqb z^Z{7E1$8rnp<^dYEl}Ls;8YvhH)}6Aott;CF}S!oTW(bYCpTx+wp~ketunM~1}TI1 z!UF>h2H0Swyc(#E_(l_j7F}rKAyR5q8Iej8Cr`sv!7emqQ%DRg9aTgpFTZF zTed7$`}EUXZQi^rZQ8UQ>wCDIJxApD=_dP+zrp4N za1Su!*Xanon)EOH37^8R@LfHLOwvE{emapw-Zo_3$By9p9DN&0*hej$F(XyyS$KWy zv1F}n+gPn(!*iB=meQQ@bv1K7qqS}ws|^}-L3``1i`tSUIU0MkTIbF?MGo>3?90;| zT4Mk5{tI29FMJ3;!k1O&T-G|-vH{T>zH{2O`=w;+)C(H>)f#)@TJz?yTBAni{xshz z%NebH{WDtAre`$vfwjepv$fY>PelH0rO+sX)-X7;CqwtINXDlP24m^y(I?A4|2$Wl zFdNwC3b=MjJae8T-oC*bgs<7Vn7h^}m2~ z?8~^gUcEKf**nLsvo-e5D|l|wBvxa6M9+;I3oi$>I(4>}+SqLT-C$Vz2W_$K;2SnJ zq1Wu}e!an20j*xWL)g+O-L|YYB{DES);Kqy&6$&_O`aUj{Tl2k7<>A+?8PE_@W)P0 zn@Zk)KV6$XJyW~yzVkZoR-QQn0Ut*+Tic&4yoMyh^C#q&$wSDD=SIeNBjcrU5x&Mw zat7Bo?Cf^js9*nN#d~3ufpZ2L=SZ~o-bSQwwi@3}r_PKNfv3mNFx zY$w9I@XdJ(jdKp*H;T=|n^DHNS|%f7VsM!Bjh)@jvIY%A4zn#uKh&!iqdogO2md`!#TuLH~QoR`-UxDzxztaPaL2#o#N6xs-M5?i9X@!8h{G zIBH$P7#_R>pR>3@gBabG#u?Df&9P!j2j?jL|svrE#W8##H7lH6^1H@5#-%b2FHm zBwOqz4*c~-DVu(nTh-fe9|i=CX# zYwR1)#|gR&oJZ4U&dkPUh(q5`SUZh-o2Ccu|{;?xbX?mJ@36f@2l3N*0&YB zw`h@|wQQNp+$l+y!NVh2d-vU(8h97n#x^n!;yfbn#aXRQn={yT0)3Fd9A@*)Mvd0q zSIL3#an3UqFI}34Ud(#uj3s>+PJf1MuY|kjE1h>cyN$&yTPAAG&Z*=SU51VwQ{X)p zea2XA#-jI18eU$%?ixM%1arF-jq{-zXIVAQ%;Hl-mv-#9WpX8?@omm%{=wPT3f;@Q z#n>#i_8a{jfrb!+i! zGU)$wU53t`)A*+5Yh%WoxhwBNi8I`jM~~iL!rrPrzZU*E6HEK^8t0(#r>!a2DDUnI zFI?2$S@XCSEBs3q|NmZ+@V-lUZ__4~aq%Mdo1x3_zyleKftPE=yAb5O^rKHcxwl;G z$7(~LewxKQa6#i-_`yo1LLxac4Bm8o%#?AB^TonD--~-n_MAK3Q>V_RV$K~i|F{JI znYs)QJ#>+|eeHP{s>_$3Z))a0p@M(;j&XjOHGy48m7IkfdG*zJ#@{sEZmRIl+_gp@ zxw2{Hm3@~k+YfLayOeX)=qE?xT(!ozYRW8ppF-ZjvwvzcmFV;<1LxjL{ruu8_@6f~ zQ{yZ?_Om;^5;l0#gbAm$XP(Kh@Sn)ooWM6c1bRl7O1L{-*+2a7uLs7CjVhfqDOY>- z)dD?p-T*(nKrwF_dgv0v<&H4^6UYv!$oXngk{A6W2 z;}Xub-<&ruN8@Ze<7_%}kPP}`UrDoO8~$vbY|r`kL&EzjujJwT6;@=<;A@=KXa1O0 zK48GE;`{E~@MtB?Kfh|y#0Lt zV@HkJS1RL=bqwMR4)dh5Hy?X!cg0+qc#&7%c;i^<#*IbTP$mE4#>HrZ2k+ThBXZU^ ze0;(xco)7U6Sn~GSK$2*jTnh?#=w$x?Ka&r??RJ!ju1b;qc^JZziwRte%bL-Vq@l6 z`QqGu8^)^g&6^9c*DPKCoC#u`B%bvd6LU9xZPW@br9Ck<(be@nWy%%pAOE6f z6B)*g*)KNqZWX%refsP?EWC4G%3|wgy$kQel7J(l9NHzs0QIZV?w&5kjobGmW6w?D z-O9hrKZ#G_yB(1Sva0L1?5XbljCh;t#K%GI2fdt&%j;Ckc6MaGR8bE16w__PZCi7%pm&y*oo@U7sA zb4$N=8#^|le9M+1-G)T>!oOrczk{Wop4%32?(7KXyh>kuQFy;x!T+>r@~(=#XOxc^ zvA2YI*MH=v5i2xv)ToHE@#9l8EC0j|X`40`a36VN^k~!A>io++@m{As`shMA@khGt znEB6UOiIKr+KU{*dp15oeg*&5F;d=D;>t>T_WaGaCfv1swq{Lo_pxL5T^>93bUA0? zbpGZ2B^F8}rmP&>Nd;GpYq-R>^+vX`jT;LYqjD_z&t_hf!}xWIG7H}Gbp9tzx~zYj zf`hN=?<(?@^yw2exVC)O1h-{NdQ)P)V*UIM-w@ud{L2~?F<98qzOo4uBK>P>YkfwX zSQv3)WkzFBh5bDLd=7JN$+;S58+94peDkvYU0u95t$gH2Q;DzduE(r6{+;sJv3v)A z|AV`Ul`DPv=`@{pvkYmP*!`S2=Wk;7r@?Kw8-9EH5D&)IvY&p+)rbewWgyN^?*l9U z#Pz}Z@A`KYoF&7C?WyJ3Sk06dEjr^$+}vpy>n2P{(Vl)fqk{j>KFifsug;M%^Cs`- zkeV^v`jqe93}O~4xB+4K2#lMOM06aD=5pV?tNZteK1F@wE6VAbZ#0};T zsl+o*0{6Y_H5gudE$UI?G^0k1GL>;gv|PUXlCAttpMFV`@9E^p$8NxT1o&?m?`t7T zy&*%wPtBZp=El~oS6M&GxA0&29*7*A$ze>0ybf$`|Nc8aBhK|XFR$%g!C!rhsE4ij z!0!@2zsMx6Z;l&xvh0~>($ViF3-7{zh9-XO=FLTnA!nq2Q^t?q=THlNZv$!5W@9t_ zob$w^UKf1Jmls;z<4PH1JbLLRkt2>V>PV^Bu=pI0KOTM)nX-syO?~1C)9>=k?28=6 z#$(|*U4OTPcbPAm^?ytIn3jcbxbmkts+k@_Lc!(7vL+AG8JAg@+?cYLwTR%+w$CVGS@Qm&-rV7bMY1O zs5^9>dE z_S}(4Z21k=0?MV&i7m&ruHu^(@jWhpzXE;SlCg{Ua&%jue@|AgE<*0Bx}C^;;KdiC z*#F+0&m4COeEsD*zl*GP%r~Cm-Pp$X_6PCwH|EZb!@g2A;^{Tw>6uFx=vl7i8MeoF zG_H*A><#g2diB~7hVS$eG+68U|C(%>FF%eBgZTY`9RmmMIWuU`o*dpm(d~7fh<=-o5%y;rIdCoQ0QUN z*0M~wl*kDg;#|t*1VAC-F@l%q8gsl3;W4tap5kDM*KyHO)of32W&iq14{7#BNkIR{FvNe|h_U2MK=;b`+qL*_l@jJaN@jKlJ zNdm74DI{J8;+D7_dwz8T{)kdaflrCwG3h0YA%|5iT~6dHQwEdBYn5LUeeln!SEN(+ za?dKb9{0o!5~2~e6TlB~RFB(nmDaUQaIeo9#15?IJ>+aiOL7~s8@Ur%_WHV6vRvO! z_8_+>w<62gEhM|`{1uOGOEQNLT5_JFEx7|(aC(zvZAN?#nU9SI?ej`KHjlW=^qLm@K+O*Nx%#(+`Q!$R&28jJOfz6KSj)Uf^s@JnQDMdhXOIPV3n- zf%#=B-|%$&k<(?wiR5zr=W|rbSp&V#r0)c;;1@c7l8o&dGzg7lt*1oJ84)+ae&g+D zN~)e8v7Wnl;DPh_VCndkCrj(s-;l`KpxDJdq~N~9uVfMDq7lPlIa^`g_vCjU;Nuv3 zD3P2o*q%+!BF2S1y=eA`t>-_?XAX#YK_98?>1@enzi4pn7%+AtmL`ulC5?C*ea}qx zKpQnWCFeP^IfH$ky|WPTy@*^7kUNq6h(G#_eB9Rdm%RG*k6ZSu&1X-fPh4Gp%>zzs z@h-{O!qIWl#hEiR=-0Rk+QbN51NS-FKX{kMmMWtUuqTKODk5%3-*0Z#>O%-cH_opk$H0t_&%ZmqgSnx9cOfQ(I?l;`}XE@2gEO7 z6Um${S$DE#EWv|_3A-|6NJ_;%CFfAE;oA0_j#Z~k%+xh=pPggh?VNsYK+Zi7Q^gsx zs4L(cSDgoJJx<=QrcKRf8i>s*LGD%6;qGz|?R7ir*WY(d_LyX!`2PD7m~&nzuUmK5 zHQDd1U;h+qpmO$QLkf7R=+o#0Uxmbu>Ft^{Im4NN^}IK=-rv+|6GwN=x_?aU8S4p2 z(x7LoFcUn1dhZeajTl@O%4JX!+F)^8W{Uv;p!v)mV zML!P2GUg5*oTBfM5z8p_S5&sF@k*ynyyG?5$CG`?9z8PUTvCm+1;dabre(xI>ib2+ zt1=#(E`qiT`F`HJ%fw^DZ{oF&NMhDA?8-4i>^liPpcSiX8$Ct<& zF|nn{e3|)oPB~*+GPvZsT4N&qbT;v)tPP~#|6gP+;M`T#6np@-^Yx9$Beqo|wv|2q zME2%(uB!owZO@*&_WAoKl*m4etWOhjs}aM?x^%=v_M>E8amPgb?QUXa_5Bv&Wzqks zBKDqieu=rw6aU`o>l1%_z8WIi-o1B63T^9N3NgH_offdJ9Fh5Fv;`OTmtoy6A)Z$w zo>%NoPsCjxm;E21Z{Axtc)3%jEizY-WZSpzp2+8(i%0H4eJ_VtVSLO2)|vKYwr#sf z<`s8M?7=i(jrlTh$-4Z+8EfdQLPq@4cZgFiBTiXgJ0R})Cb|v=sa?N*;gQciYwmBM zFLDcQ_5d^SH)XE)r-}IO?^w$!5&FbWYs5X@WFO>1Yr{t#32VXLQ4#Uf73<@~h8GMN z5FSl@b;+bjvMw%uYmu&V;;b|AtJ+!H->qbAXCN`zh1T_YY?ZT%CyQ85khx$*BKCV7 zvESvye(P%}#DBB)cAou^Jo+jhn=QoFE|;^8l!-rAE846}HxfM&H?FUnitNPIW3Q(0 z3c{9)CQa5k5u0B4_1BeayRyz8YbM01>vm2o|0Q(QzIxl5?w2e%*8=!M#J98VY+kn| z&Ykh`7<*q49cyYs{QL*R&leLvudl~g*ENZyXZ>Y=*3hAQTx)7q{TXrhetv!jvf1Y= zlXXj3?PP?_aSlN!&ksTTz$!oq!1T9=)o-zeJpM-}S{7yl|+OG5iziGf6 z|5zcmnKfvTDS>$Y9q<%R{C)<%Uy#r57hK`@3)n+6?{&(aGrwUVv~LU_ZiXl zJ-5a7H;cYx&&a$kC~Ikz>uF*e!jEL>C&|_|G+FzTb-$G>FQfN_V!pLu;1?h3o)Ufa z4!;GFzhXsZnXK#aTM)dzx31p_A6DA355#Xm=<9Z@%diG~D4+F>_wR{lHDLDF8}Pdp z%lZ9^e15;;8oyt`zDW`9Q4#Zq0zI!-QOFu+5o>mN=sW2ezh#l%r_b({ojY$8U+b?* zHmnnl=+-T4J-@M$$Zu?1;x{((`HhWyY(0zL*hu2}W?AonV3oP$-N_f?hXyd$BC8bI zm9dOaLX3qxPjM);PjM-29s@xt;v>ZeiYPXYjQCy z4Co)RK+RteptJ?7LI6;1YqBq+n%@hxH}L~3O8?E!a{0YbS*qYiMP(3dN_Hh1^#5Gc zD(PqFKO&Cz0P{ze^ipfNv82%RDLs_>f|*uMnTB<01z5cb>sdRUE+!fw@X-F!TG3oS6w> z-_1CI>`rziKT9qZK4h+J#-Z~88e?~2emR?KZ5#aAt+-{r9Q+-A!!_cF;Vn|b=ls`cRBgZJxWo+*b4|a9o`a3%w#U%3&hrnIZT0pOq;JJOEc`Dce!HCbZSIZN ztF`^<*0!SCkkeuxVq?IgKVx@d!HbCn=gj&Mi;d`XjkmWAW-VdkA7PfnAmyrah^F-GI3t<8nN@7i{6cW>F>`%+CuM6$=DsZ zW$5;}1)hFgbByby$U@z%sgTt&6Qf!HmLXXNIGiUvV6C2j${^B>{36*@2`6o&?f(NZ C(^{?o literal 0 HcmV?d00001