Patch: 2.1.92pre2: ipmasq_nomodules

Adam Heath (adam.heath@usa.net)
Tue, 31 Mar 1998 03:21:33 -0500 (EST)


This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.
Send mail to mime@docserver.cac.washington.edu for more info.

---1463811328-1054730204-891325938=:8441
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
Content-ID: <Pine.LNX.3.96.980331032030.623C@usa.net>

This patch allows the ip_masq_{ftp,irc,vdolive,quake,raudio,cuseeme} helper
modules be statically linked into the kernel. The is one of the last
remaining hurdles for firewall systems to remove module support.

Adam

---1463811328-1054730204-891325938=:8441
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="ipmasq-nomodules_2.1.92"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.3.96.980331013218.8441J@usa.net>
Content-Description:

ZGlmZiAtcnVOIGxpbnV4L0RvY3VtZW50YXRpb24vQ29uZmlndXJlLmhlbHAg
Mi4xLjkyL0RvY3VtZW50YXRpb24vQ29uZmlndXJlLmhlbHANCi0tLSBsaW51
eC9Eb2N1bWVudGF0aW9uL0NvbmZpZ3VyZS5oZWxwCU1vbiBNYXIgMzAgMTU6
Mjk6MjEgMTk5OA0KKysrIDIuMS45Mi9Eb2N1bWVudGF0aW9uL0NvbmZpZ3Vy
ZS5oZWxwCU1vbiBNYXIgMzAgMTU6MzU6NDEgMTk5OA0KQEAgLTE2OTksNiAr
MTY5OSw1NCBAQA0KICAgdHJhY2VydCBwcm9ncmFtLg0KICAgSWYgeW91IHdh
bnQgdGhpcywgc2F5IFkuIA0KIA0KK0lQOiBtYXNxdWVyYWRpbmcNCitDT05G
SUdfSVBfTUFTUVVFUkFERV9GVFANCisgIFRoaXMgZW5hYmxlcyBzdXBwb3J0
IGZvciBtYXNxdWVyYWRpbmcgRlRQIGNvbm5lY3Rpb25zLiAgSWYgY29tcGls
ZWQNCisgIGFzIGEgbW9kdWxlLCB0aGVuIHBvcnRzIGFyZSBzcGVjaWZpZWQg
d2l0aCBpbnNtb2QgYXMgInBvcnRzPXBvcnQsDQorICBwb3J0LC4uLiIuICBP
dGhlcndpc2UsIHRoZXkgYXJlIHNwZWNpZmllZCBvbiB0aGUga2VybmVsIGNv
bW1hbmQNCisgIGxpbmUsIGFzICJpcF9tYXNxPVsrXWZ0cCxwb3J0LHBvcnQs
Li4uIiAgSWYgIisiIGlzIGdpdmVuLCB0aGVuDQorICAicG9ydCxwb3J0LC4u
LiIgaXMgYWRkZWQgdG8gY3VycmVudCBsaXN0IG9mIHBvcnRzLg0KKw0KK0lQ
OiBtYXNxdWVyYWRpbmcNCitDT05GSUdfSVBfTUFTUVVFUkFERV9JUkMNCisg
IFRoaXMgZW5hYmxlcyBzdXBwb3J0IGZvciBtYXNxdWVyYWRpbmcgSVJDIGNv
bm5lY3Rpb25zLiAgSWYgY29tcGlsZWQNCisgIGFzIGEgbW9kdWxlLCB0aGVu
IHBvcnRzIGFyZSBzcGVjaWZpZWQgd2l0aCBpbnNtb2QgYXMgInBvcnRzPXBv
cnQsDQorICBwb3J0LC4uLiIuICBPdGhlcndpc2UsIHRoZXkgYXJlIHNwZWNp
ZmllZCBvbiB0aGUga2VybmVsIGNvbW1hbmQNCisgIGxpbmUsIGFzICJpcF9t
YXNxPVsrXWlyYyxwb3J0LHBvcnQsLi4uIiAgSWYgIisiIGlzIGdpdmVuLCB0
aGVuDQorICAicG9ydCxwb3J0LC4uLiIgaXMgYWRkZWQgdG8gY3VycmVudCBs
aXN0IG9mIHBvcnRzLg0KKw0KK0lQOiBtYXNxdWVyYWRpbmcNCitDT05GSUdf
SVBfTUFTUVVFUkFERV9RVUFLRQ0KKyAgVGhpcyBlbmFibGVzIHN1cHBvcnQg
Zm9yIG1hc3F1ZXJhZGluZyBRdWFrZSBjb25uZWN0aW9ucy4gIElmIGNvbXBp
bGVkDQorICBhcyBhIG1vZHVsZSwgdGhlbiBwb3J0cyBhcmUgc3BlY2lmaWVk
IHdpdGggaW5zbW9kIGFzICJwb3J0cz1wb3J0LA0KKyAgcG9ydCwuLi4iLiAg
T3RoZXJ3aXNlLCB0aGV5IGFyZSBzcGVjaWZpZWQgb24gdGhlIGtlcm5lbCBj
b21tYW5kDQorICBsaW5lLCBhcyAiaXBfbWFzcT1bK11xdWFrZSxwb3J0LHBv
cnQsLi4uIiAgSWYgIisiIGlzIGdpdmVuLCB0aGVuDQorICAicG9ydCxwb3J0
LC4uLiIgaXMgYWRkZWQgdG8gY3VycmVudCBsaXN0IG9mIHBvcnRzLg0KKw0K
K0lQOiBtYXNxdWVyYWRpbmcNCitDT05GSUdfSVBfTUFTUVVFUkFERV9WRE9M
SVZFDQorICBUaGlzIGVuYWJsZXMgc3VwcG9ydCBmb3IgbWFzcXVlcmFkaW5n
IFZET0xJVkUgY29ubmVjdGlvbnMuICBJZiBjb21waWxlZA0KKyAgYXMgYSBt
b2R1bGUsIHRoZW4gcG9ydHMgYXJlIHNwZWNpZmllZCB3aXRoIGluc21vZCBh
cyAicG9ydHM9cG9ydCwNCisgIHBvcnQsLi4uIi4gIE90aGVyd2lzZSwgdGhl
eSBhcmUgc3BlY2lmaWVkIG9uIHRoZSBrZXJuZWwgY29tbWFuZA0KKyAgbGlu
ZSwgYXMgImlwX21hc3E9WytddmRvbGl2ZSxwb3J0LHBvcnQsLi4uIiAgSWYg
IisiIGlzIGdpdmVuLCB0aGVuDQorICAicG9ydCxwb3J0LC4uLiIgaXMgYWRk
ZWQgdG8gY3VycmVudCBsaXN0IG9mIHBvcnRzLg0KKw0KK0lQOiBtYXNxdWVy
YWRpbmcNCitDT05GSUdfSVBfTUFTUVVFUkFERV9SQVVESU8NCisgIFRoaXMg
ZW5hYmxlcyBzdXBwb3J0IGZvciBtYXNxdWVyYWRpbmcgUkFVRElPIGNvbm5l
Y3Rpb25zLiAgSWYgY29tcGlsZWQNCisgIGFzIGEgbW9kdWxlLCB0aGVuIHBv
cnRzIGFyZSBzcGVjaWZpZWQgd2l0aCBpbnNtb2QgYXMgInBvcnRzPXBvcnQs
DQorICBwb3J0LC4uLiIuICBPdGhlcndpc2UsIHRoZXkgYXJlIHNwZWNpZmll
ZCBvbiB0aGUga2VybmVsIGNvbW1hbmQNCisgIGxpbmUsIGFzICJpcF9tYXNx
PVsrXXJhdWRpbyxwb3J0LHBvcnQsLi4uIiAgSWYgIisiIGlzIGdpdmVuLCB0
aGVuDQorICAicG9ydCxwb3J0LC4uLiIgaXMgYWRkZWQgdG8gY3VycmVudCBs
aXN0IG9mIHBvcnRzLg0KKw0KK0lQOiBtYXNxdWVyYWRpbmcNCitDT05GSUdf
SVBfTUFTUVVFUkFERV9DVVNFRU1FDQorICBUaGlzIGVuYWJsZXMgc3VwcG9y
dCBmb3IgbWFzcXVlcmFkaW5nIENVU0VFTUUgY29ubmVjdGlvbnMuICBJZiBj
b21waWxlZA0KKyAgYXMgYSBtb2R1bGUsIHRoZW4gcG9ydHMgYXJlIHNwZWNp
ZmllZCB3aXRoIGluc21vZCBhcyAicG9ydHM9cG9ydCwNCisgIHBvcnQsLi4u
Ii4gIE90aGVyd2lzZSwgdGhleSBhcmUgc3BlY2lmaWVkIG9uIHRoZSBrZXJu
ZWwgY29tbWFuZA0KKyAgbGluZSwgYXMgImlwX21hc3E9WytdY3VzZWVtZSxw
b3J0LHBvcnQsLi4uIiAgSWYgIisiIGlzIGdpdmVuLCB0aGVuDQorICAicG9y
dCxwb3J0LC4uLiIgaXMgYWRkZWQgdG8gY3VycmVudCBsaXN0IG9mIHBvcnRz
Lg0KKw0KIElQOiBpcGF1dG9mdyBtYXNxdWVyYWRlIHN1cHBvcnQNCiBDT05G
SUdfSVBfTUFTUVVFUkFERV9JUEFVVE9GVyAoRXhwZXJpbWVudGFsKQ0KICAg
aXBhdXRvZncgaXMgYSBwcm9ncmFtIGJ5IFJpY2hhcmQgTHluY2ggYWxsb3dp
bmcgYWRkaXRpb25hbCBzdXBwb3J0DQpkaWZmIC1ydU4gbGludXgvaW5jbHVk
ZS9uZXQvaXBfbWFzcV9hcHAuaCAyLjEuOTIvaW5jbHVkZS9uZXQvaXBfbWFz
cV9hcHAuaA0KLS0tIGxpbnV4L2luY2x1ZGUvbmV0L2lwX21hc3FfYXBwLmgJ
V2VkIERlYyAzMSAxOTowMDowMCAxOTY5DQorKysgMi4xLjkyL2luY2x1ZGUv
bmV0L2lwX21hc3FfYXBwLmgJTW9uIE1hciAzMCAxNTozNTo0MSAxOTk4DQpA
QCAtMCwwICsxLDEwIEBADQorI2lmbmRlZiBfSVBfTUFTUV9BUFBfSA0KKyNk
ZWZpbmUgX0lQX01BU1FfQVBQX0gNCisNCitzdHJ1Y3QgaXBfbWFzcV9hcHBf
c2V0dXAgew0KKwljb25zdCBjaGFyICogYXBwbmFtZTsNCisJaW50ICogYXJy
YXk7DQorCWludCAoKmluaXQpICh2b2lkKTsNCit9Ow0KKw0KKyNlbmRpZiBf
SVBfTUFTUV9BUFBfSF8NCmRpZmYgLXJ1TiBsaW51eC9pbmNsdWRlL25ldC9p
cF9tYXNxX2FwcGhlbHAuaCAyLjEuOTIvaW5jbHVkZS9uZXQvaXBfbWFzcV9h
cHBoZWxwLmgNCi0tLSBsaW51eC9pbmNsdWRlL25ldC9pcF9tYXNxX2FwcGhl
bHAuaAlXZWQgRGVjIDMxIDE5OjAwOjAwIDE5NjkNCisrKyAyLjEuOTIvaW5j
bHVkZS9uZXQvaXBfbWFzcV9hcHBoZWxwLmgJTW9uIE1hciAzMCAxNTozNTo0
MSAxOTk4DQpAQCAtMCwwICsxLDU4IEBADQorI2lmZGVmIE1PRFVMRQ0KKwlF
WFBPUlRfTk9fU1lNQk9MUzsNCisJI2RlZmluZSBJUE1fSU5JVF9NT0RVTEVf
SEVBREVSKG5hbWUpIGludCBpbml0X21vZHVsZSh2b2lkKQ0KKwkjZGVmaW5l
IElQTV9JTklUX01PRFVMRV9SRVQgcmV0dXJuIGogPyAtRUlPIDogMA0KKwkj
ZGVmaW5lIElQTV9FTkRfTU9EVUxFX0hFQURFUihuYW1lKSB2b2lkIGNsZWFu
dXBfbW9kdWxlKHZvaWQpDQorCSNkZWZpbmUgSVBNX0VORF9NT0RVTEVfUkVU
IFwNCisgICAgICAgIGlmIChrKSBJUF9NQVNRX0RFQlVHKDEtZGVidWcsICJ0
ZXh0OiBjYW4ndCByZW1vdmUgbW9kdWxlIik7DQorI2Vsc2UNCisJI2RlZmlu
ZSBJUE1fSU5JVF9NT0RVTEVfSEVBREVSKG5hbWUpIF9faW5pdGZ1bmMoaW50
IGlwX21hc3FfICMjIG5hbWUgIyMgX2luaXQodm9pZCkpDQorCSNkZWZpbmUg
SVBNX0lOSVRfTU9EVUxFX1JFVCByZXR1cm4gag0KKwkjZGVmaW5lIElQTV9F
TkRfTU9EVUxFX0hFQURFUihuYW1lKSBpbnQgaXBfbWFzcV8gIyMgbmFtZSAj
IyBfZG9uZSh2b2lkKQ0KKwkjZGVmaW5lIElQTV9FTkRfTU9EVUxFX1JFVCBy
ZXR1cm4gazsNCisjZW5kaWYNCisNCisjZGVmaW5lIElQTV9JTklUX01PRFVM
RShuYW1lLHByb3RvLHRleHQpIFwNCitJUE1fSU5JVF9NT0RVTEVfSEVBREVS
KG5hbWUpXA0KK3tcDQorICAgICAgICBpbnQgaSwgaj0wO1wNCisgICAgICAg
IGZvciAoaT0wOyAoaTxNQVhfTUFTUV9BUFBfUE9SVFMpOyBpKyspIHtcDQor
ICAgICAgICAgICAgICAgIGlmIChQT1JUU1tpXSkge1wNCisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoKElOQ0FSTkFUSU9OU1tpXSA9IGttYWxsb2Mo
c2l6ZW9mKHN0cnVjdCBpcF9tYXNxX2FwcCksXA0KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdGUF9LRVJORUwpKSA9PSBOVUxMKSB7XA0KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaiA9IC1FTk9NRU07XA0KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7XA0KKyAgICAgICAgICAgICAgICAg
ICAgICAgIH1cDQorICAgICAgICAgICAgICAgICAgICAgICAgbWVtY3B5KElO
Q0FSTkFUSU9OU1tpXSwgJmlwX21hc3FfICMjIG5hbWUsIHNpemVvZihzdHJ1
Y3QgaXBfbWFzcV9hcHApKTtcDQorICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKChqID0gcmVnaXN0ZXJfaXBfbWFzcV9hcHAoSU5DQVJOQVRJT05TW2ld
LFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwcm90byxcDQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUE9SVFNbaV0pKSlc
DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcDQor
ICAgICAgICAgICAgICAgICAgICAgICAgSVBfTUFTUV9ERUJVRygxLWRlYnVn
LCAidGV4dDogbG9hZGVkIHN1cHBvcnQgb24gcG9ydFslZF0gPSAlZFxuIixc
DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGksIFBPUlRTW2ld
KTtcDQorICAgICAgICAgICAgICAgIH0gZWxzZSB7XA0KKyAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIFRvIGJlIHNhZmUsIGZvcmNlIHRoZSBpbmNhcm5h
dGlvbiB0YWJsZSBlbnRyeSB0byBOVUxMICovXA0KKyAgICAgICAgICAgICAg
ICAgICAgICAgIElOQ0FSTkFUSU9OU1tpXSA9IE5VTEw7XA0KKyAgICAgICAg
ICAgICAgICB9XA0KKyAgICAgICAgfVwNCisJSVBNX0lOSVRfTU9EVUxFX1JF
VDtcDQorfQ0KKyNkZWZpbmUgSVBNX0VORF9NT0RVTEUobmFtZSx0ZXh0KSBc
DQorSVBNX0VORF9NT0RVTEVfSEVBREVSKG5hbWUpXA0KK3tcDQorICAgICAg
ICBpbnQgaSwgaiwgaztcDQorICAgICAgICBrPTA7XA0KKyAgICAgICAgZm9y
IChpPTA7IChpPE1BWF9NQVNRX0FQUF9QT1JUUyk7IGkrKykge1wNCisgICAg
ICAgICAgICAgICAgaWYgKElOQ0FSTkFUSU9OU1tpXSkge1wNCisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoKGogPSB1bnJlZ2lzdGVyX2lwX21hc3Ff
YXBwKElOQ0FSTkFUSU9OU1tpXSkpKSB7XA0KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgayA9IGo7XA0KKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0gZWxzZSB7XA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAga2ZyZWUoSU5DQVJOQVRJT05TW2ldKTtcDQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBJTkNBUk5BVElPTlNbaV0gPSBOVUxMO1wNCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQX01BU1FfREVCVUco
MS1kZWJ1ZywgIkZ0cDogdW5sb2FkZWQgc3VwcG9ydCBvbiBwb3J0WyVkXSA9
ICVkXG4iLFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpLCBQT1JUU1tpXSk7XA0KKyAgICAgICAgICAgICAgICAgICAgICAg
IH1cDQorICAgICAgICAgICAgICAgIH1cDQorICAgICAgICB9XA0KKwlJUE1f
RU5EX01PRFVMRV9SRVQ7XA0KK30NCmRpZmYgLXJ1TiBsaW51eC9pbml0L21h
aW4uYyAyLjEuOTIvaW5pdC9tYWluLmMNCi0tLSBsaW51eC9pbml0L21haW4u
YwlNb24gTWFyIDMwIDE1OjI5OjA5IDE5OTgNCisrKyAyLjEuOTIvaW5pdC9t
YWluLmMJTW9uIE1hciAzMCAxNTozNjo0MSAxOTk4DQpAQCAtMjc1LDYgKzI3
NSw5IEBADQogI2lmZGVmIENPTkZJR19GVEFQRQ0KIGV4dGVybiB2b2lkIGZ0
YXBlX3NldHVwKGNoYXIgKnN0ciwgaW50ICppbnRzKTsNCiAjZW5kaWYNCisj
aWZkZWYgQ09ORklHX0lQX01BU1FVRVJBREUNCitleHRlcm4gdm9pZCBpcF9t
YXNxX2FwcF9zZXR1cChjaGFyICpzdHIsIGludCAqaW50cyk7DQorI2VuZGlm
DQogDQogI2lmIGRlZmluZWQoQ09ORklHX1NZU1ZJUEMpDQogZXh0ZXJuIHZv
aWQgaXBjX2luaXQodm9pZCk7DQpAQCAtNTAwLDYgKzUwMyw5IEBADQogI2Vu
ZGlmDQogI2lmZGVmIENPTkZJR19JTkVUDQogCXsgImV0aGVyPSIsIGV0aF9z
ZXR1cCB9LA0KKyNlbmRpZg0KKyNpZmRlZiBDT05GSUdfSVBfTUFTUVVFUkFE
RQ0KKwl7ICJpcF9tYXNxPSIsIGlwX21hc3FfYXBwX3NldHVwIH0sDQogI2Vu
ZGlmDQogI2lmZGVmIENPTkZJR19BUkNORVRfQ09NMjAwMjANCiAJeyAiY29t
MjAwMjA9IiwgY29tMjAwMjBfc2V0dXAgfSwNCmRpZmYgLXJ1TiBsaW51eC9u
ZXQvaXB2NC9Db25maWcuaW4gMi4xLjkyL25ldC9pcHY0L0NvbmZpZy5pbg0K
LS0tIGxpbnV4L25ldC9pcHY0L0NvbmZpZy5pbglNb24gTWFyIDMwIDE1OjI4
OjM5IDE5OTgNCisrKyAyLjEuOTIvbmV0L2lwdjQvQ29uZmlnLmluCU1vbiBN
YXIgMzAgMTU6Mzc6NDIgMTk5OA0KQEAgLTQwLDkgKzQwLDE0IEBADQogaWYg
WyAiJENPTkZJR19JUF9GSVJFV0FMTCIgPSAieSIgXTsgdGhlbg0KICAgYm9v
bCAnSVA6IG1hc3F1ZXJhZGluZycgQ09ORklHX0lQX01BU1FVRVJBREUNCiAg
IGlmIFsgIiRDT05GSUdfSVBfTUFTUVVFUkFERSIgIT0gIm4iIF07IHRoZW4N
Ci0gICAgY29tbWVudCAnUHJvdG9jb2wtc3BlY2lmaWMgbWFzcXVlcmFkaW5n
IHN1cHBvcnQgd2lsbCBiZSBidWlsdCBhcyBtb2R1bGVzLicNCisgICAgZGVw
X3RyaXN0YXRlICdJUF9NQVNROiBGVFAgcHJvdG9jb2wgc3VwcG9ydCcgQ09O
RklHX0lQX01BU1FVRVJBREVfRlRQICRDT05GSUdfSVBfTUFTUVVFUkFERQ0K
KyAgICBkZXBfdHJpc3RhdGUgJ0lQX01BU1E6IEludGVybmV0IFJlbGF5IENo
YXQgcHJvdG9jb2wgc3VwcG9ydCcgQ09ORklHX0lQX01BU1FVRVJBREVfSVJD
ICRDT05GSUdfSVBfTUFTUVVFUkFERQ0KKyAgICBkZXBfdHJpc3RhdGUgJ0lQ
X01BU1E6IFJlYWwgQXVkaW8gcHJvdG9jb2wgc3VwcG9ydCcgQ09ORklHX0lQ
X01BU1FVRVJBREVfUkFVRElPICRDT05GSUdfSVBfTUFTUVVFUkFERQ0KKyAg
ICBkZXBfdHJpc3RhdGUgJ0lQX01BU1E6IEN1U2VlTWUgcHJvdG9jb2wgc3Vw
cG9ydCcgQ09ORklHX0lQX01BU1FVRVJBREVfQ1VTRUVNRSAkQ09ORklHX0lQ
X01BU1FVRVJBREUNCisgICAgZGVwX3RyaXN0YXRlICdJUF9NQVNROiBWZG9M
aXZlIHByb3RvY29sIHN1cHBvcnQnIENPTkZJR19JUF9NQVNRVUVSQURFX1ZE
T0xJVkUgJENPTkZJR19JUF9NQVNRVUVSQURFDQorICAgIGRlcF90cmlzdGF0
ZSAnSVBfTUFTUTogUXVha2UgcHJvdG9jb2wgc3VwcG9ydCcgQ09ORklHX0lQ
X01BU1FVRVJBREVfUVVBS0UgJENPTkZJR19JUF9NQVNRVUVSQURFDQogICAg
IGJvb2wgJ0lQOiBJQ01QIG1hc3F1ZXJhZGluZycgQ09ORklHX0lQX01BU1FV
RVJBREVfSUNNUA0KLSAgICBjb21tZW50ICdQcm90b2NvbC1zcGVjaWZpYyBt
YXNxdWVyYWRpbmcgc3VwcG9ydCB3aWxsIGJlIGJ1aWx0IGFzIG1vZHVsZXMu
Jw0KKw0KICAgICBpZiBbICIkQ09ORklHX0VYUEVSSU1FTlRBTCIgPSAieSIg
XTsgdGhlbg0KICAgICAgIHRyaXN0YXRlICdJUDogaXBhdXRvZncgbWFzcSBz
dXBwb3J0IChFWFBFUklNRU5UQUwpJyBDT05GSUdfSVBfTUFTUVVFUkFERV9J
UEFVVE9GVw0KICAgICAgIHRyaXN0YXRlICdJUDogaXBwb3J0ZncgbWFzcSBz
dXBwb3J0IChFWFBFUklNRU5UQUwpJyBDT05GSUdfSVBfTUFTUVVFUkFERV9J
UFBPUlRGVw0KZGlmZiAtcnVOIGxpbnV4L25ldC9pcHY0L01ha2VmaWxlIDIu
MS45Mi9uZXQvaXB2NC9NYWtlZmlsZQ0KLS0tIGxpbnV4L25ldC9pcHY0L01h
a2VmaWxlCVdlZCBEZWMgMTAgMTI6NDU6MTYgMTk5Nw0KKysrIDIuMS45Mi9u
ZXQvaXB2NC9NYWtlZmlsZQlNb24gTWFyIDMwIDE1OjM1OjQxIDE5OTgNCkBA
IC01Niw3ICs1Niw1NSBAQA0KIGVuZGlmDQogDQogaWZlcSAoJChDT05GSUdf
SVBfTUFTUVVFUkFERSkseSkNCi1JUFY0WF9PQkpTICs9IGlwX21hc3EubyBp
cF9tYXNxX21vZC5vIGlwX21hc3FfYXBwLm8gDQorDQorICBJUFY0WF9PQkpT
ICs9IGlwX21hc3EubyBpcF9tYXNxX21vZC5vIGlwX21hc3FfYXBwLm8NCisg
IGlmZXEgKCQoQ09ORklHX0lQX01BU1FVRVJBREVfRlRQKSx5KQ0KKyAgICBJ
UFY0WF9PQkpTICs9IGlwX21hc3FfZnRwLm8NCisgIGVsc2UNCisgICAgaWZl
cSAoJChDT05GSUdfSVBfTUFTUVVFUkFERV9GVFApLG0pDQorICAgICAgTV9P
QkpTICs9IGlwX21hc3FfZnRwLm8NCisgICAgZW5kaWYNCisgIGVuZGlmDQor
DQorICBpZmVxICgkKENPTkZJR19JUF9NQVNRVUVSQURFX0lSQykseSkNCisg
ICAgSVBWNFhfT0JKUyArPSBpcF9tYXNxX2lyYy5vDQorICBlbHNlDQorICAg
IGlmZXEgKCQoQ09ORklHX0lQX01BU1FVRVJBREVfSVJDKSxtKQ0KKyAgICAg
IE1fT0JKUyArPSBpcF9tYXNxX2lyYy5vDQorICAgIGVuZGlmDQorICBlbmRp
Zg0KKw0KKyAgaWZlcSAoJChDT05GSUdfSVBfTUFTUVVFUkFERV9SQVVESU8p
LHkpDQorICAgIElQVjRYX09CSlMgKz0gaXBfbWFzcV9yYXVkaW8ubw0KKyAg
ZWxzZQ0KKyAgICBpZmVxICgkKENPTkZJR19JUF9NQVNRVUVSQURFX1JBVURJ
TyksbSkNCisgICAgICBNX09CSlMgKz0gaXBfbWFzcV9yYXVkaW8ubw0KKyAg
ICBlbmRpZg0KKyAgZW5kaWYNCisNCisgIGlmZXEgKCQoQ09ORklHX0lQX01B
U1FVRVJBREVfQ1VTRUVNRSkseSkNCisgICAgSVBWNFhfT0JKUyArPSBpcF9t
YXNxX2N1c2VlbWUubw0KKyAgZWxzZQ0KKyAgICBpZmVxICgkKENPTkZJR19J
UF9NQVNRVUVSQURFX0NVU0VFTUUpLG0pDQorICAgICAgTV9PQkpTICs9IGlw
X21hc3FfY3VzZWVtZS5vDQorICAgIGVuZGlmDQorICBlbmRpZg0KKw0KKyAg
aWZlcSAoJChDT05GSUdfSVBfTUFTUVVFUkFERV9WRE9MSVZFKSx5KQ0KKyAg
ICBJUFY0WF9PQkpTICs9IGlwX21hc3FfdmRvbGl2ZS5vDQorICBlbHNlDQor
ICAgIGlmZXEgKCQoQ09ORklHX0lQX01BU1FVRVJBREVfVkRPTElWRSksbSkN
CisgICAgICBNX09CSlMgKz0gaXBfbWFzcV92ZG9saXZlLm8NCisgICAgZW5k
aWYNCisgIGVuZGlmDQorDQorICBpZmVxICgkKENPTkZJR19JUF9NQVNRVUVS
QURFX1FVQUtFKSx5KQ0KKyAgICBJUFY0WF9PQkpTICs9IGlwX21hc3FfcXVh
a2Uubw0KKyAgZWxzZQ0KKyAgICBpZmVxICgkKENPTkZJR19JUF9NQVNRVUVS
QURFX1FVQUtFKSxtKQ0KKyAgICAgIE1fT0JKUyArPSBpcF9tYXNxX3F1YWtl
Lm8NCisgICAgZW5kaWYNCisgIGVuZGlmDQogDQogaWZlcSAoJChDT05GSUdf
SVBfTUFTUVVFUkFERV9JUEFVVE9GVykseSkNCiBJUFY0X09CSlMgKz0gaXBf
bWFzcV9hdXRvZncubw0KQEAgLTc0LDggKzEyMiw2IEBADQogICBlbmRpZg0K
IGVuZGlmDQogDQotTV9PQkpTICs9IGlwX21hc3FfZnRwLm8gaXBfbWFzcV9p
cmMubyBpcF9tYXNxX3JhdWRpby5vIGlwX21hc3FfcXVha2Uubw0KLU1fT0JK
UyArPSBpcF9tYXNxX3Zkb2xpdmUubyBpcF9tYXNxX2N1c2VlbWUubw0KIGVu
ZGlmDQogDQogaWZlcSAoJChDT05GSUdfU1lOX0NPT0tJRVMpLHkpDQpkaWZm
IC1ydU4gbGludXgvbmV0L2lwdjQvaXBfbWFzcV9hcHAuYyAyLjEuOTIvbmV0
L2lwdjQvaXBfbWFzcV9hcHAuYw0KLS0tIGxpbnV4L25ldC9pcHY0L2lwX21h
c3FfYXBwLmMJTW9uIE1hciAzMCAxNToyODoxNiAxOTk4DQorKysgMi4xLjky
L25ldC9pcHY0L2lwX21hc3FfYXBwLmMJTW9uIE1hciAzMCAxNjowMzoxNyAx
OTk4DQpAQCAtMzEsNiArMzEsNyBAQA0KICNpbmNsdWRlIDxsaW51eC9pbi5o
Pg0KICNpbmNsdWRlIDxsaW51eC9pcC5oPg0KICNpbmNsdWRlIDxsaW51eC9p
bml0Lmg+DQorI2luY2x1ZGUgPGxpbnV4L2N0eXBlLmg+DQogI2luY2x1ZGUg
PG5ldC9wcm90b2NvbC5oPg0KICNpbmNsdWRlIDxuZXQvdGNwLmg+DQogI2lu
Y2x1ZGUgPG5ldC91ZHAuaD4NCkBAIC0zOCw2ICszOSw3IEBADQogI2luY2x1
ZGUgPGxpbnV4L3N0YXQuaD4NCiAjaW5jbHVkZSA8bGludXgvcHJvY19mcy5o
Pg0KICNpbmNsdWRlIDxuZXQvaXBfbWFzcS5oPg0KKyNpbmNsdWRlIDxuZXQv
aXBfbWFzcV9hcHAuaD4NCiANCiAjZGVmaW5lIElQX01BU1FfQVBQX1RBQl9T
SVpFICAxNiAvKiBtdXN0IGJlIHBvd2VyIG9mIDIgKi8NCiANCkBAIC01Nyw2
ICs1OSw2OSBAQA0KIA0KIHN0cnVjdCBpcF9tYXNxX2FwcCAqaXBfbWFzcV9h
cHBfYmFzZVtJUF9NQVNRX0FQUF9UQUJfU0laRV07DQogDQorI2lmZGVmIENP
TkZJR19JUF9NQVNRVUVSQURFX0ZUUA0KKwlleHRlcm4gaW50IGlwX21hc3Ff
ZnRwX3BvcnRzW01BWF9NQVNRX0FQUF9QT1JUU107DQorCWV4dGVybiBpbnQg
aXBfbWFzcV9mdHBfaW5pdCh2b2lkKTsNCisjZW5kaWYNCisjaWZkZWYgQ09O
RklHX0lQX01BU1FVRVJBREVfSVJDDQorCWV4dGVybiBpbnQgaXBfbWFzcV9p
cmNfcG9ydHNbTUFYX01BU1FfQVBQX1BPUlRTXTsNCisJZXh0ZXJuIGludCBp
cF9tYXNxX2lyY19pbml0KHZvaWQpOw0KKyNlbmRpZg0KKyNpZmRlZiBDT05G
SUdfSVBfTUFTUVVFUkFERV9RVUFLRQ0KKwlleHRlcm4gaW50IGlwX21hc3Ff
cXVha2VfcG9ydHNbTUFYX01BU1FfQVBQX1BPUlRTXTsNCisJZXh0ZXJuIGlu
dCBpcF9tYXNxX3F1YWtlX2luaXQodm9pZCk7DQorI2VuZGlmDQorI2lmZGVm
IENPTkZJR19JUF9NQVNRVUVSQURFX0NVU0VFTUUNCisJZXh0ZXJuIGludCBp
cF9tYXNxX2N1c2VlbWVfcG9ydHNbTUFYX01BU1FfQVBQX1BPUlRTXTsNCisJ
ZXh0ZXJuIGludCBpcF9tYXNxX2N1c2VlbWVfaW5pdCh2b2lkKTsNCisjZW5k
aWYNCisjaWZkZWYgQ09ORklHX0lQX01BU1FVRVJBREVfVkRPTElWRQ0KKwll
eHRlcm4gaW50IGlwX21hc3FfdmRvbGl2ZV9wb3J0c1tNQVhfTUFTUV9BUFBf
UE9SVFNdOw0KKwlleHRlcm4gaW50IGlwX21hc3FfdmRvbGl2ZV9pbml0KHZv
aWQpOw0KKyNlbmRpZg0KKyNpZmRlZiBDT05GSUdfSVBfTUFTUVVFUkFERV9S
QVVESU8NCisJZXh0ZXJuIGludCBpcF9tYXNxX3JhdWRpb19wb3J0c1tNQVhf
TUFTUV9BUFBfUE9SVFNdOw0KKwlleHRlcm4gaW50IGlwX21hc3FfcmF1ZGlv
X2luaXQodm9pZCk7DQorI2VuZGlmDQorDQorc3RydWN0IGlwX21hc3FfYXBw
X3NldHVwIGlwX21hc3FfYXBwX2luZm9bXSA9IHsNCisNCisjaWZkZWYgQ09O
RklHX0lQX01BU1FVRVJBREVfRlRQDQorICAgICAgICB7ICJmdHAiLCBpcF9t
YXNxX2Z0cF9wb3J0cywNCisJaXBfbWFzcV9mdHBfaW5pdCwNCisgfSwNCisj
ZW5kaWYNCisjaWZkZWYgQ09ORklHX0lQX01BU1FVRVJBREVfSVJDDQorICAg
ICAgICB7ICJpcmMiLCBpcF9tYXNxX2lyY19wb3J0cywNCisJaXBfbWFzcV9p
cmNfaW5pdCwNCisgfSwNCisjZW5kaWYNCisjaWZkZWYgQ09ORklHX0lQX01B
U1FVRVJBREVfUVVBS0UNCisgICAgICAgIHsgInF1YWtlIiwgaXBfbWFzcV9x
dWFrZV9wb3J0cywNCisJaXBfbWFzcV9xdWFrZV9pbml0LA0KKyB9LA0KKyNl
bmRpZg0KKyNpZmRlZiBDT05GSUdfSVBfTUFTUVVFUkFERV9DVVNFRU1FDQor
ICAgICAgICB7ICJjdXNlZW1lIiwgaXBfbWFzcV9jdXNlZW1lX3BvcnRzLA0K
KwlpcF9tYXNxX2N1c2VlbWVfaW5pdCwNCisgfSwNCisjZW5kaWYNCisjaWZk
ZWYgQ09ORklHX0lQX01BU1FVRVJBREVfUkFVRElPDQorICAgICAgICB7ICJy
YXVkaW8iLCBpcF9tYXNxX3JhdWRpb19wb3J0cywNCisJaXBfbWFzcV9yYXVk
aW9faW5pdCwNCisgfSwNCisjZW5kaWYNCisjaWZkZWYgQ09ORklHX0lQX01B
U1FVRVJBREVfVkRPTElWRQ0KKyAgICAgICAgeyAidmRvbGl2ZSIsIGlwX21h
c3FfdmRvbGl2ZV9wb3J0cywNCisJaXBfbWFzcV92ZG9saXZlX2luaXQsDQor
fSwNCisjZW5kaWYNCisNCisgICAgICAgIHsgTlVMTCwgTlVMTCwgTlVMTCB9
DQorfTsNCisNCisNCisNCiAvKg0KICAqIAlpcF9tYXNxX2FwcCByZWdpc3Ry
YXRpb24gcm91dGluZQ0KICAqCXBvcnQ6IGhvc3QgYnl0ZSBvcmRlci4NCkBA
IC00ODcsNiArNTUyLDkgQEANCiANCiBfX2luaXRmdW5jKGludCBpcF9tYXNx
X2FwcF9pbml0KHZvaWQpKQ0KIHsNCisJaW50IHA7DQorCWZvciAocD0wO2lw
X21hc3FfYXBwX2luZm9bcF0uaW5pdDtwKyspDQorCQlpcF9tYXNxX2FwcF9p
bmZvW3BdLmluaXQoKTsNCiAjaWZkZWYgQ09ORklHX1BST0NfRlMNCiAJcHJv
Y19uZXRfcmVnaXN0ZXIoJnByb2NfbmV0X2lwX21hc3FfYXBwKTsNCiAjZW5k
aWYNCkBAIC02MDIsMyArNjcwLDM5IEBADQogICAgICAgICB9DQogICAgICAg
ICByZXR1cm4gbl9za2I7DQogfQ0KKw0KKw0KKyNpZm5kZWYgTU9EVUxFIC8q
IE1PRFVMRSAqLw0KK19faW5pdGZ1bmModm9pZCBpcF9tYXNxX2FwcF9zZXR1
cChjaGFyICpzdHIsIGludCAqaW50cykpDQorew0KKyAgICAgICAgaW50IHA9
MCxpPTA7DQorCWNoYXIgKmFwcD1zdHIsKnNwdHI9TlVMTDsNCisgICAgICAg
IA0KKwlpZigoc3B0cj1zdHJjaHIoc3RyLCcsJykpKQ0KKwkJKnNwdHI9J1ww
JyxzdHI9c3B0cisxOw0KKw0KKwlpZighc3RybmNtcChhcHAsIisiLDEpKQ0K
KwkJYXBwKyssaT0xOw0KKw0KKwlmb3IocD0wO2lwX21hc3FfYXBwX2luZm9b
cF0uYXBwbmFtZTtwKyspDQorCQlpZighc3RyY21wKGFwcCxpcF9tYXNxX2Fw
cF9pbmZvW3BdLmFwcG5hbWUpKXsNCisJCQljaGFyICpjdXI7DQorCQkJaW50
ICpwdHM9TlVMTDsNCisNCisJCQlwdHM9aXBfbWFzcV9hcHBfaW5mb1twXS5h
cnJheTsNCisJCQlpZihpKSBmb3IoaT0wO3B0c1tpXTtpKyspOw0KKw0KKwkJ
CWN1cj1zdHI7DQorCQkJd2hpbGUgKGN1ciAmJiBpc2RpZ2l0KCpjdXIpICYm
IGkgPD0gTUFYX01BU1FfQVBQX1BPUlRTKSB7DQorCQkJCXB0c1tpKytdPXNp
bXBsZV9zdHJ0b3VsKGN1cixOVUxMLDApOw0KKwkJCQlpZiAoKGN1ciA9IHN0
cmNocihjdXIsJywnKSkgIT0gTlVMTCkgY3VyKys7DQorCQkJfQ0KKwkJCXdo
aWxlIChpIDw9IE1BWF9NQVNRX0FQUF9QT1JUUykgDQorCQkJCXB0c1tpKytd
PTA7DQorDQorCQkJYnJlYWs7DQorCQl9DQorCXJldHVybjsNCit9DQorDQor
I2VuZGlmIC8qIE1PRFVMRSAqLw0KZGlmZiAtcnVOIGxpbnV4L25ldC9pcHY0
L2lwX21hc3FfY3VzZWVtZS5jIDIuMS45Mi9uZXQvaXB2NC9pcF9tYXNxX2N1
c2VlbWUuYw0KLS0tIGxpbnV4L25ldC9pcHY0L2lwX21hc3FfY3VzZWVtZS5j
CVdlZCBEZWMgMTAgMTI6NDU6MTYgMTk5Nw0KKysrIDIuMS45Mi9uZXQvaXB2
NC9pcF9tYXNxX2N1c2VlbWUuYwlNb24gTWFyIDMwIDE1OjM1OjQxIDE5OTgN
CkBAIC00OSw2ICs0OSw3IEBADQogI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4N
CiAjaW5jbHVkZSA8bmV0L3Byb3RvY29sLmg+DQogI2luY2x1ZGUgPG5ldC91
ZHAuaD4NCisjaW5jbHVkZSA8bmV0L2lwX21hc3FfYXBwaGVscC5oPg0KIA0K
IC8qICNkZWZpbmUgSVBfTUFTUV9OREVCVUcgKi8NCiAjaW5jbHVkZSA8bmV0
L2lwX21hc3EuaD4NCkBAIC04OCwxNSArODksMjIgQEANCiAgKiBMaXN0IG9m
IHBvcnRzICh1cCB0byBNQVhfTUFTUV9BUFBfUE9SVFMpIHRvIGJlIGhhbmRs
ZWQgYnkgaGVscGVyDQogICogRmlyc3QgcG9ydCBpcyBzZXQgdG8gdGhlIGRl
ZmF1bHQgcG9ydC4NCiAgKi8NCi1zdGF0aWMgaW50IHBvcnRzW01BWF9NQVNR
X0FQUF9QT1JUU10gPSB7NzY0OH07IC8qIEkgcmVseSBvbiB0aGUgdHJhaWxp
bmcgaXRlbXMgYmVpbmcgc2V0IHRvIHplcm8gKi8NCi1zdHJ1Y3QgaXBfbWFz
cV9hcHAgKm1hc3FfaW5jYXJuYXRpb25zW01BWF9NQVNRX0FQUF9QT1JUU107
DQorI2lmZGVmIE1PRFVMRQ0KKwkjZGVmaW5lIFBPUlRTIHBvcnRzDQorCSNk
ZWZpbmUgSU5DQVJOQVRJT05TIGluY2FybmF0aW9ucw0KKyNlbHNlDQorCSNk
ZWZpbmUgUE9SVFMgaXBfbWFzcV9jdXNlZW1lX3BvcnRzDQorCSNkZWZpbmUg
SU5DQVJOQVRJT05TIGlwX21hc3FfY3VzZWVtZV9pbmNhcm5hdGlvbnMNCisj
ZW5kaWYNCitpbnQgUE9SVFNbTUFYX01BU1FfQVBQX1BPUlRTXT17NzY0OH07
IC8qIEkgcmVseSBvbiB0aGUgdHJhaWxpbmcgaXRlbXMgYmVpbmcgc2V0IHRv
IHplcm8gKi8NCitzdHJ1Y3QgaXBfbWFzcV9hcHAgKklOQ0FSTkFUSU9OU1tN
QVhfTUFTUV9BUFBfUE9SVFNdOw0KIA0KIC8qDQogICogICAgIERlYnVnIGxl
dmVsDQogICovDQogc3RhdGljIGludCBkZWJ1Zz0wOw0KIA0KLU1PRFVMRV9Q
QVJNKHBvcnRzLCAiMS0iIF9fTU9EVUxFX1NUUklORyhNQVhfTUFTUV9BUFBf
UE9SVFMpICJpIik7DQorTU9EVUxFX1BBUk0oUE9SVFMsICIxLSIgX19NT0RV
TEVfU1RSSU5HKE1BWF9NQVNRX0FQUF9QT1JUUykgImkiKTsNCiBNT0RVTEVf
UEFSTShkZWJ1ZywgImkiKTsNCiANCiBzdGF0aWMgaW50DQpAQCAtMTg4LDc0
ICsxOTYsNSBAQA0KIH07DQogDQogDQotLyoNCi0gKiAJaXBfbWFzcV9jdXNl
ZW1lIGluaXRpYWxpemF0aW9uDQotICovDQotDQotX19pbml0ZnVuYyhpbnQg
aXBfbWFzcV9jdXNlZW1lX2luaXQodm9pZCkpDQotew0KLQlpbnQgaSwgajsN
Ci0NCi0JZm9yIChpPTA7IChpPE1BWF9NQVNRX0FQUF9QT1JUUyk7IGkrKykg
ew0KLQkJaWYgKHBvcnRzW2ldKSB7DQotCQkJaWYgKChtYXNxX2luY2FybmF0
aW9uc1tpXSA9IGttYWxsb2Moc2l6ZW9mKHN0cnVjdCBpcF9tYXNxX2FwcCks
DQotCQkJCQkJCSAgICBHRlBfS0VSTkVMKSkgPT0gTlVMTCkNCi0JCQkJcmV0
dXJuIC1FTk9NRU07DQotCQkJbWVtY3B5KG1hc3FfaW5jYXJuYXRpb25zW2ld
LCAmaXBfbWFzcV9jdXNlZW1lLCBzaXplb2Yoc3RydWN0IGlwX21hc3FfYXBw
KSk7DQotCQkJaWYgKChqID0gcmVnaXN0ZXJfaXBfbWFzcV9hcHAobWFzcV9p
bmNhcm5hdGlvbnNbaV0sIA0KLQkJCQkJCSAgICAgIElQUFJPVE9fVURQLA0K
LQkJCQkJCSAgICAgIHBvcnRzW2ldKSkpIHsNCi0JCQkJcmV0dXJuIGo7DQot
CQkJfQ0KLSNpZiBERUJVR19DT05GSUdfSVBfTUFTUV9DVVNFRU1FDQotCQkJ
SVBfTUFTUV9ERUJVRygxLWRlYnVnLCAiQ3VTZWVNZTogbG9hZGVkIHN1cHBv
cnQgb24gcG9ydFslZF0gPSAlZFxuIiwNCi0JCQkgICAgICAgaSwgcG9ydHNb
aV0pOw0KLSNlbmRpZg0KLQkJfSBlbHNlIHsNCi0JCQkvKiBUbyBiZSBzYWZl
LCBmb3JjZSB0aGUgaW5jYXJuYXRpb24gdGFibGUgZW50cnkgdG8gTlVMTCAq
Lw0KLQkJCW1hc3FfaW5jYXJuYXRpb25zW2ldID0gTlVMTDsNCi0JCX0NCi0J
fQ0KLQlyZXR1cm4gMDsNCi19DQotDQotLyoNCi0gKiAJaXBfbWFzcV9jdXNl
ZW1lIGZpbi4NCi0gKi8NCi0NCi1pbnQgaXBfbWFzcV9jdXNlZW1lX2RvbmUo
dm9pZCkNCi17DQotCWludCBpLCBqLCBrOw0KLQ0KLQlrPTA7DQotCWZvciAo
aT0wOyAoaTxNQVhfTUFTUV9BUFBfUE9SVFMpOyBpKyspIHsNCi0JCWlmICht
YXNxX2luY2FybmF0aW9uc1tpXSkgew0KLQkJCWlmICgoaiA9IHVucmVnaXN0
ZXJfaXBfbWFzcV9hcHAobWFzcV9pbmNhcm5hdGlvbnNbaV0pKSkgew0KLQkJ
CQlrID0gajsNCi0JCQl9IGVsc2Ugew0KLQkJCQlrZnJlZShtYXNxX2luY2Fy
bmF0aW9uc1tpXSk7DQotCQkJCW1hc3FfaW5jYXJuYXRpb25zW2ldID0gTlVM
TDsNCi0JCQkJSVBfTUFTUV9ERUJVRygxLWRlYnVnLCAiQ3VTZWVNZTogdW5s
b2FkZWQgc3VwcG9ydCBvbiBwb3J0WyVkXSA9ICVkXG4iLCBpLCBwb3J0c1tp
XSk7DQotCQkJfQ0KLQkJfQ0KLQl9DQotCXJldHVybiBrOw0KLX0NCi0NCi0j
aWZkZWYgTU9EVUxFDQotRVhQT1JUX05PX1NZTUJPTFM7DQotDQotaW50IGlu
aXRfbW9kdWxlKHZvaWQpDQotew0KLSAgICAgICAgaWYgKGlwX21hc3FfY3Vz
ZWVtZV9pbml0KCkgIT0gMCkNCi0gICAgICAgICAgICAgICAgcmV0dXJuIC1F
SU87DQotICAgICAgICByZXR1cm4gMDsNCi19DQotDQotdm9pZCBjbGVhbnVw
X21vZHVsZSh2b2lkKQ0KLXsNCi0gICAgICAgIGlmIChpcF9tYXNxX2N1c2Vl
bWVfZG9uZSgpICE9IDApDQotICAgICAgICAgICAgICAgIElQX01BU1FfREVC
VUcoMS1kZWJ1ZywgImlwX21hc3FfY3VzZWVtZTogY2FuJ3QgcmVtb3ZlIG1v
ZHVsZSIpOw0KLX0NCi0NCi0jZW5kaWYgLyogTU9EVUxFICovDQorSVBNX0lO
SVRfTU9EVUxFKGN1c2VlbWUsSVBQUk9UT19VRFAsQ3VTZWVNZSk7DQorSVBN
X0VORF9NT0RVTEUoY3VzZWVtZSxpcF9tYXNxX2N1c2VlbWUpOw0KZGlmZiAt
cnVOIGxpbnV4L25ldC9pcHY0L2lwX21hc3FfZnRwLmMgMi4xLjkyL25ldC9p
cHY0L2lwX21hc3FfZnRwLmMNCi0tLSBsaW51eC9uZXQvaXB2NC9pcF9tYXNx
X2Z0cC5jCU1vbiBNYXIgMzAgMTU6Mjg6NDAgMTk5OA0KKysrIDIuMS45Mi9u
ZXQvaXB2NC9pcF9tYXNxX2Z0cC5jCU1vbiBNYXIgMzAgMTU6NDE6MjAgMTk5
OA0KQEAgLTQ3LDYgKzQ3LDcgQEANCiAjaW5jbHVkZSA8bGludXgvaW5pdC5o
Pg0KICNpbmNsdWRlIDxuZXQvcHJvdG9jb2wuaD4NCiAjaW5jbHVkZSA8bmV0
L3RjcC5oPg0KKyNpbmNsdWRlIDxuZXQvaXBfbWFzcV9hcHBoZWxwLmg+DQog
DQogLyogI2RlZmluZSBJUF9NQVNRX05ERUJVRyAqLw0KICNpbmNsdWRlIDxu
ZXQvaXBfbWFzcS5oPg0KQEAgLTU2LDE1ICs1NywyMiBAQA0KICAqIExpc3Qg
b2YgcG9ydHMgKHVwIHRvIE1BWF9NQVNRX0FQUF9QT1JUUykgdG8gYmUgaGFu
ZGxlZCBieSBoZWxwZXINCiAgKiBGaXJzdCBwb3J0IGlzIHNldCB0byB0aGUg
ZGVmYXVsdCBwb3J0Lg0KICAqLw0KLXN0YXRpYyBpbnQgcG9ydHNbTUFYX01B
U1FfQVBQX1BPUlRTXSA9IHsyMX07IC8qIEkgcmVseSBvbiB0aGUgdHJhaWxp
bmcgaXRlbXMgYmVpbmcgc2V0IHRvIHplcm8gKi8NCi1zdHJ1Y3QgaXBfbWFz
cV9hcHAgKm1hc3FfaW5jYXJuYXRpb25zW01BWF9NQVNRX0FQUF9QT1JUU107
DQorI2lmZGVmIE1PRFVMRQ0KKwkjZGVmaW5lIFBPUlRTIHBvcnRzDQorCSNk
ZWZpbmUgSU5DQVJOQVRJT05TIGluY2FybmF0aW9ucw0KKyNlbHNlDQorCSNk
ZWZpbmUgUE9SVFMgaXBfbWFzcV9mdHBfcG9ydHMNCisJI2RlZmluZSBJTkNB
Uk5BVElPTlMgaXBfbWFzcV9mdHBfaW5jYXJuYXRpb25zDQorI2VuZGlmDQor
aW50IFBPUlRTW01BWF9NQVNRX0FQUF9QT1JUU109ezIxfTsgLyogSSByZWx5
IG9uIHRoZSB0cmFpbGluZyBpdGVtcyBiZWluZyBzZXQgdG8gemVybyAqLw0K
K3N0cnVjdCBpcF9tYXNxX2FwcCAqSU5DQVJOQVRJT05TW01BWF9NQVNRX0FQ
UF9QT1JUU107DQogDQogLyoNCiAgKglEZWJ1ZyBsZXZlbA0KICAqLw0KIHN0
YXRpYyBpbnQgZGVidWc9MDsNCiANCi1NT0RVTEVfUEFSTShwb3J0cywgIjEt
IiBfX01PRFVMRV9TVFJJTkcoTUFYX01BU1FfQVBQX1BPUlRTKSAiaSIpOw0K
K01PRFVMRV9QQVJNKFBPUlRTLCAiMS0iIF9fTU9EVUxFX1NUUklORyhNQVhf
TUFTUV9BUFBfUE9SVFMpICJpIik7DQogTU9EVUxFX1BBUk0oZGVidWcsICJp
Iik7DQogDQogLyoJRHVtbXkgdmFyaWFibGUgKi8NCkBAIC0zMTgsNzMgKzMy
Niw2IEBADQogICAgICAgICBtYXNxX2Z0cF9pbiwgICAgICAgICAgICAvKiBw
a3RfaW4gKi8NCiB9Ow0KIA0KLS8qDQotICogCWlwX21hc3FfZnRwIGluaXRp
YWxpemF0aW9uDQotICovDQotDQotX19pbml0ZnVuYyhpbnQgaXBfbWFzcV9m
dHBfaW5pdCh2b2lkKSkNCi17DQotCWludCBpLCBqOw0KLQ0KLQlmb3IgKGk9
MDsgKGk8TUFYX01BU1FfQVBQX1BPUlRTKTsgaSsrKSB7DQotCQlpZiAocG9y
dHNbaV0pIHsNCi0JCQlpZiAoKG1hc3FfaW5jYXJuYXRpb25zW2ldID0ga21h
bGxvYyhzaXplb2Yoc3RydWN0IGlwX21hc3FfYXBwKSwNCi0JCQkJCQkJICAg
IEdGUF9LRVJORUwpKSA9PSBOVUxMKQ0KLQkJCQlyZXR1cm4gLUVOT01FTTsN
Ci0JCQltZW1jcHkobWFzcV9pbmNhcm5hdGlvbnNbaV0sICZpcF9tYXNxX2Z0
cCwgc2l6ZW9mKHN0cnVjdCBpcF9tYXNxX2FwcCkpOw0KLQkJCWlmICgoaiA9
IHJlZ2lzdGVyX2lwX21hc3FfYXBwKG1hc3FfaW5jYXJuYXRpb25zW2ldLCAN
Ci0JCQkJCQkgICAgICBJUFBST1RPX1RDUCwgDQotCQkJCQkJICAgICAgcG9y
dHNbaV0pKSkgew0KLQkJCQlyZXR1cm4gajsNCi0JCQl9DQotCQkJSVBfTUFT
UV9ERUJVRygxLWRlYnVnLCAiRnRwOiBsb2FkZWQgc3VwcG9ydCBvbiBwb3J0
WyVkXSA9ICVkXG4iLA0KLQkJCSAgICAgICBpLCBwb3J0c1tpXSk7DQotCQl9
IGVsc2Ugew0KLQkJCS8qIFRvIGJlIHNhZmUsIGZvcmNlIHRoZSBpbmNhcm5h
dGlvbiB0YWJsZSBlbnRyeSB0byBOVUxMICovDQotCQkJbWFzcV9pbmNhcm5h
dGlvbnNbaV0gPSBOVUxMOw0KLQkJfQ0KLQl9DQotCXJldHVybiAwOw0KLX0N
Ci0NCi0vKg0KLSAqIAlpcF9tYXNxX2Z0cCBmaW4uDQotICovDQotDQotaW50
IGlwX21hc3FfZnRwX2RvbmUodm9pZCkNCi17DQotCWludCBpLCBqLCBrOw0K
LQ0KLQlrPTA7DQotCWZvciAoaT0wOyAoaTxNQVhfTUFTUV9BUFBfUE9SVFMp
OyBpKyspIHsNCi0JCWlmIChtYXNxX2luY2FybmF0aW9uc1tpXSkgew0KLQkJ
CWlmICgoaiA9IHVucmVnaXN0ZXJfaXBfbWFzcV9hcHAobWFzcV9pbmNhcm5h
dGlvbnNbaV0pKSkgew0KLQkJCQlrID0gajsNCi0JCQl9IGVsc2Ugew0KLQkJ
CQlrZnJlZShtYXNxX2luY2FybmF0aW9uc1tpXSk7DQotCQkJCW1hc3FfaW5j
YXJuYXRpb25zW2ldID0gTlVMTDsNCi0JCQkJSVBfTUFTUV9ERUJVRygxLWRl
YnVnLCAiRnRwOiB1bmxvYWRlZCBzdXBwb3J0IG9uIHBvcnRbJWRdID0gJWRc
biIsDQotCQkJCSAgICAgICBpLCBwb3J0c1tpXSk7DQotCQkJfQ0KLQkJfQ0K
LQl9DQotCXJldHVybiBrOw0KLX0NCi0NCi0jaWZkZWYgTU9EVUxFDQotRVhQ
T1JUX05PX1NZTUJPTFM7DQotDQotaW50IGluaXRfbW9kdWxlKHZvaWQpDQot
ew0KLSAgICAgICAgaWYgKGlwX21hc3FfZnRwX2luaXQoKSAhPSAwKQ0KLSAg
ICAgICAgICAgICAgICByZXR1cm4gLUVJTzsNCi0gICAgICAgIHJldHVybiAw
Ow0KLX0NCi0NCi12b2lkIGNsZWFudXBfbW9kdWxlKHZvaWQpDQotew0KLSAg
ICAgICAgaWYgKGlwX21hc3FfZnRwX2RvbmUoKSAhPSAwKQ0KLSAgICAgICAg
ICAgICAgICBwcmludGsoS0VSTl9JTkZPICJpcF9tYXNxX2Z0cDogY2FuJ3Qg
cmVtb3ZlIG1vZHVsZSIpOw0KLX0NCiANCi0jZW5kaWYgLyogTU9EVUxFICov
DQorSVBNX0lOSVRfTU9EVUxFKGZ0cCxJUFBST1RPX1RDUCxGaWxlIFRyYW5z
ZmVyIFByb3RvY29sKTsNCitJUE1fRU5EX01PRFVMRShmdHAsaXBfbWFzcV9m
dHApOw0KZGlmZiAtcnVOIGxpbnV4L25ldC9pcHY0L2lwX21hc3FfaXJjLmMg
Mi4xLjkyL25ldC9pcHY0L2lwX21hc3FfaXJjLmMNCi0tLSBsaW51eC9uZXQv
aXB2NC9pcF9tYXNxX2lyYy5jCU1vbiBNYXIgMzAgMTU6Mjg6NDAgMTk5OA0K
KysrIDIuMS45Mi9uZXQvaXB2NC9pcF9tYXNxX2lyYy5jCU1vbiBNYXIgMzAg
MTU6MzU6NDEgMTk5OA0KQEAgLTUyLDIwICs1MiwzMCBAQA0KICNpbmNsdWRl
IDxuZXQvcHJvdG9jb2wuaD4NCiAjaW5jbHVkZSA8bmV0L3RjcC5oPg0KICNp
bmNsdWRlIDxuZXQvaXBfbWFzcS5oPg0KKyNpbmNsdWRlIDxuZXQvaXBfbWFz
cV9hcHBoZWxwLmg+DQogDQogDQogLyogDQogICogTGlzdCBvZiBwb3J0cyAo
dXAgdG8gTUFYX01BU1FfQVBQX1BPUlRTKSB0byBiZSBoYW5kbGVkIGJ5IGhl
bHBlcg0KICAqIEZpcnN0IHBvcnQgaXMgc2V0IHRvIHRoZSBkZWZhdWx0IHBv
cnQuDQogICovDQotaW50IHBvcnRzW01BWF9NQVNRX0FQUF9QT1JUU10gPSB7
NjY2N307IC8qIEkgcmVseSBvbiB0aGUgdHJhaWxpbmcgaXRlbXMgYmVpbmcg
c2V0IHRvIHplcm8gKi8NCi1zdHJ1Y3QgaXBfbWFzcV9hcHAgKm1hc3FfaW5j
YXJuYXRpb25zW01BWF9NQVNRX0FQUF9QT1JUU107DQorI2lmZGVmIE1PRFVM
RQ0KKwkjZGVmaW5lIFBPUlRTIHBvcnRzDQorCSNkZWZpbmUgSU5DQVJOQVRJ
T05TIGluY2FybmF0aW9ucw0KKyNlbHNlDQorCSNkZWZpbmUgUE9SVFMgaXBf
bWFzcV9pcmNfcG9ydHMNCisJI2RlZmluZSBJTkNBUk5BVElPTlMgaXBfbWFz
cV9pcmNfaW5jYXJuYXRpb25zDQorI2VuZGlmDQoraW50IFBPUlRTW01BWF9N
QVNRX0FQUF9QT1JUU109ezY2Njd9OyAvKiBJIHJlbHkgb24gdGhlIHRyYWls
aW5nIGl0ZW1zIGJlaW5nIHNldCB0byB6ZXJvICovDQorc3RydWN0IGlwX21h
c3FfYXBwICpJTkNBUk5BVElPTlNbTUFYX01BU1FfQVBQX1BPUlRTXTsNCisN
CisNCiAvKg0KICAqCURlYnVnIGxldmVsDQogICovDQogc3RhdGljIGludCBk
ZWJ1Zz0wOw0KIA0KLU1PRFVMRV9QQVJNKHBvcnRzLCAiMS0iIF9fTU9EVUxF
X1NUUklORyhNQVhfTUFTUV9BUFBfUE9SVFMpICJpIik7DQorTU9EVUxFX1BB
Uk0oUE9SVFMsICIxLSIgX19NT0RVTEVfU1RSSU5HKE1BWF9NQVNRX0FQUF9Q
T1JUUykgImkiKTsNCiBNT0RVTEVfUEFSTShkZWJ1ZywgImkiKTsNCiANCiAN
CkBAIC0yOTMsNzUgKzMwMyw1IEBADQogICAgICAgICBOVUxMICAgICAgICAg
ICAgICAgICAgICAvKiBwa3RfaW4gKi8NCiB9Ow0KIA0KLS8qDQotICogCWlw
X21hc3FfaXJjIGluaXRpYWxpemF0aW9uDQotICovDQotDQotX19pbml0ZnVu
YyhpbnQgaXBfbWFzcV9pcmNfaW5pdCh2b2lkKSkNCi17DQotCWludCBpLCBq
Ow0KLQ0KLQlmb3IgKGk9MDsgKGk8TUFYX01BU1FfQVBQX1BPUlRTKTsgaSsr
KSB7DQotCQlpZiAocG9ydHNbaV0pIHsNCi0JCQlpZiAoKG1hc3FfaW5jYXJu
YXRpb25zW2ldID0ga21hbGxvYyhzaXplb2Yoc3RydWN0IGlwX21hc3FfYXBw
KSwNCi0JCQkJCQkJICAgIEdGUF9LRVJORUwpKSA9PSBOVUxMKQ0KLQkJCQly
ZXR1cm4gLUVOT01FTTsNCi0JCQltZW1jcHkobWFzcV9pbmNhcm5hdGlvbnNb
aV0sICZpcF9tYXNxX2lyYywgc2l6ZW9mKHN0cnVjdCBpcF9tYXNxX2FwcCkp
Ow0KLQkJCWlmICgoaiA9IHJlZ2lzdGVyX2lwX21hc3FfYXBwKG1hc3FfaW5j
YXJuYXRpb25zW2ldLCANCi0JCQkJCQkgICAgICBJUFBST1RPX1RDUCwgDQot
CQkJCQkJICAgICAgcG9ydHNbaV0pKSkgew0KLQkJCQlyZXR1cm4gajsNCi0J
CQl9DQotCQkJSVBfTUFTUV9ERUJVRygxLWRlYnVnLA0KLQkJCQkJIklyYzog
bG9hZGVkIHN1cHBvcnQgb24gcG9ydFslZF0gPSAlZFxuIiwNCi0JCQkgICAg
ICAgaSwgcG9ydHNbaV0pOw0KLQkJfSBlbHNlIHsNCi0JCQkvKiBUbyBiZSBz
YWZlLCBmb3JjZSB0aGUgaW5jYXJuYXRpb24gdGFibGUgZW50cnkgdG8gTlVM
TCAqLw0KLQkJCW1hc3FfaW5jYXJuYXRpb25zW2ldID0gTlVMTDsNCi0JCX0N
Ci0JfQ0KLQlyZXR1cm4gMDsNCi19DQotDQotLyoNCi0gKiAJaXBfbWFzcV9p
cmMgZmluLg0KLSAqLw0KLQ0KLWludCBpcF9tYXNxX2lyY19kb25lKHZvaWQp
DQotew0KLQlpbnQgaSwgaiwgazsNCi0NCi0Jaz0wOw0KLQlmb3IgKGk9MDsg
KGk8TUFYX01BU1FfQVBQX1BPUlRTKTsgaSsrKSB7DQotCQlpZiAobWFzcV9p
bmNhcm5hdGlvbnNbaV0pIHsNCi0JCQlpZiAoKGogPSB1bnJlZ2lzdGVyX2lw
X21hc3FfYXBwKG1hc3FfaW5jYXJuYXRpb25zW2ldKSkpIHsNCi0JCQkJayA9
IGo7DQotCQkJfSBlbHNlIHsNCi0JCQkJa2ZyZWUobWFzcV9pbmNhcm5hdGlv
bnNbaV0pOw0KLQkJCQltYXNxX2luY2FybmF0aW9uc1tpXSA9IE5VTEw7DQot
CQkJCUlQX01BU1FfREVCVUcoMS1kZWJ1ZywgIklyYzogdW5sb2FkZWQgc3Vw
cG9ydCBvbiBwb3J0WyVkXSA9ICVkXG4iLA0KLQkJCQkgICAgICAgaSwgcG9y
dHNbaV0pOw0KLQkJCX0NCi0JCX0NCi0JfQ0KLQlyZXR1cm4gazsNCi19DQot
DQotDQotI2lmZGVmIE1PRFVMRQ0KLUVYUE9SVF9OT19TWU1CT0xTOw0KLQ0K
LWludCBpbml0X21vZHVsZSh2b2lkKQ0KLXsNCi0gICAgICAgIGlmIChpcF9t
YXNxX2lyY19pbml0KCkgIT0gMCkNCi0gICAgICAgICAgICAgICAgcmV0dXJu
IC1FSU87DQotICAgICAgICByZXR1cm4gMDsNCi19DQotDQotdm9pZCBjbGVh
bnVwX21vZHVsZSh2b2lkKQ0KLXsNCi0gICAgICAgIGlmIChpcF9tYXNxX2ly
Y19kb25lKCkgIT0gMCkNCi0gICAgICAgICAgICAgICAgcHJpbnRrKEtFUk5f
SU5GTyAiaXBfbWFzcV9pcmM6IGNhbid0IHJlbW92ZSBtb2R1bGUiKTsNCi19
DQotDQotI2VuZGlmIC8qIE1PRFVMRSAqLw0KK0lQTV9JTklUX01PRFVMRShp
cmMsSVBQUk9UT19UQ1AsSW50ZXJuZXQgUmVsYXkgQ2hhdCk7DQorSVBNX0VO
RF9NT0RVTEUoaXJjLGlwX21hc3FfaXJjKTsNCmRpZmYgLXJ1TiBsaW51eC9u
ZXQvaXB2NC9pcF9tYXNxX3F1YWtlLmMgMi4xLjkyL25ldC9pcHY0L2lwX21h
c3FfcXVha2UuYw0KLS0tIGxpbnV4L25ldC9pcHY0L2lwX21hc3FfcXVha2Uu
YwlNb24gTWFyIDMwIDE1OjI4OjQwIDE5OTgNCisrKyAyLjEuOTIvbmV0L2lw
djQvaXBfbWFzcV9xdWFrZS5jCU1vbiBNYXIgMzAgMTU6NDE6MDggMTk5OA0K
QEAgLTMyLDYgKzMyLDcgQEANCiAjaW5jbHVkZSA8bmV0L3Byb3RvY29sLmg+
DQogI2luY2x1ZGUgPG5ldC91ZHAuaD4NCiAjaW5jbHVkZSA8bmV0L2lwX21h
c3EuaD4NCisjaW5jbHVkZSA8bmV0L2lwX21hc3FfYXBwaGVscC5oPg0KIA0K
ICNkZWZpbmUgREVCVUdfQ09ORklHX0lQX01BU1FfUVVBS0UgMA0KIA0KQEAg
LTQ3LDYgKzQ4LDIxIEBADQogCWNoYXIJY2xfY29ubmVjdDsNCiB9Ow0KIA0K
KyNpZmRlZiBNT0RVTEUNCisJI2RlZmluZSBQT1JUUyBwb3J0cw0KKwkjZGVm
aW5lIElOQ0FSTkFUSU9OUyBpbmNhcm5hdGlvbnMNCisjZWxzZQ0KKwkjZGVm
aW5lIFBPUlRTIGlwX21hc3FfcXVha2VfcG9ydHMNCisJI2RlZmluZSBJTkNB
Uk5BVElPTlMgaXBfbWFzcV9xdWFrZV9pbmNhcm5hdGlvbnMNCisjZW5kaWYN
CitpbnQgUE9SVFNbTUFYX01BU1FfQVBQX1BPUlRTXT17MjYwMDAsMjcwMDB9
OyAvKiBJIHJlbHkgb24gdGhlIHRyYWlsaW5nIGl0ZW1zIGJlaW5nIHNldCB0
byB6ZXJvICovDQorc3RydWN0IGlwX21hc3FfYXBwICpJTkNBUk5BVElPTlNb
TUFYX01BU1FfQVBQX1BPUlRTXTsNCisNCitzdGF0aWMgaW50IGRlYnVnPTA7
DQorDQorTU9EVUxFX1BBUk0oUE9SVFMsICIxLSIgX19NT0RVTEVfU1RSSU5H
KE1BWF9NQVNRX0FQUF9QT1JUUykgImkiKTsNCitNT0RVTEVfUEFSTShkZWJ1
ZywgImkiKTsNCisNCiBzdGF0aWMgaW50DQogbWFzcV9xdWFrZV9pbml0XzEg
KHN0cnVjdCBpcF9tYXNxX2FwcCAqbWFwcCwgc3RydWN0IGlwX21hc3EgKm1z
KQ0KIHsNCkBAIC0yODEsNDIgKzI5Nyw2IEBADQogICAgICAgICBtYXNxX3F1
YWtlX2luICAgICAgICAgICAvKiBwa3RfaW4gKi8NCiB9Ow0KIA0KLS8qDQot
ICogCWlwX21hc3FfcXVha2UgaW5pdGlhbGl6YXRpb24NCi0gKi8NCi0NCi1f
X2luaXRmdW5jKGludCBpcF9tYXNxX3F1YWtlX2luaXQodm9pZCkpDQotew0K
LSAgICAgICAgcmV0dXJuIChyZWdpc3Rlcl9pcF9tYXNxX2FwcCgmaXBfbWFz
cV9xdWFrZSwgSVBQUk9UT19VRFAsIDI2MDAwKSArDQotCQlyZWdpc3Rlcl9p
cF9tYXNxX2FwcCgmaXBfbWFzcV9xdWFrZW5ldywgSVBQUk9UT19VRFAsIDI3
MDAwKSk7DQotfQ0KLQ0KLS8qDQotICogCWlwX21hc3FfcXVha2UgZmluLg0K
LSAqLw0KLQ0KLWludCBpcF9tYXNxX3F1YWtlX2RvbmUodm9pZCkNCi17DQot
ICAgICAgICByZXR1cm4gKHVucmVnaXN0ZXJfaXBfbWFzcV9hcHAoJmlwX21h
c3FfcXVha2UpICsNCi0gICAgICAgICAgICAgICAgdW5yZWdpc3Rlcl9pcF9t
YXNxX2FwcCgmaXBfbWFzcV9xdWFrZW5ldykpOw0KLX0NCi0NCi0jaWZkZWYg
TU9EVUxFDQotRVhQT1JUX05PX1NZTUJPTFM7DQotDQotaW50IGluaXRfbW9k
dWxlKHZvaWQpDQotew0KLSAgICAgICAgaWYgKGlwX21hc3FfcXVha2VfaW5p
dCgpICE9IDApDQotICAgICAgICAgICAgICAgIHJldHVybiAtRUlPOw0KLSAg
ICAgICAgcmV0dXJuIDA7DQotfQ0KLQ0KLXZvaWQgY2xlYW51cF9tb2R1bGUo
dm9pZCkNCi17DQotICAgICAgICBpZiAoaXBfbWFzcV9xdWFrZV9kb25lKCkg
IT0gMCkNCi0gICAgICAgICAgICAgICAgcHJpbnRrKCJpcF9tYXNxX3F1YWtl
OiBjYW4ndCByZW1vdmUgbW9kdWxlIik7DQotfQ0KLQ0KLSNlbmRpZiAvKiBN
T0RVTEUgKi8NCi0NCitJUE1fSU5JVF9NT0RVTEUocXVha2UsSVBQUk9UT19V
RFAsUXVha2UpOw0KK0lQTV9FTkRfTU9EVUxFKHF1YWtlLGlwX21hc3FfcXVh
a2UpOw0KIA0KZGlmZiAtcnVOIGxpbnV4L25ldC9pcHY0L2lwX21hc3FfcmF1
ZGlvLmMgMi4xLjkyL25ldC9pcHY0L2lwX21hc3FfcmF1ZGlvLmMNCi0tLSBs
aW51eC9uZXQvaXB2NC9pcF9tYXNxX3JhdWRpby5jCU1vbiBNYXIgMzAgMTU6
Mjk6MTEgMTk5OA0KKysrIDIuMS45Mi9uZXQvaXB2NC9pcF9tYXNxX3JhdWRp
by5jCU1vbiBNYXIgMzAgMTU6MzU6NTQgMTk5OA0KQEAgLTc0LDYgKzc0LDcg
QEANCiAjaW5jbHVkZSA8bmV0L3Byb3RvY29sLmg+DQogI2luY2x1ZGUgPG5l
dC90Y3AuaD4NCiAjaW5jbHVkZSA8bmV0L2lwX21hc3EuaD4NCisjaW5jbHVk
ZSA8bmV0L2lwX21hc3FfYXBwaGVscC5oPg0KIA0KIC8qDQogI2lmbmRlZiBE
RUJVR19DT05GSUdfSVBfTUFTUV9SQVVESU8NCkBAIC0xMDQsOCArMTA1LDE1
IEBADQogICogTGlzdCBvZiBwb3J0cyAodXAgdG8gTUFYX01BU1FfQVBQX1BP
UlRTKSB0byBiZSBoYW5kbGVkIGJ5IGhlbHBlcg0KICAqIEZpcnN0IHBvcnQg
aXMgc2V0IHRvIHRoZSBkZWZhdWx0IHBvcnQuDQogICovDQotaW50IHBvcnRz
W01BWF9NQVNRX0FQUF9QT1JUU10gPSB7NTU0LCA3MDcwLCAwfTsgLyogSSBy
ZWx5IG9uIHRoZSB0cmFpbGluZyBpdGVtcyBiZWluZyBzZXQgdG8gemVybyAq
Lw0KLXN0cnVjdCBpcF9tYXNxX2FwcCAqbWFzcV9pbmNhcm5hdGlvbnNbTUFY
X01BU1FfQVBQX1BPUlRTXTsNCisjaWZkZWYgTU9EVUxFDQorCSNkZWZpbmUg
UE9SVFMgcG9ydHMNCisJI2RlZmluZSBJTkNBUk5BVElPTlMgaW5jYXJuYXRp
b25zDQorI2Vsc2UNCisJI2RlZmluZSBQT1JUUyBpcF9tYXNxX3JhdWRpb19w
b3J0cw0KKwkjZGVmaW5lIElOQ0FSTkFUSU9OUyBpcF9tYXNxX3JhdWRpb19p
bmNhcm5hdGlvbnMNCisjZW5kaWYNCitpbnQgUE9SVFNbTUFYX01BU1FfQVBQ
X1BPUlRTXT17NTU0LDcwNzB9OyAvKiBJIHJlbHkgb24gdGhlIHRyYWlsaW5n
IGl0ZW1zIGJlaW5nIHNldCB0byB6ZXJvICovDQorc3RydWN0IGlwX21hc3Ff
YXBwICpJTkNBUk5BVElPTlNbTUFYX01BU1FfQVBQX1BPUlRTXTsNCiANCiAv
Kg0KICAqCURlYnVnIGxldmVsDQpAQCAtNTA3LDY5ICs1MTUsNSBAQA0KICAq
IAlpcF9tYXNxX3JhdWRpbyBpbml0aWFsaXphdGlvbg0KICAqLw0KIA0KLV9f
aW5pdGZ1bmMoaW50IGlwX21hc3FfcmF1ZGlvX2luaXQodm9pZCkpDQotew0K
LQlpbnQgaSwgajsNCi0NCi0JZm9yIChpPTA7IChpPE1BWF9NQVNRX0FQUF9Q
T1JUUyk7IGkrKykgew0KLQkJaWYgKHBvcnRzW2ldKSB7DQotCQkJaWYgKCht
YXNxX2luY2FybmF0aW9uc1tpXSA9IGttYWxsb2Moc2l6ZW9mKHN0cnVjdCBp
cF9tYXNxX2FwcCksDQotCQkJCQkJCSAgICBHRlBfS0VSTkVMKSkgPT0gTlVM
TCkNCi0JCQkJcmV0dXJuIC1FTk9NRU07DQotCQkJbWVtY3B5KG1hc3FfaW5j
YXJuYXRpb25zW2ldLCAmaXBfbWFzcV9yYXVkaW8sIHNpemVvZihzdHJ1Y3Qg
aXBfbWFzcV9hcHApKTsNCi0JCQlpZiAoKGogPSByZWdpc3Rlcl9pcF9tYXNx
X2FwcChtYXNxX2luY2FybmF0aW9uc1tpXSwgDQotCQkJCQkJICAgICAgSVBQ
Uk9UT19UQ1AsIA0KLQkJCQkJCSAgICAgIHBvcnRzW2ldKSkpIHsNCi0JCQkJ
cmV0dXJuIGo7DQotCQkJfQ0KLQkJCUlQX01BU1FfREVCVUcoMS1kZWJ1Zywg
IlJlYWxBdWRpbzogbG9hZGVkIHN1cHBvcnQgb24gcG9ydFslZF0gPSAlZFxu
IiwNCi0JCQkgICAgICAgaSwgcG9ydHNbaV0pOw0KLQkJfSBlbHNlIHsNCi0J
CQkvKiBUbyBiZSBzYWZlLCBmb3JjZSB0aGUgaW5jYXJuYXRpb24gdGFibGUg
ZW50cnkgdG8gTlVMTCAqLw0KLQkJCW1hc3FfaW5jYXJuYXRpb25zW2ldID0g
TlVMTDsNCi0JCX0NCi0JfQ0KLQlyZXR1cm4gMDsNCi19DQotDQotLyoNCi0g
KiAJaXBfbWFzcV9yYXVkaW8gZmluLg0KLSAqLw0KLQ0KLWludCBpcF9tYXNx
X3JhdWRpb19kb25lKHZvaWQpDQotew0KLQlpbnQgaSwgaiwgazsNCi0NCi0J
az0wOw0KLQlmb3IgKGk9MDsgKGk8TUFYX01BU1FfQVBQX1BPUlRTKTsgaSsr
KSB7DQotCQlpZiAobWFzcV9pbmNhcm5hdGlvbnNbaV0pIHsNCi0JCQlpZiAo
KGogPSB1bnJlZ2lzdGVyX2lwX21hc3FfYXBwKG1hc3FfaW5jYXJuYXRpb25z
W2ldKSkpIHsNCi0JCQkJayA9IGo7DQotCQkJfSBlbHNlIHsNCi0JCQkJa2Zy
ZWUobWFzcV9pbmNhcm5hdGlvbnNbaV0pOw0KLQkJCQltYXNxX2luY2FybmF0
aW9uc1tpXSA9IE5VTEw7DQotCQkJCUlQX01BU1FfREVCVUcoMS1kZWJ1Zywg
IlJlYWxBdWRpbzogdW5sb2FkZWQgc3VwcG9ydCBvbiBwb3J0WyVkXSA9ICVk
XG4iLA0KLQkJCQkgICAgICAgaSwgcG9ydHNbaV0pOw0KLQkJCX0NCi0JCX0N
Ci0JfQ0KLQlyZXR1cm4gazsNCi19DQotDQotI2lmZGVmIE1PRFVMRQ0KLUVY
UE9SVF9OT19TWU1CT0xTOw0KLQ0KLWludCBpbml0X21vZHVsZSh2b2lkKQ0K
LXsNCi0gICAgICAgIGlmIChpcF9tYXNxX3JhdWRpb19pbml0KCkgIT0gMCkN
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIC1FSU87DQotICAgICAgICByZXR1
cm4gMDsNCi19DQotDQotdm9pZCBjbGVhbnVwX21vZHVsZSh2b2lkKQ0KLXsN
Ci0gICAgICAgIGlmIChpcF9tYXNxX3JhdWRpb19kb25lKCkgIT0gMCkNCi0g
ICAgICAgICAgICAgICAgcHJpbnRrKEtFUk5fSU5GTyAiaXBfbWFzcV9yYXVk
aW86IGNhbid0IHJlbW92ZSBtb2R1bGUiKTsNCi19DQotDQotI2VuZGlmIC8q
IE1PRFVMRSAqLw0KK0lQTV9JTklUX01PRFVMRShyYXVkaW8sSVBQUk9UT19U
Q1AsUmVhbCBBdWRpbyk7DQorSVBNX0VORF9NT0RVTEUocmF1ZGlvLGlwX21h
c3FfcmF1ZGlvKTsNCmRpZmYgLXJ1TiBsaW51eC9uZXQvaXB2NC9pcF9tYXNx
X3Zkb2xpdmUuYyAyLjEuOTIvbmV0L2lwdjQvaXBfbWFzcV92ZG9saXZlLmMN
Ci0tLSBsaW51eC9uZXQvaXB2NC9pcF9tYXNxX3Zkb2xpdmUuYwlXZWQgRGVj
IDEwIDEyOjQ1OjE2IDE5OTcNCisrKyAyLjEuOTIvbmV0L2lwdjQvaXBfbWFz
cV92ZG9saXZlLmMJTW9uIE1hciAzMCAxNTozNTo1NCAxOTk4DQpAQCAtMzMs
NiArMzMsNyBAQA0KICNpbmNsdWRlIDxuZXQvcHJvdG9jb2wuaD4NCiAjaW5j
bHVkZSA8bmV0L3RjcC5oPg0KICNpbmNsdWRlIDxuZXQvaXBfbWFzcS5oPg0K
KyNpbmNsdWRlIDxuZXQvaXBfbWFzcV9hcHBoZWxwLmg+DQogDQogc3RydWN0
IHZkb2xpdmVfcHJpdl9kYXRhIHsNCiAJLyogUG9ydHMgdXNlZCAqLw0KQEAg
LTQ2LDE1ICs0NywyMyBAQA0KICAqIExpc3Qgb2YgcG9ydHMgKHVwIHRvIE1B
WF9NQVNRX0FQUF9QT1JUUykgdG8gYmUgaGFuZGxlZCBieSBoZWxwZXINCiAg
KiBGaXJzdCBwb3J0IGlzIHNldCB0byB0aGUgZGVmYXVsdCBwb3J0Lg0KICAq
Lw0KLXN0YXRpYyBpbnQgcG9ydHNbTUFYX01BU1FfQVBQX1BPUlRTXSA9IHs3
MDAwfTsgLyogSSByZWx5IG9uIHRoZSB0cmFpbGluZyBpdGVtcyBiZWluZyBz
ZXQgdG8gemVybyAqLw0KLXN0cnVjdCBpcF9tYXNxX2FwcCAqbWFzcV9pbmNh
cm5hdGlvbnNbTUFYX01BU1FfQVBQX1BPUlRTXTsNCisjaWZkZWYgTU9EVUxF
DQorICAgICAgICAjZGVmaW5lIFBPUlRTIHBvcnRzDQorICAgICAgICAjZGVm
aW5lIElOQ0FSTkFUSU9OUyBpbmNhcm5hdGlvbnMNCisjZWxzZQ0KKyAgICAg
ICAgI2RlZmluZSBQT1JUUyBpcF9tYXNxX3Zkb2xpdmVfcG9ydHMNCisgICAg
ICAgICNkZWZpbmUgSU5DQVJOQVRJT05TIGlwX21hc3FfdmRvbGl2ZV9pbmNh
cm5hdGlvbnMNCisjZW5kaWYNCitpbnQgUE9SVFNbTUFYX01BU1FfQVBQX1BP
UlRTXT17NzAwMH07IC8qIEkgcmVseSBvbiB0aGUgdHJhaWxpbmcgaXRlbXMg
YmVpbmcgc2V0IHRvIHplcm8gKi8NCitzdHJ1Y3QgaXBfbWFzcV9hcHAgKklO
Q0FSTkFUSU9OU1tNQVhfTUFTUV9BUFBfUE9SVFNdOw0KKw0KIA0KIC8qDQog
ICogICAgIERlYnVnIGxldmVsDQogICovDQogc3RhdGljIGludCBkZWJ1Zz0w
Ow0KIA0KLU1PRFVMRV9QQVJNKHBvcnRzLCAiMS0iIF9fTU9EVUxFX1NUUklO
RyhNQVhfTUFTUV9BUFBfUE9SVFMpICJpIik7DQorTU9EVUxFX1BBUk0oUE9S
VFMsICIxLSIgX19NT0RVTEVfU1RSSU5HKE1BWF9NQVNRX0FQUF9QT1JUUykg
ImkiKTsNCiBNT0RVTEVfUEFSTShkZWJ1ZywgImkiKTsNCiANCiBzdGF0aWMg
aW50DQpAQCAtMjIwLDcyICsyMjksNiBAQA0KICAgICAgICAgTlVMTCAgICAg
ICAgICAgICAgICAgICAgLyogcGt0X2luICovDQogfTsNCiANCi0vKg0KLSAq
IAlpcF9tYXNxX3Zkb2xpdmUgaW5pdGlhbGl6YXRpb24NCi0gKi8NCi0NCi1f
X2luaXRmdW5jKGludCBpcF9tYXNxX3Zkb2xpdmVfaW5pdCh2b2lkKSkNCi17
DQotCWludCBpLCBqOw0KLQ0KLQlmb3IgKGk9MDsgKGk8TUFYX01BU1FfQVBQ
X1BPUlRTKTsgaSsrKSB7DQotCQlpZiAocG9ydHNbaV0pIHsNCi0JCQlpZiAo
KG1hc3FfaW5jYXJuYXRpb25zW2ldID0ga21hbGxvYyhzaXplb2Yoc3RydWN0
IGlwX21hc3FfYXBwKSwNCi0JCQkJCQkJICAgIEdGUF9LRVJORUwpKSA9PSBO
VUxMKQ0KLQkJCQlyZXR1cm4gLUVOT01FTTsNCi0JCQltZW1jcHkobWFzcV9p
bmNhcm5hdGlvbnNbaV0sICZpcF9tYXNxX3Zkb2xpdmUsIHNpemVvZihzdHJ1
Y3QgaXBfbWFzcV9hcHApKTsNCi0JCQlpZiAoKGogPSByZWdpc3Rlcl9pcF9t
YXNxX2FwcChtYXNxX2luY2FybmF0aW9uc1tpXSwgDQotCQkJCQkJICAgICAg
SVBQUk9UT19UQ1AsIA0KLQkJCQkJCSAgICAgIHBvcnRzW2ldKSkpIHsNCi0J
CQkJcmV0dXJuIGo7DQotCQkJfQ0KLQkJCUlQX01BU1FfREVCVUcoMS1kZWJ1
ZywgIlJlYWxBdWRpbzogbG9hZGVkIHN1cHBvcnQgb24gcG9ydFslZF0gPSAl
ZFxuIiwgaSwgcG9ydHNbaV0pOw0KLQkJfSBlbHNlIHsNCi0JCQkvKiBUbyBi
ZSBzYWZlLCBmb3JjZSB0aGUgaW5jYXJuYXRpb24gdGFibGUgZW50cnkgdG8g
TlVMTCAqLw0KLQkJCW1hc3FfaW5jYXJuYXRpb25zW2ldID0gTlVMTDsNCi0J
CX0NCi0JfQ0KLQlyZXR1cm4gMDsNCi19DQotDQotLyoNCi0gKiAJaXBfbWFz
cV92ZG9saXZlIGZpbi4NCi0gKi8NCi0NCi1pbnQgaXBfbWFzcV92ZG9saXZl
X2RvbmUodm9pZCkNCi17DQotCWludCBpLCBqLCBrOw0KLQ0KLQlrPTA7DQot
CWZvciAoaT0wOyAoaTxNQVhfTUFTUV9BUFBfUE9SVFMpOyBpKyspIHsNCi0J
CWlmIChtYXNxX2luY2FybmF0aW9uc1tpXSkgew0KLQkJCWlmICgoaiA9IHVu
cmVnaXN0ZXJfaXBfbWFzcV9hcHAobWFzcV9pbmNhcm5hdGlvbnNbaV0pKSkg
ew0KLQkJCQlrID0gajsNCi0JCQl9IGVsc2Ugew0KLQkJCQlrZnJlZShtYXNx
X2luY2FybmF0aW9uc1tpXSk7DQotCQkJCW1hc3FfaW5jYXJuYXRpb25zW2ld
ID0gTlVMTDsNCi0JCQkJSVBfTUFTUV9ERUJVRygxLWRlYnVnLCJWRE9saXZl
OiB1bmxvYWRlZCBzdXBwb3J0IG9uIHBvcnRbJWRdID0gJWRcbiIsIGksIHBv
cnRzW2ldKTsNCi0JCQl9DQotCQl9DQotCX0NCi0JcmV0dXJuIGs7DQotfQ0K
LQ0KLQ0KLSNpZmRlZiBNT0RVTEUNCi1FWFBPUlRfTk9fU1lNQk9MUzsNCi0N
Ci1pbnQgaW5pdF9tb2R1bGUodm9pZCkNCi17DQotICAgICAgICBpZiAoaXBf
bWFzcV92ZG9saXZlX2luaXQoKSAhPSAwKQ0KLSAgICAgICAgICAgICAgICBy
ZXR1cm4gLUVJTzsNCi0gICAgICAgIHJldHVybiAwOw0KLX0NCi0NCi12b2lk
IGNsZWFudXBfbW9kdWxlKHZvaWQpDQotew0KLSAgICAgICAgaWYgKGlwX21h
c3FfdmRvbGl2ZV9kb25lKCkgIT0gMCkNCi0gICAgICAgICAgICAgICAgSVBf
TUFTUV9ERUJVRygxLWRlYnVnLCAiaXBfbWFzcV92ZG9saXZlOiBjYW4ndCBy
ZW1vdmUgbW9kdWxlIik7DQotfQ0KK0lQTV9JTklUX01PRFVMRSh2ZG9saXZl
LElQUFJPVE9fVENQLFJlYWxBdWRpbyk7DQorSVBNX0VORF9NT0RVTEUodmRv
bGl2ZSxpcF9tYXNxX3Zkb2xpdmUpOw0KIA0KLSNlbmRpZiAvKiBNT0RVTEUg
Ki8NCg==
---1463811328-1054730204-891325938=:8441--

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu