<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
p.msonormal0, li.msonormal0, div.msonormal0
{mso-style-name:msonormal;
mso-margin-top-alt:auto;
margin-right:0in;
mso-margin-bottom-alt:auto;
margin-left:0in;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
span.apple-converted-space
{mso-style-name:apple-converted-space;}
span.EmailStyle19
{mso-style-type:personal-reply;
font-family:"Calibri",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></style>
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">Reverted in r365922.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:12.0pt;color:black">From: </span></b><span style="font-size:12.0pt;color:black"><cbieneman@apple.com> on behalf of Chris Bieneman <beanz@apple.com><br>
<b>Date: </b>Friday, July 12, 2019 at 9:08 AM<br>
<b>To: </b>Shoaib Meenai <smeenai@fb.com><br>
<b>Cc: </b>Alex Bradbury <asb@lowrisc.org>, cfe-commits <cfe-commits@lists.llvm.org><br>
<b>Subject: </b>Re: r365825 - [clang-shlib] Fix clang-shlib for PRIVATE dependencies<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal">Ah! I see what is going on here. This is kinda a silliness of CMake. `PRIVATE` linkage for a static archive is silly, and shouldn't be possible. All link dependencies for static archives are really `INTERFACE` dependencies, and it looks
like CMake is doing something kinda silly instead of producing a reasonable error or warning like it probably should do.
<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">For context, `PRIVATE` linkage in the context of that change would mean DirectoryWalker links something, but things that link DirectoryWalker don't. That just isn't possible with static archives, so they become interface dependencies (and
CMake seems to insert a generator expression to make that work).<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">In `llvm_add_library` we always use `PRIVATE` linkage for shared libraries, and `INTERFACE` for static, which does the right thing.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Unless there is a better reason than a new patch coming in, I think the right fix is to revert this back and expect the new patch to correct its linkage behavior.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">-Chris<o:p></o:p></p>
</div>
<div>
<div>
<p class="MsoNormal"><br>
<br>
<o:p></o:p></p>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<p class="MsoNormal">On Jul 12, 2019, at 8:53 AM, Shoaib Meenai <<a href="mailto:smeenai@fb.com">smeenai@fb.com</a>> wrote:<o:p></o:p></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">See<span class="apple-converted-space"> </span><a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__reviews.llvm.org_D58418-231577670&d=DwMFAg&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=BaInVCyhXHMyre_oyIEnYhuQC5zsW6p65QBgZLR7ujc&s=7bhRDMtKEyVqFDlMWzo361mQT2N8lcOt-YDh-XGjZok&e="><span style="color:purple">https://reviews.llvm.org/D58418#1577670</span></a>.
More generally it would appear for any static library with a PRIVATE dependency though.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">I guess an alternative would be to use the LINK_LIBRARIES property (which should be free of generator expressions, I believe) to propagate dependencies instead of INTERFACE_LINK_LIBRARIES, and just assume that no one is gonna set an INTERFACE
dependency on a static library. (Supporting PRIVATE dependencies on a static library definitely seems more valuable than supporting INTERFACE dependencies.)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<div style="margin-left:.5in">
<p class="MsoNormal"><b><span style="font-size:12.0pt">From:<span class="apple-converted-space"> </span></span></b><span style="font-size:12.0pt"><<a href="mailto:cbieneman@apple.com">cbieneman@apple.com</a>> on behalf of Chris Bieneman <<a href="mailto:beanz@apple.com">beanz@apple.com</a>><br>
<b>Date:<span class="apple-converted-space"> </span></b>Friday, July 12, 2019 at 8:49 AM<br>
<b>To:<span class="apple-converted-space"> </span></b>Shoaib Meenai <<a href="mailto:smeenai@fb.com">smeenai@fb.com</a>><br>
<b>Cc:<span class="apple-converted-space"> </span></b>Alex Bradbury <<a href="mailto:asb@lowrisc.org">asb@lowrisc.org</a>>, cfe-commits <<a href="mailto:cfe-commits@lists.llvm.org">cfe-commits@lists.llvm.org</a>><br>
<b>Subject:<span class="apple-converted-space"> </span></b>Re: r365825 - [clang-shlib] Fix clang-shlib for PRIVATE dependencies</span><o:p></o:p></p>
</div>
</div>
<div>
<div style="margin-left:.5in">
<p class="MsoNormal"> <o:p></o:p></p>
</div>
</div>
<div style="margin-left:.5in">
<p class="MsoNormal">One of the benefits of the object library approach for generating the clang dylib is that it was compatible with BUILD_SHARED_LIBS. We had lots of issues with libLLVM where people using BUILD_SHARED_LIBS would make changes that broke it,
so I was trying to make the clang dylib in a way that it could always be enabled.<o:p></o:p></p>
</div>
<div>
<div style="margin-left:.5in">
<p class="MsoNormal"> <o:p></o:p></p>
</div>
</div>
<div>
<div style="margin-left:.5in">
<p class="MsoNormal">Do we know where the nested generator expression was coming from?<o:p></o:p></p>
</div>
</div>
<div>
<div style="margin-left:.5in">
<p class="MsoNormal"> <o:p></o:p></p>
</div>
</div>
<div>
<div style="margin-left:.5in">
<p class="MsoNormal">-Chris<o:p></o:p></p>
</div>
<div>
<div style="margin-left:.5in">
<p class="MsoNormal"><br>
<br>
<br>
<o:p></o:p></p>
</div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<div style="margin-left:.5in">
<p class="MsoNormal">On Jul 12, 2019, at 8:32 AM, Shoaib Meenai <<a href="mailto:smeenai@fb.com"><span style="color:purple">smeenai@fb.com</span></a>> wrote:<o:p></o:p></p>
</div>
</div>
<div style="margin-left:.5in">
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<div>
<div>
<div style="margin-left:.5in">
<p class="MsoNormal">Oops, sorry about the breakage.<o:p></o:p></p>
</div>
<div style="margin-left:.5in">
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<div style="margin-left:.5in">
<p class="MsoNormal">Chris, aren't BUILD_SHARED_LIBS and the combined Clang dylib incompatible? Should we disable building the latter if the former is set?<o:p></o:p></p>
</div>
<div style="margin-left:.5in">
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<div style="margin-left:1.0in">
<p class="MsoNormal"><b><span style="font-size:12.0pt">From:<span class="apple-converted-space"> </span></span></b><span style="font-size:12.0pt">Alex Bradbury <<a href="mailto:asb@lowrisc.org"><span style="color:purple">asb@lowrisc.org</span></a>><br>
<b>Date:<span class="apple-converted-space"> </span></b>Friday, July 12, 2019 at 2:02 AM<br>
<b>To:<span class="apple-converted-space"> </span></b>Shoaib Meenai <<a href="mailto:smeenai@fb.com"><span style="color:purple">smeenai@fb.com</span></a>><br>
<b>Cc:<span class="apple-converted-space"> </span></b>cfe-commits <<a href="mailto:cfe-commits@lists.llvm.org"><span style="color:purple">cfe-commits@lists.llvm.org</span></a>><br>
<b>Subject:<span class="apple-converted-space"> </span></b>Re: r365825 - [clang-shlib] Fix clang-shlib for PRIVATE dependencies</span><o:p></o:p></p>
</div>
</div>
<div>
<div style="margin-left:1.0in">
<p class="MsoNormal"> <o:p></o:p></p>
</div>
</div>
<div>
<div style="margin-left:1.0in">
<p class="MsoNormal">On Thu, 11 Jul 2019 at 22:20, Shoaib Meenai via cfe-commits<o:p></o:p></p>
</div>
</div>
<div>
<div style="margin-left:1.0in">
<p class="MsoNormal"><<a href="mailto:cfe-commits@lists.llvm.org"><span style="color:purple">cfe-commits@lists.llvm.org</span></a>> wrote:<o:p></o:p></p>
</div>
</div>
<blockquote style="border:none;border-left:solid #B5C4DF 4.5pt;padding:0in 0in 0in 4.0pt;margin-left:3.75pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt" id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE">
<div>
<div style="margin-left:1.0in">
<p class="MsoNormal"> <o:p></o:p></p>
</div>
</div>
<div>
<div style="margin-left:1.0in">
<p class="MsoNormal">Author: smeenai<o:p></o:p></p>
</div>
</div>
<div>
<div style="margin-left:1.0in">
<p class="MsoNormal">Date: Thu Jul 11 14:20:38 2019<o:p></o:p></p>
</div>
</div>
<div>
<div style="margin-left:1.0in">
<p class="MsoNormal">New Revision: 365825<o:p></o:p></p>
</div>
</div>
<div>
<div style="margin-left:1.0in">
<p class="MsoNormal"> <o:p></o:p></p>
</div>
</div>
<div>
<div style="margin-left:1.0in">
<p class="MsoNormal">URL:<span class="apple-converted-space"> </span><a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject-3Frev-3D365825-26view-3Drev&d=DwIBaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=ETCU2JhfBcjWz-nbe6LUVSRQR0T1f3wCzxLIhKlMmQo&s=R9NSZG1XQDVSiE0wJUgb1kMUrG6bJkG3v5GDcTdkpAk&e="><span style="color:purple">https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject-3Frev-3D365825-26view-3Drev&d=DwIBaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=ETCU2JhfBcjWz-nbe6LUVSRQR0T1f3wCzxLIhKlMmQo&s=R9NSZG1XQDVSiE0wJUgb1kMUrG6bJkG3v5GDcTdkpAk&e=</span></a><o:p></o:p></p>
</div>
</div>
<div>
<div style="margin-left:1.0in">
<p class="MsoNormal">Log:<o:p></o:p></p>
</div>
</div>
<div>
<div style="margin-left:1.0in">
<p class="MsoNormal">[clang-shlib] Fix clang-shlib for PRIVATE dependencies<o:p></o:p></p>
</div>
</div>
<div>
<div style="margin-left:1.0in">
<p class="MsoNormal"> <o:p></o:p></p>
</div>
</div>
<div>
<div style="margin-left:1.0in">
<p class="MsoNormal">Any static library with a PRIVATE dependency ends up with a<o:p></o:p></p>
</div>
</div>
<div>
<div style="margin-left:1.0in">
<p class="MsoNormal">$<LINK_ONLY:...> generator expression in its INTERFACE_LINK_LIBRARIES,<o:p></o:p></p>
</div>
</div>
<div>
<div style="margin-left:1.0in">
<p class="MsoNormal">which won't be evaluated by the $<TARGET_PROPERTY:...>, so we end up<o:p></o:p></p>
</div>
</div>
<div>
<div style="margin-left:1.0in">
<p class="MsoNormal">with an unevaluated generator expression in the generated build file and<o:p></o:p></p>
</div>
</div>
<div>
<div style="margin-left:1.0in">
<p class="MsoNormal">Ninja chokes on the dollar sign. Just use the static library directly<o:p></o:p></p>
</div>
</div>
<div>
<div style="margin-left:1.0in">
<p class="MsoNormal">for its dependencies instead of trying to propagate dependencies<o:p></o:p></p>
</div>
</div>
<div>
<div style="margin-left:1.0in">
<p class="MsoNormal">manually.<o:p></o:p></p>
</div>
</div>
<div>
<div style="margin-left:1.0in">
<p class="MsoNormal"> <o:p></o:p></p>
</div>
</div>
<div>
<div style="margin-left:1.0in">
<p class="MsoNormal">Differential Revision:<span class="apple-converted-space"> </span><a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__reviews.llvm.org_D64579&d=DwIBaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=ETCU2JhfBcjWz-nbe6LUVSRQR0T1f3wCzxLIhKlMmQo&s=mutN2zF1KixMEVFjNzG_Q7iVJzG5ECbrU4tX3AKWLVQ&e="><span style="color:purple">https://urldefense.proofpoint.com/v2/url?u=https-3A__reviews.llvm.org_D64579&d=DwIBaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=ETCU2JhfBcjWz-nbe6LUVSRQR0T1f3wCzxLIhKlMmQo&s=mutN2zF1KixMEVFjNzG_Q7iVJzG5ECbrU4tX3AKWLVQ&e=</span></a><o:p></o:p></p>
</div>
</div>
</blockquote>
<div>
<div style="margin-left:1.0in">
<p class="MsoNormal"> <o:p></o:p></p>
</div>
</div>
<div>
<div style="margin-left:1.0in">
<p class="MsoNormal">This seems to break a -DBUILD_SHARED_LIBS build for me. It fails at<o:p></o:p></p>
</div>
</div>
<div>
<div style="margin-left:1.0in">
<p class="MsoNormal">the point of linking lib/libclang_shared.so.9svn with errors like:<o:p></o:p></p>
</div>
</div>
<div>
<div style="margin-left:1.0in">
<p class="MsoNormal">ld.lld: error: undefined symbol: llvm::llvm_unreachable_internal(char<o:p></o:p></p>
</div>
</div>
<div>
<div style="margin-left:1.0in">
<p class="MsoNormal">const*, char const*, unsigned int)<o:p></o:p></p>
</div>
</div>
<blockquote style="border:none;border-left:solid #B5C4DF 4.5pt;padding:0in 0in 0in 4.0pt;margin-left:3.75pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt" id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE">
<blockquote style="border:none;border-left:solid #B5C4DF 4.5pt;padding:0in 0in 0in 4.0pt;margin-left:3.75pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt" id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE">
<blockquote style="border:none;border-left:solid #B5C4DF 4.5pt;padding:0in 0in 0in 4.0pt;margin-left:3.75pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt" id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE">
<div>
<div style="margin-left:1.0in">
<p class="MsoNormal">referenced by Attributes.cpp:34 (/home/asb/llvm-project/clang/lib/Basic/Attributes.cpp:34)<o:p></o:p></p>
</div>
</div>
<div>
<div style="margin-left:1.0in">
<p class="MsoNormal"> tools/clang/lib/Basic/CMakeFiles/obj.clangBasic.dir/Attributes.cpp.o:(clang::attr::getSubjectMatchRuleSpelling(clang::attr::SubjectMatchRule))<o:p></o:p></p>
</div>
</div>
</blockquote>
</blockquote>
</blockquote>
<div>
<div style="margin-left:1.0in">
<p class="MsoNormal"> <o:p></o:p></p>
</div>
</div>
<div>
<div style="margin-left:1.0in">
<p class="MsoNormal">ld.lld: error: undefined symbol: llvm::llvm_unreachable_internal(char<o:p></o:p></p>
</div>
</div>
<div>
<div style="margin-left:1.0in">
<p class="MsoNormal">const*, char const*, unsigned int)<o:p></o:p></p>
</div>
</div>
<blockquote style="border:none;border-left:solid #B5C4DF 4.5pt;padding:0in 0in 0in 4.0pt;margin-left:3.75pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt" id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE">
<blockquote style="border:none;border-left:solid #B5C4DF 4.5pt;padding:0in 0in 0in 4.0pt;margin-left:3.75pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt" id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE">
<blockquote style="border:none;border-left:solid #B5C4DF 4.5pt;padding:0in 0in 0in 4.0pt;margin-left:3.75pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt" id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE">
<div>
<div style="margin-left:1.0in">
<p class="MsoNormal">referenced by TargetCXXABI.h:168 (/home/asb/llvm-project/clang/include/clang/Basic/TargetCXXABI.h:168)<o:p></o:p></p>
</div>
</div>
<div>
<div style="margin-left:1.0in">
<p class="MsoNormal"> tools/clang/lib/Basic/CMakeFiles/obj.clangBasic.dir/Attributes.cpp.o:(clang::TargetCXXABI::isMicrosoft() const)<o:p></o:p></p>
</div>
</div>
</blockquote>
</blockquote>
</blockquote>
<div>
<div style="margin-left:1.0in">
<p class="MsoNormal"> <o:p></o:p></p>
</div>
</div>
<div>
<div style="margin-left:1.0in">
<p class="MsoNormal">ld.lld: error: undefined symbol: llvm::llvm_unreachable_internal(char<o:p></o:p></p>
</div>
</div>
<div>
<div style="margin-left:1.0in">
<p class="MsoNormal">const*, char const*, unsigned int)<o:p></o:p></p>
</div>
</div>
<blockquote style="border:none;border-left:solid #B5C4DF 4.5pt;padding:0in 0in 0in 4.0pt;margin-left:3.75pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt" id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE">
<blockquote style="border:none;border-left:solid #B5C4DF 4.5pt;padding:0in 0in 0in 4.0pt;margin-left:3.75pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt" id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE">
<blockquote style="border:none;border-left:solid #B5C4DF 4.5pt;padding:0in 0in 0in 4.0pt;margin-left:3.75pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt" id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE">
<div>
<div style="margin-left:1.0in">
<p class="MsoNormal">referenced by TargetCXXABI.h:149 (/home/asb/llvm-project/clang/include/clang/Basic/TargetCXXABI.h:149)<o:p></o:p></p>
</div>
</div>
<div>
<div style="margin-left:1.0in">
<p class="MsoNormal"> tools/clang/lib/Basic/CMakeFiles/obj.clangBasic.dir/Attributes.cpp.o:(clang::TargetCXXABI::isItaniumFamily() const)<o:p></o:p></p>
</div>
</div>
</blockquote>
</blockquote>
</blockquote>
<div>
<div style="margin-left:1.0in">
<p class="MsoNormal"> <o:p></o:p></p>
</div>
</div>
<div>
<div style="margin-left:1.0in">
<p class="MsoNormal">ld.lld: error: undefined symbol: llvm::EnableABIBreakingChecks<o:p></o:p></p>
</div>
</div>
<blockquote style="border:none;border-left:solid #B5C4DF 4.5pt;padding:0in 0in 0in 4.0pt;margin-left:3.75pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt" id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE">
<blockquote style="border:none;border-left:solid #B5C4DF 4.5pt;padding:0in 0in 0in 4.0pt;margin-left:3.75pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt" id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE">
<blockquote style="border:none;border-left:solid #B5C4DF 4.5pt;padding:0in 0in 0in 4.0pt;margin-left:3.75pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt" id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE">
<div>
<div style="margin-left:1.0in">
<p class="MsoNormal">referenced by Attributes.cpp<o:p></o:p></p>
</div>
</div>
<div>
<div style="margin-left:1.0in">
<p class="MsoNormal"> tools/clang/lib/Basic/CMakeFiles/obj.clangBasic.dir/Attributes.cpp.o:(llvm::VerifyEnableABIBreakingChecks)<o:p></o:p></p>
</div>
</div>
</blockquote>
</blockquote>
</blockquote>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</blockquote>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</body>
</html>