Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tgTsx-00B3h3-0d for pgsql-hackers@arkaria.postgresql.org; Fri, 07 Feb 2025 19:19:32 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tgTsw-004nNe-3c for pgsql-hackers@arkaria.postgresql.org; Fri, 07 Feb 2025 19:19:30 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tgTsv-004nNW-Ey for pgsql-hackers@lists.postgresql.org; Fri, 07 Feb 2025 19:19:29 +0000 Received: from mail-pj1-x102f.google.com ([2607:f8b0:4864:20::102f]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tgTsr-004Pt5-1U for pgsql-hackers@postgresql.org; Fri, 07 Feb 2025 19:19:28 +0000 Received: by mail-pj1-x102f.google.com with SMTP id 98e67ed59e1d1-2f9b91dff71so3937869a91.2 for ; Fri, 07 Feb 2025 11:19:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=j-davis-com.20230601.gappssmtp.com; s=20230601; t=1738955963; x=1739560763; darn=postgresql.org; h=mime-version:user-agent:references:in-reply-to:date:to:from:subject :message-id:from:to:cc:subject:date:message-id:reply-to; bh=vwUg0duzw1uZ2BkStprtr+lgTk+c0RFQnGTLtl+WU34=; b=xXzJ6RxwGS7ouSIS0rZqS9kp8b8CVdlDgz6+04jbY6ef4JcwWP79AnEoYdXBg1ADgu XjBYrFa+QwBo4opOzgCqE4hKB+zCGTGiBko5aYyl8o/S5rgCHEQFdfg3et0CXUpKRboE v6zFFgGEGzq5zHOvqauGHHqJIehlC0m3Nrvi7ZCcVf3TqSS2LLa+JgiXPYalu0YCrz6J yUp+LwDXHTUES+zDilTlLY/DI90Y2p2pbbpjGzCCgAaTrGP4bW6NiNYQg0Hzc0bGvib6 sF5KmkYuYEqeUO+QfgE/v8kjzUTNgyvytEoWSrL6HljB6VAsXFTXge+tF0+gp8YBIFP2 7mrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738955963; x=1739560763; h=mime-version:user-agent:references:in-reply-to:date:to:from:subject :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=vwUg0duzw1uZ2BkStprtr+lgTk+c0RFQnGTLtl+WU34=; b=l4Py4OnVBIrYfHrYpCNm+RgWXpGTa46heEFudyFUvQCt7Sji1zLrXEFL7Z/2ZbcSPM nadKyt2Q1opkujCjs4BJLW0m2/hA22u5lGdTQ+42y3Wd2R0F7O+BNRn3GDD0KaXNmUH0 GjP9k9mdEIfTNCX6iv7cgQfmW5bBurv18dYYnQ6slu3MHx0YVyTBj4jHPe4vari0VQfC P10OpTL30C0mLb5bnxtlQP6AGRqxwNPcDG3rQJEC+2TlTp9AyHYMdNPi+9bO1zWtONAb +wMmU1PAErS5/lYFUL+gLdCPXGxJl+nEhjG8PcylsW6CXPAgngF2SF9J60q6pqOONEXj A7OQ== X-Forwarded-Encrypted: i=1; AJvYcCXOQNC+N68exu0sOU/e6vrW+2PVYY+ARjh2JpT0DtNbDUh6/M5saxhDvpQEInGcadyqEuPvJoS0rke1aJ8n@postgresql.org X-Gm-Message-State: AOJu0YxUKCvbIfSvqpOJGWHEY2LKuInhY2KkYROPOQFsLjUWtyrE4unZ GQ7ZIQkS71BUT7YJQTShI7zbgbD++UADG/fSN8fzacEcS8lIzL0yPjymZX4oVVworQ/7KFvW7hQ = X-Gm-Gg: ASbGncviWtxJuX5wloJnJVTxfa/JUtZyhkpmV4jBA8imnvLcoizZSp2CZzaP/2j0FsC rrzba8yWsrTASX4R+CVi+To/AxcSz0aK8wWi3BXPg5UhMMH7hkB0RV7Q/YoPCnPn7G/YgYAGIVg P79abaZej9eqR6N7qMZWhSxjRdLQaHpmwxRHKnbDJqoguLTkUOlSghuX5zscLV+Ba8K4sQnFVAA h0y8lIvH+Bf5i21oKfG/roLiliKO+2jMkvRMrghrgrF4IsGgx4g3mpsUs23lFB/2ipTzN5bhG6w dbCSNo4w5UWcS7tGr3bLLZRXhv45JMysAbupnXySk2fqLx38XeDXIdAY8w== X-Google-Smtp-Source: AGHT+IFT+LArJoPa3s1IpIn32eRbQmxF2vmm6fQO541eWqn8+DPWi05c39iseYHEVv8Vk/Gfrsb/bg== X-Received: by 2002:a05:6a00:1d99:b0:728:e745:23cd with SMTP id d2e1a72fcca58-7305d421a40mr9052919b3a.3.1738955963304; Fri, 07 Feb 2025 11:19:23 -0800 (PST) Received: from jeff-laptop.lan (c-76-102-242-158.hsd1.ca.comcast.net. [76.102.242.158]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-73048ae7558sm3458649b3a.68.2025.02.07.11.19.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Feb 2025 11:19:22 -0800 (PST) Message-ID: Subject: Re: Collation & ctype method table, and extension hooks From: Jeff Davis To: Andreas Karlsson , pgsql-hackers@postgresql.org, Peter Eisentraut Date: Fri, 07 Feb 2025 11:19:21 -0800 In-Reply-To: <1c1b254807813bb708802d5f766ea97e7f06b265.camel@j-davis.com> References: <2830211e1b6e6a2e26d845780b03e125281ea17b.camel@j-davis.com> <59da7ee4-5e1a-4727-b464-a603c6ed84cd@proxel.se> <247f18f3-09e5-480d-9222-9d0d9684995f@proxel.se> <78a1b434ff40510dc5aaabe986299a09f4da90cf.camel@j-davis.com> <4548a168-62cd-457b-8d06-9ba7b985c477@proxel.se> <7aa46d77b377428058403723440862d12a8a129a.camel@j-davis.com> <54771b2aa90f0c09085ce3f97d7f07ddce47da55.camel@j-davis.com> <679b689354bc4cd394bac850c7a03454d3412c0b.camel@j-davis.com> <1c1b254807813bb708802d5f766ea97e7f06b265.camel@j-davis.com> Content-Type: multipart/mixed; boundary="=-y4I0ndrBNzwPWRboRph+" User-Agent: Evolution 3.44.4-0ubuntu2 MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-y4I0ndrBNzwPWRboRph+ Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable > I'm still inlined to think the method table is a good thing to do: >=20 > (a) The performance cases I tried seem implausibly bad -- running > character classification patterns over large fields consisting only > of > codepoints over U+07FF. >=20 > (b) The method tables seem like a better code organization that > separates the responsibilities of the provider from the calling code. > It's also a requirement (or nearly so) if we want to provide some > pluggability or support multiple library versions. >=20 > It would be good to hear from others on these points, though. Attached v15. Just a rebase. I'd still like some input here. We could either: * commit this on the grounds that it's a desirable code improvement and the worst-case regression isn't a major concern; or * wait until v19 when we might have a more compelling use for the method table (e.g. pluggable provider or multilib) Regards, Jeff Davis --=-y4I0ndrBNzwPWRboRph+ Content-Disposition: attachment; filename*0=v15-0001-Control-ctype-behavior-internally-with-a-method-.pat; filename*1=ch Content-Type: text/x-patch; name="v15-0001-Control-ctype-behavior-internally-with-a-method-.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA3YWJiMWY2YzlmOGM4NDVjMjBkNmJhZjY0OGU0YmJhMDc1ZjRhM2NiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBG cmksIDI5IE5vdiAyMDI0IDA5OjM3OjQzIC0wODAwClN1YmplY3Q6IFtQQVRDSCB2MTUgMS80XSBD b250cm9sIGN0eXBlIGJlaGF2aW9yIGludGVybmFsbHkgd2l0aCBhIG1ldGhvZAogdGFibGUuCgpQ cmV2aW91c2x5LCBwYXR0ZXJuIG1hdGNoaW5nIGFuZCBjYXNlIG1hcHBpbmcgYmVoYXZpb3IgYnJh bmNoZWQgYmFzZWQKb24gdGhlIHByb3ZpZGVyLgoKUmVmYWN0b3IgdG8gdXNlIGEgbWV0aG9kIHRh YmxlLCB3aGljaCBpcyBsZXNzIGVycm9yLXByb25lIGFuZCBlYXNpZXIKdG8gaG9vay4KLS0tCiBz cmMvYmFja2VuZC9yZWdleC9yZWdjX3BnX2xvY2FsZS5jICAgICAgICB8IDM3NyArKysrKy0tLS0t LS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvbGlrZS5jICAgICAgICAgICAgICB8 ICAyMiArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2xpa2Vfc3VwcG9ydC5jICAgICAgfCAgIDcg Ky0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGUuYyAgICAgICAgIHwgMTIxICsrKy0t LS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGVfYnVpbHRpbi5jIHwgMTExICsrKysr Ky0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGVfaWN1LmMgICAgIHwgMTE2ICsrKysr Ky0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGVfbGliYy5jICAgIHwgMjc5ICsrKysr KysrKysrKystLS0KIHNyYy9pbmNsdWRlL3V0aWxzL3BnX2xvY2FsZS5oICAgICAgICAgICAgIHwg IDUyICsrKwogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgfCAgIDEg LQogOSBmaWxlcyBjaGFuZ2VkLCA2MzAgaW5zZXJ0aW9ucygrKSwgNDU2IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlZ2V4L3JlZ2NfcGdfbG9jYWxlLmMgYi9zcmMvYmFj a2VuZC9yZWdleC9yZWdjX3BnX2xvY2FsZS5jCmluZGV4IGVkNzQxMWRmODNkLi4zMWI4ZjRhOTQ3 OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVnZXgvcmVnY19wZ19sb2NhbGUuYworKysgYi9z cmMvYmFja2VuZC9yZWdleC9yZWdjX3BnX2xvY2FsZS5jCkBAIC02MywxOCArNjMsMTMgQEAKICAq IE5COiB0aGUgY29kaW5nIGhlcmUgYXNzdW1lcyBwZ193Y2hhciBpcyBhbiB1bnNpZ25lZCB0eXBl LgogICovCiAKLXR5cGVkZWYgZW51bQotewotCVBHX1JFR0VYX1NUUkFURUdZX0MsCQkvKiBDIGxv Y2FsZSAoZW5jb2RpbmcgaW5kZXBlbmRlbnQpICovCi0JUEdfUkVHRVhfU1RSQVRFR1lfQlVJTFRJ TiwJLyogYnVpbHQtaW4gVW5pY29kZSBzZW1hbnRpY3MgKi8KLQlQR19SRUdFWF9TVFJBVEVHWV9M SUJDX1dJREUsCS8qIFVzZSBsb2NhbGVfdCA8d2N0eXBlLmg+IGZ1bmN0aW9ucyAqLwotCVBHX1JF R0VYX1NUUkFURUdZX0xJQkNfMUJZVEUsCS8qIFVzZSBsb2NhbGVfdCA8Y3R5cGUuaD4gZnVuY3Rp b25zICovCi0JUEdfUkVHRVhfU1RSQVRFR1lfSUNVLAkJLyogVXNlIElDVSB1Y2hhci5oIGZ1bmN0 aW9ucyAqLwotfSBQR19Mb2NhbGVfU3RyYXRlZ3k7Ci0KLXN0YXRpYyBQR19Mb2NhbGVfU3RyYXRl Z3kgcGdfcmVnZXhfc3RyYXRlZ3k7CiBzdGF0aWMgcGdfbG9jYWxlX3QgcGdfcmVnZXhfbG9jYWxl OwogCitzdGF0aWMgc3RydWN0IHBnX2xvY2FsZV9zdHJ1Y3QgZHVtbXlfY19sb2NhbGUgPSB7CisJ LmNvbGxhdGVfaXNfYyA9IHRydWUsCisJLmN0eXBlX2lzX2MgPSB0cnVlLAorfTsKKwogLyoKICAq IEhhcmQtd2lyZWQgY2hhcmFjdGVyIHByb3BlcnRpZXMgZm9yIEMgbG9jYWxlCiAgKi8KQEAgLTIz MSw3ICsyMjYsNiBAQCB2b2lkCiBwZ19zZXRfcmVnZXhfY29sbGF0aW9uKE9pZCBjb2xsYXRpb24p CiB7CiAJcGdfbG9jYWxlX3QgbG9jYWxlID0gMDsKLQlQR19Mb2NhbGVfU3RyYXRlZ3kgc3RyYXRl Z3k7CiAKIAlpZiAoIU9pZElzVmFsaWQoY29sbGF0aW9uKSkKIAl7CkBAIC0yNTIsOCArMjQ2LDcg QEAgcGdfc2V0X3JlZ2V4X2NvbGxhdGlvbihPaWQgY29sbGF0aW9uKQogCQkgKiBjYXRhbG9nIGFj Y2VzcyBpcyBhdmFpbGFibGUsIHNvIHdlIGNhbid0IGNhbGwKIAkJICogcGdfbmV3bG9jYWxlX2Zy b21fY29sbGF0aW9uKCkuCiAJCSAqLwotCQlzdHJhdGVneSA9IFBHX1JFR0VYX1NUUkFURUdZX0M7 Ci0JCWxvY2FsZSA9IDA7CisJCWxvY2FsZSA9ICZkdW1teV9jX2xvY2FsZTsKIAl9CiAJZWxzZQog CXsKQEAgLTI3MCwxMTMgKzI2Myw0MSBAQCBwZ19zZXRfcmVnZXhfY29sbGF0aW9uKE9pZCBjb2xs YXRpb24pCiAJCQkgKiBDL1BPU0lYIGNvbGxhdGlvbnMgdXNlIHRoaXMgcGF0aCByZWdhcmRsZXNz IG9mIGRhdGFiYXNlCiAJCQkgKiBlbmNvZGluZwogCQkJICovCi0JCQlzdHJhdGVneSA9IFBHX1JF R0VYX1NUUkFURUdZX0M7Ci0JCQlsb2NhbGUgPSAwOwotCQl9Ci0JCWVsc2UgaWYgKGxvY2FsZS0+ cHJvdmlkZXIgPT0gQ09MTFBST1ZJREVSX0JVSUxUSU4pCi0JCXsKLQkJCUFzc2VydChHZXREYXRh YmFzZUVuY29kaW5nKCkgPT0gUEdfVVRGOCk7Ci0JCQlzdHJhdGVneSA9IFBHX1JFR0VYX1NUUkFU RUdZX0JVSUxUSU47Ci0JCX0KLSNpZmRlZiBVU0VfSUNVCi0JCWVsc2UgaWYgKGxvY2FsZS0+cHJv dmlkZXIgPT0gQ09MTFBST1ZJREVSX0lDVSkKLQkJewotCQkJc3RyYXRlZ3kgPSBQR19SRUdFWF9T VFJBVEVHWV9JQ1U7Ci0JCX0KLSNlbmRpZgotCQllbHNlCi0JCXsKLQkJCUFzc2VydChsb2NhbGUt PnByb3ZpZGVyID09IENPTExQUk9WSURFUl9MSUJDKTsKLQkJCWlmIChHZXREYXRhYmFzZUVuY29k aW5nKCkgPT0gUEdfVVRGOCkKLQkJCQlzdHJhdGVneSA9IFBHX1JFR0VYX1NUUkFURUdZX0xJQkNf V0lERTsKLQkJCWVsc2UKLQkJCQlzdHJhdGVneSA9IFBHX1JFR0VYX1NUUkFURUdZX0xJQkNfMUJZ VEU7CisJCQlsb2NhbGUgPSAmZHVtbXlfY19sb2NhbGU7CiAJCX0KIAl9CiAKLQlwZ19yZWdleF9z dHJhdGVneSA9IHN0cmF0ZWd5OwogCXBnX3JlZ2V4X2xvY2FsZSA9IGxvY2FsZTsKIH0KIAogc3Rh dGljIGludAogcGdfd2NfaXNkaWdpdChwZ193Y2hhciBjKQogewotCXN3aXRjaCAocGdfcmVnZXhf c3RyYXRlZ3kpCi0JewotCQljYXNlIFBHX1JFR0VYX1NUUkFURUdZX0M6Ci0JCQlyZXR1cm4gKGMg PD0gKHBnX3djaGFyKSAxMjcgJiYKLQkJCQkJKHBnX2NoYXJfcHJvcGVydGllc1tjXSAmIFBHX0lT RElHSVQpKTsKLQkJY2FzZSBQR19SRUdFWF9TVFJBVEVHWV9CVUlMVElOOgotCQkJcmV0dXJuIHBn X3VfaXNkaWdpdChjLCAhcGdfcmVnZXhfbG9jYWxlLT5pbmZvLmJ1aWx0aW4uY2FzZW1hcF9mdWxs KTsKLQkJY2FzZSBQR19SRUdFWF9TVFJBVEVHWV9MSUJDX1dJREU6Ci0JCQlpZiAoc2l6ZW9mKHdj aGFyX3QpID49IDQgfHwgYyA8PSAocGdfd2NoYXIpIDB4RkZGRikKLQkJCQlyZXR1cm4gaXN3ZGln aXRfbCgod2ludF90KSBjLCBwZ19yZWdleF9sb2NhbGUtPmluZm8ubHQpOwotCQkJLyogRkFMTCBU SFJVICovCi0JCWNhc2UgUEdfUkVHRVhfU1RSQVRFR1lfTElCQ18xQllURToKLQkJCXJldHVybiAo YyA8PSAocGdfd2NoYXIpIFVDSEFSX01BWCAmJgotCQkJCQlpc2RpZ2l0X2woKHVuc2lnbmVkIGNo YXIpIGMsIHBnX3JlZ2V4X2xvY2FsZS0+aW5mby5sdCkpOwotCQkJYnJlYWs7Ci0JCWNhc2UgUEdf UkVHRVhfU1RSQVRFR1lfSUNVOgotI2lmZGVmIFVTRV9JQ1UKLQkJCXJldHVybiB1X2lzZGlnaXQo Yyk7Ci0jZW5kaWYKLQkJCWJyZWFrOwotCX0KLQlyZXR1cm4gMDsJCQkJCS8qIGNhbid0IGdldCBo ZXJlLCBidXQga2VlcCBjb21waWxlciBxdWlldCAqLworCWlmIChwZ19yZWdleF9sb2NhbGUtPmN0 eXBlX2lzX2MpCisJCXJldHVybiAoYyA8PSAocGdfd2NoYXIpIDEyNyAmJgorCQkJCShwZ19jaGFy X3Byb3BlcnRpZXNbY10gJiBQR19JU0RJR0lUKSk7CisJZWxzZQorCQlyZXR1cm4gcGdfcmVnZXhf bG9jYWxlLT5jdHlwZS0+d2NfaXNkaWdpdChjLCBwZ19yZWdleF9sb2NhbGUpOwogfQogCiBzdGF0 aWMgaW50CiBwZ193Y19pc2FscGhhKHBnX3djaGFyIGMpCiB7Ci0Jc3dpdGNoIChwZ19yZWdleF9z dHJhdGVneSkKLQl7Ci0JCWNhc2UgUEdfUkVHRVhfU1RSQVRFR1lfQzoKLQkJCXJldHVybiAoYyA8 PSAocGdfd2NoYXIpIDEyNyAmJgotCQkJCQkocGdfY2hhcl9wcm9wZXJ0aWVzW2NdICYgUEdfSVNB TFBIQSkpOwotCQljYXNlIFBHX1JFR0VYX1NUUkFURUdZX0JVSUxUSU46Ci0JCQlyZXR1cm4gcGdf dV9pc2FscGhhKGMpOwotCQljYXNlIFBHX1JFR0VYX1NUUkFURUdZX0xJQkNfV0lERToKLQkJCWlm IChzaXplb2Yod2NoYXJfdCkgPj0gNCB8fCBjIDw9IChwZ193Y2hhcikgMHhGRkZGKQotCQkJCXJl dHVybiBpc3dhbHBoYV9sKCh3aW50X3QpIGMsIHBnX3JlZ2V4X2xvY2FsZS0+aW5mby5sdCk7Ci0J CQkvKiBGQUxMIFRIUlUgKi8KLQkJY2FzZSBQR19SRUdFWF9TVFJBVEVHWV9MSUJDXzFCWVRFOgot CQkJcmV0dXJuIChjIDw9IChwZ193Y2hhcikgVUNIQVJfTUFYICYmCi0JCQkJCWlzYWxwaGFfbCgo dW5zaWduZWQgY2hhcikgYywgcGdfcmVnZXhfbG9jYWxlLT5pbmZvLmx0KSk7Ci0JCQlicmVhazsK LQkJY2FzZSBQR19SRUdFWF9TVFJBVEVHWV9JQ1U6Ci0jaWZkZWYgVVNFX0lDVQotCQkJcmV0dXJu IHVfaXNhbHBoYShjKTsKLSNlbmRpZgotCQkJYnJlYWs7Ci0JfQotCXJldHVybiAwOwkJCQkJLyog Y2FuJ3QgZ2V0IGhlcmUsIGJ1dCBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCisJaWYgKHBnX3JlZ2V4 X2xvY2FsZS0+Y3R5cGVfaXNfYykKKwkJcmV0dXJuIChjIDw9IChwZ193Y2hhcikgMTI3ICYmCisJ CQkJKHBnX2NoYXJfcHJvcGVydGllc1tjXSAmIFBHX0lTQUxQSEEpKTsKKwllbHNlCisJCXJldHVy biBwZ19yZWdleF9sb2NhbGUtPmN0eXBlLT53Y19pc2FscGhhKGMsIHBnX3JlZ2V4X2xvY2FsZSk7 CiB9CiAKIHN0YXRpYyBpbnQKIHBnX3djX2lzYWxudW0ocGdfd2NoYXIgYykKIHsKLQlzd2l0Y2gg KHBnX3JlZ2V4X3N0cmF0ZWd5KQotCXsKLQkJY2FzZSBQR19SRUdFWF9TVFJBVEVHWV9DOgotCQkJ cmV0dXJuIChjIDw9IChwZ193Y2hhcikgMTI3ICYmCi0JCQkJCShwZ19jaGFyX3Byb3BlcnRpZXNb Y10gJiBQR19JU0FMTlVNKSk7Ci0JCWNhc2UgUEdfUkVHRVhfU1RSQVRFR1lfQlVJTFRJTjoKLQkJ CXJldHVybiBwZ191X2lzYWxudW0oYywgIXBnX3JlZ2V4X2xvY2FsZS0+aW5mby5idWlsdGluLmNh c2VtYXBfZnVsbCk7Ci0JCWNhc2UgUEdfUkVHRVhfU1RSQVRFR1lfTElCQ19XSURFOgotCQkJaWYg KHNpemVvZih3Y2hhcl90KSA+PSA0IHx8IGMgPD0gKHBnX3djaGFyKSAweEZGRkYpCi0JCQkJcmV0 dXJuIGlzd2FsbnVtX2woKHdpbnRfdCkgYywgcGdfcmVnZXhfbG9jYWxlLT5pbmZvLmx0KTsKLQkJ CS8qIEZBTEwgVEhSVSAqLwotCQljYXNlIFBHX1JFR0VYX1NUUkFURUdZX0xJQkNfMUJZVEU6Ci0J CQlyZXR1cm4gKGMgPD0gKHBnX3djaGFyKSBVQ0hBUl9NQVggJiYKLQkJCQkJaXNhbG51bV9sKCh1 bnNpZ25lZCBjaGFyKSBjLCBwZ19yZWdleF9sb2NhbGUtPmluZm8ubHQpKTsKLQkJCWJyZWFrOwot CQljYXNlIFBHX1JFR0VYX1NUUkFURUdZX0lDVToKLSNpZmRlZiBVU0VfSUNVCi0JCQlyZXR1cm4g dV9pc2FsbnVtKGMpOwotI2VuZGlmCi0JCQlicmVhazsKLQl9Ci0JcmV0dXJuIDA7CQkJCQkvKiBj YW4ndCBnZXQgaGVyZSwgYnV0IGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KKwlpZiAocGdfcmVnZXhf bG9jYWxlLT5jdHlwZV9pc19jKQorCQlyZXR1cm4gKGMgPD0gKHBnX3djaGFyKSAxMjcgJiYKKwkJ CQkocGdfY2hhcl9wcm9wZXJ0aWVzW2NdICYgUEdfSVNBTE5VTSkpOworCWVsc2UKKwkJcmV0dXJu IHBnX3JlZ2V4X2xvY2FsZS0+Y3R5cGUtPndjX2lzYWxudW0oYywgcGdfcmVnZXhfbG9jYWxlKTsK IH0KIAogc3RhdGljIGludApAQCAtMzkxLDIxOSArMzEyLDg3IEBAIHBnX3djX2lzd29yZChwZ193 Y2hhciBjKQogc3RhdGljIGludAogcGdfd2NfaXN1cHBlcihwZ193Y2hhciBjKQogewotCXN3aXRj aCAocGdfcmVnZXhfc3RyYXRlZ3kpCi0JewotCQljYXNlIFBHX1JFR0VYX1NUUkFURUdZX0M6Ci0J CQlyZXR1cm4gKGMgPD0gKHBnX3djaGFyKSAxMjcgJiYKLQkJCQkJKHBnX2NoYXJfcHJvcGVydGll c1tjXSAmIFBHX0lTVVBQRVIpKTsKLQkJY2FzZSBQR19SRUdFWF9TVFJBVEVHWV9CVUlMVElOOgot CQkJcmV0dXJuIHBnX3VfaXN1cHBlcihjKTsKLQkJY2FzZSBQR19SRUdFWF9TVFJBVEVHWV9MSUJD X1dJREU6Ci0JCQlpZiAoc2l6ZW9mKHdjaGFyX3QpID49IDQgfHwgYyA8PSAocGdfd2NoYXIpIDB4 RkZGRikKLQkJCQlyZXR1cm4gaXN3dXBwZXJfbCgod2ludF90KSBjLCBwZ19yZWdleF9sb2NhbGUt PmluZm8ubHQpOwotCQkJLyogRkFMTCBUSFJVICovCi0JCWNhc2UgUEdfUkVHRVhfU1RSQVRFR1lf TElCQ18xQllURToKLQkJCXJldHVybiAoYyA8PSAocGdfd2NoYXIpIFVDSEFSX01BWCAmJgotCQkJ CQlpc3VwcGVyX2woKHVuc2lnbmVkIGNoYXIpIGMsIHBnX3JlZ2V4X2xvY2FsZS0+aW5mby5sdCkp OwotCQkJYnJlYWs7Ci0JCWNhc2UgUEdfUkVHRVhfU1RSQVRFR1lfSUNVOgotI2lmZGVmIFVTRV9J Q1UKLQkJCXJldHVybiB1X2lzdXBwZXIoYyk7Ci0jZW5kaWYKLQkJCWJyZWFrOwotCX0KLQlyZXR1 cm4gMDsJCQkJCS8qIGNhbid0IGdldCBoZXJlLCBidXQga2VlcCBjb21waWxlciBxdWlldCAqLwor CWlmIChwZ19yZWdleF9sb2NhbGUtPmN0eXBlX2lzX2MpCisJCXJldHVybiAoYyA8PSAocGdfd2No YXIpIDEyNyAmJgorCQkJCShwZ19jaGFyX3Byb3BlcnRpZXNbY10gJiBQR19JU1VQUEVSKSk7CisJ ZWxzZQorCQlyZXR1cm4gcGdfcmVnZXhfbG9jYWxlLT5jdHlwZS0+d2NfaXN1cHBlcihjLCBwZ19y ZWdleF9sb2NhbGUpOwogfQogCiBzdGF0aWMgaW50CiBwZ193Y19pc2xvd2VyKHBnX3djaGFyIGMp CiB7Ci0Jc3dpdGNoIChwZ19yZWdleF9zdHJhdGVneSkKLQl7Ci0JCWNhc2UgUEdfUkVHRVhfU1RS QVRFR1lfQzoKLQkJCXJldHVybiAoYyA8PSAocGdfd2NoYXIpIDEyNyAmJgotCQkJCQkocGdfY2hh cl9wcm9wZXJ0aWVzW2NdICYgUEdfSVNMT1dFUikpOwotCQljYXNlIFBHX1JFR0VYX1NUUkFURUdZ X0JVSUxUSU46Ci0JCQlyZXR1cm4gcGdfdV9pc2xvd2VyKGMpOwotCQljYXNlIFBHX1JFR0VYX1NU UkFURUdZX0xJQkNfV0lERToKLQkJCWlmIChzaXplb2Yod2NoYXJfdCkgPj0gNCB8fCBjIDw9IChw Z193Y2hhcikgMHhGRkZGKQotCQkJCXJldHVybiBpc3dsb3dlcl9sKCh3aW50X3QpIGMsIHBnX3Jl Z2V4X2xvY2FsZS0+aW5mby5sdCk7Ci0JCQkvKiBGQUxMIFRIUlUgKi8KLQkJY2FzZSBQR19SRUdF WF9TVFJBVEVHWV9MSUJDXzFCWVRFOgotCQkJcmV0dXJuIChjIDw9IChwZ193Y2hhcikgVUNIQVJf TUFYICYmCi0JCQkJCWlzbG93ZXJfbCgodW5zaWduZWQgY2hhcikgYywgcGdfcmVnZXhfbG9jYWxl LT5pbmZvLmx0KSk7Ci0JCQlicmVhazsKLQkJY2FzZSBQR19SRUdFWF9TVFJBVEVHWV9JQ1U6Ci0j aWZkZWYgVVNFX0lDVQotCQkJcmV0dXJuIHVfaXNsb3dlcihjKTsKLSNlbmRpZgotCQkJYnJlYWs7 Ci0JfQotCXJldHVybiAwOwkJCQkJLyogY2FuJ3QgZ2V0IGhlcmUsIGJ1dCBrZWVwIGNvbXBpbGVy IHF1aWV0ICovCisJaWYgKHBnX3JlZ2V4X2xvY2FsZS0+Y3R5cGVfaXNfYykKKwkJcmV0dXJuIChj IDw9IChwZ193Y2hhcikgMTI3ICYmCisJCQkJKHBnX2NoYXJfcHJvcGVydGllc1tjXSAmIFBHX0lT TE9XRVIpKTsKKwllbHNlCisJCXJldHVybiBwZ19yZWdleF9sb2NhbGUtPmN0eXBlLT53Y19pc2xv d2VyKGMsIHBnX3JlZ2V4X2xvY2FsZSk7CiB9CiAKIHN0YXRpYyBpbnQKIHBnX3djX2lzZ3JhcGgo cGdfd2NoYXIgYykKIHsKLQlzd2l0Y2ggKHBnX3JlZ2V4X3N0cmF0ZWd5KQotCXsKLQkJY2FzZSBQ R19SRUdFWF9TVFJBVEVHWV9DOgotCQkJcmV0dXJuIChjIDw9IChwZ193Y2hhcikgMTI3ICYmCi0J CQkJCShwZ19jaGFyX3Byb3BlcnRpZXNbY10gJiBQR19JU0dSQVBIKSk7Ci0JCWNhc2UgUEdfUkVH RVhfU1RSQVRFR1lfQlVJTFRJTjoKLQkJCXJldHVybiBwZ191X2lzZ3JhcGgoYyk7Ci0JCWNhc2Ug UEdfUkVHRVhfU1RSQVRFR1lfTElCQ19XSURFOgotCQkJaWYgKHNpemVvZih3Y2hhcl90KSA+PSA0 IHx8IGMgPD0gKHBnX3djaGFyKSAweEZGRkYpCi0JCQkJcmV0dXJuIGlzd2dyYXBoX2woKHdpbnRf dCkgYywgcGdfcmVnZXhfbG9jYWxlLT5pbmZvLmx0KTsKLQkJCS8qIEZBTEwgVEhSVSAqLwotCQlj YXNlIFBHX1JFR0VYX1NUUkFURUdZX0xJQkNfMUJZVEU6Ci0JCQlyZXR1cm4gKGMgPD0gKHBnX3dj aGFyKSBVQ0hBUl9NQVggJiYKLQkJCQkJaXNncmFwaF9sKCh1bnNpZ25lZCBjaGFyKSBjLCBwZ19y ZWdleF9sb2NhbGUtPmluZm8ubHQpKTsKLQkJCWJyZWFrOwotCQljYXNlIFBHX1JFR0VYX1NUUkFU RUdZX0lDVToKLSNpZmRlZiBVU0VfSUNVCi0JCQlyZXR1cm4gdV9pc2dyYXBoKGMpOwotI2VuZGlm Ci0JCQlicmVhazsKLQl9Ci0JcmV0dXJuIDA7CQkJCQkvKiBjYW4ndCBnZXQgaGVyZSwgYnV0IGtl ZXAgY29tcGlsZXIgcXVpZXQgKi8KKwlpZiAocGdfcmVnZXhfbG9jYWxlLT5jdHlwZV9pc19jKQor CQlyZXR1cm4gKGMgPD0gKHBnX3djaGFyKSAxMjcgJiYKKwkJCQkocGdfY2hhcl9wcm9wZXJ0aWVz W2NdICYgUEdfSVNHUkFQSCkpOworCWVsc2UKKwkJcmV0dXJuIHBnX3JlZ2V4X2xvY2FsZS0+Y3R5 cGUtPndjX2lzZ3JhcGgoYywgcGdfcmVnZXhfbG9jYWxlKTsKIH0KIAogc3RhdGljIGludAogcGdf d2NfaXNwcmludChwZ193Y2hhciBjKQogewotCXN3aXRjaCAocGdfcmVnZXhfc3RyYXRlZ3kpCi0J ewotCQljYXNlIFBHX1JFR0VYX1NUUkFURUdZX0M6Ci0JCQlyZXR1cm4gKGMgPD0gKHBnX3djaGFy KSAxMjcgJiYKLQkJCQkJKHBnX2NoYXJfcHJvcGVydGllc1tjXSAmIFBHX0lTUFJJTlQpKTsKLQkJ Y2FzZSBQR19SRUdFWF9TVFJBVEVHWV9CVUlMVElOOgotCQkJcmV0dXJuIHBnX3VfaXNwcmludChj KTsKLQkJY2FzZSBQR19SRUdFWF9TVFJBVEVHWV9MSUJDX1dJREU6Ci0JCQlpZiAoc2l6ZW9mKHdj aGFyX3QpID49IDQgfHwgYyA8PSAocGdfd2NoYXIpIDB4RkZGRikKLQkJCQlyZXR1cm4gaXN3cHJp bnRfbCgod2ludF90KSBjLCBwZ19yZWdleF9sb2NhbGUtPmluZm8ubHQpOwotCQkJLyogRkFMTCBU SFJVICovCi0JCWNhc2UgUEdfUkVHRVhfU1RSQVRFR1lfTElCQ18xQllURToKLQkJCXJldHVybiAo YyA8PSAocGdfd2NoYXIpIFVDSEFSX01BWCAmJgotCQkJCQlpc3ByaW50X2woKHVuc2lnbmVkIGNo YXIpIGMsIHBnX3JlZ2V4X2xvY2FsZS0+aW5mby5sdCkpOwotCQkJYnJlYWs7Ci0JCWNhc2UgUEdf UkVHRVhfU1RSQVRFR1lfSUNVOgotI2lmZGVmIFVTRV9JQ1UKLQkJCXJldHVybiB1X2lzcHJpbnQo Yyk7Ci0jZW5kaWYKLQkJCWJyZWFrOwotCX0KLQlyZXR1cm4gMDsJCQkJCS8qIGNhbid0IGdldCBo ZXJlLCBidXQga2VlcCBjb21waWxlciBxdWlldCAqLworCWlmIChwZ19yZWdleF9sb2NhbGUtPmN0 eXBlX2lzX2MpCisJCXJldHVybiAoYyA8PSAocGdfd2NoYXIpIDEyNyAmJgorCQkJCShwZ19jaGFy X3Byb3BlcnRpZXNbY10gJiBQR19JU1BSSU5UKSk7CisJZWxzZQorCQlyZXR1cm4gcGdfcmVnZXhf bG9jYWxlLT5jdHlwZS0+d2NfaXNwcmludChjLCBwZ19yZWdleF9sb2NhbGUpOwogfQogCiBzdGF0 aWMgaW50CiBwZ193Y19pc3B1bmN0KHBnX3djaGFyIGMpCiB7Ci0Jc3dpdGNoIChwZ19yZWdleF9z dHJhdGVneSkKLQl7Ci0JCWNhc2UgUEdfUkVHRVhfU1RSQVRFR1lfQzoKLQkJCXJldHVybiAoYyA8 PSAocGdfd2NoYXIpIDEyNyAmJgotCQkJCQkocGdfY2hhcl9wcm9wZXJ0aWVzW2NdICYgUEdfSVNQ VU5DVCkpOwotCQljYXNlIFBHX1JFR0VYX1NUUkFURUdZX0JVSUxUSU46Ci0JCQlyZXR1cm4gcGdf dV9pc3B1bmN0KGMsICFwZ19yZWdleF9sb2NhbGUtPmluZm8uYnVpbHRpbi5jYXNlbWFwX2Z1bGwp OwotCQljYXNlIFBHX1JFR0VYX1NUUkFURUdZX0xJQkNfV0lERToKLQkJCWlmIChzaXplb2Yod2No YXJfdCkgPj0gNCB8fCBjIDw9IChwZ193Y2hhcikgMHhGRkZGKQotCQkJCXJldHVybiBpc3dwdW5j dF9sKCh3aW50X3QpIGMsIHBnX3JlZ2V4X2xvY2FsZS0+aW5mby5sdCk7Ci0JCQkvKiBGQUxMIFRI UlUgKi8KLQkJY2FzZSBQR19SRUdFWF9TVFJBVEVHWV9MSUJDXzFCWVRFOgotCQkJcmV0dXJuIChj IDw9IChwZ193Y2hhcikgVUNIQVJfTUFYICYmCi0JCQkJCWlzcHVuY3RfbCgodW5zaWduZWQgY2hh cikgYywgcGdfcmVnZXhfbG9jYWxlLT5pbmZvLmx0KSk7Ci0JCQlicmVhazsKLQkJY2FzZSBQR19S RUdFWF9TVFJBVEVHWV9JQ1U6Ci0jaWZkZWYgVVNFX0lDVQotCQkJcmV0dXJuIHVfaXNwdW5jdChj KTsKLSNlbmRpZgotCQkJYnJlYWs7Ci0JfQotCXJldHVybiAwOwkJCQkJLyogY2FuJ3QgZ2V0IGhl cmUsIGJ1dCBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCisJaWYgKHBnX3JlZ2V4X2xvY2FsZS0+Y3R5 cGVfaXNfYykKKwkJcmV0dXJuIChjIDw9IChwZ193Y2hhcikgMTI3ICYmCisJCQkJKHBnX2NoYXJf cHJvcGVydGllc1tjXSAmIFBHX0lTUFVOQ1QpKTsKKwllbHNlCisJCXJldHVybiBwZ19yZWdleF9s b2NhbGUtPmN0eXBlLT53Y19pc3B1bmN0KGMsIHBnX3JlZ2V4X2xvY2FsZSk7CiB9CiAKIHN0YXRp YyBpbnQKIHBnX3djX2lzc3BhY2UocGdfd2NoYXIgYykKIHsKLQlzd2l0Y2ggKHBnX3JlZ2V4X3N0 cmF0ZWd5KQotCXsKLQkJY2FzZSBQR19SRUdFWF9TVFJBVEVHWV9DOgotCQkJcmV0dXJuIChjIDw9 IChwZ193Y2hhcikgMTI3ICYmCi0JCQkJCShwZ19jaGFyX3Byb3BlcnRpZXNbY10gJiBQR19JU1NQ QUNFKSk7Ci0JCWNhc2UgUEdfUkVHRVhfU1RSQVRFR1lfQlVJTFRJTjoKLQkJCXJldHVybiBwZ191 X2lzc3BhY2UoYyk7Ci0JCWNhc2UgUEdfUkVHRVhfU1RSQVRFR1lfTElCQ19XSURFOgotCQkJaWYg KHNpemVvZih3Y2hhcl90KSA+PSA0IHx8IGMgPD0gKHBnX3djaGFyKSAweEZGRkYpCi0JCQkJcmV0 dXJuIGlzd3NwYWNlX2woKHdpbnRfdCkgYywgcGdfcmVnZXhfbG9jYWxlLT5pbmZvLmx0KTsKLQkJ CS8qIEZBTEwgVEhSVSAqLwotCQljYXNlIFBHX1JFR0VYX1NUUkFURUdZX0xJQkNfMUJZVEU6Ci0J CQlyZXR1cm4gKGMgPD0gKHBnX3djaGFyKSBVQ0hBUl9NQVggJiYKLQkJCQkJaXNzcGFjZV9sKCh1 bnNpZ25lZCBjaGFyKSBjLCBwZ19yZWdleF9sb2NhbGUtPmluZm8ubHQpKTsKLQkJCWJyZWFrOwot CQljYXNlIFBHX1JFR0VYX1NUUkFURUdZX0lDVToKLSNpZmRlZiBVU0VfSUNVCi0JCQlyZXR1cm4g dV9pc3NwYWNlKGMpOwotI2VuZGlmCi0JCQlicmVhazsKLQl9Ci0JcmV0dXJuIDA7CQkJCQkvKiBj YW4ndCBnZXQgaGVyZSwgYnV0IGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KKwlpZiAocGdfcmVnZXhf bG9jYWxlLT5jdHlwZV9pc19jKQorCQlyZXR1cm4gKGMgPD0gKHBnX3djaGFyKSAxMjcgJiYKKwkJ CQkocGdfY2hhcl9wcm9wZXJ0aWVzW2NdICYgUEdfSVNTUEFDRSkpOworCWVsc2UKKwkJcmV0dXJu IHBnX3JlZ2V4X2xvY2FsZS0+Y3R5cGUtPndjX2lzc3BhY2UoYywgcGdfcmVnZXhfbG9jYWxlKTsK IH0KIAogc3RhdGljIHBnX3djaGFyCiBwZ193Y190b3VwcGVyKHBnX3djaGFyIGMpCiB7Ci0Jc3dp dGNoIChwZ19yZWdleF9zdHJhdGVneSkKKwlpZiAocGdfcmVnZXhfbG9jYWxlLT5jdHlwZV9pc19j KQogCXsKLQkJY2FzZSBQR19SRUdFWF9TVFJBVEVHWV9DOgotCQkJaWYgKGMgPD0gKHBnX3djaGFy KSAxMjcpCi0JCQkJcmV0dXJuIHBnX2FzY2lpX3RvdXBwZXIoKHVuc2lnbmVkIGNoYXIpIGMpOwot CQkJcmV0dXJuIGM7Ci0JCWNhc2UgUEdfUkVHRVhfU1RSQVRFR1lfQlVJTFRJTjoKLQkJCXJldHVy biB1bmljb2RlX3VwcGVyY2FzZV9zaW1wbGUoYyk7Ci0JCWNhc2UgUEdfUkVHRVhfU1RSQVRFR1lf TElCQ19XSURFOgotCQkJaWYgKHNpemVvZih3Y2hhcl90KSA+PSA0IHx8IGMgPD0gKHBnX3djaGFy KSAweEZGRkYpCi0JCQkJcmV0dXJuIHRvd3VwcGVyX2woKHdpbnRfdCkgYywgcGdfcmVnZXhfbG9j YWxlLT5pbmZvLmx0KTsKLQkJCS8qIEZBTEwgVEhSVSAqLwotCQljYXNlIFBHX1JFR0VYX1NUUkFU RUdZX0xJQkNfMUJZVEU6Ci0JCQlpZiAoYyA8PSAocGdfd2NoYXIpIFVDSEFSX01BWCkKLQkJCQly ZXR1cm4gdG91cHBlcl9sKCh1bnNpZ25lZCBjaGFyKSBjLCBwZ19yZWdleF9sb2NhbGUtPmluZm8u bHQpOwotCQkJcmV0dXJuIGM7Ci0JCWNhc2UgUEdfUkVHRVhfU1RSQVRFR1lfSUNVOgotI2lmZGVm IFVTRV9JQ1UKLQkJCXJldHVybiB1X3RvdXBwZXIoYyk7Ci0jZW5kaWYKLQkJCWJyZWFrOworCQlp ZiAoYyA8PSAocGdfd2NoYXIpIDEyNykKKwkJCXJldHVybiBwZ19hc2NpaV90b3VwcGVyKCh1bnNp Z25lZCBjaGFyKSBjKTsKKwkJcmV0dXJuIGM7CiAJfQotCXJldHVybiAwOwkJCQkJLyogY2FuJ3Qg Z2V0IGhlcmUsIGJ1dCBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCisJZWxzZQorCQlyZXR1cm4gcGdf cmVnZXhfbG9jYWxlLT5jdHlwZS0+d2NfdG91cHBlcihjLCBwZ19yZWdleF9sb2NhbGUpOwogfQog CiBzdGF0aWMgcGdfd2NoYXIKIHBnX3djX3RvbG93ZXIocGdfd2NoYXIgYykKIHsKLQlzd2l0Y2gg KHBnX3JlZ2V4X3N0cmF0ZWd5KQorCWlmIChwZ19yZWdleF9sb2NhbGUtPmN0eXBlX2lzX2MpCiAJ ewotCQljYXNlIFBHX1JFR0VYX1NUUkFURUdZX0M6Ci0JCQlpZiAoYyA8PSAocGdfd2NoYXIpIDEy NykKLQkJCQlyZXR1cm4gcGdfYXNjaWlfdG9sb3dlcigodW5zaWduZWQgY2hhcikgYyk7Ci0JCQly ZXR1cm4gYzsKLQkJY2FzZSBQR19SRUdFWF9TVFJBVEVHWV9CVUlMVElOOgotCQkJcmV0dXJuIHVu aWNvZGVfbG93ZXJjYXNlX3NpbXBsZShjKTsKLQkJY2FzZSBQR19SRUdFWF9TVFJBVEVHWV9MSUJD X1dJREU6Ci0JCQlpZiAoc2l6ZW9mKHdjaGFyX3QpID49IDQgfHwgYyA8PSAocGdfd2NoYXIpIDB4 RkZGRikKLQkJCQlyZXR1cm4gdG93bG93ZXJfbCgod2ludF90KSBjLCBwZ19yZWdleF9sb2NhbGUt PmluZm8ubHQpOwotCQkJLyogRkFMTCBUSFJVICovCi0JCWNhc2UgUEdfUkVHRVhfU1RSQVRFR1lf TElCQ18xQllURToKLQkJCWlmIChjIDw9IChwZ193Y2hhcikgVUNIQVJfTUFYKQotCQkJCXJldHVy biB0b2xvd2VyX2woKHVuc2lnbmVkIGNoYXIpIGMsIHBnX3JlZ2V4X2xvY2FsZS0+aW5mby5sdCk7 Ci0JCQlyZXR1cm4gYzsKLQkJY2FzZSBQR19SRUdFWF9TVFJBVEVHWV9JQ1U6Ci0jaWZkZWYgVVNF X0lDVQotCQkJcmV0dXJuIHVfdG9sb3dlcihjKTsKLSNlbmRpZgotCQkJYnJlYWs7CisJCWlmIChj IDw9IChwZ193Y2hhcikgMTI3KQorCQkJcmV0dXJuIHBnX2FzY2lpX3RvbG93ZXIoKHVuc2lnbmVk IGNoYXIpIGMpOworCQlyZXR1cm4gYzsKIAl9Ci0JcmV0dXJuIDA7CQkJCQkvKiBjYW4ndCBnZXQg aGVyZSwgYnV0IGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KKwllbHNlCisJCXJldHVybiBwZ19yZWdl eF9sb2NhbGUtPmN0eXBlLT53Y190b2xvd2VyKGMsIHBnX3JlZ2V4X2xvY2FsZSk7CiB9CiAKIApA QCAtNzI5LDM3ICs1MTgsMjUgQEAgcGdfY3R5cGVfZ2V0X2NhY2hlKHBnX3djX3Byb2JlZnVuYyBw cm9iZWZ1bmMsIGludCBjY2xhc3Njb2RlKQogCSAqIHdvdWxkIGFsd2F5cyBiZSB0cnVlIGZvciBw cm9kdWN0aW9uIHZhbHVlcyBvZiBNQVhfU0lNUExFX0NIUiwgYnV0IGl0J3MKIAkgKiB1c2VmdWwg dG8gYWxsb3cgaXQgdG8gYmUgc21hbGwgZm9yIHRlc3RpbmcgcHVycG9zZXMuKQogCSAqLwotCXN3 aXRjaCAocGdfcmVnZXhfc3RyYXRlZ3kpCisJaWYgKHBnX3JlZ2V4X2xvY2FsZS0+Y3R5cGVfaXNf YykKIAl7Ci0JCWNhc2UgUEdfUkVHRVhfU1RSQVRFR1lfQzoKICNpZiBNQVhfU0lNUExFX0NIUiA+ PSAxMjcKLQkJCW1heF9jaHIgPSAocGdfd2NoYXIpIDEyNzsKLQkJCXBjYy0+Y3YuY2NsYXNzY29k ZSA9IC0xOworCQltYXhfY2hyID0gKHBnX3djaGFyKSAxMjc7CisJCXBjYy0+Y3YuY2NsYXNzY29k ZSA9IC0xOwogI2Vsc2UKLQkJCW1heF9jaHIgPSAocGdfd2NoYXIpIE1BWF9TSU1QTEVfQ0hSOwor CQltYXhfY2hyID0gKHBnX3djaGFyKSBNQVhfU0lNUExFX0NIUjsKICNlbmRpZgotCQkJYnJlYWs7 Ci0JCWNhc2UgUEdfUkVHRVhfU1RSQVRFR1lfQlVJTFRJTjoKLQkJCW1heF9jaHIgPSAocGdfd2No YXIpIE1BWF9TSU1QTEVfQ0hSOwotCQkJYnJlYWs7Ci0JCWNhc2UgUEdfUkVHRVhfU1RSQVRFR1lf TElCQ19XSURFOgotCQkJbWF4X2NociA9IChwZ193Y2hhcikgTUFYX1NJTVBMRV9DSFI7Ci0JCQli cmVhazsKLQkJY2FzZSBQR19SRUdFWF9TVFJBVEVHWV9MSUJDXzFCWVRFOgotI2lmIE1BWF9TSU1Q TEVfQ0hSID49IFVDSEFSX01BWAotCQkJbWF4X2NociA9IChwZ193Y2hhcikgVUNIQVJfTUFYOwor CX0KKwllbHNlCisJeworCQlpZiAocGdfcmVnZXhfbG9jYWxlLT5jdHlwZS0+bWF4X2NociAhPSAw ICYmCisJCQlwZ19yZWdleF9sb2NhbGUtPmN0eXBlLT5tYXhfY2hyIDw9IE1BWF9TSU1QTEVfQ0hS KQorCQl7CisJCQltYXhfY2hyID0gcGdfcmVnZXhfbG9jYWxlLT5jdHlwZS0+bWF4X2NocjsKIAkJ CXBjYy0+Y3YuY2NsYXNzY29kZSA9IC0xOwotI2Vsc2UKLQkJCW1heF9jaHIgPSAocGdfd2NoYXIp IE1BWF9TSU1QTEVfQ0hSOwotI2VuZGlmCi0JCQlicmVhazsKLQkJY2FzZSBQR19SRUdFWF9TVFJB VEVHWV9JQ1U6CisJCX0KKwkJZWxzZQogCQkJbWF4X2NociA9IChwZ193Y2hhcikgTUFYX1NJTVBM RV9DSFI7Ci0JCQlicmVhazsKLQkJZGVmYXVsdDoKLQkJCUFzc2VydChmYWxzZSk7Ci0JCQltYXhf Y2hyID0gMDsJCS8qIGNhbid0IGdldCBoZXJlLCBidXQga2VlcCBjb21waWxlciBxdWlldCAqLwot CQkJYnJlYWs7CiAJfQogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9s aWtlLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbGlrZS5jCmluZGV4IDdmNGNmNjE0NTg1Li40 MjE2YWMxN2Y0MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2xpa2UuYworKysg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvbGlrZS5jCkBAIC05OCw3ICs5OCw3IEBAIFNCX2xvd2Vy X2NoYXIodW5zaWduZWQgY2hhciBjLCBwZ19sb2NhbGVfdCBsb2NhbGUpCiAJZWxzZSBpZiAobG9j YWxlLT5pc19kZWZhdWx0KQogCQlyZXR1cm4gcGdfdG9sb3dlcihjKTsKIAllbHNlCi0JCXJldHVy biB0b2xvd2VyX2woYywgbG9jYWxlLT5pbmZvLmx0KTsKKwkJcmV0dXJuIGNoYXJfdG9sb3dlcihj LCBsb2NhbGUpOwogfQogCiAKQEAgLTIwOSw3ICsyMDksMTcgQEAgR2VuZXJpY19UZXh0X0lDX2xp a2UodGV4dCAqc3RyLCB0ZXh0ICpwYXQsIE9pZCBjb2xsYXRpb24pCiAJICogd2F5LgogCSAqLwog Ci0JaWYgKHBnX2RhdGFiYXNlX2VuY29kaW5nX21heF9sZW5ndGgoKSA+IDEgfHwgKGxvY2FsZS0+ cHJvdmlkZXIgPT0gQ09MTFBST1ZJREVSX0lDVSkpCisJaWYgKGxvY2FsZS0+Y3R5cGVfaXNfYyB8 fAorCQkoY2hhcl90b2xvd2VyX2VuYWJsZWQobG9jYWxlKSAmJgorCQkgcGdfZGF0YWJhc2VfZW5j b2RpbmdfbWF4X2xlbmd0aCgpID09IDEpKQorCXsKKwkJcCA9IFZBUkRBVEFfQU5ZKHBhdCk7CisJ CXBsZW4gPSBWQVJTSVpFX0FOWV9FWEhEUihwYXQpOworCQlzID0gVkFSREFUQV9BTlkoc3RyKTsK KwkJc2xlbiA9IFZBUlNJWkVfQU5ZX0VYSERSKHN0cik7CisJCXJldHVybiBTQl9JTWF0Y2hUZXh0 KHMsIHNsZW4sIHAsIHBsZW4sIGxvY2FsZSk7CisJfQorCWVsc2UKIAl7CiAJCXBhdCA9IERhdHVt R2V0VGV4dFBQKERpcmVjdEZ1bmN0aW9uQ2FsbDFDb2xsKGxvd2VyLCBjb2xsYXRpb24sCiAJCQkJ CQkJCQkJCQkJIFBvaW50ZXJHZXREYXR1bShwYXQpKSk7CkBAIC0yMjQsMTQgKzIzNCw2IEBAIEdl bmVyaWNfVGV4dF9JQ19saWtlKHRleHQgKnN0ciwgdGV4dCAqcGF0LCBPaWQgY29sbGF0aW9uKQog CQllbHNlCiAJCQlyZXR1cm4gTUJfTWF0Y2hUZXh0KHMsIHNsZW4sIHAsIHBsZW4sIDApOwogCX0K LQllbHNlCi0JewotCQlwID0gVkFSREFUQV9BTlkocGF0KTsKLQkJcGxlbiA9IFZBUlNJWkVfQU5Z X0VYSERSKHBhdCk7Ci0JCXMgPSBWQVJEQVRBX0FOWShzdHIpOwotCQlzbGVuID0gVkFSU0laRV9B TllfRVhIRFIoc3RyKTsKLQkJcmV0dXJuIFNCX0lNYXRjaFRleHQocywgc2xlbiwgcCwgcGxlbiwg bG9jYWxlKTsKLQl9CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQv bGlrZV9zdXBwb3J0LmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbGlrZV9zdXBwb3J0LmMKaW5k ZXggOGZkYzY3NzM3MWYuLjk5OWYyM2Y4NmQ1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9hZHQvbGlrZV9zdXBwb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2xpa2Vfc3Vw cG9ydC5jCkBAIC0xNDk1LDEzICsxNDk1LDggQEAgcGF0dGVybl9jaGFyX2lzYWxwaGEoY2hhciBj LCBib29sIGlzX211bHRpYnl0ZSwKIHsKIAlpZiAobG9jYWxlLT5jdHlwZV9pc19jKQogCQlyZXR1 cm4gKGMgPj0gJ0EnICYmIGMgPD0gJ1onKSB8fCAoYyA+PSAnYScgJiYgYyA8PSAneicpOwotCWVs c2UgaWYgKGlzX211bHRpYnl0ZSAmJiBJU19ISUdIQklUX1NFVChjKSkKLQkJcmV0dXJuIHRydWU7 Ci0JZWxzZSBpZiAobG9jYWxlLT5wcm92aWRlciAhPSBDT0xMUFJPVklERVJfTElCQykKLQkJcmV0 dXJuIElTX0hJR0hCSVRfU0VUKGMpIHx8Ci0JCQkoYyA+PSAnQScgJiYgYyA8PSAnWicpIHx8IChj ID49ICdhJyAmJiBjIDw9ICd6Jyk7CiAJZWxzZQotCQlyZXR1cm4gaXNhbHBoYV9sKCh1bnNpZ25l ZCBjaGFyKSBjLCBsb2NhbGUtPmluZm8ubHQpOworCQlyZXR1cm4gY2hhcl9pc19jYXNlZChjLCBs b2NhbGUpOwogfQogCiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2Nh bGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGUuYwppbmRleCA3ZDkyZjU4MGE1 Ny4uZjI2Y2UwZTZjYzcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2Nh bGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlLmMKQEAgLTEwMCwzMSAr MTAwLDYgQEAgZXh0ZXJuIHBnX2xvY2FsZV90IGNyZWF0ZV9wZ19sb2NhbGVfaWN1KE9pZCBjb2xs aWQsIE1lbW9yeUNvbnRleHQgY29udGV4dCk7CiBleHRlcm4gcGdfbG9jYWxlX3QgY3JlYXRlX3Bn X2xvY2FsZV9saWJjKE9pZCBjb2xsaWQsIE1lbW9yeUNvbnRleHQgY29udGV4dCk7CiBleHRlcm4g Y2hhciAqZ2V0X2NvbGxhdGlvbl9hY3R1YWxfdmVyc2lvbl9saWJjKGNvbnN0IGNoYXIgKmNvbGxj b2xsYXRlKTsKIAotZXh0ZXJuIHNpemVfdCBzdHJsb3dlcl9idWlsdGluKGNoYXIgKmRzdCwgc2l6 ZV90IGRzdHNpemUsIGNvbnN0IGNoYXIgKnNyYywKLQkJCQkJCQkgICBzc2l6ZV90IHNyY2xlbiwg cGdfbG9jYWxlX3QgbG9jYWxlKTsKLWV4dGVybiBzaXplX3Qgc3RydGl0bGVfYnVpbHRpbihjaGFy ICpkc3QsIHNpemVfdCBkc3RzaXplLCBjb25zdCBjaGFyICpzcmMsCi0JCQkJCQkJICAgc3NpemVf dCBzcmNsZW4sIHBnX2xvY2FsZV90IGxvY2FsZSk7Ci1leHRlcm4gc2l6ZV90IHN0cnVwcGVyX2J1 aWx0aW4oY2hhciAqZHN0LCBzaXplX3QgZHN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLAotCQkJCQkJ CSAgIHNzaXplX3Qgc3JjbGVuLCBwZ19sb2NhbGVfdCBsb2NhbGUpOwotZXh0ZXJuIHNpemVfdCBz dHJmb2xkX2J1aWx0aW4oY2hhciAqZHN0LCBzaXplX3QgZHN0c2l6ZSwgY29uc3QgY2hhciAqc3Jj LAotCQkJCQkJCSAgc3NpemVfdCBzcmNsZW4sIHBnX2xvY2FsZV90IGxvY2FsZSk7Ci0KLWV4dGVy biBzaXplX3Qgc3RybG93ZXJfaWN1KGNoYXIgKmRzdCwgc2l6ZV90IGRzdHNpemUsIGNvbnN0IGNo YXIgKnNyYywKLQkJCQkJCSAgIHNzaXplX3Qgc3JjbGVuLCBwZ19sb2NhbGVfdCBsb2NhbGUpOwot ZXh0ZXJuIHNpemVfdCBzdHJ0aXRsZV9pY3UoY2hhciAqZHN0LCBzaXplX3QgZHN0c2l6ZSwgY29u c3QgY2hhciAqc3JjLAotCQkJCQkJICAgc3NpemVfdCBzcmNsZW4sIHBnX2xvY2FsZV90IGxvY2Fs ZSk7Ci1leHRlcm4gc2l6ZV90IHN0cnVwcGVyX2ljdShjaGFyICpkc3QsIHNpemVfdCBkc3RzaXpl LCBjb25zdCBjaGFyICpzcmMsCi0JCQkJCQkgICBzc2l6ZV90IHNyY2xlbiwgcGdfbG9jYWxlX3Qg bG9jYWxlKTsKLWV4dGVybiBzaXplX3Qgc3RyZm9sZF9pY3UoY2hhciAqZHN0LCBzaXplX3QgZHN0 c2l6ZSwgY29uc3QgY2hhciAqc3JjLAotCQkJCQkJICBzc2l6ZV90IHNyY2xlbiwgcGdfbG9jYWxl X3QgbG9jYWxlKTsKLQotZXh0ZXJuIHNpemVfdCBzdHJsb3dlcl9saWJjKGNoYXIgKmRzdCwgc2l6 ZV90IGRzdHNpemUsIGNvbnN0IGNoYXIgKnNyYywKLQkJCQkJCQlzc2l6ZV90IHNyY2xlbiwgcGdf bG9jYWxlX3QgbG9jYWxlKTsKLWV4dGVybiBzaXplX3Qgc3RydGl0bGVfbGliYyhjaGFyICpkc3Qs IHNpemVfdCBkc3RzaXplLCBjb25zdCBjaGFyICpzcmMsCi0JCQkJCQkJc3NpemVfdCBzcmNsZW4s IHBnX2xvY2FsZV90IGxvY2FsZSk7Ci1leHRlcm4gc2l6ZV90IHN0cnVwcGVyX2xpYmMoY2hhciAq ZHN0LCBzaXplX3QgZHN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLAotCQkJCQkJCXNzaXplX3Qgc3Jj bGVuLCBwZ19sb2NhbGVfdCBsb2NhbGUpOwotCiAvKiBHVUMgc2V0dGluZ3MgKi8KIGNoYXIJICAg KmxvY2FsZV9tZXNzYWdlczsKIGNoYXIJICAgKmxvY2FsZV9tb25ldGFyeTsKQEAgLTEyMzYsNiAr MTIxMSw5IEBAIGNyZWF0ZV9wZ19sb2NhbGUoT2lkIGNvbGxpZCwgTWVtb3J5Q29udGV4dCBjb250 ZXh0KQogCUFzc2VydCgocmVzdWx0LT5jb2xsYXRlX2lzX2MgJiYgcmVzdWx0LT5jb2xsYXRlID09 IE5VTEwpIHx8CiAJCSAgICghcmVzdWx0LT5jb2xsYXRlX2lzX2MgJiYgcmVzdWx0LT5jb2xsYXRl ICE9IE5VTEwpKTsKIAorCUFzc2VydCgocmVzdWx0LT5jdHlwZV9pc19jICYmIHJlc3VsdC0+Y3R5 cGUgPT0gTlVMTCkgfHwKKwkJICAgKCFyZXN1bHQtPmN0eXBlX2lzX2MgJiYgcmVzdWx0LT5jdHlw ZSAhPSBOVUxMKSk7CisKIAlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihDT0xMT0lELCB0cCwgQW51 bV9wZ19jb2xsYXRpb25fY29sbHZlcnNpb24sCiAJCQkJCQkJJmlzbnVsbCk7CiAJaWYgKCFpc251 bGwpCkBAIC0xMzk4LDc3ICsxMzc2LDMxIEBAIHNpemVfdAogcGdfc3RybG93ZXIoY2hhciAqZHN0 LCBzaXplX3QgZHN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLCBzc2l6ZV90IHNyY2xlbiwKIAkJCXBn X2xvY2FsZV90IGxvY2FsZSkKIHsKLQlpZiAobG9jYWxlLT5wcm92aWRlciA9PSBDT0xMUFJPVklE RVJfQlVJTFRJTikKLQkJcmV0dXJuIHN0cmxvd2VyX2J1aWx0aW4oZHN0LCBkc3RzaXplLCBzcmMs IHNyY2xlbiwgbG9jYWxlKTsKLSNpZmRlZiBVU0VfSUNVCi0JZWxzZSBpZiAobG9jYWxlLT5wcm92 aWRlciA9PSBDT0xMUFJPVklERVJfSUNVKQotCQlyZXR1cm4gc3RybG93ZXJfaWN1KGRzdCwgZHN0 c2l6ZSwgc3JjLCBzcmNsZW4sIGxvY2FsZSk7Ci0jZW5kaWYKLQllbHNlIGlmIChsb2NhbGUtPnBy b3ZpZGVyID09IENPTExQUk9WSURFUl9MSUJDKQotCQlyZXR1cm4gc3RybG93ZXJfbGliYyhkc3Qs IGRzdHNpemUsIHNyYywgc3JjbGVuLCBsb2NhbGUpOwotCWVsc2UKLQkJLyogc2hvdWxkbid0IGhh cHBlbiAqLwotCQlQR0xPQ0FMRV9TVVBQT1JUX0VSUk9SKGxvY2FsZS0+cHJvdmlkZXIpOwotCi0J cmV0dXJuIDA7CQkJCQkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCisJcmV0dXJuIGxvY2FsZS0+ Y3R5cGUtPnN0cmxvd2VyKGRzdCwgZHN0c2l6ZSwgc3JjLCBzcmNsZW4sIGxvY2FsZSk7CiB9CiAK IHNpemVfdAogcGdfc3RydGl0bGUoY2hhciAqZHN0LCBzaXplX3QgZHN0c2l6ZSwgY29uc3QgY2hh ciAqc3JjLCBzc2l6ZV90IHNyY2xlbiwKIAkJCXBnX2xvY2FsZV90IGxvY2FsZSkKIHsKLQlpZiAo bG9jYWxlLT5wcm92aWRlciA9PSBDT0xMUFJPVklERVJfQlVJTFRJTikKLQkJcmV0dXJuIHN0cnRp dGxlX2J1aWx0aW4oZHN0LCBkc3RzaXplLCBzcmMsIHNyY2xlbiwgbG9jYWxlKTsKLSNpZmRlZiBV U0VfSUNVCi0JZWxzZSBpZiAobG9jYWxlLT5wcm92aWRlciA9PSBDT0xMUFJPVklERVJfSUNVKQot CQlyZXR1cm4gc3RydGl0bGVfaWN1KGRzdCwgZHN0c2l6ZSwgc3JjLCBzcmNsZW4sIGxvY2FsZSk7 Ci0jZW5kaWYKLQllbHNlIGlmIChsb2NhbGUtPnByb3ZpZGVyID09IENPTExQUk9WSURFUl9MSUJD KQotCQlyZXR1cm4gc3RydGl0bGVfbGliYyhkc3QsIGRzdHNpemUsIHNyYywgc3JjbGVuLCBsb2Nh bGUpOwotCWVsc2UKLQkJLyogc2hvdWxkbid0IGhhcHBlbiAqLwotCQlQR0xPQ0FMRV9TVVBQT1JU X0VSUk9SKGxvY2FsZS0+cHJvdmlkZXIpOwotCi0JcmV0dXJuIDA7CQkJCQkvKiBrZWVwIGNvbXBp bGVyIHF1aWV0ICovCisJcmV0dXJuIGxvY2FsZS0+Y3R5cGUtPnN0cnRpdGxlKGRzdCwgZHN0c2l6 ZSwgc3JjLCBzcmNsZW4sIGxvY2FsZSk7CiB9CiAKIHNpemVfdAogcGdfc3RydXBwZXIoY2hhciAq ZHN0LCBzaXplX3QgZHN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLCBzc2l6ZV90IHNyY2xlbiwKIAkJ CXBnX2xvY2FsZV90IGxvY2FsZSkKIHsKLQlpZiAobG9jYWxlLT5wcm92aWRlciA9PSBDT0xMUFJP VklERVJfQlVJTFRJTikKLQkJcmV0dXJuIHN0cnVwcGVyX2J1aWx0aW4oZHN0LCBkc3RzaXplLCBz cmMsIHNyY2xlbiwgbG9jYWxlKTsKLSNpZmRlZiBVU0VfSUNVCi0JZWxzZSBpZiAobG9jYWxlLT5w cm92aWRlciA9PSBDT0xMUFJPVklERVJfSUNVKQotCQlyZXR1cm4gc3RydXBwZXJfaWN1KGRzdCwg ZHN0c2l6ZSwgc3JjLCBzcmNsZW4sIGxvY2FsZSk7Ci0jZW5kaWYKLQllbHNlIGlmIChsb2NhbGUt PnByb3ZpZGVyID09IENPTExQUk9WSURFUl9MSUJDKQotCQlyZXR1cm4gc3RydXBwZXJfbGliYyhk c3QsIGRzdHNpemUsIHNyYywgc3JjbGVuLCBsb2NhbGUpOwotCWVsc2UKLQkJLyogc2hvdWxkbid0 IGhhcHBlbiAqLwotCQlQR0xPQ0FMRV9TVVBQT1JUX0VSUk9SKGxvY2FsZS0+cHJvdmlkZXIpOwot Ci0JcmV0dXJuIDA7CQkJCQkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCisJcmV0dXJuIGxvY2Fs ZS0+Y3R5cGUtPnN0cnVwcGVyKGRzdCwgZHN0c2l6ZSwgc3JjLCBzcmNsZW4sIGxvY2FsZSk7CiB9 CiAKIHNpemVfdAogcGdfc3RyZm9sZChjaGFyICpkc3QsIHNpemVfdCBkc3RzaXplLCBjb25zdCBj aGFyICpzcmMsIHNzaXplX3Qgc3JjbGVuLAogCQkgICBwZ19sb2NhbGVfdCBsb2NhbGUpCiB7Ci0J aWYgKGxvY2FsZS0+cHJvdmlkZXIgPT0gQ09MTFBST1ZJREVSX0JVSUxUSU4pCi0JCXJldHVybiBz dHJmb2xkX2J1aWx0aW4oZHN0LCBkc3RzaXplLCBzcmMsIHNyY2xlbiwgbG9jYWxlKTsKLSNpZmRl ZiBVU0VfSUNVCi0JZWxzZSBpZiAobG9jYWxlLT5wcm92aWRlciA9PSBDT0xMUFJPVklERVJfSUNV KQotCQlyZXR1cm4gc3RyZm9sZF9pY3UoZHN0LCBkc3RzaXplLCBzcmMsIHNyY2xlbiwgbG9jYWxl KTsKLSNlbmRpZgotCS8qIGZvciBsaWJjLCBqdXN0IHVzZSBzdHJsb3dlciAqLwotCWVsc2UgaWYg KGxvY2FsZS0+cHJvdmlkZXIgPT0gQ09MTFBST1ZJREVSX0xJQkMpCi0JCXJldHVybiBzdHJsb3dl cl9saWJjKGRzdCwgZHN0c2l6ZSwgc3JjLCBzcmNsZW4sIGxvY2FsZSk7CisJaWYgKGxvY2FsZS0+ Y3R5cGUtPnN0cmZvbGQpCisJCXJldHVybiBsb2NhbGUtPmN0eXBlLT5zdHJmb2xkKGRzdCwgZHN0 c2l6ZSwgc3JjLCBzcmNsZW4sIGxvY2FsZSk7CiAJZWxzZQotCQkvKiBzaG91bGRuJ3QgaGFwcGVu ICovCi0JCVBHTE9DQUxFX1NVUFBPUlRfRVJST1IobG9jYWxlLT5wcm92aWRlcik7Ci0KLQlyZXR1 cm4gMDsJCQkJCS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KKwkJcmV0dXJuIGxvY2FsZS0+Y3R5 cGUtPnN0cmxvd2VyKGRzdCwgZHN0c2l6ZSwgc3JjLCBzcmNsZW4sIGxvY2FsZSk7CiB9CiAKIC8q CkBAIC0xNjA1LDYgKzE1MzcsNDEgQEAgcGdfc3Rybnhmcm1fcHJlZml4KGNoYXIgKmRlc3QsIHNp emVfdCBkZXN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLAogCXJldHVybiBsb2NhbGUtPmNvbGxhdGUt PnN0cm54ZnJtX3ByZWZpeChkZXN0LCBkZXN0c2l6ZSwgc3JjLCBzcmNsZW4sIGxvY2FsZSk7CiB9 CiAKKy8qCisgKiBjaGFyX2lzX2Nhc2VkKCkKKyAqCisgKiBGdXp6eSB0ZXN0IG9mIHdoZXRoZXIg dGhlIGdpdmVuIGNoYXIgaXMgY2FzZS12YXJ5aW5nIG9yIG5vdC4gVGhlIGFyZ3VtZW50CisgKiBp cyBhIHNpbmdsZSBieXRlLCBzbyBpbiBhIG11bHRpYnl0ZSBlbmNvZGluZywganVzdCBhc3N1bWUg YW55IG5vbi1BU0NJSQorICogY2hhciBpcyBjYXNlLXZhcnlpbmcuCisgKi8KK2Jvb2wKK2NoYXJf aXNfY2FzZWQoY2hhciBjaCwgcGdfbG9jYWxlX3QgbG9jYWxlKQoreworCXJldHVybiBsb2NhbGUt PmN0eXBlLT5jaGFyX2lzX2Nhc2VkKGNoLCBsb2NhbGUpOworfQorCisvKgorICogY2hhcl90b2xv d2VyX2VuYWJsZWQoKQorICoKKyAqIERvZXMgdGhlIHByb3ZpZGVyIHN1cHBvcnQgY2hhcl90b2xv d2VyKCk/CisgKi8KK2Jvb2wKK2NoYXJfdG9sb3dlcl9lbmFibGVkKHBnX2xvY2FsZV90IGxvY2Fs ZSkKK3sKKwlyZXR1cm4gKGxvY2FsZS0+Y3R5cGUtPmNoYXJfdG9sb3dlciAhPSBOVUxMKTsKK30K KworLyoKKyAqIGNoYXJfdG9sb3dlcigpCisgKgorICogQ29udmVydCBjaGFyIChzaW5nbGUtYnl0 ZSBlbmNvZGluZykgdG8gbG93ZXJjYXNlLgorICovCitjaGFyCitjaGFyX3RvbG93ZXIodW5zaWdu ZWQgY2hhciBjaCwgcGdfbG9jYWxlX3QgbG9jYWxlKQoreworCXJldHVybiBsb2NhbGUtPmN0eXBl LT5jaGFyX3RvbG93ZXIoY2gsIGxvY2FsZSk7Cit9CisKIC8qCiAgKiBSZXR1cm4gcmVxdWlyZWQg ZW5jb2RpbmcgSUQgZm9yIHRoZSBnaXZlbiBsb2NhbGUsIG9yIC0xIGlmIGFueSBlbmNvZGluZyBp cwogICogdmFsaWQgZm9yIHRoZSBsb2NhbGUuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy9hZHQvcGdfbG9jYWxlX2J1aWx0aW4uYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2Nh bGVfYnVpbHRpbi5jCmluZGV4IDMzYWQyMGJiZjA3Li4yMzUwNGJlMzgzYSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZV9idWlsdGluLmMKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3BnX2xvY2FsZV9idWlsdGluLmMKQEAgLTI1LDE1ICsyNSw2IEBACiBleHRl cm4gcGdfbG9jYWxlX3QgY3JlYXRlX3BnX2xvY2FsZV9idWlsdGluKE9pZCBjb2xsaWQsCiAJCQkJ CQkJCQkJCU1lbW9yeUNvbnRleHQgY29udGV4dCk7CiBleHRlcm4gY2hhciAqZ2V0X2NvbGxhdGlv bl9hY3R1YWxfdmVyc2lvbl9idWlsdGluKGNvbnN0IGNoYXIgKmNvbGxjb2xsYXRlKTsKLWV4dGVy biBzaXplX3Qgc3RybG93ZXJfYnVpbHRpbihjaGFyICpkc3QsIHNpemVfdCBkc3RzaXplLCBjb25z dCBjaGFyICpzcmMsCi0JCQkJCQkJICAgc3NpemVfdCBzcmNsZW4sIHBnX2xvY2FsZV90IGxvY2Fs ZSk7Ci1leHRlcm4gc2l6ZV90IHN0cnRpdGxlX2J1aWx0aW4oY2hhciAqZHN0LCBzaXplX3QgZHN0 c2l6ZSwgY29uc3QgY2hhciAqc3JjLAotCQkJCQkJCSAgIHNzaXplX3Qgc3JjbGVuLCBwZ19sb2Nh bGVfdCBsb2NhbGUpOwotZXh0ZXJuIHNpemVfdCBzdHJ1cHBlcl9idWlsdGluKGNoYXIgKmRzdCwg c2l6ZV90IGRzdHNpemUsIGNvbnN0IGNoYXIgKnNyYywKLQkJCQkJCQkgICBzc2l6ZV90IHNyY2xl biwgcGdfbG9jYWxlX3QgbG9jYWxlKTsKLWV4dGVybiBzaXplX3Qgc3RyZm9sZF9idWlsdGluKGNo YXIgKmRzdCwgc2l6ZV90IGRzdHNpemUsIGNvbnN0IGNoYXIgKnNyYywKLQkJCQkJCQkgIHNzaXpl X3Qgc3JjbGVuLCBwZ19sb2NhbGVfdCBsb2NhbGUpOwotCiAKIHN0cnVjdCBXb3JkQm91bmRhcnlT dGF0ZQogewpAQCAtNzYsNyArNjcsNyBAQCBpbml0Y2FwX3dibmV4dCh2b2lkICpzdGF0ZSkKIAly ZXR1cm4gd2JzdGF0ZS0+bGVuOwogfQogCi1zaXplX3QKK3N0YXRpYyBzaXplX3QKIHN0cmxvd2Vy X2J1aWx0aW4oY2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLCBjb25zdCBjaGFyICpzcmMsIHNz aXplX3Qgc3JjbGVuLAogCQkJCSBwZ19sb2NhbGVfdCBsb2NhbGUpCiB7CkBAIC04NCw3ICs3NSw3 IEBAIHN0cmxvd2VyX2J1aWx0aW4oY2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLCBjb25zdCBj aGFyICpzcmMsIHNzaXplX3Qgc3JjbGVuLAogCQkJCQkJCWxvY2FsZS0+aW5mby5idWlsdGluLmNh c2VtYXBfZnVsbCk7CiB9CiAKLXNpemVfdAorc3RhdGljIHNpemVfdAogc3RydGl0bGVfYnVpbHRp bihjaGFyICpkZXN0LCBzaXplX3QgZGVzdHNpemUsIGNvbnN0IGNoYXIgKnNyYywgc3NpemVfdCBz cmNsZW4sCiAJCQkJIHBnX2xvY2FsZV90IGxvY2FsZSkKIHsKQEAgLTEwMSw3ICs5Miw3IEBAIHN0 cnRpdGxlX2J1aWx0aW4oY2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLCBjb25zdCBjaGFyICpz cmMsIHNzaXplX3Qgc3JjbGVuLAogCQkJCQkJCWluaXRjYXBfd2JuZXh0LCAmd2JzdGF0ZSk7CiB9 CiAKLXNpemVfdAorc3RhdGljIHNpemVfdAogc3RydXBwZXJfYnVpbHRpbihjaGFyICpkZXN0LCBz aXplX3QgZGVzdHNpemUsIGNvbnN0IGNoYXIgKnNyYywgc3NpemVfdCBzcmNsZW4sCiAJCQkJIHBn X2xvY2FsZV90IGxvY2FsZSkKIHsKQEAgLTEwOSw3ICsxMDAsNyBAQCBzdHJ1cHBlcl9idWlsdGlu KGNoYXIgKmRlc3QsIHNpemVfdCBkZXN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLCBzc2l6ZV90IHNy Y2xlbiwKIAkJCQkJCQlsb2NhbGUtPmluZm8uYnVpbHRpbi5jYXNlbWFwX2Z1bGwpOwogfQogCi1z aXplX3QKK3N0YXRpYyBzaXplX3QKIHN0cmZvbGRfYnVpbHRpbihjaGFyICpkZXN0LCBzaXplX3Qg ZGVzdHNpemUsIGNvbnN0IGNoYXIgKnNyYywgc3NpemVfdCBzcmNsZW4sCiAJCQkJcGdfbG9jYWxl X3QgbG9jYWxlKQogewpAQCAtMTE3LDYgKzEwOCw5OCBAQCBzdHJmb2xkX2J1aWx0aW4oY2hhciAq ZGVzdCwgc2l6ZV90IGRlc3RzaXplLCBjb25zdCBjaGFyICpzcmMsIHNzaXplX3Qgc3JjbGVuLAog CQkJCQkJICAgbG9jYWxlLT5pbmZvLmJ1aWx0aW4uY2FzZW1hcF9mdWxsKTsKIH0KIAorc3RhdGlj IGJvb2wKK3djX2lzZGlnaXRfYnVpbHRpbihwZ193Y2hhciB3YywgcGdfbG9jYWxlX3QgbG9jYWxl KQoreworCXJldHVybiBwZ191X2lzZGlnaXQod2MsICFsb2NhbGUtPmluZm8uYnVpbHRpbi5jYXNl bWFwX2Z1bGwpOworfQorCitzdGF0aWMgYm9vbAord2NfaXNhbHBoYV9idWlsdGluKHBnX3djaGFy IHdjLCBwZ19sb2NhbGVfdCBsb2NhbGUpCit7CisJcmV0dXJuIHBnX3VfaXNhbHBoYSh3Yyk7Cit9 CisKK3N0YXRpYyBib29sCit3Y19pc2FsbnVtX2J1aWx0aW4ocGdfd2NoYXIgd2MsIHBnX2xvY2Fs ZV90IGxvY2FsZSkKK3sKKwlyZXR1cm4gcGdfdV9pc2FsbnVtKHdjLCAhbG9jYWxlLT5pbmZvLmJ1 aWx0aW4uY2FzZW1hcF9mdWxsKTsKK30KKworc3RhdGljIGJvb2wKK3djX2lzdXBwZXJfYnVpbHRp bihwZ193Y2hhciB3YywgcGdfbG9jYWxlX3QgbG9jYWxlKQoreworCXJldHVybiBwZ191X2lzdXBw ZXIod2MpOworfQorCitzdGF0aWMgYm9vbAord2NfaXNsb3dlcl9idWlsdGluKHBnX3djaGFyIHdj LCBwZ19sb2NhbGVfdCBsb2NhbGUpCit7CisJcmV0dXJuIHBnX3VfaXNsb3dlcih3Yyk7Cit9CisK K3N0YXRpYyBib29sCit3Y19pc2dyYXBoX2J1aWx0aW4ocGdfd2NoYXIgd2MsIHBnX2xvY2FsZV90 IGxvY2FsZSkKK3sKKwlyZXR1cm4gcGdfdV9pc2dyYXBoKHdjKTsKK30KKworc3RhdGljIGJvb2wK K3djX2lzcHJpbnRfYnVpbHRpbihwZ193Y2hhciB3YywgcGdfbG9jYWxlX3QgbG9jYWxlKQorewor CXJldHVybiBwZ191X2lzcHJpbnQod2MpOworfQorCitzdGF0aWMgYm9vbAord2NfaXNwdW5jdF9i dWlsdGluKHBnX3djaGFyIHdjLCBwZ19sb2NhbGVfdCBsb2NhbGUpCit7CisJcmV0dXJuIHBnX3Vf aXNwdW5jdCh3YywgIWxvY2FsZS0+aW5mby5idWlsdGluLmNhc2VtYXBfZnVsbCk7Cit9CisKK3N0 YXRpYyBib29sCit3Y19pc3NwYWNlX2J1aWx0aW4ocGdfd2NoYXIgd2MsIHBnX2xvY2FsZV90IGxv Y2FsZSkKK3sKKwlyZXR1cm4gcGdfdV9pc3NwYWNlKHdjKTsKK30KKworc3RhdGljIGJvb2wKK2No YXJfaXNfY2FzZWRfYnVpbHRpbihjaGFyIGNoLCBwZ19sb2NhbGVfdCBsb2NhbGUpCit7CisJcmV0 dXJuIElTX0hJR0hCSVRfU0VUKGNoKSB8fAorCQkoY2ggPj0gJ0EnICYmIGNoIDw9ICdaJykgfHwg KGNoID49ICdhJyAmJiBjaCA8PSAneicpOworfQorCitzdGF0aWMgcGdfd2NoYXIKK3djX3RvdXBw ZXJfYnVpbHRpbihwZ193Y2hhciB3YywgcGdfbG9jYWxlX3QgbG9jYWxlKQoreworCXJldHVybiB1 bmljb2RlX3VwcGVyY2FzZV9zaW1wbGUod2MpOworfQorCitzdGF0aWMgcGdfd2NoYXIKK3djX3Rv bG93ZXJfYnVpbHRpbihwZ193Y2hhciB3YywgcGdfbG9jYWxlX3QgbG9jYWxlKQoreworCXJldHVy biB1bmljb2RlX2xvd2VyY2FzZV9zaW1wbGUod2MpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0 IGN0eXBlX21ldGhvZHMgY3R5cGVfbWV0aG9kc19idWlsdGluID0geworCS5zdHJsb3dlciA9IHN0 cmxvd2VyX2J1aWx0aW4sCisJLnN0cnRpdGxlID0gc3RydGl0bGVfYnVpbHRpbiwKKwkuc3RydXBw ZXIgPSBzdHJ1cHBlcl9idWlsdGluLAorCS5zdHJmb2xkID0gc3RyZm9sZF9idWlsdGluLAorCS53 Y19pc2RpZ2l0ID0gd2NfaXNkaWdpdF9idWlsdGluLAorCS53Y19pc2FscGhhID0gd2NfaXNhbHBo YV9idWlsdGluLAorCS53Y19pc2FsbnVtID0gd2NfaXNhbG51bV9idWlsdGluLAorCS53Y19pc3Vw cGVyID0gd2NfaXN1cHBlcl9idWlsdGluLAorCS53Y19pc2xvd2VyID0gd2NfaXNsb3dlcl9idWls dGluLAorCS53Y19pc2dyYXBoID0gd2NfaXNncmFwaF9idWlsdGluLAorCS53Y19pc3ByaW50ID0g d2NfaXNwcmludF9idWlsdGluLAorCS53Y19pc3B1bmN0ID0gd2NfaXNwdW5jdF9idWlsdGluLAor CS53Y19pc3NwYWNlID0gd2NfaXNzcGFjZV9idWlsdGluLAorCS5jaGFyX2lzX2Nhc2VkID0gY2hh cl9pc19jYXNlZF9idWlsdGluLAorCS53Y190b2xvd2VyID0gd2NfdG9sb3dlcl9idWlsdGluLAor CS53Y190b3VwcGVyID0gd2NfdG91cHBlcl9idWlsdGluLAorfTsKKwogcGdfbG9jYWxlX3QKIGNy ZWF0ZV9wZ19sb2NhbGVfYnVpbHRpbihPaWQgY29sbGlkLCBNZW1vcnlDb250ZXh0IGNvbnRleHQp CiB7CkBAIC0xNjAsNiArMjQzLDggQEAgY3JlYXRlX3BnX2xvY2FsZV9idWlsdGluKE9pZCBjb2xs aWQsIE1lbW9yeUNvbnRleHQgY29udGV4dCkKIAlyZXN1bHQtPmRldGVybWluaXN0aWMgPSB0cnVl OwogCXJlc3VsdC0+Y29sbGF0ZV9pc19jID0gdHJ1ZTsKIAlyZXN1bHQtPmN0eXBlX2lzX2MgPSAo c3RyY21wKGxvY3N0ciwgIkMiKSA9PSAwKTsKKwlpZiAoIXJlc3VsdC0+Y3R5cGVfaXNfYykKKwkJ cmVzdWx0LT5jdHlwZSA9ICZjdHlwZV9tZXRob2RzX2J1aWx0aW47CiAKIAlyZXR1cm4gcmVzdWx0 OwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZV9pY3UuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGVfaWN1LmMKaW5kZXggYjBjNzNmMmU0M2Qu LjFjYjI0ZmFkZWEyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxl X2ljdS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGVfaWN1LmMKQEAgLTQ4 LDE5ICs0OCwxOSBAQAogI2RlZmluZQkJVEVYVEJVRkxFTgkJCTEwMjQKIAogZXh0ZXJuIHBnX2xv Y2FsZV90IGNyZWF0ZV9wZ19sb2NhbGVfaWN1KE9pZCBjb2xsaWQsIE1lbW9yeUNvbnRleHQgY29u dGV4dCk7Ci1leHRlcm4gc2l6ZV90IHN0cmxvd2VyX2ljdShjaGFyICpkc3QsIHNpemVfdCBkc3Rz aXplLCBjb25zdCBjaGFyICpzcmMsCi0JCQkJCQkgICBzc2l6ZV90IHNyY2xlbiwgcGdfbG9jYWxl X3QgbG9jYWxlKTsKLWV4dGVybiBzaXplX3Qgc3RydGl0bGVfaWN1KGNoYXIgKmRzdCwgc2l6ZV90 IGRzdHNpemUsIGNvbnN0IGNoYXIgKnNyYywKLQkJCQkJCSAgIHNzaXplX3Qgc3JjbGVuLCBwZ19s b2NhbGVfdCBsb2NhbGUpOwotZXh0ZXJuIHNpemVfdCBzdHJ1cHBlcl9pY3UoY2hhciAqZHN0LCBz aXplX3QgZHN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLAotCQkJCQkJICAgc3NpemVfdCBzcmNsZW4s IHBnX2xvY2FsZV90IGxvY2FsZSk7Ci1leHRlcm4gc2l6ZV90IHN0cmZvbGRfaWN1KGNoYXIgKmRz dCwgc2l6ZV90IGRzdHNpemUsIGNvbnN0IGNoYXIgKnNyYywKLQkJCQkJCSAgc3NpemVfdCBzcmNs ZW4sIHBnX2xvY2FsZV90IGxvY2FsZSk7CiAKICNpZmRlZiBVU0VfSUNVCiAKIGV4dGVybiBVQ29s bGF0b3IgKnBnX3Vjb2xfb3Blbihjb25zdCBjaGFyICpsb2Nfc3RyKTsKIAorc3RhdGljIHNpemVf dCBzdHJsb3dlcl9pY3UoY2hhciAqZHN0LCBzaXplX3QgZHN0c2l6ZSwgY29uc3QgY2hhciAqc3Jj LAorCQkJCQkJICAgc3NpemVfdCBzcmNsZW4sIHBnX2xvY2FsZV90IGxvY2FsZSk7CitzdGF0aWMg c2l6ZV90IHN0cnRpdGxlX2ljdShjaGFyICpkc3QsIHNpemVfdCBkc3RzaXplLCBjb25zdCBjaGFy ICpzcmMsCisJCQkJCQkgICBzc2l6ZV90IHNyY2xlbiwgcGdfbG9jYWxlX3QgbG9jYWxlKTsKK3N0 YXRpYyBzaXplX3Qgc3RydXBwZXJfaWN1KGNoYXIgKmRzdCwgc2l6ZV90IGRzdHNpemUsIGNvbnN0 IGNoYXIgKnNyYywKKwkJCQkJCSAgIHNzaXplX3Qgc3JjbGVuLCBwZ19sb2NhbGVfdCBsb2NhbGUp Oworc3RhdGljIHNpemVfdCBzdHJmb2xkX2ljdShjaGFyICpkc3QsIHNpemVfdCBkc3RzaXplLCBj b25zdCBjaGFyICpzcmMsCisJCQkJCQkgICBzc2l6ZV90IHNyY2xlbiwgcGdfbG9jYWxlX3QgbG9j YWxlKTsKIHN0YXRpYyBpbnQJc3RybmNvbGxfaWN1KGNvbnN0IGNoYXIgKmFyZzEsIHNzaXplX3Qg bGVuMSwKIAkJCQkJCSBjb25zdCBjaGFyICphcmcyLCBzc2l6ZV90IGxlbjIsCiAJCQkJCQkgcGdf bG9jYWxlX3QgbG9jYWxlKTsKQEAgLTEyNCw2ICsxMjQsMjUgQEAgc3RhdGljIGludDMyX3QgdV9z dHJGb2xkQ2FzZV9kZWZhdWx0KFVDaGFyICpkZXN0LCBpbnQzMl90IGRlc3RDYXBhY2l0eSwKIAkJ CQkJCQkJCSBjb25zdCBjaGFyICpsb2NhbGUsCiAJCQkJCQkJCQkgVUVycm9yQ29kZSAqcEVycm9y Q29kZSk7CiAKK3N0YXRpYyBib29sCitjaGFyX2lzX2Nhc2VkX2ljdShjaGFyIGNoLCBwZ19sb2Nh bGVfdCBsb2NhbGUpCit7CisJcmV0dXJuIElTX0hJR0hCSVRfU0VUKGNoKSB8fAorCQkoY2ggPj0g J0EnICYmIGNoIDw9ICdaJykgfHwgKGNoID49ICdhJyAmJiBjaCA8PSAneicpOworfQorCitzdGF0 aWMgcGdfd2NoYXIKK3RvdXBwZXJfaWN1KHBnX3djaGFyIHdjLCBwZ19sb2NhbGVfdCBsb2NhbGUp Cit7CisJcmV0dXJuIHVfdG91cHBlcih3Yyk7Cit9CisKK3N0YXRpYyBwZ193Y2hhcgordG9sb3dl cl9pY3UocGdfd2NoYXIgd2MsIHBnX2xvY2FsZV90IGxvY2FsZSkKK3sKKwlyZXR1cm4gdV90b2xv d2VyKHdjKTsKK30KKwogc3RhdGljIGNvbnN0IHN0cnVjdCBjb2xsYXRlX21ldGhvZHMgY29sbGF0 ZV9tZXRob2RzX2ljdSA9IHsKIAkuc3RybmNvbGwgPSBzdHJuY29sbF9pY3UsCiAJLnN0cm54ZnJt ID0gc3Rybnhmcm1faWN1LApAQCAtMTQyLDYgKzE2MSw3OCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0 IGNvbGxhdGVfbWV0aG9kcyBjb2xsYXRlX21ldGhvZHNfaWN1X3V0ZjggPSB7CiAJLnN0cnhmcm1f aXNfc2FmZSA9IHRydWUsCiB9OwogCitzdGF0aWMgYm9vbAord2NfaXNkaWdpdF9pY3UocGdfd2No YXIgd2MsIHBnX2xvY2FsZV90IGxvY2FsZSkKK3sKKwlyZXR1cm4gdV9pc2RpZ2l0KHdjKTsKK30K Kworc3RhdGljIGJvb2wKK3djX2lzYWxwaGFfaWN1KHBnX3djaGFyIHdjLCBwZ19sb2NhbGVfdCBs b2NhbGUpCit7CisJcmV0dXJuIHVfaXNhbHBoYSh3Yyk7Cit9CisKK3N0YXRpYyBib29sCit3Y19p c2FsbnVtX2ljdShwZ193Y2hhciB3YywgcGdfbG9jYWxlX3QgbG9jYWxlKQoreworCXJldHVybiB1 X2lzYWxudW0od2MpOworfQorCitzdGF0aWMgYm9vbAord2NfaXN1cHBlcl9pY3UocGdfd2NoYXIg d2MsIHBnX2xvY2FsZV90IGxvY2FsZSkKK3sKKwlyZXR1cm4gdV9pc3VwcGVyKHdjKTsKK30KKwor c3RhdGljIGJvb2wKK3djX2lzbG93ZXJfaWN1KHBnX3djaGFyIHdjLCBwZ19sb2NhbGVfdCBsb2Nh bGUpCit7CisJcmV0dXJuIHVfaXNsb3dlcih3Yyk7Cit9CisKK3N0YXRpYyBib29sCit3Y19pc2dy YXBoX2ljdShwZ193Y2hhciB3YywgcGdfbG9jYWxlX3QgbG9jYWxlKQoreworCXJldHVybiB1X2lz Z3JhcGgod2MpOworfQorCitzdGF0aWMgYm9vbAord2NfaXNwcmludF9pY3UocGdfd2NoYXIgd2Ms IHBnX2xvY2FsZV90IGxvY2FsZSkKK3sKKwlyZXR1cm4gdV9pc3ByaW50KHdjKTsKK30KKworc3Rh dGljIGJvb2wKK3djX2lzcHVuY3RfaWN1KHBnX3djaGFyIHdjLCBwZ19sb2NhbGVfdCBsb2NhbGUp Cit7CisJcmV0dXJuIHVfaXNwdW5jdCh3Yyk7Cit9CisKK3N0YXRpYyBib29sCit3Y19pc3NwYWNl X2ljdShwZ193Y2hhciB3YywgcGdfbG9jYWxlX3QgbG9jYWxlKQoreworCXJldHVybiB1X2lzc3Bh Y2Uod2MpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGN0eXBlX21ldGhvZHMgY3R5cGVfbWV0 aG9kc19pY3UgPSB7CisJLnN0cmxvd2VyID0gc3RybG93ZXJfaWN1LAorCS5zdHJ0aXRsZSA9IHN0 cnRpdGxlX2ljdSwKKwkuc3RydXBwZXIgPSBzdHJ1cHBlcl9pY3UsCisJLnN0cmZvbGQgPSBzdHJm b2xkX2ljdSwKKwkud2NfaXNkaWdpdCA9IHdjX2lzZGlnaXRfaWN1LAorCS53Y19pc2FscGhhID0g d2NfaXNhbHBoYV9pY3UsCisJLndjX2lzYWxudW0gPSB3Y19pc2FsbnVtX2ljdSwKKwkud2NfaXN1 cHBlciA9IHdjX2lzdXBwZXJfaWN1LAorCS53Y19pc2xvd2VyID0gd2NfaXNsb3dlcl9pY3UsCisJ LndjX2lzZ3JhcGggPSB3Y19pc2dyYXBoX2ljdSwKKwkud2NfaXNwcmludCA9IHdjX2lzcHJpbnRf aWN1LAorCS53Y19pc3B1bmN0ID0gd2NfaXNwdW5jdF9pY3UsCisJLndjX2lzc3BhY2UgPSB3Y19p c3NwYWNlX2ljdSwKKwkuY2hhcl9pc19jYXNlZCA9IGNoYXJfaXNfY2FzZWRfaWN1LAorCS53Y190 b3VwcGVyID0gdG91cHBlcl9pY3UsCisJLndjX3RvbG93ZXIgPSB0b2xvd2VyX2ljdSwKK307CiAj ZW5kaWYKIAogcGdfbG9jYWxlX3QKQEAgLTIxMiw2ICszMDMsNyBAQCBjcmVhdGVfcGdfbG9jYWxl X2ljdShPaWQgY29sbGlkLCBNZW1vcnlDb250ZXh0IGNvbnRleHQpCiAJCXJlc3VsdC0+Y29sbGF0 ZSA9ICZjb2xsYXRlX21ldGhvZHNfaWN1X3V0Zjg7CiAJZWxzZQogCQlyZXN1bHQtPmNvbGxhdGUg PSAmY29sbGF0ZV9tZXRob2RzX2ljdTsKKwlyZXN1bHQtPmN0eXBlID0gJmN0eXBlX21ldGhvZHNf aWN1OwogCiAJcmV0dXJuIHJlc3VsdDsKICNlbHNlCkBAIC0zODUsNyArNDc3LDcgQEAgbWFrZV9p Y3VfY29sbGF0b3IoY29uc3QgY2hhciAqaWN1bG9jc3RyLCBjb25zdCBjaGFyICppY3VydWxlcykK IAl9CiB9CiAKLXNpemVfdAorc3RhdGljIHNpemVfdAogc3RybG93ZXJfaWN1KGNoYXIgKmRlc3Qs IHNpemVfdCBkZXN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLCBzc2l6ZV90IHNyY2xlbiwKIAkJCSBw Z19sb2NhbGVfdCBsb2NhbGUpCiB7CkBAIC00MDUsNyArNDk3LDcgQEAgc3RybG93ZXJfaWN1KGNo YXIgKmRlc3QsIHNpemVfdCBkZXN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLCBzc2l6ZV90IHNyY2xl biwKIAlyZXR1cm4gcmVzdWx0X2xlbjsKIH0KIAotc2l6ZV90CitzdGF0aWMgc2l6ZV90CiBzdHJ0 aXRsZV9pY3UoY2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLCBjb25zdCBjaGFyICpzcmMsIHNz aXplX3Qgc3JjbGVuLAogCQkJIHBnX2xvY2FsZV90IGxvY2FsZSkKIHsKQEAgLTQyNSw3ICs1MTcs NyBAQCBzdHJ0aXRsZV9pY3UoY2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLCBjb25zdCBjaGFy ICpzcmMsIHNzaXplX3Qgc3JjbGVuLAogCXJldHVybiByZXN1bHRfbGVuOwogfQogCi1zaXplX3QK K3N0YXRpYyBzaXplX3QKIHN0cnVwcGVyX2ljdShjaGFyICpkZXN0LCBzaXplX3QgZGVzdHNpemUs IGNvbnN0IGNoYXIgKnNyYywgc3NpemVfdCBzcmNsZW4sCiAJCQkgcGdfbG9jYWxlX3QgbG9jYWxl KQogewpAQCAtNDQ1LDcgKzUzNyw3IEBAIHN0cnVwcGVyX2ljdShjaGFyICpkZXN0LCBzaXplX3Qg ZGVzdHNpemUsIGNvbnN0IGNoYXIgKnNyYywgc3NpemVfdCBzcmNsZW4sCiAJcmV0dXJuIHJlc3Vs dF9sZW47CiB9CiAKLXNpemVfdAorc3RhdGljIHNpemVfdAogc3RyZm9sZF9pY3UoY2hhciAqZGVz dCwgc2l6ZV90IGRlc3RzaXplLCBjb25zdCBjaGFyICpzcmMsIHNzaXplX3Qgc3JjbGVuLAogCQkJ cGdfbG9jYWxlX3QgbG9jYWxlKQogewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3BnX2xvY2FsZV9saWJjLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlX2xpYmMu YwppbmRleCA4ZjlhODYzNzg5Ny4uMTE0NGM2ZmYzMDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9wZ19sb2NhbGVfbGliYy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9w Z19sb2NhbGVfbGliYy5jCkBAIC00MywxMyArNDMsNiBAQAogCiBleHRlcm4gcGdfbG9jYWxlX3Qg Y3JlYXRlX3BnX2xvY2FsZV9saWJjKE9pZCBjb2xsaWQsIE1lbW9yeUNvbnRleHQgY29udGV4dCk7 CiAKLWV4dGVybiBzaXplX3Qgc3RybG93ZXJfbGliYyhjaGFyICpkc3QsIHNpemVfdCBkc3RzaXpl LCBjb25zdCBjaGFyICpzcmMsCi0JCQkJCQkJc3NpemVfdCBzcmNsZW4sIHBnX2xvY2FsZV90IGxv Y2FsZSk7Ci1leHRlcm4gc2l6ZV90IHN0cnRpdGxlX2xpYmMoY2hhciAqZHN0LCBzaXplX3QgZHN0 c2l6ZSwgY29uc3QgY2hhciAqc3JjLAotCQkJCQkJCXNzaXplX3Qgc3JjbGVuLCBwZ19sb2NhbGVf dCBsb2NhbGUpOwotZXh0ZXJuIHNpemVfdCBzdHJ1cHBlcl9saWJjKGNoYXIgKmRzdCwgc2l6ZV90 IGRzdHNpemUsIGNvbnN0IGNoYXIgKnNyYywKLQkJCQkJCQlzc2l6ZV90IHNyY2xlbiwgcGdfbG9j YWxlX3QgbG9jYWxlKTsKLQogc3RhdGljIGludAlzdHJuY29sbF9saWJjKGNvbnN0IGNoYXIgKmFy ZzEsIHNzaXplX3QgbGVuMSwKIAkJCQkJCSAgY29uc3QgY2hhciAqYXJnMiwgc3NpemVfdCBsZW4y LAogCQkJCQkJICBwZ19sb2NhbGVfdCBsb2NhbGUpOwpAQCAtODYsNiArNzksMjM5IEBAIHN0YXRp YyBzaXplX3Qgc3RydXBwZXJfbGliY19tYihjaGFyICpkZXN0LCBzaXplX3QgZGVzdHNpemUsCiAJ CQkJCQkJICAgY29uc3QgY2hhciAqc3JjLCBzc2l6ZV90IHNyY2xlbiwKIAkJCQkJCQkgICBwZ19s b2NhbGVfdCBsb2NhbGUpOwogCitzdGF0aWMgYm9vbAord2NfaXNkaWdpdF9saWJjX3NiKHBnX3dj aGFyIHdjLCBwZ19sb2NhbGVfdCBsb2NhbGUpCit7CisJcmV0dXJuIGlzZGlnaXRfbCgodW5zaWdu ZWQgY2hhcikgd2MsIGxvY2FsZS0+aW5mby5sdCk7Cit9CisKK3N0YXRpYyBib29sCit3Y19pc2Fs cGhhX2xpYmNfc2IocGdfd2NoYXIgd2MsIHBnX2xvY2FsZV90IGxvY2FsZSkKK3sKKwlyZXR1cm4g aXNhbHBoYV9sKCh1bnNpZ25lZCBjaGFyKSB3YywgbG9jYWxlLT5pbmZvLmx0KTsKK30KKworc3Rh dGljIGJvb2wKK3djX2lzYWxudW1fbGliY19zYihwZ193Y2hhciB3YywgcGdfbG9jYWxlX3QgbG9j YWxlKQoreworCXJldHVybiBpc2FsbnVtX2woKHVuc2lnbmVkIGNoYXIpIHdjLCBsb2NhbGUtPmlu Zm8ubHQpOworfQorCitzdGF0aWMgYm9vbAord2NfaXN1cHBlcl9saWJjX3NiKHBnX3djaGFyIHdj LCBwZ19sb2NhbGVfdCBsb2NhbGUpCit7CisJcmV0dXJuIGlzdXBwZXJfbCgodW5zaWduZWQgY2hh cikgd2MsIGxvY2FsZS0+aW5mby5sdCk7Cit9CisKK3N0YXRpYyBib29sCit3Y19pc2xvd2VyX2xp YmNfc2IocGdfd2NoYXIgd2MsIHBnX2xvY2FsZV90IGxvY2FsZSkKK3sKKwlyZXR1cm4gaXNsb3dl cl9sKCh1bnNpZ25lZCBjaGFyKSB3YywgbG9jYWxlLT5pbmZvLmx0KTsKK30KKworc3RhdGljIGJv b2wKK3djX2lzZ3JhcGhfbGliY19zYihwZ193Y2hhciB3YywgcGdfbG9jYWxlX3QgbG9jYWxlKQor eworCXJldHVybiBpc2dyYXBoX2woKHVuc2lnbmVkIGNoYXIpIHdjLCBsb2NhbGUtPmluZm8ubHQp OworfQorCitzdGF0aWMgYm9vbAord2NfaXNwcmludF9saWJjX3NiKHBnX3djaGFyIHdjLCBwZ19s b2NhbGVfdCBsb2NhbGUpCit7CisJcmV0dXJuIGlzcHJpbnRfbCgodW5zaWduZWQgY2hhcikgd2Ms IGxvY2FsZS0+aW5mby5sdCk7Cit9CisKK3N0YXRpYyBib29sCit3Y19pc3B1bmN0X2xpYmNfc2Io cGdfd2NoYXIgd2MsIHBnX2xvY2FsZV90IGxvY2FsZSkKK3sKKwlyZXR1cm4gaXNwdW5jdF9sKCh1 bnNpZ25lZCBjaGFyKSB3YywgbG9jYWxlLT5pbmZvLmx0KTsKK30KKworc3RhdGljIGJvb2wKK3dj X2lzc3BhY2VfbGliY19zYihwZ193Y2hhciB3YywgcGdfbG9jYWxlX3QgbG9jYWxlKQoreworCXJl dHVybiBpc3NwYWNlX2woKHVuc2lnbmVkIGNoYXIpIHdjLCBsb2NhbGUtPmluZm8ubHQpOworfQor CitzdGF0aWMgYm9vbAord2NfaXNkaWdpdF9saWJjX21iKHBnX3djaGFyIHdjLCBwZ19sb2NhbGVf dCBsb2NhbGUpCit7CisJcmV0dXJuIGlzd2RpZ2l0X2woKHdpbnRfdCkgd2MsIGxvY2FsZS0+aW5m by5sdCk7Cit9CisKK3N0YXRpYyBib29sCit3Y19pc2FscGhhX2xpYmNfbWIocGdfd2NoYXIgd2Ms IHBnX2xvY2FsZV90IGxvY2FsZSkKK3sKKwlyZXR1cm4gaXN3YWxwaGFfbCgod2ludF90KSB3Yywg bG9jYWxlLT5pbmZvLmx0KTsKK30KKworc3RhdGljIGJvb2wKK3djX2lzYWxudW1fbGliY19tYihw Z193Y2hhciB3YywgcGdfbG9jYWxlX3QgbG9jYWxlKQoreworCXJldHVybiBpc3dhbG51bV9sKCh3 aW50X3QpIHdjLCBsb2NhbGUtPmluZm8ubHQpOworfQorCitzdGF0aWMgYm9vbAord2NfaXN1cHBl cl9saWJjX21iKHBnX3djaGFyIHdjLCBwZ19sb2NhbGVfdCBsb2NhbGUpCit7CisJcmV0dXJuIGlz d3VwcGVyX2woKHdpbnRfdCkgd2MsIGxvY2FsZS0+aW5mby5sdCk7Cit9CisKK3N0YXRpYyBib29s Cit3Y19pc2xvd2VyX2xpYmNfbWIocGdfd2NoYXIgd2MsIHBnX2xvY2FsZV90IGxvY2FsZSkKK3sK KwlyZXR1cm4gaXN3bG93ZXJfbCgod2ludF90KSB3YywgbG9jYWxlLT5pbmZvLmx0KTsKK30KKwor c3RhdGljIGJvb2wKK3djX2lzZ3JhcGhfbGliY19tYihwZ193Y2hhciB3YywgcGdfbG9jYWxlX3Qg bG9jYWxlKQoreworCXJldHVybiBpc3dncmFwaF9sKCh3aW50X3QpIHdjLCBsb2NhbGUtPmluZm8u bHQpOworfQorCitzdGF0aWMgYm9vbAord2NfaXNwcmludF9saWJjX21iKHBnX3djaGFyIHdjLCBw Z19sb2NhbGVfdCBsb2NhbGUpCit7CisJcmV0dXJuIGlzd3ByaW50X2woKHdpbnRfdCkgd2MsIGxv Y2FsZS0+aW5mby5sdCk7Cit9CisKK3N0YXRpYyBib29sCit3Y19pc3B1bmN0X2xpYmNfbWIocGdf d2NoYXIgd2MsIHBnX2xvY2FsZV90IGxvY2FsZSkKK3sKKwlyZXR1cm4gaXN3cHVuY3RfbCgod2lu dF90KSB3YywgbG9jYWxlLT5pbmZvLmx0KTsKK30KKworc3RhdGljIGJvb2wKK3djX2lzc3BhY2Vf bGliY19tYihwZ193Y2hhciB3YywgcGdfbG9jYWxlX3QgbG9jYWxlKQoreworCXJldHVybiBpc3dz cGFjZV9sKCh3aW50X3QpIHdjLCBsb2NhbGUtPmluZm8ubHQpOworfQorCitzdGF0aWMgY2hhcgor Y2hhcl90b2xvd2VyX2xpYmModW5zaWduZWQgY2hhciBjaCwgcGdfbG9jYWxlX3QgbG9jYWxlKQor eworCUFzc2VydChwZ19kYXRhYmFzZV9lbmNvZGluZ19tYXhfbGVuZ3RoKCkgPT0gMSk7CisJcmV0 dXJuIHRvbG93ZXJfbChjaCwgbG9jYWxlLT5pbmZvLmx0KTsKK30KKworc3RhdGljIGJvb2wKK2No YXJfaXNfY2FzZWRfbGliYyhjaGFyIGNoLCBwZ19sb2NhbGVfdCBsb2NhbGUpCit7CisJYm9vbAkJ aXNfbXVsdGlieXRlID0gcGdfZGF0YWJhc2VfZW5jb2RpbmdfbWF4X2xlbmd0aCgpID4gMTsKKwor CWlmIChpc19tdWx0aWJ5dGUgJiYgSVNfSElHSEJJVF9TRVQoY2gpKQorCQlyZXR1cm4gdHJ1ZTsK KwllbHNlCisJCXJldHVybiBpc2FscGhhX2woKHVuc2lnbmVkIGNoYXIpIGNoLCBsb2NhbGUtPmlu Zm8ubHQpOworfQorCitzdGF0aWMgcGdfd2NoYXIKK3RvdXBwZXJfbGliY19zYihwZ193Y2hhciB3 YywgcGdfbG9jYWxlX3QgbG9jYWxlKQoreworCUFzc2VydChHZXREYXRhYmFzZUVuY29kaW5nKCkg IT0gUEdfVVRGOCk7CisKKwlpZiAod2MgPD0gKHBnX3djaGFyKSBVQ0hBUl9NQVgpCisJCXJldHVy biB0b3VwcGVyX2woKHVuc2lnbmVkIGNoYXIpIHdjLCBsb2NhbGUtPmluZm8ubHQpOworCWVsc2UK KwkJcmV0dXJuIHdjOworfQorCitzdGF0aWMgcGdfd2NoYXIKK3RvdXBwZXJfbGliY19tYihwZ193 Y2hhciB3YywgcGdfbG9jYWxlX3QgbG9jYWxlKQoreworCUFzc2VydChHZXREYXRhYmFzZUVuY29k aW5nKCkgPT0gUEdfVVRGOCk7CisKKwlpZiAoc2l6ZW9mKHdjaGFyX3QpID49IDQgfHwgd2MgPD0g KHBnX3djaGFyKSAweEZGRkYpCisJCXJldHVybiB0b3d1cHBlcl9sKCh3aW50X3QpIHdjLCBsb2Nh bGUtPmluZm8ubHQpOworCWVsc2UKKwkJcmV0dXJuIHdjOworfQorCitzdGF0aWMgcGdfd2NoYXIK K3RvbG93ZXJfbGliY19zYihwZ193Y2hhciB3YywgcGdfbG9jYWxlX3QgbG9jYWxlKQoreworCUFz c2VydChHZXREYXRhYmFzZUVuY29kaW5nKCkgIT0gUEdfVVRGOCk7CisKKwlpZiAod2MgPD0gKHBn X3djaGFyKSBVQ0hBUl9NQVgpCisJCXJldHVybiB0b2xvd2VyX2woKHVuc2lnbmVkIGNoYXIpIHdj LCBsb2NhbGUtPmluZm8ubHQpOworCWVsc2UKKwkJcmV0dXJuIHdjOworfQorCitzdGF0aWMgcGdf d2NoYXIKK3RvbG93ZXJfbGliY19tYihwZ193Y2hhciB3YywgcGdfbG9jYWxlX3QgbG9jYWxlKQor eworCUFzc2VydChHZXREYXRhYmFzZUVuY29kaW5nKCkgPT0gUEdfVVRGOCk7CisKKwlpZiAoc2l6 ZW9mKHdjaGFyX3QpID49IDQgfHwgd2MgPD0gKHBnX3djaGFyKSAweEZGRkYpCisJCXJldHVybiB0 b3dsb3dlcl9sKCh3aW50X3QpIHdjLCBsb2NhbGUtPmluZm8ubHQpOworCWVsc2UKKwkJcmV0dXJu IHdjOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGN0eXBlX21ldGhvZHMgY3R5cGVfbWV0aG9k c19saWJjX3NiID0geworCS5zdHJsb3dlciA9IHN0cmxvd2VyX2xpYmNfc2IsCisJLnN0cnRpdGxl ID0gc3RydGl0bGVfbGliY19zYiwKKwkuc3RydXBwZXIgPSBzdHJ1cHBlcl9saWJjX3NiLAorCS53 Y19pc2RpZ2l0ID0gd2NfaXNkaWdpdF9saWJjX3NiLAorCS53Y19pc2FscGhhID0gd2NfaXNhbHBo YV9saWJjX3NiLAorCS53Y19pc2FsbnVtID0gd2NfaXNhbG51bV9saWJjX3NiLAorCS53Y19pc3Vw cGVyID0gd2NfaXN1cHBlcl9saWJjX3NiLAorCS53Y19pc2xvd2VyID0gd2NfaXNsb3dlcl9saWJj X3NiLAorCS53Y19pc2dyYXBoID0gd2NfaXNncmFwaF9saWJjX3NiLAorCS53Y19pc3ByaW50ID0g d2NfaXNwcmludF9saWJjX3NiLAorCS53Y19pc3B1bmN0ID0gd2NfaXNwdW5jdF9saWJjX3NiLAor CS53Y19pc3NwYWNlID0gd2NfaXNzcGFjZV9saWJjX3NiLAorCS5jaGFyX2lzX2Nhc2VkID0gY2hh cl9pc19jYXNlZF9saWJjLAorCS5jaGFyX3RvbG93ZXIgPSBjaGFyX3RvbG93ZXJfbGliYywKKwku d2NfdG91cHBlciA9IHRvdXBwZXJfbGliY19zYiwKKwkud2NfdG9sb3dlciA9IHRvbG93ZXJfbGli Y19zYiwKKwkubWF4X2NociA9IFVDSEFSX01BWCwKK307CisKKy8qCisgKiBOb24tVVRGOCBtdWx0 aWJ5dGUgZW5jb2RpbmdzIHVzZSBtdWx0aWJ5dGUgc2VtYW50aWNzIGZvciBjYXNlIG1hcHBpbmcs IGJ1dAorICogc2luZ2xlLWJ5dGUgc2VtYW50aWNzIGZvciBwYXR0ZXJuIG1hdGNoaW5nLgorICov CitzdGF0aWMgY29uc3Qgc3RydWN0IGN0eXBlX21ldGhvZHMgY3R5cGVfbWV0aG9kc19saWJjX290 aGVyX21iID0geworCS5zdHJsb3dlciA9IHN0cmxvd2VyX2xpYmNfbWIsCisJLnN0cnRpdGxlID0g c3RydGl0bGVfbGliY19tYiwKKwkuc3RydXBwZXIgPSBzdHJ1cHBlcl9saWJjX21iLAorCS53Y19p c2RpZ2l0ID0gd2NfaXNkaWdpdF9saWJjX3NiLAorCS53Y19pc2FscGhhID0gd2NfaXNhbHBoYV9s aWJjX3NiLAorCS53Y19pc2FsbnVtID0gd2NfaXNhbG51bV9saWJjX3NiLAorCS53Y19pc3VwcGVy ID0gd2NfaXN1cHBlcl9saWJjX3NiLAorCS53Y19pc2xvd2VyID0gd2NfaXNsb3dlcl9saWJjX3Ni LAorCS53Y19pc2dyYXBoID0gd2NfaXNncmFwaF9saWJjX3NiLAorCS53Y19pc3ByaW50ID0gd2Nf aXNwcmludF9saWJjX3NiLAorCS53Y19pc3B1bmN0ID0gd2NfaXNwdW5jdF9saWJjX3NiLAorCS53 Y19pc3NwYWNlID0gd2NfaXNzcGFjZV9saWJjX3NiLAorCS5jaGFyX2lzX2Nhc2VkID0gY2hhcl9p c19jYXNlZF9saWJjLAorCS5jaGFyX3RvbG93ZXIgPSBjaGFyX3RvbG93ZXJfbGliYywKKwkud2Nf dG91cHBlciA9IHRvdXBwZXJfbGliY19zYiwKKwkud2NfdG9sb3dlciA9IHRvbG93ZXJfbGliY19z YiwKKwkubWF4X2NociA9IFVDSEFSX01BWCwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY3R5 cGVfbWV0aG9kcyBjdHlwZV9tZXRob2RzX2xpYmNfdXRmOCA9IHsKKwkuc3RybG93ZXIgPSBzdHJs b3dlcl9saWJjX21iLAorCS5zdHJ0aXRsZSA9IHN0cnRpdGxlX2xpYmNfbWIsCisJLnN0cnVwcGVy ID0gc3RydXBwZXJfbGliY19tYiwKKwkud2NfaXNkaWdpdCA9IHdjX2lzZGlnaXRfbGliY19tYiwK Kwkud2NfaXNhbHBoYSA9IHdjX2lzYWxwaGFfbGliY19tYiwKKwkud2NfaXNhbG51bSA9IHdjX2lz YWxudW1fbGliY19tYiwKKwkud2NfaXN1cHBlciA9IHdjX2lzdXBwZXJfbGliY19tYiwKKwkud2Nf aXNsb3dlciA9IHdjX2lzbG93ZXJfbGliY19tYiwKKwkud2NfaXNncmFwaCA9IHdjX2lzZ3JhcGhf bGliY19tYiwKKwkud2NfaXNwcmludCA9IHdjX2lzcHJpbnRfbGliY19tYiwKKwkud2NfaXNwdW5j dCA9IHdjX2lzcHVuY3RfbGliY19tYiwKKwkud2NfaXNzcGFjZSA9IHdjX2lzc3BhY2VfbGliY19t YiwKKwkuY2hhcl9pc19jYXNlZCA9IGNoYXJfaXNfY2FzZWRfbGliYywKKwkuY2hhcl90b2xvd2Vy ID0gY2hhcl90b2xvd2VyX2xpYmMsCisJLndjX3RvdXBwZXIgPSB0b3VwcGVyX2xpYmNfbWIsCisJ LndjX3RvbG93ZXIgPSB0b2xvd2VyX2xpYmNfbWIsCit9OworCiBzdGF0aWMgY29uc3Qgc3RydWN0 IGNvbGxhdGVfbWV0aG9kcyBjb2xsYXRlX21ldGhvZHNfbGliYyA9IHsKIAkuc3RybmNvbGwgPSBz dHJuY29sbF9saWJjLAogCS5zdHJueGZybSA9IHN0cm54ZnJtX2xpYmMsCkBAIC0xMjAsMzYgKzM0 Niw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY29sbGF0ZV9tZXRob2RzIGNvbGxhdGVfbWV0aG9k c19saWJjX3dpbjMyX3V0ZjggPSB7CiB9OwogI2VuZGlmCiAKLXNpemVfdAotc3RybG93ZXJfbGli YyhjaGFyICpkc3QsIHNpemVfdCBkc3RzaXplLCBjb25zdCBjaGFyICpzcmMsCi0JCQkgIHNzaXpl X3Qgc3JjbGVuLCBwZ19sb2NhbGVfdCBsb2NhbGUpCi17Ci0JaWYgKHBnX2RhdGFiYXNlX2VuY29k aW5nX21heF9sZW5ndGgoKSA+IDEpCi0JCXJldHVybiBzdHJsb3dlcl9saWJjX21iKGRzdCwgZHN0 c2l6ZSwgc3JjLCBzcmNsZW4sIGxvY2FsZSk7Ci0JZWxzZQotCQlyZXR1cm4gc3RybG93ZXJfbGli Y19zYihkc3QsIGRzdHNpemUsIHNyYywgc3JjbGVuLCBsb2NhbGUpOwotfQotCi1zaXplX3QKLXN0 cnRpdGxlX2xpYmMoY2hhciAqZHN0LCBzaXplX3QgZHN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLAot CQkJICBzc2l6ZV90IHNyY2xlbiwgcGdfbG9jYWxlX3QgbG9jYWxlKQotewotCWlmIChwZ19kYXRh YmFzZV9lbmNvZGluZ19tYXhfbGVuZ3RoKCkgPiAxKQotCQlyZXR1cm4gc3RydGl0bGVfbGliY19t Yihkc3QsIGRzdHNpemUsIHNyYywgc3JjbGVuLCBsb2NhbGUpOwotCWVsc2UKLQkJcmV0dXJuIHN0 cnRpdGxlX2xpYmNfc2IoZHN0LCBkc3RzaXplLCBzcmMsIHNyY2xlbiwgbG9jYWxlKTsKLX0KLQot c2l6ZV90Ci1zdHJ1cHBlcl9saWJjKGNoYXIgKmRzdCwgc2l6ZV90IGRzdHNpemUsIGNvbnN0IGNo YXIgKnNyYywKLQkJCSAgc3NpemVfdCBzcmNsZW4sIHBnX2xvY2FsZV90IGxvY2FsZSkKLXsKLQlp ZiAocGdfZGF0YWJhc2VfZW5jb2RpbmdfbWF4X2xlbmd0aCgpID4gMSkKLQkJcmV0dXJuIHN0cnVw cGVyX2xpYmNfbWIoZHN0LCBkc3RzaXplLCBzcmMsIHNyY2xlbiwgbG9jYWxlKTsKLQllbHNlCi0J CXJldHVybiBzdHJ1cHBlcl9saWJjX3NiKGRzdCwgZHN0c2l6ZSwgc3JjLCBzcmNsZW4sIGxvY2Fs ZSk7Ci19Ci0KIHN0YXRpYyBzaXplX3QKIHN0cmxvd2VyX2xpYmNfc2IoY2hhciAqZGVzdCwgc2l6 ZV90IGRlc3RzaXplLCBjb25zdCBjaGFyICpzcmMsIHNzaXplX3Qgc3JjbGVuLAogCQkJCSBwZ19s b2NhbGVfdCBsb2NhbGUpCkBAIC00ODIsNiArNjc4LDE1IEBAIGNyZWF0ZV9wZ19sb2NhbGVfbGli YyhPaWQgY29sbGlkLCBNZW1vcnlDb250ZXh0IGNvbnRleHQpCiAjZW5kaWYKIAkJCXJlc3VsdC0+ Y29sbGF0ZSA9ICZjb2xsYXRlX21ldGhvZHNfbGliYzsKIAl9CisJaWYgKCFyZXN1bHQtPmN0eXBl X2lzX2MpCisJeworCQlpZiAoR2V0RGF0YWJhc2VFbmNvZGluZygpID09IFBHX1VURjgpCisJCQly ZXN1bHQtPmN0eXBlID0gJmN0eXBlX21ldGhvZHNfbGliY191dGY4OworCQllbHNlIGlmIChwZ19k YXRhYmFzZV9lbmNvZGluZ19tYXhfbGVuZ3RoKCkgPiAxKQorCQkJcmVzdWx0LT5jdHlwZSA9ICZj dHlwZV9tZXRob2RzX2xpYmNfb3RoZXJfbWI7CisJCWVsc2UKKwkJCXJlc3VsdC0+Y3R5cGUgPSAm Y3R5cGVfbWV0aG9kc19saWJjX3NiOworCX0KIAogCXJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS91dGlscy9wZ19sb2NhbGUuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3Bn X2xvY2FsZS5oCmluZGV4IDBkNWYwNTEzY2ViLi5jZDJjODEyYWUyNiAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvdXRpbHMvcGdfbG9jYWxlLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcGdfbG9j YWxlLmgKQEAgLTEyLDYgKzEyLDggQEAKICNpZm5kZWYgX1BHX0xPQ0FMRV8KICNkZWZpbmUgX1BH X0xPQ0FMRV8KIAorI2luY2x1ZGUgIm1iL3BnX3djaGFyLmgiCisKICNpZmRlZiBVU0VfSUNVCiAj aW5jbHVkZSA8dW5pY29kZS91Y29sLmg+CiAjZW5kaWYKQEAgLTc3LDYgKzc5LDUyIEBAIHN0cnVj dCBjb2xsYXRlX21ldGhvZHMKIAlib29sCQlzdHJ4ZnJtX2lzX3NhZmU7CiB9OwogCitzdHJ1Y3Qg Y3R5cGVfbWV0aG9kcworeworCS8qIGNhc2UgbWFwcGluZzogTE9XRVIoKS9JTklUQ0FQKCkvVVBQ RVIoKSAqLworCXNpemVfdAkJKCpzdHJsb3dlcikgKGNoYXIgKmRlc3QsIHNpemVfdCBkZXN0c2l6 ZSwKKwkJCQkJCQkgY29uc3QgY2hhciAqc3JjLCBzc2l6ZV90IHNyY2xlbiwKKwkJCQkJCQkgcGdf bG9jYWxlX3QgbG9jYWxlKTsKKwlzaXplX3QJCSgqc3RydGl0bGUpIChjaGFyICpkZXN0LCBzaXpl X3QgZGVzdHNpemUsCisJCQkJCQkJIGNvbnN0IGNoYXIgKnNyYywgc3NpemVfdCBzcmNsZW4sCisJ CQkJCQkJIHBnX2xvY2FsZV90IGxvY2FsZSk7CisJc2l6ZV90CQkoKnN0cnVwcGVyKSAoY2hhciAq ZGVzdCwgc2l6ZV90IGRlc3RzaXplLAorCQkJCQkJCSBjb25zdCBjaGFyICpzcmMsIHNzaXplX3Qg c3JjbGVuLAorCQkJCQkJCSBwZ19sb2NhbGVfdCBsb2NhbGUpOworCXNpemVfdAkJKCpzdHJmb2xk KSAoY2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLAorCQkJCQkJCWNvbnN0IGNoYXIgKnNyYywg c3NpemVfdCBzcmNsZW4sCisJCQkJCQkJcGdfbG9jYWxlX3QgbG9jYWxlKTsKKworCS8qIHJlcXVp cmVkICovCisJYm9vbAkJKCp3Y19pc2RpZ2l0KSAocGdfd2NoYXIgd2MsIHBnX2xvY2FsZV90IGxv Y2FsZSk7CisJYm9vbAkJKCp3Y19pc2FscGhhKSAocGdfd2NoYXIgd2MsIHBnX2xvY2FsZV90IGxv Y2FsZSk7CisJYm9vbAkJKCp3Y19pc2FsbnVtKSAocGdfd2NoYXIgd2MsIHBnX2xvY2FsZV90IGxv Y2FsZSk7CisJYm9vbAkJKCp3Y19pc3VwcGVyKSAocGdfd2NoYXIgd2MsIHBnX2xvY2FsZV90IGxv Y2FsZSk7CisJYm9vbAkJKCp3Y19pc2xvd2VyKSAocGdfd2NoYXIgd2MsIHBnX2xvY2FsZV90IGxv Y2FsZSk7CisJYm9vbAkJKCp3Y19pc2dyYXBoKSAocGdfd2NoYXIgd2MsIHBnX2xvY2FsZV90IGxv Y2FsZSk7CisJYm9vbAkJKCp3Y19pc3ByaW50KSAocGdfd2NoYXIgd2MsIHBnX2xvY2FsZV90IGxv Y2FsZSk7CisJYm9vbAkJKCp3Y19pc3B1bmN0KSAocGdfd2NoYXIgd2MsIHBnX2xvY2FsZV90IGxv Y2FsZSk7CisJYm9vbAkJKCp3Y19pc3NwYWNlKSAocGdfd2NoYXIgd2MsIHBnX2xvY2FsZV90IGxv Y2FsZSk7CisJcGdfd2NoYXIJKCp3Y190b3VwcGVyKSAocGdfd2NoYXIgd2MsIHBnX2xvY2FsZV90 IGxvY2FsZSk7CisJcGdfd2NoYXIJKCp3Y190b2xvd2VyKSAocGdfd2NoYXIgd2MsIHBnX2xvY2Fs ZV90IGxvY2FsZSk7CisKKwkvKiByZXF1aXJlZCAqLworCWJvb2wJCSgqY2hhcl9pc19jYXNlZCkg KGNoYXIgY2gsIHBnX2xvY2FsZV90IGxvY2FsZSk7CisKKwkvKgorCSAqIE9wdGlvbmFsLiBJZiBk ZWZpbmVkLCB3aWxsIG9ubHkgYmUgY2FsbGVkIGZvciBzaW5nbGUtYnl0ZSBlbmNvZGluZ3MuIElm CisJICogbm90IGRlZmluZWQsIG9yIGlmIHRoZSBlbmNvZGluZyBpcyBtdWx0aWJ5dGUsIHdpbGwg ZmFsbCBiYWNrIHRvCisJICogcGdfc3RybG93ZXIoKS4KKwkgKi8KKwljaGFyCQkoKmNoYXJfdG9s b3dlcikgKHVuc2lnbmVkIGNoYXIgY2gsIHBnX2xvY2FsZV90IGxvY2FsZSk7CisKKwkvKgorCSAq IEZvciByZWdleCBhbmQgcGF0dGVybiBtYXRjaGluZyBlZmZpY2llbmN5LCB0aGUgbWF4aW11bSBj aGFyIHZhbHVlCisJICogc3VwcG9ydGVkIGJ5IHRoZSBhYm92ZSBtZXRob2RzLiBJZiB6ZXJvLCBs aW1pdCBpcyBzZXQgYnkgcmVnZXggY29kZS4KKwkgKi8KKwlwZ193Y2hhcgltYXhfY2hyOworfTsK KwogLyoKICAqIFdlIHVzZSBhIGRpc2NyaW1pbmF0ZWQgdW5pb24gdG8gaG9sZCBlaXRoZXIgYSBs b2NhbGVfdCBvciBhbiBJQ1UgY29sbGF0b3IuCiAgKiBwZ19sb2NhbGVfdCBpcyBvY2Nhc2lvbmFs bHkgY2hlY2tlZCBmb3IgdHJ1dGgsIHNvIG1ha2UgaXQgYSBwb2ludGVyLgpAQCAtMTAyLDYgKzE1 MCw3IEBAIHN0cnVjdCBwZ19sb2NhbGVfc3RydWN0CiAJYm9vbAkJaXNfZGVmYXVsdDsKIAogCWNv bnN0IHN0cnVjdCBjb2xsYXRlX21ldGhvZHMgKmNvbGxhdGU7CS8qIE5VTEwgaWYgY29sbGF0ZV9p c19jICovCisJY29uc3Qgc3RydWN0IGN0eXBlX21ldGhvZHMgKmN0eXBlOwkvKiBOVUxMIGlmIGN0 eXBlX2lzX2MgKi8KIAogCXVuaW9uCiAJewpAQCAtMTI1LDYgKzE3NCw5IEBAIGV4dGVybiB2b2lk IGluaXRfZGF0YWJhc2VfY29sbGF0aW9uKHZvaWQpOwogZXh0ZXJuIHBnX2xvY2FsZV90IHBnX25l d2xvY2FsZV9mcm9tX2NvbGxhdGlvbihPaWQgY29sbGlkKTsKIAogZXh0ZXJuIGNoYXIgKmdldF9j b2xsYXRpb25fYWN0dWFsX3ZlcnNpb24oY2hhciBjb2xscHJvdmlkZXIsIGNvbnN0IGNoYXIgKmNv bGxjb2xsYXRlKTsKK2V4dGVybiBib29sIGNoYXJfaXNfY2FzZWQoY2hhciBjaCwgcGdfbG9jYWxl X3QgbG9jYWxlKTsKK2V4dGVybiBib29sIGNoYXJfdG9sb3dlcl9lbmFibGVkKHBnX2xvY2FsZV90 IGxvY2FsZSk7CitleHRlcm4gY2hhciBjaGFyX3RvbG93ZXIodW5zaWduZWQgY2hhciBjaCwgcGdf bG9jYWxlX3QgbG9jYWxlKTsKIGV4dGVybiBzaXplX3QgcGdfc3RybG93ZXIoY2hhciAqZGVzdCwg c2l6ZV90IGRlc3RzaXplLAogCQkJCQkJICBjb25zdCBjaGFyICpzcmMsIHNzaXplX3Qgc3JjbGVu LAogCQkJCQkJICBwZ19sb2NhbGVfdCBsb2NhbGUpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3Bn aW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApp bmRleCA5YTNiZWU5M2RlYy4uNTk0Yzk4NTA5YzAgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0 CkBAIC0xODI5LDcgKzE4MjksNiBAQCBQR1RhcmdldFNlcnZlclR5cGUKIFBHVGVybmFyeUJvb2wK IFBHVHJhbnNhY3Rpb25TdGF0dXNUeXBlCiBQR1ZlcmJvc2l0eQotUEdfTG9jYWxlX1N0cmF0ZWd5 CiBQR19Mb2NrX1N0YXR1cwogUEdfaW5pdF90CiBQR2NhbmNlbAotLSAKMi4zNC4xCgo= --=-y4I0ndrBNzwPWRboRph+ Content-Disposition: attachment; filename="v15-0002-Remove-provider-field-from-pg_locale_t.patch" Content-Type: text/x-patch; name="v15-0002-Remove-provider-field-from-pg_locale_t.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSAyNWU3N2U5NmY5OTQxMmE0YmYxYTZkMzYzYmI1ZGJlOGY5MTRmYmJmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBN b24sIDcgT2N0IDIwMjQgMTI6NTE6MjcgLTA3MDAKU3ViamVjdDogW1BBVENIIHYxNSAyLzRdIFJl bW92ZSBwcm92aWRlciBmaWVsZCBmcm9tIHBnX2xvY2FsZV90LgoKVGhlIGJlaGF2aW9yIG9mIHBn X2xvY2FsZV90IGlzIGVudGlyZWx5IHNwZWNpZmllZCBieSBtZXRob2RzLCBzbyBhCnNlcGFyYXRl IHByb3ZpZGVyIGZpZWxkIGlzIG5vIGxvbmdlciBuZWNlc3NhcnkuCi0tLQogc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3BnX2xvY2FsZV9idWlsdGluLmMgfCAgMSAtCiBzcmMvYmFja2VuZC91dGlscy9h ZHQvcGdfbG9jYWxlX2ljdS5jICAgICB8IDExIC0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC91dGls cy9hZHQvcGdfbG9jYWxlX2xpYmMuYyAgICB8ICA2IC0tLS0tLQogc3JjL2luY2x1ZGUvdXRpbHMv cGdfbG9jYWxlLmggICAgICAgICAgICAgfCAgMSAtCiA0IGZpbGVzIGNoYW5nZWQsIDE5IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGVfYnVp bHRpbi5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZV9idWlsdGluLmMKaW5kZXgg MjM1MDRiZTM4M2EuLmJiYTk4Mjg0ZTI1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvcGdfbG9jYWxlX2J1aWx0aW4uYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9j YWxlX2J1aWx0aW4uYwpAQCAtMjM5LDcgKzIzOSw2IEBAIGNyZWF0ZV9wZ19sb2NhbGVfYnVpbHRp bihPaWQgY29sbGlkLCBNZW1vcnlDb250ZXh0IGNvbnRleHQpCiAKIAlyZXN1bHQtPmluZm8uYnVp bHRpbi5sb2NhbGUgPSBNZW1vcnlDb250ZXh0U3RyZHVwKGNvbnRleHQsIGxvY3N0cik7CiAJcmVz dWx0LT5pbmZvLmJ1aWx0aW4uY2FzZW1hcF9mdWxsID0gKHN0cmNtcChsb2NzdHIsICJQR19VTklD T0RFX0ZBU1QiKSA9PSAwKTsKLQlyZXN1bHQtPnByb3ZpZGVyID0gQ09MTFBST1ZJREVSX0JVSUxU SU47CiAJcmVzdWx0LT5kZXRlcm1pbmlzdGljID0gdHJ1ZTsKIAlyZXN1bHQtPmNvbGxhdGVfaXNf YyA9IHRydWU7CiAJcmVzdWx0LT5jdHlwZV9pc19jID0gKHN0cmNtcChsb2NzdHIsICJDIikgPT0g MCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlX2ljdS5jIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZV9pY3UuYwppbmRleCAxY2IyNGZhZGVhMi4u ZjAwNjg3NDk0NzEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGVf aWN1LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZV9pY3UuYwpAQCAtMjk1 LDcgKzI5NSw2IEBAIGNyZWF0ZV9wZ19sb2NhbGVfaWN1KE9pZCBjb2xsaWQsIE1lbW9yeUNvbnRl eHQgY29udGV4dCkKIAlyZXN1bHQgPSBNZW1vcnlDb250ZXh0QWxsb2NaZXJvKGNvbnRleHQsIHNp emVvZihzdHJ1Y3QgcGdfbG9jYWxlX3N0cnVjdCkpOwogCXJlc3VsdC0+aW5mby5pY3UubG9jYWxl ID0gTWVtb3J5Q29udGV4dFN0cmR1cChjb250ZXh0LCBpY3Vsb2NzdHIpOwogCXJlc3VsdC0+aW5m by5pY3UudWNvbCA9IGNvbGxhdG9yOwotCXJlc3VsdC0+cHJvdmlkZXIgPSBDT0xMUFJPVklERVJf SUNVOwogCXJlc3VsdC0+ZGV0ZXJtaW5pc3RpYyA9IGRldGVybWluaXN0aWM7CiAJcmVzdWx0LT5j b2xsYXRlX2lzX2MgPSBmYWxzZTsKIAlyZXN1bHQtPmN0eXBlX2lzX2MgPSBmYWxzZTsKQEAgLTU3 Miw4ICs1NzEsNiBAQCBzdHJuY29sbF9pY3VfdXRmOChjb25zdCBjaGFyICphcmcxLCBzc2l6ZV90 IGxlbjEsIGNvbnN0IGNoYXIgKmFyZzIsIHNzaXplX3QgbGVuMgogCWludAkJCXJlc3VsdDsKIAlV RXJyb3JDb2RlCXN0YXR1czsKIAotCUFzc2VydChsb2NhbGUtPnByb3ZpZGVyID09IENPTExQUk9W SURFUl9JQ1UpOwotCiAJQXNzZXJ0KEdldERhdGFiYXNlRW5jb2RpbmcoKSA9PSBQR19VVEY4KTsK IAogCXN0YXR1cyA9IFVfWkVST19FUlJPUjsKQEAgLTYwMSw4ICs1OTgsNiBAQCBzdHJueGZybV9p Y3UoY2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLCBjb25zdCBjaGFyICpzcmMsIHNzaXplX3Qg c3JjbGVuLAogCXNpemVfdAkJdWNoYXJfYnNpemU7CiAJU2l6ZQkJcmVzdWx0X2JzaXplOwogCi0J QXNzZXJ0KGxvY2FsZS0+cHJvdmlkZXIgPT0gQ09MTFBST1ZJREVSX0lDVSk7Ci0KIAlpbml0X2lj dV9jb252ZXJ0ZXIoKTsKIAogCXVsZW4gPSB1Y2hhcl9sZW5ndGgoaWN1X2NvbnZlcnRlciwgc3Jj LCBzcmNsZW4pOwpAQCAtNjQ3LDggKzY0Miw2IEBAIHN0cm54ZnJtX3ByZWZpeF9pY3VfdXRmOChj aGFyICpkZXN0LCBzaXplX3QgZGVzdHNpemUsCiAJdWludDMyX3QJc3RhdGVbMl07CiAJVUVycm9y Q29kZQlzdGF0dXM7CiAKLQlBc3NlcnQobG9jYWxlLT5wcm92aWRlciA9PSBDT0xMUFJPVklERVJf SUNVKTsKLQogCUFzc2VydChHZXREYXRhYmFzZUVuY29kaW5nKCkgPT0gUEdfVVRGOCk7CiAKIAl1 aXRlcl9zZXRVVEY4KCZpdGVyLCBzcmMsIHNyY2xlbik7CkBAIC04NDcsOCArODQwLDYgQEAgc3Ry bmNvbGxfaWN1KGNvbnN0IGNoYXIgKmFyZzEsIHNzaXplX3QgbGVuMSwKIAkJCSAgICp1Y2hhcjI7 CiAJaW50CQkJcmVzdWx0OwogCi0JQXNzZXJ0KGxvY2FsZS0+cHJvdmlkZXIgPT0gQ09MTFBST1ZJ REVSX0lDVSk7Ci0KIAkvKiBpZiBlbmNvZGluZyBpcyBVVEY4LCB1c2UgbW9yZSBlZmZpY2llbnQg c3RybmNvbGxfaWN1X3V0ZjggKi8KICNpZmRlZiBIQVZFX1VDT0xfU1RSQ09MTFVURjgKIAlBc3Nl cnQoR2V0RGF0YWJhc2VFbmNvZGluZygpICE9IFBHX1VURjgpOwpAQCAtODk3LDggKzg4OCw2IEBA IHN0cm54ZnJtX3ByZWZpeF9pY3UoY2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLAogCXNpemVf dAkJdWNoYXJfYnNpemU7CiAJU2l6ZQkJcmVzdWx0X2JzaXplOwogCi0JQXNzZXJ0KGxvY2FsZS0+ cHJvdmlkZXIgPT0gQ09MTFBST1ZJREVSX0lDVSk7Ci0KIAkvKiBpZiBlbmNvZGluZyBpcyBVVEY4 LCB1c2UgbW9yZSBlZmZpY2llbnQgc3Rybnhmcm1fcHJlZml4X2ljdV91dGY4ICovCiAJQXNzZXJ0 KEdldERhdGFiYXNlRW5jb2RpbmcoKSAhPSBQR19VVEY4KTsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZV9saWJjLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQv cGdfbG9jYWxlX2xpYmMuYwppbmRleCAxMTQ0YzZmZjMwNC4uMTU4MmY4Y2RkMmEgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGVfbGliYy5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGVfbGliYy5jCkBAIC02NjIsNyArNjYyLDYgQEAgY3JlYXRl X3BnX2xvY2FsZV9saWJjKE9pZCBjb2xsaWQsIE1lbW9yeUNvbnRleHQgY29udGV4dCkKIAlsb2Mg PSBtYWtlX2xpYmNfY29sbGF0b3IoY29sbGF0ZSwgY3R5cGUpOwogCiAJcmVzdWx0ID0gTWVtb3J5 Q29udGV4dEFsbG9jWmVybyhjb250ZXh0LCBzaXplb2Yoc3RydWN0IHBnX2xvY2FsZV9zdHJ1Y3Qp KTsKLQlyZXN1bHQtPnByb3ZpZGVyID0gQ09MTFBST1ZJREVSX0xJQkM7CiAJcmVzdWx0LT5kZXRl cm1pbmlzdGljID0gdHJ1ZTsKIAlyZXN1bHQtPmNvbGxhdGVfaXNfYyA9IChzdHJjbXAoY29sbGF0 ZSwgIkMiKSA9PSAwKSB8fAogCQkoc3RyY21wKGNvbGxhdGUsICJQT1NJWCIpID09IDApOwpAQCAt NzgyLDggKzc4MSw2IEBAIHN0cm5jb2xsX2xpYmMoY29uc3QgY2hhciAqYXJnMSwgc3NpemVfdCBs ZW4xLCBjb25zdCBjaGFyICphcmcyLCBzc2l6ZV90IGxlbjIsCiAJY29uc3QgY2hhciAqYXJnMm47 CiAJaW50CQkJcmVzdWx0OwogCi0JQXNzZXJ0KGxvY2FsZS0+cHJvdmlkZXIgPT0gQ09MTFBST1ZJ REVSX0xJQkMpOwotCiAJaWYgKGJ1ZnNpemUxICsgYnVmc2l6ZTIgPiBURVhUQlVGTEVOKQogCQli dWYgPSBwYWxsb2MoYnVmc2l6ZTEgKyBidWZzaXplMik7CiAKQEAgLTgzOCw4ICs4MzUsNiBAQCBz dHJueGZybV9saWJjKGNoYXIgKmRlc3QsIHNpemVfdCBkZXN0c2l6ZSwgY29uc3QgY2hhciAqc3Jj LCBzc2l6ZV90IHNyY2xlbiwKIAlzaXplX3QJCWJ1ZnNpemUgPSBzcmNsZW4gKyAxOwogCXNpemVf dAkJcmVzdWx0OwogCi0JQXNzZXJ0KGxvY2FsZS0+cHJvdmlkZXIgPT0gQ09MTFBST1ZJREVSX0xJ QkMpOwotCiAJaWYgKHNyY2xlbiA9PSAtMSkKIAkJcmV0dXJuIHN0cnhmcm1fbChkZXN0LCBzcmMs IGRlc3RzaXplLCBsb2NhbGUtPmluZm8ubHQpOwogCkBAIC05NDgsNyArOTQzLDYgQEAgc3RybmNv bGxfbGliY193aW4zMl91dGY4KGNvbnN0IGNoYXIgKmFyZzEsIHNzaXplX3QgbGVuMSwgY29uc3Qg Y2hhciAqYXJnMiwKIAlpbnQJCQlyOwogCWludAkJCXJlc3VsdDsKIAotCUFzc2VydChsb2NhbGUt PnByb3ZpZGVyID09IENPTExQUk9WSURFUl9MSUJDKTsKIAlBc3NlcnQoR2V0RGF0YWJhc2VFbmNv ZGluZygpID09IFBHX1VURjgpOwogCiAJaWYgKGxlbjEgPT0gLTEpCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS91dGlscy9wZ19sb2NhbGUuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3BnX2xvY2FsZS5o CmluZGV4IGNkMmM4MTJhZTI2Li5mMDgxMDkxZDIwMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv dXRpbHMvcGdfbG9jYWxlLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcGdfbG9jYWxlLmgKQEAg LTE0Myw3ICsxNDMsNiBAQCBzdHJ1Y3QgY3R5cGVfbWV0aG9kcwogICovCiBzdHJ1Y3QgcGdfbG9j YWxlX3N0cnVjdAogewotCWNoYXIJCXByb3ZpZGVyOwogCWJvb2wJCWRldGVybWluaXN0aWM7CiAJ Ym9vbAkJY29sbGF0ZV9pc19jOwogCWJvb2wJCWN0eXBlX2lzX2M7Ci0tIAoyLjM0LjEKCg== --=-y4I0ndrBNzwPWRboRph+ Content-Disposition: attachment; filename*0=v15-0003-Make-provider-data-in-pg_locale_t-an-opaque-poin.pat; filename*1=ch Content-Type: text/x-patch; name="v15-0003-Make-provider-data-in-pg_locale_t-an-opaque-poin.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBiYWJlMDQ2MjRlYzAxNDM3OTQzMjk5NTA1NDdmZjlhNGRkYTkxOTkwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBN b24sIDcgT2N0IDIwMjQgMTM6MzY6NDQgLTA3MDAKU3ViamVjdDogW1BBVENIIHYxNSAzLzRdIE1h a2UgcHJvdmlkZXIgZGF0YSBpbiBwZ19sb2NhbGVfdCBhbiBvcGFxdWUgcG9pbnRlci4KCi0tLQog c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZV9idWlsdGluLmMgfCAgNTUgKysrKystLQog c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZV9pY3UuYyAgICAgfCAgNDAgKysrKy0tCiBz cmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlX2xpYmMuYyAgICB8IDE2NyArKysrKysrKysr KysrKystLS0tLS0tCiBzcmMvaW5jbHVkZS91dGlscy9wZ19sb2NhbGUuaCAgICAgICAgICAgICB8 ICAxNyArLS0KIDQgZmlsZXMgY2hhbmdlZCwgMTk3IGluc2VydGlvbnMoKyksIDgyIGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGVfYnVpbHRp bi5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZV9idWlsdGluLmMKaW5kZXggYmJh OTgyODRlMjUuLmYwNDYyYWE5NmFhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQv cGdfbG9jYWxlX2J1aWx0aW4uYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxl X2J1aWx0aW4uYwpAQCAtMjYsNiArMjYsMTIgQEAgZXh0ZXJuIHBnX2xvY2FsZV90IGNyZWF0ZV9w Z19sb2NhbGVfYnVpbHRpbihPaWQgY29sbGlkLAogCQkJCQkJCQkJCQlNZW1vcnlDb250ZXh0IGNv bnRleHQpOwogZXh0ZXJuIGNoYXIgKmdldF9jb2xsYXRpb25fYWN0dWFsX3ZlcnNpb25fYnVpbHRp bihjb25zdCBjaGFyICpjb2xsY29sbGF0ZSk7CiAKK3N0cnVjdCBidWlsdGluX3Byb3ZpZGVyCit7 CisJY29uc3QgY2hhciAqbG9jYWxlOworCWJvb2wJCWNhc2VtYXBfZnVsbDsKK307CisKIHN0cnVj dCBXb3JkQm91bmRhcnlTdGF0ZQogewogCWNvbnN0IGNoYXIgKnN0cjsKQEAgLTcxLDE0ICs3Nywx OSBAQCBzdGF0aWMgc2l6ZV90CiBzdHJsb3dlcl9idWlsdGluKGNoYXIgKmRlc3QsIHNpemVfdCBk ZXN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLCBzc2l6ZV90IHNyY2xlbiwKIAkJCQkgcGdfbG9jYWxl X3QgbG9jYWxlKQogeworCXN0cnVjdCBidWlsdGluX3Byb3ZpZGVyICpidWlsdGluOworCisJYnVp bHRpbiA9IChzdHJ1Y3QgYnVpbHRpbl9wcm92aWRlciAqKSBsb2NhbGUtPnByb3ZpZGVyX2RhdGE7 CisKIAlyZXR1cm4gdW5pY29kZV9zdHJsb3dlcihkZXN0LCBkZXN0c2l6ZSwgc3JjLCBzcmNsZW4s Ci0JCQkJCQkJbG9jYWxlLT5pbmZvLmJ1aWx0aW4uY2FzZW1hcF9mdWxsKTsKKwkJCQkJCQlidWls dGluLT5jYXNlbWFwX2Z1bGwpOwogfQogCiBzdGF0aWMgc2l6ZV90CiBzdHJ0aXRsZV9idWlsdGlu KGNoYXIgKmRlc3QsIHNpemVfdCBkZXN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLCBzc2l6ZV90IHNy Y2xlbiwKIAkJCQkgcGdfbG9jYWxlX3QgbG9jYWxlKQogeworCXN0cnVjdCBidWlsdGluX3Byb3Zp ZGVyICpidWlsdGluOwogCXN0cnVjdCBXb3JkQm91bmRhcnlTdGF0ZSB3YnN0YXRlID0gewogCQku c3RyID0gc3JjLAogCQkubGVuID0gc3JjbGVuLApAQCAtODcsOCArOTgsMTAgQEAgc3RydGl0bGVf YnVpbHRpbihjaGFyICpkZXN0LCBzaXplX3QgZGVzdHNpemUsIGNvbnN0IGNoYXIgKnNyYywgc3Np emVfdCBzcmNsZW4sCiAJCS5wcmV2X2FsbnVtID0gZmFsc2UsCiAJfTsKIAorCWJ1aWx0aW4gPSAo c3RydWN0IGJ1aWx0aW5fcHJvdmlkZXIgKikgbG9jYWxlLT5wcm92aWRlcl9kYXRhOworCiAJcmV0 dXJuIHVuaWNvZGVfc3RydGl0bGUoZGVzdCwgZGVzdHNpemUsIHNyYywgc3JjbGVuLAotCQkJCQkJ CWxvY2FsZS0+aW5mby5idWlsdGluLmNhc2VtYXBfZnVsbCwKKwkJCQkJCQlidWlsdGluLT5jYXNl bWFwX2Z1bGwsCiAJCQkJCQkJaW5pdGNhcF93Ym5leHQsICZ3YnN0YXRlKTsKIH0KIApAQCAtOTYs MjIgKzEwOSwzNCBAQCBzdGF0aWMgc2l6ZV90CiBzdHJ1cHBlcl9idWlsdGluKGNoYXIgKmRlc3Qs IHNpemVfdCBkZXN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLCBzc2l6ZV90IHNyY2xlbiwKIAkJCQkg cGdfbG9jYWxlX3QgbG9jYWxlKQogeworCXN0cnVjdCBidWlsdGluX3Byb3ZpZGVyICpidWlsdGlu OworCisJYnVpbHRpbiA9IChzdHJ1Y3QgYnVpbHRpbl9wcm92aWRlciAqKSBsb2NhbGUtPnByb3Zp ZGVyX2RhdGE7CisKIAlyZXR1cm4gdW5pY29kZV9zdHJ1cHBlcihkZXN0LCBkZXN0c2l6ZSwgc3Jj LCBzcmNsZW4sCi0JCQkJCQkJbG9jYWxlLT5pbmZvLmJ1aWx0aW4uY2FzZW1hcF9mdWxsKTsKKwkJ CQkJCQlidWlsdGluLT5jYXNlbWFwX2Z1bGwpOwogfQogCiBzdGF0aWMgc2l6ZV90CiBzdHJmb2xk X2J1aWx0aW4oY2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLCBjb25zdCBjaGFyICpzcmMsIHNz aXplX3Qgc3JjbGVuLAogCQkJCXBnX2xvY2FsZV90IGxvY2FsZSkKIHsKKwlzdHJ1Y3QgYnVpbHRp bl9wcm92aWRlciAqYnVpbHRpbjsKKworCWJ1aWx0aW4gPSAoc3RydWN0IGJ1aWx0aW5fcHJvdmlk ZXIgKikgbG9jYWxlLT5wcm92aWRlcl9kYXRhOworCiAJcmV0dXJuIHVuaWNvZGVfc3RyZm9sZChk ZXN0LCBkZXN0c2l6ZSwgc3JjLCBzcmNsZW4sCi0JCQkJCQkgICBsb2NhbGUtPmluZm8uYnVpbHRp bi5jYXNlbWFwX2Z1bGwpOworCQkJCQkJICAgYnVpbHRpbi0+Y2FzZW1hcF9mdWxsKTsKIH0KIAog c3RhdGljIGJvb2wKIHdjX2lzZGlnaXRfYnVpbHRpbihwZ193Y2hhciB3YywgcGdfbG9jYWxlX3Qg bG9jYWxlKQogewotCXJldHVybiBwZ191X2lzZGlnaXQod2MsICFsb2NhbGUtPmluZm8uYnVpbHRp bi5jYXNlbWFwX2Z1bGwpOworCXN0cnVjdCBidWlsdGluX3Byb3ZpZGVyICpidWlsdGluOworCisJ YnVpbHRpbiA9IChzdHJ1Y3QgYnVpbHRpbl9wcm92aWRlciAqKSBsb2NhbGUtPnByb3ZpZGVyX2Rh dGE7CisKKwlyZXR1cm4gcGdfdV9pc2RpZ2l0KHdjLCAhYnVpbHRpbi0+Y2FzZW1hcF9mdWxsKTsK IH0KIAogc3RhdGljIGJvb2wKQEAgLTEyMyw3ICsxNDgsMTEgQEAgd2NfaXNhbHBoYV9idWlsdGlu KHBnX3djaGFyIHdjLCBwZ19sb2NhbGVfdCBsb2NhbGUpCiBzdGF0aWMgYm9vbAogd2NfaXNhbG51 bV9idWlsdGluKHBnX3djaGFyIHdjLCBwZ19sb2NhbGVfdCBsb2NhbGUpCiB7Ci0JcmV0dXJuIHBn X3VfaXNhbG51bSh3YywgIWxvY2FsZS0+aW5mby5idWlsdGluLmNhc2VtYXBfZnVsbCk7CisJc3Ry dWN0IGJ1aWx0aW5fcHJvdmlkZXIgKmJ1aWx0aW47CisKKwlidWlsdGluID0gKHN0cnVjdCBidWls dGluX3Byb3ZpZGVyICopIGxvY2FsZS0+cHJvdmlkZXJfZGF0YTsKKworCXJldHVybiBwZ191X2lz YWxudW0od2MsICFidWlsdGluLT5jYXNlbWFwX2Z1bGwpOwogfQogCiBzdGF0aWMgYm9vbApAQCAt MTUzLDcgKzE4MiwxMSBAQCB3Y19pc3ByaW50X2J1aWx0aW4ocGdfd2NoYXIgd2MsIHBnX2xvY2Fs ZV90IGxvY2FsZSkKIHN0YXRpYyBib29sCiB3Y19pc3B1bmN0X2J1aWx0aW4ocGdfd2NoYXIgd2Ms IHBnX2xvY2FsZV90IGxvY2FsZSkKIHsKLQlyZXR1cm4gcGdfdV9pc3B1bmN0KHdjLCAhbG9jYWxl LT5pbmZvLmJ1aWx0aW4uY2FzZW1hcF9mdWxsKTsKKwlzdHJ1Y3QgYnVpbHRpbl9wcm92aWRlciAq YnVpbHRpbjsKKworCWJ1aWx0aW4gPSAoc3RydWN0IGJ1aWx0aW5fcHJvdmlkZXIgKikgbG9jYWxl LT5wcm92aWRlcl9kYXRhOworCisJcmV0dXJuIHBnX3VfaXNwdW5jdCh3YywgIWJ1aWx0aW4tPmNh c2VtYXBfZnVsbCk7CiB9CiAKIHN0YXRpYyBib29sCkBAIC0yMDQsNiArMjM3LDcgQEAgcGdfbG9j YWxlX3QKIGNyZWF0ZV9wZ19sb2NhbGVfYnVpbHRpbihPaWQgY29sbGlkLCBNZW1vcnlDb250ZXh0 IGNvbnRleHQpCiB7CiAJY29uc3QgY2hhciAqbG9jc3RyOworCXN0cnVjdCBidWlsdGluX3Byb3Zp ZGVyICpidWlsdGluOwogCXBnX2xvY2FsZV90IHJlc3VsdDsKIAogCWlmIChjb2xsaWQgPT0gREVG QVVMVF9DT0xMQVRJT05fT0lEKQpAQCAtMjM3LDggKzI3MSwxMSBAQCBjcmVhdGVfcGdfbG9jYWxl X2J1aWx0aW4oT2lkIGNvbGxpZCwgTWVtb3J5Q29udGV4dCBjb250ZXh0KQogCiAJcmVzdWx0ID0g TWVtb3J5Q29udGV4dEFsbG9jWmVybyhjb250ZXh0LCBzaXplb2Yoc3RydWN0IHBnX2xvY2FsZV9z dHJ1Y3QpKTsKIAotCXJlc3VsdC0+aW5mby5idWlsdGluLmxvY2FsZSA9IE1lbW9yeUNvbnRleHRT dHJkdXAoY29udGV4dCwgbG9jc3RyKTsKLQlyZXN1bHQtPmluZm8uYnVpbHRpbi5jYXNlbWFwX2Z1 bGwgPSAoc3RyY21wKGxvY3N0ciwgIlBHX1VOSUNPREVfRkFTVCIpID09IDApOworCWJ1aWx0aW4g PSBNZW1vcnlDb250ZXh0QWxsb2NaZXJvKGNvbnRleHQsIHNpemVvZihzdHJ1Y3QgYnVpbHRpbl9w cm92aWRlcikpOworCWJ1aWx0aW4tPmxvY2FsZSA9IE1lbW9yeUNvbnRleHRTdHJkdXAoY29udGV4 dCwgbG9jc3RyKTsKKwlidWlsdGluLT5jYXNlbWFwX2Z1bGwgPSAoc3RyY21wKGxvY3N0ciwgIlBH X1VOSUNPREVfRkFTVCIpID09IDApOworCXJlc3VsdC0+cHJvdmlkZXJfZGF0YSA9ICh2b2lkICop IGJ1aWx0aW47CisKIAlyZXN1bHQtPmRldGVybWluaXN0aWMgPSB0cnVlOwogCXJlc3VsdC0+Y29s bGF0ZV9pc19jID0gdHJ1ZTsKIAlyZXN1bHQtPmN0eXBlX2lzX2MgPSAoc3RyY21wKGxvY3N0ciwg IkMiKSA9PSAwKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGVf aWN1LmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlX2ljdS5jCmluZGV4IGYwMDY4 NzQ5NDcxLi4xOWM1MTUwNGY4NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bn X2xvY2FsZV9pY3UuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlX2ljdS5j CkBAIC01MSw2ICs1MSwxMiBAQCBleHRlcm4gcGdfbG9jYWxlX3QgY3JlYXRlX3BnX2xvY2FsZV9p Y3UoT2lkIGNvbGxpZCwgTWVtb3J5Q29udGV4dCBjb250ZXh0KTsKIAogI2lmZGVmIFVTRV9JQ1UK IAorc3RydWN0IGljdV9wcm92aWRlcgoreworCWNvbnN0IGNoYXIgKmxvY2FsZTsKKwlVQ29sbGF0 b3IgICp1Y29sOworfTsKKwogZXh0ZXJuIFVDb2xsYXRvciAqcGdfdWNvbF9vcGVuKGNvbnN0IGNo YXIgKmxvY19zdHIpOwogCiBzdGF0aWMgc2l6ZV90IHN0cmxvd2VyX2ljdShjaGFyICpkc3QsIHNp emVfdCBkc3RzaXplLCBjb25zdCBjaGFyICpzcmMsCkBAIC0yNDIsNiArMjQ4LDcgQEAgY3JlYXRl X3BnX2xvY2FsZV9pY3UoT2lkIGNvbGxpZCwgTWVtb3J5Q29udGV4dCBjb250ZXh0KQogCWJvb2wJ CWRldGVybWluaXN0aWM7CiAJY29uc3QgY2hhciAqaWN1bG9jc3RyOwogCWNvbnN0IGNoYXIgKmlj dXJ1bGVzID0gTlVMTDsKKwlzdHJ1Y3QgaWN1X3Byb3ZpZGVyICppY3U7CiAJVUNvbGxhdG9yICAq Y29sbGF0b3I7CiAJcGdfbG9jYWxlX3QgcmVzdWx0OwogCkBAIC0yOTMsOCArMzAwLDEyIEBAIGNy ZWF0ZV9wZ19sb2NhbGVfaWN1KE9pZCBjb2xsaWQsIE1lbW9yeUNvbnRleHQgY29udGV4dCkKIAlj b2xsYXRvciA9IG1ha2VfaWN1X2NvbGxhdG9yKGljdWxvY3N0ciwgaWN1cnVsZXMpOwogCiAJcmVz dWx0ID0gTWVtb3J5Q29udGV4dEFsbG9jWmVybyhjb250ZXh0LCBzaXplb2Yoc3RydWN0IHBnX2xv Y2FsZV9zdHJ1Y3QpKTsKLQlyZXN1bHQtPmluZm8uaWN1LmxvY2FsZSA9IE1lbW9yeUNvbnRleHRT dHJkdXAoY29udGV4dCwgaWN1bG9jc3RyKTsKLQlyZXN1bHQtPmluZm8uaWN1LnVjb2wgPSBjb2xs YXRvcjsKKworCWljdSA9IE1lbW9yeUNvbnRleHRBbGxvY1plcm8oY29udGV4dCwgc2l6ZW9mKHN0 cnVjdCBpY3VfcHJvdmlkZXIpKTsKKwlpY3UtPmxvY2FsZSA9IE1lbW9yeUNvbnRleHRTdHJkdXAo Y29udGV4dCwgaWN1bG9jc3RyKTsKKwlpY3UtPnVjb2wgPSBjb2xsYXRvcjsKKwlyZXN1bHQtPnBy b3ZpZGVyX2RhdGEgPSAodm9pZCAqKSBpY3U7CisKIAlyZXN1bHQtPmRldGVybWluaXN0aWMgPSBk ZXRlcm1pbmlzdGljOwogCXJlc3VsdC0+Y29sbGF0ZV9pc19jID0gZmFsc2U7CiAJcmVzdWx0LT5j dHlwZV9pc19jID0gZmFsc2U7CkBAIC01NzAsMTEgKzU4MSwxMiBAQCBzdHJuY29sbF9pY3VfdXRm OChjb25zdCBjaGFyICphcmcxLCBzc2l6ZV90IGxlbjEsIGNvbnN0IGNoYXIgKmFyZzIsIHNzaXpl X3QgbGVuMgogewogCWludAkJCXJlc3VsdDsKIAlVRXJyb3JDb2RlCXN0YXR1czsKKwlzdHJ1Y3Qg aWN1X3Byb3ZpZGVyICppY3UgPSAoc3RydWN0IGljdV9wcm92aWRlciAqKSBsb2NhbGUtPnByb3Zp ZGVyX2RhdGE7CiAKIAlBc3NlcnQoR2V0RGF0YWJhc2VFbmNvZGluZygpID09IFBHX1VURjgpOwog CiAJc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotCXJlc3VsdCA9IHVjb2xfc3RyY29sbFVURjgobG9j YWxlLT5pbmZvLmljdS51Y29sLAorCXJlc3VsdCA9IHVjb2xfc3RyY29sbFVURjgoaWN1LT51Y29s LAogCQkJCQkJCSAgYXJnMSwgbGVuMSwKIAkJCQkJCQkgIGFyZzIsIGxlbjIsCiAJCQkJCQkJICAm c3RhdHVzKTsKQEAgLTU5OCw2ICs2MTAsOCBAQCBzdHJueGZybV9pY3UoY2hhciAqZGVzdCwgc2l6 ZV90IGRlc3RzaXplLCBjb25zdCBjaGFyICpzcmMsIHNzaXplX3Qgc3JjbGVuLAogCXNpemVfdAkJ dWNoYXJfYnNpemU7CiAJU2l6ZQkJcmVzdWx0X2JzaXplOwogCisJc3RydWN0IGljdV9wcm92aWRl ciAqaWN1ID0gKHN0cnVjdCBpY3VfcHJvdmlkZXIgKikgbG9jYWxlLT5wcm92aWRlcl9kYXRhOwor CiAJaW5pdF9pY3VfY29udmVydGVyKCk7CiAKIAl1bGVuID0gdWNoYXJfbGVuZ3RoKGljdV9jb252 ZXJ0ZXIsIHNyYywgc3JjbGVuKTsKQEAgLTYxMSw3ICs2MjUsNyBAQCBzdHJueGZybV9pY3UoY2hh ciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLCBjb25zdCBjaGFyICpzcmMsIHNzaXplX3Qgc3JjbGVu LAogCiAJdWxlbiA9IHVjaGFyX2NvbnZlcnQoaWN1X2NvbnZlcnRlciwgdWNoYXIsIHVsZW4gKyAx LCBzcmMsIHNyY2xlbik7CiAKLQlyZXN1bHRfYnNpemUgPSB1Y29sX2dldFNvcnRLZXkobG9jYWxl LT5pbmZvLmljdS51Y29sLAorCXJlc3VsdF9ic2l6ZSA9IHVjb2xfZ2V0U29ydEtleShpY3UtPnVj b2wsCiAJCQkJCQkJCSAgIHVjaGFyLCB1bGVuLAogCQkJCQkJCQkgICAodWludDhfdCAqKSBkZXN0 LCBkZXN0c2l6ZSk7CiAKQEAgLTY0MiwxMiArNjU2LDE0IEBAIHN0cm54ZnJtX3ByZWZpeF9pY3Vf dXRmOChjaGFyICpkZXN0LCBzaXplX3QgZGVzdHNpemUsCiAJdWludDMyX3QJc3RhdGVbMl07CiAJ VUVycm9yQ29kZQlzdGF0dXM7CiAKKwlzdHJ1Y3QgaWN1X3Byb3ZpZGVyICppY3UgPSAoc3RydWN0 IGljdV9wcm92aWRlciAqKSBsb2NhbGUtPnByb3ZpZGVyX2RhdGE7CisKIAlBc3NlcnQoR2V0RGF0 YWJhc2VFbmNvZGluZygpID09IFBHX1VURjgpOwogCiAJdWl0ZXJfc2V0VVRGOCgmaXRlciwgc3Jj LCBzcmNsZW4pOwogCXN0YXRlWzBdID0gc3RhdGVbMV0gPSAwOwkvKiB3b24ndCBuZWVkIHRoYXQg YWdhaW4gKi8KIAlzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0JcmVzdWx0ID0gdWNvbF9uZXh0U29y dEtleVBhcnQobG9jYWxlLT5pbmZvLmljdS51Y29sLAorCXJlc3VsdCA9IHVjb2xfbmV4dFNvcnRL ZXlQYXJ0KGljdS0+dWNvbCwKIAkJCQkJCQkJICAmaXRlciwKIAkJCQkJCQkJICBzdGF0ZSwKIAkJ CQkJCQkJICAodWludDhfdCAqKSBkZXN0LApAQCAtNzU0LDExICs3NzAsMTMgQEAgaWN1X2NvbnZl cnRfY2FzZShJQ1VfQ29udmVydF9GdW5jIGZ1bmMsIHBnX2xvY2FsZV90IG15bG9jYWxlLAogCVVF cnJvckNvZGUJc3RhdHVzOwogCWludDMyX3QJCWxlbl9kZXN0OwogCisJc3RydWN0IGljdV9wcm92 aWRlciAqaWN1ID0gKHN0cnVjdCBpY3VfcHJvdmlkZXIgKikgbXlsb2NhbGUtPnByb3ZpZGVyX2Rh dGE7CisKIAlsZW5fZGVzdCA9IGxlbl9zb3VyY2U7CQkvKiB0cnkgZmlyc3Qgd2l0aCBzYW1lIGxl bmd0aCAqLwogCSpidWZmX2Rlc3QgPSBwYWxsb2MobGVuX2Rlc3QgKiBzaXplb2YoKipidWZmX2Rl c3QpKTsKIAlzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAJbGVuX2Rlc3QgPSBmdW5jKCpidWZmX2Rl c3QsIGxlbl9kZXN0LCBidWZmX3NvdXJjZSwgbGVuX3NvdXJjZSwKLQkJCQkJbXlsb2NhbGUtPmlu Zm8uaWN1LmxvY2FsZSwgJnN0YXR1cyk7CisJCQkJCWljdS0+bG9jYWxlLCAmc3RhdHVzKTsKIAlp ZiAoc3RhdHVzID09IFVfQlVGRkVSX09WRVJGTE9XX0VSUk9SKQogCXsKIAkJLyogdHJ5IGFnYWlu IHdpdGggYWRqdXN0ZWQgbGVuZ3RoICovCkBAIC03NjYsNyArNzg0LDcgQEAgaWN1X2NvbnZlcnRf Y2FzZShJQ1VfQ29udmVydF9GdW5jIGZ1bmMsIHBnX2xvY2FsZV90IG15bG9jYWxlLAogCQkqYnVm Zl9kZXN0ID0gcGFsbG9jKGxlbl9kZXN0ICogc2l6ZW9mKCoqYnVmZl9kZXN0KSk7CiAJCXN0YXR1 cyA9IFVfWkVST19FUlJPUjsKIAkJbGVuX2Rlc3QgPSBmdW5jKCpidWZmX2Rlc3QsIGxlbl9kZXN0 LCBidWZmX3NvdXJjZSwgbGVuX3NvdXJjZSwKLQkJCQkJCW15bG9jYWxlLT5pbmZvLmljdS5sb2Nh bGUsICZzdGF0dXMpOworCQkJCQkJaWN1LT5sb2NhbGUsICZzdGF0dXMpOwogCX0KIAlpZiAoVV9G QUlMVVJFKHN0YXR1cykpCiAJCWVyZXBvcnQoRVJST1IsCkBAIC04NDAsNiArODU4LDggQEAgc3Ry bmNvbGxfaWN1KGNvbnN0IGNoYXIgKmFyZzEsIHNzaXplX3QgbGVuMSwKIAkJCSAgICp1Y2hhcjI7 CiAJaW50CQkJcmVzdWx0OwogCisJc3RydWN0IGljdV9wcm92aWRlciAqaWN1ID0gKHN0cnVjdCBp Y3VfcHJvdmlkZXIgKikgbG9jYWxlLT5wcm92aWRlcl9kYXRhOworCiAJLyogaWYgZW5jb2Rpbmcg aXMgVVRGOCwgdXNlIG1vcmUgZWZmaWNpZW50IHN0cm5jb2xsX2ljdV91dGY4ICovCiAjaWZkZWYg SEFWRV9VQ09MX1NUUkNPTExVVEY4CiAJQXNzZXJ0KEdldERhdGFiYXNlRW5jb2RpbmcoKSAhPSBQ R19VVEY4KTsKQEAgLTg2Miw3ICs4ODIsNyBAQCBzdHJuY29sbF9pY3UoY29uc3QgY2hhciAqYXJn MSwgc3NpemVfdCBsZW4xLAogCXVsZW4xID0gdWNoYXJfY29udmVydChpY3VfY29udmVydGVyLCB1 Y2hhcjEsIHVsZW4xICsgMSwgYXJnMSwgbGVuMSk7CiAJdWxlbjIgPSB1Y2hhcl9jb252ZXJ0KGlj dV9jb252ZXJ0ZXIsIHVjaGFyMiwgdWxlbjIgKyAxLCBhcmcyLCBsZW4yKTsKIAotCXJlc3VsdCA9 IHVjb2xfc3RyY29sbChsb2NhbGUtPmluZm8uaWN1LnVjb2wsCisJcmVzdWx0ID0gdWNvbF9zdHJj b2xsKGljdS0+dWNvbCwKIAkJCQkJCSAgdWNoYXIxLCB1bGVuMSwKIAkJCQkJCSAgdWNoYXIyLCB1 bGVuMik7CiAKQEAgLTg4OCw2ICs5MDgsOCBAQCBzdHJueGZybV9wcmVmaXhfaWN1KGNoYXIgKmRl c3QsIHNpemVfdCBkZXN0c2l6ZSwKIAlzaXplX3QJCXVjaGFyX2JzaXplOwogCVNpemUJCXJlc3Vs dF9ic2l6ZTsKIAorCXN0cnVjdCBpY3VfcHJvdmlkZXIgKmljdSA9IChzdHJ1Y3QgaWN1X3Byb3Zp ZGVyICopIGxvY2FsZS0+cHJvdmlkZXJfZGF0YTsKKwogCS8qIGlmIGVuY29kaW5nIGlzIFVURjgs IHVzZSBtb3JlIGVmZmljaWVudCBzdHJueGZybV9wcmVmaXhfaWN1X3V0ZjggKi8KIAlBc3NlcnQo R2V0RGF0YWJhc2VFbmNvZGluZygpICE9IFBHX1VURjgpOwogCkBAIC05MDcsNyArOTI5LDcgQEAg c3Rybnhmcm1fcHJlZml4X2ljdShjaGFyICpkZXN0LCBzaXplX3QgZGVzdHNpemUsCiAJdWl0ZXJf c2V0U3RyaW5nKCZpdGVyLCB1Y2hhciwgdWxlbik7CiAJc3RhdGVbMF0gPSBzdGF0ZVsxXSA9IDA7 CS8qIHdvbid0IG5lZWQgdGhhdCBhZ2FpbiAqLwogCXN0YXR1cyA9IFVfWkVST19FUlJPUjsKLQly ZXN1bHRfYnNpemUgPSB1Y29sX25leHRTb3J0S2V5UGFydChsb2NhbGUtPmluZm8uaWN1LnVjb2ws CisJcmVzdWx0X2JzaXplID0gdWNvbF9uZXh0U29ydEtleVBhcnQoaWN1LT51Y29sLAogCQkJCQkJ CQkJCSZpdGVyLAogCQkJCQkJCQkJCXN0YXRlLAogCQkJCQkJCQkJCSh1aW50OF90ICopIGRlc3Qs CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlX2xpYmMuYyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGVfbGliYy5jCmluZGV4IDE1ODJmOGNkZDJhLi5k MzU3OTYyZWJkZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZV9s aWJjLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZV9saWJjLmMKQEAgLTEs MyArMSw0IEBACisKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCiAgKiBQb3N0Z3JlU1FMIGxvY2FsZSB1 dGlsaXRpZXMgZm9yIGxpYmMKQEAgLTQxLDYgKzQyLDExIEBACiAgKi8KICNkZWZpbmUJCVRFWFRC VUZMRU4JCQkxMDI0CiAKK3N0cnVjdCBsaWJjX3Byb3ZpZGVyCit7CisJbG9jYWxlX3QJbHQ7Cit9 OworCiBleHRlcm4gcGdfbG9jYWxlX3QgY3JlYXRlX3BnX2xvY2FsZV9saWJjKE9pZCBjb2xsaWQs IE1lbW9yeUNvbnRleHQgY29udGV4dCk7CiAKIHN0YXRpYyBpbnQJc3RybmNvbGxfbGliYyhjb25z dCBjaGFyICphcmcxLCBzc2l6ZV90IGxlbjEsCkBAIC04MiwxMTYgKzg4LDE1NCBAQCBzdGF0aWMg c2l6ZV90IHN0cnVwcGVyX2xpYmNfbWIoY2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLAogc3Rh dGljIGJvb2wKIHdjX2lzZGlnaXRfbGliY19zYihwZ193Y2hhciB3YywgcGdfbG9jYWxlX3QgbG9j YWxlKQogewotCXJldHVybiBpc2RpZ2l0X2woKHVuc2lnbmVkIGNoYXIpIHdjLCBsb2NhbGUtPmlu Zm8ubHQpOworCXN0cnVjdCBsaWJjX3Byb3ZpZGVyICpsaWJjID0gKHN0cnVjdCBsaWJjX3Byb3Zp ZGVyICopIGxvY2FsZS0+cHJvdmlkZXJfZGF0YTsKKworCXJldHVybiBpc2RpZ2l0X2woKHVuc2ln bmVkIGNoYXIpIHdjLCBsaWJjLT5sdCk7CiB9CiAKIHN0YXRpYyBib29sCiB3Y19pc2FscGhhX2xp YmNfc2IocGdfd2NoYXIgd2MsIHBnX2xvY2FsZV90IGxvY2FsZSkKIHsKLQlyZXR1cm4gaXNhbHBo YV9sKCh1bnNpZ25lZCBjaGFyKSB3YywgbG9jYWxlLT5pbmZvLmx0KTsKKwlzdHJ1Y3QgbGliY19w cm92aWRlciAqbGliYyA9IChzdHJ1Y3QgbGliY19wcm92aWRlciAqKSBsb2NhbGUtPnByb3ZpZGVy X2RhdGE7CisKKwlyZXR1cm4gaXNhbHBoYV9sKCh1bnNpZ25lZCBjaGFyKSB3YywgbGliYy0+bHQp OwogfQogCiBzdGF0aWMgYm9vbAogd2NfaXNhbG51bV9saWJjX3NiKHBnX3djaGFyIHdjLCBwZ19s b2NhbGVfdCBsb2NhbGUpCiB7Ci0JcmV0dXJuIGlzYWxudW1fbCgodW5zaWduZWQgY2hhcikgd2Ms IGxvY2FsZS0+aW5mby5sdCk7CisJc3RydWN0IGxpYmNfcHJvdmlkZXIgKmxpYmMgPSAoc3RydWN0 IGxpYmNfcHJvdmlkZXIgKikgbG9jYWxlLT5wcm92aWRlcl9kYXRhOworCisJcmV0dXJuIGlzYWxu dW1fbCgodW5zaWduZWQgY2hhcikgd2MsIGxpYmMtPmx0KTsKIH0KIAogc3RhdGljIGJvb2wKIHdj X2lzdXBwZXJfbGliY19zYihwZ193Y2hhciB3YywgcGdfbG9jYWxlX3QgbG9jYWxlKQogewotCXJl dHVybiBpc3VwcGVyX2woKHVuc2lnbmVkIGNoYXIpIHdjLCBsb2NhbGUtPmluZm8ubHQpOworCXN0 cnVjdCBsaWJjX3Byb3ZpZGVyICpsaWJjID0gKHN0cnVjdCBsaWJjX3Byb3ZpZGVyICopIGxvY2Fs ZS0+cHJvdmlkZXJfZGF0YTsKKworCXJldHVybiBpc3VwcGVyX2woKHVuc2lnbmVkIGNoYXIpIHdj LCBsaWJjLT5sdCk7CiB9CiAKIHN0YXRpYyBib29sCiB3Y19pc2xvd2VyX2xpYmNfc2IocGdfd2No YXIgd2MsIHBnX2xvY2FsZV90IGxvY2FsZSkKIHsKLQlyZXR1cm4gaXNsb3dlcl9sKCh1bnNpZ25l ZCBjaGFyKSB3YywgbG9jYWxlLT5pbmZvLmx0KTsKKwlzdHJ1Y3QgbGliY19wcm92aWRlciAqbGli YyA9IChzdHJ1Y3QgbGliY19wcm92aWRlciAqKSBsb2NhbGUtPnByb3ZpZGVyX2RhdGE7CisKKwly ZXR1cm4gaXNsb3dlcl9sKCh1bnNpZ25lZCBjaGFyKSB3YywgbGliYy0+bHQpOwogfQogCiBzdGF0 aWMgYm9vbAogd2NfaXNncmFwaF9saWJjX3NiKHBnX3djaGFyIHdjLCBwZ19sb2NhbGVfdCBsb2Nh bGUpCiB7Ci0JcmV0dXJuIGlzZ3JhcGhfbCgodW5zaWduZWQgY2hhcikgd2MsIGxvY2FsZS0+aW5m by5sdCk7CisJc3RydWN0IGxpYmNfcHJvdmlkZXIgKmxpYmMgPSAoc3RydWN0IGxpYmNfcHJvdmlk ZXIgKikgbG9jYWxlLT5wcm92aWRlcl9kYXRhOworCisJcmV0dXJuIGlzZ3JhcGhfbCgodW5zaWdu ZWQgY2hhcikgd2MsIGxpYmMtPmx0KTsKIH0KIAogc3RhdGljIGJvb2wKIHdjX2lzcHJpbnRfbGli Y19zYihwZ193Y2hhciB3YywgcGdfbG9jYWxlX3QgbG9jYWxlKQogewotCXJldHVybiBpc3ByaW50 X2woKHVuc2lnbmVkIGNoYXIpIHdjLCBsb2NhbGUtPmluZm8ubHQpOworCXN0cnVjdCBsaWJjX3By b3ZpZGVyICpsaWJjID0gKHN0cnVjdCBsaWJjX3Byb3ZpZGVyICopIGxvY2FsZS0+cHJvdmlkZXJf ZGF0YTsKKworCXJldHVybiBpc3ByaW50X2woKHVuc2lnbmVkIGNoYXIpIHdjLCBsaWJjLT5sdCk7 CiB9CiAKIHN0YXRpYyBib29sCiB3Y19pc3B1bmN0X2xpYmNfc2IocGdfd2NoYXIgd2MsIHBnX2xv Y2FsZV90IGxvY2FsZSkKIHsKLQlyZXR1cm4gaXNwdW5jdF9sKCh1bnNpZ25lZCBjaGFyKSB3Yywg bG9jYWxlLT5pbmZvLmx0KTsKKwlzdHJ1Y3QgbGliY19wcm92aWRlciAqbGliYyA9IChzdHJ1Y3Qg bGliY19wcm92aWRlciAqKSBsb2NhbGUtPnByb3ZpZGVyX2RhdGE7CisKKwlyZXR1cm4gaXNwdW5j dF9sKCh1bnNpZ25lZCBjaGFyKSB3YywgbGliYy0+bHQpOwogfQogCiBzdGF0aWMgYm9vbAogd2Nf aXNzcGFjZV9saWJjX3NiKHBnX3djaGFyIHdjLCBwZ19sb2NhbGVfdCBsb2NhbGUpCiB7Ci0JcmV0 dXJuIGlzc3BhY2VfbCgodW5zaWduZWQgY2hhcikgd2MsIGxvY2FsZS0+aW5mby5sdCk7CisJc3Ry dWN0IGxpYmNfcHJvdmlkZXIgKmxpYmMgPSAoc3RydWN0IGxpYmNfcHJvdmlkZXIgKikgbG9jYWxl LT5wcm92aWRlcl9kYXRhOworCisJcmV0dXJuIGlzc3BhY2VfbCgodW5zaWduZWQgY2hhcikgd2Ms IGxpYmMtPmx0KTsKIH0KIAogc3RhdGljIGJvb2wKIHdjX2lzZGlnaXRfbGliY19tYihwZ193Y2hh ciB3YywgcGdfbG9jYWxlX3QgbG9jYWxlKQogewotCXJldHVybiBpc3dkaWdpdF9sKCh3aW50X3Qp IHdjLCBsb2NhbGUtPmluZm8ubHQpOworCXN0cnVjdCBsaWJjX3Byb3ZpZGVyICpsaWJjID0gKHN0 cnVjdCBsaWJjX3Byb3ZpZGVyICopIGxvY2FsZS0+cHJvdmlkZXJfZGF0YTsKKworCXJldHVybiBp c3dkaWdpdF9sKCh3aW50X3QpIHdjLCBsaWJjLT5sdCk7CiB9CiAKIHN0YXRpYyBib29sCiB3Y19p c2FscGhhX2xpYmNfbWIocGdfd2NoYXIgd2MsIHBnX2xvY2FsZV90IGxvY2FsZSkKIHsKLQlyZXR1 cm4gaXN3YWxwaGFfbCgod2ludF90KSB3YywgbG9jYWxlLT5pbmZvLmx0KTsKKwlzdHJ1Y3QgbGli Y19wcm92aWRlciAqbGliYyA9IChzdHJ1Y3QgbGliY19wcm92aWRlciAqKSBsb2NhbGUtPnByb3Zp ZGVyX2RhdGE7CisKKwlyZXR1cm4gaXN3YWxwaGFfbCgod2ludF90KSB3YywgbGliYy0+bHQpOwog fQogCiBzdGF0aWMgYm9vbAogd2NfaXNhbG51bV9saWJjX21iKHBnX3djaGFyIHdjLCBwZ19sb2Nh bGVfdCBsb2NhbGUpCiB7Ci0JcmV0dXJuIGlzd2FsbnVtX2woKHdpbnRfdCkgd2MsIGxvY2FsZS0+ aW5mby5sdCk7CisJc3RydWN0IGxpYmNfcHJvdmlkZXIgKmxpYmMgPSAoc3RydWN0IGxpYmNfcHJv dmlkZXIgKikgbG9jYWxlLT5wcm92aWRlcl9kYXRhOworCisJcmV0dXJuIGlzd2FsbnVtX2woKHdp bnRfdCkgd2MsIGxpYmMtPmx0KTsKIH0KIAogc3RhdGljIGJvb2wKIHdjX2lzdXBwZXJfbGliY19t YihwZ193Y2hhciB3YywgcGdfbG9jYWxlX3QgbG9jYWxlKQogewotCXJldHVybiBpc3d1cHBlcl9s KCh3aW50X3QpIHdjLCBsb2NhbGUtPmluZm8ubHQpOworCXN0cnVjdCBsaWJjX3Byb3ZpZGVyICps aWJjID0gKHN0cnVjdCBsaWJjX3Byb3ZpZGVyICopIGxvY2FsZS0+cHJvdmlkZXJfZGF0YTsKKwor CXJldHVybiBpc3d1cHBlcl9sKCh3aW50X3QpIHdjLCBsaWJjLT5sdCk7CiB9CiAKIHN0YXRpYyBi b29sCiB3Y19pc2xvd2VyX2xpYmNfbWIocGdfd2NoYXIgd2MsIHBnX2xvY2FsZV90IGxvY2FsZSkK IHsKLQlyZXR1cm4gaXN3bG93ZXJfbCgod2ludF90KSB3YywgbG9jYWxlLT5pbmZvLmx0KTsKKwlz dHJ1Y3QgbGliY19wcm92aWRlciAqbGliYyA9IChzdHJ1Y3QgbGliY19wcm92aWRlciAqKSBsb2Nh bGUtPnByb3ZpZGVyX2RhdGE7CisKKwlyZXR1cm4gaXN3bG93ZXJfbCgod2ludF90KSB3YywgbGli Yy0+bHQpOwogfQogCiBzdGF0aWMgYm9vbAogd2NfaXNncmFwaF9saWJjX21iKHBnX3djaGFyIHdj LCBwZ19sb2NhbGVfdCBsb2NhbGUpCiB7Ci0JcmV0dXJuIGlzd2dyYXBoX2woKHdpbnRfdCkgd2Ms IGxvY2FsZS0+aW5mby5sdCk7CisJc3RydWN0IGxpYmNfcHJvdmlkZXIgKmxpYmMgPSAoc3RydWN0 IGxpYmNfcHJvdmlkZXIgKikgbG9jYWxlLT5wcm92aWRlcl9kYXRhOworCisJcmV0dXJuIGlzd2dy YXBoX2woKHdpbnRfdCkgd2MsIGxpYmMtPmx0KTsKIH0KIAogc3RhdGljIGJvb2wKIHdjX2lzcHJp bnRfbGliY19tYihwZ193Y2hhciB3YywgcGdfbG9jYWxlX3QgbG9jYWxlKQogewotCXJldHVybiBp c3dwcmludF9sKCh3aW50X3QpIHdjLCBsb2NhbGUtPmluZm8ubHQpOworCXN0cnVjdCBsaWJjX3By b3ZpZGVyICpsaWJjID0gKHN0cnVjdCBsaWJjX3Byb3ZpZGVyICopIGxvY2FsZS0+cHJvdmlkZXJf ZGF0YTsKKworCXJldHVybiBpc3dwcmludF9sKCh3aW50X3QpIHdjLCBsaWJjLT5sdCk7CiB9CiAK IHN0YXRpYyBib29sCiB3Y19pc3B1bmN0X2xpYmNfbWIocGdfd2NoYXIgd2MsIHBnX2xvY2FsZV90 IGxvY2FsZSkKIHsKLQlyZXR1cm4gaXN3cHVuY3RfbCgod2ludF90KSB3YywgbG9jYWxlLT5pbmZv Lmx0KTsKKwlzdHJ1Y3QgbGliY19wcm92aWRlciAqbGliYyA9IChzdHJ1Y3QgbGliY19wcm92aWRl ciAqKSBsb2NhbGUtPnByb3ZpZGVyX2RhdGE7CisKKwlyZXR1cm4gaXN3cHVuY3RfbCgod2ludF90 KSB3YywgbGliYy0+bHQpOwogfQogCiBzdGF0aWMgYm9vbAogd2NfaXNzcGFjZV9saWJjX21iKHBn X3djaGFyIHdjLCBwZ19sb2NhbGVfdCBsb2NhbGUpCiB7Ci0JcmV0dXJuIGlzd3NwYWNlX2woKHdp bnRfdCkgd2MsIGxvY2FsZS0+aW5mby5sdCk7CisJc3RydWN0IGxpYmNfcHJvdmlkZXIgKmxpYmMg PSAoc3RydWN0IGxpYmNfcHJvdmlkZXIgKikgbG9jYWxlLT5wcm92aWRlcl9kYXRhOworCisJcmV0 dXJuIGlzd3NwYWNlX2woKHdpbnRfdCkgd2MsIGxpYmMtPmx0KTsKIH0KIAogc3RhdGljIGNoYXIK IGNoYXJfdG9sb3dlcl9saWJjKHVuc2lnbmVkIGNoYXIgY2gsIHBnX2xvY2FsZV90IGxvY2FsZSkK IHsKKwlzdHJ1Y3QgbGliY19wcm92aWRlciAqbGliYyA9IChzdHJ1Y3QgbGliY19wcm92aWRlciAq KSBsb2NhbGUtPnByb3ZpZGVyX2RhdGE7CisKIAlBc3NlcnQocGdfZGF0YWJhc2VfZW5jb2Rpbmdf bWF4X2xlbmd0aCgpID09IDEpOwotCXJldHVybiB0b2xvd2VyX2woY2gsIGxvY2FsZS0+aW5mby5s dCk7CisJcmV0dXJuIHRvbG93ZXJfbChjaCwgbGliYy0+bHQpOwogfQogCiBzdGF0aWMgYm9vbApA QCAtMTk5LDE5ICsyNDMsMjMgQEAgY2hhcl9pc19jYXNlZF9saWJjKGNoYXIgY2gsIHBnX2xvY2Fs ZV90IGxvY2FsZSkKIHsKIAlib29sCQlpc19tdWx0aWJ5dGUgPSBwZ19kYXRhYmFzZV9lbmNvZGlu Z19tYXhfbGVuZ3RoKCkgPiAxOwogCisJc3RydWN0IGxpYmNfcHJvdmlkZXIgKmxpYmMgPSAoc3Ry dWN0IGxpYmNfcHJvdmlkZXIgKikgbG9jYWxlLT5wcm92aWRlcl9kYXRhOworCiAJaWYgKGlzX211 bHRpYnl0ZSAmJiBJU19ISUdIQklUX1NFVChjaCkpCiAJCXJldHVybiB0cnVlOwogCWVsc2UKLQkJ cmV0dXJuIGlzYWxwaGFfbCgodW5zaWduZWQgY2hhcikgY2gsIGxvY2FsZS0+aW5mby5sdCk7CisJ CXJldHVybiBpc2FscGhhX2woKHVuc2lnbmVkIGNoYXIpIGNoLCBsaWJjLT5sdCk7CiB9CiAKIHN0 YXRpYyBwZ193Y2hhcgogdG91cHBlcl9saWJjX3NiKHBnX3djaGFyIHdjLCBwZ19sb2NhbGVfdCBs b2NhbGUpCiB7CisJc3RydWN0IGxpYmNfcHJvdmlkZXIgKmxpYmMgPSAoc3RydWN0IGxpYmNfcHJv dmlkZXIgKikgbG9jYWxlLT5wcm92aWRlcl9kYXRhOworCiAJQXNzZXJ0KEdldERhdGFiYXNlRW5j b2RpbmcoKSAhPSBQR19VVEY4KTsKIAogCWlmICh3YyA8PSAocGdfd2NoYXIpIFVDSEFSX01BWCkK LQkJcmV0dXJuIHRvdXBwZXJfbCgodW5zaWduZWQgY2hhcikgd2MsIGxvY2FsZS0+aW5mby5sdCk7 CisJCXJldHVybiB0b3VwcGVyX2woKHVuc2lnbmVkIGNoYXIpIHdjLCBsaWJjLT5sdCk7CiAJZWxz ZQogCQlyZXR1cm4gd2M7CiB9CkBAIC0yMTksMTAgKzI2NywxMiBAQCB0b3VwcGVyX2xpYmNfc2Io cGdfd2NoYXIgd2MsIHBnX2xvY2FsZV90IGxvY2FsZSkKIHN0YXRpYyBwZ193Y2hhcgogdG91cHBl cl9saWJjX21iKHBnX3djaGFyIHdjLCBwZ19sb2NhbGVfdCBsb2NhbGUpCiB7CisJc3RydWN0IGxp YmNfcHJvdmlkZXIgKmxpYmMgPSAoc3RydWN0IGxpYmNfcHJvdmlkZXIgKikgbG9jYWxlLT5wcm92 aWRlcl9kYXRhOworCiAJQXNzZXJ0KEdldERhdGFiYXNlRW5jb2RpbmcoKSA9PSBQR19VVEY4KTsK IAogCWlmIChzaXplb2Yod2NoYXJfdCkgPj0gNCB8fCB3YyA8PSAocGdfd2NoYXIpIDB4RkZGRikK LQkJcmV0dXJuIHRvd3VwcGVyX2woKHdpbnRfdCkgd2MsIGxvY2FsZS0+aW5mby5sdCk7CisJCXJl dHVybiB0b3d1cHBlcl9sKCh3aW50X3QpIHdjLCBsaWJjLT5sdCk7CiAJZWxzZQogCQlyZXR1cm4g d2M7CiB9CkBAIC0yMzAsMTAgKzI4MCwxMiBAQCB0b3VwcGVyX2xpYmNfbWIocGdfd2NoYXIgd2Ms IHBnX2xvY2FsZV90IGxvY2FsZSkKIHN0YXRpYyBwZ193Y2hhcgogdG9sb3dlcl9saWJjX3NiKHBn X3djaGFyIHdjLCBwZ19sb2NhbGVfdCBsb2NhbGUpCiB7CisJc3RydWN0IGxpYmNfcHJvdmlkZXIg KmxpYmMgPSAoc3RydWN0IGxpYmNfcHJvdmlkZXIgKikgbG9jYWxlLT5wcm92aWRlcl9kYXRhOwor CiAJQXNzZXJ0KEdldERhdGFiYXNlRW5jb2RpbmcoKSAhPSBQR19VVEY4KTsKIAogCWlmICh3YyA8 PSAocGdfd2NoYXIpIFVDSEFSX01BWCkKLQkJcmV0dXJuIHRvbG93ZXJfbCgodW5zaWduZWQgY2hh cikgd2MsIGxvY2FsZS0+aW5mby5sdCk7CisJCXJldHVybiB0b2xvd2VyX2woKHVuc2lnbmVkIGNo YXIpIHdjLCBsaWJjLT5sdCk7CiAJZWxzZQogCQlyZXR1cm4gd2M7CiB9CkBAIC0yNDEsMTAgKzI5 MywxMiBAQCB0b2xvd2VyX2xpYmNfc2IocGdfd2NoYXIgd2MsIHBnX2xvY2FsZV90IGxvY2FsZSkK IHN0YXRpYyBwZ193Y2hhcgogdG9sb3dlcl9saWJjX21iKHBnX3djaGFyIHdjLCBwZ19sb2NhbGVf dCBsb2NhbGUpCiB7CisJc3RydWN0IGxpYmNfcHJvdmlkZXIgKmxpYmMgPSAoc3RydWN0IGxpYmNf cHJvdmlkZXIgKikgbG9jYWxlLT5wcm92aWRlcl9kYXRhOworCiAJQXNzZXJ0KEdldERhdGFiYXNl RW5jb2RpbmcoKSA9PSBQR19VVEY4KTsKIAogCWlmIChzaXplb2Yod2NoYXJfdCkgPj0gNCB8fCB3 YyA8PSAocGdfd2NoYXIpIDB4RkZGRikKLQkJcmV0dXJuIHRvd2xvd2VyX2woKHdpbnRfdCkgd2Ms IGxvY2FsZS0+aW5mby5sdCk7CisJCXJldHVybiB0b3dsb3dlcl9sKCh3aW50X3QpIHdjLCBsaWJj LT5sdCk7CiAJZWxzZQogCQlyZXR1cm4gd2M7CiB9CkBAIC0zNTUsNyArNDA5LDcgQEAgc3RybG93 ZXJfbGliY19zYihjaGFyICpkZXN0LCBzaXplX3QgZGVzdHNpemUsIGNvbnN0IGNoYXIgKnNyYywg c3NpemVfdCBzcmNsZW4sCiAKIAlpZiAoc3JjbGVuICsgMSA8PSBkZXN0c2l6ZSkKIAl7Ci0JCWxv Y2FsZV90CWxvYyA9IGxvY2FsZS0+aW5mby5sdDsKKwkJc3RydWN0IGxpYmNfcHJvdmlkZXIgKmxp YmMgPSAoc3RydWN0IGxpYmNfcHJvdmlkZXIgKikgbG9jYWxlLT5wcm92aWRlcl9kYXRhOwogCQlj aGFyCSAgICpwOwogCiAJCWlmIChzcmNsZW4gKyAxID4gZGVzdHNpemUpCkBAIC0zNzYsNyArNDMw LDcgQEAgc3RybG93ZXJfbGliY19zYihjaGFyICpkZXN0LCBzaXplX3QgZGVzdHNpemUsIGNvbnN0 IGNoYXIgKnNyYywgc3NpemVfdCBzcmNsZW4sCiAJCQlpZiAobG9jYWxlLT5pc19kZWZhdWx0KQog CQkJCSpwID0gcGdfdG9sb3dlcigodW5zaWduZWQgY2hhcikgKnApOwogCQkJZWxzZQotCQkJCSpw ID0gdG9sb3dlcl9sKCh1bnNpZ25lZCBjaGFyKSAqcCwgbG9jKTsKKwkJCQkqcCA9IHRvbG93ZXJf bCgodW5zaWduZWQgY2hhcikgKnAsIGxpYmMtPmx0KTsKIAkJfQogCX0KIApAQCAtMzg3LDcgKzQ0 MSw4IEBAIHN0YXRpYyBzaXplX3QKIHN0cmxvd2VyX2xpYmNfbWIoY2hhciAqZGVzdCwgc2l6ZV90 IGRlc3RzaXplLCBjb25zdCBjaGFyICpzcmMsIHNzaXplX3Qgc3JjbGVuLAogCQkJCSBwZ19sb2Nh bGVfdCBsb2NhbGUpCiB7Ci0JbG9jYWxlX3QJbG9jID0gbG9jYWxlLT5pbmZvLmx0OworCXN0cnVj dCBsaWJjX3Byb3ZpZGVyICpsaWJjID0gKHN0cnVjdCBsaWJjX3Byb3ZpZGVyICopIGxvY2FsZS0+ cHJvdmlkZXJfZGF0YTsKKwogCXNpemVfdAkJcmVzdWx0X3NpemU7CiAJd2NoYXJfdCAgICAqd29y a3NwYWNlOwogCWNoYXIJICAgKnJlc3VsdDsKQEAgLTQwOSw3ICs0NjQsNyBAQCBzdHJsb3dlcl9s aWJjX21iKGNoYXIgKmRlc3QsIHNpemVfdCBkZXN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLCBzc2l6 ZV90IHNyY2xlbiwKIAljaGFyMndjaGFyKHdvcmtzcGFjZSwgc3JjbGVuICsgMSwgc3JjLCBzcmNs ZW4sIGxvY2FsZSk7CiAKIAlmb3IgKGN1cnJfY2hhciA9IDA7IHdvcmtzcGFjZVtjdXJyX2NoYXJd ICE9IDA7IGN1cnJfY2hhcisrKQotCQl3b3Jrc3BhY2VbY3Vycl9jaGFyXSA9IHRvd2xvd2VyX2wo d29ya3NwYWNlW2N1cnJfY2hhcl0sIGxvYyk7CisJCXdvcmtzcGFjZVtjdXJyX2NoYXJdID0gdG93 bG93ZXJfbCh3b3Jrc3BhY2VbY3Vycl9jaGFyXSwgbGliYy0+bHQpOwogCiAJLyoKIAkgKiBNYWtl IHJlc3VsdCBsYXJnZSBlbm91Z2g7IGNhc2UgY2hhbmdlIG1pZ2h0IGNoYW5nZSBudW1iZXIgb2Yg Ynl0ZXMKQEAgLTQ0MCw3ICs0OTUsNyBAQCBzdHJ0aXRsZV9saWJjX3NiKGNoYXIgKmRlc3QsIHNp emVfdCBkZXN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLCBzc2l6ZV90IHNyY2xlbiwKIAogCWlmIChz cmNsZW4gKyAxIDw9IGRlc3RzaXplKQogCXsKLQkJbG9jYWxlX3QJbG9jID0gbG9jYWxlLT5pbmZv Lmx0OworCQlzdHJ1Y3QgbGliY19wcm92aWRlciAqbGliYyA9IChzdHJ1Y3QgbGliY19wcm92aWRl ciAqKSBsb2NhbGUtPnByb3ZpZGVyX2RhdGE7CiAJCWludAkJCXdhc2FsbnVtID0gZmFsc2U7CiAJ CWNoYXIJICAgKnA7CiAKQEAgLTQ2NiwxMSArNTIxLDExIEBAIHN0cnRpdGxlX2xpYmNfc2IoY2hh ciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLCBjb25zdCBjaGFyICpzcmMsIHNzaXplX3Qgc3JjbGVu LAogCQkJZWxzZQogCQkJewogCQkJCWlmICh3YXNhbG51bSkKLQkJCQkJKnAgPSB0b2xvd2VyX2wo KHVuc2lnbmVkIGNoYXIpICpwLCBsb2MpOworCQkJCQkqcCA9IHRvbG93ZXJfbCgodW5zaWduZWQg Y2hhcikgKnAsIGxpYmMtPmx0KTsKIAkJCQllbHNlCi0JCQkJCSpwID0gdG91cHBlcl9sKCh1bnNp Z25lZCBjaGFyKSAqcCwgbG9jKTsKKwkJCQkJKnAgPSB0b3VwcGVyX2woKHVuc2lnbmVkIGNoYXIp ICpwLCBsaWJjLT5sdCk7CiAJCQl9Ci0JCQl3YXNhbG51bSA9IGlzYWxudW1fbCgodW5zaWduZWQg Y2hhcikgKnAsIGxvYyk7CisJCQl3YXNhbG51bSA9IGlzYWxudW1fbCgodW5zaWduZWQgY2hhcikg KnAsIGxpYmMtPmx0KTsKIAkJfQogCX0KIApAQCAtNDgxLDcgKzUzNiw4IEBAIHN0YXRpYyBzaXpl X3QKIHN0cnRpdGxlX2xpYmNfbWIoY2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLCBjb25zdCBj aGFyICpzcmMsIHNzaXplX3Qgc3JjbGVuLAogCQkJCSBwZ19sb2NhbGVfdCBsb2NhbGUpCiB7Ci0J bG9jYWxlX3QJbG9jID0gbG9jYWxlLT5pbmZvLmx0OworCXN0cnVjdCBsaWJjX3Byb3ZpZGVyICps aWJjID0gKHN0cnVjdCBsaWJjX3Byb3ZpZGVyICopIGxvY2FsZS0+cHJvdmlkZXJfZGF0YTsKKwog CWludAkJCXdhc2FsbnVtID0gZmFsc2U7CiAJc2l6ZV90CQlyZXN1bHRfc2l6ZTsKIAl3Y2hhcl90 ICAgICp3b3Jrc3BhY2U7CkBAIC01MDYsMTAgKzU2MiwxMCBAQCBzdHJ0aXRsZV9saWJjX21iKGNo YXIgKmRlc3QsIHNpemVfdCBkZXN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLCBzc2l6ZV90IHNyY2xl biwKIAlmb3IgKGN1cnJfY2hhciA9IDA7IHdvcmtzcGFjZVtjdXJyX2NoYXJdICE9IDA7IGN1cnJf Y2hhcisrKQogCXsKIAkJaWYgKHdhc2FsbnVtKQotCQkJd29ya3NwYWNlW2N1cnJfY2hhcl0gPSB0 b3dsb3dlcl9sKHdvcmtzcGFjZVtjdXJyX2NoYXJdLCBsb2MpOworCQkJd29ya3NwYWNlW2N1cnJf Y2hhcl0gPSB0b3dsb3dlcl9sKHdvcmtzcGFjZVtjdXJyX2NoYXJdLCBsaWJjLT5sdCk7CiAJCWVs c2UKLQkJCXdvcmtzcGFjZVtjdXJyX2NoYXJdID0gdG93dXBwZXJfbCh3b3Jrc3BhY2VbY3Vycl9j aGFyXSwgbG9jKTsKLQkJd2FzYWxudW0gPSBpc3dhbG51bV9sKHdvcmtzcGFjZVtjdXJyX2NoYXJd LCBsb2MpOworCQkJd29ya3NwYWNlW2N1cnJfY2hhcl0gPSB0b3d1cHBlcl9sKHdvcmtzcGFjZVtj dXJyX2NoYXJdLCBsaWJjLT5sdCk7CisJCXdhc2FsbnVtID0gaXN3YWxudW1fbCh3b3Jrc3BhY2Vb Y3Vycl9jaGFyXSwgbGliYy0+bHQpOwogCX0KIAogCS8qCkBAIC01NDEsNyArNTk3LDcgQEAgc3Ry dXBwZXJfbGliY19zYihjaGFyICpkZXN0LCBzaXplX3QgZGVzdHNpemUsIGNvbnN0IGNoYXIgKnNy Yywgc3NpemVfdCBzcmNsZW4sCiAKIAlpZiAoc3JjbGVuICsgMSA8PSBkZXN0c2l6ZSkKIAl7Ci0J CWxvY2FsZV90CWxvYyA9IGxvY2FsZS0+aW5mby5sdDsKKwkJc3RydWN0IGxpYmNfcHJvdmlkZXIg KmxpYmMgPSAoc3RydWN0IGxpYmNfcHJvdmlkZXIgKikgbG9jYWxlLT5wcm92aWRlcl9kYXRhOwog CQljaGFyCSAgICpwOwogCiAJCW1lbWNweShkZXN0LCBzcmMsIHNyY2xlbik7CkBAIC01NTksNyAr NjE1LDcgQEAgc3RydXBwZXJfbGliY19zYihjaGFyICpkZXN0LCBzaXplX3QgZGVzdHNpemUsIGNv bnN0IGNoYXIgKnNyYywgc3NpemVfdCBzcmNsZW4sCiAJCQlpZiAobG9jYWxlLT5pc19kZWZhdWx0 KQogCQkJCSpwID0gcGdfdG91cHBlcigodW5zaWduZWQgY2hhcikgKnApOwogCQkJZWxzZQotCQkJ CSpwID0gdG91cHBlcl9sKCh1bnNpZ25lZCBjaGFyKSAqcCwgbG9jKTsKKwkJCQkqcCA9IHRvdXBw ZXJfbCgodW5zaWduZWQgY2hhcikgKnAsIGxpYmMtPmx0KTsKIAkJfQogCX0KIApAQCAtNTcwLDcg KzYyNiw4IEBAIHN0YXRpYyBzaXplX3QKIHN0cnVwcGVyX2xpYmNfbWIoY2hhciAqZGVzdCwgc2l6 ZV90IGRlc3RzaXplLCBjb25zdCBjaGFyICpzcmMsIHNzaXplX3Qgc3JjbGVuLAogCQkJCSBwZ19s b2NhbGVfdCBsb2NhbGUpCiB7Ci0JbG9jYWxlX3QJbG9jID0gbG9jYWxlLT5pbmZvLmx0OworCXN0 cnVjdCBsaWJjX3Byb3ZpZGVyICpsaWJjID0gKHN0cnVjdCBsaWJjX3Byb3ZpZGVyICopIGxvY2Fs ZS0+cHJvdmlkZXJfZGF0YTsKKwogCXNpemVfdAkJcmVzdWx0X3NpemU7CiAJd2NoYXJfdCAgICAq d29ya3NwYWNlOwogCWNoYXIJICAgKnJlc3VsdDsKQEAgLTU5Miw3ICs2NDksNyBAQCBzdHJ1cHBl cl9saWJjX21iKGNoYXIgKmRlc3QsIHNpemVfdCBkZXN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLCBz c2l6ZV90IHNyY2xlbiwKIAljaGFyMndjaGFyKHdvcmtzcGFjZSwgc3JjbGVuICsgMSwgc3JjLCBz cmNsZW4sIGxvY2FsZSk7CiAKIAlmb3IgKGN1cnJfY2hhciA9IDA7IHdvcmtzcGFjZVtjdXJyX2No YXJdICE9IDA7IGN1cnJfY2hhcisrKQotCQl3b3Jrc3BhY2VbY3Vycl9jaGFyXSA9IHRvd3VwcGVy X2wod29ya3NwYWNlW2N1cnJfY2hhcl0sIGxvYyk7CisJCXdvcmtzcGFjZVtjdXJyX2NoYXJdID0g dG93dXBwZXJfbCh3b3Jrc3BhY2VbY3Vycl9jaGFyXSwgbGliYy0+bHQpOwogCiAJLyoKIAkgKiBN YWtlIHJlc3VsdCBsYXJnZSBlbm91Z2g7IGNhc2UgY2hhbmdlIG1pZ2h0IGNoYW5nZSBudW1iZXIg b2YgYnl0ZXMKQEAgLTYyMCw2ICs2NzcsNyBAQCBjcmVhdGVfcGdfbG9jYWxlX2xpYmMoT2lkIGNv bGxpZCwgTWVtb3J5Q29udGV4dCBjb250ZXh0KQogCWNvbnN0IGNoYXIgKmNvbGxhdGU7CiAJY29u c3QgY2hhciAqY3R5cGU7CiAJbG9jYWxlX3QJbG9jOworCXN0cnVjdCBsaWJjX3Byb3ZpZGVyICps aWJjOwogCXBnX2xvY2FsZV90IHJlc3VsdDsKIAogCWlmIChjb2xsaWQgPT0gREVGQVVMVF9DT0xM QVRJT05fT0lEKQpAQCAtNjU4LDE2ICs3MTYsMTkgQEAgY3JlYXRlX3BnX2xvY2FsZV9saWJjKE9p ZCBjb2xsaWQsIE1lbW9yeUNvbnRleHQgY29udGV4dCkKIAkJUmVsZWFzZVN5c0NhY2hlKHRwKTsK IAl9CiAKLQogCWxvYyA9IG1ha2VfbGliY19jb2xsYXRvcihjb2xsYXRlLCBjdHlwZSk7CiAKIAly ZXN1bHQgPSBNZW1vcnlDb250ZXh0QWxsb2NaZXJvKGNvbnRleHQsIHNpemVvZihzdHJ1Y3QgcGdf bG9jYWxlX3N0cnVjdCkpOworCisJbGliYyA9IE1lbW9yeUNvbnRleHRBbGxvY1plcm8oY29udGV4 dCwgc2l6ZW9mKHN0cnVjdCBsaWJjX3Byb3ZpZGVyKSk7CisJbGliYy0+bHQgPSBsb2M7CisJcmVz dWx0LT5wcm92aWRlcl9kYXRhID0gKHZvaWQgKikgbGliYzsKKwogCXJlc3VsdC0+ZGV0ZXJtaW5p c3RpYyA9IHRydWU7CiAJcmVzdWx0LT5jb2xsYXRlX2lzX2MgPSAoc3RyY21wKGNvbGxhdGUsICJD IikgPT0gMCkgfHwKIAkJKHN0cmNtcChjb2xsYXRlLCAiUE9TSVgiKSA9PSAwKTsKIAlyZXN1bHQt PmN0eXBlX2lzX2MgPSAoc3RyY21wKGN0eXBlLCAiQyIpID09IDApIHx8CiAJCShzdHJjbXAoY3R5 cGUsICJQT1NJWCIpID09IDApOwotCXJlc3VsdC0+aW5mby5sdCA9IGxvYzsKIAlpZiAoIXJlc3Vs dC0+Y29sbGF0ZV9pc19jKQogCXsKICNpZmRlZiBXSU4zMgpAQCAtNzgxLDYgKzg0Miw4IEBAIHN0 cm5jb2xsX2xpYmMoY29uc3QgY2hhciAqYXJnMSwgc3NpemVfdCBsZW4xLCBjb25zdCBjaGFyICph cmcyLCBzc2l6ZV90IGxlbjIsCiAJY29uc3QgY2hhciAqYXJnMm47CiAJaW50CQkJcmVzdWx0Owog CisJc3RydWN0IGxpYmNfcHJvdmlkZXIgKmxpYmMgPSAoc3RydWN0IGxpYmNfcHJvdmlkZXIgKikg bG9jYWxlLT5wcm92aWRlcl9kYXRhOworCiAJaWYgKGJ1ZnNpemUxICsgYnVmc2l6ZTIgPiBURVhU QlVGTEVOKQogCQlidWYgPSBwYWxsb2MoYnVmc2l6ZTEgKyBidWZzaXplMik7CiAKQEAgLTgxMSw3 ICs4NzQsNyBAQCBzdHJuY29sbF9saWJjKGNvbnN0IGNoYXIgKmFyZzEsIHNzaXplX3QgbGVuMSwg Y29uc3QgY2hhciAqYXJnMiwgc3NpemVfdCBsZW4yLAogCQlhcmcybiA9IGJ1ZjI7CiAJfQogCi0J cmVzdWx0ID0gc3RyY29sbF9sKGFyZzFuLCBhcmcybiwgbG9jYWxlLT5pbmZvLmx0KTsKKwlyZXN1 bHQgPSBzdHJjb2xsX2woYXJnMW4sIGFyZzJuLCBsaWJjLT5sdCk7CiAKIAlpZiAoYnVmICE9IHNi dWYpCiAJCXBmcmVlKGJ1Zik7CkBAIC04MzUsOCArODk4LDEwIEBAIHN0cm54ZnJtX2xpYmMoY2hh ciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLCBjb25zdCBjaGFyICpzcmMsIHNzaXplX3Qgc3JjbGVu LAogCXNpemVfdAkJYnVmc2l6ZSA9IHNyY2xlbiArIDE7CiAJc2l6ZV90CQlyZXN1bHQ7CiAKKwlz dHJ1Y3QgbGliY19wcm92aWRlciAqbGliYyA9IChzdHJ1Y3QgbGliY19wcm92aWRlciAqKSBsb2Nh bGUtPnByb3ZpZGVyX2RhdGE7CisKIAlpZiAoc3JjbGVuID09IC0xKQotCQlyZXR1cm4gc3RyeGZy bV9sKGRlc3QsIHNyYywgZGVzdHNpemUsIGxvY2FsZS0+aW5mby5sdCk7CisJCXJldHVybiBzdHJ4 ZnJtX2woZGVzdCwgc3JjLCBkZXN0c2l6ZSwgbGliYy0+bHQpOwogCiAJaWYgKGJ1ZnNpemUgPiBU RVhUQlVGTEVOKQogCQlidWYgPSBwYWxsb2MoYnVmc2l6ZSk7CkBAIC04NDUsNyArOTEwLDcgQEAg c3Rybnhmcm1fbGliYyhjaGFyICpkZXN0LCBzaXplX3QgZGVzdHNpemUsIGNvbnN0IGNoYXIgKnNy Yywgc3NpemVfdCBzcmNsZW4sCiAJbWVtY3B5KGJ1Ziwgc3JjLCBzcmNsZW4pOwogCWJ1ZltzcmNs ZW5dID0gJ1wwJzsKIAotCXJlc3VsdCA9IHN0cnhmcm1fbChkZXN0LCBidWYsIGRlc3RzaXplLCBs b2NhbGUtPmluZm8ubHQpOworCXJlc3VsdCA9IHN0cnhmcm1fbChkZXN0LCBidWYsIGRlc3RzaXpl LCBsaWJjLT5sdCk7CiAKIAlpZiAoYnVmICE9IHNidWYpCiAJCXBmcmVlKGJ1Zik7CkBAIC05NDMs NiArMTAwOCw4IEBAIHN0cm5jb2xsX2xpYmNfd2luMzJfdXRmOChjb25zdCBjaGFyICphcmcxLCBz c2l6ZV90IGxlbjEsIGNvbnN0IGNoYXIgKmFyZzIsCiAJaW50CQkJcjsKIAlpbnQJCQlyZXN1bHQ7 CiAKKwlzdHJ1Y3QgbGliY19wcm92aWRlciAqbGliYyA9IChzdHJ1Y3QgbGliY19wcm92aWRlciAq KSBsb2NhbGUtPnByb3ZpZGVyX2RhdGE7CisKIAlBc3NlcnQoR2V0RGF0YWJhc2VFbmNvZGluZygp ID09IFBHX1VURjgpOwogCiAJaWYgKGxlbjEgPT0gLTEpCkBAIC05ODcsNyArMTA1NCw3IEBAIHN0 cm5jb2xsX2xpYmNfd2luMzJfdXRmOChjb25zdCBjaGFyICphcmcxLCBzc2l6ZV90IGxlbjEsIGNv bnN0IGNoYXIgKmFyZzIsCiAJKChMUFdTVFIpIGEycClbcl0gPSAwOwogCiAJZXJybm8gPSAwOwot CXJlc3VsdCA9IHdjc2NvbGxfbCgoTFBXU1RSKSBhMXAsIChMUFdTVFIpIGEycCwgbG9jYWxlLT5p bmZvLmx0KTsKKwlyZXN1bHQgPSB3Y3Njb2xsX2woKExQV1NUUikgYTFwLCAoTFBXU1RSKSBhMnAs IGxpYmMtPmx0KTsKIAlpZiAocmVzdWx0ID09IDIxNDc0ODM2NDcpCS8qIF9OTFNDTVBFUlJPUjsg bWlzc2luZyBmcm9tIG1pbmd3IGhlYWRlcnMgKi8KIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJy bXNnKCJjb3VsZCBub3QgY29tcGFyZSBVbmljb2RlIHN0cmluZ3M6ICVtIikpKTsKQEAgLTExMTYs OCArMTE4MywxMCBAQCB3Y2hhcjJjaGFyKGNoYXIgKnRvLCBjb25zdCB3Y2hhcl90ICpmcm9tLCBz aXplX3QgdG9sZW4sIHBnX2xvY2FsZV90IGxvY2FsZSkKIAl9CiAJZWxzZQogCXsKKwkJc3RydWN0 IGxpYmNfcHJvdmlkZXIgKmxpYmMgPSAoc3RydWN0IGxpYmNfcHJvdmlkZXIgKikgbG9jYWxlLT5w cm92aWRlcl9kYXRhOworCiAJCS8qIFVzZSB3Y3N0b21ic19sIGZvciBub25kZWZhdWx0IGxvY2Fs ZXMgKi8KLQkJcmVzdWx0ID0gd2NzdG9tYnNfbCh0bywgZnJvbSwgdG9sZW4sIGxvY2FsZS0+aW5m by5sdCk7CisJCXJlc3VsdCA9IHdjc3RvbWJzX2wodG8sIGZyb20sIHRvbGVuLCBsaWJjLT5sdCk7 CiAJfQogCiAJcmV0dXJuIHJlc3VsdDsKQEAgLTExNzYsOCArMTI0NSwxMCBAQCBjaGFyMndjaGFy KHdjaGFyX3QgKnRvLCBzaXplX3QgdG9sZW4sIGNvbnN0IGNoYXIgKmZyb20sIHNpemVfdCBmcm9t bGVuLAogCQl9CiAJCWVsc2UKIAkJeworCQkJc3RydWN0IGxpYmNfcHJvdmlkZXIgKmxpYmMgPSAo c3RydWN0IGxpYmNfcHJvdmlkZXIgKikgbG9jYWxlLT5wcm92aWRlcl9kYXRhOworCiAJCQkvKiBV c2UgbWJzdG93Y3NfbCBmb3Igbm9uZGVmYXVsdCBsb2NhbGVzICovCi0JCQlyZXN1bHQgPSBtYnN0 b3djc19sKHRvLCBzdHIsIHRvbGVuLCBsb2NhbGUtPmluZm8ubHQpOworCQkJcmVzdWx0ID0gbWJz dG93Y3NfbCh0bywgc3RyLCB0b2xlbiwgbGliYy0+bHQpOwogCQl9CiAKIAkJcGZyZWUoc3RyKTsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3BnX2xvY2FsZS5oIGIvc3JjL2luY2x1ZGUv dXRpbHMvcGdfbG9jYWxlLmgKaW5kZXggZjA4MTA5MWQyMDAuLmNjZjEwY2Q2MTdiIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS91dGlscy9wZ19sb2NhbGUuaAorKysgYi9zcmMvaW5jbHVkZS91dGls cy9wZ19sb2NhbGUuaApAQCAtMTUxLDIyICsxNTEsNyBAQCBzdHJ1Y3QgcGdfbG9jYWxlX3N0cnVj dAogCWNvbnN0IHN0cnVjdCBjb2xsYXRlX21ldGhvZHMgKmNvbGxhdGU7CS8qIE5VTEwgaWYgY29s bGF0ZV9pc19jICovCiAJY29uc3Qgc3RydWN0IGN0eXBlX21ldGhvZHMgKmN0eXBlOwkvKiBOVUxM IGlmIGN0eXBlX2lzX2MgKi8KIAotCXVuaW9uCi0JewotCQlzdHJ1Y3QKLQkJewotCQkJY29uc3Qg Y2hhciAqbG9jYWxlOwotCQkJYm9vbAkJY2FzZW1hcF9mdWxsOwotCQl9CQkJYnVpbHRpbjsKLQkJ bG9jYWxlX3QJbHQ7Ci0jaWZkZWYgVVNFX0lDVQotCQlzdHJ1Y3QKLQkJewotCQkJY29uc3QgY2hh ciAqbG9jYWxlOwotCQkJVUNvbGxhdG9yICAqdWNvbDsKLQkJfQkJCWljdTsKLSNlbmRpZgotCX0J CQlpbmZvOworCXZvaWQJICAgKnByb3ZpZGVyX2RhdGE7CiB9OwogCiBleHRlcm4gdm9pZCBpbml0 X2RhdGFiYXNlX2NvbGxhdGlvbih2b2lkKTsKLS0gCjIuMzQuMQoK --=-y4I0ndrBNzwPWRboRph+ Content-Disposition: attachment; filename="v15-0004-Don-t-include-ICU-headers-in-pg_locale.h.patch" Content-Type: text/x-patch; name="v15-0004-Don-t-include-ICU-headers-in-pg_locale.h.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBlMzJhODhjYzIzNmE4NGNiYzgwZjAwYzE3MTNmMmU4NTFiZTFkMTA5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBX ZWQsIDkgT2N0IDIwMjQgMTA6MDA6NTggLTA3MDAKU3ViamVjdDogW1BBVENIIHYxNSA0LzRdIERv bid0IGluY2x1ZGUgSUNVIGhlYWRlcnMgaW4gcGdfbG9jYWxlLmguCgotLS0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL2NvbGxhdGlvbmNtZHMuYyAgfCA0ICsrKysKIHNyYy9iYWNrZW5kL3V0aWxzL2Fk dC9mb3JtYXR0aW5nLmMgICAgfCA0IC0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2Nh bGUuYyAgICAgfCA0ICsrKysKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGVfaWN1LmMg fCAxICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC92YXJsZW5hLmMgICAgICAgfCA0ICsrKysKIHNy Yy9pbmNsdWRlL3V0aWxzL3BnX2xvY2FsZS5oICAgICAgICAgfCA0IC0tLS0KIDYgZmlsZXMgY2hh bmdlZCwgMTMgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jb21tYW5kcy9jb2xsYXRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9j b2xsYXRpb25jbWRzLmMKaW5kZXggOGFjYmZiYmVkYTAuLmE1N2ZlOTNjMzg3IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb2xsYXRpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvY29sbGF0aW9uY21kcy5jCkBAIC0xNCw2ICsxNCwxMCBAQAogICovCiAjaW5jbHVk ZSAicG9zdGdyZXMuaCIKIAorI2lmZGVmIFVTRV9JQ1UKKyNpbmNsdWRlIDx1bmljb2RlL3Vjb2wu aD4KKyNlbmRpZgorCiAjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgogI2luY2x1ZGUg ImFjY2Vzcy90YWJsZS5oIgogI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9hZHQvZm9ybWF0dGluZy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L2Zvcm1hdHRpbmcuYwppbmRleCA1YmQxZTAxZjdlNC4uYjNkNWUwNDM2ZWUgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9mb3JtYXR0aW5nLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L2Zvcm1hdHRpbmcuYwpAQCAtNzAsMTAgKzcwLDYgQEAKICNpbmNsdWRlIDxsaW1pdHMu aD4KICNpbmNsdWRlIDx3Y3R5cGUuaD4KIAotI2lmZGVmIFVTRV9JQ1UKLSNpbmNsdWRlIDx1bmlj b2RlL3VzdHJpbmcuaD4KLSNlbmRpZgotCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb2xsYXRpb24u aCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJjb21tb24vaW50Lmgi CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlLmMgYi9zcmMvYmFj a2VuZC91dGlscy9hZHQvcGdfbG9jYWxlLmMKaW5kZXggZjI2Y2UwZTZjYzcuLjg5NGYxNDFkYmIx IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZS5jCkBAIC01NCw2ICs1NCwxMCBAQAogCiAjaW5j bHVkZSA8dGltZS5oPgogCisjaWZkZWYgVVNFX0lDVQorI2luY2x1ZGUgPHVuaWNvZGUvdWNvbC5o PgorI2VuZGlmCisKICNpbmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCiAjaW5jbHVkZSAi Y2F0YWxvZy9wZ19jb2xsYXRpb24uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2RhdGFiYXNlLmgi CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlX2ljdS5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZV9pY3UuYwppbmRleCAxOWM1MTUwNGY4NS4uMmZm N2I5NjBhYmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGVfaWN1 LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZV9pY3UuYwpAQCAtMTMsNiAr MTMsNyBAQAogCiAjaWZkZWYgVVNFX0lDVQogI2luY2x1ZGUgPHVuaWNvZGUvdWNudi5oPgorI2lu Y2x1ZGUgPHVuaWNvZGUvdWNvbC5oPgogI2luY2x1ZGUgPHVuaWNvZGUvdXN0cmluZy5oPgogCiAv KgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3ZhcmxlbmEuYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC92YXJsZW5hLmMKaW5kZXggMzQ3OTZmMmUyN2MuLmM1NzI2MmUxODg4IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvdmFybGVuYS5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC92YXJsZW5hLmMKQEAgLTE3LDYgKzE3LDEwIEBACiAjaW5jbHVkZSA8Y3R5 cGUuaD4KICNpbmNsdWRlIDxsaW1pdHMuaD4KIAorI2lmZGVmIFVTRV9JQ1UKKyNpbmNsdWRlIDx1 bmljb2RlL3VjaGFyLmg+CisjZW5kaWYKKwogI2luY2x1ZGUgImFjY2Vzcy9kZXRvYXN0LmgiCiAj aW5jbHVkZSAiYWNjZXNzL3RvYXN0X2NvbXByZXNzaW9uLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9w Z19jb2xsYXRpb24uaCIKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3BnX2xvY2FsZS5o IGIvc3JjL2luY2x1ZGUvdXRpbHMvcGdfbG9jYWxlLmgKaW5kZXggY2NmMTBjZDYxN2IuLjRjOTQx ZDAyZDc2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9wZ19sb2NhbGUuaAorKysgYi9z cmMvaW5jbHVkZS91dGlscy9wZ19sb2NhbGUuaApAQCAtMTQsMTAgKzE0LDYgQEAKIAogI2luY2x1 ZGUgIm1iL3BnX3djaGFyLmgiCiAKLSNpZmRlZiBVU0VfSUNVCi0jaW5jbHVkZSA8dW5pY29kZS91 Y29sLmg+Ci0jZW5kaWYKLQogLyogdXNlIGZvciBsaWJjIGxvY2FsZSBuYW1lcyAqLwogI2RlZmlu ZSBMT0NBTEVfTkFNRV9CVUZMRU4gMTI4CiAKLS0gCjIuMzQuMQoK --=-y4I0ndrBNzwPWRboRph+--