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 1kUrI1-0004XC-Rf for pgsql-hackers@arkaria.postgresql.org; Tue, 20 Oct 2020 13:02:58 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1kUrI0-0005jI-Jb for pgsql-hackers@arkaria.postgresql.org; Tue, 20 Oct 2020 13:02:56 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kUrI0-0005jB-9n for pgsql-hackers@lists.postgresql.org; Tue, 20 Oct 2020 13:02:56 +0000 Received: from smtp-fw-9101.amazon.com ([207.171.184.25]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kUrHx-0001PZ-Nl for pgsql-hackers@postgresql.org; Tue, 20 Oct 2020 13:02:55 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1603198974; x=1634734974; h=to:cc:references:from:message-id:date:mime-version: in-reply-to:subject; bh=iSsSYy1l4kx3biKXRNHtKXAD+p1cRhYRsMuIbfdNhPM=; b=tr3gaeqFkEAu1OKJX2XCXHQnpU1ZlhENGNEQnoHzkyEHzr2hsDzawMSL nmhWbOG2HRT4C5RbzKVFOVRSS7STFnect0LHT0UzydYtx0dwKOWS/2h9N 0vyPC5KVrUHXU49a8xlPEo/Bik4C1kOfNX4t+6kZWFikxXE/nzsVH5Ec3 A=; X-Amazon-filename: v7-0002-Log-the-standby-recovery-conflict-waits.patch X-IronPort-AV: E=Sophos;i="5.77,397,1596499200"; d="scan'208";a="78191203" Subject: Re: Add Information during standby recovery conflicts Received: from sea32-co-svc-lb4-vlan3.sea.corp.amazon.com (HELO email-inbound-relay-2c-579b7f5b.us-west-2.amazon.com) ([10.47.23.38]) by smtp-border-fw-out-9101.sea19.amazon.com with ESMTP; 20 Oct 2020 13:02:39 +0000 Received: from EX13D03EUC003.ant.amazon.com (pdx4-ws-svc-p6-lb7-vlan3.pdx.amazon.com [10.170.41.166]) by email-inbound-relay-2c-579b7f5b.us-west-2.amazon.com (Postfix) with ESMTPS id BDCF5A2820; Tue, 20 Oct 2020 12:58:17 +0000 (UTC) Received: from 38f9d36c4abb.ant.amazon.com (10.43.162.35) by EX13D03EUC003.ant.amazon.com (10.43.164.192) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 20 Oct 2020 12:58:14 +0000 To: Masahiko Sawada , Kyotaro Horiguchi CC: Alvaro Herrera , PostgreSQL-development References: <20201015.121338.832998229451118046.horikyota.ntt@gmail.com> <20201015.145210.622238854316424234.horikyota.ntt@gmail.com> From: "Drouvot, Bertrand" Message-ID: Date: Tue, 20 Oct 2020 14:58:10 +0200 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:78.0) Gecko/20100101 Thunderbird/78.3.3 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/mixed; boundary="------------FE0D168845D7586B4E59D1E6" Content-Language: en-US X-Originating-IP: [10.43.162.35] X-ClientProxiedBy: EX13D27UWA003.ant.amazon.com (10.43.160.56) To EX13D03EUC003.ant.amazon.com (10.43.164.192) List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --------------FE0D168845D7586B4E59D1E6 Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 8bit Hi, On 10/15/20 9:15 AM, Masahiko Sawada wrote: > CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you can confirm the sender and know the content is safe. > > > > On Thu, 15 Oct 2020 at 14:52, Kyotaro Horiguchi wrote: >> At Thu, 15 Oct 2020 14:28:57 +0900, Masahiko Sawada wrote in >>>> ereport(..(errmsg("%s", _("hogehoge")))) results in >>>> fprintf((translated("%s")), translate("hogehoge")). >>>> >>>> So your change (errmsg("%s", gettext_noop("hogehoge")) results in >>>> >>>> fprintf((translated("%s")), DONT_translate("hogehoge")). >>>> >>>> which leads to a translation problem. >>>> >>>> (errmsg(gettext_noop("hogehoge")) >>> This seems equivalent to (errmsg("hogehoge")), right? >> Yes and no. However eventually the two works the same way, >> "(errmsg(gettext_noop("hogehoge"))" is a shorthand of >> >> 1: char *msg = gettext_noop("hogehoge"); >> ... >> 2: .. (errmsg(msg)); >> >> That is, the line 1 only registers a message id "hogehoge" and doesn't >> translate. The line 2 tries to translate the content of msg and it >> finds the translation for the message id "hogehoge". > Understood. > >>> I think I could understand translation stuff. Given we only report the >>> const string returned from get_recovery_conflict_desc() without >>> placeholders, the patch needs to use errmsg_internal() instead while >>> not changing _() part. (errmsg(get_recovery_conflict_desc())) is not >>> good (warned by -Wformat-security). >> Ah, right. we get a complain if no value parameters added. We can >> silence it by adding a dummy parameter to errmsg, but I'm not sure >> which is preferable. > Okay, I'm going to use errmsg_internal() for now until a better idea comes. > > I've attached the updated patch that fixed the translation part. Thanks for reviewing and helping on this patch! The patch tester bot is currently failing due to: "proc.c:1290:5: error: ‘standbyWaitStart’ may be used uninitialized in this function [-Werror=maybe-uninitialized]" I've attached a new version with the minor change to fix it. Bertrand --------------FE0D168845D7586B4E59D1E6 Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="v7-0002-Log-the-standby-recovery-conflict-waits.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v7-0002-Log-the-standby-recovery-conflict-waits.patch" IGRvYy9zcmMvc2dtbC9jb25maWcuc2dtbCAgICAgICAgICAgICAgICAgICAgICB8ICAyMiAr KysrCiBzcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYyAgICAgICAgICAgfCAg MTMgKysrCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMgICAgICAgICAgICAg fCAxNTAgKysrKysrKysrKysrKysrKysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2Uv bG1nci9wcm9jLmMgICAgICAgICAgICAgICB8ICAyNiArKysrKwogc3JjL2JhY2tlbmQvdXRp bHMvbWlzYy9ndWMuYyAgICAgICAgICAgICAgICAgIHwgIDEwICstCiBzcmMvYmFja2VuZC91 dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgfCAgIDIgKwogc3JjL2luY2x1ZGUv c3RvcmFnZS9wcm9jc2lnbmFsLmggICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRl L3N0b3JhZ2Uvc3RhbmRieS5oICAgICAgICAgICAgICAgICB8ICAgMiArCiA4IGZpbGVzIGNo YW5nZWQsIDIwNSBpbnNlcnRpb25zKCspLCAyMSBkZWxldGlvbnMoLSkKZGlmZiAtLWdpdCBh L2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbCBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbApp bmRleCBlZTkxNDc0MGNjLi5hNGE0M2RmZjgzIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv Y29uZmlnLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCkBAIC02ODM5LDYg KzY4MzksMjggQEAgbG9nX2xpbmVfcHJlZml4ID0gJyVtIFslcF0gJXEldUAlZC8lYSAnCiAg ICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgICA8dmFybGlz dGVudHJ5IGlkPSJndWMtbG9nLXJlY292ZXJ5LWNvbmZsaWN0LXdhaXRzIiB4cmVmbGFiZWw9 ImxvZ19yZWNvdmVyeV9jb25mbGljdF93YWl0cyI+CisgICAgICA8dGVybT48dmFybmFtZT5s b2dfcmVjb3ZlcnlfY29uZmxpY3Rfd2FpdHM8L3Zhcm5hbWU+ICg8dHlwZT5ib29sZWFuPC90 eXBlPikKKyAgICAgIDxpbmRleHRlcm0+CisgICAgICAgPHByaW1hcnk+PHZhcm5hbWU+bG9n X3JlY292ZXJ5X2NvbmZsaWN0X3dhaXRzPC92YXJuYW1lPiBjb25maWd1cmF0aW9uIHBhcmFt ZXRlcjwvcHJpbWFyeT4KKyAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAgPC90ZXJtPgorICAg ICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBDb250cm9scyB3aGV0aGVy IGEgbG9nIG1lc3NhZ2UgaXMgcHJvZHVjZWQgd2hlbiB0aGUgc3RhcnR1cCBwcm9jZXNzCisg ICAgICAgIGlzIHdhaXRpbmcgZm9yIHJlY292ZXJ5IGNvbmZsaWN0cyBsb25nZXIgdGhhbgor ICAgICAgICA8dmFybmFtZT5kZWFkbG9ja190aW1lb3V0PC92YXJuYW1lPi4gIFRoaXMgaXMg dXNlZnVsIGluIGRldGVybWluaW5nIGlmCisgICAgICAgIHJlY292ZXJ5IGNvbmZsaWN0cyBw cmV2ZW50cyB0aGUgcmVjb3ZlcnkgZnJvbSBhcHBseWluZyBXQUwuCisgICAgICAgPC9wYXJh PgorCisgICAgICAgPHBhcmE+CisgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBvbmx5IGJl IHNldCBpbiB0aGUgPGZpbGVuYW1lPnBvc3RncmVzcWwuY29uZjwvZmlsZW5hbWU+CisgICAg ICAgIGZpbGUgb3Igb24gdGhlIHNlcnZlciBjb21tYW5kIGxpbmUuCisgICAgICAgIFRoZSBk ZWZhdWx0IGlzIDxsaXRlcmFsPm9mZjwvbGl0ZXJhbD4uCisgICAgICAgPC9wYXJhPgorICAg ICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgPHZhcmxpc3Rl bnRyeSBpZD0iZ3VjLWxvZy1wYXJhbWV0ZXItbWF4LWxlbmd0aCIgeHJlZmxhYmVsPSJsb2df cGFyYW1ldGVyX21heF9sZW5ndGgiPgogICAgICAgPHRlcm0+PHZhcm5hbWU+bG9nX3BhcmFt ZXRlcl9tYXhfbGVuZ3RoPC92YXJuYW1lPiAoPHR5cGU+aW50ZWdlcjwvdHlwZT4pCiAgICAg ICA8aW5kZXh0ZXJtPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIv YnVmbWdyLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYwppbmRleCBl NTQ5ZmExZDMwLi42NDhjZWQzM2ViIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdl L2J1ZmZlci9idWZtZ3IuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZt Z3IuYwpAQCAtMzgwOCw2ICszODA4LDggQEAgTG9ja0J1ZmZlckZvckNsZWFudXAoQnVmZmVy IGJ1ZmZlcikKIHsKIAlCdWZmZXJEZXNjICpidWZIZHI7CiAJY2hhcgkgICAqbmV3X3N0YXR1 cyA9IE5VTEw7CisJVGltZXN0YW1wVHogd2FpdFN0YXJ0ID0gMDsKKwlib29sCQlsb2dnZWRf cmVjb3ZlcnlfY29uZmxpY3QgPSBmYWxzZTsKIAogCUFzc2VydChCdWZmZXJJc1Bpbm5lZChi dWZmZXIpKTsKIAlBc3NlcnQoUGluQ291bnRXYWl0QnVmID09IE5VTEwpOwpAQCAtMzgyOSw2 ICszODMxLDkgQEAgTG9ja0J1ZmZlckZvckNsZWFudXAoQnVmZmVyIGJ1ZmZlcikKIAogCWJ1 ZkhkciA9IEdldEJ1ZmZlckRlc2NyaXB0b3IoYnVmZmVyIC0gMSk7CiAKKwlpZiAobG9nX3Jl Y292ZXJ5X2NvbmZsaWN0X3dhaXRzKQorCQl3YWl0U3RhcnQgPSBHZXRDdXJyZW50VGltZXN0 YW1wKCk7CisKIAlmb3IgKDs7KQogCXsKIAkJdWludDMyCQlidWZfc3RhdGU7CkBAIC0zODgx LDYgKzM4ODYsMTQgQEAgTG9ja0J1ZmZlckZvckNsZWFudXAoQnVmZmVyIGJ1ZmZlcikKIAkJ CQluZXdfc3RhdHVzW2xlbl0gPSAnXDAnOyAvKiB0cnVuY2F0ZSBvZmYgIiB3YWl0aW5nIiAq LwogCQkJfQogCisJCQlpZiAobG9nX3JlY292ZXJ5X2NvbmZsaWN0X3dhaXRzICYmICFsb2dn ZWRfcmVjb3ZlcnlfY29uZmxpY3QgJiYKKwkJCQlUaW1lc3RhbXBEaWZmZXJlbmNlRXhjZWVk cyh3YWl0U3RhcnQsIEdldEN1cnJlbnRUaW1lc3RhbXAoKSwKKwkJCQkJCQkJCQkgICBEZWFk bG9ja1RpbWVvdXQpKQorCQkJeworCQkJCUxvZ1JlY292ZXJ5Q29uZmxpY3QoUFJPQ1NJR19S RUNPVkVSWV9DT05GTElDVF9CVUZGRVJQSU4sIE5VTEwpOworCQkJCWxvZ2dlZF9yZWNvdmVy eV9jb25mbGljdCA9IHRydWU7CisJCQl9CisKIAkJCS8qIFB1Ymxpc2ggdGhlIGJ1ZmlkIHRo YXQgU3RhcnR1cCBwcm9jZXNzIHdhaXRzIG9uICovCiAJCQlTZXRTdGFydHVwQnVmZmVyUGlu V2FpdEJ1ZklkKGJ1ZmZlciAtIDEpOwogCQkJLyogU2V0IGFsYXJtIGFuZCB0aGVuIHdhaXQg dG8gYmUgc2lnbmFsZWQgYnkgVW5waW5CdWZmZXIoKSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMv c3RhbmRieS5jCmluZGV4IDUyYjI4MDlkYWMuLjU4MjA3MTM1NjYgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYworKysgYi9zcmMvYmFja2VuZC9zdG9y YWdlL2lwYy9zdGFuZGJ5LmMKQEAgLTM5LDYgKzM5LDcgQEAKIGludAkJCXZhY3V1bV9kZWZl cl9jbGVhbnVwX2FnZTsKIGludAkJCW1heF9zdGFuZGJ5X2FyY2hpdmVfZGVsYXkgPSAzMCAq IDEwMDA7CiBpbnQJCQltYXhfc3RhbmRieV9zdHJlYW1pbmdfZGVsYXkgPSAzMCAqIDEwMDA7 Citib29sCQlsb2dfcmVjb3ZlcnlfY29uZmxpY3Rfd2FpdHMgPSBmYWxzZTsKIAogc3RhdGlj IEhUQUIgKlJlY292ZXJ5TG9ja0xpc3RzOwogCkBAIC00OSw2ICs1MCw3IEBAIHN0YXRpYyB2 b2lkIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFZpcnR1YWxYSURzKFZpcnR1YWxUcmFu c2FjdGlvbklkICp3YWl0bGlzCiBzdGF0aWMgdm9pZCBTZW5kUmVjb3ZlcnlDb25mbGljdFdp dGhCdWZmZXJQaW4oUHJvY1NpZ25hbFJlYXNvbiByZWFzb24pOwogc3RhdGljIFhMb2dSZWNQ dHIgTG9nQ3VycmVudFJ1bm5pbmdYYWN0cyhSdW5uaW5nVHJhbnNhY3Rpb25zIEN1cnJSdW5u aW5nWGFjdHMpOwogc3RhdGljIHZvaWQgTG9nQWNjZXNzRXhjbHVzaXZlTG9ja3MoaW50IG5s b2NrcywgeGxfc3RhbmRieV9sb2NrICpsb2Nrcyk7CitzdGF0aWMgY29uc3QgY2hhciAqZ2V0 X3JlY292ZXJ5X2NvbmZsaWN0X2Rlc2MoUHJvY1NpZ25hbFJlYXNvbiByZWFzb24pOwogCiAv KgogICogS2VlcCB0cmFjayBvZiBhbGwgdGhlIGxvY2tzIG93bmVkIGJ5IGEgZ2l2ZW4gdHJh bnNhY3Rpb24uCkBAIC0yMTUsMTUgKzIxNyw2MCBAQCBXYWl0RXhjZWVkc01heFN0YW5kYnlE ZWxheSh1aW50MzIgd2FpdF9ldmVudF9pbmZvKQogCXJldHVybiBmYWxzZTsKIH0KIAorLyoK KyAqIExvZyB0aGUgcmVjb3ZlcnkgY29uZmxpY3QuCisgKgorICogVGhpcyBmdW5jdGlvbiBh bHNvIHJlcG9ydHMgdGhlIGRldGFpbHMgYWJvdXQgdGhlIGNvbmZsaWN0aW5nIHByb2Nlc3Mg aWRzCisgKiBpZiAqd2FpdGxpc3QgaXMgbm90IE5VTEwuCisgKi8KK3ZvaWQKK0xvZ1JlY292 ZXJ5Q29uZmxpY3QoUHJvY1NpZ25hbFJlYXNvbiByZWFzb24sIFZpcnR1YWxUcmFuc2FjdGlv bklkICp3YWl0bGlzdCkKK3sKKwlpZiAod2FpdGxpc3QpCisJeworCQlWaXJ0dWFsVHJhbnNh Y3Rpb25JZCAqdnhpZHM7CisJCVN0cmluZ0luZm9EYXRhIGJ1ZjsKKwkJaW50CW5wcm9jcyA9 IDA7CisKKwkJaW5pdFN0cmluZ0luZm8oJmJ1Zik7CisKKwkJLyogY29uc3RydWN0IGEgc3Ry aW5nIG9mIGxpc3Qgb2YgdGhlIGNvbmZsaWN0ZWQgdmlydHVhbCB0cmFuc2FjdGlvbnMgKi8K KwkJdnhpZHMgPSB3YWl0bGlzdDsKKwkJd2hpbGUgKFZpcnR1YWxUcmFuc2FjdGlvbklkSXNW YWxpZCgqdnhpZHMpKQorCQl7CisJCQlQR1BST0MgKnByb2MgPSBCYWNrZW5kSWRHZXRQcm9j KHZ4aWRzLT5iYWNrZW5kSWQpOworCisJCQlpZiAobnByb2NzID09IDApCisJCQkJYXBwZW5k U3RyaW5nSW5mbygmYnVmLCAiJWQiLCBwcm9jLT5waWQpOworCQkJZWxzZQorCQkJCWFwcGVu ZFN0cmluZ0luZm8oJmJ1ZiwgIiwgJWQiLCBwcm9jLT5waWQpOworCisJCQlucHJvY3MrKzsK KwkJCXZ4aWRzKys7CisJCX0KKworCQllcmVwb3J0KExPRywKKwkJCQkoZXJybXNnX2ludGVy bmFsKCIlcyIsIGdldF9yZWNvdmVyeV9jb25mbGljdF9kZXNjKHJlYXNvbikpLAorCQkJCSAo ZXJyZGV0YWlsX2xvZ19wbHVyYWwoIkNvbmZsaWN0aW5nIHByb2Nlc3M6ICVzLiIsCisJCQkJ CQkJCQkgICAiQ29uZmxpY3RpbmcgcHJvY2Vzc2VzOiAlcy4iLAorCQkJCQkJCQkJICAgbnBy b2NzLCBidWYuZGF0YSkpKSk7CisJCXBmcmVlKGJ1Zi5kYXRhKTsKKwl9CisJZWxzZQorCQll cmVwb3J0KExPRywKKwkJCQkoZXJybXNnX2ludGVybmFsKCIlcyIsIGdldF9yZWNvdmVyeV9j b25mbGljdF9kZXNjKHJlYXNvbikpKSk7Cit9CisKIC8qCiAgKiBUaGlzIGlzIHRoZSBtYWlu IGV4ZWN1dGlvbmVyIGZvciBhbnkgcXVlcnkgYmFja2VuZCB0aGF0IGNvbmZsaWN0cyB3aXRo CiAgKiByZWNvdmVyeSBwcm9jZXNzaW5nLiBKdWRnZW1lbnQgaGFzIGFscmVhZHkgYmVlbiBw YXNzZWQgb24gaXQgd2l0aGluCiAgKiBhIHNwZWNpZmljIHJtZ3IuIEhlcmUgd2UganVzdCBp c3N1ZSB0aGUgb3JkZXJzIHRvIHRoZSBwcm9jcy4gVGhlIHByb2NzCiAgKiB0aGVuIHRocm93 IHRoZSByZXF1aXJlZCBlcnJvciBhcyBpbnN0cnVjdGVkLgogICoKLSAqIElmIHJlcG9ydF93 YWl0aW5nIGlzIHRydWUsICJ3YWl0aW5nIiBpcyByZXBvcnRlZCBpbiBQUyBkaXNwbGF5IGlm IG5lY2Vzc2FyeS4KLSAqIElmIHRoZSBjYWxsZXIgaGFzIGFscmVhZHkgcmVwb3J0ZWQgdGhh dCwgcmVwb3J0X3dhaXRpbmcgc2hvdWxkIGJlIGZhbHNlLgotICogT3RoZXJ3aXNlLCAid2Fp dGluZyIgaXMgcmVwb3J0ZWQgdHdpY2UgdW5leHBlY3RlZGx5LgorICogSWYgcmVwb3J0X3dh aXRpbmcgaXMgdHJ1ZSwgIndhaXRpbmciIGlzIHJlcG9ydGVkIGluIFBTIGRpc3BsYXkgYW5k IGxvZworICogdGhlIHdhaXRzIGZvciB0aGUgcmVjb3ZlcnkgY29uZmxpY3QgaWYgbmVjZXNz YXJ5LiAgSWYgdGhlIGNhbGxlciBoYXMgYWxyZWFkeQorICogcmVwb3J0ZWQgdGhhdCwgcmVw b3J0X3dhaXRpbmcgc2hvdWxkIGJlIGZhbHNlLiAgT3RoZXJ3aXNlLCBib3RoIGFyZSByZXBv cnRlZAorICogdHdpY2UgdW5leHBlY3RlZGx5LgogICovCiBzdGF0aWMgdm9pZAogUmVzb2x2 ZVJlY292ZXJ5Q29uZmxpY3RXaXRoVmlydHVhbFhJRHMoVmlydHVhbFRyYW5zYWN0aW9uSWQg KndhaXRsaXN0LApAQCAtMjMyLDYgKzI3OSw3IEBAIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0 V2l0aFZpcnR1YWxYSURzKFZpcnR1YWxUcmFuc2FjdGlvbklkICp3YWl0bGlzdCwKIHsKIAlU aW1lc3RhbXBUeiB3YWl0U3RhcnQgPSAwOwogCWNoYXIJICAgKm5ld19zdGF0dXM7CisJYm9v bAkJbG9nZ2VkID0gZmFsc2U7CiAKIAkvKiBGYXN0IGV4aXQsIHRvIGF2b2lkIGEga2VybmVs IGNhbGwgaWYgdGhlcmUncyBubyB3b3JrIHRvIGJlIGRvbmUuICovCiAJaWYgKCFWaXJ0dWFs VHJhbnNhY3Rpb25JZElzVmFsaWQoKndhaXRsaXN0KSkKQEAgLTI0OSwxMyArMjk3LDI1IEBA IFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFZpcnR1YWxYSURzKFZpcnR1YWxUcmFuc2Fj dGlvbklkICp3YWl0bGlzdCwKIAkJLyogd2FpdCB1bnRpbCB0aGUgdmlydHVhbCB4aWQgaXMg Z29uZSAqLwogCQl3aGlsZSAoIVZpcnR1YWxYYWN0TG9jaygqd2FpdGxpc3QsIGZhbHNlKSkK IAkJeworCQkJVGltZXN0YW1wVHogdHM7CisKKwkJCWlmIChyZXBvcnRfd2FpdGluZykKKwkJ CQl0cyA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsKKworCQkJLyogTG9nIHRoZSByZWNvdmVy eSBjb25mbGljdCAqLworCQkJaWYgKGxvZ19yZWNvdmVyeV9jb25mbGljdF93YWl0cyAmJiAh bG9nZ2VkICYmIHJlcG9ydF93YWl0aW5nICYmCisJCQkJVGltZXN0YW1wRGlmZmVyZW5jZUV4 Y2VlZHMod2FpdFN0YXJ0LCB0cywgRGVhZGxvY2tUaW1lb3V0KSkKKwkJCXsKKwkJCQlMb2dS ZWNvdmVyeUNvbmZsaWN0KHJlYXNvbiwgd2FpdGxpc3QpOworCQkJCWxvZ2dlZCA9IHRydWU7 CisJCQl9CisKIAkJCS8qCiAJCQkgKiBSZXBvcnQgdmlhIHBzIGlmIHdlIGhhdmUgYmVlbiB3 YWl0aW5nIGZvciBtb3JlIHRoYW4gNTAwIG1zZWMKIAkJCSAqIChzaG91bGQgdGhhdCBiZSBj b25maWd1cmFibGU/KQogCQkJICovCiAJCQlpZiAodXBkYXRlX3Byb2Nlc3NfdGl0bGUgJiYg bmV3X3N0YXR1cyA9PSBOVUxMICYmIHJlcG9ydF93YWl0aW5nICYmCi0JCQkJVGltZXN0YW1w RGlmZmVyZW5jZUV4Y2VlZHMod2FpdFN0YXJ0LCBHZXRDdXJyZW50VGltZXN0YW1wKCksCi0J CQkJCQkJCQkJICAgNTAwKSkKKwkJCQlUaW1lc3RhbXBEaWZmZXJlbmNlRXhjZWVkcyh3YWl0 U3RhcnQsIHRzLCA1MDApKQogCQkJewogCQkJCWNvbnN0IGNoYXIgKm9sZF9zdGF0dXM7CiAJ CQkJaW50CQkJbGVuOwpAQCAtNDA4LDcgKzQ2OCwzNSBAQCBSZXNvbHZlUmVjb3ZlcnlDb25m bGljdFdpdGhMb2NrKExPQ0tUQUcgbG9ja3RhZykKIAogCWx0aW1lID0gR2V0U3RhbmRieUxp bWl0VGltZSgpOwogCi0JaWYgKEdldEN1cnJlbnRUaW1lc3RhbXAoKSA+PSBsdGltZSkKKwlp ZiAobHRpbWUgPT0gMCB8fCBHZXRDdXJyZW50VGltZXN0YW1wKCkgPCBsdGltZSkKKwl7CisJ CUVuYWJsZVRpbWVvdXRQYXJhbXMgdGltZW91dHNbMl07CisJCWludCBjbnQgPSAwOworCisJ CS8qCisJCSAqIFdhaXQgKG9yIHdhaXQgYWdhaW4pIHVudGlsIGx0aW1lCisJCSAqLworCQlp ZiAobHRpbWUgIT0gMCkKKwkJeworCQkJdGltZW91dHNbY250XS5pZCA9IFNUQU5EQllfTE9D S19USU1FT1VUOworCQkJdGltZW91dHNbY250XS50eXBlID0gVE1QQVJBTV9BVDsKKwkJCXRp bWVvdXRzW2NudF0uZmluX3RpbWUgPSBsdGltZTsKKwkJCWNudCsrOworCQl9CisKKwkJLyog QWxzbywgc2V0IGRlYWRsb2NrIHRpbWVvdXQgZm9yIGxvZ2dpbmcgcHVycG9zZSBpZiBuZWNl c3NhcnkgKi8KKwkJaWYgKGxvZ19yZWNvdmVyeV9jb25mbGljdF93YWl0cykKKwkJeworCQkJ dGltZW91dHNbY250XS5pZCA9IFNUQU5EQllfVElNRU9VVDsKKwkJCXRpbWVvdXRzW2NudF0u dHlwZSA9IFRNUEFSQU1fQUZURVI7CisJCQl0aW1lb3V0c1tjbnRdLmRlbGF5X21zID0gRGVh ZGxvY2tUaW1lb3V0OworCQkJY250Kys7CisJCX0KKworCQlpZiAoY250ID4gMCkKKwkJCWVu YWJsZV90aW1lb3V0cyh0aW1lb3V0cywgY250KTsKKwl9CisJZWxzZQogCXsKIAkJLyoKIAkJ ICogV2UncmUgYWxyZWFkeSBiZWhpbmQsIHNvIGNsZWFyIGEgcGF0aCBhcyBxdWlja2x5IGFz IHBvc3NpYmxlLgpAQCAtNDE5LDI2ICs1MDcsMTUgQEAgUmVzb2x2ZVJlY292ZXJ5Q29uZmxp Y3RXaXRoTG9jayhMT0NLVEFHIGxvY2t0YWcpCiAKIAkJLyoKIAkJICogUHJldmVudCBSZXNv bHZlUmVjb3ZlcnlDb25mbGljdFdpdGhWaXJ0dWFsWElEcygpIGZyb20gcmVwb3J0aW5nCi0J CSAqICJ3YWl0aW5nIiBpbiBQUyBkaXNwbGF5IGJ5IGRpc2FibGluZyBpdHMgYXJndW1lbnQg cmVwb3J0X3dhaXRpbmcKLQkJICogYmVjYXVzZSB0aGUgY2FsbGVyLCBXYWl0T25Mb2NrKCks IGhhcyBhbHJlYWR5IHJlcG9ydGVkIHRoYXQuCisJCSAqICJ3YWl0aW5nIiBpbiBQUyBkaXNw bGF5IGFuZCBsb2dnaW5nIHJlY292ZXJ5IGNvbmZsaWN0IGJ5IGRpc2FibGluZworCQkgKiBp dHMgYXJndW1lbnQgcmVwb3J0X3dhaXRpbmcgYmVjYXVzZSB0aGUgY2FsbGVycyBoYXZlIGFs cmVhZHkgcmVwb3J0ZWQKKwkJICogdGhhdC4KIAkJICovCiAJCVJlc29sdmVSZWNvdmVyeUNv bmZsaWN0V2l0aFZpcnR1YWxYSURzKGJhY2tlbmRzLAogCQkJCQkJCQkJCQkgICBQUk9DU0lH X1JFQ09WRVJZX0NPTkZMSUNUX0xPQ0ssCiAJCQkJCQkJCQkJCSAgIFBHX1dBSVRfTE9DSyB8 IGxvY2t0YWcubG9ja3RhZ190eXBlLAogCQkJCQkJCQkJCQkgICBmYWxzZSk7CiAJfQotCWVs c2UKLQl7Ci0JCS8qCi0JCSAqIFdhaXQgKG9yIHdhaXQgYWdhaW4pIHVudGlsIGx0aW1lCi0J CSAqLwotCQlFbmFibGVUaW1lb3V0UGFyYW1zIHRpbWVvdXRzWzFdOwotCi0JCXRpbWVvdXRz WzBdLmlkID0gU1RBTkRCWV9MT0NLX1RJTUVPVVQ7Ci0JCXRpbWVvdXRzWzBdLnR5cGUgPSBU TVBBUkFNX0FUOwotCQl0aW1lb3V0c1swXS5maW5fdGltZSA9IGx0aW1lOwotCQllbmFibGVf dGltZW91dHModGltZW91dHMsIDEpOwotCX0KIAogCS8qIFdhaXQgdG8gYmUgc2lnbmFsZWQg YnkgdGhlIHJlbGVhc2Ugb2YgdGhlIFJlbGF0aW9uIExvY2sgKi8KIAlQcm9jV2FpdEZvclNp Z25hbChQR19XQUlUX0xPQ0sgfCBsb2NrdGFnLmxvY2t0YWdfdHlwZSk7CkBAIC0xMTE2LDMg KzExOTMsMzYgQEAgTG9nU3RhbmRieUludmFsaWRhdGlvbnMoaW50IG5tc2dzLCBTaGFyZWRJ bnZhbGlkYXRpb25NZXNzYWdlICptc2dzLAogCQkJCQkgbm1zZ3MgKiBzaXplb2YoU2hhcmVk SW52YWxpZGF0aW9uTWVzc2FnZSkpOwogCVhMb2dJbnNlcnQoUk1fU1RBTkRCWV9JRCwgWExP R19JTlZBTElEQVRJT05TKTsKIH0KKworLyogUmV0dXJuIHRoZSBkZXNjcmlwdGlvbiBvZiBy ZWNvdmVyeSBjb25mbGljdCAqLworc3RhdGljIGNvbnN0IGNoYXIgKgorZ2V0X3JlY292ZXJ5 X2NvbmZsaWN0X2Rlc2MoUHJvY1NpZ25hbFJlYXNvbiByZWFzb24pCit7CisJY29uc3QgY2hh ciAqcmVhc29uRGVzYyA9IF8oInVua25vd24gcmVhc29uIik7CisKKwlzd2l0Y2ggKHJlYXNv bikKKwl7CisJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9CVUZGRVJQSU46CisJ CQlyZWFzb25EZXNjID0gXygicmVjb3ZlcnkgaXMgd2FpdGluZyByZWNvdmVyeSBjb25mbGlj dCBvbiBidWZmZXIgcGluIik7CisJCQlicmVhazsKKwkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZ X0NPTkZMSUNUX0xPQ0s6CisJCQlyZWFzb25EZXNjID0gXygicmVjb3ZlcnkgaXMgd2FpdGlu ZyByZWNvdmVyeSBjb25mbGljdCBvbiBsb2NrIik7CisJCQlicmVhazsKKwkJY2FzZSBQUk9D U0lHX1JFQ09WRVJZX0NPTkZMSUNUX1RBQkxFU1BBQ0U6CisJCQlyZWFzb25EZXNjID0gXygi cmVjb3ZlcnkgaXMgd2FpdGluZyByZWNvdmVyeSBjb25mbGljdCBvbiB0YWJsZXNwYWNlIik7 CisJCQlicmVhazsKKwkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBTSE9U OgorCQkJcmVhc29uRGVzYyA9IF8oInJlY292ZXJ5IGlzIHdhaXRpbmcgcmVjb3ZlcnkgY29u ZmxpY3Qgb24gc25hcHNob3QiKTsKKwkJCWJyZWFrOworCQljYXNlIFBST0NTSUdfUkVDT1ZF UllfQ09ORkxJQ1RfU1RBUlRVUF9ERUFETE9DSzoKKwkJCXJlYXNvbkRlc2MgPSBfKCJyZWNv dmVyeSBpcyB3YWl0aW5nIHJlY292ZXJ5IGNvbmZsaWN0IG9uIGJ1ZmZlciBkZWFkbG9jayIp OworCQkJYnJlYWs7CisJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9EQVRBQkFT RToKKwkJCXJlYXNvbkRlc2MgPSBfKCJyZWNvdmVyeSBpcyB3YWl0aW5nIHJlY292ZXJ5IGNv bmZsaWN0IG9uIGRhdGFiYXNlIik7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWJyZWFr OworCX0KKworCXJldHVybiByZWFzb25EZXNjOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvc3RvcmFnZS9sbWdyL3Byb2MuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9j LmMKaW5kZXggODg1NjZiZDlmYS4uYTgxY2FiMzRhNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvc3RvcmFnZS9sbWdyL3Byb2MuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3Iv cHJvYy5jCkBAIC0xMDY4LDcgKzEwNjgsOSBAQCBQcm9jU2xlZXAoTE9DQUxMT0NLICpsb2Nh bGxvY2ssIExvY2tNZXRob2QgbG9ja01ldGhvZFRhYmxlKQogCVByb2NXYWl0U3RhdHVzIG15 V2FpdFN0YXR1czsKIAlQR1BST0MJICAgKnByb2M7CiAJUEdQUk9DCSAgICpsZWFkZXIgPSBN eVByb2MtPmxvY2tHcm91cExlYWRlcjsKKwlUaW1lc3RhbXBUeiBzdGFuZGJ5V2FpdFN0YXJ0 ID0gMDsKIAlpbnQJCQlpOworCWJvb2wJCWxvZ2dlZF9yZWNvdmVyeV9jb25mbGljdCA9IGZh bHNlOwogCiAJLyoKIAkgKiBJZiBncm91cCBsb2NraW5nIGlzIGluIHVzZSwgbG9ja3MgaGVs ZCBieSBtZW1iZXJzIG9mIG15IGxvY2tpbmcgZ3JvdXAKQEAgLTEyNjAsNiArMTI2Miw4IEBA IFByb2NTbGVlcChMT0NBTExPQ0sgKmxvY2FsbG9jaywgTG9ja01ldGhvZCBsb2NrTWV0aG9k VGFibGUpCiAJCWVsc2UKIAkJCWVuYWJsZV90aW1lb3V0X2FmdGVyKERFQURMT0NLX1RJTUVP VVQsIERlYWRsb2NrVGltZW91dCk7CiAJfQorCWVsc2UKKwkJc3RhbmRieVdhaXRTdGFydCA9 IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsKIAogCS8qCiAJICogSWYgc29tZWJvZHkgd2FrZXMg dXMgYmV0d2VlbiBMV0xvY2tSZWxlYXNlIGFuZCBXYWl0TGF0Y2gsIHRoZSBsYXRjaApAQCAt MTI4MSw2ICsxMjg1LDI4IEBAIFByb2NTbGVlcChMT0NBTExPQ0sgKmxvY2FsbG9jaywgTG9j a01ldGhvZCBsb2NrTWV0aG9kVGFibGUpCiAJCXsKIAkJCS8qIFNldCBhIHRpbWVyIGFuZCB3 YWl0IGZvciB0aGF0IG9yIGZvciB0aGUgTG9jayB0byBiZSBncmFudGVkICovCiAJCQlSZXNv bHZlUmVjb3ZlcnlDb25mbGljdFdpdGhMb2NrKGxvY2FsbG9jay0+dGFnLmxvY2spOworCisJ CQlpZiAobG9nX3JlY292ZXJ5X2NvbmZsaWN0X3dhaXRzICYmICFsb2dnZWRfcmVjb3Zlcnlf Y29uZmxpY3QgJiYKKwkJCQlUaW1lc3RhbXBEaWZmZXJlbmNlRXhjZWVkcyhzdGFuZGJ5V2Fp dFN0YXJ0LCBHZXRDdXJyZW50VGltZXN0YW1wKCksCisJCQkJCQkJCQkJICAgRGVhZGxvY2tU aW1lb3V0KSkKKwkJCXsKKwkJCQlWaXJ0dWFsVHJhbnNhY3Rpb25JZCAqdnhpZHM7CisJCQkJ aW50CWNudDsKKworCQkJCXZ4aWRzID0JR2V0TG9ja0NvbmZsaWN0cygmbG9jYWxsb2NrLT50 YWcubG9jaywKKwkJCQkJCQkJCQkgQWNjZXNzRXhjbHVzaXZlTG9jaywgJmNudCk7CisKKwkJ CQkvKgorCQkJCSAqIExvZyB0aGUgcmVjb3ZlcnkgY29uZmxpY3QgaWYgdGhlcmUgYXJlIHN0 aWxsIHZpcnR1YWwgdHJhbnNhY3Rpb25zCisJCQkJICogY29uZmxpY3Rpbmcgb24gdGhlIGxv Y2suCisJCQkJICovCisJCQkJaWYgKGNudCA+IDApCisJCQkJeworCQkJCQlMb2dSZWNvdmVy eUNvbmZsaWN0KFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9DSywKKwkJCQkJCQkJCQl2 eGlkcyk7CisJCQkJCWxvZ2dlZF9yZWNvdmVyeV9jb25mbGljdCA9IHRydWU7CisJCQkJfQor CQkJfQogCQl9CiAJCWVsc2UKIAkJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMv bWlzYy9ndWMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKaW5kZXggNTk2YmNi N2I4NC4uZTU1YTI4YjFjZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9n dWMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jCkBAIC0xNTcwLDcgKzE1 NzAsMTUgQEAgc3RhdGljIHN0cnVjdCBjb25maWdfYm9vbCBDb25maWd1cmVOYW1lc0Jvb2xb XSA9CiAJCWZhbHNlLAogCQlOVUxMLCBOVUxMLCBOVUxMCiAJfSwKLQorCXsKKwkJeyJsb2df cmVjb3ZlcnlfY29uZmxpY3Rfd2FpdHMiLCBQR0NfU0lHSFVQLCBMT0dHSU5HX1dIQVQsCisJ CQlnZXR0ZXh0X25vb3AoIkxvZ3Mgc3RhbmRieSByZWNvdmVyeSBjb25mbGljdCB3YWl0cy4i KSwKKwkJCU5VTEwKKwkJfSwKKwkJJmxvZ19yZWNvdmVyeV9jb25mbGljdF93YWl0cywKKwkJ ZmFsc2UsCisJCU5VTEwsIE5VTEwsIE5VTEwKKwl9LAogCXsKIAkJeyJsb2dfaG9zdG5hbWUi LCBQR0NfU0lHSFVQLCBMT0dHSU5HX1dIQVQsCiAJCQlnZXR0ZXh0X25vb3AoIkxvZ3MgdGhl IGhvc3QgbmFtZSBpbiB0aGUgY29ubmVjdGlvbiBsb2dzLiIpLApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIGIvc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCmluZGV4IDljYjU3MWY3Y2Mu LjU2MjU2ODFlOGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdy ZXNxbC5jb25mLnNhbXBsZQorKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVz cWwuY29uZi5zYW1wbGUKQEAgLTU1Myw2ICs1NTMsOCBAQAogCQkJCQkjICAgJSUgPSAnJScK IAkJCQkJIyBlLmcuICc8JXUlJSVkPiAnCiAjbG9nX2xvY2tfd2FpdHMgPSBvZmYJCQkjIGxv ZyBsb2NrIHdhaXRzID49IGRlYWRsb2NrX3RpbWVvdXQKKyNsb2dfcmVjb3ZlcnlfY29uZmxp Y3Rfd2FpdHMgPSBvZmYJIyBsb2cgc3RhbmRieSByZWNvdmVyeSBjb25mbGljdCB3YWl0cwor CQkJCQkjID49IGRlYWRsb2NrX3RpbWVvdXQKICNsb2dfcGFyYW1ldGVyX21heF9sZW5ndGgg PSAtMQkJIyB3aGVuIGxvZ2dpbmcgc3RhdGVtZW50cywgbGltaXQgbG9nZ2VkCiAJCQkJCSMg YmluZC1wYXJhbWV0ZXIgdmFsdWVzIHRvIE4gYnl0ZXM7CiAJCQkJCSMgLTEgbWVhbnMgcHJp bnQgaW4gZnVsbCwgMCBkaXNhYmxlcwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFn ZS9wcm9jc2lnbmFsLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaAppbmRl eCA1Y2IzOTY5N2YzLi43Y2Q5ODgyNjNkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9y YWdlL3Byb2NzaWduYWwuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwu aApAQCAtNzEsNSArNzEsNiBAQCBleHRlcm4gdm9pZCBXYWl0Rm9yUHJvY1NpZ25hbEJhcnJp ZXIodWludDY0IGdlbmVyYXRpb24pOwogZXh0ZXJuIHZvaWQgUHJvY2Vzc1Byb2NTaWduYWxC YXJyaWVyKHZvaWQpOwogCiBleHRlcm4gdm9pZCBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxl cihTSUdOQUxfQVJHUyk7CitleHRlcm4gY29uc3QgY2hhciAqZ2V0X3Byb2NzaWduYWxfcmVh c29uX2Rlc2MoUHJvY1NpZ25hbFJlYXNvbiByZWFzb24pOwogCiAjZW5kaWYJCQkJCQkJLyog UFJPQ1NJR05BTF9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3N0YW5k YnkuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3RhbmRieS5oCmluZGV4IGZhYWYxZDM4MTcu LjY0MmNlNTIwMWEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3RhbmRieS5o CisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3RhbmRieS5oCkBAIC0yMyw2ICsyMyw3IEBA CiBleHRlcm4gaW50CXZhY3V1bV9kZWZlcl9jbGVhbnVwX2FnZTsKIGV4dGVybiBpbnQJbWF4 X3N0YW5kYnlfYXJjaGl2ZV9kZWxheTsKIGV4dGVybiBpbnQJbWF4X3N0YW5kYnlfc3RyZWFt aW5nX2RlbGF5OworZXh0ZXJuIGJvb2wJbG9nX3JlY292ZXJ5X2NvbmZsaWN0X3dhaXRzOwog CiBleHRlcm4gdm9pZCBJbml0UmVjb3ZlcnlUcmFuc2FjdGlvbkVudmlyb25tZW50KHZvaWQp OwogZXh0ZXJuIHZvaWQgU2h1dGRvd25SZWNvdmVyeVRyYW5zYWN0aW9uRW52aXJvbm1lbnQo dm9pZCk7CkBAIC0zOCw2ICszOSw3IEBAIGV4dGVybiB2b2lkIENoZWNrUmVjb3ZlcnlDb25m bGljdERlYWRsb2NrKHZvaWQpOwogZXh0ZXJuIHZvaWQgU3RhbmRieURlYWRMb2NrSGFuZGxl cih2b2lkKTsKIGV4dGVybiB2b2lkIFN0YW5kYnlUaW1lb3V0SGFuZGxlcih2b2lkKTsKIGV4 dGVybiB2b2lkIFN0YW5kYnlMb2NrVGltZW91dEhhbmRsZXIodm9pZCk7CitleHRlcm4gdm9p ZCBMb2dSZWNvdmVyeUNvbmZsaWN0KFByb2NTaWduYWxSZWFzb24gcmVhc29uLCBWaXJ0dWFs VHJhbnNhY3Rpb25JZCAqd2FpdGxpc3QpOwogCiAvKgogICogU3RhbmRieSBSbWdyIChSTV9T VEFOREJZX0lEKQo= --------------FE0D168845D7586B4E59D1E6--