220 4863 <etPan.51ae6e0b.238e1f29.8d5@server-2.private> article
Path: news.gmane.org!not-for-mail
From: "j.carlson" <carrierandoperator@yahoo.co.uk>
Newsgroups: gmane.comp.lang.c++.isocpp.proposals
Subject: Re: Re: Proposal: std::sequence
Date: Tue, 4 Jun 2013 18:45:31 -0400
Lines: 249
Approved: news@gmane.org
Message-ID: <etPan.51ae6e0b.238e1f29.8d5@server-2.private>
References: <4551abbc-43aa-4520-a91a-f8eb25a90588@isocpp.org>
 <e915df62-4930-48ee-a8ac-64261c407234@isocpp.org>
 <2c8e6079-9c87-425a-93e2-39251df57cd8@isocpp.org>
 <CANh-dX=va9uLSbvQc_TRmf8o5TDzQutmkxJDc64g7b=yKyN7sg@mail.gmail.com>
 <9f1cace3-0503-4a3c-a8ce-d7546564b3ef@isocpp.org>
 <a6f024b6-45d6-4c3b-b8a6-3f056aeab51f@isocpp.org>
 <c029551c-241c-4809-adaa-7908434ba10d@isocpp.org>
 <ed3c548d-b470-47ec-850e-95d3c11e29a8@isocpp.org>
 <1c991e6e-6bc3-4822-9ffd-7f2508e63974@isocpp.org>
 <CADfx-VTw0ArZ3+JbD=Vv+o9ncwNp9miYy5RD9XXeOFGEE3N0MQ@mail.gmail.com>
Reply-To: std-proposals@isocpp.org
NNTP-Posting-Host: plane.gmane.org
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="51ae6e0b_3d1b58ba_8d5"
X-Trace: ger.gmane.org 1370385937 32243 80.91.229.3 (4 Jun 2013 22:45:37 GMT)
X-Complaints-To: usenet@ger.gmane.org
NNTP-Posting-Date: Tue, 4 Jun 2013 22:45:37 +0000 (UTC)
To: <std-proposals@isocpp.org>
Original-X-From: std-proposals+bncBDQ2R4E5RIKBBDW4XGGQKGQENR4LYAI@isocpp.org Wed Jun 05 00:45:36 2013
Return-path: <std-proposals+bncBDQ2R4E5RIKBBDW4XGGQKGQENR4LYAI@isocpp.org>
Envelope-to: gclcip-std-proposals@m.gmane.org
Original-Received: from mail-yh0-f72.google.com ([209.85.213.72])
	by plane.gmane.org with esmtp (Exim 4.69)
	(envelope-from <std-proposals+bncBDQ2R4E5RIKBBDW4XGGQKGQENR4LYAI@isocpp.org>)
	id 1Ujzyx-0001gx-N4
	for gclcip-std-proposals@m.gmane.org; Wed, 05 Jun 2013 00:45:35 +0200
Original-Received: by mail-yh0-f72.google.com with SMTP id f73sf953692yha.7
        for <gclcip-std-proposals@m.gmane.org>; Tue, 04 Jun 2013 15:45:34 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=google.com; s=20120113;
        h=x-beenthere:x-yahoo-newman-id:x-yahoo-newman-property:x-ymail-osg
         :x-yahoo-smtp:x-rocket-received:date:from:to:cc:message-id
         :in-reply-to:references:subject:x-mailer:mime-version
         :x-original-sender:x-original-authentication-results:reply-to
         :precedence:mailing-list:list-id:x-google-group-id:list-post
         :list-help:list-archive:list-subscribe:list-unsubscribe:content-type;
        bh=+lR88NSRH501PVO8AUBlX/oTim/BgOBSIl3kMoZOPHg=;
        b=jQgokAdrVcODSeRe70mZtaPf+0tbvic0qtuImr85C9neoTU5bA308VBwtkO0zvr+LN
         nRGK7oCeVV3MmUsSRCT9E1CrCm/slQ0PlMlwF5HKXapmOfLlbmLU7F164JgR3nzPaHEX
         DJlWfTKIBz+tsmJfgldCbRj6IN9bkXGwdFZKlsetiDC4SQz4mNDjqE5iUisNwQalFaic
         SogNfRxCySSjN68QeizW80ssypQptlAHDqMm9HgSRdUvQh8/pAWZngjgn7IotGbZCIR3
         
X-Received: by 10.236.46.50 with SMTP id q38mr16137314yhb.44.1370385934858;
        Tue, 04 Jun 2013 15:45:34 -0700 (PDT)
X-BeenThere: std-proposals@isocpp.org
Original-Received: by 10.49.98.99 with SMTP id eh3ls578777qeb.15.gmail; Tue, 04 Jun
 2013 15:45:33 -0700 (PDT)
X-Received: by 10.236.75.2 with SMTP id y2mr22727079yhd.166.1370385933192;
        Tue, 04 Jun 2013 15:45:33 -0700 (PDT)
Original-Received: from nm29-vm4.bullet.mail.ne1.yahoo.com (nm29-vm4.bullet.mail.ne1.yahoo.com. [98.138.91.189])
        by mx.google.com with ESMTPS id r23si33132018yhl.127.2013.06.04.15.45.32
        for <std-proposals@isocpp.org>
        (version=TLSv1 cipher=RC4-SHA bits=128/128);
        Tue, 04 Jun 2013 15:45:33 -0700 (PDT)
Received-SPF: neutral (google.com: 98.138.91.189 is neither permitted nor denied by best guess record for domain of carrierandoperator@yahoo.co.uk) client-ip=98.138.91.189;
Original-Received: from [98.138.90.57] by nm29.bullet.mail.ne1.yahoo.com with NNFMP; 04 Jun 2013 22:45:32 -0000
Original-Received: from [98.138.226.129] by tm10.bullet.mail.ne1.yahoo.com with NNFMP; 04 Jun 2013 22:45:32 -0000
Original-Received: from [127.0.0.1] by smtp216.mail.ne1.yahoo.com with NNFMP; 04 Jun 2013 22:45:32 -0000
X-Yahoo-Newman-Id: 326991.28417.bm@smtp216.mail.ne1.yahoo.com
X-Yahoo-Newman-Property: ymail-3
X-YMail-OSG: EsnrWSEVM1kxAeMVU5.kWGBxh8XnemcF6jotoVrPjbNMKj9
 YsrkOFRjxnWWsQD2GIia7jMoz5wx_LIquaXV1AZiCYUyNZZZT.74vs3e0zO9
 ICzUqpWG3z.1R7rNGlqxbQQ.vYz4R2toUfGaPOyQGucLgxj73_ijDl9jef8S
 kMAySPS9.zmRGrHQjPc257Mh8KzZofatPKsICm1uRRoNK.RAo9SpF3TxE3Kx
 IwAYDU8PGcdI4VbQbO4USYha33F8djPOyob6wAPpKiK0gQ0sY1oHXa2N56hx
 y.4oPs0OXYIkT5y5778ZHslEKibt6Yuc9FaY_VN_7RQBATlLEi57KTv9j57w
 sX1WSopTffLJfX4WSJkWP2bdY361l9XCYf3gbZGHmEqwBDLg10UXTktBzubc
 8xRff3Hx94UAdKsFbJhITETOWQd4Zo_WF2aTS3n0oDMpE.lCBH4w0gq32cMG
 SG0D0DGEVvGnGdjMr5iGCzSkUjT3hDR6KPhnXv6.mPdthc9bDEDmCsQwVAiG
 qDdzj
X-Yahoo-SMTP: zek3l4KswBAfmLXs2UMoTR8fUk1Gk5ZuUJctqK8zhg--
X-Rocket-Received: from server-2.private (carrierandoperator@24.63.251.162 with )
        by smtp216.mail.ne1.yahoo.com with SMTP; 04 Jun 2013 15:45:32 -0700 PDT
In-Reply-To: <CADfx-VTw0ArZ3+JbD=Vv+o9ncwNp9miYy5RD9XXeOFGEE3N0MQ@mail.gmail.com>
X-Mailer: Airmail (175)
X-Original-Sender: carrierandoperator@yahoo.co.uk
X-Original-Authentication-Results: mx.google.com;       spf=neutral
 (google.com: 98.138.91.189 is neither permitted nor denied by best guess
 record for domain of carrierandoperator@yahoo.co.uk) smtp.mail=carrierandoperator@yahoo.co.uk;
       dkim=pass header.i=@yahoo.co.uk
Precedence: list
Mailing-list: list std-proposals@isocpp.org; contact std-proposals+owners@isocpp.org
List-ID: <std-proposals.isocpp.org>
X-Google-Group-Id: 399137483710
List-Post: <http://groups.google.com/a/isocpp.org/group/std-proposals/post?hl=en>,
 <mailto:std-proposals@isocpp.org>
List-Help: <http://support.google.com/a/isocpp.org/bin/topic.py?hl=en&topic=25838>,
 <mailto:std-proposals+help@isocpp.org>
List-Archive: <http://groups.google.com/a/isocpp.org/group/std-proposals/?hl=en>
List-Subscribe: <http://groups.google.com/a/isocpp.org/group/std-proposals/subscribe?hl=en>,
 <mailto:std-proposals+subscribe@isocpp.org>
List-Unsubscribe: <http://groups.google.com/a/isocpp.org/group/std-proposals/subscribe?hl=en>,
 <mailto:googlegroups-manage+399137483710+unsubscribe@googlegroups.com>
Xref: news.gmane.org gmane.comp.lang.c++.isocpp.proposals:4863
Archived-At: <http://permalink.gmane.org/gmane.comp.lang.c++.isocpp.proposals/4863>

--51ae6e0b_3d1b58ba_8d5
Content-Type: text/plain; charset=windows-1252
Content-Transfer-Encoding: quoted-printable

On June 4, 2013 at 1:38:07 PM, Felipe Magno de Almeida (felipe.m.almeida@gm=
ail.com) wrote:
On Tue, Jun 4, 2013 at 11:27 AM, <carrierandoperator@yahoo.co.uk> wrote:

On Monday, June 3, 2013 6:39:35 PM UTC-4, Nicol Bolas wrote:
On Monday, June 3, 2013 1:24:54 PM UTC-7, carrieran...@yahoo.co.uk wrote:

[snip]
=A0
re Lightweight: The smallest array_ref could be the same size as a sequence=
.. Because array_ref's members are not const, it could result in larger and =
slower code.

.... how? They'll just be a pair of pointers or a pointer+size either way.

So you have checked my math. What exactly is your question?

The question seems to be "how [would array_ref's members not const be large=
r and slower]?". Or to put a better way: how would your sequence be smaller=
 or faster than an array_ref. I wonder myself the same question.

[snip]

Regards,
-- =20
Felipe Magno de Almeida


Ok, to quickly summarize the "Lightweight" conversation inline:

	Me: (initial float)
	Jeffrey: So your proposed class is not assignable? That's likely to be a p=
roblem.
	Me: =85They are very short lived and lightweight to construct and copy=85
	Nicol: And LLVM and Google have gotten by with types that are equally ligh=
tweight and shortlived, yet theirs are assignable and adjustable in size. W=
hy should we use yours instead of theirs (ie: array_ref)?
	Me: The smallest array_ref could be the same size as a sequence. Because a=
rray_ref's members are not const, it could result in larger and slower code=
..
	Nicol: how? They'll just be a pair of pointers or a pointer+size either wa=
y.

So my initial statement that sequences are lightweight was with no comparis=
on to array_ref. I then concurred that the object size of sequences and arr=
ay_refs should be identical after a comparison was made to array_ref. The r=
eason I hinted they may not *ultimately* be equal in size is that there are=
 open considerations regarding array_ref which could affect layout (but lik=
ely would not affect size).

The difference I noted when comparing sequence vs array_ref with relation t=
o being "Lightweight" is that it can result in a larger and slower binary (=
but the big benefit over array_ref is that mutable elements are supported).=
 This difference I mentioned isn't going to a revolutionary difference, mer=
ely a measurable difference in some scenarios. I'm also assuming you all fi=
gure this won't result in a great difference in speed (that was never my cl=
aim when making the comparison).

The differences I have touched on in this discussion so far are:
	- array_ref's size() may change
	- array_ref's pointer may change
	- For these reasons and because of the required additional mutators and sc=
affolding methods, the proposed array_ref has a higher overall complexity t=
han sequences.

Without spending hours creating tests, comparing generated assembly, and pr=
ofiling using multiple compilers and platforms - these complexity increases=
 could result in:
	- more exported symbols
	- larger class bodies
	- greater build and link times
	- more reads and writes necessary. include cases where execution is out of=
 the optimizer's visibility.
	- more instructions
	- more branching
	- more variables for an optimizer to track
	- reduced locality. sequences generally maintain very close locality.
	- and consequently less likely to be a good optimization or inline candida=
te

I suspect there won't be additional overhead in many scenarios, particularl=
y where locality is minimized.

--
j.carlson

--=20

---=20
You received this message because you are subscribed to the Google Groups "=
ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
Visit this group at http://groups.google.com/a/isocpp.org/group/std-proposa=
ls/?hl=3Den.



--51ae6e0b_3d1b58ba_8d5
Content-Type: text/html; charset=windows-1252
Content-Transfer-Encoding: quoted-printable

<html><head></head><body style=3D"word-wrap: break-word; -webkit-nbsp-mode:=
 space; -webkit-line-break: after-white-space; "><p id=3D"bloop_customfont"=
 style=3D"font-family:Helvetica,Arial;font-size:13px; margin: 0px; line-hei=
ght: auto;"><p id=3D"bloop_customfont" style=3D"margin: 0px; "><br></p></p>=
<div id=3D"bloop_sign_1370385402473277184"><br></div><p style=3D"color:#A0A=
0A8;">On June 4, 2013 at 1:38:07 PM, Felipe Magno de Almeida (felipe.m.alme=
ida@gmail.com) wrote:</p> <div><div><blockquote type=3D"cite" style=3D"colo=
r: rgb(0, 0, 0); font-family: helvetica; font-size: 13px; font-style: norma=
l; font-variant: normal; font-weight: normal; letter-spacing: normal; line-=
height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; tex=
t-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webk=
it-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color=
: rgb(255, 255, 255); border-left-style: solid; border-width: 1px; margin-l=
eft: 0px; padding-left: 10px; "><span><div><div dir=3D"ltr"><div class=3D"g=
mail_extra"><div class=3D"gmail_quote">On Tue, Jun 4, 2013 at 11:27 AM,<spa=
n class=3D"Apple-converted-space">&nbsp;</span><span dir=3D"ltr">&lt;<a hre=
f=3D"mailto:carrierandoperator@yahoo.co.uk" target=3D"_blank">carrierandope=
rator@yahoo.co.uk</a>&gt;</span><span class=3D"Apple-converted-space">&nbsp=
;</span>wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin: 0px 0p=
x 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204);=
 border-left-style: solid; padding-left: 1ex; "><div class=3D"im"><br>On Mo=
nday, June 3, 2013 6:39:35 PM UTC-4, Nicol Bolas wrote:<blockquote class=3D=
"gmail_quote" style=3D"margin: 0px 0px 0px 0.8ex; border-left-width: 1px; b=
order-left-color: rgb(204, 204, 204); border-left-style: solid; padding-lef=
t: 1ex; ">On Monday, June 3, 2013 1:24:54 PM UTC-7,<span class=3D"Apple-con=
verted-space">&nbsp;</span><a>carrieran...@yahoo.co.uk</a><span class=3D"Ap=
ple-converted-space">&nbsp;</span>wrote:<br></blockquote></div></blockquote=
><div><br></div><div>[snip]<br></div><div>&nbsp;</div><blockquote class=3D"=
gmail_quote" style=3D"margin: 0px 0px 0px 0.8ex; border-left-width: 1px; bo=
rder-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left=
: 1ex; "><div class=3D"im"><blockquote class=3D"gmail_quote" style=3D"margi=
n: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 2=
04, 204); border-left-style: solid; padding-left: 1ex; "><blockquote class=
=3D"gmail_quote" style=3D"margin: 0px 0px 0px 0.8ex; border-left-width: 1px=
; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-=
left: 1ex; "><div>re Lightweight: The smallest array_ref could be the same =
size as a sequence. Because array_ref's members are not const, it could res=
ult in larger and slower code.</div></blockquote><div><br>... how? They'll =
just be a pair of pointers or a pointer+size either way.<br></div></blockqu=
ote><div><br></div></div><div>So you have checked my math. What exactly is =
your question?</div></blockquote><div><br></div><div>The question seems to =
be "how [would array_ref's members not const be larger and slower]?". Or to=
 put a better way: how would your sequence be smaller or faster than an arr=
ay_ref. I wonder myself the same question.<br></div><div><br></div><div>[sn=
ip]<br><br></div></div>Regards,<br></div><div class=3D"gmail_extra">--<span=
 class=3D"Apple-converted-space">&nbsp;</span><br>Felipe Magno de Almeida</=
div></div></div></span></blockquote></div><p><p id=3D"bloop_customfont" sty=
le=3D"font-family: Helvetica, Arial; margin: 0px; "></p><p id=3D"bloop_cust=
omfont" style=3D"margin: 0px; ">Ok, to quickly summarize the "Lightweight" =
conversation inline:</p><p id=3D"bloop_customfont" style=3D"margin: 0px; ">=
<br></p><p id=3D"bloop_customfont" style=3D"margin: 0px; "><span class=3D"A=
pple-tab-span" style=3D"white-space:pre">	</span>Me: (initial float)</p><p =
id=3D"bloop_customfont" style=3D"margin: 0px; "><span class=3D"Apple-tab-sp=
an" style=3D"white-space:pre">	</span>Jeffrey: So your proposed class is no=
t assignable? That's likely to be a problem.</p><p id=3D"bloop_customfont" =
style=3D"margin: 0px; "><span class=3D"Apple-tab-span" style=3D"white-space=
:pre">	</span>Me: =85They are very short lived and lightweight to construct=
 and copy=85</p><p id=3D"bloop_customfont" style=3D"margin: 0px; "><span cl=
ass=3D"Apple-tab-span" style=3D"white-space:pre">	</span>Nicol: And LLVM an=
d Google have gotten by with types that are equally lightweight and shortli=
ved, yet theirs are assignable and adjustable in size. Why should we use yo=
urs instead of theirs (ie: array_ref)?</p><p id=3D"bloop_customfont" style=
=3D"margin: 0px; "><span class=3D"Apple-tab-span" style=3D"white-space:pre"=
>	</span>Me: The smallest array_ref could be the same size as a sequence. B=
ecause array_ref's members are not const, it could result in larger and slo=
wer code.</p><p id=3D"bloop_customfont" style=3D"margin: 0px; "><span class=
=3D"Apple-tab-span" style=3D"white-space:pre">	</span>Nicol: how? They'll j=
ust be a pair of pointers or a pointer+size either way.</p><p id=3D"bloop_c=
ustomfont" style=3D"margin: 0px; "><br></p><p id=3D"bloop_customfont" style=
=3D"margin: 0px; ">So my initial statement that sequences are lightweight w=
as with no comparison to array_ref. I then concurred that the object size o=
f sequences and array_refs should be identical after a comparison was made =
to array_ref. The reason I hinted they may not *ultimately* be equal in siz=
e is that there are open considerations regarding array_ref which could aff=
ect layout (but likely would not affect size).</p><p id=3D"bloop_customfont=
" style=3D"margin: 0px; "><br></p><p id=3D"bloop_customfont" style=3D"margi=
n: 0px; ">The difference I noted when comparing sequence vs array_ref with =
relation to being "Lightweight" is that it can result in a larger and slowe=
r binary (but the big benefit over array_ref is that mutable elements are s=
upported). This difference I mentioned isn't going to a revolutionary diffe=
rence, merely a measurable difference in some scenarios. I'm also assuming =
you all figure this won't result in a great difference in speed (that was n=
ever my claim when making the comparison).</p><p id=3D"bloop_customfont" st=
yle=3D"margin: 0px; "><br></p><p id=3D"bloop_customfont" style=3D"margin: 0=
px; ">The differences I have touched on in this discussion so far are:</p><=
p id=3D"bloop_customfont" style=3D"margin: 0px; "><span class=3D"Apple-tab-=
span" style=3D"white-space:pre">	</span>- array_ref's size() may change</p>=
<p id=3D"bloop_customfont" style=3D"margin: 0px; "><span class=3D"Apple-tab=
-span" style=3D"white-space:pre">	</span>- array_ref's pointer may change</=
p><p id=3D"bloop_customfont" style=3D"margin: 0px; "><span class=3D"Apple-t=
ab-span" style=3D"white-space:pre">	</span>- For these reasons and because =
of the required additional mutators and scaffolding methods, the proposed a=
rray_ref has a higher overall complexity than sequences.</p><p id=3D"bloop_=
customfont" style=3D"margin: 0px; "><br></p><p id=3D"bloop_customfont" styl=
e=3D"margin: 0px; ">Without spending hours creating tests, comparing genera=
ted assembly, and profiling using multiple compilers and platforms - these =
complexity increases could result in:</p><p id=3D"bloop_customfont" style=
=3D"margin: 0px; "><span class=3D"Apple-tab-span" style=3D"white-space:pre"=
>	</span>- more exported symbols</p><p id=3D"bloop_customfont" style=3D"mar=
gin: 0px; "><span class=3D"Apple-tab-span" style=3D"white-space:pre">	</spa=
n>- larger class bodies</p><p id=3D"bloop_customfont" style=3D"margin: 0px;=
 "><span class=3D"Apple-tab-span" style=3D"white-space:pre">	</span>- great=
er build and link times</p><p id=3D"bloop_customfont" style=3D"margin: 0px;=
 "><span class=3D"Apple-tab-span" style=3D"white-space:pre">	</span>- more =
reads and writes necessary. include cases where execution is out of the opt=
imizer's visibility.</p><p id=3D"bloop_customfont" style=3D"margin: 0px; ">=
<span class=3D"Apple-tab-span" style=3D"white-space:pre">	</span>- more ins=
tructions</p><p id=3D"bloop_customfont" style=3D"margin: 0px; "><span class=
=3D"Apple-tab-span" style=3D"white-space:pre">	</span>- more branching</p><=
p id=3D"bloop_customfont" style=3D"margin: 0px; "><span class=3D"Apple-tab-=
span" style=3D"white-space:pre">	</span>- more variables for an optimizer t=
o track</p><p id=3D"bloop_customfont" style=3D"margin: 0px; "><span class=
=3D"Apple-tab-span" style=3D"white-space:pre">	</span>- reduced locality. s=
equences generally maintain very close locality.</p><p id=3D"bloop_customfo=
nt" style=3D"margin: 0px; "><span class=3D"Apple-tab-span" style=3D"white-s=
pace:pre">	</span>- and consequently less likely to be a good optimization =
or inline candidate</p><p id=3D"bloop_customfont" style=3D"margin: 0px; "><=
br></p><p id=3D"bloop_customfont" style=3D"margin: 0px; ">I suspect there w=
on't be additional overhead in many scenarios, particularly where locality =
is minimized.</p><p id=3D"bloop_customfont" style=3D"margin: 0px; "><br></p=
><div>--</div><div id=3D"bloop_sign_1370385402473277184">j.carlson</div><di=
v id=3D"bloop_sign_1370385402473277184"><br></div></p><div></div></div></bo=
dy></html>

<p></p>

-- <br />
&nbsp;<br />
--- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals&quot; group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to std-proposals+unsubscribe@isocpp.org.<br />
To post to this group, send email to std-proposals@isocpp.org.<br />
Visit this group at <a href=3D"http://groups.google.com/a/isocpp.org/group/=
std-proposals/?hl=3Den">http://groups.google.com/a/isocpp.org/group/std-pro=
posals/?hl=3Den</a>.<br />
&nbsp;<br />
&nbsp;<br />

--51ae6e0b_3d1b58ba_8d5--

.
