Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1v1XOA-009jO1-7m for pgsql-hackers@arkaria.postgresql.org; Wed, 24 Sep 2025 21:51:02 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1v1XO8-00Fz5J-3i for pgsql-hackers@arkaria.postgresql.org; Wed, 24 Sep 2025 21:51:00 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1v1XO7-00Fz5B-Nw for pgsql-hackers@lists.postgresql.org; Wed, 24 Sep 2025 21:50:59 +0000 Received: from mail-ej1-x631.google.com ([2a00:1450:4864:20::631]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1v1XO3-002hNE-2Z for pgsql-hackers@lists.postgresql.org; Wed, 24 Sep 2025 21:50:59 +0000 Received: by mail-ej1-x631.google.com with SMTP id a640c23a62f3a-b2ebb73dab4so6455166b.0 for ; Wed, 24 Sep 2025 14:50:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1758750656; x=1759355456; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=uEnTbf75vRUDQKnEr/hLn9mu+6cXZJsmgHqfvx4iR1I=; b=dYNiads0Mm3R7COmLt0ciWU705hv+9cy2jTZGh+8rYfoi9p5OaMiaHrY0f8IkD4at8 KYSYSZ4BQ44QYWf2rD3HFHB9U1MK9HGbCQLZg5XnZSkFTNYt2PWTcrPJYzSyEcXdWGom mD5A+E55ACcz/s7iwp2hATj209XIkNPVk57PAIhcU3+3onuQMl29RY1neVno1tgGlCaf 7ZYeR0T+s/okHop5XU32PNypmf+mZHcKmRcbxOQVevCA5hi+7hHp3VIRrjFQJxp4ATBq aw7PWr8W+gclG1UNkNbF016HmQ4TZeHR4RHvsfdZscxrpzlQ6DGygbmIGVzclR8Bj6PP CGpA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758750656; x=1759355456; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=uEnTbf75vRUDQKnEr/hLn9mu+6cXZJsmgHqfvx4iR1I=; b=ry7oCbzqXq6vyC3lGf8WrTado1az+6kFJIza86YDiCH/zxHvxkP4tKf+LwEfSNzTuv Hki1yjLXS3sxgtfxZuoLrl3kkakeL1bCwu20cr1hr87sgcpgGLwQypfozq72KEEaXjT2 ShHKfSejbquJWVldhoU2GbsQSGqTt9AROvwc2y7yNgAlblx6bVTHB+TXDvBfIZoUwRFN JrjBVvHOYU6CDPvCFQXF+Jm7J0GRCbKR22AD3rSkURMkFzguN6OzYgvXBwtKETROG1w/ SIgVUDNoc0I8cryarG9F6+6AXqURHiAfbDJOVv6PjO3UbXNdjgVLLBsAchN4uoQPT9u2 GETA== X-Gm-Message-State: AOJu0YwdNVqCtc2iHFYXUZWGlBYirOsdlbDbLfA4yyNOj86UpIPp0KGk Mj5yr0hlOqnW31EDEbxoAUDOeUf0XNpzJMxzNKYizFjW9KKNRVfIQJLvHFMrpgwAaiENFsOiSBT CNFhc6oOMXPLEiiCswOlG6lO5qWKUUvM= X-Gm-Gg: ASbGncvlga2Bou8hMOth3yZ3gswY8OCN7lieAGk7cDWA2+TCisG10iBj26ed32dr9Jo DpGOpdjrEUj/7AbgufHk4lA6Cp1Z2dmo39/3hal1JBW5GYI099cxTxiSzu5YXwlEuJd++aGPKsz UAAzUqsyvsFW2caMfpgM3vDwQ3BbnwBACT8I2Rq6xa1PfkVopZKENWsXV+GPeLcKGbJtHhO6gvk Sb3qrTu X-Google-Smtp-Source: AGHT+IF/+rpcdcG1vQShr4Bhx23DeqJVh9l/3y66KHf94xJN1IB7VED7qfQHhK4jJA2vhjb7JhQruLUTeDWQTMQ662E= X-Received: by 2002:a05:6402:23d6:b0:62f:3041:c7d4 with SMTP id 4fb4d7f45d1cf-6349fab030amr407549a12.7.1758750656234; Wed, 24 Sep 2025 14:50:56 -0700 (PDT) MIME-Version: 1.0 References: <20250911054220.3784-1-root@ip-172-31-36-228.ec2.internal> In-Reply-To: From: Andrew Kim Date: Wed, 24 Sep 2025 14:50:44 -0700 X-Gm-Features: AS18NWAAYTOCXjETWaHL7BR8YtTPq9o0dg6MKd4otUmEEQuEuEh3GBPeNlhCwv8 Message-ID: Subject: Re: Proposal for enabling auto-vectorization for checksum calculations To: John Naylor Cc: pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="0000000000001d4e0d063f930c7b" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000001d4e0d063f930c7b Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Sep 23, 2025 at 11:32 PM John Naylor johncnaylorls@gmail.com wrote: There is no attachment in this thread, so it's not showing up in the commitfest entry (which will need to be moved to next open commitfest), so it's not getting CI testing: https://commitfest.postgresql.org/patch/5726/ Note that the whole series must be attached in a single email, or it won't get automated testing. Thanks, John. I see the issue now =E2=80=94 I=E2=80=99ll attach the entire = patch series in a single email so it shows up properly in the commitfest and gets CI coverage. Please find attached v6 of the patchset, updated per your feedback. Best regards, Andrew Kim On Tue, Sep 23, 2025 at 11:32=E2=80=AFPM John Naylor wrote: > > On Thu, Sep 11, 2025 at 1:55=E2=80=AFPM root wrot= e: > > Thanks for the feedback. This is v5 of the patchset, updated following = your comments: > > > > - Moved the function pointer definitions out of common headers and > > into src/port, consistent with existing practice. > > There is no attachment in this thread, so it's not showing up in the > commitfest entry (which will need to be moved to next open > commitfest), so it's not getting CI testing: > > https://commitfest.postgresql.org/patch/5726/ > > Note that the whole series must be attached in a single email, or it > won't get automated testing. > > -- > John Naylor > Amazon Web Services --0000000000001d4e0d063f930c7b Content-Type: application/octet-stream; name="v5-0002-Benchmark-code-for-postgres-checksums.patch" Content-Disposition: attachment; filename="v5-0002-Benchmark-code-for-postgres-checksums.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfying6t1 RnJvbSA5NDE2MGRjYTU0NzhlNzEzYmNhYWI0MjM4OTIwN2VlMWVhYzNkNTUzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcga2ltIDxhbmRyZXcua2ltQGludGVsLmNvbT4KRGF0 ZTogV2VkLCAxMCBTZXAgMjAyNSAxNjoxMjo0NCAtMDcwMApTdWJqZWN0OiBbUEFUQ0ggMi8yXSBC ZW5jaG1hcmsgY29kZSBmb3IgcG9zdGdyZXMgY2hlY2tzdW1zCgotLS0KIGNvbnRyaWIvbWVzb24u YnVpbGQgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxICsKIGNvbnRyaWIvcGdfY2hlY2tz dW1fYmVuY2gvbWVzb24uYnVpbGQgICAgICAgICB8IDIzICsrKysrKysrKysrKysKIC4uLi9wZ19j aGVja3N1bV9iZW5jaC0tMS4wLnNxbCAgICAgICAgICAgICAgICB8ICA4ICsrKysrCiBjb250cmli L3BnX2NoZWNrc3VtX2JlbmNoL3BnX2NoZWNrc3VtX2JlbmNoLmMgfCAzNCArKysrKysrKysrKysr KysrKysrCiAuLi4vcGdfY2hlY2tzdW1fYmVuY2guY29udHJvbCAgICAgICAgICAgICAgICAgfCAg NCArKysKIC4uLi9zcWwvcGdfY2hlY2tzdW1fYmVuY2guc3FsICAgICAgICAgICAgICAgICB8IDE3 ICsrKysrKysrKysKIDYgZmlsZXMgY2hhbmdlZCwgODcgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IGNvbnRyaWIvcGdfY2hlY2tzdW1fYmVuY2gvbWVzb24uYnVpbGQKIGNyZWF0ZSBt b2RlIDEwMDY0NCBjb250cmliL3BnX2NoZWNrc3VtX2JlbmNoL3BnX2NoZWNrc3VtX2JlbmNoLS0x LjAuc3FsCiBjcmVhdGUgbW9kZSAxMDA2NDQgY29udHJpYi9wZ19jaGVja3N1bV9iZW5jaC9wZ19j aGVja3N1bV9iZW5jaC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgY29udHJpYi9wZ19jaGVja3N1bV9i ZW5jaC9wZ19jaGVja3N1bV9iZW5jaC5jb250cm9sCiBjcmVhdGUgbW9kZSAxMDA2NDQgY29udHJp Yi9wZ19jaGVja3N1bV9iZW5jaC9zcWwvcGdfY2hlY2tzdW1fYmVuY2guc3FsCgpkaWZmIC0tZ2l0 IGEvY29udHJpYi9tZXNvbi5idWlsZCBiL2NvbnRyaWIvbWVzb24uYnVpbGQKaW5kZXggZWQzMGVl N2Q2MzkuLmZlNTE0OWFhZGZmIDEwMDY0NAotLS0gYS9jb250cmliL21lc29uLmJ1aWxkCisrKyBi L2NvbnRyaWIvbWVzb24uYnVpbGQKQEAgLTEyLDYgKzEyLDcgQEAgY29udHJpYl9kb2NfYXJncyA9 IHsKICAgJ2luc3RhbGxfZGlyJzogY29udHJpYl9kb2NfZGlyLAogfQogCitzdWJkaXIoJ3BnX2No ZWNrc3VtX2JlbmNoJykKIHN1YmRpcignYW1jaGVjaycpCiBzdWJkaXIoJ2F1dGhfZGVsYXknKQog c3ViZGlyKCdhdXRvX2V4cGxhaW4nKQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19jaGVja3N1bV9i ZW5jaC9tZXNvbi5idWlsZCBiL2NvbnRyaWIvcGdfY2hlY2tzdW1fYmVuY2gvbWVzb24uYnVpbGQK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjMyY2NkOWVmYTBmCi0tLSAv ZGV2L251bGwKKysrIGIvY29udHJpYi9wZ19jaGVja3N1bV9iZW5jaC9tZXNvbi5idWlsZApAQCAt MCwwICsxLDIzIEBACisjIENvcHlyaWdodCAoYykgMjAyMi0yMDI1LCBQb3N0Z3JlU1FMIEdsb2Jh bCBEZXZlbG9wbWVudCBHcm91cAorCitwZ19jaGVja3N1bV9iZW5jaF9zb3VyY2VzID0gZmlsZXMo CisgICdwZ19jaGVja3N1bV9iZW5jaC5jJywKKykKKworaWYgaG9zdF9zeXN0ZW0gPT0gJ3dpbmRv d3MnCisgIHBnX2NoZWNrc3VtX2JlbmNoX3NvdXJjZXMgKz0gcmNfbGliX2dlbi5wcm9jZXNzKHdp bjMydmVyX3JjLCBleHRyYV9hcmdzOiBbCisgICAgJy0tTkFNRScsICdwZ19jaGVja3N1bV9iZW5j aCcsCisgICAgJy0tRklMRURFU0MnLCAncGdfY2hlY2tzdW1fYmVuY2gnLF0pCitlbmRpZgorCitw Z19jaGVja3N1bV9iZW5jaCA9IHNoYXJlZF9tb2R1bGUoJ3BnX2NoZWNrc3VtX2JlbmNoJywKKyAg cGdfY2hlY2tzdW1fYmVuY2hfc291cmNlcywKKyAga3dhcmdzOiBjb250cmliX21vZF9hcmdzLAor KQorY29udHJpYl90YXJnZXRzICs9IHBnX2NoZWNrc3VtX2JlbmNoCisKK2luc3RhbGxfZGF0YSgK KyAgJ3BnX2NoZWNrc3VtX2JlbmNoLS0xLjAuc3FsJywKKyAgJ3BnX2NoZWNrc3VtX2JlbmNoLmNv bnRyb2wnLAorICBrd2FyZ3M6IGNvbnRyaWJfZGF0YV9hcmdzLAorKQpkaWZmIC0tZ2l0IGEvY29u dHJpYi9wZ19jaGVja3N1bV9iZW5jaC9wZ19jaGVja3N1bV9iZW5jaC0tMS4wLnNxbCBiL2NvbnRy aWIvcGdfY2hlY2tzdW1fYmVuY2gvcGdfY2hlY2tzdW1fYmVuY2gtLTEuMC5zcWwKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjVmMTNjYmUzYzVlCi0tLSAvZGV2L251bGwK KysrIGIvY29udHJpYi9wZ19jaGVja3N1bV9iZW5jaC9wZ19jaGVja3N1bV9iZW5jaC0tMS4wLnNx bApAQCAtMCwwICsxLDggQEAKKy8qIGNvbnRyaWIvcGdfY2hlY2tzdW1fYmVuY2gvcGdfY2hlY2tz dW1fYmVuY2gtLTEuMC5zcWwgKi8KKworLS0gY29tcGxhaW4gaWYgc2NyaXB0IGlzIHNvdXJjZWQg aW4gcHNxbCwgcmF0aGVyIHRoYW4gdmlhIENSRUFURSBFWFRFTlNJT04KKy0tIFxlY2hvIFVzZSAi Q1JFQVRFIEVYVEVOU0lPTiBwZ19jaGVja3N1bV9iZW5jaCIgdG8gbG9hZCB0aGlzIGZpbGUuIFxx dWl0CisKK0NSRUFURSBGVU5DVElPTiBkcml2ZV9wZ19jaGVja3N1bShwYWdlX2NvdW50IGludCkK KwlSRVRVUk5TIHBnX2NhdGFsb2cudm9pZAorCUFTICdNT0RVTEVfUEFUSE5BTUUnIExBTkdVQUdF IEM7CmRpZmYgLS1naXQgYS9jb250cmliL3BnX2NoZWNrc3VtX2JlbmNoL3BnX2NoZWNrc3VtX2Jl bmNoLmMgYi9jb250cmliL3BnX2NoZWNrc3VtX2JlbmNoL3BnX2NoZWNrc3VtX2JlbmNoLmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmY0MGYzMzVmZjU5Ci0tLSAvZGV2 L251bGwKKysrIGIvY29udHJpYi9wZ19jaGVja3N1bV9iZW5jaC9wZ19jaGVja3N1bV9iZW5jaC5j CkBAIC0wLDAgKzEsMzQgQEAKKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorI2luY2x1ZGUgImZtZ3Iu aCIKKyNpbmNsdWRlICJzdG9yYWdlL2NoZWNrc3VtX2ltcGwuaCIKKworI2luY2x1ZGUgPHN0ZGlv Lmg+CisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisKK1BHX01PRFVMRV9NQUdJQzsKKworI2RlZmluZSBS RVBFQVRTIDEwMDAwMDAKKworUEdfRlVOQ1RJT05fSU5GT19WMShkcml2ZV9wZ19jaGVja3N1bSk7 CitEYXR1bQorZHJpdmVfcGdfY2hlY2tzdW0oUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlpbnQgcGFn ZV9jb3VudCA9IFBHX0dFVEFSR19JTlQzMigwKTsKKworCVBHQ2hlY2tzdW1tYWJsZVBhZ2UgKiBw YWdlcyA9IHBhbGxvYyhwYWdlX2NvdW50ICogc2l6ZW9mKFBHQ2hlY2tzdW1tYWJsZVBhZ2UpKTsK KwlzcmFuZCgwKTsKKwlmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhZ2VfY291bnQgKiBzaXplb2Yo UEdDaGVja3N1bW1hYmxlUGFnZSk7IGkrKyl7CisJCWNoYXIgKiBieXRlX3B0ciA9IChjaGFyICop IHBhZ2VzOworCQlieXRlX3B0cltpXSA9IHJhbmQoKSAlIDI1NjsKKwl9CisKKwlmb3IgKGludCBp ID0gMDsgaSA8IFJFUEVBVFM7IGkrKyl7CisJCWNvbnN0IFBHQ2hlY2tzdW1tYWJsZVBhZ2UgKiB0 ZXN0X3BhZ2UgPSBwYWdlcyArIChpICUgcGFnZV9jb3VudCk7CisJCXZvbGF0aWxlIHVpbnQzMiBy ZXN1bHQgPSBwZ19jaGVja3N1bV9ibG9jayh0ZXN0X3BhZ2UpOworCQkodm9pZCkgcmVzdWx0Owor CX0KKworCXBmcmVlKCh2b2lkICopIHBhZ2VzKTsKKworCVBHX1JFVFVSTl9WT0lEKCk7Cit9CmRp ZmYgLS1naXQgYS9jb250cmliL3BnX2NoZWNrc3VtX2JlbmNoL3BnX2NoZWNrc3VtX2JlbmNoLmNv bnRyb2wgYi9jb250cmliL3BnX2NoZWNrc3VtX2JlbmNoL3BnX2NoZWNrc3VtX2JlbmNoLmNvbnRy b2wKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjRhNGUyYzkzNjNjCi0t LSAvZGV2L251bGwKKysrIGIvY29udHJpYi9wZ19jaGVja3N1bV9iZW5jaC9wZ19jaGVja3N1bV9i ZW5jaC5jb250cm9sCkBAIC0wLDAgKzEsNCBAQAorY29tbWVudCA9ICdwZ19jaGVja3N1bSBiZW5j aG1hcmsnCitkZWZhdWx0X3ZlcnNpb24gPSAnMS4wJworbW9kdWxlX3BhdGhuYW1lID0gJyRsaWJk aXIvcGdfY2hlY2tzdW1fYmVuY2gnCityZWxvY2F0YWJsZSA9IHRydWUKZGlmZiAtLWdpdCBhL2Nv bnRyaWIvcGdfY2hlY2tzdW1fYmVuY2gvc3FsL3BnX2NoZWNrc3VtX2JlbmNoLnNxbCBiL2NvbnRy aWIvcGdfY2hlY2tzdW1fYmVuY2gvc3FsL3BnX2NoZWNrc3VtX2JlbmNoLnNxbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNGIzNDc2OTk5NTMKLS0tIC9kZXYvbnVsbAor KysgYi9jb250cmliL3BnX2NoZWNrc3VtX2JlbmNoL3NxbC9wZ19jaGVja3N1bV9iZW5jaC5zcWwK QEAgLTAsMCArMSwxNyBAQAorQ1JFQVRFIEVYVEVOU0lPTiBwZ19jaGVja3N1bV9iZW5jaDsKKwor U0VMRUNUIGRyaXZlX3BnX2NoZWNrc3VtKC0xKTsKKworXHRpbWluZyBvbgorCitTRUxFQ1QgZHJp dmVfcGdfY2hlY2tzdW0oMSk7CitTRUxFQ1QgZHJpdmVfcGdfY2hlY2tzdW0oMik7CitTRUxFQ1Qg ZHJpdmVfcGdfY2hlY2tzdW0oNCk7CitTRUxFQ1QgZHJpdmVfcGdfY2hlY2tzdW0oOCk7CitTRUxF Q1QgZHJpdmVfcGdfY2hlY2tzdW0oMTYpOworU0VMRUNUIGRyaXZlX3BnX2NoZWNrc3VtKDMyKTsK K1NFTEVDVCBkcml2ZV9wZ19jaGVja3N1bSg2NCk7CitTRUxFQ1QgZHJpdmVfcGdfY2hlY2tzdW0o MTI4KTsKK1NFTEVDVCBkcml2ZV9wZ19jaGVja3N1bSgyNTYpOworU0VMRUNUIGRyaXZlX3BnX2No ZWNrc3VtKDUxMik7CitTRUxFQ1QgZHJpdmVfcGdfY2hlY2tzdW0oMTAyNCk7Ci0tIAoyLjQzLjAK Cg== --0000000000001d4e0d063f930c7b Content-Type: application/octet-stream; name="v5-0001-Enable-autovectorizing-pg_checksum_block.patch" Content-Disposition: attachment; filename="v5-0001-Enable-autovectorizing-pg_checksum_block.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfying6g0 RnJvbSA5ODJiZTkwMDZjZGI1ODRmMDI4NzU0OGRhNjM3ZjQxYzNmODk4NzQ3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcga2ltIDxhbmRyZXcua2ltQGludGVsLmNvbT4KRGF0 ZTogVHVlLCAyMyBTZXAgMjAyNSAxNzo0NDoxOCAtMDcwMApTdWJqZWN0OiBbUEFUQ0ggMS8xXSBF bmFibGUtYXV0b3ZlY3Rvcml6aW5nLXBnX2NoZWNrc3VtX2Jsb2NrCgotLS0KIGNvbmZpZy9jLWNv bXBpbGVyLm00ICAgICAgICAgICAgICAgIHwgIDMxICsrKysrCiBjb25maWd1cmUgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICA1MiArKysrKysrKwogY29uZmlndXJlLmFjICAgICAgICAgICAg ICAgICAgICAgICAgfCAgIDkgKysKIG1lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgICAgICAg IHwgIDI4ICsrKysKIHNyYy9pbmNsdWRlL3BnX2NvbmZpZy5oLmluICAgICAgICAgIHwgICAzICsK IHNyYy9pbmNsdWRlL3N0b3JhZ2UvY2hlY2tzdW1faW1wbC5oIHwgIDkwICsrKy0tLS0tLS0tLS0K IHNyYy9wb3J0L01ha2VmaWxlICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9wb3J0L21l c29uLmJ1aWxkICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9wb3J0L3BnX2NoZWNrc3VtX2Rp c3BhdGNoLmMgICAgIHwgMTk1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDkgZmlsZXMg Y2hhbmdlZCwgMzM5IGluc2VydGlvbnMoKyksIDcxIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy9wb3J0L3BnX2NoZWNrc3VtX2Rpc3BhdGNoLmMKCmRpZmYgLS1naXQgYS9jb25m aWcvYy1jb21waWxlci5tNCBiL2NvbmZpZy9jLWNvbXBpbGVyLm00CmluZGV4IDIzNmE1OWU4NTM2 Li5iY2MxMzk4ZDUxYSAxMDA2NDQKLS0tIGEvY29uZmlnL2MtY29tcGlsZXIubTQKKysrIGIvY29u ZmlnL2MtY29tcGlsZXIubTQKQEAgLTcxMSw2ICs3MTEsMzcgQEAgZmkKIHVuZGVmaW5lKFtBY19j YWNoZXZhcl0pZG5sCiBdKSMgUEdBQ19YU0FWRV9JTlRSSU5TSUNTCiAKKyMgUEdBQ19BVlgyX1NV UFBPUlQKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ2hlY2sgaWYgdGhlIGNv bXBpbGVyIHN1cHBvcnRzIEFWWDIgaW4gYXR0cmlidXRlKCh0YXJnZXQpKQorIyBhbmQgdXNpbmcg QVZYMiBpbnRyaW5zaWNzIGluIHRob3NlIGZ1bmN0aW9ucworIworIyBJZiB0aGUgaW50cmluc2lj cyBhcmUgc3VwcG9ydGVkLCBzZXRzIHBnYWNfYXZ4Ml9zdXBwb3J0LgorQUNfREVGVU4oW1BHQUNf QVZYMl9TVVBQT1JUXSwKK1tkZWZpbmUoW0FjX2NhY2hldmFyXSwgW0FTX1RSX1NIKFtwZ2FjX2N2 X2F2eDJfc3VwcG9ydF0pXSlkbmwKK0FDX0NBQ0hFX0NIRUNLKFtmb3IgQVZYMiBzdXBwb3J0XSwg W0FjX2NhY2hldmFyXSwKK1tBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFsjaW5jbHVk ZSA8aW1taW50cmluLmg+CisgICAgI2luY2x1ZGUgPHN0ZGludC5oPgorICAgICNpZiBkZWZpbmVk KF9faGFzX2F0dHJpYnV0ZSkgJiYgX19oYXNfYXR0cmlidXRlICh0YXJnZXQpCisgICAgX19hdHRy aWJ1dGVfXygodGFyZ2V0KCJhdngyIikpKQorICAgICNlbmRpZgorICAgIHN0YXRpYyBpbnQgYXZ4 Ml90ZXN0KHZvaWQpCisgICAgeworICAgICAgY29uc3QgY2hhciBidWZAPDpAc2l6ZW9mKF9fbTI1 NmkpQDo+QDsKKyAgICAgIF9fbTI1NmkgYWNjdW0gPSBfbW0yNTZfbG9hZHVfc2kyNTYoKGNvbnN0 IF9fbTI1NmkgKikgYnVmKTsKKwkgIGFjY3VtID0gX21tMjU2X2FkZF9lcGkzMihhY2N1bSwgYWNj dW0pOworICAgICAgaW50IHJlc3VsdCA9IF9tbTI1Nl9leHRyYWN0X2VwaTMyKGFjY3VtLCAwKTsK KyAgICAgIHJldHVybiAoaW50KSByZXN1bHQ7CisgICAgfV0sCisgIFtyZXR1cm4gYXZ4Ml90ZXN0 KCk7XSldLAorICBbQWNfY2FjaGV2YXI9eWVzXSwKKyAgW0FjX2NhY2hldmFyPW5vXSldKQoraWYg dGVzdCB4IiRBY19jYWNoZXZhciIgPSB4InllcyI7IHRoZW4KKyAgcGdhY19hdngyX3N1cHBvcnQ9 eWVzCitmaQordW5kZWZpbmUoW0FjX2NhY2hldmFyXSlkbmwKK10pIyBQR0FDX0FWWDJfU1VQUE9S VAorCiAjIFBHQUNfQVZYNTEyX1BPUENOVF9JTlRSSU5TSUNTCiAjIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCiAjIENoZWNrIGlmIHRoZSBjb21waWxlciBzdXBwb3J0cyB0aGUgQVZYLTUx MiBwb3Bjb3VudCBpbnN0cnVjdGlvbnMgdXNpbmcgdGhlCmRpZmYgLS1naXQgYS9jb25maWd1cmUg Yi9jb25maWd1cmUKaW5kZXggMjJjZDg2NjE0N2IuLjIwOTg0OWM3NzNjIDEwMDc1NQotLS0gYS9j b25maWd1cmUKKysrIGIvY29uZmlndXJlCkBAIC0xNzU2Miw2ICsxNzU2Miw1OCBAQCAkYXNfZWNo byAiI2RlZmluZSBIQVZFX1hTQVZFX0lOVFJJTlNJQ1MgMSIgPj5jb25mZGVmcy5oCiAKIGZpCiAK KyMgQ2hlY2sgZm9yIEFWWDIgdGFyZ2V0IGFuZCBpbnRyaW5zaWMgc3VwcG9ydAorIworaWYgdGVz dCB4IiRob3N0X2NwdSIgPSB4Ing4Nl82NCI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgQVZYMiBzdXBwb3J0IiA+JjUKKyRhc19l Y2hvX24gImNoZWNraW5nIGZvciBBVlgyIHN1cHBvcnQuLi4gIiA+JjY7IH0KK2lmICR7cGdhY19j dl9hdngyX3N1cHBvcnQrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAi ID4mNgorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0 CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaW5jbHVkZSA8aW1taW50cmluLmg+CisgICAgI2lu Y2x1ZGUgPHN0ZGludC5oPgorICAgICNpZiBkZWZpbmVkKF9faGFzX2F0dHJpYnV0ZSkgJiYgX19o YXNfYXR0cmlidXRlICh0YXJnZXQpCisgICAgX19hdHRyaWJ1dGVfXygodGFyZ2V0KCJhdngyIikp KQorICAgICNlbmRpZgorICAgIHN0YXRpYyBpbnQgYXZ4Ml90ZXN0KHZvaWQpCisgICAgeworICAg ICAgY29uc3QgY2hhciBidWZbc2l6ZW9mKF9fbTI1NmkpXTsKKyAgICAgIF9fbTI1NmkgYWNjdW0g PSBfbW0yNTZfbG9hZHVfc2kyNTYoKGNvbnN0IF9fbTI1NmkgKikgYnVmKTsKKwkgIGFjY3VtID0g X21tMjU2X2FkZF9lcGkzMihhY2N1bSwgYWNjdW0pOworICAgICAgaW50IHJlc3VsdCA9IF9tbTI1 Nl9leHRyYWN0X2VwaTMyKGFjY3VtLCAwKTsKKyAgICAgIHJldHVybiAoaW50KSByZXN1bHQ7Cisg ICAgfQoraW50CittYWluICgpCit7CityZXR1cm4gYXZ4Ml90ZXN0KCk7CisgIDsKKyAgcmV0dXJu IDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAg cGdhY19jdl9hdngyX3N1cHBvcnQ9eWVzCitlbHNlCisgIHBnYWNfY3ZfYXZ4Ml9zdXBwb3J0PW5v CitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAg Y29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCit7ICRhc19lY2hvICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHBnYWNfY3ZfYXZ4Ml9zdXBwb3J0IiA+ JjUKKyRhc19lY2hvICIkcGdhY19jdl9hdngyX3N1cHBvcnQiID4mNjsgfQoraWYgdGVzdCB4IiRw Z2FjX2N2X2F2eDJfc3VwcG9ydCIgPSB4InllcyI7IHRoZW4KKyAgcGdhY19hdngyX3N1cHBvcnQ9 eWVzCitmaQorCisgIGlmIHRlc3QgeCIkcGdhY19hdngyX3N1cHBvcnQiID0geCJ5ZXMiOyB0aGVu CisKKyRhc19lY2hvICIjZGVmaW5lIFVTRV9BVlgyX1dJVEhfUlVOVElNRV9DSEVDSyAxIiA+PmNv bmZkZWZzLmgKKworICBmaQorZmkKKwogIyBDaGVjayBmb3IgQVZYLTUxMiBwb3Bjb3VudCBpbnRy aW5zaWNzCiAjCiBpZiB0ZXN0IHgiJGhvc3RfY3B1IiA9IHgieDg2XzY0IjsgdGhlbgpkaWZmIC0t Z2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCmluZGV4IGU0NDk0M2FhNmZlLi5jMDYx YjFhODU0YyAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAt MjA5MSw2ICsyMDkxLDE1IEBAIGlmIHRlc3QgeCIkcGdhY194c2F2ZV9pbnRyaW5zaWNzIiA9IHgi eWVzIjsgdGhlbgogICBBQ19ERUZJTkUoSEFWRV9YU0FWRV9JTlRSSU5TSUNTLCAxLCBbRGVmaW5l IHRvIDEgaWYgeW91IGhhdmUgWFNBVkUgaW50cmluc2ljcy5dKQogZmkKIAorIyBDaGVjayBmb3Ig QVZYMiB0YXJnZXQgYW5kIGludHJpbnNpYyBzdXBwb3J0CisjCitpZiB0ZXN0IHgiJGhvc3RfY3B1 IiA9IHgieDg2XzY0IjsgdGhlbgorICBQR0FDX0FWWDJfU1VQUE9SVCgpCisgIGlmIHRlc3QgeCIk cGdhY19hdngyX3N1cHBvcnQiID0geCJ5ZXMiOyB0aGVuCisgICAgQUNfREVGSU5FKFVTRV9BVlgy X1dJVEhfUlVOVElNRV9DSEVDSywgMSwgW0RlZmluZSB0byAxIHRvIHVzZSBBVlgyIGluc3RydWN0 aW9ucyB3aXRoIGEgcnVudGltZSBjaGVjay5dKQorICBmaQorZmkKKwogIyBDaGVjayBmb3IgQVZY LTUxMiBwb3Bjb3VudCBpbnRyaW5zaWNzCiAjCiBpZiB0ZXN0IHgiJGhvc3RfY3B1IiA9IHgieDg2 XzY0IjsgdGhlbgpkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAppbmRleCAz OTU0MTZhNjA2MC4uYTM3ZWY4OGJmMTYgMTAwNjQ0Ci0tLSBhL21lc29uLmJ1aWxkCisrKyBiL21l c29uLmJ1aWxkCkBAIC0yMjkyLDYgKzIyOTIsMzQgQEAgaW50IG1haW4odm9pZCkKIAogZW5kaWYK IAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCisjIENoZWNrIGZvciB0aGUgYXZhaWxhYmlsaXR5IG9mIEFWWDIgc3VwcG9ydAor IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCisKK2lmIGhvc3RfY3B1ID09ICd4ODZfNjQnCisKKyAgcHJvZyA9ICcnJworI2luY2x1 ZGUgPGltbWludHJpbi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2lmIGRlZmluZWQoX19oYXNf YXR0cmlidXRlKSAmJiBfX2hhc19hdHRyaWJ1dGUgKHRhcmdldCkKK19fYXR0cmlidXRlX18oKHRh cmdldCgiYXZ4MiIpKSkKKyNlbmRpZgoraW50IG1haW4odm9pZCkKK3sKKyAgY29uc3QgY2hhciBi dWZbc2l6ZW9mKF9fbTI1NmkpXTsKKyAgX19tMjU2aSBhY2N1bSA9IF9tbTI1Nl9sb2FkdV9zaTI1 NigoY29uc3QgX19tMjU2aSAqKSBidWYpOworICBhY2N1bSA9IF9tbTI1Nl9hZGRfZXBpMzIoYWNj dW0sIGFjY3VtKTsKKyAgaW50IHJlc3VsdCA9IF9tbTI1Nl9leHRyYWN0X2VwaTMyKGFjY3VtLCAw KTsKKyAgcmV0dXJuIChpbnQpIHJlc3VsdDsKK30KKycnJworCisgIGlmIGNjLmxpbmtzKHByb2cs IG5hbWU6ICdBVlgyIHN1cHBvcnQnLCBhcmdzOiB0ZXN0X2NfYXJncykKKyAgICBjZGF0YS5zZXQo J1VTRV9BVlgyX1dJVEhfUlVOVElNRV9DSEVDSycsIDEpCisgIGVuZGlmCisKK2VuZGlmCisKIAog IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCiAjIENoZWNrIGZvciB0aGUgYXZhaWxhYmlsaXR5IG9mIEFWWC01MTIgcG9wY291bnQg aW50cmluc2ljcy4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BnX2NvbmZpZy5oLmluIGIvc3Jj L2luY2x1ZGUvcGdfY29uZmlnLmguaW4KaW5kZXggYzRkYzVkNzJiZGIuLjk4N2Y5YjVjNzdjIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wZ19jb25maWcuaC5pbgorKysgYi9zcmMvaW5jbHVkZS9w Z19jb25maWcuaC5pbgpAQCAtNjc1LDYgKzY3NSw5IEBACiAvKiBEZWZpbmUgdG8gMSB0byB1c2Ug QVZYLTUxMiBDUkMgYWxnb3JpdGhtcyB3aXRoIGEgcnVudGltZSBjaGVjay4gKi8KICN1bmRlZiBV U0VfQVZYNTEyX0NSQzMyQ19XSVRIX1JVTlRJTUVfQ0hFQ0sKIAorLyogRGVmaW5lIHRvIDEgdG8g dXNlIEFWWDIgaW5zdHJ1Y3Rpb25zIHdpdGggYSBydW50aW1lIGNoZWNrLiAqLworI3VuZGVmIFVT RV9BVlgyX1dJVEhfUlVOVElNRV9DSEVDSworCiAvKiBEZWZpbmUgdG8gMSB0byB1c2UgQVZYLTUx MiBwb3Bjb3VudCBpbnN0cnVjdGlvbnMgd2l0aCBhIHJ1bnRpbWUgY2hlY2suICovCiAjdW5kZWYg VVNFX0FWWDUxMl9QT1BDTlRfV0lUSF9SVU5USU1FX0NIRUNLCiAKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL3N0b3JhZ2UvY2hlY2tzdW1faW1wbC5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9jaGVj a3N1bV9pbXBsLmgKaW5kZXggZGE4N2Q2MWJhNTIuLjgyZTUyNTUyOWY0IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9zdG9yYWdlL2NoZWNrc3VtX2ltcGwuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9y YWdlL2NoZWNrc3VtX2ltcGwuaApAQCAtMTAxLDEyICsxMDEsMTQgQEAKICAqLwogCiAjaW5jbHVk ZSAic3RvcmFnZS9idWZwYWdlLmgiCisjaW5jbHVkZSAicGdfY29uZmlnLmgiCiAKIC8qIG51bWJl ciBvZiBjaGVja3N1bXMgdG8gY2FsY3VsYXRlIGluIHBhcmFsbGVsICovCiAjZGVmaW5lIE5fU1VN UyAzMgogLyogcHJpbWUgbXVsdGlwbGllciBvZiBGTlYtMWEgaGFzaCAqLwogI2RlZmluZSBGTlZf UFJJTUUgMTY3Nzc2MTkKIAorCiAvKiBVc2UgYSB1bmlvbiBzbyB0aGF0IHRoaXMgY29kZSBpcyB2 YWxpZCB1bmRlciBzdHJpY3QgYWxpYXNpbmcgKi8KIHR5cGVkZWYgdW5pb24KIHsKQEAgLTE0Miw3 NCArMTQ0LDIwIEBAIGRvIHsgXAogICogQmxvY2sgY2hlY2tzdW0gYWxnb3JpdGhtLiAgVGhlIHBh Z2UgbXVzdCBiZSBhZGVxdWF0ZWx5IGFsaWduZWQKICAqIChhdCBsZWFzdCBvbiA0LWJ5dGUgYm91 bmRhcnkpLgogICovCi1zdGF0aWMgdWludDMyCi1wZ19jaGVja3N1bV9ibG9jayhjb25zdCBQR0No ZWNrc3VtbWFibGVQYWdlICpwYWdlKQotewotCXVpbnQzMgkJc3Vtc1tOX1NVTVNdOwotCXVpbnQz MgkJcmVzdWx0ID0gMDsKLQl1aW50MzIJCWksCi0JCQkJajsKLQotCS8qIGVuc3VyZSB0aGF0IHRo ZSBzaXplIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgYWxnb3JpdGhtICovCi0JQXNzZXJ0KHNpemVv ZihQR0NoZWNrc3VtbWFibGVQYWdlKSA9PSBCTENLU1opOwotCi0JLyogaW5pdGlhbGl6ZSBwYXJ0 aWFsIGNoZWNrc3VtcyB0byB0aGVpciBjb3JyZXNwb25kaW5nIG9mZnNldHMgKi8KLQltZW1jcHko c3VtcywgY2hlY2tzdW1CYXNlT2Zmc2V0cywgc2l6ZW9mKGNoZWNrc3VtQmFzZU9mZnNldHMpKTsK LQotCS8qIG1haW4gY2hlY2tzdW0gY2FsY3VsYXRpb24gKi8KLQlmb3IgKGkgPSAwOyBpIDwgKHVp bnQzMikgKEJMQ0tTWiAvIChzaXplb2YodWludDMyKSAqIE5fU1VNUykpOyBpKyspCi0JCWZvciAo aiA9IDA7IGogPCBOX1NVTVM7IGorKykKLQkJCUNIRUNLU1VNX0NPTVAoc3Vtc1tqXSwgcGFnZS0+ ZGF0YVtpXVtqXSk7Ci0KLQkvKiBmaW5hbGx5IGFkZCBpbiB0d28gcm91bmRzIG9mIHplcm9lcyBm b3IgYWRkaXRpb25hbCBtaXhpbmcgKi8KLQlmb3IgKGkgPSAwOyBpIDwgMjsgaSsrKQotCQlmb3Ig KGogPSAwOyBqIDwgTl9TVU1TOyBqKyspCi0JCQlDSEVDS1NVTV9DT01QKHN1bXNbal0sIDApOwot Ci0JLyogeG9yIGZvbGQgcGFydGlhbCBjaGVja3N1bXMgdG9nZXRoZXIgKi8KLQlmb3IgKGkgPSAw OyBpIDwgTl9TVU1TOyBpKyspCi0JCXJlc3VsdCBePSBzdW1zW2ldOwotCi0JcmV0dXJuIHJlc3Vs dDsKLX0KLQotLyoKLSAqIENvbXB1dGUgdGhlIGNoZWNrc3VtIGZvciBhIFBvc3RncmVzIHBhZ2Uu Ci0gKgotICogVGhlIHBhZ2UgbXVzdCBiZSBhZGVxdWF0ZWx5IGFsaWduZWQgKGF0IGxlYXN0IG9u IGEgNC1ieXRlIGJvdW5kYXJ5KS4KLSAqIEJld2FyZSBhbHNvIHRoYXQgdGhlIGNoZWNrc3VtIGZp ZWxkIG9mIHRoZSBwYWdlIGlzIHRyYW5zaWVudGx5IHplcm9lZC4KLSAqCi0gKiBUaGUgY2hlY2tz dW0gaW5jbHVkZXMgdGhlIGJsb2NrIG51bWJlciAodG8gZGV0ZWN0IHRoZSBjYXNlIHdoZXJlIGEg cGFnZSBpcwotICogc29tZWhvdyBtb3ZlZCB0byBhIGRpZmZlcmVudCBsb2NhdGlvbiksIHRoZSBw YWdlIGhlYWRlciAoZXhjbHVkaW5nIHRoZQotICogY2hlY2tzdW0gaXRzZWxmKSwgYW5kIHRoZSBw YWdlIGRhdGEuCi0gKi8KLXVpbnQxNgotcGdfY2hlY2tzdW1fcGFnZShjaGFyICpwYWdlLCBCbG9j a051bWJlciBibGtubykKLXsKLQlQR0NoZWNrc3VtbWFibGVQYWdlICpjcGFnZSA9IChQR0NoZWNr c3VtbWFibGVQYWdlICopIHBhZ2U7Ci0JdWludDE2CQlzYXZlX2NoZWNrc3VtOwotCXVpbnQzMgkJ Y2hlY2tzdW07Ci0KLQkvKiBXZSBvbmx5IGNhbGN1bGF0ZSB0aGUgY2hlY2tzdW0gZm9yIHByb3Bl cmx5LWluaXRpYWxpemVkIHBhZ2VzICovCi0JQXNzZXJ0KCFQYWdlSXNOZXcoKFBhZ2UpIHBhZ2Up KTsKLQotCS8qCi0JICogU2F2ZSBwZF9jaGVja3N1bSBhbmQgdGVtcG9yYXJpbHkgc2V0IGl0IHRv IHplcm8sIHNvIHRoYXQgdGhlIGNoZWNrc3VtCi0JICogY2FsY3VsYXRpb24gaXNuJ3QgYWZmZWN0 ZWQgYnkgdGhlIG9sZCBjaGVja3N1bSBzdG9yZWQgb24gdGhlIHBhZ2UuCi0JICogUmVzdG9yZSBp dCBhZnRlciwgYmVjYXVzZSBhY3R1YWxseSB1cGRhdGluZyB0aGUgY2hlY2tzdW0gaXMgTk9UIHBh cnQgb2YKLQkgKiB0aGUgQVBJIG9mIHRoaXMgZnVuY3Rpb24uCi0JICovCi0Jc2F2ZV9jaGVja3N1 bSA9IGNwYWdlLT5waGRyLnBkX2NoZWNrc3VtOwotCWNwYWdlLT5waGRyLnBkX2NoZWNrc3VtID0g MDsKLQljaGVja3N1bSA9IHBnX2NoZWNrc3VtX2Jsb2NrKGNwYWdlKTsKLQljcGFnZS0+cGhkci5w ZF9jaGVja3N1bSA9IHNhdmVfY2hlY2tzdW07Ci0KLQkvKiBNaXggaW4gdGhlIGJsb2NrIG51bWJl ciB0byBkZXRlY3QgdHJhbnNwb3NlZCBwYWdlcyAqLwotCWNoZWNrc3VtIF49IGJsa25vOwotCi0J LyoKLQkgKiBSZWR1Y2UgdG8gYSB1aW50MTYgKHRvIGZpdCBpbiB0aGUgcGRfY2hlY2tzdW0gZmll bGQpIHdpdGggYW4gb2Zmc2V0IG9mCi0JICogb25lLiBUaGF0IGF2b2lkcyBjaGVja3N1bXMgb2Yg emVybywgd2hpY2ggc2VlbXMgbGlrZSBhIGdvb2QgaWRlYS4KLQkgKi8KLQlyZXR1cm4gKHVpbnQx NikgKChjaGVja3N1bSAlIDY1NTM1KSArIDEpOwotfQorI2RlZmluZSBQR19ERUNMQVJFX0NIRUNL U1VNX0lTQShJU0FOQU1FKSBcCit1aW50MzIgXAorcGdfY2hlY2tzdW1fYmxvY2tfIyNJU0FOQU1F KGNvbnN0IFBHQ2hlY2tzdW1tYWJsZVBhZ2UgKnBhZ2UpOworCisjZGVmaW5lIFBHX0RFRklORV9D SEVDS1NVTV9JU0EoSVNBTkFNRSkgXAorcGdfYXR0cmlidXRlX3RhcmdldCgjSVNBTkFNRSkgXAor dWludDMyIHBnX2NoZWNrc3VtX2Jsb2NrXyMjSVNBTkFNRShjb25zdCBQR0NoZWNrc3VtbWFibGVQ YWdlICpwYWdlKSBcCisKKy8qIERlY2xhcmUgSVNBIGltcGxlbWVudGF0aW9ucyAoZGVjbGFyYXRp b25zIG9ubHkgaW4gaGVhZGVyKSAqLworI2lmZGVmIFVTRV9BVlgyX1dJVEhfUlVOVElNRV9DSEVD SworUEdfREVDTEFSRV9DSEVDS1NVTV9JU0EoYXZ4Mik7CisjZW5kaWYKK1BHX0RFQ0xBUkVfQ0hF Q0tTVU1fSVNBKGRlZmF1bHQpOworCit1aW50MzIgcGdfY2hlY2tzdW1fYmxvY2tfZGlzcGF0Y2go Y29uc3QgUEdDaGVja3N1bW1hYmxlUGFnZSAqcGFnZSk7CitleHRlcm4gdWludDMyICgqcGdfY2hl Y2tzdW1fYmxvY2spKGNvbnN0IFBHQ2hlY2tzdW1tYWJsZVBhZ2UgKnBhZ2UpOworZXh0ZXJuIHVp bnQxNiBwZ19jaGVja3N1bV9wYWdlKGNoYXIgKnBhZ2UsIEJsb2NrTnVtYmVyIGJsa25vKTsKZGlm ZiAtLWdpdCBhL3NyYy9wb3J0L01ha2VmaWxlIGIvc3JjL3BvcnQvTWFrZWZpbGUKaW5kZXggNDI3 NDk0OWRmYTQuLjI3NDIzZjEwNThiIDEwMDY0NAotLS0gYS9zcmMvcG9ydC9NYWtlZmlsZQorKysg Yi9zcmMvcG9ydC9NYWtlZmlsZQpAQCAtNDgsNiArNDgsNyBAQCBPQkpTID0gXAogCXBnX251bWEu byBcCiAJcGdfcG9wY291bnRfYWFyY2g2NC5vIFwKIAlwZ19wb3Bjb3VudF9hdng1MTIubyBcCisJ cGdfY2hlY2tzdW1fZGlzcGF0Y2gubyBcCiAJcGdfc3Ryb25nX3JhbmRvbS5vIFwKIAlwZ2NoZWNr ZGlyLm8gXAogCXBnbWtkaXJwLm8gXApkaWZmIC0tZ2l0IGEvc3JjL3BvcnQvbWVzb24uYnVpbGQg Yi9zcmMvcG9ydC9tZXNvbi5idWlsZAppbmRleCBmYzdiMDU5ZmVlNS4uYzRiYmU5ZjJlY2UgMTAw NjQ0Ci0tLSBhL3NyYy9wb3J0L21lc29uLmJ1aWxkCisrKyBiL3NyYy9wb3J0L21lc29uLmJ1aWxk CkBAIC0xMSw2ICsxMSw3IEBAIHBncG9ydF9zb3VyY2VzID0gWwogICAncGdfbnVtYS5jJywKICAg J3BnX3BvcGNvdW50X2FhcmNoNjQuYycsCiAgICdwZ19wb3Bjb3VudF9hdng1MTIuYycsCisgICdw Z19jaGVja3N1bV9kaXNwYXRjaC5jJywKICAgJ3BnX3N0cm9uZ19yYW5kb20uYycsCiAgICdwZ2No ZWNrZGlyLmMnLAogICAncGdta2RpcnAuYycsCmRpZmYgLS1naXQgYS9zcmMvcG9ydC9wZ19jaGVj a3N1bV9kaXNwYXRjaC5jIGIvc3JjL3BvcnQvcGdfY2hlY2tzdW1fZGlzcGF0Y2guYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjRiMjk3YzgzMWYKLS0tIC9kZXYvbnVs bAorKysgYi9zcmMvcG9ydC9wZ19jaGVja3N1bV9kaXNwYXRjaC5jCkBAIC0wLDAgKzEsMTk1IEBA CisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBwZ19jaGVja3N1bV9kaXNwYXRjaC5jCisgKiAg ICAgICAgSG9sZHMgdGhlIEFWWDIgcGdfcG9wY291bnQoKSBpbXBsZW1lbnRhdGlvbi4KKyAqCisg KiBDb3B5cmlnaHQgKGMpIDIwMjQtMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQg R3JvdXAKKyAqCisgKiBJREVOVElGSUNBVElPTgorICogICAgICAgIHNyYy9wb3J0L3BnX2NoZWNr c3VtX2Rpc3BhdGNoLmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2luY2x1ZGUgImMu aCIKKyNpbmNsdWRlICJzdG9yYWdlL2NoZWNrc3VtX2ltcGwuaCIKKworI2lmIGRlZmluZWQoSEFW RV9fR0VUX0NQVUlEKSB8fCBkZWZpbmVkKEhBVkVfX0dFVF9DUFVJRF9DT1VOVCkKKyNpbmNsdWRl IDxjcHVpZC5oPgorI2VuZGlmCisKKyNpZmRlZiBIQVZFX1hTQVZFX0lOVFJJTlNJQ1MKKyNpbmNs dWRlIDxpbW1pbnRyaW4uaD4KKyNlbmRpZgorCisjaWYgZGVmaW5lZChIQVZFX19DUFVJRCkgfHwg ZGVmaW5lZChIQVZFX19DUFVJREVYKQorI2luY2x1ZGUgPGludHJpbi5oPgorI2VuZGlmCisKKyNp bmNsdWRlICJwb3J0L3BnX2JpdHV0aWxzLmgiCisKKy8qCisgKiBEb2VzIENQVUlEIHNheSB0aGVy ZSdzIHN1cHBvcnQgZm9yIFhTQVZFIGluc3RydWN0aW9ucz8KKyAqLworc3RhdGljIGlubGluZSBi b29sCit4c2F2ZV9hdmFpbGFibGUodm9pZCkKK3sKKwl1bnNpZ25lZCBpbnQgZXh4WzRdID0gezAs IDAsIDAsIDB9OworCisjaWYgZGVmaW5lZChIQVZFX19HRVRfQ1BVSUQpCisJX19nZXRfY3B1aWQo MSwgJmV4eFswXSwgJmV4eFsxXSwgJmV4eFsyXSwgJmV4eFszXSk7CisjZWxpZiBkZWZpbmVkKEhB VkVfX0NQVUlEKQorCV9fY3B1aWQoZXh4LCAxKTsKKyNlbGlmIGRlZmluZWQoX194ODZfNjRfXykK KyNlcnJvciBjcHVpZCBpbnN0cnVjdGlvbiBub3QgYXZhaWxhYmxlCisjZW5kaWYKKwlyZXR1cm4g KGV4eFsyXSAmICgxIDw8IDI3KSkgIT0gMDsgICAgICAgLyogb3N4c2F2ZSAqLworfQorCisvKgor ICogRG9lcyBYR0VUQlYgc2F5IHRoZSBZTU0gcmVnaXN0ZXJzIGFyZSBlbmFibGVkPworICoKKyAq IE5COiBDYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIHZlcmlmeWluZyB0aGF0IHhzYXZlX2F2YWls YWJsZSgpIHJldHVybnMgdHJ1ZQorICogYmVmb3JlIGNhbGxpbmcgdGhpcy4KKyAqLworI2lmZGVm IEhBVkVfWFNBVkVfSU5UUklOU0lDUworcGdfYXR0cmlidXRlX3RhcmdldCgieHNhdmUiKQorI2Vu ZGlmCitzdGF0aWMgaW5saW5lIGJvb2wKK3ltbV9yZWdzX2F2YWlsYWJsZSh2b2lkKQoreworI2lm ZGVmIEhBVkVfWFNBVkVfSU5UUklOU0lDUworCXJldHVybiAoX3hnZXRidigwKSAmIDB4MDYpID09 IDB4MDY7CisjZWxzZQorCXJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCisvKgorICogRG9lcyBD UFVJRCBzYXkgdGhlcmUncyBzdXBwb3J0IGZvciBBVlgtMgorICovCitzdGF0aWMgaW5saW5lIGJv b2wKK2F2eDJfYXZhaWxhYmxlKHZvaWQpCit7CisjaWYgZGVmaW5lZCAoVVNFX0FWWDJfV0lUSF9S VU5USU1FX0NIRUNLKSAmJiBkZWZpbmVkKF9feDg2XzY0X18pCisJdW5zaWduZWQgaW50IGV4eFs0 XSA9IHswLCAwLCAwLCAwfTsKKwlpZiAoIXhzYXZlX2F2YWlsYWJsZSgpIHx8ICF5bW1fcmVnc19h dmFpbGFibGUoKSkgcmV0dXJuIGZhbHNlOworCisjaWYgZGVmaW5lZChIQVZFX19HRVRfQ1BVSURf Q09VTlQpCisJX19nZXRfY3B1aWRfY291bnQoNywgMCwgJmV4eFswXSwgJmV4eFsxXSwgJmV4eFsy XSwgJmV4eFszXSk7CisjZWxpZiBkZWZpbmVkKEhBVkVfX0NQVUlERVgpCisJX19jcHVpZGV4KGV4 eCwgNywgMCk7CisjZWxzZQorI2Vycm9yIGNwdWlkIGluc3RydWN0aW9uIG5vdCBhdmFpbGFibGUK KyNlbmRpZgorCXJldHVybiAoZXh4WzFdICYgKDEgPDwgNSkpICE9IDA7IC8qIGF2eDIgKi8KKyNl bHNlCisJcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKKworLyogZGVmYXVsdCBjaGVja3N1bSBp bXBsZW1lbnRhdGlvbiAqLworUEdfREVGSU5FX0NIRUNLU1VNX0lTQShkZWZhdWx0KQoreworCXVp bnQzMiBzdW1zW05fU1VNU10sIHJlc3VsdCA9IDA7CisJdWludDMyIGksIGo7CisKKwlBc3NlcnQo c2l6ZW9mKFBHQ2hlY2tzdW1tYWJsZVBhZ2UpID09IEJMQ0tTWik7CisJbWVtY3B5KHN1bXMsIGNo ZWNrc3VtQmFzZU9mZnNldHMsIHNpemVvZihjaGVja3N1bUJhc2VPZmZzZXRzKSk7CisKKwlmb3Ig KGkgPSAwOyBpIDwgKHVpbnQzMikoQkxDS1NaIC8gKHNpemVvZih1aW50MzIpICogTl9TVU1TKSk7 IGkrKykKKwkJZm9yIChqID0gMDsgaiA8IE5fU1VNUzsgaisrKQorCQkJQ0hFQ0tTVU1fQ09NUChz dW1zW2pdLCBwYWdlLT5kYXRhW2ldW2pdKTsKKworCWZvciAoaSA9IDA7IGkgPCAyOyBpKyspCisJ CWZvciAoaiA9IDA7IGogPCBOX1NVTVM7IGorKykKKwkJCUNIRUNLU1VNX0NPTVAoc3Vtc1tqXSwg MCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgTl9TVU1TOyBpKyspCisJCXJlc3VsdCBePSBzdW1zW2ld OworCisJcmV0dXJuIHJlc3VsdDsKK30KKworI2lmZGVmIFVTRV9BVlgyX1dJVEhfUlVOVElNRV9D SEVDSworUEdfREVGSU5FX0NIRUNLU1VNX0lTQShhdngyKQoreworCXVpbnQzMiBzdW1zW05fU1VN U10sIHJlc3VsdCA9IDA7CisJdWludDMyIGksIGo7CisKKwlBc3NlcnQoc2l6ZW9mKFBHQ2hlY2tz dW1tYWJsZVBhZ2UpID09IEJMQ0tTWik7CisJbWVtY3B5KHN1bXMsIGNoZWNrc3VtQmFzZU9mZnNl dHMsIHNpemVvZihjaGVja3N1bUJhc2VPZmZzZXRzKSk7CisKKwlmb3IgKGkgPSAwOyBpIDwgKHVp bnQzMikoQkxDS1NaIC8gKHNpemVvZih1aW50MzIpICogTl9TVU1TKSk7IGkrKykKKwkJZm9yIChq ID0gMDsgaiA8IE5fU1VNUzsgaisrKQorCQkJQ0hFQ0tTVU1fQ09NUChzdW1zW2pdLCBwYWdlLT5k YXRhW2ldW2pdKTsKKworCWZvciAoaSA9IDA7IGkgPCAyOyBpKyspCisJCWZvciAoaiA9IDA7IGog PCBOX1NVTVM7IGorKykKKwkJCUNIRUNLU1VNX0NPTVAoc3Vtc1tqXSwgMCk7CisKKwlmb3IgKGkg PSAwOyBpIDwgTl9TVU1TOyBpKyspCisJCXJlc3VsdCBePSBzdW1zW2ldOworCisJcmV0dXJuIHJl c3VsdDsKK30KKyNlbmRpZgorCisvKiBGdW5jdGlvbiBwb2ludGVyIC0gZXh0ZXJuYWwgbGlua2Fn ZSAoZGVjbGFyZWQgZXh0ZXJuIGluIGhlYWRlcikgKi8KK3VpbnQzMiAoKnBnX2NoZWNrc3VtX2Js b2NrKShjb25zdCBQR0NoZWNrc3VtbWFibGVQYWdlICpwYWdlKSA9IHBnX2NoZWNrc3VtX2Jsb2Nr X2Rpc3BhdGNoOworCisvKiBEaXNwYXRjaCBmdW5jdGlvbjogc2ltcGxlLCBzYWZlICovCit1aW50 MzIgcGdfY2hlY2tzdW1fYmxvY2tfZGlzcGF0Y2goY29uc3QgUEdDaGVja3N1bW1hYmxlUGFnZSAq cGFnZSkKK3sKKyNpZmRlZiBVU0VfQVZYMl9XSVRIX1JVTlRJTUVfQ0hFQ0sKKwlpZiAoYXZ4Ml9h dmFpbGFibGUoKSkKKwl7CisJCS8qIG9wdGlvbmFsOiBwYXRjaCBwb2ludGVyIHNvIG5leHQgY2Fs bCBnb2VzIGRpcmVjdGx5ICovCisJCXBnX2NoZWNrc3VtX2Jsb2NrID0gcGdfY2hlY2tzdW1fYmxv Y2tfYXZ4MjsKKwkJcmV0dXJuIHBnX2NoZWNrc3VtX2Jsb2NrX2F2eDIocGFnZSk7CisJfQorI2Vu ZGlmCisJLyogZmFsbGJhY2sgKi8KKwlwZ19jaGVja3N1bV9ibG9jayA9IHBnX2NoZWNrc3VtX2Js b2NrX2RlZmF1bHQ7CisJcmV0dXJuIHBnX2NoZWNrc3VtX2Jsb2NrX2RlZmF1bHQocGFnZSk7Cit9 CisKKy8qCisgKiBDb21wdXRlIHRoZSBjaGVja3N1bSBmb3IgYSBQb3N0Z3JlcyBwYWdlLgorICoK KyAqIFRoZSBwYWdlIG11c3QgYmUgYWRlcXVhdGVseSBhbGlnbmVkIChhdCBsZWFzdCBvbiBhIDQt Ynl0ZSBib3VuZGFyeSkuCisgKiBCZXdhcmUgYWxzbyB0aGF0IHRoZSBjaGVja3N1bSBmaWVsZCBv ZiB0aGUgcGFnZSBpcyB0cmFuc2llbnRseSB6ZXJvZWQuCisgKgorICogVGhlIGNoZWNrc3VtIGlu Y2x1ZGVzIHRoZSBibG9jayBudW1iZXIgKHRvIGRldGVjdCB0aGUgY2FzZSB3aGVyZSBhIHBhZ2Ug aXMKKyAqIHNvbWVob3cgbW92ZWQgdG8gYSBkaWZmZXJlbnQgbG9jYXRpb24pLCB0aGUgcGFnZSBo ZWFkZXIgKGV4Y2x1ZGluZyB0aGUKKyAqIGNoZWNrc3VtIGl0c2VsZiksIGFuZCB0aGUgcGFnZSBk YXRhLgorICovCit1aW50MTYgcGdfY2hlY2tzdW1fcGFnZShjaGFyICpwYWdlLCBCbG9ja051bWJl ciBibGtubykKK3sKKwlQR0NoZWNrc3VtbWFibGVQYWdlICpjcGFnZSA9IChQR0NoZWNrc3VtbWFi bGVQYWdlICopIHBhZ2U7CisJdWludDE2IHNhdmVfY2hlY2tzdW07CisJdWludDMyIGNoZWNrc3Vt OworCisJLyogV2Ugb25seSBjYWxjdWxhdGUgdGhlIGNoZWNrc3VtIGZvciBwcm9wZXJseS1pbml0 aWFsaXplZCBwYWdlcyAqLworCUFzc2VydCghUGFnZUlzTmV3KChQYWdlKSBwYWdlKSk7CisKKwkv KgorCSAqIFNhdmUgcGRfY2hlY2tzdW0gYW5kIHRlbXBvcmFyaWx5IHNldCBpdCB0byB6ZXJvLCBz byB0aGF0IHRoZSBjaGVja3N1bQorCSAqIGNhbGN1bGF0aW9uIGlzbid0IGFmZmVjdGVkIGJ5IHRo ZSBvbGQgY2hlY2tzdW0gc3RvcmVkIG9uIHRoZSBwYWdlLgorCSAqIFJlc3RvcmUgaXQgYWZ0ZXIs IGJlY2F1c2UgYWN0dWFsbHkgdXBkYXRpbmcgdGhlIGNoZWNrc3VtIGlzIE5PVCBwYXJ0IG9mCisJ ICogdGhlIEFQSSBvZiB0aGlzIGZ1bmN0aW9uLgorCSAqLworCXNhdmVfY2hlY2tzdW0gPSBjcGFn ZS0+cGhkci5wZF9jaGVja3N1bTsKKwljcGFnZS0+cGhkci5wZF9jaGVja3N1bSA9IDA7CisJY2hl Y2tzdW0gPSBwZ19jaGVja3N1bV9ibG9jayhjcGFnZSk7CisJY3BhZ2UtPnBoZHIucGRfY2hlY2tz dW0gPSBzYXZlX2NoZWNrc3VtOworCisJLyogTWl4IGluIHRoZSBibG9jayBudW1iZXIgdG8gZGV0 ZWN0IHRyYW5zcG9zZWQgcGFnZXMgKi8KKwljaGVja3N1bSBePSBibGtubzsKKworCS8qCisJICog UmVkdWNlIHRvIGEgdWludDE2ICh0byBmaXQgaW4gdGhlIHBkX2NoZWNrc3VtIGZpZWxkKSB3aXRo IGFuIG9mZnNldCBvZgorCSAqIG9uZS4gVGhhdCBhdm9pZHMgY2hlY2tzdW1zIG9mIHplcm8sIHdo aWNoIHNlZW1zIGxpa2UgYSBnb29kIGlkZWEuCisJICovCisJcmV0dXJuICh1aW50MTYpKChjaGVj a3N1bSAlIDY1NTM1KSArIDEpOworfQotLSAKMi40My4wCgo= --0000000000001d4e0d063f930c7b--