Discussion:
[OSPL-Dev] Priority based message publishing and Receiving
Rakesh pawar
2011-10-14 07:24:33 UTC
Permalink
Hi, I need to implement a priority based message publishing and receiving.
Is it possible to achieve this in DDS without any dependence on network
hardware ?
--
Cheers !
Rakesh Pawar
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://dev.opensplice.org/pipermail/developer/attachments/20111014/4ee358b0/attachment.htm>
Niels Kortstee
2011-10-14 07:56:26 UTC
Permalink
Hi Rakesh,

Yes this is possible. Try configuring multiple Channels for the networking
service (See deployment documentation for
//OpenSplice/NetworkService/Channels/Channel for more details) i.c.w. the
use of the transport_priority QoS for your DataWriter.

-Niels
Post by Rakesh pawar
Hi, I need to implement a priority based message publishing and receiving.
Is it possible to achieve this in DDS without any dependence on network
hardware ?
--
Cheers !
Rakesh Pawar
_______________________________________________
OpenSplice DDS Developer Mailing List
Developer at opensplice.org
Subscribe / Unsubscribe
http://dev.opensplice.org/mailman/listinfo/developer
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://dev.opensplice.org/pipermail/developer/attachments/20111014/0c67fd62/attachment.htm>
Hans van't Hag
2011-10-14 07:57:59 UTC
Permalink
Hi Rakesh,





Yes, in OpenSplice you can.

OpenSplice implements the notion of priority-bands implemented by what we
call ?network-channels? that are characterized by dedicated receive/transmit
threads per network-channel as well as traffic-shaping and
reactivity-control per network-channel. For all this no specific network
hardware is required. There is although a benefit to be gained if you
network hardware supports DIFSERV as each network-channel can be configured
with its ?own? DIFSERV priority.



The selection of the priority-band (i.e. network-channel) is done
dynamically based on the DDS ?TransportPriority? QoS value of the dataWriter
that writes a sample.

This logical DDS TransportPriority QoS value is ?matched? against the
configured ranges that each network-channel ?manages?.

So important/high-priority (i.e. high TransportPriority value) DDS-data is
sent over a network-channel (aka priority-band) that?s ?dedicated? for
high-priority-data and in this way will ?pre-empt? low-priority-traffic
(both at sending-node as well as receiving node).



Also ?within? a priority-band OpenSplice assures that higher-priority data
is sent on the wire before lower-priority data within that priority-band.



Regards,

Hans





* *

*Hans van 't Hag*

OpenSplice DDS Product Manager

PrismTech Netherlands

Email: hans.vanthag at prismtech.com

Tel: +31742472572

Fax: +31742472571

Gsm: +31624654078



PrismTech is a global leader in standards-based, performance-critical
middleware. Our products enable our OEM, Systems Integrator, and End User
customers to build and optimize high-performance systems primarily for
Mil/Aero, Communications, Industrial, and Financial Markets.
------------------------------

*From:* developer-bounces at opensplice.org [mailto:
developer-bounces at opensplice.org] *On Behalf Of *Rakesh pawar
*Sent:* Friday, October 14, 2011 9:25 AM
*To:* developer
*Subject:* [OSPL-Dev] Priority based message publishing and Receiving



Hi, I need to implement a priority based message publishing and receiving.
Is it possible to achieve this in DDS without any dependence on network
hardware ?
--
Cheers !
Rakesh Pawar
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://dev.opensplice.org/pipermail/developer/attachments/20111014/313a748d/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: image/jpeg
Size: 3349 bytes
Desc: not available
URL: <Loading Image...>
Rakesh pawar
2011-10-14 08:31:25 UTC
Permalink
Hi Hans,

Thanks for replying. So, if OpenSplice DDS has Transport Priority Qos, how
do we implement it and test it. Suppose I create 3 network channels with the
priority band defined in it and I have some 10 topic samples, each belonging
to any of the pre defined priority group. Now if I set the Transport
Priority Qos before publishing these samples, will it show the difference at
the reciever end ( we would also apply the Transport Priority at Subscriber
end) ? Will I get the higher priority samples first with these
configurations? Is there any way of testing it on a smaller scale for demo
purpose?


On Fri, Oct 14, 2011 at 1:27 PM, Hans van't Hag
Post by Niels Kortstee
Hi Rakesh,
Yes, in OpenSplice you can.
OpenSplice implements the notion of priority-bands implemented by what we
call ?network-channels? that are characterized by dedicated receive/transmit
threads per network-channel as well as traffic-shaping and
reactivity-control per network-channel. For all this no specific network
hardware is required. There is although a benefit to be gained if you
network hardware supports DIFSERV as each network-channel can be configured
with its ?own? DIFSERV priority.
The selection of the priority-band (i.e. network-channel) is done
dynamically based on the DDS ?TransportPriority? QoS value of the dataWriter
that writes a sample.
This logical DDS TransportPriority QoS value is ?matched? against the
configured ranges that each network-channel ?manages?.
So important/high-priority (i.e. high TransportPriority value) DDS-data is
sent over a network-channel (aka priority-band) that?s ?dedicated? for
high-priority-data and in this way will ?pre-empt? low-priority-traffic
(both at sending-node as well as receiving node).
Also ?within? a priority-band OpenSplice assures that higher-priority data
is sent on the wire before lower-priority data within that priority-band.
Regards,
Hans
* *
*Hans van 't Hag*
OpenSplice DDS Product Manager
PrismTech Netherlands
Email: hans.vanthag at prismtech.com
Tel: +31742472572
Fax: +31742472571
Gsm: +31624654078
PrismTech is a global leader in standards-based, performance-critical
middleware. Our products enable our OEM, Systems Integrator, and End User
customers to build and optimize high-performance systems primarily for
Mil/Aero, Communications, Industrial, and Financial Markets.
------------------------------
developer-bounces at opensplice.org] *On Behalf Of *Rakesh pawar
*Sent:* Friday, October 14, 2011 9:25 AM
*To:* developer
*Subject:* [OSPL-Dev] Priority based message publishing and Receiving
Hi, I need to implement a priority based message publishing and receiving.
Is it possible to achieve this in DDS without any dependence on network
hardware ?
--
Cheers !
Rakesh Pawar
_______________________________________________
OpenSplice DDS Developer Mailing List
Developer at opensplice.org
Subscribe / Unsubscribe
http://dev.opensplice.org/mailman/listinfo/developer
--
Cheers !
Rakesh Pawar
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://dev.opensplice.org/pipermail/developer/attachments/20111014/3985a21a/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: image/jpeg
Size: 3349 bytes
Desc: not available
URL: <Loading Image...>
Hans van't Hag
2011-10-14 08:39:14 UTC
Permalink
Hi Rakesh,



Interesting, got the same question from our partner RTTS recently, here?s
the same answer J



Its not that trivial to demonstrate with ?simple? test-program, yet here?s a
YouTube video on benchmarking opensplice that demonstrates how this can be
done with the OpenSplice touchstone benchmarking suite.



What you want to demonstrate is that having end-to-end priority-preservation
i.e. having high-priority data being ?handled? by separate high-priority
send-threads in networking, being transported over the wire with a high
diffserv setting if available, being received at the destination-machine by
high-priority-threads and being inserted in the dataReader?s cache with
high-priority. In order for this to become ?visible? you could use for
instance some very big low-priority samples and show that they have
little/limited impact on the latency of small high-priority samples. This is
what the YouTube video on benchmarking OpenSplice explains with using the
OpenSplice Touchstone benchmarking suite.



Regards,

Hans





* *

*Hans van 't Hag*

OpenSplice DDS Product Manager

PrismTech Netherlands

Email: hans.vanthag at prismtech.com

Tel: +31742472572

Fax: +31742472571

Gsm: +31624654078



PrismTech is a global leader in standards-based, performance-critical
middleware. Our products enable our OEM, Systems Integrator, and End User
customers to build and optimize high-performance systems primarily for
Mil/Aero, Communications, Industrial, and Financial Markets.
------------------------------

*From:* developer-bounces at opensplice.org [mailto:
developer-bounces at opensplice.org] *On Behalf Of *Rakesh pawar
*Sent:* Friday, October 14, 2011 10:31 AM
*To:* OpenSplice DDS Developer Mailing List
*Subject:* Re: [OSPL-Dev] Priority based message publishing and Receiving



Hi Hans,



Thanks for replying. So, if OpenSplice DDS has Transport Priority Qos, how
do we implement it and test it. Suppose I create 3 network channels with the
priority band defined in it and I have some 10 topic samples, each belonging
to any of the pre defined priority group. Now if I set the Transport
Priority Qos before publishing these samples, will it show the difference at
the reciever end ( we would also apply the Transport Priority at Subscriber
end) ? Will I get the higher priority samples first with these
configurations? Is there any way of testing it on a smaller scale for demo
purpose?





On Fri, Oct 14, 2011 at 1:27 PM, Hans van't Hag <hans.vanthag at prismtech.com>
wrote:

Hi Rakesh,





Yes, in OpenSplice you can.

OpenSplice implements the notion of priority-bands implemented by what we
call ?network-channels? that are characterized by dedicated receive/transmit
threads per network-channel as well as traffic-shaping and
reactivity-control per network-channel. For all this no specific network
hardware is required. There is although a benefit to be gained if you
network hardware supports DIFSERV as each network-channel can be configured
with its ?own? DIFSERV priority.



The selection of the priority-band (i.e. network-channel) is done
dynamically based on the DDS ?TransportPriority? QoS value of the dataWriter
that writes a sample.

This logical DDS TransportPriority QoS value is ?matched? against the
configured ranges that each network-channel ?manages?.

So important/high-priority (i.e. high TransportPriority value) DDS-data is
sent over a network-channel (aka priority-band) that?s ?dedicated? for
high-priority-data and in this way will ?pre-empt? low-priority-traffic
(both at sending-node as well as receiving node).



Also ?within? a priority-band OpenSplice assures that higher-priority data
is sent on the wire before lower-priority data within that priority-band.



Regards,

Hans





* *

*Hans van 't Hag*

OpenSplice DDS Product Manager

PrismTech Netherlands

Email: hans.vanthag at prismtech.com

Tel: +31742472572

Fax: +31742472571

Gsm: +31624654078



PrismTech is a global leader in standards-based, performance-critical
middleware. Our products enable our OEM, Systems Integrator, and End User
customers to build and optimize high-performance systems primarily for
Mil/Aero, Communications, Industrial, and Financial Markets.
------------------------------

*From:* developer-bounces at opensplice.org [mailto:
developer-bounces at opensplice.org] *On Behalf Of *Rakesh pawar
*Sent:* Friday, October 14, 2011 9:25 AM
*To:* developer
*Subject:* [OSPL-Dev] Priority based message publishing and Receiving



Hi, I need to implement a priority based message publishing and receiving.
Is it possible to achieve this in DDS without any dependence on network
hardware ?
--
Cheers !
Rakesh Pawar




_______________________________________________
OpenSplice DDS Developer Mailing List
Developer at opensplice.org
Subscribe / Unsubscribe http://dev.opensplice.org/mailman/listinfo/developer
--
Cheers !
Rakesh Pawar
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://dev.opensplice.org/pipermail/developer/attachments/20111014/5e971489/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: image/jpeg
Size: 3349 bytes
Desc: not available
URL: <Loading Image...>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: image/jpeg
Size: 3349 bytes
Desc: not available
URL: <Loading Image...>
Rakesh pawar
2011-10-14 08:56:26 UTC
Permalink
hi Hans,
Thanks again for the reply. So, are implying that the higher priority
samples will physically reach faster than the lower priority samples? And
for this I don't have to do anything specific in the logic or code other
than setting the Transport Priority Qos and creating the Network Channels
with priority bands, is it? Also, is "diffserv " a mandatory value ? What
if the diffserv is not supported by the network hardware ?


On Fri, Oct 14, 2011 at 2:09 PM, Hans van't Hag
Post by Niels Kortstee
Hi Rakesh,
Interesting, got the same question from our partner RTTS recently, here?s
the same answer J
Its not that trivial to demonstrate with ?simple? test-program, yet here?s
a YouTube video on benchmarking opensplice that demonstrates how this can be
done with the OpenSplice touchstone benchmarking suite.
What you want to demonstrate is that having end-to-end
priority-preservation i.e. having high-priority data being ?handled? by
separate high-priority send-threads in networking, being transported over
the wire with a high diffserv setting if available, being received at the
destination-machine by high-priority-threads and being inserted in the
dataReader?s cache with high-priority. In order for this to become ?visible?
you could use for instance some very big low-priority samples and show that
they have little/limited impact on the latency of small high-priority
samples. This is what the YouTube video on benchmarking OpenSplice explains
with using the OpenSplice Touchstone benchmarking suite.
Regards,
Hans
* *
*Hans van 't Hag*
OpenSplice DDS Product Manager
PrismTech Netherlands
Email: hans.vanthag at prismtech.com
Tel: +31742472572
Fax: +31742472571
Gsm: +31624654078
PrismTech is a global leader in standards-based, performance-critical
middleware. Our products enable our OEM, Systems Integrator, and End User
customers to build and optimize high-performance systems primarily for
Mil/Aero, Communications, Industrial, and Financial Markets.
------------------------------
developer-bounces at opensplice.org] *On Behalf Of *Rakesh pawar
*Sent:* Friday, October 14, 2011 10:31 AM
*To:* OpenSplice DDS Developer Mailing List
*Subject:* Re: [OSPL-Dev] Priority based message publishing and Receiving
Hi Hans,
Thanks for replying. So, if OpenSplice DDS has Transport Priority Qos,
how do we implement it and test it. Suppose I create 3 network channels with
the priority band defined in it and I have some 10 topic samples, each
belonging to any of the pre defined priority group. Now if I set the
Transport Priority Qos before publishing these samples, will it show the
difference at the reciever end ( we would also apply the Transport Priority
at Subscriber end) ? Will I get the higher priority samples first with these
configurations? Is there any way of testing it on a smaller scale for demo
purpose?
On Fri, Oct 14, 2011 at 1:27 PM, Hans van't Hag <
Hi Rakesh,
Yes, in OpenSplice you can.
OpenSplice implements the notion of priority-bands implemented by what we
call ?network-channels? that are characterized by dedicated receive/transmit
threads per network-channel as well as traffic-shaping and
reactivity-control per network-channel. For all this no specific network
hardware is required. There is although a benefit to be gained if you
network hardware supports DIFSERV as each network-channel can be configured
with its ?own? DIFSERV priority.
The selection of the priority-band (i.e. network-channel) is done
dynamically based on the DDS ?TransportPriority? QoS value of the dataWriter
that writes a sample.
This logical DDS TransportPriority QoS value is ?matched? against the
configured ranges that each network-channel ?manages?.
So important/high-priority (i.e. high TransportPriority value) DDS-data is
sent over a network-channel (aka priority-band) that?s ?dedicated? for
high-priority-data and in this way will ?pre-empt? low-priority-traffic
(both at sending-node as well as receiving node).
Also ?within? a priority-band OpenSplice assures that higher-priority data
is sent on the wire before lower-priority data within that priority-band.
Regards,
Hans
* *
*Hans van 't Hag*
OpenSplice DDS Product Manager
PrismTech Netherlands
Email: hans.vanthag at prismtech.com
Tel: +31742472572
Fax: +31742472571
Gsm: +31624654078
PrismTech is a global leader in standards-based, performance-critical
middleware. Our products enable our OEM, Systems Integrator, and End User
customers to build and optimize high-performance systems primarily for
Mil/Aero, Communications, Industrial, and Financial Markets.
------------------------------
developer-bounces at opensplice.org] *On Behalf Of *Rakesh pawar
*Sent:* Friday, October 14, 2011 9:25 AM
*To:* developer
*Subject:* [OSPL-Dev] Priority based message publishing and Receiving
Hi, I need to implement a priority based message publishing and receiving.
Is it possible to achieve this in DDS without any dependence on network
hardware ?
--
Cheers !
Rakesh Pawar
_______________________________________________
OpenSplice DDS Developer Mailing List
Developer at opensplice.org
Subscribe / Unsubscribe
http://dev.opensplice.org/mailman/listinfo/developer
--
Cheers !
Rakesh Pawar
_______________________________________________
OpenSplice DDS Developer Mailing List
Developer at opensplice.org
Subscribe / Unsubscribe
http://dev.opensplice.org/mailman/listinfo/developer
--
Cheers !
Rakesh Pawar
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://dev.opensplice.org/pipermail/developer/attachments/20111014/a1d62eb4/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: image/jpeg
Size: 3349 bytes
Desc: not available
URL: <Loading Image...>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: image/jpeg
Size: 3349 bytes
Desc: not available
URL: <Loading Image...>
Hans van't Hag
2011-10-14 09:10:05 UTC
Permalink
Hi Rakesh,



Exactly ! and that end-to-end information-priority ?awareness? is a unique
feature of our implementation relying on us having a nodal ?*
network-scheduler?* that schedules all outgoing traffic of the node based
upon actual information-*importance* (DDS TransportPriority) as well as
information-*urgency* (DDS LatencyBudget).



We didn?t talk about LatencyBudget yet, but this expression of ?urgency? is
also taken into account by the scheduling of traffic over a specific
network-channel (priority-band) so that we can increase efficiency by
?packing? multiple samples (potentially of multiple applications on the
node) into single UDP-packets (and you can configure the maximum
fragment-size of these packets, a value of 8 Kbyte it typically good) thus
decreasing the UDP/IP protocol-processing overhead ?per sample? and
consequently increasing efficiency.



So with these logical QoS policies w.r.t. *importance*
(TransportPriorityQoS) and
*urgency* (LatencyBudget QoS) you have a very ?natural? and easy control
over determinism (driven by the *importance*/TransportPriority) and
efficiency (driven by the *urgency*/LatencyBudget).



Regards,

Hans





* *

*Hans van 't Hag*

OpenSplice DDS Product Manager

PrismTech Netherlands

Email: hans.vanthag at prismtech.com

Tel: +31742472572

Fax: +31742472571

Gsm: +31624654078



PrismTech is a global leader in standards-based, performance-critical
middleware. Our products enable our OEM, Systems Integrator, and End User
customers to build and optimize high-performance systems primarily for
Mil/Aero, Communications, Industrial, and Financial Markets.
------------------------------

*From:* developer-bounces at opensplice.org [mailto:
developer-bounces at opensplice.org] *On Behalf Of *Rakesh pawar
*Sent:* Friday, October 14, 2011 10:56 AM
*To:* OpenSplice DDS Developer Mailing List
*Subject:* Re: [OSPL-Dev] Priority based message publishing and Receiving



hi Hans,

Thanks again for the reply. So, are implying that the higher priority
samples will physically reach faster than the lower priority samples? And
for this I don't have to do anything specific in the logic or code other
than setting the Transport Priority Qos and creating the Network Channels
with priority bands, is it? Also, is "diffserv " a mandatory value ? What
if the diffserv is not supported by the network hardware ?



On Fri, Oct 14, 2011 at 2:09 PM, Hans van't Hag <hans.vanthag at prismtech.com>
wrote:

Hi Rakesh,



Interesting, got the same question from our partner RTTS recently, here?s
the same answer J



Its not that trivial to demonstrate with ?simple? test-program, yet here?s a
YouTube video on benchmarking opensplice that demonstrates how this can be
done with the OpenSplice touchstone benchmarking suite.



What you want to demonstrate is that having end-to-end priority-preservation
i.e. having high-priority data being ?handled? by separate high-priority
send-threads in networking, being transported over the wire with a high
diffserv setting if available, being received at the destination-machine by
high-priority-threads and being inserted in the dataReader?s cache with
high-priority. In order for this to become ?visible? you could use for
instance some very big low-priority samples and show that they have
little/limited impact on the latency of small high-priority samples. This is
what the YouTube video on benchmarking OpenSplice explains with using the
OpenSplice Touchstone benchmarking suite.



Regards,

Hans





* *

*Hans van 't Hag*

OpenSplice DDS Product Manager

PrismTech Netherlands

Email: hans.vanthag at prismtech.com

Tel: +31742472572

Fax: +31742472571

Gsm: +31624654078



PrismTech is a global leader in standards-based, performance-critical
middleware. Our products enable our OEM, Systems Integrator, and End User
customers to build and optimize high-performance systems primarily for
Mil/Aero, Communications, Industrial, and Financial Markets.
------------------------------

*From:* developer-bounces at opensplice.org [mailto:
developer-bounces at opensplice.org] *On Behalf Of *Rakesh pawar
*Sent:* Friday, October 14, 2011 10:31 AM
*To:* OpenSplice DDS Developer Mailing List
*Subject:* Re: [OSPL-Dev] Priority based message publishing and Receiving



Hi Hans,



Thanks for replying. So, if OpenSplice DDS has Transport Priority Qos, how
do we implement it and test it. Suppose I create 3 network channels with the
priority band defined in it and I have some 10 topic samples, each belonging
to any of the pre defined priority group. Now if I set the Transport
Priority Qos before publishing these samples, will it show the difference at
the reciever end ( we would also apply the Transport Priority at Subscriber
end) ? Will I get the higher priority samples first with these
configurations? Is there any way of testing it on a smaller scale for demo
purpose?





On Fri, Oct 14, 2011 at 1:27 PM, Hans van't Hag <hans.vanthag at prismtech.com>
wrote:

Hi Rakesh,





Yes, in OpenSplice you can.

OpenSplice implements the notion of priority-bands implemented by what we
call ?network-channels? that are characterized by dedicated receive/transmit
threads per network-channel as well as traffic-shaping and
reactivity-control per network-channel. For all this no specific network
hardware is required. There is although a benefit to be gained if you
network hardware supports DIFSERV as each network-channel can be configured
with its ?own? DIFSERV priority.



The selection of the priority-band (i.e. network-channel) is done
dynamically based on the DDS ?TransportPriority? QoS value of the dataWriter
that writes a sample.

This logical DDS TransportPriority QoS value is ?matched? against the
configured ranges that each network-channel ?manages?.

So important/high-priority (i.e. high TransportPriority value) DDS-data is
sent over a network-channel (aka priority-band) that?s ?dedicated? for
high-priority-data and in this way will ?pre-empt? low-priority-traffic
(both at sending-node as well as receiving node).



Also ?within? a priority-band OpenSplice assures that higher-priority data
is sent on the wire before lower-priority data within that priority-band.



Regards,

Hans





* *

*Hans van 't Hag*

OpenSplice DDS Product Manager

PrismTech Netherlands

Email: hans.vanthag at prismtech.com

Tel: +31742472572

Fax: +31742472571

Gsm: +31624654078



PrismTech is a global leader in standards-based, performance-critical
middleware. Our products enable our OEM, Systems Integrator, and End User
customers to build and optimize high-performance systems primarily for
Mil/Aero, Communications, Industrial, and Financial Markets.
------------------------------

*From:* developer-bounces at opensplice.org [mailto:
developer-bounces at opensplice.org] *On Behalf Of *Rakesh pawar
*Sent:* Friday, October 14, 2011 9:25 AM
*To:* developer
*Subject:* [OSPL-Dev] Priority based message publishing and Receiving



Hi, I need to implement a priority based message publishing and receiving.
Is it possible to achieve this in DDS without any dependence on network
hardware ?
--
Cheers !
Rakesh Pawar




_______________________________________________
OpenSplice DDS Developer Mailing List
Developer at opensplice.org
Subscribe / Unsubscribe http://dev.opensplice.org/mailman/listinfo/developer
--
Cheers !
Rakesh Pawar




_______________________________________________
OpenSplice DDS Developer Mailing List
Developer at opensplice.org
Subscribe / Unsubscribe http://dev.opensplice.org/mailman/listinfo/developer
--
Cheers !
Rakesh Pawar
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://dev.opensplice.org/pipermail/developer/attachments/20111014/d57ea741/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: image/jpeg
Size: 3349 bytes
Desc: not available
URL: <Loading Image...>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: image/jpeg
Size: 3349 bytes
Desc: not available
URL: <Loading Image...>
Loading...