From cfe-commits Thu Aug 06 06:25:50 2015 From: Filipe Cabecinhas via cfe-commits Date: Thu, 06 Aug 2015 06:25:50 +0000 To: cfe-commits Subject: Re: [PATCH] D11757: Propagate SourceLocations through to get a Loc on float_cast_overflow Message-Id: <9d44848e57297b54f30450de0474ef3a () localhost ! localdomain> X-MARC-Message: https://marc.info/?l=cfe-commits&m=143884235604460 MIME-Version: 1 Content-Type: multipart/mixed; boundary="--b1_9d44848e57297b54f30450de0474ef3a" --b1_9d44848e57297b54f30450de0474ef3a Content-Type: text/plain; charset = "utf-8" Content-Transfer-Encoding: quoted-printable filcab updated this revision to Diff 31427. filcab marked an inline comment as done. filcab added a comment. Address Richard's comments http://reviews.llvm.org/D11757 Files: lib/CodeGen/CGExpr.cpp lib/CodeGen/CGExprComplex.cpp lib/CodeGen/CGExprScalar.cpp lib/CodeGen/CGOpenMPRuntime.cpp lib/CodeGen/CGStmtOpenMP.cpp lib/CodeGen/CodeGenFunction.h test/CodeGen/catch-undef-behavior.c --b1_9d44848e57297b54f30450de0474ef3a Content-Type: text/x-patch; charset=utf-8; name="D11757.31427.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="D11757.31427.patch" SW5kZXg6IHRlc3QvQ29kZUdlbi9jYXRjaC11bmRlZi1iZWhhdmlvci5jCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tIHRlc3QvQ29kZUdlbi9jYXRjaC11 bmRlZi1iZWhhdmlvci5jCisrKyB0ZXN0L0NvZGVHZW4vY2F0Y2gtdW5kZWYt YmVoYXZpb3IuYwpAQCAtMTksNiArMTksMTcgQEAKIC8vIENIRUNLLVVCU0FO OiBAW1tMSU5FXzcwMDouKl1dID0ge3suKn19LCBpMzIgNzAwLCBpMzIgMTQg e3suKn19IEBbW1NUUlVDVF9TXV0sIGk2NCA0LCBpOCAzIH0KIC8vIENIRUNL LVVCU0FOOiBAW1tMSU5FXzgwMDouKl1dID0ge3suKn19LCBpMzIgODAwLCBp MzIgMTIge3suKn19IEB7ey4qfX0gfQogLy8gQ0hFQ0stVUJTQU46IEBbW0xJ TkVfOTAwOi4qXV0gPSB7ey4qfX0sIGkzMiA5MDAsIGkzMiAxMSB7ey4qfX0g QHt7Lip9fSB9CisvLyBDSEVDSy1VQlNBTjogQFtbTElORV8xMDAwOi4qXV0g PSB7ey4qfX0sIGkzMiAxMDAwLCBpMzIgMTAge3suKn19IEB7ey4qfX0gfQor Ly8gQ0hFQ0stVUJTQU46IEBbW0ZQMTY6LipdXSA9IHByaXZhdGUgdW5uYW1l ZF9hZGRyIGNvbnN0YW50IHsgaTE2LCBpMTYsIFs5IHggaThdIH0geyBpMTYg MSwgaTE2IDE2LCBbOSB4IGk4XSBjIidfX2ZwMTYnXDAwIiB9CisvLyBDSEVD Sy1VQlNBTjogQFtbTElORV8xMTAwOi4qXV0gPSB7ey4qfX0sIGkzMiAxMTAw LCBpMzIgOCB7ey4qfX0gQHt7Lip9fSB9CisvLyBDSEVDSy1VQlNBTjogQFtb TElORV8xMjAwOi4qXV0gPSB7ey4qfX0sIGkzMiAxMjAwLCBpMzIgMTAge3su Kn19IEB7ey4qfX0gfQorLy8gQ0hFQ0stVUJTQU46IEBbW0xJTkVfMTMwMDou Kl1dID0ge3suKn19LCBpMzIgMTMwMCwgaTMyIDEwIHt7Lip9fSBAe3suKn19 IH0KKy8vIENIRUNLLVVCU0FOOiBAW1tMSU5FXzE0MDA6LipdXSA9IHt7Lip9 fSwgaTMyIDE0MDAsIGkzMiAxMCB7ey4qfX0gQHt7Lip9fSB9CisvLyBNYWtl IHN1cmUgd2UgY2hlY2sgdGhlIGZwMTYgdHlwZV9taXNtYXRjaCBkYXRhIHNv IHdlIGNhbiBlYXNpbHkgbWF0Y2ggdGhlIHNpZ25lZCBjaGFyIGZsb2F0X2Nh c3Rfb3ZlcmZsb3cKKy8vIENIRUNLLVVCU0FOOiBAW1tMSU5FXzE1MDA6Lipd XSA9IHt7Lip9fSwgaTMyIDE1MDAsIGkzMiAxMCB7ey4qfX0gQFtbRlAxNl1d LCB7ey4qfX0gfQorLy8gQ0hFQ0stVUJTQU46IEBbW1NDSEFSOi4qXV0gPSBw cml2YXRlIHVubmFtZWRfYWRkciBjb25zdGFudCB7IGkxNiwgaTE2LCBbMTQg eCBpOF0gfSB7IGkxNiAwLCBpMTYgNywgWzE0IHggaThdIGMiJ3NpZ25lZCBj aGFyJ1wwMCIgfQorLy8gQ0hFQ0stVUJTQU46IEBbW0xJTkVfMTUwMDouKl1d ID0ge3suKn19LCBpMzIgMTUwMCwgaTMyIDEwIHt7Lip9fSBAW1tGUDE2XV0s IHt7Lip9fSB9CisvLyBDSEVDSy1VQlNBTjogQFtbTElORV8xNjAwOi4qXV0g PSB7ey4qfX0sIGkzMiAxNjAwLCBpMzIgMTAge3suKn19IEB7ey4qfX0gfQog CiAvLyBDSEVDSy1OVUxMOiBAW1tMSU5FXzEwMDouKl1dID0gcHJpdmF0ZSB1 bm5hbWVkX2FkZHIgZ2xvYmFsIHt7Lip9fSwgaTMyIDEwMCwgaTMyIDUge3su Kn19CiAKQEAgLTIwOSwxMCArMjIwLDExIEBACiAgIC8vIENIRUNLLUNPTU1P TjogJVtbSU5CT1VORFM6LipdXSA9IGljbXAgdWxlIGkxMjggJXt7Lip9fSwg LTIwMjgyNDA5NjAzNjUxNjcwNDIzOTQ3MjUxMjg2MDE2CiAgIC8vIENIRUNL LUNPTU1PTi1ORVhUOiBiciBpMSAlW1tJTkJPVU5EU11dCiAKLSAgLy8gQ0hF Q0stVUJTQU46IGNhbGwgdm9pZCBAX191YnNhbl9oYW5kbGVfZmxvYXRfY2Fz dF9vdmVyZmxvdygKKyAgLy8gQ0hFQ0stVUJTQU46IGNhbGwgdm9pZCBAX191 YnNhbl9oYW5kbGVfZmxvYXRfY2FzdF9vdmVyZmxvdyhpOCogYml0Y2FzdCAo e3suKn19IEBbW0xJTkVfMTAwMF1dIHRvIGk4KiksCiAKICAgLy8gQ0hFQ0st VFJBUDogICAgICBjYWxsIHZvaWQgQGxsdm0udHJhcCgpIFtbTlJfTlVXXV0K ICAgLy8gQ0hFQ0stVFJBUC1ORVhUOiB1bnJlYWNoYWJsZQorI2xpbmUgMTAw MAogICByZXR1cm4gbjsKIH0KIApAQCAtMjIzLDEwICsyMzUsMTEgQEAKICAg Ly8gQ0hFQ0stQ09NTU9OOiAlW1tJTkJPVU5EUzouKl1dID0gYW5kIGkxICVb W0dFXV0sICVbW0xFXV0KICAgLy8gQ0hFQ0stQ09NTU9OLU5FWFQ6IGJyIGkx ICVbW0lOQk9VTkRTXV0KIAotICAvLyBDSEVDSy1VQlNBTjogY2FsbCB2b2lk IEBfX3Vic2FuX2hhbmRsZV9mbG9hdF9jYXN0X292ZXJmbG93KAorICAvLyBD SEVDSy1VQlNBTjogY2FsbCB2b2lkIEBfX3Vic2FuX2hhbmRsZV9mbG9hdF9j YXN0X292ZXJmbG93KGk4KiBiaXRjYXN0ICh7ey4qfX0gQFtbTElORV8xMTAw XV0gdG8gaTgqKSwKIAogICAvLyBDSEVDSy1UUkFQOiAgICAgIGNhbGwgdm9p ZCBAbGx2bS50cmFwKCkgW1tOUl9OVVddXQogICAvLyBDSEVDSy1UUkFQLU5F WFQ6IHVucmVhY2hhYmxlCisjbGluZSAxMTAwCiAgICpwID0gbjsKIH0KIApA QCAtMjM5LDEwICsyNTIsMTEgQEAKIAogICAvLyBDSEVDSy1VQlNBTjogJVtb Q0FTVDouKl1dID0gYml0Y2FzdCBmbG9hdCAlW1tGXV0gdG8gaTMyCiAgIC8v IENIRUNLLVVCU0FOOiAlW1tBUkc6LipdXSA9IHpleHQgaTMyICVbW0NBU1Rd XSB0byBpNjQKLSAgLy8gQ0hFQ0stVUJTQU46IGNhbGwgdm9pZCBAX191YnNh bl9oYW5kbGVfZmxvYXRfY2FzdF9vdmVyZmxvdyh7ey4qfX0sIGk2NCAlW1tB UkddXQorICAvLyBDSEVDSy1VQlNBTjogY2FsbCB2b2lkIEBfX3Vic2FuX2hh bmRsZV9mbG9hdF9jYXN0X292ZXJmbG93KGk4KiBiaXRjYXN0ICh7ey4qfX0g QFtbTElORV8xMjAwXV0gdG8gaTgqKSwgaTY0ICVbW0FSR11dCiAKICAgLy8g Q0hFQ0stVFJBUDogICAgICBjYWxsIHZvaWQgQGxsdm0udHJhcCgpIFtbTlJf TlVXXV0KICAgLy8gQ0hFQ0stVFJBUC1ORVhUOiB1bnJlYWNoYWJsZQorI2xp bmUgMTIwMAogICByZXR1cm4gZjsKIH0KIApAQCAtMjU3LDEwICsyNzEsMTEg QEAKIAogICAvLyBDSEVDSy1VQlNBTjogc3RvcmUgeDg2X2ZwODAgJVtbRl1d LCB4ODZfZnA4MCogJVtbQUxMT0NBOi4qXV0sICFub3Nhbml0aXplCiAgIC8v IENIRUNLLVVCU0FOOiAlW1tBUkc6LipdXSA9IHB0cnRvaW50IHg4Nl9mcDgw KiAlW1tBTExPQ0FdXSB0byBpNjQKLSAgLy8gQ0hFQ0stVUJTQU46IGNhbGwg dm9pZCBAX191YnNhbl9oYW5kbGVfZmxvYXRfY2FzdF9vdmVyZmxvdyh7ey4q fX0sIGk2NCAlW1tBUkddXQorICAvLyBDSEVDSy1VQlNBTjogY2FsbCB2b2lk IEBfX3Vic2FuX2hhbmRsZV9mbG9hdF9jYXN0X292ZXJmbG93KGk4KiBiaXRj YXN0ICh7ey4qfX0gQFtbTElORV8xMzAwXV0gdG8gaTgqKSwgaTY0ICVbW0FS R11dCiAKICAgLy8gQ0hFQ0stVFJBUDogICAgICBjYWxsIHZvaWQgQGxsdm0u dHJhcCgpIFtbTlJfTlVXXV0KICAgLy8gQ0hFQ0stVFJBUC1ORVhUOiB1bnJl YWNoYWJsZQorI2xpbmUgMTMwMAogICByZXR1cm4gbGQ7CiB9CiAKQEAgLTI3 MSwxMCArMjg2LDExIEBACiAgIC8vIENIRUNLLUNPTU1PTjogJVtbSU5CT1VO RFM6LipdXSA9IGFuZCBpMSAlW1tHRV1dLCAlW1tMRV1dCiAgIC8vIENIRUNL LUNPTU1PTi1ORVhUOiBiciBpMSAlW1tJTkJPVU5EU11dCiAKLSAgLy8gQ0hF Q0stVUJTQU46IGNhbGwgdm9pZCBAX191YnNhbl9oYW5kbGVfZmxvYXRfY2Fz dF9vdmVyZmxvdygKKyAgLy8gQ0hFQ0stVUJTQU46IGNhbGwgdm9pZCBAX191 YnNhbl9oYW5kbGVfZmxvYXRfY2FzdF9vdmVyZmxvdyhpOCogYml0Y2FzdCAo e3suKn19IEBbW0xJTkVfMTQwMF1dIHRvIGk4KiksCiAKICAgLy8gQ0hFQ0st VFJBUDogICAgICBjYWxsIHZvaWQgQGxsdm0udHJhcCgpIFtbTlJfTlVXXV0K ICAgLy8gQ0hFQ0stVFJBUC1ORVhUOiB1bnJlYWNoYWJsZQorI2xpbmUgMTQw MAogICByZXR1cm4gZjsKIH0KIApAQCAtMjg1LDEwICszMDEsMTEgQEAKICAg Ly8gQ0hFQ0stQ09NTU9OOiAlW1tJTkJPVU5EUzouKl1dID0gYW5kIGkxICVb W0dFXV0sICVbW0xFXV0KICAgLy8gQ0hFQ0stQ09NTU9OLU5FWFQ6IGJyIGkx ICVbW0lOQk9VTkRTXV0KIAotICAvLyBDSEVDSy1VQlNBTjogY2FsbCB2b2lk IEBfX3Vic2FuX2hhbmRsZV9mbG9hdF9jYXN0X292ZXJmbG93KAorICAvLyBD SEVDSy1VQlNBTjogY2FsbCB2b2lkIEBfX3Vic2FuX2hhbmRsZV9mbG9hdF9j YXN0X292ZXJmbG93KGk4KiBiaXRjYXN0ICh7ey4qfX0gQFtbTElORV8xNTAw XV0gdG8gaTgqKSwKIAogICAvLyBDSEVDSy1UUkFQOiAgICAgIGNhbGwgdm9p ZCBAbGx2bS50cmFwKCkgW1tOUl9OVVddXQogICAvLyBDSEVDSy1UUkFQLU5F WFQ6IHVucmVhY2hhYmxlCisjbGluZSAxNTAwCiAgIHJldHVybiAqcDsKIH0K IApAQCAtMzAxLDEwICszMTgsMTEgQEAKICAgLy8gQ0hFQ0stQ09NTU9OOiAl W1tJTkJPVU5EUzouKl1dID0geG9yIGkxICVbW09VVE9GQk9VTkRTXV0sIHRy dWUKICAgLy8gQ0hFQ0stQ09NTU9OLU5FWFQ6IGJyIGkxICVbW0lOQk9VTkRT XV0KIAotICAvLyBDSEVDSy1VQlNBTjogY2FsbCB2b2lkIEBfX3Vic2FuX2hh bmRsZV9mbG9hdF9jYXN0X292ZXJmbG93KAorICAvLyBDSEVDSy1VQlNBTjog Y2FsbCB2b2lkIEBfX3Vic2FuX2hhbmRsZV9mbG9hdF9jYXN0X292ZXJmbG93 KGk4KiBiaXRjYXN0ICh7ey4qfX0gQFtbTElORV8xNjAwXV0gdG8gaTgqKSwK IAogICAvLyBDSEVDSy1UUkFQOiAgICAgIGNhbGwgdm9pZCBAbGx2bS50cmFw KCkgW1tOUl9OVVddXQogICAvLyBDSEVDSy1UUkFQLU5FWFQ6IHVucmVhY2hh YmxlCisjbGluZSAxNjAwCiAgIHJldHVybiBmOwogfQogCkluZGV4OiBsaWIv Q29kZUdlbi9Db2RlR2VuRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLSBsaWIvQ29kZUdlbi9Db2RlR2VuRnVuY3Rpb24uaAorKysgbGli L0NvZGVHZW4vQ29kZUdlbkZ1bmN0aW9uLmgKQEAgLTI3MTAsMTMgKzI3MTAs MTMgQEAKICAgLy8vIEVtaXQgYSBjb252ZXJzaW9uIGZyb20gdGhlIHNwZWNp ZmllZCB0eXBlIHRvIHRoZSBzcGVjaWZpZWQgZGVzdGluYXRpb24KICAgLy8v IHR5cGUsIGJvdGggb2Ygd2hpY2ggYXJlIExMVk0gc2NhbGFyIHR5cGVzLgog ICBsbHZtOjpWYWx1ZSAqRW1pdFNjYWxhckNvbnZlcnNpb24obGx2bTo6VmFs dWUgKlNyYywgUXVhbFR5cGUgU3JjVHksCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBRdWFsVHlwZSBEc3RUeSk7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBRdWFsVHlwZSBEc3RUeSwgU291 cmNlTG9jYXRpb24gTG9jKTsKIAogICAvLy8gRW1pdCBhIGNvbnZlcnNpb24g ZnJvbSB0aGUgc3BlY2lmaWVkIGNvbXBsZXggdHlwZSB0byB0aGUgc3BlY2lm aWVkCiAgIC8vLyBkZXN0aW5hdGlvbiB0eXBlLCB3aGVyZSB0aGUgZGVzdGlu YXRpb24gdHlwZSBpcyBhbiBMTFZNIHNjYWxhciB0eXBlLgogICBsbHZtOjpW YWx1ZSAqRW1pdENvbXBsZXhUb1NjYWxhckNvbnZlcnNpb24oQ29tcGxleFBh aXJUeSBTcmMsIFF1YWxUeXBlIFNyY1R5LAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUXVhbFR5cGUgRHN0VHkpOwot CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBRdWFsVHlwZSBEc3RUeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFNvdXJjZUxvY2F0aW9uIExvYyk7CiAKICAg Ly8vIEVtaXRBZ2dFeHByIC0gRW1pdCB0aGUgY29tcHV0YXRpb24gb2YgdGhl IHNwZWNpZmllZCBleHByZXNzaW9uCiAgIC8vLyBvZiBhZ2dyZWdhdGUgdHlw ZS4gIFRoZSByZXN1bHQgaXMgY29tcHV0ZWQgaW50byB0aGUgZ2l2ZW4gc2xv dCwKSW5kZXg6IGxpYi9Db2RlR2VuL0NHU3RtdE9wZW5NUC5jcHAKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0gbGliL0NvZGVHZW4vQ0dTdG10T3Blbk1Q LmNwcAorKysgbGliL0NvZGVHZW4vQ0dTdG10T3Blbk1QLmNwcApAQCAtMTA1 Niw3ICsxMDU2LDggQEAKICAgICAgIGlmICghQy0+Z2V0SGVscGVyQ2h1bmtT aXplKCkgfHwgIU91dGVyUmVnaW9uKSB7CiAgICAgICAgIENodW5rID0gQ0dG LkVtaXRTY2FsYXJFeHByKENoKTsKICAgICAgICAgQ2h1bmsgPSBDR0YuRW1p dFNjYWxhckNvbnZlcnNpb24oQ2h1bmssIENoLT5nZXRUeXBlKCksCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMuZ2V0SXRl cmF0aW9uVmFyaWFibGUoKS0+Z2V0VHlwZSgpKTsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUy5nZXRJdGVyYXRpb25WYXJp YWJsZSgpLT5nZXRUeXBlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFMuZ2V0TG9jU3RhcnQoKSk7CiAgICAgICB9CiAg ICAgfQogICB9CkBAIC0xNjczLDM3ICsxNjc0LDM5IEBACiB9CiAKIHN0YXRp YyBsbHZtOjpWYWx1ZSAqY29udmVydFRvU2NhbGFyVmFsdWUoQ29kZUdlbkZ1 bmN0aW9uICZDR0YsIFJWYWx1ZSBWYWwsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFF1YWxUeXBlIFNyY1R5cGUsIFF1YWxU eXBlIERlc3RUeXBlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFF1YWxUeXBlIFNyY1R5cGUsIFF1YWxUeXBlIERlc3RU eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBTb3VyY2VMb2NhdGlvbiBMb2MpIHsKICAgYXNzZXJ0KENHRi5oYXNTY2Fs YXJFdmFsdWF0aW9uS2luZChEZXN0VHlwZSkgJiYKICAgICAgICAgICJEZXN0 VHlwZSBtdXN0IGhhdmUgc2NhbGFyIGV2YWx1YXRpb24ga2luZC4iKTsKICAg YXNzZXJ0KCFWYWwuaXNBZ2dyZWdhdGUoKSAmJiAiTXVzdCBiZSBhIHNjYWxh ciBvciBjb21wbGV4LiIpOwogICByZXR1cm4gVmFsLmlzU2NhbGFyKCkKLSAg ICAgICAgICAgICA/IENHRi5FbWl0U2NhbGFyQ29udmVyc2lvbihWYWwuZ2V0 U2NhbGFyVmFsKCksIFNyY1R5cGUsIERlc3RUeXBlKQorICAgICAgICAgICAg ID8gQ0dGLkVtaXRTY2FsYXJDb252ZXJzaW9uKFZhbC5nZXRTY2FsYXJWYWwo KSwgU3JjVHlwZSwgRGVzdFR5cGUsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTG9jKQogICAgICAgICAgICAgIDogQ0dGLkVt aXRDb21wbGV4VG9TY2FsYXJDb252ZXJzaW9uKFZhbC5nZXRDb21wbGV4VmFs KCksIFNyY1R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgRGVzdFR5cGUpOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlc3RUeXBlLCBM b2MpOwogfQogCiBzdGF0aWMgQ29kZUdlbkZ1bmN0aW9uOjpDb21wbGV4UGFp clR5CiBjb252ZXJ0VG9Db21wbGV4VmFsdWUoQ29kZUdlbkZ1bmN0aW9uICZD R0YsIFJWYWx1ZSBWYWwsIFF1YWxUeXBlIFNyY1R5cGUsCi0gICAgICAgICAg ICAgICAgICAgICAgUXVhbFR5cGUgRGVzdFR5cGUpIHsKKyAgICAgICAgICAg ICAgICAgICAgICBRdWFsVHlwZSBEZXN0VHlwZSwgU291cmNlTG9jYXRpb24g TG9jKSB7CiAgIGFzc2VydChDR0YuZ2V0RXZhbHVhdGlvbktpbmQoRGVzdFR5 cGUpID09IFRFS19Db21wbGV4ICYmCiAgICAgICAgICAiRGVzdFR5cGUgbXVz dCBoYXZlIGNvbXBsZXggZXZhbHVhdGlvbiBraW5kLiIpOwogICBDb2RlR2Vu RnVuY3Rpb246OkNvbXBsZXhQYWlyVHkgQ29tcGxleFZhbDsKICAgaWYgKFZh bC5pc1NjYWxhcigpKSB7CiAgICAgLy8gQ29udmVydCB0aGUgaW5wdXQgZWxl bWVudCB0byB0aGUgZWxlbWVudCB0eXBlIG9mIHRoZSBjb21wbGV4LgogICAg IGF1dG8gRGVzdEVsZW1lbnRUeXBlID0gRGVzdFR5cGUtPmNhc3RBczxDb21w bGV4VHlwZT4oKS0+Z2V0RWxlbWVudFR5cGUoKTsKLSAgICBhdXRvIFNjYWxh clZhbCA9Ci0gICAgICAgIENHRi5FbWl0U2NhbGFyQ29udmVyc2lvbihWYWwu Z2V0U2NhbGFyVmFsKCksIFNyY1R5cGUsIERlc3RFbGVtZW50VHlwZSk7Cisg ICAgYXV0byBTY2FsYXJWYWwgPSBDR0YuRW1pdFNjYWxhckNvbnZlcnNpb24o VmFsLmdldFNjYWxhclZhbCgpLCBTcmNUeXBlLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlc3RFbGVtZW50VHlw ZSwgTG9jKTsKICAgICBDb21wbGV4VmFsID0gQ29kZUdlbkZ1bmN0aW9uOjpD b21wbGV4UGFpclR5KAogICAgICAgICBTY2FsYXJWYWwsIGxsdm06OkNvbnN0 YW50OjpnZXROdWxsVmFsdWUoU2NhbGFyVmFsLT5nZXRUeXBlKCkpKTsKICAg fSBlbHNlIHsKICAgICBhc3NlcnQoVmFsLmlzQ29tcGxleCgpICYmICJNdXN0 IGJlIGEgc2NhbGFyIG9yIGNvbXBsZXguIik7CiAgICAgYXV0byBTcmNFbGVt ZW50VHlwZSA9IFNyY1R5cGUtPmNhc3RBczxDb21wbGV4VHlwZT4oKS0+Z2V0 RWxlbWVudFR5cGUoKTsKICAgICBhdXRvIERlc3RFbGVtZW50VHlwZSA9IERl c3RUeXBlLT5jYXN0QXM8Q29tcGxleFR5cGU+KCktPmdldEVsZW1lbnRUeXBl KCk7CiAgICAgQ29tcGxleFZhbC5maXJzdCA9IENHRi5FbWl0U2NhbGFyQ29u dmVyc2lvbigKLSAgICAgICAgVmFsLmdldENvbXBsZXhWYWwoKS5maXJzdCwg U3JjRWxlbWVudFR5cGUsIERlc3RFbGVtZW50VHlwZSk7CisgICAgICAgIFZh bC5nZXRDb21wbGV4VmFsKCkuZmlyc3QsIFNyY0VsZW1lbnRUeXBlLCBEZXN0 RWxlbWVudFR5cGUsIExvYyk7CiAgICAgQ29tcGxleFZhbC5zZWNvbmQgPSBD R0YuRW1pdFNjYWxhckNvbnZlcnNpb24oCi0gICAgICAgIFZhbC5nZXRDb21w bGV4VmFsKCkuc2Vjb25kLCBTcmNFbGVtZW50VHlwZSwgRGVzdEVsZW1lbnRU eXBlKTsKKyAgICAgICAgVmFsLmdldENvbXBsZXhWYWwoKS5zZWNvbmQsIFNy Y0VsZW1lbnRUeXBlLCBEZXN0RWxlbWVudFR5cGUsIExvYyk7CiAgIH0KICAg cmV0dXJuIENvbXBsZXhWYWw7CiB9CkBAIC0xNzIwLDE2ICsxNzIzLDE2IEBA CiB9CiAKIHN0YXRpYyB2b2lkIGVtaXRTaW1wbGVTdG9yZShDb2RlR2VuRnVu Y3Rpb24gJkNHRiwgTFZhbHVlIExWYWwsIFJWYWx1ZSBSVmFsLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFF1YWxUeXBlIFJWYWxUeSkgeworICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFF1YWxUeXBlIFJWYWxUeSwgU291 cmNlTG9jYXRpb24gTG9jKSB7CiAgIHN3aXRjaCAoQ0dGLmdldEV2YWx1YXRp b25LaW5kKExWYWwuZ2V0VHlwZSgpKSkgewogICBjYXNlIFRFS19TY2FsYXI6 Ci0gICAgQ0dGLkVtaXRTdG9yZVRocm91Z2hMVmFsdWUoCi0gICAgICAgIFJW YWx1ZTo6Z2V0KGNvbnZlcnRUb1NjYWxhclZhbHVlKENHRiwgUlZhbCwgUlZh bFR5LCBMVmFsLmdldFR5cGUoKSkpLAotICAgICAgICBMVmFsKTsKKyAgICBD R0YuRW1pdFN0b3JlVGhyb3VnaExWYWx1ZShSVmFsdWU6OmdldChjb252ZXJ0 VG9TY2FsYXJWYWx1ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgQ0dGLCBSVmFsLCBSVmFsVHksIExWYWwuZ2V0VHlwZSgpLCBMb2Mp KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMVmFsKTsKICAg ICBicmVhazsKICAgY2FzZSBURUtfQ29tcGxleDoKICAgICBDR0YuRW1pdFN0 b3JlT2ZDb21wbGV4KAotICAgICAgICBjb252ZXJ0VG9Db21wbGV4VmFsdWUo Q0dGLCBSVmFsLCBSVmFsVHksIExWYWwuZ2V0VHlwZSgpKSwgTFZhbCwKKyAg ICAgICAgY29udmVydFRvQ29tcGxleFZhbHVlKENHRiwgUlZhbCwgUlZhbFR5 LCBMVmFsLmdldFR5cGUoKSwgTG9jKSwgTFZhbCwKICAgICAgICAgLyppc0lu aXQ9Ki9mYWxzZSk7CiAgICAgYnJlYWs7CiAgIGNhc2UgVEVLX0FnZ3JlZ2F0 ZToKQEAgLTE3NTcsNyArMTc2MCw3IEBACiAgIC8vIGxpc3QuCiAgIGlmIChJ c1NlcUNzdCkKICAgICBDR0YuQ0dNLmdldE9wZW5NUFJ1bnRpbWUoKS5lbWl0 Rmx1c2goQ0dGLCBsbHZtOjpOb25lLCBMb2MpOwotICBlbWl0U2ltcGxlU3Rv cmUoQ0dGLFZMVmFsdWUsIFJlcywgWC0+Z2V0VHlwZSgpLmdldE5vblJlZmVy ZW5jZVR5cGUoKSk7CisgIGVtaXRTaW1wbGVTdG9yZShDR0YsIFZMVmFsdWUs IFJlcywgWC0+Z2V0VHlwZSgpLmdldE5vblJlZmVyZW5jZVR5cGUoKSwgTG9j KTsKIH0KIAogc3RhdGljIHZvaWQgRW1pdE9NUEF0b21pY1dyaXRlRXhwcihD b2RlR2VuRnVuY3Rpb24gJkNHRiwgYm9vbCBJc1NlcUNzdCwKQEAgLTE5Mjgs MTIgKzE5MzEsMTQgQEAKIH0KIAogc3RhdGljIFJWYWx1ZSBjb252ZXJ0VG9U eXBlKENvZGVHZW5GdW5jdGlvbiAmQ0dGLCBSVmFsdWUgVmFsdWUsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgUXVhbFR5cGUgU291cmNlVHlwZSwg UXVhbFR5cGUgUmVzVHlwZSkgeworICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFF1YWxUeXBlIFNvdXJjZVR5cGUsIFF1YWxUeXBlIFJlc1R5cGUsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlTG9jYXRpb24gTG9j KSB7CiAgIHN3aXRjaCAoQ0dGLmdldEV2YWx1YXRpb25LaW5kKFJlc1R5cGUp KSB7CiAgIGNhc2UgVEVLX1NjYWxhcjoKLSAgICByZXR1cm4gUlZhbHVlOjpn ZXQoY29udmVydFRvU2NhbGFyVmFsdWUoQ0dGLCBWYWx1ZSwgU291cmNlVHlw ZSwgUmVzVHlwZSkpOworICAgIHJldHVybiBSVmFsdWU6OmdldCgKKyAgICAg ICAgY29udmVydFRvU2NhbGFyVmFsdWUoQ0dGLCBWYWx1ZSwgU291cmNlVHlw ZSwgUmVzVHlwZSwgTG9jKSk7CiAgIGNhc2UgVEVLX0NvbXBsZXg6IHsKLSAg ICBhdXRvIFJlcyA9IGNvbnZlcnRUb0NvbXBsZXhWYWx1ZShDR0YsIFZhbHVl LCBTb3VyY2VUeXBlLCBSZXNUeXBlKTsKKyAgICBhdXRvIFJlcyA9IGNvbnZl cnRUb0NvbXBsZXhWYWx1ZShDR0YsIFZhbHVlLCBTb3VyY2VUeXBlLCBSZXNU eXBlLCBMb2MpOwogICAgIHJldHVybiBSVmFsdWU6OmdldENvbXBsZXgoUmVz LmZpcnN0LCBSZXMuc2Vjb25kKTsKICAgfQogICBjYXNlIFRFS19BZ2dyZWdh dGU6CkBAIC0xOTk4LDcgKzIwMDMsNyBAQAogICAgIC8vICd4JyBpcyBzaW1w bHkgcmV3cml0dGVuIHdpdGggc29tZSAnZXhwcicuCiAgICAgTmV3VlZhbFR5 cGUgPSBYLT5nZXRUeXBlKCkuZ2V0Tm9uUmVmZXJlbmNlVHlwZSgpOwogICAg IEV4cHJSVmFsdWUgPSBjb252ZXJ0VG9UeXBlKENHRiwgRXhwclJWYWx1ZSwg RS0+Z2V0VHlwZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFgtPmdldFR5cGUoKS5nZXROb25SZWZlcmVuY2VUeXBlKCkpOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFgtPmdldFR5cGUoKS5nZXROb25S ZWZlcmVuY2VUeXBlKCksIExvYyk7CiAgICAgYXV0byAmJkdlbiA9IFsmQ0dG LCAmTmV3VlZhbCwgRXhwclJWYWx1ZV0oUlZhbHVlIFhSVmFsdWUpIC0+IFJW YWx1ZSB7CiAgICAgICBOZXdWVmFsID0gWFJWYWx1ZTsKICAgICAgIHJldHVy biBFeHByUlZhbHVlOwpAQCAtMjAxMyw3ICsyMDE4LDcgQEAKICAgICB9CiAg IH0KICAgLy8gRW1pdCBwb3N0LXVwZGF0ZSBzdG9yZSB0byAndicgb2Ygb2xk L25ldyAneCcgdmFsdWUuCi0gIGVtaXRTaW1wbGVTdG9yZShDR0YsIFZMVmFs dWUsIE5ld1ZWYWwsIE5ld1ZWYWxUeXBlKTsKKyAgZW1pdFNpbXBsZVN0b3Jl KENHRiwgVkxWYWx1ZSwgTmV3VlZhbCwgTmV3VlZhbFR5cGUsIExvYyk7CiAg IC8vIE9wZW5NUCwgMi4xMi42LCBhdG9taWMgQ29uc3RydWN0CiAgIC8vIEFu eSBhdG9taWMgY29uc3RydWN0IHdpdGggYSBzZXFfY3N0IGNsYXVzZSBmb3Jj ZXMgdGhlIGF0b21pY2FsbHkKICAgLy8gcGVyZm9ybWVkIG9wZXJhdGlvbiB0 byBpbmNsdWRlIGFuIGltcGxpY2l0IGZsdXNoIG9wZXJhdGlvbiB3aXRob3V0 IGEKSW5kZXg6IGxpYi9Db2RlR2VuL0NHT3Blbk1QUnVudGltZS5jcHAKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0gbGliL0NvZGVHZW4vQ0dPcGVuTVBS dW50aW1lLmNwcAorKysgbGliL0NvZGVHZW4vQ0dPcGVuTVBSdW50aW1lLmNw cApAQCAtMTI4NCwxMiArMTI4NCwxMiBAQAogfQogCiBzdGF0aWMgdm9pZCBl bWl0SWZTdG10KENvZGVHZW5GdW5jdGlvbiAmQ0dGLCBsbHZtOjpWYWx1ZSAq SWZDb25kLAotICAgICAgICAgICAgICAgICAgICAgICBPcGVuTVBEaXJlY3Rp dmVLaW5kIEtpbmQsCisgICAgICAgICAgICAgICAgICAgICAgIE9wZW5NUERp cmVjdGl2ZUtpbmQgS2luZCwgU291cmNlTG9jYXRpb24gTG9jLAogICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBSZWdpb25Db2RlR2VuVHkgJkJvZHlP cEdlbikgewogICBsbHZtOjpWYWx1ZSAqQ2FsbEJvb2wgPSBDR0YuRW1pdFNj YWxhckNvbnZlcnNpb24oCiAgICAgICBJZkNvbmQsCiAgICAgICBDR0YuZ2V0 Q29udGV4dCgpLmdldEludFR5cGVGb3JCaXR3aWR0aCgvKkRlc3RXaWR0aD0q LzMyLCAvKlNpZ25lZD0qL3RydWUpLAotICAgICAgQ0dGLmdldENvbnRleHQo KS5Cb29sVHkpOworICAgICAgQ0dGLmdldENvbnRleHQoKS5Cb29sVHksIExv Yyk7CiAKICAgYXV0byAqVGhlbkJsb2NrID0gQ0dGLmNyZWF0ZUJhc2ljQmxv Y2soIm9tcF9pZi50aGVuIik7CiAgIGF1dG8gKkNvbnRCbG9jayA9IENHRi5j cmVhdGVCYXNpY0Jsb2NrKCJvbXBfaWYuZW5kIik7CkBAIC0xMzE1LDEzICsx MzE1LDE0IEBACiAgICAgICBDR0YuRW1pdFJ1bnRpbWVDYWxsKGNyZWF0ZVJ1 bnRpbWVGdW5jdGlvbihPTVBSVExfX2ttcGNfbWFzdGVyKSwgQXJncyk7CiAg IHR5cGVkZWYgQ2FsbEVuZENsZWFudXA8c3RkOjpleHRlbnQ8ZGVjbHR5cGUo QXJncyk+Ojp2YWx1ZT4KICAgICAgIE1hc3RlckNhbGxFbmRDbGVhbnVwOwot ICBlbWl0SWZTdG10KENHRiwgSXNNYXN0ZXIsIE9NUERfbWFzdGVyLCBbJl0o Q29kZUdlbkZ1bmN0aW9uICZDR0YpIC0+IHZvaWQgewotICAgIENvZGVHZW5G dW5jdGlvbjo6UnVuQ2xlYW51cHNTY29wZSBTY29wZShDR0YpOwotICAgIENH Ri5FSFN0YWNrLnB1c2hDbGVhbnVwPE1hc3RlckNhbGxFbmRDbGVhbnVwPigK LSAgICAgICAgTm9ybWFsQW5kRUhDbGVhbnVwLCBjcmVhdGVSdW50aW1lRnVu Y3Rpb24oT01QUlRMX19rbXBjX2VuZF9tYXN0ZXIpLAotICAgICAgICBsbHZt OjptYWtlQXJyYXlSZWYoQXJncykpOwotICAgIE1hc3Rlck9wR2VuKENHRik7 Ci0gIH0pOworICBlbWl0SWZTdG10KAorICAgICAgQ0dGLCBJc01hc3Rlciwg T01QRF9tYXN0ZXIsIExvYywgWyZdKENvZGVHZW5GdW5jdGlvbiAmQ0dGKSAt PiB2b2lkIHsKKyAgICAgICAgQ29kZUdlbkZ1bmN0aW9uOjpSdW5DbGVhbnVw c1Njb3BlIFNjb3BlKENHRik7CisgICAgICAgIENHRi5FSFN0YWNrLnB1c2hD bGVhbnVwPE1hc3RlckNhbGxFbmRDbGVhbnVwPigKKyAgICAgICAgICAgIE5v cm1hbEFuZEVIQ2xlYW51cCwgY3JlYXRlUnVudGltZUZ1bmN0aW9uKE9NUFJU TF9fa21wY19lbmRfbWFzdGVyKSwKKyAgICAgICAgICAgIGxsdm06Om1ha2VB cnJheVJlZihBcmdzKSk7CisgICAgICAgIE1hc3Rlck9wR2VuKENHRik7Cisg ICAgICB9KTsKIH0KIAogdm9pZCBDR09wZW5NUFJ1bnRpbWU6OmVtaXRUYXNr eWllbGRDYWxsKENvZGVHZW5GdW5jdGlvbiAmQ0dGLApAQCAtMTQ0NCwxOCAr MTQ0NSwxOSBAQAogICAgICAgQ0dGLkVtaXRSdW50aW1lQ2FsbChjcmVhdGVS dW50aW1lRnVuY3Rpb24oT01QUlRMX19rbXBjX3NpbmdsZSksIEFyZ3MpOwog ICB0eXBlZGVmIENhbGxFbmRDbGVhbnVwPHN0ZDo6ZXh0ZW50PGRlY2x0eXBl KEFyZ3MpPjo6dmFsdWU+CiAgICAgICBTaW5nbGVDYWxsRW5kQ2xlYW51cDsK LSAgZW1pdElmU3RtdChDR0YsIElzU2luZ2xlLCBPTVBEX3NpbmdsZSwgWyZd KENvZGVHZW5GdW5jdGlvbiAmQ0dGKSAtPiB2b2lkIHsKLSAgICBDb2RlR2Vu RnVuY3Rpb246OlJ1bkNsZWFudXBzU2NvcGUgU2NvcGUoQ0dGKTsKLSAgICBD R0YuRUhTdGFjay5wdXNoQ2xlYW51cDxTaW5nbGVDYWxsRW5kQ2xlYW51cD4o Ci0gICAgICAgIE5vcm1hbEFuZEVIQ2xlYW51cCwgY3JlYXRlUnVudGltZUZ1 bmN0aW9uKE9NUFJUTF9fa21wY19lbmRfc2luZ2xlKSwKLSAgICAgICAgbGx2 bTo6bWFrZUFycmF5UmVmKEFyZ3MpKTsKLSAgICBTaW5nbGVPcEdlbihDR0Yp OwotICAgIGlmIChEaWRJdCkgewotICAgICAgLy8gZGlkX2l0ID0gMTsKLSAg ICAgIENHRi5CdWlsZGVyLkNyZWF0ZUFsaWduZWRTdG9yZShDR0YuQnVpbGRl ci5nZXRJbnQzMigxKSwgRGlkSXQsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgRGlkSXQtPmdldEFsaWdubWVudCgpKTsKLSAgICB9 Ci0gIH0pOworICBlbWl0SWZTdG10KAorICAgICAgQ0dGLCBJc1NpbmdsZSwg T01QRF9zaW5nbGUsIExvYywgWyZdKENvZGVHZW5GdW5jdGlvbiAmQ0dGKSAt PiB2b2lkIHsKKyAgICAgICAgQ29kZUdlbkZ1bmN0aW9uOjpSdW5DbGVhbnVw c1Njb3BlIFNjb3BlKENHRik7CisgICAgICAgIENHRi5FSFN0YWNrLnB1c2hD bGVhbnVwPFNpbmdsZUNhbGxFbmRDbGVhbnVwPigKKyAgICAgICAgICAgIE5v cm1hbEFuZEVIQ2xlYW51cCwgY3JlYXRlUnVudGltZUZ1bmN0aW9uKE9NUFJU TF9fa21wY19lbmRfc2luZ2xlKSwKKyAgICAgICAgICAgIGxsdm06Om1ha2VB cnJheVJlZihBcmdzKSk7CisgICAgICAgIFNpbmdsZU9wR2VuKENHRik7Cisg ICAgICAgIGlmIChEaWRJdCkgeworICAgICAgICAgIC8vIGRpZF9pdCA9IDE7 CisgICAgICAgICAgQ0dGLkJ1aWxkZXIuQ3JlYXRlQWxpZ25lZFN0b3JlKENH Ri5CdWlsZGVyLmdldEludDMyKDEpLCBEaWRJdCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlkSXQtPmdldEFsaWdubWVu dCgpKTsKKyAgICAgICAgfQorICAgICAgfSk7CiAgIC8vIGNhbGwgX19rbXBj X2NvcHlwcml2YXRlKGlkZW50X3QgKiwgZ3RpZCwgPGJ1Zl9zaXplPiwgPGNv cHlwcml2YXRlIGxpc3Q+LAogICAvLyA8Y29weV9mdW5jPiwgZGlkX2l0KTsK ICAgaWYgKERpZEl0KSB7CkBAIC0xNzE5LDcgKzE3MjEsNyBAQAogICAgICAg Q0dGLkVtaXRSdW50aW1lQ2FsbChjcmVhdGVEaXNwYXRjaE5leHRGdW5jdGlv bihJVlNpemUsIElWU2lnbmVkKSwgQXJncyk7CiAgIHJldHVybiBDR0YuRW1p dFNjYWxhckNvbnZlcnNpb24oCiAgICAgICBDYWxsLCBDR0YuZ2V0Q29udGV4 dCgpLmdldEludFR5cGVGb3JCaXR3aWR0aCgzMiwgLyogU2lnbmVkICovIHRy dWUpLAotICAgICAgQ0dGLmdldENvbnRleHQoKS5Cb29sVHkpOworICAgICAg Q0dGLmdldENvbnRleHQoKS5Cb29sVHksIExvYyk7CiB9CiAKIHZvaWQgQ0dP cGVuTVBSdW50aW1lOjplbWl0TnVtVGhyZWFkc0NsYXVzZShDb2RlR2VuRnVu Y3Rpb24gJkNHRiwKSW5kZXg6IGxpYi9Db2RlR2VuL0NHRXhwclNjYWxhci5j cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbGliL0NvZGVHZW4vQ0dF eHByU2NhbGFyLmNwcAorKysgbGliL0NvZGVHZW4vQ0dFeHByU2NhbGFyLmNw cApAQCAtMTQzLDE3ICsxNDMsMTkgQEAKICAgLy8vIEVtaXQgYSBjaGVjayB0 aGF0IGEgY29udmVyc2lvbiB0byBvciBmcm9tIGEgZmxvYXRpbmctcG9pbnQg dHlwZSBkb2VzIG5vdAogICAvLy8gb3ZlcmZsb3cuCiAgIHZvaWQgRW1pdEZs b2F0Q29udmVyc2lvbkNoZWNrKFZhbHVlICpPcmlnU3JjLCBRdWFsVHlwZSBP cmlnU3JjVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg VmFsdWUgKlNyYywgUXVhbFR5cGUgU3JjVHlwZSwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUXVhbFR5cGUgRHN0VHlwZSwgbGx2bTo6VHlw ZSAqRHN0VHkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW YWx1ZSAqU3JjLCBRdWFsVHlwZSBTcmNUeXBlLCBRdWFsVHlwZSBEc3RUeXBl LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpUeXBl ICpEc3RUeSwgU291cmNlTG9jYXRpb24gTG9jKTsKIAogICAvLy8gRW1pdCBh IGNvbnZlcnNpb24gZnJvbSB0aGUgc3BlY2lmaWVkIHR5cGUgdG8gdGhlIHNw ZWNpZmllZCBkZXN0aW5hdGlvbgogICAvLy8gdHlwZSwgYm90aCBvZiB3aGlj aCBhcmUgTExWTSBzY2FsYXIgdHlwZXMuCi0gIFZhbHVlICpFbWl0U2NhbGFy Q29udmVyc2lvbihWYWx1ZSAqU3JjLCBRdWFsVHlwZSBTcmNUeSwgUXVhbFR5 cGUgRHN0VHkpOworICBWYWx1ZSAqRW1pdFNjYWxhckNvbnZlcnNpb24oVmFs dWUgKlNyYywgUXVhbFR5cGUgU3JjVHksIFF1YWxUeXBlIERzdFR5LAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlTG9jYXRpb24gTG9j KTsKIAogICAvLy8gRW1pdCBhIGNvbnZlcnNpb24gZnJvbSB0aGUgc3BlY2lm aWVkIGNvbXBsZXggdHlwZSB0byB0aGUgc3BlY2lmaWVkCiAgIC8vLyBkZXN0 aW5hdGlvbiB0eXBlLCB3aGVyZSB0aGUgZGVzdGluYXRpb24gdHlwZSBpcyBh biBMTFZNIHNjYWxhciB0eXBlLgogICBWYWx1ZSAqRW1pdENvbXBsZXhUb1Nj YWxhckNvbnZlcnNpb24oQ29kZUdlbkZ1bmN0aW9uOjpDb21wbGV4UGFpclR5 IFNyYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFF1YWxUeXBlIFNyY1R5LCBRdWFsVHlwZSBEc3RUeSk7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWFsVHlwZSBTcmNUeSwg UXVhbFR5cGUgRHN0VHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBTb3VyY2VMb2NhdGlvbiBMb2MpOwogCiAgIC8vLyBFbWl0 TnVsbFZhbHVlIC0gRW1pdCBhIHZhbHVlIHRoYXQgY29ycmVzcG9uZHMgdG8g bnVsbCBmb3IgdGhlIGdpdmVuIHR5cGUuCiAgIFZhbHVlICpFbWl0TnVsbFZh bHVlKFF1YWxUeXBlIFR5KTsKQEAgLTU5MywxMSArNTk1LDkgQEAKICAgcmV0 dXJuIEVtaXRQb2ludGVyVG9Cb29sQ29udmVyc2lvbihTcmMpOwogfQogCi12 b2lkIFNjYWxhckV4cHJFbWl0dGVyOjpFbWl0RmxvYXRDb252ZXJzaW9uQ2hl Y2soVmFsdWUgKk9yaWdTcmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUXVhbFR5cGUgT3JpZ1NyY1R5cGUs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgVmFsdWUgKlNyYywgUXVhbFR5cGUgU3JjVHlwZSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWFs VHlwZSBEc3RUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGxsdm06OlR5cGUgKkRzdFR5KSB7Cit2b2lk IFNjYWxhckV4cHJFbWl0dGVyOjpFbWl0RmxvYXRDb252ZXJzaW9uQ2hlY2so CisgICAgVmFsdWUgKk9yaWdTcmMsIFF1YWxUeXBlIE9yaWdTcmNUeXBlLCBW YWx1ZSAqU3JjLCBRdWFsVHlwZSBTcmNUeXBlLAorICAgIFF1YWxUeXBlIERz dFR5cGUsIGxsdm06OlR5cGUgKkRzdFR5LCBTb3VyY2VMb2NhdGlvbiBMb2Mp IHsKICAgQ29kZUdlbkZ1bmN0aW9uOjpTYW5pdGl6ZXJTY29wZSBTYW5TY29w ZSgmQ0dGKTsKICAgdXNpbmcgbGx2bTo6QVBGbG9hdDsKICAgdXNpbmcgbGx2 bTo6QVBTSW50OwpAQCAtNzIxLDE5ICs3MjEsMTggQEAKICAgICB9CiAgIH0K IAotICAvLyBGSVhNRTogUHJvdmlkZSBhIFNvdXJjZUxvY2F0aW9uLgotICBs bHZtOjpDb25zdGFudCAqU3RhdGljQXJnc1tdID0gewotICAgIENHRi5FbWl0 Q2hlY2tUeXBlRGVzY3JpcHRvcihPcmlnU3JjVHlwZSksCi0gICAgQ0dGLkVt aXRDaGVja1R5cGVEZXNjcmlwdG9yKERzdFR5cGUpCi0gIH07CisgIGxsdm06 OkNvbnN0YW50ICpTdGF0aWNBcmdzW10gPSB7Q0dGLkVtaXRDaGVja1NvdXJj ZUxvY2F0aW9uKExvYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgQ0dGLkVtaXRDaGVja1R5cGVEZXNjcmlwdG9yKE9yaWdTcmNUeXBl KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDR0YuRW1p dENoZWNrVHlwZURlc2NyaXB0b3IoRHN0VHlwZSl9OwogICBDR0YuRW1pdENo ZWNrKHN0ZDo6bWFrZV9wYWlyKENoZWNrLCBTYW5pdGl6ZXJLaW5kOjpGbG9h dENhc3RPdmVyZmxvdyksCiAgICAgICAgICAgICAgICAgImZsb2F0X2Nhc3Rf b3ZlcmZsb3ciLCBTdGF0aWNBcmdzLCBPcmlnU3JjKTsKIH0KIAogLy8vIEVt aXQgYSBjb252ZXJzaW9uIGZyb20gdGhlIHNwZWNpZmllZCB0eXBlIHRvIHRo ZSBzcGVjaWZpZWQgZGVzdGluYXRpb24gdHlwZSwKIC8vLyBib3RoIG9mIHdo aWNoIGFyZSBMTFZNIHNjYWxhciB0eXBlcy4KIFZhbHVlICpTY2FsYXJFeHBy RW1pdHRlcjo6RW1pdFNjYWxhckNvbnZlcnNpb24oVmFsdWUgKlNyYywgUXVh bFR5cGUgU3JjVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUXVhbFR5cGUgRHN0VHlwZSkgeworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWFs VHlwZSBEc3RUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBTb3VyY2VMb2NhdGlvbiBMb2MpIHsKICAgU3Jj VHlwZSA9IENHRi5nZXRDb250ZXh0KCkuZ2V0Q2Fub25pY2FsVHlwZShTcmNU eXBlKTsKICAgRHN0VHlwZSA9IENHRi5nZXRDb250ZXh0KCkuZ2V0Q2Fub25p Y2FsVHlwZShEc3RUeXBlKTsKICAgaWYgKFNyY1R5cGUgPT0gRHN0VHlwZSkg cmV0dXJuIFNyYzsKQEAgLTgwOCw3ICs4MDcsNyBAQAogICBpZiAoRHN0VHlw ZS0+aXNFeHRWZWN0b3JUeXBlKCkgJiYgIVNyY1R5cGUtPmlzVmVjdG9yVHlw ZSgpKSB7CiAgICAgLy8gQ2FzdCB0aGUgc2NhbGFyIHRvIGVsZW1lbnQgdHlw ZQogICAgIFF1YWxUeXBlIEVsdFR5ID0gRHN0VHlwZS0+Z2V0QXM8RXh0VmVj dG9yVHlwZT4oKS0+Z2V0RWxlbWVudFR5cGUoKTsKLSAgICBsbHZtOjpWYWx1 ZSAqRWx0ID0gRW1pdFNjYWxhckNvbnZlcnNpb24oU3JjLCBTcmNUeXBlLCBF bHRUeSk7CisgICAgbGx2bTo6VmFsdWUgKkVsdCA9IEVtaXRTY2FsYXJDb252 ZXJzaW9uKFNyYywgU3JjVHlwZSwgRWx0VHksIExvYyk7CiAKICAgICAvLyBT cGxhdCB0aGUgZWxlbWVudCBhY3Jvc3MgdG8gYWxsIGVsZW1lbnRzCiAgICAg dW5zaWduZWQgTnVtRWxlbWVudHMgPSBjYXN0PGxsdm06OlZlY3RvclR5cGU+ KERzdFR5KS0+Z2V0TnVtRWxlbWVudHMoKTsKQEAgLTgyOCw4ICs4MjcsOCBA QAogICAvLyBvciB0aGUgZGVzdGluYXRpb24gdHlwZSBpcyBhIGZsb2F0aW5n LXBvaW50IHR5cGUuCiAgIGlmIChDR0YuU2FuT3B0cy5oYXMoU2FuaXRpemVy S2luZDo6RmxvYXRDYXN0T3ZlcmZsb3cpICYmCiAgICAgICAoT3JpZ1NyY1R5 cGUtPmlzRmxvYXRpbmdUeXBlKCkgfHwgRHN0VHlwZS0+aXNGbG9hdGluZ1R5 cGUoKSkpCi0gICAgRW1pdEZsb2F0Q29udmVyc2lvbkNoZWNrKE9yaWdTcmMs IE9yaWdTcmNUeXBlLCBTcmMsIFNyY1R5cGUsIERzdFR5cGUsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgIERzdFR5KTsKKyAgICBFbWl0RmxvYXRD b252ZXJzaW9uQ2hlY2soT3JpZ1NyYywgT3JpZ1NyY1R5cGUsIFNyYywgU3Jj VHlwZSwgRHN0VHlwZSwgRHN0VHksCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIExvYyk7CiAKICAgLy8gQ2FzdCB0byBoYWxmIHRocm91Z2ggZmxv YXQgaWYgaGFsZiBpc24ndCBhIG5hdGl2ZSB0eXBlLgogICBpZiAoRHN0VHlw ZS0+aXNIYWxmVHlwZSgpICYmICFDR0YuZ2V0Q29udGV4dCgpLmdldExhbmdP cHRzKCkuTmF0aXZlSGFsZlR5cGUpIHsKQEAgLTg4NSwyNSArODg0LDI1IEBA CiAKIC8vLyBFbWl0IGEgY29udmVyc2lvbiBmcm9tIHRoZSBzcGVjaWZpZWQg Y29tcGxleCB0eXBlIHRvIHRoZSBzcGVjaWZpZWQKIC8vLyBkZXN0aW5hdGlv biB0eXBlLCB3aGVyZSB0aGUgZGVzdGluYXRpb24gdHlwZSBpcyBhbiBMTFZN IHNjYWxhciB0eXBlLgotVmFsdWUgKlNjYWxhckV4cHJFbWl0dGVyOjoKLUVt aXRDb21wbGV4VG9TY2FsYXJDb252ZXJzaW9uKENvZGVHZW5GdW5jdGlvbjo6 Q29tcGxleFBhaXJUeSBTcmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBRdWFsVHlwZSBTcmNUeSwgUXVhbFR5cGUgRHN0VHkpIHsKK1ZhbHVl ICpTY2FsYXJFeHByRW1pdHRlcjo6RW1pdENvbXBsZXhUb1NjYWxhckNvbnZl cnNpb24oCisgICAgQ29kZUdlbkZ1bmN0aW9uOjpDb21wbGV4UGFpclR5IFNy YywgUXVhbFR5cGUgU3JjVHksIFF1YWxUeXBlIERzdFR5LAorICAgIFNvdXJj ZUxvY2F0aW9uIExvYykgewogICAvLyBHZXQgdGhlIHNvdXJjZSBlbGVtZW50 IHR5cGUuCiAgIFNyY1R5ID0gU3JjVHktPmNhc3RBczxDb21wbGV4VHlwZT4o KS0+Z2V0RWxlbWVudFR5cGUoKTsKIAogICAvLyBIYW5kbGUgY29udmVyc2lv bnMgdG8gYm9vbCBmaXJzdCwgdGhleSBhcmUgc3BlY2lhbDogY29tcGFyaXNv bnMgYWdhaW5zdCAwLgogICBpZiAoRHN0VHktPmlzQm9vbGVhblR5cGUoKSkg ewogICAgIC8vICBDb21wbGV4ICE9IDAgIC0+IChSZWFsICE9IDApIHwgKElt YWcgIT0gMCkKLSAgICBTcmMuZmlyc3QgID0gRW1pdFNjYWxhckNvbnZlcnNp b24oU3JjLmZpcnN0LCBTcmNUeSwgRHN0VHkpOwotICAgIFNyYy5zZWNvbmQg PSBFbWl0U2NhbGFyQ29udmVyc2lvbihTcmMuc2Vjb25kLCBTcmNUeSwgRHN0 VHkpOworICAgIFNyYy5maXJzdCA9IEVtaXRTY2FsYXJDb252ZXJzaW9uKFNy Yy5maXJzdCwgU3JjVHksIERzdFR5LCBMb2MpOworICAgIFNyYy5zZWNvbmQg PSBFbWl0U2NhbGFyQ29udmVyc2lvbihTcmMuc2Vjb25kLCBTcmNUeSwgRHN0 VHksIExvYyk7CiAgICAgcmV0dXJuIEJ1aWxkZXIuQ3JlYXRlT3IoU3JjLmZp cnN0LCBTcmMuc2Vjb25kLCAidG9ib29sIik7CiAgIH0KIAogICAvLyBDOTkg Ni4zLjEuN3AyOiAiV2hlbiBhIHZhbHVlIG9mIGNvbXBsZXggdHlwZSBpcyBj b252ZXJ0ZWQgdG8gYSByZWFsIHR5cGUsCiAgIC8vIHRoZSBpbWFnaW5hcnkg cGFydCBvZiB0aGUgY29tcGxleCB2YWx1ZSBpcyBkaXNjYXJkZWQgYW5kIHRo ZSB2YWx1ZSBvZiB0aGUKICAgLy8gcmVhbCBwYXJ0IGlzIGNvbnZlcnRlZCBh Y2NvcmRpbmcgdG8gdGhlIGNvbnZlcnNpb24gcnVsZXMgZm9yIHRoZQogICAv LyBjb3JyZXNwb25kaW5nIHJlYWwgdHlwZS4KLSAgcmV0dXJuIEVtaXRTY2Fs YXJDb252ZXJzaW9uKFNyYy5maXJzdCwgU3JjVHksIERzdFR5KTsKKyAgcmV0 dXJuIEVtaXRTY2FsYXJDb252ZXJzaW9uKFNyYy5maXJzdCwgU3JjVHksIERz dFR5LCBMb2MpOwogfQogCiBWYWx1ZSAqU2NhbGFyRXhwckVtaXR0ZXI6OkVt aXROdWxsVmFsdWUoUXVhbFR5cGUgVHkpIHsKQEAgLTE1NTksNyArMTU1OCw4 IEBACiAgICAgbGx2bTo6VHlwZSAqRHN0VHkgPSBDb252ZXJ0VHlwZShEZXN0 VHkpOwogICAgIFZhbHVlICpFbHQgPSBWaXNpdChjb25zdF9jYXN0PEV4cHIq PihFKSk7CiAgICAgRWx0ID0gRW1pdFNjYWxhckNvbnZlcnNpb24oRWx0LCBF LT5nZXRUeXBlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg RGVzdFR5LT5nZXRBczxWZWN0b3JUeXBlPigpLT5nZXRFbGVtZW50VHlwZSgp KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXN0VHktPmdl dEFzPFZlY3RvclR5cGU+KCktPmdldEVsZW1lbnRUeXBlKCksCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgQ0UtPmdldEV4cHJMb2MoKSk7CiAK ICAgICAvLyBTcGxhdCB0aGUgZWxlbWVudCBhY3Jvc3MgdG8gYWxsIGVsZW1l bnRzCiAgICAgdW5zaWduZWQgTnVtRWxlbWVudHMgPSBjYXN0PGxsdm06OlZl Y3RvclR5cGU+KERzdFR5KS0+Z2V0TnVtRWxlbWVudHMoKTsKQEAgLTE1NzAs NyArMTU3MCw4IEBACiAgIGNhc2UgQ0tfSW50ZWdyYWxUb0Zsb2F0aW5nOgog ICBjYXNlIENLX0Zsb2F0aW5nVG9JbnRlZ3JhbDoKICAgY2FzZSBDS19GbG9h dGluZ0Nhc3Q6Ci0gICAgcmV0dXJuIEVtaXRTY2FsYXJDb252ZXJzaW9uKFZp c2l0KEUpLCBFLT5nZXRUeXBlKCksIERlc3RUeSk7CisgICAgcmV0dXJuIEVt aXRTY2FsYXJDb252ZXJzaW9uKFZpc2l0KEUpLCBFLT5nZXRUeXBlKCksIERl c3RUeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0UtPmdl dEV4cHJMb2MoKSk7CiAgIGNhc2UgQ0tfSW50ZWdyYWxUb0Jvb2xlYW46CiAg ICAgcmV0dXJuIEVtaXRJbnRUb0Jvb2xDb252ZXJzaW9uKFZpc2l0KEUpKTsK ICAgY2FzZSBDS19Qb2ludGVyVG9Cb29sZWFuOgpAQCAtMTU5Miw3ICsxNTkz LDggQEAKICAgICBDb2RlR2VuRnVuY3Rpb246OkNvbXBsZXhQYWlyVHkgViA9 IENHRi5FbWl0Q29tcGxleEV4cHIoRSk7CiAKICAgICAvLyBUT0RPOiBraWxs IHRoaXMgZnVuY3Rpb24gb2ZmLCBpbmxpbmUgYXBwcm9wcmlhdGUgY2FzZSBo ZXJlCi0gICAgcmV0dXJuIEVtaXRDb21wbGV4VG9TY2FsYXJDb252ZXJzaW9u KFYsIEUtPmdldFR5cGUoKSwgRGVzdFR5KTsKKyAgICByZXR1cm4gRW1pdENv bXBsZXhUb1NjYWxhckNvbnZlcnNpb24oViwgRS0+Z2V0VHlwZSgpLCBEZXN0 VHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IENFLT5nZXRFeHByTG9jKCkpOwogICB9CiAKICAgY2FzZSBDS19aZXJvVG9P Q0xFdmVudDogewpAQCAtMjE2OCw4ICsyMTcwLDEwIEBACiAgICAgICAgICAg bGx2bV91bnJlYWNoYWJsZSgiSW52YWxpZCBjb21wb3VuZCBhc3NpZ25tZW50 IHR5cGUiKTsKICAgICAgIH0KICAgICAgIGlmIChhb3AgIT0gbGx2bTo6QXRv bWljUk1XSW5zdDo6QkFEX0JJTk9QKSB7Ci0gICAgICAgIGxsdm06OlZhbHVl ICphbXQgPSBDR0YuRW1pdFRvTWVtb3J5KEVtaXRTY2FsYXJDb252ZXJzaW9u KE9wSW5mby5SSFMsCi0gICAgICAgICAgICAgIEUtPmdldFJIUygpLT5nZXRU eXBlKCksIExIU1R5KSwgTEhTVHkpOworICAgICAgICBsbHZtOjpWYWx1ZSAq YW10ID0gQ0dGLkVtaXRUb01lbW9yeSgKKyAgICAgICAgICAgIEVtaXRTY2Fs YXJDb252ZXJzaW9uKE9wSW5mby5SSFMsIEUtPmdldFJIUygpLT5nZXRUeXBl KCksIExIU1R5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg RS0+Z2V0RXhwckxvYygpKSwKKyAgICAgICAgICAgIExIU1R5KTsKICAgICAg ICAgQnVpbGRlci5DcmVhdGVBdG9taWNSTVcoYW9wLCBMSFNMVi5nZXRBZGRy ZXNzKCksIGFtdCwKICAgICAgICAgICAgIGxsdm06OlNlcXVlbnRpYWxseUNv bnNpc3RlbnQpOwogICAgICAgICByZXR1cm4gTEhTTFY7CkBAIC0yMTkwLDE0 ICsyMTk0LDE2IEBACiAgIGVsc2UKICAgICBPcEluZm8uTEhTID0gRW1pdExv YWRPZkxWYWx1ZShMSFNMViwgRS0+Z2V0RXhwckxvYygpKTsKIAotICBPcElu Zm8uTEhTID0gRW1pdFNjYWxhckNvbnZlcnNpb24oT3BJbmZvLkxIUywgTEhT VHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFLT5n ZXRDb21wdXRhdGlvbkxIU1R5cGUoKSk7CisgIFNvdXJjZUxvY2F0aW9uIExv YyA9IEUtPmdldEV4cHJMb2MoKTsKKyAgT3BJbmZvLkxIUyA9CisgICAgICBF bWl0U2NhbGFyQ29udmVyc2lvbihPcEluZm8uTEhTLCBMSFNUeSwgRS0+Z2V0 Q29tcHV0YXRpb25MSFNUeXBlKCksIExvYyk7CiAKICAgLy8gRXhwYW5kIHRo ZSBiaW5hcnkgb3BlcmF0b3IuCiAgIFJlc3VsdCA9ICh0aGlzLT4qRnVuYyko T3BJbmZvKTsKIAogICAvLyBDb252ZXJ0IHRoZSByZXN1bHQgYmFjayB0byB0 aGUgTEhTIHR5cGUuCi0gIFJlc3VsdCA9IEVtaXRTY2FsYXJDb252ZXJzaW9u KFJlc3VsdCwgRS0+Z2V0Q29tcHV0YXRpb25SZXN1bHRUeXBlKCksIExIU1R5 KTsKKyAgUmVzdWx0ID0KKyAgICAgIEVtaXRTY2FsYXJDb252ZXJzaW9uKFJl c3VsdCwgRS0+Z2V0Q29tcHV0YXRpb25SZXN1bHRUeXBlKCksIExIU1R5LCBM b2MpOwogCiAgIGlmIChhdG9taWNQSEkpIHsKICAgICBsbHZtOjpCYXNpY0Js b2NrICpvcEJCID0gQnVpbGRlci5HZXRJbnNlcnRCbG9jaygpOwpAQCAtMjky MSw3ICsyOTI3LDggQEAKICAgICAgIFZhbHVlICpDUjZQYXJhbSA9IEJ1aWxk ZXIuZ2V0SW50MzIoQ1I2KTsKICAgICAgIGxsdm06OkZ1bmN0aW9uICpGID0g Q0dGLkNHTS5nZXRJbnRyaW5zaWMoSUQpOwogICAgICAgUmVzdWx0ID0gQnVp bGRlci5DcmVhdGVDYWxsKEYsIHtDUjZQYXJhbSwgRmlyc3RWZWNBcmcsIFNl Y29uZFZlY0FyZ30pOwotICAgICAgcmV0dXJuIEVtaXRTY2FsYXJDb252ZXJz aW9uKFJlc3VsdCwgQ0dGLmdldENvbnRleHQoKS5Cb29sVHksIEUtPmdldFR5 cGUoKSk7CisgICAgICByZXR1cm4gRW1pdFNjYWxhckNvbnZlcnNpb24oUmVz dWx0LCBDR0YuZ2V0Q29udGV4dCgpLkJvb2xUeSwgRS0+Z2V0VHlwZSgpLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEUtPmdldEV4cHJM b2MoKSk7CiAgICAgfQogCiAgICAgaWYgKExIUy0+Z2V0VHlwZSgpLT5pc0ZQ T3JGUFZlY3RvclR5KCkpIHsKQEAgLTI5OTAsNyArMjk5Nyw4IEBACiAgICAg fQogICB9CiAKLSAgcmV0dXJuIEVtaXRTY2FsYXJDb252ZXJzaW9uKFJlc3Vs dCwgQ0dGLmdldENvbnRleHQoKS5Cb29sVHksIEUtPmdldFR5cGUoKSk7Cisg IHJldHVybiBFbWl0U2NhbGFyQ29udmVyc2lvbihSZXN1bHQsIENHRi5nZXRD b250ZXh0KCkuQm9vbFR5LCBFLT5nZXRUeXBlKCksCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBFLT5nZXRFeHByTG9jKCkpOwogfQogCiBWYWx1 ZSAqU2NhbGFyRXhwckVtaXR0ZXI6OlZpc2l0QmluQXNzaWduKGNvbnN0IEJp bmFyeU9wZXJhdG9yICpFKSB7CkBAIC0zNDcyLDIxICszNDgwLDIzIEBACiAv Ly8gRW1pdCBhIGNvbnZlcnNpb24gZnJvbSB0aGUgc3BlY2lmaWVkIHR5cGUg dG8gdGhlIHNwZWNpZmllZCBkZXN0aW5hdGlvbiB0eXBlLAogLy8vIGJvdGgg b2Ygd2hpY2ggYXJlIExMVk0gc2NhbGFyIHR5cGVzLgogVmFsdWUgKkNvZGVH ZW5GdW5jdGlvbjo6RW1pdFNjYWxhckNvbnZlcnNpb24oVmFsdWUgKlNyYywg UXVhbFR5cGUgU3JjVHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBRdWFsVHlwZSBEc3RUeSkgeworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXVhbFR5cGUg RHN0VHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBTb3VyY2VMb2NhdGlvbiBMb2MpIHsKICAgYXNzZXJ0KGhhc1Nj YWxhckV2YWx1YXRpb25LaW5kKFNyY1R5KSAmJiBoYXNTY2FsYXJFdmFsdWF0 aW9uS2luZChEc3RUeSkgJiYKICAgICAgICAgICJJbnZhbGlkIHNjYWxhciBl eHByZXNzaW9uIHRvIGVtaXQiKTsKLSAgcmV0dXJuIFNjYWxhckV4cHJFbWl0 dGVyKCp0aGlzKS5FbWl0U2NhbGFyQ29udmVyc2lvbihTcmMsIFNyY1R5LCBE c3RUeSk7CisgIHJldHVybiBTY2FsYXJFeHByRW1pdHRlcigqdGhpcykuRW1p dFNjYWxhckNvbnZlcnNpb24oU3JjLCBTcmNUeSwgRHN0VHksIExvYyk7CiB9 CiAKIC8vLyBFbWl0IGEgY29udmVyc2lvbiBmcm9tIHRoZSBzcGVjaWZpZWQg Y29tcGxleCB0eXBlIHRvIHRoZSBzcGVjaWZpZWQKIC8vLyBkZXN0aW5hdGlv biB0eXBlLCB3aGVyZSB0aGUgZGVzdGluYXRpb24gdHlwZSBpcyBhbiBMTFZN IHNjYWxhciB0eXBlLgogVmFsdWUgKkNvZGVHZW5GdW5jdGlvbjo6RW1pdENv bXBsZXhUb1NjYWxhckNvbnZlcnNpb24oQ29tcGxleFBhaXJUeSBTcmMsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBRdWFsVHlwZSBTcmNUeSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1YWxUeXBlIERz dFR5KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBRdWFsVHlwZSBEc3RUeSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNv dXJjZUxvY2F0aW9uIExvYykgewogICBhc3NlcnQoU3JjVHktPmlzQW55Q29t cGxleFR5cGUoKSAmJiBoYXNTY2FsYXJFdmFsdWF0aW9uS2luZChEc3RUeSkg JiYKICAgICAgICAgICJJbnZhbGlkIGNvbXBsZXggLT4gc2NhbGFyIGNvbnZl cnNpb24iKTsKLSAgcmV0dXJuIFNjYWxhckV4cHJFbWl0dGVyKCp0aGlzKS5F bWl0Q29tcGxleFRvU2NhbGFyQ29udmVyc2lvbihTcmMsIFNyY1R5LAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIERzdFR5KTsKKyAgcmV0dXJuIFNjYWxhckV4cHJF bWl0dGVyKCp0aGlzKQorICAgICAgLkVtaXRDb21wbGV4VG9TY2FsYXJDb252 ZXJzaW9uKFNyYywgU3JjVHksIERzdFR5LCBMb2MpOwogfQogCiAKSW5kZXg6 IGxpYi9Db2RlR2VuL0NHRXhwckNvbXBsZXguY3BwCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tIGxpYi9Db2RlR2VuL0NHRXhwckNvbXBsZXguY3BwCisr KyBsaWIvQ29kZUdlbi9DR0V4cHJDb21wbGV4LmNwcApAQCAtODUsMTAgKzg1 LDEwIEBACiAKICAgLy8vIEVtaXQgYSBjYXN0IGZyb20gY29tcGxleCB2YWx1 ZSBWYWwgdG8gRGVzdFR5cGUuCiAgIENvbXBsZXhQYWlyVHkgRW1pdENvbXBs ZXhUb0NvbXBsZXhDYXN0KENvbXBsZXhQYWlyVHkgVmFsLCBRdWFsVHlwZSBT cmNUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBRdWFsVHlwZSBEZXN0VHlwZSk7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFF1YWxUeXBlIERlc3RUeXBlLCBTb3Vy Y2VMb2NhdGlvbiBMb2MpOwogICAvLy8gRW1pdCBhIGNhc3QgZnJvbSBzY2Fs YXIgdmFsdWUgVmFsIHRvIERlc3RUeXBlLgogICBDb21wbGV4UGFpclR5IEVt aXRTY2FsYXJUb0NvbXBsZXhDYXN0KGxsdm06OlZhbHVlICpWYWwsIFF1YWxU eXBlIFNyY1R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUXVhbFR5cGUgRGVzdFR5cGUpOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFF1YWxUeXBlIERlc3RUeXBlLCBT b3VyY2VMb2NhdGlvbiBMb2MpOwogCiAgIC8vPT09LS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS09PT0vLwogICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBWaXNpdG9yIE1ldGhvZHMKQEAgLTM5NCwyNSArMzk0LDI3IEBACiAvLy8g RW1pdCBhIGNhc3QgZnJvbSBjb21wbGV4IHZhbHVlIFZhbCB0byBEZXN0VHlw ZS4KIENvbXBsZXhQYWlyVHkgQ29tcGxleEV4cHJFbWl0dGVyOjpFbWl0Q29t cGxleFRvQ29tcGxleENhc3QoQ29tcGxleFBhaXJUeSBWYWwsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFF1YWxUeXBlIFNyY1R5cGUsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1YWxU eXBlIERlc3RUeXBlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1YWxUeXBlIERlc3RU eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBTb3VyY2VMb2NhdGlvbiBMb2MpIHsKICAg Ly8gR2V0IHRoZSBzcmMvZGVzdCBlbGVtZW50IHR5cGUuCiAgIFNyY1R5cGUg PSBTcmNUeXBlLT5jYXN0QXM8Q29tcGxleFR5cGU+KCktPmdldEVsZW1lbnRU eXBlKCk7CiAgIERlc3RUeXBlID0gRGVzdFR5cGUtPmNhc3RBczxDb21wbGV4 VHlwZT4oKS0+Z2V0RWxlbWVudFR5cGUoKTsKIAogICAvLyBDOTkgNi4zLjEu NjogV2hlbiBhIHZhbHVlIG9mIGNvbXBsZXggdHlwZSBpcyBjb252ZXJ0ZWQg dG8gYW5vdGhlcgogICAvLyBjb21wbGV4IHR5cGUsIGJvdGggdGhlIHJlYWwg YW5kIGltYWdpbmFyeSBwYXJ0cyBmb2xsb3cgdGhlIGNvbnZlcnNpb24KICAg Ly8gcnVsZXMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIHJlYWwgdHlwZXMuCi0g IFZhbC5maXJzdCA9IENHRi5FbWl0U2NhbGFyQ29udmVyc2lvbihWYWwuZmly c3QsIFNyY1R5cGUsIERlc3RUeXBlKTsKLSAgVmFsLnNlY29uZCA9IENHRi5F bWl0U2NhbGFyQ29udmVyc2lvbihWYWwuc2Vjb25kLCBTcmNUeXBlLCBEZXN0 VHlwZSk7CisgIFZhbC5maXJzdCA9IENHRi5FbWl0U2NhbGFyQ29udmVyc2lv bihWYWwuZmlyc3QsIFNyY1R5cGUsIERlc3RUeXBlLCBMb2MpOworICBWYWwu c2Vjb25kID0gQ0dGLkVtaXRTY2FsYXJDb252ZXJzaW9uKFZhbC5zZWNvbmQs IFNyY1R5cGUsIERlc3RUeXBlLCBMb2MpOwogICByZXR1cm4gVmFsOwogfQog CiBDb21wbGV4UGFpclR5IENvbXBsZXhFeHByRW1pdHRlcjo6RW1pdFNjYWxh clRvQ29tcGxleENhc3QobGx2bTo6VmFsdWUgKlZhbCwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBRdWFsVHlwZSBTcmNUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1YWxUeXBlIERl c3RUeXBlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUXVhbFR5cGUgRGVzdFR5cGUsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgU291cmNlTG9jYXRpb24gTG9jKSB7CiAgIC8vIENvbnZl cnQgdGhlIGlucHV0IGVsZW1lbnQgdG8gdGhlIGVsZW1lbnQgdHlwZSBvZiB0 aGUgY29tcGxleC4KICAgRGVzdFR5cGUgPSBEZXN0VHlwZS0+Y2FzdEFzPENv bXBsZXhUeXBlPigpLT5nZXRFbGVtZW50VHlwZSgpOwotICBWYWwgPSBDR0Yu RW1pdFNjYWxhckNvbnZlcnNpb24oVmFsLCBTcmNUeXBlLCBEZXN0VHlwZSk7 CisgIFZhbCA9IENHRi5FbWl0U2NhbGFyQ29udmVyc2lvbihWYWwsIFNyY1R5 cGUsIERlc3RUeXBlLCBMb2MpOwogCiAgIC8vIFJldHVybiAocmVhbHZhbCwg MCkuCiAgIHJldHVybiBDb21wbGV4UGFpclR5KFZhbCwgbGx2bTo6Q29uc3Rh bnQ6OmdldE51bGxWYWx1ZShWYWwtPmdldFR5cGUoKSkpOwpAQCAtNDg4LDE0 ICs0OTAsMTUgQEAKIAogICBjYXNlIENLX0Zsb2F0aW5nUmVhbFRvQ29tcGxl eDoKICAgY2FzZSBDS19JbnRlZ3JhbFJlYWxUb0NvbXBsZXg6Ci0gICAgcmV0 dXJuIEVtaXRTY2FsYXJUb0NvbXBsZXhDYXN0KENHRi5FbWl0U2NhbGFyRXhw cihPcCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9w LT5nZXRUeXBlKCksIERlc3RUeSk7CisgICAgcmV0dXJuIEVtaXRTY2FsYXJU b0NvbXBsZXhDYXN0KENHRi5FbWl0U2NhbGFyRXhwcihPcCksIE9wLT5nZXRU eXBlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERl c3RUeSwgT3AtPmdldEV4cHJMb2MoKSk7CiAKICAgY2FzZSBDS19GbG9hdGlu Z0NvbXBsZXhDYXN0OgogICBjYXNlIENLX0Zsb2F0aW5nQ29tcGxleFRvSW50 ZWdyYWxDb21wbGV4OgogICBjYXNlIENLX0ludGVncmFsQ29tcGxleENhc3Q6 CiAgIGNhc2UgQ0tfSW50ZWdyYWxDb21wbGV4VG9GbG9hdGluZ0NvbXBsZXg6 Ci0gICAgcmV0dXJuIEVtaXRDb21wbGV4VG9Db21wbGV4Q2FzdChWaXNpdChP cCksIE9wLT5nZXRUeXBlKCksIERlc3RUeSk7CisgICAgcmV0dXJuIEVtaXRD b21wbGV4VG9Db21wbGV4Q2FzdChWaXNpdChPcCksIE9wLT5nZXRUeXBlKCks IERlc3RUeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE9wLT5nZXRFeHByTG9jKCkpOwogICB9CiAKICAgbGx2bV91bnJlYWNoYWJs ZSgidW5rbm93biBjYXN0IHJlc3VsdGluZyBpbiBjb21wbGV4IHZhbHVlIik7 CkBAIC04NDYsMzMgKzg0OSwzNSBAQAogICBMVmFsdWUgTEhTID0gQ0dGLkVt aXRMVmFsdWUoRS0+Z2V0TEhTKCkpOwogCiAgIC8vIExvYWQgZnJvbSB0aGUg bC12YWx1ZSBhbmQgY29udmVydCBpdC4KKyAgU291cmNlTG9jYXRpb24gTG9j ID0gRS0+Z2V0RXhwckxvYygpOwogICBpZiAoTEhTVHktPmlzQW55Q29tcGxl eFR5cGUoKSkgewotICAgIENvbXBsZXhQYWlyVHkgTEhTVmFsID0gRW1pdExv YWRPZkxWYWx1ZShMSFMsIEUtPmdldEV4cHJMb2MoKSk7Ci0gICAgT3BJbmZv LkxIUyA9IEVtaXRDb21wbGV4VG9Db21wbGV4Q2FzdChMSFNWYWwsIExIU1R5 LCBPcEluZm8uVHkpOworICAgIENvbXBsZXhQYWlyVHkgTEhTVmFsID0gRW1p dExvYWRPZkxWYWx1ZShMSFMsIExvYyk7CisgICAgT3BJbmZvLkxIUyA9IEVt aXRDb21wbGV4VG9Db21wbGV4Q2FzdChMSFNWYWwsIExIU1R5LCBPcEluZm8u VHksIExvYyk7CiAgIH0gZWxzZSB7Ci0gICAgbGx2bTo6VmFsdWUgKkxIU1Zh bCA9IENHRi5FbWl0TG9hZE9mU2NhbGFyKExIUywgRS0+Z2V0RXhwckxvYygp KTsKKyAgICBsbHZtOjpWYWx1ZSAqTEhTVmFsID0gQ0dGLkVtaXRMb2FkT2ZT Y2FsYXIoTEhTLCBMb2MpOwogICAgIC8vIEZvciBmbG9hdGluZyBwb2ludCBy ZWFsIG9wZXJhbmRzIHdlIGNhbiBkaXJlY3RseSBwYXNzIHRoZSBzY2FsYXIg Zm9ybQogICAgIC8vIHRvIHRoZSBiaW5hcnkgb3BlcmF0b3IgZW1pc3Npb24g YW5kIHBvdGVudGlhbGx5IGdldCBtb3JlIGVmZmljaWVudCBjb2RlLgogICAg IGlmIChMSFNUeS0+aXNSZWFsRmxvYXRpbmdUeXBlKCkpIHsKICAgICAgIGlm ICghQ0dGLmdldENvbnRleHQoKS5oYXNTYW1lVW5xdWFsaWZpZWRUeXBlKENv bXBsZXhFbGVtZW50VHksIExIU1R5KSkKLSAgICAgICAgTEhTVmFsID0gQ0dG LkVtaXRTY2FsYXJDb252ZXJzaW9uKExIU1ZhbCwgTEhTVHksIENvbXBsZXhF bGVtZW50VHkpOworICAgICAgICBMSFNWYWwgPSBDR0YuRW1pdFNjYWxhckNv bnZlcnNpb24oTEhTVmFsLCBMSFNUeSwgQ29tcGxleEVsZW1lbnRUeSwgTG9j KTsKICAgICAgIE9wSW5mby5MSFMgPSBDb21wbGV4UGFpclR5KExIU1ZhbCwg bnVsbHB0cik7CiAgICAgfSBlbHNlIHsKLSAgICAgIE9wSW5mby5MSFMgPSBF bWl0U2NhbGFyVG9Db21wbGV4Q2FzdChMSFNWYWwsIExIU1R5LCBPcEluZm8u VHkpOworICAgICAgT3BJbmZvLkxIUyA9IEVtaXRTY2FsYXJUb0NvbXBsZXhD YXN0KExIU1ZhbCwgTEhTVHksIE9wSW5mby5UeSwgTG9jKTsKICAgICB9CiAg IH0KIAogICAvLyBFeHBhbmQgdGhlIGJpbmFyeSBvcGVyYXRvci4KICAgQ29t cGxleFBhaXJUeSBSZXN1bHQgPSAodGhpcy0+KkZ1bmMpKE9wSW5mbyk7CiAK ICAgLy8gVHJ1bmNhdGUgdGhlIHJlc3VsdCBhbmQgc3RvcmUgaXQgaW50byB0 aGUgTEhTIGx2YWx1ZS4KICAgaWYgKExIU1R5LT5pc0FueUNvbXBsZXhUeXBl KCkpIHsKLSAgICBDb21wbGV4UGFpclR5IFJlc1ZhbCA9IEVtaXRDb21wbGV4 VG9Db21wbGV4Q2FzdChSZXN1bHQsIE9wSW5mby5UeSwgTEhTVHkpOworICAg IENvbXBsZXhQYWlyVHkgUmVzVmFsID0KKyAgICAgICAgRW1pdENvbXBsZXhU b0NvbXBsZXhDYXN0KFJlc3VsdCwgT3BJbmZvLlR5LCBMSFNUeSwgTG9jKTsK ICAgICBFbWl0U3RvcmVPZkNvbXBsZXgoUmVzVmFsLCBMSFMsIC8qaXNJbml0 Ki8gZmFsc2UpOwogICAgIFZhbCA9IFJWYWx1ZTo6Z2V0Q29tcGxleChSZXNW YWwpOwogICB9IGVsc2UgewogICAgIGxsdm06OlZhbHVlICpSZXNWYWwgPQot ICAgICAgICBDR0YuRW1pdENvbXBsZXhUb1NjYWxhckNvbnZlcnNpb24oUmVz dWx0LCBPcEluZm8uVHksIExIU1R5KTsKKyAgICAgICAgQ0dGLkVtaXRDb21w bGV4VG9TY2FsYXJDb252ZXJzaW9uKFJlc3VsdCwgT3BJbmZvLlR5LCBMSFNU eSwgTG9jKTsKICAgICBDR0YuRW1pdFN0b3JlT2ZTY2FsYXIoUmVzVmFsLCBM SFMsIC8qaXNJbml0Ki8gZmFsc2UpOwogICAgIFZhbCA9IFJWYWx1ZTo6Z2V0 KFJlc1ZhbCk7CiAgIH0KSW5kZXg6IGxpYi9Db2RlR2VuL0NHRXhwci5jcHAK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0gbGliL0NvZGVHZW4vQ0dFeHBy LmNwcAorKysgbGliL0NvZGVHZW4vQ0dFeHByLmNwcApAQCAtOTYsMTAgKzk2 LDEyIEBACiAgIH0KIAogICBRdWFsVHlwZSBCb29sVHkgPSBnZXRDb250ZXh0 KCkuQm9vbFR5OworICBTb3VyY2VMb2NhdGlvbiBMb2MgPSBFLT5nZXRFeHBy TG9jKCk7CiAgIGlmICghRS0+Z2V0VHlwZSgpLT5pc0FueUNvbXBsZXhUeXBl KCkpCi0gICAgcmV0dXJuIEVtaXRTY2FsYXJDb252ZXJzaW9uKEVtaXRTY2Fs YXJFeHByKEUpLCBFLT5nZXRUeXBlKCksIEJvb2xUeSk7CisgICAgcmV0dXJu IEVtaXRTY2FsYXJDb252ZXJzaW9uKEVtaXRTY2FsYXJFeHByKEUpLCBFLT5n ZXRUeXBlKCksIEJvb2xUeSwgTG9jKTsKIAotICByZXR1cm4gRW1pdENvbXBs ZXhUb1NjYWxhckNvbnZlcnNpb24oRW1pdENvbXBsZXhFeHByKEUpLCBFLT5n ZXRUeXBlKCksQm9vbFR5KTsKKyAgcmV0dXJuIEVtaXRDb21wbGV4VG9TY2Fs YXJDb252ZXJzaW9uKEVtaXRDb21wbGV4RXhwcihFKSwgRS0+Z2V0VHlwZSgp LCBCb29sVHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBMb2MpOwogfQogCiAvLy8gRW1pdElnbm9yZWRFeHByIC0gRW1pdCBj b2RlIHRvIGNvbXB1dGUgdGhlIHNwZWNpZmllZCBleHByZXNzaW9uLAo= --b1_9d44848e57297b54f30450de0474ef3a Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KY2ZlLWNvbW1p dHMgbWFpbGluZyBsaXN0CmNmZS1jb21taXRzQGxpc3RzLmxsdm0ub3JnCmh0dHA6Ly9saXN0cy5s bHZtLm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vY2ZlLWNvbW1pdHMK --b1_9d44848e57297b54f30450de0474ef3a--