From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pj1-x102b.google.com (mail-pj1-x102b.google.com [IPv6:2607:f8b0:4864:20::102b]) by sourceware.org (Postfix) with ESMTPS id A9A343858C51 for ; Fri, 1 Jul 2022 22:46:00 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org A9A343858C51 Received: by mail-pj1-x102b.google.com with SMTP id 73-20020a17090a0fcf00b001eaee69f600so4075937pjz.1 for ; Fri, 01 Jul 2022 15:46:00 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=LBeydnyabceyx3uz25T+i8DNiaQz0GxNepA9EDt3I5Y=; b=zCzfraweivg230qakfSBQeREWEf8avrKABGvhQcOHylYHzS2VwzDQhSXUpE8HKbNwn NzocRzfaNrNCXT/OdHw0ErGxenm/0SuugMeebAXvjpTTQMM5njlj6P+zD2fyXKfmZ0rV /hTxxHgnf0AR4SqfVRHVs2c/IHPA/6UjgIOMYcFeFAsGXRbRXgrwLt5MOHmgVZTm6dqu 08UPmVk4tXY11bvDd1Pvvdr8NJcmbE54RsPYxnVcgPI1EePtoohRDuNGUlw5ZGE7sTYi yik0knzSTz2+5xQfKBvbslnHuBMJQvgl/av7yoRSigt9v2GpaoRTb7Q4XgL1X5QVnaCq WzhA== X-Gm-Message-State: AJIora8/m7ZdHQjuuP5cOQ74CI2n0KTK14W0VI7BvD4zWgpBATlvvUMC uUBqb4ve3K+hTGFx5K0N00WxnmdYCjJmoPKEBjs9gL/MeAwLZA== X-Google-Smtp-Source: AGRyM1vN6DET8M/yzaSTcIdqS8jzjuSX5+LnecVApdsUlpUI86gOgL7nLARzV6hurZQlsqbzwKnHa7MaOf0KJfmAfjE= X-Received: by 2002:a17:90b:4f4e:b0:1ec:a71c:4148 with SMTP id pj14-20020a17090b4f4e00b001eca71c4148mr19070496pjb.124.1656715559078; Fri, 01 Jul 2022 15:45:59 -0700 (PDT) MIME-Version: 1.0 From: Ian Lance Taylor Date: Fri, 1 Jul 2022 15:45:47 -0700 Message-ID: Subject: Go patch committe: Use correct init order for multi-value init To: gcc-patches , gofrontend-dev Content-Type: multipart/mixed; boundary="00000000000064c24605e2c626b8" X-Spam-Status: No, score=-10.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Jul 2022 22:46:09 -0000 --00000000000064c24605e2c626b8 Content-Type: text/plain; charset="UTF-8" This patch to the Go frontend uses the correct initialization order for code like var a = c var b, c = x.(bool) The global c is initialized by the preinit of b, but we were missing a dependency of c on b, so a would be initialized to the zero value of c rather than the correct value. Simply adding the dependency of c on b didn't work because the preinit of b refers to c, so that appeared circular. So this patch changes the init order to skip dependencies that only appear on the left hand side of assignments in preinit blocks. Doing that didn't work because the write barrier pass can transform "a = b" into code like "gcWriteBarrier(&a, b)" that is not obviously a simple assigment. So this patch moves the collection of dependencies to just after lowering, before the write barriers are inserted. Making those changes permit relaxing the requirement that we don't warn about self-dependency in preinit blocks, so now we correctly warn for var a, b any = b.(bool) The test case is https://go.dev/cl/415238. This fixes https://go.dev/issue/53619. Bootstrapped and ran Go testsuite on x86_64-pc-linux-gnu. Committed to mainline. Ian --00000000000064c24605e2c626b8 Content-Type: text/plain; charset="US-ASCII"; name="patch.txt" Content-Disposition: attachment; filename="patch.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l531mai20 MjMzNjFkZjcxYTY4NDc4ZGRlN2M0YWE1MTZiYTY5ZjE5OTU1NmEyYwpkaWZmIC0tZ2l0IGEvZ2Nj L2dvL2dvZnJvbnRlbmQvTUVSR0UgYi9nY2MvZ28vZ29mcm9udGVuZC9NRVJHRQppbmRleCA2NWY2 NGUwZmJmYi4uN2IxZDMwMTFmZmYgMTAwNjQ0Ci0tLSBhL2djYy9nby9nb2Zyb250ZW5kL01FUkdF CisrKyBiL2djYy9nby9nb2Zyb250ZW5kL01FUkdFCkBAIC0xLDQgKzEsNCBAQAotYWM0MzhlZGM1 MzM1ZjY5Yzk1ZGY5MzQyZjQzNzEyYWQyZjYxYWQ2NgorNjQ3OWQ1OTc2YzVkODQ4ZWM2ZjU4NDMw NDEyNzU3MjNhMDAwMDZiMAogCiBUaGUgZmlyc3QgbGluZSBvZiB0aGlzIGZpbGUgaG9sZHMgdGhl IGdpdCByZXZpc2lvbiBudW1iZXIgb2YgdGhlIGxhc3QKIG1lcmdlIGRvbmUgZnJvbSB0aGUgZ29m cm9udGVuZCByZXBvc2l0b3J5LgpkaWZmIC0tZ2l0IGEvZ2NjL2dvL2dvZnJvbnRlbmQvZ28uY2Mg Yi9nY2MvZ28vZ29mcm9udGVuZC9nby5jYwppbmRleCA0MDRjYjEyNDU0OS4uMTUxMjc3MGFmMjkg MTAwNjQ0Ci0tLSBhL2djYy9nby9nb2Zyb250ZW5kL2dvLmNjCisrKyBiL2djYy9nby9nb2Zyb250 ZW5kL2dvLmNjCkBAIC0xNDYsNiArMTQ2LDkgQEAgZ29fcGFyc2VfaW5wdXRfZmlsZXMoY29uc3Qg Y2hhcioqIGZpbGVuYW1lcywgdW5zaWduZWQgaW50IGZpbGVuYW1lX2NvdW50LAogICBpZiAob25s eV9jaGVja19zeW50YXgpCiAgICAgcmV0dXJuOwogCisgIC8vIFJlY29yZCBnbG9iYWwgdmFyaWFi bGUgaW5pdGlhbGl6ZXIgZGVwZW5kZW5jaWVzLgorICA6OmdvZ28tPnJlY29yZF9nbG9iYWxfaW5p dF9yZWZzKCk7CisKICAgLy8gRG8gc2ltcGxlIGRlYWRjb2RlIGVsaW1pbmF0aW9uLgogICA6Omdv Z28tPnJlbW92ZV9kZWFkY29kZSgpOwogCmRpZmYgLS1naXQgYS9nY2MvZ28vZ29mcm9udGVuZC9n b2dvLmNjIGIvZ2NjL2dvL2dvZnJvbnRlbmQvZ29nby5jYwppbmRleCA2N2I5MWZhYjRjYS4uOTE5 N2VlZjNlMzggMTAwNjQ0Ci0tLSBhL2djYy9nby9nb2Zyb250ZW5kL2dvZ28uY2MKKysrIGIvZ2Nj L2dvL2dvZnJvbnRlbmQvZ29nby5jYwpAQCAtMTA4Niw4ICsxMDg2LDggQEAgY2xhc3MgRmluZF92 YXJzIDogcHVibGljIFRyYXZlcnNlCiAKICBwdWJsaWM6CiAgIEZpbmRfdmFycygpCi0gICAgOiBU cmF2ZXJzZSh0cmF2ZXJzZV9leHByZXNzaW9ucyksCi0gICAgICB2YXJzXygpLCBzZWVuX29iamVj dHNfKCkKKyAgICA6IFRyYXZlcnNlKHRyYXZlcnNlX2V4cHJlc3Npb25zIHwgdHJhdmVyc2Vfc3Rh dGVtZW50cyksCisgICAgICB2YXJzXygpLCBzZWVuX29iamVjdHNfKCksIGxoc19pc19yZWZfKGZh bHNlKQogICB7IH0KIAogICAvLyBBbiBpdGVyYXRvciB0aHJvdWdoIHRoZSB2YXJpYWJsZXMgZm91 bmQsIGFmdGVyIHRoZSB0cmF2ZXJzYWwuCkBAIC0xMTA0LDExICsxMTA0LDE2IEBAIGNsYXNzIEZp bmRfdmFycyA6IHB1YmxpYyBUcmF2ZXJzZQogICBpbnQKICAgZXhwcmVzc2lvbihFeHByZXNzaW9u KiopOwogCisgIGludAorICBzdGF0ZW1lbnQoQmxvY2sqLCBzaXplX3QqIGluZGV4LCBTdGF0ZW1l bnQqKTsKKwogIHByaXZhdGU6CiAgIC8vIEFjY3VtdWxhdGVkIHZhcmlhYmxlcy4KICAgVmFycyB2 YXJzXzsKICAgLy8gT2JqZWN0cyB3ZSBoYXZlIGFscmVhZHkgc2Vlbi4KICAgU2Vlbl9vYmplY3Rz IHNlZW5fb2JqZWN0c187CisgIC8vIFdoZXRoZXIgYW4gYXNzaWdubWVudCB0byBhIHZhcmlhYmxl IGNvdW50cyBhcyBhIHJlZmVyZW5jZS4KKyAgYm9vbCBsaHNfaXNfcmVmXzsKIH07CiAKIC8vIENv bGxlY3QgZ2xvYmFsIHZhcmlhYmxlcyByZWZlcmVuY2VkIGJ5IEVYUFIuICBMb29rIHRocm91Z2gg ZnVuY3Rpb24KQEAgLTExNjQsNyArMTE2OSwxMSBAQCBGaW5kX3ZhcnM6OmV4cHJlc3Npb24oRXhw cmVzc2lvbioqIHBleHByKQogCSAgaWYgKGlucy5zZWNvbmQpCiAJICAgIHsKIAkgICAgICAvLyBU aGlzIGlzIHRoZSBmaXJzdCB0aW1lIHdlIGhhdmUgc2VlbiB0aGlzIG5hbWUuCi0JICAgICAgaWYg KGYtPmZ1bmNfdmFsdWUoKS0+YmxvY2soKS0+dHJhdmVyc2UodGhpcykgPT0gVFJBVkVSU0VfRVhJ VCkKKwkgICAgICBib29sIGhvbGQgPSB0aGlzLT5saHNfaXNfcmVmXzsKKwkgICAgICB0aGlzLT5s aHNfaXNfcmVmXyA9IHRydWU7CisJICAgICAgaW50IHIgPSBmLT5mdW5jX3ZhbHVlKCktPmJsb2Nr KCktPnRyYXZlcnNlKHRoaXMpOworCSAgICAgIHRoaXMtPmxoc19pc19yZWZfID0gaG9sZDsKKwkg ICAgICBpZiAociA9PSBUUkFWRVJTRV9FWElUKQogCQlyZXR1cm4gVFJBVkVSU0VfRVhJVDsKIAkg ICAgfQogCX0KQEAgLTExOTIsNiArMTIwMSwyOSBAQCBGaW5kX3ZhcnM6OmV4cHJlc3Npb24oRXhw cmVzc2lvbioqIHBleHByKQogICByZXR1cm4gVFJBVkVSU0VfQ09OVElOVUU7CiB9CiAKKy8vIENo ZWNrIGEgc3RhdGVtZW50IHdoaWxlIHNlYXJjaGluZyBmb3IgdmFyaWFibGVzLiAgVGhpcyBpcyB3 aGVyZSB3ZQorLy8gc2tpcCB2YXJpYWJsZXMgb24gdGhlIGxlZnQgaGFuZCBzaWRlIG9mIGFzc2ln bWVudHMgaWYgYXBwcm9wcmlhdGUuCisKK2ludAorRmluZF92YXJzOjpzdGF0ZW1lbnQoQmxvY2sq LCBzaXplX3QqLCBTdGF0ZW1lbnQqIHMpCit7CisgIGlmICh0aGlzLT5saHNfaXNfcmVmXykKKyAg ICByZXR1cm4gVFJBVkVSU0VfQ09OVElOVUU7CisgIEFzc2lnbm1lbnRfc3RhdGVtZW50KiBhcyA9 IHMtPmFzc2lnbm1lbnRfc3RhdGVtZW50KCk7CisgIGlmIChhcyA9PSBOVUxMKQorICAgIHJldHVy biBUUkFWRVJTRV9DT05USU5VRTsKKworICAvLyBPbmx5IHRyYXZlcnNlIHN1YmV4cHJlc3Npb25z IG9mIHRoZSBMSFMuCisgIGlmIChhcy0+bGhzKCktPnRyYXZlcnNlX3N1YmV4cHJlc3Npb25zKHRo aXMpID09IFRSQVZFUlNFX0VYSVQpCisgICAgcmV0dXJuIFRSQVZFUlNFX0VYSVQ7CisKKyAgRXhw cmVzc2lvbiogcmhzID0gYXMtPnJocygpOworICBpZiAoRXhwcmVzc2lvbjo6dHJhdmVyc2UoJnJo cywgdGhpcykgPT0gVFJBVkVSU0VfRVhJVCkKKyAgICByZXR1cm4gVFJBVkVSU0VfRVhJVDsKKwor ICByZXR1cm4gVFJBVkVSU0VfU0tJUF9DT01QT05FTlRTOworfQorCiAvLyBSZXR1cm4gdHJ1ZSBp ZiBFWFBSLCBQUkVJTklULCBvciBERVAgcmVmZXJzIHRvIFZBUi4KIAogc3RhdGljIGJvb2wKQEAg LTEyMzAsMTEgKzEyNjIsMTEgQEAgY2xhc3MgVmFyX2luaXQKIHsKICBwdWJsaWM6CiAgIFZhcl9p bml0KCkKLSAgICA6IHZhcl8oTlVMTCksIGluaXRfKE5VTEwpLCByZWZzXyhOVUxMKSwgZGVwX2Nv dW50XygwKQorICAgIDogdmFyXyhOVUxMKSwgaW5pdF8oTlVMTCksIGRlcF9jb3VudF8oMCkKICAg eyB9CiAKICAgVmFyX2luaXQoTmFtZWRfb2JqZWN0KiB2YXIsIEJzdGF0ZW1lbnQqIGluaXQpCi0g ICAgOiB2YXJfKHZhciksIGluaXRfKGluaXQpLCByZWZzXyhOVUxMKSwgZGVwX2NvdW50XygwKQor ICAgIDogdmFyXyh2YXIpLCBpbml0Xyhpbml0KSwgZGVwX2NvdW50XygwKQogICB7IH0KIAogICAv LyBSZXR1cm4gdGhlIHZhcmlhYmxlLgpAQCAtMTI0NywxOSArMTI3OSw2IEBAIGNsYXNzIFZhcl9p bml0CiAgIGluaXQoKSBjb25zdAogICB7IHJldHVybiB0aGlzLT5pbml0XzsgfQogCi0gIC8vIEFk ZCBhIHJlZmVyZW5jZS4KLSAgdm9pZAotICBhZGRfcmVmKE5hbWVkX29iamVjdCogdmFyKTsKLQot ICAvLyBUaGUgdmFyaWFibGVzIHdoaWNoIHRoaXMgdmFyaWFibGUncyBpbml0aWFsaXplcnMgcmVm ZXIgdG8uCi0gIGNvbnN0IHN0ZDo6dmVjdG9yPE5hbWVkX29iamVjdCo+KgotICByZWZzKCkKLSAg eyByZXR1cm4gdGhpcy0+cmVmc187IH0KLQotICAvLyBDbGVhciB0aGUgcmVmZXJlbmNlcywgaWYg YW55LgotICB2b2lkCi0gIGNsZWFyX3JlZnMoKTsKLQogICAvLyBSZXR1cm4gdGhlIG51bWJlciBv ZiByZW1haW5pbmcgZGVwZW5kZW5jaWVzLgogICBzaXplX3QKICAgZGVwX2NvdW50KCkgY29uc3QK QEAgLTEyODAsMzYgKzEyOTksMTIgQEAgY2xhc3MgVmFyX2luaXQKICAgTmFtZWRfb2JqZWN0KiB2 YXJfOwogICAvLyBUaGUgYmFja2VuZCBpbml0aWFsaXphdGlvbiBzdGF0ZW1lbnQuCiAgIEJzdGF0 ZW1lbnQqIGluaXRfOwotICAvLyBWYXJpYWJsZXMgdGhpcyByZWZlcnMgdG8uCi0gIHN0ZDo6dmVj dG9yPE5hbWVkX29iamVjdCo+KiByZWZzXzsKICAgLy8gVGhlIG51bWJlciBvZiBpbml0aWFsaXph dGlvbnMgdGhpcyBpcyBkZXBlbmRlbnQgb24uICBBIHZhcmlhYmxlCiAgIC8vIGluaXRpYWxpemF0 aW9uIHNob3VsZCBub3QgYmUgZW1pdHRlZCBpZiBhbnkgb2YgaXRzIGRlcGVuZGVuY2llcwogICAv LyBoYXZlIG5vdCB5ZXQgYmVlbiByZXNvbHZlZC4KICAgc2l6ZV90IGRlcF9jb3VudF87CiB9Owog Ci0vLyBBZGQgYSByZWZlcmVuY2UuCi0KLXZvaWQKLVZhcl9pbml0OjphZGRfcmVmKE5hbWVkX29i amVjdCogdmFyKQotewotICBpZiAodGhpcy0+cmVmc18gPT0gTlVMTCkKLSAgICB0aGlzLT5yZWZz XyA9IG5ldyBzdGQ6OnZlY3RvcjxOYW1lZF9vYmplY3QqPjsKLSAgdGhpcy0+cmVmc18tPnB1c2hf YmFjayh2YXIpOwotfQotCi0vLyBDbGVhciB0aGUgcmVmZXJlbmNlcywgaWYgYW55LgotCi12b2lk Ci1WYXJfaW5pdDo6Y2xlYXJfcmVmcygpCi17Ci0gIGlmICh0aGlzLT5yZWZzXyAhPSBOVUxMKQot ICAgIHsKLSAgICAgIGRlbGV0ZSB0aGlzLT5yZWZzXzsKLSAgICAgIHRoaXMtPnJlZnNfID0gTlVM TDsKLSAgICB9Ci19Ci0KIC8vIEZvciBjb21wYXJpbmcgVmFyX2luaXQga2V5cyBpbiBhIG1hcC4K IAogaW5saW5lIGJvb2wKQEAgLTEzMjQsNyArMTMxOSw3IEBAIHR5cGVkZWYgc3RkOjpsaXN0PFZh cl9pbml0PiBWYXJfaW5pdHM7CiAvLyB2YXJpYWJsZSBWMiB0aGVuIHdlIGluaXRpYWxpemUgVjEg YWZ0ZXIgVjIuCiAKIHN0YXRpYyB2b2lkCi1zb3J0X3Zhcl9pbml0cyhHb2dvKiBnb2dvLCBWYXJf aW5pdHMqIHZhcl9pbml0cykKK3NvcnRfdmFyX2luaXRzKFZhcl9pbml0cyogdmFyX2luaXRzKQog ewogICBpZiAodmFyX2luaXRzLT5lbXB0eSgpKQogICAgIHJldHVybjsKQEAgLTEzMzcsMzMgKzEz MzIsMTMgQEAgc29ydF92YXJfaW5pdHMoR29nbyogZ29nbywgVmFyX2luaXRzKiB2YXJfaW5pdHMp CiAgIEluaXRfZGVwcyBpbml0X2RlcHM7CiAgIGJvb2wgaW5pdF9sb29wID0gZmFsc2U7CiAKLSAg Ly8gQ29tcHV0ZSBhbGwgdmFyaWFibGUgcmVmZXJlbmNlcy4KKyAgLy8gTWFwIGZyb20gdmFyaWFi bGUgdG8gVmFyX2luaXQuCiAgIGZvciAoVmFyX2luaXRzOjppdGVyYXRvciBwdmFyID0gdmFyX2lu aXRzLT5iZWdpbigpOwogICAgICAgIHB2YXIgIT0gdmFyX2luaXRzLT5lbmQoKTsKICAgICAgICAr K3B2YXIpCiAgICAgewogICAgICAgTmFtZWRfb2JqZWN0KiB2YXIgPSBwdmFyLT52YXIoKTsKICAg ICAgIHZhcl90b19pbml0W3Zhcl0gPSAmKnB2YXI7Ci0KLSAgICAgIEZpbmRfdmFycyBmaW5kX3Zh cnM7Ci0gICAgICBFeHByZXNzaW9uKiBpbml0ID0gdmFyLT52YXJfdmFsdWUoKS0+aW5pdCgpOwot ICAgICAgaWYgKGluaXQgIT0gTlVMTCkKLQlFeHByZXNzaW9uOjp0cmF2ZXJzZSgmaW5pdCwgJmZp bmRfdmFycyk7Ci0gICAgICBpZiAodmFyLT52YXJfdmFsdWUoKS0+aGFzX3ByZV9pbml0KCkpCi0J dmFyLT52YXJfdmFsdWUoKS0+cHJlaW5pdCgpLT50cmF2ZXJzZSgmZmluZF92YXJzKTsKLSAgICAg IE5hbWVkX29iamVjdCogZGVwID0gZ29nby0+dmFyX2RlcGVuZHNfb24odmFyLT52YXJfdmFsdWUo KSk7Ci0gICAgICBpZiAoZGVwICE9IE5VTEwpCi0JewotCSAgRXhwcmVzc2lvbiogZGluaXQgPSBk ZXAtPnZhcl92YWx1ZSgpLT5pbml0KCk7Ci0JICBpZiAoZGluaXQgIT0gTlVMTCkKLQkgICAgRXhw cmVzc2lvbjo6dHJhdmVyc2UoJmRpbml0LCAmZmluZF92YXJzKTsKLQkgIGlmIChkZXAtPnZhcl92 YWx1ZSgpLT5oYXNfcHJlX2luaXQoKSkKLQkgICAgZGVwLT52YXJfdmFsdWUoKS0+cHJlaW5pdCgp LT50cmF2ZXJzZSgmZmluZF92YXJzKTsKLQl9Ci0gICAgICBmb3IgKEZpbmRfdmFyczo6Y29uc3Rf aXRlcmF0b3IgcCA9IGZpbmRfdmFycy5iZWdpbigpOwotCSAgIHAgIT0gZmluZF92YXJzLmVuZCgp OwotCSAgICsrcCkKLQlwdmFyLT5hZGRfcmVmKCpwKTsKICAgICB9CiAKICAgLy8gQWRkIGRlcGVu ZGVuY2llcyB0byBpbml0X2RlcHMsIGFuZCBjaGVjayBmb3IgY3ljbGVzLgpAQCAtMTM3Myw3ICsx MzQ4LDggQEAgc29ydF92YXJfaW5pdHMoR29nbyogZ29nbywgVmFyX2luaXRzKiB2YXJfaW5pdHMp CiAgICAgewogICAgICAgTmFtZWRfb2JqZWN0KiB2YXIgPSBwdmFyLT52YXIoKTsKIAotICAgICAg Y29uc3Qgc3RkOjp2ZWN0b3I8TmFtZWRfb2JqZWN0Kj4qIHJlZnMgPSBwdmFyLT5yZWZzKCk7Cisg ICAgICBjb25zdCBzdGQ6OnZlY3RvcjxOYW1lZF9vYmplY3QqPiogcmVmcyA9CisJcHZhci0+dmFy KCktPnZhcl92YWx1ZSgpLT5pbml0X3JlZnMoKTsKICAgICAgIGlmIChyZWZzID09IE5VTEwpCiAJ Y29udGludWU7CiAgICAgICBmb3IgKHN0ZDo6dmVjdG9yPE5hbWVkX29iamVjdCo+Ojpjb25zdF9p dGVyYXRvciBwZGVwID0gcmVmcy0+YmVnaW4oKTsKQEAgLTEzODMsMTkgKzEzNTksMTEgQEAgc29y dF92YXJfaW5pdHMoR29nbyogZ29nbywgVmFyX2luaXRzKiB2YXJfaW5pdHMpCiAJICBOYW1lZF9v YmplY3QqIGRlcCA9ICpwZGVwOwogCSAgaWYgKHZhciA9PSBkZXApCiAJICAgIHsKLQkgICAgICAv LyBUaGlzIGlzIGEgcmVmZXJlbmNlIGZyb20gYSB2YXJpYWJsZSB0byBpdHNlbGYsIHdoaWNoCi0J ICAgICAgLy8gbWF5IGluZGljYXRlIGEgbG9vcC4gIFdlIG9ubHkgcmVwb3J0IGFuIGVycm9yIGlm Ci0JICAgICAgLy8gdGhlcmUgaXMgYW4gaW5pdGlhbGl6ZXIgYW5kIHRoZXJlIGlzIG5vIGRlcGVu ZGVuY3kuCi0JICAgICAgLy8gV2hlbiB0aGVyZSBpcyBubyBpbml0aWFsaXplciwgaXQgbWVhbnMg dGhhdCB0aGUKLQkgICAgICAvLyBwcmVpbml0aWFsaXplciBzZXRzIHRoZSB2YXJpYWJsZSwgd2hp Y2ggd2lsbCBhcHBlYXIKLQkgICAgICAvLyB0byBiZSBhIGxvb3AgaGVyZS4KLQkgICAgICBpZiAo dmFyLT52YXJfdmFsdWUoKS0+aW5pdCgpICE9IE5VTEwKLQkJICAmJiBnb2dvLT52YXJfZGVwZW5k c19vbih2YXItPnZhcl92YWx1ZSgpKSA9PSBOVUxMKQotCQlnb19lcnJvcl9hdCh2YXItPmxvY2F0 aW9uKCksCi0JCQkgICAgKCJpbml0aWFsaXphdGlvbiBleHByZXNzaW9uIGZvciAlcXMgIgotCQkJ ICAgICAiZGVwZW5kcyB1cG9uIGl0c2VsZiIpLAotCQkJICAgIHZhci0+bWVzc2FnZV9uYW1lKCku Y19zdHIoKSk7Ci0KKwkgICAgICAvLyBUaGlzIGlzIGEgcmVmZXJlbmNlIGZyb20gYSB2YXJpYWJs ZSB0byBpdHNlbGYuCisJICAgICAgZ29fZXJyb3JfYXQodmFyLT5sb2NhdGlvbigpLAorCQkJICAo ImluaXRpYWxpemF0aW9uIGV4cHJlc3Npb24gZm9yICVxcyAiCisJCQkgICAiZGVwZW5kcyB1cG9u IGl0c2VsZiIpLAorCQkJICB2YXItPm1lc3NhZ2VfbmFtZSgpLmNfc3RyKCkpOwogCSAgICAgIGNv bnRpbnVlOwogCSAgICB9CiAKQEAgLTE0MTIsNyArMTM4MCw4IEBAIHNvcnRfdmFyX2luaXRzKEdv Z28qIGdvZ28sIFZhcl9pbml0cyogdmFyX2luaXRzKQogCSAgcHZhci0+YWRkX2RlcGVuZGVuY3ko KTsKIAogCSAgLy8gQ2hlY2sgZm9yIGN5Y2xlcy4KLQkgIGNvbnN0IHN0ZDo6dmVjdG9yPE5hbWVk X29iamVjdCo+KiBkZXByZWZzID0gZGVwX2luaXQtPnJlZnMoKTsKKwkgIGNvbnN0IHN0ZDo6dmVj dG9yPE5hbWVkX29iamVjdCo+KiBkZXByZWZzID0KKwkgICAgZGVwX2luaXQtPnZhcigpLT52YXJf dmFsdWUoKS0+aW5pdF9yZWZzKCk7CiAJICBpZiAoZGVwcmVmcyA9PSBOVUxMKQogCSAgICBjb250 aW51ZTsKIAkgIGZvciAoc3RkOjp2ZWN0b3I8TmFtZWRfb2JqZWN0Kj46OmNvbnN0X2l0ZXJhdG9y IHBkZXBkZXAgPQpAQCAtMTQzNywxMCArMTQwNiw2IEBAIHNvcnRfdmFyX2luaXRzKEdvZ28qIGdv Z28sIFZhcl9pbml0cyogdmFyX2luaXRzKQogICAgIH0KIAogICB2YXJfdG9faW5pdC5jbGVhcigp OwotICBmb3IgKFZhcl9pbml0czo6aXRlcmF0b3IgcHZhciA9IHZhcl9pbml0cy0+YmVnaW4oKTsK LSAgICAgICBwdmFyICE9IHZhcl9pbml0cy0+ZW5kKCk7Ci0gICAgICAgKytwdmFyKQotICAgIHB2 YXItPmNsZWFyX3JlZnMoKTsKIAogICAvLyBJZiB0aGVyZSBhcmUgbm8gZGVwZW5kZW5jaWVzIHRo ZW4gdGhlIGRlY2xhcmF0aW9uIG9yZGVyIGlzIHNvcnRlZC4KICAgaWYgKCFpbml0X2RlcHMuZW1w dHkoKSAmJiAhaW5pdF9sb29wKQpAQCAtMTc0OCw3ICsxNzEzLDcgQEAgR29nbzo6d3JpdGVfZ2xv YmFscygpCiAgIC8vIHdvcmthYmxlIG9yZGVyLgogICBpZiAoIXZhcl9pbml0cy5lbXB0eSgpKQog ICAgIHsKLSAgICAgIHNvcnRfdmFyX2luaXRzKHRoaXMsICZ2YXJfaW5pdHMpOworICAgICAgc29y dF92YXJfaW5pdHMoJnZhcl9pbml0cyk7CiAgICAgICBmb3IgKFZhcl9pbml0czo6Y29uc3RfaXRl cmF0b3IgcCA9IHZhcl9pbml0cy5iZWdpbigpOwogICAgICAgICAgICBwICE9IHZhcl9pbml0cy5l bmQoKTsKICAgICAgICAgICAgKytwKQpAQCAtMzg0MCw2ICszODA1LDUxIEBAIEdvZ286OmNoZWNr X3R5cGVzX2luX2Jsb2NrKEJsb2NrKiBibG9jaykKICAgYmxvY2stPnRyYXZlcnNlKCZ0cmF2ZXJz ZSk7CiB9CiAKKy8vIEZvciBlYWNoIGdsb2JhbCB2YXJpYWJsZSBkZWZpbmVkIGluIHRoZSBjdXJy ZW50IHBhY2thZ2UsIHJlY29yZCB0aGUKKy8vIHNldCBvZiB2YXJpYWJsZXMgdGhhdCBpdHMgaW5p dGlhbGl6ZXIgZGVwZW5kcyBvbi4gIFdlIGRvIHRoaXMgYWZ0ZXIKKy8vIGxvd2VyaW5nIHNvIHRo YXQgYWxsIHVua25vd24gbmFtZXMgYXJlIHJlc29sdmVkIHRvIHRoZWlyIGZpbmFsCisvLyBsb2Nh dGlvbnMuICBXZSBkbyB0aGlzIGJlZm9yZSB3cml0ZSBiYXJyaWVyIGluc2VydGlvbiBiZWNhdXNl IHRoYXQKKy8vIG1ha2VzIGl0IGhhcmRlciB0byBkaXN0aW5ndWlzaCByZWZlcmVuY2VzIGZyb20g YXNzaWdubWVudHMgaW4KKy8vIHByZWluaXQgYmxvY2tzLgorCit2b2lkCitHb2dvOjpyZWNvcmRf Z2xvYmFsX2luaXRfcmVmcygpCit7CisgIEJpbmRpbmdzKiBiaW5kaW5ncyA9IHRoaXMtPnBhY2th Z2VfLT5iaW5kaW5ncygpOworICBmb3IgKEJpbmRpbmdzOjpjb25zdF9kZWZpbml0aW9uc19pdGVy YXRvciBwYiA9IGJpbmRpbmdzLT5iZWdpbl9kZWZpbml0aW9ucygpOworICAgICAgIHBiICE9IGJp bmRpbmdzLT5lbmRfZGVmaW5pdGlvbnMoKTsKKyAgICAgICBwYisrKQorICAgIHsKKyAgICAgIE5h bWVkX29iamVjdCogbm8gPSAqcGI7CisgICAgICBpZiAoIW5vLT5pc192YXJpYWJsZSgpKQorCWNv bnRpbnVlOworCisgICAgICBWYXJpYWJsZSogdmFyID0gbm8tPnZhcl92YWx1ZSgpOworICAgICAg Z29fYXNzZXJ0KHZhci0+aXNfZ2xvYmFsKCkpOworCisgICAgICBGaW5kX3ZhcnMgZmluZF92YXJz OworICAgICAgRXhwcmVzc2lvbiogaW5pdCA9IHZhci0+aW5pdCgpOworICAgICAgaWYgKGluaXQg IT0gTlVMTCkKKwlFeHByZXNzaW9uOjp0cmF2ZXJzZSgmaW5pdCwgJmZpbmRfdmFycyk7CisgICAg ICBpZiAodmFyLT5oYXNfcHJlX2luaXQoKSkKKwl2YXItPnByZWluaXQoKS0+dHJhdmVyc2UoJmZp bmRfdmFycyk7CisgICAgICBOYW1lZF9vYmplY3QqIGRlcCA9IHRoaXMtPnZhcl9kZXBlbmRzX29u KHZhcik7CisgICAgICBpZiAoZGVwICE9IE5VTEwpCisJeworCSAgRXhwcmVzc2lvbiogZGluaXQg PSBkZXAtPnZhcl92YWx1ZSgpLT5pbml0KCk7CisJICBpZiAoZGluaXQgIT0gTlVMTCkKKwkgICAg RXhwcmVzc2lvbjo6dHJhdmVyc2UoJmRpbml0LCAmZmluZF92YXJzKTsKKwkgIGlmIChkZXAtPnZh cl92YWx1ZSgpLT5oYXNfcHJlX2luaXQoKSkKKwkgICAgZGVwLT52YXJfdmFsdWUoKS0+cHJlaW5p dCgpLT50cmF2ZXJzZSgmZmluZF92YXJzKTsKKwl9CisKKyAgICAgIGZvciAoRmluZF92YXJzOjpj b25zdF9pdGVyYXRvciBwdiA9IGZpbmRfdmFycy5iZWdpbigpOworCSAgIHB2ICE9IGZpbmRfdmFy cy5lbmQoKTsKKwkgICArK3B2KQorCXZhci0+YWRkX2luaXRfcmVmKCpwdik7CisgICAgfQorfQor CiAvLyBBIHRyYXZlcnNhbCBjbGFzcyB3aGljaCBmaW5kcyBhbGwgdGhlIGV4cHJlc3Npb25zIHdo aWNoIG11c3QgYmUKIC8vIGV2YWx1YXRlZCBpbiBvcmRlciB3aXRoaW4gYSBzdGF0ZW1lbnQgb3Ig bGFyZ2VyIGV4cHJlc3Npb24uICBUaGlzCiAvLyBpcyB1c2VkIHRvIGltcGxlbWVudCB0aGUgcnVs ZXMgYWJvdXQgb3JkZXIgb2YgZXZhbHVhdGlvbi4KQEAgLTc0MjIsMTYgKzc0MzIsMTYgQEAgVmFy aWFibGU6OlZhcmlhYmxlKFR5cGUqIHR5cGUsIEV4cHJlc3Npb24qIGluaXQsIGJvb2wgaXNfZ2xv YmFsLAogCQkgICBib29sIGlzX3BhcmFtZXRlciwgYm9vbCBpc19yZWNlaXZlciwKIAkJICAgTG9j YXRpb24gbG9jYXRpb24pCiAgIDogdHlwZV8odHlwZSksIGluaXRfKGluaXQpLCBwcmVpbml0XyhO VUxMKSwgbG9jYXRpb25fKGxvY2F0aW9uKSwKLSAgICBlbWJlZHNfKE5VTEwpLCBiYWNrZW5kXyhO VUxMKSwgaXNfZ2xvYmFsXyhpc19nbG9iYWwpLAotICAgIGlzX3BhcmFtZXRlcl8oaXNfcGFyYW1l dGVyKSwgaXNfY2xvc3VyZV8oZmFsc2UpLCBpc19yZWNlaXZlcl8oaXNfcmVjZWl2ZXIpLAotICAg IGlzX3ZhcmFyZ3NfcGFyYW1ldGVyXyhmYWxzZSksIGlzX2dsb2JhbF9zaW5rXyhmYWxzZSksIGlz X3VzZWRfKGZhbHNlKSwKLSAgICBpc19hZGRyZXNzX3Rha2VuXyhmYWxzZSksIGlzX25vbl9lc2Nh cGluZ19hZGRyZXNzX3Rha2VuXyhmYWxzZSksCi0gICAgc2Vlbl8oZmFsc2UpLCBpbml0X2lzX2xv d2VyZWRfKGZhbHNlKSwgaW5pdF9pc19mbGF0dGVuZWRfKGZhbHNlKSwKKyAgICB0b3BsZXZlbF9k ZWNsXyhOVUxMKSwgaW5pdF9yZWZzXyhOVUxMKSwgZW1iZWRzXyhOVUxMKSwgYmFja2VuZF8oTlVM TCksCisgICAgaXNfZ2xvYmFsXyhpc19nbG9iYWwpLCBpc19wYXJhbWV0ZXJfKGlzX3BhcmFtZXRl ciksIGlzX2Nsb3N1cmVfKGZhbHNlKSwKKyAgICBpc19yZWNlaXZlcl8oaXNfcmVjZWl2ZXIpLCBp c192YXJhcmdzX3BhcmFtZXRlcl8oZmFsc2UpLAorICAgIGlzX2dsb2JhbF9zaW5rXyhmYWxzZSks IGlzX3VzZWRfKGZhbHNlKSwgaXNfYWRkcmVzc190YWtlbl8oZmFsc2UpLAorICAgIGlzX25vbl9l c2NhcGluZ19hZGRyZXNzX3Rha2VuXyhmYWxzZSksIHNlZW5fKGZhbHNlKSwKKyAgICBpbml0X2lz X2xvd2VyZWRfKGZhbHNlKSwgaW5pdF9pc19mbGF0dGVuZWRfKGZhbHNlKSwKICAgICB0eXBlX2Zy b21faW5pdF90dXBsZV8oZmFsc2UpLCB0eXBlX2Zyb21fcmFuZ2VfaW5kZXhfKGZhbHNlKSwKICAg ICB0eXBlX2Zyb21fcmFuZ2VfdmFsdWVfKGZhbHNlKSwgdHlwZV9mcm9tX2NoYW5fZWxlbWVudF8o ZmFsc2UpLAogICAgIGlzX3R5cGVfc3dpdGNoX3Zhcl8oZmFsc2UpLCBkZXRlcm1pbmVkX3R5cGVf KGZhbHNlKSwKLSAgICBpbl91bmlxdWVfc2VjdGlvbl8oZmFsc2UpLCBpc19yZWZlcmVuY2VkX2J5 X2lubGluZV8oZmFsc2UpLAotICAgIHRvcGxldmVsX2RlY2xfKE5VTEwpCisgICAgaW5fdW5pcXVl X3NlY3Rpb25fKGZhbHNlKSwgaXNfcmVmZXJlbmNlZF9ieV9pbmxpbmVfKGZhbHNlKQogewogICBn b19hc3NlcnQodHlwZSAhPSBOVUxMIHx8IGluaXQgIT0gTlVMTCk7CiAgIGdvX2Fzc2VydCghaXNf cGFyYW1ldGVyIHx8IGluaXQgPT0gTlVMTCk7CkBAIC03OTIxLDYgKzc5MzEsMTYgQEAgVmFyaWFi bGU6OmdldF9pbml0X2Jsb2NrKEdvZ28qIGdvZ28sIE5hbWVkX29iamVjdCogZnVuY3Rpb24sCiAg IHJldHVybiBibG9ja19zdG10OwogfQogCisvLyBBZGQgYW4gaW5pdGlhbGl6ZXIgcmVmZXJlbmNl LgorCit2b2lkCitWYXJpYWJsZTo6YWRkX2luaXRfcmVmKE5hbWVkX29iamVjdCogdmFyKQorewor ICBpZiAodGhpcy0+aW5pdF9yZWZzXyA9PSBOVUxMKQorICAgIHRoaXMtPmluaXRfcmVmc18gPSBu ZXcgc3RkOjp2ZWN0b3I8TmFtZWRfb2JqZWN0Kj47CisgIHRoaXMtPmluaXRfcmVmc18tPnB1c2hf YmFjayh2YXIpOworfQorCiAvLyBFeHBvcnQgdGhlIHZhcmlhYmxlCiAKIHZvaWQKZGlmZiAtLWdp dCBhL2djYy9nby9nb2Zyb250ZW5kL2dvZ28uaCBiL2djYy9nby9nb2Zyb250ZW5kL2dvZ28uaApp bmRleCAyZWUwZmRhMDBhZS4uNDMzZmRhZWJiNjYgMTAwNjQ0Ci0tLSBhL2djYy9nby9nb2Zyb250 ZW5kL2dvZ28uaAorKysgYi9nY2MvZ28vZ29mcm9udGVuZC9nb2dvLmgKQEAgLTg0Miw2ICs4NDIs MTEgQEAgY2xhc3MgR29nbwogICB2b2lkCiAgIGNoZWNrX3JldHVybl9zdGF0ZW1lbnRzKCk7CiAK KyAgLy8gR2F0aGVyIHJlZmVyZW5jZXMgZnJvbSBnbG9iYWwgdmFyaWFibGVzIGluaXRpYWxpemVy cyB0byBvdGhlcgorICAvLyB2YXJpYWJsZXMuCisgIHZvaWQKKyAgcmVjb3JkX2dsb2JhbF9pbml0 X3JlZnMoKTsKKwogICAvLyBSZW1vdmUgZGVhZGNvZGUuCiAgIHZvaWQKICAgcmVtb3ZlX2RlYWRj b2RlKCk7CkBAIC0yMzMzLDYgKzIzMzgsMTUgQEAgY2xhc3MgVmFyaWFibGUKICAgICB0aGlzLT50 b3BsZXZlbF9kZWNsXyA9IHM7CiAgIH0KIAorICAvLyBOb3RlIHRoYXQgdGhlIGluaXRpYWxpemVy IG9mIHRoaXMgZ2xvYmFsIHZhcmlhYmxlIHJlZmVycyB0byBWQVIuCisgIHZvaWQKKyAgYWRkX2lu aXRfcmVmKE5hbWVkX29iamVjdCogdmFyKTsKKworICAvLyBUaGUgdmFyaWFibGVzIHRoYXQgdGhp cyB2YXJpYWJsZSdzIGluaXRpYWxpemVycyByZWZlciB0by4KKyAgY29uc3Qgc3RkOjp2ZWN0b3I8 TmFtZWRfb2JqZWN0Kj4qCisgIGluaXRfcmVmcygpIGNvbnN0CisgIHsgcmV0dXJuIHRoaXMtPmlu aXRfcmVmc187IH0KKwogICAvLyBUcmF2ZXJzZSB0aGUgaW5pdGlhbGl6ZXIgZXhwcmVzc2lvbi4K ICAgaW50CiAgIHRyYXZlcnNlX2V4cHJlc3Npb24oVHJhdmVyc2UqLCB1bnNpZ25lZCBpbnQgdHJh dmVyc2VfbWFzayk7CkBAIC0yMzg5LDYgKzI0MDMsMTIgQEAgY2xhc3MgVmFyaWFibGUKICAgQmxv Y2sqIHByZWluaXRfOwogICAvLyBMb2NhdGlvbiBvZiB2YXJpYWJsZSBkZWZpbml0aW9uLgogICBM b2NhdGlvbiBsb2NhdGlvbl87CisgIC8vIFRoZSB0b3AtbGV2ZWwgZGVjbGFyYXRpb24gZm9yIHRo aXMgdmFyaWFibGUuIE9ubHkgdXNlZCBmb3IgbG9jYWwKKyAgLy8gdmFyaWFibGVzLiBNdXN0IGJl IGEgVGVtcG9yYXJ5X3N0YXRlbWVudCBpZiBub3QgTlVMTC4KKyAgU3RhdGVtZW50KiB0b3BsZXZl bF9kZWNsXzsKKyAgLy8gVmFyaWFibGVzIHRoYXQgdGhlIGluaXRpYWxpemVyIG9mIGEgZ2xvYmFs IHZhcmlhYmxlIHJlZmVycyB0by4KKyAgLy8gVXNlZCBmb3IgaW5pdGlhbGl6ZXIgb3JkZXJpbmcu CisgIHN0ZDo6dmVjdG9yPE5hbWVkX29iamVjdCo+KiBpbml0X3JlZnNfOwogICAvLyBBbnkgYXNz b2NpYXRlZCBnbzplbWJlZCBjb21tZW50cy4KICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KiBl bWJlZHNfOwogICAvLyBCYWNrZW5kIHJlcHJlc2VudGF0aW9uLgpAQCAtMjQzOSw5ICsyNDU5LDYg QEAgY2xhc3MgVmFyaWFibGUKICAgLy8gVHJ1ZSBpZiB0aGlzIHZhcmlhYmxlIGlzIHJlZmVyZW5j ZWQgZnJvbSBhbiBpbmxpbmVkIGJvZHkgdGhhdAogICAvLyB3aWxsIGJlIHB1dCBpbnRvIHRoZSBl eHBvcnQgZGF0YS4KICAgYm9vbCBpc19yZWZlcmVuY2VkX2J5X2lubGluZV8gOiAxOwotICAvLyBU aGUgdG9wLWxldmVsIGRlY2xhcmF0aW9uIGZvciB0aGlzIHZhcmlhYmxlLiBPbmx5IHVzZWQgZm9y IGxvY2FsCi0gIC8vIHZhcmlhYmxlcy4gTXVzdCBiZSBhIFRlbXBvcmFyeV9zdGF0ZW1lbnQgaWYg bm90IE5VTEwuCi0gIFN0YXRlbWVudCogdG9wbGV2ZWxfZGVjbF87CiB9OwogCiAvLyBBIHZhcmlh YmxlIHdoaWNoIGlzIHJlYWxseSB0aGUgbmFtZSBmb3IgYSBmdW5jdGlvbiByZXR1cm4gdmFsdWUs IG9yCmRpZmYgLS1naXQgYS9nY2MvZ28vZ29mcm9udGVuZC9wYXJzZS5jYyBiL2djYy9nby9nb2Zy b250ZW5kL3BhcnNlLmNjCmluZGV4IGUzODgyNjFmNDk0Li5hM2M2ZjYzMGEwOSAxMDA2NDQKLS0t IGEvZ2NjL2dvL2dvZnJvbnRlbmQvcGFyc2UuY2MKKysrIGIvZ2NjL2dvL2dvZnJvbnRlbmQvcGFy c2UuY2MKQEAgLTE5NzcsNyArMTk3NywxMSBAQCBQYXJzZTo6aW5pdF92YXJzX2Zyb21fbWFwKGNv bnN0IFR5cGVkX2lkZW50aWZpZXJfbGlzdCogdmFycywgVHlwZSogdHlwZSwKICAgZWxzZSBpZiAo IXZhbF9uby0+aXNfc2luaygpKQogICAgIHsKICAgICAgIGlmICh2YWxfbm8tPmlzX3ZhcmlhYmxl KCkpCi0JdmFsX25vLT52YXJfdmFsdWUoKS0+YWRkX3ByZWluaXRfc3RhdGVtZW50KHRoaXMtPmdv Z29fLCBzKTsKKwl7CisJICB2YWxfbm8tPnZhcl92YWx1ZSgpLT5hZGRfcHJlaW5pdF9zdGF0ZW1l bnQodGhpcy0+Z29nb18sIHMpOworCSAgaWYgKG5vLT5pc192YXJpYWJsZSgpKQorCSAgICB0aGlz LT5nb2dvXy0+cmVjb3JkX3Zhcl9kZXBlbmRzX29uKG5vLT52YXJfdmFsdWUoKSwgdmFsX25vKTsK Kwl9CiAgICAgfQogICBlbHNlIGlmICghbm8tPmlzX3NpbmsoKSkKICAgICB7CkBAIC0yMDQ0LDcg KzIwNDgsMTEgQEAgUGFyc2U6OmluaXRfdmFyc19mcm9tX3JlY2VpdmUoY29uc3QgVHlwZWRfaWRl bnRpZmllcl9saXN0KiB2YXJzLCBUeXBlKiB0eXBlLAogICBlbHNlIGlmICghdmFsX25vLT5pc19z aW5rKCkpCiAgICAgewogICAgICAgaWYgKHZhbF9uby0+aXNfdmFyaWFibGUoKSkKLQl2YWxfbm8t PnZhcl92YWx1ZSgpLT5hZGRfcHJlaW5pdF9zdGF0ZW1lbnQodGhpcy0+Z29nb18sIHMpOworCXsK KwkgIHZhbF9uby0+dmFyX3ZhbHVlKCktPmFkZF9wcmVpbml0X3N0YXRlbWVudCh0aGlzLT5nb2dv Xywgcyk7CisJICBpZiAobm8tPmlzX3ZhcmlhYmxlKCkpCisJICAgIHRoaXMtPmdvZ29fLT5yZWNv cmRfdmFyX2RlcGVuZHNfb24obm8tPnZhcl92YWx1ZSgpLCB2YWxfbm8pOworCX0KICAgICB9CiAg IGVsc2UgaWYgKCFuby0+aXNfc2luaygpKQogICAgIHsKQEAgLTIxMTAsNyArMjExOCwxMSBAQCBQ YXJzZTo6aW5pdF92YXJzX2Zyb21fdHlwZV9ndWFyZChjb25zdCBUeXBlZF9pZGVudGlmaWVyX2xp c3QqIHZhcnMsCiAgIGVsc2UgaWYgKCF2YWxfbm8tPmlzX3NpbmsoKSkKICAgICB7CiAgICAgICBp ZiAodmFsX25vLT5pc192YXJpYWJsZSgpKQotCXZhbF9uby0+dmFyX3ZhbHVlKCktPmFkZF9wcmVp bml0X3N0YXRlbWVudCh0aGlzLT5nb2dvXywgcyk7CisJeworCSAgdmFsX25vLT52YXJfdmFsdWUo KS0+YWRkX3ByZWluaXRfc3RhdGVtZW50KHRoaXMtPmdvZ29fLCBzKTsKKwkgIGlmIChuby0+aXNf dmFyaWFibGUoKSkKKwkgICAgdGhpcy0+Z29nb18tPnJlY29yZF92YXJfZGVwZW5kc19vbihuby0+ dmFyX3ZhbHVlKCksIHZhbF9ubyk7CisJfQogICAgIH0KICAgZWxzZSBpZiAoIW5vLT5pc19zaW5r KCkpCiAgICAgewo= --00000000000064c24605e2c626b8--