From: Motohiro KOSAKI Date: 2010-12-16T04:55:22+09:00 Subject: [ruby-core:33736] [Ruby 1.9-Feature#4038] IO#advise --mimepart_4d091d2a634a6_f3db5cffac3d3 Content-Type: text/plain Content-Transfer-Encoding: Quoted-printable Content-Disposition: inline Issue #4038 has been updated by Motohiro KOSAKI. File IO-advise-7-kosaki.patch added Fix test failure isssue on !HAVE_POSIX_FADVISE platform (ie windows). ---------------------------------------- http://redmine.ruby-lang.org/issues/show/4038 ---------------------------------------- http://redmine.ruby-lang.org --mimepart_4d091d2a634a6_f3db5cffac3d3 Content-Type: text/plain; name=IO-advise-7-kosaki.patch Content-Transfer-Encoding: Base64 Content-Disposition: attachment; filename=IO-advise-7-kosaki.patch Ci0tLQogY29uZmlndXJlLmluICAgICAgICAgfCAgICAyICstCiBpby5jICAg ICAgICAgICAgICAgICB8ICAxNjAgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysKIHRlc3QvcnVieS90ZXN0X2lv LnJiIHwgICAzNCArKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAxOTUg aW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9j b25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KaW5kZXggMjZhYjk3NC4uYzI1 ZmQxNiAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmluCisrKyBiL2NvbmZpZ3Vy ZS5pbgpAQCAtMTI5MCw3ICsxMjkwLDcgQEAgZWxzZQogZmkKIEFDX0NIRUNL X0ZVTkNTKGZtb2Qga2lsbHBnIHdhaXQ0IHdhaXRwaWQgZm9yayBzcGF3bnYg c3lzY2FsbCBjaHJvb3QgZ2V0Y3dkIGVhY2Nlc3NcCiAJICAgICAgdHJ1bmNh dGUgZnRydW5jYXRlIGNoc2l6ZSB0aW1lcyB1dGltZXMgdXRpbWVuc2F0IGZj bnRsIGxvY2tmIGxzdGF0XAotCSAgICAgIGxpbmsgc3ltbGluayByZWFkbGlu ayByZWFkZGlyX3IgZnN5bmMgZmRhdGFzeW5jIGZjaG93blwKKwkgICAgICBs aW5rIHN5bWxpbmsgcmVhZGxpbmsgcmVhZGRpcl9yIGZzeW5jIGZkYXRhc3lu YyBmY2hvd24gcG9zaXhfZmFkdmlzZVwKIAkgICAgICBzZXRpdGltZXIgc2V0 cnVpZCBzZXRldWlkIHNldHJldWlkIHNldHJlc3VpZCBzZXRwcm9jdGl0bGUg c29ja2V0cGFpclwKIAkgICAgICBzZXRyZ2lkIHNldGVnaWQgc2V0cmVnaWQg c2V0cmVzZ2lkIGlzc2V0dWdpZCBwYXVzZSBsY2hvd24gbGNobW9kXAogCSAg ICAgIGdldHBncnAgc2V0cGdycCBnZXRwZ2lkIHNldHBnaWQgaW5pdGdyb3Vw cyBnZXRncm91cHMgc2V0Z3JvdXBzXApkaWZmIC0tZ2l0IGEvaW8uYyBiL2lv LmMKaW5kZXggZDVkMTIyMC4uMGFhZTU1YiAxMDA2NDQKLS0tIGEvaW8uYwor KysgYi9pby5jCkBAIC0xLDMgKzEsNCBAQAorCiAvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKgogCiAgIGlvLmMgLQpAQCAtNzM4OSw2ICs3MzkwLDE1OCBA QCBzZWxlY3RfZW5kKFZBTFVFIGFyZykKIH0KICNlbmRpZgogCitzdGF0aWMg VkFMVUUgc3ltX25vcm1hbCwgICBzeW1fc2VxdWVudGlhbCwgc3ltX3JhbmRv bSwKKyAgICAgICAgICAgICBzeW1fd2lsbG5lZWQsIHN5bV9kb250bmVlZCwg c3ltX25vcmV1c2U7CisKKyNpZmRlZiBIQVZFX1BPU0lYX0ZBRFZJU0UKK3N0 cnVjdCBpb19hZHZpc2Vfc3RydWN0IHsKKyAgICBpbnQgZmQ7CisgICAgb2Zm X3Qgb2Zmc2V0OworICAgIG9mZl90IGxlbjsKKyAgICBpbnQgYWR2aWNlOwor fTsKKworc3RhdGljIFZBTFVFCitpb19hZHZpc2VfaW50ZXJuYWwodm9pZCAq YXJnKQoreworICAgIHN0cnVjdCBpb19hZHZpc2Vfc3RydWN0ICpwdHIgPSBh cmc7CisgICAgcmV0dXJuIHBvc2l4X2ZhZHZpc2UocHRyLT5mZCwgcHRyLT5v ZmZzZXQsIHB0ci0+bGVuLCBwdHItPmFkdmljZSk7Cit9CisKK3N0YXRpYyBW QUxVRSBpb19hZHZpc2Vfc3ltX3RvX2NvbnN0KFZBTFVFIHN5bSkKK3sKKyNp ZmRlZiBQT1NJWF9GQURWX05PUk1BTAorICBpZiAoc3ltID09IHN5bV9ub3Jt YWwpCisgICAgICByZXR1cm4gSU5UMk5VTShQT1NJWF9GQURWX05PUk1BTCk7 CisjZW5kaWYKKworI2lmZGVmIFBPU0lYX0ZBRFZfUkFORE9NCisgIGlmIChz eW0gPT0gc3ltX3JhbmRvbSkKKyAgICAgIHJldHVybiBJTlQyTlVNKFBPU0lY X0ZBRFZfUkFORE9NKTsKKyNlbmRpZgorCisjaWZkZWYgUE9TSVhfRkFEVl9T RVFVRU5USUFMCisgIGlmIChzeW0gPT0gc3ltX3NlcXVlbnRpYWwpCisgICAg ICByZXR1cm4gSU5UMk5VTShQT1NJWF9GQURWX1NFUVVFTlRJQUwpOworI2Vu ZGlmCisKKyNpZmRlZiBQT1NJWF9GQURWX1dJTExORUVECisgIGlmIChzeW0g PT0gc3ltX3dpbGxuZWVkKQorICAgICAgcmV0dXJuIElOVDJOVU0oUE9TSVhf RkFEVl9XSUxMTkVFRCk7CisjZW5kaWYKKworI2lmZGVmIFBPU0lYX0ZBRFZf RE9OVE5FRUQKKyAgaWYgKHN5bSA9PSBzeW1fZG9udG5lZWQpCisgICAgICBy ZXR1cm4gSU5UMk5VTShQT1NJWF9GQURWX0RPTlRORUVEKTsKKyNlbmRpZgor CisjaWZkZWYgUE9TSVhfRkFEVl9OT1JFVVNFCisgIGlmIChzeW0gPT0gc3lt X25vcmV1c2UpCisgICAgICByZXR1cm4gSU5UMk5VTShQT1NJWF9GQURWX05P UkVVU0UpOworI2VuZGlmCisKKyAgICAgIHJldHVybiBRbmlsOworfQorCitz dGF0aWMgVkFMVUUKK2RvX2lvX2FkdmlzZShWQUxVRSBpbywgVkFMVUUgYWR2 aWNlLCBWQUxVRSBvZmZzZXQsIFZBTFVFIGxlbikKK3sKKyAgaW50IHJ2Owor ICByYl9pb190ICpmcHRyOworICBzdHJ1Y3QgaW9fYWR2aXNlX3N0cnVjdCBp YXM7CisgIFZBTFVFIG51bV9hZHY7CisKKyAgbnVtX2FkdiA9IGlvX2Fkdmlz ZV9zeW1fdG9fY29uc3QoYWR2aWNlKTsKKworICAvKgorICAgKiBUaGUgcGxh dGZvcm0gZG9lc24ndCBzdXBwb3J0IHRoaXMgaGludC4gV2UgZG9uJ3QgcmFp c2UgZXhjZXB0aW9uLCBpbnN0ZWFkCisgICAqIHNpbGVudGx5IGlnbm9yZSBp dC4gQmVjYXVzZSBJTzo6YWR2aXNlIGlzIG9ubHkgaGludC4KKyAgICovCisg IGlmIChudW1fYWR2ID09IFFuaWwpCisgICAgICByZXR1cm4gUW5pbDsKKwor ICBpbyA9IEdldFdyaXRlSU8oaW8pOworICBHZXRPcGVuRmlsZShpbywgZnB0 cik7CisKKyAgaWFzLmZkICAgICA9IGZwdHItPmZkOworICBpYXMuYWR2aWNl ID0gTlVNMklOVChudW1fYWR2KTsKKyAgaWFzLm9mZnNldCA9IE5JTF9QKG9m ZnNldCkgPyAwIDogTlVNMk9GRlQob2Zmc2V0KTsKKyAgaWFzLmxlbiAgICA9 IE5JTF9QKGxlbikgICAgPyAwIDogTlVNMk9GRlQobGVuKTsKKworICBpZiAo cnYgPSAoaW50KXJiX3RocmVhZF9ibG9ja2luZ19yZWdpb24oaW9fYWR2aXNl X2ludGVybmFsLCAmaWFzLCBSVUJZX1VCRl9JTywgMCkpCisgICAgICAvKiBw b3NpeF9mYWR2aXNlKDIpIGRvZXNuJ3Qgc2V0IGVycm5vLiBPbiBzdWNjZXNz IGl0IHJldHVybnMgMDsgb3RoZXJ3aXNlCisJIGl0IHJldHVybnMgdGhlIGVy cm9yIGNvZGUuICovCisgICAgICByYl9zeXNlcnJfZmFpbChydiwgUlNUUklO R19QVFIoZnB0ci0+cGF0aHYpKTsKKworICByZXR1cm4gUW5pbDsKK30KKwor I2VuZGlmIC8qIEhBVkVfUE9TSVhfRkFEVklTRSAqLworCisvKgorICogIGNh bGwtc2VxOgorICogICAgIGlvcy5hZHZpc2UoYWR2aWNlLCBvZmZzZXQ9MCwg bGVuPTApIC0+IG5pbAorICoKKyAqICBBbm5vdW5jZSBhbiBpbnRlbnRpb24g dG8gYWNjZXNzIGRhdGEgZnJvbSB0aGUgY3VycmVudCBmaWxlIGluIGEKKyAq ICBzcGVjaWZpYyBwYXR0ZXJuLiBPbiBwbGF0Zm9ybXMgdGhhdCBkbyBub3Qg c3VwcG9ydCB0aGUKKyAqICA8ZW0+cG9zaXhfZmFkdmlzZSgyKTwvZW0+IHN5 c3RlbSBjYWxsLCB0aGlzIG1ldGhvZCBpcyBhIG5vLW9wLgorICoKKyAqIF9h ZHZpY2VfIGlzIG9uZSBvZiB0aGUgZm9sbG93aW5nIHN5bWJvbHM6CisgKgor ICogICogOm5vcm1hbCAtIE5vIGFkdmljZSB0byBnaXZlOyB0aGUgZGVmYXVs dCBhc3N1bXB0aW9uIGZvciBhbiBvcGVuIGZpbGUuCisgKiAgKiA6c2VxdWVu dGlhbCAtIFRoZSBkYXRhIHdpbGwgYmUgYWNjZXNzZWQgc2VxdWVudGlhbGx5 OgorICogICAgIHdpdGggbG93ZXIgb2Zmc2V0cyByZWFkIGJlZm9yZSBoaWdo ZXIgb25lcy4KKyAqICAqIDpyYW5kb20gLSBUaGUgZGF0YSB3aWxsIGJlIGFj Y2Vzc2VkIGluIHJhbmRvbSBvcmRlci4KKyAqICAqIDp3aWxsbmVlZCAtIFRo ZSBkYXRhIHdpbGwgYmUgYWNjZXNzZWQgaW4gdGhlIG5lYXIgZnV0dXJlLgor ICogICogOmRvbnRuZWVkIC0gVGhlIGRhdGEgd2lsbCBub3QgYmUgYWNjZXNz ZWQgaW4gdGhlIG5lYXIgZnV0dXJlLgorICogICogOm5vcmV1c2UgLSBUaGUg ZGF0YSB3aWxsIG9ubHkgYmUgYWNjZXNzZWQgb25jZS4KKyAqCisgKiBUaGUg c2VtYW50aWNzIG9mIGEgcGllY2Ugb2YgYWR2aWNlIGFyZSBwbGF0Zm9ybS1k ZXBlbmRlbnQuIFNlZQorICogPGVtPm1hbiAyIHBvc2l4X2ZhZHZpc2U8L2Vt PiBmb3IgZGV0YWlscy4KKyAqCisgKiAgImRhdGEiIG1lYW5zIHRoZSByZWdp b24gb2YgdGhlIGN1cnJlbnQgZmlsZSB0aGF0IGJlZ2lucyBhdAorICogIF9v ZmZzZXRfIGFuZCBleHRlbmRzIGZvciBfbGVuXyBieXRlcy4gSWYgX2xlbl8g aXMgMCwgdGhlIHJlZ2lvbgorICogIGVuZHMgYXQgdGhlIGxhc3QgYnl0ZSBv ZiB0aGUgZmlsZS4gQnkgZGVmYXVsdCwgYm90aCBfb2Zmc2V0XyBhbmQKKyAq ICBfbGVuXyBhcmUgMCwgbWVhbmluZyB0aGF0IHRoZSBhZHZpY2UgYXBwbGll cyB0byB0aGUgZW50aXJlIGZpbGUuCisgKgorICogIElmIGFuIGVycm9yIG9j Y3Vycywgb25lIG9mIHRoZSBmb2xsb3dpbmcgZXhjZXB0aW9ucyB3aWxsIGJl IHJhaXNlZDoKKyAqCisgKiAgKiA8Y29kZT5JT0Vycm9yPC9jb2RlPiAtIFRo ZSA8Y29kZT5JTzwvY29kZT4gc3RyZWFtIGlzIGNsb3NlZC4KKyAqICAqIDxj b2RlPkVycm5vOjpFQkFERjwvY29kZT4gLSBUaGUgZmlsZSBkZXNjcmlwdG9y IG9mIHRoZSBjdXJyZW50IGZpbGUgaXMKKyAgICAgIGludmFsaWQuCisgKiAg KiA8Y29kZT5FcnJubzo6RUlOVkFMPC9jb2RlPiAtIEFuIGludmFsaWQgdmFs dWUgZm9yIF9hZHZpY2VfIHdhcyBnaXZlbi4KKyAqICAqIDxjb2RlPkVycm5v OjpFU1BJUEU8L2NvZGU+IC0gVGhlIGZpbGUgZGVzY3JpcHRvciBvZiB0aGUg Y3VycmVudAorICogICogZmlsZSByZWZlcnMgdG8gYSBGSUZPIG9yIHBpcGUu IChMaW51eCByYWlzZXMgPGNvZGU+RXJybm86OkVJTlZBTDwvY29kZT4KKyAq ICAqIGluIHRoaXMgY2FzZSkuCisgKiAgKiA8Y29kZT5UeXBlRXJyb3I8L2Nv ZGU+IC0gRWl0aGVyIF9hZHZpY2VfIHdhcyBub3QgYSBTeW1ib2wsIG9yIG9u ZSBvZiB0aGUKKyAgICAgIG90aGVyIGFyZ3VtZW50cyB3YXMgbm90IGFuIDxj b2RlPkludGVnZXI8L2NvZGU+LgorICogICogPGNvZGU+UmFuZ2VFcnJvcjwv Y29kZT4gLSBPbmUgb2YgdGhlIGFyZ3VtZW50cyBnaXZlbiB3YXMgdG9vIGJp Zy9zbWFsbC4KKyAqCisgKiBUaGlzIGxpc3QgaXMgbm90IGV4aGF1c3RpdmU7 IG90aGVyIEVycm5vOjogZXhjZXB0aW9ucyBhcmUgYWxzbyBwb3NzaWJsZS4K KyAqLworc3RhdGljIFZBTFVFCityYl9pb19hZHZpc2UoaW50IGFyZ2MsIFZB TFVFICphcmd2LCBWQUxVRSBpbykKK3sKKyAgaW50IHJ2OworICBWQUxVRSBh ZHZpY2UsIG9mZnNldCwgbGVuOworCisgIHJiX3NjYW5fYXJncyhhcmdjLCBh cmd2LCAiMTIiLCAmYWR2aWNlLCAmb2Zmc2V0LCAmbGVuKTsKKyAgaWYgKFRZ UEUoYWR2aWNlKSAhPSBUX1NZTUJPTCkKKyAgICAgIHJiX3JhaXNlKHJiX2VU eXBlRXJyb3IsICJhZHZpY2UgbXVzdCBiZSBhIFN5bWJvbCIpOworCisjaWZk ZWYgSEFWRV9QT1NJWF9GQURWSVNFCisgIHJldHVybiBkb19pb19hZHZpc2Uo aW8sIGFkdmljZSwgb2Zmc2V0LCBsZW4pOworI2Vsc2UKKworICAvKiBmb3Ig YXJndW1lbnQgY2hlY2suICovCisgIE5VTTJPRkZUKG9mZnNldCk7CisgIE5V TTJPRkZUKGxlbik7CisKKyAgLyogSWdub3JlIGFsbCBoaW50ICovCisgIHJl dHVybiBRbmlsOworI2VuZGlmCit9CisKIC8qCiAgKiAgY2FsbC1zZXE6CiAg KiAgICAgSU8uc2VsZWN0KHJlYWRfYXJyYXkKQEAgLTEwMTQyLDYgKzEwMjk1 LDcgQEAgSW5pdF9JTyh2b2lkKQogICAgIHJiX2RlZmluZV9tZXRob2QocmJf Y0lPLCAiYmlubW9kZSIsICByYl9pb19iaW5tb2RlX20sIDApOwogICAgIHJi X2RlZmluZV9tZXRob2QocmJfY0lPLCAiYmlubW9kZT8iLCByYl9pb19iaW5t b2RlX3AsIDApOwogICAgIHJiX2RlZmluZV9tZXRob2QocmJfY0lPLCAic3lz c2VlayIsIHJiX2lvX3N5c3NlZWssIC0xKTsKKyAgICByYl9kZWZpbmVfbWV0 aG9kKHJiX2NJTywgImFkdmlzZSIsIHJiX2lvX2FkdmlzZSwgLTEpOwogCiAg ICAgcmJfZGVmaW5lX21ldGhvZChyYl9jSU8sICJpb2N0bCIsIHJiX2lvX2lv Y3RsLCAtMSk7CiAgICAgcmJfZGVmaW5lX21ldGhvZChyYl9jSU8sICJmY250 bCIsIHJiX2lvX2ZjbnRsLCAtMSk7CkBAIC0xMDMxOCw0ICsxMDQ3MiwxMCBA QCBJbml0X0lPKHZvaWQpCiAgICAgc3ltX3RleHRtb2RlID0gSUQyU1lNKHJi X2ludGVybigidGV4dG1vZGUiKSk7CiAgICAgc3ltX2Jpbm1vZGUgPSBJRDJT WU0ocmJfaW50ZXJuKCJiaW5tb2RlIikpOwogICAgIHN5bV9hdXRvY2xvc2Ug PSBJRDJTWU0ocmJfaW50ZXJuKCJhdXRvY2xvc2UiKSk7CisgICAgc3ltX25v cm1hbCA9IElEMlNZTShyYl9pbnRlcm4oIm5vcm1hbCIpKTsKKyAgICBzeW1f c2VxdWVudGlhbCA9IElEMlNZTShyYl9pbnRlcm4oInNlcXVlbnRpYWwiKSk7 CisgICAgc3ltX3JhbmRvbSA9IElEMlNZTShyYl9pbnRlcm4oInJhbmRvbSIp KTsKKyAgICBzeW1fd2lsbG5lZWQgPSBJRDJTWU0ocmJfaW50ZXJuKCJ3aWxs bmVlZCIpKTsKKyAgICBzeW1fZG9udG5lZWQgPSBJRDJTWU0ocmJfaW50ZXJu KCJkb250bmVlZCIpKTsKKyAgICBzeW1fbm9yZXVzZSA9IElEMlNZTShyYl9p bnRlcm4oIm5vcmV1c2UiKSk7CiB9CmRpZmYgLS1naXQgYS90ZXN0L3J1Ynkv dGVzdF9pby5yYiBiL3Rlc3QvcnVieS90ZXN0X2lvLnJiCmluZGV4IDczYTE2 ZGUuLmM3ZGJiNmQgMTAwNjQ0Ci0tLSBhL3Rlc3QvcnVieS90ZXN0X2lvLnJi CisrKyBiL3Rlc3QvcnVieS90ZXN0X2lvLnJiCkBAIC0xNzIyLDQgKzE3MjIs MzggQEAgRW5kCiAgICAgICBlbmQKICAgICBlbmQKICAgZW5kCisKKyAgZGVm IHRlc3RfYWR2aXNlCisgICAgdCA9IG1ha2VfdGVtcGZpbGUKKyAgICBhc3Nl cnRfcmFpc2UoQXJndW1lbnRFcnJvciwgIm5vIGFyZ3VtZW50cyIpIHsgdC5h ZHZpc2UgfQorICAgICV3e25vcm1hbCByYW5kb20gc2VxdWVudGlhbCB3aWxs bmVlZCBkb250bmVlZCBub3JldXNlfS5tYXAoJjp0b19zeW0pLmVhY2ggZG8g fGFkdnwKKyAgICAgIFtbMCwwXSwgWzAsIDIwXSwgWzQwMCwgMl1dLmVhY2gg ZG8gfG9mZnNldCwgbGVufAorICAgICAgICBvcGVuKG1ha2VfdGVtcGZpbGUu cGF0aCkgZG8gfHR8CisgICAgICAgICAgYXNzZXJ0X2VxdWFsKHQuYWR2aXNl KGFkdiwgb2Zmc2V0LCBsZW4pLCBuaWwpCisgICAgICAgICAgYXNzZXJ0X3Jh aXNlKEFyZ3VtZW50RXJyb3IsICJzdXBlcmZsdW91cyBhcmd1bWVudHMiKSBk bworICAgICAgICAgICAgdC5hZHZpc2UoYWR2LCBvZmZzZXQsIGxlbiwgb2Zm c2V0KQorICAgICAgICAgIGVuZAorICAgICAgICAgIGFzc2VydF9yYWlzZShU eXBlRXJyb3IsICJ3cm9uZyB0eXBlIGZvciBmaXJzdCBhcmd1bWVudCIpIGRv CisgICAgICAgICAgICB0LmFkdmlzZShhZHYudG9fcywgb2Zmc2V0LCBsZW4p CisgICAgICAgICAgZW5kCisgICAgICAgICAgYXNzZXJ0X3JhaXNlKFR5cGVF cnJvciwgIndyb25nIHR5cGUgZm9yIGxhc3QgYXJndW1lbnQiKSBkbworICAg ICAgICAgICAgdC5hZHZpc2UoYWR2LCBvZmZzZXQsIEFycmF5KGxlbikpCisg ICAgICAgICAgZW5kCisgICAgICAgICAgYXNzZXJ0X3JhaXNlKFJhbmdlRXJy b3IsICJsYXN0IGFyZ3VtZW50IHRvbyBiaWciKSBkbworICAgICAgICAgICAg dC5hZHZpc2UoYWR2LCBvZmZzZXQsIDk5OTllOTkpCisgICAgICAgICAgZW5k CisgICAgICAgIGVuZAorICAgICAgICBhc3NlcnRfcmFpc2UoSU9FcnJvciwg ImNsb3NlZCBmaWxlIikgZG8KKyAgICAgICAgICBtYWtlX3RlbXBmaWxlLmFk dmlzZShhZHYudG9fc3ltLCBvZmZzZXQsIGxlbikKKyAgICAgICAgZW5kCisg ICAgICBlbmQKKyAgICBlbmQKKyAgICAld3tOb3JtYWwgcmFuZCBnbGFyayB3 aWxsX25lZWQgenp6enp6enp6enp6IFx1MjYwOX0ubWFwKCY6dG9fc3ltKS5l YWNoIGRvIHxhZHZ8CisgICAgICBbWzAsMF0sIFswLCAyMF0sIFs0MDAsIDJd XS5lYWNoIGRvIHxvZmZzZXQsIGxlbnwKKyAgICAgICAgb3BlbihtYWtlX3Rl bXBmaWxlLnBhdGgpIGRvIHx0fAorICAgICAgICAgIGFzc2VydF9lcXVhbCh0 LmFkdmlzZShhZHYsIG9mZnNldCwgbGVuKSwgbmlsKQorICAgICAgICBlbmQK KyAgICAgIGVuZAorICAgIGVuZAorICBlbmQKIGVuZAotLSAKMS43LjAuMQoK --mimepart_4d091d2a634a6_f3db5cffac3d3--