Version française
Home     About     Download     Resources     Contact us    
Browse thread
Re: Bug#224417: Problem with the old Num implementation of ocaml - more details
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Thomas Fischbacher <tf@c...>
Subject: Re: Bug#224417: Problem with the old Num implementation of ocaml - more details

[Maybe I should file this as a separate bugreport]

On Thu, 18 Dec 2003, Sven Luther wrote:

> tags 224417 + upstream
> thanks
> On Thu, Dec 18, 2003 at 09:15:40PM +0100, Thomas Fischbacher wrote:
> > 
> > Package:  ocaml 
> > Version: 3.06-21
> > Severity: grave
> 
> Huh ...
> 
> BTW, 3.06-21 is not part of debian anymore, but i guess 3.07-7 and the
> woody (and older) version are vulnerable.
> 
> I will transmit this to upstream too, altough i somewhat doubt they will
> fix it, since old-bignum is going to be replaced with the new
> implementation. But i think it will interest them still.

Yes, I suppose so. But strangely enough, the problem _did_ re-occur - 
albeit with very different values - with

Package: ocaml
Version: 3.07.2a-1

and

Package: libnums-ocaml
Version: 3.07-1

Here, I get:

0 ==> -63739694011402166976051874041676063865784980095311212432062478926751299450139305457948134038790907007782943115234375/2294287488095403763073974596800604256904498055825734116841519453845801891422853587965749144293625676308261780152348780234845939207145908383623706636688843241160704
1 ==> 0
2 ==> -12747938802280433395210374808335212773156996019062242486412495785350259890027861091589626807758181401556588623046875/11301908808351742675241254171431548063568955940028246880992706669191142322280066935791867705879929439942176256908122070122393789197763095485831067175807109562368
3 ==> 0
4 ==> -12747938802280433395210374808335212773156996019062242486412495785350259890027861091589626807758181401556588623046875/1280294357196095849929673324107480054076170790081324841987455052369309091195788832570172513556710756868449654102873203256052421432559100660504300578509399130112
5 ==> 0
6 ==> -12747938802280433395210374808335212773156996019062242486412495785350259890027861091589626807758181401556588623046875/11301908808351742675241254171431548063568955940028246880992706669191142322280066935791867705879929439942176256908122070122393789197763095485831067175807109562368
7 ==> -39148920061803210956691061036397438426365134774540146675772774556810648122275561412271743926625375084180283661376953125/2294287488095403763073974596800604256904498055825734116841519453845801891422853587965749144293625676308261780152348780234845939207145908383623706636688843241160704
8 ==> -570392894161458354485388740908288985192455282044195662517309148957502839351474204759670942202082333316731293944994384765625/95595312003975156794748941533358510704354085659405588201729977243575078809285566165239547678901069846177574173014532509785247466964412849317654443195368468381696
9 ==> -39148920061803210956691061036397438426365134774540146675772774556810648122275561412271743926625375084180283661376953125/2294287488095403763073974596800604256904498055825734116841519453845801891422853587965749144293625676308261780152348780234845939207145908383623706636688843241160704
- : unit = ()

Again, of course, zero is the correct value. At least, it does occur more 
frequently.


For sure, this made me wonder whether the bug may nevertheless be on my 
side, considering that I am terribly overworked due to this research paper 
at the moment, but I stared at the source over and over again, and I 
simply do not use global state / non-functional features outside of the 
main functions that could cause such behaviour... And even if I did, how 
could the results depend on the particular implementation of ratio 
arithmetics I am using? Yet to me it seems plausible that some serious 
issue may have been overlooked here, since I suppose very few people use 
ratio arith (in contrast to bignum-only arith, which has applications for, 
e.g., RSA).

This is all very puzzling at the moment...

-- 
regards,                  tf@cip.physik.uni-muenchen.de              (o_
Dr. Thomas Fischbacher -  http://www.cip.physik.uni-muenchen.de/~tf  //\
(lambda (n) ((lambda (p q r) (p p q r)) (lambda (g x y)              V_/_
(if (= x 0) y (g g (- x 1) (* x y)))) n 1))                      (Debian GNU)
--1418540168-270534528-1071777902=:32347
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="ym-debug.ml"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.58.0312182105020.32347@seekar.cip.physik.uni-muenchen.de>
Content-Description: 
Content-Disposition: ATTACHMENT; FILENAME="ym-debug.ml"

b3BlbiBOdW07Ow0KDQpsZXQgaW50MT1JbnQgMTs7ICgqIFRvIGF2b2lkIG51
bWJlciBjb25zaW5nIGxhdGVyIG9uLi4uICopDQpsZXQgaW50MD1JbnQgMDs7
IA0KbGV0IGludDI9SW50IDI7OyANCg0KdHlwZSBscG93ZXIgPQ0KICAgIHtt
dXRhYmxlIHBvd2VyOiBpbnQ7DQogICAgIG11dGFibGUgdmFyczogaW50OyAo
KiBiaXQgdmVjdG9yICopDQogICAgIG11dGFibGUgY29lZmZzOiBpbnQgYXJy
YXkgKCogYWx3YXlzIG1ha2UgZGVub21pbmF0b3JzIHJhdGlvbmFsICopDQog
ICB9OzsNCg0KbGV0IHBvd2VyX29mXzIgbiA9DQogIGxldCByZWMgdHJhdiBw
IHBwb3cgPQ0KICAgIGlmIHBwb3c+bg0KICAgIHRoZW4gLTENCiAgICBlbHNl
IGlmIHBwb3c8bg0KICAgIHRoZW4gdHJhdiAoMStwKSAocHBvdytwcG93KQ0K
ICAgIGVsc2UgcA0KICBpbiB0cmF2IDAgMTs7DQoNCigqDQogICBXZSBuZWVk
IGFuIG9yZGVyIG9uIGxwb3dlcnMuLi4NCiAqKQ0KDQpsZXQgdl9jbXAgY21w
IGEgYiA9DQogIGxldCBsZW5fYSA9IEFycmF5Lmxlbmd0aCBhIGluDQogIGxl
dCBsZW5fYiA9IEFycmF5Lmxlbmd0aCBiIGluDQogIGxldCByZWMgdHJhdiBw
b3MgPQ0KICAgIGlmIHBvcyA9PSBsZW5fYQ0KICAgIHRoZW4NCiAgICAgIGlm
IGxlbl9hID09IGxlbl9iIHRoZW4gMCBlbHNlIC0xDQogICAgZWxzZQ0KICAg
ICAgaWYgcG9zID09IGxlbl9iDQogICAgICB0aGVuIDENCiAgICAgIGVsc2UN
CglsZXQgeGEgPSBBcnJheS5nZXQgYSBwb3MgaW4NCglsZXQgeGIgPSBBcnJh
eS5nZXQgYiBwb3MgaW4NCglsZXQgY21wX3hhX3hiID0gY21wIHhhIHhiIGlu
DQoJaWYgY21wX3hhX3hiICE9IDAgdGhlbiBjbXBfeGFfeGIgZWxzZSB0cmF2
ICgxK3BvcykNCiAgaW4gdHJhdiAwOzsNCg0KDQooKiANCiAgIEV4YW1wbGU6
DQoNCiAgIHZfY21wIChmdW4geCB5IC0+IGlmIHggPCB5IHRoZW4gLTEgZWxz
ZSBpZiB4ID4geSB0aGVuIDEgZWxzZSAwKSBbfDE7MjszOzQ7OHxdIFt8MTsy
OzM7NHxdOzsNCiAqKQ0KDQoNCmxldCBscG93ZXJfY21wIGFsc29fY21wX3Bv
d2VycyBscF9hIGxwX2IgPQ0KICBpZiBscF9hLnZhcnMgPCBscF9iLnZhcnMg
dGhlbiAtMQ0KICBlbHNlIGlmIGxwX2EudmFycyA+IGxwX2IudmFycyB0aGVu
IDENCiAgZWxzZSBsZXQgY21wID0NCiAgICB2X2NtcCAoZnVuIHggeSAtPiBp
ZiB4IDwgeQ0KICAgICAgICAgICAgICAgICAgICAgICB0aGVuIC0xDQogICAg
ICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgeCA+IHkgdGhlbiAxDQogICAg
ICAgICAgICAgICAgICAgICAgIGVsc2UgMCkNCiAgICAgIGxwX2EuY29lZmZz
IGxwX2IuY29lZmZzIGluDQogIGlmIGNtcCAhPSAwIHRoZW4gY21wDQogICAg
ICBlbHNlDQogICAgICAgaWYgYWxzb19jbXBfcG93ZXJzDQogICAgICAgdGhl
biBpZiBscF9hLnBvd2VyIDwgbHBfYi5wb3dlciB0aGVuIC0xDQogICAgICAg
ICAgICBlbHNlIGlmIGxwX2EucG93ZXIgPiBscF9iLnBvd2VyIHRoZW4gMQ0K
ICAgICAgICAgICAgZWxzZSAwDQogICAgICAgZWxzZSAwOzsNCg0KKCoNCiAg
IFdoZW4gY29tYmluaW5nIGxwb3dlciB2ZWN0b3JzLA0KICAgd2UgZmlyc3Qg
aGF2ZSB0byBjb3VudCB0aGUgbnVtYmVyIG9mIGRpZmZlcmVudCBlbnRyaWVz
Li4uDQogKikNCg0KDQpsZXQgbHBvd2VyX25yX2RpZmZlcmVudF9ub25jYW5j
ZWxsYXRpbmcgdl9scF9hIHZfbHBfYiA9DQogIGxldCBsZW5fYSA9IEFycmF5
Lmxlbmd0aCB2X2xwX2EgaW4NCiAgbGV0IGxlbl9iID0gQXJyYXkubGVuZ3Ro
IHZfbHBfYiBpbg0KICBsZXQgcmVjIHRyYXYgbl9zb19mYXIgcG9zX2EgcG9z
X2IgPQ0KICAgIGlmIHBvc19hID09IGxlbl9hIHRoZW4gbl9zb19mYXIgKyBs
ZW5fYi1wb3NfYg0KCWVsc2UgaWYgcG9zX2IgPT0gbGVuX2IgdGhlbiBuX3Nv
X2ZhciArIGxlbl9hLXBvc19hDQoJZWxzZQ0KCSAgbGV0IGVudHJ5X2EgPSBB
cnJheS5nZXQgdl9scF9hIHBvc19hIGluDQoJICBsZXQgZW50cnlfYiA9IEFy
cmF5LmdldCB2X2xwX2IgcG9zX2IgaW4NCgkgIGxldCBjbXBfaGVyZSA9IGxw
b3dlcl9jbXAgZmFsc2UgZW50cnlfYSBlbnRyeV9iIGluDQoJICBpZiBjbXBf
aGVyZSA9PSAwIHRoZW4NCgkgICAgaWYgZW50cnlfYS5wb3dlciArIGVudHJ5
X2IucG93ZXIgPT0gMA0KCSAgICB0aGVuIHRyYXYgbl9zb19mYXIgKDErcG9z
X2EpICgxK3Bvc19iKQ0KCSAgICBlbHNlIHRyYXYgKDErbl9zb19mYXIpICgx
K3Bvc19hKSAoMStwb3NfYikNCgkgIGVsc2UgaWYgY21wX2hlcmUgPT0gLTEg
dGhlbiB0cmF2ICgxK25fc29fZmFyKSAoMStwb3NfYSkgcG9zX2INCgkgIGVs
c2UgdHJhdiAoMStuX3NvX2ZhcikgcG9zX2EgKDErcG9zX2IpDQogIGluIHRy
YXYgMCAwIDA7Ow0KDQoNCigqDQogICBXZSB3aWxsIG1ha2UgZ29vZCB1c2Ug
b2YgbHBvd2VyIHN1YnN0aXR1dGlvbiBub3Qgb25seQ0KICAgZm9yIGRvaW5n
IGNhbGN1bGF0aW9ucywgYnV0IGFsc28gZm9yIGNvbnN0cnVjdGluZw0KICAg
dGhlIGluaXRpYWwgdGVybXMuDQogKikNCg0KKCoNCg0KICAgRmlyc3Qgb2Yg
YWxsLCB3ZSBuZWVkIGludGVnZXIgYml0bWFzayBmdW5jdGlvbnMuLi4NCg0K
ICopDQoNCmxldCBpbnRlZ2VyX2xlbmd0aCBuID0NCiAgbGV0IHJlYyB0cmF2
IHJlc3RfbiBiaXRfbm93ID0NCiAgaWYgcmVzdF9uID09IDANCiAgdGhlbiBi
aXRfbm93DQogIGVsc2UNCiAgICBsZXQgY29udHJpYiA9IDEgbHNsIGJpdF9u
b3cgaW4NCiAgICBpZiAwID09IGNvbnRyaWIgbGFuZCByZXN0X24NCiAgICB0
aGVuIHRyYXYgcmVzdF9uICgxK2JpdF9ub3cpDQogICAgZWxzZSB0cmF2IChy
ZXN0X24tY29udHJpYikgKDErYml0X25vdykNCiAgaW4gdHJhdiBuIDA7Ow0K
DQpsZXQgbnJfYml0c19pbiBuID0NCiAgbGV0IHJlYyB0cmF2IHJlc3RfbiBi
aXRfbm93IG5yID0NCiAgaWYgcmVzdF9uID09IDANCiAgdGhlbiBucg0KICBl
bHNlDQogICAgbGV0IGNvbnRyaWIgPSAxIGxzbCBiaXRfbm93IGluDQogICAg
aWYgMCA9PSBjb250cmliIGxhbmQgcmVzdF9uDQogICAgdGhlbiB0cmF2IHJl
c3RfbiAoMStiaXRfbm93KSBucg0KICAgIGVsc2UgdHJhdiAocmVzdF9uLWNv
bnRyaWIpICgxK2JpdF9ub3cpICgxK25yKQ0KICBpbiB0cmF2IG4gMCAwOzsN
Cg0KDQooKiBHaXZlbiBhIG51bWJlciBhbmQgYSB2YWx1ZSAyXmJpdCwgdGVs
bCBtZSB0aGUgaG93IG1hbnl0aCBzZXQgYml0DQogICBpbiB0aGUgbnVtYmVy
IGl0IGlzLCBzdGFydGluZyB0byBjb3VudCBhdCAwLi4uICopDQoNCmxldCBu
cl9iaXRzX3NldF9iZWZvcmUgbnVtIGJpdHBvdyA9DQogIGxldCByZWMgd2Fs
ayBuciB2YWxfbm93ID0NCiAgICBpZiB2YWxfbm93ID09IGJpdHBvdw0KICAg
IHRoZW4gbnINCiAgICBlbHNlIHdhbGsgKGlmICgwPT12YWxfbm93IGxhbmQg
bnVtKSB0aGVuIG5yIGVsc2UgbnIrMSkNCgkodmFsX25vdyt2YWxfbm93KQ0K
ICBpbiB3YWxrIDAgMTs7DQoNCigqIC4uLiBhbmQgc29tZSBvdGhlciBoZWxw
ZXJzLi4uICopDQoNCmxldCBnY2QgYSBiID0NCiAgbGV0IHJlYyB3b3JrIHAg
cSA9DQogICAgbGV0IG1wcSA9IHAgbW9kIHEgaW4NCiAgICBpZiBtcHE9PTAg
dGhlbiBxIGVsc2Ugd29yayBxIG1wcQ0KICBpbg0KICBsZXQgYWEgPSBhYnMg
YSBpbg0KICBsZXQgYWIgPSBhYnMgYiBpbg0KICBpZiBhYSA+IGFiIHRoZW4g
d29yayBhYSBhYiBlbHNlIHdvcmsgYWIgYWE7Ow0KDQoNCmxldCB2X2djZCB2
X2ludCA9DQogIGxldCBsZW4gPSBBcnJheS5sZW5ndGggdl9pbnQgaW4NCiAg
aWYgbGVuID09IDANCiAgIHRoZW4gMQ0KICAgZWxzZSBpZiBsZW4gPT0gMSB0
aGVuIGFicyAoQXJyYXkuZ2V0IHZfaW50IDApDQogICBlbHNlIGxldCByZWMg
dHJhdiBwb3MgZ2NkX25vdyA9DQogICAgIGlmIGdjZF9ub3c9PTEgdGhlbiAx
DQogICAgIGVsc2UgaWYgcG9zPT1sZW4gdGhlbiBnY2Rfbm93DQogICAgIGVs
c2UgdHJhdiAoMStwb3MpIChnY2QgZ2NkX25vdyAoQXJyYXkuZ2V0IHZfaW50
IHBvcykpDQogICBpbiB0cmF2IDEgKEFycmF5LmdldCB2X2ludCAwKTs7DQoN
Cg0KbGV0IGxjbSBhIGIgPSBhYnMoYSpiLyhnY2QgYSBiKSk7Ow0KDQooKg0K
DQogICBIZXJlLCBxdWl0ZSBzb21lIGludGVyZXN0aW5nIHRoaW5ncyBkbyBo
YXBwZW4uLi4NCg0KICAgTm90ZSB0aGF0IHRoZSBnaXZlbiB2YXIgTVVTVCBv
Y2N1ciBpbiB0aGUgc3Vic3RpdHV0aW9uIHJ1bGUuLi4NCg0KICAgV2UgZGVz
cnVjdGl2ZWx5IGNoYW5nZSB0aGUgZXh0cmEgZmFjdG9ycyBpbiByZWZfbnVt
ZXIgYW5kIHJlZl9kZW5vbQ0KICAgaW4gb3JkZXIgdG8gYmUgYWJsZSB0byBr
ZWVwIG91ciBjb2VmZnMgaW50ZWdyYWwgYW5kIHN0YXkgZmFzdC4uLg0KDQog
ICBOb3RlIHRoYXQgb25lIGhhcyB0byBjb252aW5jZSBvbmVzZWxmIHRoYXQs
IGJ5IGxvb2tpbmcgYXQgdGhlIGdpdmVuDQogICBzdHJ1Y3R1cmVzIG9mIHRo
ZSB0ZXJtcyBzaG93aW5nIHVwLCB3ZSBkbyBub3QgbGVhdmUgaW50ZWdlciBy
YW5nZQ0KICAgYnkgYXBwbHlpbmcgI3Igc3Vic3RpdHV0aW9ucyBvZiBsaW5l
YXIgZnVuY3Rpb25zIHdpdGggY29lZmZzIG1heC4gMg0KICAgKGFuZCB3aGF0
IG9uZSBjYW4gZ2V0IGZyb20gdGhhdCBpbiBjb25zZWN1dGl2ZSBzdWJzKSBh
cyB3ZWxsIGFzDQogICBwb3dlcnMgdXAgdG8gMl5yLi4uDQogICANCiAgIE5v
dywgaG93IGJpZyBjYW4gd2UgbWFrZSByIGJlZm9yZSB2aW9sYXRpbmcgdGhl
c2UgY29uc3RyYWludHMuLi4/DQoNCiAgIFhYWCBOb3RlOiBuZWVkIGFub3Ro
ZXIgdmFyaWFudCwgd2hlcmUgd2UgZG8gbm90IGNvbnMgdGhlIHJlc3VsdCwN
CiAgIGJ1dCBpbnN0ZWFkIGp1c3QgZXZhbCBpdCENCg0KICopDQoNCg0KbGV0
IGdldF9jb2VmZiBscCBjb2VmZl9iaXRwb3cgPQ0KICBsZXQgcG9zID0gbnJf
Yml0c19zZXRfYmVmb3JlIGxwLnZhcnMgY29lZmZfYml0cG93IGluDQogIEFy
cmF5LmdldCBscC5jb2VmZnMgcG9zOzsNCg0KDQpsZXQgbHBvd2VyX3N1YnMg
cmVmX3hmYWN0b3IgdmFyX2JpdHBvdyB0b19zdWJzIGxwID0NCiAgaWYgKHZh
cl9iaXRwb3cgbGFuZCBscC52YXJzKSA9PSAwIHRoZW4gbHAgKCogbm90aGlu
ZyB0byBzdWJzdGl0dXRlICopDQogIGVsc2UNCiAgICBsZXQgc3Vic19vdGhl
cl92YXJzID0gdmFyX2JpdHBvdyBseG9yIHRvX3N1YnMudmFycyBpbg0KICAg
IGxldCBscF9vdGhlcl92YXJzID0gdmFyX2JpdHBvdyBseG9yIGxwLnZhcnMg
aW4NCiAgICBsZXQgdG90YWxfdmFycyA9IHN1YnNfb3RoZXJfdmFycyBsb3Ig
bHBfb3RoZXJfdmFycyBpbg0KICAgIGxldCBwb3NfdmFyX2luX2xwID0gbnJf
Yml0c19zZXRfYmVmb3JlIGxwLnZhcnMgdmFyX2JpdHBvdyBpbg0KICAgIGxl
dCBwb3NfdmFyX2luX3N1YnMgPSBucl9iaXRzX3NldF9iZWZvcmUgdG9fc3Vi
cy52YXJzIHZhcl9iaXRwb3cgaW4NCiAgICBsZXQgdmFyX2NvZWZmX2luX2xw
ID0gQXJyYXkuZ2V0IGxwLmNvZWZmcyBwb3NfdmFyX2luX2xwIGluDQogICAg
bGV0IHZhcl9jb2VmZl9pbl9zdWJzID0gQXJyYXkuZ2V0IHRvX3N1YnMuY29l
ZmZzIHBvc192YXJfaW5fc3VicyBpbg0KICAgIGxldCB2YXJfY29lZmYgPSBs
Y20gdmFyX2NvZWZmX2luX2xwIHZhcl9jb2VmZl9pbl9zdWJzIGluDQogICAg
bGV0IGZhY3Rvcl9zdWJzID0gLXZhcl9jb2VmZi92YXJfY29lZmZfaW5fc3Vi
cyBpbg0KICAgIGxldCBmYWN0b3JfbHAgPSB2YXJfY29lZmYvdmFyX2NvZWZm
X2luX2xwIGluDQogICAgbGV0IG5yX3RvdGFsX3ZhcnMgPSBucl9iaXRzX2lu
IHRvdGFsX3ZhcnMgaW4gKCogTWF5IHN0aWxsIGJlIHJlZHVjZWQgYnkgYWRk
aXRpb25hbCBjYW5jZWxsYXRpb25zISAqKQ0KICAgIGxldCByZXN1bHRfY29l
ZmZzID0gQXJyYXkubWFrZSBucl90b3RhbF92YXJzIDAgaW4NCiAgICBsZXQg
cmVjIGZpbGxfcmVzdWx0IGJpdHBvdyByZXN1bHRfcG9zIHRydWVfcmVzdWx0
X3ZhcnMgPQ0KICAgICAgaWYgYml0cG93ID4gdG90YWxfdmFycw0KICAgICAg
dGhlbiAoKiBmaW5pc2hlZCAtLSBidXQgbWF5IGhhdmUgdG8gdGFrZSBzdWIt
cmFuZ2UhICopDQogICAgICAgbGV0IGZpbmFsX2NvZWZmcyA9DQoJIGlmIHJl
c3VsdF9wb3M9PW5yX3RvdGFsX3ZhcnMNCiAJICB0aGVuIHJlc3VsdF9jb2Vm
ZnMNCgkgIGVsc2UgQXJyYXkuc3ViIHJlc3VsdF9jb2VmZnMgMCByZXN1bHRf
cG9zIGluDQogICAgICAge3Bvd2VyPWxwLnBvd2VyO3ZhcnM9dHJ1ZV9yZXN1
bHRfdmFycztjb2VmZnM9ZmluYWxfY29lZmZzfQ0KICAgICAgZWxzZSBpZiAw
ICE9IChscF9vdGhlcl92YXJzIGxhbmQgYml0cG93KQ0KCSAgIHRoZW4gaWYg
MCAhPSAoc3Vic19vdGhlcl92YXJzIGxhbmQgYml0cG93KQ0KCSAgICAgICAg
dGhlbiBsZXQgdmFsX3RvX3NldCA9ICAoZ2V0X2NvZWZmIGxwIGJpdHBvdykq
ZmFjdG9yX2xwDQoJCSAgICAgICAgICAgICAgICAgICAgICsgKGdldF9jb2Vm
ZiB0b19zdWJzIGJpdHBvdykqZmFjdG9yX3N1YnMgaW4NCgkJICBpZiB2YWxf
dG9fc2V0PT0wDQoJCSAgIHRoZW4gZmlsbF9yZXN1bHQgKGJpdHBvdytiaXRw
b3cpIHJlc3VsdF9wb3MgdHJ1ZV9yZXN1bHRfdmFycw0KCQkgICBlbHNlIChB
cnJheS5zZXQgcmVzdWx0X2NvZWZmcyByZXN1bHRfcG9zIHZhbF90b19zZXQ7
DQoJCQkgZmlsbF9yZXN1bHQgKGJpdHBvdytiaXRwb3cpICgxK3Jlc3VsdF9w
b3MpICh0cnVlX3Jlc3VsdF92YXJzK2JpdHBvdykpDQoJICAgICAgICBlbHNl
ICgqIGNvbnRyaWIgZnJvbSBscCwgYnV0IG5vdCBmcm9tIHN1YnMuLi4gKikN
CiAgICAJICAgICAgICAgIChBcnJheS5zZXQgcmVzdWx0X2NvZWZmcyByZXN1
bHRfcG9zDQoJCSAgICAgKChnZXRfY29lZmYgbHAgYml0cG93KSpmYWN0b3Jf
bHApOw0KCQkgICBmaWxsX3Jlc3VsdCAoYml0cG93K2JpdHBvdykgKDErcmVz
dWx0X3BvcykgKHRydWVfcmVzdWx0X3ZhcnMrYml0cG93KSkNCiAgICAgICAg
ICAgZWxzZSBpZiAwICE9IChzdWJzX290aGVyX3ZhcnMgbGFuZCBiaXRwb3cp
DQoJCSgqIENvbnRyaWIgZnJvbSBzdWJzLCBidXQgbm90IGZyb20gbHAgKikN
CgkgICAgICAgICB0aGVuIChBcnJheS5zZXQgcmVzdWx0X2NvZWZmcyByZXN1
bHRfcG9zDQoJCQkgKChnZXRfY29lZmYgdG9fc3VicyBiaXRwb3cpKmZhY3Rv
cl9zdWJzKTsNCgkJICAgICAgIGZpbGxfcmVzdWx0IChiaXRwb3crYml0cG93
KSAoMStyZXN1bHRfcG9zKSAodHJ1ZV9yZXN1bHRfdmFycytiaXRwb3cpKQ0K
CSAgICAgICAgIGVsc2UgKCogYm90aCBjb250cmlicyB6ZXJvLi4uICopDQoJ
ICAgICAgICAgIGZpbGxfcmVzdWx0IChiaXRwb3crYml0cG93KSByZXN1bHRf
cG9zIHRydWVfcmVzdWx0X3ZhcnMgaW4NCiAgICBsZXQgcmVzdWx0X2xwID0g
ZmlsbF9yZXN1bHQgMSAwIDAgaW4NCiAgICBpZiBBcnJheS5sZW5ndGggcmVz
dWx0X2xwLmNvZWZmcyA9PSAwDQoJKCogaWYgd2Ugc3Vic3RpdHV0ZWQgWCBi
eSBYLCB3ZSBnZXQgb3V0IGFuIGVtcHR5IGZhY3Rvci4uLg0KCSAgIEZvciB0
ZXJtIG5vcm1hbGl6YXRpb24gcHVycG9zZXMsIHdlIG1ha2UgMF4wPTEuDQoJ
ICopDQogICAgdGhlbg0KICAgICAgKHJlc3VsdF9scC5wb3dlciA8LSAwOw0K
ICAgICAgIHJlc3VsdF9scC52YXJzIDwtIDA7DQogICAgICAgcmVzdWx0X2xw
KQ0KICAgIGVsc2UNCiAgICBsZXQgY29lZmZzX2djZDAgPSB2X2djZCByZXN1
bHRfbHAuY29lZmZzIGluDQogICAgbGV0IGNvZWZmc19nY2QgPSBpZiAoQXJy
YXkuZ2V0IHJlc3VsdF9scC5jb2VmZnMgMCkgPCAwIHRoZW4gKC1jb2VmZnNf
Z2NkMCkgZWxzZSBjb2VmZnNfZ2NkMCBpbg0KICAgICgqIFByaW50Zi5wcmlu
dGYgImNvZWZmc19nY2QwPSVkIGNvZWZmc19nY2Q9JWRcbiIgY29lZmZzX2dj
ZDAgY29lZmZzX2djZDsgREREICopDQogICAgKA0KICAgICBpZiBjb2VmZnNf
Z2NkICE9IDENCiAgICAgdGhlbiBBcnJheS5pdGVyaSAoZnVuIHBvcyBjb2Vm
ZiAtPiBBcnJheS5zZXQgcmVzdWx0X2xwLmNvZWZmcyBwb3MgKGNvZWZmL2Nv
ZWZmc19nY2QpKSByZXN1bHRfbHAuY29lZmZzDQogICAgIGVsc2UgKCk7DQog
ICAgIHJlZl94ZmFjdG9yOj0gIXJlZl94ZmFjdG9yICovIChwb3dlcl9udW0g
ICgoSW50IGZhY3Rvcl9scCkvLyhJbnQgY29lZmZzX2djZCkpIChJbnQgKC1s
cC5wb3dlcikpKTsNCiAgICAgcmVzdWx0X2xwDQogICAgKTs7DQoNCg0KbGV0
IHZfbHBvd2VyX3N1YnNfdW5pcSBudW1jb2VmZl9wbHVzX3ZfbHAgdmFyX2Jp
dHBvdyB0b19zdWJzID0NCiAgbGV0IChuYyx2X2xwKSA9IG51bWNvZWZmX3Bs
dXNfdl9scCBpbg0KICBsZXQgcm5jID0gcmVmIG5jIGluDQogIGxldCBsZW5f
dl9scCA9IEFycmF5Lmxlbmd0aCB2X2xwIGluDQogIGxldCB2X2xwX3N1YnMg
PSBBcnJheS5tYXAgKGxwb3dlcl9zdWJzIHJuYyB2YXJfYml0cG93IHRvX3N1
YnMpIHZfbHAgaW4NCiAgKEFycmF5LnNvcnQgKGxwb3dlcl9jbXAgdHJ1ZSkg
dl9scF9zdWJzOw0KICAgbGV0IHJlYyB0cmF2X3VuaXEgcG9zX3NyYyBwb3Nf
ZHN0ID0NCiAgICAgaWYgcG9zX3NyYyA9PSBsZW5fdl9scA0KICAgICAgdGhl
biBpZiBwb3NfZHN0ID09IHBvc19zcmMNCiAgICAgICAgICAgIHRoZW4gdl9s
cF9zdWJzDQoJICAgIGVsc2UgQXJyYXkuc3ViIHZfbHBfc3VicyAwIHBvc19k
c3QNCiAgICAgIGVsc2UgKCogc3RpbGwgd29yayB0byBiZSBkb25lICopDQog
ICAgICAgaWYgcG9zX2RzdD09MA0KICAgICAgICB0aGVuICgqIG5vIHRlcm1z
IG9uIHN0YWNrICopDQoJIChBcnJheS5zZXQgdl9scF9zdWJzIHBvc19kc3Qg
KEFycmF5LmdldCB2X2xwX3N1YnMgcG9zX3NyYyk7DQoJICB0cmF2X3VuaXEg
KDErcG9zX3NyYykgKDErcG9zX2RzdCkpDQoJZWxzZQ0KCSBsZXQgbHAxID0g
QXJyYXkuZ2V0IHZfbHBfc3VicyAocG9zX2RzdC0xKSBpbg0KCSBsZXQgbHAy
ID0gQXJyYXkuZ2V0IHZfbHBfc3VicyBwb3Nfc3JjIGluDQoJIGxldCBjbXAg
PSBscG93ZXJfY21wIGZhbHNlIGxwMSBscDIgaW4NCgkgaWYgY21wPT0wICgq
IGNvbWJpbmFibGUgdGVybXMgKikNCgkgIHRoZW4gbGV0IHRvdGFsX3Bvd2Vy
ID0gIGxwMS5wb3dlciArIGxwMi5wb3dlciBpbg0KCSAgIGlmIHRvdGFsX3Bv
d2VyID09IDANCgkgICAgdGhlbiB0cmF2X3VuaXEgKDErcG9zX3NyYykgKHBv
c19kc3QtMSkgKCogVGVybSBvbiBzdGFjayB3YXMgZWF0ZW4gKikNCgkgICAg
ZWxzZSAoQXJyYXkuc2V0IHZfbHBfc3VicyAocG9zX2RzdC0xKQ0KCQkgICAg
e3Bvd2VyPXRvdGFsX3Bvd2VyOw0KCQkgICAgIHZhcnM9bHAxLnZhcnM7DQoJ
CSAgICAgY29lZmZzPWxwMS5jb2VmZnN9DQoJCSAgICAoKiBUaGlzIGNvbnNl
cyBtb3JlIG9mdGVuIHRoYW4gc3RyaWN0bHkgbmVjZXNzYXJ5Li4uDQoJCSAg
ICAgICBIb3dldmVyLCBJIGRvIG5vdCB3YW50IHRvIHdvcnJ5IGFib3V0IHdo
ZW4gSSBhbHJlYWR5DQoJCSAgICAgICBoYXZlIGNvcGllZCBhIHZhbHVlIGFu
ZCBtYXkgZG8gZGVzdHJ1Y3RpdmUNCgkJICAgICAgIG1vZGlmaWNhdGlvbi4u
Lg0KCQkgICAgICopOw0KCQkgIHRyYXZfdW5pcSAoMStwb3Nfc3JjKSBwb3Nf
ZHN0KQ0KCSAgZWxzZSAoKiBjbXAhPTAsIHdoaWNoIG1lYW5zIHRoYXQgd2Ug
aGF2ZSB0byB0cmFuc2ZlciBuZXh0IHRlcm0gKikNCgkgICAoQXJyYXkuc2V0
IHZfbHBfc3VicyBwb3NfZHN0IGxwMjsNCgkgICAgdHJhdl91bmlxICgxK3Bv
c19zcmMpICgxK3Bvc19kc3QpKSBpbg0KICAgbGV0IHZfbHBfc3Vic191bmlx
ID0gdHJhdl91bmlxIDAgMCBpbg0KICAgKCFybmMsdl9scF9zdWJzX3VuaXEp
KTs7DQoNCg0KbGV0IGV2YWxfbmNfdl9scCBuY192X2xwIHZfRXggPQ0KICBs
ZXQgKG5jLHZfbHApPW5jX3ZfbHAgaW4NCiAgbGV0IG5yX2ZhY3RvcnM9QXJy
YXkubGVuZ3RoIHZfbHAgaW4NCiAgbGV0IGJpdG1hc2sgPSAoMSBsc2wgKEFy
cmF5Lmxlbmd0aCB2X0V4KSktMSBpbg0KICAoKiBxdWljayBoYWNrOiB1c2Ug
YSB2X2xwIHRvIHJldHJpZXZlIGNvZWZmIGRhdGEuLi4gKikNCiAgbGV0IGV2
YWxfbHA9e3Bvd2VyPTA7dmFycz1iaXRtYXNrO2NvZWZmcz12X0V4fSBpbg0K
ICBsZXQgcmVjIHRyYXYgc29fZmFyIG4gPQ0KICAgIGlmIG4gPT0gbnJfZmFj
dG9ycyB0aGVuIHNvX2ZhciBlbHNlDQogICAgbGV0IGZhY3Rvcl9uID0gQXJy
YXkuZ2V0IHZfbHAgbiBpbg0KICAgIGxldCBjb2VmZnNfbiA9IGZhY3Rvcl9u
LmNvZWZmcyBpbg0KICAgIGxldCBucl9jb2VmZnM9QXJyYXkubGVuZ3RoIGNv
ZWZmc19uIGluDQogICAgbGV0IHJlYyB0cmF2X3ZhcnMgcmVzdF92YXJzIGJp
dHBvdyBzdW1fbm93ID0NCiAgICAgIGlmIHJlc3RfdmFycz09MA0KICAgICAg
dGhlbiBzdW1fbm93DQogICAgICBlbHNlIGlmIChiaXRwb3cgbGFuZCByZXN0
X3ZhcnMpID09IDANCiAgICAgICAgICAgIHRoZW4gdHJhdl92YXJzIHJlc3Rf
dmFycyAoYml0cG93K2JpdHBvdykgc3VtX25vdw0KCSAgICBlbHNlDQoJICAg
ICBsZXQgY29lZmZfaiA9IGdldF9jb2VmZiBmYWN0b3JfbiBiaXRwb3cgaW4N
CgkgICAgIGxldCB2YXJfaiA9IGdldF9jb2VmZiBldmFsX2xwIGJpdHBvdyBp
bg0KCSAgICAgdHJhdl92YXJzIChyZXN0X3ZhcnMtYml0cG93KSAoYml0cG93
K2JpdHBvdykgKHN1bV9ub3crLyAoSW50IGNvZWZmX2opICovIChJbnQgdmFy
X2opKQ0KICAgIGluIGxldCB2YWxfZmFjdG9yX24gPSB0cmF2X3ZhcnMgZmFj
dG9yX24udmFycyAxIChJbnQgMCkgaW4NCiAgICB0cmF2IChzb19mYXIqLyhw
b3dlcl9udW0gdmFsX2ZhY3Rvcl9uIChJbnQgZmFjdG9yX24ucG93ZXIpKSkg
KDErIG4pIGluDQogIHRyYXYgbmMgMDs7DQoNCmxldCBjaGVja19zdWJzdGl0
dXRpb24gbmNfdl9scCA9DQogIGxldCBkZWJ1Z19scF9yZXMgPSB7cG93ZXIg
PSAtMTsgdmFycyA9IDgwOyBjb2VmZnMgPSBbfDM7IC0yfF19IGluDQogIGxl
dCB2X2V2YWwgPSAgW3wwOzEwMDA7MTEwMDsxMTEwOy0xMDAwLTExMDAtMTEx
MDsxMDE7MyooLTEwMDAtMTEwMC0xMTEwKS8yfF0gaW4NCiAgbGV0IHZhcl9i
aXRwb3cgPSAxIGxzbCAoKGludGVnZXJfbGVuZ3RoIGRlYnVnX2xwX3Jlcy52
YXJzKS0xKSBpbg0KICBsZXQgc3Vic3RpdHV0ZWQgPSB2X2xwb3dlcl9zdWJz
X3VuaXEgbmNfdl9scCB2YXJfYml0cG93IGRlYnVnX2xwX3JlcyBpbg0KICBs
ZXQgdmFsX3N1YnN0aXR1dGVkID0gZXZhbF9uY192X2xwIHN1YnN0aXR1dGVk
IHZfZXZhbCBpbg0KICBsZXQgdmFsX2RpcmVjdCA9IGV2YWxfbmNfdl9scCBu
Y192X2xwIHZfZXZhbCBpbg0KICBsZXQgZGlmZmVyZW5jZSA9IHZhbF9zdWJz
dGl0dXRlZC0vdmFsX2RpcmVjdCBpbg0KICAoKiBMaXN0Lm1hcCBzdHJpbmdf
b2ZfbnVtIFt2YWxfc3Vic3RpdHV0ZWQ7dmFsX2RpcmVjdDtkaWZmZXJlbmNl
XSAqKQ0KICBzdHJpbmdfb2ZfbnVtIGRpZmZlcmVuY2U7Ow0KDQpsZXQgZGVi
dWdfdl9scD0NCigoSW50ICgtMTYpKS8vKEludCAzKSwNCiBbfHtwb3dlciA9
IDA7IHZhcnMgPSAwOyBjb2VmZnMgPSBbfHxdfTsNCiAgIHtwb3dlciA9IDM7
IHZhcnMgPSAxNjsgY29lZmZzID0gW3wxfF19Ow0KICAge3Bvd2VyID0gLTE7
IHZhcnMgPSAxODsgY29lZmZzID0gW3wxOyAtMnxdfTsNCiAgIHtwb3dlciA9
IC0zOyB2YXJzID0gMTg7IGNvZWZmcyA9IFt8MTsgLTF8XX07DQogICB7cG93
ZXIgPSAtMzsgdmFycyA9IDE4OyBjb2VmZnMgPSBbfDE7IDF8XX07DQogICB7
cG93ZXIgPSAtMTsgdmFycyA9IDE4OyBjb2VmZnMgPSBbfDE7IDJ8XX07DQog
ICB7cG93ZXIgPSAtMTsgdmFycyA9IDIwOyBjb2VmZnMgPSBbfDE7IC0yfF19
Ow0KICAge3Bvd2VyID0gLTM7IHZhcnMgPSAyMDsgY29lZmZzID0gW3wxOyAt
MXxdfTsNCiAgIHtwb3dlciA9IC0zOyB2YXJzID0gMjA7IGNvZWZmcyA9IFt8
MTsgMXxdfTsNCiAgIHtwb3dlciA9IC0xOyB2YXJzID0gMjA7IGNvZWZmcyA9
IFt8MTsgMnxdfTsNCiAgIHtwb3dlciA9IDE7IHZhcnMgPSAyMjsgY29lZmZz
ID0gW3wxOyAxOyAtMnxdfTsNCiAgIHtwb3dlciA9IDM7IHZhcnMgPSAyMjsg
Y29lZmZzID0gW3wxOyAxOyAtMXxdfTsNCiAgIHtwb3dlciA9IDM7IHZhcnMg
PSAyMjsgY29lZmZzID0gW3wxOyAxOyAxfF19Ow0KICAge3Bvd2VyID0gMTsg
dmFycyA9IDIyOyBjb2VmZnMgPSBbfDE7IDE7IDJ8XX07DQogICB7cG93ZXIg
PSAtMTsgdmFycyA9IDI0OyBjb2VmZnMgPSBbfDE7IC0yfF19Ow0KICAge3Bv
d2VyID0gLTM7IHZhcnMgPSAyNDsgY29lZmZzID0gW3wxOyAtMXxdfTsNCiAg
IHtwb3dlciA9IC0zOyB2YXJzID0gMjQ7IGNvZWZmcyA9IFt8MTsgMXxdfTsN
CiAgIHtwb3dlciA9IC0xOyB2YXJzID0gMjQ7IGNvZWZmcyA9IFt8MTsgMnxd
fTsNCiAgIHtwb3dlciA9IDE7IHZhcnMgPSAyNjsgY29lZmZzID0gW3wxOyAx
OyAtMnxdfTsNCiAgIHtwb3dlciA9IDM7IHZhcnMgPSAyNjsgY29lZmZzID0g
W3wxOyAxOyAtMXxdfTsNCiAgIHtwb3dlciA9IDM7IHZhcnMgPSAyNjsgY29l
ZmZzID0gW3wxOyAxOyAxfF19Ow0KICAge3Bvd2VyID0gMTsgdmFycyA9IDI2
OyBjb2VmZnMgPSBbfDE7IDE7IDJ8XX07DQogICB7cG93ZXIgPSAxOyB2YXJz
ID0gMjg7IGNvZWZmcyA9IFt8MTsgMTsgLTJ8XX07DQogICB7cG93ZXIgPSAz
OyB2YXJzID0gMjg7IGNvZWZmcyA9IFt8MTsgMTsgLTF8XX07DQogICB7cG93
ZXIgPSAzOyB2YXJzID0gMjg7IGNvZWZmcyA9IFt8MTsgMTsgMXxdfTsNCiAg
IHtwb3dlciA9IDE7IHZhcnMgPSAyODsgY29lZmZzID0gW3wxOyAxOyAyfF19
Ow0KICAge3Bvd2VyID0gMjsgdmFycyA9IDMyOyBjb2VmZnMgPSBbfDF8XX07
DQogICB7cG93ZXIgPSAtMjsgdmFycyA9IDM0OyBjb2VmZnMgPSBbfDE7IC0y
fF19Ow0KICAge3Bvd2VyID0gLTI7IHZhcnMgPSAzNDsgY29lZmZzID0gW3wx
OyAyfF19Ow0KICAge3Bvd2VyID0gLTI7IHZhcnMgPSAzNjsgY29lZmZzID0g
W3wxOyAtMnxdfTsNCiAgIHtwb3dlciA9IC0yOyB2YXJzID0gMzY7IGNvZWZm
cyA9IFt8MTsgMnxdfTsNCiAgIHtwb3dlciA9IDI7IHZhcnMgPSAzODsgY29l
ZmZzID0gW3wxOyAxOyAtMnxdfTsNCiAgIHtwb3dlciA9IDI7IHZhcnMgPSAz
ODsgY29lZmZzID0gW3wxOyAxOyAyfF19Ow0KICAge3Bvd2VyID0gLTI7IHZh
cnMgPSA0MDsgY29lZmZzID0gW3wxOyAtMnxdfTsNCiAgIHtwb3dlciA9IC0y
OyB2YXJzID0gNDA7IGNvZWZmcyA9IFt8MTsgMnxdfTsNCiAgIHtwb3dlciA9
IDI7IHZhcnMgPSA0MjsgY29lZmZzID0gW3wxOyAxOyAtMnxdfTsNCiAgIHtw
b3dlciA9IDI7IHZhcnMgPSA0MjsgY29lZmZzID0gW3wxOyAxOyAyfF19Ow0K
ICAge3Bvd2VyID0gMjsgdmFycyA9IDQ0OyBjb2VmZnMgPSBbfDE7IDE7IC0y
fF19Ow0KICAge3Bvd2VyID0gMjsgdmFycyA9IDQ0OyBjb2VmZnMgPSBbfDE7
IDE7IDJ8XX07DQogICB7cG93ZXIgPSAtMTsgdmFycyA9IDQ4OyBjb2VmZnMg
PSBbfDE7IC0yfF19OwkNCiAgIHtwb3dlciA9IDE7IHZhcnMgPSA0ODsgY29l
ZmZzID0gW3wxOyAtMXxdfTsNCiAgIHtwb3dlciA9IDE7IHZhcnMgPSA0ODsg
Y29lZmZzID0gW3wxOyAxfF19Ow0KICAge3Bvd2VyID0gLTE7IHZhcnMgPSA0
ODsgY29lZmZzID0gW3wxOyAyfF19Ow0KICAge3Bvd2VyID0gLTE7IHZhcnMg
PSA0ODsgY29lZmZzID0gW3wzOyAtMnxdfTsNCiAgIHtwb3dlciA9IC0xOyB2
YXJzID0gNDg7IGNvZWZmcyA9IFt8MzsgMnxdfTsNCiAgIHtwb3dlciA9IC0x
OyB2YXJzID0gNTA7IGNvZWZmcyA9IFt8MTsgLTI7IC0yfF19Ow0KICAge3Bv
d2VyID0gLTE7IHZhcnMgPSA1MDsgY29lZmZzID0gW3wxOyAtMjsgMnxdfTsN
CiAgIHtwb3dlciA9IC0xOyB2YXJzID0gNTA7IGNvZWZmcyA9IFt8MTsgLTE7
IC0yfF19Ow0KICAge3Bvd2VyID0gLTE7IHZhcnMgPSA1MDsgY29lZmZzID0g
W3wxOyAtMTsgMnxdfTsNCiAgIHtwb3dlciA9IC0xOyB2YXJzID0gNTA7IGNv
ZWZmcyA9IFt8MTsgMTsgLTJ8XX07DQogICB7cG93ZXIgPSAtMTsgdmFycyA9
IDUwOyBjb2VmZnMgPSBbfDE7IDE7IDJ8XX07DQogICB7cG93ZXIgPSAtMTsg
dmFycyA9IDUwOyBjb2VmZnMgPSBbfDE7IDI7IC0yfF19Ow0KICAge3Bvd2Vy
ID0gLTE7IHZhcnMgPSA1MDsgY29lZmZzID0gW3wxOyAyOyAyfF19Ow0KICAg
e3Bvd2VyID0gLTE7IHZhcnMgPSA1MjsgY29lZmZzID0gW3wxOyAtMjsgLTJ8
XX07DQogICB7cG93ZXIgPSAtMTsgdmFycyA9IDUyOyBjb2VmZnMgPSBbfDE7
IC0yOyAyfF19Ow0KICAge3Bvd2VyID0gLTE7IHZhcnMgPSA1MjsgY29lZmZz
ID0gW3wxOyAtMTsgLTJ8XX07DQogICB7cG93ZXIgPSAtMTsgdmFycyA9IDUy
OyBjb2VmZnMgPSBbfDE7IC0xOyAyfF19Ow0KICAge3Bvd2VyID0gLTE7IHZh
cnMgPSA1MjsgY29lZmZzID0gW3wxOyAxOyAtMnxdfTsNCiAgIHtwb3dlciA9
IC0xOyB2YXJzID0gNTI7IGNvZWZmcyA9IFt8MTsgMTsgMnxdfTsNCiAgIHtw
b3dlciA9IC0xOyB2YXJzID0gNTI7IGNvZWZmcyA9IFt8MTsgMjsgLTJ8XX07
DQogICB7cG93ZXIgPSAtMTsgdmFycyA9IDUyOyBjb2VmZnMgPSBbfDE7IDI7
IDJ8XX07DQogICB7cG93ZXIgPSAxOyB2YXJzID0gNTQ7IGNvZWZmcyA9IFt8
MTsgMTsgLTI7IC0yfF19Ow0KICAge3Bvd2VyID0gMTsgdmFycyA9IDU0OyBj
b2VmZnMgPSBbfDE7IDE7IC0yOyAyfF19Ow0KICAge3Bvd2VyID0gMTsgdmFy
cyA9IDU0OyBjb2VmZnMgPSBbfDE7IDE7IC0xOyAtMnxdfTsNCiAgIHtwb3dl
ciA9IDE7IHZhcnMgPSA1NDsgY29lZmZzID0gW3wxOyAxOyAtMTsgMnxdfTsN
CiAgIHtwb3dlciA9IDE7IHZhcnMgPSA1NDsgY29lZmZzID0gW3wxOyAxOyAx
OyAtMnxdfTsNCiAgIHtwb3dlciA9IDE7IHZhcnMgPSA1NDsgY29lZmZzID0g
W3wxOyAxOyAxOyAyfF19Ow0KICAge3Bvd2VyID0gMTsgdmFycyA9IDU0OyBj
b2VmZnMgPSBbfDE7IDE7IDI7IC0yfF19Ow0KICAge3Bvd2VyID0gMTsgdmFy
cyA9IDU0OyBjb2VmZnMgPSBbfDE7IDE7IDI7IDJ8XX07DQogICB7cG93ZXIg
PSAtMTsgdmFycyA9IDU2OyBjb2VmZnMgPSBbfDE7IC0yOyAtMnxdfTsNCiAg
IHtwb3dlciA9IC0xOyB2YXJzID0gNTY7IGNvZWZmcyA9IFt8MTsgLTI7IDJ8
XX07DQogICB7cG93ZXIgPSAtMTsgdmFycyA9IDU2OyBjb2VmZnMgPSBbfDE7
IC0xOyAtMnxdfTsNCiAgIHtwb3dlciA9IC0xOyB2YXJzID0gNTY7IGNvZWZm
cyA9IFt8MTsgLTE7IDJ8XX07DQogICB7cG93ZXIgPSAtMTsgdmFycyA9IDU2
OyBjb2VmZnMgPSBbfDE7IDE7IC0yfF19Ow0KICAge3Bvd2VyID0gLTE7IHZh
cnMgPSA1NjsgY29lZmZzID0gW3wxOyAxOyAyfF19Ow0KICAge3Bvd2VyID0g
LTE7IHZhcnMgPSA1NjsgY29lZmZzID0gW3wxOyAyOyAtMnxdfTsNCiAgIHtw
b3dlciA9IC0xOyB2YXJzID0gNTY7IGNvZWZmcyA9IFt8MTsgMjsgMnxdfTsN
CiAgIHtwb3dlciA9IDE7IHZhcnMgPSA1ODsgY29lZmZzID0gW3wxOyAxOyAt
MjsgLTJ8XX07DQogICB7cG93ZXIgPSAxOyB2YXJzID0gNTg7IGNvZWZmcyA9
IFt8MTsgMTsgLTI7IDJ8XX07DQogICB7cG93ZXIgPSAxOyB2YXJzID0gNTg7
IGNvZWZmcyA9IFt8MTsgMTsgLTE7IC0yfF19Ow0KICAge3Bvd2VyID0gMTsg
dmFycyA9IDU4OyBjb2VmZnMgPSBbfDE7IDE7IC0xOyAyfF19Ow0KICAge3Bv
d2VyID0gMTsgdmFycyA9IDU4OyBjb2VmZnMgPSBbfDE7IDE7IDE7IC0yfF19
Ow0KICAge3Bvd2VyID0gMTsgdmFycyA9IDU4OyBjb2VmZnMgPSBbfDE7IDE7
IDE7IDJ8XX07DQogICB7cG93ZXIgPSAxOyB2YXJzID0gNTg7IGNvZWZmcyA9
IFt8MTsgMTsgMjsgLTJ8XX07DQogICB7cG93ZXIgPSAxOyB2YXJzID0gNTg7
IGNvZWZmcyA9IFt8MTsgMTsgMjsgMnxdfTsNCiAgIHtwb3dlciA9IDE7IHZh
cnMgPSA2MDsgY29lZmZzID0gW3wxOyAxOyAtMjsgLTJ8XX07DQogICB7cG93
ZXIgPSAxOyB2YXJzID0gNjA7IGNvZWZmcyA9IFt8MTsgMTsgLTI7IDJ8XX07
DQogICB7cG93ZXIgPSAxOyB2YXJzID0gNjA7IGNvZWZmcyA9IFt8MTsgMTsg
LTE7IC0yfF19Ow0KICAge3Bvd2VyID0gMTsgdmFycyA9IDYwOyBjb2VmZnMg
PSBbfDE7IDE7IC0xOyAyfF19Ow0KICAge3Bvd2VyID0gMTsgdmFycyA9IDYw
OyBjb2VmZnMgPSBbfDE7IDE7IDE7IC0yfF19Ow0KICAge3Bvd2VyID0gMTsg
dmFycyA9IDYwOyBjb2VmZnMgPSBbfDE7IDE7IDE7IDJ8XX07DQogICB7cG93
ZXIgPSAxOyB2YXJzID0gNjA7IGNvZWZmcyA9IFt8MTsgMTsgMjsgLTJ8XX07
DQogICB7cG93ZXIgPSAxOyB2YXJzID0gNjA7IGNvZWZmcyA9IFt8MTsgMTsg
MjsgMnxdfTsNCiAgIHtwb3dlciA9IDE7IHZhcnMgPSA2NDsgY29lZmZzID0g
W3wxfF19Ow0KICAge3Bvd2VyID0gLTE7IHZhcnMgPSA2NjsgY29lZmZzID0g
W3wxOyAtMnxdfTsNCiAgIHtwb3dlciA9IC0xOyB2YXJzID0gNjY7IGNvZWZm
cyA9IFt8MTsgMnxdfTsNCiAgIHtwb3dlciA9IC0xOyB2YXJzID0gNjg7IGNv
ZWZmcyA9IFt8MTsgLTJ8XX07DQogICB7cG93ZXIgPSAtMTsgdmFycyA9IDY4
OyBjb2VmZnMgPSBbfDE7IDJ8XX07DQogICB7cG93ZXIgPSAxOyB2YXJzID0g
NzA7IGNvZWZmcyA9IFt8MTsgMTsgLTJ8XX07DQogICB7cG93ZXIgPSAxOyB2
YXJzID0gNzA7IGNvZWZmcyA9IFt8MTsgMTsgMnxdfTsNCiAgIHtwb3dlciA9
IC0xOyB2YXJzID0gNzI7IGNvZWZmcyA9IFt8MTsgLTJ8XX07DQogICB7cG93
ZXIgPSAtMTsgdmFycyA9IDcyOyBjb2VmZnMgPSBbfDE7IDJ8XX07DQogICB7
cG93ZXIgPSAxOyB2YXJzID0gNzQ7IGNvZWZmcyA9IFt8MTsgMTsgLTJ8XX07
DQogICB7cG93ZXIgPSAxOyB2YXJzID0gNzQ7IGNvZWZmcyA9IFt8MTsgMTsg
MnxdfTsNCiAgIHtwb3dlciA9IDE7IHZhcnMgPSA3NjsgY29lZmZzID0gW3wx
OyAxOyAtMnxdfTsNCiAgIHtwb3dlciA9IDE7IHZhcnMgPSA3NjsgY29lZmZz
ID0gW3wxOyAxOyAyfF19Ow0KICAge3Bvd2VyID0gMTsgdmFycyA9IDgwOyBj
b2VmZnMgPSBbfDE7IC0xfF19Ow0KICAge3Bvd2VyID0gLTE7IHZhcnMgPSA4
MDsgY29lZmZzID0gW3wxOyAyfF19Ow0KICAge3Bvd2VyID0gMDsgdmFycyA9
IDgwOyBjb2VmZnMgPSBbfDM7IC0yfF19Ow0KICAge3Bvd2VyID0gLTE7IHZh
cnMgPSA4MjsgY29lZmZzID0gW3wxOyAtMjsgMnxdfTsNCiAgIHtwb3dlciA9
IC0xOyB2YXJzID0gODI7IGNvZWZmcyA9IFt8MTsgLTE7IDJ8XX07DQogICB7
cG93ZXIgPSAtMTsgdmFycyA9IDgyOyBjb2VmZnMgPSBbfDE7IDE7IC0yfF19
Ow0KICAge3Bvd2VyID0gLTE7IHZhcnMgPSA4MjsgY29lZmZzID0gW3wxOyAy
OyAtMnxdfTsNCiAgIHtwb3dlciA9IC0xOyB2YXJzID0gODQ7IGNvZWZmcyA9
IFt8MTsgLTI7IDJ8XX07DQogICB7cG93ZXIgPSAtMTsgdmFycyA9IDg0OyBj
b2VmZnMgPSBbfDE7IC0xOyAyfF19Ow0KICAge3Bvd2VyID0gLTE7IHZhcnMg
PSA4NDsgY29lZmZzID0gW3wxOyAxOyAtMnxdfTsNCiAgIHtwb3dlciA9IC0x
OyB2YXJzID0gODQ7IGNvZWZmcyA9IFt8MTsgMjsgLTJ8XX07DQogICB7cG93
ZXIgPSAxOyB2YXJzID0gODY7IGNvZWZmcyA9IFt8MTsgMTsgLTI7IDJ8XX07
DQogICB7cG93ZXIgPSAxOyB2YXJzID0gODY7IGNvZWZmcyA9IFt8MTsgMTsg
LTE7IDJ8XX07DQogICB7cG93ZXIgPSAxOyB2YXJzID0gODY7IGNvZWZmcyA9
IFt8MTsgMTsgMTsgLTJ8XX07DQogICB7cG93ZXIgPSAxOyB2YXJzID0gODY7
IGNvZWZmcyA9IFt8MTsgMTsgMjsgLTJ8XX07DQogICB7cG93ZXIgPSAtMTsg
dmFycyA9IDg4OyBjb2VmZnMgPSBbfDE7IC0yOyAyfF19Ow0KICAge3Bvd2Vy
ID0gLTE7IHZhcnMgPSA4ODsgY29lZmZzID0gW3wxOyAtMTsgMnxdfTsNCiAg
IHtwb3dlciA9IC0xOyB2YXJzID0gODg7IGNvZWZmcyA9IFt8MTsgMTsgLTJ8
XX07DQogICB7cG93ZXIgPSAtMTsgdmFycyA9IDg4OyBjb2VmZnMgPSBbfDE7
IDI7IC0yfF19Ow0KICAge3Bvd2VyID0gMTsgdmFycyA9IDkwOyBjb2VmZnMg
PSBbfDE7IDE7IC0yOyAyfF19Ow0KICAge3Bvd2VyID0gMTsgdmFycyA9IDkw
OyBjb2VmZnMgPSBbfDE7IDE7IC0xOyAyfF19Ow0KICAge3Bvd2VyID0gMTsg
dmFycyA9IDkwOyBjb2VmZnMgPSBbfDE7IDE7IDE7IC0yfF19Ow0KICAge3Bv
d2VyID0gMTsgdmFycyA9IDkwOyBjb2VmZnMgPSBbfDE7IDE7IDI7IC0yfF19
Ow0KICAge3Bvd2VyID0gMTsgdmFycyA9IDkyOyBjb2VmZnMgPSBbfDE7IDE7
IC0yOyAyfF19Ow0KICAge3Bvd2VyID0gMTsgdmFycyA9IDkyOyBjb2VmZnMg
PSBbfDE7IDE7IC0xOyAyfF19Ow0KICAge3Bvd2VyID0gMTsgdmFycyA9IDky
OyBjb2VmZnMgPSBbfDE7IDE7IDE7IC0yfF19Ow0KICAge3Bvd2VyID0gMTsg
dmFycyA9IDkyOyBjb2VmZnMgPSBbfDE7IDE7IDI7IC0yfF19Ow0KICAge3Bv
d2VyID0gMTsgdmFycyA9IDk2OyBjb2VmZnMgPSBbfDE7IC0xfF19Ow0KICAg
e3Bvd2VyID0gMTsgdmFycyA9IDk2OyBjb2VmZnMgPSBbfDE7IDF8XX07DQog
ICB7cG93ZXIgPSAtMjsgdmFycyA9IDk4OyBjb2VmZnMgPSBbfDE7IC0xOyAt
MXxdfTsNCiAgIHtwb3dlciA9IC0yOyB2YXJzID0gOTg7IGNvZWZmcyA9IFt8
MTsgLTE7IDF8XX07DQogICB7cG93ZXIgPSAtMjsgdmFycyA9IDk4OyBjb2Vm
ZnMgPSBbfDE7IDE7IC0xfF19Ow0KICAge3Bvd2VyID0gLTI7IHZhcnMgPSA5
ODsgY29lZmZzID0gW3wxOyAxOyAxfF19Ow0KICAge3Bvd2VyID0gLTI7IHZh
cnMgPSAxMDA7IGNvZWZmcyA9IFt8MTsgLTE7IC0xfF19Ow0KICAge3Bvd2Vy
ID0gLTI7IHZhcnMgPSAxMDA7IGNvZWZmcyA9IFt8MTsgLTE7IDF8XX07DQog
ICB7cG93ZXIgPSAtMjsgdmFycyA9IDEwMDsgY29lZmZzID0gW3wxOyAxOyAt
MXxdfTsNCiAgIHtwb3dlciA9IC0yOyB2YXJzID0gMTAwOyBjb2VmZnMgPSBb
fDE7IDE7IDF8XX07DQogICB7cG93ZXIgPSAyOyB2YXJzID0gMTAyOyBjb2Vm
ZnMgPSBbfDE7IDE7IC0xOyAtMXxdfTsNCiAgIHtwb3dlciA9IDI7IHZhcnMg
PSAxMDI7IGNvZWZmcyA9IFt8MTsgMTsgLTE7IDF8XX07DQogICB7cG93ZXIg
PSAyOyB2YXJzID0gMTAyOyBjb2VmZnMgPSBbfDE7IDE7IDE7IC0xfF19Ow0K
ICAge3Bvd2VyID0gMjsgdmFycyA9IDEwMjsgY29lZmZzID0gW3wxOyAxOyAx
OyAxfF19Ow0KICAge3Bvd2VyID0gLTI7IHZhcnMgPSAxMDQ7IGNvZWZmcyA9
IFt8MTsgLTE7IC0xfF19Ow0KICAge3Bvd2VyID0gLTI7IHZhcnMgPSAxMDQ7
IGNvZWZmcyA9IFt8MTsgLTE7IDF8XX07DQogICB7cG93ZXIgPSAtMjsgdmFy
cyA9IDEwNDsgY29lZmZzID0gW3wxOyAxOyAtMXxdfTsNCiAgIHtwb3dlciA9
IC0yOyB2YXJzID0gMTA0OyBjb2VmZnMgPSBbfDE7IDE7IDF8XX07DQogICB7
cG93ZXIgPSAyOyB2YXJzID0gMTA2OyBjb2VmZnMgPSBbfDE7IDE7IC0xOyAt
MXxdfTsNCiAgIHtwb3dlciA9IDI7IHZhcnMgPSAxMDY7IGNvZWZmcyA9IFt8
MTsgMTsgLTE7IDF8XX07DQogICB7cG93ZXIgPSAyOyB2YXJzID0gMTA2OyBj
b2VmZnMgPSBbfDE7IDE7IDE7IC0xfF19Ow0KICAge3Bvd2VyID0gMjsgdmFy
cyA9IDEwNjsgY29lZmZzID0gW3wxOyAxOyAxOyAxfF19Ow0KICAge3Bvd2Vy
ID0gMjsgdmFycyA9IDEwODsgY29lZmZzID0gW3wxOyAxOyAtMTsgLTF8XX07
DQogICB7cG93ZXIgPSAyOyB2YXJzID0gMTA4OyBjb2VmZnMgPSBbfDE7IDE7
IC0xOyAxfF19Ow0KICAge3Bvd2VyID0gMjsgdmFycyA9IDEwODsgY29lZmZz
ID0gW3wxOyAxOyAxOyAtMXxdfTsNCiAgIHtwb3dlciA9IDI7IHZhcnMgPSAx
MDg7IGNvZWZmcyA9IFt8MTsgMTsgMTsgMXxdfTsNCiAgIHtwb3dlciA9IDE7
IHZhcnMgPSAxMTI7IGNvZWZmcyA9IFt8MTsgLTE7IC0xfF19Ow0KICAge3Bv
d2VyID0gMTsgdmFycyA9IDExMjsgY29lZmZzID0gW3wxOyAxOyAtMXxdfTsN
CiAgIHtwb3dlciA9IC0xOyB2YXJzID0gMTEyOyBjb2VmZnMgPSBbfDI7IC0x
OyAxfF19Ow0KICAge3Bvd2VyID0gLTE7IHZhcnMgPSAxMTI7IGNvZWZmcyA9
IFt8MjsgMTsgMXxdfTsNCiAgIHtwb3dlciA9IC0xOyB2YXJzID0gMTEyOyBj
b2VmZnMgPSBbfDM7IC0xOyAtMXxdfTsNCiAgIHtwb3dlciA9IC0xOyB2YXJz
ID0gMTEyOyBjb2VmZnMgPSBbfDM7IDE7IC0xfF19Ow0KICAge3Bvd2VyID0g
LTE7IHZhcnMgPSAxMTQ7IGNvZWZmcyA9IFt8MTsgLTI7IC0xOyAxfF19Ow0K
ICAge3Bvd2VyID0gLTE7IHZhcnMgPSAxMTQ7IGNvZWZmcyA9IFt8MTsgLTI7
IDE7IDF8XX07DQogICB7cG93ZXIgPSAtMTsgdmFycyA9IDExNDsgY29lZmZz
ID0gW3wxOyAtMTsgLTE7IC0xfF19Ow0KICAge3Bvd2VyID0gLTI7IHZhcnMg
PSAxMTQ7IGNvZWZmcyA9IFt8MTsgLTE7IC0xOyAxfF19Ow0KICAge3Bvd2Vy
ID0gLTE7IHZhcnMgPSAxMTQ7IGNvZWZmcyA9IFt8MTsgLTE7IDE7IC0xfF19
Ow0KICAge3Bvd2VyID0gLTI7IHZhcnMgPSAxMTQ7IGNvZWZmcyA9IFt8MTsg
LTE7IDE7IDF8XX07DQogICB7cG93ZXIgPSAtMjsgdmFycyA9IDExNDsgY29l
ZmZzID0gW3wxOyAxOyAtMTsgLTF8XX07DQogICB7cG93ZXIgPSAtMTsgdmFy
cyA9IDExNDsgY29lZmZzID0gW3wxOyAxOyAtMTsgMXxdfTsNCiAgIHtwb3dl
ciA9IC0yOyB2YXJzID0gMTE0OyBjb2VmZnMgPSBbfDE7IDE7IDE7IC0xfF19
Ow0KICAge3Bvd2VyID0gLTE7IHZhcnMgPSAxMTQ7IGNvZWZmcyA9IFt8MTsg
MTsgMTsgMXxdfTsNCiAgIHtwb3dlciA9IC0xOyB2YXJzID0gMTE0OyBjb2Vm
ZnMgPSBbfDE7IDI7IC0xOyAtMXxdfTsNCiAgIHtwb3dlciA9IC0xOyB2YXJz
ID0gMTE0OyBjb2VmZnMgPSBbfDE7IDI7IDE7IC0xfF19Ow0KICAge3Bvd2Vy
ID0gLTE7IHZhcnMgPSAxMTY7IGNvZWZmcyA9IFt8MTsgLTI7IC0xOyAxfF19
Ow0KICAge3Bvd2VyID0gLTE7IHZhcnMgPSAxMTY7IGNvZWZmcyA9IFt8MTsg
LTI7IDE7IDF8XX07DQogICB7cG93ZXIgPSAtMTsgdmFycyA9IDExNjsgY29l
ZmZzID0gW3wxOyAtMTsgLTE7IC0xfF19Ow0KICAge3Bvd2VyID0gLTI7IHZh
cnMgPSAxMTY7IGNvZWZmcyA9IFt8MTsgLTE7IC0xOyAxfF19Ow0KICAge3Bv
d2VyID0gLTE7IHZhcnMgPSAxMTY7IGNvZWZmcyA9IFt8MTsgLTE7IDE7IC0x
fF19Ow0KICAge3Bvd2VyID0gLTI7IHZhcnMgPSAxMTY7IGNvZWZmcyA9IFt8
MTsgLTE7IDE7IDF8XX07DQogICB7cG93ZXIgPSAtMjsgdmFycyA9IDExNjsg
Y29lZmZzID0gW3wxOyAxOyAtMTsgLTF8XX07DQogICB7cG93ZXIgPSAtMTsg
dmFycyA9IDExNjsgY29lZmZzID0gW3wxOyAxOyAtMTsgMXxdfTsNCiAgIHtw
b3dlciA9IC0yOyB2YXJzID0gMTE2OyBjb2VmZnMgPSBbfDE7IDE7IDE7IC0x
fF19Ow0KICAge3Bvd2VyID0gLTE7IHZhcnMgPSAxMTY7IGNvZWZmcyA9IFt8
MTsgMTsgMTsgMXxdfTsNCiAgIHtwb3dlciA9IC0xOyB2YXJzID0gMTE2OyBj
b2VmZnMgPSBbfDE7IDI7IC0xOyAtMXxdfTsNCiAgIHtwb3dlciA9IC0xOyB2
YXJzID0gMTE2OyBjb2VmZnMgPSBbfDE7IDI7IDE7IC0xfF19Ow0KICAge3Bv
d2VyID0gMTsgdmFycyA9IDExODsgY29lZmZzID0gW3wxOyAxOyAtMjsgLTE7
IDF8XX07DQogICB7cG93ZXIgPSAxOyB2YXJzID0gMTE4OyBjb2VmZnMgPSBb
fDE7IDE7IC0yOyAxOyAxfF19Ow0KICAge3Bvd2VyID0gMTsgdmFycyA9IDEx
ODsgY29lZmZzID0gW3wxOyAxOyAtMTsgLTE7IC0xfF19Ow0KICAge3Bvd2Vy
ID0gMjsgdmFycyA9IDExODsgY29lZmZzID0gW3wxOyAxOyAtMTsgLTE7IDF8
XX07DQogICB7cG93ZXIgPSAxOyB2YXJzID0gMTE4OyBjb2VmZnMgPSBbfDE7
IDE7IC0xOyAxOyAtMXxdfTsNCiAgIHtwb3dlciA9IDI7IHZhcnMgPSAxMTg7
IGNvZWZmcyA9IFt8MTsgMTsgLTE7IDE7IDF8XX07DQogICB7cG93ZXIgPSAy
OyB2YXJzID0gMTE4OyBjb2VmZnMgPSBbfDE7IDE7IDE7IC0xOyAtMXxdfTsN
CiAgIHtwb3dlciA9IDE7IHZhcnMgPSAxMTg7IGNvZWZmcyA9IFt8MTsgMTsg
MTsgLTE7IDF8XX07DQogICB7cG93ZXIgPSAyOyB2YXJzID0gMTE4OyBjb2Vm
ZnMgPSBbfDE7IDE7IDE7IDE7IC0xfF19Ow0KICAge3Bvd2VyID0gMTsgdmFy
cyA9IDExODsgY29lZmZzID0gW3wxOyAxOyAxOyAxOyAxfF19Ow0KICAge3Bv
d2VyID0gMTsgdmFycyA9IDExODsgY29lZmZzID0gW3wxOyAxOyAyOyAtMTsg
LTF8XX18XSk7Ow0KDQpsZXQgcmVjIHRyYXYgbiA9DQogIGlmIG4gPT0gMTAg
dGhlbiAoKSBlbHNlDQogIChQcmludGYucHJpbnRmICIlZCA9PT4gJXNcbiIg
biAoY2hlY2tfc3Vic3RpdHV0aW9uIGRlYnVnX3ZfbHApOw0KICAgdHJhdiAo
MSsgbikpDQogICAgaW4gdHJhdiAwOzsNCg==

--1418540168-270534528-1071777902=:32347--

-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners