Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1prTlp-00077F-Cu for pgsql-hackers@arkaria.postgresql.org; Wed, 26 Apr 2023 01:16:33 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1prTko-0007VY-Ju for pgsql-hackers@arkaria.postgresql.org; Wed, 26 Apr 2023 01:15:30 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1prTkn-0007VO-Q8 for pgsql-hackers@lists.postgresql.org; Wed, 26 Apr 2023 01:15:30 +0000 Received: from mail-pf1-x434.google.com ([2607:f8b0:4864:20::434]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1prTkj-001uJs-8r for pgsql-hackers@lists.postgresql.org; Wed, 26 Apr 2023 01:15:28 +0000 Received: by mail-pf1-x434.google.com with SMTP id d2e1a72fcca58-63b5c48ea09so5397956b3a.1 for ; Tue, 25 Apr 2023 18:15:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=j-davis-com.20221208.gappssmtp.com; s=20221208; t=1682471724; x=1685063724; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:from:to:cc:subject:date:message-id:reply-to; bh=BzpWT74na4zqnyhz47OiW6OJMmI9p8w0aR4Q9yKe0ZM=; b=QbPsivHpTWkvEbCYN6VgyEz1eFpcCw5yYOIWCzHa0+aTK9Y0ek/MhPDPV2YCFbr5Vl bpokZ7amyqM3JTR46r8DQitZrjqhOTB3Si7Ulo5vN3lo+mFrcdnv7SnB91nUUi2oNi0R YTjACZ6sKFWeFK5qQCSUZfOHD/kFLGC0gfQPE57oYw00bMtafPzqglJIuRjhqQmSy3Hr k1+dSD/GS/aZJttp4V0PHTRQNoJHEbcRMKuKcTOHaSNpa1/w0bLIAzgWBY2j/JhXfJTm 2XJv551ljV8etviB0KZFaoU2wizrcsfvjU5wYR1GAlymQxcuIZ87bVnWz35gURtpJU3l 3kTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1682471724; x=1685063724; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=BzpWT74na4zqnyhz47OiW6OJMmI9p8w0aR4Q9yKe0ZM=; b=iB7eZKr3QXSninZTCCpikj1tSaAZALExgTO1dP0fJV3I1NZmIc3bIoVHULPTG/9f2+ kIu8Pebx0J/3HVmnsB2Vo+rbV8/EqEg6hZlBPLx7TLZiVI6q+HddcLfUdP4OXtrROSwP FxEkM652mtqEg7vHr9czBLumGI4dpxZKkqx4CtfOFbGQiubSrteV+wyVJB/pJgNGHMfi cLFxnHE5MDHhSCuLE4xKwBacqovMWPM2ahot05MHKM/kr5Y/vaJlZQ1rD4AFAavljHks /9lunpuWzzOu869xf9Pulfm429fb0gmmcYeIHdgiM6madNNV6o21DxhdFJxPeEe9ES5c Oplg== X-Gm-Message-State: AAQBX9cQw200dnj4VM1Nk7y7Ob814DD/AGmhyn2wyrwfuWEKc1J59wAm keHq1TYUyLGuFex4Yb6DWX3Qhg== X-Google-Smtp-Source: AKy350aGU4oH2mlENWvzfeIasJsW4dMXo5YNrJfO4DB93GqskkqE81RtV6ofGwZc09UhTy8HSNT8lg== X-Received: by 2002:a05:6a00:2445:b0:63d:2333:84f8 with SMTP id d5-20020a056a00244500b0063d233384f8mr22030634pfj.6.1682471723707; Tue, 25 Apr 2023 18:15:23 -0700 (PDT) Received: from jeff-laptop.lan (c-73-170-46-202.hsd1.ca.comcast.net. [73.170.46.202]) by smtp.gmail.com with ESMTPSA id e13-20020a63db0d000000b0050f7208b4bcsm8633042pgg.89.2023.04.25.18.15.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 25 Apr 2023 18:15:23 -0700 (PDT) Message-ID: <2aed8f5955ce1ab884ef3ee2adca0d65ac8e7218.camel@j-davis.com> Subject: Re: Order changes in PG16 since ICU introduction From: Jeff Davis To: Andrew Gierth Cc: Peter Eisentraut , Sandro Santilli , Tom Lane , Regina Obe , pgsql-hackers@lists.postgresql.org Date: Tue, 25 Apr 2023 18:15:21 -0700 In-Reply-To: <87v8hoexdv.fsf@news-spur.riddles.org.uk> References: <000b01d97465$c34bbd60$49e33820$@pcorp.us> <3353947.1682092131@sss.pgh.pa.us> <533d93c5-f604-8e5f-4a48-975c08c53d59@enterprisedb.com> <878relf7cb.fsf@news-spur.riddles.org.uk> <7d62b28d808617aae43a68bdfba14d7075f048ea.camel@j-davis.com> <87zg71djuz.fsf@news-spur.riddles.org.uk> <87v8hoexdv.fsf@news-spur.riddles.org.uk> Content-Type: multipart/mixed; boundary="=-miW97FDXgvZne5cZnHD1" User-Agent: Evolution 3.44.4-0ubuntu1 MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-miW97FDXgvZne5cZnHD1 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, 2023-04-21 at 22:35 +0100, Andrew Gierth wrote: > > > > >=20 > Can lc_collate_is_c() be taught to check whether an ICU locale is > using > POSIX collation? Attached are a few small patches: 0001: don't convert C to en-US-u-va-posix 0002: handle locale C the same regardless of the provider, as you suggest above 0003: make LOCALE (or --locale) apply to everything including ICU As far as I can tell, any libc locale has a reasonable match in ICU, so setting LOCALE to either C or a libc locale name should be fine. Some locales are only valid in ICU, e.g. '@colStrength=3Dprimary', or a language tag representation, so if you do something like: create database foo locale 'en_US@colStrenghth=3Dprimary' template template0; You'll get a decent error like: ERROR: invalid LC_COLLATE locale name: "en_US@colStrenghth=3Dprimary" HINT: If the locale name is specific to ICU, use ICU_LOCALE. Overall, I think it works out nicely. Let me know if there are still some confusing cases. I tried a few variations and this one seemed the best, but I may have missed something. Regards, Jeff Davis --=-miW97FDXgvZne5cZnHD1 Content-Disposition: attachment; filename="v2-0001-ICU-do-not-convert-locale-C-to-en-US-u-va-posix.patch" Content-Type: text/x-patch; name="v2-0001-ICU-do-not-convert-locale-C-to-en-US-u-va-posix.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBjNzY4ZTA0MGRjOTJiMDMzZTRlYjBlNjlmMDhiNTlkOGQxZmZlMWU0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBG cmksIDIxIEFwciAyMDIzIDE0OjAzOjU3IC0wNzAwClN1YmplY3Q6IFtQQVRDSCB2MiAxLzNdIElD VTogZG8gbm90IGNvbnZlcnQgbG9jYWxlICdDJyB0byAnZW4tVVMtdS12YS1wb3NpeCcuCgpUaGUg Y29udmVyc2lvbiB3YXMgaW50ZW5kZWQgdG8gYmUgZm9yIGNvbnZlbmllbmNlLCBidXQgaXQncyBt b3JlCmxpa2VseSB0byBiZSBjb25mdXNpbmcgdGhhbiB1c2VmdWwuCgpUaGUgdXNlciBjYW4gc3Rp bGwgZGlyZWN0bHkgc3BlY2lmeSAnZW4tVVMtdS12YS1wb3NpeCcgaWYgZGVzaXJlZC4KCkRpc2N1 c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vZjgzZjA4OWVlMWU5YWNkNWRiYmJmMzM1MzI5NGQy NGUxZjE5NmU5NS5jYW1lbEBqLWRhdmlzLmNvbQotLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9w Z19sb2NhbGUuYyAgICAgICAgICAgICB8IDE5ICstLS0tLS0tLS0tLS0tLS0tLS0KIHNyYy9iaW4v aW5pdGRiL2luaXRkYi5jICAgICAgICAgICAgICAgICAgICAgICB8IDE3ICstLS0tLS0tLS0tLS0t LS0tCiAuLi4vcmVncmVzcy9leHBlY3RlZC9jb2xsYXRlLmljdS51dGY4Lm91dCAgICAgfCAgOCAr KysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29sbGF0ZS5pY3UudXRmOC5zcWwgICAgIHwg IDQgKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCAzNCBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlLmMgYi9zcmMv YmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlLmMKaW5kZXggNTFkZjU3MGNlOS4uNThjNGM0MjZi YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZS5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGUuYwpAQCAtMjc4MiwyNiArMjc4MiwxMCBAQCBp Y3VfbGFuZ3VhZ2VfdGFnKGNvbnN0IGNoYXIgKmxvY19zdHIsIGludCBlbGV2ZWwpCiB7CiAjaWZk ZWYgVVNFX0lDVQogCVVFcnJvckNvZGUJIHN0YXR1czsKLQljaGFyCQkgbGFuZ1tVTE9DX0xBTkdf Q0FQQUNJVFldOwogCWNoYXIJCSpsYW5ndGFnOwogCXNpemVfdAkJIGJ1ZmxlbiA9IDMyOwkvKiBh cmJpdHJhcnkgc3RhcnRpbmcgYnVmZmVyIHNpemUgKi8KIAljb25zdCBib29sCSBzdHJpY3QgPSB0 cnVlOwogCi0Jc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotCXVsb2NfZ2V0TGFuZ3VhZ2UobG9jX3N0 ciwgbGFuZywgVUxPQ19MQU5HX0NBUEFDSVRZLCAmc3RhdHVzKTsKLQlpZiAoVV9GQUlMVVJFKHN0 YXR1cykpCi0JewotCQlpZiAoZWxldmVsID4gMCkKLQkJCWVyZXBvcnQoZWxldmVsLAotCQkJCQko ZXJybXNnKCJjb3VsZCBub3QgZ2V0IGxhbmd1YWdlIGZyb20gbG9jYWxlIFwiJXNcIjogJXMiLAot CQkJCQkJCWxvY19zdHIsIHVfZXJyb3JOYW1lKHN0YXR1cykpKSk7Ci0JCXJldHVybiBOVUxMOwot CX0KLQotCS8qIEMvUE9TSVggbG9jYWxlcyBhcmVuJ3QgaGFuZGxlZCBieSB1bG9jX2dldExhbmd1 YWdlVGFnKCkgKi8KLQlpZiAoc3RyY21wKGxhbmcsICJjIikgPT0gMCB8fCBzdHJjbXAobGFuZywg InBvc2l4IikgPT0gMCkKLQkJcmV0dXJuIHBzdHJkdXAoImVuLVVTLXUtdmEtcG9zaXgiKTsKLQog CS8qCiAJICogQSBCQ1A0NyBsYW5ndWFnZSB0YWcgZG9lc24ndCBoYXZlIGEgY2xlYXJseS1kZWZp bmVkIHVwcGVyIGxpbWl0CiAJICogKGNmLiBSRkM1NjQ2IHNlY3Rpb24gNC40KS4gQWRkaXRpb25h bGx5LCBpbiBvbGRlciBJQ1UgdmVyc2lvbnMsCkBAIC0yODg5LDggKzI4NzMsNyBAQCBpY3VfdmFs aWRhdGVfbG9jYWxlKGNvbnN0IGNoYXIgKmxvY19zdHIpCiAKIAkvKiBjaGVjayBmb3Igc3BlY2lh bCBsYW5ndWFnZSBuYW1lICovCiAJaWYgKHN0cmNtcChsYW5nLCAiIikgPT0gMCB8fAotCQlzdHJj bXAobGFuZywgInJvb3QiKSA9PSAwIHx8IHN0cmNtcChsYW5nLCAidW5kIikgPT0gMCB8fAotCQlz dHJjbXAobGFuZywgImMiKSA9PSAwIHx8IHN0cmNtcChsYW5nLCAicG9zaXgiKSA9PSAwKQorCQlz dHJjbXAobGFuZywgInJvb3QiKSA9PSAwIHx8IHN0cmNtcChsYW5nLCAidW5kIikgPT0gMCkKIAkJ Zm91bmQgPSB0cnVlOwogCiAJLyogc2VhcmNoIGZvciBtYXRjaGluZyBsYW5ndWFnZSB3aXRoaW4g SUNVICovCmRpZmYgLS1naXQgYS9zcmMvYmluL2luaXRkYi9pbml0ZGIuYyBiL3NyYy9iaW4vaW5p dGRiL2luaXRkYi5jCmluZGV4IDJjMjA4ZWFkMDEuLjQwODY4MzQ0NTggMTAwNjQ0Ci0tLSBhL3Ny Yy9iaW4vaW5pdGRiL2luaXRkYi5jCisrKyBiL3NyYy9iaW4vaW5pdGRiL2luaXRkYi5jCkBAIC0y MjM4LDI0ICsyMjM4LDEwIEBAIGljdV9sYW5ndWFnZV90YWcoY29uc3QgY2hhciAqbG9jX3N0cikK IHsKICNpZmRlZiBVU0VfSUNVCiAJVUVycm9yQ29kZQkgc3RhdHVzOwotCWNoYXIJCSBsYW5nW1VM T0NfTEFOR19DQVBBQ0lUWV07CiAJY2hhcgkJKmxhbmd0YWc7CiAJc2l6ZV90CQkgYnVmbGVuID0g MzI7CS8qIGFyYml0cmFyeSBzdGFydGluZyBidWZmZXIgc2l6ZSAqLwogCWNvbnN0IGJvb2wJIHN0 cmljdCA9IHRydWU7CiAKLQlzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0JdWxvY19nZXRMYW5ndWFn ZShsb2Nfc3RyLCBsYW5nLCBVTE9DX0xBTkdfQ0FQQUNJVFksICZzdGF0dXMpOwotCWlmIChVX0ZB SUxVUkUoc3RhdHVzKSkKLQl7Ci0JCXBnX2ZhdGFsKCJjb3VsZCBub3QgZ2V0IGxhbmd1YWdlIGZy b20gbG9jYWxlIFwiJXNcIjogJXMiLAotCQkJCSBsb2Nfc3RyLCB1X2Vycm9yTmFtZShzdGF0dXMp KTsKLQkJcmV0dXJuIE5VTEw7Ci0JfQotCi0JLyogQy9QT1NJWCBsb2NhbGVzIGFyZW4ndCBoYW5k bGVkIGJ5IHVsb2NfZ2V0TGFuZ3VhZ2VUYWcoKSAqLwotCWlmIChzdHJjbXAobGFuZywgImMiKSA9 PSAwIHx8IHN0cmNtcChsYW5nLCAicG9zaXgiKSA9PSAwKQotCQlyZXR1cm4gcHN0cmR1cCgiZW4t VVMtdS12YS1wb3NpeCIpOwotCiAJLyoKIAkgKiBBIEJDUDQ3IGxhbmd1YWdlIHRhZyBkb2Vzbid0 IGhhdmUgYSBjbGVhcmx5LWRlZmluZWQgdXBwZXIgbGltaXQKIAkgKiAoY2YuIFJGQzU2NDYgc2Vj dGlvbiA0LjQpLiBBZGRpdGlvbmFsbHksIGluIG9sZGVyIElDVSB2ZXJzaW9ucywKQEAgLTIzMjcs OCArMjMxMyw3IEBAIGljdV92YWxpZGF0ZV9sb2NhbGUoY29uc3QgY2hhciAqbG9jX3N0cikKIAog CS8qIGNoZWNrIGZvciBzcGVjaWFsIGxhbmd1YWdlIG5hbWUgKi8KIAlpZiAoc3RyY21wKGxhbmcs ICIiKSA9PSAwIHx8Ci0JCXN0cmNtcChsYW5nLCAicm9vdCIpID09IDAgfHwgc3RyY21wKGxhbmcs ICJ1bmQiKSA9PSAwIHx8Ci0JCXN0cmNtcChsYW5nLCAiYyIpID09IDAgfHwgc3RyY21wKGxhbmcs ICJwb3NpeCIpID09IDApCisJCXN0cmNtcChsYW5nLCAicm9vdCIpID09IDAgfHwgc3RyY21wKGxh bmcsICJ1bmQiKSA9PSAwKQogCQlmb3VuZCA9IHRydWU7CiAKIAkvKiBzZWFyY2ggZm9yIG1hdGNo aW5nIGxhbmd1YWdlIHdpdGhpbiBJQ1UgKi8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvY29sbGF0ZS5pY3UudXRmOC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2NvbGxhdGUuaWN1LnV0Zjgub3V0CmluZGV4IGI1YTIyMWIwMzAuLjk5ZjEyZDJlNzMgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29sbGF0ZS5pY3UudXRmOC5vdXQKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb2xsYXRlLmljdS51dGY4Lm91dApAQCAtMTAy MCw2ICsxMDIwLDcgQEAgQ1JFQVRFIFJPTEUgcmVncmVzc190ZXN0X3JvbGU7CiBDUkVBVEUgU0NI RU1BIHRlc3Rfc2NoZW1hOwogLS0gV2UgbmVlZCB0byBkbyB0aGlzIHRoaXMgd2F5IHRvIGNvcGUg d2l0aCB2YXJ5aW5nIG5hbWVzIGZvciBlbmNvZGluZ3M6CiBTRVQgY2xpZW50X21pbl9tZXNzYWdl cyBUTyBXQVJOSU5HOworU0VUIGljdV92YWxpZGF0aW9uX2xldmVsID0gZGlzYWJsZWQ7CiBkbyAk JAogQkVHSU4KICAgRVhFQ1VURSAnQ1JFQVRFIENPTExBVElPTiB0ZXN0MCAocHJvdmlkZXIgPSBp Y3UsIGxvY2FsZSA9ICcgfHwKQEAgLTEwMzQsMTcgKzEwMzUsMjQgQEAgQkVHSU4KICAgICAgICAg ICBxdW90ZV9saXRlcmFsKGN1cnJlbnRfc2V0dGluZygnbGNfY29sbGF0ZScpKSB8fCAnKTsnOwog RU5ECiAkJDsKK1JFU0VUIGljdV92YWxpZGF0aW9uX2xldmVsOwogUkVTRVQgY2xpZW50X21pbl9t ZXNzYWdlczsKIENSRUFURSBDT0xMQVRJT04gdGVzdDMgKHByb3ZpZGVyID0gaWN1LCBsY19jb2xs YXRlID0gJ2VuX1VTLnV0ZjgnKTsgLS0gZmFpbCwgbmVlZHMgImxvY2FsZSIKIEVSUk9SOiAgcGFy YW1ldGVyICJsb2NhbGUiIG11c3QgYmUgc3BlY2lmaWVkCiBDUkVBVEUgQ09MTEFUSU9OIHRlc3R4 IChwcm92aWRlciA9IGljdSwgbG9jYWxlID0gJ25vbnNlbnNlLW5vd2hlcmUnKTsgLS0gZmFpbHMK IEVSUk9SOiAgSUNVIGxvY2FsZSAibm9uc2Vuc2Utbm93aGVyZSIgaGFzIHVua25vd24gbGFuZ3Vh Z2UgIm5vbnNlbnNlIgogSElOVDogIFRvIGRpc2FibGUgSUNVIGxvY2FsZSB2YWxpZGF0aW9uLCBz ZXQgcGFyYW1ldGVyIGljdV92YWxpZGF0aW9uX2xldmVsIHRvIERJU0FCTEVELgorQ1JFQVRFIENP TExBVElPTiB0ZXN0eCAocHJvdmlkZXIgPSBpY3UsIGxvY2FsZSA9ICdjJyk7IC0tIGZhaWxzCitF UlJPUjogIGNvdWxkIG5vdCBjb252ZXJ0IGxvY2FsZSBuYW1lICJjIiB0byBsYW5ndWFnZSB0YWc6 IFVfSUxMRUdBTF9BUkdVTUVOVF9FUlJPUgogQ1JFQVRFIENPTExBVElPTiB0ZXN0eCAocHJvdmlk ZXIgPSBpY3UsIGxvY2FsZSA9ICdAY29sU3RyZW5ndGg9cHJpbWFyeTtub25zZW5zZT15ZXMnKTsg LS0gZmFpbHMKIEVSUk9SOiAgY291bGQgbm90IGNvbnZlcnQgbG9jYWxlIG5hbWUgIkBjb2xTdHJl bmd0aD1wcmltYXJ5O25vbnNlbnNlPXllcyIgdG8gbGFuZ3VhZ2UgdGFnOiBVX0lMTEVHQUxfQVJH VU1FTlRfRVJST1IKIFNFVCBpY3VfdmFsaWRhdGlvbl9sZXZlbCA9IFdBUk5JTkc7CiBDUkVBVEUg Q09MTEFUSU9OIHRlc3R4IChwcm92aWRlciA9IGljdSwgbG9jYWxlID0gJ0Bjb2xTdHJlbmd0aD1w cmltYXJ5O25vbnNlbnNlPXllcycpOyBEUk9QIENPTExBVElPTiB0ZXN0eDsKIFdBUk5JTkc6ICBj b3VsZCBub3QgY29udmVydCBsb2NhbGUgbmFtZSAiQGNvbFN0cmVuZ3RoPXByaW1hcnk7bm9uc2Vu c2U9eWVzIiB0byBsYW5ndWFnZSB0YWc6IFVfSUxMRUdBTF9BUkdVTUVOVF9FUlJPUgorQ1JFQVRF IENPTExBVElPTiB0ZXN0eCAocHJvdmlkZXIgPSBpY3UsIGxvY2FsZSA9ICdjJyk7IERST1AgQ09M TEFUSU9OIHRlc3R4OworV0FSTklORzogIGNvdWxkIG5vdCBjb252ZXJ0IGxvY2FsZSBuYW1lICJj IiB0byBsYW5ndWFnZSB0YWc6IFVfSUxMRUdBTF9BUkdVTUVOVF9FUlJPUgorV0FSTklORzogIElD VSBsb2NhbGUgImMiIGhhcyB1bmtub3duIGxhbmd1YWdlICJjIgorSElOVDogIFRvIGRpc2FibGUg SUNVIGxvY2FsZSB2YWxpZGF0aW9uLCBzZXQgcGFyYW1ldGVyIGljdV92YWxpZGF0aW9uX2xldmVs IHRvIERJU0FCTEVELgogQ1JFQVRFIENPTExBVElPTiB0ZXN0eCAocHJvdmlkZXIgPSBpY3UsIGxv Y2FsZSA9ICdub25zZW5zZS1ub3doZXJlJyk7IERST1AgQ09MTEFUSU9OIHRlc3R4OwogV0FSTklO RzogIElDVSBsb2NhbGUgIm5vbnNlbnNlLW5vd2hlcmUiIGhhcyB1bmtub3duIGxhbmd1YWdlICJu b25zZW5zZSIKIEhJTlQ6ICBUbyBkaXNhYmxlIElDVSBsb2NhbGUgdmFsaWRhdGlvbiwgc2V0IHBh cmFtZXRlciBpY3VfdmFsaWRhdGlvbl9sZXZlbCB0byBESVNBQkxFRC4KZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbGxhdGUuaWN1LnV0Zjguc3FsIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvY29sbGF0ZS5pY3UudXRmOC5zcWwKaW5kZXggODVlMjY5NTFiNi4uZDk3NzhmYWFjYyAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29sbGF0ZS5pY3UudXRmOC5zcWwKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29sbGF0ZS5pY3UudXRmOC5zcWwKQEAgLTM1OCw2ICsz NTgsNyBAQCBDUkVBVEUgU0NIRU1BIHRlc3Rfc2NoZW1hOwogCiAtLSBXZSBuZWVkIHRvIGRvIHRo aXMgdGhpcyB3YXkgdG8gY29wZSB3aXRoIHZhcnlpbmcgbmFtZXMgZm9yIGVuY29kaW5nczoKIFNF VCBjbGllbnRfbWluX21lc3NhZ2VzIFRPIFdBUk5JTkc7CitTRVQgaWN1X3ZhbGlkYXRpb25fbGV2 ZWwgPSBkaXNhYmxlZDsKIAogZG8gJCQKIEJFR0lOCkBAIC0zNzMsMTMgKzM3NCwxNiBAQCBCRUdJ TgogRU5ECiAkJDsKIAorUkVTRVQgaWN1X3ZhbGlkYXRpb25fbGV2ZWw7CiBSRVNFVCBjbGllbnRf bWluX21lc3NhZ2VzOwogCiBDUkVBVEUgQ09MTEFUSU9OIHRlc3QzIChwcm92aWRlciA9IGljdSwg bGNfY29sbGF0ZSA9ICdlbl9VUy51dGY4Jyk7IC0tIGZhaWwsIG5lZWRzICJsb2NhbGUiCiBDUkVB VEUgQ09MTEFUSU9OIHRlc3R4IChwcm92aWRlciA9IGljdSwgbG9jYWxlID0gJ25vbnNlbnNlLW5v d2hlcmUnKTsgLS0gZmFpbHMKK0NSRUFURSBDT0xMQVRJT04gdGVzdHggKHByb3ZpZGVyID0gaWN1 LCBsb2NhbGUgPSAnYycpOyAtLSBmYWlscwogQ1JFQVRFIENPTExBVElPTiB0ZXN0eCAocHJvdmlk ZXIgPSBpY3UsIGxvY2FsZSA9ICdAY29sU3RyZW5ndGg9cHJpbWFyeTtub25zZW5zZT15ZXMnKTsg LS0gZmFpbHMKIFNFVCBpY3VfdmFsaWRhdGlvbl9sZXZlbCA9IFdBUk5JTkc7CiBDUkVBVEUgQ09M TEFUSU9OIHRlc3R4IChwcm92aWRlciA9IGljdSwgbG9jYWxlID0gJ0Bjb2xTdHJlbmd0aD1wcmlt YXJ5O25vbnNlbnNlPXllcycpOyBEUk9QIENPTExBVElPTiB0ZXN0eDsKK0NSRUFURSBDT0xMQVRJ T04gdGVzdHggKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAnYycpOyBEUk9QIENPTExBVElPTiB0 ZXN0eDsKIENSRUFURSBDT0xMQVRJT04gdGVzdHggKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAn bm9uc2Vuc2Utbm93aGVyZScpOyBEUk9QIENPTExBVElPTiB0ZXN0eDsKIFJFU0VUIGljdV92YWxp ZGF0aW9uX2xldmVsOwogCi0tIAoyLjM0LjEKCg== --=-miW97FDXgvZne5cZnHD1 Content-Disposition: attachment; filename*0=v2-0002-ICU-support-locale-C-with-the-same-behavior-as-li.pat; filename*1=ch Content-Type: text/x-patch; name="v2-0002-ICU-support-locale-C-with-the-same-behavior-as-li.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSAxMzAyYTRiNjVlNGUxMjc1M2FlMTVlNzMyZGFiMDU5YWZlNjlkYmQ5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBN b24sIDI0IEFwciAyMDIzIDE1OjQ2OjE3IC0wNzAwClN1YmplY3Q6IFtQQVRDSCB2MiAyLzNdIElD VTogc3VwcG9ydCBsb2NhbGUgIkMiIHdpdGggdGhlIHNhbWUgYmVoYXZpb3IgYXMKIGxpYmMuCgpU aGUgIkMiIGxvY2FsZSBkb2Vzbid0IGFjdHVhbGx5IHVzZSBhIHByb3ZpZGVyIGF0IGFsbCwgaXQn cyBhIHNwZWNpYWwKbG9jYWxlIHRoYXQgdXNlcyBtZW1jbXAoKSBhbmQgYnVpbHQtaW4gY2hhcmFj dGVyIGNsYXNzaWZpY2F0aW9uLiBNYWtlCml0IGJlaGF2ZSB0aGUgc2FtZSBpbiBJQ1UgYXMgbGli YyAoZXZlbiB0aG91Z2ggaXQgZG9lc24ndCBhY3R1YWxseQptYWtlIHVzZSBvZiBlaXRoZXIgcHJv dmlkZXIpLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS84N3Y4aG9leGR2LmZzZkBu ZXdzLXNwdXIucmlkZGxlcy5vcmcudWsKLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb2xsYXRp b25jbWRzLmMgICAgICAgICAgfCA0MyArKysrKystLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9k YmNvbW1hbmRzLmMgICAgICAgICAgICAgfCA0MiArKysrKy0tLS0KIHNyYy9iYWNrZW5kL3V0aWxz L2FkdC9wZ19sb2NhbGUuYyAgICAgICAgICAgICB8IDg2ICsrKysrKysrKysrKysrLS0tLS0KIC4u Li9yZWdyZXNzL2V4cGVjdGVkL2NvbGxhdGUuaWN1LnV0Zjgub3V0ICAgICB8IDEyICstLQogc3Jj L3Rlc3QvcmVncmVzcy9zcWwvY29sbGF0ZS5pY3UudXRmOC5zcWwgICAgIHwgIDcgKy0KIDUgZmls ZXMgY2hhbmdlZCwgMTMxIGluc2VydGlvbnMoKyksIDU5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbGxhdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2NvbGxhdGlvbmNtZHMuYwppbmRleCBjOTFmZTY2ZDliLi43ZTY5YTg4OWZiIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb2xsYXRpb25jbWRzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvY29sbGF0aW9uY21kcy5jCkBAIC0yNjQsMjYgKzI2NCwzOSBAQCBEZWZp bmVDb2xsYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpuYW1lcywgTGlzdCAqcGFyYW1l dGVycywgYm9vbCBpZl9ub3RfZQogCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVD VF9ERUZJTklUSU9OKSwKIAkJCQkJCSBlcnJtc2coInBhcmFtZXRlciBcImxvY2FsZVwiIG11c3Qg YmUgc3BlY2lmaWVkIikpKTsKIAotCQkJLyoKLQkJCSAqIER1cmluZyBiaW5hcnkgdXBncmFkZSwg cHJlc2VydmUgdGhlIGxvY2FsZSBzdHJpbmcuIE90aGVyd2lzZSwKLQkJCSAqIGNhbm9uaWNhbGl6 ZSB0byBhIGxhbmd1YWdlIHRhZy4KLQkJCSAqLwotCQkJaWYgKCFJc0JpbmFyeVVwZ3JhZGUpCisJ CQlpZiAocGdfc3RyY2FzZWNtcChjb2xsaWN1bG9jYWxlLCAiQyIpID09IDAgfHwKKwkJCQlwZ19z dHJjYXNlY21wKGNvbGxpY3Vsb2NhbGUsICJQT1NJWCIpID09IDApCiAJCQl7Ci0JCQkJY2hhciAq bGFuZ3RhZyA9IGljdV9sYW5ndWFnZV90YWcoY29sbGljdWxvY2FsZSwKLQkJCQkJCQkJCQkJCSBp Y3VfdmFsaWRhdGlvbl9sZXZlbCk7Ci0KLQkJCQlpZiAobGFuZ3RhZyAmJiBzdHJjbXAoY29sbGlj dWxvY2FsZSwgbGFuZ3RhZykgIT0gMCkKKwkJCQlpZiAoIWNvbGxpc2RldGVybWluaXN0aWMpCisJ CQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJKGVycm1zZygibm9uZGV0ZXJtaW5pc3RpYyBjb2xs YXRpb25zIG5vdCBzdXBwb3J0ZWQgZm9yIEMgb3IgUE9TSVggbG9jYWxlIikpKTsKKwkJCQlpZiAo Y29sbGljdXJ1bGVzICE9IE5VTEwpCisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJKGVycm1z ZygiUlVMRVMgbm90IHN1cHBvcnRlZCBmb3IgQyBvciBQT1NJWCBsb2NhbGUiKSkpOworCQkJfQor CQkJZWxzZQorCQkJeworCQkJCS8qCisJCQkJICogRHVyaW5nIGJpbmFyeSB1cGdyYWRlLCBwcmVz ZXJ2ZSB0aGUgbG9jYWxlCisJCQkJICogc3RyaW5nLiBPdGhlcndpc2UsIGNhbm9uaWNhbGl6ZSB0 byBhIGxhbmd1YWdlIHRhZy4KKwkJCQkgKi8KKwkJCQlpZiAoIUlzQmluYXJ5VXBncmFkZSkKIAkJ CQl7Ci0JCQkJCWVyZXBvcnQoTk9USUNFLAotCQkJCQkJCShlcnJtc2coInVzaW5nIHN0YW5kYXJk IGZvcm0gXCIlc1wiIGZvciBsb2NhbGUgXCIlc1wiIiwKLQkJCQkJCQkJCWxhbmd0YWcsIGNvbGxp Y3Vsb2NhbGUpKSk7CisJCQkJCWNoYXIgKmxhbmd0YWcgPSBpY3VfbGFuZ3VhZ2VfdGFnKGNvbGxp Y3Vsb2NhbGUsCisJCQkJCQkJCQkJCQkJIGljdV92YWxpZGF0aW9uX2xldmVsKTsKKworCQkJCQlp ZiAobGFuZ3RhZyAmJiBzdHJjbXAoY29sbGljdWxvY2FsZSwgbGFuZ3RhZykgIT0gMCkKKwkJCQkJ eworCQkJCQkJZXJlcG9ydChOT1RJQ0UsCisJCQkJCQkJCShlcnJtc2coInVzaW5nIHN0YW5kYXJk IGZvcm0gXCIlc1wiIGZvciBsb2NhbGUgXCIlc1wiIiwKKwkJCQkJCQkJCQlsYW5ndGFnLCBjb2xs aWN1bG9jYWxlKSkpOwogCi0JCQkJCWNvbGxpY3Vsb2NhbGUgPSBsYW5ndGFnOworCQkJCQkJY29s bGljdWxvY2FsZSA9IGxhbmd0YWc7CisJCQkJCX0KIAkJCQl9Ci0JCQl9CiAKLQkJCWljdV92YWxp ZGF0ZV9sb2NhbGUoY29sbGljdWxvY2FsZSk7CisJCQkJaWN1X3ZhbGlkYXRlX2xvY2FsZShjb2xs aWN1bG9jYWxlKTsKKwkJCX0KIAkJfQogCiAJCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy9kYmNvbW1hbmRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9kYmNvbW1hbmRzLmMK aW5kZXggMmUyNDJlZWZmMi4uOGVmMzM4NzFmMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvZGJjb21tYW5kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RiY29tbWFuZHMu YwpAQCAtMTA1OCwyNyArMTA1OCwzNyBAQCBjcmVhdGVkYihQYXJzZVN0YXRlICpwc3RhdGUsIGNv bnN0IENyZWF0ZWRiU3RtdCAqc3RtdCkKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BB UkFNRVRFUl9WQUxVRSksCiAJCQkJCSBlcnJtc2coIklDVSBsb2NhbGUgbXVzdCBiZSBzcGVjaWZp ZWQiKSkpOwogCi0JCS8qCi0JCSAqIER1cmluZyBiaW5hcnkgdXBncmFkZSwgb3Igd2hlbiB0aGUg bG9jYWxlIGNhbWUgZnJvbSB0aGUgdGVtcGxhdGUKLQkJICogZGF0YWJhc2UsIHByZXNlcnZlIGxv Y2FsZSBzdHJpbmcuIE90aGVyd2lzZSwgY2Fub25pY2FsaXplIHRvIGEKLQkJICogbGFuZ3VhZ2Ug dGFnLgotCQkgKi8KLQkJaWYgKCFJc0JpbmFyeVVwZ3JhZGUgJiYgZGJpY3Vsb2NhbGUgIT0gc3Jj X2ljdWxvY2FsZSkKKwkJaWYgKHBnX3N0cmNhc2VjbXAoZGJpY3Vsb2NhbGUsICJDIikgPT0gMCB8 fAorCQkJcGdfc3RyY2FzZWNtcChkYmljdWxvY2FsZSwgIlBPU0lYIikgPT0gMCkKIAkJewotCQkJ Y2hhciAqbGFuZ3RhZyA9IGljdV9sYW5ndWFnZV90YWcoZGJpY3Vsb2NhbGUsCi0JCQkJCQkJCQkJ CSBpY3VfdmFsaWRhdGlvbl9sZXZlbCk7Ci0KLQkJCWlmIChsYW5ndGFnICYmIHN0cmNtcChkYmlj dWxvY2FsZSwgbGFuZ3RhZykgIT0gMCkKKwkJCWlmIChkYmljdXJ1bGVzICE9IE5VTEwpCisJCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJtc2coIklDVV9SVUxFUyBub3Qgc3VwcG9ydGVkIGZv ciBDIG9yIFBPU0lYIGxvY2FsZSIpKSk7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKgorCQkJICog RHVyaW5nIGJpbmFyeSB1cGdyYWRlLCBvciB3aGVuIHRoZSBsb2NhbGUgY2FtZSBmcm9tIHRoZQor CQkJICogdGVtcGxhdGUgZGF0YWJhc2UsIHByZXNlcnZlIGxvY2FsZSBzdHJpbmcuIE90aGVyd2lz ZSwKKwkJCSAqIGNhbm9uaWNhbGl6ZSB0byBhIGxhbmd1YWdlIHRhZy4KKwkJCSAqLworCQkJaWYg KCFJc0JpbmFyeVVwZ3JhZGUgJiYgZGJpY3Vsb2NhbGUgIT0gc3JjX2ljdWxvY2FsZSkKIAkJCXsK LQkJCQllcmVwb3J0KE5PVElDRSwKLQkJCQkJCShlcnJtc2coInVzaW5nIHN0YW5kYXJkIGZvcm0g XCIlc1wiIGZvciBsb2NhbGUgXCIlc1wiIiwKLQkJCQkJCQkJbGFuZ3RhZywgZGJpY3Vsb2NhbGUp KSk7CisJCQkJY2hhciAqbGFuZ3RhZyA9IGljdV9sYW5ndWFnZV90YWcoZGJpY3Vsb2NhbGUsCisJ CQkJCQkJCQkJCQkgaWN1X3ZhbGlkYXRpb25fbGV2ZWwpOworCisJCQkJaWYgKGxhbmd0YWcgJiYg c3RyY21wKGRiaWN1bG9jYWxlLCBsYW5ndGFnKSAhPSAwKQorCQkJCXsKKwkJCQkJZXJlcG9ydChO T1RJQ0UsCisJCQkJCQkJKGVycm1zZygidXNpbmcgc3RhbmRhcmQgZm9ybSBcIiVzXCIgZm9yIGxv Y2FsZSBcIiVzXCIiLAorCQkJCQkJCQkJbGFuZ3RhZywgZGJpY3Vsb2NhbGUpKSk7CiAKLQkJCQlk YmljdWxvY2FsZSA9IGxhbmd0YWc7CisJCQkJCWRiaWN1bG9jYWxlID0gbGFuZ3RhZzsKKwkJCQl9 CiAJCQl9Ci0JCX0KIAotCQlpY3VfdmFsaWRhdGVfbG9jYWxlKGRiaWN1bG9jYWxlKTsKKwkJCWlj dV92YWxpZGF0ZV9sb2NhbGUoZGJpY3Vsb2NhbGUpOworCQl9CiAJfQogCWVsc2UKIAl7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlLmMgYi9zcmMvYmFja2VuZC91 dGlscy9hZHQvcGdfbG9jYWxlLmMKaW5kZXggNThjNGM0MjZiYy4uMDZlNzUzMDI0NyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZS5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9wZ19sb2NhbGUuYwpAQCAtMTI0Niw4ICsxMjQ2LDE1IEBAIGxvb2t1cF9jb2xs YXRpb25fY2FjaGUoT2lkIGNvbGxhdGlvbiwgYm9vbCBzZXRfZmxhZ3MpCiAJCX0KIAkJZWxzZQog CQl7Ci0JCQljYWNoZV9lbnRyeS0+Y29sbGF0ZV9pc19jID0gZmFsc2U7Ci0JCQljYWNoZV9lbnRy eS0+Y3R5cGVfaXNfYyA9IGZhbHNlOworCQkJRGF0dW0JCWRhdHVtOworCQkJY29uc3QgY2hhciAq Y29sbGljdWxvY2FsZTsKKworCQkJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHJOb3ROdWxsKENPTExP SUQsIHRwLCBBbnVtX3BnX2NvbGxhdGlvbl9jb2xsaWN1bG9jYWxlKTsKKwkJCWNvbGxpY3Vsb2Nh bGUgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKGRhdHVtKTsKKworCQkJY2FjaGVfZW50cnktPmNvbGxh dGVfaXNfYyA9ICgoc3RyY21wKGNvbGxpY3Vsb2NhbGUsICJDIikgPT0gMCkgfHwKKwkJCQkJCQkJ CQkgKHN0cmNtcChjb2xsaWN1bG9jYWxlLCAiUE9TSVgiKSA9PSAwKSk7CisJCQljYWNoZV9lbnRy eS0+Y3R5cGVfaXNfYyA9IGNhY2hlX2VudHJ5LT5jb2xsYXRlX2lzX2M7CiAJCX0KIAogCQljYWNo ZV9lbnRyeS0+ZmxhZ3NfdmFsaWQgPSB0cnVlOwpAQCAtMTI3OSwxNiArMTI4NiwyNyBAQCBsY19j b2xsYXRlX2lzX2MoT2lkIGNvbGxhdGlvbikKIAlpZiAoY29sbGF0aW9uID09IERFRkFVTFRfQ09M TEFUSU9OX09JRCkKIAl7CiAJCXN0YXRpYyBpbnQJcmVzdWx0ID0gLTE7Ci0JCWNoYXIJICAgKmxv Y2FsZXB0cjsKLQotCQlpZiAoZGVmYXVsdF9sb2NhbGUucHJvdmlkZXIgPT0gQ09MTFBST1ZJREVS X0lDVSkKLQkJCXJldHVybiBmYWxzZTsKKwkJY29uc3QgY2hhciAqbG9jYWxlcHRyOwogCiAJCWlm IChyZXN1bHQgPj0gMCkKIAkJCXJldHVybiAoYm9vbCkgcmVzdWx0OwotCQlsb2NhbGVwdHIgPSBz ZXRsb2NhbGUoTENfQ09MTEFURSwgTlVMTCk7Ci0JCWlmICghbG9jYWxlcHRyKQotCQkJZWxvZyhF UlJPUiwgImludmFsaWQgTENfQ09MTEFURSBzZXR0aW5nIik7CisKKwkJaWYgKGRlZmF1bHRfbG9j YWxlLnByb3ZpZGVyID09IENPTExQUk9WSURFUl9JQ1UpCisJCXsKKyNpZmRlZiBVU0VfSUNVCisJ CQlsb2NhbGVwdHIgPSBkZWZhdWx0X2xvY2FsZS5pbmZvLmljdS5sb2NhbGU7CisjZWxzZQorCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JU RUQpLAorCQkJCQkgZXJybXNnKCJJQ1UgaXMgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGJ1aWxkIikp KTsKKyNlbmRpZgorCQl9CisJCWVsc2UKKwkJeworCQkJbG9jYWxlcHRyID0gc2V0bG9jYWxlKExD X0NPTExBVEUsIE5VTEwpOworCQkJaWYgKCFsb2NhbGVwdHIpCisJCQkJZWxvZyhFUlJPUiwgImlu dmFsaWQgTENfQ09MTEFURSBzZXR0aW5nIik7CisJCX0KIAogCQlpZiAoc3RyY21wKGxvY2FsZXB0 ciwgIkMiKSA9PSAwKQogCQkJcmVzdWx0ID0gdHJ1ZTsKQEAgLTEzMzIsMTYgKzEzNTAsMjcgQEAg bGNfY3R5cGVfaXNfYyhPaWQgY29sbGF0aW9uKQogCWlmIChjb2xsYXRpb24gPT0gREVGQVVMVF9D T0xMQVRJT05fT0lEKQogCXsKIAkJc3RhdGljIGludAlyZXN1bHQgPSAtMTsKLQkJY2hhcgkgICAq bG9jYWxlcHRyOwotCi0JCWlmIChkZWZhdWx0X2xvY2FsZS5wcm92aWRlciA9PSBDT0xMUFJPVklE RVJfSUNVKQotCQkJcmV0dXJuIGZhbHNlOworCQljb25zdCBjaGFyICpsb2NhbGVwdHI7CiAKIAkJ aWYgKHJlc3VsdCA+PSAwKQogCQkJcmV0dXJuIChib29sKSByZXN1bHQ7Ci0JCWxvY2FsZXB0ciA9 IHNldGxvY2FsZShMQ19DVFlQRSwgTlVMTCk7Ci0JCWlmICghbG9jYWxlcHRyKQotCQkJZWxvZyhF UlJPUiwgImludmFsaWQgTENfQ1RZUEUgc2V0dGluZyIpOworCisJCWlmIChkZWZhdWx0X2xvY2Fs ZS5wcm92aWRlciA9PSBDT0xMUFJPVklERVJfSUNVKQorCQl7CisjaWZkZWYgVVNFX0lDVQorCQkJ bG9jYWxlcHRyID0gZGVmYXVsdF9sb2NhbGUuaW5mby5pY3UubG9jYWxlOworI2Vsc2UKKwkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVE KSwKKwkJCQkJIGVycm1zZygiSUNVIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBidWlsZCIpKSk7 CisjZW5kaWYKKwkJfQorCQllbHNlCisJCXsKKwkJCWxvY2FsZXB0ciA9IHNldGxvY2FsZShMQ19D VFlQRSwgTlVMTCk7CisJCQlpZiAoIWxvY2FsZXB0cikKKwkJCQllbG9nKEVSUk9SLCAiaW52YWxp ZCBMQ19DVFlQRSBzZXR0aW5nIik7CisJCX0KIAogCQlpZiAoc3RyY21wKGxvY2FsZXB0ciwgIkMi KSA9PSAwKQogCQkJcmVzdWx0ID0gdHJ1ZTsKQEAgLTEzNzUsNyArMTQwNCwxNCBAQCBtYWtlX2lj dV9jb2xsYXRvcihjb25zdCBjaGFyICppY3Vsb2NzdHIsCiAjaWZkZWYgVVNFX0lDVQogCVVDb2xs YXRvciAgKmNvbGxhdG9yOwogCi0JY29sbGF0b3IgPSBwZ191Y29sX29wZW4oaWN1bG9jc3RyKTsK KwlpZiAocGdfc3RyY2FzZWNtcChpY3Vsb2NzdHIsICJDIikgPT0gMCB8fAorCQlwZ19zdHJjYXNl Y21wKGljdWxvY3N0ciwgIlBPU0lYIikgPT0gMCkKKwl7CisJCUFzc2VydChpY3VydWxlcyA9PSBO VUxMKTsKKwkJY29sbGF0b3IgPSBOVUxMOworCX0KKwllbHNlCisJCWNvbGxhdG9yID0gcGdfdWNv bF9vcGVuKGljdWxvY3N0cik7CiAKIAkvKgogCSAqIElmIHJ1bGVzIGFyZSBzcGVjaWZpZWQsIHdl IGV4dHJhY3QgdGhlIHJ1bGVzIG9mIHRoZSBzdGFuZGFyZCBjb2xsYXRpb24sCkBAIC0xNjUwLDYg KzE2ODYsMTAgQEAgZ2V0X2NvbGxhdGlvbl9hY3R1YWxfdmVyc2lvbihjaGFyIGNvbGxwcm92aWRl ciwgY29uc3QgY2hhciAqY29sbGNvbGxhdGUpCiB7CiAJY2hhcgkgICAqY29sbHZlcnNpb24gPSBO VUxMOwogCisJaWYgKHBnX3N0cmNhc2VjbXAoIkMiLCBjb2xsY29sbGF0ZSkgfHwKKwkJcGdfc3Ry Y2FzZWNtcCgiUE9TSVgiLCBjb2xsY29sbGF0ZSkpCisJCXJldHVybiBOVUxMOworCiAjaWZkZWYg VVNFX0lDVQogCWlmIChjb2xscHJvdmlkZXIgPT0gQ09MTFBST1ZJREVSX0lDVSkKIAl7CkBAIC0x NjY4LDkgKzE3MDgsNyBAQCBnZXRfY29sbGF0aW9uX2FjdHVhbF92ZXJzaW9uKGNoYXIgY29sbHBy b3ZpZGVyLCBjb25zdCBjaGFyICpjb2xsY29sbGF0ZSkKIAllbHNlCiAjZW5kaWYKIAkJaWYgKGNv bGxwcm92aWRlciA9PSBDT0xMUFJPVklERVJfTElCQyAmJgotCQkJcGdfc3RyY2FzZWNtcCgiQyIs IGNvbGxjb2xsYXRlKSAhPSAwICYmCi0JCQlwZ19zdHJuY2FzZWNtcCgiQy4iLCBjb2xsY29sbGF0 ZSwgMikgIT0gMCAmJgotCQkJcGdfc3RyY2FzZWNtcCgiUE9TSVgiLCBjb2xsY29sbGF0ZSkgIT0g MCkKKwkJCXBnX3N0cm5jYXNlY21wKCJDLiIsIGNvbGxjb2xsYXRlLCAyKSAhPSAwKQogCXsKICNp ZiBkZWZpbmVkKF9fR0xJQkNfXykKIAkJLyogVXNlIHRoZSBnbGliYyB2ZXJzaW9uIGJlY2F1c2Ug d2UgZG9uJ3QgaGF2ZSBhbnl0aGluZyBiZXR0ZXIuICovCkBAIC0yNDU3LDYgKzI0OTUsMTQgQEAg cGdfdWNvbF9vcGVuKGNvbnN0IGNoYXIgKmxvY19zdHIpCiAJaWYgKGxvY19zdHIgPT0gTlVMTCkK IAkJZWxvZyhFUlJPUiwgIm9wZW5pbmcgZGVmYXVsdCBjb2xsYXRvciBpcyBub3Qgc3VwcG9ydGVk Iik7CiAKKwkvKgorCSAqIE11c3QgbmV2ZXIgb3BlbiBzcGVjaWFsIHZhbHVlcyBDIG9yIFBPU0lY LCB3aGljaCBhcmUgdHJlYXRlZCBzcGVjaWFsbHkKKwkgKiBhbmQgbm90IHBhc3NlZCB0byB0aGUg cHJvdmlkZXIuCisJICovCisJaWYgKHBnX3N0cmNhc2VjbXAobG9jX3N0ciwgIkMiKSA9PSAwIHx8 CisJCXBnX3N0cmNhc2VjbXAobG9jX3N0ciwgIlBPU0lYIikgPT0gMCkKKwkJZWxvZyhFUlJPUiwg InVuZXhwZWN0ZWQgSUNVIGxvY2FsZSBzdHJpbmc6ICVzIiwgbG9jX3N0cik7CisKIAkvKgogCSAq IEluIElDVSB2ZXJzaW9ucyA1NCBhbmQgZWFybGllciwgInVuZCIgaXMgbm90IGEgcmVjb2duaXpl ZCBzcGVsbGluZyBvZgogCSAqIHRoZSByb290IGxvY2FsZS4gSWYgdGhlIGZpcnN0IGNvbXBvbmVu dCBvZiB0aGUgbG9jYWxlIGlzICJ1bmQiLCByZXBsYWNlCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2NvbGxhdGUuaWN1LnV0Zjgub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9jb2xsYXRlLmljdS51dGY4Lm91dAppbmRleCA5OWYxMmQyZTczLi41M2FiNDk2YmZl IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvbGxhdGUuaWN1LnV0Zjgu b3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29sbGF0ZS5pY3UudXRmOC5vdXQK QEAgLTEwNDIsMjEgKzEwNDIsMjEgQEAgRVJST1I6ICBwYXJhbWV0ZXIgImxvY2FsZSIgbXVzdCBi ZSBzcGVjaWZpZWQKIENSRUFURSBDT0xMQVRJT04gdGVzdHggKHByb3ZpZGVyID0gaWN1LCBsb2Nh bGUgPSAnbm9uc2Vuc2Utbm93aGVyZScpOyAtLSBmYWlscwogRVJST1I6ICBJQ1UgbG9jYWxlICJu b25zZW5zZS1ub3doZXJlIiBoYXMgdW5rbm93biBsYW5ndWFnZSAibm9uc2Vuc2UiCiBISU5UOiAg VG8gZGlzYWJsZSBJQ1UgbG9jYWxlIHZhbGlkYXRpb24sIHNldCBwYXJhbWV0ZXIgaWN1X3ZhbGlk YXRpb25fbGV2ZWwgdG8gRElTQUJMRUQuCi1DUkVBVEUgQ09MTEFUSU9OIHRlc3R4IChwcm92aWRl ciA9IGljdSwgbG9jYWxlID0gJ2MnKTsgLS0gZmFpbHMKLUVSUk9SOiAgY291bGQgbm90IGNvbnZl cnQgbG9jYWxlIG5hbWUgImMiIHRvIGxhbmd1YWdlIHRhZzogVV9JTExFR0FMX0FSR1VNRU5UX0VS Uk9SCitDUkVBVEUgQ09MTEFUSU9OIHRlc3R4IChwcm92aWRlciA9IGljdSwgbG9jYWxlID0gJ2Mn LCBkZXRlcm1pbmlzdGljID0gZmFsc2UpOyAtLSBmYWlscworRVJST1I6ICBub25kZXRlcm1pbmlz dGljIGNvbGxhdGlvbnMgbm90IHN1cHBvcnRlZCBmb3IgQyBvciBQT1NJWCBsb2NhbGUKK0NSRUFU RSBDT0xMQVRJT04gdGVzdHggKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAnYycsIHJ1bGVzID0g JyZWIDw8IHcgPDw8IFcnKTsgLS0gZmFpbHMKK0VSUk9SOiAgUlVMRVMgbm90IHN1cHBvcnRlZCBm b3IgQyBvciBQT1NJWCBsb2NhbGUKIENSRUFURSBDT0xMQVRJT04gdGVzdHggKHByb3ZpZGVyID0g aWN1LCBsb2NhbGUgPSAnQGNvbFN0cmVuZ3RoPXByaW1hcnk7bm9uc2Vuc2U9eWVzJyk7IC0tIGZh aWxzCiBFUlJPUjogIGNvdWxkIG5vdCBjb252ZXJ0IGxvY2FsZSBuYW1lICJAY29sU3RyZW5ndGg9 cHJpbWFyeTtub25zZW5zZT15ZXMiIHRvIGxhbmd1YWdlIHRhZzogVV9JTExFR0FMX0FSR1VNRU5U X0VSUk9SCiBTRVQgaWN1X3ZhbGlkYXRpb25fbGV2ZWwgPSBXQVJOSU5HOwogQ1JFQVRFIENPTExB VElPTiB0ZXN0eCAocHJvdmlkZXIgPSBpY3UsIGxvY2FsZSA9ICdAY29sU3RyZW5ndGg9cHJpbWFy eTtub25zZW5zZT15ZXMnKTsgRFJPUCBDT0xMQVRJT04gdGVzdHg7CiBXQVJOSU5HOiAgY291bGQg bm90IGNvbnZlcnQgbG9jYWxlIG5hbWUgIkBjb2xTdHJlbmd0aD1wcmltYXJ5O25vbnNlbnNlPXll cyIgdG8gbGFuZ3VhZ2UgdGFnOiBVX0lMTEVHQUxfQVJHVU1FTlRfRVJST1IKLUNSRUFURSBDT0xM QVRJT04gdGVzdHggKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAnYycpOyBEUk9QIENPTExBVElP TiB0ZXN0eDsKLVdBUk5JTkc6ICBjb3VsZCBub3QgY29udmVydCBsb2NhbGUgbmFtZSAiYyIgdG8g bGFuZ3VhZ2UgdGFnOiBVX0lMTEVHQUxfQVJHVU1FTlRfRVJST1IKLVdBUk5JTkc6ICBJQ1UgbG9j YWxlICJjIiBoYXMgdW5rbm93biBsYW5ndWFnZSAiYyIKLUhJTlQ6ICBUbyBkaXNhYmxlIElDVSBs b2NhbGUgdmFsaWRhdGlvbiwgc2V0IHBhcmFtZXRlciBpY3VfdmFsaWRhdGlvbl9sZXZlbCB0byBE SVNBQkxFRC4KIENSRUFURSBDT0xMQVRJT04gdGVzdHggKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUg PSAnbm9uc2Vuc2Utbm93aGVyZScpOyBEUk9QIENPTExBVElPTiB0ZXN0eDsKIFdBUk5JTkc6ICBJ Q1UgbG9jYWxlICJub25zZW5zZS1ub3doZXJlIiBoYXMgdW5rbm93biBsYW5ndWFnZSAibm9uc2Vu c2UiCiBISU5UOiAgVG8gZGlzYWJsZSBJQ1UgbG9jYWxlIHZhbGlkYXRpb24sIHNldCBwYXJhbWV0 ZXIgaWN1X3ZhbGlkYXRpb25fbGV2ZWwgdG8gRElTQUJMRUQuCiBSRVNFVCBpY3VfdmFsaWRhdGlv bl9sZXZlbDsKK0NSRUFURSBDT0xMQVRJT04gdGVzdHggKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUg PSAnYycpOyBEUk9QIENPTExBVElPTiB0ZXN0eDsKK0NSRUFURSBDT0xMQVRJT04gdGVzdHggKHBy b3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAncG9zaXgnKTsgRFJPUCBDT0xMQVRJT04gdGVzdHg7CiBD UkVBVEUgQ09MTEFUSU9OIHRlc3Q0IEZST00gbm9uc2Vuc2U7CiBFUlJPUjogIGNvbGxhdGlvbiAi bm9uc2Vuc2UiIGZvciBlbmNvZGluZyAiVVRGOCIgZG9lcyBub3QgZXhpc3QKIENSRUFURSBDT0xM QVRJT04gdGVzdDUgRlJPTSB0ZXN0MDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L2NvbGxhdGUuaWN1LnV0Zjguc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29sbGF0ZS5pY3Uu dXRmOC5zcWwKaW5kZXggZDk3NzhmYWFjYy4uNjNkNTM1MmVlNiAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVncmVzcy9zcWwvY29sbGF0ZS5pY3UudXRmOC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvY29sbGF0ZS5pY3UudXRmOC5zcWwKQEAgLTM3OSwxNCArMzc5LDE3IEBAIFJFU0VUIGNs aWVudF9taW5fbWVzc2FnZXM7CiAKIENSRUFURSBDT0xMQVRJT04gdGVzdDMgKHByb3ZpZGVyID0g aWN1LCBsY19jb2xsYXRlID0gJ2VuX1VTLnV0ZjgnKTsgLS0gZmFpbCwgbmVlZHMgImxvY2FsZSIK IENSRUFURSBDT0xMQVRJT04gdGVzdHggKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAnbm9uc2Vu c2Utbm93aGVyZScpOyAtLSBmYWlscwotQ1JFQVRFIENPTExBVElPTiB0ZXN0eCAocHJvdmlkZXIg PSBpY3UsIGxvY2FsZSA9ICdjJyk7IC0tIGZhaWxzCitDUkVBVEUgQ09MTEFUSU9OIHRlc3R4IChw cm92aWRlciA9IGljdSwgbG9jYWxlID0gJ2MnLCBkZXRlcm1pbmlzdGljID0gZmFsc2UpOyAtLSBm YWlscworQ1JFQVRFIENPTExBVElPTiB0ZXN0eCAocHJvdmlkZXIgPSBpY3UsIGxvY2FsZSA9ICdj JywgcnVsZXMgPSAnJlYgPDwgdyA8PDwgVycpOyAtLSBmYWlscwogQ1JFQVRFIENPTExBVElPTiB0 ZXN0eCAocHJvdmlkZXIgPSBpY3UsIGxvY2FsZSA9ICdAY29sU3RyZW5ndGg9cHJpbWFyeTtub25z ZW5zZT15ZXMnKTsgLS0gZmFpbHMKIFNFVCBpY3VfdmFsaWRhdGlvbl9sZXZlbCA9IFdBUk5JTkc7 CiBDUkVBVEUgQ09MTEFUSU9OIHRlc3R4IChwcm92aWRlciA9IGljdSwgbG9jYWxlID0gJ0Bjb2xT dHJlbmd0aD1wcmltYXJ5O25vbnNlbnNlPXllcycpOyBEUk9QIENPTExBVElPTiB0ZXN0eDsKLUNS RUFURSBDT0xMQVRJT04gdGVzdHggKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAnYycpOyBEUk9Q IENPTExBVElPTiB0ZXN0eDsKIENSRUFURSBDT0xMQVRJT04gdGVzdHggKHByb3ZpZGVyID0gaWN1 LCBsb2NhbGUgPSAnbm9uc2Vuc2Utbm93aGVyZScpOyBEUk9QIENPTExBVElPTiB0ZXN0eDsKIFJF U0VUIGljdV92YWxpZGF0aW9uX2xldmVsOwogCitDUkVBVEUgQ09MTEFUSU9OIHRlc3R4IChwcm92 aWRlciA9IGljdSwgbG9jYWxlID0gJ2MnKTsgRFJPUCBDT0xMQVRJT04gdGVzdHg7CitDUkVBVEUg Q09MTEFUSU9OIHRlc3R4IChwcm92aWRlciA9IGljdSwgbG9jYWxlID0gJ3Bvc2l4Jyk7IERST1Ag Q09MTEFUSU9OIHRlc3R4OworCiBDUkVBVEUgQ09MTEFUSU9OIHRlc3Q0IEZST00gbm9uc2Vuc2U7 CiBDUkVBVEUgQ09MTEFUSU9OIHRlc3Q1IEZST00gdGVzdDA7CiAKLS0gCjIuMzQuMQoK --=-miW97FDXgvZne5cZnHD1 Content-Disposition: attachment; filename*0=v2-0003-Make-LOCALE-apply-to-ICU_LOCALE-for-CREATE-DATABA.pat; filename*1=ch Content-Type: text/x-patch; name="v2-0003-Make-LOCALE-apply-to-ICU_LOCALE-for-CREATE-DATABA.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSAxYzMwZWE2N2U0OGJhYjYwYjdlOTY4NDdmZjNjMjQ4ODBlOTU0NDcxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBU dWUsIDI1IEFwciAyMDIzIDE1OjAxOjU1IC0wNzAwClN1YmplY3Q6IFtQQVRDSCB2MiAzLzNdIE1h a2UgTE9DQUxFIGFwcGx5IHRvIElDVV9MT0NBTEUgZm9yIENSRUFURSBEQVRBQkFTRS4KCkxPQ0FM RSBpcyBub3cgYW4gYWxpYXMgZm9yIExDX0NPTExBVEUsIExDX0NUWVBFLCBhbmQgKGlmIHRoZSBw cm92aWRlcgppcyBJQ1UpIElDVV9MT0NBTEUuIFRoZSBJQ1UgcHJvdmlkZXIgYWNjZXB0cyBtb3Jl IGxvY2FsZSBuYW1lcyB0aGFuCmxpYmMgKGUuZy4gbGFuZ3VhZ2UgdGFncyBhbmQgbG9jYWxlIG5h bWVzIGNvbnRhaW5pbmcgY29sbGF0aW9uCmF0dHJpYnV0ZXMpLCBzbyBpbiBzb21lIGNhc2VzIExD X0NPTExBVEUsIExDX0NUWVBFLCBhbmQgSUNVX0xPQ0FMRQp3aWxsIHN0aWxsIG5lZWQgdG8gYmUg c3BlY2lmaWVkIHNlcGFyYXRlbHkuCgpQcmV2aW91c2x5LCBMT0NBTEUgYXBwbGllZCBvbmx5IHRv IExDX0NPTExBVEUgYW5kIExDX0NUWVBFIChhbmQKc2ltaWxhcmx5IGZvciAtLWxvY2FsZSBpbiBp bml0ZGIgYW5kIGNyZWF0ZWRiKS4gVGhhdCBjb3VsZCBsZWFkIHRvCmNvbmZ1c2lvbiB3aGVuIHRo ZSBwcm92aWRlciBpcyBpbXBsaWNpdCwgc3VjaCBhcyB3aGVuIGl0IGlzIGluaGVyaXRlZApmcm9t IHRoZSB0ZW1wbGF0ZSBkYXRhYmFzZSwgb3Igd2hlbiBJQ1Ugd2FzIG1hZGUgZGVmYXVsdCBhdCBp bml0ZGIKdGltZSBpbiBjb21taXQgMjdiNjIzNzdiNC4KClJldmVydHMgaW5jb21wbGV0ZSBmaXgg NWNkMWE1YWY0ZC4KCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vMzM5MTkzMi4xNjgy MTA3MjA5QHNzcy5wZ2gucGEudXMKLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9kYXRhYmFz ZS5zZ21sICAgICAgICAgfCAgNiArKy0tCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZWRiLnNnbWwg ICAgICAgICAgICAgICAgfCAgNSArKy0KIGRvYy9zcmMvc2dtbC9yZWYvaW5pdGRiLnNnbWwgICAg ICAgICAgICAgICAgICB8ICA3ICsrKy0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb2xsYXRpb25j bWRzLmMgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZGJjb21tYW5kcy5j ICAgICAgICAgICAgIHwgMTUgKysrKysrLS0tCiBzcmMvYmluL2luaXRkYi9pbml0ZGIuYyAgICAg ICAgICAgICAgICAgICAgICAgfCAzMSArKysrKysrKysrKystLS0tLS0tCiBzcmMvYmluL3Njcmlw dHMvY3JlYXRlZGIuYyAgICAgICAgICAgICAgICAgICAgfCAxMyArKystLS0tLQogc3JjL2Jpbi9z Y3JpcHRzL3QvMDIwX2NyZWF0ZWRiLnBsICAgICAgICAgICAgIHwgIDQgKy0tCiBzcmMvdGVzdC9p Y3UvdC8wMTBfZGF0YWJhc2UucGwgICAgICAgICAgICAgICAgfCAyMyArKysrKysrKystLS0tLQog Li4uL3JlZ3Jlc3MvZXhwZWN0ZWQvY29sbGF0ZS5pY3UudXRmOC5vdXQgICAgIHwgMjIgKysrKysr LS0tLS0tLQogMTAgZmlsZXMgY2hhbmdlZCwgNzcgaW5zZXJ0aW9ucygrKSwgNTEgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfZGF0YWJhc2Uuc2dtbCBi L2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2RhdGFiYXNlLnNnbWwKaW5kZXggMTM3OTNiYjZiNy4u ODQ0NzczZmY0NCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfZGF0YWJhc2Uu c2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9kYXRhYmFzZS5zZ21sCkBAIC0xNDUs OCArMTQ1LDEwIEBAIENSRUFURSBEQVRBQkFTRSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+bmFtZTwvcmVwbGFjZWFibGU+CiAgICAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+bG9jYWxlPC9yZXBsYWNlYWJsZT48L3Rlcm0+CiAgICAgICA8bGlzdGl0ZW0+CiAg ICAgICAgPHBhcmE+Ci0gICAgICAgIFRoaXMgaXMgYSBzaG9ydGN1dCBmb3Igc2V0dGluZyA8c3lt Ym9sPkxDX0NPTExBVEU8L3N5bWJvbD4KLSAgICAgICAgYW5kIDxzeW1ib2w+TENfQ1RZUEU8L3N5 bWJvbD4gYXQgb25jZS4KKyAgICAgICAgVGhpcyBpcyBhIHNob3J0Y3V0IGZvciBzZXR0aW5nIDxz eW1ib2w+TENfQ09MTEFURTwvc3ltYm9sPiwKKyAgICAgICAgPHN5bWJvbD5MQ19DVFlQRTwvc3lt Ym9sPiBhbmQgPHN5bWJvbD5JQ1VfTE9DQUxFPC9zeW1ib2w+IGF0CisgICAgICAgIG9uY2UuIFNv bWUgbG9jYWxlcyBhcmUgb25seSB2YWxpZCBmb3IgSUNVLCBhbmQgbXVzdCBiZSBzZXQgc2VwYXJh dGVseQorICAgICAgICB3aXRoIDxzeW1ib2w+SUNVX0xPQ0FMRTwvc3ltYm9sPi4KICAgICAgICA8 L3BhcmE+CiAgICAgICAgPHRpcD4KICAgICAgICAgPHBhcmE+CmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvcmVmL2NyZWF0ZWRiLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZWRiLnNnbWwK aW5kZXggZTIzNDE5YmE2Yy4uZTQ2NDdkNWNlNyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3Jl Zi9jcmVhdGVkYi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlZGIuc2dtbApAQCAt MTI0LDcgKzEyNCwxMCBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KICAgICAgIDxsaXN0aXRl bT4KICAgICAgICA8cGFyYT4KICAgICAgICAgU3BlY2lmaWVzIHRoZSBsb2NhbGUgdG8gYmUgdXNl ZCBpbiB0aGlzIGRhdGFiYXNlLiAgVGhpcyBpcyBlcXVpdmFsZW50Ci0gICAgICAgIHRvIHNwZWNp ZnlpbmcgYm90aCA8b3B0aW9uPi0tbGMtY29sbGF0ZTwvb3B0aW9uPiBhbmQgPG9wdGlvbj4tLWxj LWN0eXBlPC9vcHRpb24+LgorICAgICAgICB0byBzcGVjaWZ5aW5nIDxvcHRpb24+LS1sYy1jb2xs YXRlPC9vcHRpb24+LAorICAgICAgICA8b3B0aW9uPi0tbGMtY3R5cGU8L29wdGlvbj4sIGFuZCA8 b3B0aW9uPi0taWN1LWxvY2FsZTwvb3B0aW9uPiB0byB0aGUKKyAgICAgICAgc2FtZSB2YWx1ZS4g U29tZSBsb2NhbGVzIGFyZSBvbmx5IHZhbGlkIGZvciBJQ1UgYW5kIG11c3QgYmUgc2V0IHdpdGgK KyAgICAgICAgPG9wdGlvbj4tLWljdS1sb2NhbGU8L29wdGlvbj4uCiAgICAgICAgPC9wYXJhPgog ICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CmRpZmYgLS1naXQgYS9kb2Mv c3JjL3NnbWwvcmVmL2luaXRkYi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9pbml0ZGIuc2dtbApp bmRleCA4Nzk0NWI0YjYyLi5mODUwZGM0MDRkIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVm L2luaXRkYi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvaW5pdGRiLnNnbWwKQEAgLTExNiw5 ICsxMTYsMTAgQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiAgIDxwYXJhPgogICAgVG8gY2hv b3NlIGEgZGlmZmVyZW50IGxvY2FsZSBmb3IgdGhlIGNsdXN0ZXIsIHVzZSB0aGUgb3B0aW9uCiAg ICA8b3B0aW9uPi0tbG9jYWxlPC9vcHRpb24+LiAgVGhlcmUgYXJlIGFsc28gaW5kaXZpZHVhbCBv cHRpb25zCi0gICA8b3B0aW9uPi0tbGMtKjwvb3B0aW9uPiAoc2VlIGJlbG93KSB0byBzZXQgdmFs dWVzIGZvciB0aGUgaW5kaXZpZHVhbCBsb2NhbGUKLSAgIGNhdGVnb3JpZXMuICBOb3RlIHRoYXQg aW5jb25zaXN0ZW50IHNldHRpbmdzIGZvciBkaWZmZXJlbnQgbG9jYWxlCi0gICBjYXRlZ29yaWVz IGNhbiBnaXZlIG5vbnNlbnNpY2FsIHJlc3VsdHMsIHNvIHRoaXMgc2hvdWxkIGJlIHVzZWQgd2l0 aCBjYXJlLgorICAgPG9wdGlvbj4tLWxjLSo8L29wdGlvbj4gYW5kIDxvcHRpb24+LS1pY3UtbG9j YWxlPC9vcHRpb24+IChzZWUgYmVsb3cpIHRvCisgICBzZXQgdmFsdWVzIGZvciB0aGUgaW5kaXZp ZHVhbCBsb2NhbGUgY2F0ZWdvcmllcy4gIE5vdGUgdGhhdCBpbmNvbnNpc3RlbnQKKyAgIHNldHRp bmdzIGZvciBkaWZmZXJlbnQgbG9jYWxlIGNhdGVnb3JpZXMgY2FuIGdpdmUgbm9uc2Vuc2ljYWwg cmVzdWx0cywgc28KKyAgIHRoaXMgc2hvdWxkIGJlIHVzZWQgd2l0aCBjYXJlLgogICA8L3BhcmE+ CiAKICAgPHBhcmE+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb2xsYXRpb25j bWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb2xsYXRpb25jbWRzLmMKaW5kZXggN2U2OWE4 ODlmYi4uZTQ4MWYyMGRjOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29sbGF0 aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbGxhdGlvbmNtZHMuYwpAQCAt Mjg4LDcgKzI4OCw3IEBAIERlZmluZUNvbGxhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIExpc3Qg Km5hbWVzLCBMaXN0ICpwYXJhbWV0ZXJzLCBib29sIGlmX25vdF9lCiAJCQkJCWlmIChsYW5ndGFn ICYmIHN0cmNtcChjb2xsaWN1bG9jYWxlLCBsYW5ndGFnKSAhPSAwKQogCQkJCQl7CiAJCQkJCQll cmVwb3J0KE5PVElDRSwKLQkJCQkJCQkJKGVycm1zZygidXNpbmcgc3RhbmRhcmQgZm9ybSBcIiVz XCIgZm9yIGxvY2FsZSBcIiVzXCIiLAorCQkJCQkJCQkoZXJybXNnKCJ1c2luZyBzdGFuZGFyZCBm b3JtIFwiJXNcIiBmb3IgSUNVIGxvY2FsZSBcIiVzXCIiLAogCQkJCQkJCQkJCWxhbmd0YWcsIGNv bGxpY3Vsb2NhbGUpKSk7CiAKIAkJCQkJCWNvbGxpY3Vsb2NhbGUgPSBsYW5ndGFnOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGJjb21tYW5kcy5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvZGJjb21tYW5kcy5jCmluZGV4IDhlZjMzODcxZjAuLmI0NDdkYzU1ZjMgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RiY29tbWFuZHMuYworKysgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9kYmNvbW1hbmRzLmMKQEAgLTEwMTcsNyArMTAxNywxMiBAQCBjcmVhdGVkYihQYXJz ZVN0YXRlICpwc3RhdGUsIGNvbnN0IENyZWF0ZWRiU3RtdCAqc3RtdCkKIAlpZiAoZGJsb2Nwcm92 aWRlciA9PSAnXDAnKQogCQlkYmxvY3Byb3ZpZGVyID0gc3JjX2xvY3Byb3ZpZGVyOwogCWlmIChk YmljdWxvY2FsZSA9PSBOVUxMICYmIGRibG9jcHJvdmlkZXIgPT0gQ09MTFBST1ZJREVSX0lDVSkK LQkJZGJpY3Vsb2NhbGUgPSBzcmNfaWN1bG9jYWxlOworCXsKKwkJaWYgKGRsb2NhbGUgJiYgZGxv Y2FsZS0+YXJnKQorCQkJZGJpY3Vsb2NhbGUgPSBkZWZHZXRTdHJpbmcoZGxvY2FsZSk7CisJCWVs c2UKKwkJCWRiaWN1bG9jYWxlID0gc3JjX2ljdWxvY2FsZTsKKwl9CiAJaWYgKGRiaWN1cnVsZXMg PT0gTlVMTCAmJiBkYmxvY3Byb3ZpZGVyID09IENPTExQUk9WSURFUl9JQ1UpCiAJCWRiaWN1cnVs ZXMgPSBzcmNfaWN1cnVsZXM7CiAKQEAgLTEwMzEsMTIgKzEwMzYsMTQgQEAgY3JlYXRlZGIoUGFy c2VTdGF0ZSAqcHN0YXRlLCBjb25zdCBDcmVhdGVkYlN0bXQgKnN0bXQpCiAJaWYgKCFjaGVja19s b2NhbGUoTENfQ09MTEFURSwgZGJjb2xsYXRlLCAmY2Fub25uYW1lKSkKIAkJZXJlcG9ydChFUlJP UiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKLQkJCQkgZXJybXNn KCJpbnZhbGlkIGxvY2FsZSBuYW1lOiBcIiVzXCIiLCBkYmNvbGxhdGUpKSk7CisJCQkJIGVycm1z ZygiaW52YWxpZCBMQ19DT0xMQVRFIGxvY2FsZSBuYW1lOiBcIiVzXCIiLCBkYmNvbGxhdGUpLAor CQkJCSBlcnJoaW50KCJJZiB0aGUgbG9jYWxlIG5hbWUgaXMgc3BlY2lmaWMgdG8gSUNVLCB1c2Ug SUNVX0xPQ0FMRS4iKSkpOwogCWRiY29sbGF0ZSA9IGNhbm9ubmFtZTsKIAlpZiAoIWNoZWNrX2xv Y2FsZShMQ19DVFlQRSwgZGJjdHlwZSwgJmNhbm9ubmFtZSkpCiAJCWVyZXBvcnQoRVJST1IsCiAJ CQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCi0JCQkJIGVycm1zZygiaW52 YWxpZCBsb2NhbGUgbmFtZTogXCIlc1wiIiwgZGJjdHlwZSkpKTsKKwkJCQkgZXJybXNnKCJpbnZh bGlkIExDX0NUWVBFIGxvY2FsZSBuYW1lOiBcIiVzXCIiLCBkYmN0eXBlKSwKKwkJCQkgZXJyaGlu dCgiSWYgdGhlIGxvY2FsZSBuYW1lIGlzIHNwZWNpZmljIHRvIElDVSwgdXNlIElDVV9MT0NBTEUu IikpKTsKIAlkYmN0eXBlID0gY2Fub25uYW1lOwogCiAJY2hlY2tfZW5jb2RpbmdfbG9jYWxlX21h dGNoZXMoZW5jb2RpbmcsIGRiY29sbGF0ZSwgZGJjdHlwZSk7CkBAIC0xMDgwLDcgKzEwODcsNyBA QCBjcmVhdGVkYihQYXJzZVN0YXRlICpwc3RhdGUsIGNvbnN0IENyZWF0ZWRiU3RtdCAqc3RtdCkK IAkJCQlpZiAobGFuZ3RhZyAmJiBzdHJjbXAoZGJpY3Vsb2NhbGUsIGxhbmd0YWcpICE9IDApCiAJ CQkJewogCQkJCQllcmVwb3J0KE5PVElDRSwKLQkJCQkJCQkoZXJybXNnKCJ1c2luZyBzdGFuZGFy ZCBmb3JtIFwiJXNcIiBmb3IgbG9jYWxlIFwiJXNcIiIsCisJCQkJCQkJKGVycm1zZygidXNpbmcg c3RhbmRhcmQgZm9ybSBcIiVzXCIgZm9yIElDVSBsb2NhbGUgXCIlc1wiIiwKIAkJCQkJCQkJCWxh bmd0YWcsIGRiaWN1bG9jYWxlKSkpOwogCiAJCQkJCWRiaWN1bG9jYWxlID0gbGFuZ3RhZzsKZGlm ZiAtLWdpdCBhL3NyYy9iaW4vaW5pdGRiL2luaXRkYi5jIGIvc3JjL2Jpbi9pbml0ZGIvaW5pdGRi LmMKaW5kZXggNDA4NjgzNDQ1OC4uMWVmMDI4NjE3ZSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9pbml0 ZGIvaW5pdGRiLmMKKysrIGIvc3JjL2Jpbi9pbml0ZGIvaW5pdGRiLmMKQEAgLTIxNTcsNyArMjE1 NywxMSBAQCBjaGVja19sb2NhbGVfbmFtZShpbnQgY2F0ZWdvcnksIGNvbnN0IGNoYXIgKmxvY2Fs ZSwgY2hhciAqKmNhbm9ubmFtZSkKIAlpZiAocmVzID09IE5VTEwpCiAJewogCQlpZiAoKmxvY2Fs ZSkKLQkJCXBnX2ZhdGFsKCJpbnZhbGlkIGxvY2FsZSBuYW1lIFwiJXNcIiIsIGxvY2FsZSk7CisJ CXsKKwkJCXBnX2xvZ19lcnJvcigiaW52YWxpZCBsb2NhbGUgbmFtZSBcIiVzXCIiLCBsb2NhbGUp OworCQkJcGdfbG9nX2Vycm9yX2hpbnQoIklmIHRoZSBsb2NhbGUgbmFtZSBpcyBzcGVjaWZpYyB0 byBJQ1UsIHVzZSAtLWljdS1sb2NhbGUuIik7CisJCQlleGl0KDEpOworCQl9CiAJCWVsc2UKIAkJ ewogCQkJLyoKQEAgLTIzOTEsNyArMjM5NSw3IEBAIHNldGxvY2FsZXModm9pZCkKIHsKIAljaGFy CSAgICpjYW5vbm5hbWU7CiAKLQkvKiBzZXQgZW1wdHkgbGNfKiB2YWx1ZXMgdG8gbG9jYWxlIGNv bmZpZyBpZiBzZXQgKi8KKwkvKiBzZXQgZW1wdHkgbGNfKiBhbmQgaWN1bG9jYWxlIHZhbHVlcyB0 byBsb2NhbGUgY29uZmlnIGlmIHNldCAqLwogCiAJaWYgKGxvY2FsZSkKIAl7CkBAIC0yNDA3LDYg KzI0MTEsOCBAQCBzZXRsb2NhbGVzKHZvaWQpCiAJCQlsY19tb25ldGFyeSA9IGxvY2FsZTsKIAkJ aWYgKCFsY19tZXNzYWdlcykKIAkJCWxjX21lc3NhZ2VzID0gbG9jYWxlOworCQlpZiAoIWljdV9s b2NhbGUgJiYgbG9jYWxlX3Byb3ZpZGVyID09IENPTExQUk9WSURFUl9JQ1UpCisJCQlpY3VfbG9j YWxlID0gbG9jYWxlOwogCX0KIAogCS8qCkBAIC0yNDQzLDE0ICsyNDQ5LDE4IEBAIHNldGxvY2Fs ZXModm9pZCkKIAkJCXByaW50ZihfKCJVc2luZyBkZWZhdWx0IElDVSBsb2NhbGUgXCIlc1wiLlxu IiksIGljdV9sb2NhbGUpOwogCQl9CiAKLQkJLyogY2Fub25pY2FsaXplIHRvIGEgbGFuZ3VhZ2Ug dGFnICovCi0JCWxhbmd0YWcgPSBpY3VfbGFuZ3VhZ2VfdGFnKGljdV9sb2NhbGUpOwotCQlwcmlu dGYoXygiVXNpbmcgbGFuZ3VhZ2UgdGFnIFwiJXNcIiBmb3IgSUNVIGxvY2FsZSBcIiVzXCIuXG4i KSwKLQkJCSAgIGxhbmd0YWcsIGljdV9sb2NhbGUpOwotCQlwZ19mcmVlKGljdV9sb2NhbGUpOwot CQlpY3VfbG9jYWxlID0gbGFuZ3RhZzsKLQotCQlpY3VfdmFsaWRhdGVfbG9jYWxlKGljdV9sb2Nh bGUpOworCQlpZiAocGdfc3RyY2FzZWNtcChpY3VfbG9jYWxlLCAiQyIpICE9IDAgJiYKKwkJCXBn X3N0cmNhc2VjbXAoaWN1X2xvY2FsZSwgIlBPU0lYIikgIT0gMCkKKwkJeworCQkJLyogY2Fub25p Y2FsaXplIHRvIGEgbGFuZ3VhZ2UgdGFnICovCisJCQlsYW5ndGFnID0gaWN1X2xhbmd1YWdlX3Rh ZyhpY3VfbG9jYWxlKTsKKwkJCXByaW50ZihfKCJVc2luZyBsYW5ndWFnZSB0YWcgXCIlc1wiIGZv ciBJQ1UgbG9jYWxlIFwiJXNcIi5cbiIpLAorCQkJCSAgIGxhbmd0YWcsIGljdV9sb2NhbGUpOwor CQkJcGdfZnJlZShpY3VfbG9jYWxlKTsKKwkJCWljdV9sb2NhbGUgPSBsYW5ndGFnOworCisJCQlp Y3VfdmFsaWRhdGVfbG9jYWxlKGljdV9sb2NhbGUpOworCQl9CiAKIAkJLyoKIAkJICogSW4gc3Vw cG9ydGVkIGJ1aWxkcywgdGhlIElDVSBsb2NhbGUgSUQgd2lsbCBiZSBvcGVuZWQgZHVyaW5nCkBA IC0zMjgyLDcgKzMyOTIsNiBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCQkJYnJl YWs7CiAJCQljYXNlIDg6CiAJCQkJbG9jYWxlID0gIkMiOwotCQkJCWxvY2FsZV9wcm92aWRlciA9 IENPTExQUk9WSURFUl9MSUJDOwogCQkJCWJyZWFrOwogCQkJY2FzZSA5OgogCQkJCXB3ZmlsZW5h bWUgPSBwZ19zdHJkdXAob3B0YXJnKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vc2NyaXB0cy9jcmVh dGVkYi5jIGIvc3JjL2Jpbi9zY3JpcHRzL2NyZWF0ZWRiLmMKaW5kZXggYjQyMDVjNGZhNS4uOWNh ODZhM2U1MyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9zY3JpcHRzL2NyZWF0ZWRiLmMKKysrIGIvc3Jj L2Jpbi9zY3JpcHRzL2NyZWF0ZWRiLmMKQEAgLTE2NCwxNCArMTY0LDYgQEAgbWFpbihpbnQgYXJn YywgY2hhciAqYXJndltdKQogCQkJZXhpdCgxKTsKIAl9CiAKLQlpZiAobG9jYWxlKQotCXsKLQkJ aWYgKCFsY19jdHlwZSkKLQkJCWxjX2N0eXBlID0gbG9jYWxlOwotCQlpZiAoIWxjX2NvbGxhdGUp Ci0JCQlsY19jb2xsYXRlID0gbG9jYWxlOwotCX0KLQogCWlmIChlbmNvZGluZykKIAl7CiAJCWlm IChwZ19jaGFyX3RvX2VuY29kaW5nKGVuY29kaW5nKSA8IDApCkBAIC0yMTksNiArMjExLDExIEBA IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJYXBwZW5kUFFFeHBCdWZmZXIoJnNxbCwg IiBTVFJBVEVHWSAlcyIsIGZtdElkKHN0cmF0ZWd5KSk7CiAJaWYgKHRlbXBsYXRlKQogCQlhcHBl bmRQUUV4cEJ1ZmZlcigmc3FsLCAiIFRFTVBMQVRFICVzIiwgZm10SWQodGVtcGxhdGUpKTsKKwlp ZiAobG9jYWxlKQorCXsKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJnNxbCwgIiBMT0NBTEUgIik7 CisJCWFwcGVuZFN0cmluZ0xpdGVyYWxDb25uKCZzcWwsIGxvY2FsZSwgY29ubik7CisJfQogCWlm IChsY19jb2xsYXRlKQogCXsKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJnNxbCwgIiBMQ19DT0xM QVRFICIpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9zY3JpcHRzL3QvMDIwX2NyZWF0ZWRiLnBsIGIv c3JjL2Jpbi9zY3JpcHRzL3QvMDIwX2NyZWF0ZWRiLnBsCmluZGV4IGFmM2IxNDkyZTMuLjNkYjlm ZTkzMWYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vc2NyaXB0cy90LzAyMF9jcmVhdGVkYi5wbAorKysg Yi9zcmMvYmluL3NjcmlwdHMvdC8wMjBfY3JlYXRlZGIucGwKQEAgLTEyNiw3ICsxMjYsNyBAQCAk bm9kZS0+Y29tbWFuZF9jaGVja3NfYWxsKAogCTEsCiAJW3FyL14kL10sCiAJWwotCQlxci9eY3Jl YXRlZGI6IGVycm9yOiBkYXRhYmFzZSBjcmVhdGlvbiBmYWlsZWQ6IEVSUk9SOiAgaW52YWxpZCBs b2NhbGUgbmFtZXxeY3JlYXRlZGI6IGVycm9yOiBkYXRhYmFzZSBjcmVhdGlvbiBmYWlsZWQ6IEVS Uk9SOiAgbmV3IGNvbGxhdGlvbiBcKGZvbyc7IFNFTEVDVCAnMVwpIGlzIGluY29tcGF0aWJsZSB3 aXRoIHRoZSBjb2xsYXRpb24gb2YgdGhlIHRlbXBsYXRlIGRhdGFiYXNlL3MKKwkJcXIvXmNyZWF0 ZWRiOiBlcnJvcjogZGF0YWJhc2UgY3JlYXRpb24gZmFpbGVkOiBFUlJPUjogIGludmFsaWQgTENf Q09MTEFURSBsb2NhbGUgbmFtZXxeY3JlYXRlZGI6IGVycm9yOiBkYXRhYmFzZSBjcmVhdGlvbiBm YWlsZWQ6IEVSUk9SOiAgbmV3IGNvbGxhdGlvbiBcKGZvbyc7IFNFTEVDVCAnMVwpIGlzIGluY29t cGF0aWJsZSB3aXRoIHRoZSBjb2xsYXRpb24gb2YgdGhlIHRlbXBsYXRlIGRhdGFiYXNlL3MKIAld LAogCSdjcmVhdGVkYiB3aXRoIGluY29ycmVjdCAtLWxjLWNvbGxhdGUnKTsKICRub2RlLT5jb21t YW5kX2NoZWNrc19hbGwoCkBAIC0xMzQsNyArMTM0LDcgQEAgJG5vZGUtPmNvbW1hbmRfY2hlY2tz X2FsbCgKIAkxLAogCVtxci9eJC9dLAogCVsKLQkJcXIvXmNyZWF0ZWRiOiBlcnJvcjogZGF0YWJh c2UgY3JlYXRpb24gZmFpbGVkOiBFUlJPUjogIGludmFsaWQgbG9jYWxlIG5hbWV8XmNyZWF0ZWRi OiBlcnJvcjogZGF0YWJhc2UgY3JlYXRpb24gZmFpbGVkOiBFUlJPUjogIG5ldyBMQ19DVFlQRSBc KGZvbyc7IFNFTEVDVCAnMVwpIGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSBMQ19DVFlQRSBvZiB0 aGUgdGVtcGxhdGUgZGF0YWJhc2UvcworCQlxci9eY3JlYXRlZGI6IGVycm9yOiBkYXRhYmFzZSBj cmVhdGlvbiBmYWlsZWQ6IEVSUk9SOiAgaW52YWxpZCBMQ19DVFlQRSBsb2NhbGUgbmFtZXxeY3Jl YXRlZGI6IGVycm9yOiBkYXRhYmFzZSBjcmVhdGlvbiBmYWlsZWQ6IEVSUk9SOiAgbmV3IExDX0NU WVBFIFwoZm9vJzsgU0VMRUNUICcxXCkgaXMgaW5jb21wYXRpYmxlIHdpdGggdGhlIExDX0NUWVBF IG9mIHRoZSB0ZW1wbGF0ZSBkYXRhYmFzZS9zCiAJXSwKIAknY3JlYXRlZGIgd2l0aCBpbmNvcnJl Y3QgLS1sYy1jdHlwZScpOwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pY3UvdC8wMTBfZGF0YWJh c2UucGwgYi9zcmMvdGVzdC9pY3UvdC8wMTBfZGF0YWJhc2UucGwKaW5kZXggNzE1YjFiZmZkNi4u ZGY0YWYwMGFmZSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvaWN1L3QvMDEwX2RhdGFiYXNlLnBsCisr KyBiL3NyYy90ZXN0L2ljdS90LzAxMF9kYXRhYmFzZS5wbApAQCAtNTEsMTYgKzUxLDIzIEBAIGIp LAogCSdzb3J0IGJ5IGV4cGxpY2l0IGNvbGxhdGlvbiB1cHBlciBmaXJzdCcpOwogCiAKLSMgVGVz dCBlcnJvciBjYXNlcyBpbiBDUkVBVEUgREFUQUJBU0UgaW52b2x2aW5nIGxvY2FsZS1yZWxhdGVk IG9wdGlvbnMKKyMgVGVzdCB0aGF0IExPQ0FMRT0nQycgd29ya3MgZm9yIElDVQogCi1teSAoJHJl dCwgJHN0ZG91dCwgJHN0ZGVycikgPSAkbm9kZTEtPnBzcWwoJ3Bvc3RncmVzJywKLQlxe0NSRUFU RSBEQVRBQkFTRSBkYmljdSBMT0NBTEVfUFJPVklERVIgaWN1IExPQ0FMRSAnQycgVEVNUExBVEUg dGVtcGxhdGUwIEVOQ09ESU5HIFVURjh9KTsKLWlzbnQoJHJldCwgMCwKLQkiSUNVIGxvY2FsZSBt dXN0IGJlIHNwZWNpZmllZCBmb3IgSUNVIHByb3ZpZGVyOiBleGl0IGNvZGUgbm90IDAiKTsKK215 ICRyZXQxID0gJG5vZGUxLT5wc3FsKCdwb3N0Z3JlcycsCisJcXtDUkVBVEUgREFUQUJBU0UgZGJp Y3UyIExPQ0FMRV9QUk9WSURFUiBpY3UgTE9DQUxFICdDJyBURU1QTEFURSB0ZW1wbGF0ZTAgRU5D T0RJTkcgVVRGOH0pOworaXMoJHJldDEsIDAsCisJIkMgbG9jYWxlIHdvcmtzIGZvciBJQ1UiKTsK KworIyBUZXN0IHRoYXQgSUNVLXNwZWNpZmljIGxvY2FsZSBzdHJpbmcgbXVzdCBiZSBzcGVjaWZp ZWQgd2l0aCBJQ1VfTE9DQUxFLAorIyBub3QgTE9DQUxFCisKK215ICgkcmV0MiwgJHN0ZG91dCwg JHN0ZGVycikgPSAkbm9kZTEtPnBzcWwoJ3Bvc3RncmVzJywKKwlxe0NSRUFURSBEQVRBQkFTRSBk YmljdTMgTE9DQUxFX1BST1ZJREVSIGljdSBMT0NBTEUgJ0Bjb2xTdHJlbmd0aD1wcmltYXJ5JyBU RU1QTEFURSB0ZW1wbGF0ZTAgRU5DT0RJTkcgVVRGOH0pOworaXNudCgkcmV0MiwgMCwKKwkiSUNV LXNwZWNpZmljIGxvY2FsZSBtdXN0IGJlIHNwZWNpZmllZCB3aXRoIElDVV9MT0NBTEU6IGV4aXQg Y29kZSBub3QgMCIpOwogbGlrZSgKIAkkc3RkZXJyLAotCXFyL0VSUk9SOiAgSUNVIGxvY2FsZSBt dXN0IGJlIHNwZWNpZmllZC8sCi0JIklDVSBsb2NhbGUgbXVzdCBiZSBzcGVjaWZpZWQgZm9yIElD VSBwcm92aWRlcjogZXJyb3IgbWVzc2FnZSIpOwotCisJcXIvRVJST1I6ICBpbnZhbGlkIExDX0NP TExBVEUgbG9jYWxlIG5hbWUvLAorCSJJQ1Utc3BlY2lmaWMgbG9jYWxlIG11c3QgYmUgc3BlY2lm aWVkIHdpdGggSUNVX0xPQ0FMRTogZXJyb3IgbWVzc2FnZSIpOwogCiBkb25lX3Rlc3RpbmcoKTsK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29sbGF0ZS5pY3UudXRmOC5v dXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvbGxhdGUuaWN1LnV0Zjgub3V0CmluZGV4 IDUzYWI0OTZiZmUuLmVjY2ViNmQxMGMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvY29sbGF0ZS5pY3UudXRmOC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9jb2xsYXRlLmljdS51dGY4Lm91dApAQCAtMTIwMiw5ICsxMjAyLDkgQEAgU0VMRUNUICdjb3TD qScgPCAnY8O0dGUnIENPTExBVEUgInVuZC14LWljdSIsICdjb3TDqScgPiAnY8O0dGUnIENPTExB VEUgdGVzdGNvbGwKICgxIHJvdykKIAogQ1JFQVRFIENPTExBVElPTiB0ZXN0Y29sbF9sb3dlcl9m aXJzdCAocHJvdmlkZXIgPSBpY3UsIGxvY2FsZSA9ICdAY29sQ2FzZUZpcnN0PWxvd2VyJyk7Ci1O T1RJQ0U6ICB1c2luZyBzdGFuZGFyZCBmb3JtICJ1bmQtdS1rZi1sb3dlciIgZm9yIGxvY2FsZSAi QGNvbENhc2VGaXJzdD1sb3dlciIKK05PVElDRTogIHVzaW5nIHN0YW5kYXJkIGZvcm0gInVuZC11 LWtmLWxvd2VyIiBmb3IgSUNVIGxvY2FsZSAiQGNvbENhc2VGaXJzdD1sb3dlciIKIENSRUFURSBD T0xMQVRJT04gdGVzdGNvbGxfdXBwZXJfZmlyc3QgKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAn QGNvbENhc2VGaXJzdD11cHBlcicpOwotTk9USUNFOiAgdXNpbmcgc3RhbmRhcmQgZm9ybSAidW5k LXUta2YtdXBwZXIiIGZvciBsb2NhbGUgIkBjb2xDYXNlRmlyc3Q9dXBwZXIiCitOT1RJQ0U6ICB1 c2luZyBzdGFuZGFyZCBmb3JtICJ1bmQtdS1rZi11cHBlciIgZm9yIElDVSBsb2NhbGUgIkBjb2xD YXNlRmlyc3Q9dXBwZXIiCiBTRUxFQ1QgJ2FhYScgPCAnQUFBJyBDT0xMQVRFIHRlc3Rjb2xsX2xv d2VyX2ZpcnN0LCAnYWFhJyA+ICdBQUEnIENPTExBVEUgdGVzdGNvbGxfdXBwZXJfZmlyc3Q7CiAg P2NvbHVtbj8gfCA/Y29sdW1uPyAKIC0tLS0tLS0tLS0rLS0tLS0tLS0tLQpAQCAtMTIxMiw3ICsx MjEyLDcgQEAgU0VMRUNUICdhYWEnIDwgJ0FBQScgQ09MTEFURSB0ZXN0Y29sbF9sb3dlcl9maXJz dCwgJ2FhYScgPiAnQUFBJyBDT0xMQVRFIHRlc3Rjb2wKICgxIHJvdykKIAogQ1JFQVRFIENPTExB VElPTiB0ZXN0Y29sbF9zaGlmdGVkIChwcm92aWRlciA9IGljdSwgbG9jYWxlID0gJ0Bjb2xBbHRl cm5hdGU9c2hpZnRlZCcpOwotTk9USUNFOiAgdXNpbmcgc3RhbmRhcmQgZm9ybSAidW5kLXUta2Et c2hpZnRlZCIgZm9yIGxvY2FsZSAiQGNvbEFsdGVybmF0ZT1zaGlmdGVkIgorTk9USUNFOiAgdXNp bmcgc3RhbmRhcmQgZm9ybSAidW5kLXUta2Etc2hpZnRlZCIgZm9yIElDVSBsb2NhbGUgIkBjb2xB bHRlcm5hdGU9c2hpZnRlZCIKIFNFTEVDVCAnZGUtbHVnZScgPCAnZGVhbnphJyBDT0xMQVRFICJ1 bmQteC1pY3UiLCAnZGUtbHVnZScgPiAnZGVhbnphJyBDT0xMQVRFIHRlc3Rjb2xsX3NoaWZ0ZWQ7 CiAgP2NvbHVtbj8gfCA/Y29sdW1uPyAKIC0tLS0tLS0tLS0rLS0tLS0tLS0tLQpAQCAtMTIyOSwx MiArMTIyOSwxMiBAQCBTRUxFQ1QgJ0EtMjEnID4gJ0EtMTIzJyBDT0xMQVRFICJ1bmQteC1pY3Ui LCAnQS0yMScgPCAnQS0xMjMnIENPTExBVEUgdGVzdGNvbGxfbgogKDEgcm93KQogCiBDUkVBVEUg Q09MTEFUSU9OIHRlc3Rjb2xsX2Vycm9yMSAocHJvdmlkZXIgPSBpY3UsIGxvY2FsZSA9ICdAY29s TnVtZXJpYz1sb3dlcicpOwotTk9USUNFOiAgdXNpbmcgc3RhbmRhcmQgZm9ybSAidW5kLXUta24t bG93ZXIiIGZvciBsb2NhbGUgIkBjb2xOdW1lcmljPWxvd2VyIgorTk9USUNFOiAgdXNpbmcgc3Rh bmRhcmQgZm9ybSAidW5kLXUta24tbG93ZXIiIGZvciBJQ1UgbG9jYWxlICJAY29sTnVtZXJpYz1s b3dlciIKIEVSUk9SOiAgY291bGQgbm90IG9wZW4gY29sbGF0b3IgZm9yIGxvY2FsZSAidW5kLXUt a24tbG93ZXIiOiBVX0lMTEVHQUxfQVJHVU1FTlRfRVJST1IKIC0tIHRlc3QgdGhhdCBhdHRyaWJ1 dGVzIG5vdCBoYW5kbGVkIGJ5IGljdV9zZXRfY29sbGF0aW9uX2F0dHJpYnV0ZXMoKQogLS0gKGhh bmRsZWQgYnkgdWNvbF9vcGVuKCkgZGlyZWN0bHkpIGFsc28gd29yawogQ1JFQVRFIENPTExBVElP TiB0ZXN0Y29sbF9kZV9waG9uZWJvb2sgKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAnZGVAY29s bGF0aW9uPXBob25lYm9vaycpOwotTk9USUNFOiAgdXNpbmcgc3RhbmRhcmQgZm9ybSAiZGUtdS1j by1waG9uZWJrIiBmb3IgbG9jYWxlICJkZUBjb2xsYXRpb249cGhvbmVib29rIgorTk9USUNFOiAg dXNpbmcgc3RhbmRhcmQgZm9ybSAiZGUtdS1jby1waG9uZWJrIiBmb3IgSUNVIGxvY2FsZSAiZGVA Y29sbGF0aW9uPXBob25lYm9vayIKIFNFTEVDVCAnR29sZG1hbm4nIDwgJ0fDtnR6JyBDT0xMQVRF ICJkZS14LWljdSIsICdHb2xkbWFubicgPiAnR8O2dHonIENPTExBVEUgdGVzdGNvbGxfZGVfcGhv bmVib29rOwogID9jb2x1bW4/IHwgP2NvbHVtbj8gCiAtLS0tLS0tLS0tKy0tLS0tLS0tLS0KQEAg LTEyNDMsNyArMTI0Myw3IEBAIFNFTEVDVCAnR29sZG1hbm4nIDwgJ0fDtnR6JyBDT0xMQVRFICJk ZS14LWljdSIsICdHb2xkbWFubicgPiAnR8O2dHonIENPTExBVEUgdGVzCiAKIC0tIHJ1bGVzCiBD UkVBVEUgQ09MTEFUSU9OIHRlc3Rjb2xsX3J1bGVzMSAocHJvdmlkZXIgPSBpY3UsIGxvY2FsZSA9 ICcnLCBydWxlcyA9ICcmYSA8IGcnKTsKLU5PVElDRTogIHVzaW5nIHN0YW5kYXJkIGZvcm0gInVu ZCIgZm9yIGxvY2FsZSAiIgorTk9USUNFOiAgdXNpbmcgc3RhbmRhcmQgZm9ybSAidW5kIiBmb3Ig SUNVIGxvY2FsZSAiIgogQ1JFQVRFIFRBQkxFIHRlc3Q3IChhIHRleHQpOwogLS0gZXhhbXBsZSBm cm9tIGh0dHBzOi8vdW5pY29kZS1vcmcuZ2l0aHViLmlvL2ljdS91c2VyZ3VpZGUvY29sbGF0aW9u L2N1c3RvbWl6YXRpb24vI3N5bnRheAogSU5TRVJUIElOVE8gdGVzdDcgVkFMVUVTICgnQWJlcm5h dGh5JyksICgnYXBwbGUnKSwgKCdiaXJkJyksICgnQm9zdG9uJyksICgnR3JhaGFtJyksICgnZ3Jl ZW4nKTsKQEAgLTEyNzEsMTMgKzEyNzEsMTMgQEAgU0VMRUNUICogRlJPTSB0ZXN0NyBPUkRFUiBC WSBhIENPTExBVEUgdGVzdGNvbGxfcnVsZXMxOwogCiBEUk9QIFRBQkxFIHRlc3Q3OwogQ1JFQVRF IENPTExBVElPTiB0ZXN0Y29sbF9ydWxlc3ggKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAnJywg cnVsZXMgPSAnISF3cm9uZyEhJyk7Ci1OT1RJQ0U6ICB1c2luZyBzdGFuZGFyZCBmb3JtICJ1bmQi IGZvciBsb2NhbGUgIiIKK05PVElDRTogIHVzaW5nIHN0YW5kYXJkIGZvcm0gInVuZCIgZm9yIElD VSBsb2NhbGUgIiIKIEVSUk9SOiAgY291bGQgbm90IG9wZW4gY29sbGF0b3IgZm9yIGxvY2FsZSAi dW5kIiB3aXRoIHJ1bGVzICIhIXdyb25nISEiOiBVX0lOVkFMSURfRk9STUFUX0VSUk9SCiAtLSBu b25kZXRlcm1pbmlzdGljIGNvbGxhdGlvbnMKIENSRUFURSBDT0xMQVRJT04gY3Rlc3RfZGV0IChw cm92aWRlciA9IGljdSwgbG9jYWxlID0gJycsIGRldGVybWluaXN0aWMgPSB0cnVlKTsKLU5PVElD RTogIHVzaW5nIHN0YW5kYXJkIGZvcm0gInVuZCIgZm9yIGxvY2FsZSAiIgorTk9USUNFOiAgdXNp bmcgc3RhbmRhcmQgZm9ybSAidW5kIiBmb3IgSUNVIGxvY2FsZSAiIgogQ1JFQVRFIENPTExBVElP TiBjdGVzdF9ub25kZXQgKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAnJywgZGV0ZXJtaW5pc3Rp YyA9IGZhbHNlKTsKLU5PVElDRTogIHVzaW5nIHN0YW5kYXJkIGZvcm0gInVuZCIgZm9yIGxvY2Fs ZSAiIgorTk9USUNFOiAgdXNpbmcgc3RhbmRhcmQgZm9ybSAidW5kIiBmb3IgSUNVIGxvY2FsZSAi IgogQ1JFQVRFIFRBQkxFIHRlc3Q2IChhIGludCwgYiB0ZXh0KTsKIC0tIHNhbWUgc3RyaW5nIGlu IGRpZmZlcmVudCBub3JtYWwgZm9ybXMKIElOU0VSVCBJTlRPIHRlc3Q2IFZBTFVFUyAoMSwgVSYn XDAwRTRiYycpOwpAQCAtMTMyNyw5ICsxMzI3LDkgQEAgU0VMRUNUICogRlJPTSB0ZXN0NmEgV0hF UkUgYiA9IEFSUkFZWyfDpGJjJ10gQ09MTEFURSBjdGVzdF9ub25kZXQ7CiAoMiByb3dzKQogCiBD UkVBVEUgQ09MTEFUSU9OIGNhc2Vfc2Vuc2l0aXZlIChwcm92aWRlciA9IGljdSwgbG9jYWxlID0g JycpOwotTk9USUNFOiAgdXNpbmcgc3RhbmRhcmQgZm9ybSAidW5kIiBmb3IgbG9jYWxlICIiCitO T1RJQ0U6ICB1c2luZyBzdGFuZGFyZCBmb3JtICJ1bmQiIGZvciBJQ1UgbG9jYWxlICIiCiBDUkVB VEUgQ09MTEFUSU9OIGNhc2VfaW5zZW5zaXRpdmUgKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAn QGNvbFN0cmVuZ3RoPXNlY29uZGFyeScsIGRldGVybWluaXN0aWMgPSBmYWxzZSk7Ci1OT1RJQ0U6 ICB1c2luZyBzdGFuZGFyZCBmb3JtICJ1bmQtdS1rcy1sZXZlbDIiIGZvciBsb2NhbGUgIkBjb2xT dHJlbmd0aD1zZWNvbmRhcnkiCitOT1RJQ0U6ICB1c2luZyBzdGFuZGFyZCBmb3JtICJ1bmQtdS1r cy1sZXZlbDIiIGZvciBJQ1UgbG9jYWxlICJAY29sU3RyZW5ndGg9c2Vjb25kYXJ5IgogU0VMRUNU ICdhYmMnIDw9ICdBQkMnIENPTExBVEUgY2FzZV9zZW5zaXRpdmUsICdhYmMnID49ICdBQkMnIENP TExBVEUgY2FzZV9zZW5zaXRpdmU7CiAgP2NvbHVtbj8gfCA/Y29sdW1uPyAKIC0tLS0tLS0tLS0r LS0tLS0tLS0tLQotLSAKMi4zNC4xCgo= --=-miW97FDXgvZne5cZnHD1--