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.96) (envelope-from ) id 1w5cHb-003RGF-1N for pgsql-hackers@arkaria.postgresql.org; Thu, 26 Mar 2026 04:25:23 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w5cHZ-000yAP-2v for pgsql-hackers@arkaria.postgresql.org; Thu, 26 Mar 2026 04:25:22 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w5cHZ-000yAH-0i for pgsql-hackers@lists.postgresql.org; Thu, 26 Mar 2026 04:25:22 +0000 Received: from mail-lf1-x12d.google.com ([2a00:1450:4864:20::12d]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w5cHX-000000015F3-1ONt for pgsql-hackers@lists.postgresql.org; Thu, 26 Mar 2026 04:25:20 +0000 Received: by mail-lf1-x12d.google.com with SMTP id 2adb3069b0e04-5a12cd0bd79so697455e87.2 for ; Wed, 25 Mar 2026 21:25:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774499118; cv=none; d=google.com; s=arc-20240605; b=AVmo8IMYDZImNtwuWQdlNR/EAGv4OJHuTaqSGzzG0NjAAkuPD/qISumDSXqoZ/jeCL 1SkJlZHa0sR/8+YbUV0lMQf4RPUOJI+/HBFl7QJlf1lAiqkPnDUzyPrKJxyLRj1Cqkoa HDjrvGi9Ub6JQis71uYW+E5uE1zVvw6V9XI/9U8CgD5o4+CQJsJa6Fj3iamPeYGweh4f TgqiEXG3CGvcMnm08jhJrG2H3m6l7ZLEav2n4uAF2DxxmcgC2dPq0jyDu8wHxZk/Z9h8 0lGQhWjyKQ22k6qNKeSdRshSC7+Pq6Xt2CtTQP1/Bxjk/p8pwtp30RWFclyrVvWCBJdh DpJg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=wx3y9uu0h/gY/gIZhOpf2MNGcarXyb0JkMfSb4msymk=; fh=9zT1nopWrRHifrXiJGLNLKmNgK700GwsubduLmzGJ58=; b=g0NQ/mQyuONEkhrqe+AyV0baylj852mNvYdeXtaZ0UX+bVF8OLld4C2T2mWu2RJMR7 KJXySwSs7rU1R30XvTfo200fKTyg0Ro5CFksVk5gAZE0R23jU8mJ1BRniemyQG82pDei IcXfKHJdxkd7UyqpXPG2EUNQgm7f0uJhUQA2IeHG5w0iYp9roOxaXrCGwQ5X35st1zW8 2Qc0U7fpfeqqdQvR2NHXVvXGnOLrylhEn90Q2dM16OTv1/z0s6OPzljcV9TUoIIMVaHn DfuJ9mpmIjESSucDWHVrJe7dsOOST2w3/XY5o+EGKjs/Ma24VWaT2DOsEIyv80O0u+4O p0GQ==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774499118; x=1775103918; 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=wx3y9uu0h/gY/gIZhOpf2MNGcarXyb0JkMfSb4msymk=; b=ZjzP8ui5AGbr1xrIL9YpSD8+svjVdVesgIZ+YdjpjV5yjNj7p8PgK/AEAzFNwr6NHm rcReP4ecjnlRjRuFO8jNsQRALJRTVAsIYpaggd03fP/HIqFwM9QrcV+/APOzpJr5pb2A 98YpCiiltND+YKToUIyb8z4t7KX5UJUgmbwcLTbW1zkIyYjAmq690vis+8Ndqxp66RPu qdnluPRdvF3rIGJt+0t+cNo/XJkjfucdMDz8C2HE2qzL+uRfLTMeBMtFrBVsq8DPyZ0m dnex5wulGrya169YcQHVBT9eRJix33Q2qBV4LEx8ocPmIrO6rbIe/wCeBYXH+dagLldT j4tw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774499118; x=1775103918; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=wx3y9uu0h/gY/gIZhOpf2MNGcarXyb0JkMfSb4msymk=; b=PJxkffgKcgua3BShHiuUq3P3CcrAh56KCzdD4Z3HXhECEiSawV224B1HDOODNN8OnU 73Xo4jhCDrOdl/MPe/b3Kkzz3vTL0MZugG780N3jXJG2IG8ZNJvOiyXOPBo/6wZ4voff e9x1ls/zA7Sqn2tXuRfzInudVsDhnMiEsh/IvoYIxSCp+Fhui93Fm/peSdPNXKOkJVkJ iB2JGPQsoiCPOv2LmDewWKfnLV7dvrSAGIgIfyCwkLW8pYpj6xOE+ZXlGmE2HXVSCuWH /JC/j8fSLtJpigr5i9M+4gOdbuMhNQ31hVakCvVa+rwLNk6tR4GIA53dvvz8M8yhM4xc 2TTg== X-Forwarded-Encrypted: i=1; AJvYcCXLTQ3waDOaHHBeDx24xAWu08OvfhN98leeSmo2fS5zy3RPmUdGkGGV48XgCzadccW8i2TxnL7qpAphVneK@lists.postgresql.org X-Gm-Message-State: AOJu0YxpLLE8+98xO773lA3czoXlAowjwA0ntVv0ssbtfnGuIXS1AbQL G1HmAfOrNLHlJZ+O+G3gYSixDPCbBR/s9clzsta+6Hygs1J2XID0j1tNa7b50lBDDbS9qSPudEQ FjghDb2+iSr19lAtRPAmmTS2U1VBpYHs= X-Gm-Gg: ATEYQzz0LhsHDeQZEZ/A2I1i3Aj11N8XB3jlhsFpgkhBUuzG83O2GTexMupY4RYYb14 6+X6ow4yKH6WPsgM2Lj7hw5dZPIXDwjlXOdy44CASY3h17ibFJG3Kvr2q0BS9/ZQ/mQ1LnXtnV/ rwpaEKijXj8ZhIJDUzu6OwVOd/+P48aTSay6qh5AYaUVBUEpBQm6TGcErCq6PJTQ8knGKgmU4Vy jHnZlP1LfIuO5InAh81RA+urMWIth1kAHcbPvr5neH8KdH5vHO6CCfuPiHN4U6Dbr8KZhqa1MBi TsAUeYup5zsU1tpch6s= X-Received: by 2002:a05:6512:3d24:b0:5a2:964e:db93 with SMTP id 2adb3069b0e04-5a29b9a7c4emr2575358e87.36.1774499117571; Wed, 25 Mar 2026 21:25:17 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Ajin Cherian Date: Thu, 26 Mar 2026 15:25:03 +1100 X-Gm-Features: AQROBzBRJLu7vYurXVSfG8tfM6cU2cDuZ4jpv6dPpLnKz2_z1gGvQdn-S0ENlSE Message-ID: Subject: Re: [PATCH] Support automatic sequence replication To: "Zhijie Hou (Fujitsu)" Cc: "Hayato Kuroda (Fujitsu)" , shveta malik , Amit Kapila , Ashutosh Sharma , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000008ec048064de5c56d" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000008ec048064de5c56d Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Mar 16, 2026 at 5:59=E2=80=AFPM Zhijie Hou (Fujitsu) wrote: > Overall, we will continue working on this to improve the patch set, but w= ill > schedule it for PG20. > Just rebasing the patch so that it doesn't break cfbot. regards, Ajin Cherian Fujitsu Australia --0000000000008ec048064de5c56d Content-Type: application/octet-stream; name="v12-0003-Synchronize-sequences-directly-in-REFRESH-SEQUEN.patch" Content-Disposition: attachment; filename="v12-0003-Synchronize-sequences-directly-in-REFRESH-SEQUEN.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn6yy1jt2 RnJvbSA4MzI0OTZiNjE3NTUxNGViOGEwMDIwM2YzNzY4MDlmMzY4OGEyNmI1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBamluIENoZXJpYW4gPGl0c2FqaW5AZ21haWwuY29tPgpEYXRl OiBUaHUsIDI2IE1hciAyMDI2IDE0OjQxOjQxICsxMTAwClN1YmplY3Q6IFtQQVRDSCB2MTIgMy8z XSBTeW5jaHJvbml6ZSBzZXF1ZW5jZXMgZGlyZWN0bHkgaW4gUkVGUkVTSCBTRVFVRU5DRVMKIGNv bW1hbmQuCgpUaGUgQUxURVIgU1VCU0NSSVBUSU9OIC4uLiBSRUZSRVNIIFNFUVVFTkNFUyBjb21t YW5kIGN1cnJlbnRseSBzZXRzIGFsbApzZXF1ZW5jZSBzdGF0ZXMgaW4gcGdfc3Vic2NyaXB0aW9u X3JlbCB0byBJTklUIGFuZCByZWxpZXMgb24gdGhlIHNlcXVlbmNlIHN5bmMKd29ya2VyIHRvIHBl cmZvcm0gdGhlIGFjdHVhbCBzeW5jaHJvbml6YXRpb24gYW5kIHVwZGF0ZSBzdGF0ZXMgdG8gUkVB RFkuCgpXaXRoIHRoZSByZWNlbnQgY2hhbmdlIG1ha2luZyB0aGUgc2VxdWVuY2Ugc3luYyB3b3Jr ZXIgbG9uZy1saXZlZCwgbW9zdApzZXF1ZW5jZXMgYXJlIG5vdyBzeW5jaHJvbml6ZWQgaW4gdGhl IGJhY2tncm91bmQsIHJlZHVjaW5nIHRoZSBuZWVkIGZvcgpSRUZSRVNIIFNFUVVFTkNFUy4gSG93 ZXZlciwgdGhlIGNvbW1hbmQgcmVtYWlucyBuZWNlc3NhcnkgZm9yIHNlcXVlbmNlcyB0aGF0Cmhh dmVuJ3QgYmVlbiBzeW5jaHJvbml6ZWQuCgpUaGlzIGNvbW1pdCBlbmhhbmNlcyBSRUZSRVNIIFNF UVVFTkNFUyB0byBzeW5jaHJvbml6ZSBzZXF1ZW5jZXMgZGlyZWN0bHkgd2l0aGluCnRoZSBjb21t YW5kIGl0c2VsZiwgZWxpbWluYXRpbmcgdGhlIG92ZXJoZWFkIG9mIGxhdW5jaGluZyBhIHdvcmtl ciBhbmQgdXBkYXRpbmcKY2F0YWxvZyBlbnRyaWVzIHVubmVjZXNzYXJpbHkuCi0tLQogZG9jL3Ny Yy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbCAgICAgICAgIHwgICA1ICstCiBzcmMvYmFj a2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgICAgICAgfCAgMjcgKystLQogLi4uL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvc2VxdWVuY2VzeW5jLmMgICAgICAgIHwgMTQ4ICsrKysrKysrKysr KystLS0tLQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oICAgICAgIHwg ICA1ICsKIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzNl9zZXF1ZW5jZXMucGwgICAgICB8ICA0 OSArKysrKysKIDUgZmlsZXMgY2hhbmdlZCwgMTc2IGluc2VydGlvbnMoKyksIDU4IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwg Yi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCmluZGV4IDM4NjVmNjE3ODE2 Li5lMzQ3MmNjOTUyZSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRp b24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCkBAIC0x NzkxLDggKzE3OTEsOSBAQCBQdWJsaWNhdGlvbnM6CiAKICAgPHBhcmE+CiAgICBBIDxmaXJzdHRl cm0+c2VxdWVuY2Ugc3luY2hyb25pemF0aW9uIHdvcmtlcjwvZmlyc3R0ZXJtPiB3aWxsIGJlIHN0 YXJ0ZWQKLSAgIGFmdGVyIGV4ZWN1dGluZyBhbnkgb2YgdGhlIGFib3ZlIHN1YnNjcmliZXIgY29t bWFuZHMuIFRoZSB3b3JrZXIgd2lsbAotICAgcmVtYWluIHJ1bm5pbmcgZm9yIHRoZSBsaWZlIG9m IHRoZSBzdWJzY3JpcHRpb24sIHBlcmlvZGljYWxseQorICAgYWZ0ZXIgZXhlY3V0aW5nIDxjb21t YW5kPkNSRUFURSBTVUJTQ1JJUFRJT048L2NvbW1hbmQ+IG9yCisgICA8Y29tbWFuZD5BTFRFUiBT VUJTQ1JJUFRJT04gLi4uIFJFRlJFU0ggUFVCTElDQVRJT048L2NvbW1hbmQ+IGNvbW1hbmQuIFRo ZQorICAgd29ya2VyIHdpbGwgcmVtYWluIHJ1bm5pbmcgZm9yIHRoZSBsaWZlIG9mIHRoZSBzdWJz Y3JpcHRpb24sIHBlcmlvZGljYWxseQogICAgc3luY2hyb25pemluZyBhbGwgcHVibGlzaGVkIHNl cXVlbmNlcy4KICAgPC9wYXJhPgogICA8cGFyYT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlw dGlvbmNtZHMuYwppbmRleCA3Mzc1ZTIxNGNiNC4uYmY0ZmVmOTFmNTYgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKQEAgLTEyODgsMjUgKzEyODgsMjAgQEAgQWx0ZXJT dWJzY3JpcHRpb25fcmVmcmVzaF9zZXEoU3Vic2NyaXB0aW9uICpzdWIpCiAKIAlQR19UUlkoKTsK IAl7Ci0JCUxpc3QJICAgKnN1YnJlbF9zdGF0ZXM7Ci0KIAkJY2hlY2tfcHVibGljYXRpb25zX29y aWdpbl9zZXF1ZW5jZXMod3Jjb25uLCBzdWItPnB1YmxpY2F0aW9ucywgdHJ1ZSwKIAkJCQkJCQkJ CQkJc3ViLT5vcmlnaW4sIE5VTEwsIDAsIHN1Yi0+bmFtZSk7CiAKLQkJLyogR2V0IGxvY2FsIHNl cXVlbmNlIGxpc3QuICovCi0JCXN1YnJlbF9zdGF0ZXMgPSBHZXRTdWJzY3JpcHRpb25SZWxhdGlv bnMoc3ViLT5vaWQsIGZhbHNlLCB0cnVlLCBmYWxzZSk7Ci0JCWZvcmVhY2hfcHRyKFN1YnNjcmlw dGlvblJlbFN0YXRlLCBzdWJyZWwsIHN1YnJlbF9zdGF0ZXMpCi0JCXsKLQkJCU9pZAkJCXJlbGlk ID0gc3VicmVsLT5yZWxpZDsKLQotCQkJVXBkYXRlU3Vic2NyaXB0aW9uUmVsU3RhdGUoc3ViLT5v aWQsIHJlbGlkLCBTVUJSRUxfU1RBVEVfSU5JVCwKLQkJCQkJCQkJCSAgIEludmFsaWRYTG9nUmVj UHRyLCBmYWxzZSk7Ci0JCQllcmVwb3J0KERFQlVHMSwKLQkJCQkJZXJybXNnX2ludGVybmFsKCJz ZXF1ZW5jZSBcIiVzLiVzXCIgb2Ygc3Vic2NyaXB0aW9uIFwiJXNcIiBzZXQgdG8gSU5JVCBzdGF0 ZSIsCi0JCQkJCQkJCQlnZXRfbmFtZXNwYWNlX25hbWUoZ2V0X3JlbF9uYW1lc3BhY2UocmVsaWQp KSwKLQkJCQkJCQkJCWdldF9yZWxfbmFtZShyZWxpZCksCi0JCQkJCQkJCQlzdWItPm5hbWUpKTsK LQkJfQorCQkvKgorCQkgKiBTdG9wIHRoZSBzZXF1ZW5jZXN5bmMgd29ya2VyIHRvIHByZXZlbnQg Y29uY3VycmVudCB1cGRhdGVzLiBUaGlzCisJCSAqIGF2b2lkcyBhIHJhY2UgY29uZGl0aW9uIHdo ZXJlIHRoZSBzZXF1ZW5jZSB2YWx1ZSBjb3VsZCBiZSB1cGRhdGVkCisJCSAqIGJ5IHRoaXMgY29t bWFuZCBhbmQgdGhlbiBpbW1lZGlhdGVseSBtb3ZlZCBiYWNrd2FyZCBieSBhCisJCSAqIGNvbmN1 cnJlbnRseSBydW5uaW5nIHdvcmtlci4gU3RvcHBpbmcgdGhlIHdvcmtlciBpcyBzYWZlIGV2ZW4g aWYgaXQKKwkJICogYXR0ZW1wdHMgdG8gcmVzdGFydCwgYXMgaXQgd2lsbCB3YWl0IG9uIHRoZSBz dWJzY3JpcHRpb24gbG9jaworCQkgKiBhbHJlYWR5IGhlbGQgYnkgdGhpcyBBTFRFUiBTVUJTQ1JJ UFRJT04gY29tbWFuZC4KKwkJICovCisJCWxvZ2ljYWxyZXBfd29ya2VyX3N0b3AoV09SS0VSVFlQ RV9TRVFVRU5DRVNZTkMsIHN1Yi0+b2lkLCBJbnZhbGlkT2lkKTsKKworCQlBbHRlclN1YlN5bmNT ZXF1ZW5jZXMod3Jjb25uLCBzdWItPm9pZCwgc3ViLT5uYW1lLCBzdWItPnJ1bmFzb3duZXIpOwog CX0KIAlQR19GSU5BTExZKCk7CiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9zZXF1ZW5jZXN5bmMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvc2VxdWVuY2VzeW5jLmMKaW5kZXggZDEyYmQzMWYwOWQuLmJlYWQzMDUxNTZkIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3NlcXVlbmNlc3luYy5jCisrKyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2VxdWVuY2VzeW5jLmMKQEAgLTIxNyw3 ICsyMTcsNyBAQCBnZXRfc2VxdWVuY2VzX3N0cmluZyhMaXN0ICpzZXFpbmRleGVzLCBMaXN0ICpz ZXFpbmZvcywgU3RyaW5nSW5mbyBidWYpCiAgKi8KIHN0YXRpYyB2b2lkCiByZXBvcnRfc2VxdWVu Y2VfZXJyb3JzKExpc3QgKm1pc21hdGNoZWRfc2Vxc19pZHgsIExpc3QgKmluc3VmZnBlcm1fc2Vx c19pZHgsCi0JCQkJCSAgIExpc3QgKm1pc3Npbmdfc2Vxc19pZHgsIExpc3QgKnNlcWluZm9zKQor CQkJCQkgICBMaXN0ICptaXNzaW5nX3NlcXNfaWR4LCBMaXN0ICpzZXFpbmZvcywgY2hhciAqc3Vi bmFtZSkKIHsKIAlTdHJpbmdJbmZvCXNlcXN0cjsKIApAQCAtMjYzLDcgKzI2Myw3IEBAIHJlcG9y dF9zZXF1ZW5jZV9lcnJvcnMoTGlzdCAqbWlzbWF0Y2hlZF9zZXFzX2lkeCwgTGlzdCAqaW5zdWZm cGVybV9zZXFzX2lkeCwKIAllcmVwb3J0KEVSUk9SLAogCQkJZXJyY29kZShFUlJDT0RFX09CSkVD VF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKIAkJCWVycm1zZygibG9naWNhbCByZXBsaWNh dGlvbiBzZXF1ZW5jZSBzeW5jaHJvbml6YXRpb24gZmFpbGVkIGZvciBzdWJzY3JpcHRpb24gXCIl c1wiIiwKLQkJCQkgICBNeVN1YnNjcmlwdGlvbi0+bmFtZSkpOworCQkJCSAgIHN1Ym5hbWUpKTsK IH0KIAogLyoKQEAgLTQyMCwxMCArNDIwLDkgQEAgY2hlY2tfc2VxX3ByaXZpbGVnZXNfYW5kX2Ry aWZ0KExvZ2ljYWxSZXBTZXF1ZW5jZUluZm8gKnNlcWluZm8sCiAgKi8KIHN0YXRpYyBDb3B5U2Vx UmVzdWx0CiBjb3B5X3NlcXVlbmNlKExvZ2ljYWxSZXBTZXF1ZW5jZUluZm8gKnNlcWluZm8sIFJl bGF0aW9uIHNlcXVlbmNlX3JlbCwKLQkJCSAgYm9vbCB1cGRhdGVfbHNuKQorCQkJICBPaWQgc3Vi aWQsIGJvb2wgcnVuX2FzX293bmVyLCBib29sIHVwZGF0ZV9sc24pCiB7CiAJVXNlckNvbnRleHQg dWN4dDsKLQlib29sCQlydW5fYXNfb3duZXIgPSBNeVN1YnNjcmlwdGlvbi0+cnVuYXNvd25lcjsK IAlPaWQJCQlzZXFvaWQgPSBzZXFpbmZvLT5sb2NhbHJlbGlkOwogCUNvcHlTZXFSZXN1bHQgcmVz dWx0OwogCWJvb2wJCW5lZWRfbHNuX3VwZGF0ZSA9IGZhbHNlOwpAQCAtNDY3LDggKzQ2Niw3IEBA IGNvcHlfc2VxdWVuY2UoTG9naWNhbFJlcFNlcXVlbmNlSW5mbyAqc2VxaW5mbywgUmVsYXRpb24g c2VxdWVuY2VfcmVsLAogCQlYTG9nUmVjUHRyCWxvY2FsX3BhZ2VfbHNuOwogCiAJCS8qIEdldCB0 aGUgbG9jYWwgcGFnZSBMU04gZm9yIGNvbXBhcmlzb24gd2l0aCB0aGUgcmVtb3RlIHZhbHVlICov Ci0JCSh2b2lkKSBHZXRTdWJzY3JpcHRpb25SZWxTdGF0ZShNeVN1YnNjcmlwdGlvbi0+b2lkLAot CQkJCQkJCQkJICAgUmVsYXRpb25HZXRSZWxpZChzZXF1ZW5jZV9yZWwpLAorCQkodm9pZCkgR2V0 U3Vic2NyaXB0aW9uUmVsU3RhdGUoc3ViaWQsIFJlbGF0aW9uR2V0UmVsaWQoc2VxdWVuY2VfcmVs KSwKIAkJCQkJCQkJCSAgICZsb2NhbF9wYWdlX2xzbik7CiAKIAkJbmVlZF9sc25fdXBkYXRlID0g KGxvY2FsX3BhZ2VfbHNuICE9IHNlcWluZm8tPnBhZ2VfbHNuKTsKQEAgLTQ4MCw3ICs0NzgsNyBA QCBjb3B5X3NlcXVlbmNlKExvZ2ljYWxSZXBTZXF1ZW5jZUluZm8gKnNlcWluZm8sIFJlbGF0aW9u IHNlcXVlbmNlX3JlbCwKIAkgKiBjeWNsZSAodXBkYXRlX2xzbiBpcyB0cnVlKS4KIAkgKi8KIAlp ZiAoc2VxaW5mby0+cmVsc3RhdGUgPT0gU1VCUkVMX1NUQVRFX0lOSVQgfHwgbmVlZF9sc25fdXBk YXRlKQotCQlVcGRhdGVTdWJzY3JpcHRpb25SZWxTdGF0ZShNeVN1YnNjcmlwdGlvbi0+b2lkLCBz ZXFvaWQsIFNVQlJFTF9TVEFURV9SRUFEWSwKKwkJVXBkYXRlU3Vic2NyaXB0aW9uUmVsU3RhdGUo c3ViaWQsIHNlcW9pZCwgU1VCUkVMX1NUQVRFX1JFQURZLAogCQkJCQkJCQkgICBzZXFpbmZvLT5w YWdlX2xzbiwgZmFsc2UpOwogCiAJcmV0dXJuIENPUFlTRVFfU1VDQ0VTUzsKQEAgLTQ5OSw3ICs0 OTcsOCBAQCBjb3B5X3NlcXVlbmNlKExvZ2ljYWxSZXBTZXF1ZW5jZUluZm8gKnNlcWluZm8sIFJl bGF0aW9uIHNlcXVlbmNlX3JlbCwKICAqIFJldHVybnMgdHJ1ZS9mYWxzZSBpZiBhbnkgc2VxdWVu Y2VzIHdlcmUgYWN0dWFsbHkgY29waWVkLgogICovCiBzdGF0aWMgYm9vbAotY29weV9zZXF1ZW5j ZXMoV2FsUmVjZWl2ZXJDb25uICpjb25uLCBMaXN0ICpzZXFpbmZvcywgYm9vbCB1cGRhdGVfbHNu KQorY29weV9zZXF1ZW5jZXMoV2FsUmVjZWl2ZXJDb25uICpjb25uLCBMaXN0ICpzZXFpbmZvcywg T2lkIHN1YmlkLCBjaGFyICpzdWJuYW1lLAorCQkJICAgYm9vbCBydW5hc293bmVyLCBib29sIHVw ZGF0ZV9sc24pCiB7CiAJaW50CQkJY3VyX2JhdGNoX2Jhc2VfaW5kZXggPSAwOwogCWludAkJCW5f c2VxaW5mb3MgPSBsaXN0X2xlbmd0aChzZXFpbmZvcyk7CkBAIC01MjgsMTEgKzUyNywxNiBAQCBj b3B5X3NlcXVlbmNlcyhXYWxSZWNlaXZlckNvbm4gKmNvbm4sIExpc3QgKnNlcWluZm9zLCBib29s IHVwZGF0ZV9sc24pCiAJCWludAkJCWJhdGNoX25vX2RyaWZ0ID0gMDsKIAkJaW50CQkJYmF0Y2hf bWlzc2luZ19jb3VudDsKIAkJUmVsYXRpb24Jc2VxdWVuY2VfcmVsID0gTlVMTDsKKwkJYm9vbAkJ c3RhcnRlZF90eCA9IGZhbHNlOwogCiAJCVdhbFJjdkV4ZWNSZXN1bHQgKnJlczsKIAkJVHVwbGVU YWJsZVNsb3QgKnNsb3Q7CiAKLQkJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJaWYgKCFJ c1RyYW5zYWN0aW9uU3RhdGUoKSkKKwkJeworCQkJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsK KwkJCXN0YXJ0ZWRfdHggPSB0cnVlOworCQl9CiAKIAkJZm9yIChpbnQgaWR4ID0gY3VyX2JhdGNo X2Jhc2VfaW5kZXg7IGlkeCA8IG5fc2VxaW5mb3M7IGlkeCsrKQogCQl7CkBAIC02MjQsMTQgKzYy OCwxNSBAQCBjb3B5X3NlcXVlbmNlcyhXYWxSZWNlaXZlckNvbm4gKmNvbm4sIExpc3QgKnNlcWlu Zm9zLCBib29sIHVwZGF0ZV9sc24pCiAJCQkJCQkJCQkJCQkJJnNlcWluZm8sICZzZXFpZHgsIHNl cWluZm9zKTsKIAogCQkJaWYgKHN5bmNfc3RhdHVzID09IENPUFlTRVFfQUxMT1dFRCkKLQkJCQlz eW5jX3N0YXR1cyA9IGNvcHlfc2VxdWVuY2Uoc2VxaW5mbywgc2VxdWVuY2VfcmVsLCB1cGRhdGVf bHNuKTsKKwkJCQlzeW5jX3N0YXR1cyA9IGNvcHlfc2VxdWVuY2Uoc2VxaW5mbywgc2VxdWVuY2Vf cmVsLCBzdWJpZCwKKwkJCQkJCQkJCQkJcnVuYXNvd25lciwgdXBkYXRlX2xzbik7CiAKIAkJCXN3 aXRjaCAoc3luY19zdGF0dXMpCiAJCQl7CiAJCQkJY2FzZSBDT1BZU0VRX1NVQ0NFU1M6CiAJCQkJ CWVsb2coREVCVUcxLAogCQkJCQkJICJsb2dpY2FsIHJlcGxpY2F0aW9uIHN5bmNocm9uaXphdGlv biBoYXMgdXBkYXRlZCBzZXF1ZW5jZSBcIiVzLiVzXCIgaW4gc3Vic2NyaXB0aW9uIFwiJXNcIiIs Ci0JCQkJCQkgc2VxaW5mby0+bnNwbmFtZSwgc2VxaW5mby0+c2VxbmFtZSwgTXlTdWJzY3JpcHRp b24tPm5hbWUpOworCQkJCQkJIHNlcWluZm8tPm5zcG5hbWUsIHNlcWluZm8tPnNlcW5hbWUsIHN1 Ym5hbWUpOwogCQkJCQliYXRjaF9zdWNjZWVkZWRfY291bnQrKzsKIAkJCQkJc2VxdWVuY2VfY29w aWVkID0gdHJ1ZTsKIAkJCQkJYnJlYWs7CkBAIC03MDQsMTMgKzcwOSwxNyBAQCBjb3B5X3NlcXVl bmNlcyhXYWxSZWNlaXZlckNvbm4gKmNvbm4sIExpc3QgKnNlcWluZm9zLCBib29sIHVwZGF0ZV9s c24pCiAKIAkJZWxvZyhERUJVRzEsCiAJCQkgImxvZ2ljYWwgcmVwbGljYXRpb24gc2VxdWVuY2Ug c3luY2hyb25pemF0aW9uIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIC0gYmF0Y2ggIyVkID0gJWQg YXR0ZW1wdGVkLCAlZCBzdWNjZWVkZWQsICVkIG1pc21hdGNoZWQsICVkIGluc3VmZmljaWVudCBw ZXJtaXNzaW9uLCAlZCBtaXNzaW5nIGZyb20gcHVibGlzaGVyLCAlZCBza2lwcGVkLCAlZCBubyBk cmlmdCIsCi0JCQkgTXlTdWJzY3JpcHRpb24tPm5hbWUsCisJCQkgc3VibmFtZSwKIAkJCSAoY3Vy X2JhdGNoX2Jhc2VfaW5kZXggLyBNQVhfU0VRVUVOQ0VTX1NZTkNfUEVSX0JBVENIKSArIDEsCiAJ CQkgYmF0Y2hfc2l6ZSwgYmF0Y2hfc3VjY2VlZGVkX2NvdW50LCBiYXRjaF9taXNtYXRjaGVkX2Nv dW50LAogCQkJIGJhdGNoX2luc3VmZnBlcm1fY291bnQsIGJhdGNoX21pc3NpbmdfY291bnQsIGJh dGNoX3NraXBwZWRfY291bnQsIGJhdGNoX25vX2RyaWZ0KTsKIAotCQkvKiBDb21taXQgdGhpcyBi YXRjaCwgYW5kIHByZXBhcmUgZm9yIG5leHQgYmF0Y2ggKi8KLQkJQ29tbWl0VHJhbnNhY3Rpb25D b21tYW5kKCk7CisJCS8qCisJCSAqIENvbW1pdCB0aGlzIGJhdGNoIGlmIHN0YXJ0ZWQgYSB0cmFu c2FjdGlvbiwgYW5kIHByZXBhcmUgZm9yIG5leHQKKwkJICogYmF0Y2guCisJCSAqLworCQlpZiAo c3RhcnRlZF90eCkKKwkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCiAJCWlmIChiYXRj aF9taXNzaW5nX2NvdW50KQogCQl7CkBAIC03MzUsNyArNzQ0LDcgQEAgY29weV9zZXF1ZW5jZXMo V2FsUmVjZWl2ZXJDb25uICpjb25uLCBMaXN0ICpzZXFpbmZvcywgYm9vbCB1cGRhdGVfbHNuKQog CiAJLyogUmVwb3J0IG1pc21hdGNoZXMsIHBlcm1pc3Npb24gaXNzdWVzLCBvciBtaXNzaW5nIHNl cXVlbmNlcyAqLwogCXJlcG9ydF9zZXF1ZW5jZV9lcnJvcnMobWlzbWF0Y2hlZF9zZXFzX2lkeCwg aW5zdWZmcGVybV9zZXFzX2lkeCwKLQkJCQkJCSAgIG1pc3Npbmdfc2Vxc19pZHgsIHNlcWluZm9z KTsKKwkJCQkJCSAgIG1pc3Npbmdfc2Vxc19pZHgsIHNlcWluZm9zLCBzdWJuYW1lKTsKIAogCXJl dHVybiBzZXF1ZW5jZV9jb3BpZWQ7CiB9CkBAIC03NTEsMzcgKzc2MCwyOCBAQCBpbnZhbGlkYXRl X3N5bmNpbmdfc2VxdWVuY2VfaW5mb3MoRGF0dW0gYXJnLCBTeXNDYWNoZUlkZW50aWZpZXIgY2Fj aGVpZCwKIH0KIAogLyoKLSAqIEdldCB0aGUgbGlzdCBvZiBzZXF1ZW5jZSBpbmZvcm1hdGlvbiBm b3IgdGhlIGN1cnJlbnQgc3Vic2NyaXB0aW9uLgorICogR2V0IHRoZSBsaXN0IG9mIHNlcXVlbmNl IGluZm9ybWF0aW9uIGZvciB0aGUgZ2l2ZW4gc3Vic2NyaXB0aW9uIGZyb20KKyAqIGNhdGFsb2cu CiAgKgotICogUmV0dXJuIGNhY2hlZCBzZXF1ZW5jZSBzdGF0ZXMgaWYgdmFsaWQ7IG90aGVyd2lz ZSBmZXRjaGVzIHRoZW0gZnJvbSB0aGUKLSAqIGNhdGFsb2csIGNhY2hlcyB0aGUgcmVzdWx0LCBh bmQgcmV0dXJuIGl0LgorICogQWxsIGVudHJpZXMgaW4gdGhlIHJldHVybmVkIGxpc3QgYXJlIGFs bG9jYXRlZCBpbiB0aGUgc3BlY2lmaWVkIG1lbW9yeQorICogY29udGV4dC4KICAqLwogc3RhdGlj IExpc3QgKgotZmV0Y2hfc2VxdWVuY2VfaW5mb3Modm9pZCkKK2ZldGNoX3NlcXVlbmNlc19mcm9t X2NhdGFsb2coT2lkIHN1YmlkLCBNZW1vcnlDb250ZXh0IGN0eCkKIHsKIAlSZWxhdGlvbglyZWw7 CiAJSGVhcFR1cGxlCXR1cDsKIAlTY2FuS2V5RGF0YSBza2V5WzFdOwogCVN5c1NjYW5EZXNjIHNj YW47Ci0JT2lkCQkJc3ViaWQgPSBNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkOwotCUxpc3QJICAg KnRtcF9zZXFpbmZvcyA9IE5JTDsKKwlMaXN0CSAgICpzZXFpbmZvcyA9IE5JTDsKKwlib29sCQlz dGFydGVkX3R4ID0gZmFsc2U7CiAKLQlpZiAoc2VxdWVuY2VfaW5mb3NfdmFsaWQpCi0JCXJldHVy biBzZXF1ZW5jZV9pbmZvczsKLQotCS8qIEZyZWUgdGhlIGV4aXN0aW5nIGludmFsaWQgY2FjaGUg ZW50cmllcyAqLwotCWZvcmVhY2hfcHRyKExvZ2ljYWxSZXBTZXF1ZW5jZUluZm8sIHNlcWluZm8s IHNlcXVlbmNlX2luZm9zKQorCWlmICghSXNUcmFuc2FjdGlvblN0YXRlKCkpCiAJewotCQlwZnJl ZShzZXFpbmZvLT5uc3BuYW1lKTsKLQkJcGZyZWUoc2VxaW5mby0+c2VxbmFtZSk7Ci0JCXBmcmVl KHNlcWluZm8pOworCQlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQlzdGFydGVkX3R4ID0g dHJ1ZTsKIAl9CiAKLQlsaXN0X2ZyZWUoc2VxdWVuY2VfaW5mb3MpOwotCXNlcXVlbmNlX2luZm9z ID0gTklMOwotCi0JU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKLQogCXJlbCA9IHRhYmxlX29w ZW4oU3Vic2NyaXB0aW9uUmVsUmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKIAogCS8qIFNj YW4gZm9yIGFsbCBzZXF1ZW5jZXMgYmVsb25naW5nIHRvIHRoaXMgc3Vic2NyaXB0aW9uICovCkBA IC04MjIsMTQgKzgyMiwxNCBAQCBmZXRjaF9zZXF1ZW5jZV9pbmZvcyh2b2lkKQogCiAJCUFzc2Vy dChyZWxzdGF0ZSA9PSBTVUJSRUxfU1RBVEVfSU5JVCB8fCByZWxzdGF0ZSA9PSBTVUJSRUxfU1RB VEVfUkVBRFkpOwogCi0JCS8qIENhY2hlIHRoZSBpbmZvcm1hdGlvbiBpbiBhIHBlcm1hbmVudCBt ZW1vcnkgY29udGV4dCAqLwotCQlvbGRjdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oQ2FjaGVN ZW1vcnlDb250ZXh0KTsKKwkJLyogQ2FjaGUgdGhlIGluZm9ybWF0aW9uIGluIHRoZSBnaXZlbiBt ZW1vcnkgY29udGV4dCAqLworCQlvbGRjdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oY3R4KTsK IAkJc2VxID0gcGFsbG9jMF9vYmplY3QoTG9naWNhbFJlcFNlcXVlbmNlSW5mbyk7CiAJCXNlcS0+ bG9jYWxyZWxpZCA9IHN1YnJlbC0+c3JyZWxpZDsKIAkJc2VxLT5uc3BuYW1lID0gZ2V0X25hbWVz cGFjZV9uYW1lKFJlbGF0aW9uR2V0TmFtZXNwYWNlKHNlcXVlbmNlX3JlbCkpOwogCQlzZXEtPnNl cW5hbWUgPSBwc3RyZHVwKFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHNlcXVlbmNlX3JlbCkpOwog CQlzZXEtPnJlbHN0YXRlID0gcmVsc3RhdGU7Ci0JCXRtcF9zZXFpbmZvcyA9IGxhcHBlbmQodG1w X3NlcWluZm9zLCBzZXEpOworCQlzZXFpbmZvcyA9IGxhcHBlbmQoc2VxaW5mb3MsIHNlcSk7CiAJ CU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOwogCiAJCXRhYmxlX2Nsb3NlKHNlcXVlbmNl X3JlbCwgTm9Mb2NrKTsKQEAgLTgzOSwxMCArODM5LDM4IEBAIGZldGNoX3NlcXVlbmNlX2luZm9z KHZvaWQpCiAJc3lzdGFibGVfZW5kc2NhbihzY2FuKTsKIAl0YWJsZV9jbG9zZShyZWwsIEFjY2Vz c1NoYXJlTG9jayk7CiAKLQlzZXF1ZW5jZV9pbmZvcyA9IHRtcF9zZXFpbmZvczsKLQlzZXF1ZW5j ZV9pbmZvc192YWxpZCA9IHRydWU7CisJaWYgKHN0YXJ0ZWRfdHgpCisJCUNvbW1pdFRyYW5zYWN0 aW9uQ29tbWFuZCgpOwogCi0JQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJcmV0dXJuIHNl cWluZm9zOworfQorCisvKgorICogR2V0IHRoZSBsaXN0IG9mIHNlcXVlbmNlIGluZm9ybWF0aW9u IGZvciB0aGUgY3VycmVudCBzdWJzY3JpcHRpb24uCisgKgorICogUmV0dXJuIGNhY2hlZCBzZXF1 ZW5jZSBzdGF0ZXMgaWYgdmFsaWQ7IG90aGVyd2lzZSBmZXRjaGVzIHRoZW0gZnJvbSB0aGUKKyAq IGNhdGFsb2csIGNhY2hlcyB0aGUgcmVzdWx0LCBhbmQgcmV0dXJuIGl0LgorICovCitzdGF0aWMg TGlzdCAqCitmZXRjaF9zZXF1ZW5jZV9pbmZvcyh2b2lkKQoreworCWlmIChzZXF1ZW5jZV9pbmZv c192YWxpZCkKKwkJcmV0dXJuIHNlcXVlbmNlX2luZm9zOworCisJLyogRnJlZSB0aGUgZXhpc3Rp bmcgaW52YWxpZCBjYWNoZSBlbnRyaWVzICovCisJZm9yZWFjaF9wdHIoTG9naWNhbFJlcFNlcXVl bmNlSW5mbywgc2VxaW5mbywgc2VxdWVuY2VfaW5mb3MpCisJeworCQlwZnJlZShzZXFpbmZvLT5u c3BuYW1lKTsKKwkJcGZyZWUoc2VxaW5mby0+c2VxbmFtZSk7CisJCXBmcmVlKHNlcWluZm8pOwor CX0KKworCWxpc3RfZnJlZShzZXF1ZW5jZV9pbmZvcyk7CisJc2VxdWVuY2VfaW5mb3MgPSBOSUw7 CisKKwlzZXF1ZW5jZV9pbmZvcyA9IGZldGNoX3NlcXVlbmNlc19mcm9tX2NhdGFsb2coTXlTdWJz Y3JpcHRpb24tPm9pZCwKKwkJCQkJCQkJCQkJCSAgQ2FjaGVNZW1vcnlDb250ZXh0KTsKKwlzZXF1 ZW5jZV9pbmZvc192YWxpZCA9IHRydWU7CiAKIAlyZXR1cm4gc2VxdWVuY2VfaW5mb3M7CiB9CkBA IC05NDcsNiArOTc1LDkgQEAgc3RhcnRfc2VxdWVuY2Vfc3luYyh2b2lkKQogCQkJc2VxaW5mb3Mg PSBmZXRjaF9zZXF1ZW5jZV9pbmZvcygpOwogCiAJCQlzZXF1ZW5jZV9jb3BpZWQgPSBjb3B5X3Nl cXVlbmNlcyhMb2dSZXBXb3JrZXJXYWxSY3ZDb25uLCBzZXFpbmZvcywKKwkJCQkJCQkJCQkJIE15 U3Vic2NyaXB0aW9uLT5vaWQsCisJCQkJCQkJCQkJCSBNeVN1YnNjcmlwdGlvbi0+bmFtZSwKKwkJ CQkJCQkJCQkJIE15U3Vic2NyaXB0aW9uLT5ydW5hc293bmVyLAogCQkJCQkJCQkJCQkgdXBkYXRl X2xzbik7CiAKIAkJCU1lbW9yeUNvbnRleHRSZXNldChTZXF1ZW5jZVN5bmNDb250ZXh0KTsKQEAg LTEwMTYsMyArMTA0Nyw0MCBAQCBTZXF1ZW5jZVN5bmNXb3JrZXJNYWluKERhdHVtIG1haW5fYXJn KQogCiAJRmluaXNoU3luY1dvcmtlcigpOwogfQorCisvKgorICogV3JhcHBlciBmb3IgTG9naWNh bFJlcFN5bmNTZXF1ZW5jZXMgdG8gc3luY2hyb25pemUgYWxsIHNlcXVlbmNlcyBvZiBhCisgKiBz dWJzY3JpcHRpb24gZnJvbSBvdXRzaWRlIHRoZSBzZXF1ZW5jZXN5bmMgd29ya2VyLgorICovCit2 b2lkCitBbHRlclN1YlN5bmNTZXF1ZW5jZXMoV2FsUmVjZWl2ZXJDb25uICpjb25uLCBPaWQgc3Vi aWQsIGNoYXIgKnN1Ym5hbWUsCisJCQkJCSAgYm9vbCBydW5hc293bmVyKQoreworCUxpc3QgKnNl cWluZm9zOworCisJQXNzZXJ0KCFTZXF1ZW5jZVN5bmNDb250ZXh0KTsKKworCS8qCisJICogRmV0 Y2ggc2VxdWVuY2VzIGRpcmVjdGx5IGZyb20gdGhlIGNhdGFsb2cgcmF0aGVyIHRoYW4gdXNpbmcg dGhlCisJICogc2VxdWVuY2UgY2FjaGUsIHdoaWNoIGlzIG1haW50YWluZWQgb25seSBmb3IgdGhl IHNlcXVlbmNlIHN5bmMKKwkgKiB3b3JrZXIuCisJICovCisJc2VxaW5mb3MgPSBmZXRjaF9zZXF1 ZW5jZXNfZnJvbV9jYXRhbG9nKHN1YmlkLCBDdXJyZW50TWVtb3J5Q29udGV4dCk7CisKKwlQR19U UlkoKTsKKwl7CisJCS8qCisJCSAqIFVzZSB0aGUgY3VycmVudCBtZW1vcnkgY29udGV4dCBmb3Ig c3luY2hyb25pemF0aW9uLiBTaW5jZSB0aGlzIHNob3VsZAorCQkgKiBiZSBzaG9ydC1saXZlZCBj b21tYW5kIGNvbnRleHQgdGhhdCB3aWxsIGJlIGNsZWFuZWQgdXAgYXV0b21hdGljYWxseSwKKwkJ ICogd2UgY2FuIHNpbXBseSBhc3NpZ24gaXQgYXMgdGhlIHN5bmNocm9uaXphdGlvbiBjb250ZXh0 LgorCQkgKi8KKwkJU2VxdWVuY2VTeW5jQ29udGV4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0Owor CisJCSh2b2lkKSBjb3B5X3NlcXVlbmNlcyhjb25uLCBzZXFpbmZvcywgc3ViaWQsIHN1Ym5hbWUs IHJ1bmFzb3duZXIsIHRydWUpOworCX0KKwlQR19GSU5BTExZKCk7CisJeworCQlTZXF1ZW5jZVN5 bmNDb250ZXh0ID0gTlVMTDsKKwl9CisJUEdfRU5EX1RSWSgpOworfQpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oIGIvc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vbG9naWNhbHdvcmtlci5oCmluZGV4IDdkNzQ4YTI4ZGE4Li43M2FmZDc4NTNkMCAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oCisrKyBiL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaApAQCAtMTQsNiArMTQsOCBAQAog CiAjaW5jbHVkZSA8c2lnbmFsLmg+CiAKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxyZWNlaXZl ci5oIgorCiBleHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUgc2lnX2F0b21pY190IFBhcmFsbGVs QXBwbHlNZXNzYWdlUGVuZGluZzsKIAogZXh0ZXJuIHZvaWQgQXBwbHlXb3JrZXJNYWluKERhdHVt IG1haW5fYXJnKTsKQEAgLTMxLDQgKzMzLDcgQEAgZXh0ZXJuIHZvaWQgTG9naWNhbFJlcFdvcmtl cnNXYWtldXBBdENvbW1pdChPaWQgc3ViaWQpOwogCiBleHRlcm4gdm9pZCBBdEVPWGFjdF9Mb2dp Y2FsUmVwV29ya2Vycyhib29sIGlzQ29tbWl0KTsKIAorZXh0ZXJuIHZvaWQgQWx0ZXJTdWJTeW5j U2VxdWVuY2VzKFdhbFJlY2VpdmVyQ29ubiAqY29ubiwgT2lkIHN1YmlkLAorCQkJCQkJCQkgIGNo YXIgKnN1Ym5hbWUsIGJvb2wgcnVuYXNvd25lcik7CisKICNlbmRpZgkJCQkJCQkvKiBMT0dJQ0FM V09SS0VSX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzNl9zZXF1 ZW5jZXMucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzZfc2VxdWVuY2VzLnBsCmluZGV4 IGFmMTkwNzEzYjJiLi44ZDI1YWM0MGNlMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDM2X3NlcXVlbmNlcy5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzZf c2VxdWVuY2VzLnBsCkBAIC0xNzYsNCArMTc2LDUzIEBAICRub2RlX3N1YnNjcmliZXItPndhaXRf Zm9yX2xvZygKIAlxci9XQVJOSU5HOiAoIFtBLVowLTldKzopPyBtaXNzaW5nIHNlcXVlbmNlIG9u IHB1Ymxpc2hlciBcKCJwdWJsaWMucmVncmVzc19zNCJcKS8sCiAJJGxvZ19vZmZzZXQpOwogCisj IyMjIyMjIyMjCisjIEFMVEVSIFNVQlNDUklQVElPTiAuLi4gUkVGUkVTSCBTRVFVRU5DRVMgc3lu Y2hyb25pemVzIHNlcXVlbmNlcyBvbmxpbmUsCisjIGVsaW1pbmF0aW5nIHRoZSBuZWVkIHRvIGxh dW5jaCBhIHNlcXVlbmNlc3luYyB3b3JrZXIuCisjIyMjIyMjIyMjCisKKyMgUmVkdWNlIG1heF9s b2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMgdG8gZGlzYWxsb3cgc2VxdWVuY2Ugd29ya2VyIGZy b20gcnVubmluZworJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29u ZicsCisJcXEobWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VycyA9IDApKTsKKyRub2RlX3N1 YnNjcmliZXItPnJlc3RhcnQ7CisKKyMgVmVyaWZ5IHRoZXJlIGlzIG5vIGxvZ2ljYWwgcmVwbGlj YXRpb24gYXBwbHkgd29ya2VyIHJ1bm5pbmcKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoCisJJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfc3RhdF9h Y3Rpdml0eSBXSEVSRSBiYWNrZW5kX3R5cGUgPSAnbG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSB3 b3JrZXInIik7CisKK2lzKCRyZXN1bHQsICcwJywgJ25vIGxvZ2ljYWwgcmVwbGljYXRpb24gd29y a2VyIGlzIHJ1bm5pbmcnKTsKKworIyBJbmNyZW1lbnQgc2VxdWVuY2Ugb24gcHVibGlzaGVyCisk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXFxKFNFTEVDVCBuZXh0dmFs KCdyZWdyZXNzX3MxJyk7KSk7CisKKyMgVGhlIGNvbW1hbmQgc2hvdWxkIGZhaWwgZHVlIHRvIG1p c3Npbmcgc2VxdWVuY2UgKCdyZWdyZXNzX3M0JykKK215ICgkY21kcmV0LCAkc3Rkb3V0LCAkc3Rk ZXJyKSA9ICRub2RlX3N1YnNjcmliZXItPnBzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1VCU0NS SVBUSU9OIHJlZ3Jlc3Nfc2VxX3N1YiBSRUZSRVNIIFNFUVVFTkNFUzsiKTsKKworbGlrZSgKKwkk c3RkZXJyLAorCXFyL1dBUk5JTkc6ICBtaXNzaW5nIHNlcXVlbmNlIG9uIHB1Ymxpc2hlciBcKCJw dWJsaWMucmVncmVzc19zNCJcKS8sCisJIm91dHB1dCB0aGUgd2FucmluZyBmb3IgdGhlIG1pc3Np bmcgc2VxdWVuY2UgcmVncmVzc19zNCIpOworCitsaWtlKAorCSRzdGRlcnIsCisJcXIvRVJST1I6 ICBsb2dpY2FsIHJlcGxpY2F0aW9uIHNlcXVlbmNlIHN5bmNocm9uaXphdGlvbiBmYWlsZWQgZm9y IHN1YnNjcmlwdGlvbiBcInJlZ3Jlc3Nfc2VxX3N1YlwiLywKKwkidGhlIGNvbW1hbmQgZmFpbGVk IGR1ZSB0byB0aGUgbWlzc2luZyBzZXF1ZW5jZSByZWdyZXNzX3M0Iik7CisKKyMgUmVmcmVzaCB0 aGUgcHVibGljYXRpb24gdG8gcmVtb3ZlIHRoZSBtaXNzaW5nIHNlcXVlbmNlCiskbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jl c3Nfc2VxX3N1YiBSRUZSRVNIIFBVQkxJQ0FUSU9OOyIpOworCisjIFN5bmMgdGhlIHNlcXVlbmNl IHJlZ3Jlc3NfczEKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJB TFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc19zZXFfc3ViIFJFRlJFU0ggU0VRVUVOQ0VTOyIpOwor CisjIEdldCB0aGUgY3VycmVudCBzZXF1ZW5jZSB2YWx1ZSBvbiBzdWJzY3JpYmVyCiskcmVzdWx0 ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXEoU0VMRUNUIGxh c3RfdmFsdWUgRlJPTSByZWdyZXNzX3MxOykpOworCitpcygkcmVzdWx0LCAnMjAxJywgJ3NlcXVl bmNlIHJlZ3Jlc3NfczEgaXMgc3luY2VkIG5vdycpOworCiBkb25lX3Rlc3RpbmcoKTsKLS0gCjIu NDcuMwoK --0000000000008ec048064de5c56d Content-Type: application/octet-stream; name="v12-0001-Support-automatic-sequence-replication.patch" Content-Disposition: attachment; filename="v12-0001-Support-automatic-sequence-replication.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn6yy1he0 RnJvbSAzOTE2NGVhODEwM2VmYTgwM2Q5M2FmMDZhYzJhZTliZTRjNjAzN2ZlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBamluIENoZXJpYW4gPGl0c2FqaW5AZ21haWwuY29tPgpEYXRl OiBUaHUsIDI2IE1hciAyMDI2IDE0OjE1OjIxICsxMTAwClN1YmplY3Q6IFtQQVRDSCB2MTIgMS8z XSBTdXBwb3J0IGF1dG9tYXRpYyBzZXF1ZW5jZSByZXBsaWNhdGlvbi4KCkN1cnJlbnRseSwgc2Vx dWVuY2UgdmFsdWVzIGFyZSBzeW5jaHJvbml6ZWQgZnJvbSBwdWJsaXNoZXIgdG8gc3Vic2NyaWJl ciBvbmx5CndoZW4gdGhlIHVzZXIgbWFudWFsbHkgcnVucyBBTFRFUiBTVUJTQ1JJUFRJT04gLi4u IFJFRlJFU0ggUFVCTElDQVRJT04gKHdoaWNoCmFmZmVjdHMgb25seSBuZXdseSBzdWJzY3JpYmVk IHNlcXVlbmNlcykgb3IgUkVGUkVTSCBTRVFVRU5DRVMuIFRoZSBzZXF1ZW5jZSBzeW5jCndvcmtl ciBleGl0cyBpbW1lZGlhdGVseSBhZnRlciBjb21wbGV0aW5nIGVhY2ggc3luY2hyb25pemF0aW9u IHJvdW5kLgoKVGhlIHByaW1hcnkgdXNlIGNhc2UgZm9yIHNlcXVlbmNlIHJlcGxpY2F0aW9uIGlz IGR1cmluZyB1cGdyYWRlcywgd2hlcmUgaXQncwpyZWNvbW1lbmRlZCB0aGF0IHVzZXJzIGVuc3Vy ZSBzZXF1ZW5jZXMgYXJlIGluIHN5bmMgYnkgcnVubmluZyBSRUZSRVNIIFNFUVVFTkNFUwpiZWZv cmUgZmluaXNoaW5nIHRoZSB1cGdyYWRlLiBIb3dldmVyLCB0aGlzIGNvbW1hbmQgY2FuIGJlIHNs b3cgd2hlbgpzeW5jaHJvbml6aW5nIGEgbGFyZ2UgbnVtYmVyIG9mIHNlcXVlbmNlcywgcG90ZW50 aWFsbHkgaW5jcmVhc2luZyBkb3dudGltZS4KClRvIGFkZHJlc3MgdGhpcywgdGhpcyBjb21taXQg bWFrZXMgdGhlIHNlcXVlbmNlIHN5bmMgd29ya2VyIGxvbmctbGl2ZWQsCmNvbnRpbnVvdXNseSBt b25pdG9yaW5nIHNlcXVlbmNlcyBhbmQgcmVzeW5jaHJvbml6aW5nIHRoZW0gd2hlbiBkcmlmdCBp cwpkZXRlY3RlZC4gVGhlIHdvcmtlciB1c2VzIGFuIGFkYXB0aXZlIHNsZWVwIGludGVydmFsOiBp dCBzdGFydHMgYXQgMiBzZWNvbmRzLApkb3VibGVzIHVwIHRvIGEgbWF4aW11bSBvZiAzMCBzZWNv bmRzIHdoZW4gbm8gZHJpZnQgaXMgb2JzZXJ2ZWQsIGFuZCByZXNldHMgdG8KdGhlIG1pbmltdW0g aW50ZXJ2YWwgb25jZSBkcmlmdCBpcyBmb3VuZC4KCldpdGggdGhpcyBjaGFuZ2UsIG1vc3Qgc2Vx dWVuY2VzIGFyZSBzaWxlbnRseSBzeW5jaHJvbml6ZWQgaW4gdGhlIGJhY2tncm91bmQsCmVsaW1p bmF0aW5nIHRoZSBuZWVkIHRvIHJ1biBSRUZSRVNIIFNFUVVFTkNFUyBmb3IgdGhlIG1ham9yaXR5 IG9mIGNhc2VzLgoKSG93ZXZlciwgZnJlcXVlbnRseSB1cGRhdGVkIHNlcXVlbmNlcyBtYXkgc3Rp bGwgbGFnIGJlaGluZCwgcmVxdWlyaW5nIGEgZmluYWwKUkVGUkVTSCBTRVFVRU5DRVMgYmVmb3Jl IHVwZ3JhZGUgY29tcGxldGlvbi4gVXNlcnMgY2FuIG1vbml0b3IgcHJvZ3Jlc3MgYnkKY2hlY2tp bmcgd2hldGhlciBzZXF1ZW5jZSBzdGF0ZXMgdHJhbnNpdGlvbiBmcm9tIElOSVQgdG8gUkVBRFkg aW4KcGdfc3Vic2NyaXB0aW9uX3JlbC4KClRoZSBSRUZSRVNIIFNFUVVFTkNFUyBjb21tYW5kIGlz IHJldGFpbmVkIGZvciB0aGlzIGZpbmFsIHN5bmNocm9uaXphdGlvbiBzdGVwLAp0aG91Z2ggaXQg Y3VycmVudGx5IHVwZGF0ZXMgYWxsIHNlcXVlbmNlIHN0YXRlcyB0byBJTklULCB3aGljaCBoYXMg cm9vbSBmb3IKaW1wcm92ZW1lbnQuIEEgZnV0dXJlIHBhdGNoIHdpbGwgZW5oYW5jZSB0aGlzIGNv bW1hbmQgdG8gc3luY2hyb25pemUgc2VxdWVuY2VzCmRpcmVjdGx5IHdpdGhvdXQgbGF1bmNoaW5n IGEgd29ya2VyLCByZWR1Y2luZyBjYXRhbG9nIG92ZXJoZWFkLgotLS0KIGRvYy9zcmMvc2dtbC9s b2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgICAgICAgICB8ICAzOSArLQogZG9jL3NyYy9zZ21sL3Jl Zi9hbHRlcl9zdWJzY3JpcHRpb24uc2dtbCAgICAgIHwgICA1IC0KIHNyYy9iYWNrZW5kL2NvbW1h bmRzL3NlcXVlbmNlLmMgICAgICAgICAgICAgICB8ICA0MSArKwogLi4uL3JlcGxpY2F0aW9uL2xv Z2ljYWwvc2VxdWVuY2VzeW5jLmMgICAgICAgIHwgNDI0ICsrKysrKysrKysrKystLS0tLQogc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zeW5jdXRpbHMuYyAgIHwgIDQ2ICstCiBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jICAgICAgfCAgMTEgKwogLi4uL3V0 aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnRfbmFtZXMudHh0ICAgICAgIHwgICAxICsKIHNyYy9pbmNs dWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uX3JlbC5oICAgICB8ICAgMSArCiBzcmMvaW5jbHVk ZS9jb21tYW5kcy9zZXF1ZW5jZS5oICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmggICAgIHwgICAyICstCiBzcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMjZfc3RhdHMucGwgICAgICAgICAgfCAgIDIgKwogc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDM2X3NlcXVlbmNlcy5wbCAgICAgIHwgIDgxICstLS0KIDEyIGZpbGVzIGNoYW5n ZWQsIDQzNyBpbnNlcnRpb25zKCspLCAyMTcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9j L3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9sb2dpY2Fs LXJlcGxpY2F0aW9uLnNnbWwKaW5kZXggNzJjOGQzZDU5YmQuLjM4NjVmNjE3ODE2IDEwMDY0NAot LS0gYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMv c2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKQEAgLTE3OTEsOCArMTc5MSw5IEBAIFB1Ymxp Y2F0aW9uczoKIAogICA8cGFyYT4KICAgIEEgPGZpcnN0dGVybT5zZXF1ZW5jZSBzeW5jaHJvbml6 YXRpb24gd29ya2VyPC9maXJzdHRlcm0+IHdpbGwgYmUgc3RhcnRlZAotICAgYWZ0ZXIgZXhlY3V0 aW5nIGFueSBvZiB0aGUgYWJvdmUgc3Vic2NyaWJlciBjb21tYW5kcywgYW5kIHdpbGwgZXhpdCBv bmNlIHRoZQotICAgc2VxdWVuY2VzIGFyZSBzeW5jaHJvbml6ZWQuCisgICBhZnRlciBleGVjdXRp bmcgYW55IG9mIHRoZSBhYm92ZSBzdWJzY3JpYmVyIGNvbW1hbmRzLiBUaGUgd29ya2VyIHdpbGwK KyAgIHJlbWFpbiBydW5uaW5nIGZvciB0aGUgbGlmZSBvZiB0aGUgc3Vic2NyaXB0aW9uLCBwZXJp b2RpY2FsbHkKKyAgIHN5bmNocm9uaXppbmcgYWxsIHB1Ymxpc2hlZCBzZXF1ZW5jZXMuCiAgIDwv cGFyYT4KICAgPHBhcmE+CiAgICBUaGUgYWJpbGl0eSB0byBsYXVuY2ggYSBzZXF1ZW5jZSBzeW5j aHJvbml6YXRpb24gd29ya2VyIGlzIGxpbWl0ZWQgYnkgdGhlCkBAIC0xODIxLDE4ICsxODIyLDI2 IEBAIFB1YmxpY2F0aW9uczoKICAgPHNlY3QyIGlkPSJzZXF1ZW5jZXMtb3V0LW9mLXN5bmMiPgog ICAgPHRpdGxlPlJlZnJlc2hpbmcgT3V0LW9mLVN5bmMgU2VxdWVuY2VzPC90aXRsZT4KICAgIDxw YXJhPgotICAgIFN1YnNjcmliZXIgc2VxdWVuY2UgdmFsdWVzIHdpbGwgYmVjb21lIG91dCBvZiBz eW5jIGFzIHRoZSBwdWJsaXNoZXIKLSAgICBhZHZhbmNlcyB0aGVtLgorICAgIFN1YnNjcmliZXIg c2VxdWVuY2UgdmFsdWVzIGNhbiBiZWNvbWUgb3V0IG9mIHN5bmMgYXMgdGhlIHB1Ymxpc2hlciBh ZHZhbmNlcworICAgIHRoZW0gYW5kIHRoZSBzZXF1ZW5jZSBzeW5jaHJvbml6YXRpb24gd29ya2Vy IGhhcyBub3QgeWV0IGNhdWdodCB1cC4KICAgIDwvcGFyYT4KICAgIDxwYXJhPgogICAgIFRvIGRl dGVjdCB0aGlzLCBjb21wYXJlIHRoZQogICAgIDxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGctc3Vi c2NyaXB0aW9uLXJlbCI+cGdfc3Vic2NyaXB0aW9uX3JlbDwvbGluaz4uPHN0cnVjdGZpZWxkPnNy c3VibHNuPC9zdHJ1Y3RmaWVsZD4KICAgICBvbiB0aGUgc3Vic2NyaWJlciB3aXRoIHRoZSA8c3Ry dWN0ZmllbGQ+cGFnZV9sc248L3N0cnVjdGZpZWxkPiBvYnRhaW5lZAogICAgIGZyb20gdGhlIDxs aW5rIGxpbmtlbmQ9ImZ1bmMtcGctZ2V0LXNlcXVlbmNlLWRhdGEiPjxmdW5jdGlvbj5wZ19nZXRf c2VxdWVuY2VfZGF0YTwvZnVuY3Rpb24+PC9saW5rPgotICAgIGZ1bmN0aW9uIGZvciB0aGUgc2Vx dWVuY2Ugb24gdGhlIHB1Ymxpc2hlci4gVGhlbiBydW4KKyAgICBmdW5jdGlvbiBmb3IgdGhlIHNl cXVlbmNlIG9uIHRoZSBwdWJsaXNoZXIuIElmIGRyaWZ0IGlzIGRldGVjdGVkLCB0aGUgdXNlcgor ICAgIGNhbiB3YWl0IGZvciB0aGUgc2VxdWVuY2Ugc3luY2hyb25pemF0aW9uIHdvcmtlciB0byBj YXRjaCB1cCAoYnkKKyAgICBwZXJpb2RpY2FsbHkgY2hlY2tpbmcgd2hldGhlciB0aGUgTFNOcyBt YXRjaCkuCisgICA8L3BhcmE+CisgICA8cGFyYT4KKyAgICBOb3RlIHRoYXQgdGhlIHNlcXVlbmNl IHN5bmNocm9uaXphdGlvbiB3b3JrZXIgdXBkYXRlcworICAgIDxsaW5rIGxpbmtlbmQ9ImNhdGFs b2ctcGctc3Vic2NyaXB0aW9uLXJlbCI+cGdfc3Vic2NyaXB0aW9uX3JlbDwvbGluaz4uPHN0cnVj dGZpZWxkPnNyc3VibHNuPC9zdHJ1Y3RmaWVsZD4KKyAgICBwZXJpb2RpY2FsbHkuIFRvIHJlZHVj ZSB0aGUgZGVsYXkgYW5kIGZvcmNlIGFuIGltbWVkaWF0ZSB1cGRhdGUsIGV4ZWN1dGUgdGhlCiAg ICAgPGxpbmsgbGlua2VuZD0ic3FsLWFsdGVyc3Vic2NyaXB0aW9uLXBhcmFtcy1yZWZyZXNoLXNl cXVlbmNlcyI+Ci0gICAgPGNvbW1hbmQ+QUxURVIgU1VCU0NSSVBUSU9OIC4uLiBSRUZSRVNIIFNF UVVFTkNFUzwvY29tbWFuZD48L2xpbms+IHRvCi0gICAgcmUtc3luY2hyb25pemUgaWYgbmVjZXNz YXJ5LgorICAgIDxjb21tYW5kPkFMVEVSIFNVQlNDUklQVElPTiAuLi4gUkVGUkVTSCBTRVFVRU5D RVM8L2NvbW1hbmQ+PC9saW5rPiBjb21tYW5kLAorICAgIHdoaWNoIHVwZGF0ZXMgdGhlIHBhZ2Ug TFNOIGltbWVkaWF0ZWx5IGFmdGVyIHN5bmNocm9uaXppbmcgdGhlIHNlcXVlbmNlCisgICAgdmFs dWUuCiAgICA8L3BhcmE+CiAgICA8d2FybmluZz4KICAgICA8cGFyYT4KQEAgLTIzMzksMTUgKzIz NDgsMTMgQEAgQ09OVEVYVDogIHByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9u IG9yaWdpbiAicGdfMTYzOTUiIGR1cmluZyAiSU5TRVIKIAogICAgPGxpc3RpdGVtPgogICAgIDxw YXJhPgotICAgICBJbmNyZW1lbnRhbCBzZXF1ZW5jZSBjaGFuZ2VzIGFyZSBub3QgcmVwbGljYXRl ZC4gIEFsdGhvdWdoIHRoZSBkYXRhIGluCi0gICAgIHNlcmlhbCBvciBpZGVudGl0eSBjb2x1bW5z IGJhY2tlZCBieSBzZXF1ZW5jZXMgd2lsbCBiZSByZXBsaWNhdGVkIGFzIHBhcnQKLSAgICAgb2Yg dGhlIHRhYmxlLCB0aGUgc2VxdWVuY2VzIHRoZW1zZWx2ZXMgZG8gbm90IHJlcGxpY2F0ZSBvbmdv aW5nIGNoYW5nZXMuCi0gICAgIE9uIHRoZSBzdWJzY3JpYmVyLCBhIHNlcXVlbmNlIHdpbGwgcmV0 YWluIHRoZSBsYXN0IHZhbHVlIGl0IHN5bmNocm9uaXplZAotICAgICBmcm9tIHRoZSBwdWJsaXNo ZXIuIElmIHRoZSBzdWJzY3JpYmVyIGlzIHVzZWQgYXMgYSByZWFkLW9ubHkgZGF0YWJhc2UsCi0g ICAgIHRoZW4gdGhpcyBzaG91bGQgdHlwaWNhbGx5IG5vdCBiZSBhIHByb2JsZW0uICBJZiwgaG93 ZXZlciwgc29tZSBraW5kIG9mCi0gICAgIHN3aXRjaG92ZXIgb3IgZmFpbG92ZXIgdG8gdGhlIHN1 YnNjcmliZXIgZGF0YWJhc2UgaXMgaW50ZW5kZWQsIHRoZW4gdGhlCi0gICAgIHNlcXVlbmNlcyB3 b3VsZCBuZWVkIHRvIGJlIHVwZGF0ZWQgdG8gdGhlIGxhdGVzdCB2YWx1ZXMsIGVpdGhlciBieQot ICAgICBleGVjdXRpbmcgPGxpbmsgbGlua2VuZD0ic3FsLWFsdGVyc3Vic2NyaXB0aW9uLXBhcmFt cy1yZWZyZXNoLXNlcXVlbmNlcyI+CisgICAgIEluY3JlbWVudGFsIHNlcXVlbmNlIGNoYW5nZXMg YXJlIGNvbnRpbnVvdXNseSByZXBsaWNhdGVkLiBJZiwgaG93ZXZlciwKKyAgICAgc29tZSBraW5k IG9mIHN3aXRjaG92ZXIgb3IgZmFpbG92ZXIgdG8gdGhlIHN1YnNjcmliZXIgZGF0YWJhc2UgaXMK KyAgICAgaW50ZW5kZWQsIHRoZW4gdGhlIHNlcXVlbmNlcyByZXBsaWNhdGlvbiBjb3VsZCBiZSBs YWdnaW5nIGJlaGluZCBhbmQKKyAgICAgdGhlIHNlcXVlbmNlcyBvbiB0aGUgc3Vic2NyaWJlciBz aG91bGQgYmUgY29tcGFyZWQgd2l0aCB0aGF0IG9mIHRoZQorICAgICBwdWJsaXNoZXIgdG8gbWFr ZSBzdXJlIHRoYXQgdGhleSBhcmUgdXAgdG8gZGF0ZSwgaWYgbm90IHRoZXkKKyAgICAgbmVlZCB0 byBiZSB1cGRhdGVkIHRvIHRoZSBsYXRlc3QgdmFsdWVzLCBlaXRoZXIgYnkgZXhlY3V0aW5nCisg ICAgIDxsaW5rIGxpbmtlbmQ9InNxbC1hbHRlcnN1YnNjcmlwdGlvbi1wYXJhbXMtcmVmcmVzaC1z ZXF1ZW5jZXMiPgogICAgICA8Y29tbWFuZD5BTFRFUiBTVUJTQ1JJUFRJT04gLi4uIFJFRlJFU0gg U0VRVUVOQ0VTPC9jb21tYW5kPjwvbGluaz4KICAgICAgb3IgYnkgY29weWluZyB0aGUgY3VycmVu dCBkYXRhIGZyb20gdGhlIHB1Ymxpc2hlciAocGVyaGFwcyB1c2luZwogICAgICA8Y29tbWFuZD5w Z19kdW1wPC9jb21tYW5kPikgb3IgYnkgZGV0ZXJtaW5pbmcgYSBzdWZmaWNpZW50bHkgaGlnaCB2 YWx1ZQpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9zdWJzY3JpcHRpb24uc2dt bCBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfc3Vic2NyaXB0aW9uLnNnbWwKaW5kZXggZjIxNWZi MGU1YTIuLmVlOTZlNDgyM2EzIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3N1 YnNjcmlwdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfc3Vic2NyaXB0aW9u LnNnbWwKQEAgLTIwMiwxMSArMjAyLDYgQEAgQUxURVIgU1VCU0NSSVBUSU9OIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gUkVOQU1FIFRPIDwKICAgICAg ICAgICBQcmV2aW91c2x5IHN1YnNjcmliZWQgdGFibGVzIGFyZSBub3QgY29waWVkLCBldmVuIGlm IGEgdGFibGUncyByb3cKICAgICAgICAgICBmaWx0ZXIgPGxpdGVyYWw+V0hFUkU8L2xpdGVyYWw+ IGNsYXVzZSBoYXMgc2luY2UgYmVlbiBtb2RpZmllZC4KICAgICAgICAgIDwvcGFyYT4KLSAgICAg ICAgIDxwYXJhPgotICAgICAgICAgIFByZXZpb3VzbHkgc3Vic2NyaWJlZCBzZXF1ZW5jZXMgYXJl IG5vdCByZS1zeW5jaHJvbml6ZWQuIFRvIGRvIHRoYXQsCi0gICAgICAgICAgdXNlIDxsaW5rIGxp bmtlbmQ9InNxbC1hbHRlcnN1YnNjcmlwdGlvbi1wYXJhbXMtcmVmcmVzaC1zZXF1ZW5jZXMiPgot ICAgICAgICAgIDxjb21tYW5kPkFMVEVSIFNVQlNDUklQVElPTiAuLi4gUkVGUkVTSCBTRVFVRU5D RVM8L2NvbW1hbmQ+PC9saW5rPi4KLSAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgog ICAgICAgICAgIFNlZSA8eHJlZiBsaW5rZW5kPSJzZXF1ZW5jZS1kZWZpbml0aW9uLW1pc21hdGNo ZXMiLz4gZm9yIHJlY29tbWVuZGF0aW9ucyBvbiBob3cKICAgICAgICAgICB0byBoYW5kbGUgYW55 IHdhcm5pbmdzIGFib3V0IHNlcXVlbmNlIGRlZmluaXRpb24gZGlmZmVyZW5jZXMgYmV0d2Vlbgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3NlcXVlbmNlLmMKaW5kZXggNTUxNjY3NjUwYmEuLjlhOWZhNmUyNWU2IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zZXF1ZW5jZS5jCisrKyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3NlcXVlbmNlLmMKQEAgLTkyOSw2ICs5MjksNDcgQEAgbGFzdHZhbChQR19GVU5D VElPTl9BUkdTKQogCVBHX1JFVFVSTl9JTlQ2NChyZXN1bHQpOwogfQogCisvKgorICogUmVhZCB0 aGUgY3VycmVudCBzZXF1ZW5jZSB2YWx1ZXMgKGxhc3RfdmFsdWUgYW5kIGlzX2NhbGxlZCkKKyAq CisgKiBUaGlzIGlzIGEgcmVhZC1vbmx5IG9wZXJhdGlvbiB1c2VkIGJ5IGxvZ2ljYWwgcmVwbGlj YXRpb24gc2VxdWVuY2UKKyAqIHN5bmNocm9uaXphdGlvbiB0byBkZXRlY3QgZHJpZnQuIFRoZSBj YWxsZXIgbXVzdCBob2xkIGEgbG9jayBvbiB0aGUgc2VxdWVuY2UuCisgKgorICogUmV0dXJuIGZh bHNlIGlmIHRoZSBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdWZmaWNpZW50IHByaXZpbGVnZXMgdG8g YWNjZXNzIHRoZQorICogc2VxdWVuY2UsIHRydWUgb3RoZXJ3aXNlLgorICovCitib29sCitHZXRT ZXF1ZW5jZShSZWxhdGlvbiBzZXFyZWwsIGludDY0ICpsYXN0X3ZhbHVlLCBib29sICppc19jYWxs ZWQpCit7CisJQnVmZmVyCQlidWY7CisJSGVhcFR1cGxlRGF0YSBzZXF0dXBsZTsKKwlGb3JtX3Bn X3NlcXVlbmNlX2RhdGEgc2VxOworCU9pZAkJCXJlbGlkID0gUmVsYXRpb25HZXRSZWxpZChzZXFy ZWwpOworCisJLyogQ29uZmlybSB0aGF0IHRoZSByZWxhdGlvbiBpcyBhIHNlcXVlbmNlIGFuZCBp cyBsb2NrZWQgKi8KKwlBc3NlcnQoc2VxcmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9T RVFVRU5DRSk7CisJQXNzZXJ0KENoZWNrUmVsYXRpb25Mb2NrZWRCeU1lKHNlcXJlbCwgQWNjZXNz U2hhcmVMb2NrLCB0cnVlKSk7CisKKwlpZiAocGdfY2xhc3NfYWNsY2hlY2socmVsaWQsIEdldFVz ZXJJZCgpLCBBQ0xfU0VMRUNUKSAhPSBBQ0xDSEVDS19PSykKKwl7CisJCSpsYXN0X3ZhbHVlID0g MDsKKwkJKmlzX2NhbGxlZCA9IGZhbHNlOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJLyogUmVh ZCB0aGUgc2VxdWVuY2UgdHVwbGUgKi8KKwlzZXEgPSByZWFkX3NlcV90dXBsZShzZXFyZWwsICZi dWYsICZzZXF0dXBsZSk7CisKKwkvKiBFeHRyYWN0IHRoZSB2YWx1ZXMgKi8KKwkqbGFzdF92YWx1 ZSA9IHNlcS0+bGFzdF92YWx1ZTsKKwkqaXNfY2FsbGVkID0gc2VxLT5pc19jYWxsZWQ7CisKKwkv KiBSZWxlYXNlIGJ1ZmZlciAqLworCVVubG9ja1JlbGVhc2VCdWZmZXIoYnVmKTsKKworCXJldHVy biB0cnVlOworfQorCiAvKgogICogTWFpbiBpbnRlcm5hbCBwcm9jZWR1cmUgdGhhdCBoYW5kbGVz IDIgJiAzIGFyZyBmb3JtcyBvZiBTRVRWQUwuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9zZXF1ZW5jZXN5bmMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvc2VxdWVuY2VzeW5jLmMKaW5kZXggYTRmYjY3ODNiYTkuLjE4MzIxZDNiMzE2 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3NlcXVlbmNlc3lu Yy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2VxdWVuY2VzeW5jLmMK QEAgLTE5LDI1ICsxOSwzMiBAQAogICogQ1JFQVRFIFNVQlNDUklQVElPTgogICogQUxURVIgU1VC U0NSSVBUSU9OIC4uLiBSRUZSRVNIIFBVQkxJQ0FUSU9OCiAgKgotICogRXhlY3V0aW5nIHRoZSBm b2xsb3dpbmcgY29tbWFuZCByZXNldHMgYWxsIHNlcXVlbmNlcyBpbiB0aGUgc3Vic2NyaXB0aW9u IHRvCi0gKiBzdGF0ZSBJTklULCB0cmlnZ2VyaW5nIHJlLXN5bmNocm9uaXphdGlvbjoKLSAqIEFM VEVSIFNVQlNDUklQVElPTiAuLi4gUkVGUkVTSCBTRVFVRU5DRVMKLSAqCi0gKiBUaGUgYXBwbHkg d29ya2VyIHBlcmlvZGljYWxseSBzY2FucyBwZ19zdWJzY3JpcHRpb25fcmVsIGZvciBzZXF1ZW5j ZXMgaW4KLSAqIElOSVQgc3RhdGUuIFdoZW4gc3VjaCBzZXF1ZW5jZXMgYXJlIGZvdW5kLCBpdCBz cGF3bnMgYSBzZXF1ZW5jZXN5bmMgd29ya2VyCi0gKiB0byBoYW5kbGUgc3luY2hyb25pemF0aW9u LgotICoKLSAqIEEgc2luZ2xlIHNlcXVlbmNlc3luYyB3b3JrZXIgaXMgcmVzcG9uc2libGUgZm9y IHN5bmNocm9uaXppbmcgYWxsIHNlcXVlbmNlcy4KLSAqIEl0IGJlZ2lucyBieSByZXRyaWV2aW5n IHRoZSBsaXN0IG9mIHNlcXVlbmNlcyB0aGF0IGFyZSBmbGFnZ2VkIGZvcgotICogc3luY2hyb25p emF0aW9uLCBpLmUuLCB0aG9zZSBpbiB0aGUgSU5JVCBzdGF0ZS4gVGhlc2Ugc2VxdWVuY2VzIGFy ZSB0aGVuCi0gKiBwcm9jZXNzZWQgaW4gYmF0Y2hlcywgYWxsb3dpbmcgbXVsdGlwbGUgZW50cmll cyB0byBiZSBzeW5jaHJvbml6ZWQgd2l0aGluIGEKLSAqIHNpbmdsZSB0cmFuc2FjdGlvbi4gVGhl IHdvcmtlciBmZXRjaGVzIHRoZSBjdXJyZW50IHNlcXVlbmNlIHZhbHVlcyBhbmQgcGFnZQotICog TFNOcyBmcm9tIHRoZSByZW1vdGUgcHVibGlzaGVyLCB1cGRhdGVzIHRoZSBjb3JyZXNwb25kaW5n IHNlcXVlbmNlcyBvbiB0aGUKLSAqIGxvY2FsIHN1YnNjcmliZXIsIGFuZCBmaW5hbGx5IG1hcmtz IGVhY2ggc2VxdWVuY2UgYXMgUkVBRFkgdXBvbiBzdWNjZXNzZnVsCisgKiBUaGUgYXBwbHkgd29y a2VyIHBlcmlvZGljYWxseSBzY2FucyBwZ19zdWJzY3JpcHRpb25fcmVsIGZvciBzZXF1ZW5jZXMu CisgKiBXaGVuIHNlcXVlbmNlcyBhcmUgZm91bmQsIGl0IHNwYXducyBhIHNlcXVlbmNlc3luYyB3 b3JrZXIgdG8gaGFuZGxlCiAgKiBzeW5jaHJvbml6YXRpb24uCiAgKgorICogQSBzaW5nbGUgc2Vx dWVuY2VzeW5jIHdvcmtlciBpcyByZXNwb25zaWJsZSBmb3Igc3luY2hyb25pemluZyBhbGwgc2Vx dWVuY2VzCisgKiBmb3IgYSBzdWJzY3JpcHRpb24uIEl0IGJlZ2lucyBieSByZXRyaWV2aW5nIHRo ZSBsaXN0IG9mIHNlcXVlbmNlcy4gVGhlc2UKKyAqIHNlcXVlbmNlcyBhcmUgdGhlbiBwcm9jZXNz ZWQgaW4gYmF0Y2hlcywgYWxsb3dpbmcgbXVsdGlwbGUgZW50cmllcyB0byBiZQorICogc3luY2hy b25pemVkIHdpdGhpbiBhIHNpbmdsZSB0cmFuc2FjdGlvbi4gVGhlIHdvcmtlciBmZXRjaGVzIHRo ZSBjdXJyZW50CisgKiBzZXF1ZW5jZSB2YWx1ZXMgYW5kIHBhZ2UgTFNOcyBmcm9tIHRoZSByZW1v dGUgcHVibGlzaGVyIGFuZCB1cGRhdGVzIHRoZQorICogY29ycmVzcG9uZGluZyBzZXF1ZW5jZXMg b24gdGhlIGxvY2FsIHN1YnNjcmliZXIuIFNlcXVlbmNlcyBpbiB0aGUgSU5JVAorICogc3RhdGUg YXJlIHVuY29uZGl0aW9uYWxseSB1cGRhdGVkIHRvIHRoZSBsYXRlc3QgdmFsdWVzIGZyb20gdGhl IHB1Ymxpc2hlcgorICogYW5kIHRoZW4gbW92ZWQgdG8gdGhlIFJFQURZIHN0YXRlLiBGb3Igc2Vx dWVuY2VzIGFscmVhZHkgaW4gdGhlIFJFQURZCisgKiBzdGF0ZSwgdGhlIHdvcmtlciBjaGVja3Mg Zm9yIGRyaWZ0IGFuZCB1cGRhdGVzIHRoZW0gb25seSB3aGVuIG5lZWRlZC4KKyAqCiAgKiBTZXF1 ZW5jZSBzdGF0ZSB0cmFuc2l0aW9ucyBmb2xsb3cgdGhpcyBwYXR0ZXJuOgotICogICBJTklUIC0+ IFJFQURZCisKKyAqICAgICAgIChzeW5jaHJvbml6ZSkKKyAqICBJTklUIC0tLS0tLS0tLS0tLS0t PiBSRUFEWSAtPi0rCisgKiAgICAgICAgICAgICAgICAgICAgICAgICBeICAgICAgfCAoY2hlY2st ZHJpZnQvc3luY2hyb25pemUpCisgKiAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgfAor ICogICAgICAgICAgICAgICAgICAgICAgICAgKy0tPC0tLSsKKyAqCisgKiBCZXR3ZWVuIGN5Y2xl cywgdGhlIHdvcmtlciBzbGVlcHMgZm9yIFNFUVNZTkNfTUlOX1NMRUVQX01TLiBJZiBubyBkcmlm dCBpcworICogb2JzZXJ2ZWQgaW4gYW55IHNlcXVlbmNlLCB0aGUgc2xlZXAgaW50ZXJ2YWwgZG91 YmxlcyBhZnRlciBlYWNoIHdha2UgY3ljbGUKKyAqIHVwIHRvIFNFUVNZTkNfTUFYX1NMRUVQX01T LiBXaGVuIGRyaWZ0IGlzIGRldGVjdGVkLCB0aGUgaW50ZXJ2YWwgcmVzZXRzIHRvCisgKiB0aGUg bWluaW11bSB0byBlbnN1cmUgdGltZWx5IHVwZGF0ZXMuCiAgKgogICogVG8gYXZvaWQgY3JlYXRp bmcgdG9vIG1hbnkgdHJhbnNhY3Rpb25zLCB1cCB0byBNQVhfU0VRVUVOQ0VTX1NZTkNfUEVSX0JB VENICiAgKiBzZXF1ZW5jZXMgYXJlIHN5bmNocm9uaXplZCBwZXIgdHJhbnNhY3Rpb24uIFRoZSBs b2NrcyBvbiB0aGUgc2VxdWVuY2UKQEAgLTYwLDYgKzY3LDcgQEAKICNpbmNsdWRlICJwb3N0bWFz dGVyL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCIK ICNpbmNsdWRlICJyZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJzdG9y YWdlL2xhdGNoLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sd2xvY2suaCIKICNpbmNsdWRlICJ1dGls cy9hY2wuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgpAQCAtNzEsMzEgKzc5LDQyIEBA CiAjaW5jbHVkZSAidXRpbHMvcGdfbHNuLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIK ICNpbmNsdWRlICJ1dGlscy91c2VyY29udGV4dC5oIgorI2luY2x1ZGUgInV0aWxzL3dhaXRfZXZl bnQuaCIKIAogI2RlZmluZSBSRU1PVEVfU0VRX0NPTF9DT1VOVCAxMAogCiB0eXBlZGVmIGVudW0g Q29weVNlcVJlc3VsdAogewogCUNPUFlTRVFfU1VDQ0VTUywKKwlDT1BZU0VRX0FMTE9XRUQsCiAJ Q09QWVNFUV9NSVNNQVRDSCwKIAlDT1BZU0VRX0lOU1VGRklDSUVOVF9QRVJNLAotCUNPUFlTRVFf U0tJUFBFRAorCUNPUFlTRVFfU0tJUFBFRCwKKwlDT1BZU0VRX05PX0RSSUZULAogfSBDb3B5U2Vx UmVzdWx0OwogCi1zdGF0aWMgTGlzdCAqc2VxaW5mb3MgPSBOSUw7CisvKiBTbGVlcCBpbnRlcnZh bHMgZm9yIHN5bmMgKi8KKyNkZWZpbmUgU0VRU1lOQ19NSU5fU0xFRVBfTVMgMjAwMAkvKiAyIHNl Y29uZHMgKi8KKyNkZWZpbmUgU0VRU1lOQ19NQVhfU0xFRVBfTVMgMzAwMDAJLyogMzAgc2Vjb25k cyAqLworCitzdGF0aWMgTWVtb3J5Q29udGV4dCBTZXF1ZW5jZVN5bmNDb250ZXh0ID0gTlVMTDsK IAogLyoKLSAqIEFwcGx5IHdvcmtlciBkZXRlcm1pbmVzIGlmIHNlcXVlbmNlIHN5bmNocm9uaXph dGlvbiBpcyBuZWVkZWQuCisgKiBBcHBseSB3b3JrZXIgZGV0ZXJtaW5lcyB3aGV0aGVyIGEgc2Vx dWVuY2Ugc3luYyB3b3JrZXIgaXMgbmVlZGVkLgogICoKICAqIFN0YXJ0IGEgc2VxdWVuY2VzeW5j IHdvcmtlciBpZiBvbmUgaXMgbm90IGFscmVhZHkgcnVubmluZy4gVGhlIGFjdGl2ZQogICogc2Vx dWVuY2VzeW5jIHdvcmtlciB3aWxsIGhhbmRsZSBhbGwgcGVuZGluZyBzZXF1ZW5jZSBzeW5jaHJv bml6YXRpb24uIElmIGFueQogICogc2VxdWVuY2VzIHJlbWFpbiB1bnN5bmNocm9uaXplZCBhZnRl ciBpdCBleGl0cywgYSBuZXcgd29ya2VyIGNhbiBiZSBzdGFydGVkCiAgKiBpbiB0aGUgbmV4dCBp dGVyYXRpb24uCisgKgorICogVGhlIHBvaW50ZXIgdG8gdGhlIHNlcXVlbmNlc3luYyB3b3JrZXIg aXMgY2FjaGVkIHRvIGF2b2lkIHNjYW5uaW5nIHRoZQorICogd29ya2VycyBhcnJheSBlYWNoIHRp bWUgdmlhIGxvZ2ljYWxyZXBfd29ya2VyX2ZpbmQoKS4KICAqLwogdm9pZAotUHJvY2Vzc1NlcXVl bmNlc0ZvclN5bmModm9pZCkKK01heWJlTGF1bmNoU2VxdWVuY2VTeW5jV29ya2VyKHZvaWQpCiB7 Ci0JTG9naWNhbFJlcFdvcmtlciAqc2VxdWVuY2VzeW5jX3dvcmtlcjsKKwlzdGF0aWMgTG9naWNh bFJlcFdvcmtlciAqc2VxdWVuY2VzeW5jX3dvcmtlciA9IE5VTEw7CisKIAlpbnQJCQluc3luY3dv cmtlcnM7CiAJYm9vbAkJaGFzX3BlbmRpbmdfc2VxdWVuY2VzOwogCWJvb2wJCXN0YXJ0ZWRfdHg7 CkBAIC0xMTMsNiArMTMyLDE5IEBAIFByb2Nlc3NTZXF1ZW5jZXNGb3JTeW5jKHZvaWQpCiAKIAlM V0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpOwogCisJLyoKKwkg KiBRdWljayBleGl0IGlmIHRoZSBzZXF1ZW5jZSBzeW5jIHdvcmtlciBmb3IgdGhlIGN1cnJlbnQg c3Vic2NyaXB0aW9uIGlzCisJICogYWxyZWFkeSBhbGl2ZS4KKwkgKi8KKwlpZiAoc2VxdWVuY2Vz eW5jX3dvcmtlciAmJgorCQlzZXF1ZW5jZXN5bmNfd29ya2VyLT5wcm9jICYmCisJCWlzU2VxdWVu Y2VTeW5jV29ya2VyKHNlcXVlbmNlc3luY193b3JrZXIpICYmCisJCXNlcXVlbmNlc3luY193b3Jr ZXItPnN1YmlkID09IE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQpCisJeworCQlMV0xvY2tSZWxl YXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKKwkJcmV0dXJuOworCX0KKwogCS8qIENoZWNrIGlm IHRoZXJlIGlzIGEgc2VxdWVuY2VzeW5jIHdvcmtlciBhbHJlYWR5IHJ1bm5pbmc/ICovCiAJc2Vx dWVuY2VzeW5jX3dvcmtlciA9IGxvZ2ljYWxyZXBfd29ya2VyX2ZpbmQoV09SS0VSVFlQRV9TRVFV RU5DRVNZTkMsCiAJCQkJCQkJCQkJCQkgTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwKQEAgLTE0 NSw3ICsxNzcsNyBAQCBQcm9jZXNzU2VxdWVuY2VzRm9yU3luYyh2b2lkKQogICogZm9yIHRoZSBn aXZlbiBsaXN0IG9mIHNlcXVlbmNlIGluZGV4ZXMuCiAgKi8KIHN0YXRpYyB2b2lkCi1nZXRfc2Vx dWVuY2VzX3N0cmluZyhMaXN0ICpzZXFpbmRleGVzLCBTdHJpbmdJbmZvIGJ1ZikKK2dldF9zZXF1 ZW5jZXNfc3RyaW5nKExpc3QgKnNlcWluZGV4ZXMsIExpc3QgKnNlcWluZm9zLCBTdHJpbmdJbmZv IGJ1ZikKIHsKIAlyZXNldFN0cmluZ0luZm8oYnVmKTsKIAlmb3JlYWNoX2ludChzZXFpZHgsIHNl cWluZGV4ZXMpCkBAIC0xNzIsNyArMjA0LDcgQEAgZ2V0X3NlcXVlbmNlc19zdHJpbmcoTGlzdCAq c2VxaW5kZXhlcywgU3RyaW5nSW5mbyBidWYpCiAgKi8KIHN0YXRpYyB2b2lkCiByZXBvcnRfc2Vx dWVuY2VfZXJyb3JzKExpc3QgKm1pc21hdGNoZWRfc2Vxc19pZHgsIExpc3QgKmluc3VmZnBlcm1f c2Vxc19pZHgsCi0JCQkJCSAgIExpc3QgKm1pc3Npbmdfc2Vxc19pZHgpCisJCQkJCSAgIExpc3Qg Km1pc3Npbmdfc2Vxc19pZHgsIExpc3QgKnNlcWluZm9zKQogewogCVN0cmluZ0luZm8Jc2Vxc3Ry OwogCkBAIC0xODQsNyArMjE2LDcgQEAgcmVwb3J0X3NlcXVlbmNlX2Vycm9ycyhMaXN0ICptaXNt YXRjaGVkX3NlcXNfaWR4LCBMaXN0ICppbnN1ZmZwZXJtX3NlcXNfaWR4LAogCiAJaWYgKG1pc21h dGNoZWRfc2Vxc19pZHgpCiAJewotCQlnZXRfc2VxdWVuY2VzX3N0cmluZyhtaXNtYXRjaGVkX3Nl cXNfaWR4LCBzZXFzdHIpOworCQlnZXRfc2VxdWVuY2VzX3N0cmluZyhtaXNtYXRjaGVkX3NlcXNf aWR4LCBzZXFpbmZvcywgc2Vxc3RyKTsKIAkJZXJlcG9ydChXQVJOSU5HLAogCQkJCWVycmNvZGUo RVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCiAJCQkJZXJybXNnX3Bs dXJhbCgibWlzbWF0Y2hlZCBvciByZW5hbWVkIHNlcXVlbmNlIG9uIHN1YnNjcmliZXIgKCVzKSIs CkBAIC0xOTUsNyArMjI3LDcgQEAgcmVwb3J0X3NlcXVlbmNlX2Vycm9ycyhMaXN0ICptaXNtYXRj aGVkX3NlcXNfaWR4LCBMaXN0ICppbnN1ZmZwZXJtX3NlcXNfaWR4LAogCiAJaWYgKGluc3VmZnBl cm1fc2Vxc19pZHgpCiAJewotCQlnZXRfc2VxdWVuY2VzX3N0cmluZyhpbnN1ZmZwZXJtX3NlcXNf aWR4LCBzZXFzdHIpOworCQlnZXRfc2VxdWVuY2VzX3N0cmluZyhpbnN1ZmZwZXJtX3NlcXNfaWR4 LCBzZXFpbmZvcywgc2Vxc3RyKTsKIAkJZXJlcG9ydChXQVJOSU5HLAogCQkJCWVycmNvZGUoRVJS Q09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCiAJCQkJZXJybXNnX3BsdXJh bCgiaW5zdWZmaWNpZW50IHByaXZpbGVnZXMgb24gc2VxdWVuY2UgKCVzKSIsCkBAIC0yMDYsNyAr MjM4LDcgQEAgcmVwb3J0X3NlcXVlbmNlX2Vycm9ycyhMaXN0ICptaXNtYXRjaGVkX3NlcXNfaWR4 LCBMaXN0ICppbnN1ZmZwZXJtX3NlcXNfaWR4LAogCiAJaWYgKG1pc3Npbmdfc2Vxc19pZHgpCiAJ ewotCQlnZXRfc2VxdWVuY2VzX3N0cmluZyhtaXNzaW5nX3NlcXNfaWR4LCBzZXFzdHIpOworCQln ZXRfc2VxdWVuY2VzX3N0cmluZyhtaXNzaW5nX3NlcXNfaWR4LCBzZXFpbmZvcywgc2Vxc3RyKTsK IAkJZXJlcG9ydChXQVJOSU5HLAogCQkJCWVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BS RVJFUVVJU0lURV9TVEFURSksCiAJCQkJZXJybXNnX3BsdXJhbCgibWlzc2luZyBzZXF1ZW5jZSBv biBwdWJsaXNoZXIgKCVzKSIsCkBAIC0yMzAsNyArMjYyLDggQEAgcmVwb3J0X3NlcXVlbmNlX2Vy cm9ycyhMaXN0ICptaXNtYXRjaGVkX3NlcXNfaWR4LCBMaXN0ICppbnN1ZmZwZXJtX3NlcXNfaWR4 LAogICovCiBzdGF0aWMgQ29weVNlcVJlc3VsdAogZ2V0X2FuZF92YWxpZGF0ZV9zZXFfaW5mbyhU dXBsZVRhYmxlU2xvdCAqc2xvdCwgUmVsYXRpb24gKnNlcXVlbmNlX3JlbCwKLQkJCQkJCSAgTG9n aWNhbFJlcFNlcXVlbmNlSW5mbyAqKnNlcWluZm8sIGludCAqc2VxaWR4KQorCQkJCQkJICBMb2dp Y2FsUmVwU2VxdWVuY2VJbmZvICoqc2VxaW5mbywgaW50ICpzZXFpZHgsCisJCQkJCQkgIExpc3Qg KnNlcWluZm9zKQogewogCWJvb2wJCWlzbnVsbDsKIAlpbnQJCQljb2wgPSAwOwpAQCAtMjQxLDcg KzI3NCw3IEBAIGdldF9hbmRfdmFsaWRhdGVfc2VxX2luZm8oVHVwbGVUYWJsZVNsb3QgKnNsb3Qs IFJlbGF0aW9uICpzZXF1ZW5jZV9yZWwsCiAJaW50NjQJCXJlbW90ZV9taW47CiAJaW50NjQJCXJl bW90ZV9tYXg7CiAJYm9vbAkJcmVtb3RlX2N5Y2xlOwotCUNvcHlTZXFSZXN1bHQgcmVzdWx0ID0g Q09QWVNFUV9TVUNDRVNTOworCUNvcHlTZXFSZXN1bHQgcmVzdWx0ID0gQ09QWVNFUV9BTExPV0VE OwogCUhlYXBUdXBsZQl0dXA7CiAJRm9ybV9wZ19zZXF1ZW5jZSBsb2NhbF9zZXE7CiAJTG9naWNh bFJlcFNlcXVlbmNlSW5mbyAqc2VxaW5mb19sb2NhbDsKQEAgLTMyNiwzMiArMzU5LDc3IEBAIGdl dF9hbmRfdmFsaWRhdGVfc2VxX2luZm8oVHVwbGVUYWJsZVNsb3QgKnNsb3QsIFJlbGF0aW9uICpz ZXF1ZW5jZV9yZWwsCiB9CiAKIC8qCi0gKiBBcHBseSByZW1vdGUgc2VxdWVuY2Ugc3RhdGUgdG8g bG9jYWwgc2VxdWVuY2UgYW5kIG1hcmsgaXQgYXMKLSAqIHN5bmNocm9uaXplZCAoUkVBRFkpLgor ICogQ2hlY2sgd2hldGhlciB0aGUgdXNlciBoYXMgcmVxdWlyZWQgcHJpdmlsZWdlcyBvbiB0aGUg c2VxdWVuY2UgYW5kCisgKiB3aGV0aGVyIHRoZSBzZXF1ZW5jZSBoYXMgZHJpZnRlZC4KICAqLwog c3RhdGljIENvcHlTZXFSZXN1bHQKLWNvcHlfc2VxdWVuY2UoTG9naWNhbFJlcFNlcXVlbmNlSW5m byAqc2VxaW5mbywgT2lkIHNlcW93bmVyKQorY2hlY2tfc2VxX3ByaXZpbGVnZXNfYW5kX2RyaWZ0 KExvZ2ljYWxSZXBTZXF1ZW5jZUluZm8gKnNlcWluZm8sCisJCQkJCQkJICAgUmVsYXRpb24gc2Vx dWVuY2VfcmVsKQogewotCVVzZXJDb250ZXh0IHVjeHQ7CiAJQWNsUmVzdWx0CWFjbHJlc3VsdDsK KwlPaWQJCQlzZXFvaWQgPSBzZXFpbmZvLT5sb2NhbHJlbGlkOworCisJLyogUGVyZm9ybSBkcmlm dCBjaGVjayBpZiBpdCdzIG5vdCB0aGUgaW5pdGlhbCBzeW5jICovCisJaWYgKHNlcWluZm8tPnJl bHN0YXRlID09IFNVQlJFTF9TVEFURV9SRUFEWSkKKwl7CisJCWludDY0CQlsb2NhbF9sYXN0X3Zh bHVlOworCQlib29sCQlsb2NhbF9pc19jYWxsZWQ7CisKKwkJLyoKKwkJICogU2tpcCBzeW5jaHJv bml6YXRpb24gaWYgdGhlIGN1cnJlbnQgdXNlciBkb2VzIG5vdCBoYXZlIHN1ZmZpY2llbnQKKwkJ ICogcHJpdmlsZWdlcyB0byByZWFkIHRoZSBzZXF1ZW5jZSBkYXRhLgorCQkgKi8KKwkJaWYgKCFH ZXRTZXF1ZW5jZShzZXF1ZW5jZV9yZWwsICZsb2NhbF9sYXN0X3ZhbHVlLCAmbG9jYWxfaXNfY2Fs bGVkKSkKKwkJCXJldHVybiBDT1BZU0VRX0lOU1VGRklDSUVOVF9QRVJNOworCisJCS8qCisJCSAq IFNraXAgc3luY2hyb25pemF0aW9uIGlmIHRoZSBzZXF1ZW5jZSBoYXMgbm90IGRyaWZ0ZWQgZnJv bSB0aGUKKwkJICogcHVibGlzaGVyJ3MgdmFsdWUuCisJCSAqLworCQlpZiAobG9jYWxfbGFzdF92 YWx1ZSA9PSBzZXFpbmZvLT5sYXN0X3ZhbHVlICYmCisJCQlsb2NhbF9pc19jYWxsZWQgPT0gc2Vx aW5mby0+aXNfY2FsbGVkKQorCQkJcmV0dXJuIENPUFlTRVFfTk9fRFJJRlQ7CisJfQorCisJLyog VmVyaWZ5IHRoYXQgdGhlIGN1cnJlbnQgdXNlciBjYW4gdXBkYXRlIHRoZSBzZXF1ZW5jZSAqLwor CWFjbHJlc3VsdCA9IHBnX2NsYXNzX2FjbGNoZWNrKHNlcW9pZCwgR2V0VXNlcklkKCksIEFDTF9V UERBVEUpOworCisJaWYgKGFjbHJlc3VsdCAhPSBBQ0xDSEVDS19PSykKKwkJcmV0dXJuIENPUFlT RVFfSU5TVUZGSUNJRU5UX1BFUk07CisKKwlyZXR1cm4gQ09QWVNFUV9BTExPV0VEOworfQorCisv KgorICogQXBwbHkgcmVtb3RlIHNlcXVlbmNlIHN0YXRlIHRvIGxvY2FsIHNlcXVlbmNlLiBGb3Ig c2VxdWVuY2VzIGluIElOSVQgc3RhdGUsCisgKiBhbHdheXMgc3luY2hyb25pemUgYW5kIHRoZW4g bW92ZSB0aGVtIHRvIFJFQURZIHN0YXRlIHVwb24gY29tcGxldGlvbi4gRm9yCisgKiBzZXF1ZW5j ZXMgYWxyZWFkeSBpbiBSRUFEWSBzdGF0ZSwgc3luY2hyb25pemUgb25seSBpZiBkcmlmdCBpcyBk ZXRlY3RlZC4KKyAqLworc3RhdGljIENvcHlTZXFSZXN1bHQKK2NvcHlfc2VxdWVuY2UoTG9naWNh bFJlcFNlcXVlbmNlSW5mbyAqc2VxaW5mbywgUmVsYXRpb24gc2VxdWVuY2VfcmVsLAorCQkJICBi b29sIHVwZGF0ZV9sc24pCit7CisJVXNlckNvbnRleHQgdWN4dDsKIAlib29sCQlydW5fYXNfb3du ZXIgPSBNeVN1YnNjcmlwdGlvbi0+cnVuYXNvd25lcjsKIAlPaWQJCQlzZXFvaWQgPSBzZXFpbmZv LT5sb2NhbHJlbGlkOworCUNvcHlTZXFSZXN1bHQgcmVzdWx0OworCWJvb2wJCW5lZWRfbHNuX3Vw ZGF0ZSA9IGZhbHNlOwogCiAJLyoKIAkgKiBJZiB0aGUgdXNlciBkaWQgbm90IG9wdCB0byBydW4g YXMgdGhlIG93bmVyIG9mIHRoZSBzdWJzY3JpcHRpb24KIAkgKiAoJ3J1bl9hc19vd25lcicpLCB0 aGVuIGNvcHkgdGhlIHNlcXVlbmNlIGFzIHRoZSBvd25lciBvZiB0aGUgc2VxdWVuY2UuCiAJICov CiAJaWYgKCFydW5fYXNfb3duZXIpCi0JCVN3aXRjaFRvVW50cnVzdGVkVXNlcihzZXFvd25lciwg JnVjeHQpOworCQlTd2l0Y2hUb1VudHJ1c3RlZFVzZXIoc2VxdWVuY2VfcmVsLT5yZF9yZWwtPnJl bG93bmVyLCAmdWN4dCk7CiAKLQlhY2xyZXN1bHQgPSBwZ19jbGFzc19hY2xjaGVjayhzZXFvaWQs IEdldFVzZXJJZCgpLCBBQ0xfVVBEQVRFKTsKKwlyZXN1bHQgPSBjaGVja19zZXFfcHJpdmlsZWdl c19hbmRfZHJpZnQoc2VxaW5mbywgc2VxdWVuY2VfcmVsKTsKIAotCWlmIChhY2xyZXN1bHQgIT0g QUNMQ0hFQ0tfT0spCisJaWYgKHJlc3VsdCAhPSBDT1BZU0VRX0FMTE9XRUQpCiAJewogCQlpZiAo IXJ1bl9hc19vd25lcikKIAkJCVJlc3RvcmVVc2VyQ29udGV4dCgmdWN4dCk7CiAKLQkJcmV0dXJu IENPUFlTRVFfSU5TVUZGSUNJRU5UX1BFUk07CisJCXJldHVybiByZXN1bHQ7CiAJfQogCiAJLyoK QEAgLTM2OCwyMCArNDQ2LDQ3IEBAIGNvcHlfc2VxdWVuY2UoTG9naWNhbFJlcFNlcXVlbmNlSW5m byAqc2VxaW5mbywgT2lkIHNlcW93bmVyKQogCQlSZXN0b3JlVXNlckNvbnRleHQoJnVjeHQpOwog CiAJLyoKLQkgKiBSZWNvcmQgdGhlIHJlbW90ZSBzZXF1ZW5jZSdzIExTTiBpbiBwZ19zdWJzY3Jp cHRpb25fcmVsIGFuZCBtYXJrIHRoZQotCSAqIHNlcXVlbmNlIGFzIFJFQURZLgorCSAqIElmIExT TiB1cGRhdGVzIGFyZSByZXF1ZXN0ZWQsIGNoZWNrIHdoZXRoZXIgdGhlIHJlbW90ZSBMU04gZGlm ZmVycyBmcm9tCisJICogdGhlIGxvY2FsbHkgc3RvcmVkIHZhbHVlLgogCSAqLwotCVVwZGF0ZVN1 YnNjcmlwdGlvblJlbFN0YXRlKE15U3Vic2NyaXB0aW9uLT5vaWQsIHNlcW9pZCwgU1VCUkVMX1NU QVRFX1JFQURZLAotCQkJCQkJCSAgIHNlcWluZm8tPnBhZ2VfbHNuLCBmYWxzZSk7CisJaWYgKHVw ZGF0ZV9sc24pCisJeworCQlYTG9nUmVjUHRyCWxvY2FsX3BhZ2VfbHNuOworCisJCS8qIEdldCB0 aGUgbG9jYWwgcGFnZSBMU04gZm9yIGNvbXBhcmlzb24gd2l0aCB0aGUgcmVtb3RlIHZhbHVlICov CisJCSh2b2lkKSBHZXRTdWJzY3JpcHRpb25SZWxTdGF0ZShNeVN1YnNjcmlwdGlvbi0+b2lkLAor CQkJCQkJCQkJICAgUmVsYXRpb25HZXRSZWxpZChzZXF1ZW5jZV9yZWwpLAorCQkJCQkJCQkJICAg JmxvY2FsX3BhZ2VfbHNuKTsKKworCQluZWVkX2xzbl91cGRhdGUgPSAobG9jYWxfcGFnZV9sc24g IT0gc2VxaW5mby0+cGFnZV9sc24pOworCX0KKworCS8qCisJICogVXBkYXRlIHRoZSBjYXRhbG9n IGlmIGVpdGhlciB0aGUgc2VxdWVuY2UgaXMgaW4gSU5JVCBzdGF0ZSBhbmQgbmVlZHMgdG8KKwkg KiB0cmFuc2l0aW9uIHRvIFJFQURZLCBvciB0aGUgTFNOIGhhcyBjaGFuZ2VkIGFuZCB0aGlzIGlz IGFuIExTTiB1cGRhdGUKKwkgKiBjeWNsZSAodXBkYXRlX2xzbiBpcyB0cnVlKS4KKwkgKi8KKwlp ZiAoc2VxaW5mby0+cmVsc3RhdGUgPT0gU1VCUkVMX1NUQVRFX0lOSVQgfHwgbmVlZF9sc25fdXBk YXRlKQorCQlVcGRhdGVTdWJzY3JpcHRpb25SZWxTdGF0ZShNeVN1YnNjcmlwdGlvbi0+b2lkLCBz ZXFvaWQsIFNVQlJFTF9TVEFURV9SRUFEWSwKKwkJCQkJCQkJICAgc2VxaW5mby0+cGFnZV9sc24s IGZhbHNlKTsKIAogCXJldHVybiBDT1BZU0VRX1NVQ0NFU1M7CiB9CiAKIC8qCiAgKiBDb3B5IGV4 aXN0aW5nIGRhdGEgb2Ygc2VxdWVuY2VzIGZyb20gdGhlIHB1Ymxpc2hlci4KKyAqCisgKiBTZXF1 ZW5jZXMgaW4gSU5JVCBzdGF0ZSBhcmUgYWx3YXlzIHN5bmNocm9uaXplZC4gU2VxdWVuY2VzIGlu IFJFQURZIHN0YXRlIGFyZQorICogc3luY2hyb25pemVkIG9ubHkgd2hlbiBkcmlmdCBpcyBkZXRl Y3RlZC4KKyAqCisgKiBXaGVuICd1cGRhdGVfbHNuJyBpcyB0cnVlLCB1cGRhdGUgdGhlIHBhZ2Ug TFNOIGluIHBnX3N1YnNjcmlwdGlvbl9yZWwgZm9yIGFueQorICogc3luY2hyb25pemVkIHNlcXVl bmNlcyB3aG9zZSBMU04gaGFzIGNoYW5nZWQuIFdoZW4gZmFsc2UsIHRoZSBMU04gaXMgdXBkYXRl ZAorICogb25seSBmb3Igc2VxdWVuY2VzIHRyYW5zaXRpb25pbmcgZnJvbSBJTklUIHRvIFJFQURZ IHN0YXRlLgorICoKKyAqIFJldHVybnMgdHJ1ZS9mYWxzZSBpZiBhbnkgc2VxdWVuY2VzIHdlcmUg YWN0dWFsbHkgY29waWVkLgogICovCi1zdGF0aWMgdm9pZAotY29weV9zZXF1ZW5jZXMoV2FsUmVj ZWl2ZXJDb25uICpjb25uKQorc3RhdGljIGJvb2wKK2NvcHlfc2VxdWVuY2VzKFdhbFJlY2VpdmVy Q29ubiAqY29ubiwgTGlzdCAqc2VxaW5mb3MsIGJvb2wgdXBkYXRlX2xzbikKIHsKIAlpbnQJCQlj dXJfYmF0Y2hfYmFzZV9pbmRleCA9IDA7CiAJaW50CQkJbl9zZXFpbmZvcyA9IGxpc3RfbGVuZ3Ro KHNlcWluZm9zKTsKQEAgLTM5MSwxMyArNDk2LDEwIEBAIGNvcHlfc2VxdWVuY2VzKFdhbFJlY2Vp dmVyQ29ubiAqY29ubikKIAlTdHJpbmdJbmZvCXNlcXN0ciA9IG1ha2VTdHJpbmdJbmZvKCk7CiAJ U3RyaW5nSW5mbwljbWQgPSBtYWtlU3RyaW5nSW5mbygpOwogCU1lbW9yeUNvbnRleHQgb2xkY3R4 OworCWJvb2wJCXNlcXVlbmNlX2NvcGllZCA9IGZhbHNlOwogCiAjZGVmaW5lIE1BWF9TRVFVRU5D RVNfU1lOQ19QRVJfQkFUQ0ggMTAwCiAKLQllbG9nKERFQlVHMSwKLQkJICJsb2dpY2FsIHJlcGxp Y2F0aW9uIHNlcXVlbmNlIHN5bmNocm9uaXphdGlvbiBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiAt IHRvdGFsIHVuc3luY2hyb25pemVkOiAlZCIsCi0JCSBNeVN1YnNjcmlwdGlvbi0+bmFtZSwgbl9z ZXFpbmZvcyk7Ci0KIAl3aGlsZSAoY3VyX2JhdGNoX2Jhc2VfaW5kZXggPCBuX3NlcWluZm9zKQog CXsKIAkJT2lkCQkJc2VxUm93W1JFTU9URV9TRVFfQ09MX0NPVU5UXSA9IHtJTlQ4T0lELCBJTlQ4 T0lELApAQCAtNDA3LDYgKzUwOSw3IEBAIGNvcHlfc2VxdWVuY2VzKFdhbFJlY2VpdmVyQ29ubiAq Y29ubikKIAkJaW50CQkJYmF0Y2hfbWlzbWF0Y2hlZF9jb3VudCA9IDA7CiAJCWludAkJCWJhdGNo X3NraXBwZWRfY291bnQgPSAwOwogCQlpbnQJCQliYXRjaF9pbnN1ZmZwZXJtX2NvdW50ID0gMDsK KwkJaW50CQkJYmF0Y2hfbm9fZHJpZnQgPSAwOwogCQlpbnQJCQliYXRjaF9taXNzaW5nX2NvdW50 OwogCQlSZWxhdGlvbglzZXF1ZW5jZV9yZWwgPSBOVUxMOwogCkBAIC01MDIsMjggKzYwNSwyOCBA QCBjb3B5X3NlcXVlbmNlcyhXYWxSZWNlaXZlckNvbm4gKmNvbm4pCiAJCQl9CiAKIAkJCXN5bmNf c3RhdHVzID0gZ2V0X2FuZF92YWxpZGF0ZV9zZXFfaW5mbyhzbG90LCAmc2VxdWVuY2VfcmVsLAot CQkJCQkJCQkJCQkJCSZzZXFpbmZvLCAmc2VxaWR4KTsKLQkJCWlmIChzeW5jX3N0YXR1cyA9PSBD T1BZU0VRX1NVQ0NFU1MpCi0JCQkJc3luY19zdGF0dXMgPSBjb3B5X3NlcXVlbmNlKHNlcWluZm8s Ci0JCQkJCQkJCQkJCXNlcXVlbmNlX3JlbC0+cmRfcmVsLT5yZWxvd25lcik7CisJCQkJCQkJCQkJ CQkJJnNlcWluZm8sICZzZXFpZHgsIHNlcWluZm9zKTsKKworCQkJaWYgKHN5bmNfc3RhdHVzID09 IENPUFlTRVFfQUxMT1dFRCkKKwkJCQlzeW5jX3N0YXR1cyA9IGNvcHlfc2VxdWVuY2Uoc2VxaW5m bywgc2VxdWVuY2VfcmVsLCB1cGRhdGVfbHNuKTsKIAogCQkJc3dpdGNoIChzeW5jX3N0YXR1cykK IAkJCXsKIAkJCQljYXNlIENPUFlTRVFfU1VDQ0VTUzoKIAkJCQkJZWxvZyhERUJVRzEsCi0JCQkJ CQkgImxvZ2ljYWwgcmVwbGljYXRpb24gc3luY2hyb25pemF0aW9uIGZvciBzdWJzY3JpcHRpb24g XCIlc1wiLCBzZXF1ZW5jZSBcIiVzLiVzXCIgaGFzIGZpbmlzaGVkIiwKLQkJCQkJCSBNeVN1YnNj cmlwdGlvbi0+bmFtZSwgc2VxaW5mby0+bnNwbmFtZSwKLQkJCQkJCSBzZXFpbmZvLT5zZXFuYW1l KTsKKwkJCQkJCSAibG9naWNhbCByZXBsaWNhdGlvbiBzeW5jaHJvbml6YXRpb24gaGFzIHVwZGF0 ZWQgc2VxdWVuY2UgXCIlcy4lc1wiIGluIHN1YnNjcmlwdGlvbiBcIiVzXCIiLAorCQkJCQkJIHNl cWluZm8tPm5zcG5hbWUsIHNlcWluZm8tPnNlcW5hbWUsIE15U3Vic2NyaXB0aW9uLT5uYW1lKTsK IAkJCQkJYmF0Y2hfc3VjY2VlZGVkX2NvdW50Kys7CisJCQkJCXNlcXVlbmNlX2NvcGllZCA9IHRy dWU7CiAJCQkJCWJyZWFrOwogCQkJCWNhc2UgQ09QWVNFUV9NSVNNQVRDSDoKIAogCQkJCQkvKgot CQkJCQkgKiBSZW1lbWJlciBtaXNtYXRjaGVkIHNlcXVlbmNlcyBpbiBhIGxvbmctbGl2ZWQgbWVt b3J5Ci0JCQkJCSAqIGNvbnRleHQgc2luY2UgdGhlc2Ugd2lsbCBiZSB1c2VkIGFmdGVyIHRoZSB0 cmFuc2FjdGlvbgotCQkJCQkgKiBpcyBjb21taXR0ZWQuCisJCQkJCSAqIFJlbWVtYmVyIG1pc21h dGNoZWQgc2VxdWVuY2VzIGluIFNlcXVlbmNlU3luY0NvbnRleHQKKwkJCQkJICogc2luY2UgdGhl c2Ugd2lsbCBiZSB1c2VkIGFmdGVyIHRoZSB0cmFuc2FjdGlvbiBpcworCQkJCQkgKiBjb21taXR0 ZWQuCiAJCQkJCSAqLwotCQkJCQlvbGRjdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlD b250ZXh0KTsKKwkJCQkJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKFNlcXVlbmNlU3lu Y0NvbnRleHQpOwogCQkJCQltaXNtYXRjaGVkX3NlcXNfaWR4ID0gbGFwcGVuZF9pbnQobWlzbWF0 Y2hlZF9zZXFzX2lkeCwKIAkJCQkJCQkJCQkJCQkgIHNlcWlkeCk7CiAJCQkJCU1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhvbGRjdHgpOwpAQCAtNTMyLDExICs2MzUsMTEgQEAgY29weV9zZXF1ZW5jZXMo V2FsUmVjZWl2ZXJDb25uICpjb25uKQogCQkJCWNhc2UgQ09QWVNFUV9JTlNVRkZJQ0lFTlRfUEVS TToKIAogCQkJCQkvKgotCQkJCQkgKiBSZW1lbWJlciBzZXF1ZW5jZXMgd2l0aCBpbnN1ZmZpY2ll bnQgcHJpdmlsZWdlcyBpbiBhCi0JCQkJCSAqIGxvbmctbGl2ZWQgbWVtb3J5IGNvbnRleHQgc2lu Y2UgdGhlc2Ugd2lsbCBiZSB1c2VkCi0JCQkJCSAqIGFmdGVyIHRoZSB0cmFuc2FjdGlvbiBpcyBj b21taXR0ZWQuCisJCQkJCSAqIFJlbWVtYmVyIHNlcXVlbmNlcyB3aXRoIGluc3VmZmljaWVudCBw cml2aWxlZ2VzIGluCisJCQkJCSAqIFNlcXVlbmNlU3luY0NvbnRleHQgc2luY2UgdGhlc2Ugd2ls bCBiZSB1c2VkIGFmdGVyIHRoZQorCQkJCQkgKiB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuCiAJ CQkJCSAqLwotCQkJCQlvbGRjdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0 KTsKKwkJCQkJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKFNlcXVlbmNlU3luY0NvbnRl eHQpOwogCQkJCQlpbnN1ZmZwZXJtX3NlcXNfaWR4ID0gbGFwcGVuZF9pbnQoaW5zdWZmcGVybV9z ZXFzX2lkeCwKIAkJCQkJCQkJCQkJCQkgIHNlcWlkeCk7CiAJCQkJCU1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhvbGRjdHgpOwpAQCAtNTU5LDYgKzY2MiwxMyBAQCBjb3B5X3NlcXVlbmNlcyhXYWxSZWNl aXZlckNvbm4gKmNvbm4pCiAJCQkJCQliYXRjaF9za2lwcGVkX2NvdW50Kys7CiAJCQkJCX0KIAkJ CQkJYnJlYWs7CisJCQkJY2FzZSBDT1BZU0VRX05PX0RSSUZUOgorCQkJCQkvKiBOb3RoaW5nIHRv IGRvICovCisJCQkJCWJhdGNoX25vX2RyaWZ0Kys7CisJCQkJCWJyZWFrOworCQkJCWRlZmF1bHQ6 CisJCQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgc2VxdWVuY2UgcmVwbGljYXRpb24gcmVz dWx0OiAlZCIsIChpbnQpIHN5bmNfc3RhdHVzKTsKKwogCQkJfQogCiAJCQlpZiAoc2VxdWVuY2Vf cmVsKQpAQCAtNTczLDE0ICs2ODMsMTUgQEAgY29weV9zZXF1ZW5jZXMoV2FsUmVjZWl2ZXJDb25u ICpjb25uKQogCQliYXRjaF9taXNzaW5nX2NvdW50ID0gYmF0Y2hfc2l6ZSAtIChiYXRjaF9zdWNj ZWVkZWRfY291bnQgKwogCQkJCQkJCQkJCQliYXRjaF9taXNtYXRjaGVkX2NvdW50ICsKIAkJCQkJ CQkJCQkJYmF0Y2hfaW5zdWZmcGVybV9jb3VudCArCi0JCQkJCQkJCQkJCWJhdGNoX3NraXBwZWRf Y291bnQpOworCQkJCQkJCQkJCQliYXRjaF9za2lwcGVkX2NvdW50ICsKKwkJCQkJCQkJCQkJYmF0 Y2hfbm9fZHJpZnQpOwogCiAJCWVsb2coREVCVUcxLAotCQkJICJsb2dpY2FsIHJlcGxpY2F0aW9u IHNlcXVlbmNlIHN5bmNocm9uaXphdGlvbiBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiAtIGJhdGNo ICMlZCA9ICVkIGF0dGVtcHRlZCwgJWQgc3VjY2VlZGVkLCAlZCBtaXNtYXRjaGVkLCAlZCBpbnN1 ZmZpY2llbnQgcGVybWlzc2lvbiwgJWQgbWlzc2luZyBmcm9tIHB1Ymxpc2hlciwgJWQgc2tpcHBl ZCIsCisJCQkgImxvZ2ljYWwgcmVwbGljYXRpb24gc2VxdWVuY2Ugc3luY2hyb25pemF0aW9uIGZv ciBzdWJzY3JpcHRpb24gXCIlc1wiIC0gYmF0Y2ggIyVkID0gJWQgYXR0ZW1wdGVkLCAlZCBzdWNj ZWVkZWQsICVkIG1pc21hdGNoZWQsICVkIGluc3VmZmljaWVudCBwZXJtaXNzaW9uLCAlZCBtaXNz aW5nIGZyb20gcHVibGlzaGVyLCAlZCBza2lwcGVkLCAlZCBubyBkcmlmdCIsCiAJCQkgTXlTdWJz Y3JpcHRpb24tPm5hbWUsCiAJCQkgKGN1cl9iYXRjaF9iYXNlX2luZGV4IC8gTUFYX1NFUVVFTkNF U19TWU5DX1BFUl9CQVRDSCkgKyAxLAogCQkJIGJhdGNoX3NpemUsIGJhdGNoX3N1Y2NlZWRlZF9j b3VudCwgYmF0Y2hfbWlzbWF0Y2hlZF9jb3VudCwKLQkJCSBiYXRjaF9pbnN1ZmZwZXJtX2NvdW50 LCBiYXRjaF9taXNzaW5nX2NvdW50LCBiYXRjaF9za2lwcGVkX2NvdW50KTsKKwkJCSBiYXRjaF9p bnN1ZmZwZXJtX2NvdW50LCBiYXRjaF9taXNzaW5nX2NvdW50LCBiYXRjaF9za2lwcGVkX2NvdW50 LCBiYXRjaF9ub19kcmlmdCk7CiAKIAkJLyogQ29tbWl0IHRoaXMgYmF0Y2gsIGFuZCBwcmVwYXJl IGZvciBuZXh0IGJhdGNoICovCiAJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwpAQCAtNjA4 LDQ3ICs3MTksNTAgQEAgY29weV9zZXF1ZW5jZXMoV2FsUmVjZWl2ZXJDb25uICpjb25uKQogCiAJ LyogUmVwb3J0IG1pc21hdGNoZXMsIHBlcm1pc3Npb24gaXNzdWVzLCBvciBtaXNzaW5nIHNlcXVl bmNlcyAqLwogCXJlcG9ydF9zZXF1ZW5jZV9lcnJvcnMobWlzbWF0Y2hlZF9zZXFzX2lkeCwgaW5z dWZmcGVybV9zZXFzX2lkeCwKLQkJCQkJCSAgIG1pc3Npbmdfc2Vxc19pZHgpOworCQkJCQkJICAg bWlzc2luZ19zZXFzX2lkeCwgc2VxaW5mb3MpOworCisJcmV0dXJuIHNlcXVlbmNlX2NvcGllZDsK IH0KIAogLyoKICAqIElkZW50aWZpZXMgc2VxdWVuY2VzIHRoYXQgcmVxdWlyZSBzeW5jaHJvbml6 YXRpb24gYW5kIGluaXRpYXRlcyB0aGUKICAqIHN5bmNocm9uaXphdGlvbiBwcm9jZXNzLgorICoK KyAqIFJldHVybnMgdHJ1ZSBpZiBzZXF1ZW5jZXMgaGF2ZSBiZWVuIHVwZGF0ZWQuCiAgKi8KLXN0 YXRpYyB2b2lkCi1Mb2dpY2FsUmVwU3luY1NlcXVlbmNlcyh2b2lkKQorc3RhdGljIGJvb2wKK0xv Z2ljYWxSZXBTeW5jU2VxdWVuY2VzKFdhbFJlY2VpdmVyQ29ubiAqY29ubiwgYm9vbCB1cGRhdGVf bHNuKQogewotCWNoYXIJICAgKmVycjsKLQlib29sCQltdXN0X3VzZV9wYXNzd29yZDsKIAlSZWxh dGlvbglyZWw7CiAJSGVhcFR1cGxlCXR1cDsKLQlTY2FuS2V5RGF0YSBza2V5WzJdOworCVNjYW5L ZXlEYXRhIHNrZXlbMV07CiAJU3lzU2NhbkRlc2Mgc2NhbjsKIAlPaWQJCQlzdWJpZCA9IE15TG9n aWNhbFJlcFdvcmtlci0+c3ViaWQ7Ci0JU3RyaW5nSW5mb0RhdGEgYXBwX25hbWU7CisJYm9vbAkJ c2VxdWVuY2VfY29waWVkID0gZmFsc2U7CisJTGlzdAkgICAqc2VxaW5mb3MgPSBOSUw7CisJTWVt b3J5Q29udGV4dCBvbGRjdHg7CisKKwlBc3NlcnQoU2VxdWVuY2VTeW5jQ29udGV4dCk7CiAKIAlT dGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCiAJcmVsID0gdGFibGVfb3BlbihTdWJzY3JpcHRp b25SZWxSZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOwogCisJLyogU2NhbiBmb3IgYWxsIHNl cXVlbmNlcyBiZWxvbmdpbmcgdG8gdGhpcyBzdWJzY3JpcHRpb24gKi8KIAlTY2FuS2V5SW5pdCgm c2tleVswXSwKIAkJCQlBbnVtX3BnX3N1YnNjcmlwdGlvbl9yZWxfc3JzdWJpZCwKIAkJCQlCVEVx dWFsU3RyYXRlZ3lOdW1iZXIsIEZfT0lERVEsCiAJCQkJT2JqZWN0SWRHZXREYXR1bShzdWJpZCkp OwogCi0JU2NhbktleUluaXQoJnNrZXlbMV0sCi0JCQkJQW51bV9wZ19zdWJzY3JpcHRpb25fcmVs X3Nyc3Vic3RhdGUsCi0JCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX0NIQVJFUSwKLQkJCQlD aGFyR2V0RGF0dW0oU1VCUkVMX1NUQVRFX0lOSVQpKTsKLQogCXNjYW4gPSBzeXN0YWJsZV9iZWdp bnNjYW4ocmVsLCBJbnZhbGlkT2lkLCBmYWxzZSwKLQkJCQkJCQkgIE5VTEwsIDIsIHNrZXkpOwor CQkJCQkJCSAgTlVMTCwgMSwgc2tleSk7CisKIAl3aGlsZSAoSGVhcFR1cGxlSXNWYWxpZCh0dXAg PSBzeXN0YWJsZV9nZXRuZXh0KHNjYW4pKSkKIAl7CiAJCUZvcm1fcGdfc3Vic2NyaXB0aW9uX3Jl bCBzdWJyZWw7CiAJCUxvZ2ljYWxSZXBTZXF1ZW5jZUluZm8gKnNlcTsKIAkJUmVsYXRpb24Jc2Vx dWVuY2VfcmVsOwotCQlNZW1vcnlDb250ZXh0IG9sZGN0eDsKKwkJY2hhcgkJcmVsc3RhdGU7CiAK IAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIApAQCAtNjY3LDE4ICs3ODEsMjEgQEAgTG9naWNh bFJlcFN5bmNTZXF1ZW5jZXModm9pZCkKIAkJCWNvbnRpbnVlOwogCQl9CiAKKwkJcmVsc3RhdGUg PSBzdWJyZWwtPnNyc3Vic3RhdGU7CisKKwkJQXNzZXJ0KHJlbHN0YXRlID09IFNVQlJFTF9TVEFU RV9JTklUIHx8IHJlbHN0YXRlID09IFNVQlJFTF9TVEFURV9SRUFEWSk7CisKIAkJLyoKIAkJICog V29ya2VyIG5lZWRzIHRvIHByb2Nlc3Mgc2VxdWVuY2VzIGFjcm9zcyB0cmFuc2FjdGlvbiBib3Vu ZGFyeSwgc28KLQkJICogYWxsb2NhdGUgdGhlbSB1bmRlciBsb25nLWxpdmVkIGNvbnRleHQuCisJ CSAqIGFsbG9jYXRlIHRoZW0gdW5kZXIgU2VxdWVuY2VTeW5jQ29udGV4dC4KIAkJICovCi0JCW9s ZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOwotCisJCW9sZGN0eCA9 IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhTZXF1ZW5jZVN5bmNDb250ZXh0KTsKIAkJc2VxID0gcGFs bG9jMF9vYmplY3QoTG9naWNhbFJlcFNlcXVlbmNlSW5mbyk7CiAJCXNlcS0+bG9jYWxyZWxpZCA9 IHN1YnJlbC0+c3JyZWxpZDsKIAkJc2VxLT5uc3BuYW1lID0gZ2V0X25hbWVzcGFjZV9uYW1lKFJl bGF0aW9uR2V0TmFtZXNwYWNlKHNlcXVlbmNlX3JlbCkpOwogCQlzZXEtPnNlcW5hbWUgPSBwc3Ry ZHVwKFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHNlcXVlbmNlX3JlbCkpOworCQlzZXEtPnJlbHN0 YXRlID0gcmVsc3RhdGU7CiAJCXNlcWluZm9zID0gbGFwcGVuZChzZXFpbmZvcywgc2VxKTsKLQog CQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKIAogCQl0YWJsZV9jbG9zZShzZXF1ZW5j ZV9yZWwsIE5vTG9jayk7CkBAIC02OTQsMzYgKzgxMSwxNiBAQCBMb2dpY2FsUmVwU3luY1NlcXVl bmNlcyh2b2lkKQogCSAqIEV4aXQgZWFybHkgaWYgbm8gY2F0YWxvZyBlbnRyaWVzIGZvdW5kLCBs aWtlbHkgZHVlIHRvIGNvbmN1cnJlbnQgZHJvcHMuCiAJICovCiAJaWYgKCFzZXFpbmZvcykKLQkJ cmV0dXJuOwotCi0JLyogSXMgdGhlIHVzZSBvZiBhIHBhc3N3b3JkIG1hbmRhdG9yeT8gKi8KLQlt dXN0X3VzZV9wYXNzd29yZCA9IE15U3Vic2NyaXB0aW9uLT5wYXNzd29yZHJlcXVpcmVkICYmCi0J CSFNeVN1YnNjcmlwdGlvbi0+b3duZXJzdXBlcnVzZXI7CisJCXJldHVybiBmYWxzZTsKIAotCWlu aXRTdHJpbmdJbmZvKCZhcHBfbmFtZSk7Ci0JYXBwZW5kU3RyaW5nSW5mbygmYXBwX25hbWUsICJw Z18ldV9zZXF1ZW5jZV9zeW5jXyIgVUlOVDY0X0ZPUk1BVCwKLQkJCQkJIE15U3Vic2NyaXB0aW9u LT5vaWQsIEdldFN5c3RlbUlkZW50aWZpZXIoKSk7CisJLyogUHJvY2VzcyBzZXF1ZW5jZXMgKi8K KwlzZXF1ZW5jZV9jb3BpZWQgPSBjb3B5X3NlcXVlbmNlcyhjb25uLCBzZXFpbmZvcywgdXBkYXRl X2xzbik7CiAKLQkvKgotCSAqIEVzdGFibGlzaCB0aGUgY29ubmVjdGlvbiB0byB0aGUgcHVibGlz aGVyIGZvciBzZXF1ZW5jZSBzeW5jaHJvbml6YXRpb24uCi0JICovCi0JTG9nUmVwV29ya2VyV2Fs UmN2Q29ubiA9Ci0JCXdhbHJjdl9jb25uZWN0KE15U3Vic2NyaXB0aW9uLT5jb25uaW5mbywgdHJ1 ZSwgdHJ1ZSwKLQkJCQkJICAgbXVzdF91c2VfcGFzc3dvcmQsCi0JCQkJCSAgIGFwcF9uYW1lLmRh dGEsICZlcnIpOwotCWlmIChMb2dSZXBXb3JrZXJXYWxSY3ZDb25uID09IE5VTEwpCi0JCWVyZXBv cnQoRVJST1IsCi0JCQkJZXJyY29kZShFUlJDT0RFX0NPTk5FQ1RJT05fRkFJTFVSRSksCi0JCQkJ ZXJybXNnKCJzZXF1ZW5jZXN5bmMgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIGNvdWxk IG5vdCBjb25uZWN0IHRvIHRoZSBwdWJsaXNoZXI6ICVzIiwKLQkJCQkJICAgTXlTdWJzY3JpcHRp b24tPm5hbWUsIGVycikpOwotCi0JcGZyZWUoYXBwX25hbWUuZGF0YSk7Ci0KLQljb3B5X3NlcXVl bmNlcyhMb2dSZXBXb3JrZXJXYWxSY3ZDb25uKTsKKwlyZXR1cm4gc2VxdWVuY2VfY29waWVkOwog fQogCiAvKgotICogRXhlY3V0ZSB0aGUgaW5pdGlhbCBzeW5jIHdpdGggZXJyb3IgaGFuZGxpbmcu IERpc2FibGUgdGhlIHN1YnNjcmlwdGlvbiwKKyAqIEV4ZWN1dGUgdGhlIHNlcXVlbmNlIHN5bmMg d2l0aCBlcnJvciBoYW5kbGluZy4gRGlzYWJsZSB0aGUgc3Vic2NyaXB0aW9uLAogICogaWYgcmVx dWlyZWQuCiAgKgogICogTm90ZSB0aGF0IHdlIGRvbid0IGhhbmRsZSBGQVRBTCBlcnJvcnMgd2hp Y2ggYXJlIHByb2JhYmx5IGJlY2F1c2Ugb2Ygc3lzdGVtCkBAIC03MzYsOCArODMzLDExNyBAQCBz dGFydF9zZXF1ZW5jZV9zeW5jKHZvaWQpCiAKIAlQR19UUlkoKTsKIAl7Ci0JCS8qIENhbGwgaW5p dGlhbCBzeW5jLiAqLwotCQlMb2dpY2FsUmVwU3luY1NlcXVlbmNlcygpOworCQljaGFyCSAgICpl cnI7CisJCWJvb2wJCW11c3RfdXNlX3Bhc3N3b3JkOworCQlTdHJpbmdJbmZvRGF0YSBhcHBfbmFt ZTsKKwkJbG9uZwkJc2xlZXBfbXMgPSBTRVFTWU5DX01JTl9TTEVFUF9NUzsKKwkJVGltZXN0YW1w VHogbmV4dF9sc25fdXBkYXRlID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOworCisJCS8qIElzIHRo ZSB1c2Ugb2YgYSBwYXNzd29yZCBtYW5kYXRvcnk/ICovCisJCW11c3RfdXNlX3Bhc3N3b3JkID0g TXlTdWJzY3JpcHRpb24tPnBhc3N3b3JkcmVxdWlyZWQgJiYKKwkJCSFNeVN1YnNjcmlwdGlvbi0+ b3duZXJzdXBlcnVzZXI7CisKKwkJaW5pdFN0cmluZ0luZm8oJmFwcF9uYW1lKTsKKwkJYXBwZW5k U3RyaW5nSW5mbygmYXBwX25hbWUsICJwZ18ldV9zZXF1ZW5jZV9zeW5jXyIgVUlOVDY0X0ZPUk1B VCwKKwkJCQkJCSBNeVN1YnNjcmlwdGlvbi0+b2lkLCBHZXRTeXN0ZW1JZGVudGlmaWVyKCkpOwor CisJCS8qCisJCSAqIEVzdGFibGlzaCB0aGUgY29ubmVjdGlvbiB0byB0aGUgcHVibGlzaGVyIGZv ciBzZXF1ZW5jZQorCQkgKiBzeW5jaHJvbml6YXRpb24uCisJCSAqLworCQlMb2dSZXBXb3JrZXJX YWxSY3ZDb25uID0KKwkJCXdhbHJjdl9jb25uZWN0KE15U3Vic2NyaXB0aW9uLT5jb25uaW5mbywg dHJ1ZSwgdHJ1ZSwKKwkJCQkJCSAgIG11c3RfdXNlX3Bhc3N3b3JkLAorCQkJCQkJICAgYXBwX25h bWUuZGF0YSwgJmVycik7CisJCWlmIChMb2dSZXBXb3JrZXJXYWxSY3ZDb25uID09IE5VTEwpCisJ CQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfQ09OTkVDVElPTl9GQUlMVVJF KSwKKwkJCQkJZXJybXNnKCJzZXF1ZW5jZXN5bmMgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIl c1wiIGNvdWxkIG5vdCBjb25uZWN0IHRvIHRoZSBwdWJsaXNoZXI6ICVzIiwKKwkJCQkJCSAgIE15 U3Vic2NyaXB0aW9uLT5uYW1lLCBlcnIpKTsKKworCQlwZnJlZShhcHBfbmFtZS5kYXRhKTsKKwor CQkvKgorCQkgKiBJbml0IHRoZSBTZXF1ZW5jZVN5bmNDb250ZXh0IHdoaWNoIHdlIGNsZWFuIHVw IGFmdGVyIGVhY2ggc2VxdWVuY2UKKwkJICogc3luY2hyb25pemF0aW9uLgorCQkgKi8KKwkJU2Vx dWVuY2VTeW5jQ29udGV4dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShBcHBseUNvbnRleHQsCisJ CQkJCQkJCQkJCQkJIlNlcXVlbmNlU3luY0NvbnRleHQiLAorCQkJCQkJCQkJCQkJCUFMTE9DU0VU X0RFRkFVTFRfU0laRVMpOworCisJCWZvciAoOzspCisJCXsKKwkJCWJvb2wJCXNlcXVlbmNlX2Nv cGllZCA9IGZhbHNlOworCQkJTWVtb3J5Q29udGV4dCBvbGRjdHg7CisJCQlib29sCQl1cGRhdGVf bHNuOworCQkJVGltZXN0YW1wVHogbm93ID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOworCisJCQlD SEVDS19GT1JfSU5URVJSVVBUUygpOworCisJCQlpZiAoQ29uZmlnUmVsb2FkUGVuZGluZykKKwkJ CXsKKwkJCQlDb25maWdSZWxvYWRQZW5kaW5nID0gZmFsc2U7CisJCQkJUHJvY2Vzc0NvbmZpZ0Zp bGUoUEdDX1NJR0hVUCk7CisJCQl9CisKKwkJCS8qIFByb2Nlc3MgYW55IGludmFsaWRhdGlvbiBt ZXNzYWdlcyB0aGF0IG1pZ2h0IGhhdmUgYWNjdW11bGF0ZWQgKi8KKwkJCUFjY2VwdEludmFsaWRh dGlvbk1lc3NhZ2VzKCk7CisJCQltYXliZV9yZXJlYWRfc3Vic2NyaXB0aW9uKCk7CisKKwkJCS8q CisJCQkgKiBXZSBhdm9pZCB1cGRhdGluZyBwZ19zdWJzY3JpcHRpb25fcmVsJ3MgcGFnZSBMU04g aW4gZXZlcnkgY3ljbGUKKwkJCSAqIHRvIHByZXZlbnQgZXhjZXNzaXZlIGNhdGFsb2cgaW52YWxp ZGF0aW9ucywgd2hpY2ggd291bGQgc2xvdworCQkJICogdGhlIGFwcGx5IHdvcmtlciB0aGF0IHJl bGllcyBvbiB0aGlzIGNhY2hlIChzZWUKKwkJCSAqIEZldGNoUmVsYXRpb25TdGF0ZXMpLiBJbnN0 ZWFkLCB1cGRhdGVzIG9jY3VyIGV2ZXJ5IDMwIHNlY29uZHMuCisJCQkgKi8KKwkJCXVwZGF0ZV9s c24gPSAobm93ID49IG5leHRfbHNuX3VwZGF0ZSk7CisKKwkJCS8qCisJCQkgKiBQZXJmb3JtIHNl cXVlbmNlIHN5bmNocm9uaXphdGlvbiB1bmRlciBTZXF1ZW5jZVN5bmNDb250ZXh0IGFuZAorCQkJ ICogcmVzZXQgaXQgZWFjaCBjeWNsZSB0byBhdm9pZCBtYW51YWwgbWVtb3J5IG1hbmFnZW1lbnQu CisJCQkgKi8KKwkJCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhTZXF1ZW5jZVN5bmND b250ZXh0KTsKKworCQkJLyoKKwkJCSAqIFN5bmNocm9uaXplIGFsbCBzZXF1ZW5jZXMgKGJvdGgg UkVBRFkgYW5kIElOSVQgc3RhdGVzKS4KKwkJCSAqLworCQkJc2VxdWVuY2VfY29waWVkID0gTG9n aWNhbFJlcFN5bmNTZXF1ZW5jZXMoTG9nUmVwV29ya2VyV2FsUmN2Q29ubiwKKwkJCQkJCQkJCQkJ CQkgIHVwZGF0ZV9sc24pOworCisJCQlNZW1vcnlDb250ZXh0UmVzZXQoU2VxdWVuY2VTeW5jQ29u dGV4dCk7CisJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKKworCQkJLyoKKwkJCSAq IEFkanVzdCBzbGVlcCBpbnRlcnZhbCBiYXNlZCBvbiBzeW5jIGFjdGl2aXR5LiBJZiBzZXF1ZW5j ZXMgd2VyZQorCQkJICogY29waWVkLCByZXNldCB0byB0aGUgbWluaW11bSBpbnRlcnZhbCB0byBw b2xsIG1vcmUgZnJlcXVlbnRseS4KKwkJCSAqIE90aGVyd2lzZSwgZXhwb25lbnRpYWxseSBiYWNr IG9mZiB1cCB0byB0aGUgbWF4aW11bSBpbnRlcnZhbC4KKwkJCSAqLworCQkJaWYgKHNlcXVlbmNl X2NvcGllZCkKKwkJCQlzbGVlcF9tcyA9IFNFUVNZTkNfTUlOX1NMRUVQX01TOworCQkJZWxzZQor CQkJCXNsZWVwX21zID0gTWluKHNsZWVwX21zICogMiwgU0VRU1lOQ19NQVhfU0xFRVBfTVMpOwor CisJCQkvKiBSZWZyZXNoIHRpbWVzdGFtcCBhZnRlciBwb3RlbnRpYWxseSB0aW1lLWNvbnN1bWlu ZyBzeW5jIHdvcmsgKi8KKwkJCW5vdyA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsKKworCQkJLyoK KwkJCSAqIFNjaGVkdWxlIHRoZSBuZXh0IExTTiB1cGRhdGUuIElmIHdlIGp1c3QgcGVyZm9ybWVk IGFuIHVwZGF0ZSwKKwkJCSAqIHNldCB0aGUgbmV4dCB1cGRhdGUgdGltZSB0byAzMCBzZWNvbmRz IGZyb20gbm93LiBPdGhlcndpc2UsCisJCQkgKiBlbnN1cmUgdGhlIHNsZWVwIGludGVydmFsIGRv ZXNuJ3QgZXhjZWVkIHRoZSB0aW1lIHJlbWFpbmluZworCQkJICogdW50aWwgdGhlIG5leHQgdXBk YXRlLgorCQkJICovCisJCQlpZiAodXBkYXRlX2xzbikKKwkJCQluZXh0X2xzbl91cGRhdGUgPSBU aW1lc3RhbXBUelBsdXNNaWxsaXNlY29uZHMobm93LCBTRVFTWU5DX01BWF9TTEVFUF9NUyk7CisJ CQllbHNlCisJCQkJc2xlZXBfbXMgPSBNaW4oc2xlZXBfbXMsIFRpbWVzdGFtcERpZmZlcmVuY2VN aWxsaXNlY29uZHMobm93LCBuZXh0X2xzbl91cGRhdGUpKTsKKworCQkJLyogU2xlZXAgZm9yIHRo ZSBjb25maWd1cmVkIGludGVydmFsICovCisJCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsCisJ CQkJCQkJIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAor CQkJCQkJCSBzbGVlcF9tcywKKwkJCQkJCQkgV0FJVF9FVkVOVF9MT0dJQ0FMX1NFUVNZTkNfTUFJ Tik7CisJCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQl9CiAJfQogCVBHX0NBVENIKCk7CiAJewpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zeW5jdXRpbHMuYyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc3luY3V0aWxzLmMKaW5kZXggZWY2MWNh MDQzN2QuLjNhMGRjODY2OWY5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3N5bmN1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv c3luY3V0aWxzLmMKQEAgLTE3Miw3ICsxNzIsNyBAQCBQcm9jZXNzU3luY2luZ1JlbGF0aW9ucyhY TG9nUmVjUHRyIGN1cnJlbnRfbHNuKQogCiAJCWNhc2UgV09SS0VSVFlQRV9BUFBMWToKIAkJCVBy b2Nlc3NTeW5jaW5nVGFibGVzRm9yQXBwbHkoY3VycmVudF9sc24pOwotCQkJUHJvY2Vzc1NlcXVl bmNlc0ZvclN5bmMoKTsKKwkJCU1heWJlTGF1bmNoU2VxdWVuY2VTeW5jV29ya2VyKCk7CiAJCQli cmVhazsKIAogCQljYXNlIFdPUktFUlRZUEVfU0VRVUVOQ0VTWU5DOgpAQCAtMTkxLDEzICsxOTEs MTMgQEAgUHJvY2Vzc1N5bmNpbmdSZWxhdGlvbnMoWExvZ1JlY1B0ciBjdXJyZW50X2xzbikKICAq CiAgKiBUaGUgcGdfc3Vic2NyaXB0aW9uX3JlbCBjYXRhbG9nIGlzIHNoYXJlZCBieSB0YWJsZXMg YW5kIHNlcXVlbmNlcy4gQ2hhbmdlcwogICogdG8gZWl0aGVyIHNlcXVlbmNlcyBvciB0YWJsZXMg Y2FuIGFmZmVjdCB0aGUgdmFsaWRpdHkgb2YgcmVsYXRpb24gc3RhdGVzLCBzbwotICogd2UgaWRl bnRpZnkgbm9uLVJFQURZIHRhYmxlcyBhbmQgbm9uLVJFQURZIHNlcXVlbmNlcyB0b2dldGhlciB0 byBlbnN1cmUKKyAqIHdlIGlkZW50aWZ5IG5vbi1SRUFEWSB0YWJsZXMgYW5kIHNlcXVlbmNlcyAo aW4gYW55IHN0YXRlKSB0b2dldGhlciB0byBlbnN1cmUKICAqIGNvbnNpc3RlbmN5LgogICoKICAq IGhhc19wZW5kaW5nX3N1YnRhYmxlczogdHJ1ZSBpZiB0aGUgc3Vic2NyaXB0aW9uIGhhcyBvbmUg b3IgbW9yZSB0YWJsZXMgdGhhdAogICogYXJlIG5vdCBpbiBSRUFEWSBzdGF0ZSwgb3RoZXJ3aXNl IGZhbHNlLgogICogaGFzX3BlbmRpbmdfc3Vic2VxdWVuY2VzOiB0cnVlIGlmIHRoZSBzdWJzY3Jp cHRpb24gaGFzIG9uZSBvciBtb3JlIHNlcXVlbmNlcwotICogdGhhdCBhcmUgbm90IGluIFJFQURZ IHN0YXRlLCBvdGhlcndpc2UgZmFsc2UuCisgKiAoaW4gYW55IHN0YXRlKSwgb3RoZXJ3aXNlIGZh bHNlLgogICovCiB2b2lkCiBGZXRjaFJlbGF0aW9uU3RhdGVzKGJvb2wgKmhhc19wZW5kaW5nX3N1 YnRhYmxlcywKQEAgLTIwNSwyMyArMjA1LDIyIEBAIEZldGNoUmVsYXRpb25TdGF0ZXMoYm9vbCAq aGFzX3BlbmRpbmdfc3VidGFibGVzLAogCQkJCQlib29sICpzdGFydGVkX3R4KQogewogCS8qCi0J ICogaGFzX3N1YnRhYmxlcyBhbmQgaGFzX3N1YnNlcXVlbmNlc19ub25fcmVhZHkgYXJlIGRlY2xh cmVkIGFzIHN0YXRpYywKLQkgKiBzaW5jZSB0aGUgc2FtZSB2YWx1ZSBjYW4gYmUgdXNlZCB1bnRp bCB0aGUgc3lzdGVtIHRhYmxlIGlzIGludmFsaWRhdGVkLgorCSAqIGhhc19zdWJ0YWJsZXMgYW5k IGhhc19zdWJzZXF1ZW5jZXMgYXJlIGRlY2xhcmVkIGFzIHN0YXRpYywgc2luY2UgdGhlCisJICog c2FtZSB2YWx1ZSBjYW4gYmUgdXNlZCB1bnRpbCB0aGUgc3lzdGVtIHRhYmxlIGlzIGludmFsaWRh dGVkLgogCSAqLwogCXN0YXRpYyBib29sIGhhc19zdWJ0YWJsZXMgPSBmYWxzZTsKLQlzdGF0aWMg Ym9vbCBoYXNfc3Vic2VxdWVuY2VzX25vbl9yZWFkeSA9IGZhbHNlOworCXN0YXRpYyBib29sIGhh c19zdWJzZXF1ZW5jZXMgPSBmYWxzZTsKIAogCSpzdGFydGVkX3R4ID0gZmFsc2U7Ci0KIAlpZiAo cmVsYXRpb25fc3RhdGVzX3ZhbGlkaXR5ICE9IFNZTkNfUkVMQVRJT05TX1NUQVRFX1ZBTElEKQog CXsKIAkJTWVtb3J5Q29udGV4dCBvbGRjdHg7CiAJCUxpc3QJICAgKnJzdGF0ZXM7CisJCUxpc3QJ ICAgKnNlcV9zdGF0ZXM7CiAJCVN1YnNjcmlwdGlvblJlbFN0YXRlICpyc3RhdGU7CiAKIAkJcmVs YXRpb25fc3RhdGVzX3ZhbGlkaXR5ID0gU1lOQ19SRUxBVElPTlNfU1RBVEVfUkVCVUlMRF9TVEFS VEVEOwotCQloYXNfc3Vic2VxdWVuY2VzX25vbl9yZWFkeSA9IGZhbHNlOwotCisJCWhhc19zdWJz ZXF1ZW5jZXMgPSBmYWxzZTsKIAkJLyogQ2xlYW4gdGhlIG9sZCBsaXN0cy4gKi8KIAkJbGlzdF9m cmVlX2RlZXAodGFibGVfc3RhdGVzX25vdF9yZWFkeSk7CiAJCXRhYmxlX3N0YXRlc19ub3RfcmVh ZHkgPSBOSUw7CkBAIC0yMzEsMjcgKzIzMCwyOCBAQCBGZXRjaFJlbGF0aW9uU3RhdGVzKGJvb2wg Kmhhc19wZW5kaW5nX3N1YnRhYmxlcywKIAkJCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAJ CQkqc3RhcnRlZF90eCA9IHRydWU7CiAJCX0KLQotCQkvKiBGZXRjaCB0YWJsZXMgYW5kIHNlcXVl bmNlcyB0aGF0IGFyZSBpbiBub24tUkVBRFkgc3RhdGUuICovCi0JCXJzdGF0ZXMgPSBHZXRTdWJz Y3JpcHRpb25SZWxhdGlvbnMoTXlTdWJzY3JpcHRpb24tPm9pZCwgdHJ1ZSwgdHJ1ZSwKKwkJLyog RmV0Y2ggdGFibGVzIHRoYXQgYXJlIGluIG5vbi1SRUFEWSBzdGF0ZS4gKi8KKwkJcnN0YXRlcyA9 IEdldFN1YnNjcmlwdGlvblJlbGF0aW9ucyhNeVN1YnNjcmlwdGlvbi0+b2lkLCB0cnVlLCBmYWxz ZSwKIAkJCQkJCQkJCQkgICB0cnVlKTsKLQorCQkvKiBGZXRjaCBhbGwgc2VxdWVuY2VzIChyZWdh cmRsZXNzIG9mIHN0YXRlKS4gKi8KKwkJc2VxX3N0YXRlcyA9IEdldFN1YnNjcmlwdGlvblJlbGF0 aW9ucyhNeVN1YnNjcmlwdGlvbi0+b2lkLCBmYWxzZSwgdHJ1ZSwKKwkJCQkJCQkJCQkJICBmYWxz ZSk7CiAJCS8qIEFsbG9jYXRlIHRoZSB0cmFja2luZyBpbmZvIGluIGEgcGVybWFuZW50IG1lbW9y eSBjb250ZXh0LiAqLwogCQlvbGRjdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oQ2FjaGVNZW1v cnlDb250ZXh0KTsKIAkJZm9yZWFjaF9wdHIoU3Vic2NyaXB0aW9uUmVsU3RhdGUsIHN1YnJlbCwg cnN0YXRlcykKIAkJewotCQkJaWYgKGdldF9yZWxfcmVsa2luZChzdWJyZWwtPnJlbGlkKSA9PSBS RUxLSU5EX1NFUVVFTkNFKQotCQkJCWhhc19zdWJzZXF1ZW5jZXNfbm9uX3JlYWR5ID0gdHJ1ZTsK LQkJCWVsc2UKLQkJCXsKLQkJCQlyc3RhdGUgPSBwYWxsb2Nfb2JqZWN0KFN1YnNjcmlwdGlvblJl bFN0YXRlKTsKLQkJCQltZW1jcHkocnN0YXRlLCBzdWJyZWwsIHNpemVvZihTdWJzY3JpcHRpb25S ZWxTdGF0ZSkpOwotCQkJCXRhYmxlX3N0YXRlc19ub3RfcmVhZHkgPSBsYXBwZW5kKHRhYmxlX3N0 YXRlc19ub3RfcmVhZHksCi0JCQkJCQkJCQkJCQkgcnN0YXRlKTsKLQkJCX0KKwkJCXJzdGF0ZSA9 IHBhbGxvY19vYmplY3QoU3Vic2NyaXB0aW9uUmVsU3RhdGUpOworCQkJbWVtY3B5KHJzdGF0ZSwg c3VicmVsLCBzaXplb2YoU3Vic2NyaXB0aW9uUmVsU3RhdGUpKTsKKwkJCXRhYmxlX3N0YXRlc19u b3RfcmVhZHkgPSBsYXBwZW5kKHRhYmxlX3N0YXRlc19ub3RfcmVhZHksCisJCQkJCQkJCQkJCSBy c3RhdGUpOwogCQl9CisKKwkJLyogQ2hlY2sgaWYgdGhlcmUgYXJlIGFueSBzZXF1ZW5jZXMuICov CisJCWhhc19zdWJzZXF1ZW5jZXMgPSAoc2VxX3N0YXRlcyAhPSBOSUwpOwogCQlNZW1vcnlDb250 ZXh0U3dpdGNoVG8ob2xkY3R4KTsKIAorCQlsaXN0X2ZyZWVfZGVlcChzZXFfc3RhdGVzKTsKKwog CQkvKgogCQkgKiBEb2VzIHRoZSBzdWJzY3JpcHRpb24gaGF2ZSB0YWJsZXM/CiAJCSAqCkBAIC0y NzcsNSArMjc3LDUgQEAgRmV0Y2hSZWxhdGlvblN0YXRlcyhib29sICpoYXNfcGVuZGluZ19zdWJ0 YWJsZXMsCiAJCSpoYXNfcGVuZGluZ19zdWJ0YWJsZXMgPSBoYXNfc3VidGFibGVzOwogCiAJaWYg KGhhc19wZW5kaW5nX3N1YnNlcXVlbmNlcykKLQkJKmhhc19wZW5kaW5nX3N1YnNlcXVlbmNlcyA9 IGhhc19zdWJzZXF1ZW5jZXNfbm9uX3JlYWR5OworCQkqaGFzX3BlbmRpbmdfc3Vic2VxdWVuY2Vz ID0gaGFzX3N1YnNlcXVlbmNlczsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dv cmtlci5jCmluZGV4IDI3ZDM5OGQ1NzZkLi5jODg0MTgzMTUzMCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC01MTAyLDYgKzUxMDIsOSBAQCBtYXliZV9yZXJl YWRfc3Vic2NyaXB0aW9uKHZvaWQpCiAJICogd29ya2VyIHdvbid0IHJlc3RhcnQgaWYgdGhlIHN0 cmVhbWluZyBvcHRpb24ncyB2YWx1ZSBpcyBjaGFuZ2VkIGZyb20KIAkgKiAncGFyYWxsZWwnIHRv IGFueSBvdGhlciB2YWx1ZSBvciB0aGUgc2VydmVyIGRlY2lkZXMgbm90IHRvIHN0cmVhbSB0aGUK IAkgKiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbi4KKwkgKgorCSAqIE5vdGU6IHNvbWUgcGFyYW1l dGVycyBtYXkgbm90IGJlIHJlbGV2YW50IHRvIHRoZSBzZXF1ZW5jZSBzeW5jIHdvcmtlciwKKwkg KiBidXQgZXhpdCBhbnl3YXkuCiAJICovCiAJaWYgKHN0cmNtcChuZXdzdWItPmNvbm5pbmZvLCBN eVN1YnNjcmlwdGlvbi0+Y29ubmluZm8pICE9IDAgfHwKIAkJc3RyY21wKG5ld3N1Yi0+bmFtZSwg TXlTdWJzY3JpcHRpb24tPm5hbWUpICE9IDAgfHwKQEAgLTUxMTcsNiArNTEyMCwxMCBAQCBtYXli ZV9yZXJlYWRfc3Vic2NyaXB0aW9uKHZvaWQpCiAJCQllcmVwb3J0KExPRywKIAkJCQkJKGVycm1z ZygibG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlw dGlvbiBcIiVzXCIgd2lsbCBzdG9wIGJlY2F1c2Ugb2YgYSBwYXJhbWV0ZXIgY2hhbmdlIiwKIAkJ CQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSkpKTsKKwkJZWxzZSBpZiAoYW1fc2VxdWVuY2VzeW5j X3dvcmtlcigpKQorCQkJZXJlcG9ydChMT0csCisJCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGlj YXRpb24gc2VxdWVuY2Ugc3luY2hyb25pemF0aW9uIHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uIFwi JXNcIiB3aWxsIHN0b3AgYmVjYXVzZSBvZiBhIHBhcmFtZXRlciBjaGFuZ2UiLAorCQkJCQkJCU15 U3Vic2NyaXB0aW9uLT5uYW1lKSkpOwogCQllbHNlCiAJCQllcmVwb3J0KExPRywKIAkJCQkJKGVy cm1zZygibG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIg d2lsbCByZXN0YXJ0IGJlY2F1c2Ugb2YgYSBwYXJhbWV0ZXIgY2hhbmdlIiwKQEAgLTUxMzUsNiAr NTE0MiwxMCBAQCBtYXliZV9yZXJlYWRfc3Vic2NyaXB0aW9uKHZvaWQpCiAJCQllcmVwb3J0KExP RywKIAkJCQkJZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtl ciBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiB3aWxsIHN0b3AgYmVjYXVzZSB0aGUgc3Vic2NyaXB0 aW9uIG93bmVyJ3Mgc3VwZXJ1c2VyIHByaXZpbGVnZXMgaGF2ZSBiZWVuIHJldm9rZWQiLAogCQkJ CQkJICAgTXlTdWJzY3JpcHRpb24tPm5hbWUpKTsKKwkJZWxzZSBpZiAoYW1fc2VxdWVuY2VzeW5j X3dvcmtlcigpKQorCQkJZXJlcG9ydChMT0csCisJCQkJCWVycm1zZygibG9naWNhbCByZXBsaWNh dGlvbiBzZXF1ZW5jZSBzeW5jaHJvbml6YXRpb24gd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIl c1wiIHdpbGwgc3RvcCBiZWNhdXNlIHRoZSBzdWJzY3JpcHRpb24gb3duZXIncyBzdXBlcnVzZXIg cHJpdmlsZWdlcyBoYXZlIGJlZW4gcmV2b2tlZCIsCisJCQkJCQkgICBNeVN1YnNjcmlwdGlvbi0+ bmFtZSkpOwogCQllbHNlCiAJCQllcmVwb3J0KExPRywKIAkJCQkJZXJybXNnKCJsb2dpY2FsIHJl cGxpY2F0aW9uIHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiB3aWxsIHJlc3RhcnQgYmVj YXVzZSB0aGUgc3Vic2NyaXB0aW9uIG93bmVyJ3Mgc3VwZXJ1c2VyIHByaXZpbGVnZXMgaGF2ZSBi ZWVuIHJldm9rZWQiLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2Fp dF9ldmVudF9uYW1lcy50eHQgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50 X25hbWVzLnR4dAppbmRleCA0YWE4NjRmZTNjMy4uYTkxMDg1ZTc3MjMgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnRfbmFtZXMudHh0CisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnRfbmFtZXMudHh0CkBAIC02MSw2ICs2MSw3 IEBAIElPX1dPUktFUl9NQUlOCSJXYWl0aW5nIGluIG1haW4gbG9vcCBvZiBJTyBXb3JrZXIgcHJv Y2Vzcy4iCiBMT0dJQ0FMX0FQUExZX01BSU4JIldhaXRpbmcgaW4gbWFpbiBsb29wIG9mIGxvZ2lj YWwgcmVwbGljYXRpb24gYXBwbHkgcHJvY2Vzcy4iCiBMT0dJQ0FMX0xBVU5DSEVSX01BSU4JIldh aXRpbmcgaW4gbWFpbiBsb29wIG9mIGxvZ2ljYWwgcmVwbGljYXRpb24gbGF1bmNoZXIgcHJvY2Vz cy4iCiBMT0dJQ0FMX1BBUkFMTEVMX0FQUExZX01BSU4JIldhaXRpbmcgaW4gbWFpbiBsb29wIG9m IGxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgcHJvY2Vzcy4iCitMT0dJQ0FMX1NF UVNZTkNfTUFJTgkiV2FpdGluZyBpbiBtYWluIGxvb3Agb2YgbG9naWNhbCByZXBsaWNhdGlvbiBz ZXF1ZW5jZSBzeW5jIHByb2Nlc3MuIgogUkVDT1ZFUllfV0FMX1NUUkVBTQkiV2FpdGluZyBpbiBt YWluIGxvb3Agb2Ygc3RhcnR1cCBwcm9jZXNzIGZvciBXQUwgdG8gYXJyaXZlLCBkdXJpbmcgc3Ry ZWFtaW5nIHJlY292ZXJ5LiIKIFJFUExJQ0FUSU9OX1NMT1RTWU5DX01BSU4JIldhaXRpbmcgaW4g bWFpbiBsb29wIG9mIHNsb3Qgc3luY2hyb25pemF0aW9uLiIKIFJFUExJQ0FUSU9OX1NMT1RTWU5D X1NIVVRET1dOCSJXYWl0aW5nIGZvciBzbG90IHN5bmMgd29ya2VyIHRvIHNodXQgZG93bi4iCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbl9yZWwuaCBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uX3JlbC5oCmluZGV4IDUwMjY0MGQzMDE4 Li44NjU3NGI2OTE2OSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3Jp cHRpb25fcmVsLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb25fcmVs LmgKQEAgLTk2LDYgKzk2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFNlcXVlbmNlSW5m bwogCWNoYXIJICAgKnNlcW5hbWU7CiAJY2hhcgkgICAqbnNwbmFtZTsKIAlPaWQJCQlsb2NhbHJl bGlkOworCWNoYXIJCXJlbHN0YXRlOwogCiAJLyogU2VxdWVuY2UgaW5mb3JtYXRpb24gcmV0cmll dmVkIGZyb20gdGhlIHB1Ymxpc2hlciBub2RlICovCiAJWExvZ1JlY1B0cglwYWdlX2xzbjsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3NlcXVlbmNlLmggYi9zcmMvaW5jbHVkZS9j b21tYW5kcy9zZXF1ZW5jZS5oCmluZGV4IDJjM2M0YTNmMDc0Li5mZDRmNjliZGQxYyAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvc2VxdWVuY2UuaAorKysgYi9zcmMvaW5jbHVkZS9j b21tYW5kcy9zZXF1ZW5jZS5oCkBAIC00Nyw2ICs0Nyw3IEBAIGV4dGVybiBPYmplY3RBZGRyZXNz IEFsdGVyU2VxdWVuY2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclNlcVN0bXQgKnN0bXQpOwog ZXh0ZXJuIHZvaWQgU2VxdWVuY2VDaGFuZ2VQZXJzaXN0ZW5jZShPaWQgcmVsaWQsIGNoYXIgbmV3 cmVscGVyc2lzdGVuY2UpOwogZXh0ZXJuIHZvaWQgRGVsZXRlU2VxdWVuY2VUdXBsZShPaWQgcmVs aWQpOwogZXh0ZXJuIHZvaWQgUmVzZXRTZXF1ZW5jZShPaWQgc2VxX3JlbGlkKTsKK2V4dGVybiBi b29sIEdldFNlcXVlbmNlKFJlbGF0aW9uIHNlcXJlbCwgaW50NjQgKmxhc3RfdmFsdWUsIGJvb2wg KmlzX2NhbGxlZCk7CiBleHRlcm4gdm9pZCBTZXRTZXF1ZW5jZShPaWQgcmVsaWQsIGludDY0IG5l eHQsIGJvb2wgaXNjYWxsZWQpOwogZXh0ZXJuIHZvaWQgUmVzZXRTZXF1ZW5jZUNhY2hlcyh2b2lk KTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFs LmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaAppbmRleCA3NDVi N2Q5ZTk2OS4uNGM3YjZmNDYzNGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L3dvcmtlcl9pbnRlcm5hbC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9p bnRlcm5hbC5oCkBAIC0yODUsNyArMjg1LDcgQEAgZXh0ZXJuIHZvaWQgVXBkYXRlVHdvUGhhc2VT dGF0ZShPaWQgc3Vib2lkLCBjaGFyIG5ld19zdGF0ZSk7CiAKIGV4dGVybiB2b2lkIFByb2Nlc3NT eW5jaW5nVGFibGVzRm9yU3luYyhYTG9nUmVjUHRyIGN1cnJlbnRfbHNuKTsKIGV4dGVybiB2b2lk IFByb2Nlc3NTeW5jaW5nVGFibGVzRm9yQXBwbHkoWExvZ1JlY1B0ciBjdXJyZW50X2xzbik7Ci1l eHRlcm4gdm9pZCBQcm9jZXNzU2VxdWVuY2VzRm9yU3luYyh2b2lkKTsKK2V4dGVybiB2b2lkIE1h eWJlTGF1bmNoU2VxdWVuY2VTeW5jV29ya2VyKHZvaWQpOwogCiBwZ19ub3JldHVybiBleHRlcm4g dm9pZCBGaW5pc2hTeW5jV29ya2VyKHZvaWQpOwogZXh0ZXJuIHZvaWQgSW52YWxpZGF0ZVN5bmNp bmdSZWxTdGF0ZXMoRGF0dW0gYXJnLCBTeXNDYWNoZUlkZW50aWZpZXIgY2FjaGVpZCwKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyNl9zdGF0cy5wbCBiL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzAyNl9zdGF0cy5wbAppbmRleCA1ZDQ1NzA2MGEwMi4uMmZlMjA5ZjQ2MWYg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyNl9zdGF0cy5wbAorKysgYi9z cmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjZfc3RhdHMucGwKQEAgLTE2LDYgKzE2LDggQEAgJG5v ZGVfcHVibGlzaGVyLT5zdGFydDsKICMgQ3JlYXRlIHN1YnNjcmliZXIgbm9kZS4KIG15ICRub2Rl X3N1YnNjcmliZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N1YnNjcmliZXIn KTsKICRub2RlX3N1YnNjcmliZXItPmluaXQ7Ciskbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29u ZigncG9zdGdyZXNxbC5jb25mJywKKwkibWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VycyA9 IDEwIik7CiAkbm9kZV9zdWJzY3JpYmVyLT5zdGFydDsKIAogCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9zdWJzY3JpcHRpb24vdC8wMzZfc2VxdWVuY2VzLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9u L3QvMDM2X3NlcXVlbmNlcy5wbAppbmRleCA0NzE3ODBhMzU4NS4uYWYxOTA3MTNiMmIgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzNl9zZXF1ZW5jZXMucGwKKysrIGIvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM2X3NlcXVlbmNlcy5wbApAQCAtNzUsMTggKzc1LDE0IEBA IGlzKCRyZXN1bHQsICcxMDB8dCcsCiAKICMjIyMjIyMjIyMKICMjIEFMVEVSIFNVQlNDUklQVElP TiAuLi4gUkVGUkVTSCBQVUJMSUNBVElPTiBzaG91bGQgY2F1c2Ugc3luYyBvZiBuZXcKLSMgc2Vx dWVuY2VzIG9mIHRoZSBwdWJsaXNoZXIsIGJ1dCBjaGFuZ2VzIHRvIGV4aXN0aW5nIHNlcXVlbmNl cyBzaG91bGQKLSMgbm90IGJlIHN5bmNlZC4KKyMgc2VxdWVuY2VzIG9mIHRoZSBwdWJsaXNoZXIu CiAjIyMjIyMjIyMjCiAKLSMgQ3JlYXRlIGEgbmV3IHNlcXVlbmNlICdyZWdyZXNzX3MyJywgYW5k IHVwZGF0ZSBleGlzdGluZyBzZXF1ZW5jZSAncmVncmVzc19zMScKKyMgQ3JlYXRlIGEgbmV3IHNl cXVlbmNlICdyZWdyZXNzX3MyJwogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCiAJJ3Bvc3Rn cmVzJywgcXEoCiAJQ1JFQVRFIFNFUVVFTkNFIHJlZ3Jlc3NfczI7CiAJSU5TRVJUIElOVE8gcmVn cmVzc19zZXFfdGVzdCBTRUxFQ1QgbmV4dHZhbCgncmVncmVzc19zMicpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDEsMTAwKTsKLQotCS0tIEV4aXN0aW5nIHNlcXVlbmNlCi0JSU5TRVJUIElOVE8gcmVn cmVzc19zZXFfdGVzdCBTRUxFQ1QgbmV4dHZhbCgncmVncmVzc19zMScpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDEsMTAwKTsKICkpOwogCiAjIERvIEFMVEVSIFNVQlNDUklQVElPTiAuLi4gUkVGUkVT SCBQVUJMSUNBVElPTgpAQCAtOTcsMTkgKzkzLDYgQEAgJHJlc3VsdCA9ICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgKICRub2RlX3N1YnNjcmliZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3Rn cmVzJywgJHN5bmNlZF9xdWVyeSkKICAgb3IgZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBm b3Igc3Vic2NyaWJlciB0byBzeW5jaHJvbml6ZSBkYXRhIjsKIAotJHJlc3VsdCA9ICRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHFxKAotCVNFTEVDVCBsYXN0X3ZhbHVl LCBpc19jYWxsZWQgRlJPTSByZWdyZXNzX3MxOwotKSk7Ci1pcygkcmVzdWx0LCAnMjAwfHQnLCAn Q2hlY2sgc2VxdWVuY2UgdmFsdWUgaW4gdGhlIHB1Ymxpc2hlcicpOwotCi0jIENoZWNrIC0gZXhp c3Rpbmcgc2VxdWVuY2UgKCdyZWdyZXNzX3MxJykgaXMgbm90IHN5bmNlZAotJHJlc3VsdCA9ICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxcSgKLQlTRUxFQ1QgbGFz dF92YWx1ZSwgaXNfY2FsbGVkIEZST00gcmVncmVzc19zMTsKLSkpOwotaXMoJHJlc3VsdCwgJzEw MHx0JywgJ1JFRlJFU0ggUFVCTElDQVRJT04gd2lsbCBub3Qgc3luYyBleGlzdGluZyBzZXF1ZW5j ZScpOwotCiAjIENoZWNrIC0gbmV3bHkgcHVibGlzaGVkIHNlcXVlbmNlICgncmVncmVzc19zMicp IGlzIHN5bmNlZAogJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKIAkncG9z dGdyZXMnLCBxcSgKQEAgLTExOSwxNiArMTAyLDEzIEBAIGlzKCRyZXN1bHQsICcxMDB8dCcsCiAJ J1JFRlJFU0ggUFVCTElDQVRJT04gd2lsbCBzeW5jIG5ld2x5IHB1Ymxpc2hlZCBzZXF1ZW5jZScp OwogCiAjIyMjIyMjIyMjCi0jIFRlc3Q6IFJFRlJFU0ggU0VRVUVOQ0VTIGFuZCBSRUZSRVNIIFBV QkxJQ0FUSU9OIChjb3B5X2RhdGEgPSBmYWxzZSkKLSMKLSMgMS4gQUxURVIgU1VCU0NSSVBUSU9O IC4uLiBSRUZSRVNIIFNFUVVFTkNFUyBzaG91bGQgcmUtc3luY2hyb25pemUgYWxsCi0jICAgIGV4 aXN0aW5nIHNlcXVlbmNlcywgYnV0IG5vdCBzeW5jaHJvbml6ZSBuZXdseSBhZGRlZCBvbmVzLgot IyAyLiBBTFRFUiBTVUJTQ1JJUFRJT04gLi4uIFJFRlJFU0ggUFVCTElDQVRJT04gd2l0aCAoY29w eV9kYXRhID0gZmFsc2UpIHNob3VsZAotIyAgICBhbHNvIG5vdCB1cGRhdGUgc2VxdWVuY2UgdmFs dWVzIGZvciBuZXdseSBhZGRlZCBzZXF1ZW5jZXMuCisjIFRlc3Q6CisjIDEuIEF1dG9tYXRpYyB1 cGRhdGUgb2YgZXhpc3Rpbmcgc2VxdWVuY2UgdmFsdWVzCisjIDIuIE5ld2x5IGFkZGVkIHNlcXVl bmNlcyBhcmUgbm90IGF1dG9tYXRpY2FsbHkgdXBkYXRlZC4KICMjIyMjIyMjIyMKIAotIyBDcmVh dGUgYSBuZXcgc2VxdWVuY2UgJ3JlZ3Jlc3NfczMnLCBhbmQgdXBkYXRlIHRoZSBleGlzdGluZyBz ZXF1ZW5jZQotIyAncmVncmVzc19zMicuCisjIENyZWF0ZSBhIG5ldyBzZXF1ZW5jZSAncmVncmVz c19zMycsIGFuZCB1cGRhdGUgdGhlIGV4aXN0aW5nIHNlcXVlbmNlcworIyAncmVncmVzc19zMicg YW5kICdyZWdyZXNzX3MxJy4KICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAogCSdwb3N0Z3Jl cycsIHFxKAogCUNSRUFURSBTRVFVRU5DRSByZWdyZXNzX3MzOwpAQCAtMTM2LDUzICsxMTYsMjgg QEAgJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCiAKIAktLSBFeGlzdGluZyBzZXF1ZW5jZQog CUlOU0VSVCBJTlRPIHJlZ3Jlc3Nfc2VxX3Rlc3QgU0VMRUNUIG5leHR2YWwoJ3JlZ3Jlc3NfczIn KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMCk7CisJSU5TRVJUIElOVE8gcmVncmVzc19zZXFf dGVzdCBTRUxFQ1QgbmV4dHZhbCgncmVncmVzc19zMScpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEs MTAwKTsKICkpOwogCi0jIDEuIERvIEFMVEVSIFNVQlNDUklQVElPTiAuLi4gUkVGUkVTSCBTRVFV RU5DRVMKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVz JywgcXEoCi0JQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3Nfc2VxX3N1YiBSRUZSRVNIIFNFUVVF TkNFUzsKLSkpOwotJG5vZGVfc3Vic2NyaWJlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMn LCAkc3luY2VkX3F1ZXJ5KQotICBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBz dWJzY3JpYmVyIHRvIHN5bmNocm9uaXplIGRhdGEiOwotCiAjIENoZWNrIC0gZXhpc3Rpbmcgc2Vx dWVuY2VzICgncmVncmVzc19zMScgYW5kICdyZWdyZXNzX3MyJykgYXJlIHN5bmNlZAotJHJlc3Vs dCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxcSgKLQlTRUxF Q1QgbGFzdF92YWx1ZSwgaXNfY2FsbGVkIEZST00gcmVncmVzc19zMTsKLSkpOwotaXMoJHJlc3Vs dCwgJzIwMHx0JywgJ1JFRlJFU0ggU0VRVUVOQ0VTIHdpbGwgc3luYyBleGlzdGluZyBzZXF1ZW5j ZXMnKTsKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVz JywgcXEoCi0JU0VMRUNUIGxhc3RfdmFsdWUsIGlzX2NhbGxlZCBGUk9NIHJlZ3Jlc3NfczI7Ci0p KTsKLWlzKCRyZXN1bHQsICcyMDB8dCcsICdSRUZSRVNIIFNFUVVFTkNFUyB3aWxsIHN5bmMgZXhp c3Rpbmcgc2VxdWVuY2VzJyk7CiAKLSMgQ2hlY2sgLSBuZXdseSBwdWJsaXNoZWQgc2VxdWVuY2Ug KCdyZWdyZXNzX3MzJykgaXMgbm90IHN5bmNlZAotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxcSgKLQlTRUxFQ1QgbGFzdF92YWx1ZSwgaXNfY2Fs bGVkIEZST00gcmVncmVzc19zMzsKLSkpOwotaXMoJHJlc3VsdCwgJzF8ZicsCi0JJ1JFRlJFU0gg U0VRVUVOQ0VTIHdpbGwgbm90IHN5bmMgbmV3bHkgcHVibGlzaGVkIHNlcXVlbmNlJyk7CisjIFBv bGwgdW50aWwgcmVncmVzc19zMSByZWZsZWN0cyB0aGUgdXBkYXRlZCBzZXF1ZW5jZSB2YWx1ZQor JG5vZGVfc3Vic2NyaWJlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAorICAgIHFxKFNF TEVDVCBsYXN0X3ZhbHVlID0gMjAwIEFORCBpc19jYWxsZWQgPSAndCcgRlJPTSByZWdyZXNzX3Mx OykpCisgIG9yIGRpZSAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIHJlZ3Jlc3NfczEgc2Vx dWVuY2UgdG8gc3luYyI7CiAKLSMgMi4gRG8gQUxURVIgU1VCU0NSSVBUSU9OIC4uLiBSRUZSRVNI IFBVQkxJQ0FUSU9OIHdpdGggY29weV9kYXRhIGFzIGZhbHNlCi0kcmVzdWx0ID0gJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHFxKAotCUFMVEVSIFNVQlNDUklQVElP TiByZWdyZXNzX3NlcV9zdWIgUkVGUkVTSCBQVUJMSUNBVElPTiBXSVRIIChjb3B5X2RhdGEgPSBm YWxzZSk7Ci0pKTsKLSRub2RlX3N1YnNjcmliZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVz JywgJHN5bmNlZF9xdWVyeSkKLSAgb3IgZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3Ig c3Vic2NyaWJlciB0byBzeW5jaHJvbml6ZSBkYXRhIjsKKyMgUG9sbCB1bnRpbCByZWdyZXNzX3My IHJlZmxlY3RzIHRoZSB1cGRhdGVkIHNlcXVlbmNlIHZhbHVlCiskbm9kZV9zdWJzY3JpYmVyLT5w b2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisgICAgcXEoU0VMRUNUIGxhc3RfdmFsdWUgPSAy MDAgQU5EIGlzX2NhbGxlZCA9ICd0JyBGUk9NIHJlZ3Jlc3NfczI7KSkKKyAgb3IgZGllICJUaW1l ZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgcmVncmVzc19zMiBzZXF1ZW5jZSB0byBzeW5jIjsKIAot IyBDaGVjayAtIG5ld2x5IHB1Ymxpc2hlZCBzZXF1ZW5jZSAoJ3JlZ3Jlc3NfczMnKSBpcyBub3Qg c3luY2VkIHdpdGggY29weV9kYXRhCi0jIGFzIGZhbHNlLgorIyBDaGVjayAtIG5ld2x5IHB1Ymxp c2hlZCBzZXF1ZW5jZSAoJ3JlZ3Jlc3NfczMnKSBpcyBub3Qgc3luY2VkCiAkcmVzdWx0ID0gJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAogCSdwb3N0Z3JlcycsIHFxKAogCVNFTEVDVCBsYXN0 X3ZhbHVlLCBpc19jYWxsZWQgRlJPTSByZWdyZXNzX3MzOwogKSk7CiBpcygkcmVzdWx0LCAnMXxm JywKLQknUkVGUkVTSCBQVUJMSUNBVElPTiB3aWxsIG5vdCBzeW5jIG5ld2x5IHB1Ymxpc2hlZCBz ZXF1ZW5jZSB3aXRoIGNvcHlfZGF0YSBhcyBmYWxzZScKLSk7CisJJ05ld2x5IHB1Ymxpc2hlZCBz ZXF1ZW5jZXMgYXJlIG5vdCBzeW5jZWQgYXV0b21hdGljYWxseScpOwogCiAjIyMjIyMjIyMjCiAj IEFMVEVSIFNVQlNDUklQVElPTiAuLi4gUkVGUkVTSCBQVUJMSUNBVElPTiBzaG91bGQgcmVwb3J0 IGFuIGVycm9yIHdoZW46Ci0tIAoyLjQ3LjMKCg== --0000000000008ec048064de5c56d Content-Type: application/octet-stream; name="v12-0002-Cache-sequence-information-in-the-sequence-sync-.patch" Content-Disposition: attachment; filename="v12-0002-Cache-sequence-information-in-the-sequence-sync-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn6yy1j81 RnJvbSA0YzljMTFlZTZlMDdjNzk5ZWY1Y2QyODQ1YTI0OGQ4YTcwZThkMDllIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBamluIENoZXJpYW4gPGl0c2FqaW5AZ21haWwuY29tPgpEYXRl OiBUaHUsIDI2IE1hciAyMDI2IDE0OjI2OjUyICsxMTAwClN1YmplY3Q6IFtQQVRDSCB2MTIgMi8z XSBDYWNoZSBzZXF1ZW5jZSBpbmZvcm1hdGlvbiBpbiB0aGUgc2VxdWVuY2Ugc3luYwogd29ya2Vy LgoKUHJldmlvdXNseSwgdGhlIHNlcXVlbmNlIHN5bmMgd29ya2VyIHdvdWxkIGZldGNoIHNlcXVl bmNlIG1ldGFkYXRhIGZyb20KdGhlIGNhdGFsb2cgZWFjaCB0aW1lIGl0IG5lZWRlZCB0byBzeW5j aHJvbml6ZSBzZXF1ZW5jZXMuIFRoaXMgY291bGQgYmUKaW5lZmZpY2llbnQgd2hlbiBtYW55IHNl cXVlbmNlcyBhcmUgaW52b2x2ZWQsIGFzIHRoZSB3b3JrZXIgd291bGQgbmVlZAp0byByZXBlYXRl ZGx5IG9wZW4gYW5kIHNjYW4gcGdfc3Vic2NyaXB0aW9uX3JlbC4KClRvIGltcHJvdmUgdGhpcywg aW50cm9kdWNlIGEgY2FjaGUgZm9yIHNlcXVlbmNlIGluZm9ybWF0aW9uIGluIHRoZSBzZXF1ZW5j ZSBzeW5jCndvcmtlci4gVGhlIGNhY2hlIGlzIHBvcHVsYXRlZCBvbiBmaXJzdCB1c2UgYW5kIGtl cHQgYWNyb3NzIHN5bmNocm9uaXphdGlvbgpjeWNsZXMuIEl0IGlzIGludmFsaWRhdGVkIHdoZW4g cGdfc3Vic2NyaXB0aW9uX3JlbCBpcyBtb2RpZmllZCwgZW5zdXJpbmcgdGhhdApjaGFuZ2VzIHRv IHN1YnNjcmlwdGlvbiByZWxhdGlvbnMgYXJlIHJlZmxlY3RlZCBwcm9tcHRseS4KLS0tCiAuLi4v cmVwbGljYXRpb24vbG9naWNhbC9zZXF1ZW5jZXN5bmMuYyAgICAgICAgfCA5MyArKysrKysrKysr KysrLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNjYgaW5zZXJ0aW9ucygrKSwgMjcgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zZXF1ZW5j ZXN5bmMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2VxdWVuY2VzeW5jLmMK aW5kZXggMTgzMjFkM2IzMTYuLmQxMmJkMzFmMDlkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3NlcXVlbmNlc3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvc2VxdWVuY2VzeW5jLmMKQEAgLTk5LDYgKzk5LDE5IEBAIHR5cGVkZWYg ZW51bSBDb3B5U2VxUmVzdWx0CiAKIHN0YXRpYyBNZW1vcnlDb250ZXh0IFNlcXVlbmNlU3luY0Nv bnRleHQgPSBOVUxMOwogCisvKgorICogQ2FjaGVkIGxpc3Qgb2Ygc2VxdWVuY2UgaW5mb3JtYXRp b24gKExvZ2ljYWxSZXBTZXF1ZW5jZUluZm8pIGZvciB0aGUgY3VycmVudAorICogc3Vic2NyaXB0 aW9uLiBUaGUgY2FjaGUgaXMgaW52YWxpZGF0ZWQgd2hlbiBwZ19zdWJzY3JpcHRpb25fcmVsIGlz IG1vZGlmaWVkLgorICoKKyAqIE5vdGU6IFRvIGF2b2lkIHRoZSBjb3N0IG9mIHNlYXJjaGluZyBm b3IgYSBzcGVjaWZpYyBzZXF1ZW5jZSBvbiByZWxjYWNoZQorICogaW52YWxpZGF0aW9uLCB3ZSBk byBub3QgaW52YWxpZGF0ZSB0aGUgY2FjaGUgaW1tZWRpYXRlbHkgd2hlbiBhIHNlcXVlbmNlIGlz CisgKiBhbHRlcmVkIChlLmcuLCByZW5hbWVkIG9yIG1vdmVkIHRvIGFub3RoZXIgbmFtZXNwYWNl KS4gSW5zdGVhZCwgd2UgdmFsaWRhdGUKKyAqIHRoZSBzZXF1ZW5jZSBuYW1lIGFuZCBuYW1lc3Bh Y2Ugd2hlbiBuZXh0IGF0dGVtcHRpbmcgdG8gc3luYyBpdCwgYXQgd2hpY2gKKyAqIHBvaW50IHdl IHZlcmlmeSB0aGUgbG9jYWwgc2VxdWVuY2Ugc3RhdGUuCisgKi8KK3N0YXRpYyBMaXN0ICpzZXF1 ZW5jZV9pbmZvcyA9IE5JTDsKK3N0YXRpYyBib29sIHNlcXVlbmNlX2luZm9zX3ZhbGlkID0gZmFs c2U7CisKIC8qCiAgKiBBcHBseSB3b3JrZXIgZGV0ZXJtaW5lcyB3aGV0aGVyIGEgc2VxdWVuY2Ug c3luYyB3b3JrZXIgaXMgbmVlZGVkLgogICoKQEAgLTUwMCw2ICs1MTMsOSBAQCBjb3B5X3NlcXVl bmNlcyhXYWxSZWNlaXZlckNvbm4gKmNvbm4sIExpc3QgKnNlcWluZm9zLCBib29sIHVwZGF0ZV9s c24pCiAKICNkZWZpbmUgTUFYX1NFUVVFTkNFU19TWU5DX1BFUl9CQVRDSCAxMDAKIAorCWlmIChz ZXFpbmZvcyA9PSBOSUwpCisJCXJldHVybiBmYWxzZTsKKwogCXdoaWxlIChjdXJfYmF0Y2hfYmFz ZV9pbmRleCA8IG5fc2VxaW5mb3MpCiAJewogCQlPaWQJCQlzZXFSb3dbUkVNT1RFX1NFUV9DT0xf Q09VTlRdID0ge0lOVDhPSUQsIElOVDhPSUQsCkBAIC03MjUsMjQgKzc0MSw0NCBAQCBjb3B5X3Nl cXVlbmNlcyhXYWxSZWNlaXZlckNvbm4gKmNvbm4sIExpc3QgKnNlcWluZm9zLCBib29sIHVwZGF0 ZV9sc24pCiB9CiAKIC8qCi0gKiBJZGVudGlmaWVzIHNlcXVlbmNlcyB0aGF0IHJlcXVpcmUgc3lu Y2hyb25pemF0aW9uIGFuZCBpbml0aWF0ZXMgdGhlCi0gKiBzeW5jaHJvbml6YXRpb24gcHJvY2Vz cy4KKyAqIENhbGxiYWNrIGZyb20gc3lzY2FjaGUgaW52YWxpZGF0aW9uLgorICovCitzdGF0aWMg dm9pZAoraW52YWxpZGF0ZV9zeW5jaW5nX3NlcXVlbmNlX2luZm9zKERhdHVtIGFyZywgU3lzQ2Fj aGVJZGVudGlmaWVyIGNhY2hlaWQsCisJCQkJCQkJCSAgdWludDMyIGhhc2h2YWx1ZSkKK3sKKwlz ZXF1ZW5jZV9pbmZvc192YWxpZCA9IGZhbHNlOworfQorCisvKgorICogR2V0IHRoZSBsaXN0IG9m IHNlcXVlbmNlIGluZm9ybWF0aW9uIGZvciB0aGUgY3VycmVudCBzdWJzY3JpcHRpb24uCiAgKgot ICogUmV0dXJucyB0cnVlIGlmIHNlcXVlbmNlcyBoYXZlIGJlZW4gdXBkYXRlZC4KKyAqIFJldHVy biBjYWNoZWQgc2VxdWVuY2Ugc3RhdGVzIGlmIHZhbGlkOyBvdGhlcndpc2UgZmV0Y2hlcyB0aGVt IGZyb20gdGhlCisgKiBjYXRhbG9nLCBjYWNoZXMgdGhlIHJlc3VsdCwgYW5kIHJldHVybiBpdC4K ICAqLwotc3RhdGljIGJvb2wKLUxvZ2ljYWxSZXBTeW5jU2VxdWVuY2VzKFdhbFJlY2VpdmVyQ29u biAqY29ubiwgYm9vbCB1cGRhdGVfbHNuKQorc3RhdGljIExpc3QgKgorZmV0Y2hfc2VxdWVuY2Vf aW5mb3Modm9pZCkKIHsKIAlSZWxhdGlvbglyZWw7CiAJSGVhcFR1cGxlCXR1cDsKIAlTY2FuS2V5 RGF0YSBza2V5WzFdOwogCVN5c1NjYW5EZXNjIHNjYW47CiAJT2lkCQkJc3ViaWQgPSBNeUxvZ2lj YWxSZXBXb3JrZXItPnN1YmlkOwotCWJvb2wJCXNlcXVlbmNlX2NvcGllZCA9IGZhbHNlOwotCUxp c3QJICAgKnNlcWluZm9zID0gTklMOwotCU1lbW9yeUNvbnRleHQgb2xkY3R4OworCUxpc3QJICAg KnRtcF9zZXFpbmZvcyA9IE5JTDsKKworCWlmIChzZXF1ZW5jZV9pbmZvc192YWxpZCkKKwkJcmV0 dXJuIHNlcXVlbmNlX2luZm9zOwogCi0JQXNzZXJ0KFNlcXVlbmNlU3luY0NvbnRleHQpOworCS8q IEZyZWUgdGhlIGV4aXN0aW5nIGludmFsaWQgY2FjaGUgZW50cmllcyAqLworCWZvcmVhY2hfcHRy KExvZ2ljYWxSZXBTZXF1ZW5jZUluZm8sIHNlcWluZm8sIHNlcXVlbmNlX2luZm9zKQorCXsKKwkJ cGZyZWUoc2VxaW5mby0+bnNwbmFtZSk7CisJCXBmcmVlKHNlcWluZm8tPnNlcW5hbWUpOworCQlw ZnJlZShzZXFpbmZvKTsKKwl9CisKKwlsaXN0X2ZyZWUoc2VxdWVuY2VfaW5mb3MpOworCXNlcXVl bmNlX2luZm9zID0gTklMOwogCiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIApAQCAtNzYz LDYgKzc5OSw3IEBAIExvZ2ljYWxSZXBTeW5jU2VxdWVuY2VzKFdhbFJlY2VpdmVyQ29ubiAqY29u biwgYm9vbCB1cGRhdGVfbHNuKQogCQlMb2dpY2FsUmVwU2VxdWVuY2VJbmZvICpzZXE7CiAJCVJl bGF0aW9uCXNlcXVlbmNlX3JlbDsKIAkJY2hhcgkJcmVsc3RhdGU7CisJCU1lbW9yeUNvbnRleHQg b2xkY3R4OwogCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKQEAgLTc4NSwxNyArODIyLDE0 IEBAIExvZ2ljYWxSZXBTeW5jU2VxdWVuY2VzKFdhbFJlY2VpdmVyQ29ubiAqY29ubiwgYm9vbCB1 cGRhdGVfbHNuKQogCiAJCUFzc2VydChyZWxzdGF0ZSA9PSBTVUJSRUxfU1RBVEVfSU5JVCB8fCBy ZWxzdGF0ZSA9PSBTVUJSRUxfU1RBVEVfUkVBRFkpOwogCi0JCS8qCi0JCSAqIFdvcmtlciBuZWVk cyB0byBwcm9jZXNzIHNlcXVlbmNlcyBhY3Jvc3MgdHJhbnNhY3Rpb24gYm91bmRhcnksIHNvCi0J CSAqIGFsbG9jYXRlIHRoZW0gdW5kZXIgU2VxdWVuY2VTeW5jQ29udGV4dC4KLQkJICovCi0JCW9s ZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhTZXF1ZW5jZVN5bmNDb250ZXh0KTsKKwkJLyog Q2FjaGUgdGhlIGluZm9ybWF0aW9uIGluIGEgcGVybWFuZW50IG1lbW9yeSBjb250ZXh0ICovCisJ CW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhDYWNoZU1lbW9yeUNvbnRleHQpOwogCQlz ZXEgPSBwYWxsb2MwX29iamVjdChMb2dpY2FsUmVwU2VxdWVuY2VJbmZvKTsKIAkJc2VxLT5sb2Nh bHJlbGlkID0gc3VicmVsLT5zcnJlbGlkOwogCQlzZXEtPm5zcG5hbWUgPSBnZXRfbmFtZXNwYWNl X25hbWUoUmVsYXRpb25HZXROYW1lc3BhY2Uoc2VxdWVuY2VfcmVsKSk7CiAJCXNlcS0+c2VxbmFt ZSA9IHBzdHJkdXAoUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoc2VxdWVuY2VfcmVsKSk7CiAJCXNl cS0+cmVsc3RhdGUgPSByZWxzdGF0ZTsKLQkJc2VxaW5mb3MgPSBsYXBwZW5kKHNlcWluZm9zLCBz ZXEpOworCQl0bXBfc2VxaW5mb3MgPSBsYXBwZW5kKHRtcF9zZXFpbmZvcywgc2VxKTsKIAkJTWVt b3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CiAKIAkJdGFibGVfY2xvc2Uoc2VxdWVuY2VfcmVs LCBOb0xvY2spOwpAQCAtODA1LDE4ICs4MzksMTIgQEAgTG9naWNhbFJlcFN5bmNTZXF1ZW5jZXMo V2FsUmVjZWl2ZXJDb25uICpjb25uLCBib29sIHVwZGF0ZV9sc24pCiAJc3lzdGFibGVfZW5kc2Nh bihzY2FuKTsKIAl0YWJsZV9jbG9zZShyZWwsIEFjY2Vzc1NoYXJlTG9jayk7CiAKLQlDb21taXRU cmFuc2FjdGlvbkNvbW1hbmQoKTsKLQotCS8qCi0JICogRXhpdCBlYXJseSBpZiBubyBjYXRhbG9n IGVudHJpZXMgZm91bmQsIGxpa2VseSBkdWUgdG8gY29uY3VycmVudCBkcm9wcy4KLQkgKi8KLQlp ZiAoIXNlcWluZm9zKQotCQlyZXR1cm4gZmFsc2U7CisJc2VxdWVuY2VfaW5mb3MgPSB0bXBfc2Vx aW5mb3M7CisJc2VxdWVuY2VfaW5mb3NfdmFsaWQgPSB0cnVlOwogCi0JLyogUHJvY2VzcyBzZXF1 ZW5jZXMgKi8KLQlzZXF1ZW5jZV9jb3BpZWQgPSBjb3B5X3NlcXVlbmNlcyhjb25uLCBzZXFpbmZv cywgdXBkYXRlX2xzbik7CisJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKLQlyZXR1cm4g c2VxdWVuY2VfY29waWVkOworCXJldHVybiBzZXF1ZW5jZV9pbmZvczsKIH0KIAogLyoKQEAgLTgz MSw2ICs4NTksMTQgQEAgc3RhcnRfc2VxdWVuY2Vfc3luYyh2b2lkKQogewogCUFzc2VydChhbV9z ZXF1ZW5jZXN5bmNfd29ya2VyKCkpOwogCisJLyoKKwkgKiBTZXR1cCBjYWxsYmFjayBmb3Igc3lz Y2FjaGUgc28gdGhhdCB3ZSBrbm93IHdoZW4gc29tZXRoaW5nIGNoYW5nZXMgaW4KKwkgKiB0aGUg c3Vic2NyaXB0aW9uIHJlbGF0aW9uIHN0YXRlLgorCSAqLworCUNhY2hlUmVnaXN0ZXJTeXNjYWNo ZUNhbGxiYWNrKFNVQlNDUklQVElPTlJFTE1BUCwKKwkJCQkJCQkJICBpbnZhbGlkYXRlX3N5bmNp bmdfc2VxdWVuY2VfaW5mb3MsCisJCQkJCQkJCSAgKERhdHVtKSAwKTsKKwogCVBHX1RSWSgpOwog CXsKIAkJY2hhcgkgICAqZXJyOwpAQCAtODc2LDYgKzkxMiw3IEBAIHN0YXJ0X3NlcXVlbmNlX3N5 bmModm9pZCkKIAkJCWJvb2wJCXNlcXVlbmNlX2NvcGllZCA9IGZhbHNlOwogCQkJTWVtb3J5Q29u dGV4dCBvbGRjdHg7CiAJCQlib29sCQl1cGRhdGVfbHNuOworCQkJTGlzdAkgICAqc2VxaW5mb3M7 CiAJCQlUaW1lc3RhbXBUeiBub3cgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CiAKIAkJCUNIRUNL X0ZPUl9JTlRFUlJVUFRTKCk7CkBAIC05MDcsOCArOTQ0LDEwIEBAIHN0YXJ0X3NlcXVlbmNlX3N5 bmModm9pZCkKIAkJCS8qCiAJCQkgKiBTeW5jaHJvbml6ZSBhbGwgc2VxdWVuY2VzIChib3RoIFJF QURZIGFuZCBJTklUIHN0YXRlcykuCiAJCQkgKi8KLQkJCXNlcXVlbmNlX2NvcGllZCA9IExvZ2lj YWxSZXBTeW5jU2VxdWVuY2VzKExvZ1JlcFdvcmtlcldhbFJjdkNvbm4sCi0JCQkJCQkJCQkJCQkJ ICB1cGRhdGVfbHNuKTsKKwkJCXNlcWluZm9zID0gZmV0Y2hfc2VxdWVuY2VfaW5mb3MoKTsKKwor CQkJc2VxdWVuY2VfY29waWVkID0gY29weV9zZXF1ZW5jZXMoTG9nUmVwV29ya2VyV2FsUmN2Q29u biwgc2VxaW5mb3MsCisJCQkJCQkJCQkJCSB1cGRhdGVfbHNuKTsKIAogCQkJTWVtb3J5Q29udGV4 dFJlc2V0KFNlcXVlbmNlU3luY0NvbnRleHQpOwogCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9s ZGN0eCk7Ci0tIAoyLjQ3LjMKCg== --0000000000008ec048064de5c56d--