Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 15 Apr 1998 20:05:14 -0700
From:      Amancio Hasty <hasty@rah.star-gate.com>
To:        Mark Handley <mjh@east.isi.edu>
Cc:        freebsd-multimedia@FreeBSD.ORG
Subject:   Re: vic, image corruption with Wincast/TV card 
Message-ID:  <199804160305.UAA16569@rah.star-gate.com>
In-Reply-To: Your message of "Mon, 13 Apr 1998 12:26:39 EDT." <14875.892484799@north.lcs.mit.edu> 

next in thread | previous in thread | raw e-mail | index | archive | help
This is a multipart MIME message.

--==_Exmh_10382221920
Content-Type: text/plain; charset=us-ascii

> 
> I'm running vic 2.8 built with a grabber-meteor.cc I obtained from UCL
> using a Wincast/TV card and FreeBSD 2.2.6-RELEASE.  Only problem is
> that I'm getting corruption of the captured image.  This only seems to
> happen when the frame rate is limited by the frame rate limiter and
> not the bandwidth limiter.  Given that I can control it on the
> bandwidth slider alone, this isn't a big deal, but I'm still puzzled.
> 
> Three questions:
> 
>  - has anyone seen this before?
> 
>  - can someone point me at a version of grabber-meteor.cc that they
>    think works OK with BT848 cards?
> 
>  - is there a later version of the BT848 driver than the one in
>    2.2.6-RELEASE and 3.0-CURRENT?
> 
> Thanks,
> 	Mark
> 
> To Unsubscribe: send mail to majordomo@FreeBSD.org
> with "unsubscribe freebsd-multimedia" in the body of the message


Hi Mark,
The latest version of the bt848 driver can always be found 
at:

http://www.freebsd.org/~ahasty/Bt848.html
ftp://rah.star-gate.com/pub/bt848.tar.gz

We typically don't have multiple versions of the bt848 driver 
floating around and this used to be a problem last year.

Here is a version of grabber-meteor.cc which I am using and it is
also available thru the Bt848 web page.


	Amancio

--==_Exmh_10382221920
Content-Type: text/plain ; name="grabber-meteor.cc"; charset=us-ascii
Content-Description: grabber-meteor.cc
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="grabber-meteor.cc"

LyoKICogQ29weXJpZ2h0IChjKSBKaW0gTG93ZSwgMTk5NSwgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICoKICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwogKiBhcmUgbWV0OgogKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAogKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICogMy4gQWxsIGFkdmVydGlzaW5nIG1h
dGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzIHNvZnR3YXJlCiAq
ICAgIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdlbWVudDoKICogICAg
ICBUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IEppbSBMb3dl
CiAqIDQuIFRoZSBuYW1lIG9mIHRoZSBhdXRob3IgbWF5IG5vdCBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cwogKiAgICBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KICoKICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5Z
IEVYUFJFU1MgT1IKICogSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQogKiBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsCiAqIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUwogKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKICogU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
CiAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwKICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOCiAqIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQog
KiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICovCgovKgogKiAxLjAJMTEvMDkvOTUK
ICoJSW5pdGlhbCBSZWxlYXNlLgogKiAxLjEJMTIvMjAvOTUKICoJQ2hhbmdlZCB0byB1c2Ug
bmV3IG1vZGUgaW4gbWV0ZW9yIGRyaXZlciAoTUVURU9SX0dFT19ZVVZfNDIyKSBhbmQKICoJ
YWxsb3cgZXZlbiBvbmx5IGZpZWxkcyB0byBiZSBjYXB0dXJlZCB1bmRlciBjZXJ0YWluIGNv
bmRpdGlvbnMuCiAqCUFkZGVkIEZSQU1FX0NOVFMgZGVidWdnaW5nIG9wdGlvbi4KICogMS4y
CTMvMjUvOTYKICoJQ2hhbmdlZCB0aGUgY29uZGl0aW9ucyBFVkVOX09OTFkgbW9kZSB3YXMg
c3BlY2lmaWVkLiAgV2Ugbm93IGNoZWNrCiAqCXRoZSBzdGF0dXMgdG8gZGV0ZXJtaW5lIGlm
IHdlIGNhbiBydW4gaW4gRVZFTl9PTkxZIG1vZGUuCiAqIDEuMwk1LzEzLzk2CiAqCUFkZGVk
IHRoZSBmcHMgY29kZSB0byB0aGUgZ3JhYmJlciBzbyB3ZSBvbmx5IHRyYW5zZmVyIHdoYXQg
d2UgbmVlZC4KICoJCiAqLwoKI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIu
aD4KI2luY2x1ZGUgPHVuaXN0ZC5oPgojaW5jbHVkZSA8ZmNudGwuaD4KI2luY2x1ZGUgPHN5
cy90eXBlcy5oPgojaW5jbHVkZSA8c3lzL2lvY3RsLmg+CiNpbmNsdWRlIDxzeXMvbW1hbi5o
PgoKI2luY2x1ZGUgImdyYWJiZXIuaCIKI2luY2x1ZGUgImNyZGVmLmgiCiNpbmNsdWRlICJU
Y2wuaCIKI2luY2x1ZGUgImRldmljZS1pbnB1dC5oIgojaW5jbHVkZSAibW9kdWxlLmgiCiNp
bmNsdWRlICJic2QtZW5kaWFuLmgiCgojaW5jbHVkZSA8bWFjaGluZS9pb2N0bF9tZXRlb3Iu
aD4KCi8qWFhYKi8KI2RlZmluZSBOVFNDX1dJRFRIIDMyMAojZGVmaW5lIE5UU0NfSEVJR0hU
IDI0MAojZGVmaW5lIFBBTF9XSURUSCAzODQKI2RlZmluZSBQQUxfSEVJR0hUIDI4OAojZGVm
aW5lIENJRl9XSURUSCAzNTIKI2RlZmluZSBDSUZfSEVJR0hUIDI4OAoKCmNsYXNzIE1ldGVv
ckdyYWJiZXIgOiBwdWJsaWMgR3JhYmJlciB7CiAgICBwdWJsaWM6CglNZXRlb3JHcmFiYmVy
KGNvbnN0IGNoYXIqIG5hbWUpOwoJdmlydHVhbCB+TWV0ZW9yR3JhYmJlcigpOwoJdmlydHVh
bCBpbnQgY29tbWFuZChpbnQgYXJnYywgY29uc3QgY2hhcipjb25zdCogYXJndik7Cgl2aXJ0
dWFsIHZvaWQgZnBzKGludCk7Cgl2aXJ0dWFsIHZvaWQgc3RhcnQoKTsKCXZpcnR1YWwgdm9p
ZCBzdG9wKCk7Cgl2aXJ0dWFsIGludCBncmFiKCk7CiAgICBwcm90ZWN0ZWQ6Cgl2b2lkIGZv
cm1hdCgpOwoJdmlydHVhbCB2b2lkIHNldHNpemUoKSA9IDA7Cgl2b2lkIHN1cHByZXNzKGNv
bnN0IHVfY2hhciogaW4sIGludCBpc3RyaWRlKTsKCXZpcnR1YWwgdm9pZCBzYXZlYmxrcyhj
b25zdCB1X2NoYXIqIGluLCBpbnQgaXN0cmlkZSkgPSAwOwoJdm9pZCBzZXRfc2l6ZV9tZXRl
b3IoaW50IHcsIGludCBoKTsKCglpbnQgdmlkZW9fZm9ybWF0XzsJLyogdmlkZW8gaW5wdXQg
Zm9ybWF0OiBOVFNDIG9yIFBBTCAqLwoJaW50IGRldl87CQkvKiBkZXZpY2UgZmQgKi8KCWlu
dCBwb3J0XzsJCS8qIHZpZGVvIGlucHV0IHBvcnQgKi8KCXVfaW50IGJhc2V3aWR0aF87CS8q
IEhlaWdodCBvZiBmcmFtZSB0byBiZSBjYXB0dXJlZCAqLwoJdV9pbnQgYmFzZWhlaWdodF87
CS8qIFdpZHRoIG9mIGZyYW1lIHRvIGJlIGNhcHR1cmVkICovCgl1X2ludCBkZWNpbWF0ZV87
CS8qIGRpdmlzaW9uIG9mIGJhc2Ugc2l6ZXMgKi8KCXZvbGF0aWxlIHVfaW50KiBweXV2XzsJ
LyogcG9pbnRlciB0byB5dXYgZGF0YSAqLwp9OwoKY2xhc3MgTWV0ZW9yNDIyR3JhYmJlciA6
IHB1YmxpYyBNZXRlb3JHcmFiYmVyIHsKICAgIHB1YmxpYzoKCU1ldGVvcjQyMkdyYWJiZXIo
Y29uc3QgY2hhciogbmFtZSk7CiAgICBwcm90ZWN0ZWQ6Cgl2b2lkIHNldHNpemUoKTsKCXZv
aWQgc2F2ZWJsayhjb25zdCB1X2NoYXIqIGluLCB1X2NoYXIqIHlwLCB1X2NoYXIqIHVwLCB1
X2NoYXIqIHZwLAoJCSAgICAgaW50IHN0cmlkZSwgaW50IGlzdHJpZGUpOwoJdm9pZCBzYXZl
Ymxrcyhjb25zdCB1X2NoYXIqIGluLCBpbnQgaXN0cmlkZSk7Cn07CgpjbGFzcyBNZXRlb3JD
SUZHcmFiYmVyIDogcHVibGljIE1ldGVvckdyYWJiZXIgewogICAgcHVibGljOgoJTWV0ZW9y
Q0lGR3JhYmJlcihjb25zdCBjaGFyKiBuYW1lKTsKICAgIHByb3RlY3RlZDoKCXZvaWQgc2V0
c2l6ZSgpOwoJdm9pZCBzYXZlYmxrKGNvbnN0IHVfY2hhciogaW4sIHVfY2hhciogeXAsIHVf
Y2hhciogdXAsIHVfY2hhciogdnAsCgkJICAgICBpbnQgc3RyaWRlLCBpbnQgaXN0cmlkZSk7
Cgl2b2lkIHNhdmVibGtzKGNvbnN0IHVfY2hhciogaW4sIGludCBpc3RyaWRlKTsKfTsKCmNs
YXNzIE1ldGVvckRldmljZSA6IHB1YmxpYyBJbnB1dERldmljZSB7CiAgICBwdWJsaWM6CglN
ZXRlb3JEZXZpY2UoY29uc3QgY2hhciogbmlja25hbWUsIGNvbnN0IGNoYXIqIGRldm5hbWUs
IGludCBmcmVlKTsKCXZpcnR1YWwgaW50IGNvbW1hbmQoaW50IGFyZ2MsIGNvbnN0IGNoYXIq
Y29uc3QqIGFyZ3YpOwogICAgcHJvdGVjdGVkOgoJY29uc3QgY2hhciogbmFtZV87Cn07Cgpj
bGFzcyBNZXRlb3JTY2FubmVyIHsKICAgIHB1YmxpYzoKCU1ldGVvclNjYW5uZXIoY29uc3Qg
aW50IG4pOwp9OwoKc3RhdGljIE1ldGVvclNjYW5uZXIgZmluZF9tZXRlb3JfZGV2aWNlcyg0
KTsKCk1ldGVvclNjYW5uZXI6Ok1ldGVvclNjYW5uZXIoY29uc3QgaW50IG4pCnsKCWNoYXIq
CWRldm5hbWVfdGVtcGxhdGUgID0gIi9kZXYvbWV0ZW9yJWQiOwoJY2hhcioJbmlja25hbWVf
dGVtcGxhdGUgPSAiTWF0cm94IE1ldGVvciAlZCI7CgljaGFyKglkZXZuYW1lX3RlbXBsYXRl
MSAgPSAiL2Rldi9ia3RyJWQiOwoJY2hhcioJbmlja25hbWVfdGVtcGxhdGUxID0gIkJyb29r
VHJlZTg0OCAlZCI7CgoKCglmb3IoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CgkJY2hhcgkq
ZGV2bmFtZSAgPSBuZXcgY2hhcltzdHJsZW4oZGV2bmFtZV90ZW1wbGF0ZSkgICsgM107CgkJ
Y2hhcgkqbmlja25hbWUgPSBuZXcgY2hhcltzdHJsZW4obmlja25hbWVfdGVtcGxhdGUpICsg
M107CgkJY2hhcgkqZGV2bmFtZTEgID0gbmV3IGNoYXJbc3RybGVuKGRldm5hbWVfdGVtcGxh
dGUxKSAgKyAzXTsKCQljaGFyCSpuaWNrbmFtZTEgPSBuZXcgY2hhcltzdHJsZW4obmlja25h
bWVfdGVtcGxhdGUxKSArIDNdOwoKCQlzcHJpbnRmKG5pY2tuYW1lLCBuaWNrbmFtZV90ZW1w
bGF0ZSwgaSArIDEpOwoJCXNwcmludGYoZGV2bmFtZSwgZGV2bmFtZV90ZW1wbGF0ZSwgaSk7
CgoJCXNwcmludGYobmlja25hbWUxLCBuaWNrbmFtZV90ZW1wbGF0ZTEsIGkgKyAxKTsKCQlz
cHJpbnRmKGRldm5hbWUxLCBkZXZuYW1lX3RlbXBsYXRlMSwgaSk7CgkJaWYoYWNjZXNzKGRl
dm5hbWUsIFJfT0spID09IDApIHsKCQkJaW50IGZkID0gb3BlbihkZXZuYW1lLCBPX1JET05M
WSk7CgkJCWlmKGZkIDwgMCkgewoJCQkJbmV3IE1ldGVvckRldmljZShuaWNrbmFtZSwgZGV2
bmFtZSwgMCk7CgkJCX0gZWxzZSB7CgkJCQkodm9pZCljbG9zZShmZCk7CgkJCQluZXcgTWV0
ZW9yRGV2aWNlKG5pY2tuYW1lLCBkZXZuYW1lLCAxKTsKCQkJfQoJCX0gZWxzZSB7CgkJCWRl
bGV0ZSBuaWNrbmFtZTsKCQkJZGVsZXRlIGRldm5hbWU7CgkJfQoKCQlpZihhY2Nlc3MoZGV2
bmFtZTEsIFJfT0spID09IDApIHsKCQkJaW50IGZkID0gb3BlbihkZXZuYW1lMSwgT19SRE9O
TFkpOwoJCQlpZihmZCA8IDApIHsKCQkJCW5ldyBNZXRlb3JEZXZpY2Uobmlja25hbWUxLCBk
ZXZuYW1lMSwgMCk7CgkJCX0gZWxzZSB7CgkJCQkodm9pZCljbG9zZShmZCk7CgkJCQluZXcg
TWV0ZW9yRGV2aWNlKG5pY2tuYW1lMSwgZGV2bmFtZTEsIDEpOwoJCQl9CgkJfSBlbHNlIHsK
CQkJZGVsZXRlIG5pY2tuYW1lMTsKCQkJZGVsZXRlIGRldm5hbWUxOwoJCX0KCX0KCn0KCk1l
dGVvckRldmljZTo6TWV0ZW9yRGV2aWNlKGNvbnN0IGNoYXIqIG5pY2tuYW1lLCBjb25zdCBj
aGFyICpkZXZuYW1lLCBpbnQgZnJlZSk6CgkJCQkJSW5wdXREZXZpY2Uobmlja25hbWUpLCBu
YW1lXyhkZXZuYW1lKQp7CglpZihmcmVlKQoJCWF0dHJpYnV0ZXNfID0gIlwKZm9ybWF0IHs0
MjIgNDExfSBcCnNpemUge2xhcmdlIG5vcm1hbCBzbWFsbCBjaWZ9IFwKcG9ydCB7UkNBIFBv
cnQtMSBQb3J0LTIgUG9ydC0zIFMtVmlkZW8gUkdCfSI7CgllbHNlCgkJYXR0cmlidXRlc18g
PSAiZGlzYWJsZWQiOwp9CgppbnQgTWV0ZW9yRGV2aWNlOjpjb21tYW5kKGludCBhcmdjLCBj
b25zdCBjaGFyKmNvbnN0KiBhcmd2KQp7CglUY2wmIHRjbCA9IFRjbDo6aW5zdGFuY2UoKTsK
CWlmICgoYXJnYyA9PSAzKSAmJiAoc3RyY21wKGFyZ3ZbMV0sICJvcGVuIikgPT0gMCkpIHsK
CQlUY2xPYmplY3QqIG8gPSAwOwoJCWlmIChzdHJjbXAoYXJndlsyXSwgIjQyMiIpID09IDAp
CgkJCW8gPSBuZXcgTWV0ZW9yNDIyR3JhYmJlcihuYW1lXyk7CgkJZWxzZSBpZiAoc3RyY21w
KGFyZ3ZbMl0sICJjaWYiKSA9PSAwKQoJCQlvID0gbmV3IE1ldGVvckNJRkdyYWJiZXIobmFt
ZV8pOwoJCWlmIChvICE9IDApCgkJCXRjbC5yZXN1bHQoby0+bmFtZSgpKTsKCQlyZXR1cm4g
KFRDTF9PSyk7Cgl9CglyZXR1cm4gKElucHV0RGV2aWNlOjpjb21tYW5kKGFyZ2MsIGFyZ3Yp
KTsKfQoKTWV0ZW9yR3JhYmJlcjo6TWV0ZW9yR3JhYmJlcihjb25zdCBjaGFyKiBuYW1lKQp7
CglkZXZfID0gb3BlbihuYW1lLCBPX1JET05MWSk7CglpZiAoZGV2XyA9PSAtMSkgewoJCXN0
YXR1c18gPSAtMTsKCQlyZXR1cm47Cgl9Cglwb3J0XyA9IE1FVEVPUl9JTlBVVF9ERVYwOwoJ
dmlkZW9fZm9ybWF0XyA9IE1FVEVPUl9GTVRfQVVUT01PREU7CglkZWNpbWF0ZV8gPSAyOwoJ
YmFzZXdpZHRoXyA9IFBBTF9XSURUSCAqIDI7CgliYXNlaGVpZ2h0XyA9IFBBTF9IRUlHSFQg
KiAyOwoJCglpbnQgdGVtcCA9ICgoYmFzZXdpZHRoXyAqIGJhc2VoZWlnaHRfICogMiArIDQw
OTUpLzQwOTYpKjQwOTY7CglweXV2XyA9ICh1X2ludCopIG1tYXAoKGNhZGRyX3QpMCwgdGVt
cCwgUFJPVF9SRUFELCAwLCBkZXZfLCAob2ZmX3QpMCk7CglpZihweXV2XyA9PSAodV9pbnQq
KS0xKQoJCXB5dXZfID0gMDsKfQoKTWV0ZW9yR3JhYmJlcjo6fk1ldGVvckdyYWJiZXIoKQp7
CglpZiAoZGV2XyAhPSAtMSkgewoJCWNsb3NlKGRldl8pOwoJfQp9Cgp2b2lkIE1ldGVvckdy
YWJiZXI6OnNldF9zaXplX21ldGVvcihpbnQgdywgaW50IGgpCnsKCXN0cnVjdCBtZXRlb3Jf
Z2VvbWV0IGdlb207CgoJZ2VvbS5yb3dzID0gaCAmfjB4ZjsJLyogMHhmLCB1Z2ghICovCgln
ZW9tLmNvbHVtbnMgPSB3ICAmfjB4ZjsKCWdlb20uZnJhbWVzID0gMTsKCWdlb20ub2Zvcm1h
dCA9IE1FVEVPUl9HRU9fVU5TSUdORUQgfCBNRVRFT1JfR0VPX1lVVl9QQUNLRUQ7CgkvKgoJ
ICogSWYgd2UgY2FuIGdldCBieSB3aXRoIG9ubHkgcmVhZGluZyBldmVuIGZpZWxkcywgdGhl
biBieSBhbGwKCSAqIG1lYW5zIGRvIHNvLgoJICovCgl1bnNpZ25lZCBzaG9ydCBzdGF0dXM7
Cglpb2N0bChkZXZfLCBNRVRFT1JTVEFUVVMsICZzdGF0dXMpOwoJaWYoc3RhdHVzICYgTUVU
RU9SX1NUQVRVU19IQ0xLKSB7CgkJLyogTm8gc291cmNlLCBhc3N1bWUgbnRzYyAqLwoJCWlm
KGdlb20ucm93cyA8PSBOVFNDX0hFSUdIVCAmJiBnZW9tLmNvbHVtbnMgPD0gTlRTQ19XSURU
SCkKCQkJZ2VvbS5vZm9ybWF0IHw9IE1FVEVPUl9HRU9fRVZFTl9PTkxZOwoJfSBlbHNlIHsK
CQkvKiBpcyBpdCBwYWwgb3IgbnRzYz8gKi8KCQlpZihzdGF0dXMgJiBNRVRFT1JfU1RBVFVT
X0ZJRFQpIHsKCQkJCQkJLyogNjAgaHogKi8KCQkJaWYoZ2VvbS5yb3dzPD1OVFNDX0hFSUdI
VCAmJiBnZW9tLmNvbHVtbnM8PU5UU0NfV0lEVEgpCgkJCQlnZW9tLm9mb3JtYXQgfD0gTUVU
RU9SX0dFT19FVkVOX09OTFk7CgkJfSBlbHNlIHsJCQkvKiA1MCBoeiAqLwoJCQlpZihnZW9t
LnJvd3M8PVBBTF9IRUlHSFQgJiYgZ2VvbS5jb2x1bW5zPD1QQUxfV0lEVEgpCgkJCQlnZW9t
Lm9mb3JtYXQgfD0gTUVURU9SX0dFT19FVkVOX09OTFk7CgkJfQoJfQoKCWlmKGlvY3RsKGRl
dl8sIE1FVEVPUlNFVEdFTywgJmdlb20pIDwgMCkgCgkJcGVycm9yKCJ2aWM6IE1FVEVSU0VU
R0VPOiAiKTsKfQoKdm9pZCBNZXRlb3JHcmFiYmVyOjpmb3JtYXQoKQp7Cgl1bnNpZ25lZCBz
aG9ydCBzdGF0dXM7CglpbnQJZm10OwoKCWlvY3RsKGRldl8sIE1FVEVPUlNJTlBVVCwgJnBv
cnRfKTsKCWlvY3RsKGRldl8sIE1FVEVPUlNGTVQsICZ2aWRlb19mb3JtYXRfKTsKCXNsZWVw
KDEpOwkvKiB3YWl0IGZvciBzaWduYWwgbG9jay4uLiAqLwoJaW9jdGwoZGV2XywgTUVURU9S
U1RBVFVTLCAmc3RhdHVzKTsKCglpZih2aWRlb19mb3JtYXRfID09IE1FVEVPUl9GTVRfQVVU
T01PREUpIHsKCQlzd2l0Y2ggKHN0YXR1cyAmIChNRVRFT1JfU1RBVFVTX0hDTEt8TUVURU9S
X1NUQVRVU19GSURUKSkgewoJCWRlZmF1bHQ6CgkJCWZwcmludGYoc3RkZXJyLAoJCQkJInZp
YzogbWV0ZW9yIHNlZXMgbm8gc2lnbmFsKCVkKS11c2luZyBudHNjLlxuIiwKCQkJCShzdGF0
dXMmTUVURU9SX1NUQVRVU19IQ0xLKSA+IDAgKTsKCQkJLyogZmFsbCB0aHJvdWdoICovCgkJ
Y2FzZSBNRVRFT1JfU1RBVFVTX0ZJRFQ6CgkJCWZtdCA9IE1FVEVPUl9GTVRfTlRTQzsKCQkJ
YnJlYWs7CgkJY2FzZSAwOgoJCQlmbXQ9IE1FVEVPUl9GTVRfUEFMOwoJCQlicmVhazsKCQl9
Cgl9IGVsc2UKCQlmbXQgPSB2aWRlb19mb3JtYXRfOwoKCWlmKGZtdCA9PSBNRVRFT1JfRk1U
X05UU0MpIHsKCQliYXNlaGVpZ2h0XyA9IE5UU0NfSEVJR0hUICogMjsKCQliYXNld2lkdGhf
ID0gTlRTQ19XSURUSCAqIDI7Cgl9IGVsc2UgeyAJLyogUEFMIGFuZCBTRUNBTSAqLwoJCWJh
c2VoZWlnaHRfID0gUEFMX0hFSUdIVCAqIDI7CgkJYmFzZXdpZHRoXyA9IFBBTF9XSURUSCAq
IDI7Cgl9CglzZXRzaXplKCk7Cn0KCgp2b2lkIE1ldGVvckdyYWJiZXI6OnN0YXJ0KCkKewoJ
Zm9ybWF0KCk7CglpbnQgY21kID0gTUVURU9SX0NBUF9TSU5HTEU7Cglpb2N0bChkZXZfLCBN
RVRFT1JDQVBUVVIsIChjaGFyKikmY21kKTsKCgljbWQgPSBNRVRFT1JfQ0FQX0NPTlRJTk9V
UzsKCWlvY3RsKGRldl8sIE1FVEVPUkNBUFRVUiwgKGNoYXIqKSZjbWQpOwoJR3JhYmJlcjo6
c3RhcnQoKTsKfQoKdm9pZCBNZXRlb3JHcmFiYmVyOjpzdG9wKCkKewoKCWludCBjbWQgPSBN
RVRFT1JfQ0FQX1NUT1BfQ09OVDsKCWlvY3RsKGRldl8sIE1FVEVPUkNBUFRVUiwgKGNoYXIq
KSZjbWQpOwoJR3JhYmJlcjo6c3RvcCgpOwp9Cgp2b2lkIE1ldGVvckdyYWJiZXI6OmZwcyhp
bnQgZikKewoJdV9zaG9ydCBtZXRfZnBzID0gKHVfc2hvcnQpZjsKCSh2b2lkKWlvY3RsKGRl
dl8sIE1FVEVPUlNGUFMsICZtZXRfZnBzKTsKCglHcmFiYmVyOjpmcHMoZik7Cn0KCmludCBN
ZXRlb3JHcmFiYmVyOjpjb21tYW5kKGludCBhcmdjLCBjb25zdCBjaGFyKmNvbnN0KiBhcmd2
KQp7CglUY2wmIHRjbCA9IFRjbDo6aW5zdGFuY2UoKTsKCWlmIChhcmdjID09IDMpIHsKCQlp
ZiAoc3RyY21wKGFyZ3ZbMV0sICJkZWNpbWF0ZSIpID09IDApIHsKCQkJaW50IGRlYyA9IGF0
b2koYXJndlsyXSk7CgkJCWlmIChkZWMgPD0gMCkgewoJCQkJdGNsLnJlc3VsdGYoIiVzOiBk
aXZpZGUgYnkgemVybyIsIGFyZ3ZbMF0pOwoJCQkJcmV0dXJuIChUQ0xfRVJST1IpOwoJCQl9
CgkJCWlmICgodV9pbnQpZGVjICE9IGRlY2ltYXRlXykgewoJCQkJZGVjaW1hdGVfID0gZGVj
OwoJCQkJaWYocnVubmluZ18pIHsKCQkJCQlzdG9wKCk7CgkJCQkJc2V0c2l6ZSgpOwoJCQkJ
CXN0YXJ0KCk7CgkJCQl9CgkJCX0KCQkJcmV0dXJuIChUQ0xfT0spOwkKCQl9CgkJaWYgKHN0
cmNtcChhcmd2WzFdLCAicG9ydCIpID09IDApIHsKCQkJaW50IHAgPSBwb3J0XzsKICAgICAg
ICAgICAgICAgICAgICAgICAgaWYoIXN0cmNtcChhcmd2WzJdLCAiUkNBIikpIHAgPSBNRVRF
T1JfSU5QVVRfREVWMDsKICAgICAgICAgICAgICAgICAgICAgICAgaWYoIXN0cmNtcChhcmd2
WzJdLCAiUG9ydC0xIikpIHAgPSBNRVRFT1JfSU5QVVRfREVWMTsKICAgICAgICAgICAgICAg
ICAgICAgICAgaWYoIXN0cmNtcChhcmd2WzJdLCAiUG9ydC0yIikpIHAgPSBNRVRFT1JfSU5Q
VVRfREVWMjsKICAgICAgICAgICAgICAgICAgICAgICAgaWYoIXN0cmNtcChhcmd2WzJdLCAi
UG9ydC0zIikpIHAgPSBNRVRFT1JfSU5QVVRfREVWMzsKICAgICAgICAgICAgICAgICAgICAg
ICAgaWYoIXN0cmNtcChhcmd2WzJdLCAiUy1WaWRlbyIpKQoJCQkJcCA9IE1FVEVPUl9JTlBV
VF9ERVZfU1ZJREVPOwogICAgICAgICAgICAgICAgICAgICAgICBpZighc3RyY21wKGFyZ3Zb
Ml0sICJSR0IiKSkgcCA9IE1FVEVPUl9JTlBVVF9ERVZfUkdCOwoKCQkJaWYgKHAgIT0gcG9y
dF8pIHsKCQkJCXBvcnRfID0gcDsKCQkJCWlvY3RsKGRldl8sIE1FVEVPUlNJTlBVVCwgJnBv
cnRfKTsKCQkJfQoJCQlyZXR1cm4gKFRDTF9PSyk7CQoJCX0KCQlpZiAoc3RyY21wKGFyZ3Zb
MV0sICJmb3JtYXQiKSA9PSAwIHx8CgkJCSAgIHN0cmNtcChhcmd2WzFdLCAidHlwZSIpID09
IDApIHsKCQkJaWYgKHN0cmNtcChhcmd2WzJdLCAiYXV0byIpID09IDApCgkJCQl2aWRlb19m
b3JtYXRfID0gTUVURU9SX0ZNVF9BVVRPTU9ERTsKCQkJZWxzZSBpZiAoc3RyY21wKGFyZ3Zb
Ml0sICJwYWwiKSA9PSAwKQoJCQkJdmlkZW9fZm9ybWF0XyA9IE1FVEVPUl9GTVRfUEFMOwoJ
CQllbHNlIGlmIChzdHJjbXAoYXJndlsyXSwgInNlY2FtIikgPT0gMCkKCQkJCXZpZGVvX2Zv
cm1hdF8gPSBNRVRFT1JfRk1UX1NFQ0FNOwoJCQllbHNlCgkJCQl2aWRlb19mb3JtYXRfID0g
TUVURU9SX0ZNVF9OVFNDOwoJCQlpZiAocnVubmluZ18pCgkJCQlmb3JtYXQoKTsKCQkJcmV0
dXJuIChUQ0xfT0spOwkKCQl9CgkJaWYgKHN0cmNtcChhcmd2WzFdLCAiYnJpZ2h0bmVzcyIp
ID09IDApIHsKCQkJdV9jaGFyIHZhbCA9IGF0b2koYXJndlsyXSk7CgkJCWlvY3RsKGRldl8s
IE1FVEVPUlNCUklHLCAmdmFsKTsKCQkJcmV0dXJuIChUQ0xfT0spOwoJCX0KCQlpZiAoc3Ry
Y21wKGFyZ3ZbMV0sICJjb250cmFzdCIpID09IDApIHsKCQkJdV9jaGFyIHZhbCA9IGF0b2ko
YXJndlsyXSk7CgkJCWlvY3RsKGRldl8sIE1FVEVPUlNDT05ULCAmdmFsKTsKCQkJcmV0dXJu
IChUQ0xfT0spOwoJCX0KCQlpZiAoc3RyY21wKGFyZ3ZbMV0sICJodWUiKSA9PSAwKSB7CgkJ
CWNoYXIgdmFsID0gYXRvaShhcmd2WzJdKTsKCQkJaW9jdGwoZGV2XywgTUVURU9SU0hVRSwg
JnZhbCk7CgkJCXJldHVybiAoVENMX09LKTsKCQl9CgkJaWYgKHN0cmNtcChhcmd2WzFdLCAi
c2F0dXJhdGlvbiIpID09IDApIHsKCQkJdV9jaGFyIHZhbCA9IGF0b2koYXJndlsyXSk7CgkJ
CWlvY3RsKGRldl8sIE1FVEVPUlNDU0FULCAmdmFsKTsKCQkJcmV0dXJuIChUQ0xfT0spOwoJ
CX0KCQlpZiAoc3RyY21wKGFyZ3ZbMV0sICJ1dmdhaW4iKSA9PSAwKSB7CgkJCXVfY2hhciB2
YWwgPSBhdG9pKGFyZ3ZbMl0pOwoJCQlpb2N0bChkZXZfLCBNRVRFT1JTQ0hDViwgJnZhbCk7
CgkJCXJldHVybiAoVENMX09LKTsKCQl9Cgl9IGVsc2UgaWYgKGFyZ2MgPT0gMikgewoJCWlm
IChzdHJjbXAoYXJndlsxXSwgImZvcm1hdCIpID09IDAgfHwKCQkJICAgc3RyY21wKGFyZ3Zb
MV0sICJ0eXBlIikgPT0gMCkgewoJCQlzd2l0Y2ggKHZpZGVvX2Zvcm1hdF8pIHsKCgkJCWNh
c2UgTUVURU9SX0ZNVF9BVVRPTU9ERToKCQkJCXRjbC5yZXN1bHQoImF1dG8iKTsKCQkJCWJy
ZWFrOwoKCQkJY2FzZSBNRVRFT1JfRk1UX05UU0M6CgkJCQl0Y2wucmVzdWx0KCJudHNjIik7
CgkJCQlicmVhazsKCgkJCWNhc2UgTUVURU9SX0ZNVF9QQUw6CgkJCQl0Y2wucmVzdWx0KCJw
YWwiKTsKCQkJCWJyZWFrOwoKCQkJY2FzZSBNRVRFT1JfRk1UX1NFQ0FNOgoJCQkJdGNsLnJl
c3VsdCgic2VjYW0iKTsKCQkJCWJyZWFrOwoKCQkJZGVmYXVsdDoKCQkJCXRjbC5yZXN1bHQo
IiIpOwoJCQkJYnJlYWs7CgkJCX0KCQkJcmV0dXJuIChUQ0xfT0spOwoJCQkKCQl9CgkJaWYg
KHN0cmNtcChhcmd2WzFdLCAiYnJpZ2h0bmVzcyIpID09IDApIHsKCQkJdV9jaGFyIHZhbDsK
CQkJaW9jdGwoZGV2XywgTUVURU9SR0JSSUcsICZ2YWwpOwoJCQl0Y2wucmVzdWx0ZigiJWQi
LCAoaW50KXZhbCk7CgkJCXJldHVybiAoVENMX09LKTsKCQl9CgkJaWYgKHN0cmNtcChhcmd2
WzFdLCAiY29udHJhc3QiKSA9PSAwKSB7CgkJCXVfY2hhciB2YWw7CgkJCWlvY3RsKGRldl8s
IE1FVEVPUkdDT05ULCAmdmFsKTsKCQkJdGNsLnJlc3VsdGYoIiVkIiwgKGludCl2YWwpOwoJ
CQlyZXR1cm4gKFRDTF9PSyk7CgkJfQoJCWlmIChzdHJjbXAoYXJndlsxXSwgImh1ZSIpID09
IDApIHsKCQkJY2hhciB2YWw7CgkJCWlvY3RsKGRldl8sIE1FVEVPUkdIVUUsICZ2YWwpOwoJ
CQl0Y2wucmVzdWx0ZigiJWQiLCAoaW50KXZhbCk7CgkJCXJldHVybiAoVENMX09LKTsKCQl9
CgkJaWYgKHN0cmNtcChhcmd2WzFdLCAic2F0dXJhdGlvbiIpID09IDApIHsKCQkJdV9jaGFy
IHZhbDsKCQkJaW9jdGwoZGV2XywgTUVURU9SR0NTQVQsICZ2YWwpOwoJCQl0Y2wucmVzdWx0
ZigiJWQiLCAoaW50KXZhbCk7CgkJCXJldHVybiAoVENMX09LKTsKCQl9CgkJaWYgKHN0cmNt
cChhcmd2WzFdLCAidXZnYWluIikgPT0gMCkgewoJCQl1X2NoYXIgdmFsOwoJCQlpb2N0bChk
ZXZfLCBNRVRFT1JHQ0hDViwgJnZhbCk7CgkJCXRjbC5yZXN1bHRmKCIlZCIsIChpbnQpdmFs
KTsKCQkJcmV0dXJuIChUQ0xfT0spOwoJCX0KCX0KCXJldHVybiAoR3JhYmJlcjo6Y29tbWFu
ZChhcmdjLCBhcmd2KSk7Cn0KCiNkZWZpbmUgVSAwCiNkZWZpbmUgWTAgMQojZGVmaW5lIFYg
MgojZGVmaW5lIFkxIDMKCi8qCiAqIGRlZmluZSB0aGVzZSBmb3IgUkVQTEVOSVNIIG1hY3Jv
IHVzZWQgYmVsb3cKICovCiNkZWZpbmUgRElGRjQoaW4sIGZybSwgdikgXAoJdiArPSAoaW4p
W1kwXSAtIChmcm0pWzBdOyBcCgl2ICs9IChpbilbWTFdIC0gKGZybSlbMV07IFwKCXYgKz0g
KGluKVtZMCs0XSAtIChmcm0pWzJdOyBcCgl2ICs9IChpbilbWTErNF0gLSAoZnJtKVszXTsK
CiNkZWZpbmUgRElGRkxJTkUoaW4sIGZybSwgbGVmdCwgY2VudGVyLCByaWdodCkgXAoJRElG
RjQoaW4gKyAwKjgsIGZybSArIDAqNCwgbGVmdCk7IFwKCURJRkY0KGluICsgMSo4LCBmcm0g
KyAxKjQsIGNlbnRlcik7IFwKCURJRkY0KGluICsgMio4LCBmcm0gKyAyKjQsIGNlbnRlcik7
IFwKCURJRkY0KGluICsgMyo4LCBmcm0gKyAzKjQsIHJpZ2h0KTsgXAoJaWYgKHJpZ2h0IDwg
MCkgXAoJCXJpZ2h0ID0gLXJpZ2h0OyBcCglpZiAobGVmdCA8IDApIFwKCQlsZWZ0ID0gLWxl
ZnQ7IFwKCWlmIChjZW50ZXIgPCAwKSBcCgkJY2VudGVyID0gLWNlbnRlcjsKCnZvaWQgTWV0
ZW9yR3JhYmJlcjo6c3VwcHJlc3MoY29uc3QgdV9jaGFyKiBkZXZidWYsIGludCBpcykKewoJ
Y29uc3QgdV9jaGFyKiBzdGFydCA9IGZyYW1lXyArIDE2ICogdnN0YXJ0XyAqIG91dHdfICsg
MTYgKiBoc3RhcnRfOwoJUkVQTEVOSVNIKGRldmJ1Ziwgc3RhcnQsIGlzLCAyLAoJCSAgaHN0
YXJ0XywgaHN0b3BfLCB2c3RhcnRfLCB2c3RvcF8pOwp9CgppbnQgTWV0ZW9yR3JhYmJlcjo6
Z3JhYigpCnsKCWlmIChweXV2XyA9PSAwKQoJCXJldHVybiAwOwoKCWludCBpc3RyaWRlID0g
aW53XyAqIDI7CglzdXBwcmVzcygodV9jaGFyKilweXV2XywgaXN0cmlkZSk7CglzYXZlYmxr
cygodV9jaGFyKilweXV2XywgaXN0cmlkZSk7Cgl1X2ludDMyX3QgdHMgPSBtZWRpYV90cygp
OwoJWXV2RnJhbWUgZih0cywgZnJhbWVfLCBjcnZlY18sIG91dHdfLCBvdXRoXyk7CglyZXR1
cm4gKHRhcmdldF8tPmNvbnN1bWUoJmYpKTsKfQoKTWV0ZW9yNDIyR3JhYmJlcjo6TWV0ZW9y
NDIyR3JhYmJlcihjb25zdCBjaGFyKiBuYW1lKQoJOiBNZXRlb3JHcmFiYmVyKG5hbWUpCnsK
fQoKTWV0ZW9yQ0lGR3JhYmJlcjo6TWV0ZW9yQ0lGR3JhYmJlcihjb25zdCBjaGFyKiBuYW1l
KQoJOiBNZXRlb3JHcmFiYmVyKG5hbWUpCnsKfQoKdm9pZCBNZXRlb3I0MjJHcmFiYmVyOjpz
ZXRzaXplKCkKewoJaW50IHcgPSBiYXNld2lkdGhfIC8gZGVjaW1hdGVfOwoJaW50IGggPSBi
YXNlaGVpZ2h0XyAvIGRlY2ltYXRlXzsKCXNldF9zaXplX21ldGVvcih3LCBoKTsKCXNldF9z
aXplXzQyMih3LCBoKTsKfQoKaW5saW5lIHZvaWQgCk1ldGVvcjQyMkdyYWJiZXI6OnNhdmVi
bGsoY29uc3QgdV9jaGFyKiBpbiwKCXVfY2hhciogeXAsIHVfY2hhciogdXAsIHVfY2hhciog
dnAsIGludCBzdHJpZGUsIGludCBpc3RyaWRlKQp7Cglmb3IgKGludCBpID0gMTY7IC0taSA+
PSAwOyApIHsKCQkvKgoJCSAqIEVhY2ggaXRlcmF0aW9uIG9mIHRoaXMgbG9vcCBncmFicyAx
NiBZcyAmIDggVS9Wcy4KCQkgKi8KCQlyZWdpc3RlciB1X2ludCB5MCwgeTEsIHUsIHY7CgoJ
CXUgID0gaW5bVSArIDAqNF0gPDwgU0hJRlQoMjQpIHwKCQkgICAgIGluW1UgKyAxKjRdIDw8
IFNISUZUKDE2KSB8CgkJICAgICBpbltVICsgMio0XSA8PCBTSElGVCg4KSB8CgkJICAgICBp
bltVICsgMyo0XSA8PCBTSElGVCgwKTsKCQl2ICA9IGluW1YgKyAwKjRdIDw8IFNISUZUKDI0
KSB8CgkJICAgICBpbltWICsgMSo0XSA8PCBTSElGVCgxNikgfAoJCSAgICAgaW5bViArIDIq
NF0gPDwgU0hJRlQoOCkgfAoJCSAgICAgaW5bViArIDMqNF0gPDwgU0hJRlQoMCk7CgkJeTAg
PSBpbltZMCArIDAqNF0gPDwgU0hJRlQoMjQpIHwKCQkgICAgIGluW1kxICsgMCo0XSA8PCBT
SElGVCgxNikgfAoJCSAgICAgaW5bWTAgKyAxKjRdIDw8IFNISUZUKDgpIHwKCQkgICAgIGlu
W1kxICsgMSo0XSA8PCBTSElGVCgwKTsKCQl5MSA9IGluW1kwICsgMio0XSA8PCBTSElGVCgy
NCkgfAoJCSAgICAgaW5bWTEgKyAyKjRdIDw8IFNISUZUKDE2KSB8CgkJICAgICBpbltZMCAr
IDMqNF0gPDwgU0hJRlQoOCkgfAoJCSAgICAgaW5bWTEgKyAzKjRdIDw8IFNISUZUKDApOwoK
CQkoKHVfaW50Kil5cClbMF0gPSB5MDsKCQkoKHVfaW50Kil5cClbMV0gPSB5MTsKCQkoKHVf
aW50Kil1cClbMF0gPSB1OwoJCSgodV9pbnQqKXZwKVswXSA9IHY7CgoJCXUgID0gaW5bVSAr
IDQqNF0gPDwgU0hJRlQoMjQpIHwKCQkgICAgIGluW1UgKyA1KjRdIDw8IFNISUZUKDE2KSB8
CgkJICAgICBpbltVICsgNio0XSA8PCBTSElGVCg4KSB8CgkJICAgICBpbltVICsgNyo0XSA8
PCBTSElGVCgwKTsKCQl2ICA9IGluW1YgKyA0KjRdIDw8IFNISUZUKDI0KSB8CgkJICAgICBp
bltWICsgNSo0XSA8PCBTSElGVCgxNikgfAoJCSAgICAgaW5bViArIDYqNF0gPDwgU0hJRlQo
OCkgfAoJCSAgICAgaW5bViArIDcqNF0gPDwgU0hJRlQoMCk7CgkJeTAgPSBpbltZMCArIDQq
NF0gPDwgU0hJRlQoMjQpIHwKCQkgICAgIGluW1kxICsgNCo0XSA8PCBTSElGVCgxNikgfAoJ
CSAgICAgaW5bWTAgKyA1KjRdIDw8IFNISUZUKDgpIHwKCQkgICAgIGluW1kxICsgNSo0XSA8
PCBTSElGVCgwKTsKCQl5MSA9IGluW1kwICsgNio0XSA8PCBTSElGVCgyNCkgfAoJCSAgICAg
aW5bWTEgKyA2KjRdIDw8IFNISUZUKDE2KSB8CgkJICAgICBpbltZMCArIDcqNF0gPDwgU0hJ
RlQoOCkgfAoJCSAgICAgaW5bWTEgKyA3KjRdIDw8IFNISUZUKDApOwoKCQkoKHVfaW50Kil5
cClbMl0gPSB5MDsKCQkoKHVfaW50Kil5cClbM10gPSB5MTsKCQkoKHVfaW50Kil1cClbMV0g
PSB1OwoJCSgodV9pbnQqKXZwKVsxXSA9IHY7CgoJCWluICs9IGlzdHJpZGU7CgkJeXAgKz0g
c3RyaWRlOwoJCXVwICs9IHN0cmlkZSA+PiAxOwoJCXZwICs9IHN0cmlkZSA+PiAxOwoJfQp9
Cgp2b2lkIE1ldGVvcjQyMkdyYWJiZXI6OnNhdmVibGtzKGNvbnN0IHVfY2hhciogZGV2YnVm
LCBpbnQgaXMpCnsKCXVfY2hhciogY3J2ID0gY3J2ZWNfOwoJaW50IG9mZiA9IGZyYW1lc2l6
ZV87Cgl1X2NoYXIqIGx1bSA9IGZyYW1lXzsKCXVfY2hhciogY2htID0gbHVtICsgb2ZmOwoJ
b2ZmID4+PSAxOwoJaW50IHN0cmlkZSA9IDE1ICogb3V0d187CglpbnQgaXN0cmlkZSA9IGlz
ICogMTU7Cglmb3IgKGludCB5ID0gMDsgeSA8IGJsa2hfOyArK3kpIHsKCQlmb3IgKGludCB4
ID0gMDsgeCA8IGJsa3dfOyArK3gpIHsKCQkJaW50IHMgPSAqY3J2Kys7CgkJCWlmICgocyAm
IENSX1NFTkQpICE9IDApCgkJCQlzYXZlYmxrKGRldmJ1ZiwgbHVtLCBjaG0sIGNobSArIG9m
Ziwgb3V0d18sIGlzKTsKCgkJCWRldmJ1ZiArPSAzMjsKCQkJbHVtICs9IDE2OwoJCQljaG0g
Kz0gODsKCQl9CgkJbHVtICs9IHN0cmlkZTsKCQljaG0gKz0gc3RyaWRlID4+IDE7CgkJZGV2
YnVmICs9IGlzdHJpZGU7Cgl9Cn0KCnZvaWQgTWV0ZW9yQ0lGR3JhYmJlcjo6c2V0c2l6ZSgp
CnsKCWludCB3ID0gYmFzZXdpZHRoXyAvIGRlY2ltYXRlXzsKCWludCBoID0gYmFzZWhlaWdo
dF8gLyBkZWNpbWF0ZV87CglzZXRfc2l6ZV9tZXRlb3IodywgaCk7CglzZXRfc2l6ZV9jaWYo
dywgaCk7Cn0KCmlubGluZSB2b2lkIApNZXRlb3JDSUZHcmFiYmVyOjpzYXZlYmxrKGNvbnN0
IHVfY2hhciogaW4sCgl1X2NoYXIqIHlwLCB1X2NoYXIqIHVwLCB1X2NoYXIqIHZwLCBpbnQg
c3RyaWRlLCBpbnQgaXN0cmlkZSkKewoJZm9yIChpbnQgaSA9IDg7IC0taSA+PSAwOyApIHsK
CQkvKgoJCSAqIEVhY2ggaXRlcmF0aW9uIG9mIHRoaXMgbG9vcCBncmFicyAzMiBZcyAmIDE2
IFUvVnMuCgkJICovCgkJcmVnaXN0ZXIgdV9pbnQgeTAsIHkxLCB1LCB2OwoKCQl1ICA9IGlu
W1UgKyAwKjRdIDw8IFNISUZUKDI0KSB8CgkJICAgICBpbltVICsgMSo0XSA8PCBTSElGVCgx
NikgfAoJCSAgICAgaW5bVSArIDIqNF0gPDwgU0hJRlQoOCkgfAoJCSAgICAgaW5bVSArIDMq
NF0gPDwgU0hJRlQoMCk7CgkJdiAgPSBpbltWICsgMCo0XSA8PCBTSElGVCgyNCkgfAoJCSAg
ICAgaW5bViArIDEqNF0gPDwgU0hJRlQoMTYpIHwKCQkgICAgIGluW1YgKyAyKjRdIDw8IFNI
SUZUKDgpIHwKCQkgICAgIGluW1YgKyAzKjRdIDw8IFNISUZUKDApOwoJCXkwID0gaW5bWTAg
KyAwKjRdIDw8IFNISUZUKDI0KSB8CgkJICAgICBpbltZMSArIDAqNF0gPDwgU0hJRlQoMTYp
IHwKCQkgICAgIGluW1kwICsgMSo0XSA8PCBTSElGVCg4KSB8CgkJICAgICBpbltZMSArIDEq
NF0gPDwgU0hJRlQoMCk7CgkJeTEgPSBpbltZMCArIDIqNF0gPDwgU0hJRlQoMjQpIHwKCQkg
ICAgIGluW1kxICsgMio0XSA8PCBTSElGVCgxNikgfAoJCSAgICAgaW5bWTAgKyAzKjRdIDw8
IFNISUZUKDgpIHwKCQkgICAgIGluW1kxICsgMyo0XSA8PCBTSElGVCgwKTsKCgkJKCh1X2lu
dCopeXApWzBdID0geTA7CgkJKCh1X2ludCopeXApWzFdID0geTE7CgkJKCh1X2ludCopdXAp
WzBdID0gdTsKCQkoKHVfaW50Kil2cClbMF0gPSB2OwoKCQl1ICA9IGluW1UgKyA0KjRdIDw8
IFNISUZUKDI0KSB8CgkJICAgICBpbltVICsgNSo0XSA8PCBTSElGVCgxNikgfAoJCSAgICAg
aW5bVSArIDYqNF0gPDwgU0hJRlQoOCkgfAoJCSAgICAgaW5bVSArIDcqNF0gPDwgU0hJRlQo
MCk7CgkJdiAgPSBpbltWICsgNCo0XSA8PCBTSElGVCgyNCkgfAoJCSAgICAgaW5bViArIDUq
NF0gPDwgU0hJRlQoMTYpIHwKCQkgICAgIGluW1YgKyA2KjRdIDw8IFNISUZUKDgpIHwKCQkg
ICAgIGluW1YgKyA3KjRdIDw8IFNISUZUKDApOwoJCXkwID0gaW5bWTAgKyA0KjRdIDw8IFNI
SUZUKDI0KSB8CgkJICAgICBpbltZMSArIDQqNF0gPDwgU0hJRlQoMTYpIHwKCQkgICAgIGlu
W1kwICsgNSo0XSA8PCBTSElGVCg4KSB8CgkJICAgICBpbltZMSArIDUqNF0gPDwgU0hJRlQo
MCk7CgkJeTEgPSBpbltZMCArIDYqNF0gPDwgU0hJRlQoMjQpIHwKCQkgICAgIGluW1kxICsg
Nio0XSA8PCBTSElGVCgxNikgfAoJCSAgICAgaW5bWTAgKyA3KjRdIDw8IFNISUZUKDgpIHwK
CQkgICAgIGluW1kxICsgNyo0XSA8PCBTSElGVCgwKTsKCgkJKCh1X2ludCopeXApWzJdID0g
eTA7CgkJKCh1X2ludCopeXApWzNdID0geTE7CgkJKCh1X2ludCopdXApWzFdID0gdTsKCQko
KHVfaW50Kil2cClbMV0gPSB2OwoKCQlpbiArPSBpc3RyaWRlOwoJCXlwICs9IHN0cmlkZTsK
CQl1cCArPSBzdHJpZGUgPj4gMTsKCQl2cCArPSBzdHJpZGUgPj4gMTsKCgkJLyogZG8gdGhl
IDJuZCAoeSBvbmx5IGluc3RlYWQgb2YgeXV2KSBsaW5lICovCgoJCXkwID0gaW5bWTAgKyAw
KjRdIDw8IFNISUZUKDI0KSB8CgkJICAgICBpbltZMSArIDAqNF0gPDwgU0hJRlQoMTYpIHwK
CQkgICAgIGluW1kwICsgMSo0XSA8PCBTSElGVCg4KSB8CgkJICAgICBpbltZMSArIDEqNF0g
PDwgU0hJRlQoMCk7CgkJeTEgPSBpbltZMCArIDIqNF0gPDwgU0hJRlQoMjQpIHwKCQkgICAg
IGluW1kxICsgMio0XSA8PCBTSElGVCgxNikgfAoJCSAgICAgaW5bWTAgKyAzKjRdIDw8IFNI
SUZUKDgpIHwKCQkgICAgIGluW1kxICsgMyo0XSA8PCBTSElGVCgwKTsKCgkJKCh1X2ludCop
eXApWzBdID0geTA7CgkJKCh1X2ludCopeXApWzFdID0geTE7CgoJCXkwID0gaW5bWTAgKyA0
KjRdIDw8IFNISUZUKDI0KSB8CgkJICAgICBpbltZMSArIDQqNF0gPDwgU0hJRlQoMTYpIHwK
CQkgICAgIGluW1kwICsgNSo0XSA8PCBTSElGVCg4KSB8CgkJICAgICBpbltZMSArIDUqNF0g
PDwgU0hJRlQoMCk7CgkJeTEgPSBpbltZMCArIDYqNF0gPDwgU0hJRlQoMjQpIHwKCQkgICAg
IGluW1kxICsgNio0XSA8PCBTSElGVCgxNikgfAoJCSAgICAgaW5bWTAgKyA3KjRdIDw8IFNI
SUZUKDgpIHwKCQkgICAgIGluW1kxICsgNyo0XSA8PCBTSElGVCgwKTsKCgkJKCh1X2ludCop
eXApWzJdID0geTA7CgkJKCh1X2ludCopeXApWzNdID0geTE7CgoJCWluICs9IGlzdHJpZGU7
CgkJeXAgKz0gc3RyaWRlOwoJfQp9Cgp2b2lkIE1ldGVvckNJRkdyYWJiZXI6OnNhdmVibGtz
KGNvbnN0IHVfY2hhciogaW4sIGludCBpcykKewoJdV9jaGFyKiBjcnYgPSBjcnZlY187Cglp
bnQgb2ZmID0gZnJhbWVzaXplXzsKCXVfY2hhciogbHVtID0gZnJhbWVfOwoJdV9jaGFyKiBj
aG0gPSBsdW0gKyBvZmY7CglvZmYgPj49IDI7CgoJY3J2ICs9IHZzdGFydF8gKiBibGt3XyAr
IGhzdGFydF87CglsdW0gKz0gdnN0YXJ0XyAqIG91dHdfICogMTYgKyBoc3RhcnRfICogMTY7
CgljaG0gKz0gdnN0YXJ0XyAqIChvdXR3XyA+PiAxKSAqIDggKyBoc3RhcnRfICogODsKCglp
bnQgc2tpcCA9IGhzdGFydF8gKyAoYmxrd18gLSBoc3RvcF8pOwoKCWZvciAoaW50IHkgPSB2
c3RhcnRfOyB5IDwgdnN0b3BfOyArK3kpIHsKCQljb25zdCB1X2NoYXIqIG5pbiA9IGluOwoJ
CWZvciAoaW50IHggPSBoc3RhcnRfOyB4IDwgaHN0b3BfOyArK3gpIHsKCQkJaW50IHMgPSAq
Y3J2Kys7CgkJCWlmICgocyAmIENSX1NFTkQpICE9IDApCgkJCQlzYXZlYmxrKGluLCBsdW0s
IGNobSwgY2htICsgb2ZmLCBvdXR3XywgaXMpOwoKCQkJaW4gKz0gMzI7CgkJCWx1bSArPSAx
NjsKCQkJY2htICs9IDg7CgkJfQoJCWNydiArPSBza2lwOwoJCWx1bSArPSAxNSAqIG91dHdf
ICsgc2tpcCAqIDE2OwoJCWNobSArPSA3ICogKG91dHdfID4+IDEpICsgc2tpcCAqIDg7CgkJ
aW4gPSBuaW4gKyAxNiAqIGlzOwoJfQp9Cg==

--==_Exmh_10382221920--



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-multimedia" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199804160305.UAA16569>