Corrected Patch for Epoll Support

[email protected] (Rusty Conover) Thu, 15 Sep 2005 00:53:38 -0600
Newsgroups perl.loop
Organization InfoGears Inc.
Message-ID <[email protected]>
--------------030702040401050208050103
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi All,

Here is a fixed patch that fixes one bug in the previous patch I sent.  
I failed to properly clear the epoll flags for the descriptor when the 
delete method is called.  That meant that epoll flags were persisted 
even when the watcher has been removed and a new watcher was installed 
on the same descriptor.

Thanks,

Rusty

-- 
Rusty Conover
InfoGears Inc.
http://www.infogears.com
406-587-5432



--------------030702040401050208050103
Content-Type: text/plain;
 name="epoll-2.diff"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
 filename="epoll-2.diff"

ZGlmZiAtdXIgLi9FdmVudC0xLjA2L2MvdW5peC5jIC4uL0V2ZW50LTEuMDYvYy91bml4LmMK
LS0tIC4vRXZlbnQtMS4wNi9jL3VuaXguYwkyMDA1LTA5LTExIDE0OjEwOjM4LjAwMDAwMDAw
MCAtMDYwMAorKysgLi4vRXZlbnQtMS4wNi9jL3VuaXguYwkyMDA1LTA5LTEzIDAyOjA5OjQ4
LjAwMDAwMDAwMCAtMDYwMApAQCAtMSwzICsxLDIxMCBAQAorI2lmIGRlZmluZWQoSEFTX0VQ
T0xMKQorCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3Jlc291cmNl
Lmg+CisjaW5jbHVkZSA8c3lzL3F1ZXVlLmg+CisjaW5jbHVkZSA8c3lzL2Vwb2xsLmg+CisK
K3N0cnVjdCBlcG9sbG9wIHsKKwkvKiB3YXRjaGVyIHBvaW50ZXJzICovCisJcGVfaW8gKipm
ZHM7CisJaW50IG5mZHM7CisJc3RydWN0IGVwb2xsX2V2ZW50ICpldmVudHM7CisJaW50IG5l
dmVudHM7CisJaW50IGVwZmQ7Cit9OworCitzdHJ1Y3QgZXBvbGxvcCBlcG9sbG9wOworCisK
KyNlbmRpZiAvKiBIQVNfRVBPTEwgKi8KKworLyogUXVldWUgc29tZSBJTyBiYWNrIGludG8g
dGhlIGNhbGxiYWNrIHN5c3RlbSBmb3Igc29tZSBiaXRzICovCitzdGF0aWMgdm9pZCBfcXVl
dWVfaW8ocGVfaW8gKndhLCBpbnQgZ290KSB7CisgICAgcGVfaW9ldmVudCAqZXY7CisgICAg
Z290ICY9IHdhLT5wb2xsOworICAgIGlmICghZ290KSB7CisJaWYgKFdhREVCVUd4KHdhKSA+
PSAzKSB7CisJICAgIFNUUkxFTiBuX2E7CisJICAgIHdhcm4oIkV2ZW50OiBpbyAnJXMnIHF1
ZXVlZCBub3RoaW5nIiwgU3ZQVih3YS0+YmFzZS5kZXNjLCBuX2EpKTsKKwl9CisJcmV0dXJu
OworICAgIH0KKyAgICBldiA9IChwZV9pb2V2ZW50KikgKCp3YS0+YmFzZS52dGJsLT5uZXdf
ZXZlbnQpKChwZV93YXRjaGVyKikgd2EpOworICAgICsrZXYtPmJhc2UuaGl0czsKKyAgICBl
di0+Z290IHw9IGdvdDsgICAgCisgICAgcXVldWVFdmVudCgocGVfZXZlbnQqKSBldik7Cit9
CisKK3N0YXRpYyB2b2lkIGJvb3RfZXBvbGwoKSB7CisjaWYgZGVmaW5lZChIQVNfRVBPTEwp
CisJc3RydWN0IHJsaW1pdCBybDsKKwlpbnQgZXBmZCwgbmZpbGVzOworCisJLyogR2V0IHRo
ZSB0b3RhbCBudW1iZXIgb2YgZGVzY3JpcHRvcnMgYWJsZSB0byBiZSBvcGVuZWQgaW4gdGhp
cyBwcm9jZXNzCisJICAgYW5kIGFsbG9jYXRlIGVub3VnaCBzbG90cyB0byBoYW5kbGUgYWxs
IG9mIHRoZW0gKi8KKwlpZiAoZ2V0cmxpbWl0KFJMSU1JVF9OT0ZJTEUsICZybCkgPT0gMCkg
eworCQlpZihybC5ybGltX2N1ciAhPSBSTElNX0lORklOSVRZKSB7CisJCQluZmlsZXMgPSBy
bC5ybGltX2N1cjsKKwkJfSBlbHNlIHsKKwkJCS8qIEFuIGFyYml0cmFyeSBsaW1pdCBvZiBk
ZXNjcmlwdG9ycyAqLworCQkJbmZpbGVzID0gNjQqMTAyNCoxMDI0OworCQl9CisJfSBlbHNl
IHsKKwkJY3JvYWsoIkZhaWxlZCB0byBnZXQgb3BlbmVkIGZpbGUgaGFuZGxlIGxpbWl0Iik7
CisJfQorCQorCS8qIEluaXRhbGl6ZSB0aGUga2VybmVsIHF1ZXVlLCB3aXRoIGFuIGluaXRp
YWwgc2l6ZSBvZgorCSBkZXNjcmlwdG9ycywgZG9uJ3Qgc2l6ZSB0byB0aGUgbWF4aW11bSBo
ZXJlLCBzaW5jZSB0aGUga2VybmVsCisJIHdpbGwgYXV0b21hdGljYWxseSByZXNpemUuICov
CisKKwlpZiAoKGVwZmQgPSBlcG9sbF9jcmVhdGUoMTAwKSkgPT0gLTEpIHsKKwkJY3JvYWso
IkZhaWxlZCB0byBjcmVhdGUgZXBvbGwgd2l0aCAlZCBmaWxlcyIsIG5maWxlcyk7CisJfQor
CisJLyogc2V0IHRoZSBjbG9zZSBvbiBleGVjIGZsYWcgKi8KKwlmY250bChlcGZkLCBGX1NF
VEZELCAxKTsKKworCWVwb2xsb3AuZXBmZCA9IGVwZmQ7CisJCisJLyogSW5pdCBhbmQgYWxs
b2MgZmllbGRzICovCisJRXZOZXcoOSwgZXBvbGxvcC5ldmVudHMsIG5maWxlcywgc3RydWN0
IGVwb2xsX2V2ZW50KTsKKwllcG9sbG9wLm5ldmVudHMgPSBuZmlsZXM7CisKKwlFdk5ldyg5
LCBlcG9sbG9wLmZkcywgbmZpbGVzLCBwZV9pbyAqKTsKKwllcG9sbG9wLm5mZHMgPSBuZmls
ZXM7CisKKyNlbmRpZiAvKkhBU19FUE9MTCovCit9CisKKworCisKKworI2lmIGRlZmluZWQo
SEFTX0VQT0xMKQorCitzdGF0aWMgdm9pZCBwZV9zeXNfc2xlZXAoZG91YmxlIGxlZnQpIHsK
KwlpbnQgcmV0OworCWRvdWJsZSB0MCA9IE5WdGltZSgpOworCWRvdWJsZSB0MSA9IHQwICsg
bGVmdDsKKwl3aGlsZSAoMSkgeworCQkvKiBObyBuZWVkIHRvIGNhbGwgZXBvbGwgaGVyZSB3
aGVuIHBvbGwgd2lsbCB3b3JrIGp1c3QgZmluZSAqLworCQlyZXQgPSBwb2xsKDAsIDAsIChp
bnQpIChsZWZ0ICogMTAwMCkpOyAvKiBob3BlIHplcm9lcyBva2F5ICovCisJCWlmIChyZXQg
PCAwICYmIGVycm5vICE9IEVBR0FJTiAmJiBlcnJubyAhPSBFSU5UUikKKwkJCWNyb2FrKCJw
b2xsKCUuMmYpIGdvdCBlcnJubyAlZCIsIGxlZnQsIGVycm5vKTsKKwkJbGVmdCA9IHQxIC0g
TlZ0aW1lKCk7CisJCWlmIChsZWZ0ID4gSW50ZXJ2YWxFcHNpbG9uKSB7CisJCQlpZiAocmV0
PT0wKSArK1RpbWVvdXRUb29FYXJseTsKKwkJCWNvbnRpbnVlOworCQl9CisJCWJyZWFrOwor
CX0KK30KKworc3RhdGljIHZvaWQgcGVfc3lzX2lvX2FkZCAocGVfaW8gKmV2KSB7CisJc3Ry
dWN0IHN0YXQgYnVmOworCVNUUkxFTiBuX2E7CQorCWludCBvcCA9IEVQT0xMX0NUTF9BREQ7
CisKKworCWlmIChldi0+ZmQgPD0gMCkgeworCQljcm9haygicGVfc3lzX2lvX2FkZDogbm9u
LXZhbGlkIGZkICglZCkiLCBldi0+ZmQpOworCQlyZXR1cm47CisJfQorCisJZXBvbGxvcC5l
dmVudHNbZXYtPmZkXS5ldmVudHMgPSAwOworCisJaWYoZXYtPnBvbGwgJiBQRV9FKSB7CisJ
CWVwb2xsb3AuZXZlbnRzW2V2LT5mZF0uZXZlbnRzIHw9IEVQT0xMUFJJOworCX0KKwkKKwlp
Zihldi0+cG9sbCAmIFBFX1IpIHsKKwkJZXBvbGxvcC5ldmVudHNbZXYtPmZkXS5ldmVudHMg
fD0gRVBPTExJTiB8IEVQT0xMUFJJIHwgRVBPTExFUlIgfCBFUE9MTEhVUDsKKwl9CisJaWYo
ZXYtPnBvbGwgJiBQRV9XKSB7CisJCWVwb2xsb3AuZXZlbnRzW2V2LT5mZF0uZXZlbnRzIHw9
IEVQT0xMT1VUIHwgRVBPTExFUlI7CisJfQorCQorCS8qIElmIHRoaXMgZGVzY3JpcHRvciBp
cyBhbHJlYWR5IHVzZWQgd2UgbmVlZCB0byBtb2RpZnkgdGhlIGZsYWdzICovCisJaWYoZXBv
bGxvcC5mZHNbZXYtPmZkXSAhPSBOVUxMKSB7CisJCW9wID0gRVBPTExfQ1RMX01PRDsJICAg
IAorCX0gCisKKwkKKwllcG9sbG9wLmV2ZW50c1tldi0+ZmRdLmRhdGEucHRyID0gZXY7CisJ
ICAgICAgICAKKwlpZiAoZXBvbGxfY3RsKGVwb2xsb3AuZXBmZCwgb3AsIGV2LT5mZCwgJmVw
b2xsb3AuZXZlbnRzW2V2LT5mZF0pID09IC0xKSB7CQkKKwkJLyogQ2hlY2sgaWYgaXRzIGEg
YmFkIGRlc2NyaXB0b3IgKi8KKwkJaWYgKGV2LT5mZCA+PSAwICYmIFBlcmxMSU9fZnN0YXQo
ZXYtPmZkLCAmYnVmKSA8IDAgJiYgZXJybm8gPT0gRUJBREYpIHsKKwkJICAgIHdhcm4oIkV2
ZW50OiAnJXMnIHdhcyB1bmV4cGVjdGVkbHkgY2xvc2VkIiwKKwkJCSBTdlBWKGV2LT5iYXNl
LmRlc2MsIG5fYSkpOworCQkgICAgcGVfaW9fcmVzZXRfaGFuZGxlKChwZV93YXRjaGVyKikg
ZXYpOworCQkgICAgcmV0dXJuOworCQl9CisJCWNyb2FrKCJGYWlsZWQgdG8gY2hhbmdlIHRo
ZSBlcG9sbCBzZXR0aW5ncyB1bmtub3duIGVycm9yIiwgZXYtPmZkKTsKKwl9CisKKwkvKiBT
YXZlIHRoZSBwb2ludGVyIHRvIHRoZSBjdXJyZW50IGV2ZW50ICovCisJZXBvbGxvcC5mZHNb
ZXYtPmZkXSA9IGV2OyAgICAKKwlyZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIHBlX3N5c19p
b19kZWwgKHBlX2lvICpldikgeworCWlmKGV2LT5mZCA8IDApIHsKKwkJcmV0dXJuOworCX0K
KworCWlmIChlcG9sbF9jdGwoZXBvbGxvcC5lcGZkLCBFUE9MTF9DVExfREVMLCBldi0+ZmQs
ICZlcG9sbG9wLmV2ZW50c1tldi0+ZmRdKSA9PSAtMSkKKwkJY3JvYWsoIkZhaWxlZCB0byBk
ZWxldGUgZnJvbSBlcG9sbCIpOworCisJZXBvbGxvcC5mZHNbZXYtPmZkXSA9IDA7CisJCisJ
cmV0dXJuOworfQorCisKK3N0YXRpYyB2b2lkIHBlX3N5c19tdWx0aXBsZXgoZG91YmxlIHRp
bWVvdXQpIHsKKwlpbnQgaSwgcmVzLCByZWFsX3RpbWVvdXQ7CisJCisJaWYodGltZW91dCA8
PSAwKSB7CisJCXJlYWxfdGltZW91dCA9IDA7CisJfSBlbHNlIHsKKwkJcmVhbF90aW1lb3V0
ID0gdGltZW91dCAqIDEwMDA7CisJfQorCisJcmVzID0gZXBvbGxfd2FpdChlcG9sbG9wLmVw
ZmQsIGVwb2xsb3AuZXZlbnRzLCBlcG9sbG9wLm5ldmVudHMsIHJlYWxfdGltZW91dCk7CisJ
CisJaWYgKHJlcyA9PSAtMSkgeworCQlyZXR1cm47CisJfQorCQorCWZvciAoaSA9IDA7IGkg
PCByZXM7IGkrKykgeworCQlpbnQgd2hhdCA9IGVwb2xsb3AuZXZlbnRzW2ldLmV2ZW50czsJ
CQorCQlwZV9pbyAqdGhpc193YXRjaGVyID0gKHN0cnVjdCBwZV9pbyAqKWVwb2xsb3AuZXZl
bnRzW2ldLmRhdGEucHRyOworICAgCisJCS8qIEluIHRoZSBldmVudCBvZiBhbiBlcnJvciBz
aWduYWwgZWl0aGVyIHRoZSByZWFkIG9yIHRoZSB3cml0ZSBjYWxsYmFjayAqLworICAgICAg
ICAgICAgICAgIGlmICh3aGF0ICYgRVBPTExIVVAgfHwgd2hhdCAmIEVQT0xMRVJSKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB3aGF0IHw9IEVQT0xMSU4gfCBFUE9MTE9VVDsKKwkJ
fQorCisJCWlmICh3aGF0ICYgRVBPTExJTikgeworCQkJX3F1ZXVlX2lvKHRoaXNfd2F0Y2hl
ciwgUEVfUik7CisJCX0KKworCQlpZiAod2hhdCAmIEVQT0xMT1VUKSB7CisJCQlfcXVldWVf
aW8odGhpc193YXRjaGVyLCBQRV9XKTsKKwkJfQorCX0KKwlyZXR1cm47Cit9CisKKyNlbmRp
ZiAvKiBIQVNfRVBPTEwgKi8KKworCisvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KiBFUE9MTCAqLworCisKKwogI2lmIGRlZmluZWQoSEFTX0RFVlBPTEwpCiAjaW5jbHVkZSA8
c3lzL2RldnBvbGwuaD4KICAgICBzdGF0aWMgaW50IGRwZmQ9MDsKQEAgLTUzLDI0ICsyNjAs
OSBAQAogICAgIHJldHVybiAtMTsKIH0KIAotc3RhdGljIHZvaWQgX3F1ZXVlX2lvKHBlX2lv
ICp3YSwgaW50IGdvdCkgewotICAgIHBlX2lvZXZlbnQgKmV2OwotICAgIGdvdCAmPSB3YS0+
cG9sbDsKLSAgICBpZiAoIWdvdCkgewotCWlmIChXYURFQlVHeCh3YSkgPj0gMykgewotCSAg
ICBTVFJMRU4gbl9hOwotCSAgICB3YXJuKCJFdmVudDogaW8gJyVzJyBxdWV1ZWQgbm90aGlu
ZyIsIFN2UFYod2EtPmJhc2UuZGVzYywgbl9hKSk7Ci0JfQotCXJldHVybjsKLSAgICB9Ci0g
ICAgZXYgPSAocGVfaW9ldmVudCopICgqd2EtPmJhc2UudnRibC0+bmV3X2V2ZW50KSgocGVf
d2F0Y2hlciopIHdhKTsKLSAgICArK2V2LT5iYXNlLmhpdHM7Ci0gICAgZXYtPmdvdCB8PSBn
b3Q7Ci0gICAgcXVldWVFdmVudCgocGVfZXZlbnQqKSBldik7Ci19CiAKIC8qKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIERFVlBPTEwgKi8KLSNp
ZiBkZWZpbmVkKEhBU19ERVZQT0xMKSAmJiAhUEVfU1lTX0lPCisjaWYgZGVmaW5lZChIQVNf
REVWUE9MTCkgJiYgIVBFX1NZU19JTyAmJiAhZGVmaW5lZChIQVNfRVBPTEwpCiAjZGVmaW5l
IFBFX1NZU19JTyAxCiAKIHN0YXRpYyB2b2lkIHBlX3N5c19zbGVlcChkb3VibGUgbGVmdCkg
ewpAQCAtMjI5LDcgKzQyMSw3IEBACiAjZW5kaWYgLypIQVNfREVWUE9MTCovCiAKIC8qKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIFBPTEwgKi8K
LSNpZiBkZWZpbmVkKEhBU19QT0xMKSAmJiAhUEVfU1lTX0lPCisjaWYgZGVmaW5lZChIQVNf
UE9MTCkgJiYgIVBFX1NZU19JTyAmJiAhZGVmaW5lZChIQVNfRVBPTEwpCiAjZGVmaW5lIFBF
X1NZU19JTyAxCiAKIHN0YXRpYyBzdHJ1Y3QgcG9sbGZkICpQb2xsZmQ9MDsKQEAgLTM0Niw3
ICs1MzgsNyBAQAogCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqIFNFTEVDVCAqLwotI2lmIGRlZmluZWQoSEFTX1NFTEVDVCkgJiYgIVBF
X1NZU19JTworI2lmIGRlZmluZWQoSEFTX1NFTEVDVCkgJiYgIVBFX1NZU19JTyAmJiAhZGVm
aW5lZChIQVNfRVBPTEwpCiAjZGVmaW5lIFBFX1NZU19JTyAxCiAKIHN0YXRpYyBpbnQgTmZk
czsKT25seSBpbiAuLi9FdmVudC0xLjA2L2M6IHVuaXguY34KZGlmZiAtdXIgLi9FdmVudC0x
LjA2L0NoYW5nZUxvZyAuLi9FdmVudC0xLjA2L0NoYW5nZUxvZwotLS0gLi9FdmVudC0xLjA2
L0NoYW5nZUxvZwkyMDA1LTA5LTExIDE0OjEwOjM4LjAwMDAwMDAwMCAtMDYwMAorKysgLi4v
RXZlbnQtMS4wNi9DaGFuZ2VMb2cJMjAwNS0wOS0xMSAxOTo0NDoxMy4wMDAwMDAwMDAgLTA2
MDAKQEAgLTEsMyArMSwxNCBAQAorMjAwNS0wOS0xMSAgICA8cmNvbm92ZXJAaW5mb2dlYXJz
LmNvbT4KKworCSogQWRkIGVwb2xsIHN1cHBvcnQgb24gbGludXgsIGVuYWJsZWQgd2l0aCAt
REhBU19FUE9MTAorCisJKiBDaGFuZ2UgdGhlIHQvaW8udCB0ZXN0IHRvIGFkZCB0aGUgd2Fy
bmluZyBoYW5kbGVyIGJlZm9yZSB0aGUgZmQKKwlpcyBhZGRlZCB0byB0aGUgRXZlbnQgb2Jq
ZWN0LCBiZWNhdXNlIHdpdGggZXBvbGwgdGhlIEVCQURGIGVycm9yCisJd2lsbCBiZSByZXBv
cnRlZCB3aGVuIHRoZSBmZCBpcyBhZGRlZCB0byB0aGUgZXBvbGwgZmQuCisKKwkqIENoYW5n
ZSBFdmVudC54cyB0byBjYWxsIGJvb3RfZXBvbGwoKSB0byBpbml0aWFsaXplIHRoZSBlcG9s
bCBmZCwKKwlzbyBpdCBjYW4gYmUgdXNlZCBsYXRlciBvbi4KKwogMjAwNS0wNS0xNCAgICA8
am9zaHVhQGFsd2F5cy5qb3kuZXRoLm5ldD4KIAogCSogUmVsZWFzZSAxLjA2LgpPbmx5IGlu
IC4uL0V2ZW50LTEuMDY6IENoYW5nZUxvZ34KT25seSBpbiAuLi9FdmVudC0xLjA2OiBFdmVu
dC0xLjA2LnRhci5negpkaWZmIC11ciAuL0V2ZW50LTEuMDYvRXZlbnQueHMgLi4vRXZlbnQt
MS4wNi9FdmVudC54cwotLS0gLi9FdmVudC0xLjA2L0V2ZW50LnhzCTIwMDUtMDktMTEgMTQ6
MTA6MzguMDAwMDAwMDAwIC0wNjAwCisrKyAuLi9FdmVudC0xLjA2L0V2ZW50LnhzCTIwMDUt
MDktMTEgMTk6Mjc6MjcuMDAwMDAwMDAwIC0wNjAwCkBAIC0yOTYsNiArMjk2LDcgQEAKICAg
Ym9vdF9pZGxlKCk7CiAgIGJvb3RfdGltZXIoKTsKICAgYm9vdF9pbygpOworICBib290X2Vw
b2xsKCk7CiAgIGJvb3RfZGV2cG9sbCgpOwogICBib290X3ZhcigpOwogICBib290X3RpZWQo
KTsKZGlmZiAtdXIgLi9FdmVudC0xLjA2L01ha2VmaWxlLlBMIC4uL0V2ZW50LTEuMDYvTWFr
ZWZpbGUuUEwKLS0tIC4vRXZlbnQtMS4wNi9NYWtlZmlsZS5QTAkyMDA1LTA5LTExIDE0OjEw
OjM4LjAwMDAwMDAwMCAtMDYwMAorKysgLi4vRXZlbnQtMS4wNi9NYWtlZmlsZS5QTAkyMDA1
LTA5LTExIDE5OjI3OjAxLjAwMDAwMDAwMCAtMDYwMApAQCAtMTEsNiArMTEsNyBAQAogbXkg
QG9wdD0oUFJFUkVRX1BNID0+IHsgVGVzdCA9PiAxIH0sCiAJIFZFUlNJT05fRlJPTQk9PiAi
Li9saWIvRXZlbnQucG0iLAogCSBOQU1FICAgICAgCT0+ICJFdmVudCIsCisJIERFRklORSAg
ICAgICAgID0+ICctREhBU19FUE9MTCcsCiAJIFRZUEVNQVBTICAgICAgID0+IFsnLi9saWIv
RXZlbnQvdHlwZW1hcCddLAogCSBJTkMJCT0+ICctSWMgLUlsaWIvRXZlbnQnLAogCSBICQk9
PiBbZ2xvYigiYy8qIiksIGdsb2IoIiouaCIpLCAibGliL0V2ZW50L0V2ZW50QVBJLmgiXSwK
T25seSBpbiAuLi9FdmVudC0xLjA2L3Q6IGZvby5ydW4KZGlmZiAtdXIgLi9FdmVudC0xLjA2
L3QvaW8udCAuLi9FdmVudC0xLjA2L3QvaW8udAotLS0gLi9FdmVudC0xLjA2L3QvaW8udAky
MDA1LTA5LTExIDE5OjQ3OjQ0LjAwMDAwMDAwMCAtMDYwMAorKysgLi4vRXZlbnQtMS4wNi90
L2lvLnQJMjAwNS0wOS0xMSAxNTo0OTo0My4wMDAwMDAwMDAgLTA2MDAKQEAgLTIzLDEyICsy
Myw2IEBACiAKIG15ICRub3RpY2VkX2JvZ3VzX2ZkPTA7CiBteSAkYm9ndXNfdGltZW91dD0w
OwotbXkgJGJvZ3VzID0gRXZlbnQtPmlvKGRlc2MgPT4gJ29vcHMnLCBwb2xsID0+ICdyJywg
ZmQgPT4gMTIzLAotCQkgICAgICB0aW1lb3V0ID0+IC4xLCBjYiA9PiBzdWIgewotCQkJICAr
KyRib2d1c190aW1lb3V0OwotCQkgICAgICB9KTsKLQotcHJpbnQgImJvZ3VzOiAkYm9ndXNc
biI7CiAKICRTSUd7X19XQVJOX199ID0gc3ViIHsKICAgICBteSAkaXNfaXQgPSAkX1swXSA9
fiBtL1wnb29wc1wnIHdhcyB1bmV4cGVjdGVkbHkvOwpAQCAtMzksNiArMzMsMTIgQEAKICAg
ICB9CiB9OwogCisKK215ICRib2d1cyA9IEV2ZW50LT5pbyhkZXNjID0+ICdvb3BzJywgcG9s
bCA9PiAncicsIGZkID0+IDEyMywKKwkJICAgICAgdGltZW91dCA9PiAuMSwgY2IgPT4gc3Vi
IHsKKwkJCSAgKyskYm9ndXNfdGltZW91dDsKKwkJICAgICAgfSk7CisKIHN1YiBuZXdfcGlw
ZSB7CiAgICAgbXkgKCRjbnQpID0gQF87CiAgICAgbXkgKCRyLCR3KSA9IChnZW5zeW0sIGdl
bnN5bSk7Cg==
--------------030702040401050208050103--