<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
</head>







<body style="background-color: #fff;">
<span style="display:none"> </span>

<!--~-|**|PrettyHtmlStartT|**|-~-->
<div id="ygrp-mlmsg" style="position:relative;">
  <div id="ygrp-msg" style="z-index: 1;">
<!--~-|**|PrettyHtmlEndT|**|-~-->

    <div id="ygrp-text" >
      
      
      <p>Also, for what it's worth, I was able to get the P25 CAI dissector working in wireshark and it also identifies every frame as a HDU with a NAC (including DUID) of all zeroes.  The check bit at the end of the NAC alternates between 0 and 1, I can't tell if that's the 113th bit that I'm looking at.<br>
<br>
I just overhead someone say 'you need to encrypt your radio' in the channel I'm listening to.  Is it possible that it's encrypted with an empty key?  Would that cause this to happen?<br>
<br>
--- In <a href="mailto:op25-dev%40yahoogroups.com">op25-dev@yahoogroups.com</a>, "rrgsti" <bobrich@...> wrote:<br>
><br>
> Success!  Sort of.<br>
> <br>
> For some reason, this patch makes it work:<br>
> <br>
> Index: data_unit.cc<br>
> ===================================================================<br>
> --- data_unit.cc   (revision 296)<br>
> +++ data_unit.cc       (working copy)<br>
> @@ -36,7 +36,7 @@<br>
>  data_unit::make_data_unit(const_bit_queue& frame_body)<br>
>  {<br>
>     data_unit_sptr d;<br>
> -   uint8_t duid = extract(frame_body, 60, 64);<br>
> +   uint8_t duid = extract(frame_body, 113, 114);<br>
>     switch(duid) {<br>
>     case 0x0:<br>
>        d = data_unit_sptr(new hdu(frame_body));<br>
> @@ -44,6 +44,7 @@<br>
>     case 0x3:<br>
>        d = data_unit_sptr(new tdu(frame_body, false));<br>
>        break;<br>
> +   case 0x1:<br>
>     case 0x5:<br>
>        d = data_unit_sptr(new ldu1(frame_body));<br>
>        break;<br>
> <br>
> <br>
> Basically looking at bit 113 (only) seems to indicate whether or not it's a voice frame of some sort.  The audio still sounds like everyone is talking through a fan, but there are no dropouts, no clicks, no stutters, etc.  <br>
> <br>
> I could not find anything resembling a DUID or NAC in the headers.  If anyone has a suggestion to de-warble the audio, I would greatly appreciate it.<br>
> <br>
> Here's a tar file with the IQ data, audio output and python file compiled from the flowgraph.<br>
> <br>
> <a href="http://s3.amazonaws.com/public-xrp/p25.tar.bz2">http://s3.amazonaws.com/public-xrp/p25.tar.bz2</a><br>
> <br>
> Here's the .wav file by itself<br>
> <br>
> <a href="http://s3.amazonaws.com/public-xrp/p25-fixed.wav">http://s3.amazonaws.com/public-xrp/p25-fixed.wav</a><br>
> <br>
> Here is another set of samples of IQ file and output .wav<br>
> <br>
> Thanks!<br>
> <br>
> <br>
> --- In <a href="mailto:op25-dev%40yahoogroups.com">op25-dev@yahoogroups.com</a>, "rrgsti" <bobrich@> wrote:<br>
> ><br>
> > Hi folks,<br>
> > <br>
> > Thanks for the input.  For some reason I didn't see p25craft.py and I think that will help me create reference packets to sort out what should and should not be.<br>
> > <br>
> > I'm not able to do any captures until this evening, but I had previously uploaded this, which I *believe* was the source used for the few lines in the last email.  This was from gnuradio file sink recording from the RTL at 1Msps (the .wav file is the decoded audio from the same session using my hacked up data_unit.cc):<br>
> > <br>
> > <a href="http://s3.amazonaws.com/public-xrp/p25.iq.bz2">http://s3.amazonaws.com/public-xrp/p25.iq.bz2</a><br>
> > <a href="http://s3.amazonaws.com/public-xrp/p25.wav">http://s3.amazonaws.com/public-xrp/p25.wav</a><br>
> > <br>
> > The capture is from a local repeater in the Ohio MARCS system.  I get pretty strong signals from a few of them, I believe this one in particular was from London, Ohio in Madison county (the control channel may actually be in there as well).  I do know that RadioReference streams this repeater through a Uniden BC796D digital scanner.<br>
> > <br>
> > I'd be happy to capture more if it's of any use or upload the files to another location.<br>
> > <br>
> > Thanks<br>
> > <br>
> > <br>
> > --- In <a href="mailto:op25-dev%40yahoogroups.com">op25-dev@yahoogroups.com</a>, Matt Robert <matt.robert80@> wrote:<br>
> > ><br>
> > > I thought the same thing but then recalled that 000 is not available as a NAC - the standard defines the value as having the range 0x001-0xFFF.<br>
> > > <br>
> > > I think a capture file would be ideal - this is a curly one for sure!<br>
> > > <br>
> > > Bob - which system is this coming off?<br>
> > > <br>
> > > Cheers,<br>
> > > Matt<br>
> > > <br>
> > > <br>
> > > ________________________________<br>
> > >  From: Steve Glass <stevie.glass@><br>
> > > To: <a href="mailto:op25-dev%40yahoogroups.com">op25-dev@yahoogroups.com</a> <br>
> > > Sent: Thursday, 3 May 2012 11:31 AM<br>
> > > Subject: Re: [op25-dev] Re: OP25 GRC - Almost but not quite working<br>
> > >  <br>
> > > <br>
> > >   <br>
> > > The 64 bit NID consists of the NAC+DUID (the low order 16 bits) and the error correction bits (the high order 48 bits). Its possible the NAC is zero for a data frame since it has its own addressing information within the frame itself. That would leave you with just the DUID and the appropriate BCH code for that value. Its possible (but not very likely) that this would mean the high order bits would be mostly zeroes.<br>
> > > <br>
> > > <br>
> > > On 3 May 2012 01:02, rrgsti <bobrich@> wrote:<br>
> > > <br>
> > >  <br>
> > > >  <br>
> > > >Hi folks,<br>
> > > ><br>
> > > >I'm still tinkering with this but am running into a bit of a wall with regards to P25 data.<br>
> > > ><br>
> > > >These two lines are dumped to stderr using a call to the dump_cw function that I added to the code.  I'm only dumping the first 30 bytes for brevity:<br>
> > > ><br>
> > > ><br>
> > > >55 75 f5 ff 77 ff 00 00 02 00 00 00 00 00 01 26 2d 02 0f 68 4f ff ff ff ff ff fe fc 25 ed<br>
> > > ><br>
> > > >55 75 f5 ff 77 ff 00 00 02 00 00 00 00 00 5b 10 ba 16 de 2e 82 69 36 3d 98 1f 9b f8 8e c6<br>
> > > ><br>
> > > ><br>
> > > Based on what I've been able to determine so far, the first 48 bits are frame sync, and they should be fixed at 0x5575f5ff77ff, which is what we see above.<br>
> > > ><br>
> > > >The next 64 bits are supposed to be NID, which includes the DUID.<br>
> > > ><br>
> > > >I could be wrong, but I believe the 02 (which alternates between 02 and 03 in the lines below) at the 9th byte, is the status bit-pair that is  interleaved every 70 bits (9 bytes * 8 bits - 72 bits into the frame).  Once removed, that shifts the remaining bits to the left 2, which still leaves the NID essentially filled with zeroes except for the last two bits.  Immediately after the NID, however, the bits start flying again.<br>
> > > ><br>
> > > >Does this seem normal?  I can't really find any annotated hex dumps of a P25 frame to try to line things up, but it seems that the NID should be populated with something other than zeroes.   If you bit shift the 15th bit 2 to the left, we'll get a parity bit set every now and then (again, unless I'm messing something up), but nothing else.<br>
> > > ><br>
> > > >I'm completely open to the fact that this could just be a bad signal, but I can get very clear decodes of the voice if I force the type to LDU1 or LDU2, and I have never seen anything but all zeroes here (across many minutes of decoded voice data)<br>
> > > ><br>
> > > >Any thoughts?<br>
> > > ><br>
> > > ><br>
> > > >--- In <a href="mailto:op25-dev%40yahoogroups.com">op25-dev@yahoogroups.com</a>, "rrgsti" <bobrich@> wrote:<br>
> > > >><br>
> > > >> <br>
> > > >> Hi Matt!<br>
> > > >> <br>
> > > >> Thanks for the info, it sounds like that is a very possible option.  Is there a way to see the state of the fsk4 demodulator?  I did try running with the updated OP25.py that Balint put out on Saturday (uses _op25.fsk4 instead of the Radio Raush module, and it doesn't seem to behave any differently.<br>
> > > >> <br>
> > > >> I did find dump_cw in op25_imbe_frame.h and used it to dump frames right before their duid is read.  I don't know if these will be meaningful, but I'll paste them in here.  Moments of silence have the clusters of 0xff's on the right, while portions where there is audio has more random numbers.<br>
> > > >> <br>
> > > >> I did note that about 9 bytes into this dump there is a byte that keeps flipping between 2 and 3. Is it possible this is where the DUID is (shifted a bit or two).  Each row starting with 0x55 0x75 is a new frame dumped, I only dump the first 32 bytes or so of each one.<br>
> > > >> <br>
> > > >> 55 75 f5 ff 77 ff 00 00 02 00 00 00 00 00 01 26 2d 02 0f 68 4f ff ff ff ff ff fe fc 25 ed <br>
> > > >> 55 75 f5 ff 77 ff 00 00 02 00 00 00 00 00 01 26 2d 02 0f 68 4f ff ff ff ff ff fe fc 25 ed <br>
> > > >> 55 75 f5 ff 77 ff 00 00 02 00 00 00 00 00 01 26 2d 02 0f 68 4f ff ff ff ff ff fe fc 25 ed <br>
> > > >> 55 75 f5 ff 77 ff 00 00 02 00 00 00 00 00 01 26 2d 02 0f 68 4f ff ff ff ff ff fe fc 25 ed <br>
> > > >> 55 75 f5 ff 77 ff 00 00 02 00 00 00 00 00 01 26 2d 03 0f 68 4f ff ff ff ff ff fe fc 25 ed <br>
> > > >> 55 75 f5 ff 77 ff 00 00 02 00 00 00 00 00 01 26 2d 02 0f 68 4f ff ff ff ff ff fe fc 25 ed <br>
> > > >> 55 75 f5 ff 77 ff 00 00 02 00 00 00 00 00 01 26 2d 02 0f 68 4f ff ff ff ff ff fe fc 25 ed <br>
> > > >> 55 75 f5 ff 77 ff 00 00 02 00 00 00 00 00 5b 10 ba 16 de 2e 82 69 36 3d 98 1f 9b f8 8e c6 <br>
> > > >> 55 75 f5 ff 77 ff 00 00 02 00 00 00 00 00 74 35 56 de 42 7b ac 05 90 af 5a 0e 12 84 81 6b <br>
> > > >> 55 75 f5 ff 77 ff 00 00 02 00 00 00 00 00 52 0b 37 d6 c5 a6 11 79 56 f5 9b 1a 1e 22 8a 35 <br>
> > > >> 55 75 f5 ff 77 ff 00 00 02 00 00 00 00 00 7e 2d f0 82 d0 4f f8 4d a2 61 34 94 52 a4 f8 ec <br>
> > > >> 55 75 f5 ff 77 ff 00 00 02 00 00 00 00 00 4e 46 60 ce 5d a8 8b 27 7f 62 78 ab c2 52 ee 0f <br>
> > > >> 55 75 f5 ff 77 ff 00 00 02 00 00 00 00 00 00 00 00 02 55 75 f5 ff 77 ff 2d 6f ae e2 78 2e <br>
> > > >> 55 75 f5 ff 77 ff 00 00 02 00 00 00 00 00 01 26 2d 02 0f 68 4f ff ff ff ff ff fe fc 25 ed <br>
> > > >> 55 75 f5 ff 77 ff 00 00 02 00 00 00 00 00 01 26 2d 02 0f 68 4f ff ff ff ff ff fe fc 25 ed <br>
> > > >> 55 75 f5 ff 77 ff 00 00 03 00 00 00 00 00 01 26 2d 02 0f 68 4f ff ff ff ff ff fe fc 25 ed <br>
> > > >> 55 75 f5 ff 77 ff 00 00 02 00 00 00 00 00 01 26 2d 02 0f 68 4f ff ff ff ff ff fe fc 25 ed <br>
> > > >> 55 75 f5 ff 77 ff 00 00 02 00 00 00 00 00 01 26 2d 02 0f 68 4f ff ff ff ff ff ff fc 25 ed <br>
> > > >> 55 75 f5 ff 77 ff 00 00 02 00 00 00 00 00 45 5e a4 8b 59 7f 74 31 29 f3 ed d2 36 6c fa 30 <br>
> > > >> 55 75 f5 ff 77 ff 00 00 02 00 00 00 00 00 46 33 55 22 52 69 8e 51 5c 01 0b ae 5a eb 36 8f <br>
> > > >> 55 75 f5 ff 77 ff 00 00 02 00 00 00 00 00 5b 10 ba 16 de 2e 82 69 36 3d 98 1f 9a f8 8e c6 <br>
> > > >> 55 75 f5 ff 77 ff 00 00 02 00 00 00 00 00 00 00 00 02 55 75 f5 ff 77 ff 2d 6f ae e2 78 2e <br>
> > > >> 55 75 f5 ff 77 ff 00 00 02 00 00 00 00 00 01 26 2d 02 0f 68 4f ff ff ff ff ff fe fc 25 ed <br>
> > > >> <br>
> > > >> <br>
> > > >> <br>
> > > ><br>
> > > >> --- In <a href="mailto:op25-dev%40yahoogroups.com">op25-dev@yahoogroups.com</a>, Matt Robert <matt.robert80@> wrote:<br>
> > > >> ><br>
> > > >> > Hi Bob,<br>
> > > >> > <br>
> > > >> > Its more than likely a result of a bad signal. The FSK4 demod tends to output zeros when it loses sync which is why the DUID is erroneously coming up as 0x00.<br>
> > > >> > <br>
> > > >> > LDU1/2 are the two types of voice frames. LDU1 has signalling data embedded and LDU2 has encryption sync data embedded.<br>
> > > >> > <br>
> > > >> > The kludge diff posted below will work - but only for valid frames with a corrupt DUID value.<br>
> > > >> > <br>
> > > >> > <br>
> > > >> > I'm sure the root cause is the FSK4 demod isn't locking properly and causing a bad DUID value to be outputted. I have seen similar behaviour in other areas of OP25 - for example I was looking at the IV/MI value (72 bits) on a local P25 system here. Whenever the demodulator ran out of talent, it would output steams of constant zeros.<br>
> > > >> > <br>
> > > >> > Ohio MARCS is a Type 2 Smartzone Omnilink System with CAI compatible ASTRO voice channels - so its essentially P25 compatible. The P25 CAI spec was based on the ASTRO CAI from the same era, so its essentially the same thing.<br>
> > > >> > <br>
> > > >> > Is the system running any form of simulcasting? <br>
> > > >> > <br>
> > > >> > Cheers,<br>
> > > >> > Matt<br>
> > > >> > <br>
> > > >> > ________________________________<br>
> > > >> >  From: rrgsti <bobrich@><br>
> > > ><br>
> > > >> > To: <a href="mailto:op25-dev%40yahoogroups.com">op25-dev@yahoogroups.com</a> <br>
> > > >> > Sent: Thursday, 26 April 2012 10:59 PM<br>
> > > >> > Subject: [op25-dev] Re: OP25 GRC - Almost but not quite working<br>
> > > >> > <br>
> > > >> > <br>
> > > >> > Â  <br>
> > > >> > Quick update from my end.<br>
> > > >> > <br>
> > > >> > It looks like every frame coming out of the fsk4 demodulator (I'm assuming, still a n00b here) is marked with a 'duid' of 0x0.  Consequently, when data_unit.cc initializes a new data_unit from the frame, it is always creating it as an HDU (P25 header) type.  This then prevents the IMBE decoder from being executed b/c it's not a voice data unit type (LDU1/LDU2 (no idea what these mean)).<br>
> > > >> > <br>
> > > >> > I figured maybe it has something to do with our system (Ohio MARCS) not being full P25 compliant and not including metadata of any sort, so I just made the following change to data_unit.cc and re-ran it:<br>
> > > >> > <br>
> > > >> > --- op25-orig/blocks/src/lib/data_unit.cc    2012-04-24 10:31:29.139694592 -0400<br>
> > > >> > +++ op25/blocks/src/lib/data_unit.cc    2012-04-26 08:12:35.183962129 -0400<br>
> > > >> > @@ -39,7 +39,8 @@<br>
> > > >> > uint8_t duid = extract(frame_body, 60, 64);<br>
> > > >> > switch(duid) {<br>
> > > >> > case 0x0:<br>
> > > >> > -      d = data_unit_sptr(new hdu(frame_body));<br>
> > > >> > +      //d = data_unit_sptr(new hdu(frame_body));<br>
> > > >> > +      d = data_unit_sptr(new ldu1(frame_body));<br>
> > > >> > break;<br>
> > > >> > case 0x3:<br>
> > > >> > d = data_unit_sptr(new tdu(frame_body, false));<br>
> > > >> > <br>
> > > >> > This seemed to sort of work as I now get rather garbled, but intelligible, audio from the decoder.<br>
> > > >> > <br>
> > > >> > I've uploaded the baseband capture (1Msps) and resulting audio .wav file that I get at the following URLS:<br>
> > > >> > <br>
> > > >> > <a href="http://s3.amazonaws.com/public-xrp/p25.iq.bz2">http://s3.amazonaws.com/public-xrp/p25.iq.bz2</a><br>
> > > >> > <a href="http://s3.amazonaws.com/public-xrp/p25.wav">http://s3.amazonaws.com/public-xrp/p25.wav</a><br>
> > > >> > <br>
> > > >> > Not sure if this is of any use, but it is encouraging to hear voices at least.  :)<br>
> > > >> > <br>
> > > >> > Thanks!<br>
> > > >> > <br>
> > > >> > Bob<br>
> > > >> > <br>
> > > >> > --- In <a href="mailto:op25-dev%40yahoogroups.com">op25-dev@yahoogroups.com</a>, Andy Knitt <andyknitt@> wrote:<br>
> > > >> > ><br>
> > > >> > > It looks like imbe_decoder_factory.cc in OP25 defaults to<br>
> > > >> > > 'software_imbe_decoder'.  I manually changed the IMBE environment variable<br>
> > > >> > > to "soft" and confirmed it with printenv, but I'm still getting a flat line<br>
> > > >> > > at the output of the OP25 block.  Any other ideas?<br>
> > > >> > > <br>
> > > >> > > Thanks,<br>
> > > >> > > <br>
> > > >> > > Andy<br>
> > > >> > > <br>
> > > >> > > On Mon, Apr 23, 2012 at 11:47 PM, Balint <balint256@> wrote:<br>
> > > >> > > <br>
> > > >> > > > **<br>
> > > >> > > ><br>
> > > >> > > ><br>
> > > >> > > > I *still* haven't checked out the latest code, but in my old code the<br>
> > > >> > > > default voice frame output was (null?).****<br>
> > > >> > > ><br>
> > > >> > > > There are options for file output, null, external (hardware) decoder and<br>
> > > >> > > > internal decoder. You used to be able to spec this on the command line as<br>
> > > >> > > > an environment variable:****<br>
> > > >> > > ><br>
> > > >> > > > export IMBE=soft****<br>
> > > >> > > ><br>
> > > >> > > > I changed my default to be the internal decoder (see<br>
> > > >> > > > `imbe_decoder_factory.cc').****<br>
> > > >> > > ><br>
> > > >> > > > ** **<br>
> > > >> > > ><br>
> > > >> > > > *From:* <a href="mailto:op25-dev%40yahoogroups.com">op25-dev@yahoogroups.com</a> [mailto:<a href="mailto:op25-dev%40yahoogroups.com">op25-dev@yahoogroups.com</a>] *On<br>
> > > >> > > > Behalf Of *Andy Knitt<br>
> > > >> > > > *Sent:* Tuesday, 24 April 2012 12:45 PM<br>
> > > >> > > > *To:* <a href="mailto:op25-dev%40yahoogroups.com">op25-dev@yahoogroups.com</a><br>
> > > >> > > > *Subject:* [op25-dev] OP25 GRC - Almost but not quite working****<br>
> > > >> > > ><br>
> > > >> > > > ** **<br>
> > > >> > > ><br>
> > > >> > > >   ****<br>
> > > >> > > ><br>
> > > >> > > > I have the OP25 GRC demo that Balint provided up and running.<br>
> > > >> > > > Everything seems to working except I'm not getting any audio out of<br>
> > > >> > > > the OP25 block. I'm getting the "four line" output from the dibit<br>
> > > >> > > > output port when there is traffic on the channel, and the autotune<br>
> > > >> > > > output is outputting data. However, no audio. I put a scope on the<br>
> > > >> > > > audio output and it's a flat line at zero, even when the dibit output<br>
> > > >> > > > is "four lines". Any tips on how to further troubleshoot?<br>
> > > >> > > ><br>
> > > >> > > > Thanks,<br>
> > > >> > > ><br>
> > > >> > > > Andy****<br>
> > > >> > > ><br>
> > > >> > > > ****<br>
> > > >> > > ><br>
> > > >> > > > <br>
> > > >> > > ><br>
> > > >> > ><br>
> > > >> ><br>
> > > >><br>
> > > ><br>
> > > ><br>
> > ><br>
> ><br>
><br>
<br>
</p>

    </div>
     

    <!--~-|**|PrettyHtmlStart|**|-~-->
    <div style="color: #fff; height: 0;">__._,_.___</div>

        
  
   
    <div id="ygrp-actbar" style="clear: both; margin-bottom: 10px; white-space: nowrap; color: #666; padding-top: 15px;">
      <div>
        <a href="mailto:bobrich@gmail.com?subject=Re%3A%20OP25%20GRC%20-%20Almost%20but%20not%20quite%20working" style="margin-right: 0; padding-right: 0;">
          Reply to <span style="font-weight: 700;">sender</span></a> |
        <a href="mailto:op25-dev@yahoogroups.com?subject=Re%3A%20OP25%20GRC%20-%20Almost%20but%20not%20quite%20working">
          Reply to <span style="font-weight: 700;">group</span></a> |
                  <a href="http://groups.yahoo.com/group/op25-dev/post;_ylc=X3oDMTJwNDc2anZqBF9TAzk3MzU5NzE0BGdycElkAzIyMDg0NTgyBGdycHNwSWQDMTcwNTY0NDA4OQRtc2dJZAM2OTgEc2VjA2Z0cgRzbGsDcnBseQRzdGltZQMxMzM2NzA4NTI5?act=reply&messageNum=698">Reply <span style="font-weight: 700;">via web post</span></a> |
                <a href="http://groups.yahoo.com/group/op25-dev/post;_ylc=X3oDMTJmMWcwOGw3BF9TAzk3MzU5NzE0BGdycElkAzIyMDg0NTgyBGdycHNwSWQDMTcwNTY0NDA4OQRzZWMDZnRyBHNsawNudHBjBHN0aW1lAzEzMzY3MDg1Mjk-" style="font-weight: 700;">Start a New Topic</a>
      </div>

                <a href="http://groups.yahoo.com/group/op25-dev/message/665;_ylc=X3oDMTMzOWw1c24zBF9TAzk3MzU5NzE0BGdycElkAzIyMDg0NTgyBGdycHNwSWQDMTcwNTY0NDA4OQRtc2dJZAM2OTgEc2VjA2Z0cgRzbGsDdnRwYwRzdGltZQMxMzM2NzA4NTI5BHRwY0lkAzY2NQ--">Messages in this topic</a>
          (<span style="font-weight: 700;">20</span>)
          </div> 
<!------- Start Nav Bar ------>
<!-- |**|begin egp html banner|**| -->
<!-- |**|end egp html banner|**| -->

<!-- |**|begin egp html banner|**| -->
<div id="ygrp-vital" style="background-color: #e0ecee; font-family: Verdana; font-size: 10px; margin-bottom: 10px; padding: 10px;">
      <span id="vithd" style="font-weight: bold; color: #333; text-transform: uppercase; ">Recent Activity:</span>

    <ul style="list-style-type: none; margin: 0; padding: 0; display: inline;">
            <li style="border-right: 1px solid #000; font-weight: 700; display: inline; padding: 0 5px; margin-left: 0;">
      <span class="cat"><a href="http://groups.yahoo.com/group/op25-dev/members;_ylc=X3oDMTJnYTF1czk5BF9TAzk3MzU5NzE0BGdycElkAzIyMDg0NTgyBGdycHNwSWQDMTcwNTY0NDA4OQRzZWMDdnRsBHNsawN2bWJycwRzdGltZQMxMzM2NzA4NTI5?o=6" style="text-decoration: none;">New Members</a></span>
      <span class="ct" style="color: #ff7900;">7</span>
    </li>
                                              </ul>
    
  <div style="clear: both; padding-top: 2px; color: #1e66ae;">
    <a href="http://groups.yahoo.com/group/op25-dev;_ylc=X3oDMTJmZWJzMDZ1BF9TAzk3MzU5NzE0BGdycElkAzIyMDg0NTgyBGdycHNwSWQDMTcwNTY0NDA4OQRzZWMDdnRsBHNsawN2Z2hwBHN0aW1lAzEzMzY3MDg1Mjk-" style="text-decoration: none;">Visit Your Group</a>
  </div>
</div>

  
<div id="ft" style="font-family: Arial; font-size: 11px; margin-top: 5px; padding: 0 2px 0 0; clear: both;">
  <a href="http://groups.yahoo.com/;_ylc=X3oDMTJlbDJwM29wBF9TAzk3MzU5NzE0BGdycElkAzIyMDg0NTgyBGdycHNwSWQDMTcwNTY0NDA4OQRzZWMDZnRyBHNsawNnZnAEc3RpbWUDMTMzNjcwODUyOQ--" style="float: left;"><img src="http://l.yimg.com/a/i/us/yg/logo/us.gif" height="15" width="137" alt="Yahoo! Groups" style="border: 0;"/></a>
  <div style="color: #747575; float: right;">Switch to: <a href="mailto:op25-dev-traditional@yahoogroups.com?subject=Change Delivery Format: Traditional" style="text-decoration: none;">Text-Only</a>, <a href="mailto:op25-dev-digest@yahoogroups.com?subject=Email Delivery: Digest" class="margin-rt" style="text-decoration: none;">Daily Digest</a> • <a href="mailto:op25-dev-unsubscribe@yahoogroups.com?subject=Unsubscribe" style="text-decoration: none;">Unsubscribe</a> • <a href="http://docs.yahoo.com/info/terms/" style="text-decoration: none;">Terms of Use</a></div>
</div>

<!-- |**|end egp html banner|**| -->

  </div> <!-- ygrp-msg -->

  <!-- Sponsor -->
  <!-- |**|begin egp html banner|**| -->
  <div id="ygrp-sponsor" style="width:160px; float:right; clear:none; margin:0 0 25px 0; background: #fff;">

<!-- Start Recommendations -->
<div id="ygrp-reco">
     </div>
<!-- End Recommendations -->



  </div>   <!-- |**|end egp html banner|**| -->

  <div style="clear:both; color: #FFF; font-size:1px;">.</div>
</div>

  <img src="http://geo.yahoo.com/serv?s=97359714/grpId=22084582/grpspId=1705644089/msgId=698/stime=1336708529/nc1=4025321/nc2=3848643/nc3=4507179" width="1" height="1"> <br>

<div style="color: #fff; height: 0;">__,_._,___</div>
<!--~-|**|PrettyHtmlEnd|**|-~-->

</body>

<!--~-|**|PrettyHtmlStart|**|-~-->
<head>
  <style type="text/css">
  <!--
  #ygrp-mkp {
  border: 1px solid #d8d8d8;
  font-family: Arial;
  margin: 10px 0;
  padding: 0 10px;
}

#ygrp-mkp hr {
  border: 1px solid #d8d8d8;
}

#ygrp-mkp #hd {
  color: #628c2a;
  font-size: 85%;
  font-weight: 700;
  line-height: 122%;
  margin: 10px 0;
}

#ygrp-mkp #ads {
  margin-bottom: 10px;
}

#ygrp-mkp .ad {
  padding: 0 0;
}

#ygrp-mkp .ad p {
  margin: 0;
}

#ygrp-mkp .ad a {
  color: #0000ff;
  text-decoration: none;
}
  #ygrp-sponsor #ygrp-lc {
  font-family: Arial;
}

#ygrp-sponsor #ygrp-lc #hd {
  margin: 10px 0px;
  font-weight: 700;
  font-size: 78%;
  line-height: 122%;
}

#ygrp-sponsor #ygrp-lc .ad {
  margin-bottom: 10px;
  padding: 0 0;
}

  a {
    color: #1e66ae;
  }

  #actions {
    font-family: Verdana;
    font-size: 11px;
    padding: 10px 0;
  }

  #activity {
    background-color: #e0ecee;
    float: left;
    font-family: Verdana;
    font-size: 10px;
    padding: 10px;
  }

  #activity span {
    font-weight: 700;
  }

  #activity span:first-child {
    text-transform: uppercase;
  }

  #activity span a {
    color: #5085b6;
    text-decoration: none;
  }

  #activity span span {
    color: #ff7900;
  }

  #activity span .underline {
    text-decoration: underline;
  }

  .attach {
    clear: both;
    display: table;
    font-family: Arial;
    font-size: 12px;
    padding: 10px 0;
    width: 400px;
  }

  .attach div a {
    text-decoration: none;
  }

  .attach img {
    border: none;
    padding-right: 5px;
  }

  .attach label {
    display: block;
    margin-bottom: 5px;
  }

  .attach label a {
    text-decoration: none;
  }
  
  blockquote {
    margin: 0 0 0 4px;
  }

  .bold {
    font-family: Arial;
    font-size: 13px;
    font-weight: 700;
  }

  .bold a {
    text-decoration: none;
  }

  dd.last p a {
    font-family: Verdana;
    font-weight: 700;
  }

  dd.last p span {
    margin-right: 10px;
    font-family: Verdana;
    font-weight: 700;
  }

  dd.last p span.yshortcuts {
    margin-right: 0;
  }

  div.attach-table div div a {
    text-decoration: none;
  }

  div.attach-table {
    width: 400px;
  }

  div.file-title a, div.file-title a:active, div.file-title a:hover, div.file-title a:visited {
    text-decoration: none;
  }

  div.photo-title a, div.photo-title a:active, div.photo-title a:hover, div.photo-title a:visited {
    text-decoration: none;
  }

  div#ygrp-mlmsg #ygrp-msg p a span.yshortcuts {
    font-family: Verdana;
    font-size: 10px;
    font-weight: normal;
  }

  .green {
    color: #628c2a;
  }

  .MsoNormal {
    margin: 0 0 0 0;
  }

  o {
    font-size: 0;
  }

  #photos div {
    float: left;
    width: 72px;
  }

  #photos div div {
    border: 1px solid #666666;
    height: 62px;
    overflow: hidden;
    width: 62px;
  }

  #photos div label {
    color: #666666;
    font-size: 10px;
    overflow: hidden;
    text-align: center;
    white-space: nowrap;
    width: 64px;
  }

  #reco-category {
    font-size: 77%;
  }

  #reco-desc {
    font-size: 77%;
  }

  .replbq {
    margin: 4px;
  }

  #ygrp-actbar div a:first-child {
   /* border-right: 0px solid #000;*/
    margin-right: 2px;
    padding-right: 5px;
  }

  #ygrp-mlmsg {
    font-size: 13px;
    font-family: Arial, helvetica,clean, sans-serif;
    *font-size: small;
    *font: x-small;
  }

  #ygrp-mlmsg table {
    font-size: inherit;
    font: 100%;
  }

  #ygrp-mlmsg select, input, textarea {
    font: 99% Arial, Helvetica, clean, sans-serif;
  }

  #ygrp-mlmsg pre, code {
    font:115% monospace;
    *font-size:100%;
  }

  #ygrp-mlmsg * {
    line-height: 1.22em;
  }

  #ygrp-mlmsg #logo {
    padding-bottom: 10px;
  }

  #ygrp-mlmsg a {
    color: #1E66AE;
  }

  #ygrp-msg p a {
    font-family: Verdana;
  }

  #ygrp-msg p#attach-count span {
    color: #1E66AE;
    font-weight: 700;
  }

  #ygrp-reco #reco-head {
    color: #ff7900;
    font-weight: 700;
  }

  #ygrp-reco {
    margin-bottom: 20px;
    padding: 0px;
  }

  #ygrp-sponsor #ov li a {
    font-size: 130%;
    text-decoration: none;
  }

  #ygrp-sponsor #ov li {
    font-size: 77%;
    list-style-type: square;
    padding: 6px 0;
  } 

  #ygrp-sponsor #ov ul {
    margin: 0;
    padding: 0 0 0 8px;
  }

  #ygrp-text {
    font-family: Georgia;
  }

  #ygrp-text p {
    margin: 0 0 1em 0;
  }

  #ygrp-text tt {
    font-size: 120%;
  }

  #ygrp-vital ul li:last-child {
    border-right: none !important; 
  } 
  -->
  </style>
</head>

<!--~-|**|PrettyHtmlEnd|**|-~-->
</html>
<!-- end group email -->