Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lPREs-00056G-Sb for pgsql-hackers@arkaria.postgresql.org; Thu, 25 Mar 2021 14:45:35 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1lPREr-0000Qg-A4 for pgsql-hackers@arkaria.postgresql.org; Thu, 25 Mar 2021 14:45:33 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lPREq-0000QY-Lv for pgsql-hackers@lists.postgresql.org; Thu, 25 Mar 2021 14:45:33 +0000 Received: from oss.nttdata.com ([49.212.34.109]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lPREf-0000tT-Nn for pgsql-hackers@postgresql.org; Thu, 25 Mar 2021 14:45:31 +0000 Received: from oss.nttdata.com (localhost [127.0.0.1]) by oss.nttdata.com (Postfix) with ESMTP id AF71C628CD; Thu, 25 Mar 2021 23:45:17 +0900 (JST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.102.3 at oss.nttdata.com MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_8f1e9bb00d9f1dcc70250b5d649d092f" Date: Thu, 25 Mar 2021 23:45:17 +0900 From: torikoshia To: Fujii Masao Cc: Kyotaro Horiguchi , pgsql-hackers@postgresql.org, tgl@sss.pgh.pa.us, gkokolatos@protonmail.com, kasahara.tatsuhito@gmail.com, craig@2ndquadrant.com Subject: Re: Get memory contexts of an arbitrary backend process In-Reply-To: <2be9b430-e664-a342-7799-c92779808029@oss.nttdata.com> References: <70ae4b79eb8b0dcf42161c80a00e3f22@oss.nttdata.com> <49232304-1269-b2d4-c2ca-4b8683b29156@oss.nttdata.com> <2322ae15a675ba13368491ced3ea5fb4@oss.nttdata.com> <20210323.172433.1038800347387944240.horikyota.ntt@gmail.com> <0b0657d5febd0e46565a6bc9c62ba3f6@oss.nttdata.com> <2be9b430-e664-a342-7799-c92779808029@oss.nttdata.com> Message-ID: X-Sender: torikoshia@oss.nttdata.com User-Agent: Roundcube Webmail/1.1.9 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_8f1e9bb00d9f1dcc70250b5d649d092f Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed On 2021-03-25 22:02, Fujii Masao wrote: > On 2021/03/25 0:17, torikoshia wrote: >> On 2021-03-23 17:24, Kyotaro Horiguchi wrote: >> >> Thanks for reviewing and suggestions! > > The patched version failed to be compiled as follows. Could you fix > this issue? Sorry, it included a header file that's not contained in the current version patch. Attached new one. > mcxtfuncs.c:22:10: fatal error: utils/mcxtfuncs.h: No such file or > directory > #include "utils/mcxtfuncs.h" > ^~~~~~~~~~~~~~~~~~~ > compilation terminated. > make[4]: *** [: mcxtfuncs.o] Error 1 > make[4]: *** Waiting for unfinished jobs.... > make[3]: *** [../../../src/backend/common.mk:39: adt-recursive] Error 2 > make[3]: *** Waiting for unfinished jobs.... > make[2]: *** [common.mk:39: utils-recursive] Error 2 > make[1]: *** [Makefile:42: all-backend-recurse] Error 2 > make: *** [GNUmakefile:11: all-src-recurse] Error 2 > > https://cirrus-ci.com/task/4621477321375744 > > Regards, --=_8f1e9bb00d9f1dcc70250b5d649d092f Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v4-0001-add-memorycontext-elog-print.patch Content-Disposition: attachment; filename=v4-0001-add-memorycontext-elog-print.patch; size=30878 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwgYi9kb2Mvc3JjL3NnbWwvZnVuYy5z Z21sCmluZGV4IDFkMzQyOWZiZDkuLmE0MDE3YTA3NjAgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dt bC9mdW5jLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbApAQCAtMjQ4MjEsNiArMjQ4 MjEsMzcgQEAgU0VMRUNUIGNvbGxhdGlvbiBmb3IgKCdmb28nIENPTExBVEUgImRlX0RFIik7CiAg ICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgICA8L3Jvdz4KIAorICAgICAgPHJvdz4KKyAgICAg ICA8ZW50cnkgcm9sZT0iZnVuY190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iZnVuY19zaWduYXR1 cmUiPgorICAgICAgICA8aW5kZXh0ZXJtPgorICAgICAgICAgPHByaW1hcnk+cGdfZ2V0X2JhY2tl bmRfbWVtb3J5X2NvbnRleHRzPC9wcmltYXJ5PgorICAgICAgICA8L2luZGV4dGVybT4KKyAgICAg ICAgPGZ1bmN0aW9uPnBnX2dldF9iYWNrZW5kX21lbW9yeV9jb250ZXh0czwvZnVuY3Rpb24+ICgK KyAgICAgICAgICA8cGFyYW1ldGVyPnBpZDwvcGFyYW1ldGVyPiA8dHlwZT5pbnRlZ2VyPC90eXBl PiwKKyAgICAgICAgICA8cGFyYW1ldGVyPm1heF9jaGlsZHJlbjwvcGFyYW1ldGVyPiA8dHlwZT5p bnRlZ2VyPC90eXBlPiApCisgICAgICAgIDxyZXR1cm52YWx1ZT5zZXRvZiByZWNvcmQ8L3JldHVy bnZhbHVlPgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgR2V0IG1lbW9y eSBjb250ZXh0cyB3aG9zZSBiYWNrZW5kIHByb2Nlc3MgaGFzIHRoZSBzcGVjaWZpZWQgcHJvY2Vz cyBJRC4KKyAgICAgICAgPHBhcmFtZXRlcj5tYXhfY2hpbGRyZW48L3BhcmFtZXRlcj4gbGltaXRz IHRoZSBtYXggbnVtYmVyIG9mIGNoaWxkcmVuCisgICAgICAgIHRvIHByaW50IHBlciBvbmUgcGFy ZW50IGNvbnRleHQuIDAgbWVhbnMgdW5saW1pdGVkLgorICAgICAgICBXaGVuIDxwYXJhbWV0ZXI+ cGlkPC9wYXJhbWV0ZXI+IGVxdWFscyAwLAorICAgICAgICA8ZnVuY3Rpb24+cGdfZ2V0X2JhY2tl bmRfbWVtb3J5X2NvbnRleHRzPC9mdW5jdGlvbj4gZGlzcGxheXMgYWxsCisgICAgICAgIHRoZSBt ZW1vcnkgY29udGV4dHMgb2YgdGhlIGxvY2FsIHByb2Nlc3MgcmVnYXJkbGVzcyBvZgorICAgICAg ICA8cGFyYW1ldGVyPm1heF9jaGlsZHJlbjwvcGFyYW1ldGVyPi4gCisgICAgICAgIFdoZW4gPHBh cmFtZXRlcj5waWQ8L3BhcmFtZXRlcj4gZG9lcyBub3QgZXF1YWwgMCwKKyAgICAgICAgbWVtb3J5 IGNvbnRleHRzIHdpbGwgYmUgcHJpbnRlZCBiYXNlZCBvbiB0aGUgbG9nIGNvbmZpZ3VyYXRpb24g c2V0LgorICAgICAgICBTZWUgPHhyZWYgbGlua2VuZD0icnVudGltZS1jb25maWctbG9nZ2luZyIv PiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgT25seSBzdXBlcnVzZXJzIGNhbiBjYWxs IHRoaXMgZnVuY3Rpb24gZXZlbiB3aGVuIHRoZSBzcGVjaWZpZWQgcHJvY2VzcworICAgICAgICBp cyBub24tc3VwZXJ1c2VyIGJhY2tlbmQuCisgICAgICAgIE5vdGUgdGhhdCB3aGVuIG11bHRpcGxl CisgICAgICAgIDxmdW5jdGlvbj5wZ19nZXRfYmFja2VuZF9tZW1vcnlfY29udGV4dHM8L2Z1bmN0 aW9uPiBjYWxsZWQgaW4KKyAgICAgICAgc3VjY2Vzc2lvbiBvciBzaW11bHRhbmVvdXNseSwgPHBh cmFtZXRlcj5tYXhfY2hpbGRyZW48L3BhcmFtZXRlcj4gY2FuCisgICAgICAgIGJlIHRoZSBvbmUg b2YgYW5vdGhlcgorICAgICAgICA8ZnVuY3Rpb24+cGdfZ2V0X2JhY2tlbmRfbWVtb3J5X2NvbnRl eHRzPC9mdW5jdGlvbj4uCisgICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgICA8L3Jvdz4KKwog ICAgICAgPHJvdz4KICAgICAgICA8ZW50cnkgcm9sZT0iZnVuY190YWJsZV9lbnRyeSI+PHBhcmEg cm9sZT0iZnVuY19zaWduYXR1cmUiPgogICAgICAgICA8aW5kZXh0ZXJtPgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsIGIvc3JjL2JhY2tlbmQvY2F0YWxv Zy9zeXN0ZW1fdmlld3Muc3FsCmluZGV4IDBkY2E2NWRjN2IuLjQ4YTFhMGU5NTggMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAorKysgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKQEAgLTU1NSwxMCArNTU1LDEwIEBAIFJFVk9LRSBB TEwgT04gcGdfc2htZW1fYWxsb2NhdGlvbnMgRlJPTSBQVUJMSUM7CiBSRVZPS0UgRVhFQ1VURSBP TiBGVU5DVElPTiBwZ19nZXRfc2htZW1fYWxsb2NhdGlvbnMoKSBGUk9NIFBVQkxJQzsKIAogQ1JF QVRFIFZJRVcgcGdfYmFja2VuZF9tZW1vcnlfY29udGV4dHMgQVMKLSAgICBTRUxFQ1QgKiBGUk9N IHBnX2dldF9iYWNrZW5kX21lbW9yeV9jb250ZXh0cygpOworICAgIFNFTEVDVCAqIEZST00gcGdf Z2V0X2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzKDAsIDApOwogCiBSRVZPS0UgQUxMIE9OIHBnX2Jh Y2tlbmRfbWVtb3J5X2NvbnRleHRzIEZST00gUFVCTElDOwotUkVWT0tFIEVYRUNVVEUgT04gRlVO Q1RJT04gcGdfZ2V0X2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzKCkgRlJPTSBQVUJMSUM7CitSRVZP S0UgRVhFQ1VURSBPTiBGVU5DVElPTiBwZ19nZXRfYmFja2VuZF9tZW1vcnlfY29udGV4dHMgRlJP TSBQVUJMSUM7CiAKIC0tIFN0YXRpc3RpY3Mgdmlld3MKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvaXBjaS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jCmlu ZGV4IDNlNGVjNTNhOTcuLmVkNTM5MzMyNGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL2lwY2kuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMKQEAgLTQ2 LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL3NpbnZhbGFkdC5oIgogI2luY2x1ZGUgInN0 b3JhZ2Uvc3Bpbi5oIgogI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIKKyNpbmNsdWRlICJ1dGls cy9tZW11dGlscy5oIgogCiAvKiBHVUNzICovCiBpbnQJCQlzaGFyZWRfbWVtb3J5X3R5cGUgPSBE RUZBVUxUX1NIQVJFRF9NRU1PUllfVFlQRTsKQEAgLTI2OSw2ICsyNzAsNyBAQCBDcmVhdGVTaGFy ZWRNZW1vcnlBbmRTZW1hcGhvcmVzKHZvaWQpCiAJQlRyZWVTaG1lbUluaXQoKTsKIAlTeW5jU2Nh blNobWVtSW5pdCgpOwogCUFzeW5jU2htZW1Jbml0KCk7CisJTWN4dExvZ1NobWVtSW5pdCgpOwog CiAjaWZkZWYgRVhFQ19CQUNLRU5ECiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL3Byb2NzaWduYWwuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYwpp bmRleCBjNmE4ZDQ2MTFlLi5jNjFkNTA3OWUyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9y YWdlL2lwYy9wcm9jc2lnbmFsLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3Np Z25hbC5jCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9zaG1lbS5oIgogI2lu Y2x1ZGUgInN0b3JhZ2Uvc2ludmFsLmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgorI2lu Y2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAKIC8qCiAgKiBUaGUgU0lHVVNSMSBzaWduYWwgaXMg bXVsdGlwbGV4ZWQgdG8gc3VwcG9ydCBzaWduYWxpbmcgbXVsdGlwbGUgZXZlbnQKQEAgLTQ0MCw2 ICs0NDEsMjAgQEAgSGFuZGxlUHJvY1NpZ25hbEJhcnJpZXJJbnRlcnJ1cHQodm9pZCkKIAkvKiBs YXRjaCB3aWxsIGJlIHNldCBieSBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlciAqLwogfQogCisv KgorICogSGFuZGxlUHJvY1NpZ25hbExvZ01lbW9yeUNvbnRleHQKKyAqCisgKiBIYW5kbGUgcmVj ZWlwdCBvZiBhbiBpbnRlcnJ1cHQgaW5kaWNhdGluZyBsb2dnaW5nIG1lbW9yeSBjb250ZXh0Lgor ICogU2lnbmFsIGhhbmRsZXIgcG9ydGlvbiBvZiBpbnRlcnJ1cHQgaGFuZGxpbmcuCisgKi8KK3N0 YXRpYyB2b2lkCitIYW5kbGVQcm9jU2lnbmFsTG9nTWVtb3J5Q29udGV4dCh2b2lkKQoreworCUlu dGVycnVwdFBlbmRpbmcgPSB0cnVlOworCUxvZ01lbW9yeUNvbnRleHRQZW5kaW5nID0gdHJ1ZTsK KwkvKiBsYXRjaCB3aWxsIGJlIHNldCBieSBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlciAqLwor fQorCiAvKgogICogUGVyZm9ybSBnbG9iYWwgYmFycmllciByZWxhdGVkIGludGVycnVwdCBjaGVj a2luZy4KICAqCkBAIC01ODAsNiArNTk1LDI3IEBAIFByb2Nlc3NQcm9jU2lnbmFsQmFycmllcih2 b2lkKQogCUNvbmRpdGlvblZhcmlhYmxlQnJvYWRjYXN0KCZNeVByb2NTaWduYWxTbG90LT5wc3Nf YmFycmllckNWKTsKIH0KIAorLyoKKyAqIFByb2Nlc3NMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0 CisgKgkJVGhlIHBvcnRpb24gb2YgbG9nZ2luZyBtZW1vcnkgY29udGV4dCBpbnRlcnJ1cHQgaGFu ZGxpbmcgdGhhdCBydW5zCisgKgkJb3V0c2lkZSBvZiB0aGUgc2lnbmFsIGhhbmRsZXIuCisgKi8K K3ZvaWQKK1Byb2Nlc3NMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0KHZvaWQpCit7CisJaW50CQlt YXhfY2hpbGRyZW47CisKKwlMb2dNZW1vcnlDb250ZXh0UGVuZGluZyA9IGZhbHNlOworCisJbWF4 X2NoaWxkcmVuID0gbWN4dExvZ0RhdGEtPm1heENoaWxkcmVuUGVyQ29udGV4dDsKKworCWVyZXBv cnQoTE9HLAorCQkoZXJybXNnKCJMb2dnaW5nIG1lbW9yeSBjb250ZXh0cyBvZiBQSUQgJWQuIE1h eCBudW1iZXIgb2YgY2hpbGRyZW4gcGVyIGNvbnRleHQgaXMgJWQiLCBNeVByb2NQaWQsIG1heF9j aGlsZHJlbikpKTsKKworCU1lbW9yeUNvbnRleHRTdGF0c0RldGFpbChUb3BNZW1vcnlDb250ZXh0 LCBtYXhfY2hpbGRyZW4sIGZhbHNlKTsKK30KKworCiAvKgogICogSWYgaXQgdHVybnMgb3V0IHRo YXQgd2UgY291bGRuJ3QgYWJzb3JiIG9uZSBvciBtb3JlIGJhcnJpZXIgdHlwZXMsIGVpdGhlcgog ICogYmVjYXVzZSB0aGUgYmFycmllci1wcm9jZXNzaW5nIGZ1bmN0aW9ucyByZXR1cm5lZCBmYWxz ZSBvciBkdWUgdG8gYW4gZXJyb3IsCkBAIC02NzUsNiArNzExLDkgQEAgcHJvY3NpZ25hbF9zaWd1 c3IxX2hhbmRsZXIoU0lHTkFMX0FSR1MpCiAJaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX1JF Q09WRVJZX0NPTkZMSUNUX0JVRkZFUlBJTikpCiAJCVJlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQo UFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9CVUZGRVJQSU4pOwogCisJaWYgKENoZWNrUHJvY1Np Z25hbChQUk9DU0lHX0xPR19NRU1PUllfQ09OVEVYVCkpCisJCUhhbmRsZVByb2NTaWduYWxMb2dN ZW1vcnlDb250ZXh0KCk7CisKIAlTZXRMYXRjaChNeUxhdGNoKTsKIAogCWVycm5vID0gc2F2ZV9l cnJubzsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyBiL3NyYy9iYWNr ZW5kL3Rjb3AvcG9zdGdyZXMuYwppbmRleCAyYjFiNjgxMDlmLi5hZmFmM2IxY2NlIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9w b3N0Z3Jlcy5jCkBAIC0zMjk1LDYgKzMyOTUsOSBAQCBQcm9jZXNzSW50ZXJydXB0cyh2b2lkKQog CiAJaWYgKFBhcmFsbGVsTWVzc2FnZVBlbmRpbmcpCiAJCUhhbmRsZVBhcmFsbGVsTWVzc2FnZXMo KTsKKworCWlmIChMb2dNZW1vcnlDb250ZXh0UGVuZGluZykKKwkJUHJvY2Vzc0xvZ01lbW9yeUNv bnRleHRJbnRlcnJ1cHQoKTsKIH0KIAogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvbWN4dGZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbWN4dGZ1bmNzLmMKaW5kZXgg YzAyZmE0NzU1MC4uZGUyMDQwNjQwYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L21jeHRmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9tY3h0ZnVuY3MuYwpAQCAt NjEsNyArNjIsNyBAQCBQdXRNZW1vcnlDb250ZXh0c1N0YXRzVHVwbGVTdG9yZShUdXBsZXN0b3Jl c3RhdGUgKnR1cHN0b3JlLAogCiAJLyogRXhhbWluZSB0aGUgY29udGV4dCBpdHNlbGYgKi8KIAlt ZW1zZXQoJnN0YXQsIDAsIHNpemVvZihzdGF0KSk7Ci0JKCpjb250ZXh0LT5tZXRob2RzLT5zdGF0 cykgKGNvbnRleHQsIE5VTEwsICh2b2lkICopICZsZXZlbCwgJnN0YXQpOworCSgqY29udGV4dC0+ bWV0aG9kcy0+c3RhdHMpIChjb250ZXh0LCBOVUxMLCAodm9pZCAqKSAmbGV2ZWwsICZzdGF0LCB0 cnVlKTsKIAogCW1lbXNldCh2YWx1ZXMsIDAsIHNpemVvZih2YWx1ZXMpKTsKIAltZW1zZXQobnVs bHMsIDAsIHNpemVvZihudWxscykpOwpAQCAtMTE3LDYgKzExOCw5IEBAIFB1dE1lbW9yeUNvbnRl eHRzU3RhdHNUdXBsZVN0b3JlKFR1cGxlc3RvcmVzdGF0ZSAqdHVwc3RvcmUsCiBEYXR1bQogcGdf Z2V0X2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzKFBHX0ZVTkNUSU9OX0FSR1MpCiB7CisJaW50CQlw aWQgPSBQR19HRVRBUkdfSU5UMzIoMCk7CisJaW50CQltYXhfY2hpbGRyZW4gPSBQR19HRVRBUkdf SU5UMzIoMSk7CisKIAlSZXR1cm5TZXRJbmZvICpyc2luZm8gPSAoUmV0dXJuU2V0SW5mbyAqKSBm Y2luZm8tPnJlc3VsdGluZm87CiAJVHVwbGVEZXNjCXR1cGRlc2M7CiAJVHVwbGVzdG9yZXN0YXRl ICp0dXBzdG9yZTsKQEAgLTE0Nyw4ICsxNTEsMTEgQEAgcGdfZ2V0X2JhY2tlbmRfbWVtb3J5X2Nv bnRleHRzKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29u dGV4dCk7CiAKLQlQdXRNZW1vcnlDb250ZXh0c1N0YXRzVHVwbGVTdG9yZSh0dXBzdG9yZSwgdHVw ZGVzYywKLQkJCQkJCQkJVG9wTWVtb3J5Q29udGV4dCwgTlVMTCwgMCk7CisJaWYoIHBpZCA9PSAw KQorCQlQdXRNZW1vcnlDb250ZXh0c1N0YXRzVHVwbGVTdG9yZSh0dXBzdG9yZSwgdHVwZGVzYywK KwkJCQkJCQkJCVRvcE1lbW9yeUNvbnRleHQsIE5VTEwsIDApOworCWVsc2UKKwkJcGdfbG9nX2Jh Y2tlbmRfbWVtb3J5X2NvbnRleHRzKHBpZCwgbWF4X2NoaWxkcmVuKTsKIAogCS8qIGNsZWFuIHVw IGFuZCByZXR1cm4gdGhlIHR1cGxlc3RvcmUgKi8KIAl0dXBsZXN0b3JlX2RvbmVzdG9yaW5nKHR1 cHN0b3JlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jIGIv c3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMKaW5kZXggNzNlMGE2NzJhZS4uNmMyNzA2 NWY5NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMKKysrIGIv c3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMKQEAgLTM0LDYgKzM0LDcgQEAgdm9sYXRp bGUgc2lnX2F0b21pY190IENsaWVudENvbm5lY3Rpb25Mb3N0ID0gZmFsc2U7CiB2b2xhdGlsZSBz aWdfYXRvbWljX3QgSWRsZUluVHJhbnNhY3Rpb25TZXNzaW9uVGltZW91dFBlbmRpbmcgPSBmYWxz ZTsKIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBJZGxlU2Vzc2lvblRpbWVvdXRQZW5kaW5nID0gZmFs c2U7CiB2b2xhdGlsZSBzaWdfYXRvbWljX3QgUHJvY1NpZ25hbEJhcnJpZXJQZW5kaW5nID0gZmFs c2U7Cit2b2xhdGlsZSBzaWdfYXRvbWljX3QgTG9nTWVtb3J5Q29udGV4dFBlbmRpbmcgPSBmYWxz ZTsKIHZvbGF0aWxlIHVpbnQzMiBJbnRlcnJ1cHRIb2xkb2ZmQ291bnQgPSAwOwogdm9sYXRpbGUg dWludDMyIFF1ZXJ5Q2FuY2VsSG9sZG9mZkNvdW50ID0gMDsKIHZvbGF0aWxlIHVpbnQzMiBDcml0 U2VjdGlvbkNvdW50ID0gMDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvYXNl dC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9hc2V0LmMKaW5kZXggZWM2YzEzMGQwZi4uOGU3 ZmUwOWEwZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9hc2V0LmMKKysrIGIv c3JjL2JhY2tlbmQvdXRpbHMvbW1nci9hc2V0LmMKQEAgLTI3Miw3ICsyNzIsOCBAQCBzdGF0aWMg U2l6ZSBBbGxvY1NldEdldENodW5rU3BhY2UoTWVtb3J5Q29udGV4dCBjb250ZXh0LCB2b2lkICpw b2ludGVyKTsKIHN0YXRpYyBib29sIEFsbG9jU2V0SXNFbXB0eShNZW1vcnlDb250ZXh0IGNvbnRl eHQpOwogc3RhdGljIHZvaWQgQWxsb2NTZXRTdGF0cyhNZW1vcnlDb250ZXh0IGNvbnRleHQsCiAJ CQkJCQkgIE1lbW9yeVN0YXRzUHJpbnRGdW5jIHByaW50ZnVuYywgdm9pZCAqcGFzc3RocnUsCi0J CQkJCQkgIE1lbW9yeUNvbnRleHRDb3VudGVycyAqdG90YWxzKTsKKwkJCQkJCSAgTWVtb3J5Q29u dGV4dENvdW50ZXJzICp0b3RhbHMsCisJCQkJCQkgIGJvb2wgaXNfZHN0X3N0ZGVycik7CiAKICNp ZmRlZiBNRU1PUllfQ09OVEVYVF9DSEVDS0lORwogc3RhdGljIHZvaWQgQWxsb2NTZXRDaGVjayhN ZW1vcnlDb250ZXh0IGNvbnRleHQpOwpAQCAtMTMzNiwxMSArMTMzNywxMiBAQCBBbGxvY1NldElz RW1wdHkoTWVtb3J5Q29udGV4dCBjb250ZXh0KQogICogcHJpbnRmdW5jOiBpZiBub3QgTlVMTCwg cGFzcyBhIGh1bWFuLXJlYWRhYmxlIHN0YXRzIHN0cmluZyB0byB0aGlzLgogICogcGFzc3RocnU6 IHBhc3MgdGhpcyBwb2ludGVyIHRocm91Z2ggdG8gcHJpbnRmdW5jLgogICogdG90YWxzOiBpZiBu b3QgTlVMTCwgYWRkIHN0YXRzIGFib3V0IHRoaXMgY29udGV4dCBpbnRvICp0b3RhbHMuCisgKiBp c19kc3Rfc3RkZXJyOiBpcyB0aGUgb3V0cHV0IHNob3VsZCBiZSBzdGRlcnIgb3IgZWxvZy4KICAq Lwogc3RhdGljIHZvaWQKIEFsbG9jU2V0U3RhdHMoTWVtb3J5Q29udGV4dCBjb250ZXh0LAogCQkJ ICBNZW1vcnlTdGF0c1ByaW50RnVuYyBwcmludGZ1bmMsIHZvaWQgKnBhc3N0aHJ1LAotCQkJICBN ZW1vcnlDb250ZXh0Q291bnRlcnMgKnRvdGFscykKKwkJCSAgTWVtb3J5Q29udGV4dENvdW50ZXJz ICp0b3RhbHMsIGJvb2wgaXNfZHN0X3N0ZGVycikKIHsKIAlBbGxvY1NldAlzZXQgPSAoQWxsb2NT ZXQpIGNvbnRleHQ7CiAJU2l6ZQkJbmJsb2NrcyA9IDA7CkBAIC0xMzc5LDcgKzEzODEsNyBAQCBB bGxvY1NldFN0YXRzKE1lbW9yeUNvbnRleHQgY29udGV4dCwKIAkJCQkgIiV6dSB0b3RhbCBpbiAl emQgYmxvY2tzOyAlenUgZnJlZSAoJXpkIGNodW5rcyk7ICV6dSB1c2VkIiwKIAkJCQkgdG90YWxz cGFjZSwgbmJsb2NrcywgZnJlZXNwYWNlLCBmcmVlY2h1bmtzLAogCQkJCSB0b3RhbHNwYWNlIC0g ZnJlZXNwYWNlKTsKLQkJcHJpbnRmdW5jKGNvbnRleHQsIHBhc3N0aHJ1LCBzdGF0c19zdHJpbmcp OworCQlwcmludGZ1bmMoY29udGV4dCwgcGFzc3RocnUsIHN0YXRzX3N0cmluZywgaXNfZHN0X3N0 ZGVycik7CiAJfQogCiAJaWYgKHRvdGFscykKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L21tZ3IvZ2VuZXJhdGlvbi5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9nZW5lcmF0aW9uLmMK aW5kZXggMmI5MDAzNDc2NC4uYjI4NjMwOGFhNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRp bHMvbW1nci9nZW5lcmF0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9nZW5lcmF0 aW9uLmMKQEAgLTE1NSw3ICsxNTUsOCBAQCBzdGF0aWMgU2l6ZSBHZW5lcmF0aW9uR2V0Q2h1bmtT cGFjZShNZW1vcnlDb250ZXh0IGNvbnRleHQsIHZvaWQgKnBvaW50ZXIpOwogc3RhdGljIGJvb2wg R2VuZXJhdGlvbklzRW1wdHkoTWVtb3J5Q29udGV4dCBjb250ZXh0KTsKIHN0YXRpYyB2b2lkIEdl bmVyYXRpb25TdGF0cyhNZW1vcnlDb250ZXh0IGNvbnRleHQsCiAJCQkJCQkJTWVtb3J5U3RhdHNQ cmludEZ1bmMgcHJpbnRmdW5jLCB2b2lkICpwYXNzdGhydSwKLQkJCQkJCQlNZW1vcnlDb250ZXh0 Q291bnRlcnMgKnRvdGFscyk7CisJCQkJCQkJTWVtb3J5Q29udGV4dENvdW50ZXJzICp0b3RhbHMs CisJCQkJCQkJYm9vbCBpc19kc3Rfc3RkZXJyKTsKIAogI2lmZGVmIE1FTU9SWV9DT05URVhUX0NI RUNLSU5HCiBzdGF0aWMgdm9pZCBHZW5lcmF0aW9uQ2hlY2soTWVtb3J5Q29udGV4dCBjb250ZXh0 KTsKQEAgLTY2NSw2ICs2NjYsNyBAQCBHZW5lcmF0aW9uSXNFbXB0eShNZW1vcnlDb250ZXh0IGNv bnRleHQpCiAgKiBwcmludGZ1bmM6IGlmIG5vdCBOVUxMLCBwYXNzIGEgaHVtYW4tcmVhZGFibGUg c3RhdHMgc3RyaW5nIHRvIHRoaXMuCiAgKiBwYXNzdGhydTogcGFzcyB0aGlzIHBvaW50ZXIgdGhy b3VnaCB0byBwcmludGZ1bmMuCiAgKiB0b3RhbHM6IGlmIG5vdCBOVUxMLCBhZGQgc3RhdHMgYWJv dXQgdGhpcyBjb250ZXh0IGludG8gKnRvdGFscy4KKyAqIGlzX2RzdF9zdGRlcnI6IGlzIHRoZSBv dXRwdXQgc2hvdWxkIGJlIHN0ZGVyciBvciBlbG9nLgogICoKICAqIFhYWCBmcmVlc3BhY2Ugb25s eSBhY2NvdW50cyBmb3IgZW1wdHkgc3BhY2UgYXQgdGhlIGVuZCBvZiB0aGUgYmxvY2ssIG5vdAog ICogc3BhY2Ugb2YgZnJlZWQgY2h1bmtzICh3aGljaCBpcyB1bmtub3duKS4KQEAgLTY3Miw3ICs2 NzQsNyBAQCBHZW5lcmF0aW9uSXNFbXB0eShNZW1vcnlDb250ZXh0IGNvbnRleHQpCiBzdGF0aWMg dm9pZAogR2VuZXJhdGlvblN0YXRzKE1lbW9yeUNvbnRleHQgY29udGV4dCwKIAkJCQlNZW1vcnlT dGF0c1ByaW50RnVuYyBwcmludGZ1bmMsIHZvaWQgKnBhc3N0aHJ1LAotCQkJCU1lbW9yeUNvbnRl eHRDb3VudGVycyAqdG90YWxzKQorCQkJCU1lbW9yeUNvbnRleHRDb3VudGVycyAqdG90YWxzLCBi b29sIGlzX2RzdF9zdGRlcnIpCiB7CiAJR2VuZXJhdGlvbkNvbnRleHQgKnNldCA9IChHZW5lcmF0 aW9uQ29udGV4dCAqKSBjb250ZXh0OwogCVNpemUJCW5ibG9ja3MgPSAwOwpAQCAtNzA0LDcgKzcw Niw3IEBAIEdlbmVyYXRpb25TdGF0cyhNZW1vcnlDb250ZXh0IGNvbnRleHQsCiAJCQkJICIlenUg dG90YWwgaW4gJXpkIGJsb2NrcyAoJXpkIGNodW5rcyk7ICV6dSBmcmVlICglemQgY2h1bmtzKTsg JXp1IHVzZWQiLAogCQkJCSB0b3RhbHNwYWNlLCBuYmxvY2tzLCBuY2h1bmtzLCBmcmVlc3BhY2Us CiAJCQkJIG5mcmVlY2h1bmtzLCB0b3RhbHNwYWNlIC0gZnJlZXNwYWNlKTsKLQkJcHJpbnRmdW5j KGNvbnRleHQsIHBhc3N0aHJ1LCBzdGF0c19zdHJpbmcpOworCQlwcmludGZ1bmMoY29udGV4dCwg cGFzc3RocnUsIHN0YXRzX3N0cmluZywgaXNfZHN0X3N0ZGVycik7CiAJfQogCiAJaWYgKHRvdGFs cykKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvbWN4dC5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvbW1nci9tY3h0LmMKaW5kZXggODQ0NzJiOTE1OC4uZjAyMzMxYzM2YyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9tY3h0LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvbW1nci9tY3h0LmMKQEAgLTIzLDYgKzIzLDEwIEBACiAKICNpbmNsdWRlICJtYi9wZ193Y2hh ci5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgor I2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jc2ln bmFsLmgiCisjaW5jbHVkZSAidXRpbHMvZm1ncnByb3Rvcy5oIgogI2luY2x1ZGUgInV0aWxzL21l bWRlYnVnLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKIApAQCAtMzcsNiArNDEsMTMg QEAKICAqLwogTWVtb3J5Q29udGV4dCBDdXJyZW50TWVtb3J5Q29udGV4dCA9IE5VTEw7CiAKKy8q CisgKiBNY3h0TG9nRGF0YQorICogCQlEYXRhIGZvciBjb21tdW5pY2F0aW9uIGJldHdlZW4gbWVt b3J5IGNvbnRleHQgbG9nZ2luZworICogCQlkdW1wZXIgYW5kIHJlcXVlc3Rvci4KKyAqLworTWN4 dExvZ0RhdGEgKm1jeHRMb2dEYXRhID0gTlVMTDsKKwogLyoKICAqIFN0YW5kYXJkIHRvcC1sZXZl bCBjb250ZXh0cy4gRm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlIHB1cnBvc2Ugb2YgZWFjaAogICog b2YgdGhlc2UgY29udGV4dHMsIHJlZmVyIHRvIHNyYy9iYWNrZW5kL3V0aWxzL21tZ3IvUkVBRE1F CkBAIC01NSw5ICs2NiwxMSBAQCBNZW1vcnlDb250ZXh0IFBvcnRhbENvbnRleHQgPSBOVUxMOwog c3RhdGljIHZvaWQgTWVtb3J5Q29udGV4dENhbGxSZXNldENhbGxiYWNrcyhNZW1vcnlDb250ZXh0 IGNvbnRleHQpOwogc3RhdGljIHZvaWQgTWVtb3J5Q29udGV4dFN0YXRzSW50ZXJuYWwoTWVtb3J5 Q29udGV4dCBjb250ZXh0LCBpbnQgbGV2ZWwsCiAJCQkJCQkJCQkgICBib29sIHByaW50LCBpbnQg bWF4X2NoaWxkcmVuLAotCQkJCQkJCQkJICAgTWVtb3J5Q29udGV4dENvdW50ZXJzICp0b3RhbHMp OworCQkJCQkJCQkJICAgTWVtb3J5Q29udGV4dENvdW50ZXJzICp0b3RhbHMsCisJCQkJCQkJCQkg ICBib29sIGlzX2RzdF9zdGRlcnIpOwogc3RhdGljIHZvaWQgTWVtb3J5Q29udGV4dFN0YXRzUHJp bnQoTWVtb3J5Q29udGV4dCBjb250ZXh0LCB2b2lkICpwYXNzdGhydSwKLQkJCQkJCQkJCWNvbnN0 IGNoYXIgKnN0YXRzX3N0cmluZyk7CisJCQkJCQkJCQljb25zdCBjaGFyICpzdGF0c19zdHJpbmcs CisJCQkJCQkJCQlib29sIGlzX2RzdF9zdGRlcnIpOwogCiAvKgogICogWW91IHNob3VsZCBub3Qg ZG8gbWVtb3J5IGFsbG9jYXRpb25zIHdpdGhpbiBhIGNyaXRpY2FsIHNlY3Rpb24sIGJlY2F1c2UK QEAgLTQ4Nyw2ICs1MDAsODQgQEAgTWVtb3J5Q29udGV4dE1lbUFsbG9jYXRlZChNZW1vcnlDb250 ZXh0IGNvbnRleHQsIGJvb2wgcmVjdXJzZSkKIAlyZXR1cm4gdG90YWw7CiB9CiAKKy8qCisgKiBN Y3h0TG9nU2htZW1Jbml0CisgKgkgCUluaXRpYWxpemUgc2hhcmVkIG1lbW9yeSBhcmVhCisgKi8K K3ZvaWQKK01jeHRMb2dTaG1lbUluaXQodm9pZCkKK3sKKwlib29sCQlmb3VuZDsKKworCW1jeHRM b2dEYXRhID0gKE1jeHRMb2dEYXRhICopCisJCVNobWVtSW5pdFN0cnVjdCgiTWVtb3J5IENvbnRl eHQgTG9nZ2luZyBEYXRhIiwKKwkJCQkJCXNpemVvZihpbnQpLAorCQkJCQkJJmZvdW5kKTsKKwlp ZiAoIWZvdW5kKQorCXsKKwkJbWN4dExvZ0RhdGEtPm1heENoaWxkcmVuUGVyQ29udGV4dCA9IDA7 CisJfQorfQorCisvKgorICogcGdfbG9nX2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzCisgKgkJTG9n IG1lbW9yeSBjb250ZXh0cyBvZiB0aGUgc3BlY2lmaWVkIGJhY2tlbmQgcHJvY2Vzcy4KKyAqLwor RGF0dW0KK3BnX2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0cyhpbnQgcGlkLCBpbnQgbWF4X2No aWxkcmVuKQoreworCVBHUFJPQwkJKnByb2MgPSBCYWNrZW5kUGlkR2V0UHJvYyhwaWQpOworCisJ aWYobWF4X2NoaWxkcmVuIDwgMCkKKwl7CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycm1zZygi VGhlIG1heGltdW0gbnVtYmVyIG9mIGNoaWxkcmVuIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVx dWFsIHRvIDAiKSkpOworCisJCVBHX1JFVFVSTl9CT09MKGZhbHNlKTsKKwl9CisKKwkvKgorCSAq IENoZWNrIHdoZXRoZXIgdGhlIHRhcmdldCBwcm9jZXNzIGlzIFBvc3RncmVTUUwgYmFja2VuZCBw cm9jZXNzLgorCSAqLworCWlmIChwcm9jID09IE5VTEwpCisJeworCQkvKgorCQkgKiBBY2NvcmRp bmcgdG8gdGhlIHRocmVhZCBiZWxvdywgaXQgbWlnaHQgYmUgYmV0dGVyIHRvCisJCSAqIGNoYW5n ZSB0aGlzIG1lc3NhZ2UuCisJCSAqCisJCSAqIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21l c3NhZ2UtaWQvQ0FMajJBQ1c3UnItUjdtQmNCUWlYV1BwJTNESlY1Y2hhampUZHVkTGlGNVljcFct Qm1IaGclNDBtYWlsLmdtYWlsLmNvbQorCQkgKgorCQkgKiBVbnRpbCB0aGUgY29uY2x1c2lvbiBv ZiB0aGUgZGlzY3Vzc2lvbiwgb3V0cHV0IHRoZSBzYW1lCisJCSAqIG1lc3NhZ2UgYXMgcGdfY2Fu Y2VsX2JhY2tlbmQoKS4KKwkJICovCisJCWVyZXBvcnQoV0FSTklORywKKwkJCQkoZXJybXNnKCJQ SUQgJWQgaXMgbm90IGEgUG9zdGdyZVNRTCBzZXJ2ZXIgcHJvY2VzcyIsIHBpZCkpKTsKKworCQlQ R19SRVRVUk5fQk9PTChmYWxzZSk7CisJfQorCisJLyogT25seSBhbGxvdyBzdXBlcnVzZXJzIHRv IHByaW50IG1lbW9yeSBjb250ZXh0cy4gKi8KKwlpZiAoIXN1cGVydXNlcigpKQorCXsKKwkJZXJl cG9ydChXQVJOSU5HLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5TVUZGSUNJRU5UX1BSSVZJTEVH RSksCisJCQkJIGVycm1zZygibXVzdCBiZSBhIHN1cGVydXNlciB0byBsb2cgbWVtb3J5IGNvbnRl eHRzIikpKTsKKwkJUEdfUkVUVVJOX0JPT0woZmFsc2UpOworCX0KKworCW1jeHRMb2dEYXRhLT5t YXhDaGlsZHJlblBlckNvbnRleHQgPSBtYXhfY2hpbGRyZW47CisKKwlpZighU2VuZFByb2NTaWdu YWwocGlkLCBQUk9DU0lHX0xPR19NRU1PUllfQ09OVEVYVCwgcHJvYy0+YmFja2VuZElkKSkKKwkJ UEdfUkVUVVJOX0JPT0wodHJ1ZSk7CisJZWxzZQorCXsKKwkJZXJlcG9ydChXQVJOSU5HLAorCQkJ CShlcnJtc2coImZhaWxlZCB0byBzZW5kIHNpZ25hbDogJW0iKSkpOworCisJCVBHX1JFVFVSTl9C T09MKGZhbHNlKTsKKwl9Cit9CisKIC8qCiAgKiBNZW1vcnlDb250ZXh0U3RhdHMKICAqCQlQcmlu dCBzdGF0aXN0aWNzIGFib3V0IHRoZSBuYW1lZCBjb250ZXh0IGFuZCBhbGwgaXRzIGRlc2NlbmRh bnRzLgpAQCAtNDk5LDcgKzU5MCw3IEBAIHZvaWQKIE1lbW9yeUNvbnRleHRTdGF0cyhNZW1vcnlD b250ZXh0IGNvbnRleHQpCiB7CiAJLyogQSBoYXJkLXdpcmVkIGxpbWl0IG9uIHRoZSBudW1iZXIg b2YgY2hpbGRyZW4gaXMgdXN1YWxseSBnb29kIGVub3VnaCAqLwotCU1lbW9yeUNvbnRleHRTdGF0 c0RldGFpbChjb250ZXh0LCAxMDApOworCU1lbW9yeUNvbnRleHRTdGF0c0RldGFpbChjb250ZXh0 LCAxMDAsIHRydWUpOwogfQogCiAvKgpAQCAtNTA4LDE5ICs1OTksMjggQEAgTWVtb3J5Q29udGV4 dFN0YXRzKE1lbW9yeUNvbnRleHQgY29udGV4dCkKICAqIEVudHJ5IHBvaW50IGZvciB1c2UgaWYg eW91IHdhbnQgdG8gdmFyeSB0aGUgbnVtYmVyIG9mIGNoaWxkIGNvbnRleHRzIHNob3duLgogICov CiB2b2lkCi1NZW1vcnlDb250ZXh0U3RhdHNEZXRhaWwoTWVtb3J5Q29udGV4dCBjb250ZXh0LCBp bnQgbWF4X2NoaWxkcmVuKQorTWVtb3J5Q29udGV4dFN0YXRzRGV0YWlsKE1lbW9yeUNvbnRleHQg Y29udGV4dCwgaW50IG1heF9jaGlsZHJlbiwgYm9vbCBpc19kc3Rfc3RkZXJyKQogewogCU1lbW9y eUNvbnRleHRDb3VudGVycyBncmFuZF90b3RhbHM7CiAKIAltZW1zZXQoJmdyYW5kX3RvdGFscywg MCwgc2l6ZW9mKGdyYW5kX3RvdGFscykpOwogCi0JTWVtb3J5Q29udGV4dFN0YXRzSW50ZXJuYWwo Y29udGV4dCwgMCwgdHJ1ZSwgbWF4X2NoaWxkcmVuLCAmZ3JhbmRfdG90YWxzKTsKKwlNZW1vcnlD b250ZXh0U3RhdHNJbnRlcm5hbChjb250ZXh0LCAwLCB0cnVlLCBtYXhfY2hpbGRyZW4sICZncmFu ZF90b3RhbHMsIGlzX2RzdF9zdGRlcnIpOwogCi0JZnByaW50ZihzdGRlcnIsCi0JCQkiR3JhbmQg dG90YWw6ICV6dSBieXRlcyBpbiAlemQgYmxvY2tzOyAlenUgZnJlZSAoJXpkIGNodW5rcyk7ICV6 dSB1c2VkXG4iLAotCQkJZ3JhbmRfdG90YWxzLnRvdGFsc3BhY2UsIGdyYW5kX3RvdGFscy5uYmxv Y2tzLAotCQkJZ3JhbmRfdG90YWxzLmZyZWVzcGFjZSwgZ3JhbmRfdG90YWxzLmZyZWVjaHVua3Ms Ci0JCQlncmFuZF90b3RhbHMudG90YWxzcGFjZSAtIGdyYW5kX3RvdGFscy5mcmVlc3BhY2UpOwor CWlmIChpc19kc3Rfc3RkZXJyKQorCQlmcHJpbnRmKHN0ZGVyciwKKwkJCQkiR3JhbmQgdG90YWw6 ICV6dSBieXRlcyBpbiAlemQgYmxvY2tzOyAlenUgZnJlZSAoJXpkIGNodW5rcyk7ICV6dSB1c2Vk XG4iLAorCQkJCWdyYW5kX3RvdGFscy50b3RhbHNwYWNlLCBncmFuZF90b3RhbHMubmJsb2NrcywK KwkJCQlncmFuZF90b3RhbHMuZnJlZXNwYWNlLCBncmFuZF90b3RhbHMuZnJlZWNodW5rcywKKwkJ CQlncmFuZF90b3RhbHMudG90YWxzcGFjZSAtIGdyYW5kX3RvdGFscy5mcmVlc3BhY2UpOworCWVs c2UKKwkJZXJlcG9ydChMT0dfU0VSVkVSX09OTFksCisJCQkJKGVycmhpZGVzdG10KHRydWUpLAor CQkJCWVycmhpZGVjb250ZXh0KHRydWUpLAorCQkJCWVycm1zZ19pbnRlcm5hbCgiR3JhbmQgdG90 YWw6ICV6dSBieXRlcyBpbiAlemQgYmxvY2tzOyAlenUgZnJlZSAoJXpkIGNodW5rcyk7ICV6dSB1 c2VkIiwKKwkJCQlncmFuZF90b3RhbHMudG90YWxzcGFjZSwgZ3JhbmRfdG90YWxzLm5ibG9ja3Ms CisJCQkJZ3JhbmRfdG90YWxzLmZyZWVzcGFjZSwgZ3JhbmRfdG90YWxzLmZyZWVjaHVua3MsCisJ CQkJZ3JhbmRfdG90YWxzLnRvdGFsc3BhY2UgLSBncmFuZF90b3RhbHMuZnJlZXNwYWNlKSkpOwog fQogCiAvKgpAQCAtNTMzLDcgKzYzMyw4IEBAIE1lbW9yeUNvbnRleHRTdGF0c0RldGFpbChNZW1v cnlDb250ZXh0IGNvbnRleHQsIGludCBtYXhfY2hpbGRyZW4pCiBzdGF0aWMgdm9pZAogTWVtb3J5 Q29udGV4dFN0YXRzSW50ZXJuYWwoTWVtb3J5Q29udGV4dCBjb250ZXh0LCBpbnQgbGV2ZWwsCiAJ CQkJCQkgICBib29sIHByaW50LCBpbnQgbWF4X2NoaWxkcmVuLAotCQkJCQkJICAgTWVtb3J5Q29u dGV4dENvdW50ZXJzICp0b3RhbHMpCisJCQkJCQkgICBNZW1vcnlDb250ZXh0Q291bnRlcnMgKnRv dGFscywKKwkJCQkJCSAgIGJvb2wgaXNfZHN0X3N0ZGVycikKIHsKIAlNZW1vcnlDb250ZXh0Q291 bnRlcnMgbG9jYWxfdG90YWxzOwogCU1lbW9yeUNvbnRleHQgY2hpbGQ7CkBAIC01NDUsMTEgKzY0 NiwxMyBAQCBNZW1vcnlDb250ZXh0U3RhdHNJbnRlcm5hbChNZW1vcnlDb250ZXh0IGNvbnRleHQs IGludCBsZXZlbCwKIAljb250ZXh0LT5tZXRob2RzLT5zdGF0cyhjb250ZXh0LAogCQkJCQkJCXBy aW50ID8gTWVtb3J5Q29udGV4dFN0YXRzUHJpbnQgOiBOVUxMLAogCQkJCQkJCSh2b2lkICopICZs ZXZlbCwKLQkJCQkJCQl0b3RhbHMpOworCQkJCQkJCXRvdGFscywgaXNfZHN0X3N0ZGVycik7CiAK IAkvKgogCSAqIEV4YW1pbmUgY2hpbGRyZW4uICBJZiB0aGVyZSBhcmUgbW9yZSB0aGFuIG1heF9j aGlsZHJlbiBvZiB0aGVtLCB3ZSBkbwogCSAqIG5vdCBwcmludCB0aGUgcmVzdCBleHBsaWNpdGx5 LCBidXQganVzdCBzdW1tYXJpemUgdGhlbS4KKwkgKgorCSAqIE5vdGUgdGhhdCBzcGVjaWZ5aW5n IDAgdG8gbWF4X2NoaWxkcmVuIG1lYW5zIHVtbGltaXRlZC4KIAkgKi8KIAltZW1zZXQoJmxvY2Fs X3RvdGFscywgMCwgc2l6ZW9mKGxvY2FsX3RvdGFscykpOwogCkBAIC01NTcsMzMgKzY2MCw1MCBA QCBNZW1vcnlDb250ZXh0U3RhdHNJbnRlcm5hbChNZW1vcnlDb250ZXh0IGNvbnRleHQsIGludCBs ZXZlbCwKIAkJIGNoaWxkICE9IE5VTEw7CiAJCSBjaGlsZCA9IGNoaWxkLT5uZXh0Y2hpbGQsIGlj aGlsZCsrKQogCXsKLQkJaWYgKGljaGlsZCA8IG1heF9jaGlsZHJlbikKKwkJaWYgKGljaGlsZCA8 IG1heF9jaGlsZHJlbiB8fCBtYXhfY2hpbGRyZW4gPT0gMCkKIAkJCU1lbW9yeUNvbnRleHRTdGF0 c0ludGVybmFsKGNoaWxkLCBsZXZlbCArIDEsCiAJCQkJCQkJCQkgICBwcmludCwgbWF4X2NoaWxk cmVuLAotCQkJCQkJCQkJICAgdG90YWxzKTsKKwkJCQkJCQkJCSAgIHRvdGFscywKKwkJCQkJCQkJ CSAgIGlzX2RzdF9zdGRlcnIpOwogCQllbHNlCiAJCQlNZW1vcnlDb250ZXh0U3RhdHNJbnRlcm5h bChjaGlsZCwgbGV2ZWwgKyAxLAogCQkJCQkJCQkJICAgZmFsc2UsIG1heF9jaGlsZHJlbiwKLQkJ CQkJCQkJCSAgICZsb2NhbF90b3RhbHMpOworCQkJCQkJCQkJICAgJmxvY2FsX3RvdGFscywKKwkJ CQkJCQkJCSAgIGlzX2RzdF9zdGRlcnIpOwogCX0KIAotCS8qIERlYWwgd2l0aCBleGNlc3MgY2hp bGRyZW4gKi8KLQlpZiAoaWNoaWxkID4gbWF4X2NoaWxkcmVuKQorCS8qRGVhbCB3aXRoIGV4Y2Vz cyBjaGlsZHJlbiAqLworCWlmIChpY2hpbGQgPiBtYXhfY2hpbGRyZW4gJiYgbWF4X2NoaWxkcmVu ICE9IDApCiAJewogCQlpZiAocHJpbnQpCiAJCXsKIAkJCWludAkJCWk7CiAKLQkJCWZvciAoaSA9 IDA7IGkgPD0gbGV2ZWw7IGkrKykKLQkJCQlmcHJpbnRmKHN0ZGVyciwgIiAgIik7Ci0JCQlmcHJp bnRmKHN0ZGVyciwKLQkJCQkJIiVkIG1vcmUgY2hpbGQgY29udGV4dHMgY29udGFpbmluZyAlenUg dG90YWwgaW4gJXpkIGJsb2NrczsgJXp1IGZyZWUgKCV6ZCBjaHVua3MpOyAlenUgdXNlZFxuIiwK LQkJCQkJaWNoaWxkIC0gbWF4X2NoaWxkcmVuLAotCQkJCQlsb2NhbF90b3RhbHMudG90YWxzcGFj ZSwKLQkJCQkJbG9jYWxfdG90YWxzLm5ibG9ja3MsCi0JCQkJCWxvY2FsX3RvdGFscy5mcmVlc3Bh Y2UsCi0JCQkJCWxvY2FsX3RvdGFscy5mcmVlY2h1bmtzLAotCQkJCQlsb2NhbF90b3RhbHMudG90 YWxzcGFjZSAtIGxvY2FsX3RvdGFscy5mcmVlc3BhY2UpOworCQkJaWYgKGlzX2RzdF9zdGRlcnIp CisJCQl7CisJCQkJZm9yIChpID0gMDsgaSA8PSBsZXZlbDsgaSsrKQorCQkJCQlmcHJpbnRmKHN0 ZGVyciwgIiAgIik7CisJCQkJZnByaW50ZihzdGRlcnIsCisJCQkJCQkiJWQgbW9yZSBjaGlsZCBj b250ZXh0cyBjb250YWluaW5nICV6dSB0b3RhbCBpbiAlemQgYmxvY2tzOyAlenUgZnJlZSAoJXpk IGNodW5rcyk7ICV6dSB1c2VkXG4iLAorCQkJCQkJaWNoaWxkIC0gbWF4X2NoaWxkcmVuLAorCQkJ CQkJbG9jYWxfdG90YWxzLnRvdGFsc3BhY2UsCisJCQkJCQlsb2NhbF90b3RhbHMubmJsb2NrcywK KwkJCQkJCWxvY2FsX3RvdGFscy5mcmVlc3BhY2UsCisJCQkJCQlsb2NhbF90b3RhbHMuZnJlZWNo dW5rcywKKwkJCQkJCWxvY2FsX3RvdGFscy50b3RhbHNwYWNlIC0gbG9jYWxfdG90YWxzLmZyZWVz cGFjZSk7CisJCQl9CisJCQllbHNlCisJCQkJZXJlcG9ydChMT0dfU0VSVkVSX09OTFksCisJCQkJ CQkoZXJyaGlkZXN0bXQodHJ1ZSksCisJCQkJCQllcnJoaWRlY29udGV4dCh0cnVlKSwKKwkJCQkJ CWVycm1zZ19pbnRlcm5hbCgibGV2ZWw6ICVkICVkIG1vcmUgY2hpbGQgY29udGV4dHMgY29udGFp bmluZyAlenUgdG90YWwgaW4gJXpkIGJsb2NrczsgJXp1IGZyZWUgKCV6ZCBjaHVua3MpOyAlenUg dXNlZCIsCisJCQkJCQlsZXZlbCwKKwkJCQkJCWljaGlsZCAtIG1heF9jaGlsZHJlbiwKKwkJCQkJ CWxvY2FsX3RvdGFscy50b3RhbHNwYWNlLAorCQkJCQkJbG9jYWxfdG90YWxzLm5ibG9ja3MsCisJ CQkJCQlsb2NhbF90b3RhbHMuZnJlZXNwYWNlLAorCQkJCQkJbG9jYWxfdG90YWxzLmZyZWVjaHVu a3MsCisJCQkJCQlsb2NhbF90b3RhbHMudG90YWxzcGFjZSAtIGxvY2FsX3RvdGFscy5mcmVlc3Bh Y2UpKSk7CiAJCX0KIAogCQlpZiAodG90YWxzKQpAQCAtNjA1LDEyICs3MjUsMTQgQEAgTWVtb3J5 Q29udGV4dFN0YXRzSW50ZXJuYWwoTWVtb3J5Q29udGV4dCBjb250ZXh0LCBpbnQgbGV2ZWwsCiAg Ki8KIHN0YXRpYyB2b2lkCiBNZW1vcnlDb250ZXh0U3RhdHNQcmludChNZW1vcnlDb250ZXh0IGNv bnRleHQsIHZvaWQgKnBhc3N0aHJ1LAotCQkJCQkJY29uc3QgY2hhciAqc3RhdHNfc3RyaW5nKQor CQkJCQkJY29uc3QgY2hhciAqc3RhdHNfc3RyaW5nLAorCQkJCQkJYm9vbCBpc19kc3Rfc3RkZXJy KQogewogCWludAkJCWxldmVsID0gKihpbnQgKikgcGFzc3RocnU7CiAJY29uc3QgY2hhciAqbmFt ZSA9IGNvbnRleHQtPm5hbWU7CiAJY29uc3QgY2hhciAqaWRlbnQgPSBjb250ZXh0LT5pZGVudDsK IAlpbnQJCQlpOworCWNoYXIJCXRydW5jYXRlZF9pZGVudFsxMTBdOwogCiAJLyoKIAkgKiBJdCBz ZWVtcyBwcmVmZXJhYmxlIHRvIGxhYmVsIGR5bmFoYXNoIGNvbnRleHRzIHdpdGgganVzdCB0aGUg aGFzaCB0YWJsZQpAQCAtNjIzLDkgKzc0NSw4IEBAIE1lbW9yeUNvbnRleHRTdGF0c1ByaW50KE1l bW9yeUNvbnRleHQgY29udGV4dCwgdm9pZCAqcGFzc3RocnUsCiAJCWlkZW50ID0gTlVMTDsKIAl9 CiAKLQlmb3IgKGkgPSAwOyBpIDwgbGV2ZWw7IGkrKykKLQkJZnByaW50ZihzdGRlcnIsICIgICIp OwotCWZwcmludGYoc3RkZXJyLCAiJXM6ICVzIiwgbmFtZSwgc3RhdHNfc3RyaW5nKTsKKwl0cnVu Y2F0ZWRfaWRlbnRbMF0gPSAnXDAnOworCiAJaWYgKGlkZW50KQogCXsKIAkJLyoKQEAgLTYzNywy NCArNzU4LDQyIEBAIE1lbW9yeUNvbnRleHRTdGF0c1ByaW50KE1lbW9yeUNvbnRleHQgY29udGV4 dCwgdm9pZCAqcGFzc3RocnUsCiAJCWludAkJCWlkbGVuID0gc3RybGVuKGlkZW50KTsKIAkJYm9v bAkJdHJ1bmNhdGVkID0gZmFsc2U7CiAKKwkJc3RyY3B5KHRydW5jYXRlZF9pZGVudCwgIjogIik7 CisKIAkJaWYgKGlkbGVuID4gMTAwKQogCQl7CiAJCQlpZGxlbiA9IHBnX21iY2xpcGxlbihpZGVu dCwgaWRsZW4sIDEwMCk7CiAJCQl0cnVuY2F0ZWQgPSB0cnVlOwogCQl9Ci0JCWZwcmludGYoc3Rk ZXJyLCAiOiAiKTsKKworCQlpID0gc3RybGVuKHRydW5jYXRlZF9pZGVudCk7CisKIAkJd2hpbGUg KGlkbGVuLS0gPiAwKQogCQl7CiAJCQl1bnNpZ25lZCBjaGFyIGMgPSAqaWRlbnQrKzsKIAogCQkJ aWYgKGMgPCAnICcpCiAJCQkJYyA9ICcgJzsKLQkJCWZwdXRjKGMsIHN0ZGVycik7CisJCQl0cnVu Y2F0ZWRfaWRlbnRbaSsrXSA9IGM7CiAJCX0KKwkJdHJ1bmNhdGVkX2lkZW50W2ldID0gJ1wwJzsK KwogCQlpZiAodHJ1bmNhdGVkKQotCQkJZnByaW50ZihzdGRlcnIsICIuLi4iKTsKKwkJCXN0cmNh dCh0cnVuY2F0ZWRfaWRlbnQsICIuLi4iKTsKKwl9CisKKwlpZiAoaXNfZHN0X3N0ZGVycikKKwl7 CisJCWZvciAoaSA9IDA7IGkgPCBsZXZlbDsgaSsrKQorCQkJZnByaW50ZihzdGRlcnIsICIgICIp OworCQlmcHJpbnRmKHN0ZGVyciwgIiVzOiAlcyVzXG4iLCBuYW1lLCBzdGF0c19zdHJpbmcsIHRy dW5jYXRlZF9pZGVudCk7CiAJfQotCWZwdXRjKCdcbicsIHN0ZGVycik7CisJZWxzZQorCQllcmVw b3J0KExPR19TRVJWRVJfT05MWSwKKwkJCQkoZXJyaGlkZXN0bXQodHJ1ZSksCisJCQkJIGVycmhp ZGVjb250ZXh0KHRydWUpLAorCQkJCSBlcnJtc2dfaW50ZXJuYWwoImxldmVsOiAlZCAlczogJXMl cyIsCisJCQkJCQkJCQkgbGV2ZWwsIG5hbWUsIHN0YXRzX3N0cmluZywgdHJ1bmNhdGVkX2lkZW50 KSkpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9zbGFiLmMg Yi9zcmMvYmFja2VuZC91dGlscy9tbWdyL3NsYWIuYwppbmRleCA5MjEzYmU3Yzk1Li40NzliMDhi ZWRkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL3NsYWIuYworKysgYi9zcmMv YmFja2VuZC91dGlscy9tbWdyL3NsYWIuYwpAQCAtMTM1LDcgKzEzNSw4IEBAIHN0YXRpYyBTaXpl IFNsYWJHZXRDaHVua1NwYWNlKE1lbW9yeUNvbnRleHQgY29udGV4dCwgdm9pZCAqcG9pbnRlcik7 CiBzdGF0aWMgYm9vbCBTbGFiSXNFbXB0eShNZW1vcnlDb250ZXh0IGNvbnRleHQpOwogc3RhdGlj IHZvaWQgU2xhYlN0YXRzKE1lbW9yeUNvbnRleHQgY29udGV4dCwKIAkJCQkJICBNZW1vcnlTdGF0 c1ByaW50RnVuYyBwcmludGZ1bmMsIHZvaWQgKnBhc3N0aHJ1LAotCQkJCQkgIE1lbW9yeUNvbnRl eHRDb3VudGVycyAqdG90YWxzKTsKKwkJCQkJICBNZW1vcnlDb250ZXh0Q291bnRlcnMgKnRvdGFs cywKKwkJCQkJICBib29sIGlzX2RzdF9zdGRlcnIpOwogI2lmZGVmIE1FTU9SWV9DT05URVhUX0NI RUNLSU5HCiBzdGF0aWMgdm9pZCBTbGFiQ2hlY2soTWVtb3J5Q29udGV4dCBjb250ZXh0KTsKICNl bmRpZgpAQCAtNjMyLDExICs2MzMsMTMgQEAgU2xhYklzRW1wdHkoTWVtb3J5Q29udGV4dCBjb250 ZXh0KQogICogcHJpbnRmdW5jOiBpZiBub3QgTlVMTCwgcGFzcyBhIGh1bWFuLXJlYWRhYmxlIHN0 YXRzIHN0cmluZyB0byB0aGlzLgogICogcGFzc3RocnU6IHBhc3MgdGhpcyBwb2ludGVyIHRocm91 Z2ggdG8gcHJpbnRmdW5jLgogICogdG90YWxzOiBpZiBub3QgTlVMTCwgYWRkIHN0YXRzIGFib3V0 IHRoaXMgY29udGV4dCBpbnRvICp0b3RhbHMuCisgKiBpc19kc3Rfc3RkZXJyOiBpcyB0aGUgb3V0 cHV0IHNob3VsZCBiZSBzdGRlcnIgb3IgZWxvZy4KICAqLwogc3RhdGljIHZvaWQKIFNsYWJTdGF0 cyhNZW1vcnlDb250ZXh0IGNvbnRleHQsCiAJCSAgTWVtb3J5U3RhdHNQcmludEZ1bmMgcHJpbnRm dW5jLCB2b2lkICpwYXNzdGhydSwKLQkJICBNZW1vcnlDb250ZXh0Q291bnRlcnMgKnRvdGFscykK KwkJICBNZW1vcnlDb250ZXh0Q291bnRlcnMgKnRvdGFscywKKwkJICBib29sIGlzX2RzdF9zdGRl cnIpCiB7CiAJU2xhYkNvbnRleHQgKnNsYWIgPSBjYXN0Tm9kZShTbGFiQ29udGV4dCwgY29udGV4 dCk7CiAJU2l6ZQkJbmJsb2NrcyA9IDA7CkBAIC02NzEsNyArNjc0LDcgQEAgU2xhYlN0YXRzKE1l bW9yeUNvbnRleHQgY29udGV4dCwKIAkJCQkgIiV6dSB0b3RhbCBpbiAlemQgYmxvY2tzOyAlenUg ZnJlZSAoJXpkIGNodW5rcyk7ICV6dSB1c2VkIiwKIAkJCQkgdG90YWxzcGFjZSwgbmJsb2Nrcywg ZnJlZXNwYWNlLCBmcmVlY2h1bmtzLAogCQkJCSB0b3RhbHNwYWNlIC0gZnJlZXNwYWNlKTsKLQkJ cHJpbnRmdW5jKGNvbnRleHQsIHBhc3N0aHJ1LCBzdGF0c19zdHJpbmcpOworCQlwcmludGZ1bmMo Y29udGV4dCwgcGFzc3RocnUsIHN0YXRzX3N0cmluZywgaXNfZHN0X3N0ZGVycik7CiAJfQogCiAJ aWYgKHRvdGFscykKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQg Yi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IDQ2NGZhOGQ2MTQuLmZhMjA4 ODkxMDUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtNzkyMSwxMiArNzkyMSwxNCBAQAog ICBkZXNjciA9PiAnaW5mb3JtYXRpb24gYWJvdXQgYWxsIG1lbW9yeSBjb250ZXh0cyBvZiBsb2Nh bCBiYWNrZW5kJywKICAgcHJvbmFtZSA9PiAncGdfZ2V0X2JhY2tlbmRfbWVtb3J5X2NvbnRleHRz JywgcHJvcm93cyA9PiAnMTAwJywKICAgcHJvcmV0c2V0ID0+ICd0JywgcHJvdm9sYXRpbGUgPT4g J3YnLCBwcm9wYXJhbGxlbCA9PiAncicsCi0gIHByb3JldHR5cGUgPT4gJ3JlY29yZCcsIHByb2Fy Z3R5cGVzID0+ICcnLAotICBwcm9hbGxhcmd0eXBlcyA9PiAne3RleHQsdGV4dCx0ZXh0LGludDQs aW50OCxpbnQ4LGludDgsaW50OCxpbnQ4fScsCi0gIHByb2FyZ21vZGVzID0+ICd7byxvLG8sbyxv LG8sbyxvLG99JywKLSAgcHJvYXJnbmFtZXMgPT4gJ3tuYW1lLCBpZGVudCwgcGFyZW50LCBsZXZl bCwgdG90YWxfYnl0ZXMsIHRvdGFsX25ibG9ja3MsIGZyZWVfYnl0ZXMsIGZyZWVfY2h1bmtzLCB1 c2VkX2J5dGVzfScsCisgIHByb3JldHR5cGUgPT4gJ3JlY29yZCcsIHByb2FyZ3R5cGVzID0+ICdp bnQ0IGludDQnLAorICBwcm9hbGxhcmd0eXBlcyA9PiAne2ludDQsaW50NCx0ZXh0LHRleHQsdGV4 dCxpbnQ0LGludDgsaW50OCxpbnQ4LGludDgsaW50OH0nLAorICBwcm9hcmdtb2RlcyA9PiAne2ks aSxvLG8sbyxvLG8sbyxvLG8sb30nLAorICBwcm9hcmduYW1lcyA9PiAne3BpZCwgbWF4X2NoaWxk cmVuLCBuYW1lLCBpZGVudCwgcGFyZW50LCBsZXZlbCwgdG90YWxfYnl0ZXMsIHRvdGFsX25ibG9j a3MsIGZyZWVfYnl0ZXMsIGZyZWVfY2h1bmtzLCB1c2VkX2J5dGVzfScsCiAgIHByb3NyYyA9PiAn cGdfZ2V0X2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzJyB9LAogCisjIHByaW50IG1lbW9yeSBjb250 ZXh0IG9mIHNwZWNpZmllZCBiYWNrZW5kCisKICMgbm9uLXBlcnNpc3RlbnQgc2VyaWVzIGdlbmVy YXRvcgogeyBvaWQgPT4gJzEwNjYnLCBkZXNjciA9PiAnbm9uLXBlcnNpc3RlbnQgc2VyaWVzIGdl bmVyYXRvcicsCiAgIHByb25hbWUgPT4gJ2dlbmVyYXRlX3NlcmllcycsIHByb3Jvd3MgPT4gJzEw MDAnLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmggYi9zcmMvaW5jbHVkZS9t aXNjYWRtaW4uaAppbmRleCAwMTM4NTBhYzI4Li4wODE4MjI4MjNjIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9taXNjYWRtaW4uaAorKysgYi9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaApAQCAtODQs NiArODQsNyBAQCBleHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUgc2lnX2F0b21pY190IFByb2NE aWVQZW5kaW5nOwogZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBJZGxl SW5UcmFuc2FjdGlvblNlc3Npb25UaW1lb3V0UGVuZGluZzsKIGV4dGVybiBQR0RMTElNUE9SVCB2 b2xhdGlsZSBzaWdfYXRvbWljX3QgSWRsZVNlc3Npb25UaW1lb3V0UGVuZGluZzsKIGV4dGVybiBQ R0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgUHJvY1NpZ25hbEJhcnJpZXJQZW5kaW5n OworZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBMb2dNZW1vcnlDb250 ZXh0UGVuZGluZzsKIAogZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBD bGllbnRDb25uZWN0aW9uTG9zdDsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvbWVt bm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL21lbW5vZGVzLmgKaW5kZXggOTMzMWVmODBmZC4u ODdhODUwMWMzNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvbWVtbm9kZXMuaAorKysg Yi9zcmMvaW5jbHVkZS9ub2Rlcy9tZW1ub2Rlcy5oCkBAIC01Miw3ICs1Miw4IEBAIHR5cGVkZWYg c3RydWN0IE1lbW9yeUNvbnRleHRDb3VudGVycwogICovCiAKIHR5cGVkZWYgdm9pZCAoKk1lbW9y eVN0YXRzUHJpbnRGdW5jKSAoTWVtb3J5Q29udGV4dCBjb250ZXh0LCB2b2lkICpwYXNzdGhydSwK LQkJCQkJCQkJCSAgY29uc3QgY2hhciAqc3RhdHNfc3RyaW5nKTsKKwkJCQkJCQkJCSAgY29uc3Qg Y2hhciAqc3RhdHNfc3RyaW5nLAorCQkJCQkJCQkJICBib29sIGlzX2RzdF9zdGRlcnIpOwogCiB0 eXBlZGVmIHN0cnVjdCBNZW1vcnlDb250ZXh0TWV0aG9kcwogewpAQCAtNjYsNyArNjcsOCBAQCB0 eXBlZGVmIHN0cnVjdCBNZW1vcnlDb250ZXh0TWV0aG9kcwogCWJvb2wJCSgqaXNfZW1wdHkpIChN ZW1vcnlDb250ZXh0IGNvbnRleHQpOwogCXZvaWQJCSgqc3RhdHMpIChNZW1vcnlDb250ZXh0IGNv bnRleHQsCiAJCQkJCQkgIE1lbW9yeVN0YXRzUHJpbnRGdW5jIHByaW50ZnVuYywgdm9pZCAqcGFz c3RocnUsCi0JCQkJCQkgIE1lbW9yeUNvbnRleHRDb3VudGVycyAqdG90YWxzKTsKKwkJCQkJCSAg TWVtb3J5Q29udGV4dENvdW50ZXJzICp0b3RhbHMsCisJCQkJCQkgIGJvb2wgaXNfZHN0X3N0ZGVy cik7CiAjaWZkZWYgTUVNT1JZX0NPTlRFWFRfQ0hFQ0tJTkcKIAl2b2lkCQkoKmNoZWNrKSAoTWVt b3J5Q29udGV4dCBjb250ZXh0KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3Rv cmFnZS9wcm9jc2lnbmFsLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaAppbmRl eCA0YWU3ZGMzM2I4Li4xMTQ0NTM2MDMxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdl L3Byb2NzaWduYWwuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaApAQCAt MzQsNiArMzQsOCBAQCB0eXBlZGVmIGVudW0KIAlQUk9DU0lHX1BBUkFMTEVMX01FU1NBR0UsCS8q IG1lc3NhZ2UgZnJvbSBjb29wZXJhdGluZyBwYXJhbGxlbCBiYWNrZW5kICovCiAJUFJPQ1NJR19X QUxTTkRfSU5JVF9TVE9QUElORywJLyogYXNrIHdhbHNlbmRlcnMgdG8gcHJlcGFyZSBmb3Igc2h1 dGRvd24gICovCiAJUFJPQ1NJR19CQVJSSUVSLAkJCS8qIGdsb2JhbCBiYXJyaWVyIGludGVycnVw dCAgKi8KKwlQUk9DU0lHX0xPR19NRU1PUllfQ09OVEVYVCwJCS8qIGFzayBzcGVjaWZpZWQgYmFj a2VuZCB0byBsb2cgdGhlCisJCQkJCQkJbWVtb3J5IGNvbnRleHQgKi8KIAogCS8qIFJlY292ZXJ5 IGNvbmZsaWN0IHJlYXNvbnMgKi8KIAlQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0RBVEFCQVNF LApAQCAtNjksNiArNzEsNyBAQCBleHRlcm4gaW50CVNlbmRQcm9jU2lnbmFsKHBpZF90IHBpZCwg UHJvY1NpZ25hbFJlYXNvbiByZWFzb24sCiBleHRlcm4gdWludDY0IEVtaXRQcm9jU2lnbmFsQmFy cmllcihQcm9jU2lnbmFsQmFycmllclR5cGUgdHlwZSk7CiBleHRlcm4gdm9pZCBXYWl0Rm9yUHJv Y1NpZ25hbEJhcnJpZXIodWludDY0IGdlbmVyYXRpb24pOwogZXh0ZXJuIHZvaWQgUHJvY2Vzc1By b2NTaWduYWxCYXJyaWVyKHZvaWQpOworZXh0ZXJuIHZvaWQgUHJvY2Vzc0xvZ01lbW9yeUNvbnRl eHRJbnRlcnJ1cHQodm9pZCk7CiAKIGV4dGVybiB2b2lkIHByb2NzaWduYWxfc2lndXNyMV9oYW5k bGVyKFNJR05BTF9BUkdTKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvbWVtdXRp bHMuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL21lbXV0aWxzLmgKaW5kZXggMzZhYWU0ZTUxYy4uOTU5 NmFhN2YxNCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvbWVtdXRpbHMuaAorKysgYi9z cmMvaW5jbHVkZS91dGlscy9tZW11dGlscy5oCkBAIC00Niw2ICs0NiwxMiBAQAogI2RlZmluZSBB bGxvY0h1Z2VTaXplSXNWYWxpZChzaXplKQkoKFNpemUpIChzaXplKSA8PSBNYXhBbGxvY0h1Z2VT aXplKQogCiAKK3R5cGVkZWYgc3RydWN0IE1jeHRMb2dEYXRhCit7CisJLyogTWF4IG51bWJlciBv ZiBjaGlsZHJlbiB0byBwcmludCBwZXIgb25lIHBhcmVudCBjb250ZXh0ICovCisJaW50CQltYXhD aGlsZHJlblBlckNvbnRleHQ7Cit9IE1jeHRMb2dEYXRhOworCiAvKgogICogU3RhbmRhcmQgdG9w LWxldmVsIG1lbW9yeSBjb250ZXh0cy4KICAqCkBAIC02Myw2ICs2OSw4IEBAIGV4dGVybiBQR0RM TElNUE9SVCBNZW1vcnlDb250ZXh0IEN1clRyYW5zYWN0aW9uQ29udGV4dDsKIC8qIFRoaXMgaXMg YSB0cmFuc2llbnQgbGluayB0byB0aGUgYWN0aXZlIHBvcnRhbCdzIG1lbW9yeSBjb250ZXh0OiAq LwogZXh0ZXJuIFBHRExMSU1QT1JUIE1lbW9yeUNvbnRleHQgUG9ydGFsQ29udGV4dDsKIAorZXh0 ZXJuIE1jeHRMb2dEYXRhICptY3h0TG9nRGF0YTsKKwogLyogQmFja3dhcmRzIGNvbXBhdGliaWxp dHkgbWFjcm8gKi8KICNkZWZpbmUgTWVtb3J5Q29udGV4dFJlc2V0QW5kRGVsZXRlQ2hpbGRyZW4o Y3R4KSBNZW1vcnlDb250ZXh0UmVzZXQoY3R4KQogCkBAIC04NCw5ICs5MiwxMiBAQCBleHRlcm4g TWVtb3J5Q29udGV4dCBNZW1vcnlDb250ZXh0R2V0UGFyZW50KE1lbW9yeUNvbnRleHQgY29udGV4 dCk7CiBleHRlcm4gYm9vbCBNZW1vcnlDb250ZXh0SXNFbXB0eShNZW1vcnlDb250ZXh0IGNvbnRl eHQpOwogZXh0ZXJuIFNpemUgTWVtb3J5Q29udGV4dE1lbUFsbG9jYXRlZChNZW1vcnlDb250ZXh0 IGNvbnRleHQsIGJvb2wgcmVjdXJzZSk7CiBleHRlcm4gdm9pZCBNZW1vcnlDb250ZXh0U3RhdHMo TWVtb3J5Q29udGV4dCBjb250ZXh0KTsKLWV4dGVybiB2b2lkIE1lbW9yeUNvbnRleHRTdGF0c0Rl dGFpbChNZW1vcnlDb250ZXh0IGNvbnRleHQsIGludCBtYXhfY2hpbGRyZW4pOworZXh0ZXJuIHZv aWQgTWVtb3J5Q29udGV4dFN0YXRzRGV0YWlsKE1lbW9yeUNvbnRleHQgY29udGV4dCwgaW50IG1h eF9jaGlsZHJlbiwKKwkJCQkJCQkJCQlib29sIGlzX2RzdF9zdGRlcnIpOwogZXh0ZXJuIHZvaWQg TWVtb3J5Q29udGV4dEFsbG93SW5Dcml0aWNhbFNlY3Rpb24oTWVtb3J5Q29udGV4dCBjb250ZXh0 LAogCQkJCQkJCQkJCQkJYm9vbCBhbGxvdyk7CitleHRlcm4gdm9pZCBNY3h0TG9nU2htZW1Jbml0 KHZvaWQpOworZXh0ZXJuIERhdHVtIHBnX2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0cyhpbnQg cGlkLCBpbnQgbWF4X2NoaWxkcmVuKTsKIAogI2lmZGVmIE1FTU9SWV9DT05URVhUX0NIRUNLSU5H CiBleHRlcm4gdm9pZCBNZW1vcnlDb250ZXh0Q2hlY2soTWVtb3J5Q29udGV4dCBjb250ZXh0KTsK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9taXNjL3QvMDAyX3ByaW50X21lbW9y eV9jb250ZXh0X3ZhbGlkYXRpb24ucGwgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfbWlzYy90LzAw Ml9wcmludF9tZW1vcnlfY29udGV4dF92YWxpZGF0aW9uLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAuLjA1NmNlZDFkYTIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVz dC9tb2R1bGVzL3Rlc3RfbWlzYy90LzAwMl9wcmludF9tZW1vcnlfY29udGV4dF92YWxpZGF0aW9u LnBsCkBAIC0wLDAgKzEsOTAgQEAKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7Cit1c2UgUG9z dGdyZXNOb2RlOwordXNlIFRlc3RMaWI7Cit1c2UgVGVzdDo6TW9yZSB0ZXN0cyA9PiA0OworCisj IFNldCB1cCBub2RlIHdpdGggbG9nZ2luZyBjb2xsZWN0b3IKK215ICRub2RlID0gZ2V0X25ld19u b2RlKCdwcmltYXJ5Jyk7Ciskbm9kZS0+aW5pdCgpOworJG5vZGUtPmFwcGVuZF9jb25mKAorCSdw b3N0Z3Jlc3FsLmNvbmYnLCBxcXsKKwlsb2dnaW5nX2NvbGxlY3RvciA9IG9uCisJbGNfbWVzc2Fn ZXMgPSAnQycKKwl9KTsKKworJG5vZGUtPnN0YXJ0KCk7CisKKyMgVmVyaWZ5IHRoYXQgbG9nIG91 dHB1dCBnZXRzIHRvIHRoZSBmaWxlCiskbm9kZS0+cHNxbCgncG9zdGdyZXMnLCAnc2VsZWN0IHBn X2dldF9iYWNrZW5kX21lbW9yeV9jb250ZXh0cyhwZ19iYWNrZW5kX3BpZCgpLCAxMDApJyk7CisK KyMgbWlnaHQgbmVlZCB0byByZXRyeSBpZiBsb2dnaW5nIGNvbGxlY3RvciBwcm9jZXNzIGlzIHNs b3cuLi4KK215ICRtYXhfYXR0ZW1wdHMgPSAxODAgKiAxMDsKKworbXkgJGN1cnJlbnRfbG9nZmls ZXM7Citmb3IgKG15ICRhdHRlbXB0cyA9IDA7ICRhdHRlbXB0cyA8ICRtYXhfYXR0ZW1wdHM7ICRh dHRlbXB0cysrKQoreworCWV2YWwgeworCQkkY3VycmVudF9sb2dmaWxlcyA9IHNsdXJwX2ZpbGUo JG5vZGUtPmRhdGFfZGlyIC4gJy9jdXJyZW50X2xvZ2ZpbGVzJyk7CisJfTsKKwlsYXN0IHVubGVz cyAkQDsKKwl1c2xlZXAoMTAwXzAwMCk7Cit9CitkaWUgJEAgaWYgJEA7CisKK25vdGUgImN1cnJl bnRfbG9nZmlsZXMgPSAkY3VycmVudF9sb2dmaWxlcyI7CisKK2xpa2UoCisJJGN1cnJlbnRfbG9n ZmlsZXMsCisJcXJ8XnN0ZGVyciBsb2cvcG9zdGdyZXNxbC0uKmxvZyR8LAorCSdjdXJyZW50X2xv Z2ZpbGVzIGlzIHNhbmUnKTsKKworbXkgJGxmbmFtZSA9ICRjdXJyZW50X2xvZ2ZpbGVzOworJGxm bmFtZSA9fiBzL15zdGRlcnIgLy87CitjaG9tcCAkbGZuYW1lOworCitteSAkbG9nZmlsZTsKK215 ICRwcmludF9jb3VudDsKKworIyBWZXJpZnkgdGhhdCB0aGUgYmFja3RyYWNlcyBvZiB0aGUgcHJv Y2Vzc2VzIGFyZSBsb2dnZWQgaW50byBsb2dmaWxlLgorZm9yIChteSAkYXR0ZW1wdHMgPSAwOyAk YXR0ZW1wdHMgPCAkbWF4X2F0dGVtcHRzOyAkYXR0ZW1wdHMrKykKK3sKKwkkbG9nZmlsZSA9ICRu b2RlLT5kYXRhX2RpciAuICcvJyAuICRsZm5hbWU7CisJY2hvbXAgJGxvZ2ZpbGU7CisJcHJpbnQg ImZpbGUgaXMgJGxvZ2ZpbGUiOworCW9wZW4gbXkgJGZoLCAnPCcsICRsb2dmaWxlCisJICBvciBk aWUgIkNvdWxkIG5vdCBvcGVuICckbG9nZmlsZScgJCEiOworCXdoaWxlIChteSAkbGluZSA9IDwk Zmg+KQorCXsKKwkJY2hvbXAgJGxpbmU7CisJCWlmICgkbGluZSA9fiBtL0dyYW5kIHRvdGFsOiBc ZCsgYnl0ZXMgaW4gXGQrIGJsb2Nrcy8pCisJCXsKKwkJCSRwcmludF9jb3VudCsrOworCQl9CisJ fQorCWxhc3QgaWYgJHByaW50X2NvdW50ID09IDE7CisJdXNsZWVwKDEwMF8wMDApOworfQorCitp cygkcHJpbnRfY291bnQsIDEsICdmb3VuZCBleHBlY3RlZCBtZW1vcnkgY29udGV4dCBwcmludCBp biB0aGUgbG9nIGZpbGUnKTsKKworbXkgJG91dHB1dDsKKworJG5vZGUtPnBzcWwoJ3Bvc3RncmVz JywgJ3NlbGVjdCBwZ19nZXRfYmFja2VuZF9tZW1vcnlfY29udGV4dHMocGdfYmFja2VuZF9waWQo KSwgLTEpJywKKwkJc3RkZXJyID0+IFwkb3V0cHV0KTsKKworbGlrZSgKKwkkb3V0cHV0LAorCXFy L1RoZSBtYXhpbXVtIG51bWJlciBvZiBjaGlsZHJlbiBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBl cXVhbCB0byAwLywKKwknY2hlY2sgaWYgbWF4X2NoaWxkcmVuIGNoZWNrIGlzIHdvcmtpbmcnKTsK KworJG5vZGUtPnBzcWwoJ3Bvc3RncmVzJywKKwknc2VsZWN0IHBnX2dldF9iYWNrZW5kX21lbW9y eV9jb250ZXh0cyhwaWQsIDEwMCkgZnJvbSBwZ19zdGF0X2FjdGl2aXR5IHdoZXJlIGJhY2tlbmRf dHlwZSA9IFwnY2hlY2twb2ludGVyXCcnLAorCXN0ZGVyciA9PiBcJG91dHB1dCk7CisKK2xpa2Uo CisJJG91dHB1dCwKKwlxci9QSUQgXGQrIGlzIG5vdCBhIFBvc3RncmVTUUwgc2VydmVyIHByb2Nl c3MvLAorCSdjaGVjayBpZiBQSUQgY2hlY2sgaXMgd29ya2luZycpOworCiskbm9kZS0+c3RvcCgn ZmFzdCcpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dAppbmRleCA5YjEyY2MxMjJhLi41 ODQxZTVjYzEyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91 dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dApAQCAtMTMzMyw3ICsx MzMzLDcgQEAgcGdfYmFja2VuZF9tZW1vcnlfY29udGV4dHN8IFNFTEVDVCBwZ19nZXRfYmFja2Vu ZF9tZW1vcnlfY29udGV4dHMubmFtZSwKICAgICBwZ19nZXRfYmFja2VuZF9tZW1vcnlfY29udGV4 dHMuZnJlZV9ieXRlcywKICAgICBwZ19nZXRfYmFja2VuZF9tZW1vcnlfY29udGV4dHMuZnJlZV9j aHVua3MsCiAgICAgcGdfZ2V0X2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzLnVzZWRfYnl0ZXMKLSAg IEZST00gcGdfZ2V0X2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzKCkgcGdfZ2V0X2JhY2tlbmRfbWVt b3J5X2NvbnRleHRzKG5hbWUsIGlkZW50LCBwYXJlbnQsIGxldmVsLCB0b3RhbF9ieXRlcywgdG90 YWxfbmJsb2NrcywgZnJlZV9ieXRlcywgZnJlZV9jaHVua3MsIHVzZWRfYnl0ZXMpOworICAgRlJP TSBwZ19nZXRfYmFja2VuZF9tZW1vcnlfY29udGV4dHMoMCwgMCkgcGdfZ2V0X2JhY2tlbmRfbWVt b3J5X2NvbnRleHRzKG5hbWUsIGlkZW50LCBwYXJlbnQsIGxldmVsLCB0b3RhbF9ieXRlcywgdG90 YWxfbmJsb2NrcywgZnJlZV9ieXRlcywgZnJlZV9jaHVua3MsIHVzZWRfYnl0ZXMpOwogcGdfY29u ZmlnfCBTRUxFQ1QgcGdfY29uZmlnLm5hbWUsCiAgICAgcGdfY29uZmlnLnNldHRpbmcKICAgIEZS T00gcGdfY29uZmlnKCkgcGdfY29uZmlnKG5hbWUsIHNldHRpbmcpOwo= --=_8f1e9bb00d9f1dcc70250b5d649d092f--