<div style="font-family: arial, helvetica, sans-serif; font-size: 10pt">Hi,<div><br></div><div>I didn't resist the temptation to use Phabricator's command-line tool (arcanist) to commit the patch. It uses the original message, but doesn't include original author in case the patch is committed by someone else. So I'll have to figure out how to fix this for arcanist, and I'll definitely try to avoid this kind of mistakes.</div>


<div><br></div><div>BTW, full information about the patch is still accessible via commit message, if one follows the link. And yes, this patch is created by Philip Craig <<a href="mailto:philipjcraig@gmail.com">philipjcraig@gmail.com</a>>.<br>
<br><div class="gmail_quote">On Tue, Dec 11, 2012 at 11:12 PM, Sean Silva <span dir="ltr"><<a href="mailto:silvas@purdue.edu" target="_blank">silvas@purdue.edu</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">In the future please credit the original author (philipc in this case) in the commit message as specified here <<a href="http://llvm.org/docs/DeveloperPolicy.html#attribution-of-changes" target="_blank">http://llvm.org/docs/DeveloperPolicy.html#attribution-of-changes</a>>.<span><font color="#888888"><div>



<br></div><div>-- Sean Silva</div></font></span><div><div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Dec 11, 2012 at 10:20 AM, Alexander Kornienko <span dir="ltr"><<a href="mailto:alexfh@google.com" target="_blank">alexfh@google.com</a>></span> wrote:<br>



<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: alexfh<br>
Date: Tue Dec 11 09:20:44 2012<br>
New Revision: 169865<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=169865&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=169865&view=rev</a><br>
Log:<br>
Rename StmtDumper::DumpSubTree() to dumpStmt()<br>
<br>
Summary:<br>
Also rename DumpDeclarator() to dumpDecl(). Once Decl dumping is added, these will be the two main methods of the class, so this is just for consistency in naming.<br>
<br>
There was a DumpStmt() method already, but there was no point in having it, so I have merged it into VisitStmt(). Similarly, DumpExpr() is merged into VisitExpr().<br>
<br>
Reviewers: alexfh<br>
<br>
Reviewed By: alexfh<br>
<br>
CC: cfe-commits, alexfh<br>
<br>
Differential Revision: <a href="http://llvm-reviews.chandlerc.com/D156" target="_blank">http://llvm-reviews.chandlerc.com/D156</a><br>
<br>
Modified:<br>
    cfe/trunk/lib/AST/StmtDumper.cpp<br>
<br>
Modified: cfe/trunk/lib/AST/StmtDumper.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/StmtDumper.cpp?rev=169865&r1=169864&r2=169865&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/StmtDumper.cpp?rev=169865&r1=169864&r2=169865&view=diff</a><br>




==============================================================================<br>
--- cfe/trunk/lib/AST/StmtDumper.cpp (original)<br>
+++ cfe/trunk/lib/AST/StmtDumper.cpp Tue Dec 11 09:20:44 2012<br>
@@ -57,25 +57,8 @@<br>
       OS << "\n";<br>
     }<br>
<br>
-    void DumpSubTree(Stmt *S) {<br>
-      IndentScope Indent(*this);<br>
-<br>
-      if (!S) {<br>
-        OS << "<<<NULL>>>";<br>
-        return;<br>
-      }<br>
-<br>
-      if (DeclStmt* DS = dyn_cast<DeclStmt>(S)) {<br>
-        VisitDeclStmt(DS);<br>
-        return;<br>
-      }<br>
-<br>
-      Visit(S);<br>
-      for (Stmt::child_range CI = S->children(); CI; CI++)<br>
-        DumpSubTree(*CI);<br>
-    }<br>
-<br>
-    void DumpDeclarator(Decl *D);<br>
+    void dumpDecl(Decl *D);<br>
+    void dumpStmt(Stmt *S);<br>
<br>
     void indent() {<br>
       if (IsFirstLine)<br>
@@ -104,11 +87,6 @@<br>
       }<br>
     }<br>
     void DumpDeclRef(Decl *node);<br>
-    void DumpStmt(const Stmt *Node) {<br>
-      OS << Node->getStmtClassName()<br>
-         << " " << (const void*)Node;<br>
-      DumpSourceRange(Node);<br>
-    }<br>
     void DumpValueKind(ExprValueKind K) {<br>
       switch (K) {<br>
       case VK_RValue: break;<br>
@@ -125,13 +103,6 @@<br>
       case OK_VectorComponent: OS << " vectorcomponent"; break;<br>
       }<br>
     }<br>
-    void DumpExpr(const Expr *Node) {<br>
-      DumpStmt(Node);<br>
-      OS << ' ';<br>
-      DumpType(Node->getType());<br>
-      DumpValueKind(Node->getValueKind());<br>
-      DumpObjectKind(Node->getObjectKind());<br>
-    }<br>
     void DumpSourceRange(const Stmt *Node);<br>
     void DumpLocation(SourceLocation Loc);<br>
<br>
@@ -235,16 +206,11 @@<br>
<br>
 }<br>
<br>
-<br>
 //===----------------------------------------------------------------------===//<br>
-//  Stmt printing methods.<br>
+//  Decl printing methods.<br>
 //===----------------------------------------------------------------------===//<br>
<br>
-void StmtDumper::VisitStmt(Stmt *Node) {<br>
-  DumpStmt(Node);<br>
-}<br>
-<br>
-void StmtDumper::DumpDeclarator(Decl *D) {<br>
+void StmtDumper::dumpDecl(Decl *D) {<br>
   // FIXME: Need to complete/beautify this... this code simply shows the<br>
   // nodes are where they need to be.<br>
   if (TypedefDecl *localType = dyn_cast<TypedefDecl>(D)) {<br>
@@ -271,7 +237,7 @@<br>
     if (VarDecl *V = dyn_cast<VarDecl>(VD)) {<br>
       if (V->getInit()) {<br>
         OS << " =";<br>
-        DumpSubTree(V->getInit());<br>
+        dumpStmt(V->getInit());<br>
       }<br>
     }<br>
     OS << '"';<br>
@@ -303,33 +269,60 @@<br>
     OS << "label " << *LD;<br>
   } else if (StaticAssertDecl *SAD = dyn_cast<StaticAssertDecl>(D)) {<br>
     OS << "\"static_assert(";<br>
-    DumpSubTree(SAD->getAssertExpr());<br>
+    dumpStmt(SAD->getAssertExpr());<br>
     OS << ",";<br>
-    DumpSubTree(SAD->getMessage());<br>
+    dumpStmt(SAD->getMessage());<br>
     OS << ");\"";<br>
   } else {<br>
     llvm_unreachable("Unexpected decl");<br>
   }<br>
 }<br>
<br>
+//===----------------------------------------------------------------------===//<br>
+//  Stmt printing methods.<br>
+//===----------------------------------------------------------------------===//<br>
+<br>
+void StmtDumper::dumpStmt(Stmt *S) {<br>
+  IndentScope Indent(*this);<br>
+<br>
+  if (!S) {<br>
+    OS << "<<<NULL>>>";<br>
+    return;<br>
+  }<br>
+<br>
+  if (DeclStmt *DS = dyn_cast<DeclStmt>(S)) {<br>
+    VisitDeclStmt(DS);<br>
+    return;<br>
+  }<br>
+<br>
+  Visit(S);<br>
+  for (Stmt::child_range CI = S->children(); CI; ++CI)<br>
+    dumpStmt(*CI);<br>
+}<br>
+<br>
+void StmtDumper::VisitStmt(Stmt *Node) {<br>
+  OS << Node->getStmtClassName() << " " << (const void *)Node;<br>
+  DumpSourceRange(Node);<br>
+}<br>
+<br>
 void StmtDumper::VisitDeclStmt(DeclStmt *Node) {<br>
-  DumpStmt(Node);<br>
+  VisitStmt(Node);<br>
   for (DeclStmt::decl_iterator DI = Node->decl_begin(), DE = Node->decl_end();<br>
        DI != DE; ++DI) {<br>
     IndentScope Indent(*this);<br>
     Decl* D = *DI;<br>
     OS << (void*) D << " ";<br>
-    DumpDeclarator(D);<br>
+    dumpDecl(D);<br>
   }<br>
 }<br>
<br>
 void StmtDumper::VisitLabelStmt(LabelStmt *Node) {<br>
-  DumpStmt(Node);<br>
+  VisitStmt(Node);<br>
   OS << " '" << Node->getName() << "'";<br>
 }<br>
<br>
 void StmtDumper::VisitGotoStmt(GotoStmt *Node) {<br>
-  DumpStmt(Node);<br>
+  VisitStmt(Node);<br>
   OS << " '" << Node->getLabel()->getName()<br>
      << "':" << (void*)Node->getLabel();<br>
 }<br>
@@ -339,7 +332,11 @@<br>
 //===----------------------------------------------------------------------===//<br>
<br>
 void StmtDumper::VisitExpr(Expr *Node) {<br>
-  DumpExpr(Node);<br>
+  VisitStmt(Node);<br>
+  OS << ' ';<br>
+  DumpType(Node->getType());<br>
+  DumpValueKind(Node->getValueKind());<br>
+  DumpObjectKind(Node->getObjectKind());<br>
 }<br>
<br>
 static void DumpBasePath(raw_ostream &OS, CastExpr *Node) {<br>
@@ -367,14 +364,14 @@<br>
 }<br>
<br>
 void StmtDumper::VisitCastExpr(CastExpr *Node) {<br>
-  DumpExpr(Node);<br>
+  VisitExpr(Node);<br>
   OS << " <" << Node->getCastKindName();<br>
   DumpBasePath(OS, Node);<br>
   OS << ">";<br>
 }<br>
<br>
 void StmtDumper::VisitDeclRefExpr(DeclRefExpr *Node) {<br>
-  DumpExpr(Node);<br>
+  VisitExpr(Node);<br>
<br>
   OS << " ";<br>
   DumpDeclRef(Node->getDecl());<br>
@@ -400,7 +397,7 @@<br>
 }<br>
<br>
 void StmtDumper::VisitUnresolvedLookupExpr(UnresolvedLookupExpr *Node) {<br>
-  DumpExpr(Node);<br>
+  VisitExpr(Node);<br>
   OS << " (";<br>
   if (!Node->requiresADL()) OS << "no ";<br>
   OS << "ADL) = '" << Node->getName() << '\'';<br>
@@ -413,7 +410,7 @@<br>
 }<br>
<br>
 void StmtDumper::VisitObjCIvarRefExpr(ObjCIvarRefExpr *Node) {<br>
-  DumpExpr(Node);<br>
+  VisitExpr(Node);<br>
<br>
   OS << " " << Node->getDecl()->getDeclKindName()<br>
      << "Decl='" << *Node->getDecl()<br>
@@ -423,7 +420,7 @@<br>
 }<br>
<br>
 void StmtDumper::VisitPredefinedExpr(PredefinedExpr *Node) {<br>
-  DumpExpr(Node);<br>
+  VisitExpr(Node);<br>
   switch (Node->getIdentType()) {<br>
   default: llvm_unreachable("unknown case");<br>
   case PredefinedExpr::Func:           OS <<  " __func__"; break;<br>
@@ -434,34 +431,34 @@<br>
 }<br>
<br>
 void StmtDumper::VisitCharacterLiteral(CharacterLiteral *Node) {<br>
-  DumpExpr(Node);<br>
+  VisitExpr(Node);<br>
   OS << " " << Node->getValue();<br>
 }<br>
<br>
 void StmtDumper::VisitIntegerLiteral(IntegerLiteral *Node) {<br>
-  DumpExpr(Node);<br>
+  VisitExpr(Node);<br>
<br>
   bool isSigned = Node->getType()->isSignedIntegerType();<br>
   OS << " " << Node->getValue().toString(10, isSigned);<br>
 }<br>
 void StmtDumper::VisitFloatingLiteral(FloatingLiteral *Node) {<br>
-  DumpExpr(Node);<br>
+  VisitExpr(Node);<br>
   OS << " " << Node->getValueAsApproximateDouble();<br>
 }<br>
<br>
 void StmtDumper::VisitStringLiteral(StringLiteral *Str) {<br>
-  DumpExpr(Str);<br>
+  VisitExpr(Str);<br>
   OS << " ";<br>
   Str->outputString(OS);<br>
 }<br>
<br>
 void StmtDumper::VisitUnaryOperator(UnaryOperator *Node) {<br>
-  DumpExpr(Node);<br>
+  VisitExpr(Node);<br>
   OS << " " << (Node->isPostfix() ? "postfix" : "prefix")<br>
      << " '" << UnaryOperator::getOpcodeStr(Node->getOpcode()) << "'";<br>
 }<br>
 void StmtDumper::VisitUnaryExprOrTypeTraitExpr(UnaryExprOrTypeTraitExpr *Node) {<br>
-  DumpExpr(Node);<br>
+  VisitExpr(Node);<br>
   switch(Node->getKind()) {<br>
   case UETT_SizeOf:<br>
     OS << " sizeof ";<br>
@@ -478,21 +475,21 @@<br>
 }<br>
<br>
 void StmtDumper::VisitMemberExpr(MemberExpr *Node) {<br>
-  DumpExpr(Node);<br>
+  VisitExpr(Node);<br>
   OS << " " << (Node->isArrow() ? "->" : ".")<br>
      << *Node->getMemberDecl() << ' '<br>
      << (void*)Node->getMemberDecl();<br>
 }<br>
 void StmtDumper::VisitExtVectorElementExpr(ExtVectorElementExpr *Node) {<br>
-  DumpExpr(Node);<br>
+  VisitExpr(Node);<br>
   OS << " " << Node->getAccessor().getNameStart();<br>
 }<br>
 void StmtDumper::VisitBinaryOperator(BinaryOperator *Node) {<br>
-  DumpExpr(Node);<br>
+  VisitExpr(Node);<br>
   OS << " '" << BinaryOperator::getOpcodeStr(Node->getOpcode()) << "'";<br>
 }<br>
 void StmtDumper::VisitCompoundAssignOperator(CompoundAssignOperator *Node) {<br>
-  DumpExpr(Node);<br>
+  VisitExpr(Node);<br>
   OS << " '" << BinaryOperator::getOpcodeStr(Node->getOpcode())<br>
      << "' ComputeLHSTy=";<br>
   DumpType(Node->getComputationLHSType());<br>
@@ -501,7 +498,7 @@<br>
 }<br>
<br>
 void StmtDumper::VisitBlockExpr(BlockExpr *Node) {<br>
-  DumpExpr(Node);<br>
+  VisitExpr(Node);<br>
<br>
   BlockDecl *block = Node->getBlockDecl();<br>
   OS << " decl=" << block;<br>
@@ -518,23 +515,24 @@<br>
     if (i->isNested()) OS << "nested ";<br>
     if (i->getVariable())<br>
       DumpDeclRef(i->getVariable());<br>
-    if (i->hasCopyExpr()) DumpSubTree(i->getCopyExpr());<br>
+    if (i->hasCopyExpr())<br>
+      dumpStmt(i->getCopyExpr());<br>
   }<br>
<br>
-  DumpSubTree(block->getBody());<br>
+  dumpStmt(block->getBody());<br>
 }<br>
<br>
 void StmtDumper::VisitOpaqueValueExpr(OpaqueValueExpr *Node) {<br>
-  DumpExpr(Node);<br>
+  VisitExpr(Node);<br>
<br>
   if (Expr *Source = Node->getSourceExpr())<br>
-    DumpSubTree(Source);<br>
+    dumpStmt(Source);<br>
 }<br>
<br>
 // GNU extensions.<br>
<br>
 void StmtDumper::VisitAddrLabelExpr(AddrLabelExpr *Node) {<br>
-  DumpExpr(Node);<br>
+  VisitExpr(Node);<br>
   OS << " " << Node->getLabel()->getName()<br>
      << " " << (void*)Node->getLabel();<br>
 }<br>
@@ -544,7 +542,7 @@<br>
 //===----------------------------------------------------------------------===//<br>
<br>
 void StmtDumper::VisitCXXNamedCastExpr(CXXNamedCastExpr *Node) {<br>
-  DumpExpr(Node);<br>
+  VisitExpr(Node);<br>
   OS << " " << Node->getCastName()<br>
      << "<" << Node->getTypeAsWritten().getAsString() << ">"<br>
      << " <" << Node->getCastKindName();<br>
@@ -553,23 +551,23 @@<br>
 }<br>
<br>
 void StmtDumper::VisitCXXBoolLiteralExpr(CXXBoolLiteralExpr *Node) {<br>
-  DumpExpr(Node);<br>
+  VisitExpr(Node);<br>
   OS << " " << (Node->getValue() ? "true" : "false");<br>
 }<br>
<br>
 void StmtDumper::VisitCXXThisExpr(CXXThisExpr *Node) {<br>
-  DumpExpr(Node);<br>
+  VisitExpr(Node);<br>
   OS << " this";<br>
 }<br>
<br>
 void StmtDumper::VisitCXXFunctionalCastExpr(CXXFunctionalCastExpr *Node) {<br>
-  DumpExpr(Node);<br>
+  VisitExpr(Node);<br>
   OS << " functional cast to " << Node->getTypeAsWritten().getAsString()<br>
      << " <" << Node->getCastKindName() << ">";<br>
 }<br>
<br>
 void StmtDumper::VisitCXXConstructExpr(CXXConstructExpr *Node) {<br>
-  DumpExpr(Node);<br>
+  VisitExpr(Node);<br>
   CXXConstructorDecl *Ctor = Node->getConstructor();<br>
   DumpType(Ctor->getType());<br>
   if (Node->isElidable())<br>
@@ -579,13 +577,13 @@<br>
 }<br>
<br>
 void StmtDumper::VisitCXXBindTemporaryExpr(CXXBindTemporaryExpr *Node) {<br>
-  DumpExpr(Node);<br>
+  VisitExpr(Node);<br>
   OS << " ";<br>
   DumpCXXTemporary(Node->getTemporary());<br>
 }<br>
<br>
 void StmtDumper::VisitExprWithCleanups(ExprWithCleanups *Node) {<br>
-  DumpExpr(Node);<br>
+  VisitExpr(Node);<br>
   for (unsigned i = 0, e = Node->getNumObjects(); i != e; ++i) {<br>
     IndentScope Indent(*this);<br>
     OS << "cleanup ";<br>
@@ -602,7 +600,7 @@<br>
 //===----------------------------------------------------------------------===//<br>
<br>
 void StmtDumper::VisitObjCMessageExpr(ObjCMessageExpr* Node) {<br>
-  DumpExpr(Node);<br>
+  VisitExpr(Node);<br>
   OS << " selector=" << Node->getSelector().getAsString();<br>
   switch (Node->getReceiverKind()) {<br>
   case ObjCMessageExpr::Instance:<br>
@@ -624,40 +622,40 @@<br>
 }<br>
<br>
 void StmtDumper::VisitObjCBoxedExpr(ObjCBoxedExpr* Node) {<br>
-  DumpExpr(Node);<br>
+  VisitExpr(Node);<br>
   OS << " selector=" << Node->getBoxingMethod()->getSelector().getAsString();<br>
 }<br>
<br>
 void StmtDumper::VisitObjCAtCatchStmt(ObjCAtCatchStmt *Node) {<br>
-  DumpStmt(Node);<br>
+  VisitStmt(Node);<br>
   if (VarDecl *CatchParam = Node->getCatchParamDecl()) {<br>
     OS << " catch parm = ";<br>
-    DumpDeclarator(CatchParam);<br>
+    dumpDecl(CatchParam);<br>
   } else {<br>
     OS << " catch all";<br>
   }<br>
 }<br>
<br>
 void StmtDumper::VisitObjCEncodeExpr(ObjCEncodeExpr *Node) {<br>
-  DumpExpr(Node);<br>
+  VisitExpr(Node);<br>
   OS << " ";<br>
   DumpType(Node->getEncodedType());<br>
 }<br>
<br>
 void StmtDumper::VisitObjCSelectorExpr(ObjCSelectorExpr *Node) {<br>
-  DumpExpr(Node);<br>
+  VisitExpr(Node);<br>
<br>
   OS << " " << Node->getSelector().getAsString();<br>
 }<br>
<br>
 void StmtDumper::VisitObjCProtocolExpr(ObjCProtocolExpr *Node) {<br>
-  DumpExpr(Node);<br>
+  VisitExpr(Node);<br>
<br>
   OS << ' ' <<* Node->getProtocol();<br>
 }<br>
<br>
 void StmtDumper::VisitObjCPropertyRefExpr(ObjCPropertyRefExpr *Node) {<br>
-  DumpExpr(Node);<br>
+  VisitExpr(Node);<br>
   if (Node->isImplicitProperty()) {<br>
     OS << " Kind=MethodRef Getter=\"";<br>
     if (Node->getImplicitPropertyGetter())<br>
@@ -688,7 +686,7 @@<br>
 }<br>
<br>
 void StmtDumper::VisitObjCSubscriptRefExpr(ObjCSubscriptRefExpr *Node) {<br>
-  DumpExpr(Node);<br>
+  VisitExpr(Node);<br>
   if (Node->isArraySubscriptRefExpr())<br>
     OS << " Kind=ArraySubscript GetterForArray=\"";<br>
   else<br>
@@ -709,7 +707,7 @@<br>
 }<br>
<br>
 void StmtDumper::VisitObjCBoolLiteralExpr(ObjCBoolLiteralExpr *Node) {<br>
-  DumpExpr(Node);<br>
+  VisitExpr(Node);<br>
   OS << " " << (Node->getValue() ? "__objc_yes" : "__objc_no");<br>
 }<br>
<br>
@@ -723,10 +721,10 @@<br>
<br>
 void Stmt::dump(raw_ostream &OS, SourceManager &SM) const {<br>
   StmtDumper P(&SM, OS);<br>
-  P.DumpSubTree(const_cast<Stmt*>(this));<br>
+  P.dumpStmt(const_cast<Stmt*>(this));<br>
 }<br>
<br>
 void Stmt::dump() const {<br>
   StmtDumper P(0, llvm::errs());<br>
-  P.DumpSubTree(const_cast<Stmt*>(this));<br>
+  P.dumpStmt(const_cast<Stmt*>(this));<br>
 }<br>
<br>
<br>
_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@cs.uiuc.edu" target="_blank">cfe-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
</blockquote></div><br></div>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div><div><font color="#666666"><span style="border-top-width:2px;border-right-width:0px;border-bottom-width:0px;border-left-width:0px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(213,15,37);border-right-color:rgb(213,15,37);border-bottom-color:rgb(213,15,37);border-left-color:rgb(213,15,37);padding-top:2px;margin-top:2px">Alexander Kornienko |</span><span style="border-top-width:2px;border-right-width:0px;border-bottom-width:0px;border-left-width:0px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(51,105,232);border-right-color:rgb(51,105,232);border-bottom-color:rgb(51,105,232);border-left-color:rgb(51,105,232);padding-top:2px;margin-top:2px"> Software Engineer |</span></font><span style="border-top-width:2px;border-right-width:0px;border-bottom-width:0px;border-left-width:0px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(0,153,57);border-right-color:rgb(0,153,57);border-bottom-color:rgb(0,153,57);border-left-color:rgb(0,153,57);padding-top:2px;margin-top:2px"><font color="#666666"> </font><a href="mailto:alexfh@google.com" style="color:rgb(17,85,204)" target="_blank">alexfh@google.com</a> |</span><span style="border-top-width:2px;border-right-width:0px;border-bottom-width:0px;border-left-width:0px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(238,178,17);border-right-color:rgb(238,178,17);border-bottom-color:rgb(238,178,17);border-left-color:rgb(238,178,17);padding-top:2px;margin-top:2px"> <a value="+35315435283" style="color:rgb(17,85,204)">+49 151 221 77 957</a></span></div>


</div><div><font color="#666666"><span style="font-family:Arial,Verdana,sans-serif">Google Germany GmbH | </span><span style="font-family:Arial,Verdana,sans-serif">Dienerstr. 12 | </span><span style="font-family:Arial,Verdana,sans-serif">80331 München</span></font></div>


<br>
</div>
</div>