--001a11347106c14092051c0fbb11 Content-Type: text/plain; charset=UTF-8 Hi Alexey, I have an updated patch that does not include "HandleLLVMOptions.cmake" . This file was giving us most of the trouble. I have already confirmed that this works around the TSAN issue pointed out earlier. Could you test this patch to see if you run into any more problems? On Wed, Jul 29, 2015 at 10:58 PM, Eric Fiselier wrote: >> Eric, what part of your change caused this behavior change? Probably, after you've started to execute LLVM CMake modules, >> you've modified link flags used to build shared objects, and now they are required to have no unresolved symbols? > > This is exactly what is happening. HandleLLVMOptions.cmake adds > "-Wl,-z,defs" on linux when LLVM_USE_SANITIZER is not specified. > We also pick up -ffunction-sections and -fdata-sections. What effect > do those have on building with sanitizers? > > > One of the main reasons for this patch was to make it easier for > libc++ to support sanitizer configurations. > I would like the libc++ build to support each sanitizer configuration. > Currently it seems like compiler-rt is better at > building libc++ with sanitizers than libc++ is. > > Would anybody be willing to help with: > A) Figuring out the proper flags for building and linking libc++ with > each sanitizer. > B) Moving some of the compiler-rt CMake logic for building libc++ into > libc++ if applicable. > > /Eric > > On Wed, Jul 29, 2015 at 8:54 PM, Alexey Samsonov wrote: >> I've submitted r243599 that slightly improves things: now libcxx can be >> configured with "Clang+TSan", but the build fails with a bunch of >> "undefined reference to `__tsan_read8'" >> errors when we are trying to link libc++.so. >> >> Generally, we *don't* link in TSan runtime into shared objects - it should >> only be linked into the executable, and __tsan_* symbols should be >> left unresolved. Eric, what part of your change caused this behavior change? >> Probably, after you've started to execute LLVM CMake modules, >> you've modified link flags used to build shared objects, and now they are >> required to have no unresolved symbols? >> >> On Wed, Jul 29, 2015 at 5:21 PM, Alexey Samsonov wrote: >>> >>> I think I've found the "problem", causing CMake identification of Clang >>> version. I will submit it shortly. >>> >>> On Wed, Jul 29, 2015 at 4:50 PM, Kostya Serebryany wrote: >>>> >>>> Thanks, check-msan works for me again. >>>> >>>> >>>> >>>> On Wed, Jul 29, 2015 at 4:47 PM, Eric Fiselier wrote: >>>>> >>>>> Reverted as r243593. >>> >>> >>> >>> >>> -- >>> Alexey Samsonov >>> vonosmas@gmail.com >> >> >> >> >> -- >> Alexey Samsonov >> vonosmas@gmail.com --001a11347106c14092051c0fbb11 Content-Type: application/octet-stream; name="cmake.patch" Content-Disposition: attachment; filename="cmake.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_icpo9hti0 ZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKaW5kZXggYTdiYzc5 Mi4uMjhkMTVkMCAxMDA2NDQKLS0tIGEvQ01ha2VMaXN0cy50eHQKKysrIGIvQ01ha2VMaXN0cy50 eHQKQEAgLTMsMTMgKzMsMTYgQEAKICM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAjIFNldHVwIFBy b2plY3QKICM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLXByb2plY3QobGliY3h4IENYWCBDKQog Y21ha2VfbWluaW11bV9yZXF1aXJlZChWRVJTSU9OIDIuOCkKIAogaWYoUE9MSUNZIENNUDAwNDIp CiAgIGNtYWtlX3BvbGljeShTRVQgQ01QMDA0MiBORVcpICMgU2V0IE1BQ09TWF9SUEFUSD1ZRVMg YnkgZGVmYXVsdAogZW5kaWYoKQoraWYoUE9MSUNZIENNUDAwMjIpCisgIGNtYWtlX3BvbGljeShT RVQgQ01QMDAyMiBORVcpICMgUmVxdWlyZWQgd2hlbiBpbnRlcmFjdGluZyB3aXRoIExMVk0gYW5k IENsYW5nCitlbmRpZigpCisKK3Byb2plY3QobGliY3h4IENYWCBDKQogCiBzZXQoUEFDS0FHRV9O QU1FIGxpYmN4eCkKIHNldChQQUNLQUdFX1ZFUlNJT04gdHJ1bmstc3ZuKQpAQCAtMzAsNTIgKzMz LDk2IEBAIE1BQ1JPX0VOU1VSRV9PVVRfT0ZfU09VUkNFX0JVSUxEKAogIGJ1aWxkIGRpcmVjdG9y eSBhbmQgcnVuICdjbWFrZSAvcGF0aC90by8ke1BST0pFQ1RfTkFNRX0gW29wdGlvbnNdJyB0aGVy ZS4iCiAgKQogCi1pZihDTUFLRV9TT1VSQ0VfRElSIFNUUkVRVUFMIENNQUtFX0NVUlJFTlRfU09V UkNFX0RJUikKLSAgc2V0KExJQkNYWF9MSUJESVJfU1VGRklYICIiIENBQ0hFIFNUUklORwotICAg ICAgIkRlZmluZSBzdWZmaXggb2YgbGlicmFyeSBkaXJlY3RvcnkgbmFtZSAoMzIvNjQpIikKLQot ICBzZXQoQ01BS0VfQVJDSElWRV9PVVRQVVRfRElSRUNUT1JZICR7Q01BS0VfQklOQVJZX0RJUn0v bGliJHtMSUJDWFhfTElCRElSX1NVRkZJWH0pCi0gIHNldChDTUFLRV9MSUJSQVJZX09VVFBVVF9E SVJFQ1RPUlkgJHtDTUFLRV9CSU5BUllfRElSfS9saWIke0xJQkNYWF9MSUJESVJfU1VGRklYfSkK LQotICBzZXQoTElCQ1hYX0JVSUxUX1NUQU5EQUxPTkUgMSkKLWVsc2UoKQotICBzZXQoTElCQ1hY X0xJQkRJUl9TVUZGSVggJHtMTFZNX0xJQkRJUl9TVUZGSVh9KQorIyBGaW5kIHRoZSByZXF1aXJl ZCBiaXRzIG9mIExMVk0KK2luY2x1ZGUoRmluZExMVk0pCisjIFRPRE8oRXJpY1dGKSBNYWtlIHRo aXMgYW4gZXJyb3IgYnkgZGVmYXVsdC4KK2lmIChOT1QgTExWTV9GT1VORCkKKyAgbWVzc2FnZShX QVJOSU5HICJVTlNVUFBPUlRFRCBMSUJDWFggQ09ORklHVVJBVElPTiBERVRFQ1RFRDogIgorICAg ICAgICAgICAgICAgICAgImxsdm0tY29uZmlnIG5vdCBmb3VuZCBhbmQgTExWTV9NQUlOX1NSQ19E SVIgbm90IGRlZmluZWQuICIKKyAgICAgICAgICAgICAgICAgICJSZWNvbmZpZ3VyZSB3aXRoIC1E TExWTV9DT05GSUc9cGF0aC90by9sbHZtLWNvbmZpZyAiCisgICAgICAgICAgICAgICAgICAib3Ig LURMTFZNX1BBVEg9cGF0aC90by9sbHZtLXNvdXJjZS1yb290LiIpCiBlbmRpZigpCiAKKwogIz09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KICMgU2V0dXAgQ01ha2UgT3B0aW9ucwogIz09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KIAotIyBEZWZpbmUgb3B0aW9ucy4KLW9wdGlvbihMSUJDWFhfRU5BQkxFX0VY Q0VQVElPTlMgIlVzZSBleGNlcHRpb25zLiIgT04pCi1vcHRpb24oTElCQ1hYX0VOQUJMRV9SVFRJ ICJVc2UgcnVuIHRpbWUgdHlwZSBpbmZvcm1hdGlvbi4iIE9OKQorIyBCYXNpYyBvcHRpb25zIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQogb3B0aW9uKExJQkNYWF9FTkFCTEVfQVNTRVJUSU9OUyAiRW5hYmxlIGFzc2VydGlvbnMg aW5kZXBlbmRlbnQgb2YgYnVpbGQgbW9kZS4iIE9OKQotb3B0aW9uKExJQkNYWF9FTkFCTEVfUEVE QU5USUMgIkNvbXBpbGUgd2l0aCBwZWRhbnRpYyBlbmFibGVkLiIgT04pCi1vcHRpb24oTElCQ1hY X0VOQUJMRV9XRVJST1IgIkZhaWwgYW5kIHN0b3AgaWYgYSB3YXJuaW5nIGlzIHRyaWdnZXJlZC4i IE9GRikKLW9wdGlvbihMSUJDWFhfRU5BQkxFX0NYWDFZICJFbmFibGUgLXN0ZD1jKysxeSBhbmQg dXNlIG9mIGMrKzF5IGxhbmd1YWdlIGZlYXR1cmVzIGlmIHRoZSBjb21waWxlciBzdXBwb3J0cyBp dC4iIE9GRikKIG9wdGlvbihMSUJDWFhfRU5BQkxFX1NIQVJFRCAiQnVpbGQgbGliYysrIGFzIGEg c2hhcmVkIGxpYnJhcnkuIiBPTikKKworb3B0aW9uKExJQkNYWF9JTkNMVURFX1RFU1RTICJCdWls ZCB0aGUgbGliYysrIHRlc3RzLiIgJHtMTFZNX0lOQ0xVREVfVEVTVFN9KQorc2V0KExJQkNYWF9M SUJESVJfU1VGRklYICIke0xMVk1fTElCRElSX1NVRkZJWH0iIENBQ0hFIFNUUklORworICAgICJE ZWZpbmUgc3VmZml4IG9mIGxpYnJhcnkgZGlyZWN0b3J5IG5hbWUgKDMyLzY0KSIpCitvcHRpb24o TElCQ1hYX0lOU1RBTExfSEVBREVSUyAiSW5zdGFsbCB0aGUgbGliYysrIGhlYWRlcnMuIiBPTikK K29wdGlvbihMSUJDWFhfSU5TVEFMTF9TVVBQT1JUX0hFQURFUlMgIkluc3RhbGwgbGliYysrIHN1 cHBvcnQgaGVhZGVycy4iIE9OKQorCisjIEFCSSBMaWJyYXJ5IG9wdGlvbnMgLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitzZXQoTElCQ1hY X0NYWF9BQkkgIiR7TElCQ1hYX0NYWF9BQkl9IiBDQUNIRSBTVFJJTkcKKyAgICAiU3BlY2lmeSBD KysgQUJJIGxpYnJhcnkgdG8gdXNlLiIgRk9SQ0UpCitzZXQoQ1hYQUJJUyBub25lIGxpYmN4eGFi aSBsaWJjeHhydCBsaWJzdGRjKysgbGlic3VwYysrKQorc2V0X3Byb3BlcnR5KENBQ0hFIExJQkNY WF9DWFhfQUJJIFBST1BFUlRZIFNUUklOR1MgOyR7Q1hYQUJJU30pCisKK29wdGlvbihMSUJDWFhf RU5BQkxFX1NUQVRJQ19BQklfTElCUkFSWSAiU3RhdGljYWxseSBsaW5rIHRoZSBBQkkgbGlicmFy eSIgT0ZGKQorCisjIEJ1aWxkIGxpYmMrK2FiaSB3aXRoIGxpYnVud2luZC4gV2UgbmVlZCB0aGlz IG9wdGlvbiB0byBkZXRlcm1pbmUgd2hldGhlciB0bworIyBsaW5rIHdpdGggbGlidW53aW5kIG9y IGxpYmdjY19zIHdoaWxlIHJ1bm5pbmcgdGhlIHRlc3QgY2FzZXMuCitvcHRpb24oTElCQ1hYQUJJ X1VTRV9MTFZNX1VOV0lOREVSICJCdWlsZCBhbmQgdXNlIHRoZSBMTFZNIHVud2luZGVyLiIgT0ZG KQorCisjIFRhcmdldCBvcHRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitvcHRpb24oTElCQ1hYX0JVSUxEXzMyX0JJVFMg IkJ1aWxkIDMyIGJpdCBsaWJjKysuIiAke0xMVk1fQlVJTERfMzJfQklUU30pCitzZXQoTElCQ1hY X1NZU1JPT1QgIiIgQ0FDSEUgU1RSSU5HICJVc2UgYWx0ZXJuYXRlIHN5c3Jvb3QuIikKK3NldChM SUJDWFhfR0NDX1RPT0xDSEFJTiAiIiBDQUNIRSBTVFJJTkcgIlVzZSBhbHRlcm5hdGUgR0NDIHRv b2xjaGFpbi4iKQorCisjIEZlYXR1cmUgb3B0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitvcHRpb24oTElCQ1hYX0VOQUJM RV9FWENFUFRJT05TICJVc2UgZXhjZXB0aW9ucy4iIE9OKQorb3B0aW9uKExJQkNYWF9FTkFCTEVf UlRUSSAiVXNlIHJ1biB0aW1lIHR5cGUgaW5mb3JtYXRpb24uIiBPTikKIG9wdGlvbihMSUJDWFhf RU5BQkxFX0dMT0JBTF9GSUxFU1lTVEVNX05BTUVTUEFDRSAiQnVpbGQgbGliYysrIHdpdGggc3Vw cG9ydCBmb3IgdGhlIGdsb2JhbCBmaWxlc3lzdGVtIG5hbWVzcGFjZS4iIE9OKQogb3B0aW9uKExJ QkNYWF9FTkFCTEVfU1RESU4gIkJ1aWxkIGxpYmMrKyB3aXRoIHN1cHBvcnQgZm9yIHN0ZGluL3N0 ZDo6Y2luLiIgT04pCiBvcHRpb24oTElCQ1hYX0VOQUJMRV9TVERPVVQgIkJ1aWxkIGxpYmMrKyB3 aXRoIHN1cHBvcnQgZm9yIHN0ZG91dC9zdGQ6OmNvdXQuIiBPTikKIG9wdGlvbihMSUJDWFhfRU5B QkxFX1RIUkVBRFMgIkJ1aWxkIGxpYmMrKyB3aXRoIHN1cHBvcnQgZm9yIHRocmVhZHMuIiBPTikK IG9wdGlvbihMSUJDWFhfRU5BQkxFX1RIUkVBRF9VTlNBRkVfQ19GVU5DVElPTlMgIkJ1aWxkIGxp YmMrKyB3aXRoIHN1cHBvcnQgZm9yIHRocmVhZC11bnNhZmUgQyBmdW5jdGlvbnMiIE9OKQotb3B0 aW9uKExJQkNYWF9CVUlMRF8zMl9CSVRTICJCdWlsZCAzMiBiaXQgbGliYysrIiBPRkYpCiBvcHRp b24oTElCQ1hYX0VOQUJMRV9NT05PVE9OSUNfQ0xPQ0sKICAgIkJ1aWxkIGxpYmMrKyB3aXRoIHN1 cHBvcnQgZm9yIGEgbW9ub3RvbmljIGNsb2NrLgogICAgVGhpcyBvcHRpb24gbWF5IG9ubHkgYmUg dXNlZCB3aGVuIExJQkNYWF9FTkFCTEVfVEhSRUFEUz1PRkYuIiBPTikKLW9wdGlvbihMSUJDWFhf SU5TVEFMTF9IRUFERVJTICJJbnN0YWxsIHRoZSBsaWJjKysgaGVhZGVycy4iIE9OKQotb3B0aW9u KExJQkNYWF9JTlNUQUxMX1NVUFBPUlRfSEVBREVSUyAiSW5zdGFsbCBsaWJjKysgc3VwcG9ydCBo ZWFkZXJzLiIgT04pCisKKyMgTWlzYyBvcHRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK29wdGlvbihMSUJDWFhfRU5B QkxFX1BFREFOVElDICJDb21waWxlIHdpdGggcGVkYW50aWMgZW5hYmxlZC4iIE9OKQorb3B0aW9u KExJQkNYWF9FTkFCTEVfV0VSUk9SICJGYWlsIGFuZCBzdG9wIGlmIGEgd2FybmluZyBpcyB0cmln Z2VyZWQuIiBPRkYpCisKIG9wdGlvbihMSUJDWFhfR0VORVJBVEVfQ09WRVJBR0UgIkVuYWJsZSBn ZW5lcmF0aW5nIGNvZGUgY292ZXJhZ2UuIiBPRkYpCiBzZXQoTElCQ1hYX0NPVkVSQUdFX0xJQlJB UlkgIiIgQ0FDSEUgU1RSSU5HCi0gICAgICAgIlRoZSBQcm9maWxlLXJ0IGxpYnJhcnkgdXNlZCB0 byBidWlsZCB3aXRoIGNvZGUgY292ZXJhZ2UiKQotb3B0aW9uKExJQkNYWF9FTkFCTEVfU1RBVElD X0FCSV9MSUJSQVJZICJTdGF0aWNhbGx5IGxpbmsgdGhlIEFCSSBsaWJyYXJ5IiBPRkYpCi1zZXQo TElCQ1hYX1NZU1JPT1QgIiIgQ0FDSEUgU1RSSU5HICJVc2UgYWx0ZXJuYXRlIHN5c3Jvb3QuIikK LXNldChMSUJDWFhfR0NDX1RPT0xDSEFJTiAiIiBDQUNIRSBTVFJJTkcgIlVzZSBhbHRlcm5hdGUg R0NDIHRvb2xjaGFpbi4iKQotaWYgKExJQkNYWF9CVUlMVF9TVEFOREFMT05FKQotICBzZXQoTExW TV9VU0VfU0FOSVRJWkVSICIiIENBQ0hFIFNUUklORwotICAgICAgIkRlZmluZSB0aGUgc2FuaXRp emVyIHVzZWQgdG8gYnVpbGQgdGhlIGxpYnJhcnkgYW5kIHRlc3RzIikKKyAgICAiVGhlIFByb2Zp bGUtcnQgbGlicmFyeSB1c2VkIHRvIGJ1aWxkIHdpdGggY29kZSBjb3ZlcmFnZSIpCisKKyM9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CisjIENoZWNrIG9wdGlvbiBjb25maWd1cmF0aW9ucworIz09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKworIyBFbnN1cmUgTElCQ1hYX0VOQUJMRV9NT05PVE9OSUNfQ0xP Q0sgaXMgc2V0IHRvIE9OIG9ubHkgd2hlbgorIyBMSUJDWFhfRU5BQkxFX1RIUkVBRFMgaXMgb24u CitpZihMSUJDWFhfRU5BQkxFX1RIUkVBRFMgQU5EIE5PVCBMSUJDWFhfRU5BQkxFX01PTk9UT05J Q19DTE9DSykKKyAgbWVzc2FnZShGQVRBTF9FUlJPUiAiTElCQ1hYX0VOQUJMRV9NT05PVE9OSUNf Q0xPQ0sgY2FuIG9ubHkgYmUgc2V0IHRvIE9GRiIKKyAgICAgICAgICAgICAgICAgICAgICAiIHdo ZW4gTElCQ1hYX0VOQUJMRV9USFJFQURTIGlzIGFsc28gc2V0IHRvIE9GRi4iKQogZW5kaWYoKQog CisjIEVuc3VyZSBMTFZNX1VTRV9TQU5JVElaRVIgaXMgbm90IHNwZWNpZmllZCB3aGVuIExJQkNY WF9HRU5FUkFURV9DT1ZFUkFHRQorIyBpcyBPTi4KK2lmIChMTFZNX1VTRV9TQU5JVElaRVIgQU5E IExJQkNYWF9HRU5FUkFURV9DT1ZFUkFHRSkKKyAgbWVzc2FnZShGQVRBTF9FUlJPUiAiTExWTV9V U0VfU0FOSVRJWkVSIGNhbm5vdCBiZSB1c2VkIHdpdGggTElCQ1hYX0dFTkVSQVRFX0NPVkVSQUdF IikKK2VuZGlmKCkKKworIyBTZXQgTElCQ1hYX0JVSUxEXzMyX0JJVFMgdG8gKExJQkNYWF9CVUlM RF8zMl9CSVRTIE9SIExMVk1fQlVJTERfMzJfQklUUykKKyMgYW5kIGNoZWNrIHRoYXQgd2UgY2Fu IGJ1aWxkIHdpdGggMzIgYml0cyBpZiByZXF1ZXN0ZWQuCitpZiAoQ01BS0VfU0laRU9GX1ZPSURf UCBFUVVBTCA4IEFORCBOT1QgV0lOMzIpCisgIGlmIChMSUJDWFhfQlVJTERfMzJfQklUUyBBTkQg Tk9UIExMVk1fQlVJTERfMzJfQklUUykgIyBEb24ndCBkdXBsaWNhdGUgdGhlIG91dHB1dCBmcm9t IExMVk0KKyAgICBtZXNzYWdlKFNUQVRVUyAiQnVpbGRpbmcgMzIgYml0cyBleGVjdXRhYmxlcyBh bmQgbGlicmFyaWVzLiIpCisgIGVuZGlmKCkKK2Vsc2VpZihMSUJDWFhfQlVJTERfMzJfQklUUykK KyAgbWVzc2FnZShGQVRBTF9FUlJPUiAiTElCQ1hYX0JVSUxEXzMyX0JJVFM9T04gaXMgbm90IHN1 cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtLiIpCitlbmRpZigpCisKKyMgQ2hlY2sgdGhhdCB0aGlz IG9wdGlvbiBpcyBub3QgZW5hYmxlZCBvbiBBcHBsZSBhbmQgZW1pdCBhIHVzYWdlIHdhcm5pbmcu CiBpZiAoTElCQ1hYX0VOQUJMRV9TVEFUSUNfQUJJX0xJQlJBUlkpCiAgIGlmIChBUFBMRSkKICAg ICBtZXNzYWdlKEZBVEFMX0VSUk9SICJMSUJDWFhfRU5BQkxFX1NUQVRJQ19BQklfTElCUkFSWSBp cyBub3Qgc3VwcG9ydGVkIG9uIE9TIFgiKQpAQCAtODQsMjcgKzEzMSw2IEBAIGlmIChMSUJDWFhf RU5BQkxFX1NUQVRJQ19BQklfTElCUkFSWSkKICAgZW5kaWYoKQogZW5kaWYoKQogCi1zZXQoQ1hY QUJJUyBub25lIGxpYmN4eGFiaSBsaWJjeHhydCBsaWJzdGRjKysgbGlic3VwYysrKQotaWYgKE5P VCBMSUJDWFhfQ1hYX0FCSSkKLSAgaWYgKE5PVCBERUZJTkVEIExJQkNYWF9CVUlMVF9TVEFOREFM T05FIEFORAotICAgICAgSVNfRElSRUNUT1JZICIke0NNQUtFX1NPVVJDRV9ESVJ9L3Byb2plY3Rz L2xpYmN4eGFiaSIpCi0gICAgc2V0KExJQkNYWF9DWFhfQUJJX0xJQk5BTUUgImxpYmN4eGFiaSIp Ci0gICAgc2V0KExJQkNYWF9DWFhfQUJJX0lOQ0xVREVfUEFUSFMgIiR7Q01BS0VfU09VUkNFX0RJ Un0vcHJvamVjdHMvbGliY3h4YWJpL2luY2x1ZGUiKQotICAgIHNldChMSUJDWFhfQ1hYX0FCSV9J TlRSRUUgMSkKLSAgZWxzZSAoKQotICAgIHNldChMSUJDWFhfQ1hYX0FCSV9MSUJOQU1FICJub25l IikKLSAgZW5kaWYgKCkKLWVsc2UgKCkKLSAgc2V0KExJQkNYWF9DWFhfQUJJX0xJQk5BTUUgIiR7 TElCQ1hYX0NYWF9BQkl9IikKLWVuZGlmICgpCi1zZXQoTElCQ1hYX0NYWF9BQkkgIiR7TElCQ1hY X0NYWF9BQkl9IiBDQUNIRSBTVFJJTkcKLSAgICAiU3BlY2lmeSBDKysgQUJJIGxpYnJhcnkgdG8g dXNlLiIgRk9SQ0UpCi1zZXRfcHJvcGVydHkoQ0FDSEUgTElCQ1hYX0NYWF9BQkkgUFJPUEVSVFkg U1RSSU5HUyA7JHtDWFhBQklTfSkKLQotIyBCdWlsZCBsaWJjKythYmkgd2l0aCBsaWJ1bndpbmQu IFdlIG5lZWQgdGhpcyBvcHRpb24gdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdG8KLSMgbGluayB3aXRo IGxpYnVud2luZCBvciBsaWJnY2NfcyB3aGlsZSBydW5uaW5nIHRoZSB0ZXN0IGNhc2VzLgotb3B0 aW9uKExJQkNYWEFCSV9VU0VfTExWTV9VTldJTkRFUiAiQnVpbGQgYW5kIHVzZSB0aGUgTExWTSB1 bndpbmRlci4iIE9GRikKLQogIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICMgQ29uZmlndXJlIFN5 c3RlbQogIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQEAgLTExNCwxNzMgKzE0MCwxMTEgQEAgc2V0 KExJQkNYWF9TT1VSQ0VfRElSICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0pCiBzZXQoTElC Q1hYX0JJTkFSWV9ESVIgICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfSkKIHNldChMSUJDWFhf TElCUkFSWV9ESVIgJHtDTUFLRV9CSU5BUllfRElSfS9saWIke0xJQkNYWF9MSUJESVJfU1VGRklY fSkKIAorc2V0KENNQUtFX0FSQ0hJVkVfT1VUUFVUX0RJUkVDVE9SWSAke0xJQkNYWF9MSUJSQVJZ X0RJUn0pCitzZXQoQ01BS0VfTElCUkFSWV9PVVRQVVRfRElSRUNUT1JZICR7TElCQ1hYX0xJQlJB UllfRElSfSkKKwogIyBEZWNsYXJlIGxpYmMrKyBjb25maWd1cmF0aW9uIHZhcmlhYmxlcy4KICMg VGhleSBhcmUgaW50ZW5kZWQgZm9yIHVzZSBhcyBmb2xsb3dzOgogIyBMSUJDWFhfQ1hYX0ZMQUdT OiBHZW5lcmFsIGZsYWdzIGZvciBib3RoIHRoZSBjb21waWxlciBhbmQgbGlua2VyLgogIyBMSUJD WFhfQ09NUElMRV9GTEFHUzogQ29tcGlsZSBvbmx5IGZsYWdzLgogIyBMSUJDWFhfTElOS19GTEFH UzogTGlua2VyIG9ubHkgZmxhZ3MuCi1zZXQoTElCQ1hYX0NYWF9GTEFHUyAiIikKIHNldChMSUJD WFhfQ09NUElMRV9GTEFHUyAiIikKIHNldChMSUJDWFhfTElOS19GTEFHUyAiIikKK3NldChMSUJD WFhfTElCUkFSSUVTICIiKQogCiAjIENvbmZpZ3VyZSBjb21waWxlci4KIGluY2x1ZGUoY29uZmln LWl4KQotIyBDb25maWd1cmUgQUJJIGxpYnJhcnkKLWluY2x1ZGUoSGFuZGxlTGliQ1hYQUJJKQor CiAjIENvbmZpZ3VyZSBjb3ZlcmFnZSBvcHRpb25zLgogaWYgKExJQkNYWF9HRU5FUkFURV9DT1ZF UkFHRSkKICAgaW5jbHVkZShDb2RlQ292ZXJhZ2UpCiAgIHNldChDTUFLRV9CVUlMRF9UWVBFICJD T1ZFUkFHRSIgQ0FDSEUgU1RSSU5HICIiIEZPUkNFKQogZW5kaWYoKQogCitzdHJpbmcoVE9VUFBF UiAiJHtDTUFLRV9CVUlMRF9UWVBFfSIgdXBwZXJjYXNlX0NNQUtFX0JVSUxEX1RZUEUpCisKICM9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CiAjIFNldHVwIENvbXBpbGVyIEZsYWdzCiAjPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQogCi0jIEdldCByZXF1aXJlZCBmbGFncy4KLSMgT24gYWxsIHN5c3RlbXMg dGhlIHN5c3RlbSBjKysgc3RhbmRhcmQgbGlicmFyeSBoZWFkZXJzIG5lZWQgdG8gYmUgZXhjbHVk ZWQuCi1pZiAoTVNWQykKLSAgIyBNU1ZDIG9ubHkgaGFzIC1YLCB3aGljaCBkaXNhYmxlcyBhbGwg ZGVmYXVsdCBpbmNsdWRlczsgaW5jbHVkaW5nIHRoZSBjcnQuCi0gICMgVGh1cywgd2UgZG8gbm90 aGluZyBhbmQgaG9wZSB3ZSBkb24ndCBhY2NpZGVudGFsbHkgaW5jbHVkZSBhbnkgb2YgdGhlIEMr KwotICAjIGhlYWRlcnMuCi1lbHNlKCkKLSAgaWYgKExJQkNYWF9IQVNfTk9TVERJTkNYWF9GTEFH KQotICAgIGxpc3QoQVBQRU5EIExJQkNYWF9DT01QSUxFX0ZMQUdTIC1ub3N0ZGluYysrKQotICAg IHN0cmluZyhSRVBMQUNFICItc3RkbGliPWxpYmMrKyIgIiIgQ01BS0VfQ1hYX0ZMQUdTICIke0NN QUtFX0NYWF9GTEFHU30iKQotICAgIHN0cmluZyhSRVBMQUNFICItc3RkbGliPWxpYnN0ZGMrKyIg IiIgQ01BS0VfQ1hYX0ZMQUdTICIke0NNQUtFX0NYWF9GTEFHU30iKQotICBlbmRpZigpCi0gICMg SWYgYysrMXkgaGFzIGJlZW4gZW5hYmxlZCB0aGVuIGF0dGVtcHQgdG8gdXNlIGl0LiBGYWlsIGlm IGl0IGlzIG5vIHN1cHBvcnRlZAotICAjIGJ5IHRoZSBjb21waWxlci4gT3RoZXJ3aXNlIGNob29z ZSBjKysxMSBhbmQgZW5zdXJlIHRoZSBjb21waWxlciBzdXBwb3J0cyBpdC4KLSAgaWYgKExJQkNY WF9FTkFCTEVfQ1hYMVkpCi0gICAgaWYgKExJQkNYWF9IQVNfU1REQ1hYMVlfRkxBRykKLSAgICAg IHNldChMSUJDWFhfU1REX1ZFUlNJT04gYysrMXkpCi0gICAgZWxzZSgpCi0gICAgICBtZXNzYWdl KEZBVEFMX0VSUk9SICJjKysxeSB3YXMgZW5hYmxlZCBidXQgdGhlIGNvbXBpbGVyIGRvZXMgbm90 IHN1cHBvcnQgaXQuIikKLSAgICBlbmRpZigpCi0gIGVsc2UoKQotICAgIGlmIChMSUJDWFhfSEFT X1NURENYWDExX0ZMQUcpCi0gICAgICBzZXQoTElCQ1hYX1NURF9WRVJTSU9OIGMrKzExKQotICAg IGVsc2UoKQotICAgICAgbWVzc2FnZShGQVRBTF9FUlJPUiAiYysrMTEgaXMgcmVxdWlyZWQgYnkg bGliYysrIGJ1dCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBjb21waWxlciIpCi0gICAgZW5kaWYo KQotICBlbmRpZigpCi0gICMgTElCQ1hYX1NURF9WRVJTSU9OIHNob3VsZCBhbHdheXMgYmUgc2V0 IGF0IHRoaXMgcG9pbnQuCi0gIGxpc3QoQVBQRU5EIExJQkNYWF9DWFhfRkxBR1MgIi1zdGQ9JHtM SUJDWFhfU1REX1ZFUlNJT059IikKLWVuZGlmKCkKK2luY2x1ZGUoSGFuZGxlTGliQ1hYQUJJKSAj IFN0ZXVwIHRoZSBBQkkgbGlicmFyeSBmbGFncwogCi1tYWNybyhhcHBlbmRfaWYgbGlzdCBjb25k aXRpb24gdmFyKQotICBpZiAoJHtjb25kaXRpb259KQotICAgIGxpc3QoQVBQRU5EICR7bGlzdH0g JHt2YXJ9KQotICBlbmRpZigpCi1lbmRtYWNybygpCisjIEluY2x1ZGUgbWFjcm9zIGZvciBhZGRp bmcgYW5kIHJlbW92aW5nIGxpYmMrKyBmbGFncy4KK2luY2x1ZGUoSGFuZGxlTGliY3h4RmxhZ3Mp CiAKLSMgR2V0IHdhcm5pbmcgZmxhZ3MKLSMgRGlzYWJsZSB0aGUgc3lzdGVtIGhlYWRlciBwcmFn bWEuCi1hZGRfZGVmaW5pdGlvbnMoLURfTElCQ1BQX0hBU19OT19QUkFHTUFfU1lTVEVNX0hFQURF UikKLWlmIChOT1QgTVNWQykKLSAgYXBwZW5kX2lmKExJQkNYWF9DT01QSUxFX0ZMQUdTIExJQkNY WF9IQVNfV0FMTF9GTEFHIC1XYWxsKQotICBsaXN0KEFQUEVORCBMSUJDWFhfQ09NUElMRV9GTEFH UyAtV2Vycm9yPXJldHVybi10eXBlKQorIyBSZW1vdmUgZmxhZ3MgdGhhdCBtYXkgaGF2ZSBzbnVj ayBpbi4KK3JlbW92ZV9mbGFncygtRE5ERUJVRyAtVU5ERUJVRyAtRF9ERUJVRworICAgICAgICAg ICAgIC1zdGRsaWI9bGliYysrIC1zdGRsaWI9bGlic3RkYysrIC1sYysrYWJpIC1tMzIpCisKKyMg UmVxdWlyZWQgZmxhZ3MgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KK2FkZF9jb21waWxlX2ZsYWdzX2lmX3N1cHBvcnRlZCgtc3Rk PWMrKzExKQoraWYgKE5PVCBNU1ZDIEFORCBOT1QgTElCQ1hYX1NVUFBPUlRTX1NURF9FUV9DWFgx MV9GTEFHKQorICBtZXNzYWdlKEZBVEFMX0VSUk9SICJDKysxMSBpcyByZXF1aXJlZCBidXQgdGhl IGNvbXBpbGVyIGRvZXMgbm90IHN1cHBvcnQgLXN0ZD1jKysxMSIpCiBlbmRpZigpCiAKLWFwcGVu ZF9pZihMSUJDWFhfQ09NUElMRV9GTEFHUyBMSUJDWFhfSEFTX1dfRkxBRyAtVykKLWFwcGVuZF9p ZihMSUJDWFhfQ09NUElMRV9GTEFHUyBMSUJDWFhfSEFTX1dOT19VTlVTRURfUEFSQU1FVEVSX0ZM QUcgLVduby11bnVzZWQtcGFyYW1ldGVyKQotYXBwZW5kX2lmKExJQkNYWF9DT01QSUxFX0ZMQUdT IExJQkNYWF9IQVNfV1dSSVRFX1NUUklOR1NfRkxBRyAtV3dyaXRlLXN0cmluZ3MpCi1hcHBlbmRf aWYoTElCQ1hYX0NPTVBJTEVfRkxBR1MgTElCQ1hYX0hBU19XTk9fTE9OR19MT05HX0ZMQUcgLVdu by1sb25nLWxvbmcpCisjIE9uIGFsbCBzeXN0ZW1zIHRoZSBzeXN0ZW0gYysrIHN0YW5kYXJkIGxp YnJhcnkgaGVhZGVycyBuZWVkIHRvIGJlIGV4Y2x1ZGVkLgorIyBNU1ZDIG9ubHkgaGFzIC1YLCB3 aGljaCBkaXNhYmxlcyBhbGwgZGVmYXVsdCBpbmNsdWRlczsgaW5jbHVkaW5nIHRoZSBjcnQuCisj IFRodXMsIHdlIGRvIG5vdGhpbmcgYW5kIGhvcGUgd2UgZG9uJ3QgYWNjaWRlbnRhbGx5IGluY2x1 ZGUgYW55IG9mIHRoZSBDKysKKyMgaGVhZGVycworYWRkX2NvbXBpbGVfZmxhZ3NfaWZfc3VwcG9y dGVkKC1ub3N0ZGluYysrKQorCisjIFRhcmdldCBmbGFncyA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CithZGRfZmxhZ3NfaWYo TElCQ1hYX0JVSUxEXzMyX0JJVFMgLW0zMikKK2FkZF9mbGFnc19pZihMSUJDWFhfVEFSR0VUX1RS SVBMRSAiLXRhcmdldCAke0xJQkNYWF9UQVJHRVRfVFJJUExFfSIpCithZGRfZmxhZ3NfaWYoTElC Q1hYX1NZU1JPT1QgIi0tc3lzcm9vdCAke0xJQkNYWF9TWVNST09UfSIpCithZGRfZmxhZ3NfaWYo TElCQ1hYX0dDQ19UT09MQ0hBSU4gIi1nY2MtdG9vbGNoYWluICR7TElCQ1hYX0dDQ19UT09MQ0hB SU59IikKKworIyBXYXJuaW5nIGZsYWdzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorYWRkX2RlZmluaXRpb25zKC1EX0xJQkNQ UF9IQVNfTk9fUFJBR01BX1NZU1RFTV9IRUFERVIpCithZGRfY29tcGlsZV9mbGFnc19pZl9zdXBw b3J0ZWQoCisgICAgLVdhbGwgLVcgLVd3cml0ZS1zdHJpbmdzCisgICAgLVduby11bnVzZWQtcGFy YW1ldGVyIC1Xbm8tbG9uZy1sb25nCisgICAgLVdlcnJvcj1yZXR1cm4tdHlwZSkKIGlmIChMSUJD WFhfRU5BQkxFX1dFUlJPUikKLSAgYXBwZW5kX2lmKExJQkNYWF9DT01QSUxFX0ZMQUdTIExJQkNY WF9IQVNfV0VSUk9SX0ZMQUcgLVdlcnJvcikKLSAgYXBwZW5kX2lmKExJQkNYWF9DT01QSUxFX0ZM QUdTIExJQkNYWF9IQVNfV1hfRkxBRyAtV1gpCi1lbHNlKCkKLSAgYXBwZW5kX2lmKExJQkNYWF9D T01QSUxFX0ZMQUdTIExJQkNYWF9IQVNfV05PX0VSUk9SX0ZMQUcgLVduby1lcnJvcikKLSAgYXBw ZW5kX2lmKExJQkNYWF9DT01QSUxFX0ZMQUdTIExJQkNYWF9IQVNfTk9fV1hfRkxBRyAtV1gtKQor ICBhZGRfY29tcGlsZV9mbGFnc19pZl9zdXBwb3J0ZWQoLVdlcnJvcikKKyAgYWRkX2NvbXBpbGVf ZmxhZ3NfaWZfc3VwcG9ydGVkKC1XWCkKIGVuZGlmKCkKIGlmIChMSUJDWFhfRU5BQkxFX1BFREFO VElDKQotICBhcHBlbmRfaWYoTElCQ1hYX0NPTVBJTEVfRkxBR1MgTElCQ1hYX0hBU19QRURBTlRJ Q19GTEFHIC1wZWRhbnRpYykKKyAgYWRkX2NvbXBpbGVfZmxhZ3NfaWZfc3VwcG9ydGVkKC1wZWRh bnRpYykKIGVuZGlmKCkKIAotIyBHZXQgZmVhdHVyZSBmbGFncy4KLSMgRXhjZXB0aW9ucworIyBF eGNlcHRpb24gZmxhZ3MgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQogaWYgKExJQkNYWF9FTkFCTEVfRVhDRVBUSU9OUykKICAgIyBD YXRjaGVzIEMrKyBleGNlcHRpb25zIG9ubHkgYW5kIHRlbGxzIHRoZSBjb21waWxlciB0byBhc3N1 bWUgdGhhdCBleHRlcm4gQwogICAjIGZ1bmN0aW9ucyBuZXZlciB0aHJvdyBhIEMrKyBleGNlcHRp b24uCi0gIGFwcGVuZF9pZihMSUJDWFhfQ1hYX0ZMQUdTIExJQkNYWF9IQVNfRUhTQ19GTEFHIC1F SHNjKQorICBhZGRfY29tcGlsZV9mbGFnc19pZl9zdXBwb3J0ZWQoLUVIc2MpCiBlbHNlKCkKLSAg bGlzdChBUFBFTkQgTElCQ1hYX0NYWF9GTEFHUyAtRF9MSUJDUFBfTk9fRVhDRVBUSU9OUykKLSAg YXBwZW5kX2lmKExJQkNYWF9DWFhfRkxBR1MgTElCQ1hYX0hBU19OT19FSFNfRkxBRyAtRUhzLSkK LSAgYXBwZW5kX2lmKExJQkNYWF9DWFhfRkxBR1MgTElCQ1hYX0hBU19OT19FSEFfRkxBRyAtRUhh LSkKLSAgYXBwZW5kX2lmKExJQkNYWF9DWFhfRkxBR1MgTElCQ1hYX0hBU19GTk9fRVhDRVBUSU9O U19GTEFHIC1mbm8tZXhjZXB0aW9ucykKKyAgYWRkX2RlZmluaXRpb25zKC1EX0xJQkNQUF9OT19F WENFUFRJT05TKQorICBhZGRfY29tcGlsZV9mbGFnc19pZl9zdXBwb3J0ZWQoLUVIcy0gLUVIYS0p CisgIGFkZF9jb21waWxlX2ZsYWdzX2lmX3N1cHBvcnRlZCgtZm5vLWV4Y2VwdGlvbnMpCiBlbmRp ZigpCi0jIFJUVEkKKworIyBSVFRJIGZsYWdzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogaWYgKE5PVCBMSUJDWFhfRU5B QkxFX1JUVEkpCi0gIGxpc3QoQVBQRU5EIExJQkNYWF9DWFhfRkxBR1MgLURfTElCQ1BQX05PX1JU VEkpCi0gIGFwcGVuZF9pZihMSUJDWFhfQ1hYX0ZMQUdTIExJQkNYWF9IQVNfTk9fR1JfRkxBRyAt R1ItKQotICBhcHBlbmRfaWYoTElCQ1hYX0NYWF9GTEFHUyBMSUJDWFhfSEFTX0ZOT19SVFRJX0ZM QUcgLWZuby1ydHRpKQorICBhZGRfZGVmaW5pdGlvbnMoLURfTElCQ1BQX05PX1JUVEkpCisgIGFk ZF9jb21waWxlX2ZsYWdzX2lmX3N1cHBvcnRlZCgtR1ItKQorICBhZGRfY29tcGlsZV9mbGFnc19p Zl9zdXBwb3J0ZWQoLWZuby1ydHRpKQogZW5kaWYoKQotIyBBc3NlcnQKLXN0cmluZyhUT1VQUEVS ICIke0NNQUtFX0JVSUxEX1RZUEV9IiB1cHBlcmNhc2VfQ01BS0VfQlVJTERfVFlQRSkKKworIyBB c3NlcnRpb24gZmxhZ3MgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorZGVmaW5lX2lmKExJQkNYWF9FTkFCTEVfQVNTRVJUSU9OUyAt VU5ERUJVRykKK2RlZmluZV9pZl9ub3QoTElCQ1hYX0VOQUJMRV9BU1NFUlRJT05TIC1ETkRFQlVH KQogaWYgKExJQkNYWF9FTkFCTEVfQVNTRVJUSU9OUykKICAgIyBNU1ZDIGRvZXNuJ3QgbGlrZSBf REVCVUcgb24gcmVsZWFzZSBidWlsZHMuIFNlZSBQUiA0Mzc5LgotICBpZiAoTk9UIE1TVkMpCi0g ICAgbGlzdChBUFBFTkQgTElCQ1hYX0NPTVBJTEVfRkxBR1MgLURfREVCVUcpCi0gIGVuZGlmKCkK LSAgIyBPbiBSZWxlYXNlIGJ1aWxkcyBjbWFrZSBhdXRvbWF0aWNhbGx5IGRlZmluZXMgTkRFQlVH LCBzbyB3ZQotICAjIGV4cGxpY2l0bHkgdW5kZWZpbmUgaXQ6Ci0gIGlmICh1cHBlcmNhc2VfQ01B S0VfQlVJTERfVFlQRSBTVFJFUVVBTCAiUkVMRUFTRSIpCi0gICAgbGlzdChBUFBFTkQgTElCQ1hY X0NPTVBJTEVfRkxBR1MgLVVOREVCVUcpCi0gIGVuZGlmKCkKLWVsc2UoKQotICBpZiAoTk9UIHVw cGVyY2FzZV9DTUFLRV9CVUlMRF9UWVBFIFNUUkVRVUFMICJSRUxFQVNFIikKLSAgICBsaXN0KEFQ UEVORCBMSUJDWFhfQ09NUElMRV9GTEFHUyAtRE5ERUJVRykKLSAgZW5kaWYoKQotZW5kaWYoKQot IyBTdGF0aWMgbGlicmFyeQotaWYgKE5PVCBMSUJDWFhfRU5BQkxFX1NIQVJFRCkKLSAgbGlzdChB UFBFTkQgTElCQ1hYX0NPTVBJTEVfRkxBR1MgLURfTElCQ1BQX0JVSUxEX1NUQVRJQykKKyAgZGVm aW5lX2lmX25vdChNU1ZDIC1EX0RFQlVHKQogZW5kaWYoKQogCi1pZiAoQ01BS0VfU0laRU9GX1ZP SURfUCBFUVVBTCA4IEFORCBOT1QgV0lOMzIpCi0gIGlmIChMSUJDWFhfQlVJTERfMzJfQklUUykK LSAgICBtZXNzYWdlKFNUQVRVUyAiQnVpbGRpbmcgMzIgYml0cyBleGVjdXRhYmxlcyBhbmQgbGli cmFyaWVzLiIpCi0gICAgbGlzdChBUFBFTkQgTElCQ1hYX0NYWF9GTEFHUyAiLW0zMiIpCi0gIGVu ZGlmKCkKLWVsc2VpZihMSUJDWFhfQlVJTERfMzJfQklUUykKLSAgbWVzc2FnZShGQVRBTF9FUlJP UiAiTElCQ1hYX0JVSUxEXzMyX0JJVFM9T04gaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRm b3JtLiIpCi1lbmRpZigpCi0jIFRoaXMgaXMgdGhlIF9PTkxZXyBwbGFjZSB3aGVyZSBhZGRfZGVm aW5pdGlvbnMgaXMgY2FsbGVkLgotaWYgKE1TVkMpCi0gIGFkZF9kZWZpbml0aW9ucygtRF9DUlRf U0VDVVJFX05PX1dBUk5JTkdTKQotZW5kaWYoKQotCi0jIExJQkNYWF9FTkFCTEVfR0xPQkFMX0ZJ TEVTWVNURU1fTkFNRVNQQUNFIGNvbmZpZ3VyYXRpb24KLWlmIChOT1QgTElCQ1hYX0VOQUJMRV9H TE9CQUxfRklMRVNZU1RFTV9OQU1FU1BBQ0UpCi0gIGFkZF9kZWZpbml0aW9ucygtRF9MSUJDUFBf SEFTX05PX0dMT0JBTF9GSUxFU1lTVEVNX05BTUVTUEFDRSkKLWVuZGlmKCkKLQotIyBMSUJDWFhf RU5BQkxFX1NURElOIGNvbmZpZ3VyYXRpb24KLWlmIChOT1QgTElCQ1hYX0VOQUJMRV9TVERJTikK LSAgYWRkX2RlZmluaXRpb25zKC1EX0xJQkNQUF9IQVNfTk9fU1RESU4pCi1lbmRpZigpCi0KLSMg TElCQ1hYX0VOQUJMRV9TVERPVVQgY29uZmlndXJhdGlvbgotaWYgKE5PVCBMSUJDWFhfRU5BQkxF X1NURE9VVCkKLSAgYWRkX2RlZmluaXRpb25zKC1EX0xJQkNQUF9IQVNfTk9fU1RET1VUKQotZW5k aWYoKQorIyBGZWF0dXJlIGZsYWdzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorZGVmaW5lX2lmKE1TVkMgLURfQ1JUX1NFQ1VS RV9OT19XQVJOSU5HUykKK2RlZmluZV9pZl9ub3QoTElCQ1hYX0VOQUJMRV9HTE9CQUxfRklMRVNZ U1RFTV9OQU1FU1BBQ0UgLURfTElCQ1BQX0hBU19OT19HTE9CQUxfRklMRVNZU1RFTV9OQU1FU1BB Q0UpCitkZWZpbmVfaWZfbm90KExJQkNYWF9FTkFCTEVfU1RESU4gLURfTElCQ1BQX0hBU19OT19T VERJTikKK2RlZmluZV9pZl9ub3QoTElCQ1hYX0VOQUJMRV9TVERPVVQgLURfTElCQ1BQX0hBU19O T19TVERPVVQpCitkZWZpbmVfaWZfbm90KExJQkNYWF9FTkFCTEVfVEhSRUFEUyAtRF9MSUJDUFBf SEFTX05PX1RIUkVBRFMpCitkZWZpbmVfaWZfbm90KExJQkNYWF9FTkFCTEVfTU9OT1RPTklDX0NM T0NLIC1EX0xJQkNQUF9IQVNfTk9fTU9OT1RPTklDX0NMT0NLKQorZGVmaW5lX2lmX25vdChMSUJD WFhfRU5BQkxFX1RIUkVBRF9VTlNBRkVfQ19GVU5DVElPTlMgLURfTElCQ1BQX0hBU19OT19USFJF QURfVU5TQUZFX0NfRlVOQ1RJT05TKQogCi0jIExJQkNYWF9FTkFCTEVfVEhSRUFEUyBjb25maWd1 cmF0aW9uCi1pZiAoTk9UIExJQkNYWF9FTkFCTEVfVEhSRUFEUykKLSAgYWRkX2RlZmluaXRpb25z KC1EX0xJQkNQUF9IQVNfTk9fVEhSRUFEUykKLSAgaWYgKE5PVCBMSUJDWFhfRU5BQkxFX01PTk9U T05JQ19DTE9DSykKLSAgICBhZGRfZGVmaW5pdGlvbnMoLURfTElCQ1BQX0hBU19OT19NT05PVE9O SUNfQ0xPQ0spCi0gIGVuZGlmKCkKLSMgRW5zdXJlIExJQkNYWF9FTkFCTEVfTU9OT1RPTklDX0NM T0NLIGlzIHNldCB0byBPTi4KLWVsc2VpZihOT1QgTElCQ1hYX0VOQUJMRV9NT05PVE9OSUNfQ0xP Q0spCi0gIG1lc3NhZ2UoRkFUQUxfRVJST1IgIkxJQkNYWF9FTkFCTEVfTU9OT1RPTklDX0NMT0NL IGNhbiBvbmx5IGJlIHNldCB0byBPRkYiCi0gICAgICAgICAgICAgICAgICAgICAgIiB3aGVuIExJ QkNYWF9FTkFCTEVfVEhSRUFEUyBpcyBhbHNvIHNldCB0byBPRkYuIikKLWVuZGlmKCkKIAotIyBM SUJDWFhfRU5BQkxFX1RIUkVBRF9VTlNBRkVfQ19GVU5DVElPTlMgY29uZmlndXJhdGlvbgotaWYg KE5PVCBMSUJDWFhfRU5BQkxFX1RIUkVBRF9VTlNBRkVfQ19GVU5DVElPTlMpCi0gIGFkZF9kZWZp bml0aW9ucygtRF9MSUJDUFBfSEFTX05PX1RIUkVBRF9VTlNBRkVfQ19GVU5DVElPTlMpCi1lbmRp ZigpCisjIFNhbml0aXplciBmbGFncwogCiAjIENvbmZpZ3VyZSBmb3Igc2FuaXRpemVycy4gSWYg TElCQ1hYX0JVSUxUX1NUQU5EQUxPTkUgdGhlbiB3ZSBoYXZlIHRvIGRvCiAjIHRoZSBmbGFnIHRy YW5zbGF0aW9uIG91cnNlbHZlcy4gT3RoZXdpc2UgTExWTSdzIENNYWtlTGlzdC50eHQgd2lsbCBo YW5kbGUgaXQuCkBAIC0yODgsNjAgKzI1MiwzNyBAQCBpZiAoTElCQ1hYX0JVSUxUX1NUQU5EQUxP TkUpCiAgICMgTk9URTogTExWTV9VU0VfU0FOSVRJWkVSIGNoZWNrcyBmb3IgYSBVTklYIGxpa2Ug c3lzdGVtIGluc3RlYWQgb2YgTVNWQy4KICAgIyBCdXQgd2UgZG9uJ3QgaGF2ZSBMTFZNX09OX1VO SVggc28gY2hlY2tpbmcgZm9yIE1TVkMgaXMgdGhlIGJlc3Qgd2UgY2FuIGRvLgogICBpZiAoTExW TV9VU0VfU0FOSVRJWkVSIEFORCBOT1QgTVNWQykKLSAgICBhcHBlbmRfaWYoTElCQ1hYX0NYWF9G TEFHUyBMSUJDWFhfSEFTX0ZOT19PTUlUX0ZSQU1FX1BPSU5URVJfRkxBRwotICAgICAgICAgICAg ICAiLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIiKQorICAgIGFkZF9mbGFnc19pZl9zdXBwb3J0ZWQo Ii1mbm8tb21pdC1mcmFtZS1wb2ludGVyIikKKyAgICBhZGRfZmxhZ3NfaWZfc3VwcG9ydGVkKCIt Z2xpbmUtdGFibGVzLW9ubHkiKQorCiAgICAgaWYgKE5PVCB1cHBlcmNhc2VfQ01BS0VfQlVJTERf VFlQRSBTVFJFUVVBTCAiREVCVUciIEFORAogICAgICAgICBOT1QgdXBwZXJjYXNlX0NNQUtFX0JV SUxEX1RZUEUgU1RSRVFVQUwgIlJFTFdJVEhERUJJTkZPIikKLSAgICAgIGFwcGVuZF9pZihMSUJD WFhfQ1hYX0ZMQUdTIExJQkNYWF9IQVNfR0xJTkVfVEFCTEVTX09OTFlfRkxBRwotICAgICAgICAg ICAgICAgICItZ2xpbmUtdGFibGVzLW9ubHkiKQorICAgICAgICBhZGRfZmxhZ3NfaWZfc3VwcG9y dGVkKCItZ2xpbmUtdGFibGVzLW9ubHkiKQogICAgIGVuZGlmKCkKICAgICBpZiAoTExWTV9VU0Vf U0FOSVRJWkVSIFNUUkVRVUFMICJBZGRyZXNzIikKLSAgICAgIGxpc3QoQVBQRU5EIExJQkNYWF9D WFhfRkxBR1MgIi1mc2FuaXRpemU9YWRkcmVzcyIpCisgICAgICBhZGRfZmxhZ3MoIi1mc2FuaXRp emU9YWRkcmVzcyIpCiAgICAgZWxzZWlmIChMTFZNX1VTRV9TQU5JVElaRVIgTUFUQ0hFUyAiTWVt b3J5KFdpdGhPcmlnaW5zKT8iKQotICAgICAgbGlzdChBUFBFTkQgTElCQ1hYX0NYWF9GTEFHUyAi LWZzYW5pdGl6ZT1tZW1vcnkiKQorICAgICAgYWRkX2ZsYWdzKC1mc2FuaXRpemU9bWVtb3J5KQog ICAgICAgaWYgKExMVk1fVVNFX1NBTklUSVpFUiBTVFJFUVVBTCAiTWVtb3J5V2l0aE9yaWdpbnMi KQotICAgICAgICBsaXN0KEFQUEVORCBMSUJDWFhfQ1hYX0ZMQUdTICItZnNhbml0aXplLW1lbW9y eS10cmFjay1vcmlnaW5zIikKKyAgICAgICAgYWRkX2ZsYWdzKCItZnNhbml0aXplLW1lbW9yeS10 cmFjay1vcmlnaW5zIikKICAgICAgIGVuZGlmKCkKICAgICBlbHNlaWYgKExMVk1fVVNFX1NBTklU SVpFUiBTVFJFUVVBTCAiVW5kZWZpbmVkIikKLSAgICAgIGxpc3QoQVBQRU5EIExJQkNYWF9DWFhf RkxBR1MKLSAgICAgICAgICAiLWZzYW5pdGl6ZT11bmRlZmluZWQgLWZuby1zYW5pdGl6ZT12cHRy LGZ1bmN0aW9uIC1mbm8tc2FuaXRpemUtcmVjb3ZlciIpCisgICAgICBhZGRfZmxhZ3MoIi1mc2Fu aXRpemU9dW5kZWZpbmVkIC1mbm8tc2FuaXRpemU9dnB0cixmdW5jdGlvbiAtZm5vLXNhbml0aXpl LXJlY292ZXI9YWxsIikKICAgICBlbHNlaWYgKExMVk1fVVNFX1NBTklUSVpFUiBTVFJFUVVBTCAi VGhyZWFkIikKLSAgICAgIGxpc3QoQVBQRU5EIExJQkNYWF9DWFhfRkxBR1MgIi1mc2FuaXRpemU9 dGhyZWFkIikKKyAgICAgIGFkZF9mbGFncygtZnNhbml0aXplPXRocmVhZCkKICAgICBlbHNlKCkK ICAgICAgIG1lc3NhZ2UoV0FSTklORyAiVW5zdXBwb3J0ZWQgdmFsdWUgb2YgTExWTV9VU0VfU0FO SVRJWkVSOiAke0xMVk1fVVNFX1NBTklUSVpFUn0iKQogICAgIGVuZGlmKCkKLSAgZWxzZWlmKE1T VkMpCi0gICAgbWVzc2FnZShXQVJOSU5HICJMTFZNX1VTRV9TQU5JVElaRVIgaXMgbm90IHN1cHBv cnRlZCB3aXRoIE1TVkMiKQorICBlbHNlaWYoTExWTV9VU0VfU0FOSVRJWkVSIEFORCBNU1ZDKQor ICAgIG1lc3NhZ2UoV0FSTklORyAiTExWTV9VU0VfU0FOSVRJWkVSIGlzIG5vdCBzdXBwb3J0ZWQg b24gdGhpcyBwbGF0Zm9ybS4iKQogICBlbmRpZigpCiBlbmRpZigpCi0KLWFwcGVuZF9pZihMSUJD WFhfQ1hYX0ZMQUdTIExJQkNYWF9UQVJHRVRfVFJJUExFCi0gICAgICAgICAgIi10YXJnZXQgJHtM SUJDWFhfVEFSR0VUX1RSSVBMRX0iKQotCi1hcHBlbmRfaWYoTElCQ1hYX0NYWF9GTEFHUyBMSUJD WFhfU1lTUk9PVCAiLS1zeXNyb290ICR7TElCQ1hYX1NZU1JPT1R9IikKLWFwcGVuZF9pZihMSUJD WFhfQ1hYX0ZMQUdTIExJQkNYWF9HQ0NfVE9PTENIQUlOCi0gICAgICAgICAgIi1nY2MtdG9vbGNo YWluICR7TElCQ1hYX0dDQ19UT09MQ0hBSU59IikKLQotaWYgKExMVk1fVVNFX1NBTklUSVpFUiBB TkQgTElCQ1hYX0dFTkVSQVRFX0NPVkVSQUdFKQotICBtZXNzYWdlKEZBVEFMX0VSUk9SICJMTFZN X1VTRV9TQU5JVElaRVIgY2Fubm90IGJlIHVzZWQgd2l0aCBMSUJDWFhfR0VORVJBVEVfQ09WRVJB R0UiKQotZW5kaWYoKQotCi1zdHJpbmcoUkVQTEFDRSAiOyIgIiAiIExJQkNYWF9DWFhfRkxBR1Mg IiR7TElCQ1hYX0NYWF9GTEFHU30iKQotc2V0KENNQUtFX0NYWF9GTEFHUyAiJHtDTUFLRV9DWFhf RkxBR1N9ICR7TElCQ1hYX0NYWF9GTEFHU30iKQotCiAjPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot IyBTZXR1cCBTb3VyY2UgQ29kZQorIyBTZXR1cCBTb3VyY2UgQ29kZSBBbmQgVGVzdHMKICM9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0KIGluY2x1ZGVfZGlyZWN0b3JpZXMoaW5jbHVkZSkKIGFkZF9z dWJkaXJlY3RvcnkoaW5jbHVkZSkKLQotIyBBZGQgc291cmNlIGNvZGUuIFRoaXMgYWxzbyBjb250 YWlucyBhbGwgb2YgdGhlIGxvZ2ljIGZvciBkZWNpZGluZyBsaW5rZXIgZmxhZ3MKLSMgc29uYW1l LCBldGMuLi4KIGFkZF9zdWJkaXJlY3RvcnkobGliKQotCi0jPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotIyBTZXR1cCBUZXN0cwotIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotYWRkX3N1YmRpcmVj dG9yeSh0ZXN0KQoraWYgKExJQkNYWF9JTkNMVURFX1RFU1RTKQorICBhZGRfc3ViZGlyZWN0b3J5 KHRlc3QpCitlbmRpZigpCmRpZmYgLS1naXQgYS9jbWFrZS9Nb2R1bGVzL0ZpbmRMTFZNLmNtYWtl IGIvY21ha2UvTW9kdWxlcy9GaW5kTExWTS5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi4xZWVkNjE4Ci0tLSAvZGV2L251bGwKKysrIGIvY21ha2UvTW9kdWxlcy9GaW5k TExWTS5jbWFrZQpAQCAtMCwwICsxLDkyIEBACittYWNybyhmaW5kX2xsdm1fcGFydHMpCisjIFJl bHkgb24gbGx2bS1jb25maWcuCisgIHNldChDT05GSUdfT1VUUFVUKQorICBmaW5kX3Byb2dyYW0o TExWTV9DT05GSUcgImxsdm0tY29uZmlnIikKKyAgaWYoREVGSU5FRCBMTFZNX1BBVEgpCisgICAg c2V0KExMVk1fSU5DTFVERV9ESVIgJHtMTFZNX0lOQ0xVREVfRElSfSBDQUNIRSBQQVRIICJQYXRo IHRvIGxsdm0vaW5jbHVkZSIpCisgICAgc2V0KExMVk1fUEFUSCAke0xMVk1fUEFUSH0gQ0FDSEUg UEFUSCAiUGF0aCB0byBMTFZNIHNvdXJjZSB0cmVlIikKKyAgICBzZXQoTExWTV9NQUlOX1NSQ19E SVIgJHtMTFZNX1BBVEh9KQorICAgIHNldChMTFZNX0NNQUtFX1BBVEggIiR7TExWTV9QQVRIfS9j bWFrZS9tb2R1bGVzIikKKyAgZWxzZWlmKExMVk1fQ09ORklHKQorICAgIG1lc3NhZ2UoU1RBVFVT ICJGb3VuZCBMTFZNX0NPTkZJRyBhcyAke0xMVk1fQ09ORklHfSIpCisgICAgc2V0KENPTkZJR19D T01NQU5EICR7TExWTV9DT05GSUd9CisgICAgICAiLS1pbmNsdWRlZGlyIgorICAgICAgIi0tcHJl Zml4IgorICAgICAgIi0tc3JjLXJvb3QiKQorICAgIGV4ZWN1dGVfcHJvY2VzcygKKyAgICAgIENP TU1BTkQgJHtDT05GSUdfQ09NTUFORH0KKyAgICAgIFJFU1VMVF9WQVJJQUJMRSBIQURfRVJST1IK KyAgICAgIE9VVFBVVF9WQVJJQUJMRSBDT05GSUdfT1VUUFVUCisgICAgKQorICAgIGlmKE5PVCBI QURfRVJST1IpCisgICAgICBzdHJpbmcoUkVHRVggUkVQTEFDRQorICAgICAgICAiWyBcdF0qW1xy XG5dK1sgXHRdKiIgIjsiCisgICAgICAgIENPTkZJR19PVVRQVVQgJHtDT05GSUdfT1VUUFVUfSkK KyAgICBlbHNlKCkKKyAgICAgIHN0cmluZyhSRVBMQUNFICI7IiAiICIgQ09ORklHX0NPTU1BTkRf U1RSICIke0NPTkZJR19DT01NQU5EfSIpCisgICAgICBtZXNzYWdlKFNUQVRVUyAiJHtDT05GSUdf Q09NTUFORF9TVFJ9IikKKyAgICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgImxsdm0tY29uZmlnIGZh aWxlZCB3aXRoIHN0YXR1cyAke0hBRF9FUlJPUn0iKQorICAgIGVuZGlmKCkKKworICAgIGxpc3Qo R0VUIENPTkZJR19PVVRQVVQgMCBJTkNMVURFX0RJUikKKyAgICBsaXN0KEdFVCBDT05GSUdfT1VU UFVUIDEgTExWTV9PQkpfUk9PVCkKKyAgICBsaXN0KEdFVCBDT05GSUdfT1VUUFVUIDIgTUFJTl9T UkNfRElSKQorCisgICAgc2V0KExMVk1fSU5DTFVERV9ESVIgJHtJTkNMVURFX0RJUn0gQ0FDSEUg UEFUSCAiUGF0aCB0byBsbHZtL2luY2x1ZGUiKQorICAgIHNldChMTFZNX0JJTkFSWV9ESVIgJHtM TFZNX09CSl9ST09UfSBDQUNIRSBQQVRIICJQYXRoIHRvIExMVk0gYnVpbGQgdHJlZSIpCisgICAg c2V0KExMVk1fTUFJTl9TUkNfRElSICR7TUFJTl9TUkNfRElSfSBDQUNIRSBQQVRIICJQYXRoIHRv IExMVk0gc291cmNlIHRyZWUiKQorICAgIHNldChMTFZNX0NNQUtFX1BBVEggIiR7TExWTV9CSU5B UllfRElSfS9zaGFyZS9sbHZtL2NtYWtlIikKKyAgZWxzZSgpCisgICAgc2V0KExMVk1fRk9VTkQg T0ZGKQorICAgIHJldHVybigpCisgIGVuZGlmKCkKKworICBpZiAoTk9UIEVYSVNUUyAke0xMVk1f TUFJTl9TUkNfRElSfSkKKyAgICBtZXNzYWdlKEZBVEFMX0VSUk9SICJOb3QgZm91bmQ6ICR7TExW TV9NQUlOX1NSQ19ESVJ9IikKKyAgZW5kaWYoKQorCisgIGlmKE5PVCBFWElTVFMgJHtMTFZNX0NN QUtFX1BBVEh9KQorICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgIk5vdCBmb3VuZDogJHtMTFZNX0NN QUtFX1BBVEh9IikKKyAgZW5kaWYoKQorCisgIGxpc3QoQVBQRU5EIENNQUtFX01PRFVMRV9QQVRI ICIke0xMVk1fQ01BS0VfUEFUSH0iKQorICBsaXN0KEFQUEVORCBDTUFLRV9NT0RVTEVfUEFUSCAi JHtMTFZNX01BSU5fU1JDX0RJUn0vY21ha2UvbW9kdWxlcyIpCisKKyAgc2V0KExMVk1fRk9VTkQg T04pCitlbmRtYWNybyhmaW5kX2xsdm1fcGFydHMpCisKKworaWYgKENNQUtFX1NPVVJDRV9ESVIg U1RSRVFVQUwgQ01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSKQorICBzZXQoTElCQ1hYX0JVSUxUX1NU QU5EQUxPTkUgMSkKKworICBmaW5kX2xsdm1fcGFydHMoKQorCisgIHNldChMTFZNX1VTRV9TQU5J VElaRVIgIiIgQ0FDSEUgU1RSSU5HCisgICAgICAiRGVmaW5lIHRoZSBzYW5pdGl6ZXIgdXNlZCB0 byBidWlsZCB0aGUgbGlicmFyeSBhbmQgdGVzdHMiKQorCisgIGlmIChOT1QgREVGSU5FRCBMTFZN X0lOQ0xVREVfVEVTVFMpCisgICAgc2V0KExMVk1fSU5DTFVERV9URVNUUyAke0xMVk1fRk9VTkR9 KQorICBlbmRpZigpCisKKyAgIyBNYWtlIHN1cmUgd2UgY2FuIHVzZSB0aGUgY29uc29sZSBwb29s IGZvciByZWNlbnQgY21ha2UgYW5kIG5pbmphID4gMS41CisgIGlmKENNQUtFX1ZFUlNJT04gVkVS U0lPTl9MRVNTIDMuMS4yMDE0MTExNykKKyAgICBzZXQoY21ha2VfM18yX1VTRVNfVEVSTUlOQUwp CisgIGVsc2UoKQorICAgIHNldChjbWFrZV8zXzJfVVNFU19URVJNSU5BTCBVU0VTX1RFUk1JTkFM KQorICBlbmRpZigpCisKKyAgIyBEZWZpbmUgdGhlIGRlZmF1bHQgYXJndW1lbnRzIHRvIHVzZSB3 aXRoICdsaXQnLCBhbmQgYW4gb3B0aW9uIGZvciB0aGUgdXNlcgorICAjIHRvIG92ZXJyaWRlLgor ICBzZXQoTElUX0FSR1NfREVGQVVMVCAiLXN2IC0tc2hvdy14ZmFpbCAtLXNob3ctdW5zdXBwb3J0 ZWQiKQorICBpZiAoTVNWQyBPUiBYQ09ERSkKKyAgICBzZXQoTElUX0FSR1NfREVGQVVMVCAiJHtM SVRfQVJHU19ERUZBVUxUfSAtLW5vLXByb2dyZXNzLWJhciIpCisgIGVuZGlmKCkKKyAgc2V0KExM Vk1fTElUX0FSR1MgIiR7TElUX0FSR1NfREVGQVVMVH0iIENBQ0hFIFNUUklORyAiRGVmYXVsdCBv cHRpb25zIGZvciBsaXQiKQorCisgIGluY2x1ZGUoQWRkTExWTSBPUFRJT05BTCkgIyBJbmNsdWRl IHRoZSBMTFZNIENNYWtlIGZ1bmN0aW9ucy4KKyAgIyBUT0RPKEVyaWNXRikgRW5hYmxlIHRoaXMK KyAgI2luY2x1ZGUoSGFuZGxlTExWTU9wdGlvbnMgT1BUSU9OQUwpCitlbHNlKCkKKyAgc2V0KExM Vk1fRk9VTkQgT04pCisgIHNldChMTFZNX01BSU5fU1JDX0RJUiAiJHtDTUFLRV9TT1VSQ0VfRElS fSIgQ0FDSEUgUEFUSCAiUGF0aCB0byBMTFZNIHNvdXJjZSB0cmVlIikKK2VuZGlmKCkKZGlmZiAt LWdpdCBhL2NtYWtlL01vZHVsZXMvSGFuZGxlTGliQ1hYQUJJLmNtYWtlIGIvY21ha2UvTW9kdWxl cy9IYW5kbGVMaWJDWFhBQkkuY21ha2UKaW5kZXggNzM3MjNlMy4uNDIyNDg4MiAxMDA2NDQKLS0t IGEvY21ha2UvTW9kdWxlcy9IYW5kbGVMaWJDWFhBQkkuY21ha2UKKysrIGIvY21ha2UvTW9kdWxl cy9IYW5kbGVMaWJDWFhBQkkuY21ha2UKQEAgLTU4LDYgKzU4LDIxIEBAIG1hY3JvKHNldHVwX2Fi aV9saWIgYWJpZGVmaW5lcyBhYmlsaWIgYWJpZmlsZXMgYWJpZGlycykKIAogZW5kbWFjcm8oKQog CisjIFNldHVwIHRoZSBkZWZhdWx0IG9wdGlvbnMgaWYgTElCQ1hYX0NYWF9BQkkgaXMgbm90IHNw ZWNpZmllZC4KK2lmIChOT1QgTElCQ1hYX0NYWF9BQkkpCisgIGlmIChOT1QgREVGSU5FRCBMSUJD WFhfQlVJTFRfU1RBTkRBTE9ORSBBTkQKKyAgICAgIElTX0RJUkVDVE9SWSAiJHtDTUFLRV9TT1VS Q0VfRElSfS9wcm9qZWN0cy9saWJjeHhhYmkiKQorICAgIHNldChMSUJDWFhfQ1hYX0FCSV9MSUJO QU1FICJsaWJjeHhhYmkiKQorICAgIHNldChMSUJDWFhfQ1hYX0FCSV9JTkNMVURFX1BBVEhTICIk e0NNQUtFX1NPVVJDRV9ESVJ9L3Byb2plY3RzL2xpYmN4eGFiaS9pbmNsdWRlIikKKyAgICBzZXQo TElCQ1hYX0NYWF9BQklfSU5UUkVFIDEpCisgIGVsc2UgKCkKKyAgICBzZXQoTElCQ1hYX0NYWF9B QklfTElCTkFNRSAibm9uZSIpCisgIGVuZGlmICgpCitlbHNlICgpCisgIHNldChMSUJDWFhfQ1hY X0FCSV9MSUJOQU1FICIke0xJQkNYWF9DWFhfQUJJfSIpCitlbmRpZiAoKQorCisjIENvbmZpZ3Vy ZSBiYXNlZCBvbiB0aGUgc2VsZWN0ZWQgQUJJIGxpYnJhcnkuCiBpZiAoIiR7TElCQ1hYX0NYWF9B QklfTElCTkFNRX0iIFNUUkVRVUFMICJsaWJzdGRjKysiIE9SCiAgICAgIiR7TElCQ1hYX0NYWF9B QklfTElCTkFNRX0iIFNUUkVRVUFMICJsaWJzdXBjKysiKQogICBzZXQoX0xJQlNVUENYWF9JTkNM VURFX0ZJTEVTCmRpZmYgLS1naXQgYS9jbWFrZS9Nb2R1bGVzL0hhbmRsZUxpYmN4eEZsYWdzLmNt YWtlIGIvY21ha2UvTW9kdWxlcy9IYW5kbGVMaWJjeHhGbGFncy5jbWFrZQpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTQ1MGRhCi0tLSAvZGV2L251bGwKKysrIGIvY21ha2Uv TW9kdWxlcy9IYW5kbGVMaWJjeHhGbGFncy5jbWFrZQpAQCAtMCwwICsxLDE0NyBAQAorIyBIYW5k bGVMaWJjeHhGbGFncyAtIEEgc2V0IG9mIG1hY3JvcyB1c2VkIHRvIHNldHVwIHRoZSBmbGFncyB1 c2VkIHRvIGNvbXBpbGUKKyMgYW5kIGxpbmsgbGliYysrLiBUaGVzZSBtYWNyb3MgYWRkIGZsYWdz IHRvIHRoZSBmb2xsb3dpbmcgQ01ha2UgdmFyaWFibGVzLgorIyAtIExJQkNYWF9DT01QSUxFX0ZM QUdTOiBmbGFncyB1c2VkIHRvIGNvbXBpbGUgbGliYysrCisjIC0gTElCQ1hYX0xJTktfRkxBR1M6 IGZsYWdzIHVzZWQgdG8gbGluayBsaWJjKysKKyMgLSBMSUJDWFhfTElCUkFSSUVTOiBsaWJyYXJp ZXMgdG8gbGluayBsaWJjKysgdG8uCisKK2luY2x1ZGUoQ2hlY2tDWFhDb21waWxlckZsYWcpCisK K3Vuc2V0KGFkZF9mbGFnX2lmX3N1cHBvcnRlZCkKKworIyBNYW5nbGUgdGhlIG5hbWUgb2YgYSBj b21waWxlciBmbGFnIGludG8gYSB2YWxpZCBDTWFrZSBpZGVudGlmaWVyLgorIyBFeDogLS1zdGQ9 YysrMTEgLT4gU1REX0VRX0NYWDExCittYWNybyhtYW5nbGVfbmFtZSBzdHIgb3V0cHV0KQorICBz dHJpbmcoU1RSSVAgIiR7c3RyfSIgc3RyaXBwZWRTdHIpCisgIHN0cmluZyhSRUdFWCBSRVBMQUNF ICJeLyIgIiIgc3RyaXBwZWRTdHIgIiR7c3RyaXBwZWRTdHJ9IikKKyAgc3RyaW5nKFJFR0VYIFJF UExBQ0UgIl4tKyIgIiIgc3RyaXBwZWRTdHIgIiR7c3RyaXBwZWRTdHJ9IikKKyAgc3RyaW5nKFJF R0VYIFJFUExBQ0UgIi0rJCIgIiIgc3RyaXBwZWRTdHIgIiR7c3RyaXBwZWRTdHJ9IikKKyAgc3Ry aW5nKFJFUExBQ0UgIi0iICJfIiBzdHJpcHBlZFN0ciAiJHtzdHJpcHBlZFN0cn0iKQorICBzdHJp bmcoUkVQTEFDRSAiPSIgIl9FUV8iIHN0cmlwcGVkU3RyICIke3N0cmlwcGVkU3RyfSIpCisgIHN0 cmluZyhSRVBMQUNFICIrIiAiWCIgc3RyaXBwZWRTdHIgIiR7c3RyaXBwZWRTdHJ9IikKKyAgc3Ry aW5nKFRPVVBQRVIgIiR7c3RyaXBwZWRTdHJ9IiAke291dHB1dH0pCitlbmRtYWNybygpCisKKyMg UmVtb3ZlIGEgbGlzdCBvZiBmbGFncyBmcm9tIGFsbCBDTWFrZSB2YXJpYWJsZXMgdGhhdCBhZmZl Y3QgY29tcGlsZSBmbGFncy4KKyMgVGhpcyBjYW4gYmUgdXNlZCB0byByZW1vdmUgdW53YW50ZWQg ZmxhZ3Mgc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kIGxpbmUKKyMgb3IgYWRkZWQgaW4gb3RoZXIg cGFydHMgb2YgTExWTSdzIGNtYWtlIGNvbmZpZ3VyYXRpb24uCittYWNybyhyZW1vdmVfZmxhZ3Mp CisgIGZvcmVhY2godmFyICR7QVJHTn0pCisgICAgc3RyaW5nKFJFUExBQ0UgIiR7dmFyfSIgIiIg Q01BS0VfQ1hYX0ZMQUdTICIke0NNQUtFX0NYWF9GTEFHU30iKQorICAgIHN0cmluZyhSRVBMQUNF ICIke3Zhcn0iICIiIENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30iKQorICAgIHN0cmlu ZyhSRVBMQUNFICIke3Zhcn0iICIiIENNQUtFX0VYRV9MSU5LRVJfRkxBR1MgIiR7Q01BS0VfRVhF X0xJTktFUl9GTEFHU30iKQorICAgIHN0cmluZyhSRVBMQUNFICIke3Zhcn0iICIiIENNQUtFX1NI QVJFRF9MSU5LRVJfRkxBR1MgIiR7Q01BS0VfU0hBUkVEX0xJTktFUl9GTEFHU30iKQorICAgIHN0 cmluZyhSRVBMQUNFICIke3Zhcn0iICIiIENNQUtFX1NIQVJFRF9NT0RVTEVfRkxBR1MgIiR7Q01B S0VfU0hBUkVEX01PRFVMRV9GTEFHU30iKQorICAgIHJlbW92ZV9kZWZpbml0aW9ucygke3Zhcn0p CisgIGVuZGZvcmVhY2goKQorZW5kbWFjcm8ocmVtb3ZlX2ZsYWdzKQorCisjIEFkZCBhIG1hY3Jv IGRlZmluaXRpb24gaWYgY29uZGl0aW9uIGlzIHRydWUuCittYWNybyhkZWZpbmVfaWYgY29uZGl0 aW9uIGRlZikKKyAgaWYgKCR7Y29uZGl0aW9ufSkKKyAgICBhZGRfZGVmaW5pdGlvbnMoJHtkZWZ9 KQorICBlbmRpZigpCitlbmRtYWNybygpCisKKyMgQWRkIGEgbWFjcm8gZGVmaW5pdGlvbiBpZiBj b25kaXRpb24gaXMgbm90IHRydWUuCittYWNybyhkZWZpbmVfaWZfbm90IGNvbmRpdGlvbiBkZWYp CisgIGlmIChOT1QgJHtjb25kaXRpb259KQorICAgIGFkZF9kZWZpbml0aW9ucygke2RlZn0pCisg IGVuZGlmKCkKK2VuZG1hY3JvKCkKKworIyBBZGQgYSBzcGVjaWZpZWQgbGlzdCBvZiBmbGFncyB0 byBib3RoICdMSUJDWFhfQ09NUElMRV9GTEFHUycgYW5kCisjICdMSUJDWFhfTElOS19GTEFHUycu CittYWNybyhhZGRfZmxhZ3MpCisgIGZvcmVhY2godmFsdWUgJHtBUkdOfSkKKyAgICBsaXN0KEFQ UEVORCBMSUJDWFhfQ09NUElMRV9GTEFHUyAke3ZhbHVlfSkKKyAgICBsaXN0KEFQUEVORCBMSUJD WFhfTElOS19GTEFHUyAke3ZhbHVlfSkKKyAgZW5kZm9yZWFjaCgpCitlbmRtYWNybygpCisKKyMg SWYgdGhlIHNwZWNpZmllZCAnY29uZGl0aW9uJyBpcyB0cnVlIHRoZW4gYWRkIGEgbGlzdCBvZiBm bGFncyB0byBib3RoCisjICdMSUJDWFhfQ09NUElMRV9GTEFHUycgYW5kICdMSUJDWFhfTElOS19G TEFHUycuCittYWNybyhhZGRfZmxhZ3NfaWYgY29uZGl0aW9uKQorICBpZiAoJHtjb25kaXRpb259 KQorICAgIGFkZF9mbGFncygke0FSR059KQorICBlbmRpZigpCitlbmRtYWNybygpCisKKyMgQWRk IGVhY2ggZmxhZyBpbiB0aGUgbGlzdCB0byBMSUJDWFhfQ09NUElMRV9GTEFHUyBhbmQgTElCQ1hY X0xJTktfRkxBR1MKKyMgaWYgdGhhdCBmbGFnIGlzIHN1cHBvcnRlZCBieSB0aGUgY3VycmVudCBj b21waWxlci4KK21hY3JvKGFkZF9mbGFnc19pZl9zdXBwb3J0ZWQpCisgIGZvcmVhY2goZmxhZyAk e0FSR059KQorICAgICAgbWFuZ2xlX25hbWUoIiR7ZmxhZ30iIGZsYWduYW1lKQorICAgICAgY2hl Y2tfY3h4X2NvbXBpbGVyX2ZsYWcoIiR7ZmxhZ30iICJMSUJDWFhfU1VQUE9SVFNfJHtmbGFnbmFt ZX1fRkxBRyIpCisgICAgICBhZGRfZmxhZ3NfaWYoTElCQ1hYX1NVUFBPUlRTXyR7ZmxhZ25hbWV9 X0ZMQUcgJHtmbGFnfSkKKyAgZW5kZm9yZWFjaCgpCitlbmRtYWNybygpCisKKyMgQWRkIGEgbGlz dCBvZiBmbGFncyB0byAnTElCQ1hYX0NPTVBJTEVfRkxBR1MnLgorbWFjcm8oYWRkX2NvbXBpbGVf ZmxhZ3MpCisgIGZvcmVhY2goZiAke0FSR059KQorICAgIGxpc3QoQVBQRU5EIExJQkNYWF9DT01Q SUxFX0ZMQUdTICR7Zn0pCisgIGVuZGZvcmVhY2goKQorZW5kbWFjcm8oKQorCisjIElmICdjb25k aXRpb24nIGlzIHRydWUgdGhlbiBhZGQgdGhlIHNwZWNpZmllZCBsaXN0IG9mIGZsYWdzIHRvCisj ICdMSUJDWFhfQ09NUElMRV9GTEFHUycKK21hY3JvKGFkZF9jb21waWxlX2ZsYWdzX2lmIGNvbmRp dGlvbikKKyAgaWYgKCR7Y29uZGl0aW9ufSkKKyAgICBhZGRfY29tcGlsZV9mbGFncygke0FSR059 KQorICBlbmRpZigpCitlbmRtYWNybygpCisKKyMgRm9yIGVhY2ggc3BlY2lmaWVkIGZsYWcsIGFk ZCB0aGF0IGZsYWcgdG8gJ0xJQkNYWF9DT01QSUxFX0ZMQUdTJyBpZiB0aGUKKyMgZmxhZyBpcyBz dXBwb3J0ZWQgYnkgdGhlIEMrKyBjb21waWxlci4KK21hY3JvKGFkZF9jb21waWxlX2ZsYWdzX2lm X3N1cHBvcnRlZCkKKyAgZm9yZWFjaChmbGFnICR7QVJHTn0pCisgICAgICBtYW5nbGVfbmFtZSgi JHtmbGFnfSIgZmxhZ25hbWUpCisgICAgICBjaGVja19jeHhfY29tcGlsZXJfZmxhZygiLVdlcnJv ciAke2ZsYWd9IiAiTElCQ1hYX1NVUFBPUlRTXyR7ZmxhZ25hbWV9X0ZMQUciKQorICAgICAgYWRk X2NvbXBpbGVfZmxhZ3NfaWYoTElCQ1hYX1NVUFBPUlRTXyR7ZmxhZ25hbWV9X0ZMQUcgJHtmbGFn fSkKKyAgZW5kZm9yZWFjaCgpCitlbmRtYWNybygpCisKKyMgQWRkIGEgbGlzdCBvZiBmbGFncyB0 byAnTElCQ1hYX0xJTktfRkxBR1MnLgorbWFjcm8oYWRkX2xpbmtfZmxhZ3MpCisgIGZvcmVhY2go ZiAke0FSR059KQorICAgIGxpc3QoQVBQRU5EIExJQkNYWF9MSU5LX0ZMQUdTICR7Zn0pCisgIGVu ZGZvcmVhY2goKQorZW5kbWFjcm8oKQorCisjIElmICdjb25kaXRpb24nIGlzIHRydWUgdGhlbiBh ZGQgdGhlIHNwZWNpZmllZCBsaXN0IG9mIGZsYWdzIHRvCisjICdMSUJDWFhfTElOS19GTEFHUycK K21hY3JvKGFkZF9saW5rX2ZsYWdzX2lmIGNvbmRpdGlvbikKKyAgaWYgKCR7Y29uZGl0aW9ufSkK KyAgICBhZGRfbGlua19mbGFncygke0FSR059KQorICBlbmRpZigpCitlbmRtYWNybygpCisKKyMg Rm9yIGVhY2ggc3BlY2lmaWVkIGZsYWcsIGFkZCB0aGF0IGZsYWcgdG8gJ0xJQkNYWF9MSU5LX0ZM QUdTJyBpZiB0aGUKKyMgZmxhZyBpcyBzdXBwb3J0ZWQgYnkgdGhlIEMrKyBjb21waWxlci4KK21h Y3JvKGFkZF9saW5rX2ZsYWdzX2lmX3N1cHBvcnRlZCkKKyAgZm9yZWFjaChmbGFnICR7QVJHTn0p CisgICAgbWFuZ2xlX25hbWUoIiR7ZmxhZ30iIGZsYWduYW1lKQorICAgIGNoZWNrX2N4eF9jb21w aWxlcl9mbGFnKCIke2ZsYWd9IiAiTElCQ1hYX1NVUFBPUlRTXyR7ZmxhZ25hbWV9X0ZMQUciKQor ICAgIGFkZF9saW5rX2ZsYWdzX2lmKExJQkNYWF9TVVBQT1JUU18ke2ZsYWduYW1lfV9GTEFHICR7 ZmxhZ30pCisgIGVuZGZvcmVhY2goKQorZW5kbWFjcm8oKQorCisjIEFkZCBhIGxpc3Qgb2YgbGli cmFyaWVzIG9yIGxpbmsgZmxhZ3MgdG8gJ0xJQkNYWF9MSUJSQVJJRVMnLgorbWFjcm8oYWRkX2xp YnJhcnlfZmxhZ3MpCisgIGZvcmVhY2gobGliICR7QVJHTn0pCisgICAgbGlzdChBUFBFTkQgTElC Q1hYX0xJQlJBUklFUyAke2xpYn0pCisgIGVuZGZvcmVhY2goKQorZW5kbWFjcm8oKQorCisjIGlm ICdjb25kaXRpb24nIGlzIHRydWUgdGhlbiBhZGQgdGhlIHNwZWNpZmllZCBsaXN0IG9mIGxpYnJh cmllcyBhbmQgZmxhZ3MKKyMgdG8gJ0xJQkNYWF9MSUJSQVJJRVMnLgorbWFjcm8oYWRkX2xpYnJh cnlfZmxhZ3NfaWYgY29uZGl0aW9uKQorICBpZigke2NvbmRpdGlvbn0pCisgICAgYWRkX2xpYnJh cnlfZmxhZ3MoJHtBUkdOfSkKKyAgZW5kaWYoKQorZW5kbWFjcm8oKQorCisjIFR1cm4gYSBjb21t YSBzZXBhcmF0ZWQgQ01ha2UgbGlzdCBpbnRvIGEgc3BhY2Ugc2VwYXJhdGVkIHN0cmluZy4KK21h Y3JvKHNwbGl0X2xpc3QgbGlzdG5hbWUpCisgIHN0cmluZyhSRVBMQUNFICI7IiAiICIgJHtsaXN0 bmFtZX0gIiR7JHtsaXN0bmFtZX19IikKK2VuZG1hY3JvKCkKZGlmZiAtLWdpdCBhL2NtYWtlL2Nv bmZpZy1peC5jbWFrZSBiL2NtYWtlL2NvbmZpZy1peC5jbWFrZQppbmRleCA0MjhkNzM3Li5hY2U3 YWNhIDEwMDY0NAotLS0gYS9jbWFrZS9jb25maWctaXguY21ha2UKKysrIGIvY21ha2UvY29uZmln LWl4LmNtYWtlCkBAIC0yLDIzICsyLDcgQEAgaW5jbHVkZShDaGVja0xpYnJhcnlFeGlzdHMpCiBp bmNsdWRlKENoZWNrQ1hYQ29tcGlsZXJGbGFnKQogCiAjIENoZWNrIGNvbXBpbGVyIGZsYWdzCi1j aGVja19jeHhfY29tcGlsZXJfZmxhZygtc3RkPWMrKzExICAgICAgICAgICAgICBMSUJDWFhfSEFT X1NURENYWDExX0ZMQUcpCi1jaGVja19jeHhfY29tcGlsZXJfZmxhZygtc3RkPWMrKzF5ICAgICAg ICAgICAgICBMSUJDWFhfSEFTX1NURENYWDFZX0ZMQUcpCi1jaGVja19jeHhfY29tcGlsZXJfZmxh ZygtZlBJQyAgICAgICAgICAgICAgICAgICBMSUJDWFhfSEFTX0ZQSUNfRkxBRykKLWNoZWNrX2N4 eF9jb21waWxlcl9mbGFnKC1mbm8tb21pdC1mcmFtZS1wb2ludGVyIExJQkNYWF9IQVNfRk5PX09N SVRfRlJBTUVfUE9JTlRFUl9GTEFHKQotY2hlY2tfY3h4X2NvbXBpbGVyX2ZsYWcoLW5vZGVmYXVs dGxpYnMgICAgICAgICAgTElCQ1hYX0hBU19OT0RFRkFVTFRMSUJTX0ZMQUcpCi1jaGVja19jeHhf Y29tcGlsZXJfZmxhZygtbm9zdGRpbmMrKyAgICAgICAgICAgICBMSUJDWFhfSEFTX05PU1RESU5D WFhfRkxBRykKLWNoZWNrX2N4eF9jb21waWxlcl9mbGFnKC1XYWxsICAgICAgICAgICAgICAgICAg IExJQkNYWF9IQVNfV0FMTF9GTEFHKQotY2hlY2tfY3h4X2NvbXBpbGVyX2ZsYWcoLVcgICAgICAg ICAgICAgICAgICAgICAgTElCQ1hYX0hBU19XX0ZMQUcpCi1jaGVja19jeHhfY29tcGlsZXJfZmxh ZygtV25vLXVudXNlZC1wYXJhbWV0ZXIgICBMSUJDWFhfSEFTX1dOT19VTlVTRURfUEFSQU1FVEVS X0ZMQUcpCi1jaGVja19jeHhfY29tcGlsZXJfZmxhZygtV3dyaXRlLXN0cmluZ3MgICAgICAgICBM SUJDWFhfSEFTX1dXUklURV9TVFJJTkdTX0ZMQUcpCi1jaGVja19jeHhfY29tcGlsZXJfZmxhZygt V25vLWxvbmctbG9uZyAgICAgICAgICBMSUJDWFhfSEFTX1dOT19MT05HX0xPTkdfRkxBRykKLWNo ZWNrX2N4eF9jb21waWxlcl9mbGFnKC1wZWRhbnRpYyAgICAgICAgICAgICAgIExJQkNYWF9IQVNf UEVEQU5USUNfRkxBRykKLWNoZWNrX2N4eF9jb21waWxlcl9mbGFnKC1XZXJyb3IgICAgICAgICAg ICAgICAgIExJQkNYWF9IQVNfV0VSUk9SX0ZMQUcpCi1jaGVja19jeHhfY29tcGlsZXJfZmxhZygt V25vLWVycm9yICAgICAgICAgICAgICBMSUJDWFhfSEFTX1dOT19FUlJPUl9GTEFHKQotY2hlY2tf Y3h4X2NvbXBpbGVyX2ZsYWcoLWZuby1leGNlcHRpb25zICAgICAgICAgTElCQ1hYX0hBU19GTk9f RVhDRVBUSU9OU19GTEFHKQotY2hlY2tfY3h4X2NvbXBpbGVyX2ZsYWcoLWZuby1ydHRpICAgICAg ICAgICAgICAgTElCQ1hYX0hBU19GTk9fUlRUSV9GTEFHKQotY2hlY2tfY3h4X2NvbXBpbGVyX2Zs YWcoLWdsaW5lLXRhYmxlcy1vbmx5ICAgICAgTElCQ1hYX0hBU19HTElORV9UQUJMRVNfT05MWV9G TEFHKQorCiBjaGVja19jeHhfY29tcGlsZXJfZmxhZygvV1ggICAgICAgICAgICAgICAgICAgICBM SUJDWFhfSEFTX1dYX0ZMQUcpCiBjaGVja19jeHhfY29tcGlsZXJfZmxhZygvV1gtICAgICAgICAg ICAgICAgICAgICBMSUJDWFhfSEFTX05PX1dYX0ZMQUcpCiBjaGVja19jeHhfY29tcGlsZXJfZmxh ZygvRUhzYyAgICAgICAgICAgICAgICAgICBMSUJDWFhfSEFTX0VIU0NfRkxBRykKQEAgLTI2LDYg KzEwLDcgQEAgY2hlY2tfY3h4X2NvbXBpbGVyX2ZsYWcoL0VIcy0gICAgICAgICAgICAgICAgICAg TElCQ1hYX0hBU19OT19FSFNfRkxBRykKIGNoZWNrX2N4eF9jb21waWxlcl9mbGFnKC9FSGEtICAg ICAgICAgICAgICAgICAgIExJQkNYWF9IQVNfTk9fRUhBX0ZMQUcpCiBjaGVja19jeHhfY29tcGls ZXJfZmxhZygvR1ItICAgICAgICAgICAgICAgICAgICBMSUJDWFhfSEFTX05PX0dSX0ZMQUcpCiAK KwogIyBDaGVjayBsaWJyYXJpZXMKIGNoZWNrX2xpYnJhcnlfZXhpc3RzKHB0aHJlYWQgcHRocmVh ZF9jcmVhdGUgIiIgTElCQ1hYX0hBU19QVEhSRUFEX0xJQikKIGNoZWNrX2xpYnJhcnlfZXhpc3Rz KGMgcHJpbnRmICIiIExJQkNYWF9IQVNfQ19MSUIpCmRpZmYgLS1naXQgYS9saWIvQ01ha2VMaXN0 cy50eHQgYi9saWIvQ01ha2VMaXN0cy50eHQKaW5kZXggYTMyZjI5My4uMjZkZWU2NyAxMDA2NDQK LS0tIGEvbGliL0NNYWtlTGlzdHMudHh0CisrKyBiL2xpYi9DTWFrZUxpc3RzLnR4dApAQCAtMjUs NDggKzI1LDIzIEBAIGlmIChNU1ZDX0lERSBPUiBYQ09ERSkKIGVuZGlmKCkKIAogaWYgKExJQkNY WF9FTkFCTEVfU0hBUkVEKQotICBhZGRfbGlicmFyeShjeHggU0hBUkVECi0gICAgJHtMSUJDWFhf U09VUkNFU30KLSAgICAke0xJQkNYWF9IRUFERVJTfQotICAgICkKKyAgYWRkX2xpYnJhcnkoY3h4 IFNIQVJFRCAke0xJQkNYWF9TT1VSQ0VTfSAke0xJQkNYWF9IRUFERVJTfSkKIGVsc2UoKQotICBh ZGRfbGlicmFyeShjeHggU1RBVElDCi0gICAgJHtMSUJDWFhfU09VUkNFU30KLSAgICAke0xJQkNY WF9IRUFERVJTfQotICAgICkKLWVuZGlmKCkKLQotI2lmIExJQkNYWF9DWFhfQUJJX0xJQlJBUllf UEFUSCBpcyBkZWZpbmVkIHdlIHdhbnQgdG8gYWRkIGl0IHRvIHRoZSBzZWFyY2ggcGF0aC4KLWlm IChERUZJTkVEIExJQkNYWF9DWFhfQUJJX0xJQlJBUllfUEFUSCkKLSAgdGFyZ2V0X2xpbmtfbGli cmFyaWVzKGN4eCAiLUwke0xJQkNYWF9DWFhfQUJJX0xJQlJBUllfUEFUSH0iKQorICBhZGRfbGli cmFyeShjeHggU1RBVElDICR7TElCQ1hYX1NPVVJDRVN9ICR7TElCQ1hYX0hFQURFUlN9KQogZW5k aWYoKQogCiBpZiAoREVGSU5FRCBMSUJDWFhfQ1hYX0FCSV9ERVBTKQogICBhZGRfZGVwZW5kZW5j aWVzKGN4eCBMSUJDWFhfQ1hYX0FCSV9ERVBTKQogZW5kaWYoKQogCi1zZXQobGlicmFyaWVzICIi KQotaWYgKExJQkNYWF9FTkFCTEVfU1RBVElDX0FCSV9MSUJSQVJZKQotICAgICMgVE9ETyhlcmlj d2YpOiBSZW1vdmUgdGhlc2UgR05VIHNwZWNpZmljIGxpbmtlciBmbGFncyBhbmQgbGV0IENNYWtl IGRvIHRoZQotICAgICMgY29uZmlndXJhdGlvbi4gVGhpcyB3aWxsIGJlIG1vcmUgcG9ydGFibGUu Ci0gICAgbGlzdChBUFBFTkQgbGlicmFyaWVzICItV2wsLS13aG9sZS1hcmNoaXZlIiAiLVdsLC1C c3RhdGljIikKLSAgICBsaXN0KEFQUEVORCBsaWJyYXJpZXMgIiR7TElCQ1hYX0NYWF9BQklfTElC UkFSWX0iKQotICAgIGxpc3QoQVBQRU5EIGxpYnJhcmllcyAiLVdsLC1CZHluYW1pYyIgIi1XbCwt LW5vLXdob2xlLWFyY2hpdmUiKQotZWxzZSgpCi0gICAgbGlzdChBUFBFTkQgbGlicmFyaWVzICIk e0xJQkNYWF9DWFhfQUJJX0xJQlJBUll9IikKLWVuZGlmKCkKKyNpZiBMSUJDWFhfQ1hYX0FCSV9M SUJSQVJZX1BBVEggaXMgZGVmaW5lZCB3ZSB3YW50IHRvIGFkZCBpdCB0byB0aGUgc2VhcmNoIHBh dGguCithZGRfbGlua19mbGFnc19pZihMSUJDWFhfQ1hYX0FCSV9MSUJSQVJZX1BBVEggIi1MJHtM SUJDWFhfQ1hYX0FCSV9MSUJSQVJZX1BBVEh9IikKIAotIyBHZW5lcmF0ZSBsaWJyYXJ5IGxpc3Qu Ci1hcHBlbmRfaWYobGlicmFyaWVzIExJQkNYWF9IQVNfUFRIUkVBRF9MSUIgcHRocmVhZCkKLWFw cGVuZF9pZihsaWJyYXJpZXMgTElCQ1hYX0hBU19DX0xJQiBjKQotYXBwZW5kX2lmKGxpYnJhcmll cyBMSUJDWFhfSEFTX01fTElCIG0pCi1hcHBlbmRfaWYobGlicmFyaWVzIExJQkNYWF9IQVNfUlRf TElCIHJ0KQotYXBwZW5kX2lmKGxpYnJhcmllcyBMSUJDWFhfSEFTX0dDQ19TX0xJQiBnY2NfcykK LQotaWYgKExJQkNYWF9DT1ZFUkFHRV9MSUJSQVJZKQotICB0YXJnZXRfbGlua19saWJyYXJpZXMo Y3h4ICR7TElCQ1hYX0NPVkVSQUdFX0xJQlJBUll9KQotZW5kaWYoKQotdGFyZ2V0X2xpbmtfbGli cmFyaWVzKGN4eCAke2xpYnJhcmllc30pCithZGRfbGlicmFyeV9mbGFnc19pZihMSUJDWFhfQ09W RVJBR0VfTElCUkFSWSAiJHtMSUJDWFhfQ09WRVJBR0VfTElCUkFSWX0iKQorCithZGRfbGlicmFy eV9mbGFnc19pZihMSUJDWFhfRU5BQkxFX1NUQVRJQ19BQklfTElCUkFSWSAiLVdsLC0td2hvbGUt YXJjaGl2ZSIgIi1XbCwtQnN0YXRpYyIpCithZGRfbGlicmFyeV9mbGFncygiJHtMSUJDWFhfQ1hY X0FCSV9MSUJSQVJZfSIpCithZGRfbGlicmFyeV9mbGFnc19pZihMSUJDWFhfRU5BQkxFX1NUQVRJ Q19BQklfTElCUkFSWSAiLVdsLC1CZHluYW1pYyIgIi1XbCwtLW5vLXdob2xlLWFyY2hpdmUiKQog CiBpZiAoQVBQTEUgQU5EIExMVk1fVVNFX1NBTklUSVpFUikKICAgaWYgKCIke0xMVk1fVVNFX1NB TklUSVpFUn0iIFNUUkVRVUFMICJBZGRyZXNzIikKQEAgLTg5LDE1ICs2NCwyMSBAQCBpZiAoQVBQ TEUgQU5EIExMVk1fVVNFX1NBTklUSVpFUikKICAgICBzZXQoTElCQ1hYX1NBTklUSVpFUl9MSUJS QVJZICIke0xJQkRJUn0vJHtMSUJGSUxFfSIpCiAgICAgc2V0KExJQkNYWF9TQU5JVElaRVJfTElC UkFSWSAiJHtMSUJDWFhfU0FOSVRJWkVSX0xJQlJBUll9IiBQQVJFTlRfU0NPUEUpCiAgICAgbWVz c2FnZShTVEFUVVMgIk1hbnVhbGx5IGxpbmtpbmcgY29tcGlsZXItcnQgbGlicmFyeTogJHtMSUJD WFhfU0FOSVRJWkVSX0xJQlJBUll9IikKLSAgICB0YXJnZXRfbGlua19saWJyYXJpZXMoY3h4ICIk e0xJQkNYWF9TQU5JVElaRVJfTElCUkFSWX0iKQotICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyhj eHggIi1XbCwtcnBhdGgsJHtMSUJESVJ9IikKKyAgICBhZGRfbGlicmFyeV9mbGFncygiJHtMSUJD WFhfU0FOSVRJWkVSX0xJQlJBUll9IikKKyAgICBhZGRfbGlua19mbGFncygiLVdsLC1ycGF0aCwk e0xJQkRJUn0iKQogICBlbmRpZigpCiBlbmRpZigpCiAKKyMgR2VuZXJhdGUgbGlicmFyeSBsaXN0 LgorYWRkX2xpYnJhcnlfZmxhZ3NfaWYoTElCQ1hYX0hBU19QVEhSRUFEX0xJQiBwdGhyZWFkKQor YWRkX2xpYnJhcnlfZmxhZ3NfaWYoTElCQ1hYX0hBU19DX0xJQiBjKQorYWRkX2xpYnJhcnlfZmxh Z3NfaWYoTElCQ1hYX0hBU19NX0xJQiBtKQorYWRkX2xpYnJhcnlfZmxhZ3NfaWYoTElCQ1hYX0hB U19SVF9MSUIgcnQpCithZGRfbGlicmFyeV9mbGFnc19pZihMSUJDWFhfSEFTX0dDQ19TX0xJQiBn Y2NfcykKIAogIyBTZXR1cCBmbGFncy4KLWFwcGVuZF9pZihMSUJDWFhfQ09NUElMRV9GTEFHUyBM SUJDWFhfSEFTX0ZQSUNfRkxBRyAtZlBJQykKLWFwcGVuZF9pZihMSUJDWFhfTElOS19GTEFHUyBM SUJDWFhfSEFTX05PREVGQVVMVExJQlNfRkxBRyAtbm9kZWZhdWx0bGlicykKK2FkZF9mbGFnc19p Zl9zdXBwb3J0ZWQoLWZQSUMpCithZGRfbGlua19mbGFnc19pZl9zdXBwb3J0ZWQoLW5vZGVmYXVs dGxpYnMpCiAKIGlmICggQVBQTEUgQU5EIChMSUJDWFhfQ1hYX0FCSV9MSUJOQU1FIFNUUkVRVUFM ICJsaWJjeHhhYmkiIE9SCiAgICAgICAgICAgICAgICAgTElCQ1hYX0NYWF9BQklfTElCTkFNRSBT VFJFUVVBTCAibm9uZSIpKQpAQCAtMTA2LDggKzg3LDggQEAgaWYgKCBBUFBMRSBBTkQgKExJQkNY WF9DWFhfQUJJX0xJQk5BTUUgU1RSRVFVQUwgImxpYmN4eGFiaSIgT1IKICAgZW5kaWYoKQogCiAg IGlmICggQ01BS0VfT1NYX0RFUExPWU1FTlRfVEFSR0VUIFNUUkVRVUFMICIxMC42IiApCi0gICAg bGlzdChBUFBFTkQgTElCQ1hYX0NPTVBJTEVfRkxBR1MgIi1VX19TVFJJQ1RfQU5TSV9fIikKLSAg ICBsaXN0KEFQUEVORCBMSUJDWFhfTElOS19GTEFHUworICAgIGFkZF9kZWZpbml0aW9ucygtRF9f U1RSSUNUX0FOU0lfXykKKyAgICBhZGRfbGlua19mbGFncygKICAgICAgICItY29tcGF0aWJpbGl0 eV92ZXJzaW9uIDEiCiAgICAgICAiLWN1cnJlbnRfdmVyc2lvbiAxIgogICAgICAgIi1pbnN0YWxs X25hbWUgL3Vzci9saWIvbGliYysrLjEuZHlsaWIiCkBAIC0xMjksNyArMTEwLDcgQEAgaWYgKCBB UFBMRSBBTkQgKExJQkNYWF9DWFhfQUJJX0xJQk5BTUUgU1RSRVFVQUwgImxpYmN4eGFiaSIgT1IK ICAgICAgIHNldCAoT1NYX1JFX0VYUE9SVF9MSU5FICIvdXNyL2xpYi9saWJjKythYmkuZHlsaWIg LVdsLC1yZWV4cG9ydGVkX3N5bWJvbHNfbGlzdCwke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0v bGliYysrYWJpJHtMSUJDWFhfTElCQ1BQQUJJX1ZFUlNJT059LmV4cCIpCiAgICAgZW5kaWYoKQog Ci0gICAgbGlzdChBUFBFTkQgTElCQ1hYX0xJTktfRkxBR1MKKyAgICBhZGRfbGlua19mbGFncygK ICAgICAgICItY29tcGF0aWJpbGl0eV92ZXJzaW9uIDEiCiAgICAgICAiLWluc3RhbGxfbmFtZSAv dXNyL2xpYi9saWJjKysuMS5keWxpYiIKICAgICAgICItV2wsLXVuZXhwb3J0ZWRfc3ltYm9sc19s aXN0LCR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9saWJjKyt1bmV4cC5leHAiCkBAIC0xMzks OCArMTIwLDkgQEAgaWYgKCBBUFBMRSBBTkQgKExJQkNYWF9DWFhfQUJJX0xJQk5BTUUgU1RSRVFV QUwgImxpYmN4eGFiaSIgT1IKICAgZW5kaWYoKQogZW5kaWYoKQogCi1zdHJpbmcoUkVQTEFDRSAi OyIgIiAiIExJQkNYWF9DT01QSUxFX0ZMQUdTICIke0xJQkNYWF9DT01QSUxFX0ZMQUdTfSIpCi1z dHJpbmcoUkVQTEFDRSAiOyIgIiAiIExJQkNYWF9MSU5LX0ZMQUdTICIke0xJQkNYWF9MSU5LX0ZM QUdTfSIpCit0YXJnZXRfbGlua19saWJyYXJpZXMoY3h4ICR7TElCQ1hYX0xJQlJBUklFU30pCitz cGxpdF9saXN0KExJQkNYWF9DT01QSUxFX0ZMQUdTKQorc3BsaXRfbGlzdChMSUJDWFhfTElOS19G TEFHUykKIAogc2V0X3RhcmdldF9wcm9wZXJ0aWVzKGN4eAogICBQUk9QRVJUSUVTCmRpZmYgLS1n aXQgYS90ZXN0L0NNYWtlTGlzdHMudHh0IGIvdGVzdC9DTWFrZUxpc3RzLnR4dAppbmRleCBjYTkz N2E4Li4xNzhlNmQ5IDEwMDY0NAotLS0gYS90ZXN0L0NNYWtlTGlzdHMudHh0CisrKyBiL3Rlc3Qv Q01ha2VMaXN0cy50eHQKQEAgLTYsODQgKzYsNDcgQEAgbWFjcm8ocHl0aG9uaXplX2Jvb2wgdmFy KQogICBlbmRpZigpCiBlbmRtYWNybygpCiAKLXNldChMSVRfRVhFQ1VUQUJMRSAiIiBDQUNIRSBG SUxFUEFUSCAiUGF0aCB0byBMTFZNJ3MgbGx2bS1saXQuIikKLQotaWYoTElCQ1hYX0JVSUxUX1NU QU5EQUxPTkUpCi0gICMgTWFrZSBzdXJlIHdlIGNhbiB1c2UgdGhlIGNvbnNvbGUgcG9vbCBmb3Ig cmVjZW50IGNtYWtlIGFuZCBuaW5qYSA+IDEuNQotICBpZihDTUFLRV9WRVJTSU9OIFZFUlNJT05f TEVTUyAzLjEuMjAxNDExMTcpCi0gICAgc2V0KGNtYWtlXzNfMl9VU0VTX1RFUk1JTkFMKQotICBl bHNlKCkKLSAgICBzZXQoY21ha2VfM18yX1VTRVNfVEVSTUlOQUwgVVNFU19URVJNSU5BTCkKLSAg ZW5kaWYoKQotZWxzZSgpCi0gIGluY2x1ZGUoRmluZFB5dGhvbkludGVycCkKLSAgaWYoUFlUSE9O SU5URVJQX0ZPVU5EKQotICAgIHNldChMSVRfRVhFQ1VUQUJMRQotICAgICAgICAke1BZVEhPTl9F WEVDVVRBQkxFfSAke0NNQUtFX1NPVVJDRV9ESVJ9L3V0aWxzL2xpdC9saXQucHkpCi0gIGVsc2Uo KQotICAgIG1lc3NhZ2UoV0FSTklORyAiQ291bGQgbm90IGZpbmQgUHl0aG9uLCBjYW5ub3Qgc2V0 IExJVF9FWEVDVVRBQkxFLiIpCi0gIGVuZGlmKCkKK3NldChMSUJDWFhfTElUX1ZBUklBTlQgImxp YmN4eCIgQ0FDSEUgU1RSSU5HCisgICAgIkNvbmZpZ3VyYXRpb24gdmFyaWFudCB0byB1c2UgZm9y IExJVC4iKQorCitweXRob25pemVfYm9vbChMSUJDWFhfRU5BQkxFX0VYQ0VQVElPTlMpCitweXRo b25pemVfYm9vbChMSUJDWFhfRU5BQkxFX1JUVEkpCitweXRob25pemVfYm9vbChMSUJDWFhfRU5B QkxFX1NIQVJFRCkKK3B5dGhvbml6ZV9ib29sKExJQkNYWF9CVUlMRF8zMl9CSVRTKQorcHl0aG9u aXplX2Jvb2woTElCQ1hYX0VOQUJMRV9HTE9CQUxfRklMRVNZU1RFTV9OQU1FU1BBQ0UpCitweXRo b25pemVfYm9vbChMSUJDWFhfRU5BQkxFX1NURElOKQorcHl0aG9uaXplX2Jvb2woTElCQ1hYX0VO QUJMRV9TVERPVVQpCitweXRob25pemVfYm9vbChMSUJDWFhfRU5BQkxFX1RIUkVBRFMpCitweXRo b25pemVfYm9vbChMSUJDWFhfRU5BQkxFX1RIUkVBRF9VTlNBRkVfQ19GVU5DVElPTlMpCitweXRo b25pemVfYm9vbChMSUJDWFhfRU5BQkxFX01PTk9UT05JQ19DTE9DSykKK3B5dGhvbml6ZV9ib29s KExJQkNYWF9HRU5FUkFURV9DT1ZFUkFHRSkKK3B5dGhvbml6ZV9ib29sKExJQkNYWEFCSV9VU0Vf TExWTV9VTldJTkRFUikKKworIyBUaGUgdGVzdHMgc2hvdWxkbid0IGxpbmsgdG8gYW55IEFCSSBs aWJyYXJ5IHdoZW4gaXQgaGFzIGJlZW4gbGlua2VkIGludG8KKyMgbGliYysrIHN0YXRpY2FsbHku CitpZiAoTElCQ1hYX0VOQUJMRV9TVEFUSUNfQUJJX0xJQlJBUlkpCisgIHNldChMSUJDWFhfQ1hY X0FCSV9MSUJOQU1FICJub25lIikKIGVuZGlmKCkKLQotaWYgKExJVF9FWEVDVVRBQkxFKQotICBz ZXQoTElUX0FSR1NfREVGQVVMVCAiLXN2IC0tc2hvdy11bnN1cHBvcnRlZCAtLXNob3cteGZhaWwi KQotICBpZiAoTVNWQyBPUiBYQ09ERSkKLSAgICBzZXQoTElUX0FSR1NfREVGQVVMVCAiJHtMSVRf QVJHU19ERUZBVUxUfSAtLW5vLXByb2dyZXNzLWJhciIpCi0gIGVuZGlmKCkKLSAgc2V0KExMVk1f TElUX0FSR1MgIiR7TElUX0FSR1NfREVGQVVMVH0iCi0gICAgICBDQUNIRSBTVFJJTkcgIkRlZmF1 bHQgb3B0aW9ucyBmb3IgbGl0IikKLSAgc2V0KExJVF9BUkdTICIke0xMVk1fTElUX0FSR1N9IikK LSAgc2VwYXJhdGVfYXJndW1lbnRzKExJVF9BUkdTKQotCi0gIHNldChMSUJDWFhfTElUX1ZBUklB TlQgImxpYmN4eCIgQ0FDSEUgU1RSSU5HCi0gICAgICAiQ29uZmlndXJhdGlvbiB2YXJpYW50IHRv IHVzZSBmb3IgTElULiIpCi0KLSAgcHl0aG9uaXplX2Jvb2woTElCQ1hYX0VOQUJMRV9FWENFUFRJ T05TKQotICBweXRob25pemVfYm9vbChMSUJDWFhfRU5BQkxFX1JUVEkpCi0gIHB5dGhvbml6ZV9i b29sKExJQkNYWF9FTkFCTEVfU0hBUkVEKQotICBweXRob25pemVfYm9vbChMSUJDWFhfQlVJTERf MzJfQklUUykKLSAgcHl0aG9uaXplX2Jvb2woTElCQ1hYX0VOQUJMRV9HTE9CQUxfRklMRVNZU1RF TV9OQU1FU1BBQ0UpCi0gIHB5dGhvbml6ZV9ib29sKExJQkNYWF9FTkFCTEVfU1RESU4pCi0gIHB5 dGhvbml6ZV9ib29sKExJQkNYWF9FTkFCTEVfU1RET1VUKQotICBweXRob25pemVfYm9vbChMSUJD WFhfRU5BQkxFX1RIUkVBRFMpCi0gIHB5dGhvbml6ZV9ib29sKExJQkNYWF9FTkFCTEVfVEhSRUFE X1VOU0FGRV9DX0ZVTkNUSU9OUykKLSAgcHl0aG9uaXplX2Jvb2woTElCQ1hYX0VOQUJMRV9NT05P VE9OSUNfQ0xPQ0spCi0gIHB5dGhvbml6ZV9ib29sKExJQkNYWF9HRU5FUkFURV9DT1ZFUkFHRSkK LSAgcHl0aG9uaXplX2Jvb2woTElCQ1hYQUJJX1VTRV9MTFZNX1VOV0lOREVSKQotCi0gICMgVGhl IHRlc3RzIHNob3VsZG4ndCBsaW5rIHRvIGFueSBBQkkgbGlicmFyeSB3aGVuIGl0IGhhcyBiZWVu IGxpbmtlZCBpbnRvCi0gICMgbGliYysrIHN0YXRpY2FsbHkuCi0gIGlmIChMSUJDWFhfRU5BQkxF X1NUQVRJQ19BQklfTElCUkFSWSkKLSAgICBzZXQoTElCQ1hYX0NYWF9BQklfTElCTkFNRSAibm9u ZSIpCi0gIGVuZGlmKCkKLSAgc2V0KExJQkNYWF9UQVJHRVRfSU5GTyAibGliY3h4LnRlc3QudGFy Z2V0X2luZm8uTG9jYWxUSSIgQ0FDSEUgU1RSSU5HCi0gICAgICAiVGFyZ2V0SW5mbyB0byB1c2Ug d2hlbiBzZXR0aW5nIHVwIHRlc3QgZW52aXJvbm1lbnQuIikKLSAgc2V0KExJQkNYWF9FWEVDVVRP UiAiTm9uZSIgQ0FDSEUgU1RSSU5HCi0gICAgICAiRXhlY3V0b3IgdG8gdXNlIHdoZW4gcnVubmlu ZyB0ZXN0cy4iKQotCi0gIHNldChBVVRPX0dFTl9DT01NRU5UICIjIyBBdXRvZ2VuZXJhdGVkIGJ5 IGxpYmN4eCBjb25maWd1cmF0aW9uLlxuIyBEbyBub3QgZWRpdCEiKQotCi0gIGNvbmZpZ3VyZV9m aWxlKAotICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9saXQuc2l0ZS5jZmcuaW4KLSAg ICAke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vbGl0LnNpdGUuY2ZnCi0gICAgQE9OTFkpCi0K LSAgYWRkX2N1c3RvbV90YXJnZXQoY2hlY2stbGliY3h4Ci0gICAgQ09NTUFORCAke0xJVF9FWEVD VVRBQkxFfQotICAgICAgICAgICAgJHtMSVRfQVJHU30KLSAgICAgICAgICAgICR7Q01BS0VfQ1VS UkVOVF9CSU5BUllfRElSfQotICAgIERFUEVORFMgY3h4Ci0gICAgQ09NTUVOVCAiUnVubmluZyBs aWJjeHggdGVzdHMiCi0gICAgJHtjbWFrZV8zXzJfVVNFU19URVJNSU5BTH0pCi0KLSAgaWYgKExJ QkNYWF9HRU5FUkFURV9DT1ZFUkFHRSkKLSAgICBpbmNsdWRlKENvZGVDb3ZlcmFnZSkKLSAgICBz ZXQob3V0cHV0X2RpciAiJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L2NvdmVyYWdlIikKLSAg ICBzZXQoY2FwdHVyZV9kaXJzICIke0xJQkNYWF9MSUJfQ01BS0VGSUxFU19ESVJ9L2N4eC5kaXIv OyR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfSIpCi0gICAgc2V0KGV4dHJhY3RfZGlycyAiJHtM SUJDWFhfU09VUkNFX0RJUn0vaW5jbHVkZTske0xJQkNYWF9TT1VSQ0VfRElSfS9zcmMiKQotICAg IHNldHVwX2xjb3ZfdGVzdF90YXJnZXRfY292ZXJhZ2UoImN4eCIgIiR7b3V0cHV0X2Rpcn0iICIk e2NhcHR1cmVfZGlyc30iICIke2V4dHJhY3RfZGlyc30iKQotICBlbmRpZigpCi1lbHNlKCkKLSAg bWVzc2FnZShXQVJOSU5HCi0gICAgICAgICAgIkxJVF9FWEVDVVRBQkxFIG5vdCBzZXQsIG5vIGNo ZWNrLWxpYmN4eCB0YXJnZXQgd2lsbCBiZSBhdmFpbGFibGUhIikKK3NldChMSUJDWFhfVEFSR0VU X0lORk8gImxpYmN4eC50ZXN0LnRhcmdldF9pbmZvLkxvY2FsVEkiIENBQ0hFIFNUUklORworICAg ICJUYXJnZXRJbmZvIHRvIHVzZSB3aGVuIHNldHRpbmcgdXAgdGVzdCBlbnZpcm9ubWVudC4iKQor c2V0KExJQkNYWF9FWEVDVVRPUiAiTm9uZSIgQ0FDSEUgU1RSSU5HCisgICAgIkV4ZWN1dG9yIHRv IHVzZSB3aGVuIHJ1bm5pbmcgdGVzdHMuIikKKworc2V0KEFVVE9fR0VOX0NPTU1FTlQgIiMjIEF1 dG9nZW5lcmF0ZWQgYnkgbGliY3h4IGNvbmZpZ3VyYXRpb24uXG4jIERvIG5vdCBlZGl0ISIpCisK K2NvbmZpZ3VyZV9maWxlKAorICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vbGl0LnNpdGUu Y2ZnLmluCisgICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9saXQuc2l0ZS5jZmcKKyAgQE9O TFkpCisKK2FkZF9saXRfdGVzdHN1aXRlKGNoZWNrLWxpYmN4eCAiUnVubmluZyBsaWJjeHggdGVz dHMiCisgICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfQorICBERVBFTkRTIGN4eCkKKworaWYg KExJQkNYWF9HRU5FUkFURV9DT1ZFUkFHRSkKKyAgaW5jbHVkZShDb2RlQ292ZXJhZ2UpCisgIHNl dChvdXRwdXRfZGlyICIke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vY292ZXJhZ2UiKQorICBz ZXQoY2FwdHVyZV9kaXJzICIke0xJQkNYWF9MSUJfQ01BS0VGSUxFU19ESVJ9L2N4eC5kaXIvOyR7 Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfSIpCisgIHNldChleHRyYWN0X2RpcnMgIiR7TElCQ1hY X1NPVVJDRV9ESVJ9L2luY2x1ZGU7JHtMSUJDWFhfU09VUkNFX0RJUn0vc3JjIikKKyAgc2V0dXBf bGNvdl90ZXN0X3RhcmdldF9jb3ZlcmFnZSgiY3h4IiAiJHtvdXRwdXRfZGlyfSIgIiR7Y2FwdHVy ZV9kaXJzfSIgIiR7ZXh0cmFjdF9kaXJzfSIpCiBlbmRpZigpCmRpZmYgLS1naXQgYS90ZXN0L2xp dC5zaXRlLmNmZy5pbiBiL3Rlc3QvbGl0LnNpdGUuY2ZnLmluCmluZGV4IGJhYzhiYTkuLjc2NWVl N2MgMTAwNjQ0Ci0tLSBhL3Rlc3QvbGl0LnNpdGUuY2ZnLmluCisrKyBiL3Rlc3QvbGl0LnNpdGUu Y2ZnLmluCkBAIC0xLDYgKzEsNSBAQAogQEFVVE9fR0VOX0NPTU1FTlRACiBjb25maWcuY3h4X3Vu ZGVyX3Rlc3QgICAgICAgICAgID0gIkBMSUJDWFhfQ09NUElMRVJAIgotY29uZmlnLnN0ZCAgICAg ICAgICAgICAgICAgICAgICA9ICJATElCQ1hYX1NURF9WRVJTSU9OQCIKIGNvbmZpZy5saWJjeHhf c3JjX3Jvb3QgICAgICAgICAgPSAiQExJQkNYWF9TT1VSQ0VfRElSQCIKIGNvbmZpZy5saWJjeHhf b2JqX3Jvb3QgICAgICAgICAgPSAiQExJQkNYWF9CSU5BUllfRElSQCIKIGNvbmZpZy5jeHhfbGli cmFyeV9yb290ICAgICAgICAgPSAiQExJQkNYWF9MSUJSQVJZX0RJUkAiCmRpZmYgLS1naXQgYS93 d3cvaW5kZXguaHRtbCBiL3d3dy9pbmRleC5odG1sCmluZGV4IDczMDhlOGEuLmUzOTYxYjEgMTAw NjQ0Ci0tLSBhL3d3dy9pbmRleC5odG1sCisrKyBiL3d3dy9pbmRleC5odG1sCkBAIC0xODQsMjYg KzE4NCwzMCBAQAogCiAgIDxwPkluLXRyZWUgYnVpbGQ6PC9wPgogICA8dWw+CisgICAgPGxpPjxj b2RlPmNkIHdoZXJlLXlvdS13YW50LXRvLWxpdmU8L2NvZGU+PC9saT4KICAgICA8bGk+Q2hlY2sg b3V0IGxpYmN4eCBhbmQgPGEgaHJlZj0iaHR0cDovL2xpYmN4eGFiaS5sbHZtLm9yZy8iPmxpYmN4 eGFiaTwvYT4KICAgICAgIGludG8gbGx2bS9wcm9qZWN0czwvbGk+Ci0gICAgPGxpPjxjb2RlPmNk IGxsdm08L2NvZGU+PC9saT4KKyAgICA8bGk+PGNvZGU+Y2Qgd2hlcmUteW91LXdhbnQtdG8tYnVp bGQ8L2NvZGU+PC9saT4KICAgICA8bGk+PGNvZGU+bWtkaXIgYnVpbGQgJmFtcDsmYW1wOyBjZCBi dWlsZDwvY29kZT48L2xpPgotICAgIDxsaT48Y29kZT5jbWFrZSAuLiAjIExpbnV4IG1heSByZXF1 aXJlIC1EQ01BS0VfQ19DT01QSUxFUj1jbGFuZworICAgIDxsaT48Y29kZT5jbWFrZSBwYXRoL3Rv L2xsdm0gIyBMaW51eCBtYXkgcmVxdWlyZSAtRENNQUtFX0NfQ09NUElMRVI9Y2xhbmcKICAgICAg ICAgLURDTUFLRV9DWFhfQ09NUElMRVI9Y2xhbmcrKzwvY29kZT48L2xpPgogICAgIDxsaT48Y29k ZT5tYWtlIGN4eDwvY29kZT48L2xpPgogICA8L3VsPgogCi0gIDxwPk91dC1vZi10cmVlIGJ1aWxk OjwvcD4KKyAgPHA+T3V0LW9mLXRyZWUgYnVpbGRjOjwvcD4KICAgPHVsPgotICAgIDxsaT5DaGVj ayBvdXQgbGliY3h4PC9saT4KKyAgICA8bGk+PGNvZGU+Y2Qgd2hlcmUteW91LXdhbnQtdG8tbGl2 ZTwvY29kZT48L2xpPgorICAgIDxsaT5DaGVjayBvdXQgbGliY3h4IGFuZCBsbHZtPC9saT4KICAg ICA8bGk+SWYgbm90IG9uIGEgTWFjLCBhbHNvIGNoZWNrIG91dAogICAgICAgPGEgaHJlZj0iaHR0 cDovL2xpYmN4eGFiaS5sbHZtLm9yZy8iPmxpYmN4eGFiaTwvYT48L2xpPgotICAgIDxsaT48Y29k ZT5jZCBsaWJjeHg8L2NvZGU+PC9saT4KKyAgICA8bGk+PGNvZGU+Y2Qgd2hlcmUteW91LXdhbnQt dG8tYnVpbGQ8L2NvZGU+PC9saT4KICAgICA8bGk+PGNvZGU+bWtkaXIgYnVpbGQgJmFtcDsmYW1w OyBjZCBidWlsZDwvY29kZT48L2xpPgotICAgIDxsaT48Y29kZT5jbWFrZSAtRExJQkNYWF9DWFhf QUJJPWxpYmN4eGFiaQorICAgIDxsaT48Y29kZT5jbWFrZSAtRExMVk1fUEFUSD1wYXRoL3RvL2xs dm0KKyAgICAgICAgLURMSUJDWFhfQ1hYX0FCST1saWJjeHhhYmkKICAgICAgICAgLURMSUJDWFhf Q1hYX0FCSV9JTkNMVURFX1BBVEhTPXBhdGgvdG8vbGliY3h4YWJpL2luY2x1ZGUKLSAgICAgICAg LURMSVRfRVhFQ1VUQUJMRT1wYXRoL3RvL2xsdm0vdXRpbHMvbGl0L2xpdC5weSAuLiAjIExpbnV4 IG1heSByZXF1aXJlCi0gICAgICAgIC1EQ01BS0VfQ19DT01QSUxFUj1jbGFuZyAtRENNQUtFX0NY WF9DT01QSUxFUj1jbGFuZysrPC9jb2RlPjwvbGk+CisgICAgICAgIC1EQ01BS0VfQ19DT01QSUxF Uj1jbGFuZyAtRENNQUtFX0NYWF9DT01QSUxFUj1jbGFuZysrCisgICAgICAgIHBhdGgvdG8vbGli Y3h4CisgICAgPC9jb2RlPjwvbGk+CiAgICAgPGxpPjxjb2RlPm1ha2U8L2NvZGU+PC9saT4KICAg PC91bD4KIAo= --001a11347106c14092051c0fbb11 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ cfe-commits mailing list cfe-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits --001a11347106c14092051c0fbb11--