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.98.2) (envelope-from ) id 1xBZdx-00000003GyK-0cgf for pgsql-hackers@arkaria.postgresql.org; Tue, 29 Sep 2026 15:21:21 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.98.2) (envelope-from ) id 1xBZcw-0000000FTpG-1Ho0 for pgsql-hackers@arkaria.postgresql.org; Tue, 29 Sep 2026 15:20:18 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1xBZcv-0000000FTp7-2xr0 for pgsql-hackers@lists.postgresql.org; Tue, 29 Sep 2026 15:20:17 +0000 Received: from relay4-d.mail.gandi.net ([2001:4b98:dc4:8::224]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1xBZcs-00000001tHB-13ji for pgsql-hackers@lists.postgresql.org; Tue, 29 Sep 2026 15:20:16 +0000 Received: by mail.gandi.net (Postfix) with ESMTPSA id 78B513EE13; Tue, 29 Sep 2026 15:20:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=postgresfriends.org; s=gm1; t=1790695212; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=ekvkxUw82yKaQDLTJFxMAgMWB8Pfv8zDf9JKC9MrIzk=; b=au9Z8lM7loK3tqvfCPQP8ZCKU5dIWKUFNgX6K+u+GraQ/NN9Hs9ckzgXQ7AujBjr8L583P ImxUg5xc5g8i+l0viELWYdzf/3qmpgim2I9dCSybhm5s8gY5KDLAJjo/L8301K3gn0s50G yiUyReuBLnPnYRaG80tV4fS3Ub6JQ3pp5i7E8HACSJaZ+Oy2Lv95Pb+RGZy8YY4niLMdkj TNpH85VCvCmWDjDTxDbqza8RoP7dzini3uvvEY45EHBy2q9mVO+qA7Ks9jOvdx6l/4ix9u /4D2GIf7tED0sHrrIA2fueoqsAzzeS4DW/KHNxw5oGOhl8TPCs3ZDMVOgwEx5Q== Content-Type: multipart/mixed; boundary="------------OG2ouDHYzt1pkYdGJTjD0c7u" Message-ID: <9ab35dbb-d9a4-4c1e-bae2-7763ddeb720c@postgresfriends.org> Date: Tue, 29 Sep 2026 17:20:11 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Logical Implication To: Nathan Bossart Cc: PostgreSQL Hackers References: <37c76707-e6fa-4ee3-b57f-aa0bf1b0bba8@postgresfriends.org> Content-Language: en-US From: Vik Fearing In-Reply-To: X-GND-Sasl: vik@postgresfriends.org X-GND-Cause: dmFkZTGDl/6xFsEpmoMN88AchohOSkqqtaDxsK2qcQ/6y3R4l0jpgpONwP6gqkn/9UY2k8r11CxMEvskshRVyHXoW4bWilL7It9t6uPUYEA+aysk0yvpYkDCq2S8Uk10uLKVmFVLx7RTUaGXW+A3dVNMM4gVYV0Dq+oumQrFLMe1/SpdoErsT3lhMRslBHztqnDBQ/sRFJhBDcEFbyxKfeZfsOcY7baq4cCgR1KKN8PFgEVnlfG0Alrcw+dUFmRIUU8MuGksqtiwirkOQGuoyuN52LGY4/NGIlW5EBUZ149tpGtMPh6sGdeg34S2lO0XXy+/vpkVJ7Bi2q8r/lrXh3CREYNYbb+EmVR4VXyg9YYnUEMnj3m6FhqumTSv9GTB23K21ZmKUUv1s49FbWNTy5QCol/O1lTpFs+ERK+InwEqKPrBUuabvqj2iPpbCU6IMlxfNAqbl7b23fST5eF+X1w9y+FJ3b9yCgI86e6UTg2QufE/i4cJHveq/3lrMT+zbrFQL8m7K+hvjERdklZXYmb/FI3mnJi4Z85vjkmG9Ddjxt2CBDwOPEXKqW61B0LSoTP5+llKZ0Na8dIaVxL8+g8MHfPAVrCf0eAXnotqHaNgh7dzBlITcujcyM4DBx6lh1T7JaQcyikjI2XuSy2KRbSncVPpebViluh6iQWgkL+lK+HPZA X-GND-State: clean X-GND-Score: -100 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------OG2ouDHYzt1pkYdGJTjD0c7u Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 24/09/2026 16:33, Nathan Bossart wrote: > I spent some time looking at this one from a few different angles. Thanks! > * NULL behavior: while not a conscious decision of your patch, a straight > translation of "a IMPLIES b" to "NOT a OR b" would settle the standard on > Kleene logic for material implication [0]. I think that's okay; IIUC that > would be the case for any popular SQL database that implements it in a > similar fashion. According to Wikipedia, SQL uses "a comment fragment of > the Kleene and Łukasiewicz three-valued logic (which differ in their > definition of implication; however, SQL defines no such operation)" [1]. > This proposal changes that, so it seems worth calling out. I've added some documentation for this. > * Short circuiting: IIUC the new IMPLIES operation wouldn't be guaranteed > to short-circuit, which matches the behavior of AND and OR and thus is > probably fine. Yeah, SQL is not a short-circuiting language, and since this gets transformed during parse analysis, it inherits whatever short-circuiting postgres does do. > * Precedence: Placing it below OR seems to be pretty common, so no concerns > there. I don't know where it belongs in relation to INTERSECT, UNION, or > EXCEPT, though. Any thoughts about that? It doesn't belong anywhere in relation to those.  Those are set operators and this is a boolean operator. > * Associativity: The proposal chooses right associativity. I thought about > this part the most, and I'm not sure any associativity is desirable. I > think we should forbid chained implications for two reasons: 1) if we do it > one way and the SQL committee chooses the other, we're in a tight spot, and I will make sure this is settled with the committee long before v20 hits feature freeze.  I don't expect them to contradict me on this because all languages that have this operator (e.g. Haskell, Rocq, Agda, TLA+, SMT-LIB, Alloy, Isabelle, etc) all use right associativity. The precedent for right associativity is enormous. > 2) I cannot come up with any natural examples to illustrate the desired > behavior. Take the following example: > > shipped IMPLIES zip code set IMPLIES ship date in the past > > Under right associativity, this would translate to > > NOT shipped OR NOT zip code set OR ship date in the past > > The former reads as "if shipped, then the zip code is set and the ship date > is in the past", but the latter is pretty obviously not that. If "shipped" > is true and "zip code" is not set, it would return true, for example. > Granted, the user probably should have written > > shipped IMPLIES (zip code set AND ship date in the past) > > but that feels like an easy mistake to make, at least to me. I'm not sure > left associativity is any better in this regard. I disagree with you here.     a IMPLIES b IMPLIES c     NOT a OR (NOT b OR c)     (NOT a OR NOT b) OR c     NOT (a AND b) OR c     (a AND b) IMPLIES c which reads as "if shipped and the zip code is set then the ship date is in the past". In your example, if not shipped or the zip code is not set, the antecedent is not true so the implication asserts nothing and is satisfied, so your conclusion that it would return true is correct. Attached is a v2 with doc and test improvements. No code changes. -- Vik Fearing --------------OG2ouDHYzt1pkYdGJTjD0c7u Content-Type: text/plain; charset=UTF-8; name="v2-0001-doc-Rearrange-the-logical-operator-truth-tables.patch" Content-Disposition: attachment; filename*0="v2-0001-doc-Rearrange-the-logical-operator-truth-tables.patc"; filename*1="h" Content-Transfer-Encoding: base64 RnJvbSAzYWYzM2JlNTkxNDZmYjY1MGEyYzMwMjY2Mzg3OTlkZGQ4ODI0NjUyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBWaWsgRmVhcmluZyA8dmlrQGNob3VwcGVzLmNvbT4K RGF0ZTogVGh1LCAxMCBTZXAgMjAyNiAxNDozMDo1MSArMDIwMApTdWJqZWN0OiBbUEFUQ0gg djIgMS8yXSBkb2M6IFJlYXJyYW5nZSB0aGUgbG9naWNhbCBvcGVyYXRvciB0cnV0aCB0YWJs ZXMKClByZXNlbnQgQU5ELCBPUiwgYW5kIE5PVCBhcyBtYXRyaXggdGFibGVzIGluZGV4ZWQg Ynkgb3BlcmFuZCwgaW5zdGVhZCBvZgpvbmUgY29tYmluZWQgcm93LXBlci1jYXNlIHRhYmxl LCBhbmQgbmFtZSB0aGUgdGhpcmQgdHJ1dGggdmFsdWUgdW5rbm93bi4KTWFyayB0aGUgZmly c3QgY29sdW1uIGFzIHJvdyBoZWFkZXJzIHNvIHRoYXQgaXQgaXMgc3R5bGVkIGxpa2UgdGhl IGhlYWRlcgpyb3cuCi0tLQogZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1sb2dpY2FsLnNnbWwg fCAxMDUgKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDU4 IGluc2VydGlvbnMoKyksIDQ3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC9mdW5jL2Z1bmMtbG9naWNhbC5zZ21sIGIvZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1s b2dpY2FsLnNnbWwKaW5kZXggNjVlNTBlNjVhODEuLjViYTYzODlkYjU2IDEwMDY0NAotLS0g YS9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWxvZ2ljYWwuc2dtbAorKysgYi9kb2Mvc3JjL3Nn bWwvZnVuYy9mdW5jLWxvZ2ljYWwuc2dtbApAQCAtNDYsODkgKzQ2LDEwMCBAQAogPC9zeW5v cHNpcz4KIAogICAgIDxhY3JvbnltPlNRTDwvYWNyb255bT4gdXNlcyBhIHRocmVlLXZhbHVl ZCBsb2dpYyBzeXN0ZW0gd2l0aCB0cnVlLAotICAgIGZhbHNlLCBhbmQgPGxpdGVyYWw+bnVs bDwvbGl0ZXJhbD4sIHdoaWNoIHJlcHJlc2VudHMgPHF1b3RlPnVua25vd248L3F1b3RlPi4K LSAgICBPYnNlcnZlIHRoZSBmb2xsb3dpbmcgdHJ1dGggdGFibGVzOgorICAgIGZhbHNlLCBh bmQgdW5rbm93bjsgdGhlIG51bGwgdmFsdWUgb2YgYSA8dHlwZT5ib29sZWFuPC90eXBlPiBh bmQgdGhlIHRydXRoCisgICAgdmFsdWUgdW5rbm93biBhcmUgb25lIGFuZCB0aGUgc2FtZS4g IEluIHRoZSB0cnV0aCB0YWJsZXMgYmVsb3cgdGhlIGxlZnQKKyAgICBvcGVyYW5kIG9mIGEg YmluYXJ5IG9wZXJhdG9yIHNlbGVjdHMgdGhlIHJvdywgYW5kIHRoZSByaWdodCBvcGVyYW5k IHRoZQorICAgIGNvbHVtbjoKIAotICAgIDxpbmZvcm1hbHRhYmxlPgorICAgIDxpbmZvcm1h bHRhYmxlIHJvd2hlYWRlcj0iZmlyc3Rjb2wiPgogICAgICA8dGdyb3VwIGNvbHM9IjQiPgog ICAgICAgPHRoZWFkPgogICAgICAgIDxyb3c+Ci0gICAgICAgIDxlbnRyeT48cmVwbGFjZWFi bGU+YTwvcmVwbGFjZWFibGU+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5PjxyZXBsYWNlYWJs ZT5iPC9yZXBsYWNlYWJsZT48L2VudHJ5PgotICAgICAgICA8ZW50cnk+PHJlcGxhY2VhYmxl PmE8L3JlcGxhY2VhYmxlPiBBTkQgPHJlcGxhY2VhYmxlPmI8L3JlcGxhY2VhYmxlPjwvZW50 cnk+Ci0gICAgICAgIDxlbnRyeT48cmVwbGFjZWFibGU+YTwvcmVwbGFjZWFibGU+IE9SIDxy ZXBsYWNlYWJsZT5iPC9yZXBsYWNlYWJsZT48L2VudHJ5PgorICAgICAgICA8ZW50cnk+QU5E PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5PlRydWU8L2VudHJ5PgorICAgICAgICA8ZW50cnk+ RmFsc2U8L2VudHJ5PgorICAgICAgICA8ZW50cnk+VW5rbm93bjwvZW50cnk+CiAgICAgICAg PC9yb3c+CiAgICAgICA8L3RoZWFkPgogCiAgICAgICA8dGJvZHk+CiAgICAgICAgPHJvdz4K LSAgICAgICAgPGVudHJ5PlRSVUU8L2VudHJ5PgotICAgICAgICA8ZW50cnk+VFJVRTwvZW50 cnk+Ci0gICAgICAgIDxlbnRyeT5UUlVFPC9lbnRyeT4KLSAgICAgICAgPGVudHJ5PlRSVUU8 L2VudHJ5PgorICAgICAgICA8ZW50cnk+VHJ1ZTwvZW50cnk+CisgICAgICAgIDxlbnRyeT5U cnVlPC9lbnRyeT4KKyAgICAgICAgPGVudHJ5PkZhbHNlPC9lbnRyeT4KKyAgICAgICAgPGVu dHJ5PlVua25vd248L2VudHJ5PgogICAgICAgIDwvcm93PgogCiAgICAgICAgPHJvdz4KLSAg ICAgICAgPGVudHJ5PlRSVUU8L2VudHJ5PgotICAgICAgICA8ZW50cnk+RkFMU0U8L2VudHJ5 PgotICAgICAgICA8ZW50cnk+RkFMU0U8L2VudHJ5PgotICAgICAgICA8ZW50cnk+VFJVRTwv ZW50cnk+CisgICAgICAgIDxlbnRyeT5GYWxzZTwvZW50cnk+CisgICAgICAgIDxlbnRyeT5G YWxzZTwvZW50cnk+CisgICAgICAgIDxlbnRyeT5GYWxzZTwvZW50cnk+CisgICAgICAgIDxl bnRyeT5GYWxzZTwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAKICAgICAgICA8cm93PgotICAg ICAgICA8ZW50cnk+VFJVRTwvZW50cnk+Ci0gICAgICAgIDxlbnRyeT5OVUxMPC9lbnRyeT4K LSAgICAgICAgPGVudHJ5Pk5VTEw8L2VudHJ5PgotICAgICAgICA8ZW50cnk+VFJVRTwvZW50 cnk+CisgICAgICAgIDxlbnRyeT5Vbmtub3duPC9lbnRyeT4KKyAgICAgICAgPGVudHJ5PlVu a25vd248L2VudHJ5PgorICAgICAgICA8ZW50cnk+RmFsc2U8L2VudHJ5PgorICAgICAgICA8 ZW50cnk+VW5rbm93bjwvZW50cnk+CiAgICAgICAgPC9yb3c+CisgICAgICA8L3Rib2R5Pgor ICAgICA8L3Rncm91cD4KKyAgICA8L2luZm9ybWFsdGFibGU+CiAKKyAgICA8aW5mb3JtYWx0 YWJsZSByb3doZWFkZXI9ImZpcnN0Y29sIj4KKyAgICAgPHRncm91cCBjb2xzPSI0Ij4KKyAg ICAgIDx0aGVhZD4KICAgICAgICA8cm93PgotICAgICAgICA8ZW50cnk+RkFMU0U8L2VudHJ5 PgotICAgICAgICA8ZW50cnk+RkFMU0U8L2VudHJ5PgotICAgICAgICA8ZW50cnk+RkFMU0U8 L2VudHJ5PgotICAgICAgICA8ZW50cnk+RkFMU0U8L2VudHJ5PgorICAgICAgICA8ZW50cnk+ T1I8L2VudHJ5PgorICAgICAgICA8ZW50cnk+VHJ1ZTwvZW50cnk+CisgICAgICAgIDxlbnRy eT5GYWxzZTwvZW50cnk+CisgICAgICAgIDxlbnRyeT5Vbmtub3duPC9lbnRyeT4KICAgICAg ICA8L3Jvdz4KKyAgICAgIDwvdGhlYWQ+CiAKKyAgICAgIDx0Ym9keT4KICAgICAgICA8cm93 PgotICAgICAgICA8ZW50cnk+RkFMU0U8L2VudHJ5PgotICAgICAgICA8ZW50cnk+TlVMTDwv ZW50cnk+Ci0gICAgICAgIDxlbnRyeT5GQUxTRTwvZW50cnk+Ci0gICAgICAgIDxlbnRyeT5O VUxMPC9lbnRyeT4KKyAgICAgICAgPGVudHJ5PlRydWU8L2VudHJ5PgorICAgICAgICA8ZW50 cnk+VHJ1ZTwvZW50cnk+CisgICAgICAgIDxlbnRyeT5UcnVlPC9lbnRyeT4KKyAgICAgICAg PGVudHJ5PlRydWU8L2VudHJ5PgogICAgICAgIDwvcm93PgogCiAgICAgICAgPHJvdz4KLSAg ICAgICAgPGVudHJ5Pk5VTEw8L2VudHJ5PgotICAgICAgICA8ZW50cnk+TlVMTDwvZW50cnk+ Ci0gICAgICAgIDxlbnRyeT5OVUxMPC9lbnRyeT4KLSAgICAgICAgPGVudHJ5Pk5VTEw8L2Vu dHJ5PgorICAgICAgICA8ZW50cnk+RmFsc2U8L2VudHJ5PgorICAgICAgICA8ZW50cnk+VHJ1 ZTwvZW50cnk+CisgICAgICAgIDxlbnRyeT5GYWxzZTwvZW50cnk+CisgICAgICAgIDxlbnRy eT5Vbmtub3duPC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKworICAgICAgIDxyb3c+CisgICAg ICAgIDxlbnRyeT5Vbmtub3duPC9lbnRyeT4KKyAgICAgICAgPGVudHJ5PlRydWU8L2VudHJ5 PgorICAgICAgICA8ZW50cnk+VW5rbm93bjwvZW50cnk+CisgICAgICAgIDxlbnRyeT5Vbmtu b3duPC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAgICAgIDwvdGJvZHk+CiAgICAgIDwvdGdy b3VwPgogICAgIDwvaW5mb3JtYWx0YWJsZT4KIAotICAgIDxpbmZvcm1hbHRhYmxlPgotICAg ICA8dGdyb3VwIGNvbHM9IjIiPgorICAgIDxpbmZvcm1hbHRhYmxlIHJvd2hlYWRlcj0iZmly c3Rjb2wiPgorICAgICA8dGdyb3VwIGNvbHM9IjQiPgogICAgICAgPHRoZWFkPgogICAgICAg IDxyb3c+Ci0gICAgICAgIDxlbnRyeT48cmVwbGFjZWFibGU+YTwvcmVwbGFjZWFibGU+PC9l bnRyeT4KLSAgICAgICAgPGVudHJ5Pk5PVCA8cmVwbGFjZWFibGU+YTwvcmVwbGFjZWFibGU+ PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5Pk5PVDwvZW50cnk+CisgICAgICAgIDxlbnRyeT5U cnVlPC9lbnRyeT4KKyAgICAgICAgPGVudHJ5PkZhbHNlPC9lbnRyeT4KKyAgICAgICAgPGVu dHJ5PlVua25vd248L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgPC90aGVhZD4KIAog ICAgICAgPHRib2R5PgogICAgICAgIDxyb3c+Ci0gICAgICAgIDxlbnRyeT5UUlVFPC9lbnRy eT4KLSAgICAgICAgPGVudHJ5PkZBTFNFPC9lbnRyeT4KLSAgICAgICA8L3Jvdz4KLQotICAg ICAgIDxyb3c+Ci0gICAgICAgIDxlbnRyeT5GQUxTRTwvZW50cnk+Ci0gICAgICAgIDxlbnRy eT5UUlVFPC9lbnRyeT4KLSAgICAgICA8L3Jvdz4KLQotICAgICAgIDxyb3c+Ci0gICAgICAg IDxlbnRyeT5OVUxMPC9lbnRyeT4KLSAgICAgICAgPGVudHJ5Pk5VTEw8L2VudHJ5PgorICAg ICAgICA8ZW50cnk+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5PkZhbHNlPC9lbnRyeT4KKyAg ICAgICAgPGVudHJ5PlRydWU8L2VudHJ5PgorICAgICAgICA8ZW50cnk+VW5rbm93bjwvZW50 cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICA8L3Rib2R5PgogICAgICA8L3Rncm91cD4KLS0g CjIuNTUuMAoK --------------OG2ouDHYzt1pkYdGJTjD0c7u Content-Type: text/plain; charset=UTF-8; name="v2-0002-Add-the-IMPLIES-boolean-operator.patch" Content-Disposition: attachment; filename="v2-0002-Add-the-IMPLIES-boolean-operator.patch" Content-Transfer-Encoding: base64 RnJvbSA3OTZkOGNlZDdlYjMwYmNkNDM1NzA5Mzc0MmExNDExNzFhYThiZDI2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBWaWsgRmVhcmluZyA8dmlrQGNob3VwcGVzLmNvbT4K RGF0ZTogVGh1LCAxMCBTZXAgMjAyNiAxNDozMTowMyArMDIwMApTdWJqZWN0OiBbUEFUQ0gg djIgMi8yXSBBZGQgdGhlIElNUExJRVMgYm9vbGVhbiBvcGVyYXRvcgoKYSBJTVBMSUVTIGIg aXMgbWF0ZXJpYWwgaW1wbGljYXRpb24sIHBhcnNlZCBhcyBhIHJpZ2h0LWFzc29jaWF0aXZl Cm9wZXJhdG9yIGJpbmRpbmcgYmVsb3cgT1IgYW5kIGV4cGFuZGVkIHRvIE5PVCBhIE9SIGIg aW4gdGhlIHBhcnNlciwgc28KdHlwZSBlcnJvcnMgYXJlIHJlcG9ydGVkIGFnYWluc3QgSU1Q TElFUyBpdHNlbGYuCgpCZWNhdXNlIE5PVCBhbmQgT1IgYXJlIGFscmVhZHkgS2xlZW5lIG9w ZXJhdG9ycywgdGhhdCBleHBhbnNpb24gc2V0dGxlcwp0aGUgdGhyZWUtdmFsdWVkIHRydXRo IHRhYmxlIG9uIEtsZWVuZSBpbXBsaWNhdGlvbiwgd2hlcmUgVW5rbm93bgpJTVBMSUVTIFVu a25vd24gaXMgVW5rbm93bi4gIFNRTCBoYXMgdW50aWwgbm93IHVzZWQgb25seSB0aGUgZnJh Z21lbnQKb2YgdGhyZWUtdmFsdWVkIGxvZ2ljIG9uIHdoaWNoIEtsZWVuZSBhbmQgTHVrYXNp ZXdpY3ogYWdyZWUsIGFuZAppbXBsaWNhdGlvbiBpcyBleGFjdGx5IHdoZXJlIHRoZSB0d28g ZGlmZmVyOiBMdWthc2lld2ljeiB3b3VsZCBtYWtlClVua25vd24gSU1QTElFUyBVbmtub3du IGJlIFRydWUsIHdoaWNoIGNvdWxkIG5vdCB0aGVuIGJlIHdyaXR0ZW4gYXMKTk9UIGEgT1Ig Yi4KClJpZ2h0IGFzc29jaWF0aXZpdHkgbWFrZXMgYSBjaGFpbiBlcXVpdmFsZW50IHRvIGEg c2luZ2xlIGltcGxpY2F0aW9uCndob3NlIGFudGVjZWRlbnQgaXMgdGhlIGNvbmp1bmN0aW9u IG9mIHRoZSBsZWFkaW5nIG9wZXJhbmRzLCBzbwphIElNUExJRVMgYiBJTVBMSUVTIGMgaXMg KGEgQU5EIGIpIElNUExJRVMgYy4KLS0tCiBkb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWxvZ2lj YWwuc2dtbCAgIHwgIDgwICsrKysrKysrKysrKysrCiBkb2Mvc3JjL3NnbWwvc3ludGF4LnNn bWwgICAgICAgICAgICAgIHwgICA2ICsrCiBzcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5j ICAgICAgICAgIHwgICA0ICsKIHNyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jICAgICAg ICAgfCAgIDUgKwogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgICB8ICAx MSArLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYyAgICAgICB8ICAzNSArKysr KysKIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICAgfCAgIDEgKwogc3Jj L2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oICAgICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2Jvb2xlYW4ub3V0IHwgMTQ5ICsrKysrKysrKysrKysrKysrKysr KysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9ib29sZWFuLnNxbCAgICAgIHwgIDYwICsr KysrKysrKysrCiAxMCBmaWxlcyBjaGFuZ2VkLCAzNTEgaW5zZXJ0aW9ucygrKSwgMSBkZWxl dGlvbigtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9mdW5jL2Z1bmMtbG9naWNhbC5z Z21sIGIvZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1sb2dpY2FsLnNnbWwKaW5kZXggNWJhNjM4 OWRiNTYuLjQ3NjkyMDJlODA1IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5j LWxvZ2ljYWwuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWxvZ2ljYWwuc2dt bApAQCAtMzksMTAgKzM5LDE5IEBACiAgICAgIDxwcmltYXJ5Pm5lZ2F0aW9uPC9wcmltYXJ5 PgogICAgIDwvaW5kZXh0ZXJtPgogCisgICAgPGluZGV4dGVybT4KKyAgICAgPHByaW1hcnk+ SU1QTElFUzwvcHJpbWFyeT4KKyAgICA8L2luZGV4dGVybT4KKworICAgIDxpbmRleHRlcm0+ CisgICAgIDxwcmltYXJ5PmltcGxpY2F0aW9uPC9wcmltYXJ5PgorICAgIDwvaW5kZXh0ZXJt PgorCiA8c3lub3BzaXM+CiA8dHlwZT5ib29sZWFuPC90eXBlPiA8bGl0ZXJhbD5BTkQ8L2xp dGVyYWw+IDx0eXBlPmJvb2xlYW48L3R5cGU+IDxyZXR1cm52YWx1ZT5ib29sZWFuPC9yZXR1 cm52YWx1ZT4KIDx0eXBlPmJvb2xlYW48L3R5cGU+IDxsaXRlcmFsPk9SPC9saXRlcmFsPiA8 dHlwZT5ib29sZWFuPC90eXBlPiA8cmV0dXJudmFsdWU+Ym9vbGVhbjwvcmV0dXJudmFsdWU+ CiA8bGl0ZXJhbD5OT1Q8L2xpdGVyYWw+IDx0eXBlPmJvb2xlYW48L3R5cGU+IDxyZXR1cm52 YWx1ZT5ib29sZWFuPC9yZXR1cm52YWx1ZT4KKzx0eXBlPmJvb2xlYW48L3R5cGU+IDxsaXRl cmFsPklNUExJRVM8L2xpdGVyYWw+IDx0eXBlPmJvb2xlYW48L3R5cGU+IDxyZXR1cm52YWx1 ZT5ib29sZWFuPC9yZXR1cm52YWx1ZT4KIDwvc3lub3BzaXM+CiAKICAgICA8YWNyb255bT5T UUw8L2Fjcm9ueW0+IHVzZXMgYSB0aHJlZS12YWx1ZWQgbG9naWMgc3lzdGVtIHdpdGggdHJ1 ZSwKQEAgLTE0Niw2ICsxNTUsNzcgQEAKICAgICA8L2luZm9ybWFsdGFibGU+CiAgICA8L3Bh cmE+CiAKKyAgIDxwYXJhPgorICAgIFRoZSA8bGl0ZXJhbD5JTVBMSUVTPC9saXRlcmFsPiBv cGVyYXRvciBpcyBtYXRlcmlhbCBpbXBsaWNhdGlvbjoKKyAgICA8cmVwbGFjZWFibGU+YTwv cmVwbGFjZWFibGU+IDxsaXRlcmFsPklNUExJRVM8L2xpdGVyYWw+CisgICAgPHJlcGxhY2Vh YmxlPmI8L3JlcGxhY2VhYmxlPiBpcyBlcXVpdmFsZW50IHRvIDxsaXRlcmFsPk5PVDwvbGl0 ZXJhbD4KKyAgICA8cmVwbGFjZWFibGU+YTwvcmVwbGFjZWFibGU+IDxsaXRlcmFsPk9SPC9s aXRlcmFsPgorICAgIDxyZXBsYWNlYWJsZT5iPC9yZXBsYWNlYWJsZT4sIGFuZCByZWFkcyBh cyA8cXVvdGU+aWYKKyAgICA8cmVwbGFjZWFibGU+YTwvcmVwbGFjZWFibGU+IHRoZW4gPHJl cGxhY2VhYmxlPmI8L3JlcGxhY2VhYmxlPjwvcXVvdGU+LgorICAgIFVubGlrZSA8bGl0ZXJh bD5BTkQ8L2xpdGVyYWw+IGFuZCA8bGl0ZXJhbD5PUjwvbGl0ZXJhbD4gaXQgaXMgbm90Cisg ICAgY29tbXV0YXRpdmUsIHdoaWNoIGlzIHdoeSBpdHMgdGFibGUsIHVubGlrZSB0aGVpcnMs IGlzIG5vdCBzeW1tZXRyaWMKKyAgICBhYm91dCB0aGUgZGlhZ29uYWw6CisKKyAgICA8aW5m b3JtYWx0YWJsZSByb3doZWFkZXI9ImZpcnN0Y29sIj4KKyAgICAgPHRncm91cCBjb2xzPSI0 Ij4KKyAgICAgIDx0aGVhZD4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnk+SU1QTElF UzwvZW50cnk+CisgICAgICAgIDxlbnRyeT5UcnVlPC9lbnRyeT4KKyAgICAgICAgPGVudHJ5 PkZhbHNlPC9lbnRyeT4KKyAgICAgICAgPGVudHJ5PlVua25vd248L2VudHJ5PgorICAgICAg IDwvcm93PgorICAgICAgPC90aGVhZD4KKworICAgICAgPHRib2R5PgorICAgICAgIDxyb3c+ CisgICAgICAgIDxlbnRyeT5UcnVlPC9lbnRyeT4KKyAgICAgICAgPGVudHJ5PlRydWU8L2Vu dHJ5PgorICAgICAgICA8ZW50cnk+RmFsc2U8L2VudHJ5PgorICAgICAgICA8ZW50cnk+VW5r bm93bjwvZW50cnk+CisgICAgICAgPC9yb3c+CisKKyAgICAgICA8cm93PgorICAgICAgICA8 ZW50cnk+RmFsc2U8L2VudHJ5PgorICAgICAgICA8ZW50cnk+VHJ1ZTwvZW50cnk+CisgICAg ICAgIDxlbnRyeT5UcnVlPC9lbnRyeT4KKyAgICAgICAgPGVudHJ5PlRydWU8L2VudHJ5Pgor ICAgICAgIDwvcm93PgorCisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5PlVua25vd248 L2VudHJ5PgorICAgICAgICA8ZW50cnk+VHJ1ZTwvZW50cnk+CisgICAgICAgIDxlbnRyeT5V bmtub3duPC9lbnRyeT4KKyAgICAgICAgPGVudHJ5PlVua25vd248L2VudHJ5PgorICAgICAg IDwvcm93PgorICAgICAgPC90Ym9keT4KKyAgICAgPC90Z3JvdXA+CisgICAgPC9pbmZvcm1h bHRhYmxlPgorICAgPC9wYXJhPgorCisgICA8cGFyYT4KKyAgICA8bGl0ZXJhbD5JTVBMSUVT PC9saXRlcmFsPiBiaW5kcyBsZXNzIHRpZ2h0bHkgdGhhbiBldmVyeSBvdGhlciBvcGVyYXRv ciwKKyAgICA8bGl0ZXJhbD5PUjwvbGl0ZXJhbD4gaW5jbHVkZWQsIGFuZCBpdCBpcyByaWdo dC1hc3NvY2lhdGl2ZSwgc28KKyAgICA8bGl0ZXJhbD5hID0gMSBJTVBMSUVTIGIgPSAyIElN UExJRVMgYyA9IDM8L2xpdGVyYWw+IG1lYW5zCisgICAgPGxpdGVyYWw+KGEgPSAxKSBJTVBM SUVTICgoYiA9IDIpIElNUExJRVMgKGMgPSAzKSk8L2xpdGVyYWw+LiAgU2VlIDx4cmVmCisg ICAgbGlua2VuZD0ic3FsLXByZWNlZGVuY2UiLz4uCisgICA8L3BhcmE+CisKKyAgIDxwYXJh PgorICAgIENoYWluaW5nIGltcGxpY2F0aW9ucyBpcyB0aGVyZWZvcmUgdGhlIHNhbWUgYXMg YSBzaW5nbGUgaW1wbGljYXRpb24gd2hvc2UKKyAgICBhbnRlY2VkZW50IGlzIHRoZSBjb25q dW5jdGlvbiBvZiB0aGUgbGVhZGluZyBvcGVyYW5kczoKKyAgICA8cmVwbGFjZWFibGU+YTwv cmVwbGFjZWFibGU+IDxsaXRlcmFsPklNUExJRVM8L2xpdGVyYWw+CisgICAgPHJlcGxhY2Vh YmxlPmI8L3JlcGxhY2VhYmxlPiA8bGl0ZXJhbD5JTVBMSUVTPC9saXRlcmFsPgorICAgIDxy ZXBsYWNlYWJsZT5jPC9yZXBsYWNlYWJsZT4gaXMgZXF1aXZhbGVudCB0bworICAgICg8cmVw bGFjZWFibGU+YTwvcmVwbGFjZWFibGU+IDxsaXRlcmFsPkFORDwvbGl0ZXJhbD4KKyAgICA8 cmVwbGFjZWFibGU+YjwvcmVwbGFjZWFibGU+KSA8bGl0ZXJhbD5JTVBMSUVTPC9saXRlcmFs PgorICAgIDxyZXBsYWNlYWJsZT5jPC9yZXBsYWNlYWJsZT4uICBJdCBpcyBub3QgZXF1aXZh bGVudCB0bworICAgIDxyZXBsYWNlYWJsZT5hPC9yZXBsYWNlYWJsZT4gPGxpdGVyYWw+SU1Q TElFUzwvbGl0ZXJhbD4KKyAgICAoPHJlcGxhY2VhYmxlPmI8L3JlcGxhY2VhYmxlPiA8bGl0 ZXJhbD5BTkQ8L2xpdGVyYWw+CisgICAgPHJlcGxhY2VhYmxlPmM8L3JlcGxhY2VhYmxlPik7 IHRoYXQgbWVhbmluZyBoYXMgdG8gYmUgd3JpdHRlbiB3aXRoCisgICAgZXhwbGljaXQgcGFy ZW50aGVzZXMuCisgICA8L3BhcmE+CisKICAgIDxwYXJhPgogICAgIFRoZSBvcGVyYXRvcnMg PGxpdGVyYWw+QU5EPC9saXRlcmFsPiBhbmQgPGxpdGVyYWw+T1I8L2xpdGVyYWw+IGFyZQog ICAgIGNvbW11dGF0aXZlLCB0aGF0IGlzLCB5b3UgY2FuIHN3aXRjaCB0aGUgbGVmdCBhbmQg cmlnaHQgb3BlcmFuZHMKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9zeW50YXguc2dtbCBi L2RvYy9zcmMvc2dtbC9zeW50YXguc2dtbAppbmRleCA2NzQ4Mjk5Njg2MS4uYmVlOTI4YTg0 MTQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9zeW50YXguc2dtbAorKysgYi9kb2Mvc3Jj L3NnbWwvc3ludGF4LnNnbWwKQEAgLTExMDMsNiArMTEwMywxMiBAQCBDQVNUICggJzxyZXBs YWNlYWJsZT5zdHJpbmc8L3JlcGxhY2VhYmxlPicgQVMgPHJlcGxhY2VhYmxlPnR5cGU8L3Jl cGxhY2VhYmxlPiApCiAgICAgICAgPGVudHJ5PmxlZnQ8L2VudHJ5PgogICAgICAgIDxlbnRy eT5sb2dpY2FsIGRpc2p1bmN0aW9uPC9lbnRyeT4KICAgICAgIDwvcm93PgorCisgICAgICA8 cm93PgorICAgICAgIDxlbnRyeT48dG9rZW4+SU1QTElFUzwvdG9rZW4+PC9lbnRyeT4KKyAg ICAgICA8ZW50cnk+cmlnaHQ8L2VudHJ5PgorICAgICAgIDxlbnRyeT5sb2dpY2FsIGltcGxp Y2F0aW9uPC9lbnRyeT4KKyAgICAgIDwvcm93PgogICAgICA8L3Rib2R5PgogICAgIDwvdGdy b3VwPgogICAgPC90YWJsZT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1 bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCmluZGV4IDQwOTkwMTQzOTI3 Li45YTM1ZmY1M2RlMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3Mu YworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCkBAIC02NDMsNiArNjQzLDEw IEBAIF9vdXRBX0V4cHIoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IEFfRXhwciAqbm9kZSkKIAkJ CWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoc3RyLCAiIE5PVF9CRVRXRUVOX1NZTSIpOwogCQkJ V1JJVEVfTk9ERV9GSUVMRChuYW1lKTsKIAkJCWJyZWFrOworCQljYXNlIEFFWFBSX0lNUExJ RVM6CisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKHN0ciwgIiBJTVBMSUVTIik7CisJCQlX UklURV9OT0RFX0ZJRUxEKG5hbWUpOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9n KEVSUk9SLCAidW5yZWNvZ25pemVkIEFfRXhwcl9LaW5kOiAlZCIsIChpbnQpIG5vZGUtPmtp bmQpOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVu Y3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jCmluZGV4IDI4MzlhNzExZjll Li40Y2MwMTlhMDEyYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNz LmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKQEAgLTUxNCw2ICs1MTQs MTEgQEAgX3JlYWRBX0V4cHIoUmVhZE5vZGVDb250ZXh0ICpjdHgpCiAJCWxvY2FsX25vZGUt PmtpbmQgPSBBRVhQUl9OT1RfQkVUV0VFTl9TWU07CiAJCVJFQURfTk9ERV9GSUVMRChuYW1l KTsKIAl9CisJZWxzZSBpZiAobGVuZ3RoID09IDcgJiYgc3RybmNtcCh0b2tlbiwgIklNUExJ RVMiLCA3KSA9PSAwKQorCXsKKwkJbG9jYWxfbm9kZS0+a2luZCA9IEFFWFBSX0lNUExJRVM7 CisJCVJFQURfTk9ERV9GSUVMRChuYW1lKTsKKwl9CiAJZWxzZSBpZiAobGVuZ3RoID09IDUg JiYgc3RybmNtcCh0b2tlbiwgIjpuYW1lIiwgNSkgPT0gMCkKIAl7CiAJCWxvY2FsX25vZGUt PmtpbmQgPSBBRVhQUl9PUDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFt LnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IDA1NjM0NTNmZTI0Li5jZDcw ZGI5NmM2MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9z cmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC03NDksNyArNzQ5LDggQEAgc3RhdGljIE5v ZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFz ZXMsIE5vZGUgKnF1ZXJ5KTsKIAogCUhBTkRMRVIgSEFWSU5HIEhFQURFUl9QIEhPTEQgSE9V Ul9QCiAKLQlJREVOVElUWV9QIElGX1AgSUdOT1JFX1AgSUxJS0UgSU1NRURJQVRFIElNTVVU QUJMRSBJTVBMSUNJVF9QIElNUE9SVF9QIElOX1AgSU5DTFVERQorCUlERU5USVRZX1AgSUZf UCBJR05PUkVfUCBJTElLRSBJTU1FRElBVEUgSU1NVVRBQkxFIElNUExJQ0lUX1AgSU1QTElF UworCUlNUE9SVF9QIElOX1AgSU5DTFVERQogCUlOQ0xVRElORyBJTkNSRU1FTlQgSU5ERU5U IElOREVYIElOREVYRVMgSU5IRVJJVCBJTkhFUklUUyBJTklUSUFMTFkgSU5MSU5FX1AKIAlJ Tk5FUl9QIElOT1VUIElOUFVUX1AgSU5TRU5TSVRJVkUgSU5TRVJUIElOU1RFQUQgSU5UX1Ag SU5URUdFUgogCUlOVEVSU0VDVCBJTlRFUlZBTCBJTlRPIElOVk9LRVIgSVMgSVNOVUxMIElT T0xBVElPTgpAQCAtODQ0LDYgKzg0NSw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZl Vmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7 CiAvKiBQcmVjZWRlbmNlOiBsb3dlc3QgdG8gaGlnaGVzdCAqLwogJWxlZnQJCVVOSU9OIEVY Q0VQVAogJWxlZnQJCUlOVEVSU0VDVAorJXJpZ2h0CQlJTVBMSUVTCiAlbGVmdAkJT1IKICVs ZWZ0CQlBTkQKICVyaWdodAkJTk9UCkBAIC0xNTM3NCw2ICsxNTM3NiwxMSBAQCBhX2V4cHI6 CQljX2V4cHIJCQkJCQkJCQl7ICQkID0gJDE7IH0KIAkJCQl7ICQkID0gbWFrZUFuZEV4cHIo JDEsICQzLCBAMik7IH0KIAkJCXwgYV9leHByIE9SIGFfZXhwcgogCQkJCXsgJCQgPSBtYWtl T3JFeHByKCQxLCAkMywgQDIpOyB9CisJCQl8IGFfZXhwciBJTVBMSUVTIGFfZXhwcgorCQkJ CXsKKwkJCQkJJCQgPSAoTm9kZSAqKSBtYWtlU2ltcGxlQV9FeHByKEFFWFBSX0lNUExJRVMs ICJJTVBMSUVTIiwKKwkJCQkJCQkJCQkJCSAgICQxLCAkMywgQDIpOworCQkJCX0KIAkJCXwg Tk9UIGFfZXhwcgogCQkJCXsgJCQgPSBtYWtlTm90RXhwcigkMiwgQDEpOyB9CiAJCQl8IE5P VF9MQSBhX2V4cHIJCQkJCQklcHJlYyBOT1QKQEAgLTE4MTkwLDYgKzE4MTk3LDcgQEAgdW5y ZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBJTU1FRElBVEUKIAkJCXwgSU1NVVRBQkxFCiAJCQl8 IElNUExJQ0lUX1AKKwkJCXwgSU1QTElFUwogCQkJfCBJTVBPUlRfUAogCQkJfCBJTkNMVURF CiAJCQl8IElOQ0xVRElORwpAQCAtMTg3ODIsNiArMTg3OTAsNyBAQCBiYXJlX2xhYmVsX2tl eXdvcmQ6CiAJCQl8IElNTUVESUFURQogCQkJfCBJTU1VVEFCTEUKIAkJCXwgSU1QTElDSVRf UAorCQkJfCBJTVBMSUVTCiAJCQl8IElNUE9SVF9QCiAJCQl8IElOX1AKIAkJCXwgSU5DTFVE RQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYyBiL3NyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKaW5kZXggMDVhNmI3MmQ0YzkuLjNmOWRjODZm YTAwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCisrKyBi L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKQEAgLTU0LDYgKzU0LDcgQEAgc3Rh dGljIE5vZGUgKnRyYW5zZm9ybUFFeHByRGlzdGluY3QoUGFyc2VTdGF0ZSAqcHN0YXRlLCBB X0V4cHIgKmEpOwogc3RhdGljIE5vZGUgKnRyYW5zZm9ybUFFeHByTnVsbElmKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgQV9FeHByICphKTsKIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1BRXhwcklu KFBhcnNlU3RhdGUgKnBzdGF0ZSwgQV9FeHByICphKTsKIHN0YXRpYyBOb2RlICp0cmFuc2Zv cm1BRXhwckJldHdlZW4oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBX0V4cHIgKmEpOworc3RhdGlj IE5vZGUgKnRyYW5zZm9ybUFFeHBySW1wbGllcyhQYXJzZVN0YXRlICpwc3RhdGUsIEFfRXhw ciAqYSk7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtTWVyZ2VTdXBwb3J0RnVuYyhQYXJzZVN0 YXRlICpwc3RhdGUsIE1lcmdlU3VwcG9ydEZ1bmMgKmYpOwogc3RhdGljIE5vZGUgKnRyYW5z Zm9ybUJvb2xFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQm9vbEV4cHIgKmEpOwogc3RhdGlj IE5vZGUgKnRyYW5zZm9ybUZ1bmNDYWxsKFBhcnNlU3RhdGUgKnBzdGF0ZSwgRnVuY0NhbGwg KmZuKTsKQEAgLTIxMyw2ICsyMTQsOSBAQCB0cmFuc2Zvcm1FeHByUmVjdXJzZShQYXJzZVN0 YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIpCiAJCQkJCWNhc2UgQUVYUFJfTk9UX0JFVFdFRU5f U1lNOgogCQkJCQkJcmVzdWx0ID0gdHJhbnNmb3JtQUV4cHJCZXR3ZWVuKHBzdGF0ZSwgYSk7 CiAJCQkJCQlicmVhazsKKwkJCQkJY2FzZSBBRVhQUl9JTVBMSUVTOgorCQkJCQkJcmVzdWx0 ID0gdHJhbnNmb3JtQUV4cHJJbXBsaWVzKHBzdGF0ZSwgYSk7CisJCQkJCQlicmVhazsKIAkJ CQkJZGVmYXVsdDoKIAkJCQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgQV9FeHByIGtp bmQ6ICVkIiwgYS0+a2luZCk7CiAJCQkJCQlyZXN1bHQgPSBOVUxMOwkvKiBrZWVwIGNvbXBp bGVyIHF1aWV0ICovCkBAIC0xNDQ2LDYgKzE0NTAsMzcgQEAgdHJhbnNmb3JtQm9vbEV4cHIo UGFyc2VTdGF0ZSAqcHN0YXRlLCBCb29sRXhwciAqYSkKIAlyZXR1cm4gKE5vZGUgKikgbWFr ZUJvb2xFeHByKGEtPmJvb2xvcCwgYXJncywgYS0+bG9jYXRpb24pOwogfQogCisvKgorICog VHJhbnNmb3JtICJhIElNUExJRVMgYiIgaW50byB0aGUgZXF1aXZhbGVudCAiTk9UIGEgT1Ig YiIuCisgKgorICogV2UgZXhwYW5kIHRoaXMgaGVyZSByYXRoZXIgdGhhbiBpbiBncmFtLnkg c28gdGhhdCBhIG5vbi1ib29sZWFuIG9wZXJhbmQgaXMKKyAqIGNvbXBsYWluZWQgb2YgaW4g dGVybXMgb2YgSU1QTElFUywgcmF0aGVyIHRoYW4gaW4gdGVybXMgb2YgdGhlIE5PVCBvciBP UgorICogdGhhdCB0aGUgY29uc3RydWN0IGhhcHBlbnMgdG8gYmUgYnVpbHQgZnJvbS4KKyAq Lworc3RhdGljIE5vZGUgKgordHJhbnNmb3JtQUV4cHJJbXBsaWVzKFBhcnNlU3RhdGUgKnBz dGF0ZSwgQV9FeHByICphKQoreworCU5vZGUJICAgKmxleHByOworCU5vZGUJICAgKnJleHBy OworCisJbGV4cHIgPSB0cmFuc2Zvcm1FeHByUmVjdXJzZShwc3RhdGUsIGEtPmxleHByKTsK KwlyZXhwciA9IHRyYW5zZm9ybUV4cHJSZWN1cnNlKHBzdGF0ZSwgYS0+cmV4cHIpOworCisJ bGV4cHIgPSBjb2VyY2VfdG9fYm9vbGVhbihwc3RhdGUsIGxleHByLCAiSU1QTElFUyIpOwor CXJleHByID0gY29lcmNlX3RvX2Jvb2xlYW4ocHN0YXRlLCByZXhwciwgIklNUExJRVMiKTsK KworCS8qCisJICogRWFjaCBvcGVyYW5kIGFwcGVhcnMgZXhhY3RseSBvbmNlIGluIHRoZSBl eHBhbnNpb24sIHNvIHVubGlrZSBCRVRXRUVOCisJICogdGhpcyBkb2VzIG5vdCByaXNrIGV2 YWx1YXRpbmcgYW55dGhpbmcgdHdpY2UuCisJICovCisJcmV0dXJuIChOb2RlICopIG1ha2VC b29sRXhwcihPUl9FWFBSLAorCQkJCQkJCQkgbGlzdF9tYWtlMihtYWtlQm9vbEV4cHIoTk9U X0VYUFIsCisJCQkJCQkJCQkJCQkJCSBsaXN0X21ha2UxKGxleHByKSwKKwkJCQkJCQkJCQkJ CQkJIGV4cHJMb2NhdGlvbihsZXhwcikpLAorCQkJCQkJCQkJCQlyZXhwciksCisJCQkJCQkJ CSBhLT5sb2NhdGlvbik7Cit9CisKIHN0YXRpYyBOb2RlICoKIHRyYW5zZm9ybUZ1bmNDYWxs KFBhcnNlU3RhdGUgKnBzdGF0ZSwgRnVuY0NhbGwgKmZuKQogewpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vu b2Rlcy5oCmluZGV4IDBkZWJjZDE5M2FiLi40NWZhOGM3MDI2MyAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3Bh cnNlbm9kZXMuaApAQCAtMzQyLDYgKzM0Miw3IEBAIHR5cGVkZWYgZW51bSBBX0V4cHJfS2lu ZAogCUFFWFBSX05PVF9CRVRXRUVOLAkJCS8qIG5hbWUgbXVzdCBiZSAiTk9UIEJFVFdFRU4i ICovCiAJQUVYUFJfQkVUV0VFTl9TWU0sCQkJLyogbmFtZSBtdXN0IGJlICJCRVRXRUVOIFNZ TU1FVFJJQyIgKi8KIAlBRVhQUl9OT1RfQkVUV0VFTl9TWU0sCQkvKiBuYW1lIG11c3QgYmUg Ik5PVCBCRVRXRUVOIFNZTU1FVFJJQyIgKi8KKwlBRVhQUl9JTVBMSUVTLAkJCQkvKiBuYW1l IG11c3QgYmUgIklNUExJRVMiICovCiB9IEFfRXhwcl9LaW5kOwogCiB0eXBlZGVmIHN0cnVj dCBBX0V4cHIKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCBiL3Ny Yy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAppbmRleCA1M2FlOTZjMDM5OS4uOTRkMmFlZjFi YjEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAorKysgYi9zcmMv aW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKQEAgLTIwNyw2ICsyMDcsNyBAQCBQR19LRVlXT1JE KCJpbGlrZSIsIElMSUtFLCBUWVBFX0ZVTkNfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVMKQog UEdfS0VZV09SRCgiaW1tZWRpYXRlIiwgSU1NRURJQVRFLCBVTlJFU0VSVkVEX0tFWVdPUkQs IEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJpbW11dGFibGUiLCBJTU1VVEFCTEUsIFVOUkVT RVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImltcGxpY2l0IiwgSU1Q TElDSVRfUCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgi aW1wbGllcyIsIElNUExJRVMsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBH X0tFWVdPUkQoImltcG9ydCIsIElNUE9SVF9QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVf TEFCRUwpCiBQR19LRVlXT1JEKCJpbiIsIElOX1AsIFJFU0VSVkVEX0tFWVdPUkQsIEJBUkVf TEFCRUwpCiBQR19LRVlXT1JEKCJpbmNsdWRlIiwgSU5DTFVERSwgVU5SRVNFUlZFRF9LRVlX T1JELCBCQVJFX0xBQkVMKQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9ib29sZWFuLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYm9vbGVhbi5vdXQK aW5kZXggMGU5OWViN2ZmYzAuLmNhYTYzZjUxZjQwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2Jvb2xlYW4ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvYm9vbGVhbi5vdXQKQEAgLTU2Niw2ICs1NjYsMTU1IEBAIFNFTEVDVCBpc251bCBP UiBpc3RydWUgT1IgaXNmYWxzZSBGUk9NIGJvb2x0Ymw0OwogIHQKICgxIHJvdykKIAorLS0g SW1wbGljYXRpb246ICJhIElNUExJRVMgYiIgaXMgIk5PVCBhIE9SIGIiLiAgSXQgaXMgbm90 IGNvbW11dGF0aXZlLCBzbyBhbGwKKy0tIG5pbmUgY29tYmluYXRpb25zIG9mIHRocmVlLXZh bHVlZCBsb2dpYyBoYXZlIHRvIGJlIGNoZWNrZWQuCitTRUxFQ1QgaXN0cnVlIElNUExJRVMg aXN0cnVlLCBpc3RydWUgSU1QTElFUyBpc2ZhbHNlLCBpc3RydWUgSU1QTElFUyBpc251bAor ICBGUk9NIGJvb2x0Ymw0OworID9jb2x1bW4/IHwgP2NvbHVtbj8gfCA/Y29sdW1uPyAKKy0t LS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgdCAgICAgICAgfCBmICAgICAgICB8 IChudWxsKQorKDEgcm93KQorCitTRUxFQ1QgaXNmYWxzZSBJTVBMSUVTIGlzdHJ1ZSwgaXNm YWxzZSBJTVBMSUVTIGlzZmFsc2UsIGlzZmFsc2UgSU1QTElFUyBpc251bAorICBGUk9NIGJv b2x0Ymw0OworID9jb2x1bW4/IHwgP2NvbHVtbj8gfCA/Y29sdW1uPyAKKy0tLS0tLS0tLS0r LS0tLS0tLS0tLSstLS0tLS0tLS0tCisgdCAgICAgICAgfCB0ICAgICAgICB8IHQKKygxIHJv dykKKworU0VMRUNUIGlzbnVsIElNUExJRVMgaXN0cnVlLCBpc251bCBJTVBMSUVTIGlzZmFs c2UsIGlzbnVsIElNUExJRVMgaXNudWwKKyAgRlJPTSBib29sdGJsNDsKKyA/Y29sdW1uPyB8 ID9jb2x1bW4/IHwgP2NvbHVtbj8gCistLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0t LQorIHQgICAgICAgIHwgKG51bGwpICAgfCAobnVsbCkKKygxIHJvdykKKworLS0gdGhlIHNh bWUsIGFzIGNvbnN0YW50cywgc28gdGhhdCBjb25zdGFudCBmb2xkaW5nIGlzIGV4ZXJjaXNl ZCB0b28KK1NFTEVDVCB0cnVlIElNUExJRVMgdHJ1ZSwgdHJ1ZSBJTVBMSUVTIGZhbHNlLCB0 cnVlIElNUExJRVMgbnVsbDsKKyA/Y29sdW1uPyB8ID9jb2x1bW4/IHwgP2NvbHVtbj8gCist LS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHQgICAgICAgIHwgZiAgICAgICAg fCAobnVsbCkKKygxIHJvdykKKworU0VMRUNUIGZhbHNlIElNUExJRVMgdHJ1ZSwgZmFsc2Ug SU1QTElFUyBmYWxzZSwgZmFsc2UgSU1QTElFUyBudWxsOworID9jb2x1bW4/IHwgP2NvbHVt bj8gfCA/Y29sdW1uPyAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgdCAg ICAgICAgfCB0ICAgICAgICB8IHQKKygxIHJvdykKKworU0VMRUNUIG51bGwgSU1QTElFUyB0 cnVlLCBudWxsIElNUExJRVMgZmFsc2UsIG51bGw6OmJvb2wgSU1QTElFUyBudWxsOworID9j b2x1bW4/IHwgP2NvbHVtbj8gfCA/Y29sdW1uPyAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSst LS0tLS0tLS0tCisgdCAgICAgICAgfCAobnVsbCkgICB8IChudWxsKQorKDEgcm93KQorCist LSBJTVBMSUVTIGlzIHJpZ2h0LWFzc29jaWF0aXZlOiBmYWxzZSBJTVBMSUVTICh0cnVlIElN UExJRVMgZmFsc2UpLCByYXRoZXIKKy0tIHRoYW4gKGZhbHNlIElNUExJRVMgdHJ1ZSkgSU1Q TElFUyBmYWxzZQorU0VMRUNUIGlzZmFsc2UgSU1QTElFUyBpc3RydWUgSU1QTElFUyBpc2Zh bHNlIEZST00gYm9vbHRibDQ7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgdAorKDEgcm93 KQorCistLSBzbyBhIGNoYWluIGlzIGltcGxpY2F0aW9uIGZyb20gdGhlIGNvbmp1bmN0aW9u IG9mIHRoZSBsZWFkaW5nIG9wZXJhbmRzCistLSAoZXhwb3J0YXRpb24pLCBub3QgaW1wbGlj YXRpb24gb2YgdGhlaXIgY29uanVuY3Rpb24uICBUaGUgc2Vjb25kIHJvdyBpcyB0aGUKKy0t IGludGVyZXN0aW5nIG9uZTogaXQgdGVsbHMgdGhlIHR3byBhcGFydC4KK1NFTEVDVCBhLCBi LCBjLAorICAgICAgIGEgSU1QTElFUyBiIElNUExJRVMgYyBBUyBjaGFpbmVkLAorICAgICAg IChhIEFORCBiKSBJTVBMSUVTIGMgQVMgY29ual9hbnRlY2VkZW50LAorICAgICAgIGEgSU1Q TElFUyAoYiBBTkQgYykgQVMgY29ual9jb25zZXF1ZW50CisgIEZST00gKFZBTFVFUyAodHJ1 ZSwgdHJ1ZSwgdHJ1ZSksCisgICAgICAgICAgICAgICAodHJ1ZSwgZmFsc2UsIGZhbHNlKSwK KyAgICAgICAgICAgICAgIChmYWxzZSwgdHJ1ZSwgZmFsc2UpKSBBUyB0KGEsIGIsIGMpOwor IGEgfCBiIHwgYyB8IGNoYWluZWQgfCBjb25qX2FudGVjZWRlbnQgfCBjb25qX2NvbnNlcXVl bnQgCistLS0rLS0tKy0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0KKyB0IHwgdCB8IHQgfCB0ICAgICAgIHwgdCAgICAgICAgICAgICAgIHwgdAor IHQgfCBmIHwgZiB8IHQgICAgICAgfCB0ICAgICAgICAgICAgICAgfCBmCisgZiB8IHQgfCBm IHwgdCAgICAgICB8IHQgICAgICAgICAgICAgICB8IHQKKygzIHJvd3MpCisKKy0tIGV4cG9y dGF0aW9uIGhvbGRzIGZvciBhbGwgdGhyZWUgdHJ1dGggdmFsdWVzLCBzbyB0aGlzIHJldHVy bnMgbm8gcm93cworU0VMRUNUIGEsIGIsIGMKKyAgRlJPTSAoVkFMVUVTICh0cnVlKSwgKGZh bHNlKSwgKG51bGwpKSBBUyB4KGEpLAorICAgICAgIChWQUxVRVMgKHRydWUpLCAoZmFsc2Up LCAobnVsbCkpIEFTIHkoYiksCisgICAgICAgKFZBTFVFUyAodHJ1ZSksIChmYWxzZSksIChu dWxsKSkgQVMgeihjKQorIFdIRVJFIChhIElNUExJRVMgYiBJTVBMSUVTIGMpIElTIERJU1RJ TkNUIEZST00gKChhIEFORCBiKSBJTVBMSUVTIGMpOworIGEgfCBiIHwgYyAKKy0tLSstLS0r LS0tCisoMCByb3dzKQorCistLSBhbmQgYmluZHMgbG9vc2VyIHRoYW4gT1IsIEFORCwgTk9U LCB0aGUgY29tcGFyaXNvbiBvcGVyYXRvcnMgYW5kIElTCitTRUxFQ1QgaXN0cnVlIE9SIGlz ZmFsc2UgSU1QTElFUyBpc2ZhbHNlIEZST00gYm9vbHRibDQ7CisgP2NvbHVtbj8gCistLS0t LS0tLS0tCisgZgorKDEgcm93KQorCitTRUxFQ1QgaXNmYWxzZSBJTVBMSUVTIGlzZmFsc2Ug QU5EIGlzZmFsc2UgRlJPTSBib29sdGJsNDsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyB0 CisoMSByb3cpCisKK1NFTEVDVCBOT1QgaXN0cnVlIElNUExJRVMgaXN0cnVlIEZST00gYm9v bHRibDQ7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1Qg MSA9IDEgSU1QTElFUyAyID0gMzsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyBmCisoMSBy b3cpCisKK1NFTEVDVCBpc3RydWUgSU1QTElFUyBpc251bCBJUyBOVUxMIEZST00gYm9vbHRi bDQ7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgdAorKDEgcm93KQorCistLSBub24tYm9v bGVhbiBvcGVyYW5kcyBhcmUgcmVwb3J0ZWQgaW4gdGVybXMgb2YgSU1QTElFUywgbm90IG9m IGl0cyBleHBhbnNpb24KK1NFTEVDVCAxIElNUExJRVMgdHJ1ZTsgICAgICAgICAgICAgICAg ICAtLSBlcnJvcgorRVJST1I6ICBhcmd1bWVudCBvZiBJTVBMSUVTIG11c3QgYmUgdHlwZSBi b29sZWFuLCBub3QgdHlwZSBpbnRlZ2VyCitMSU5FIDE6IFNFTEVDVCAxIElNUExJRVMgdHJ1 ZTsKKyAgICAgICAgICAgICAgIF4KK1NFTEVDVCB0cnVlIElNUExJRVMgMTsgICAgICAgICAg ICAgICAgICAtLSBlcnJvcgorRVJST1I6ICBhcmd1bWVudCBvZiBJTVBMSUVTIG11c3QgYmUg dHlwZSBib29sZWFuLCBub3QgdHlwZSBpbnRlZ2VyCitMSU5FIDE6IFNFTEVDVCB0cnVlIElN UExJRVMgMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSB0aGUgY29uc3Ry dWN0IGlzIGV4cGFuZGVkIGR1cmluZyBwYXJzZSBhbmFseXNpcywgc28gdGhpcyBpcyB3aGF0 IGlzIHN0b3JlZAorQ1JFQVRFIFZJRVcgYm9vbHZpZXcgQVMgU0VMRUNUIGlzdHJ1ZSBJTVBM SUVTIGlzbnVsIEFTIGkgRlJPTSBib29sdGJsNDsKK1NFTEVDVCBwZ19nZXRfdmlld2RlZign Ym9vbHZpZXcnLCB0cnVlKTsKKyAgICAgICAgICBwZ19nZXRfdmlld2RlZiAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgU0VMRUNUIE5PVCBpc3Ry dWUgT1IgaXNudWwgQVMgaSsKKyAgICBGUk9NIGJvb2x0Ymw0OworKDEgcm93KQorCitEUk9Q IFZJRVcgYm9vbHZpZXc7CistLSBJTVBMSUVTIGlzIHVucmVzZXJ2ZWQsIHNvIGl0IHJlbWFp bnMgdXNhYmxlIGFzIGFuIGlkZW50aWZpZXIKK0NSRUFURSBUQUJMRSBpbXBsaWVzIChpbXBs aWVzIGJvb2wpOworSU5TRVJUIElOVE8gaW1wbGllcyBWQUxVRVMgKGZhbHNlKTsKK1NFTEVD VCBpbXBsaWVzIElNUExJRVMgaW1wbGllcyBGUk9NIGltcGxpZXM7CisgP2NvbHVtbj8gCist LS0tLS0tLS0tCisgdAorKDEgcm93KQorCitEUk9QIFRBQkxFIGltcGxpZXM7CitTRUxFQ1Qg MSBBUyBpbXBsaWVzOworIGltcGxpZXMgCistLS0tLS0tLS0KKyAgICAgICAxCisoMSByb3cp CisKK1NFTEVDVCAxIGltcGxpZXM7CisgaW1wbGllcyAKKy0tLS0tLS0tLQorICAgICAgIDEK KygxIHJvdykKKwogLS0gQ2FzdHMKIFNFTEVDVCAwOjpib29sZWFuOwogIGJvb2wgCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ib29sZWFuLnNxbCBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL2Jvb2xlYW4uc3FsCmluZGV4IDg1YzZiMDE5ODgyLi5mMjg4Y2Y0NjcyNiAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvYm9vbGVhbi5zcWwKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvYm9vbGVhbi5zcWwKQEAgLTI1MCw2ICsyNTAsNjYgQEAgU0VM RUNUIGlzZmFsc2UgT1IgaXNudWwgT1IgaXN0cnVlIEZST00gYm9vbHRibDQ7CiBTRUxFQ1Qg aXN0cnVlIE9SIGlzZmFsc2UgT1IgaXNudWwgRlJPTSBib29sdGJsNDsKIFNFTEVDVCBpc251 bCBPUiBpc3RydWUgT1IgaXNmYWxzZSBGUk9NIGJvb2x0Ymw0OwogCistLSBJbXBsaWNhdGlv bjogImEgSU1QTElFUyBiIiBpcyAiTk9UIGEgT1IgYiIuICBJdCBpcyBub3QgY29tbXV0YXRp dmUsIHNvIGFsbAorLS0gbmluZSBjb21iaW5hdGlvbnMgb2YgdGhyZWUtdmFsdWVkIGxvZ2lj IGhhdmUgdG8gYmUgY2hlY2tlZC4KK1NFTEVDVCBpc3RydWUgSU1QTElFUyBpc3RydWUsIGlz dHJ1ZSBJTVBMSUVTIGlzZmFsc2UsIGlzdHJ1ZSBJTVBMSUVTIGlzbnVsCisgIEZST00gYm9v bHRibDQ7CitTRUxFQ1QgaXNmYWxzZSBJTVBMSUVTIGlzdHJ1ZSwgaXNmYWxzZSBJTVBMSUVT IGlzZmFsc2UsIGlzZmFsc2UgSU1QTElFUyBpc251bAorICBGUk9NIGJvb2x0Ymw0OworU0VM RUNUIGlzbnVsIElNUExJRVMgaXN0cnVlLCBpc251bCBJTVBMSUVTIGlzZmFsc2UsIGlzbnVs IElNUExJRVMgaXNudWwKKyAgRlJPTSBib29sdGJsNDsKKworLS0gdGhlIHNhbWUsIGFzIGNv bnN0YW50cywgc28gdGhhdCBjb25zdGFudCBmb2xkaW5nIGlzIGV4ZXJjaXNlZCB0b28KK1NF TEVDVCB0cnVlIElNUExJRVMgdHJ1ZSwgdHJ1ZSBJTVBMSUVTIGZhbHNlLCB0cnVlIElNUExJ RVMgbnVsbDsKK1NFTEVDVCBmYWxzZSBJTVBMSUVTIHRydWUsIGZhbHNlIElNUExJRVMgZmFs c2UsIGZhbHNlIElNUExJRVMgbnVsbDsKK1NFTEVDVCBudWxsIElNUExJRVMgdHJ1ZSwgbnVs bCBJTVBMSUVTIGZhbHNlLCBudWxsOjpib29sIElNUExJRVMgbnVsbDsKKworLS0gSU1QTElF UyBpcyByaWdodC1hc3NvY2lhdGl2ZTogZmFsc2UgSU1QTElFUyAodHJ1ZSBJTVBMSUVTIGZh bHNlKSwgcmF0aGVyCistLSB0aGFuIChmYWxzZSBJTVBMSUVTIHRydWUpIElNUExJRVMgZmFs c2UKK1NFTEVDVCBpc2ZhbHNlIElNUExJRVMgaXN0cnVlIElNUExJRVMgaXNmYWxzZSBGUk9N IGJvb2x0Ymw0OworCistLSBzbyBhIGNoYWluIGlzIGltcGxpY2F0aW9uIGZyb20gdGhlIGNv bmp1bmN0aW9uIG9mIHRoZSBsZWFkaW5nIG9wZXJhbmRzCistLSAoZXhwb3J0YXRpb24pLCBu b3QgaW1wbGljYXRpb24gb2YgdGhlaXIgY29uanVuY3Rpb24uICBUaGUgc2Vjb25kIHJvdyBp cyB0aGUKKy0tIGludGVyZXN0aW5nIG9uZTogaXQgdGVsbHMgdGhlIHR3byBhcGFydC4KK1NF TEVDVCBhLCBiLCBjLAorICAgICAgIGEgSU1QTElFUyBiIElNUExJRVMgYyBBUyBjaGFpbmVk LAorICAgICAgIChhIEFORCBiKSBJTVBMSUVTIGMgQVMgY29ual9hbnRlY2VkZW50LAorICAg ICAgIGEgSU1QTElFUyAoYiBBTkQgYykgQVMgY29ual9jb25zZXF1ZW50CisgIEZST00gKFZB TFVFUyAodHJ1ZSwgdHJ1ZSwgdHJ1ZSksCisgICAgICAgICAgICAgICAodHJ1ZSwgZmFsc2Us IGZhbHNlKSwKKyAgICAgICAgICAgICAgIChmYWxzZSwgdHJ1ZSwgZmFsc2UpKSBBUyB0KGEs IGIsIGMpOworCistLSBleHBvcnRhdGlvbiBob2xkcyBmb3IgYWxsIHRocmVlIHRydXRoIHZh bHVlcywgc28gdGhpcyByZXR1cm5zIG5vIHJvd3MKK1NFTEVDVCBhLCBiLCBjCisgIEZST00g KFZBTFVFUyAodHJ1ZSksIChmYWxzZSksIChudWxsKSkgQVMgeChhKSwKKyAgICAgICAoVkFM VUVTICh0cnVlKSwgKGZhbHNlKSwgKG51bGwpKSBBUyB5KGIpLAorICAgICAgIChWQUxVRVMg KHRydWUpLCAoZmFsc2UpLCAobnVsbCkpIEFTIHooYykKKyBXSEVSRSAoYSBJTVBMSUVTIGIg SU1QTElFUyBjKSBJUyBESVNUSU5DVCBGUk9NICgoYSBBTkQgYikgSU1QTElFUyBjKTsKKwor LS0gYW5kIGJpbmRzIGxvb3NlciB0aGFuIE9SLCBBTkQsIE5PVCwgdGhlIGNvbXBhcmlzb24g b3BlcmF0b3JzIGFuZCBJUworU0VMRUNUIGlzdHJ1ZSBPUiBpc2ZhbHNlIElNUExJRVMgaXNm YWxzZSBGUk9NIGJvb2x0Ymw0OworU0VMRUNUIGlzZmFsc2UgSU1QTElFUyBpc2ZhbHNlIEFO RCBpc2ZhbHNlIEZST00gYm9vbHRibDQ7CitTRUxFQ1QgTk9UIGlzdHJ1ZSBJTVBMSUVTIGlz dHJ1ZSBGUk9NIGJvb2x0Ymw0OworU0VMRUNUIDEgPSAxIElNUExJRVMgMiA9IDM7CitTRUxF Q1QgaXN0cnVlIElNUExJRVMgaXNudWwgSVMgTlVMTCBGUk9NIGJvb2x0Ymw0OworCistLSBu b24tYm9vbGVhbiBvcGVyYW5kcyBhcmUgcmVwb3J0ZWQgaW4gdGVybXMgb2YgSU1QTElFUywg bm90IG9mIGl0cyBleHBhbnNpb24KK1NFTEVDVCAxIElNUExJRVMgdHJ1ZTsgICAgICAgICAg ICAgICAgICAtLSBlcnJvcgorU0VMRUNUIHRydWUgSU1QTElFUyAxOyAgICAgICAgICAgICAg ICAgIC0tIGVycm9yCisKKy0tIHRoZSBjb25zdHJ1Y3QgaXMgZXhwYW5kZWQgZHVyaW5nIHBh cnNlIGFuYWx5c2lzLCBzbyB0aGlzIGlzIHdoYXQgaXMgc3RvcmVkCitDUkVBVEUgVklFVyBi b29sdmlldyBBUyBTRUxFQ1QgaXN0cnVlIElNUExJRVMgaXNudWwgQVMgaSBGUk9NIGJvb2x0 Ymw0OworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCdib29sdmlldycsIHRydWUpOworRFJPUCBW SUVXIGJvb2x2aWV3OworCistLSBJTVBMSUVTIGlzIHVucmVzZXJ2ZWQsIHNvIGl0IHJlbWFp bnMgdXNhYmxlIGFzIGFuIGlkZW50aWZpZXIKK0NSRUFURSBUQUJMRSBpbXBsaWVzIChpbXBs aWVzIGJvb2wpOworSU5TRVJUIElOVE8gaW1wbGllcyBWQUxVRVMgKGZhbHNlKTsKK1NFTEVD VCBpbXBsaWVzIElNUExJRVMgaW1wbGllcyBGUk9NIGltcGxpZXM7CitEUk9QIFRBQkxFIGlt cGxpZXM7CitTRUxFQ1QgMSBBUyBpbXBsaWVzOworU0VMRUNUIDEgaW1wbGllczsKKwogLS0g Q2FzdHMKIFNFTEVDVCAwOjpib29sZWFuOwogU0VMRUNUIDE6OmJvb2xlYW47Ci0tIAoyLjU1 LjAKCg== --------------OG2ouDHYzt1pkYdGJTjD0c7u--