<html xmlns:v="urn:schemas-microsoft-com:vml" 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=us-ascii">
<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:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal">We recently experienced a series of memory alerts on our windows servers that didn't make sense.  Although Xymon was indicating that virtual memory was completely used, logging into the server itself showed there were no issues.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">At first, I had thought there was something wrong with the data that the XymonPS client was sending and working with Zak Beck we found a small tidbit of code to resolve a "bbwin bug".<o:p></o:p></p>
<p class="MsoNormal">By flopping a 0 to a 1 we could reverse the way the numbers were reported and yet this didn't resolve the problem.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">It became obvious that the data being sent from the XymonPS client was correct but once on the server something was getting handled differently.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Below is a detailed look at what we were seeing and then how I corrected it.  The corrections may or may not want to be included in future code releases.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Here is what the XymonPS data looked like when we were getting alerts. 
<o:p></o:p></p>
<p class="MsoNormal">As you can see there is nothing that would indicate a problem:<o:p></o:p></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">[memory]<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">memory    Total    Used<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">physical: 4095 1266<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">virtual: 4506 4111  <--- These are the numbers we are interested in.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">page: 8600 5297<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">This is what was the Xymon server used to create our alert:<o:p></o:p></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">Memory              Used      Total  Percentage<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">Physical           1266M      4095M         30%<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">Actual             4111M  >>> 4095M <<<    100% <--- Here is the alert<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">Swap               5297M      8600M         61%<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">As you can see - the "Total" available "Actual" memory is the same as the Total available Physical memory.  But, this is not right, the total available Actual memory should have been 4506M.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Just for the sake of having this information included, here is what the memory data looks like from a linux client (there is no issue here):<o:p></o:p></p>
<p class="MsoNormal">Linux data:<o:p></o:p></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">[free]<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">             total       used       free     shared    buffers     cached<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">Mem:      16556808    4895408   11661400          0     259376    2508448<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">-/+ buffers/cache:    2127584   14429224<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">Swap:      1340412          0    1340412<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Displayed:<o:p></o:p></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">Memory              Used       Total  Percentage<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">Physical           4780M      16168M         29%<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">Actual             2077M      16168M         12%<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">Swap                  0M       1308M          0%<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">So, I had to find out why the total physical memory was used to calculate the percentage of used space for the "Actual" memory when the client is a Windows server (XymonPS or BBWin).<o:p></o:p></p>
<p class="MsoNormal">What I found was that although there is a variable used for memactused there was nothing for memacttotal.  So I added a new value for memacttotal which then required me to add the same values to bbwin.c (see below).<o:p></o:p></p>
<p class="MsoNormal">This also required a modification to linux.c (see below) which instead of using memacttotal, it simiply reususes the value for memphytotal which is essencially the same thing that is currently being done now.<o:p></o:p></p>
<p class="MsoNormal">Although I have provided patch files for bbwin.c and linux.c ALL of the xymond/client/*.c files need to be modified.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">xymond_client.c patch:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">--- xymond_client.c.ORIG        2016-01-27 09:53:58.321793949 -0600<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">+++ xymond_client.c     2016-01-28 12:57:51.676006980 -0600<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">@@ -909,7 +909,7 @@<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">void unix_memory_report(char *hostname, char *clientclass, enum ostype_t os,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">                        void *hinfo, char *fromline, char *timestr,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">-                       long memphystotal, long memphysused, long memactused,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">+                       long memphystotal, long memphysused, long memacttotal, long memactused,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">                        long memswaptotal, long memswapused)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">        long memphyspct = 0, memswappct = 0, memactpct = 0;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">@@ -938,7 +938,7 @@<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">                if (memswappct > swapred)    swapcolor = COL_RED;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">        }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">-       if (memactused != -1) memactpct = (memphystotal > 0) ? ((100 * memactused) / memphystotal) : 0;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">+       if (memactused != -1) memactpct = (memacttotal > 0) ? ((100 * memactused) / memacttotal) : 0;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">        if (memactpct <= 100) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">                if (memactpct  > actyellow)  actcolor  = COL_YELLOW;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">                if (memactpct  > actred)     actcolor  = COL_RED;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">@@ -965,30 +965,30 @@<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">                memorysummary);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">        addtostatus(msgline);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">-       sprintf(msgline, "   %-12s%12s%12s%12s\n", "Memory", "Used", "Total", "Percentage");<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">+       sprintf(msgline, "   %-16s%12s%12s%12s\n", "Memory", "Used", "Total", "Percentage");<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">        addtostatus(msgline);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">-       sprintf(msgline, "&%s %-12s%11ldM%11ldM%11ld%%\n",<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">-               colorname(physcolor), "Physical", memphysused, memphystotal, memphyspct);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">+       sprintf(msgline, "&%s %-16s%11ldM%11ldM%11ld%%\n",<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">+               colorname(physcolor), "Real/Physical", memphysused, memphystotal, memphyspct);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">        addtostatus(msgline);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">        if (memactused != -1) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">                if (memactpct <= 100)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">-                       sprintf(msgline, "&%s %-12s%11ldM%11ldM%11ld%%\n",<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">-                               colorname(actcolor), "Actual", memactused, memphystotal, memactpct);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">+                       sprintf(msgline, "&%s %-16s%11ldM%11ldM%11ld%%\n",<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">+                               colorname(actcolor), "Actual/Virtual", memactused, memacttotal, memactpct);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">                else<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">-                       sprintf(msgline, "&%s %-12s%11ldM%11ldM%11ld%% - invalid data\n",<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">-                               colorname(COL_CLEAR), "Actual", memactused, memphystotal, 0L);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">+                       sprintf(msgline, "&%s %-16s%11ldM%11ldM%11ld%% - invalid data\n",<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">+                               colorname(COL_CLEAR), "Actual/Virtual", memactused, memacttotal, 0L);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">                addtostatus(msgline);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">        }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">        if (memswapused != -1) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">                if (memswappct <= 100)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">-                       sprintf(msgline, "&%s %-12s%11ldM%11ldM%11ld%%\n",<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">-                               colorname(swapcolor), "Swap", memswapused, memswaptotal, memswappct);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">+                       sprintf(msgline, "&%s %-16s%11ldM%11ldM%11ld%%\n",<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">+                               colorname(swapcolor), "Swap/Page", memswapused, memswaptotal, memswappct);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">                else<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">-                       sprintf(msgline, "&%s %-12s%11ldM%11ldM%11ld%% - invalid data\n",<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">+                       sprintf(msgline, "&%s %-16s%11ldM%11ldM%11ld%% - invalid data\n",<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">                                colorname(COL_CLEAR), "Swap", memswapused, memswaptotal, 0L);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">                addtostatus(msgline);<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">bbwin.c patch:<o:p></o:p></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">--- bbwin.c.ORIG        2016-01-27 09:54:13.989793661 -0600<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">+++ bbwin.c     2016-01-27 09:54:17.709793593 -0600<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">@@ -487,7 +487,7 @@<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">                if (p) sscanf(p, "\nvirtual: %ld %ld", &memacttotal, &memactused);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">                dbgprintf("DEBUG Memory %ld %ld %ld %ld %ld\n", memphystotal, memphysused, memactused, memswaptotal, memswapused); /* DEBUG TODO Remove*/<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">                 unix_memory_report(hostname, clienttype, os, hinfo, fromline, timestr,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">-                                   memphystotal, memphysused, memactused, memswaptotal, memswapused);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">+                                   memphystotal, memphysused, memacttotal, memactused, memswaptotal, memswapused);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">         }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">        splitmsg_done();<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">linux.c patch:<o:p></o:p></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">--- linux.c.ORIG        2016-01-27 09:54:23.861793480 -0600<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">+++ linux.c     2016-01-27 09:54:27.545793413 -0600<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">@@ -135,7 +135,7 @@<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">                }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">                unix_memory_report(hostname, clienttype, os, hinfo, fromline, timestr,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">-                                  memphystotal, memphysused, memactused, memswaptotal, memswapused);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">+                                  memphystotal, memphysused, memphystotal, memactused, memswaptotal, memswapused);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">        }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">        if (mdstatstr) {<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">After modifications the data from the client remains the same but what the server acts upon and displays now looks like:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Windows/XymonPS:<o:p></o:p></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">Memory                  Used       Total  Percentage<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">Real/Physical          1444M       5119M         28%<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">Actual/Virtual           57M       2047M          2%<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">Swap/Page              1742M      10237M         17%<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Linux:<o:p></o:p></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">Memory                  Used       Total  Percentage<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">Real/Physical          3625M       3949M         91%<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">Actual/Virtual          889M       3949M         22%<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">Swap/Page                 6M       4092M          0%<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">You will notice that I changed the labels of each line to include what the names are in the graphs.  I figured if I was modifyng these scripts I might as well fix what has been annoying me for a long long time.  :)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I hope this all makes sense.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:#44546A">Thanks,
<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:#44546A">John
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:#1F497D">Upcoming PTO:
<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:#44546A">_____________________________________________________________________
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:#44546A">John Rothlisberger<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:#44546A">IT Strategy, Infrastructure & Security - Technology Growth Platform<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:#44546A">TGP for Business Process Outsourcing<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:#44546A">Accenture<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:#44546A">312.693.3136 office<b><o:p></o:p></b></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:#44546A">_____________________________________________________________________
<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<br>
<hr>
<font face="Arial" color="Gray" size="1"><br>
This message is for the designated recipient only and may contain privileged, proprietary, or otherwise confidential information. If you have received it in error, please notify the sender immediately and delete the original. Any other use of the e-mail by
 you is prohibited. Where allowed by local law, electronic communications with Accenture and its affiliates, including e-mail and instant messaging (including content), may be scanned by our systems for the purposes of information security and assessment of
 internal compliance with Accenture policy. <br>
______________________________________________________________________________________<br>
<br>
www.accenture.com<br>
</font>
</body>
</html>