X-Account-Key: account2
X-UIDL: 161873-1059743608
X-Mozilla-Status: 0005
X-Mozilla-Status2: 10000000
X-Mozilla-Keys: $label2                                                                         
Return-path: <daniel.mantione@freepascal.org>
Received: from ms-mta-05 (cs109338-52.texas.rr.com [10.93.38.52])
 by ms-mss-01.texas.rr.com
 (iPlanet Messaging Server 5.2 HotFix 2.10 (built Dec 26 2005))
 with ESMTP id <0JJ500AKQM0HMA@ms-mss-01.texas.rr.com> for
 jmccalpin@austin.rr.com; Tue, 05 Jun 2007 03:24:18 -0500 (CDT)
Received: from nymx03.mgw.rr.com (nymx03.mgw.rr.com [24.92.226.164])
 by ms-mta-05.texas.rr.com
 (iPlanet Messaging Server 5.2 HotFix 2.10 (built Dec 26 2005))
 with ESMTP id <0JJ500ICAM0HTK@ms-mta-05.texas.rr.com> for
 jmccalpin@austin.rr.com (ORCPT jmccalpin@austin.rr.com); Tue,
 05 Jun 2007 03:24:17 -0500 (CDT)
Received: from hrndva-mx-14.mgw.rr.com (hrndva-mx-14.mgw.rr.com [24.28.204.37])
	by nymx03.mgw.rr.com (8.13.6/8.13.6) with ESMTP id l558O8ZH011912	for
 <jmccalpin@austin.rr.com>; Tue, 05 Jun 2007 04:24:16 -0400 (EDT)
Received: from ares.cs.virginia.edu ([128.143.137.19])
 by hrndva-mx-14.mgw.rr.com with ESMTP; Tue, 05 Jun 2007 04:24:15 -0400
Received: from idefix.wisa.be (cust198-202.dsl.versadsl.be [62.166.198.202])
	by ares.cs.Virginia.EDU (8.13.8/8.13.8/UVACS-2006092501)
 with SMTP id l558OBHY019256	for <mccalpin@cs.virginia.edu>; Tue,
 05 Jun 2007 01:24:12 -0700 (PDT)
Received: (qmail 14354 invoked by uid 508); Tue, 05 Jun 2007 08:19:06 +0000
Received: from localhost (sendmail-bs@127.0.0.1) by localhost with SMTP; Tue,
 05 Jun 2007 08:19:06 +0000
Date: Tue, 05 Jun 2007 10:19:06 +0200 (CEST)
From: =?ISO-8859-1?Q?Dani=EBl_Mantione?= <daniel.mantione@freepascal.org>
Subject: Pascal port of stream
X-X-Sender: daniel@idefix.wisa.be
To: mccalpin@cs.virginia.edu
Message-id: <Pine.LNX.4.61.0706050953550.9671@idefix.wisa.be>
MIME-version: 1.0
Content-type: MULTIPART/MIXED; BOUNDARY="657924-892185978-1181031546=:9671"
X-MID: 1362162208
X-Virus-Scanned: Symantec AntiVirus Scan Engine
Original-recipient: rfc822;jmccalpin@austin.rr.com

  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.

--657924-892185978-1181031546=:9671
Content-Type: TEXT/PLAIN; charset=ISO-8859-1
Content-Transfer-Encoding: QUOTED-PRINTABLE

Hi!

I've made a Pascal conversion of the stream benchmark in order to aid=20
development of optimizations in our compiler Free Pascal. I'd like to=20
contribute it so other people may benefit from it.

It is a literal translation of the C code. Allthogh untested, it should be=
=20
compilable by other compilers too, as long as they implement UCSD-Pascal=20
string syntax. This should be Delphi/Kylix, Metrowerks Pascal, GNU-Pascal=
=20
and more. The "mysecond" might need some adjustments.

Free Pascal turned out to have exactly the same performance as the GNU C=20
compiler.

Regards,

Dani=EBl Mantione
--657924-892185978-1181031546=:9671
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="stream.pas"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.61.0706051019060.9671@idefix.wisa.be>
Content-Description: 
Content-Disposition: attachment; filename="stream.pas"

cHJvZ3JhbSBzdHJlYW07DQoNCnskaWZkZWYgdW5peH0NCnVzZXMgYmFzZXVu
aXgsdW5peDsNCnskZW5kaWZ9DQoNCnskaWZkZWYgd2luZG93c30NCnVzZXMg
d2luZG93czsNCnskZW5kaWZ9DQoNCnstLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLX0NCnsgT3JpZ2luYWwgY29kZSBkZXZlbG9wZWQgYnkgSm9obiBELiBN
Y0NhbHBpbiAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCnsgUHJvZ3Jh
bW1lcnM6IEpvaG4gRC4gTWNDYWxwaW4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0NCnsgICAgICAgICAgICAgIEpvZSBSLiBa
YWdhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0NCnsgUGFzY2FsIGNvbnZlcnNpb246IERhbmllbCBNYW50aW9uZSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCnsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0NCnsgVGhpcyBwcm9ncmFtIG1lYXN1cmVz
IG1lbW9yeSB0cmFuc2ZlciByYXRlcyBpbiBNQi9zIGZvciBzaW1wbGUgICAg
ICAgIH0NCnsgY29tcHV0YXRpb25hbCBrZXJuZWxzIGNvZGVkIGluIFBhc2Nh
bC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCnstLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLX0NCnsgQ29weXJpZ2h0IDE5OTEtMjAwNTog
Sm9obiBELiBNY0NhbHBpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0NCnstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLX0NCnsgTGljZW5z
ZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0NCnsgIDEuIFlvdSBhcmUgZnJlZSB0byB1
c2UgdGhpcyBwcm9ncmFtIGFuZC9vciB0byByZWRpc3RyaWJ1dGUgICAgICAg
ICAgIH0NCnsgICAgIHRoaXMgcHJvZ3JhbS4gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCnsgIDIuIFlv
dSBhcmUgZnJlZSB0byBtb2RpZnkgdGhpcyBwcm9ncmFtIGZvciB5b3VyIG93
biB1c2UsICAgICAgICAgICAgIH0NCnsgICAgIGluY2x1ZGluZyBjb21tZXJj
aWFsIHVzZSwgc3ViamVjdCB0byB0aGUgcHVibGljYXRpb24gICAgICAgICAg
ICAgIH0NCnsgICAgIHJlc3RyaWN0aW9ucyBpbiBpdGVtIDMuICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCnsgIDMuIFlv
dSBhcmUgZnJlZSB0byBwdWJsaXNoIHJlc3VsdHMgb2J0YWluZWQgZnJvbSBy
dW5uaW5nIHRoaXMgICAgICAgIH0NCnsgICAgIHByb2dyYW0sIG9yIGZyb20g
d29ya3MgdGhhdCB5b3UgZGVyaXZlIGZyb20gdGhpcyBwcm9ncmFtLCAgICAg
ICAgIH0NCnsgICAgIHdpdGggdGhlIGZvbGxvd2luZyBsaW1pdGF0aW9uczog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCnsgICAgIDNh
LiBJbiBvcmRlciB0byBiZSByZWZlcnJlZCB0byBhcyAiU1RSRUFNIGJlbmNo
bWFyayByZXN1bHRzIiwgICAgIH0NCnsgICAgICAgICBwdWJsaXNoZWQgcmVz
dWx0cyBtdXN0IGJlIGluIGNvbmZvcm1hbmNlIHRvIHRoZSBTVFJFQU0gICAg
ICAgIH0NCnsgICAgICAgICBSdW4gUnVsZXMsIChicmllZmx5IHJldmlld2Vk
IGJlbG93KSBwdWJsaXNoZWQgYXQgICAgICAgICAgICAgIH0NCnsgICAgICAg
ICBodHRwOi8vd3d3LmNzLnZpcmdpbmlhLmVkdS9zdHJlYW0vcmVmLmh0bWwg
ICAgICAgICAgICAgICAgICAgIH0NCnsgICAgICAgICBhbmQgaW5jb3Jwb3Jh
dGVkIGhlcmVpbiBieSByZWZlcmVuY2UuICAgICAgICAgICAgICAgICAgICAg
ICAgIH0NCnsgICAgICAgICBBcyB0aGUgY29weXJpZ2h0IGhvbGRlciwgSm9o
biBNY0NhbHBpbiByZXRhaW5zIHRoZSAgICAgICAgICAgIH0NCnsgICAgICAg
ICByaWdodCB0byBkZXRlcm1pbmUgY29uZm9ybWl0eSB3aXRoIHRoZSBSdW4g
UnVsZXMuICAgICAgICAgICAgIH0NCnsgICAgIDNiLiBSZXN1bHRzIGJhc2Vk
IG9uIG1vZGlmaWVkIHNvdXJjZSBjb2RlIG9yIG9uIHJ1bnMgbm90IGluICAg
ICAgIH0NCnsgICAgICAgICBhY2NvcmRhbmNlIHdpdGggdGhlIFNUUkVBTSBS
dW4gUnVsZXMgbXVzdCBiZSBjbGVhcmx5ICAgICAgICAgIH0NCnsgICAgICAg
ICBsYWJlbGxlZCB3aGVuZXZlciB0aGV5IGFyZSBwdWJsaXNoZWQuICBFeGFt
cGxlcyBvZiAgICAgICAgICAgIH0NCnsgICAgICAgICBwcm9wZXIgbGFiZWxs
aW5nIGluY2x1ZGU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0NCnsgICAgICAgICAidHVuZWQgU1RSRUFNIGJlbmNobWFyayByZXN1
bHRzIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCnsgICAgICAg
ICAiYmFzZWQgb24gYSB2YXJpYW50IG9mIHRoZSBTVFJFQU0gYmVuY2htYXJr
IGNvZGUiICAgICAgICAgICAgIH0NCnsgICAgICAgICBPdGhlciBjb21wYXJh
YmxlLCBjbGVhciBhbmQgcmVhc29uYWJsZSBsYWJlbGxpbmcgaXMgICAgICAg
ICAgIH0NCnsgICAgICAgICBhY2NlcHRhYmxlLiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCnsgICAgIDNj
LiBTdWJtaXNzaW9uIG9mIHJlc3VsdHMgdG8gdGhlIFNUUkVBTSBiZW5jaG1h
cmsgd2ViIHNpdGUgICAgICAgIH0NCnsgICAgICAgICBpcyBlbmNvdXJhZ2Vk
LCBidXQgbm90IHJlcXVpcmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0NCnsgIDQuIFVzZSBvZiB0aGlzIHByb2dyYW0gb3IgY3JlYXRpb24g
b2YgZGVyaXZlZCB3b3JrcyBiYXNlZCBvbiB0aGlzICAgIH0NCnsgICAgIHBy
b2dyYW0gY29uc3RpdHV0ZXMgYWNjZXB0YW5jZSBvZiB0aGVzZSBsaWNlbnNp
bmcgcmVzdHJpY3Rpb25zLiAgIH0NCnsgIDUuIEFic29sdXRlbHkgbm8gd2Fy
cmFudHkgaXMgZXhwcmVzc2VkIG9yIGltcGxpZWQuICAgICAgICAgICAgICAg
ICAgIH0NCnstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLX0NCg0KeyBJTlNU
UlVDVElPTlM6DQogKg0KICoJMSkgU3RyZWFtIHJlcXVpcmVzIGEgZ29vZCBi
aXQgb2YgbWVtb3J5IHRvIHJ1bi4gIEFkanVzdCB0aGUNCiAqICAgICAgICAg
IHZhbHVlIG9mICdOJyAoYmVsb3cpIHRvIGdpdmUgYSAndGltaW5nIGNhbGli
cmF0aW9uJyBvZiANCiAqICAgICAgICAgIGF0IGxlYXN0IDIwIGNsb2NrLXRp
Y2tzLiAgVGhpcyB3aWxsIHByb3ZpZGUgcmF0ZSBlc3RpbWF0ZXMNCiAqICAg
ICAgICAgIHRoYXQgc2hvdWxkIGJlIGdvb2QgdG8gYWJvdXQgNSUgcHJlY2lz
aW9uLg0KIH0NCg0KY29uc3QgTgkgICAgICAgID0gMjAwMDAwMDsNCiAgICAg
IE5USU1FUwk9IDEwOw0KICAgICAgT0ZGU0VUCT0gMDsNCg0Kew0KICoJMykg
Q29tcGlsZSB0aGUgY29kZSB3aXRoIGZ1bGwgb3B0aW1pemF0aW9uLiAgTWFu
eSBjb21waWxlcnMNCiAqCSAgIGdlbmVyYXRlIHVucmVhc29uYWJseSBiYWQg
Y29kZSBiZWZvcmUgdGhlIG9wdGltaXplciB0aWdodGVucw0KICoJICAgdGhp
bmdzIHVwLiAgSWYgdGhlIHJlc3VsdHMgYXJlIHVucmVhc29uYWJseSBnb29k
LCBvbiB0aGUNCiAqCSAgIG90aGVyIGhhbmQsIHRoZSBvcHRpbWl6ZXIgbWln
aHQgYmUgdG9vIHNtYXJ0IGZvciBtZSENCiAqDQogKiAgICAgICAgIFRyeSBj
b21waWxpbmcgd2l0aDoNCiAqICAgICAgICAgICAgICAgZnBjIC1PMyBzdHJl
YW0ucHANCiAqDQogKgk0KSBNYWlsIHRoZSByZXN1bHRzIHRvIG1jY2FscGlu
QGNzLnZpcmdpbmlhLmVkdQ0KICoJICAgQmUgc3VyZSB0byBpbmNsdWRlOg0K
ICoJCWEpIGNvbXB1dGVyIGhhcmR3YXJlIG1vZGVsIG51bWJlciBhbmQgc29m
dHdhcmUgcmV2aXNpb24NCiAqCQliKSB0aGUgY29tcGlsZXIgZmxhZ3MNCiAq
CQljKSBhbGwgb2YgdGhlIG91dHB1dCBmcm9tIHRoZSB0ZXN0IGNhc2UuDQog
KiBUaGFua3MhDQogKg0KIH0NCg0KY29uc3QgSExJTkUgPSAnLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSc7DQoNCiAgICAgIGluZiA9IDEvMDsNCg0KdmFyIGEsYixjOmFy
cmF5WzAuLk4rT0ZGU0VULTFdIG9mIGRvdWJsZTsNCg0KICAgIGF2Z3RpbWU6
YXJyYXlbMC4uM10gb2YgZG91YmxlID0gKDAsMCwwLDApOw0KICAgIG1heHRp
bWU6YXJyYXlbMC4uM10gb2YgZG91YmxlID0gKDAsMCwwLDApOw0KCW1pbnRp
bWU6YXJyYXlbMC4uM10gb2YgZG91YmxlID0gKGluZixpbmYsaW5mLGluZik7
DQoNCiAgICBsYWJlbHM6YXJyYXlbMC4uM10gb2Ygc3RyaW5nWzE2XT0gKCdD
b3B5OicsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnU2NhbGU6JywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdBZGQ6JywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdUcmlhZDonKTsNCg0KICAgIGJ5dGVzOmFycmF5WzAuLjNd
IG9mIGNhcmRpbmFsID0gKA0KICAgICAgMiAqIHNpemVvZihkb3VibGUpICog
TiwNCiAgICAgIDIgKiBzaXplb2YoZG91YmxlKSAqIE4sDQogICAgICAzICog
c2l6ZW9mKGRvdWJsZSkgKiBOLA0KICAgICAgMyAqIHNpemVvZihkb3VibGUp
ICogTg0KICAgICk7DQoNCmNvbnN0CU09MjA7DQoNCmZ1bmN0aW9uIG1pbihh
LGI6bG9uZ2ludCk6bG9uZ2ludDtvdmVybG9hZDtpbmxpbmU7DQoNCmJlZ2lu
DQogIGlmIGE+YiB0aGVuDQogICAgbWluOj1iDQogIGVsc2UNCiAgICBtaW46
PWE7DQplbmQ7DQoNCmZ1bmN0aW9uIG1heChhLGI6bG9uZ2ludCk6bG9uZ2lu
dDtvdmVybG9hZDtpbmxpbmU7DQoNCmJlZ2luDQogIGlmIGE+YiB0aGVuDQog
ICAgbWF4Oj1hDQogIGVsc2UNCiAgICBtYXg6PWI7DQplbmQ7DQoNCmZ1bmN0
aW9uIG1pbihhLGI6ZG91YmxlKTpkb3VibGU7b3ZlcmxvYWQ7aW5saW5lOw0K
DQpiZWdpbg0KICBpZiBhPmIgdGhlbg0KICAgIG1pbjo9Yg0KICBlbHNlDQog
ICAgbWluOj1hOw0KZW5kOw0KDQpmdW5jdGlvbiBtYXgoYSxiOmRvdWJsZSk6
ZG91YmxlO292ZXJsb2FkO2lubGluZTsNCg0KYmVnaW4NCiAgaWYgYT5iIHRo
ZW4NCiAgICBtYXg6PWENCiAgZWxzZQ0KICAgIG1heDo9YjsNCmVuZDsNCg0K
cHJvY2VkdXJlIHR1bmVkX1NUUkVBTV9Db3B5Ow0KDQp2YXIgajpsb25naW50
Ow0KDQpiZWdpbg0KICBmb3Igajo9MCB0byBOLTEgZG8NCiAgICBjW2pdOj1h
W2pdOw0KZW5kOw0KDQpwcm9jZWR1cmUgdHVuZWRfU1RSRUFNX1NjYWxlKHNj
YWxhcjpkb3VibGUpOw0KDQp2YXIgajpsb25naW50Ow0KDQpiZWdpbg0KICBm
b3Igajo9MCB0byBOLTEgZG8NCiAgICBiW2pdOj1zY2FsYXIqY1tqXTsNCmVu
ZDsNCg0KcHJvY2VkdXJlIHR1bmVkX1NUUkVBTV9BZGQ7DQoNCnZhciBqOmxv
bmdpbnQ7DQoNCmJlZ2luDQogIGZvciBqOj0wIHRvIE4tMSBkbw0KICAgY1tq
XTo9YVtqXStiW2pdOw0KZW5kOw0KDQpwcm9jZWR1cmUgdHVuZWRfU1RSRUFN
X1RyaWFkKHNjYWxhcjpkb3VibGUpOw0KDQp2YXIgajpsb25naW50Ow0KDQpi
ZWdpbg0KICBmb3Igajo9MCB0byBOLTEgZG8NCiAgICBhW2pdOj1iW2pdK3Nj
YWxhcipjW2pdOw0KZW5kOw0KDQp7JGlmZGVmIHVuaXh9DQp7JGRlZmluZSBo
YXZlX215c2Vjb25kfQ0KZnVuY3Rpb24gbXlzZWNvbmQ6ZG91YmxlOw0KDQp2
YXIgdHA6dGltZXZhbDsNCiAgICB0enA6dGltZXpvbmU7DQoNCmJlZ2luDQog
IGZwZ2V0dGltZW9mZGF5KEB0cCxAdHpwKTsNCiAgbXlzZWNvbmQ6PWRvdWJs
ZSh0cC50dl9zZWMpK2RvdWJsZSh0cC50dl91c2VjKSoxZS02Ow0KZW5kOw0K
eyRlbmRpZn0NCg0KeyRpZmRlZiB3aW5kb3dzfQ0KeyRkZWZpbmUgaGF2ZV9t
eXNlY29uZH0NCmZ1bmN0aW9uIG15c2Vjb25kOmRvdWJsZTsNCg0KYmVnaW4N
CiAgbXlzZWNvbmQ6PWdldHRpY2tjb3VudCoxZS0zOw0KZW5kOw0KeyRlbmRp
Zn0NCg0KeyRpZm5kZWYgaGF2ZV9teXNlY29uZH0NCnskZXJyb3IgUGxlYXNl
IGltcGxlbWVudCBhIG15c2Vjb25kIGZvciB5b3VyIHBsYXRmb3JtLn0NCnsk
ZW5kaWZ9DQoNCmZ1bmN0aW9uIGNoZWNrdGljazpsb25naW50Ow0KDQp2YXIg
aSxtaW5EZWx0YSxEZWx0YTpsb25naW50Ow0KICAgIHQxLHQyOmRvdWJsZTsN
CiAgICB0aW1lc2ZvdW5kOmFycmF5WzAuLk0tMV0gb2YgZG91YmxlOw0KDQpi
ZWdpbg0KICB7ICBDb2xsZWN0IGEgc2VxdWVuY2Ugb2YgTSB1bmlxdWUgdGlt
ZSB2YWx1ZXMgZnJvbSB0aGUgc3lzdGVtLiB9DQogIGZvciBpOj0wIHRvIE0t
MSBkbw0KICAgIGJlZ2luDQogICAgICB0MTo9bXlzZWNvbmQ7DQogICAgICB0
Mjo9dDE7DQogICAgICB3aGlsZSB0Mi10MTwxRS02IGRvDQogICAgICAgIHQy
Oj1teXNlY29uZDsNCiAgICAgIHQxOj10MjsNCiAgICAgIHRpbWVzZm91bmRb
aV06PXQxOw0KICAgIGVuZDsNCg0KICB7DQogICAqIERldGVybWluZSB0aGUg
bWluaW11bSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlc2UgTSB2YWx1ZXMuDQog
ICAqIFRoaXMgcmVzdWx0IHdpbGwgYmUgb3VyIGVzdGltYXRlIChpbiBtaWNy
b3NlY29uZHMpIGZvciB0aGUNCiAgICogY2xvY2sgZ3JhbnVsYXJpdHkuDQog
IH0NCg0KICAgbWluRGVsdGE6PTEwMDAwMDA7DQogICBmb3IgaTo9MSB0byBN
LTEgZG8NCiAgICAgYmVnaW4NCiAgICAgICBEZWx0YTo9dHJ1bmMoMUU2Kih0
aW1lc2ZvdW5kW2ldLXRpbWVzZm91bmRbaS0xXSkpOw0KICAgICAgIG1pbkRl
bHRhOj1NSU4obWluRGVsdGEsTUFYKERlbHRhLDApKTsNCiAgICAgZW5kOw0K
DQogICBjaGVja3RpY2s6PW1pbkRlbHRhOw0KZW5kOw0KDQpwcm9jZWR1cmUg
Y2hlY2tTVFJFQU1yZXN1bHRzOw0KDQp2YXIgYWosYmosY2osc2NhbGFyOmRv
dWJsZTsNCglhc3VtLGJzdW0sY3N1bTpkb3VibGU7DQoJZXBzaWxvbjpkb3Vi
bGU7DQoJaixrOmxvbmdpbnQ7DQoNCmJlZ2luDQogICAgeyByZXByb2R1Y2Ug
aW5pdGlhbGl6YXRpb24gfQ0KCWFqOj0xOw0KCWJqOj0yOw0KCWNqOj0wOw0K
ICAgIHsgYVtdIGlzIG1vZGlmaWVkIGR1cmluZyB0aW1pbmcgY2hlY2sgfQ0K
CWFqOj0yKmFqOw0KICAgIHsgbm93IGV4ZWN1dGUgdGltaW5nIGxvb3AgfQ0K
CXNjYWxhcjo9MzsNCiAgICBmb3Igazo9MCB0byBOVElNRVMtMSBkbw0KICAg
ICAgYmVnaW4NCiAgICAgICAgY2o6PWFqOw0KICAgICAgICBiajo9c2NhbGFy
KmNqOw0KICAgICAgICBjajo9YWorYmo7DQogICAgICAgIGFqOj1iaitzY2Fs
YXIqY2o7DQogICAgICAgZW5kOw0KCWFqOj1haipOOw0KCWJqOj1iaipOOw0K
CWNqOj1jaipOOw0KDQoJYXN1bTo9MDsNCglic3VtOj0wOw0KCWNzdW06PTA7
DQogICAgZm9yIGo6PTAgdG8gTi0xIGRvDQogICAgICBiZWdpbg0KCQlhc3Vt
Oj1hc3VtK2Fbal07DQoJCWJzdW06PWJzdW0rYltqXTsNCgkJY3N1bTo9Y3N1
bStjW2pdOw0KICAgICAgZW5kOw0KeyRpZmRlZiBWRVJCT1NFfQ0KCXdyaXRl
bG4oJ1Jlc3VsdHMgQ29tcGFyaXNvbjogJyk7DQoJd3JpdGVsbignICAgICAg
ICBFeHBlY3RlZCAgOiAnLGFqLCcgJyxiaiwnICcsY2opOw0KCXdyaXRlbG4o
JyAgICAgICAgT2JzZXJ2ZWQgIDogJyxhc3VtLCcgJyxic3VtLCcgJyxjc3Vt
KTsNCnskZW5kaWZ9DQoNCgllcHNpbG9uOj0xZS04Ow0KDQoJaWYgYWJzKGFq
LWFzdW0pL2FzdW0+ZXBzaWxvbiB0aGVuDQogICAgICBiZWdpbg0KICAgICAg
ICB3cml0ZWxuKCdGYWlsZWQgVmFsaWRhdGlvbiBvbiBhcnJheSBhJyk7DQog
ICAgICAgIHdyaXRlbG4oJyAgICAgICAgRXhwZWN0ZWQgIDogJyxhaik7DQog
ICAgICAgIHdyaXRlbG4oJyAgICAgICAgT2JzZXJ2ZWQgIDogJyxhc3VtKTsN
CiAgICAgIGVuZA0KCWVsc2UgaWYgYWJzKGJqLWJzdW0pL2JzdW0+ZXBzaWxv
biB0aGVuDQogICAgICBiZWdpbg0KICAgICAgICB3cml0ZWxuKCdGYWlsZWQg
VmFsaWRhdGlvbiBvbiBhcnJheSBiJyk7DQogICAgICAgIHdyaXRlbG4oJyAg
ICAgICAgRXhwZWN0ZWQgIDogJyxiaik7DQogICAgICAgIHdyaXRlbG4oJyAg
ICAgICAgT2JzZXJ2ZWQgIDogJyxic3VtKTsNCiAgICAgIGVuZA0KCWVsc2Ug
aWYgYWJzKGNqLWNzdW0pL2NzdW0+ZXBzaWxvbiB0aGVuDQogICAgICBiZWdp
bg0KICAgICAgICB3cml0ZWxuKCdGYWlsZWQgVmFsaWRhdGlvbiBvbiBhcnJh
eSBjJyk7DQogICAgICAgIHdyaXRlbG4oJyAgICAgICAgRXhwZWN0ZWQgIDog
Jyxjaik7DQogICAgICAgIHdyaXRlbG4oJyAgICAgICAgT2JzZXJ2ZWQgIDog
Jyxjc3VtKTsNCiAgICAgIGVuZA0KCWVsc2UNCiAgICAgIHdyaXRlbG4oJ1Nv
bHV0aW9uIFZhbGlkYXRlcycpOw0KZW5kOw0KDQp2YXIgcXVhbnR1bTpsb25n
aW50Ow0KICAgIEJ5dGVzUGVyV29yZDpsb25naW50Ow0KICAgIGosazpsb25n
aW50Ow0KICAgIHNjYWxhcix0OmRvdWJsZTsNCiAgICB0aW1lczphcnJheVsw
Li4zLDAuLk5USU1FUy0xXSBvZiBkb3VibGU7DQogICAgDQpiZWdpbg0KICAg
IHsgLS0tIFNFVFVQIC0tLSBkZXRlcm1pbmUgcHJlY2lzaW9uIGFuZCBjaGVj
ayB0aW1pbmcgLS0tIH0NCiAgICB3cml0ZWxuKEhMSU5FKTsNCiAgICB3cml0
ZWxuKCdTVFJFQU0gdmVyc2lvbiBSZXZpc2lvbjogNS42Jyk7DQogICAgd3Jp
dGVsbihITElORSk7DQogICAgQnl0ZXNQZXJXb3JkOj1zaXplb2YoZG91Ymxl
KTsNCiAgICB3cml0ZWxuKCdUaGlzIHN5c3RlbSB1c2VzICcsQnl0ZXNQZXJX
b3JkLCcgYnl0ZXMgcGVyIERPVUJMRSBQUkVDSVNJT04gd29yZC4nKTsNCg0K
ICAgIHdyaXRlbG4oSExJTkUpOw0KICAgIHdyaXRlbG4oJ0FycmF5IHNpemUg
PSAnLE4sJywgT2Zmc2V0ID0gJyxPRkZTRVQpOw0KICAgIHdyaXRlbG4oJ1Rv
dGFsIG1lbW9yeSByZXF1aXJlZCA9ICcsMypCeXRlc1BlcldvcmQqKE4vMTA0
ODU3NiksJyBNQi4nKTsNCiAgICB3cml0ZWxuKCdFYWNoIHRlc3QgaXMgcnVu
ICcsTlRJTUVTLCcgdGltZXMsIGJ1dCBvbmx5Jyk7DQogICAgd3JpdGVsbign
dGhlICpiZXN0KiB0aW1lIGZvciBlYWNoIGlzIHVzZWQuJyk7DQoNCiAgICB3
cml0ZWxuKEhMSU5FKTsNCiAgICB3cml0ZWxuKCd3cml0ZWxuaW5nIG9uZSBs
aW5lIHBlciBhY3RpdmUgdGhyZWFkLi4uLicpOw0KDQogICAgeyBHZXQgaW5p
dGlhbCB2YWx1ZSBmb3Igc3lzdGVtIGNsb2NrLiB9DQogICAgZm9yIGo6PTAg
dG8gTi0xIGRvDQogICAgICBiZWdpbg0KICAgICAgICBhW2pdOj0xOw0KICAg
ICAgICBiW2pdOj0yOw0KICAgICAgICBjW2pdOj0wOw0KICAgICAgZW5kOw0K
DQogICAgd3JpdGVsbihITElORSk7DQogICAgDQogICAgcXVhbnR1bTo9Y2hl
Y2t0aWNrOw0KICAgIGlmIHF1YW50dW0+PTEgdGhlbiANCiAgICAgIHdyaXRl
bG4oJ1lvdXIgY2xvY2sgZ3JhbnVsYXJpdHkvcHJlY2lzaW9uIGFwcGVhcnMg
dG8gYmUgJyxxdWFudHVtLA0KCSAgICAgICAgICAnIG1pY3Jvc2Vjb25kcy4n
KQ0KICAgIGVsc2UNCiAgICAgIHdyaXRlbG4oJ1lvdXIgY2xvY2sgZ3JhbnVs
YXJpdHkgYXBwZWFycyB0byBiZSAnKw0KICAgICAgICAgICAgICAnbGVzcyB0
aGFuIG9uZSBtaWNyb3NlY29uZC4nKTsNCg0KICAgIHQ6PW15c2Vjb25kOw0K
ICAgIGZvciBqOj0wIHRvIE4tMSBkbyANCgkgIGFbal06PTIqYVtqXTsNCiAg
ICB0Oj0xRTYqKG15c2Vjb25kLXQpOw0KDQogICAgd3JpdGVsbignRWFjaCB0
ZXN0IGJlbG93IHdpbGwgdGFrZSBvbiB0aGUgb3JkZXIgb2YgJyx0LA0KCSAg
ICAgICAgJyBtaWNyb3NlY29uZHMuJyk7DQogICAgd3JpdGVsbignICAgKD0g
Jyx0L3F1YW50dW0sJyBjbG9jayB0aWNrcyknKTsNCiAgICB3cml0ZWxuKCdJ
bmNyZWFzZSB0aGUgc2l6ZSBvZiB0aGUgYXJyYXlzIGlmIHRoaXMgc2hvd3Mg
dGhhdCcpOw0KICAgIHdyaXRlbG4oJ3lvdSBhcmUgbm90IGdldHRpbmcgYXQg
bGVhc3QgMjAgY2xvY2sgdGlja3MgcGVyIHRlc3QuJyk7DQoNCiAgICB3cml0
ZWxuKEhMSU5FKTsNCg0KICAgIHdyaXRlbG4oJ1dBUk5JTkcgLS0gVGhlIGFi
b3ZlIGlzIG9ubHkgYSByb3VnaCBndWlkZWxpbmUuJyk7DQogICAgd3JpdGVs
bignRm9yIGJlc3QgcmVzdWx0cywgcGxlYXNlIGJlIHN1cmUgeW91IGtub3cg
dGhlJyk7DQogICAgd3JpdGVsbigncHJlY2lzaW9uIG9mIHlvdXIgc3lzdGVt
IHRpbWVyLicpOw0KICAgIHdyaXRlbG4oSExJTkUpOw0KICAgIA0KICAgIHsJ
LS0tIE1BSU4gTE9PUCAtLS0gcmVwZWF0IHRlc3QgY2FzZXMgTlRJTUVTIHRp
bWVzIC0tLSB9DQoNCiAgICBzY2FsYXI6PTM7DQogICAgZm9yIGs6PTAgdG8g
TlRJTUVTLTEgZG8NCiAgICAgIGJlZ2luDQogICAgICAgIHRpbWVzWzAsa106
PW15c2Vjb25kKCk7DQp7JGlmZGVmIFRVTkVEfQ0KICAgICAgICB0dW5lZF9T
VFJFQU1fQ29weSgpOw0KeyRlbHNlfQ0KICAgICAgICBmb3Igajo9MCB0byBO
LTEgZG8NCiAgICAgICAgICBjW2pdOj1hW2pdOw0KeyRlbmRpZn0NCiAgICAg
ICAgdGltZXNbMCxrXTo9bXlzZWNvbmQtdGltZXNbMCxrXTsNCgkNCiAgICAg
ICAgdGltZXNbMSxrXTo9bXlzZWNvbmQ7DQp7JGlmZGVmIFRVTkVEfQ0KICAg
ICAgICB0dW5lZF9TVFJFQU1fU2NhbGUoc2NhbGFyKTsNCnskZWxzZX0NCiAg
ICAgICAgZm9yIGo6PTAgdG8gTi0xIGRvDQoJICAgICAgYltqXTo9c2NhbGFy
KmNbal07DQp7JGVuZGlmfQ0KICAgICAgICB0aW1lc1sxLGtdOj1teXNlY29u
ZC10aW1lc1sxLGtdOw0KICAgICAgICB0aW1lc1syLGtdOj1teXNlY29uZDsN
CnskaWZkZWYgVFVORUR9DQogICAgICAgIHR1bmVkX1NUUkVBTV9BZGQoKTsN
CnskZWxzZX0NCiAgICAgICAgZm9yIGo6PTAgdG8gTi0xIGRvDQogICAgICAg
ICAgY1tqXTo9YVtqXStiW2pdOw0KeyRlbmRpZn0NCiAgICAgICAgdGltZXNb
MixrXTo9bXlzZWNvbmQtdGltZXNbMixrXTsNCiAgICAgICAgdGltZXNbMyxr
XTo9bXlzZWNvbmQ7DQp7JGlmZGVmIFRVTkVEfQ0KICAgICAgICB0dW5lZF9T
VFJFQU1fVHJpYWQoc2NhbGFyKTsNCnskZWxzZX0NCiAgICAgICAgZm9yIGo6
PTAgdG8gTi0xIGRvDQogICAgICAgICAgYVtqXTo9YltqXStzY2FsYXIqY1tq
XTsNCnskZW5kaWZ9DQogICAgICAgIHRpbWVzWzMsa106PW15c2Vjb25kLXRp
bWVzWzMsa107DQogICAgICBlbmQ7DQoNCiAgICB7CS0tLSBTVU1NQVJZIC0t
LSB9DQogICAgZm9yIGs6PTEgdG8gTlRJTUVTLTEgZG8geyBub3RlIC0tIHNr
aXAgZmlyc3QgaXRlcmF0aW9uIH0NCiAgICAgIGZvciBqOj0wIHRvIDMgZG8N
CiAgICAgICAgYmVnaW4NCiAgICAgICAgICBhdmd0aW1lW2pdOj1hdmd0aW1l
W2pdICsgdGltZXNbaixrXTsNCiAgICAgICAgICBtaW50aW1lW2pdOj1NSU4o
bWludGltZVtqXSwgdGltZXNbaixrXSk7DQogICAgICAgICAgbWF4dGltZVtq
XTo9TUFYKG1heHRpbWVbal0sIHRpbWVzW2osa10pOw0KICAgICAgICBlbmQ7
DQogICAgDQogICAgd3JpdGVsbignRnVuY3Rpb24gICAgICBSYXRlIChNQi9z
KSAgIEF2ZyB0aW1lICAgICBNaW4gdGltZSAgICAgTWF4IHRpbWUnKTsNCiAg
ICBmb3Igajo9MCB0byAzIGRvDQogICAgICBiZWdpbg0KICAgICAgICBhdmd0
aW1lW2pdOj1hdmd0aW1lW2pdLyhOVElNRVMtMSk7DQogICAgICAgIHdyaXRl
bG4obGFiZWxzW2pdOjExLA0KICAgICAgICAgICAgICAgIDFFLTYqYnl0ZXNb
al0vbWludGltZVtqXToxMTo0LA0KICAgICAgICAgICAgICAgIGF2Z3RpbWVb
al06MTE6NCwNCiAgICAgICAgICAgICAgICBtaW50aW1lW2pdOjExOjQsDQog
ICAgICAgICAgICAgICAgbWF4dGltZVtqXToxMTo0KTsNCiAgICAgIGVuZDsN
CiAgICB3cml0ZWxuKEhMSU5FKTsNCg0KICAgIHsgLS0tIENoZWNrIFJlc3Vs
dHMgLS0tIH0NCiAgICBjaGVja1NUUkVBTXJlc3VsdHM7DQogICAgd3JpdGVs
bihITElORSk7DQplbmQuDQo=

--657924-892185978-1181031546=:9671--

