Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1srG1A-0002W1-QN for pgsql-hackers@arkaria.postgresql.org; Thu, 19 Sep 2024 12:12:18 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1srG0A-0005Jq-Re for pgsql-hackers@arkaria.postgresql.org; Thu, 19 Sep 2024 12:11:16 +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.94.2) (envelope-from ) id 1srFzM-0000zS-09 for pgsql-hackers@lists.postgresql.org; Thu, 19 Sep 2024 12:10:25 +0000 Received: from mail-pg1-x52a.google.com ([2607:f8b0:4864:20::52a]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1srFzK-001yEH-48 for pgsql-hackers@postgresql.org; Thu, 19 Sep 2024 12:10:24 +0000 Received: by mail-pg1-x52a.google.com with SMTP id 41be03b00d2f7-7c1324be8easo1593904a12.1 for ; Thu, 19 Sep 2024 05:10:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1726747821; x=1727352621; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=6u/eP4fAIQlYm+eg5ee1mu0kWkWMqOLI9x/Ue3inu5M=; b=Cb7xD9E/n28HUpVzs89JG9T5CCzUpUDfwpByyxFvVq4clH0laQicUPfeNS3X2TriEL 5rk/EEkk1ewYfAaka7ijWV0MAjRUltsVGYecmRVymho+RNcRtUnJO1dFRexUrdLm7b9e tczjcIip2dQH2I+0vQ72U0JZW8XjLJ5lKPONLBnUADITpIH4oQTmX4UJC4Cro3h6Ey4P kOCtZt1r/YB8zhpA65ZIzh3Eu4U6OvGq1ARXReDKWTtX2QxF6/jcVfHo8lkZl3PD6Bz+ opzkHEXdhz8aBs4L9sK42CkRTdTqkdkQ1EEobHlNKmCb6w2pXMXdv8Muua4HVEnvTUZH 7m+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1726747821; x=1727352621; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=6u/eP4fAIQlYm+eg5ee1mu0kWkWMqOLI9x/Ue3inu5M=; b=KA+pxbFBfHDaS8eH2SJgbGy1cPgvPzz6KTeMrNPUXGkFqxqrb3d4anT9qVxsTUuSLe vyfYbFuWJJbZPz0awU4s62+QHRe67cosmFhg3PoBYi+P+hm6K5HQC8/Gk9MoXDIK8PLD VLv4dedAb/s4EykVVWdi10prJ0bmKO6eKfBp6lN3xHS9goqzR4JKsfoq1dq5H2VlaKyQ 6v8vbONLC8yTVpViM3pRYrcInV4XdePiuttEizsmn3o2LsMWhM93sIID/ixh6ImQu3sa HeJ3+0Vv4MB2N2FmAnd4LyaD54+r2syruuHBRN3nEVCsK2rwMgekMmUIHWBj72JkqpyM wZVA== X-Forwarded-Encrypted: i=1; AJvYcCXTQ6Luw3thn91/pzOfxSv8bOqM23Kq5RnzTN436KT6ydcJXCXluBlLJxO+tL72IBq3dZRk60j8PHmqZrSZ@postgresql.org X-Gm-Message-State: AOJu0YyAOIUngpS8IVuePGOOG7VZgR3sPXVY7HsXHr0SWDFtWNLZzKf3 xc0IFyCqF1+OAUizY9hsJLILIj3HIu3CKDBkmz0jBv4Ea5NXD9eC4FV1xVqOUZYXZeY9lP79eJh xb0um9NrYHoznHy1CS7bneQzxVPg= X-Google-Smtp-Source: AGHT+IHeG4jTAGhA5cMMNQaomDCkVjiWoch8T3gDRW1YCJBoE9y3ziaU1IUHDqIjlAcge58PEjOwJnMbQ2RKQxbSMq0= X-Received: by 2002:a17:90a:2e81:b0:2d8:25ce:e6e3 with SMTP id 98e67ed59e1d1-2dd6cdfb00cmr4331411a91.5.1726747820893; Thu, 19 Sep 2024 05:10:20 -0700 (PDT) MIME-Version: 1.0 References: <202406191709.jbvpf7d7hl6g@alvherre.pgsql> In-Reply-To: From: Amit Langote Date: Thu, 19 Sep 2024 21:10:04 +0900 Message-ID: Subject: Re: generic plans and "initial" pruning To: Robert Haas Cc: Alvaro Herrera , Andres Freund , Daniel Gustafsson , David Rowley , PostgreSQL Hackers , Thom Brown , Tom Lane Content-Type: multipart/mixed; boundary="0000000000007b8704062277ce88" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000007b8704062277ce88 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Sep 19, 2024 at 5:39=E2=80=AFPM Amit Langote wrote: > For > ResultRelInfos, I took the approach of memsetting them to 0 for pruned > result relations and adding checks at multiple sites to ensure the > ResultRelInfo being handled is valid. After some reflection, I realized that nobody would think that that approach is very robust. In the attached, I=E2=80=99ve modified ExecInitModifyTable() to allocate ResultRelInfos only for unpruned relations, instead of allocating for all in ModifyTable.resultRelations and setting pruned ones to 0. This approach feels more robust. --=20 Thanks, Amit Langote --0000000000007b8704062277ce88 Content-Type: application/octet-stream; name="v55-0001-Move-PartitionPruneInfo-out-of-plan-nodes-into-P.patch" Content-Disposition: attachment; filename="v55-0001-Move-PartitionPruneInfo-out-of-plan-nodes-into-P.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m1990ptp0 RnJvbSBjZjc1ZDQ4MzIzYTNjMjhkMjcyZTM0Yzk0MmYxMjNhMmUwNDA0NGZkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IEZyaSwgNiBTZXAgMjAyNCAxMzoxMTowNSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjU1 IDEvNV0gTW92ZSBQYXJ0aXRpb25QcnVuZUluZm8gb3V0IG9mIHBsYW4gbm9kZXMgaW50bwogUGxh bm5lZFN0bXQKClRoaXMgY2hhbmdlIG1vdmVzIFBhcnRpdGlvblBydW5lSW5mbyBmcm9tIGluZGl2 aWR1YWwgcGxhbiBub2RlcyB0bwpQbGFubmVkU3RtdCwgYWxsb3dpbmcgcnVudGltZSBpbml0aWFs IHBydW5pbmcgdG8gYmUgcGVyZm9ybWVkIGFjcm9zcwp0aGUgZW50aXJlIHBsYW4gdHJlZSB3aXRo b3V0IHRyYXZlcnNpbmcgdGhlIHRyZWUgdG8gZmluZCBub2Rlcwpjb250YWluaW5nIFBhcnRpdGlv blBydW5lSW5mb3MuCgpUaGUgUGFydGl0aW9uUHJ1bmVJbmZvIHBvaW50ZXIgZmllbGRzIGluIEFw cGVuZCBhbmQgTWVyZ2VBcHBlbmQgbm9kZXMKaGF2ZSBiZWVuIHJlcGxhY2VkIHdpdGggYW4gaW50 ZWdlciBpbmRleCB0aGF0IHBvaW50cyB0bwpQYXJ0aXRpb25QcnVuZUluZm9zIGluIGEgbGlzdCB3 aXRoaW4gUGxhbm5lZFN0bXQsIHdoaWNoIGhvbGRzIHRoZQpQYXJ0aXRpb25QcnVuZUluZm9zIGZv ciBhbGwgc3VicXVlcmllcy4KClJldmlld2VkLWJ5OiBBbHZhcm8gSGVycmVyYQotLS0KIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAgICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNQYXJ0aXRpb24uYyAgICB8IDE5ICsrKysrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0 aWxzLmMgICAgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jICAg ICAgIHwgIDUgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jICB8ICA1 ICstCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMgfCAyNCArKystLS0t CiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgICAgfCAgMSArCiBzcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgICAgfCA4NiArKysrKysrKysrKysrKysrLS0t LS0tLS0tCiBzcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMgICAgfCAxOSArKysr LS0KIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaCAgICB8ICA0ICstCiBzcmMv aW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAgICAgICAgfCAgMSArCiBzcmMvaW5jbHVkZS9u b2Rlcy9wYXRobm9kZXMuaCAgICAgICAgICAgfCAgNiArKwogc3JjL2luY2x1ZGUvbm9kZXMvcGxh bm5vZGVzLmggICAgICAgICAgIHwgMTQgKystLQogc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3Bh cnRwcnVuZS5oICAgIHwgIDggKy0tCiAxNSBmaWxlcyBjaGFuZ2VkLCAxMzMgaW5zZXJ0aW9ucygr KSwgNjIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggNzA0MmNhNmM2 MC4uZTYxOTdjMTY1ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4u YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC04NTAsNiArODUwLDcg QEAgSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJRXhlY0luaXRS YW5nZVRhYmxlKGVzdGF0ZSwgcmFuZ2VUYWJsZSwgcGxhbm5lZHN0bXQtPnBlcm1JbmZvcyk7CiAK IAllc3RhdGUtPmVzX3BsYW5uZWRzdG10ID0gcGxhbm5lZHN0bXQ7CisJZXN0YXRlLT5lc19wYXJ0 X3BydW5lX2luZm9zID0gcGxhbm5lZHN0bXQtPnBhcnRQcnVuZUluZm9zOwogCiAJLyoKIAkgKiBO ZXh0LCBidWlsZCB0aGUgRXhlY1Jvd01hcmsgYXJyYXkgZnJvbSB0aGUgUGxhblJvd01hcmsocyks IGlmIGFueS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5j IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKaW5kZXggYmZiMzQxOWVmYi4u YjAxYTJmZGZkZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVs LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKQEAgLTE4MSw2ICsx ODEsNyBAQCBFeGVjU2VyaWFsaXplUGxhbihQbGFuICpwbGFuLCBFU3RhdGUgKmVzdGF0ZSkKIAlw c3RtdC0+ZGVwZW5kc09uUm9sZSA9IGZhbHNlOwogCXBzdG10LT5wYXJhbGxlbE1vZGVOZWVkZWQg PSBmYWxzZTsKIAlwc3RtdC0+cGxhblRyZWUgPSBwbGFuOworCXBzdG10LT5wYXJ0UHJ1bmVJbmZv cyA9IGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9pbmZvczsKIAlwc3RtdC0+cnRhYmxlID0gZXN0YXRl LT5lc19yYW5nZV90YWJsZTsKIAlwc3RtdC0+cGVybUluZm9zID0gZXN0YXRlLT5lc19ydGVwZXJt aW5mb3M7CiAJcHN0bXQtPnJlc3VsdFJlbGF0aW9ucyA9IE5JTDsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNQYXJ0aXRpb24uYwppbmRleCA3NjUxODg2MjI5Li5lYzczMDY3NGYyIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY1BhcnRpdGlvbi5jCkBAIC0xNzg2LDYgKzE3ODYsOSBAQCBhZGp1c3RfcGFydGl0 aW9uX2NvbG5vc191c2luZ19tYXAoTGlzdCAqY29sbm9zLCBBdHRyTWFwICphdHRyTWFwKQogICoJ CUluaXRpYWxpemUgZGF0YSBzdHJ1Y3R1cmUgbmVlZGVkIGZvciBydW4tdGltZSBwYXJ0aXRpb24g cHJ1bmluZyBhbmQKICAqCQlkbyBpbml0aWFsIHBydW5pbmcgaWYgbmVlZGVkCiAgKgorICogJ3Jv b3RfcGFyZW50X3JlbGlkcycgaWRlbnRpZmllcyB0aGUgcmVsYXRpb24gdG8gd2hpY2ggYm90aCB0 aGUgcGFyZW50IHBsYW4KKyAqIGFuZCB0aGUgUGFydGl0aW9uUHJ1bmVJbmZvIGdpdmVuIGJ5ICdw YXJ0X3BydW5lX2luZGV4JyBiZWxvbmcuCisgKgogICogT24gcmV0dXJuLCAqaW5pdGlhbGx5X3Zh bGlkX3N1YnBsYW5zIGlzIGFzc2lnbmVkIHRoZSBzZXQgb2YgaW5kZXhlcyBvZgogICogY2hpbGQg c3VicGxhbnMgdGhhdCBtdXN0IGJlIGluaXRpYWxpemVkIGFsb25nIHdpdGggdGhlIHBhcmVudCBw bGFuIG5vZGUuCiAgKiBJbml0aWFsIHBydW5pbmcgaXMgcGVyZm9ybWVkIGhlcmUgaWYgbmVlZGVk IGFuZCBpbiB0aGF0IGNhc2Ugb25seSB0aGUKQEAgLTE3OTgsMTEgKzE4MDEsMjUgQEAgYWRqdXN0 X3BhcnRpdGlvbl9jb2xub3NfdXNpbmdfbWFwKExpc3QgKmNvbG5vcywgQXR0ck1hcCAqYXR0ck1h cCkKIFBhcnRpdGlvblBydW5lU3RhdGUgKgogRXhlY0luaXRQYXJ0aXRpb25QcnVuaW5nKFBsYW5T dGF0ZSAqcGxhbnN0YXRlLAogCQkJCQkJIGludCBuX3RvdGFsX3N1YnBsYW5zLAotCQkJCQkJIFBh cnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvLAorCQkJCQkJIGludCBwYXJ0X3BydW5lX2luZGV4 LAorCQkJCQkJIEJpdG1hcHNldCAqcm9vdF9wYXJlbnRfcmVsaWRzLAogCQkJCQkJIEJpdG1hcHNl dCAqKmluaXRpYWxseV92YWxpZF9zdWJwbGFucykKIHsKIAlQYXJ0aXRpb25QcnVuZVN0YXRlICpw cnVuZXN0YXRlOwogCUVTdGF0ZQkgICAqZXN0YXRlID0gcGxhbnN0YXRlLT5zdGF0ZTsKKwlQYXJ0 aXRpb25QcnVuZUluZm8gKnBydW5laW5mbzsKKworCS8qIE9idGFpbiB0aGUgcHJ1bmVpbmZvIHdl IG5lZWQsIGFuZCBtYWtlIHN1cmUgaXQncyB0aGUgcmlnaHQgb25lICovCisJcHJ1bmVpbmZvID0g bGlzdF9udGhfbm9kZShQYXJ0aXRpb25QcnVuZUluZm8sIGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9p bmZvcywKKwkJCQkJCQkgIHBhcnRfcHJ1bmVfaW5kZXgpOworCWlmICghYm1zX2VxdWFsKHJvb3Rf cGFyZW50X3JlbGlkcywgcHJ1bmVpbmZvLT5yb290X3BhcmVudF9yZWxpZHMpKQorCQllcmVwb3J0 KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9JTlRFUk5BTF9FUlJPUiksCisJCQkJZXJybXNn X2ludGVybmFsKCJtaXNtYXRjaGluZyBQYXJ0aXRpb25QcnVuZUluZm8gZm91bmQgYXQgcGFydF9w cnVuZV9pbmRleCAlZCIsCisJCQkJCQkJCXBhcnRfcHJ1bmVfaW5kZXgpLAorCQkJCWVycmRldGFp bF9pbnRlcm5hbCgicGxhbiBub2RlIHJlbGlkcyAlcywgcHJ1bmVpbmZvIHJlbGlkcyAlcyIsCisJ CQkJCQkJCSAgIGJtc1RvU3RyaW5nKHJvb3RfcGFyZW50X3JlbGlkcyksCisJCQkJCQkJCSAgIGJt c1RvU3RyaW5nKHBydW5laW5mby0+cm9vdF9wYXJlbnRfcmVsaWRzKSkpOwogCiAJLyogV2UgbWF5 IG5lZWQgYW4gZXhwcmVzc2lvbiBjb250ZXh0IHRvIGV2YWx1YXRlIHBhcnRpdGlvbiBleHBycyAq LwogCUV4ZWNBc3NpZ25FeHByQ29udGV4dChlc3RhdGUsIHBsYW5zdGF0ZSk7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNVdGlscy5jCmluZGV4IDU3MzdmOWY0ZWIuLjY3NzM0OTc5YjAgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNVdGlscy5jCkBAIC0xMTgsNiArMTE4LDcgQEAgQ3JlYXRlRXhlY3V0b3JTdGF0ZSh2b2lk KQogCWVzdGF0ZS0+ZXNfcm93bWFya3MgPSBOVUxMOwogCWVzdGF0ZS0+ZXNfcnRlcGVybWluZm9z ID0gTklMOwogCWVzdGF0ZS0+ZXNfcGxhbm5lZHN0bXQgPSBOVUxMOworCWVzdGF0ZS0+ZXNfcGFy dF9wcnVuZV9pbmZvcyA9IE5JTDsKIAogCWVzdGF0ZS0+ZXNfanVua0ZpbHRlciA9IE5VTEw7CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYwppbmRleCBjYTBmNTRkNjc2Li5kZTdlYmFiNWMyIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCkBAIC0xMzQsNyArMTM0LDcgQEAgRXhlY0luaXRB cHBlbmQoQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAlhcHBlbmRz dGF0ZS0+YXNfYmVndW4gPSBmYWxzZTsKIAogCS8qIElmIHJ1bi10aW1lIHBhcnRpdGlvbiBwcnVu aW5nIGlzIGVuYWJsZWQsIHRoZW4gc2V0IHRoYXQgdXAgbm93ICovCi0JaWYgKG5vZGUtPnBhcnRf cHJ1bmVfaW5mbyAhPSBOVUxMKQorCWlmIChub2RlLT5wYXJ0X3BydW5lX2luZGV4ID49IDApCiAJ ewogCQlQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlOwogCkBAIC0xNDUsNyArMTQ1LDgg QEAgRXhlY0luaXRBcHBlbmQoQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFn cykKIAkJICovCiAJCXBydW5lc3RhdGUgPSBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoJmFwcGVu ZHN0YXRlLT5wcywKIAkJCQkJCQkJCQkJICBsaXN0X2xlbmd0aChub2RlLT5hcHBlbmRwbGFucyks Ci0JCQkJCQkJCQkJCSAgbm9kZS0+cGFydF9wcnVuZV9pbmZvLAorCQkJCQkJCQkJCQkgIG5vZGUt PnBhcnRfcHJ1bmVfaW5kZXgsCisJCQkJCQkJCQkJCSAgbm9kZS0+YXBwcmVsaWRzLAogCQkJCQkJ CQkJCQkgICZ2YWxpZHN1YnBsYW5zKTsKIAkJYXBwZW5kc3RhdGUtPmFzX3BydW5lX3N0YXRlID0g cHJ1bmVzdGF0ZTsKIAkJbnBsYW5zID0gYm1zX251bV9tZW1iZXJzKHZhbGlkc3VicGxhbnMpOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYwppbmRleCBlMWI5Yjk4NGE3Li4zZWQ5 MTgwOGRkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQu YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYwpAQCAtODIsNyAr ODIsNyBAQCBFeGVjSW5pdE1lcmdlQXBwZW5kKE1lcmdlQXBwZW5kICpub2RlLCBFU3RhdGUgKmVz dGF0ZSwgaW50IGVmbGFncykKIAltZXJnZXN0YXRlLT5wcy5FeGVjUHJvY05vZGUgPSBFeGVjTWVy Z2VBcHBlbmQ7CiAKIAkvKiBJZiBydW4tdGltZSBwYXJ0aXRpb24gcHJ1bmluZyBpcyBlbmFibGVk LCB0aGVuIHNldCB0aGF0IHVwIG5vdyAqLwotCWlmIChub2RlLT5wYXJ0X3BydW5lX2luZm8gIT0g TlVMTCkKKwlpZiAobm9kZS0+cGFydF9wcnVuZV9pbmRleCA+PSAwKQogCXsKIAkJUGFydGl0aW9u UHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZTsKIApAQCAtOTMsNyArOTMsOCBAQCBFeGVjSW5pdE1lcmdl QXBwZW5kKE1lcmdlQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJ ICovCiAJCXBydW5lc3RhdGUgPSBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoJm1lcmdlc3RhdGUt PnBzLAogCQkJCQkJCQkJCQkgIGxpc3RfbGVuZ3RoKG5vZGUtPm1lcmdlcGxhbnMpLAotCQkJCQkJ CQkJCQkgIG5vZGUtPnBhcnRfcHJ1bmVfaW5mbywKKwkJCQkJCQkJCQkJICBub2RlLT5wYXJ0X3By dW5lX2luZGV4LAorCQkJCQkJCQkJCQkgIG5vZGUtPmFwcHJlbGlkcywKIAkJCQkJCQkJCQkJICAm dmFsaWRzdWJwbGFucyk7CiAJCW1lcmdlc3RhdGUtPm1zX3BydW5lX3N0YXRlID0gcHJ1bmVzdGF0 ZTsKIAkJbnBsYW5zID0gYm1zX251bV9tZW1iZXJzKHZhbGlkc3VicGxhbnMpOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jIGIvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCmluZGV4IGJiNDVlZjMxOGYuLjY2NDJkMDlhMzkg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYworKysg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKQEAgLTEyMjUsNyArMTIy NSw2IEBAIGNyZWF0ZV9hcHBlbmRfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgQXBwZW5kUGF0aCAq YmVzdF9wYXRoLCBpbnQgZmxhZ3MpCiAJTGlzdENlbGwgICAqc3VicGF0aHM7CiAJaW50CQkJbmFz eW5jcGxhbnMgPSAwOwogCVJlbE9wdEluZm8gKnJlbCA9IGJlc3RfcGF0aC0+cGF0aC5wYXJlbnQ7 Ci0JUGFydGl0aW9uUHJ1bmVJbmZvICpwYXJ0cHJ1bmVpbmZvID0gTlVMTDsKIAlpbnQJCQlub2Rl bnVtc29ydGtleXMgPSAwOwogCUF0dHJOdW1iZXIgKm5vZGVTb3J0Q29sSWR4ID0gTlVMTDsKIAlP aWQJCSAgICpub2RlU29ydE9wZXJhdG9ycyA9IE5VTEw7CkBAIC0xMzc2LDYgKzEzNzUsOSBAQCBj cmVhdGVfYXBwZW5kX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIEFwcGVuZFBhdGggKmJlc3RfcGF0 aCwgaW50IGZsYWdzKQogCQlzdWJwbGFucyA9IGxhcHBlbmQoc3VicGxhbnMsIHN1YnBsYW4pOwog CX0KIAorCS8qIFNldCBiZWxvdyBpZiB3ZSBmaW5kIHF1YWxzIHRoYXQgd2UgY2FuIHVzZSB0byBy dW4tdGltZSBwcnVuZSAqLworCXBsYW4tPnBhcnRfcHJ1bmVfaW5kZXggPSAtMTsKKwogCS8qCiAJ ICogSWYgYW55IHF1YWxzIGV4aXN0LCB0aGV5IG1heSBiZSB1c2VmdWwgdG8gcGVyZm9ybSBmdXJ0 aGVyIHBhcnRpdGlvbgogCSAqIHBydW5pbmcgZHVyaW5nIGV4ZWN1dGlvbi4gIEdhdGhlciBpbmZv cm1hdGlvbiBuZWVkZWQgYnkgdGhlIGV4ZWN1dG9yIHRvCkBAIC0xMzk5LDE2ICsxNDAxLDE0IEBA IGNyZWF0ZV9hcHBlbmRfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgQXBwZW5kUGF0aCAqYmVzdF9w YXRoLCBpbnQgZmxhZ3MpCiAJCX0KIAogCQlpZiAocHJ1bmVxdWFsICE9IE5JTCkKLQkJCXBhcnRw cnVuZWluZm8gPQotCQkJCW1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhyb290LCByZWwsCi0JCQkJ CQkJCQkJIGJlc3RfcGF0aC0+c3VicGF0aHMsCi0JCQkJCQkJCQkJIHBydW5lcXVhbCk7CisJCQlw bGFuLT5wYXJ0X3BydW5lX2luZGV4ID0gbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKHJvb3QsIHJl bCwKKwkJCQkJCQkJCQkJCQkJCSAgYmVzdF9wYXRoLT5zdWJwYXRocywKKwkJCQkJCQkJCQkJCQkJ CSAgcHJ1bmVxdWFsKTsKIAl9CiAKIAlwbGFuLT5hcHBlbmRwbGFucyA9IHN1YnBsYW5zOwogCXBs YW4tPm5hc3luY3BsYW5zID0gbmFzeW5jcGxhbnM7CiAJcGxhbi0+Zmlyc3RfcGFydGlhbF9wbGFu ID0gYmVzdF9wYXRoLT5maXJzdF9wYXJ0aWFsX3BhdGg7Ci0JcGxhbi0+cGFydF9wcnVuZV9pbmZv ID0gcGFydHBydW5laW5mbzsKIAogCWNvcHlfZ2VuZXJpY19wYXRoX2luZm8oJnBsYW4tPnBsYW4s IChQYXRoICopIGJlc3RfcGF0aCk7CiAKQEAgLTE0NDcsNyArMTQ0Nyw2IEBAIGNyZWF0ZV9tZXJn ZV9hcHBlbmRfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgTWVyZ2VBcHBlbmRQYXRoICpiZXN0X3Bh dGgsCiAJTGlzdAkgICAqc3VicGxhbnMgPSBOSUw7CiAJTGlzdENlbGwgICAqc3VicGF0aHM7CiAJ UmVsT3B0SW5mbyAqcmVsID0gYmVzdF9wYXRoLT5wYXRoLnBhcmVudDsKLQlQYXJ0aXRpb25QcnVu ZUluZm8gKnBhcnRwcnVuZWluZm8gPSBOVUxMOwogCiAJLyoKIAkgKiBXZSBkb24ndCBoYXZlIHRo ZSBhY3R1YWwgY3JlYXRpb24gb2YgdGhlIE1lcmdlQXBwZW5kIG5vZGUgc3BsaXQgb3V0CkBAIC0x NTQwLDYgKzE1MzksOSBAQCBjcmVhdGVfbWVyZ2VfYXBwZW5kX3BsYW4oUGxhbm5lckluZm8gKnJv b3QsIE1lcmdlQXBwZW5kUGF0aCAqYmVzdF9wYXRoLAogCQlzdWJwbGFucyA9IGxhcHBlbmQoc3Vi cGxhbnMsIHN1YnBsYW4pOwogCX0KIAorCS8qIFNldCBiZWxvdyBpZiB3ZSBmaW5kIHF1YWxzIHRo YXQgd2UgY2FuIHVzZSB0byBydW4tdGltZSBwcnVuZSAqLworCW5vZGUtPnBhcnRfcHJ1bmVfaW5k ZXggPSAtMTsKKwogCS8qCiAJICogSWYgYW55IHF1YWxzIGV4aXN0LCB0aGV5IG1heSBiZSB1c2Vm dWwgdG8gcGVyZm9ybSBmdXJ0aGVyIHBhcnRpdGlvbgogCSAqIHBydW5pbmcgZHVyaW5nIGV4ZWN1 dGlvbi4gIEdhdGhlciBpbmZvcm1hdGlvbiBuZWVkZWQgYnkgdGhlIGV4ZWN1dG9yIHRvCkBAIC0x NTU1LDEzICsxNTU3LDEzIEBAIGNyZWF0ZV9tZXJnZV9hcHBlbmRfcGxhbihQbGFubmVySW5mbyAq cm9vdCwgTWVyZ2VBcHBlbmRQYXRoICpiZXN0X3BhdGgsCiAJCUFzc2VydChiZXN0X3BhdGgtPnBh dGgucGFyYW1faW5mbyA9PSBOVUxMKTsKIAogCQlpZiAocHJ1bmVxdWFsICE9IE5JTCkKLQkJCXBh cnRwcnVuZWluZm8gPSBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8ocm9vdCwgcmVsLAotCQkJCQkJ CQkJCQkJCSBiZXN0X3BhdGgtPnN1YnBhdGhzLAotCQkJCQkJCQkJCQkJCSBwcnVuZXF1YWwpOwor CQkJbm9kZS0+cGFydF9wcnVuZV9pbmRleCA9IG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhyb290 LCByZWwsCisJCQkJCQkJCQkJCQkJCQkgIGJlc3RfcGF0aC0+c3VicGF0aHMsCisJCQkJCQkJCQkJ CQkJCQkgIHBydW5lcXVhbCk7CiAJfQogCiAJbm9kZS0+bWVyZ2VwbGFucyA9IHN1YnBsYW5zOwot CW5vZGUtPnBhcnRfcHJ1bmVfaW5mbyA9IHBhcnRwcnVuZWluZm87CisKIAogCS8qCiAJICogSWYg cHJlcGFyZV9zb3J0X2Zyb21fcGF0aGtleXMgYWRkZWQgc29ydCBjb2x1bW5zLCBidXQgd2Ugd2Vy ZSB0b2xkIHRvCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVy LmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKaW5kZXggZGYzNWQxZmY5 Yy4uMWI5MDcxYzc3NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxh bm5lci5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwpAQCAtNTQ3 LDYgKzU0Nyw3IEBAIHN0YW5kYXJkX3BsYW5uZXIoUXVlcnkgKnBhcnNlLCBjb25zdCBjaGFyICpx dWVyeV9zdHJpbmcsIGludCBjdXJzb3JPcHRpb25zLAogCXJlc3VsdC0+ZGVwZW5kc09uUm9sZSA9 IGdsb2ItPmRlcGVuZHNPblJvbGU7CiAJcmVzdWx0LT5wYXJhbGxlbE1vZGVOZWVkZWQgPSBnbG9i LT5wYXJhbGxlbE1vZGVOZWVkZWQ7CiAJcmVzdWx0LT5wbGFuVHJlZSA9IHRvcF9wbGFuOworCXJl c3VsdC0+cGFydFBydW5lSW5mb3MgPSBnbG9iLT5wYXJ0UHJ1bmVJbmZvczsKIAlyZXN1bHQtPnJ0 YWJsZSA9IGdsb2ItPmZpbmFscnRhYmxlOwogCXJlc3VsdC0+cGVybUluZm9zID0gZ2xvYi0+Zmlu YWxydGVwZXJtaW5mb3M7CiAJcmVzdWx0LT5yZXN1bHRSZWxhdGlvbnMgPSBnbG9iLT5yZXN1bHRS ZWxhdGlvbnM7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZz LmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKaW5kZXggOTFjN2M0ZmUy Zi4uZTJlYTQwNmM0ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0 cmVmcy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYwpAQCAtMTcz Miw2ICsxNzMyLDQ4IEBAIHNldF9jdXN0b21zY2FuX3JlZmVyZW5jZXMoUGxhbm5lckluZm8gKnJv b3QsCiAJY3NjYW4tPmN1c3RvbV9yZWxpZHMgPSBvZmZzZXRfcmVsaWRfc2V0KGNzY2FuLT5jdXN0 b21fcmVsaWRzLCBydG9mZnNldCk7CiB9CiAKKy8qCisgKiByZWdpc3Rlcl9wYXJ0cHJ1bmVpbmZv CisgKgkJU3Vicm91dGluZSBmb3Igc2V0X2FwcGVuZF9yZWZlcmVuY2VzIGFuZCBzZXRfbWVyZ2Vh cHBlbmRfcmVmZXJlbmNlcworICoKKyAqIEFkZCB0aGUgUGFydGl0aW9uUHJ1bmVJbmZvIGZyb20g cm9vdC0+cGFydFBydW5lSW5mb3MgYXQgdGhlIGdpdmVuIGluZGV4CisgKiBpbnRvIFBsYW5uZXJH bG9iYWwtPnBhcnRQcnVuZUluZm9zIGFuZCByZXR1cm4gaXRzIGluZGV4IHRoZXJlLgorICoKKyAq IEFsc28gdXBkYXRlIHRoZSBSVCBpbmRleGVzIHByZXNlbnQgaW4gUGFydGl0aW9uZWRSZWxQcnVu ZUluZm9zIHRvIGFkZCB0aGUKKyAqIG9mZnNldC4KKyAqLworc3RhdGljIGludAorcmVnaXN0ZXJf cGFydHBydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgaW50IHBhcnRfcHJ1bmVfaW5kZXgsIGlu dCBydG9mZnNldCkKK3sKKwlQbGFubmVyR2xvYmFsICAqZ2xvYiA9IHJvb3QtPmdsb2I7CisJUGFy dGl0aW9uUHJ1bmVJbmZvICpwaW5mbzsKKwlMaXN0Q2VsbAkqbDsKKworCUFzc2VydChwYXJ0X3By dW5lX2luZGV4ID49IDAgJiYKKwkJICAgcGFydF9wcnVuZV9pbmRleCA8IGxpc3RfbGVuZ3RoKHJv b3QtPnBhcnRQcnVuZUluZm9zKSk7CisJcGluZm8gPSBsaXN0X250aF9ub2RlKFBhcnRpdGlvblBy dW5lSW5mbywgcm9vdC0+cGFydFBydW5lSW5mb3MsCisJCQkJCQkgIHBhcnRfcHJ1bmVfaW5kZXgp OworCisJcGluZm8tPnJvb3RfcGFyZW50X3JlbGlkcyA9IG9mZnNldF9yZWxpZF9zZXQocGluZm8t PnJvb3RfcGFyZW50X3JlbGlkcywKKwkJCQkJCQkJCQkJCSBydG9mZnNldCk7CisJZm9yZWFjaChs LCBwaW5mby0+cHJ1bmVfaW5mb3MpCisJeworCQlMaXN0CSAgICpwcnVuZV9pbmZvcyA9IGxmaXJz dChsKTsKKwkJTGlzdENlbGwgICAqbDI7CisKKwkJZm9yZWFjaChsMiwgcHJ1bmVfaW5mb3MpCisJ CXsKKwkJCVBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvICpwcmVsaW5mbyA9IGxmaXJzdChsMik7CisK KwkJCXByZWxpbmZvLT5ydGluZGV4ICs9IHJ0b2Zmc2V0OworCQl9CisJfQorCisJZ2xvYi0+cGFy dFBydW5lSW5mb3MgPSBsYXBwZW5kKGdsb2ItPnBhcnRQcnVuZUluZm9zLCBwaW5mbyk7CisKKwly ZXR1cm4gbGlzdF9sZW5ndGgoZ2xvYi0+cGFydFBydW5lSW5mb3MpIC0gMTsKK30KKwogLyoKICAq IHNldF9hcHBlbmRfcmVmZXJlbmNlcwogICoJCURvIHNldF9wbGFuX3JlZmVyZW5jZXMgcHJvY2Vz c2luZyBvbiBhbiBBcHBlbmQKQEAgLTE3ODQsMjEgKzE4MjYsMTMgQEAgc2V0X2FwcGVuZF9yZWZl cmVuY2VzKFBsYW5uZXJJbmZvICpyb290LAogCiAJYXBsYW4tPmFwcHJlbGlkcyA9IG9mZnNldF9y ZWxpZF9zZXQoYXBsYW4tPmFwcHJlbGlkcywgcnRvZmZzZXQpOwogCi0JaWYgKGFwbGFuLT5wYXJ0 X3BydW5lX2luZm8pCi0JewotCQlmb3JlYWNoKGwsIGFwbGFuLT5wYXJ0X3BydW5lX2luZm8tPnBy dW5lX2luZm9zKQotCQl7Ci0JCQlMaXN0CSAgICpwcnVuZV9pbmZvcyA9IGxmaXJzdChsKTsKLQkJ CUxpc3RDZWxsICAgKmwyOwotCi0JCQlmb3JlYWNoKGwyLCBwcnVuZV9pbmZvcykKLQkJCXsKLQkJ CQlQYXJ0aXRpb25lZFJlbFBydW5lSW5mbyAqcGluZm8gPSBsZmlyc3QobDIpOwotCi0JCQkJcGlu Zm8tPnJ0aW5kZXggKz0gcnRvZmZzZXQ7Ci0JCQl9Ci0JCX0KLQl9CisJLyoKKwkgKiBBZGQgUGFy dGl0aW9uUHJ1bmVJbmZvLCBpZiBhbnksIHRvIFBsYW5uZXJHbG9iYWwgYW5kIHVwZGF0ZSB0aGUg aW5kZXguCisJICogQWxzbyB1cGRhdGUgdGhlIFJUIGluZGV4ZXMgcHJlc2VudCBpbiBpdCB0byBh ZGQgdGhlIG9mZnNldC4KKwkgKi8KKwlpZiAoYXBsYW4tPnBhcnRfcHJ1bmVfaW5kZXggPj0gMCkK KwkJYXBsYW4tPnBhcnRfcHJ1bmVfaW5kZXggPQorCQkJcmVnaXN0ZXJfcGFydHBydW5laW5mbyhy b290LCBhcGxhbi0+cGFydF9wcnVuZV9pbmRleCwgcnRvZmZzZXQpOwogCiAJLyogV2UgZG9uJ3Qg bmVlZCB0byByZWN1cnNlIHRvIGxlZnR0cmVlIG9yIHJpZ2h0dHJlZSAuLi4gKi8KIAlBc3NlcnQo YXBsYW4tPnBsYW4ubGVmdHRyZWUgPT0gTlVMTCk7CkBAIC0xODYwLDIxICsxODk0LDEzIEBAIHNl dF9tZXJnZWFwcGVuZF9yZWZlcmVuY2VzKFBsYW5uZXJJbmZvICpyb290LAogCiAJbXBsYW4tPmFw cHJlbGlkcyA9IG9mZnNldF9yZWxpZF9zZXQobXBsYW4tPmFwcHJlbGlkcywgcnRvZmZzZXQpOwog Ci0JaWYgKG1wbGFuLT5wYXJ0X3BydW5lX2luZm8pCi0JewotCQlmb3JlYWNoKGwsIG1wbGFuLT5w YXJ0X3BydW5lX2luZm8tPnBydW5lX2luZm9zKQotCQl7Ci0JCQlMaXN0CSAgICpwcnVuZV9pbmZv cyA9IGxmaXJzdChsKTsKLQkJCUxpc3RDZWxsICAgKmwyOwotCi0JCQlmb3JlYWNoKGwyLCBwcnVu ZV9pbmZvcykKLQkJCXsKLQkJCQlQYXJ0aXRpb25lZFJlbFBydW5lSW5mbyAqcGluZm8gPSBsZmly c3QobDIpOwotCi0JCQkJcGluZm8tPnJ0aW5kZXggKz0gcnRvZmZzZXQ7Ci0JCQl9Ci0JCX0KLQl9 CisJLyoKKwkgKiBBZGQgUGFydGl0aW9uUHJ1bmVJbmZvLCBpZiBhbnksIHRvIFBsYW5uZXJHbG9i YWwgYW5kIHVwZGF0ZSB0aGUgaW5kZXguCisJICogQWxzbyB1cGRhdGUgdGhlIFJUIGluZGV4ZXMg cHJlc2VudCBpbiBpdCB0byBhZGQgdGhlIG9mZnNldC4KKwkgKi8KKwlpZiAobXBsYW4tPnBhcnRf cHJ1bmVfaW5kZXggPj0gMCkKKwkJbXBsYW4tPnBhcnRfcHJ1bmVfaW5kZXggPQorCQkJcmVnaXN0 ZXJfcGFydHBydW5laW5mbyhyb290LCBtcGxhbi0+cGFydF9wcnVuZV9pbmRleCwgcnRvZmZzZXQp OwogCiAJLyogV2UgZG9uJ3QgbmVlZCB0byByZWN1cnNlIHRvIGxlZnR0cmVlIG9yIHJpZ2h0dHJl ZSAuLi4gKi8KIAlBc3NlcnQobXBsYW4tPnBsYW4ubGVmdHRyZWUgPT0gTlVMTCk7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMgYi9zcmMvYmFja2VuZC9w YXJ0aXRpb25pbmcvcGFydHBydW5lLmMKaW5kZXggOWExYTdmYWFjNy4uNjBmYWJiMTczNCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jCisrKyBiL3NyYy9i YWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYwpAQCAtMjA3LDE2ICsyMDcsMjAgQEAgc3Rh dGljIHZvaWQgcGFydGtleV9kYXR1bV9mcm9tX2V4cHIoUGFydGl0aW9uUHJ1bmVDb250ZXh0ICpj b250ZXh0LAogCiAvKgogICogbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvCi0gKgkJQnVpbGRzIGEg UGFydGl0aW9uUHJ1bmVJbmZvIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBleGVjdXRvciB0byBh bGxvdwotICoJCWFkZGl0aW9uYWwgcGFydGl0aW9uIHBydW5pbmcgdG8gdGFrZSBwbGFjZS4gIFJl dHVybnMgTlVMTCB3aGVuCi0gKgkJcGFydGl0aW9uIHBydW5pbmcgd291bGQgYmUgdXNlbGVzcy4K KyAqCQlDaGVja3MgaWYgdGhlIGdpdmVuIHNldCBvZiBxdWFscyBjYW4gYmUgdXNlZCB0byBidWls ZCBwcnVuaW5nIHN0ZXBzCisgKgkJdGhhdCB0aGUgZXhlY3V0b3IgY2FuIHVzZSB0byBwcnVuZSBh d2F5IHVubmVlZGVkIHBhcnRpdGlvbnMuICBJZgorICoJCXN1aXRhYmxlIHF1YWxzIGFyZSBmb3Vu ZCB0aGVuIGEgUGFydGl0aW9uUHJ1bmVJbmZvIGlzIGJ1aWx0IGFuZCB0YWdnZWQKKyAqCQlvbnRv IHRoZSBQbGFubmVySW5mbydzIHBhcnRQcnVuZUluZm9zIGxpc3QuCisgKgorICogVGhlIHJldHVy biB2YWx1ZSBpcyB0aGUgMC1iYXNlZCBpbmRleCBvZiB0aGUgaXRlbSBhZGRlZCB0byB0aGUKKyAq IHBhcnRQcnVuZUluZm9zIGxpc3Qgb3IgLTEgaWYgbm90aGluZyB3YXMgYWRkZWQuCiAgKgogICog J3BhcmVudHJlbCcgaXMgdGhlIFJlbE9wdEluZm8gZm9yIGFuIGFwcGVuZHJlbCwgYW5kICdzdWJw YXRocycgaXMgdGhlIGxpc3QKICAqIG9mIHNjYW4gcGF0aHMgZm9yIGl0cyBjaGlsZCByZWxzLgog ICogJ3BydW5lcXVhbCcgaXMgYSBsaXN0IG9mIHBvdGVudGlhbCBwcnVuaW5nIHF1YWxzIChpLmUu LCByZXN0cmljdGlvbgogICogY2xhdXNlcyB0aGF0IGFyZSBhcHBsaWNhYmxlIHRvIHRoZSBhcHBl bmRyZWwpLgogICovCi1QYXJ0aXRpb25QcnVuZUluZm8gKgoraW50CiBtYWtlX3BhcnRpdGlvbl9w cnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkJCQkJ CSBMaXN0ICpzdWJwYXRocywKIAkJCQkJCSBMaXN0ICpwcnVuZXF1YWwpCkBAIC0zMzAsMTAgKzMz NCwxMSBAQCBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9w dEluZm8gKnBhcmVudHJlbCwKIAkgKiBxdWFscywgdGhlbiB3ZSBjYW4ganVzdCBub3QgYm90aGVy IHdpdGggcnVuLXRpbWUgcHJ1bmluZy4KIAkgKi8KIAlpZiAocHJ1bmVyZWxpbmZvcyA9PSBOSUwp Ci0JCXJldHVybiBOVUxMOworCQlyZXR1cm4gLTE7CiAKIAkvKiBFbHNlIGJ1aWxkIHRoZSByZXN1 bHQgZGF0YSBzdHJ1Y3R1cmUgKi8KIAlwcnVuZWluZm8gPSBtYWtlTm9kZShQYXJ0aXRpb25QcnVu ZUluZm8pOworCXBydW5laW5mby0+cm9vdF9wYXJlbnRfcmVsaWRzID0gcGFyZW50cmVsLT5yZWxp ZHM7CiAJcHJ1bmVpbmZvLT5wcnVuZV9pbmZvcyA9IHBydW5lcmVsaW5mb3M7CiAKIAkvKgpAQCAt MzU2LDcgKzM2MSw5IEBAIG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9v dCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCWVsc2UKIAkJcHJ1bmVpbmZvLT5vdGhlcl9zdWJw bGFucyA9IE5VTEw7CiAKLQlyZXR1cm4gcHJ1bmVpbmZvOworCXJvb3QtPnBhcnRQcnVuZUluZm9z ID0gbGFwcGVuZChyb290LT5wYXJ0UHJ1bmVJbmZvcywgcHJ1bmVpbmZvKTsKKworCXJldHVybiBs aXN0X2xlbmd0aChyb290LT5wYXJ0UHJ1bmVJbmZvcykgLSAxOwogfQogCiAvKgpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oIGIvc3JjL2luY2x1ZGUvZXhl Y3V0b3IvZXhlY1BhcnRpdGlvbi5oCmluZGV4IGMwOWJjODNiMmEuLjEyYWFjYzg0ZmYgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaAorKysgYi9zcmMvaW5j bHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmgKQEAgLTEyMyw5ICsxMjMsOSBAQCB0eXBlZGVm IHN0cnVjdCBQYXJ0aXRpb25QcnVuZVN0YXRlCiAKIGV4dGVybiBQYXJ0aXRpb25QcnVuZVN0YXRl ICpFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoUGxhblN0YXRlICpwbGFuc3RhdGUsCiAJCQkJCQkJ CQkJCQkJIGludCBuX3RvdGFsX3N1YnBsYW5zLAotCQkJCQkJCQkJCQkJCSBQYXJ0aXRpb25QcnVu ZUluZm8gKnBydW5laW5mbywKKwkJCQkJCQkJCQkJCQkgaW50IHBhcnRfcHJ1bmVfaW5kZXgsCisJ CQkJCQkJCQkJCQkJIEJpdG1hcHNldCAqcm9vdF9wYXJlbnRfcmVsaWRzLAogCQkJCQkJCQkJCQkJ CSBCaXRtYXBzZXQgKippbml0aWFsbHlfdmFsaWRfc3VicGxhbnMpOwogZXh0ZXJuIEJpdG1hcHNl dCAqRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKFBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3Rh dGUsCiAJCQkJCQkJCQkJICAgYm9vbCBpbml0aWFsX3BydW5lKTsKLQogI2VuZGlmCQkJCQkJCS8q IEVYRUNQQVJUSVRJT05fSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25v ZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCA4ODQ2Nzk3N2Y4Li4y MmI5MjhlMDg1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysg Yi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtNjM2LDYgKzYzNiw3IEBAIHR5cGVk ZWYgc3RydWN0IEVTdGF0ZQogCQkJCQkJCQkJCSAqIEV4ZWNSb3dNYXJrcywgb3IgTlVMTCBpZiBu b25lICovCiAJTGlzdAkgICAqZXNfcnRlcGVybWluZm9zOwkvKiBMaXN0IG9mIFJURVBlcm1pc3Np b25JbmZvICovCiAJUGxhbm5lZFN0bXQgKmVzX3BsYW5uZWRzdG10OwkvKiBsaW5rIHRvIHRvcCBv ZiBwbGFuIHRyZWUgKi8KKwlMaXN0CSAgICplc19wYXJ0X3BydW5lX2luZm9zOwkvKiBQbGFubmVk U3RtdC5wYXJ0UHJ1bmVJbmZvcyAqLwogCWNvbnN0IGNoYXIgKmVzX3NvdXJjZVRleHQ7CS8qIFNv dXJjZSB0ZXh0IGZyb20gUXVlcnlEZXNjICovCiAKIAlKdW5rRmlsdGVyICplc19qdW5rRmlsdGVy OwkvKiB0b3AtbGV2ZWwganVuayBmaWx0ZXIsIGlmIGFueSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaApp bmRleCAwN2UyNDE1Mzk4Li44ZDMwYjZlODk2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rl cy9wYXRobm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaApAQCAtMTI4 LDYgKzEyOCw5IEBAIHR5cGVkZWYgc3RydWN0IFBsYW5uZXJHbG9iYWwKIAkvKiAiZmxhdCIgbGlz dCBvZiBBcHBlbmRSZWxJbmZvcyAqLwogCUxpc3QJICAgKmFwcGVuZFJlbGF0aW9uczsKIAorCS8q IExpc3Qgb2YgUGFydGl0aW9uUHJ1bmVJbmZvIGNvbnRhaW5lZCBpbiB0aGUgcGxhbiAqLworCUxp c3QJICAgKnBhcnRQcnVuZUluZm9zOworCiAJLyogT0lEcyBvZiByZWxhdGlvbnMgdGhlIHBsYW4g ZGVwZW5kcyBvbiAqLwogCUxpc3QJICAgKnJlbGF0aW9uT2lkczsKIApAQCAtNTU5LDYgKzU2Miw5 IEBAIHN0cnVjdCBQbGFubmVySW5mbwogCiAJLyogRG9lcyB0aGlzIHF1ZXJ5IG1vZGlmeSBhbnkg cGFydGl0aW9uIGtleSBjb2x1bW5zPyAqLwogCWJvb2wJCXBhcnRDb2xzVXBkYXRlZDsKKworCS8q IFBhcnRpdGlvblBydW5lSW5mb3MgYWRkZWQgaW4gdGhpcyBxdWVyeSdzIHBsYW4uICovCisJTGlz dAkgICAqcGFydFBydW5lSW5mb3M7CiB9OwogCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25v ZGVzL3BsYW5ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKaW5kZXggNjJj ZDZhNjY2Ni4uMzlkMDI4MWMyMyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5v ZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKQEAgLTY5LDYgKzY5LDkg QEAgdHlwZWRlZiBzdHJ1Y3QgUGxhbm5lZFN0bXQKIAogCXN0cnVjdCBQbGFuICpwbGFuVHJlZTsJ CS8qIHRyZWUgb2YgUGxhbiBub2RlcyAqLwogCisJTGlzdAkgICAqcGFydFBydW5lSW5mb3M7IC8q IExpc3Qgb2YgUGFydGl0aW9uUHJ1bmVJbmZvIGNvbnRhaW5lZCBpbiB0aGUKKwkJCQkJCQkJICog cGxhbiAqLworCiAJTGlzdAkgICAqcnRhYmxlOwkJCS8qIGxpc3Qgb2YgUmFuZ2VUYmxFbnRyeSBu b2RlcyAqLwogCiAJTGlzdAkgICAqcGVybUluZm9zOwkJLyogbGlzdCBvZiBSVEVQZXJtaXNzaW9u SW5mbyBub2RlcyBmb3IgcnRhYmxlCkBAIC0yNzYsOCArMjc5LDggQEAgdHlwZWRlZiBzdHJ1Y3Qg QXBwZW5kCiAJICovCiAJaW50CQkJZmlyc3RfcGFydGlhbF9wbGFuOwogCi0JLyogSW5mbyBmb3Ig cnVuLXRpbWUgc3VicGxhbiBwcnVuaW5nOyBOVUxMIGlmIHdlJ3JlIG5vdCBkb2luZyB0aGF0ICov Ci0Jc3RydWN0IFBhcnRpdGlvblBydW5lSW5mbyAqcGFydF9wcnVuZV9pbmZvOworCS8qIEluZGV4 IHRvIFBsYW5uZXJJbmZvLnBhcnRQcnVuZUluZm9zIG9yIC0xIGlmIG5vIHJ1bi10aW1lIHBydW5p bmcgKi8KKwlpbnQJCQlwYXJ0X3BydW5lX2luZGV4OwogfSBBcHBlbmQ7CiAKIC8qIC0tLS0tLS0t LS0tLS0tLS0KQEAgLTMxMSw4ICszMTQsOCBAQCB0eXBlZGVmIHN0cnVjdCBNZXJnZUFwcGVuZAog CS8qIE5VTExTIEZJUlNUL0xBU1QgZGlyZWN0aW9ucyAqLwogCWJvb2wJICAgKm51bGxzRmlyc3Qg cGdfbm9kZV9hdHRyKGFycmF5X3NpemUobnVtQ29scykpOwogCi0JLyogSW5mbyBmb3IgcnVuLXRp bWUgc3VicGxhbiBwcnVuaW5nOyBOVUxMIGlmIHdlJ3JlIG5vdCBkb2luZyB0aGF0ICovCi0Jc3Ry dWN0IFBhcnRpdGlvblBydW5lSW5mbyAqcGFydF9wcnVuZV9pbmZvOworCS8qIEluZGV4IHRvIFBs YW5uZXJJbmZvLnBhcnRQcnVuZUluZm9zIG9yIC0xIGlmIG5vIHJ1bi10aW1lIHBydW5pbmcgKi8K KwlpbnQJCQlwYXJ0X3BydW5lX2luZGV4OwogfSBNZXJnZUFwcGVuZDsKIAogLyogLS0tLS0tLS0t LS0tLS0tLQpAQCAtMTQxNCw2ICsxNDE3LDggQEAgdHlwZWRlZiBzdHJ1Y3QgUGxhblJvd01hcmsK ICAqIFRoZW4sIHNpbmNlIGFuIEFwcGVuZC10eXBlIG5vZGUgY291bGQgaGF2ZSBtdWx0aXBsZSBw YXJ0aXRpb25pbmcKICAqIGhpZXJhcmNoaWVzIGFtb25nIGl0cyBjaGlsZHJlbiwgd2UgaGF2ZSBh biB1bm9yZGVyZWQgTGlzdCBvZiB0aG9zZSBMaXN0cy4KICAqCisgKiByb290X3BhcmVudF9yZWxp ZHMJUmVsT3B0SW5mby5yZWxpZHMgb2YgdGhlIHJlbGF0aW9uIHRvIHdoaWNoIHRoZSBwYXJlbnQK KyAqCQkJCQkJcGxhbiBub2RlIGFuZCB0aGlzIFBhcnRpdGlvblBydW5lSW5mbyBub2RlIGJlbG9u ZwogICogcHJ1bmVfaW5mb3MJCQlMaXN0IG9mIExpc3RzIGNvbnRhaW5pbmcgUGFydGl0aW9uZWRS ZWxQcnVuZUluZm8gbm9kZXMsCiAgKgkJCQkJCW9uZSBzdWJsaXN0IHBlciBydW4tdGltZS1wcnVu YWJsZSBwYXJ0aXRpb24gaGllcmFyY2h5CiAgKgkJCQkJCWFwcGVhcmluZyBpbiB0aGUgcGFyZW50 IHBsYW4gbm9kZSdzIHN1YnBsYW5zLgpAQCAtMTQyNiw2ICsxNDMxLDcgQEAgdHlwZWRlZiBzdHJ1 Y3QgUGFydGl0aW9uUHJ1bmVJbmZvCiAJcGdfbm9kZV9hdHRyKG5vX2VxdWFsLCBub19xdWVyeV9q dW1ibGUpCiAKIAlOb2RlVGFnCQl0eXBlOworCUJpdG1hcHNldCAgKnJvb3RfcGFyZW50X3JlbGlk czsKIAlMaXN0CSAgICpwcnVuZV9pbmZvczsKIAlCaXRtYXBzZXQgICpvdGhlcl9zdWJwbGFuczsK IH0gUGFydGl0aW9uUHJ1bmVJbmZvOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFydGl0aW9u aW5nL3BhcnRwcnVuZS5oIGIvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5oCmlu ZGV4IGJkNDkwZDE1NGYuLmM1MzZhMWZlMTkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnRp dGlvbmluZy9wYXJ0cHJ1bmUuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydHBy dW5lLmgKQEAgLTcwLDEwICs3MCwxMCBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25QcnVuZUNv bnRleHQKICNkZWZpbmUgUHJ1bmVDeHRTdGF0ZUlkeChwYXJ0bmF0dHMsIHN0ZXBfaWQsIGtleW5v KSBcCiAJKChwYXJ0bmF0dHMpICogKHN0ZXBfaWQpICsgKGtleW5vKSkKIAotZXh0ZXJuIFBhcnRp dGlvblBydW5lSW5mbyAqbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKHN0cnVjdCBQbGFubmVySW5m byAqcm9vdCwKLQkJCQkJCQkJCQkJCQlzdHJ1Y3QgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAotCQkJ CQkJCQkJCQkJCUxpc3QgKnN1YnBhdGhzLAotCQkJCQkJCQkJCQkJCUxpc3QgKnBydW5lcXVhbCk7 CitleHRlcm4gaW50IG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhzdHJ1Y3QgUGxhbm5lckluZm8g KnJvb3QsCisJCQkJCQkJCQlzdHJ1Y3QgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAorCQkJCQkJCQkJ TGlzdCAqc3VicGF0aHMsCisJCQkJCQkJCQlMaXN0ICpwcnVuZXF1YWwpOwogZXh0ZXJuIEJpdG1h cHNldCAqcHJ1bmVfYXBwZW5kX3JlbF9wYXJ0aXRpb25zKHN0cnVjdCBSZWxPcHRJbmZvICpyZWwp OwogZXh0ZXJuIEJpdG1hcHNldCAqZ2V0X21hdGNoaW5nX3BhcnRpdGlvbnMoUGFydGl0aW9uUHJ1 bmVDb250ZXh0ICpjb250ZXh0LAogCQkJCQkJCQkJCSAgTGlzdCAqcHJ1bmluZ19zdGVwcyk7Ci0t IAoyLjQzLjAKCg== --0000000000007b8704062277ce88 Content-Type: application/octet-stream; name="v55-0003-Initialize-PartitionPruneContext-for-exec-prunin.patch" Content-Disposition: attachment; filename="v55-0003-Initialize-PartitionPruneContext-for-exec-prunin.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m1990pty2 RnJvbSA5MmQ4N2NkYmIzYWQ2NzVhYzZmZmEyNzY3ZjFkN2Q1ODc2YmQ1MzY5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgMTggU2VwIDIwMjQgMTE6MTY6NDggKzA5MDAKU3ViamVjdDogW1BBVENIIHY1 NSAzLzVdIEluaXRpYWxpemUgUGFydGl0aW9uUHJ1bmVDb250ZXh0IGZvciBleGVjIHBydW5pbmcK IGxhemlseQoKQ3VycmVudGx5LCBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoKSBpdGVyYXRlcyBv dmVyIFBhcnRpdGlvblBydW5pbmdEYXRhcwphbmQgbmVzdGVkIFBhcnRpdGlvbmVkUmVsUHJ1bmlu Z0RhdGFzIGluIGEgUGFydGl0aW9uUHJ1bmVTdGF0ZSBzb2xlbHkKdG8gaW5pdGlhbGl6ZSB0aGUg ZXhlY19jb250ZXh0IG9mIHRoZSBQYXJ0aXRpb25lZFJlbFBydW5pbmdEYXRhLgoKVGhpcyBjb21t aXQgbW92ZXMgdGhlIGluaXRpYWxpemF0aW9uIHRvIGZpbmRfbWF0Y2hpbmdfc3VicGxhbnNfcmVj dXJzZSgpLAp3aGVyZSB0aGUgZXhlY19jb250ZXh0IGlzIGFjdHVhbGx5IG5lZWRlZCwgZWxpbWlu YXRpbmcgdGhlIG5lZWQgZm9yCnRoZSBhYm92ZSBpdGVyYXRpb24uIFRvIHRyYWNrIHdoZXRoZXIg dGhlIGNvbnRleHQgaGFzIGJlZW4gaW5pdGlhbGl6ZWQKYW5kIGlzIHJlYWR5IGZvciB1c2UsIGEg Ym9vbGVhbiBmaWVsZCBpc192YWxpZCBpcyBhZGRlZCB0bwpQYXJ0aXRpb25QcnVuZUNvbnRleHQu Ci0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jIHwgMTY2ICsrKysrKysr KystLS0tLS0tLS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5o IHwgICAxICsKIHNyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuaCB8ICAgMiArCiAz IGZpbGVzIGNoYW5nZWQsIDY1IGluc2VydGlvbnMoKyksIDEwNCBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKaW5kZXggM2M3YzYzMTg2Ny4uZDlmYTU5Mzc4NSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwpAQCAtMTkwLDEwICsxOTAsOCBAQCBz dGF0aWMgdm9pZCBJbml0UGFydGl0aW9uUHJ1bmVDb250ZXh0KFBhcnRpdGlvblBydW5lQ29udGV4 dCAqY29udGV4dCwKIHN0YXRpYyB2b2lkIFBhcnRpdGlvblBydW5lRml4U3ViUGxhbk1hcChQYXJ0 aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlLAogCQkJCQkJCQkJCUJpdG1hcHNldCAqaW5pdGlh bGx5X3ZhbGlkX3N1YnBsYW5zLAogCQkJCQkJCQkJCWludCBuX3RvdGFsX3N1YnBsYW5zKTsKLXN0 YXRpYyB2b2lkIFBhcnRpdGlvblBydW5lSW5pdEV4ZWNQcnVuaW5nKFBhcnRpdGlvblBydW5lSW5m byAqcHJ1bmVpbmZvLAotCQkJCQkJCQkJCSAgUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0 ZSwKLQkJCQkJCQkJCQkgIFBsYW5TdGF0ZSAqcGxhbnN0YXRlKTsKLXN0YXRpYyB2b2lkIGZpbmRf bWF0Y2hpbmdfc3VicGxhbnNfcmVjdXJzZShQYXJ0aXRpb25QcnVuaW5nRGF0YSAqcHJ1bmVkYXRh LAorc3RhdGljIHZvaWQgZmluZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1cnNlKFBsYW5TdGF0ZSAq cGFyZW50X3BsYW4sCisJCQkJCQkJCQkJICAgUGFydGl0aW9uUHJ1bmluZ0RhdGEgKnBydW5lZGF0 YSwKIAkJCQkJCQkJCQkgICBQYXJ0aXRpb25lZFJlbFBydW5pbmdEYXRhICpwcHJ1bmUsCiAJCQkJ CQkJCQkJICAgYm9vbCBpbml0aWFsX3BydW5lLAogCQkJCQkJCQkJCSAgIEJpdG1hcHNldCAqKnZh bGlkc3VicGxhbnMpOwpAQCAtMTgzMCwxMyArMTgyOCwxNCBAQCBFeGVjSW5pdFBhcnRpdGlvblBy dW5pbmcoUGxhblN0YXRlICpwbGFuc3RhdGUsCiAKIAkvKgogCSAqIEV4ZWNEb0luaXRpYWxQcnVu aW5nKCkgbXVzdCBoYXZlIGluaXRpYWxpemVkIHRoZSBQYXJ0aXRpb25QcnVuZVN0YXRlIHRvCi0J ICogcGVyZm9ybSB0aGUgaW5pdGlhbCBwcnVuaW5nLiAgTm93IHdlIHNpbXBseSBuZWVkIHRvIGlu aXRpYWxpemUgdGhlCi0JICogY29udGV4dCBpbmZvcm1hdGlvbiBmb3IgZXhlYyBwcnVuaW5nLgor CSAqIHBlcmZvcm0gdGhlIGluaXRpYWwgcHJ1bmluZy4gIFN0b3JlIFBsYW5TdGF0ZSBzbyB0aGF0 IHRoZSBleGVjX2NvbnRleHQKKwkgKiBjYW4gYmUgaW5pdGlhbGl6ZWQgdXNpbmcgaXQgbGF0ZXIg d2hlbiBmaW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UoKQorCSAqIG5lZWRzIGl0LgogCSAq LwogCXBydW5lc3RhdGUgPSBsaXN0X250aChlc3RhdGUtPmVzX3BhcnRfcHJ1bmVfc3RhdGVzLCBw YXJ0X3BydW5lX2luZGV4KTsKIAlBc3NlcnQocHJ1bmVzdGF0ZSAhPSBOVUxMKTsKIAlpZiAocHJ1 bmVzdGF0ZS0+ZG9fZXhlY19wcnVuZSkKLQkJUGFydGl0aW9uUHJ1bmVJbml0RXhlY1BydW5pbmco cHJ1bmVpbmZvLCBwcnVuZXN0YXRlLCBwbGFuc3RhdGUpOworCQlwcnVuZXN0YXRlLT5wYXJlbnRf cGxhbiA9IHBsYW5zdGF0ZTsKIAogCS8qIFVzZSB0aGUgcmVzdWx0IG9mIGluaXRpYWwgcHJ1bmlu ZyBkb25lIGJ5IEV4ZWNEb0luaXRpYWxQcnVuaW5nKCkuICovCiAJaWYgKHBydW5lc3RhdGUtPmRv X2luaXRpYWxfcHJ1bmUpCkBAIC0xODkzLDggKzE4OTIsNyBAQCBFeGVjSW5pdFBhcnRpdGlvblBy dW5pbmcoUGxhblN0YXRlICpwbGFuc3RhdGUsCiAgKiBlYWNoIFBhcnRpdGlvbmVkUmVsUHJ1bmlu Z0RhdGEpIGZvciBpbml0aWFsIHBydW5pbmcgaGVyZS4gRXhlY3V0aW9uIHBydW5pbmcKICAqIHJl cXVpcmVzIGFjY2VzcyB0byB0aGUgcGFyZW50IHBsYW4gbm9kZSdzIFBsYW5TdGF0ZSwgd2hpY2gg aXMgbm90IGF2YWlsYWJsZQogICogd2hlbiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIEV4 ZWNEb0luaXRpYWxQcnVuaW5nKCksIHNvIGl0IGlzCi0gKiBpbml0aWFsaXplZCBsYXRlciBkdXJp bmcgRXhlY0luaXRQYXJ0aXRpb25QcnVuaW5nKCkgYnkgY2FsbGluZwotICogUGFydGl0aW9uUHJ1 bmVJbml0RXhlY1BydW5pbmcoKS4KKyAqIGluaXRpYWxpemVkIGxhemlseSBkdXJpbmcgZmluZF9t YXRjaGluZ19zdWJwbGFuc19yZWN1cnNlKCkuCiAgKi8KIFBhcnRpdGlvblBydW5lU3RhdGUgKgog RXhlY0NyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoRVN0YXRlICplc3RhdGUsIFBhcnRpdGlvblBy dW5lSW5mbyAqcHJ1bmVpbmZvKQpAQCAtMjA5OSwyNSArMjA5NywzMCBAQCBFeGVjQ3JlYXRlUGFy dGl0aW9uUHJ1bmVTdGF0ZShFU3RhdGUgKmVzdGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVu ZWluZm8pCiAJCQl9CiAKIAkJCS8qCi0JCQkgKiBUaGUgZXhlYyBwcnVuaW5nIGNvbnRleHQgd2ls bCBiZSBpbml0aWFsaXplZCBpbgotCQkJICogRXhlY0luaXRQYXJ0aXRpb25QcnVuaW5nKCkgd2hl biBjYWxsZWQgZHVyaW5nIHRoZSBpbml0aWFsaXphdGlvbgotCQkJICogb2YgdGhlIHBhcmVudCBw bGFuIG5vZGUuCisJCQkgKiBUaGUgZXhlYyBwcnVuaW5nIGNvbnRleHQgd2lsbCBiZSBpbml0aWFs aXplZCBsYXppbHkgd2hlbiBpdAorCQkJICogd2lsbCBiZSB1c2VkIGZvciB0aGUgZmlyc3QgdGlt ZSBpbgorCQkJICogZmluZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1cnNlKCkuCiAJCQkgKgotCQkJ ICogcHBydW5lLT5leGVjX3BydW5pbmdfc3RlcHMgaXMgc2V0IHRvIE5JTCB0byBwcmV2ZW50Ci0J CQkgKiBFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMoKSBmcm9tIGFjY2Vzc2luZyBhbiB1bmluaXRp YWxpemVkCi0JCQkgKiBwcHJ1bmUtPmV4ZWNfY29udGV4dCBkdXJpbmcgdGhlIGluaXRpYWwgcHJ1 bmluZyBieQotCQkJICogRXhlY0RvSW5pdGlhbFBydW5pbmcoKS4KLQkJCSAqCi0JCQkgKiBwcnVu ZXN0YXRlLT5kb19leGVjX3BydW5lIGlzIHNldCB0byBpbmRpY2F0ZSB3aGV0aGVyCi0JCQkgKiBQ YXJ0aXRpb25QcnVuZUluaXRFeGVjUHJ1bmluZygpIG5lZWRzIHRvIGJlIGNhbGxlZCBieQotCQkJ ICogRXhlY0luaXRQYXJ0aXRpb25QcnVuaW5nKCkuIFRoaXMgb3B0aW1pemF0aW9uIGF2b2lkcwot CQkJICogdW5uZWNlc3NhcnkgY3ljbGVzIHdoZW4gb25seSBpbml0aWFsIHBydW5pbmcgaXMgcmVx dWlyZWQuCisJCQkgKiBwcnVuZXN0YXRlLT5kb19leGVjX3BydW5lIGlzIHNldCB0byBpbmRpY2F0 ZSB3aGV0aGVyIHdlJ3JlCisJCQkgKiBhY3R1YWxseSBnb2luZyB0byBwZXJmb3JtIGV4ZWMgcHJ1 bmluZyB0byBpbmZvcm0KKwkJCSAqIEV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZygpIHdoZXRoZXIg aXQgc2hvdWxkIGZpeCB0aGUKKwkJCSAqIHN1YnBsYW5fbWFwIGFycmF5IGJhc2VkIG9uIHRoZSBy ZXN1bHQgb2YgaW5pdGlhbCBwcnVuaW5nCisJCQkgKiBhbmQgYWxzbyB0aGUgcGFyZW50IG5vZGUn cyBjb2RlIHRvIGFsbG93IGl0IHNldCB1cCBpdHMKKwkJCSAqIGRhdGEgc3RydWN0dXJlIGFjY29y ZGluZ2x5LgogCQkJICovCi0JCQlwcHJ1bmUtPmV4ZWNfcHJ1bmluZ19zdGVwcyA9IE5JTDsKKwkJ CXBwcnVuZS0+ZXhlY19wcnVuaW5nX3N0ZXBzID0gcGluZm8tPmV4ZWNfcHJ1bmluZ19zdGVwczsK KwkJCXBwcnVuZS0+ZXhlY19jb250ZXh0LmlzX3ZhbGlkID0gZmFsc2U7CiAJCQlpZiAocGluZm8t PmV4ZWNfcHJ1bmluZ19zdGVwcyAmJgogCQkJCSAhKGVjb250ZXh0LT5lY3h0X2VzdGF0ZS0+ZXNf dG9wX2VmbGFncyAmIEVYRUNfRkxBR19FWFBMQUlOX0dFTkVSSUMpKQogCQkJCXBydW5lc3RhdGUt PmRvX2V4ZWNfcHJ1bmUgPSB0cnVlOwogCisJCQkvKgorCQkJICogQWNjdW11bGF0ZSB0aGUgSURz IG9mIGFsbCBQQVJBTV9FWEVDIFBhcmFtcyBhZmZlY3RpbmcgdGhlCisJCQkgKiBwYXJ0aXRpb25p bmcgZGVjaXNpb25zIGF0IHRoaXMgcGxhbiBub2RlLgorCQkJICovCisJCQlwcnVuZXN0YXRlLT5l eGVjcGFyYW1pZHMgPSBibXNfYWRkX21lbWJlcnMocHJ1bmVzdGF0ZS0+ZXhlY3BhcmFtaWRzLAor CQkJCQkJCQkJCQkJCSAgIHBpbmZvLT5leGVjcGFyYW1pZHMpOworCiAJCQlqKys7CiAJCX0KIAkJ aSsrOwpAQCAtMjIwOCw2ICsyMjExLDggQEAgSW5pdFBhcnRpdGlvblBydW5lQ29udGV4dChQYXJ0 aXRpb25QcnVuZUNvbnRleHQgKmNvbnRleHQsCiAJCQl9CiAJCX0KIAl9CisKKwljb250ZXh0LT5p c192YWxpZCA9IHRydWU7CiB9CiAKIC8qCkBAIC0yMzI2LDg0ICsyMzMxLDYgQEAgUGFydGl0aW9u UHJ1bmVGaXhTdWJQbGFuTWFwKFBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGUsCiAJcGZy ZWUobmV3X3N1YnBsYW5faW5kZXhlcyk7CiB9CiAKLS8qCi0gKiBQYXJ0aXRpb25QcnVuZUluaXRF eGVjUHJ1bmluZwotICoJCUluaXRpYWxpemUgUGFydGl0aW9uUHJ1bmVTdGF0ZSBmb3IgZXhlYyBw cnVuaW5nLgotICovCi1zdGF0aWMgdm9pZAotUGFydGl0aW9uUHJ1bmVJbml0RXhlY1BydW5pbmco UGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8sCi0JCQkJCQkJICBQYXJ0aXRpb25QcnVuZVN0 YXRlICpwcnVuZXN0YXRlLAotCQkJCQkJCSAgUGxhblN0YXRlICpwbGFuc3RhdGUpCi17Ci0JRVN0 YXRlICplc3RhdGUgPSBwbGFuc3RhdGUtPnN0YXRlOwotCWludAkJaTsKLQlFeHByQ29udGV4dCAq ZWNvbnRleHQ7Ci0KLQkvKiBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKCkgbXVzdCBoYXZlIGlu aXRpYWxpemVkLiAqLwotCUFzc2VydChlc3RhdGUtPmVzX3BhcnRpdGlvbl9kaXJlY3RvcnkgIT0g TlVMTCk7Ci0KLQkvKiBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKCkgbXVzdCBoYXZlIHNldCB0 aGlzLiAqLwotCUFzc2VydChwcnVuZXN0YXRlLT5kb19leGVjX3BydW5lKTsKLQotCS8qCi0JICog Q3JlYXRlIEV4cHJDb250ZXh0IGlmIG5vdCBhbHJlYWR5IGRvbmUgZm9yIHRoZSBwbGFuc3RhdGUu ICBXZSBtYXkgbmVlZAotCSAqIGFuIGV4cHJlc3Npb24gY29udGV4dCB0byBldmFsdWF0ZSBwYXJ0 aXRpb24gZXhwcnMuCi0JICovCi0JRXhlY0Fzc2lnbkV4cHJDb250ZXh0KGVzdGF0ZSwgcGxhbnN0 YXRlKTsKLQllY29udGV4dCA9IHBsYW5zdGF0ZS0+cHNfRXhwckNvbnRleHQ7Ci0JZm9yIChpID0g MDsgaSA8IHBydW5lc3RhdGUtPm51bV9wYXJ0cHJ1bmVkYXRhOyBpKyspCi0JewotCQlMaXN0ICpw YXJ0cmVsX3BydW5laW5mb3MgPQotCQkJbGlzdF9udGhfbm9kZShMaXN0LCBwcnVuZWluZm8tPnBy dW5lX2luZm9zLCBpKTsKLQkJUGFydGl0aW9uUHJ1bmluZ0RhdGEgKnBydW5lZGF0YSA9IHBydW5l c3RhdGUtPnBhcnRwcnVuZWRhdGFbaV07Ci0JCWludAkJajsKLQotCQlmb3IgKGogPSAwOyBqIDwg cHJ1bmVkYXRhLT5udW1fcGFydHJlbHBydW5lZGF0YTsgaisrKQotCQl7Ci0JCQlQYXJ0aXRpb25l ZFJlbFBydW5lSW5mbyAqcGluZm8gPQotCQkJCWxpc3RfbnRoX25vZGUoUGFydGl0aW9uZWRSZWxQ cnVuZUluZm8sIHBhcnRyZWxfcHJ1bmVpbmZvcywgaik7Ci0JCQlQYXJ0aXRpb25lZFJlbFBydW5p bmdEYXRhICpwcHJ1bmUgPSAmcHJ1bmVkYXRhLT5wYXJ0cmVscHJ1bmVkYXRhW2pdOwotCQkJUmVs YXRpb24JcGFydHJlbCA9IHBwcnVuZS0+cGFydHJlbDsKLQkJCVBhcnRpdGlvbkRlc2MgcGFydGRl c2M7Ci0JCQlQYXJ0aXRpb25LZXkgcGFydGtleTsKLQotCQkJLyoKLQkJCSAqIE5vdGhpbmcgdG8g ZG8gaWYgdGhlcmUgYXJlIG5vIGV4ZWMgcHJ1bmluZyBzdGVwcywgYnV0IGRvIHNldAotCQkJICog cHBydW5lLT5leGVjX3BydW5pbmdfc3RlcHMsIGJlY2FzdWUKLQkJCSAqIGZpbmRfbWF0Y2hpbmdf c3VicGxhbnNfcmVjdXJzZSgpIGxvb2tzIGF0IGl0LgotCQkJICoKLQkJCSAqIEFsc28gc2tpcCBp ZiBkb2luZyBFWFBMQUlOIChHRU5FUklDX1BMQU4pLCBzaW5jZSBwYXJhbWV0ZXIKLQkJCSAqIHZh bHVlcyBtYXkgYmUgbWlzc2luZy4KLQkJCSAqLwotCQkJcHBydW5lLT5leGVjX3BydW5pbmdfc3Rl cHMgPSBwaW5mby0+ZXhlY19wcnVuaW5nX3N0ZXBzOwotCQkJaWYgKHBwcnVuZS0+ZXhlY19wcnVu aW5nX3N0ZXBzID09IE5JTCB8fAotCQkJCShlY29udGV4dC0+ZWN4dF9lc3RhdGUtPmVzX3RvcF9l ZmxhZ3MgJiBFWEVDX0ZMQUdfRVhQTEFJTl9HRU5FUklDKSkKLQkJCQljb250aW51ZTsKLQotCQkJ LyoKLQkJCSAqIFdlIGNhbiByZWx5IG9uIHRoZSBjb3BpZXMgb2YgdGhlIHBhcnRpdGlvbmVkIHRh YmxlJ3MgcGFydGl0aW9uCi0JCQkgKiBrZXkgYW5kIHBhcnRpdGlvbiBkZXNjcmlwdG9yIGFwcGVh cmluZyBpbiBpdHMgcmVsY2FjaGUgZW50cnksCi0JCQkgKiBiZWNhdXNlIHRoYXQgZW50cnkgd2ls bCBiZSBoZWxkIG9wZW4gYW5kIGxvY2tlZCBmb3IgdGhlCi0JCQkgKiBkdXJhdGlvbiBvZiB0aGlz IGV4ZWN1dG9yIHJ1bi4KLQkJCSAqLwotCQkJcGFydGtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9u S2V5KHBhcnRyZWwpOwotCQkJcGFydGRlc2MgPSBQYXJ0aXRpb25EaXJlY3RvcnlMb29rdXAoZXN0 YXRlLT5lc19wYXJ0aXRpb25fZGlyZWN0b3J5LAotCQkJCQkJCQkJCQkJcGFydHJlbCk7Ci0JCQlJ bml0UGFydGl0aW9uUHJ1bmVDb250ZXh0KCZwcHJ1bmUtPmV4ZWNfY29udGV4dCwKLQkJCQkJCQkJ CSAgcHBydW5lLT5leGVjX3BydW5pbmdfc3RlcHMsCi0JCQkJCQkJCQkgIHBhcnRkZXNjLCBwYXJ0 a2V5LCBwbGFuc3RhdGUsCi0JCQkJCQkJCQkgIGVjb250ZXh0KTsKLQotCQkJLyoKLQkJCSAqIEFj Y3VtdWxhdGUgdGhlIElEcyBvZiBhbGwgUEFSQU1fRVhFQyBQYXJhbXMgYWZmZWN0aW5nIHRoZQot CQkJICogcGFydGl0aW9uaW5nIGRlY2lzaW9ucyBhdCB0aGlzIHBsYW4gbm9kZS4KLQkJCSAqLwot CQkJcHJ1bmVzdGF0ZS0+ZXhlY3BhcmFtaWRzID0gYm1zX2FkZF9tZW1iZXJzKHBydW5lc3RhdGUt PmV4ZWNwYXJhbWlkcywKLQkJCQkJCQkJCQkJCQkgICBwaW5mby0+ZXhlY3BhcmFtaWRzKTsKLQkJ fQotCX0KLX0KLQogLyoKICAqIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucwogICoJCURldGVybWlu ZSB3aGljaCBzdWJwbGFucyBtYXRjaCB0aGUgcHJ1bmluZyBzdGVwcyBkZXRhaWxlZCBpbgpAQCAt MjQ0OSwxMiArMjM3NiwxNiBAQCBFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMoUGFydGl0aW9uUHJ1 bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKIAkJICogcmVjdXJzaW5nIHRvIG90aGVyIChsb3dlci1sZXZl bCkgcGFyZW50cyBhcyBuZWVkZWQuCiAJCSAqLwogCQlwcHJ1bmUgPSAmcHJ1bmVkYXRhLT5wYXJ0 cmVscHJ1bmVkYXRhWzBdOwotCQlmaW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UocHJ1bmVk YXRhLCBwcHJ1bmUsIGluaXRpYWxfcHJ1bmUsCisJCWZpbmRfbWF0Y2hpbmdfc3VicGxhbnNfcmVj dXJzZShwcnVuZXN0YXRlLT5wYXJlbnRfcGxhbiwKKwkJCQkJCQkJCSAgIHBydW5lZGF0YSwgcHBy dW5lLCBpbml0aWFsX3BydW5lLAogCQkJCQkJCQkJICAgJnJlc3VsdCk7CiAKIAkJLyogRXhwcmVz c2lvbiBldmFsIG1heSBoYXZlIHVzZWQgc3BhY2UgaW4gRXhwckNvbnRleHQgdG9vICovCi0JCWlm IChwcHJ1bmUtPmV4ZWNfcHJ1bmluZ19zdGVwcykKKwkJaWYgKHBwcnVuZS0+ZXhlY19jb250ZXh0 LmlzX3ZhbGlkKQorCQl7CisJCQlBc3NlcnQocHBydW5lLT5leGVjX3BydW5pbmdfc3RlcHMgIT0g TklMKTsKIAkJCVJlc2V0RXhwckNvbnRleHQocHBydW5lLT5leGVjX2NvbnRleHQuZXhwcmNvbnRl eHQpOworCQl9CiAJfQogCiAJLyogQWRkIGluIGFueSBzdWJwbGFucyB0aGF0IHBhcnRpdGlvbiBw cnVuaW5nIGRpZG4ndCBhY2NvdW50IGZvciAqLwpAQCAtMjQ3Nyw3ICsyNDA4LDggQEAgRXhlY0Zp bmRNYXRjaGluZ1N1YlBsYW5zKFBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGUsCiAgKiBB ZGRzIHZhbGlkIChub24tcHJ1bmFibGUpIHN1YnBsYW4gSURzIHRvICp2YWxpZHN1YnBsYW5zCiAg Ki8KIHN0YXRpYyB2b2lkCi1maW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UoUGFydGl0aW9u UHJ1bmluZ0RhdGEgKnBydW5lZGF0YSwKK2ZpbmRfbWF0Y2hpbmdfc3VicGxhbnNfcmVjdXJzZShQ bGFuU3RhdGUgKnBhcmVudF9wbGFuLAorCQkJCQkJCSAgIFBhcnRpdGlvblBydW5pbmdEYXRhICpw cnVuZWRhdGEsCiAJCQkJCQkJICAgUGFydGl0aW9uZWRSZWxQcnVuaW5nRGF0YSAqcHBydW5lLAog CQkJCQkJCSAgIGJvb2wgaW5pdGlhbF9wcnVuZSwKIAkJCQkJCQkgICBCaXRtYXBzZXQgKip2YWxp ZHN1YnBsYW5zKQpAQCAtMjQ5Nyw4ICsyNDI5LDMzIEBAIGZpbmRfbWF0Y2hpbmdfc3VicGxhbnNf cmVjdXJzZShQYXJ0aXRpb25QcnVuaW5nRGF0YSAqcHJ1bmVkYXRhLAogCQlwYXJ0c2V0ID0gZ2V0 X21hdGNoaW5nX3BhcnRpdGlvbnMoJnBwcnVuZS0+aW5pdGlhbF9jb250ZXh0LAogCQkJCQkJCQkJ CSAgcHBydW5lLT5pbml0aWFsX3BydW5pbmdfc3RlcHMpOwogCWVsc2UgaWYgKCFpbml0aWFsX3By dW5lICYmIHBwcnVuZS0+ZXhlY19wcnVuaW5nX3N0ZXBzKQorCXsKKwkJLyogSW5pdGlhbGl6ZSBl eGVjX2NvbnRleHQgaWYgbm90IGFscmVhZHkgZG9uZS4gKi8KKwkJaWYgKHVubGlrZWx5KCFwcHJ1 bmUtPmV4ZWNfY29udGV4dC5pc192YWxpZCkpCisJCXsKKwkJCUV4cHJDb250ZXh0CSAgICplY29u dGV4dDsKKwkJCUVTdGF0ZQkJICAgKmVzdGF0ZSA9IHBhcmVudF9wbGFuLT5zdGF0ZTsKKwkJCS8q IE11c3QgYWxsb2NhdGUgdGhlIG5lZWRlZCBzdHVmZiBpbiB0aGUgcXVlcnkgbGlmZXRpbWUgY29u dGV4dC4gKi8KKwkJCU1lbW9yeUNvbnRleHQgCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hU byhlc3RhdGUtPmVzX3F1ZXJ5X2N4dCk7CisJCQlSZWxhdGlvbgkJcGFydHJlbCA9IHBwcnVuZS0+ cGFydHJlbDsKKwkJCVBhcnRpdGlvbktleQlwYXJ0a2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25L ZXkocGFydHJlbCk7CisJCQlQYXJ0aXRpb25EZXNjCXBhcnRkZXNjID0gUGFydGl0aW9uRGlyZWN0 b3J5TG9va3VwKGVzdGF0ZS0+ZXNfcGFydGl0aW9uX2RpcmVjdG9yeSwKKwkJCQkJCQkJCQkJCQkJ CQlwYXJ0cmVsKTsKKworCQkJaWYgKHBhcmVudF9wbGFuLT5wc19FeHByQ29udGV4dCA9PSBOVUxM KQorCQkJCUV4ZWNBc3NpZ25FeHByQ29udGV4dChlc3RhdGUsIHBhcmVudF9wbGFuKTsKKwkJCWVj b250ZXh0ID0gcGFyZW50X3BsYW4tPnBzX0V4cHJDb250ZXh0OworCisJCQlJbml0UGFydGl0aW9u UHJ1bmVDb250ZXh0KCZwcHJ1bmUtPmV4ZWNfY29udGV4dCwKKwkJCQkJCQkJCSAgcHBydW5lLT5l eGVjX3BydW5pbmdfc3RlcHMsCisJCQkJCQkJCQkgIHBhcnRkZXNjLCBwYXJ0a2V5LCBwYXJlbnRf cGxhbiwKKwkJCQkJCQkJCSAgZWNvbnRleHQpOworCisJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8o b2xkY3h0KTsKKwkJfQogCQlwYXJ0c2V0ID0gZ2V0X21hdGNoaW5nX3BhcnRpdGlvbnMoJnBwcnVu ZS0+ZXhlY19jb250ZXh0LAogCQkJCQkJCQkJCSAgcHBydW5lLT5leGVjX3BydW5pbmdfc3RlcHMp OworCX0KIAllbHNlCiAJCXBhcnRzZXQgPSBwcHJ1bmUtPnByZXNlbnRfcGFydHM7CiAKQEAgLTI1 MTQsNyArMjQ3MSw4IEBAIGZpbmRfbWF0Y2hpbmdfc3VicGxhbnNfcmVjdXJzZShQYXJ0aXRpb25Q cnVuaW5nRGF0YSAqcHJ1bmVkYXRhLAogCQkJaW50CQkJcGFydGlkeCA9IHBwcnVuZS0+c3VicGFy dF9tYXBbaV07CiAKIAkJCWlmIChwYXJ0aWR4ID49IDApCi0JCQkJZmluZF9tYXRjaGluZ19zdWJw bGFuc19yZWN1cnNlKHBydW5lZGF0YSwKKwkJCQlmaW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vy c2UocGFyZW50X3BsYW4sCisJCQkJCQkJCQkJCSAgIHBydW5lZGF0YSwKIAkJCQkJCQkJCQkJICAg JnBydW5lZGF0YS0+cGFydHJlbHBydW5lZGF0YVtwYXJ0aWR4XSwKIAkJCQkJCQkJCQkJICAgaW5p dGlhbF9wcnVuZSwgdmFsaWRzdWJwbGFucyk7CiAJCQllbHNlCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVj UGFydGl0aW9uLmgKaW5kZXggMmY0NWFjMWNjOC4uZWY2ZDhiMmQ0OCAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1 dG9yL2V4ZWNQYXJ0aXRpb24uaApAQCAtMTIyLDYgKzEyMiw3IEBAIHR5cGVkZWYgc3RydWN0IFBh cnRpdGlvblBydW5lU3RhdGUKIAlib29sCQlkb19pbml0aWFsX3BydW5lOwogCWJvb2wJCWRvX2V4 ZWNfcHJ1bmU7CiAJaW50CQkJbnVtX3BhcnRwcnVuZWRhdGE7CisJUGxhblN0YXRlICAqcGFyZW50 X3BsYW47CiAJUGFydGl0aW9uUHJ1bmluZ0RhdGEgKnBhcnRwcnVuZWRhdGFbRkxFWElCTEVfQVJS QVlfTUVNQkVSXTsKIH0gUGFydGl0aW9uUHJ1bmVTdGF0ZTsKIApkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5oIGIvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5n L3BhcnRwcnVuZS5oCmluZGV4IGM1MzZhMWZlMTkuLmI3ZjQ4ZWVmY2MgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJ0 aXRpb25pbmcvcGFydHBydW5lLmgKQEAgLTI2LDYgKzI2LDcgQEAgc3RydWN0IFJlbE9wdEluZm87 CiAgKgkJU3RvcmVzIGluZm9ybWF0aW9uIG5lZWRlZCBhdCBydW50aW1lIGZvciBwcnVuaW5nIGNv bXB1dGF0aW9ucwogICoJCXJlbGF0ZWQgdG8gYSBzaW5nbGUgcGFydGl0aW9uZWQgdGFibGUuCiAg KgorICogaXNfdmFsaWQJCQlIYXMgdGhlIGluZm9ybWF0aW9uIGluIHRoaXMgc3RydWN0IGJlZW4g aW5pdGlhbGl6ZWQ/CiAgKiBzdHJhdGVneQkJCVBhcnRpdGlvbiBzdHJhdGVneSwgZS5nLiBMSVNU LCBSQU5HRSwgSEFTSC4KICAqIHBhcnRuYXR0cwkJTnVtYmVyIG9mIGNvbHVtbnMgaW4gdGhlIHBh cnRpdGlvbiBrZXkuCiAgKiBucGFydHMJCQlOdW1iZXIgb2YgcGFydGl0aW9ucyBpbiB0aGlzIHBh cnRpdGlvbmVkIHRhYmxlLgpAQCAtNDgsNiArNDksNyBAQCBzdHJ1Y3QgUmVsT3B0SW5mbzsKICAq LwogdHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uUHJ1bmVDb250ZXh0CiB7CisJYm9vbAkJaXNfdmFs aWQ7CiAJY2hhcgkJc3RyYXRlZ3k7CiAJaW50CQkJcGFydG5hdHRzOwogCWludAkJCW5wYXJ0czsK LS0gCjIuNDMuMAoK --0000000000007b8704062277ce88 Content-Type: application/octet-stream; name="v55-0002-Perform-runtime-initial-pruning-outside-ExecInit.patch" Content-Disposition: attachment; filename="v55-0002-Perform-runtime-initial-pruning-outside-ExecInit.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m1990ptw1 RnJvbSA4MDgxMjY1MTdkNGIwMDE4ZWU5NmRlMWJhMjhlYTY2NDU2NmZkMWFhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFRodSwgMTIgU2VwIDIwMjQgMTU6NDQ6NDMgKzA5MDAKU3ViamVjdDogW1BBVENIIHY1 NSAyLzVdIFBlcmZvcm0gcnVudGltZSBpbml0aWFsIHBydW5pbmcgb3V0c2lkZQogRXhlY0luaXRO b2RlKCkKClRoaXMgY29tbWl0IGZvbGxvd3MgdXAgb24gdGhlIHByZXZpb3VzIGNoYW5nZSB0aGF0 IG1vdmVkClBhcnRpdGlvblBydW5lSW5mb3Mgb3V0IG9mIGluZGl2aWR1YWwgcGxhbiBub2RlcyBp bnRvIGEgbGlzdCBpbgpQbGFubmVkU3RtdC4gSXQgbW92ZXMgdGhlIGluaXRpYWxpemF0aW9uIG9m IFBhcnRpdGlvblBydW5lU3RhdGVzCmFuZCBydW50aW1lIGluaXRpYWwgcHJ1bmluZyBvdXQgb2Yg RXhlY0luaXROb2RlKCkgYW5kIGludG8gYSBuZXcKcm91dGluZSwgRXhlY0RvSW5pdGlhbFBydW5p bmcoKSwgd2hpY2ggaXMgY2FsbGVkIGJ5IEluaXRQbGFuKCkKYmVmb3JlIEV4ZWNJbml0Tm9kZSgp IGlzIGludm9rZWQgb24gdGhlIG1haW4gcGxhbiB0cmVlIGFuZCBzdWJwbGFucy4KCkV4ZWNEb0lu aXRpYWxQcnVuaW5nKCkgc3RvcmVzIHRoZSBQYXJ0aXRpb25QcnVuZVN0YXRlcyB0aGF0IGl0CmNy ZWF0ZXMgdG8gZG8gdGhlIGluaXRpYWwgcHJ1bmluZyB0byB1c2UgZHVyaW5nIGV4ZWMgcHJ1bmlu bmcgaW4gYQpsaXN0IG1hdGNoaW5nIHRoZSBsZW5ndGggb2YgZXNfcGFydF9wcnVuZV9pbmZvcyAo d2hpY2ggaG9sZHMgdGhlClBhcnRpdGlvblBydW5lSW5mb3MgZnJvbSBQbGFubmVkU3RtdCksIGFs bG93aW5nIGJvdGggbGlzdHMgdG8gc2hhcmUKdGhlIHNhbWUgaW5kZXguIEl0IGFsc28gc2F2ZXMg dGhlIGluaXRpYWwgcHJ1bmluZyByZXN1bHQgLS0gYQpiaXRtYXBzZXQgb2YgaW5kZXhlcyBmb3Ig c3Vydml2aW5nIGNoaWxkIHN1Ym5vZGVzIC0tIGluIGEgc2ltaWxhcmx5CmluZGV4ZWQgbGlzdC4K CldoaWxlIHRoZSBpbml0aWFsIHBydW5pbmcgaXMgZG9uZSBlYXJsaWVyLCB0aGUgZXhlY3V0aW9u IHBydW5pbmcKY29udGV4dCBpbmZvcm1hdGlvbiAobmVlZGVkIGZvciBydW50aW1lIHBydW5pbmcp IGlzIGluaXRpYWxpemVkCmxhdGVyIGR1cmluZyBFeGVjSW5pdE5vZGUoKSBmb3IgdGhlIHBhcmVu dCBwbGFuIG5vZGUsIGFzIGl0IHJlcXVpcmVzCmFjY2VzcyB0byB0aGUgcGFyZW50IG5vZGUncyBQ bGFuU3RhdGUgc3RydWN0LgotLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAg ICB8ICA1NSArKysrKysrKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jIHwg MTc5ICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLQogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhl Y1BhcnRpdGlvbi5oIHwgICA2ICsKIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgICAg ICB8ICAgMiArCiA0IGZpbGVzIGNoYW5nZWQsIDIwMiBpbnNlcnRpb25zKCspLCA0MCBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwppbmRleCBlNjE5N2MxNjVlLi4xOTk0MTEyYjJl IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJj b21tYW5kcy9tYXR2aWV3LmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdHJpZ2dlci5oIgogI2luY2x1 ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCisjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY1BhcnRpdGlv bi5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL25vZGVTdWJwbGFuLmgiCiAjaW5jbHVkZSAiZm9yZWln bi9mZHdhcGkuaCIKICNpbmNsdWRlICJtYi9wZ193Y2hhci5oIgpAQCAtODE4LDYgKzgxOSw1NCBA QCBFeGVjQ2hlY2tYYWN0UmVhZE9ubHkoUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10KQogCQlQcmV2 ZW50Q29tbWFuZElmUGFyYWxsZWxNb2RlKENyZWF0ZUNvbW1hbmROYW1lKChOb2RlICopIHBsYW5u ZWRzdG10KSk7CiB9CiAKKy8qCisgKiBFeGVjRG9Jbml0aWFsUHJ1bmluZworICoJCVBlcmZvcm0g cnVudGltZSAiaW5pdGlhbCIgcHJ1bmluZywgaWYgbmVjZXNzYXJ5LCB0byBkZXRlcm1pbmUgdGhl IHNldAorICoJCW9mIGNoaWxkIHN1Ym5vZGVzIHRoYXQgbmVlZCB0byBiZSBpbml0aWFsaXplZCBk dXJpbmcgRXhlY0luaXROb2RlKCkKKyAqCQlmb3IgcGxhbiBub2RlcyB0aGF0IHN1cHBvcnQgcGFy dGl0aW9uIHBydW5pbmcuCisgKgorICogRm9yIGVhY2ggUGFydGl0aW9uUHJ1bmVJbmZvIGluIGVz dGF0ZS0+ZXNfcGFydF9wcnVuZV9pbmZvcywgdGhpcyBmdW5jdGlvbgorICogY3JlYXRlcyBhIFBh cnRpdGlvblBydW5lU3RhdGUgKGV2ZW4gaWYgbm8gaW5pdGlhbCBwcnVuaW5nIGlzIGRvbmUpIGFu ZCBhZGRzCisgKiBpdCB0byBlc19wYXJ0X3BydW5lX3N0YXRlcy4gRm9yIFBhcnRpdGlvblBydW5l SW5mbyBlbnRyaWVzIHRoYXQgaW5jbHVkZQorICogaW5pdGlhbCBwcnVuaW5nIHN0ZXBzLCB0aGUg cmVzdWx0IG9mIHRob3NlIHN0ZXBzIGlzIHNhdmVkIGFzIGEgYml0bWFwc2V0CisgKiBvZiBpbmRl eGVzIHJlcHJlc2VudGluZyBjaGlsZCBzdWJub2RlcyB0aGF0IGFyZSAidmFsaWQiIGFuZCBzaG91 bGQgYmUKKyAqIGluaXRpYWxpemVkIGZvciBleGVjdXRpb24uCisgKi8KK3N0YXRpYyB2b2lkCitF eGVjRG9Jbml0aWFsUHJ1bmluZyhFU3RhdGUgKmVzdGF0ZSkKK3sKKwlMaXN0Q2VsbCAqbGM7CisK Kwlmb3JlYWNoKGxjLCBlc3RhdGUtPmVzX3BhcnRfcHJ1bmVfaW5mb3MpCisJeworCQlQYXJ0aXRp b25QcnVuZUluZm8gKnBydW5laW5mbyA9IGxmaXJzdF9ub2RlKFBhcnRpdGlvblBydW5lSW5mbywg bGMpOworCQlQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlOworCQlCaXRtYXBzZXQgKnZh bGlkc3VicGxhbnMgPSBOVUxMOworCisJCS8qCisJCSAqIENyZWF0ZSB0aGUgd29ya2luZyBkYXRh IHN0cnVjdHVyZSBmb3IgcHJ1bmluZywgYW5kIHNhdmUgaXQgZm9yIHVzZQorCQkgKiBsYXRlciBp biBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoKSwgd2hpY2ggd2lsbCBiZSBjYWxsZWQgYnkgdGhl CisJCSAqIHBhcmVudCBwbGFuIG5vZGUncyBFeGVjSW5pdCogZnVuY3Rpb24uCisJCSAqLworCQlw cnVuZXN0YXRlID0gRXhlY0NyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoZXN0YXRlLCBwcnVuZWlu Zm8pOworCQllc3RhdGUtPmVzX3BhcnRfcHJ1bmVfc3RhdGVzID0gbGFwcGVuZChlc3RhdGUtPmVz X3BhcnRfcHJ1bmVfc3RhdGVzLAorCQkJCQkJCQkJCQkgICBwcnVuZXN0YXRlKTsKKworCQkvKgor CQkgKiBQZXJmb3JtIGFuIGluaXRpYWwgcGFydGl0aW9uIHBydW5pbmcgcGFzcywgaWYgbmVjZXNz YXJ5LCBhbmQgc2F2ZQorCQkgKiB0aGUgYml0bWFwc2V0IG9mIHZhbGlkIHN1YnBsYW5zIGZvciB1 c2UgaW4KKwkJICogRXhlY0luaXRQYXJ0aXRpb25QcnVuaW5nKCkuICBJZiBubyBpbml0aWFsIHBy dW5pbmcgaXMgcGVyZm9ybWVkLCB3ZQorCQkgKiBzdGlsbCBzdG9yZSBhIE5VTEwgdG8gZW5zdXJl IHRoYXQgZXNfcGFydF9wcnVuZV9yZXN1bHRzIGlzIHRoZSBzYW1lCisJCSAqIGxlbmd0aCBhcyBl c19wYXJ0X3BydW5lX2luZm9zLiAgVGhpcyBlbnN1cmVzIHRoYXQKKwkJICogRXhlY0luaXRQYXJ0 aXRpb25QcnVuaW5nKCkgY2FuIHVzZSB0aGUgc2FtZSBpbmRleCB0byBsb2NhdGUgdGhlCisJCSAq IHJlc3VsdC4KKwkJICovCisJCWlmIChwcnVuZXN0YXRlLT5kb19pbml0aWFsX3BydW5lKQorCQkJ dmFsaWRzdWJwbGFucyA9IEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhwcnVuZXN0YXRlLCB0cnVl KTsKKwkJZXN0YXRlLT5lc19wYXJ0X3BydW5lX3Jlc3VsdHMgPSBsYXBwZW5kKGVzdGF0ZS0+ZXNf cGFydF9wcnVuZV9yZXN1bHRzLAorCQkJCQkJCQkJCQkJdmFsaWRzdWJwbGFucyk7CisJfQorfQog CiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCiAgKgkJSW5pdFBsYW4KQEAgLTg1MCw3ICs4OTksMTMgQEAgSW5pdFBsYW4o UXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJRXhlY0luaXRSYW5nZVRhYmxlKGVz dGF0ZSwgcmFuZ2VUYWJsZSwgcGxhbm5lZHN0bXQtPnBlcm1JbmZvcyk7CiAKIAllc3RhdGUtPmVz X3BsYW5uZWRzdG10ID0gcGxhbm5lZHN0bXQ7CisKKwkvKgorCSAqIFBlcmZvcm0gcnVudGltZSAi aW5pdGlhbCIgcHJ1bmluZyB0byBkZXRlcm1pbmUgdGhlIHBsYW4gbm9kZXMgdGhhdCB3aWxsCisJ ICogbm90IGJlIGV4ZWN1dGVkLgorCSAqLwogCWVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9pbmZvcyA9 IHBsYW5uZWRzdG10LT5wYXJ0UHJ1bmVJbmZvczsKKwlFeGVjRG9Jbml0aWFsUHJ1bmluZyhlc3Rh dGUpOwogCiAJLyoKIAkgKiBOZXh0LCBidWlsZCB0aGUgRXhlY1Jvd01hcmsgYXJyYXkgZnJvbSB0 aGUgUGxhblJvd01hcmsocyksIGlmIGFueS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNQYXJ0aXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24u YwppbmRleCBlYzczMDY3NGYyLi4zYzdjNjMxODY3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjUGFydGl0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Bh cnRpdGlvbi5jCkBAIC0xODEsOCArMTgxLDYgQEAgc3RhdGljIGNoYXIgKkV4ZWNCdWlsZFNsb3RQ YXJ0aXRpb25LZXlEZXNjcmlwdGlvbihSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkJCQkgIGludCBt YXhmaWVsZGxlbik7CiBzdGF0aWMgTGlzdCAqYWRqdXN0X3BhcnRpdGlvbl9jb2xub3MoTGlzdCAq Y29sbm9zLCBSZXN1bHRSZWxJbmZvICpsZWFmX3BhcnRfcnJpKTsKIHN0YXRpYyBMaXN0ICphZGp1 c3RfcGFydGl0aW9uX2NvbG5vc191c2luZ19tYXAoTGlzdCAqY29sbm9zLCBBdHRyTWFwICphdHRy TWFwKTsKLXN0YXRpYyBQYXJ0aXRpb25QcnVuZVN0YXRlICpDcmVhdGVQYXJ0aXRpb25QcnVuZVN0 YXRlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAotCQkJCQkJCQkJCQkJCSAgUGFydGl0aW9uUHJ1bmVJ bmZvICpwcnVuZWluZm8pOwogc3RhdGljIHZvaWQgSW5pdFBhcnRpdGlvblBydW5lQ29udGV4dChQ YXJ0aXRpb25QcnVuZUNvbnRleHQgKmNvbnRleHQsCiAJCQkJCQkJCQkgIExpc3QgKnBydW5pbmdf c3RlcHMsCiAJCQkJCQkJCQkgIFBhcnRpdGlvbkRlc2MgcGFydGRlc2MsCkBAIC0xOTIsNiArMTkw LDkgQEAgc3RhdGljIHZvaWQgSW5pdFBhcnRpdGlvblBydW5lQ29udGV4dChQYXJ0aXRpb25QcnVu ZUNvbnRleHQgKmNvbnRleHQsCiBzdGF0aWMgdm9pZCBQYXJ0aXRpb25QcnVuZUZpeFN1YlBsYW5N YXAoUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKIAkJCQkJCQkJCQlCaXRtYXBzZXQg KmluaXRpYWxseV92YWxpZF9zdWJwbGFucywKIAkJCQkJCQkJCQlpbnQgbl90b3RhbF9zdWJwbGFu cyk7CitzdGF0aWMgdm9pZCBQYXJ0aXRpb25QcnVuZUluaXRFeGVjUHJ1bmluZyhQYXJ0aXRpb25Q cnVuZUluZm8gKnBydW5laW5mbywKKwkJCQkJCQkJCQkgIFBhcnRpdGlvblBydW5lU3RhdGUgKnBy dW5lc3RhdGUsCisJCQkJCQkJCQkJICBQbGFuU3RhdGUgKnBsYW5zdGF0ZSk7CiBzdGF0aWMgdm9p ZCBmaW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UoUGFydGl0aW9uUHJ1bmluZ0RhdGEgKnBy dW5lZGF0YSwKIAkJCQkJCQkJCQkgICBQYXJ0aXRpb25lZFJlbFBydW5pbmdEYXRhICpwcHJ1bmUs CiAJCQkJCQkJCQkJICAgYm9vbCBpbml0aWFsX3BydW5lLApAQCAtMTc4MywyMCArMTc4NCwyNiBA QCBhZGp1c3RfcGFydGl0aW9uX2NvbG5vc191c2luZ19tYXAoTGlzdCAqY29sbm9zLCBBdHRyTWFw ICphdHRyTWFwKQogCiAvKgogICogRXhlY0luaXRQYXJ0aXRpb25QcnVuaW5nCi0gKgkJSW5pdGlh bGl6ZSBkYXRhIHN0cnVjdHVyZSBuZWVkZWQgZm9yIHJ1bi10aW1lIHBhcnRpdGlvbiBwcnVuaW5n IGFuZAotICoJCWRvIGluaXRpYWwgcHJ1bmluZyBpZiBuZWVkZWQKKyAqCQlJbml0aWFsaXplIHRo ZSBkYXRhIHN0cnVjdHVyZXMgbmVlZGVkIGZvciBydW50aW1lICJleGVjIiBwYXJ0aXRpb24KKyAq CQlwcnVuaW5nIGFuZCByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbml0aWFsIHBydW5pbmcsIGlmIGF2 YWlsYWJsZS4KICAqCiAgKiAncm9vdF9wYXJlbnRfcmVsaWRzJyBpZGVudGlmaWVzIHRoZSByZWxh dGlvbiB0byB3aGljaCBib3RoIHRoZSBwYXJlbnQgcGxhbgotICogYW5kIHRoZSBQYXJ0aXRpb25Q cnVuZUluZm8gZ2l2ZW4gYnkgJ3BhcnRfcHJ1bmVfaW5kZXgnIGJlbG9uZy4KKyAqIGFuZCB0aGUg UGFydGl0aW9uUHJ1bmVJbmZvIGFzc29jaWF0ZWQgd2l0aCAncGFydF9wcnVuZV9pbmRleCcgYmVs b25nLgogICoKLSAqIE9uIHJldHVybiwgKmluaXRpYWxseV92YWxpZF9zdWJwbGFucyBpcyBhc3Np Z25lZCB0aGUgc2V0IG9mIGluZGV4ZXMgb2YKLSAqIGNoaWxkIHN1YnBsYW5zIHRoYXQgbXVzdCBi ZSBpbml0aWFsaXplZCBhbG9uZyB3aXRoIHRoZSBwYXJlbnQgcGxhbiBub2RlLgotICogSW5pdGlh bCBwcnVuaW5nIGlzIHBlcmZvcm1lZCBoZXJlIGlmIG5lZWRlZCBhbmQgaW4gdGhhdCBjYXNlIG9u bHkgdGhlCi0gKiBzdXJ2aXZpbmcgc3VicGxhbnMnIGluZGV4ZXMgYXJlIGFkZGVkLgorICogVGhl IFBhcnRpdGlvblBydW5lU3RhdGUgd291bGQgaGF2ZSBiZWVuIGNyZWF0ZWQgYnkgRXhlY0RvSW5p dGlhbFBydW5pbmcoKQorICogYW5kIHN0b3JlZCBhcyB0aGUgcGFydF9wcnVuZV9pbmRleCd0aCBl bGVtZW50IG9mIEVTdGF0ZS5lc19wYXJ0X3BydW5lX3N0YXRlcy4KKyAqIEhlcmUsIHdlIGluaXRp YWxpemUgb25seSB0aGUgUGFydGl0aW9uUHJ1bmVDb250ZXh0IG5lY2Vzc2FyeSBmb3IgZXhlY3V0 aW9uCisgKiBwcnVuaW5nLgogICoKLSAqIElmIHN1YnBsYW5zIGFyZSBpbmRlZWQgcHJ1bmVkLCBz dWJwbGFuX21hcCBhcnJheXMgY29udGFpbmVkIGluIHRoZSByZXR1cm5lZAotICogUGFydGl0aW9u UHJ1bmVTdGF0ZSBhcmUgcmUtc2VxdWVuY2VkIHRvIG5vdCBjb3VudCB0aG9zZSwgdGhvdWdoIG9u bHkgaWYgdGhlCi0gKiBtYXBzIHdpbGwgYmUgbmVlZGVkIGZvciBzdWJzZXF1ZW50IGV4ZWN1dGlv biBwcnVuaW5nIHBhc3Nlcy4KKyAqIE9uIHJldHVybiwgKmluaXRpYWxseV92YWxpZF9zdWJwbGFu cyBpcyBhc3NpZ25lZCB0aGUgc2V0IG9mIGluZGV4ZXMgb2YgY2hpbGQKKyAqIHN1YnBsYW5zIHRo YXQgbXVzdCBiZSBpbml0aWFsaXplZCBhbG9uZ3NpZGUgdGhlIHBhcmVudCBwbGFuIG5vZGUuIElu aXRpYWwKKyAqIHBydW5pbmcgd291bGQgaGF2ZSBiZWVuIHBlcmZvcm1lZCBieSBFeGVjRG9Jbml0 aWFsUHJ1bmluZygpIGlmIG5lY2Vzc2FyeSwKKyAqIGFuZCB0aGUgYml0bWFwc2V0IG9mIHN1cnZp dmluZyBzdWJwbGFucycgaW5kZXhlcyB3b3VsZCBoYXZlIGJlZW4gc3RvcmVkIGFzCisgKiB0aGUg cGFydF9wcnVuZV9pbmRleCd0aCBlbGVtZW50IG9mIEVTdGF0ZS5lc19wYXJ0X3BydW5lX3Jlc3Vs dHMuCisgKgorICogSWYgc3VicGxhbnMgYXJlIHBydW5lZCwgdGhlIHN1YnBsYW5fbWFwIGFycmF5 cyBpbiB0aGUgcmV0dXJuZWQKKyAqIFBhcnRpdGlvblBydW5lU3RhdGUgYXJlIHJlLXNlcXVlbmNl ZCB0byBleGNsdWRlIHRob3NlIHN1YnBsYW5zLCBidXQgb25seSBpZgorICogdGhlIG1hcHMgd2ls bCBiZSBuZWVkZWQgZm9yIHN1YnNlcXVlbnQgZXhlY3V0aW9uIHBydW5pbmcgcGFzc2VzLgogICov CiBQYXJ0aXRpb25QcnVuZVN0YXRlICoKIEV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZyhQbGFuU3Rh dGUgKnBsYW5zdGF0ZSwKQEAgLTE4MjEsMTcgKzE4MjgsMjEgQEAgRXhlY0luaXRQYXJ0aXRpb25Q cnVuaW5nKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAogCQkJCQkJCQkgICBibXNUb1N0cmluZyhyb290 X3BhcmVudF9yZWxpZHMpLAogCQkJCQkJCQkgICBibXNUb1N0cmluZyhwcnVuZWluZm8tPnJvb3Rf cGFyZW50X3JlbGlkcykpKTsKIAotCS8qIFdlIG1heSBuZWVkIGFuIGV4cHJlc3Npb24gY29udGV4 dCB0byBldmFsdWF0ZSBwYXJ0aXRpb24gZXhwcnMgKi8KLQlFeGVjQXNzaWduRXhwckNvbnRleHQo ZXN0YXRlLCBwbGFuc3RhdGUpOwotCi0JLyogQ3JlYXRlIHRoZSB3b3JraW5nIGRhdGEgc3RydWN0 dXJlIGZvciBwcnVuaW5nICovCi0JcHJ1bmVzdGF0ZSA9IENyZWF0ZVBhcnRpdGlvblBydW5lU3Rh dGUocGxhbnN0YXRlLCBwcnVuZWluZm8pOwotCiAJLyoKLQkgKiBQZXJmb3JtIGFuIGluaXRpYWwg cGFydGl0aW9uIHBydW5lIHBhc3MsIGlmIHJlcXVpcmVkLgorCSAqIEV4ZWNEb0luaXRpYWxQcnVu aW5nKCkgbXVzdCBoYXZlIGluaXRpYWxpemVkIHRoZSBQYXJ0aXRpb25QcnVuZVN0YXRlIHRvCisJ ICogcGVyZm9ybSB0aGUgaW5pdGlhbCBwcnVuaW5nLiAgTm93IHdlIHNpbXBseSBuZWVkIHRvIGlu aXRpYWxpemUgdGhlCisJICogY29udGV4dCBpbmZvcm1hdGlvbiBmb3IgZXhlYyBwcnVuaW5nLgog CSAqLworCXBydW5lc3RhdGUgPSBsaXN0X250aChlc3RhdGUtPmVzX3BhcnRfcHJ1bmVfc3RhdGVz LCBwYXJ0X3BydW5lX2luZGV4KTsKKwlBc3NlcnQocHJ1bmVzdGF0ZSAhPSBOVUxMKTsKKwlpZiAo cHJ1bmVzdGF0ZS0+ZG9fZXhlY19wcnVuZSkKKwkJUGFydGl0aW9uUHJ1bmVJbml0RXhlY1BydW5p bmcocHJ1bmVpbmZvLCBwcnVuZXN0YXRlLCBwbGFuc3RhdGUpOworCisJLyogVXNlIHRoZSByZXN1 bHQgb2YgaW5pdGlhbCBwcnVuaW5nIGRvbmUgYnkgRXhlY0RvSW5pdGlhbFBydW5pbmcoKS4gKi8K IAlpZiAocHJ1bmVzdGF0ZS0+ZG9faW5pdGlhbF9wcnVuZSkKLQkJKmluaXRpYWxseV92YWxpZF9z dWJwbGFucyA9IEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhwcnVuZXN0YXRlLCB0cnVlKTsKKwkJ KmluaXRpYWxseV92YWxpZF9zdWJwbGFucyA9IGxpc3RfbnRoX25vZGUoQml0bWFwc2V0LAorCQkJ CQkJCQkJCQkJICBlc3RhdGUtPmVzX3BhcnRfcHJ1bmVfcmVzdWx0cywKKwkJCQkJCQkJCQkJCSAg cGFydF9wcnVuZV9pbmRleCk7CiAJZWxzZQogCXsKIAkJLyogTm8gcHJ1bmluZywgc28gd2UnbGwg bmVlZCB0byBpbml0aWFsaXplIGFsbCBzdWJwbGFucyAqLwpAQCAtMTg3NywxNiArMTg4OCwyMyBA QCBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoUGxhblN0YXRlICpwbGFuc3RhdGUsCiAgKiBzdG9y ZWQgaW4gZWFjaCBQYXJ0aXRpb25lZFJlbFBydW5pbmdEYXRhIGNhbiBiZSByZS11c2VkIGVhY2gg dGltZSB3ZQogICogcmUtZXZhbHVhdGUgd2hpY2ggcGFydGl0aW9ucyBtYXRjaCB0aGUgcHJ1bmlu ZyBzdGVwcyBwcm92aWRlZCBpbiBlYWNoCiAgKiBQYXJ0aXRpb25lZFJlbFBydW5lSW5mby4KKyAq CisgKiBOb3RlIHRoYXQgd2Ugb25seSBpbml0aWFsaXplIHRoZSBQYXJ0aXRpb25QcnVuZUNvbnRl eHQgKHdoaWNoIGlzIHBsYWNlZCBpbnRvCisgKiBlYWNoIFBhcnRpdGlvbmVkUmVsUHJ1bmluZ0Rh dGEpIGZvciBpbml0aWFsIHBydW5pbmcgaGVyZS4gRXhlY3V0aW9uIHBydW5pbmcKKyAqIHJlcXVp cmVzIGFjY2VzcyB0byB0aGUgcGFyZW50IHBsYW4gbm9kZSdzIFBsYW5TdGF0ZSwgd2hpY2ggaXMg bm90IGF2YWlsYWJsZQorICogd2hlbiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIEV4ZWNE b0luaXRpYWxQcnVuaW5nKCksIHNvIGl0IGlzCisgKiBpbml0aWFsaXplZCBsYXRlciBkdXJpbmcg RXhlY0luaXRQYXJ0aXRpb25QcnVuaW5nKCkgYnkgY2FsbGluZworICogUGFydGl0aW9uUHJ1bmVJ bml0RXhlY1BydW5pbmcoKS4KICAqLwotc3RhdGljIFBhcnRpdGlvblBydW5lU3RhdGUgKgotQ3Jl YXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgUGFydGl0aW9uUHJ1 bmVJbmZvICpwcnVuZWluZm8pCitQYXJ0aXRpb25QcnVuZVN0YXRlICoKK0V4ZWNDcmVhdGVQYXJ0 aXRpb25QcnVuZVN0YXRlKEVTdGF0ZSAqZXN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5l aW5mbykKIHsKLQlFU3RhdGUJICAgKmVzdGF0ZSA9IHBsYW5zdGF0ZS0+c3RhdGU7CiAJUGFydGl0 aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZTsKIAlpbnQJCQluX3BhcnRfaGllcmFyY2hpZXM7CiAJ TGlzdENlbGwgICAqbGM7CiAJaW50CQkJaTsKLQlFeHByQ29udGV4dCAqZWNvbnRleHQgPSBwbGFu c3RhdGUtPnBzX0V4cHJDb250ZXh0OworCS8qIFdlIG1heSBuZWVkIGFuIGV4cHJlc3Npb24gY29u dGV4dCB0byBldmFsdWF0ZSBwYXJ0aXRpb24gZXhwcnMgKi8KKwlFeHByQ29udGV4dCAqZWNvbnRl eHQgPSBDcmVhdGVFeHByQ29udGV4dChlc3RhdGUpOwogCiAJLyogRm9yIGRhdGEgcmVhZGluZywg ZXhlY3V0b3IgYWx3YXlzIGluY2x1ZGVzIGRldGFjaGVkIHBhcnRpdGlvbnMgKi8KIAlpZiAoZXN0 YXRlLT5lc19wYXJ0aXRpb25fZGlyZWN0b3J5ID09IE5VTEwpCkBAIC0xOTc0LDYgKzE5OTIsNyBA QCBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBQYXJ0aXRp b25QcnVuZUluZm8gKnBydW5laW5mbykKIAkJCSAqIHNldCB0byAtMSwgYXMgaWYgdGhleSB3ZXJl IHBydW5lZC4gIEJ5IGNvbnN0cnVjdGlvbiwgYm90aAogCQkJICogYXJyYXlzIGFyZSBpbiBwYXJ0 aXRpb24gYm91bmRzIG9yZGVyLgogCQkJICovCisJCQlwcHJ1bmUtPnBhcnRyZWwgPSBwYXJ0cmVs OwogCQkJcHBydW5lLT5ucGFydHMgPSBwYXJ0ZGVzYy0+bnBhcnRzOwogCQkJcHBydW5lLT5zdWJw bGFuX21hcCA9IHBhbGxvYyhzaXplb2YoaW50KSAqIHBhcnRkZXNjLT5ucGFydHMpOwogCkBAIC0y MDczLDI5ICsyMDkyLDMxIEBAIENyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoUGxhblN0YXRlICpw bGFuc3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvKQogCQkJewogCQkJCUluaXRQ YXJ0aXRpb25QcnVuZUNvbnRleHQoJnBwcnVuZS0+aW5pdGlhbF9jb250ZXh0LAogCQkJCQkJCQkJ CSAgcGluZm8tPmluaXRpYWxfcHJ1bmluZ19zdGVwcywKLQkJCQkJCQkJCQkgIHBhcnRkZXNjLCBw YXJ0a2V5LCBwbGFuc3RhdGUsCisJCQkJCQkJCQkJICBwYXJ0ZGVzYywgcGFydGtleSwgTlVMTCwK IAkJCQkJCQkJCQkgIGVjb250ZXh0KTsKIAkJCQkvKiBSZWNvcmQgd2hldGhlciBpbml0aWFsIHBy dW5pbmcgaXMgbmVlZGVkIGF0IGFueSBsZXZlbCAqLwogCQkJCXBydW5lc3RhdGUtPmRvX2luaXRp YWxfcHJ1bmUgPSB0cnVlOwogCQkJfQotCQkJcHBydW5lLT5leGVjX3BydW5pbmdfc3RlcHMgPSBw aW5mby0+ZXhlY19wcnVuaW5nX3N0ZXBzOwotCQkJaWYgKHBpbmZvLT5leGVjX3BydW5pbmdfc3Rl cHMgJiYKLQkJCQkhKGVjb250ZXh0LT5lY3h0X2VzdGF0ZS0+ZXNfdG9wX2VmbGFncyAmIEVYRUNf RkxBR19FWFBMQUlOX0dFTkVSSUMpKQotCQkJewotCQkJCUluaXRQYXJ0aXRpb25QcnVuZUNvbnRl eHQoJnBwcnVuZS0+ZXhlY19jb250ZXh0LAotCQkJCQkJCQkJCSAgcGluZm8tPmV4ZWNfcHJ1bmlu Z19zdGVwcywKLQkJCQkJCQkJCQkgIHBhcnRkZXNjLCBwYXJ0a2V5LCBwbGFuc3RhdGUsCi0JCQkJ CQkJCQkJICBlY29udGV4dCk7Ci0JCQkJLyogUmVjb3JkIHdoZXRoZXIgZXhlYyBwcnVuaW5nIGlz IG5lZWRlZCBhdCBhbnkgbGV2ZWwgKi8KLQkJCQlwcnVuZXN0YXRlLT5kb19leGVjX3BydW5lID0g dHJ1ZTsKLQkJCX0KIAogCQkJLyoKLQkJCSAqIEFjY3VtdWxhdGUgdGhlIElEcyBvZiBhbGwgUEFS QU1fRVhFQyBQYXJhbXMgYWZmZWN0aW5nIHRoZQotCQkJICogcGFydGl0aW9uaW5nIGRlY2lzaW9u cyBhdCB0aGlzIHBsYW4gbm9kZS4KKwkJCSAqIFRoZSBleGVjIHBydW5pbmcgY29udGV4dCB3aWxs IGJlIGluaXRpYWxpemVkIGluCisJCQkgKiBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoKSB3aGVu IGNhbGxlZCBkdXJpbmcgdGhlIGluaXRpYWxpemF0aW9uCisJCQkgKiBvZiB0aGUgcGFyZW50IHBs YW4gbm9kZS4KKwkJCSAqCisJCQkgKiBwcHJ1bmUtPmV4ZWNfcHJ1bmluZ19zdGVwcyBpcyBzZXQg dG8gTklMIHRvIHByZXZlbnQKKwkJCSAqIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucygpIGZyb20g YWNjZXNzaW5nIGFuIHVuaW5pdGlhbGl6ZWQKKwkJCSAqIHBwcnVuZS0+ZXhlY19jb250ZXh0IGR1 cmluZyB0aGUgaW5pdGlhbCBwcnVuaW5nIGJ5CisJCQkgKiBFeGVjRG9Jbml0aWFsUHJ1bmluZygp LgorCQkJICoKKwkJCSAqIHBydW5lc3RhdGUtPmRvX2V4ZWNfcHJ1bmUgaXMgc2V0IHRvIGluZGlj YXRlIHdoZXRoZXIKKwkJCSAqIFBhcnRpdGlvblBydW5lSW5pdEV4ZWNQcnVuaW5nKCkgbmVlZHMg dG8gYmUgY2FsbGVkIGJ5CisJCQkgKiBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoKS4gVGhpcyBv cHRpbWl6YXRpb24gYXZvaWRzCisJCQkgKiB1bm5lY2Vzc2FyeSBjeWNsZXMgd2hlbiBvbmx5IGlu aXRpYWwgcHJ1bmluZyBpcyByZXF1aXJlZC4KIAkJCSAqLwotCQkJcHJ1bmVzdGF0ZS0+ZXhlY3Bh cmFtaWRzID0gYm1zX2FkZF9tZW1iZXJzKHBydW5lc3RhdGUtPmV4ZWNwYXJhbWlkcywKLQkJCQkJ CQkJCQkJCQkgICBwaW5mby0+ZXhlY3BhcmFtaWRzKTsKKwkJCXBwcnVuZS0+ZXhlY19wcnVuaW5n X3N0ZXBzID0gTklMOworCQkJaWYgKHBpbmZvLT5leGVjX3BydW5pbmdfc3RlcHMgJiYKKwkJCQkg IShlY29udGV4dC0+ZWN4dF9lc3RhdGUtPmVzX3RvcF9lZmxhZ3MgJiBFWEVDX0ZMQUdfRVhQTEFJ Tl9HRU5FUklDKSkKKwkJCQlwcnVuZXN0YXRlLT5kb19leGVjX3BydW5lID0gdHJ1ZTsKIAogCQkJ aisrOwogCQl9CkBAIC0yMzA1LDYgKzIzMjYsODQgQEAgUGFydGl0aW9uUHJ1bmVGaXhTdWJQbGFu TWFwKFBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGUsCiAJcGZyZWUobmV3X3N1YnBsYW5f aW5kZXhlcyk7CiB9CiAKKy8qCisgKiBQYXJ0aXRpb25QcnVuZUluaXRFeGVjUHJ1bmluZworICoJ CUluaXRpYWxpemUgUGFydGl0aW9uUHJ1bmVTdGF0ZSBmb3IgZXhlYyBwcnVuaW5nLgorICovCitz dGF0aWMgdm9pZAorUGFydGl0aW9uUHJ1bmVJbml0RXhlY1BydW5pbmcoUGFydGl0aW9uUHJ1bmVJ bmZvICpwcnVuZWluZm8sCisJCQkJCQkJICBQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRl LAorCQkJCQkJCSAgUGxhblN0YXRlICpwbGFuc3RhdGUpCit7CisJRVN0YXRlICplc3RhdGUgPSBw bGFuc3RhdGUtPnN0YXRlOworCWludAkJaTsKKwlFeHByQ29udGV4dCAqZWNvbnRleHQ7CisKKwkv KiBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKCkgbXVzdCBoYXZlIGluaXRpYWxpemVkLiAqLwor CUFzc2VydChlc3RhdGUtPmVzX3BhcnRpdGlvbl9kaXJlY3RvcnkgIT0gTlVMTCk7CisKKwkvKiBD cmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKCkgbXVzdCBoYXZlIHNldCB0aGlzLiAqLworCUFzc2Vy dChwcnVuZXN0YXRlLT5kb19leGVjX3BydW5lKTsKKworCS8qCisJICogQ3JlYXRlIEV4cHJDb250 ZXh0IGlmIG5vdCBhbHJlYWR5IGRvbmUgZm9yIHRoZSBwbGFuc3RhdGUuICBXZSBtYXkgbmVlZAor CSAqIGFuIGV4cHJlc3Npb24gY29udGV4dCB0byBldmFsdWF0ZSBwYXJ0aXRpb24gZXhwcnMuCisJ ICovCisJRXhlY0Fzc2lnbkV4cHJDb250ZXh0KGVzdGF0ZSwgcGxhbnN0YXRlKTsKKwllY29udGV4 dCA9IHBsYW5zdGF0ZS0+cHNfRXhwckNvbnRleHQ7CisJZm9yIChpID0gMDsgaSA8IHBydW5lc3Rh dGUtPm51bV9wYXJ0cHJ1bmVkYXRhOyBpKyspCisJeworCQlMaXN0ICpwYXJ0cmVsX3BydW5laW5m b3MgPQorCQkJbGlzdF9udGhfbm9kZShMaXN0LCBwcnVuZWluZm8tPnBydW5lX2luZm9zLCBpKTsK KwkJUGFydGl0aW9uUHJ1bmluZ0RhdGEgKnBydW5lZGF0YSA9IHBydW5lc3RhdGUtPnBhcnRwcnVu ZWRhdGFbaV07CisJCWludAkJajsKKworCQlmb3IgKGogPSAwOyBqIDwgcHJ1bmVkYXRhLT5udW1f cGFydHJlbHBydW5lZGF0YTsgaisrKQorCQl7CisJCQlQYXJ0aXRpb25lZFJlbFBydW5lSW5mbyAq cGluZm8gPQorCQkJCWxpc3RfbnRoX25vZGUoUGFydGl0aW9uZWRSZWxQcnVuZUluZm8sIHBhcnRy ZWxfcHJ1bmVpbmZvcywgaik7CisJCQlQYXJ0aXRpb25lZFJlbFBydW5pbmdEYXRhICpwcHJ1bmUg PSAmcHJ1bmVkYXRhLT5wYXJ0cmVscHJ1bmVkYXRhW2pdOworCQkJUmVsYXRpb24JcGFydHJlbCA9 IHBwcnVuZS0+cGFydHJlbDsKKwkJCVBhcnRpdGlvbkRlc2MgcGFydGRlc2M7CisJCQlQYXJ0aXRp b25LZXkgcGFydGtleTsKKworCQkJLyoKKwkJCSAqIE5vdGhpbmcgdG8gZG8gaWYgdGhlcmUgYXJl IG5vIGV4ZWMgcHJ1bmluZyBzdGVwcywgYnV0IGRvIHNldAorCQkJICogcHBydW5lLT5leGVjX3By dW5pbmdfc3RlcHMsIGJlY2FzdWUKKwkJCSAqIGZpbmRfbWF0Y2hpbmdfc3VicGxhbnNfcmVjdXJz ZSgpIGxvb2tzIGF0IGl0LgorCQkJICoKKwkJCSAqIEFsc28gc2tpcCBpZiBkb2luZyBFWFBMQUlO IChHRU5FUklDX1BMQU4pLCBzaW5jZSBwYXJhbWV0ZXIKKwkJCSAqIHZhbHVlcyBtYXkgYmUgbWlz c2luZy4KKwkJCSAqLworCQkJcHBydW5lLT5leGVjX3BydW5pbmdfc3RlcHMgPSBwaW5mby0+ZXhl Y19wcnVuaW5nX3N0ZXBzOworCQkJaWYgKHBwcnVuZS0+ZXhlY19wcnVuaW5nX3N0ZXBzID09IE5J TCB8fAorCQkJCShlY29udGV4dC0+ZWN4dF9lc3RhdGUtPmVzX3RvcF9lZmxhZ3MgJiBFWEVDX0ZM QUdfRVhQTEFJTl9HRU5FUklDKSkKKwkJCQljb250aW51ZTsKKworCQkJLyoKKwkJCSAqIFdlIGNh biByZWx5IG9uIHRoZSBjb3BpZXMgb2YgdGhlIHBhcnRpdGlvbmVkIHRhYmxlJ3MgcGFydGl0aW9u CisJCQkgKiBrZXkgYW5kIHBhcnRpdGlvbiBkZXNjcmlwdG9yIGFwcGVhcmluZyBpbiBpdHMgcmVs Y2FjaGUgZW50cnksCisJCQkgKiBiZWNhdXNlIHRoYXQgZW50cnkgd2lsbCBiZSBoZWxkIG9wZW4g YW5kIGxvY2tlZCBmb3IgdGhlCisJCQkgKiBkdXJhdGlvbiBvZiB0aGlzIGV4ZWN1dG9yIHJ1bi4K KwkJCSAqLworCQkJcGFydGtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcnRyZWwpOwor CQkJcGFydGRlc2MgPSBQYXJ0aXRpb25EaXJlY3RvcnlMb29rdXAoZXN0YXRlLT5lc19wYXJ0aXRp b25fZGlyZWN0b3J5LAorCQkJCQkJCQkJCQkJcGFydHJlbCk7CisJCQlJbml0UGFydGl0aW9uUHJ1 bmVDb250ZXh0KCZwcHJ1bmUtPmV4ZWNfY29udGV4dCwKKwkJCQkJCQkJCSAgcHBydW5lLT5leGVj X3BydW5pbmdfc3RlcHMsCisJCQkJCQkJCQkgIHBhcnRkZXNjLCBwYXJ0a2V5LCBwbGFuc3RhdGUs CisJCQkJCQkJCQkgIGVjb250ZXh0KTsKKworCQkJLyoKKwkJCSAqIEFjY3VtdWxhdGUgdGhlIElE cyBvZiBhbGwgUEFSQU1fRVhFQyBQYXJhbXMgYWZmZWN0aW5nIHRoZQorCQkJICogcGFydGl0aW9u aW5nIGRlY2lzaW9ucyBhdCB0aGlzIHBsYW4gbm9kZS4KKwkJCSAqLworCQkJcHJ1bmVzdGF0ZS0+ ZXhlY3BhcmFtaWRzID0gYm1zX2FkZF9tZW1iZXJzKHBydW5lc3RhdGUtPmV4ZWNwYXJhbWlkcywK KwkJCQkJCQkJCQkJCQkgICBwaW5mby0+ZXhlY3BhcmFtaWRzKTsKKwkJfQorCX0KK30KKwogLyoK ICAqIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucwogICoJCURldGVybWluZSB3aGljaCBzdWJwbGFu cyBtYXRjaCB0aGUgcHJ1bmluZyBzdGVwcyBkZXRhaWxlZCBpbgpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhl Y1BhcnRpdGlvbi5oCmluZGV4IDEyYWFjYzg0ZmYuLjJmNDVhYzFjYzggMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9leGVj dXRvci9leGVjUGFydGl0aW9uLmgKQEAgLTQyLDYgKzQyLDkgQEAgZXh0ZXJuIHZvaWQgRXhlY0Ns ZWFudXBUdXBsZVJvdXRpbmcoTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwKICAqIFBhcnRpdGlv bmVkUmVsUHJ1bmVJbmZvIChzZWUgcGxhbm5vZGVzLmgpOyB0aG91Z2ggbm90ZSB0aGF0IGhlcmUs CiAgKiBzdWJwYXJ0X21hcCBjb250YWlucyBpbmRleGVzIGludG8gUGFydGl0aW9uUHJ1bmluZ0Rh dGEucGFydHJlbHBydW5lZGF0YVtdLgogICoKKyAqIHBhcnRyZWwJCQkJCQlQYXJ0aXRpb25lZCB0 YWJsZTsgcG9pbnRzIHRvCisgKgkJCQkJCQkJRVN0YXRlLmVzX3JlbGF0aW9uc1tydGktMV0sIHdo ZXJlIHJ0aSBpcyB0aGUKKyAqCQkJCQkJCQl0YWJsZSdzIFJUIGluZGV4CiAgKiBucGFydHMJCQkJ CQlMZW5ndGggb2Ygc3VicGxhbl9tYXBbXSBhbmQgc3VicGFydF9tYXBbXS4KICAqIHN1YnBsYW5f bWFwCQkJCQlTdWJwbGFuIGluZGV4IGJ5IHBhcnRpdGlvbiBpbmRleCwgb3IgLTEuCiAgKiBzdWJw YXJ0X21hcAkJCQkJU3VicGFydCBpbmRleCBieSBwYXJ0aXRpb24gaW5kZXgsIG9yIC0xLgpAQCAt NTgsNiArNjEsNyBAQCBleHRlcm4gdm9pZCBFeGVjQ2xlYW51cFR1cGxlUm91dGluZyhNb2RpZnlU YWJsZVN0YXRlICptdHN0YXRlLAogICovCiB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25lZFJlbFBy dW5pbmdEYXRhCiB7CisJUmVsYXRpb24JcGFydHJlbDsKIAlpbnQJCQlucGFydHM7CiAJaW50CQkg ICAqc3VicGxhbl9tYXA7CiAJaW50CQkgICAqc3VicGFydF9tYXA7CkBAIC0xMjgsNCArMTMyLDYg QEAgZXh0ZXJuIFBhcnRpdGlvblBydW5lU3RhdGUgKkV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZyhQ bGFuU3RhdGUgKnBsYW5zdGF0ZSwKIAkJCQkJCQkJCQkJCQkgQml0bWFwc2V0ICoqaW5pdGlhbGx5 X3ZhbGlkX3N1YnBsYW5zKTsKIGV4dGVybiBCaXRtYXBzZXQgKkV4ZWNGaW5kTWF0Y2hpbmdTdWJQ bGFucyhQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlLAogCQkJCQkJCQkJCSAgIGJvb2wg aW5pdGlhbF9wcnVuZSk7CitleHRlcm4gUGFydGl0aW9uUHJ1bmVTdGF0ZSAqRXhlY0NyZWF0ZVBh cnRpdGlvblBydW5lU3RhdGUoRVN0YXRlICplc3RhdGUsCisJCQkJCQkJCQkJCQkJCSAgUGFydGl0 aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8pOwogI2VuZGlmCQkJCQkJCS8qIEVYRUNQQVJUSVRJT05f SCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5j bHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCAyMmI5MjhlMDg1Li41MThhOWZjZDE1IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9u b2Rlcy9leGVjbm9kZXMuaApAQCAtNjM3LDYgKzYzNyw4IEBAIHR5cGVkZWYgc3RydWN0IEVTdGF0 ZQogCUxpc3QJICAgKmVzX3J0ZXBlcm1pbmZvczsJLyogTGlzdCBvZiBSVEVQZXJtaXNzaW9uSW5m byAqLwogCVBsYW5uZWRTdG10ICplc19wbGFubmVkc3RtdDsJLyogbGluayB0byB0b3Agb2YgcGxh biB0cmVlICovCiAJTGlzdAkgICAqZXNfcGFydF9wcnVuZV9pbmZvczsJLyogUGxhbm5lZFN0bXQu cGFydFBydW5lSW5mb3MgKi8KKwlMaXN0CSAgICplc19wYXJ0X3BydW5lX3N0YXRlczsJLyogTGlz dCBvZiBQYXJ0aXRpb25QcnVuZVN0YXRlICovCisJTGlzdAkgICAqZXNfcGFydF9wcnVuZV9yZXN1 bHRzOwkvKiBMaXN0IG9mIEJpdG1hcHNldCAqLwogCWNvbnN0IGNoYXIgKmVzX3NvdXJjZVRleHQ7 CS8qIFNvdXJjZSB0ZXh0IGZyb20gUXVlcnlEZXNjICovCiAKIAlKdW5rRmlsdGVyICplc19qdW5r RmlsdGVyOwkvKiB0b3AtbGV2ZWwganVuayBmaWx0ZXIsIGlmIGFueSAqLwotLSAKMi40My4wCgo= --0000000000007b8704062277ce88 Content-Type: application/octet-stream; name="v55-0004-Defer-locking-of-runtime-prunable-relations-to-e.patch" Content-Disposition: attachment; filename="v55-0004-Defer-locking-of-runtime-prunable-relations-to-e.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m1990ptz3 RnJvbSBhZDA0N2YwYmI3YjcwM2MwZDIwNzk0NjQ2MjI1ODgxMzhlNjRiMTE3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgMTggU2VwIDIwMjQgMTI6MDA6NDEgKzA5MDAKU3ViamVjdDogW1BBVENIIHY1 NSA0LzVdIERlZmVyIGxvY2tpbmcgb2YgcnVudGltZS1wcnVuYWJsZSByZWxhdGlvbnMgdG8KIGV4 ZWN1dG9yCk1JTUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNl dD1VVEYtOApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CgpXaGVuIHByZXBhcmluZyBh IGNhY2hlZCBwbGFuIGZvciBleGVjdXRpb24sIHBsYW5jYWNoZS5jIGxvY2tzIHRoZQpyZWxhdGlv bnMgaW4gdGhlIHBsYW4ncyByYW5nZSB0YWJsZSB0byBlbnN1cmUgdGhleSBhcmUgc2FmZSBmb3IK ZXhlY3V0aW9uLiBIb3dldmVyLCB0aGlzIGFwcHJvYWNoLCBpbXBsZW1lbnRlZCBpbgpBY3F1aXJl RXhlY3V0b3JMb2NrcygpLCByZXN1bHRzIGluIHVubmVjZXNzYXJpbHkgbG9ja2luZyByZWxhdGlv bnMKdGhhdCBtaWdodCBiZSBwcnVuZWQgZHVyaW5nICJpbml0aWFsIiBydW50aW1lIHBydW5pbmcu CgpUbyBvcHRpbWl6ZSB0aGlzLCBsb2NraW5nIGlzIG5vdyBkZWZlcnJlZCBmb3IgcmVsYXRpb25z IHN1YmplY3QgdG8KImluaXRpYWwiIHJ1bnRpbWUgcHJ1bmluZy4gVGhlIHBsYW5uZXIgbm93IHBy b3ZpZGVzIGEgc2V0IG9mCiJ1bnBydW5hYmxlIiByZWxhdGlvbnMgdGhyb3VnaCB0aGUgbmV3IFBs YW5uZWRTdG10LnVucHJ1bmFibGVSZWxpZHMKZmllbGQuIEFjcXVpcmVFeGVjdXRvckxvY2tzKCkg d2lsbCBvbmx5IGxvY2sgdGhlc2UgdW5wcnVuYWJsZQpyZWxhdGlvbnMuIFBsYW5uZWRTdG10LnVu cHJ1bmFibGVSZWxpZHMgaXMgcG9wdWxhdGVkIGJ5IHN1YnRyYWN0aW5nCnRoZSBzZXQgb2YgaW5p dGlhbGx5IHBydW5hYmxlIHJlbGlkcyBmcm9tIGFsbCBSVCBpbmRleGVzLiBUaGUgcHJ1bmFibGUK cmVsaWRzIGFyZSBpZGVudGlmaWVkIGJ5IGV4YW1pbmluZyBhbGwgUGFydGl0aW9uUHJ1bmVJbmZv cyBkdXJpbmcKc2V0X3BsYW5fcmVmcygpIGFuZCBzdG9yaW5nIHRoZSBSVCBpbmRleGVzIG9mIHBh cnRpdGlvbnMgc3ViamVjdCB0bwoiaW5pdGlhbCIgcHJ1bmluZyBzdGVwcy4gV2hpbGUgYXQgaXQs IHNvbWUgZHVwbGljYXRlZCBjb2RlIGluCnNldF9hcHBlbmRfcmVmZXJlbmNlcygpIGFuZCBzZXRf bWVyZ2VhcHBlbmRfcmVmZXJlbmNlcygpIHRoYXQKY29uc3RydWN0cyB0aGUgcHJ1bmFibGUgcmVs aWRzIHNldCBoYXMgYmVlbiByZWZhY3RvcmVkIGludG8gYSBjb21tb24KZnVuY3Rpb24uCgpEZWZl cnJlZCBsb2NrcyBhcmUgdGFrZW4sIGlmIG5lY2Vzc2FyeSwgYWZ0ZXIgRXhlY0RvSW5pdGlhbFBy dW5pbmcoKQpkZXRlcm1pbmVzIHRoZSBzZXQgb2YgdW5wcnVuZWQgcGFydGl0aW9ucy4gVG8gYWxs b3cgdGhlIGV4ZWN1dG9yIHRvCmRldGVybWluZSB3aGV0aGVyIHRoZSBwbGFuIHRyZWUgaXTigJlz IGV4ZWN1dGluZyBpcyBjYWNoZWQgYW5kIG1heQpjb250YWluIHVubG9ja2VkIHJlbGF0aW9ucywg dGhlIENhY2hlZFBsYW4gaXMgbm93IG1hZGUgYXZhaWxhYmxlIHZpYQp0aGUgUXVlcnlEZXNjLiBU aGUgZXhlY3V0b3IgY2FuIGNhbGwgQ2FjaGVkUGxhblJlcXVpcmVzTG9ja2luZygpLAp3aGljaCBy ZXR1cm5zIHRydWUgaWYgdGhlIENhY2hlZFBsYW4gaXMgYSByZXVzYWJsZSBnZW5lcmljIHBsYW4g dGhhdAptaWdodCBjb250YWluIHVubG9ja2VkIHJlbGF0aW9ucy4KClBsYW4gbm9kZXMgbGlrZSBB cHBlbmQgaGF2ZSBhbHJlYWR5IGJlZW4gdXBkYXRlZCB0byBjb25zaWRlciBvbmx5IHRoZQpzZXQg b2YgdW5wcnVuZWQgcmVsYXRpb25zLiBIb3dldmVyLCB0aGVyZSBhcmUgY2FzZXMsIHN1Y2ggYXMg Y2hpbGQKUm93TWFya3MgYW5kIGNoaWxkIHJlc3VsdCByZWxhdGlvbnMsIHdoZXJlIHRoZSBjb2Rl IG1hbmlwdWxhdGluZyB0aG9zZQpkbyBub3QgZGlyZWN0bHkgcmVjZWl2ZSBpbmZvcm1hdGlvbiBh Ym91dCB1bnBydW5lZCBwYXJ0aXRpb25zLgpUaGVyZWZvcmUsIGNvZGUgaGFuZGxpbmcgY2hpbGQg Um93TWFya3MgYW5kIHJlc3VsdCByZWxhdGlvbnMgaGFzIGJlZW4KbW9kaWZpZWQgdG8gZW5zdXJl IHRoZXkgZG9u4oCZdCBiZWxvbmcgdG8gcHJ1bmVkIHBhcnRpdGlvbnMuIEZvciB0aGlzLAp0aGUg UlQgaW5kZXhlcyBvZiB1bnBydW5lZCBwYXJ0aXRpb25zIGFyZSBhZGRlZCBpbgpFeGVjRG9Jbml0 aWFsUHJ1bmluZygpIHRvIGVzX3VucHJ1bmFibGVfcmVsaWRzLCB3aGljaCBpbml0aWFsbHkKY29u dGFpbnMgUGxhbm5lZFN0bXQudW5wcnVuYWJsZVJlbGlkcy4gVGhlIGNvcnJlc3BvbmRpbmcgY29k ZSBub3cKcHJvY2Vzc2VzIG9ubHkgdGhvc2UgY2hpbGQgUm93TWFya3MgYW5kIHJlc3VsdCByZWxh dGlvbnMgd2hvc2Ugb3duaW5nCnJlbGF0aW9ucyBhcmUgaW4gdGhpcyBzZXQuIEZvciByZXN1bHQg cmVsYXRpb25zIG1hbmFnZWQgYnkgYQpNb2RpZnlUYWJsZSBub2RlLCBpdHMgcmVzdWx0UmVsYXRp b25zIGxpc3QgaXMgdHJ1bmNhdGVkIGluCkV4ZWNJbml0TW9kaWZ5VGFibGUgdG8gb25seSBjb25z aWRlciB1bnBydW5lZCByZWxhdGlvbnMgYW5kIHRoZQpSZXN1bHRSZWxJbmZvIHN0cnVjdHMgYXJl IGNyZWF0ZWQgb25seSBmb3IgdGhvc2UuCgpGaW5hbGx5LCBhbiBBc3NlcnQgaGFzIGFsc28gYmVl biBhZGRlZCBpbiBFeGVjQ2hlY2tQZXJtaXNzaW9ucygpIHRvCmVuc3VyZSB0aGF0IGFsbCByZWxh dGlvbnMgd2hvc2UgcGVybWlzc2lvbnMgYXJlIGNoZWNrZWQgaGF2ZSBiZWVuCnByb3Blcmx5IGxv Y2tlZCwgaGVscGluZyB0byBjYXRjaCBhbnkgYWNjaWRlbnRhbCBvbWlzc2lvbiBvZiByZWxhdGlv bnMKZnJvbSB0aGUgdW5wcnVuYWJsZVJlbGlkcyBzZXQgdGhhdCBzaG91bGQgaGF2ZSB0aGVpciBw ZXJtaXNzaW9ucwpjaGVja2VkLgoKVGhpcyBkZWZlcm1lbnQgaW50cm9kdWNlcyBhIHdpbmRvdyB3 aGVyZSBwcnVuYWJsZSByZWxhdGlvbnMgbWF5IGJlCmFsdGVyZWQgYnkgY29uY3VycmVudCBEREws IHBvdGVudGlhbGx5IGNhdXNpbmcgdGhlIHBsYW4gdG8gYmVjb21lCmludmFsaWQuIENvbnNlcXVl bnRseSwgdGhlIGV4ZWN1dG9yIG1pZ2h0IGF0dGVtcHQgdG8gZXhlY3V0ZSBhbgppbnZhbGlkIHBs YW4sIGxlYWRpbmcgdG8gZXJyb3JzIHN1Y2ggYXMgZmFpbGluZyB0byBsb2NhdGUgdGhlIGluZGV4 Cm9mIGFuIHVucHJ1bmVkIHBhcnRpdGlvbiB0aGF0IG1heSBoYXZlIGJlZW4gZHJvcHBlZCBjb25j dXJyZW50bHkKZHVyaW5nIEV4ZWNJbml0SW5kZXhTY2FuKCkgKGlmIGl0J3MgcGFydGl0aW9uLWxv Y2FsLCBub3QgaW5oZXJpdGVkLApmb3IgZXhhbXBsZSkuICBGdXR1cmUgY29tbWl0cyB3aWxsIGlu dHJvZHVjZSBjaGFuZ2VzIHRvIGVuYWJsZSB0aGUKZXhlY3V0b3IgdG8gY2hlY2sgcGxhbiB2YWxp ZGl0eSBkdXJpbmcgRXhlY3V0b3JTdGFydCgpIGFuZCByZXRyeSB3aXRoCmEgbmV3bHkgY3JlYXRl ZCBwbGFuIGlmIHRoZSBvcmlnaW5hbCBiZWNvbWVzIGludmFsaWQgYWZ0ZXIgdGFraW5nCmRlZmVy cmVkIGxvY2tzLgotLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jICAgICAgICAgIHwg IDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMgICAgICAgIHwgIDIgKy0KIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyAgICAgICAgIHwgIDcgKy0tCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy9leHRlbnNpb24uYyAgICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRz L21hdHZpZXcuYyAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUu YyAgICAgICAgIHwgIDMgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAgICAg IHwgNzUgKysrKysrKysrKysrKysrKysrKysrKysrLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNQYXJhbGxlbC5jICAgIHwgIDkgKysrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRp dGlvbi5jICAgfCAzNiArKysrKysrKysrLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlv bnMuYyAgICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYyAgICAg IHwgIDggKy0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTG9ja1Jvd3MuYyAgICB8IDEwICsr Ky0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jIHwgIDIgKy0KIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jIHwgMzggKysrKysrKysrKy0tLQogc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMgICAgICAgICAgICAgfCAgMSArCiBzcmMvYmFja2VuZC9v cHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgICB8ICAyICsKIHNyYy9iYWNrZW5kL29wdGltaXplci9w bGFuL3NldHJlZnMuYyAgIHwgIDcgKysrCiBzcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBy dW5lLmMgICB8IDE4ICsrKysrKysKIHNyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMgICAgICAgICAg ICAgIHwgMTAgKysrLQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMgICAgfCA0 MCArKysrKysrKy0tLS0tLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oICAgICAgICAg fCAgNSArLQogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oICAgfCAgNSArLQog c3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaCAgICAgICAgfCAgMiArCiBzcmMvaW5jbHVk ZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAgICAgICB8ICA2ICsrKwogc3JjL2luY2x1ZGUvbm9kZXMv cGF0aG5vZGVzLmggICAgICAgICAgfCAgNiArKysKIHNyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rl cy5oICAgICAgICAgIHwgIDcgKysrCiBzcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaCAgICAg ICAgICB8IDEwICsrKysKIDI3IGZpbGVzIGNoYW5nZWQsIDI2MyBpbnNlcnRpb25zKCspLCA1MiBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCmluZGV4IDkxZGU0NDJmNDMuLmRiOTc2Zjky OGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCisrKyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCkBAIC01NTIsNyArNTUyLDcgQEAgQmVnaW5Db3B5VG8o UGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkoKERSX2NvcHkgKikgZGVzdCktPmNzdGF0ZSA9IGNzdGF0 ZTsKIAogCQkvKiBDcmVhdGUgYSBRdWVyeURlc2MgcmVxdWVzdGluZyBubyBvdXRwdXQgKi8KLQkJ Y3N0YXRlLT5xdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgcHN0YXRlLT5wX3NvdXJj ZXRleHQsCisJCWNzdGF0ZS0+cXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIE5VTEws IHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAogCQkJCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLAog CQkJCQkJCQkJCQlJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkJCQkJCWRlc3QsIE5VTEwsIE5VTEws IDApOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY3JlYXRlYXMuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMKaW5kZXggMGI2MjliMWY3OS4uNTdhMzM3NWNhZCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY3JlYXRlYXMuYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jCkBAIC0zMjQsNyArMzI0LDcgQEAgRXhlY0NyZWF0ZVRh YmxlQXMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVUYWJsZUFzU3RtdCAqc3RtdCwKIAkJVXBk YXRlQWN0aXZlU25hcHNob3RDb21tYW5kSWQoKTsKIAogCQkvKiBDcmVhdGUgYSBRdWVyeURlc2Ms IHJlZGlyZWN0aW5nIG91dHB1dCB0byBvdXIgdHVwbGUgcmVjZWl2ZXIgKi8KLQkJcXVlcnlEZXNj ID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAorCQlxdWVyeURl c2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgTlVMTCwgcHN0YXRlLT5wX3NvdXJjZXRleHQsCiAJ CQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkJCQlk ZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCAwKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvZXhwbGFpbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCmluZGV4IGFh ZWM0Mzk4OTIuLjQ5ZjczNzA3MzQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4 cGxhaW4uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKQEAgLTUwOSw3ICs1 MDksNyBAQCBzdGFuZGFyZF9FeHBsYWluT25lUXVlcnkoUXVlcnkgKnF1ZXJ5LCBpbnQgY3Vyc29y T3B0aW9ucywKIAl9CiAKIAkvKiBydW4gaXQgKGlmIG5lZWRlZCkgYW5kIHByb2R1Y2Ugb3V0cHV0 ICovCi0JRXhwbGFpbk9uZVBsYW4ocGxhbiwgaW50bywgZXMsIHF1ZXJ5U3RyaW5nLCBwYXJhbXMs IHF1ZXJ5RW52LAorCUV4cGxhaW5PbmVQbGFuKHBsYW4sIE5VTEwsIGludG8sIGVzLCBxdWVyeVN0 cmluZywgcGFyYW1zLCBxdWVyeUVudiwKIAkJCQkgICAmcGxhbmR1cmF0aW9uLCAoZXMtPmJ1ZmZl cnMgPyAmYnVmdXNhZ2UgOiBOVUxMKSwKIAkJCQkgICBlcy0+bWVtb3J5ID8gJm1lbV9jb3VudGVy cyA6IE5VTEwpOwogfQpAQCAtNjE3LDcgKzYxNyw4IEBAIEV4cGxhaW5PbmVVdGlsaXR5KE5vZGUg KnV0aWxpdHlTdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogICogdG8g Y2FsbCBpdC4KICAqLwogdm9pZAotRXhwbGFpbk9uZVBsYW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRz dG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAorRXhwbGFpbk9uZVBsYW4o UGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBDYWNoZWRQbGFuICpjcGxhbiwKKwkJCSAgIEludG9D bGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJCQkgICBjb25zdCBjaGFyICpxdWVyeVN0 cmluZywgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkgICBRdWVyeUVudmlyb25tZW50ICpxdWVy eUVudiwgY29uc3QgaW5zdHJfdGltZSAqcGxhbmR1cmF0aW9uLAogCQkJICAgY29uc3QgQnVmZmVy VXNhZ2UgKmJ1ZnVzYWdlLApAQCAtNjczLDcgKzY3NCw3IEBAIEV4cGxhaW5PbmVQbGFuKFBsYW5u ZWRTdG10ICpwbGFubmVkc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywK IAkJZGVzdCA9IE5vbmVfUmVjZWl2ZXI7CiAKIAkvKiBDcmVhdGUgYSBRdWVyeURlc2MgZm9yIHRo ZSBxdWVyeSAqLwotCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFubmVkc3RtdCwgcXVl cnlTdHJpbmcsCisJcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW5uZWRzdG10LCBjcGxh biwgcXVlcnlTdHJpbmcsCiAJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFw c2hvdCwKIAkJCQkJCQkJZGVzdCwgcGFyYW1zLCBxdWVyeUVudiwgaW5zdHJ1bWVudF9vcHRpb24p OwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jCmluZGV4IGZhYjU5YWQ1ZjYuLmJkMTY5ZWRlZmYg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jCisrKyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jCkBAIC03NDIsNiArNzQyLDcgQEAgZXhlY3V0ZV9z cWxfc3RyaW5nKGNvbnN0IGNoYXIgKnNxbCkKIAkJCQlRdWVyeURlc2MgICpxZGVzYzsKIAogCQkJ CXFkZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHN0bXQsCisJCQkJCQkJCQkJTlVMTCwKIAkJCQkJCQkJ CQlzcWwsCiAJCQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwgTlVMTCwKIAkJCQkJCQkJCQlk ZXN0LCBOVUxMLCBOVUxMLCAwKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21h dHZpZXcuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYwppbmRleCAwMTAwOTc4NzNk Li42OWJlNzRiNGJkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jCkBAIC00MzgsNyArNDM4LDcgQEAg cmVmcmVzaF9tYXR2aWV3X2RhdGFmaWxsKERlc3RSZWNlaXZlciAqZGVzdCwgUXVlcnkgKnF1ZXJ5 LAogCVVwZGF0ZUFjdGl2ZVNuYXBzaG90Q29tbWFuZElkKCk7CiAKIAkvKiBDcmVhdGUgYSBRdWVy eURlc2MsIHJlZGlyZWN0aW5nIG91dHB1dCB0byBvdXIgdHVwbGUgcmVjZWl2ZXIgKi8KLQlxdWVy eURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgcXVlcnlTdHJpbmcsCisJcXVlcnlEZXNjID0g Q3JlYXRlUXVlcnlEZXNjKHBsYW4sIE5VTEwsIHF1ZXJ5U3RyaW5nLAogCQkJCQkJCQlHZXRBY3Rp dmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkJCWRlc3QsIE5VTEwsIE5VTEws IDApOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKaW5kZXggMDcyNTdkNGRiOS4uMzExYjllYmQ1YiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCisrKyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwpAQCAtNjU1LDcgKzY1NSw4IEBAIEV4cGxhaW5FeGVjdXRl UXVlcnkoRXhlY3V0ZVN0bXQgKmV4ZWNzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3Rh dGUgKmVzLAogCQlQbGFubmVkU3RtdCAqcHN0bXQgPSBsZmlyc3Rfbm9kZShQbGFubmVkU3RtdCwg cCk7CiAKIAkJaWYgKHBzdG10LT5jb21tYW5kVHlwZSAhPSBDTURfVVRJTElUWSkKLQkJCUV4cGxh aW5PbmVQbGFuKHBzdG10LCBpbnRvLCBlcywgcXVlcnlfc3RyaW5nLCBwYXJhbUxJLCBxdWVyeUVu diwKKwkJCUV4cGxhaW5PbmVQbGFuKHBzdG10LCBjcGxhbiwgaW50bywgZXMsIHF1ZXJ5X3N0cmlu ZywgcGFyYW1MSSwKKwkJCQkJCSAgIHF1ZXJ5RW52LAogCQkJCQkJICAgJnBsYW5kdXJhdGlvbiwg KGVzLT5idWZmZXJzID8gJmJ1ZnVzYWdlIDogTlVMTCksCiAJCQkJCQkgICBlcy0+bWVtb3J5ID8g Jm1lbV9jb3VudGVycyA6IE5VTEwpOwogCQllbHNlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjTWFpbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwppbmRl eCAxOTk0MTEyYjJlLi5kZjFiNWIyZGMzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjTWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKQEAgLTUz LDYgKzUzLDcgQEAKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwYXJzZXIvcGFy c2VfcmVsYXRpb24uaCIKICNpbmNsdWRlICJyZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmgiCisjaW5j bHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAidGNvcC91dGlsaXR5LmgiCiAjaW5jbHVk ZSAidXRpbHMvYWNsLmgiCiAjaW5jbHVkZSAidXRpbHMvYmFja2VuZF9zdGF0dXMuaCIKQEAgLTkw LDYgKzkxLDcgQEAgc3RhdGljIGJvb2wgRXhlY0NoZWNrUGVybWlzc2lvbnNNb2RpZmllZChPaWQg cmVsT2lkLCBPaWQgdXNlcmlkLAogCQkJCQkJCQkJCSBBY2xNb2RlIHJlcXVpcmVkUGVybXMpOwog c3RhdGljIHZvaWQgRXhlY0NoZWNrWGFjdFJlYWRPbmx5KFBsYW5uZWRTdG10ICpwbGFubmVkc3Rt dCk7CiBzdGF0aWMgdm9pZCBFdmFsUGxhblF1YWxTdGFydChFUFFTdGF0ZSAqZXBxc3RhdGUsIFBs YW4gKnBsYW5UcmVlKTsKK3N0YXRpYyBpbmxpbmUgYm9vbCBFeGVjU2hvdWxkTG9ja1JlbGF0aW9u cyhFU3RhdGUgKmVzdGF0ZSk7CiAKIC8qIGVuZCBvZiBsb2NhbCBkZWNscyAqLwogCkBAIC02MDAs NiArNjAyLDIxIEBAIEV4ZWNDaGVja1Blcm1pc3Npb25zKExpc3QgKnJhbmdlVGFibGUsIExpc3Qg KnJ0ZXBlcm1pbmZvcywKIAkJCQkgICAocnRlLT5ydGVraW5kID09IFJURV9TVUJRVUVSWSAmJgog CQkJCQlydGUtPnJlbGtpbmQgPT0gUkVMS0lORF9WSUVXKSk7CiAKKwkJCS8qCisJCQkgKiBFbnN1 cmUgdGhhdCB3ZSBoYXZlIGF0IGxlYXN0IGFuIEFjY2Vzc1NoYXJlTG9jayBvbiByZWxhdGlvbnMK KwkJCSAqIHdob3NlIHBlcm1pc3Npb25zIG5lZWQgdG8gYmUgY2hlY2tlZC4KKwkJCSAqCisJCQkg KiBTa2lwIHRoaXMgY2hlY2sgaW4gYSBwYXJhbGxlbCB3b3JrZXIgYmVjYXVzZSBsb2NrcyB3b24n dCBiZQorCQkJICogdGFrZW4gdW50aWwgRXhlY0luaXROb2RlKCkgcGVyZm9ybXMgcGxhbiBpbml0 aWFsaXphdGlvbi4KKwkJCSAqCisJCQkgKiBYWFg6IEV4ZWNDaGVja1Blcm1pc3Npb25zKCkgaW4g YSBwYXJhbGxlbCB3b3JrZXIgbWF5IGJlCisJCQkgKiByZWR1bmRhbnQgd2l0aCB0aGUgY2hlY2tz IGRvbmUgaW4gdGhlIGxlYWRlciBwcm9jZXNzLCBzbyB0aGlzCisJCQkgKiBzaG91bGQgYmUgcmV2 aWV3ZWQgdG8gZW5zdXJlIGl04oCZcyBuZWNlc3NhcnkuCisJCQkgKi8KKwkJCUFzc2VydChJc1Bh cmFsbGVsV29ya2VyKCkgfHwKKwkJCQkgICBDaGVja1JlbGF0aW9uT2lkTG9ja2VkQnlNZShydGUt PnJlbGlkLCBBY2Nlc3NTaGFyZUxvY2ssCisJCQkJCQkJCQkJCSAgdHJ1ZSkpOworCiAJCQkodm9p ZCkgZ2V0UlRFUGVybWlzc2lvbkluZm8ocnRlcGVybWluZm9zLCBydGUpOwogCQkJLyogTWFueS10 by1vbmUgbWFwcGluZyBub3QgYWxsb3dlZCAqLwogCQkJQXNzZXJ0KCFibXNfaXNfbWVtYmVyKHJ0 ZS0+cGVybWluZm9pbmRleCwgaW5kZXhzZXQpKTsKQEAgLTg2MiwxMiArODc5LDQ2IEBAIEV4ZWNE b0luaXRpYWxQcnVuaW5nKEVTdGF0ZSAqZXN0YXRlKQogCQkgKiByZXN1bHQuCiAJCSAqLwogCQlp ZiAocHJ1bmVzdGF0ZS0+ZG9faW5pdGlhbF9wcnVuZSkKLQkJCXZhbGlkc3VicGxhbnMgPSBFeGVj RmluZE1hdGNoaW5nU3ViUGxhbnMocHJ1bmVzdGF0ZSwgdHJ1ZSk7CisJCXsKKwkJCUJpdG1hcHNl dCAqdmFsaWRzdWJwbGFuX3J0aXMgPSBOVUxMOworCisJCQl2YWxpZHN1YnBsYW5zID0gRXhlY0Zp bmRNYXRjaGluZ1N1YlBsYW5zKHBydW5lc3RhdGUsIHRydWUsCisJCQkJCQkJCQkJCQkJICZ2YWxp ZHN1YnBsYW5fcnRpcyk7CisJCQlpZiAoRXhlY1Nob3VsZExvY2tSZWxhdGlvbnMoZXN0YXRlKSkK KwkJCXsKKwkJCQlpbnQJCXJ0aW5kZXggPSAtMTsKKworCQkJCXJ0aW5kZXggPSAtMTsKKwkJCQl3 aGlsZSAoKHJ0aW5kZXggPSBibXNfbmV4dF9tZW1iZXIodmFsaWRzdWJwbGFuX3J0aXMsCisJCQkJ CQkJCQkJCQkgIHJ0aW5kZXgpKSA+PSAwKQorCQkJCXsKKwkJCQkJUmFuZ2VUYmxFbnRyeSAqcnRl ID0gZXhlY19ydF9mZXRjaChydGluZGV4LCBlc3RhdGUpOworCisJCQkJCUFzc2VydChydGUtPnJ0 ZWtpbmQgPT0gUlRFX1JFTEFUSU9OICYmCisJCQkJCQkgICBydGUtPnJlbGxvY2ttb2RlICE9IE5v TG9jayk7CisJCQkJCUxvY2tSZWxhdGlvbk9pZChydGUtPnJlbGlkLCBydGUtPnJlbGxvY2ttb2Rl KTsKKwkJCQl9CisJCQl9CisJCQllc3RhdGUtPmVzX3VucHJ1bmFibGVfcmVsaWRzID0gYm1zX2Fk ZF9tZW1iZXJzKGVzdGF0ZS0+ZXNfdW5wcnVuYWJsZV9yZWxpZHMsCisJCQkJCQkJCQkJCQkJCSAg IHZhbGlkc3VicGxhbl9ydGlzKTsKKwkJfQorCiAJCWVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9yZXN1 bHRzID0gbGFwcGVuZChlc3RhdGUtPmVzX3BhcnRfcHJ1bmVfcmVzdWx0cywKIAkJCQkJCQkJCQkJ CXZhbGlkc3VicGxhbnMpOwogCX0KIH0KIAorLyoKKyAqIExvY2tzIG1pZ2h0IGJlIG5lZWRlZCBv bmx5IGlmIHJ1bm5pbmcgYSBjYWNoZWQgcGxhbiB0aGF0IG1pZ2h0IGNvbnRhaW4KKyAqIHVubG9j a2VkIHJlbGF0aW9ucywgc3VjaCBhcyByZXVzZWQgZ2VuZXJpYyBwbGFucy4KKyAqLworc3RhdGlj IGlubGluZSBib29sCitFeGVjU2hvdWxkTG9ja1JlbGF0aW9ucyhFU3RhdGUgKmVzdGF0ZSkKK3sK KwlyZXR1cm4gZXN0YXRlLT5lc19jYWNoZWRwbGFuID09IE5VTEwgPyBmYWxzZSA6CisJCUNhY2hl ZFBsYW5SZXF1aXJlc0xvY2tpbmcoZXN0YXRlLT5lc19jYWNoZWRwbGFuKTsKK30KKwogLyogLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQogICoJCUluaXRQbGFuCiAgKgpAQCAtODgwLDYgKzkzMSw3IEBAIEluaXRQbGFuKFF1ZXJ5 RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogewogCUNtZFR5cGUJCW9wZXJhdGlvbiA9IHF1 ZXJ5RGVzYy0+b3BlcmF0aW9uOwogCVBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCA9IHF1ZXJ5RGVz Yy0+cGxhbm5lZHN0bXQ7CisJQ2FjaGVkUGxhbiAqY2FjaGVkcGxhbiA9IHF1ZXJ5RGVzYy0+Y3Bs YW47CiAJUGxhbgkgICAqcGxhbiA9IHBsYW5uZWRzdG10LT5wbGFuVHJlZTsKIAlMaXN0CSAgICpy YW5nZVRhYmxlID0gcGxhbm5lZHN0bXQtPnJ0YWJsZTsKIAlFU3RhdGUJICAgKmVzdGF0ZSA9IHF1 ZXJ5RGVzYy0+ZXN0YXRlOwpAQCAtODk5LDEwICs5NTEsMTMgQEAgSW5pdFBsYW4oUXVlcnlEZXNj ICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJRXhlY0luaXRSYW5nZVRhYmxlKGVzdGF0ZSwgcmFu Z2VUYWJsZSwgcGxhbm5lZHN0bXQtPnBlcm1JbmZvcyk7CiAKIAllc3RhdGUtPmVzX3BsYW5uZWRz dG10ID0gcGxhbm5lZHN0bXQ7CisJZXN0YXRlLT5lc19jYWNoZWRwbGFuID0gY2FjaGVkcGxhbjsK Kwllc3RhdGUtPmVzX3VucHJ1bmFibGVfcmVsaWRzID0gYm1zX2NvcHkocGxhbm5lZHN0bXQtPnVu cHJ1bmFibGVSZWxpZHMpOwogCiAJLyoKIAkgKiBQZXJmb3JtIHJ1bnRpbWUgImluaXRpYWwiIHBy dW5pbmcgdG8gZGV0ZXJtaW5lIHRoZSBwbGFuIG5vZGVzIHRoYXQgd2lsbAotCSAqIG5vdCBiZSBl eGVjdXRlZC4KKwkgKiBub3QgYmUgZXhlY3V0ZWQuICBUaGlzIHdpbGwgYWxzbyBhZGQgdGhlIFJU IGluZGV4ZXMgb2Ygc3Vydml2aW5nIGxlYWYKKwkgKiBwYXJ0aXRpb25zIHRvIGVzX3VucHJ1bmFi bGVfcmVsaWRzLgogCSAqLwogCWVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9pbmZvcyA9IHBsYW5uZWRz dG10LT5wYXJ0UHJ1bmVJbmZvczsKIAlFeGVjRG9Jbml0aWFsUHJ1bmluZyhlc3RhdGUpOwpAQCAt OTIxLDggKzk3NiwxMyBAQCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFn cykKIAkJCVJlbGF0aW9uCXJlbGF0aW9uOwogCQkJRXhlY1Jvd01hcmsgKmVybTsKIAotCQkJLyog aWdub3JlICJwYXJlbnQiIHJvd21hcmtzOyB0aGV5IGFyZSBpcnJlbGV2YW50IGF0IHJ1bnRpbWUg Ki8KLQkJCWlmIChyYy0+aXNQYXJlbnQpCisJCQkvKgorCQkJICogSWdub3JlICJwYXJlbnQiIHJv d21hcmtzLCBiZWNhdXNlIHRoZXkgYXJlIGlycmVsZXZhbnQgYXQKKwkJCSAqIHJ1bnRpbWUuICBB bHNvIGlnbm9yZSB0aGUgcm93bWFya3MgYmVsb25naW5nIHRvIGNoaWxkIHRhYmxlcworCQkJICog dGhhdCBoYXZlIGJlZW4gcHJ1bmVkIGluIEV4ZWNEb0luaXRpYWxQcnVuaW5nKCkuCisJCQkgKi8K KwkJCWlmIChyYy0+aXNQYXJlbnQgfHwKKwkJCQkhYm1zX2lzX21lbWJlcihyYy0+cnRpLCBlc3Rh dGUtPmVzX3VucHJ1bmFibGVfcmVsaWRzKSkKIAkJCQljb250aW51ZTsKIAogCQkJLyogZ2V0IHJl bGF0aW9uJ3MgT0lEICh3aWxsIHByb2R1Y2UgSW52YWxpZE9pZCBpZiBzdWJxdWVyeSkgKi8KQEAg LTI5NTksNiArMzAxOSwxMyBAQCBFdmFsUGxhblF1YWxTdGFydChFUFFTdGF0ZSAqZXBxc3RhdGUs IFBsYW4gKnBsYW5UcmVlKQogCQl9CiAJfQogCisJLyoKKwkgKiBDb3B5IGVzX3VucHJ1bmFibGVf cmVsaWRzIHNvIHRoYXQgUm93TWFya3Mgb2YgcHJ1bmVkIHJlbGF0aW9ucyBhcmUKKwkgKiBpZ25v cmVkIGluIEV4ZWNJbml0TG9ja1Jvd3MoKSBhbmQgRXhlY0luaXRNb2RpZnlUYWJsZSgpIHdoZW4K KwkgKiBpbml0aWFsaXppbmcgdGhlIHBsYW4gdHJlZXMgYmVsb3cuCisJICovCisJcmNlc3RhdGUt PmVzX3VucHJ1bmFibGVfcmVsaWRzID0gcGFyZW50ZXN0YXRlLT5lc191bnBydW5hYmxlX3JlbGlk czsKKwogCS8qCiAJICogSW5pdGlhbGl6ZSBwcml2YXRlIHN0YXRlIGluZm9ybWF0aW9uIGZvciBl YWNoIFN1YlBsYW4uICBXZSBtdXN0IGRvIHRoaXMKIAkgKiBiZWZvcmUgcnVubmluZyBFeGVjSW5p dE5vZGUgb24gdGhlIG1haW4gcXVlcnkgdHJlZSwgc2luY2UKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Bh cmFsbGVsLmMKaW5kZXggYjAxYTJmZGZkZC4uNzUxOWM5YTg2MCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY1BhcmFsbGVsLmMKQEAgLTEyNTcsOCArMTI1NywxNSBAQCBFeGVjUGFyYWxsZWxHZXRRdWVy eURlc2Moc2htX3RvYyAqdG9jLCBEZXN0UmVjZWl2ZXIgKnJlY2VpdmVyLAogCXBhcmFtc3BhY2Ug PSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9QQVJBTUxJU1RJTkZPLCBmYWxzZSk7 CiAJcGFyYW1MSSA9IFJlc3RvcmVQYXJhbUxpc3QoJnBhcmFtc3BhY2UpOwogCi0JLyogQ3JlYXRl IGEgUXVlcnlEZXNjIGZvciB0aGUgcXVlcnkuICovCisJLyoKKwkgKiBDcmVhdGUgYSBRdWVyeURl c2MgZm9yIHRoZSBxdWVyeS4gIFdlIHBhc3MgTlVMTCBmb3IgY2FjaGVkcGxhbiwgYmVjYXVzZQor CSAqIHdlIGRvbid0IGhhdmUgYSBwb2ludGVyIHRvIHRoZSBDYWNoZWRQbGFuIGluIHRoZSBsZWFk ZXIncyBwcm9jZXNzLiBJdCdzCisJICogZmluZSBiZWNhdXNlIHRoZSBvbmx5IHJlYXNvbiB0aGUg ZXhlY3V0b3IgbmVlZHMgdG8gc2VlIGl0IGlzIHRvIGRlY2lkZQorCSAqIGlmIGl0IHNob3VsZCB0 YWtlIGxvY2tzIG9uIGNlcnRhaW4gcmVsYXRpb25zLCBidXQgcGFyYWxsZXIgd29ya2VycworCSAq IGFsd2F5cyB0YWtlIGxvY2tzIGFueXdheS4KKwkgKi8KIAlyZXR1cm4gQ3JlYXRlUXVlcnlEZXNj KHBzdG10LAorCQkJCQkJICAgTlVMTCwKIAkJCQkJCSAgIHF1ZXJ5U3RyaW5nLAogCQkJCQkJICAg R2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJICAgcmVjZWl2ZXIs IHBhcmFtTEksIE5VTEwsIGluc3RydW1lbnRfb3B0aW9ucyk7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj UGFydGl0aW9uLmMKaW5kZXggZDlmYTU5Mzc4NS4uNTUxZTBjZTliMiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNQYXJ0aXRpb24uYwpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgInBhcnRpdGlv bmluZy9wYXJ0ZGVzYy5oIgogI2luY2x1ZGUgInBhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuaCIKICNp bmNsdWRlICJyZXdyaXRlL3Jld3JpdGVNYW5pcC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5o IgogI2luY2x1ZGUgInV0aWxzL2FjbC5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgog I2luY2x1ZGUgInV0aWxzL3BhcnRjYWNoZS5oIgpAQCAtMTk0LDcgKzE5NSw4IEBAIHN0YXRpYyB2 b2lkIGZpbmRfbWF0Y2hpbmdfc3VicGxhbnNfcmVjdXJzZShQbGFuU3RhdGUgKnBhcmVudF9wbGFu LAogCQkJCQkJCQkJCSAgIFBhcnRpdGlvblBydW5pbmdEYXRhICpwcnVuZWRhdGEsCiAJCQkJCQkJ CQkJICAgUGFydGl0aW9uZWRSZWxQcnVuaW5nRGF0YSAqcHBydW5lLAogCQkJCQkJCQkJCSAgIGJv b2wgaW5pdGlhbF9wcnVuZSwKLQkJCQkJCQkJCQkgICBCaXRtYXBzZXQgKip2YWxpZHN1YnBsYW5z KTsKKwkJCQkJCQkJCQkgICBCaXRtYXBzZXQgKip2YWxpZHN1YnBsYW5zLAorCQkJCQkJCQkJCSAg IEJpdG1hcHNldCAqKnZhbGlkc3VicGxhbl9ydGlzKTsKIAogCiAvKgpAQCAtMTk3OCw4ICsxOTgw LDggQEAgRXhlY0NyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoRVN0YXRlICplc3RhdGUsIFBhcnRp dGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvKQogCQkJICogVGhlIHNldCBvZiBwYXJ0aXRpb25zIHRo YXQgZXhpc3Qgbm93IG1pZ2h0IG5vdCBiZSB0aGUgc2FtZSB0aGF0CiAJCQkgKiBleGlzdGVkIHdo ZW4gdGhlIHBsYW4gd2FzIG1hZGUuICBUaGUgbm9ybWFsIGNhc2UgaXMgdGhhdCBpdCBpczsKIAkJ CSAqIG9wdGltaXplIGZvciB0aGF0IGNhc2Ugd2l0aCBhIHF1aWNrIGNvbXBhcmlzb24sIGFuZCBq dXN0IGNvcHkKLQkJCSAqIHRoZSBzdWJwbGFuX21hcCBhbmQgbWFrZSBzdWJwYXJ0X21hcCBwb2lu dCB0byB0aGUgb25lIGluCi0JCQkgKiBQcnVuZUluZm8uCisJCQkgKiB0aGUgc3VicGxhbl9tYXAg YW5kIG1ha2Ugc3VicGFydF9tYXAsIHJ0aV9tYXAgcG9pbnQgdG8gdGhlCisJCQkgKiBvbmVzIGlu IFBydW5lSW5mby4KIAkJCSAqCiAJCQkgKiBGb3IgdGhlIGNhc2Ugd2hlcmUgdGhleSBhcmVuJ3Qg aWRlbnRpY2FsLCB3ZSBjb3VsZCBoYXZlIG1vcmUKIAkJCSAqIHBhcnRpdGlvbnMgb24gZWl0aGVy IHNpZGU7IG9yIGV2ZW4gZXhhY3RseSB0aGUgc2FtZSBudW1iZXIgb2YKQEAgLTE5OTksNiArMjAw MSw3IEBAIEV4ZWNDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKEVTdGF0ZSAqZXN0YXRlLCBQYXJ0 aXRpb25QcnVuZUluZm8gKnBydW5laW5mbykKIAkJCQkJICAgc2l6ZW9mKGludCkgKiBwYXJ0ZGVz Yy0+bnBhcnRzKSA9PSAwKQogCQkJewogCQkJCXBwcnVuZS0+c3VicGFydF9tYXAgPSBwaW5mby0+ c3VicGFydF9tYXA7CisJCQkJcHBydW5lLT5ydGlfbWFwID0gcGluZm8tPnJ0aV9tYXA7CiAJCQkJ bWVtY3B5KHBwcnVuZS0+c3VicGxhbl9tYXAsIHBpbmZvLT5zdWJwbGFuX21hcCwKIAkJCQkJICAg c2l6ZW9mKGludCkgKiBwaW5mby0+bnBhcnRzKTsKIAkJCX0KQEAgLTIwMTksNiArMjAyMiw3IEBA IEV4ZWNDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKEVTdGF0ZSAqZXN0YXRlLCBQYXJ0aXRpb25Q cnVuZUluZm8gKnBydW5laW5mbykKIAkJCQkgKiBtaXNtYXRjaGVzLgogCQkJCSAqLwogCQkJCXBw cnVuZS0+c3VicGFydF9tYXAgPSBwYWxsb2Moc2l6ZW9mKGludCkgKiBwYXJ0ZGVzYy0+bnBhcnRz KTsKKwkJCQlwcHJ1bmUtPnJ0aV9tYXAgPSBwYWxsb2Moc2l6ZW9mKGludCkgKiBwYXJ0ZGVzYy0+ bnBhcnRzKTsKIAogCQkJCWZvciAocHBfaWR4ID0gMDsgcHBfaWR4IDwgcGFydGRlc2MtPm5wYXJ0 czsgcHBfaWR4KyspCiAJCQkJewpAQCAtMjAzNiw2ICsyMDQwLDggQEAgRXhlY0NyZWF0ZVBhcnRp dGlvblBydW5lU3RhdGUoRVN0YXRlICplc3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVp bmZvKQogCQkJCQkJCXBpbmZvLT5zdWJwbGFuX21hcFtwZF9pZHhdOwogCQkJCQkJcHBydW5lLT5z dWJwYXJ0X21hcFtwcF9pZHhdID0KIAkJCQkJCQlwaW5mby0+c3VicGFydF9tYXBbcGRfaWR4XTsK KwkJCQkJCXBwcnVuZS0+cnRpX21hcFtwcF9pZHhdID0KKwkJCQkJCQlwaW5mby0+cnRpX21hcFtw ZF9pZHhdOwogCQkJCQkJcGRfaWR4Kys7CiAJCQkJCQljb250aW51ZTsKIAkJCQkJfQpAQCAtMjA3 Myw2ICsyMDc5LDcgQEAgRXhlY0NyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoRVN0YXRlICplc3Rh dGUsIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvKQogCiAJCQkJCXBwcnVuZS0+c3VicGFy dF9tYXBbcHBfaWR4XSA9IC0xOwogCQkJCQlwcHJ1bmUtPnN1YnBsYW5fbWFwW3BwX2lkeF0gPSAt MTsKKwkJCQkJcHBydW5lLT5ydGlfbWFwW3BwX2lkeF0gPSAwOwogCQkJCX0KIAkJCX0KIApAQCAt MjMzOSwxMCArMjM0NiwxMyBAQCBQYXJ0aXRpb25QcnVuZUZpeFN1YlBsYW5NYXAoUGFydGl0aW9u UHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKICAqIFBhc3MgaW5pdGlhbF9wcnVuZSBpZiBQQVJBTV9F WEVDIFBhcmFtcyBjYW5ub3QgeWV0IGJlIGV2YWx1YXRlZC4gIFRoaXMKICAqIGRpZmZlcmVudGlh dGVzIHRoZSBpbml0aWFsIGV4ZWN1dG9yLXRpbWUgcHJ1bmluZyBzdGVwIGZyb20gbGF0ZXIKICAq IHJ1bnRpbWUgcHJ1bmluZy4KKyAqCisgKiB2YWxpc3VicGxhbl9ydGlzIG11c3QgYmUgbm9uLU5V TEwgaWYgaW5pdGlhbF9wcnVuaW5nIGlzIHRydWUuCiAgKi8KIEJpdG1hcHNldCAqCiBFeGVjRmlu ZE1hdGNoaW5nU3ViUGxhbnMoUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKLQkJCQkJ CSBib29sIGluaXRpYWxfcHJ1bmUpCisJCQkJCQkgYm9vbCBpbml0aWFsX3BydW5lLAorCQkJCQkJ IEJpdG1hcHNldCAqKnZhbGlkc3VicGxhbl9ydGlzKQogewogCUJpdG1hcHNldCAgKnJlc3VsdCA9 IE5VTEw7CiAJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OwpAQCAtMjM3OCw3ICsyMzg4LDcgQEAg RXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKFBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGUs CiAJCXBwcnVuZSA9ICZwcnVuZWRhdGEtPnBhcnRyZWxwcnVuZWRhdGFbMF07CiAJCWZpbmRfbWF0 Y2hpbmdfc3VicGxhbnNfcmVjdXJzZShwcnVuZXN0YXRlLT5wYXJlbnRfcGxhbiwKIAkJCQkJCQkJ CSAgIHBydW5lZGF0YSwgcHBydW5lLCBpbml0aWFsX3BydW5lLAotCQkJCQkJCQkJICAgJnJlc3Vs dCk7CisJCQkJCQkJCQkgICAmcmVzdWx0LCB2YWxpZHN1YnBsYW5fcnRpcyk7CiAKIAkJLyogRXhw cmVzc2lvbiBldmFsIG1heSBoYXZlIHVzZWQgc3BhY2UgaW4gRXhwckNvbnRleHQgdG9vICovCiAJ CWlmIChwcHJ1bmUtPmV4ZWNfY29udGV4dC5pc192YWxpZCkKQEAgLTIzOTUsNiArMjQwNSw4IEBA IEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRl LAogCiAJLyogQ29weSByZXN1bHQgb3V0IG9mIHRoZSB0ZW1wIGNvbnRleHQgYmVmb3JlIHdlIHJl c2V0IGl0ICovCiAJcmVzdWx0ID0gYm1zX2NvcHkocmVzdWx0KTsKKwlpZiAodmFsaWRzdWJwbGFu X3J0aXMpCisJCSp2YWxpZHN1YnBsYW5fcnRpcyA9IGJtc19jb3B5KCp2YWxpZHN1YnBsYW5fcnRp cyk7CiAKIAlNZW1vcnlDb250ZXh0UmVzZXQocHJ1bmVzdGF0ZS0+cHJ1bmVfY29udGV4dCk7CiAK QEAgLTI0MDUsMTQgKzI0MTcsMTYgQEAgRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKFBhcnRpdGlv blBydW5lU3RhdGUgKnBydW5lc3RhdGUsCiAgKiBmaW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vy c2UKICAqCQlSZWN1cnNpdmUgd29ya2VyIGZ1bmN0aW9uIGZvciBFeGVjRmluZE1hdGNoaW5nU3Vi UGxhbnMKICAqCi0gKiBBZGRzIHZhbGlkIChub24tcHJ1bmFibGUpIHN1YnBsYW4gSURzIHRvICp2 YWxpZHN1YnBsYW5zCisgKiBBZGRzIHZhbGlkIChub24tcHJ1bmFibGUpIHN1YnBsYW4gSURzIHRv ICp2YWxpZHN1YnBsYW5zIGFuZCB0aGUgUlQgaW5kZXhlcworICogb2YgdGhlaXIgb3duaW5nIGxl YWYgcGFydGl0aW9ucyB0byAqdmFsaWRzdWJwbGFuX3J0aXMgaWYgaXQncyBub24tTlVMTC4KICAq Lwogc3RhdGljIHZvaWQKIGZpbmRfbWF0Y2hpbmdfc3VicGxhbnNfcmVjdXJzZShQbGFuU3RhdGUg KnBhcmVudF9wbGFuLAogCQkJCQkJCSAgIFBhcnRpdGlvblBydW5pbmdEYXRhICpwcnVuZWRhdGEs CiAJCQkJCQkJICAgUGFydGl0aW9uZWRSZWxQcnVuaW5nRGF0YSAqcHBydW5lLAogCQkJCQkJCSAg IGJvb2wgaW5pdGlhbF9wcnVuZSwKLQkJCQkJCQkgICBCaXRtYXBzZXQgKip2YWxpZHN1YnBsYW5z KQorCQkJCQkJCSAgIEJpdG1hcHNldCAqKnZhbGlkc3VicGxhbnMsCisJCQkJCQkJICAgQml0bWFw c2V0ICoqdmFsaWRzdWJwbGFuX3J0aXMpCiB7CiAJQml0bWFwc2V0ICAqcGFydHNldDsKIAlpbnQJ CQlpOwpAQCAtMjQ2NCw4ICsyNDc4LDEzIEBAIGZpbmRfbWF0Y2hpbmdfc3VicGxhbnNfcmVjdXJz ZShQbGFuU3RhdGUgKnBhcmVudF9wbGFuLAogCXdoaWxlICgoaSA9IGJtc19uZXh0X21lbWJlcihw YXJ0c2V0LCBpKSkgPj0gMCkKIAl7CiAJCWlmIChwcHJ1bmUtPnN1YnBsYW5fbWFwW2ldID49IDAp CisJCXsKIAkJCSp2YWxpZHN1YnBsYW5zID0gYm1zX2FkZF9tZW1iZXIoKnZhbGlkc3VicGxhbnMs CiAJCQkJCQkJCQkJCXBwcnVuZS0+c3VicGxhbl9tYXBbaV0pOworCQkJaWYgKHZhbGlkc3VicGxh bl9ydGlzKQorCQkJCSp2YWxpZHN1YnBsYW5fcnRpcyA9IGJtc19hZGRfbWVtYmVyKCp2YWxpZHN1 YnBsYW5fcnRpcywKKwkJCQkJCQkJCQkJCQlwcHJ1bmUtPnJ0aV9tYXBbaV0pOworCQl9CiAJCWVs c2UKIAkJewogCQkJaW50CQkJcGFydGlkeCA9IHBwcnVuZS0+c3VicGFydF9tYXBbaV07CkBAIC0y NDc0LDcgKzI0OTMsOCBAQCBmaW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UoUGxhblN0YXRl ICpwYXJlbnRfcGxhbiwKIAkJCQlmaW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UocGFyZW50 X3BsYW4sCiAJCQkJCQkJCQkJCSAgIHBydW5lZGF0YSwKIAkJCQkJCQkJCQkJICAgJnBydW5lZGF0 YS0+cGFydHJlbHBydW5lZGF0YVtwYXJ0aWR4XSwKLQkJCQkJCQkJCQkJICAgaW5pdGlhbF9wcnVu ZSwgdmFsaWRzdWJwbGFucyk7CisJCQkJCQkJCQkJCSAgIGluaXRpYWxfcHJ1bmUsIHZhbGlkc3Vi cGxhbnMsCisJCQkJCQkJCQkJCSAgIHZhbGlkc3VicGxhbl9ydGlzKTsKIAkJCWVsc2UKIAkJCXsK IAkJCQkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYwppbmRleCA2OTI4NTRlMmIzLi42ZjZmNDVl MGFkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYworKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYwpAQCAtODQwLDYgKzg0MCw3IEBAIHBvc3Rx dWVsX3N0YXJ0KGV4ZWN1dGlvbl9zdGF0ZSAqZXMsIFNRTEZ1bmN0aW9uQ2FjaGVQdHIgZmNhY2hl KQogCQlkZXN0ID0gTm9uZV9SZWNlaXZlcjsKIAogCWVzLT5xZCA9IENyZWF0ZVF1ZXJ5RGVzYyhl cy0+c3RtdCwKKwkJCQkJCQkgTlVMTCwKIAkJCQkJCQkgZmNhY2hlLT5zcmMsCiAJCQkJCQkJIEdl dEFjdGl2ZVNuYXBzaG90KCksCiAJCQkJCQkJIEludmFsaWRTbmFwc2hvdCwKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVBcHBlbmQuYwppbmRleCBkZTdlYmFiNWMyLi4wMDZiZGFmYWVhIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUFwcGVuZC5jCkBAIC01ODEsNyArNTgxLDcgQEAgY2hvb3NlX25leHRfc3VicGxhbl9s b2NhbGx5KEFwcGVuZFN0YXRlICpub2RlKQogCQllbHNlIGlmICghbm9kZS0+YXNfdmFsaWRfc3Vi cGxhbnNfaWRlbnRpZmllZCkKIAkJewogCQkJbm9kZS0+YXNfdmFsaWRfc3VicGxhbnMgPQotCQkJ CUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhub2RlLT5hc19wcnVuZV9zdGF0ZSwgZmFsc2UpOwor CQkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhub2RlLT5hc19wcnVuZV9zdGF0ZSwgZmFsc2Us IE5VTEwpOwogCQkJbm9kZS0+YXNfdmFsaWRfc3VicGxhbnNfaWRlbnRpZmllZCA9IHRydWU7CiAJ CX0KIApAQCAtNjQ4LDcgKzY0OCw3IEBAIGNob29zZV9uZXh0X3N1YnBsYW5fZm9yX2xlYWRlcihB cHBlbmRTdGF0ZSAqbm9kZSkKIAkJaWYgKCFub2RlLT5hc192YWxpZF9zdWJwbGFuc19pZGVudGlm aWVkKQogCQl7CiAJCQlub2RlLT5hc192YWxpZF9zdWJwbGFucyA9Ci0JCQkJRXhlY0ZpbmRNYXRj aGluZ1N1YlBsYW5zKG5vZGUtPmFzX3BydW5lX3N0YXRlLCBmYWxzZSk7CisJCQkJRXhlY0ZpbmRN YXRjaGluZ1N1YlBsYW5zKG5vZGUtPmFzX3BydW5lX3N0YXRlLCBmYWxzZSwgTlVMTCk7CiAJCQlu b2RlLT5hc192YWxpZF9zdWJwbGFuc19pZGVudGlmaWVkID0gdHJ1ZTsKIAogCQkJLyoKQEAgLTcy NCw3ICs3MjQsNyBAQCBjaG9vc2VfbmV4dF9zdWJwbGFuX2Zvcl93b3JrZXIoQXBwZW5kU3RhdGUg Km5vZGUpCiAJZWxzZSBpZiAoIW5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zX2lkZW50aWZpZWQpCiAJ ewogCQlub2RlLT5hc192YWxpZF9zdWJwbGFucyA9Ci0JCQlFeGVjRmluZE1hdGNoaW5nU3ViUGxh bnMobm9kZS0+YXNfcHJ1bmVfc3RhdGUsIGZhbHNlKTsKKwkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQ bGFucyhub2RlLT5hc19wcnVuZV9zdGF0ZSwgZmFsc2UsIE5VTEwpOwogCQlub2RlLT5hc192YWxp ZF9zdWJwbGFuc19pZGVudGlmaWVkID0gdHJ1ZTsKIAogCQltYXJrX2ludmFsaWRfc3VicGxhbnNf YXNfZmluaXNoZWQobm9kZSk7CkBAIC04NzcsNyArODc3LDcgQEAgRXhlY0FwcGVuZEFzeW5jQmVn aW4oQXBwZW5kU3RhdGUgKm5vZGUpCiAJaWYgKCFub2RlLT5hc192YWxpZF9zdWJwbGFuc19pZGVu dGlmaWVkKQogCXsKIAkJbm9kZS0+YXNfdmFsaWRfc3VicGxhbnMgPQotCQkJRXhlY0ZpbmRNYXRj aGluZ1N1YlBsYW5zKG5vZGUtPmFzX3BydW5lX3N0YXRlLCBmYWxzZSk7CisJCQlFeGVjRmluZE1h dGNoaW5nU3ViUGxhbnMobm9kZS0+YXNfcHJ1bmVfc3RhdGUsIGZhbHNlLCBOVUxMKTsKIAkJbm9k ZS0+YXNfdmFsaWRfc3VicGxhbnNfaWRlbnRpZmllZCA9IHRydWU7CiAKIAkJY2xhc3NpZnlfbWF0 Y2hpbmdfc3VicGxhbnMobm9kZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlTG9ja1Jvd3MuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMb2NrUm93cy5jCmluZGV4 IDQxNzU0ZGRmZWEuLmI1YjJjZDUzYzUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVMb2NrUm93cy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMb2NrUm93cy5j CkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiZm9yZWlnbi9mZHdhcGkuaCIKICNpbmNsdWRl ICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKKyNpbmNsdWRlICJ1dGlscy9s c3lzY2FjaGUuaCIKIAogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0zNDcsOCArMzQ4LDEzIEBAIEV4ZWNJbml0 TG9ja1Jvd3MoTG9ja1Jvd3MgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQlF eGVjUm93TWFyayAqZXJtOwogCQlFeGVjQXV4Um93TWFyayAqYWVybTsKIAotCQkvKiBpZ25vcmUg InBhcmVudCIgcm93bWFya3M7IHRoZXkgYXJlIGlycmVsZXZhbnQgYXQgcnVudGltZSAqLwotCQlp ZiAocmMtPmlzUGFyZW50KQorCQkvKgorCQkgKiBJZ25vcmUgInBhcmVudCIgcm93bWFya3MsIGJl Y2F1c2UgdGhleSBhcmUgaXJyZWxldmFudCBhdAorCQkgKiBydW50aW1lLiAgQWxzbyBpZ25vcmUg dGhlIHJvd21hcmtzIGJlbG9uZ2luZyB0byBjaGlsZCB0YWJsZXMKKwkJICogdGhhdCBoYXZlIGJl ZW4gcHJ1bmVkIGluIEV4ZWNEb0luaXRpYWxQcnVuaW5nKCkuCisJCSAqLworCQlpZiAocmMtPmlz UGFyZW50IHx8CisJCQkhYm1zX2lzX21lbWJlcihyYy0+cnRpLCBlc3RhdGUtPmVzX3VucHJ1bmFi bGVfcmVsaWRzKSkKIAkJCWNvbnRpbnVlOwogCiAJCS8qIGZpbmQgRXhlY1Jvd01hcmsgYW5kIGJ1 aWxkIEV4ZWNBdXhSb3dNYXJrICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlTWVyZ2VBcHBlbmQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5j CmluZGV4IDNlZDkxODA4ZGQuLmY3ODIxYWExNzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVN ZXJnZUFwcGVuZC5jCkBAIC0yMTksNyArMjE5LDcgQEAgRXhlY01lcmdlQXBwZW5kKFBsYW5TdGF0 ZSAqcHN0YXRlKQogCQkgKi8KIAkJaWYgKG5vZGUtPm1zX3ZhbGlkX3N1YnBsYW5zID09IE5VTEwp CiAJCQlub2RlLT5tc192YWxpZF9zdWJwbGFucyA9Ci0JCQkJRXhlY0ZpbmRNYXRjaGluZ1N1YlBs YW5zKG5vZGUtPm1zX3BydW5lX3N0YXRlLCBmYWxzZSk7CisJCQkJRXhlY0ZpbmRNYXRjaGluZ1N1 YlBsYW5zKG5vZGUtPm1zX3BydW5lX3N0YXRlLCBmYWxzZSwgTlVMTCk7CiAKIAkJLyoKIAkJICog Rmlyc3QgdGltZSB0aHJvdWdoOiBwdWxsIHRoZSBmaXJzdCB0dXBsZSBmcm9tIGVhY2ggdmFsaWQg c3VicGxhbiwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJs ZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKaW5kZXggOGJmNGM4 MGQ0YS4uM2MwMjc4MjQ0NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1v ZGlmeVRhYmxlLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMK QEAgLTQxNzYsMTIgKzQxNzYsMTcgQEAgRXhlY0xvb2t1cFJlc3VsdFJlbEJ5T2lkKE1vZGlmeVRh YmxlU3RhdGUgKm5vZGUsIE9pZCByZXN1bHRvaWQsCiAJCQloYXNoX3NlYXJjaChub2RlLT5tdF9y ZXN1bHRPaWRIYXNoLCAmcmVzdWx0b2lkLCBIQVNIX0ZJTkQsIE5VTEwpOwogCQlpZiAobXRsb29r dXApCiAJCXsKKwkJCVJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm87CisKIAkJCWlmICh1cGRh dGVfY2FjaGUpCiAJCQl7CiAJCQkJbm9kZS0+bXRfbGFzdFJlc3VsdE9pZCA9IHJlc3VsdG9pZDsK IAkJCQlub2RlLT5tdF9sYXN0UmVzdWx0SW5kZXggPSBtdGxvb2t1cC0+cmVsYXRpb25JbmRleDsK IAkJCX0KLQkJCXJldHVybiBub2RlLT5yZXN1bHRSZWxJbmZvICsgbXRsb29rdXAtPnJlbGF0aW9u SW5kZXg7CisKKwkJCXJlc3VsdFJlbEluZm8gPSBub2RlLT5yZXN1bHRSZWxJbmZvICsgbXRsb29r dXAtPnJlbGF0aW9uSW5kZXg7CisKKwkJCXJldHVybiByZXN1bHRSZWxJbmZvOwogCQl9CiAJfQog CWVsc2UKQEAgLTQyMTgsNyArNDIyMyw4IEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFi bGUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCU1vZGlmeVRhYmxlU3RhdGUg Km10c3RhdGU7CiAJUGxhbgkgICAqc3VicGxhbiA9IG91dGVyUGxhbihub2RlKTsKIAlDbWRUeXBl CQlvcGVyYXRpb24gPSBub2RlLT5vcGVyYXRpb247Ci0JaW50CQkJbnJlbHMgPSBsaXN0X2xlbmd0 aChub2RlLT5yZXN1bHRSZWxhdGlvbnMpOworCWludAkJCW5yZWxzOworCUxpc3QJICAgKnJlc3Vs dFJlbGF0aW9ucyA9IE5JTDsKIAlSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvOwogCUxpc3QJ ICAgKmFyb3dtYXJrczsKIAlMaXN0Q2VsbCAgICpsOwpAQCAtNDIyOCw2ICs0MjM0LDIwIEBAIEV4 ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQg ZWZsYWdzKQogCS8qIGNoZWNrIGZvciB1bnN1cHBvcnRlZCBmbGFncyAqLwogCUFzc2VydCghKGVm bGFncyAmIChFWEVDX0ZMQUdfQkFDS1dBUkQgfCBFWEVDX0ZMQUdfTUFSSykpKTsKIAorCS8qCisJ ICogT25seSBjb25zaWRlciB1bnBydW5lZCByZWxhdGlvbnMuIEluIHRoZSBmdXR1cmUsIGl0IG1p Z2h0IGJlIG1vcmUKKwkgKiBlZmZpY2llbnQgdG8gc3RvcmUgcmVzdWx0UmVsYXRpb25zIGFzIGEg Yml0bWFwc2V0LCB3aGljaCB3b3VsZCBtYWtlCisJICogdGhpcyBvcGVyYXRpb24gY2hlYXBlci4K KwkgKi8KKwlmb3JlYWNoKGwsIG5vZGUtPnJlc3VsdFJlbGF0aW9ucykKKwl7CisJCUluZGV4CXJ0 aSA9IGxmaXJzdF9pbnQobCk7CisKKwkJaWYgKGJtc19pc19tZW1iZXIocnRpLCBlc3RhdGUtPmVz X3VucHJ1bmFibGVfcmVsaWRzKSkKKwkJCXJlc3VsdFJlbGF0aW9ucyA9IGxhcHBlbmRfaW50KHJl c3VsdFJlbGF0aW9ucywgcnRpKTsKKwl9CisJbnJlbHMgPSBsaXN0X2xlbmd0aChyZXN1bHRSZWxh dGlvbnMpOworCiAJLyoKIAkgKiBjcmVhdGUgc3RhdGUgc3RydWN0dXJlCiAJICovCkBAIC00MjY1 LDYgKzQyODUsNyBAQCBFeGVjSW5pdE1vZGlmeVRhYmxlKE1vZGlmeVRhYmxlICpub2RlLCBFU3Rh dGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKi8KIAlpZiAobm9kZS0+cm9vdFJlbGF0aW9uID4g MCkKIAl7CisJCUFzc2VydChibXNfaXNfbWVtYmVyKG5vZGUtPnJvb3RSZWxhdGlvbiwgZXN0YXRl LT5lc191bnBydW5hYmxlX3JlbGlkcykpOwogCQltdHN0YXRlLT5yb290UmVzdWx0UmVsSW5mbyA9 IG1ha2VOb2RlKFJlc3VsdFJlbEluZm8pOwogCQlFeGVjSW5pdFJlc3VsdFJlbGF0aW9uKGVzdGF0 ZSwgbXRzdGF0ZS0+cm9vdFJlc3VsdFJlbEluZm8sCiAJCQkJCQkJICAgbm9kZS0+cm9vdFJlbGF0 aW9uKTsKQEAgLTQyNzksNyArNDMwMCw3IEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFi bGUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCiAJLyogc2V0IHVwIGVwcXN0 YXRlIHdpdGggZHVtbXkgc3VicGxhbiBkYXRhIGZvciB0aGUgbW9tZW50ICovCiAJRXZhbFBsYW5R dWFsSW5pdCgmbXRzdGF0ZS0+bXRfZXBxc3RhdGUsIGVzdGF0ZSwgTlVMTCwgTklMLAotCQkJCQkg bm9kZS0+ZXBxUGFyYW0sIG5vZGUtPnJlc3VsdFJlbGF0aW9ucyk7CisJCQkJCSBub2RlLT5lcHFQ YXJhbSwgcmVzdWx0UmVsYXRpb25zKTsKIAltdHN0YXRlLT5maXJlQlNUcmlnZ2VycyA9IHRydWU7 CiAKIAkvKgpAQCAtNDI5Nyw3ICs0MzE4LDcgQEAgRXhlY0luaXRNb2RpZnlUYWJsZShNb2RpZnlU YWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICovCiAJcmVzdWx0UmVs SW5mbyA9IG10c3RhdGUtPnJlc3VsdFJlbEluZm87CiAJaSA9IDA7Ci0JZm9yZWFjaChsLCBub2Rl LT5yZXN1bHRSZWxhdGlvbnMpCisJZm9yZWFjaChsLCByZXN1bHRSZWxhdGlvbnMpCiAJewogCQlJ bmRleAkJcmVzdWx0UmVsYXRpb24gPSBsZmlyc3RfaW50KGwpOwogCQlMaXN0CSAgICptZXJnZUFj dGlvbnMgPSBOSUw7CkBAIC00NTg5LDggKzQ2MTAsMTMgQEAgRXhlY0luaXRNb2RpZnlUYWJsZShN b2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCUV4ZWNSb3dN YXJrICplcm07CiAJCUV4ZWNBdXhSb3dNYXJrICphZXJtOwogCi0JCS8qIGlnbm9yZSAicGFyZW50 IiByb3dtYXJrczsgdGhleSBhcmUgaXJyZWxldmFudCBhdCBydW50aW1lICovCi0JCWlmIChyYy0+ aXNQYXJlbnQpCisJCS8qCisJCSAqIElnbm9yZSAicGFyZW50IiByb3dtYXJrcywgYmVjYXVzZSB0 aGV5IGFyZSBpcnJlbGV2YW50IGF0CisJCSAqIHJ1bnRpbWUuICBBbHNvIGlnbm9yZSB0aGUgcm93 bWFya3MgYmVsb25naW5nIHRvIGNoaWxkIHRhYmxlcworCQkgKiB0aGF0IGhhdmUgYmVlbiBwcnVu ZWQgaW4gRXhlY0RvSW5pdGlhbFBydW5pbmcoKS4KKwkJICovCisJCWlmIChyYy0+aXNQYXJlbnQg fHwKKwkJCSFibXNfaXNfbWVtYmVyKHJjLT5ydGksIGVzdGF0ZS0+ZXNfdW5wcnVuYWJsZV9yZWxp ZHMpKQogCQkJY29udGludWU7CiAKIAkJLyogRmluZCBFeGVjUm93TWFyayBhbmQgYnVpbGQgRXhl Y0F1eFJvd01hcmsgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKaW5kZXggOTBkOTgzNDU3Ni4uNjU5YmQ2ZGNkOSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKKysrIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivc3BpLmMKQEAgLTI2ODQsNiArMjY4NCw3IEBAIF9TUElfZXhlY3V0ZV9wbGFuKFNQ SVBsYW5QdHIgcGxhbiwgY29uc3QgU1BJRXhlY3V0ZU9wdGlvbnMgKm9wdGlvbnMsCiAJCQkJCXNu YXAgPSBJbnZhbGlkU25hcHNob3Q7CiAKIAkJCQlxZGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhzdG10 LAorCQkJCQkJCQkJCWNwbGFuLAogCQkJCQkJCQkJCXBsYW5zb3VyY2UtPnF1ZXJ5X3N0cmluZywK IAkJCQkJCQkJCQlzbmFwLCBjcm9zc2NoZWNrX3NuYXBzaG90LAogCQkJCQkJCQkJCWRlc3QsCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgYi9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKaW5kZXggMWI5MDcxYzc3NC4uOWU0N2E3ZmQ1 MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCisrKyBi L3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwpAQCAtNTQ5LDYgKzU0OSw4IEBA IHN0YW5kYXJkX3BsYW5uZXIoUXVlcnkgKnBhcnNlLCBjb25zdCBjaGFyICpxdWVyeV9zdHJpbmcs IGludCBjdXJzb3JPcHRpb25zLAogCXJlc3VsdC0+cGxhblRyZWUgPSB0b3BfcGxhbjsKIAlyZXN1 bHQtPnBhcnRQcnVuZUluZm9zID0gZ2xvYi0+cGFydFBydW5lSW5mb3M7CiAJcmVzdWx0LT5ydGFi bGUgPSBnbG9iLT5maW5hbHJ0YWJsZTsKKwlyZXN1bHQtPnVucHJ1bmFibGVSZWxpZHMgPSBibXNf ZGlmZmVyZW5jZShibXNfYWRkX3JhbmdlKE5VTEwsIDEsIGxpc3RfbGVuZ3RoKHJlc3VsdC0+cnRh YmxlKSksCisJCQkJCQkJCQkJCSAgZ2xvYi0+cHJ1bmFibGVSZWxpZHMpOwogCXJlc3VsdC0+cGVy bUluZm9zID0gZ2xvYi0+ZmluYWxydGVwZXJtaW5mb3M7CiAJcmVzdWx0LT5yZXN1bHRSZWxhdGlv bnMgPSBnbG9iLT5yZXN1bHRSZWxhdGlvbnM7CiAJcmVzdWx0LT5hcHBlbmRSZWxhdGlvbnMgPSBn bG9iLT5hcHBlbmRSZWxhdGlvbnM7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv cGxhbi9zZXRyZWZzLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKaW5k ZXggZTJlYTQwNmM0ZS4uMjgzYTYxYTk3MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3BsYW4vc2V0cmVmcy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJl ZnMuYwpAQCAtMTc2NCw4ICsxNzY0LDE1IEBAIHJlZ2lzdGVyX3BhcnRwcnVuZWluZm8oUGxhbm5l ckluZm8gKnJvb3QsIGludCBwYXJ0X3BydW5lX2luZGV4LCBpbnQgcnRvZmZzZXQpCiAJCWZvcmVh Y2gobDIsIHBydW5lX2luZm9zKQogCQl7CiAJCQlQYXJ0aXRpb25lZFJlbFBydW5lSW5mbyAqcHJl bGluZm8gPSBsZmlyc3QobDIpOworCQkJaW50CQlpOwogCiAJCQlwcmVsaW5mby0+cnRpbmRleCAr PSBydG9mZnNldDsKKwkJCWZvciAoaSA9IDA7IGkgPCBwcmVsaW5mby0+bnBhcnRzOyBpKyspCisJ CQl7CisJCQkJcHJlbGluZm8tPnJ0aV9tYXBbaV0gKz0gcnRvZmZzZXQ7CisJCQkJZ2xvYi0+cHJ1 bmFibGVSZWxpZHMgPSBibXNfYWRkX21lbWJlcihnbG9iLT5wcnVuYWJsZVJlbGlkcywKKwkJCQkJ CQkJCQkJCQkgIHByZWxpbmZvLT5ydGlfbWFwW2ldKTsKKwkJCX0KIAkJfQogCX0KIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jIGIvc3JjL2JhY2tlbmQv cGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jCmluZGV4IDYwZmFiYjE3MzQuLjg1ODk0Yzg3YWYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYworKysgYi9zcmMv YmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMKQEAgLTY0NSw2ICs2NDUsNyBAQCBtYWtl X3BhcnRpdGlvbmVkcmVsX3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAq cGFyZW50cmVsLAogCQlpbnQJCSAgICpzdWJwbGFuX21hcDsKIAkJaW50CQkgICAqc3VicGFydF9t YXA7CiAJCU9pZAkJICAgKnJlbGlkX21hcDsKKwkJaW50CQkgICAqcnRpX21hcDsKIAogCQkvKgog CQkgKiBDb25zdHJ1Y3QgdGhlIHN1YnBsYW4gYW5kIHN1YnBhcnQgbWFwcyBmb3IgdGhpcyBwYXJ0 aXRpb25pbmcgbGV2ZWwuCkBAIC02NTcsNiArNjU4LDcgQEAgbWFrZV9wYXJ0aXRpb25lZHJlbF9w cnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkJc3Vi cGFydF9tYXAgPSAoaW50ICopIHBhbGxvYyhucGFydHMgKiBzaXplb2YoaW50KSk7CiAJCW1lbXNl dChzdWJwYXJ0X21hcCwgLTEsIG5wYXJ0cyAqIHNpemVvZihpbnQpKTsKIAkJcmVsaWRfbWFwID0g KE9pZCAqKSBwYWxsb2MwKG5wYXJ0cyAqIHNpemVvZihPaWQpKTsKKwkJcnRpX21hcCA9IChpbnQg KikgcGFsbG9jMChucGFydHMgKiBzaXplb2YoaW50KSk7CiAJCXByZXNlbnRfcGFydHMgPSBOVUxM OwogCiAJCWkgPSAtMTsKQEAgLTY3MSw5ICs2NzMsMjQgQEAgbWFrZV9wYXJ0aXRpb25lZHJlbF9w cnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkJCXN1 YnBsYW5fbWFwW2ldID0gc3VicGxhbmlkeCA9IHJlbGlkX3N1YnBsYW5fbWFwW3BhcnRyZWwtPnJl bGlkXSAtIDE7CiAJCQlzdWJwYXJ0X21hcFtpXSA9IHN1YnBhcnRpZHggPSByZWxpZF9zdWJwYXJ0 X21hcFtwYXJ0cmVsLT5yZWxpZF0gLSAxOwogCQkJcmVsaWRfbWFwW2ldID0gcGxhbm5lcl9ydF9m ZXRjaChwYXJ0cmVsLT5yZWxpZCwgcm9vdCktPnJlbGlkOworCisJCQkvKgorCQkJICogVHJhY2sg dGhlIFJUIGluZGV4ZXMgb2YgcGFydGl0aW9ucyB0byBlbnN1cmUgdGhleSBhcmUgaW5jbHVkZWQK KwkJCSAqIGluIHRoZSBwcnVuYWJsZVJlbGlkcyBzZXQgb2YgcmVsYXRpb25zIHRoYXQgYXJlIGxv Y2tlZCBkdXJpbmcKKwkJCSAqIGV4ZWN1dGlvbi4gVGhpcyBlbnN1cmVzIHRoYXQgaWYgdGhlIHBs YW4gaXMgY2FjaGVkLCB0aGVzZQorCQkJICogcGFydGl0aW9ucyBhcmUgbG9ja2VkIHdoZW4gdGhl IHBsYW4gaXMgcmV1c2VkLgorCQkJICoKKwkJCSAqIFBhcnRpdGlvbnMgd2l0aG91dCBhIHN1YnBs YW4gYW5kIHN1Yi1wYXJ0aXRpb25lZCBwYXJ0aXRpb25zCisJCQkgKiB3aGVyZSBub25lIG9mIHRo ZSBzdWItcGFydGl0aW9ucyBoYXZlIGEgc3VicGxhbiBkdWUgdG8KKwkJCSAqIGNvbnN0cmFpbnQg ZXhjbHVzaW9uIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhpcyBzZXQuIEluc3RlYWQsCisJCQkgKiB0 aGV5IGFyZSBhZGRlZCB0byB0aGUgdW5wcnVuYWJsZVJlbGlkcyBzZXQsIGFuZCB0aGUgcmVsYXRp b25zCisJCQkgKiBpbiB0aGlzIHNldCBhcmUgbG9ja2VkIGJ5IEFjcXVpcmVFeGVjdXRvckxvY2tz KCkgYmVmb3JlCisJCQkgKiBleGVjdXRpbmcgYSBjYWNoZWQgcGxhbi4KKwkJCSAqLwogCQkJaWYg KHN1YnBsYW5pZHggPj0gMCkKIAkJCXsKIAkJCQlwcmVzZW50X3BhcnRzID0gYm1zX2FkZF9tZW1i ZXIocHJlc2VudF9wYXJ0cywgaSk7CisJCQkJcnRpX21hcFtpXSA9IChpbnQpIHBhcnRyZWwtPnJl bGlkOwogCiAJCQkJLyogUmVjb3JkIGZpbmRpbmcgdGhpcyBzdWJwbGFuICAqLwogCQkJCXN1YnBs YW5zZm91bmQgPSBibXNfYWRkX21lbWJlcihzdWJwbGFuc2ZvdW5kLCBzdWJwbGFuaWR4KTsKQEAg LTY5NSw2ICs3MTIsNyBAQCBtYWtlX3BhcnRpdGlvbmVkcmVsX3BydW5laW5mbyhQbGFubmVySW5m byAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQlwaW5mby0+c3VicGxhbl9tYXAgPSBz dWJwbGFuX21hcDsKIAkJcGluZm8tPnN1YnBhcnRfbWFwID0gc3VicGFydF9tYXA7CiAJCXBpbmZv LT5yZWxpZF9tYXAgPSByZWxpZF9tYXA7CisJCXBpbmZvLT5ydGlfbWFwID0gcnRpX21hcDsKIAl9 CiAKIAlwZnJlZShyZWxpZF9zdWJwYXJ0X21hcCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90 Y29wL3BxdWVyeS5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYwppbmRleCBhMWY4ZDAzZGIx Li42ZThmNmIxYjhmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jCisrKyBi L3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKQEAgLTM2LDYgKzM2LDcgQEAgUG9ydGFsCQlBY3Rp dmVQb3J0YWwgPSBOVUxMOwogCiAKIHN0YXRpYyB2b2lkIFByb2Nlc3NRdWVyeShQbGFubmVkU3Rt dCAqcGxhbiwKKwkJCQkJCSBDYWNoZWRQbGFuICpjcGxhbiwKIAkJCQkJCSBjb25zdCBjaGFyICpz b3VyY2VUZXh0LAogCQkJCQkJIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJCQkJIFF1ZXJ5RW52 aXJvbm1lbnQgKnF1ZXJ5RW52LApAQCAtNjUsNiArNjYsNyBAQCBzdGF0aWMgdm9pZCBEb1BvcnRh bFJld2luZChQb3J0YWwgcG9ydGFsKTsKICAqLwogUXVlcnlEZXNjICoKIENyZWF0ZVF1ZXJ5RGVz YyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsCisJCQkJQ2FjaGVkUGxhbiAqY3BsYW4sCiAJCQkJ Y29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJCQlTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQlTbmFw c2hvdCBjcm9zc2NoZWNrX3NuYXBzaG90LApAQCAtNzcsNiArNzksNyBAQCBDcmVhdGVRdWVyeURl c2MoUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LAogCiAJcWQtPm9wZXJhdGlvbiA9IHBsYW5uZWRz dG10LT5jb21tYW5kVHlwZTsJLyogb3BlcmF0aW9uICovCiAJcWQtPnBsYW5uZWRzdG10ID0gcGxh bm5lZHN0bXQ7CS8qIHBsYW4gKi8KKwlxZC0+Y3BsYW4gPSBjcGxhbjsJCQkvKiBDYWNoZWRQbGFu IHN1cHBseWluZyB0aGUgcGxhbm5lZHN0bXQgKi8KIAlxZC0+c291cmNlVGV4dCA9IHNvdXJjZVRl eHQ7CS8qIHF1ZXJ5IHRleHQgKi8KIAlxZC0+c25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KHNu YXBzaG90KTsJLyogc25hcHNob3QgKi8KIAkvKiBSSSBjaGVjayBzbmFwc2hvdCAqLwpAQCAtMTIy LDYgKzEyNSw3IEBAIEZyZWVRdWVyeURlc2MoUXVlcnlEZXNjICpxZGVzYykKICAqCQlQT1JUQUxf T05FX1JFVFVSTklORywgb3IgUE9SVEFMX09ORV9NT0RfV0lUSCBwb3J0YWwKICAqCiAgKglwbGFu OiB0aGUgcGxhbiB0cmVlIGZvciB0aGUgcXVlcnkKKyAqCWNwbGFuOiBDYWNoZWRQbGFuIHN1cHBs eWluZyB0aGUgcGxhbgogICoJc291cmNlVGV4dDogdGhlIHNvdXJjZSB0ZXh0IG9mIHRoZSBxdWVy eQogICoJcGFyYW1zOiBhbnkgcGFyYW1ldGVycyBuZWVkZWQKICAqCWRlc3Q6IHdoZXJlIHRvIHNl bmQgcmVzdWx0cwpAQCAtMTM0LDYgKzEzOCw3IEBAIEZyZWVRdWVyeURlc2MoUXVlcnlEZXNjICpx ZGVzYykKICAqLwogc3RhdGljIHZvaWQKIFByb2Nlc3NRdWVyeShQbGFubmVkU3RtdCAqcGxhbiwK KwkJCSBDYWNoZWRQbGFuICpjcGxhbiwKIAkJCSBjb25zdCBjaGFyICpzb3VyY2VUZXh0LAogCQkJ IFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LApA QCAtMTQ1LDcgKzE1MCw3IEBAIFByb2Nlc3NRdWVyeShQbGFubmVkU3RtdCAqcGxhbiwKIAkvKgog CSAqIENyZWF0ZSB0aGUgUXVlcnlEZXNjIG9iamVjdAogCSAqLwotCXF1ZXJ5RGVzYyA9IENyZWF0 ZVF1ZXJ5RGVzYyhwbGFuLCBzb3VyY2VUZXh0LAorCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVz YyhwbGFuLCBjcGxhbiwgc291cmNlVGV4dCwKIAkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwg SW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCAwKTsKIApA QCAtNDkzLDYgKzQ5OCw3IEBAIFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlzdElu Zm8gcGFyYW1zLAogCQkJCSAqIHRoZSBkZXN0aW5hdGlvbiB0byBEZXN0Tm9uZS4KIAkJCQkgKi8K IAkJCQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MobGluaXRpYWxfbm9kZShQbGFubmVkU3Rt dCwgcG9ydGFsLT5zdG10cyksCisJCQkJCQkJCQkJCXBvcnRhbC0+Y3BsYW4sCiAJCQkJCQkJCQkJ CXBvcnRhbC0+c291cmNlVGV4dCwKIAkJCQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwKIAkJ CQkJCQkJCQkJSW52YWxpZFNuYXBzaG90LApAQCAtMTI3Niw2ICsxMjgyLDcgQEAgUG9ydGFsUnVu TXVsdGkoUG9ydGFsIHBvcnRhbCwKIAkJCXsKIAkJCQkvKiBzdGF0ZW1lbnQgY2FuIHNldCB0YWcg c3RyaW5nICovCiAJCQkJUHJvY2Vzc1F1ZXJ5KHBzdG10LAorCQkJCQkJCSBwb3J0YWwtPmNwbGFu LAogCQkJCQkJCSBwb3J0YWwtPnNvdXJjZVRleHQsCiAJCQkJCQkJIHBvcnRhbC0+cG9ydGFsUGFy YW1zLAogCQkJCQkJCSBwb3J0YWwtPnF1ZXJ5RW52LApAQCAtMTI4NSw2ICsxMjkyLDcgQEAgUG9y dGFsUnVuTXVsdGkoUG9ydGFsIHBvcnRhbCwKIAkJCXsKIAkJCQkvKiBzdG10IGFkZGVkIGJ5IHJl d3JpdGUgY2Fubm90IHNldCB0YWcgKi8KIAkJCQlQcm9jZXNzUXVlcnkocHN0bXQsCisJCQkJCQkJ IHBvcnRhbC0+Y3BsYW4sCiAJCQkJCQkJIHBvcnRhbC0+c291cmNlVGV4dCwKIAkJCQkJCQkgcG9y dGFsLT5wb3J0YWxQYXJhbXMsCiAJCQkJCQkJIHBvcnRhbC0+cXVlcnlFbnYsCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxz L2NhY2hlL3BsYW5jYWNoZS5jCmluZGV4IDVhZjFhMTY4ZWMuLjViNzVkYWRmMTMgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jCkBAIC0xMDQsNyArMTA0LDggQEAgc3RhdGljIExpc3Qg KlJldmFsaWRhdGVDYWNoZWRRdWVyeShDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogCQkJ CQkJCQkgICBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7CiBzdGF0aWMgYm9vbCBDaGVja0Nh Y2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSk7CiBzdGF0aWMgQ2FjaGVkUGxh biAqQnVpbGRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIExpc3QgKnFs aXN0LAotCQkJCQkJCQkgICBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLCBRdWVyeUVudmlyb25t ZW50ICpxdWVyeUVudik7CisJCQkJCQkJCSAgIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsIFF1 ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LAorCQkJCQkJCQkgICBib29sIGdlbmVyaWMpOwogc3Rh dGljIGJvb2wgY2hvb3NlX2N1c3RvbV9wbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2Us CiAJCQkJCQkJICAgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcyk7CiBzdGF0aWMgZG91YmxlIGNh Y2hlZF9wbGFuX2Nvc3QoQ2FjaGVkUGxhbiAqcGxhbiwgYm9vbCBpbmNsdWRlX3BsYW5uZXIpOwpA QCAtODE1LDggKzgxNiwxMSBAQCBSZXZhbGlkYXRlQ2FjaGVkUXVlcnkoQ2FjaGVkUGxhblNvdXJj ZSAqcGxhbnNvdXJjZSwKICAqIENhbGxlciBtdXN0IGhhdmUgYWxyZWFkeSBjYWxsZWQgUmV2YWxp ZGF0ZUNhY2hlZFF1ZXJ5IHRvIHZlcmlmeSB0aGF0IHRoZQogICogcXVlcnl0cmVlIGlzIHVwIHRv IGRhdGUuCiAgKgotICogT24gYSAidHJ1ZSIgcmV0dXJuLCB3ZSBoYXZlIGFjcXVpcmVkIHRoZSBs b2NrcyBuZWVkZWQgdG8gcnVuIHRoZSBwbGFuLgotICogKFdlIG11c3QgZG8gdGhpcyBmb3IgdGhl ICJ0cnVlIiByZXN1bHQgdG8gYmUgcmFjZS1jb25kaXRpb24tZnJlZS4pCisgKiBPbiBhICJ0cnVl IiByZXR1cm4sIHdlIGhhdmUgYWNxdWlyZWQgbG9ja3Mgb24gdGhlICJ1bnBydW5hYmxlUmVsaWRz IiBzZXQKKyAqIGZvciBhbGwgcGxhbnMgaW4gcGxhbnNvdXJjZS0+c3RtdF9saXN0LiBUaGUgcGxh bnMgYXJlIG5vdCBjb21wbGV0ZWx5CisgKiByYWNlLWNvbmRpdGlvbi1mcmVlIHVudGlsIHRoZSBl eGVjdXRvciB0YWtlcyBsb2NrcyBvbiB0aGUgc2V0IG9mIHBydW5hYmxlCisgKiByZWxhdGlvbnMg dGhhdCBzdXJ2aXZlIGluaXRpYWwgcnVudGltZSBwcnVuaW5nIGR1cmluZyBleGVjdXRvcgorICog aW5pdGlhbGl6YXRpb247CiAgKi8KIHN0YXRpYyBib29sCiBDaGVja0NhY2hlZFBsYW4oQ2FjaGVk UGxhblNvdXJjZSAqcGxhbnNvdXJjZSkKQEAgLTg5MywxMCArODk3LDEwIEBAIENoZWNrQ2FjaGVk UGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlKQogICogb3IgaXQgY2FuIGJlIHNldCB0 byBOSUwgaWYgd2UgbmVlZCB0byByZS1jb3B5IHRoZSBwbGFuc291cmNlJ3MgcXVlcnlfbGlzdC4K ICAqCiAgKiBUbyBidWlsZCBhIGdlbmVyaWMsIHBhcmFtZXRlci12YWx1ZS1pbmRlcGVuZGVudCBw bGFuLCBwYXNzIE5VTEwgZm9yCi0gKiBib3VuZFBhcmFtcy4gIFRvIGJ1aWxkIGEgY3VzdG9tIHBs YW4sIHBhc3MgdGhlIGFjdHVhbCBwYXJhbWV0ZXIgdmFsdWVzIHZpYQotICogYm91bmRQYXJhbXMu ICBGb3IgYmVzdCBlZmZlY3QsIHRoZSBQQVJBTV9GTEFHX0NPTlNUIGZsYWcgc2hvdWxkIGJlIHNl dCBvbgotICogZWFjaCBwYXJhbWV0ZXIgdmFsdWU7IG90aGVyd2lzZSB0aGUgcGxhbm5lciB3aWxs IHRyZWF0IHRoZSB2YWx1ZSBhcyBhCi0gKiBoaW50IHJhdGhlciB0aGFuIGEgaGFyZCBjb25zdGFu dC4KKyAqIGJvdW5kUGFyYW1zLCBhbmQgdHJ1ZSBmb3IgZ2VuZXJpYy4gIFRvIGJ1aWxkIGEgY3Vz dG9tIHBsYW4sIHBhc3MgdGhlIGFjdHVhbAorICogcGFyYW1ldGVyIHZhbHVlcyB2aWEgYm91bmRQ YXJhbXMsIGFuZCBmYWxzZSBmb3IgZ2VuZXJpYy4gIEZvciBiZXN0IGVmZmVjdCwKKyAqIHRoZSBQ QVJBTV9GTEFHX0NPTlNUIGZsYWcgc2hvdWxkIGJlIHNldCBvbiBlYWNoIHBhcmFtZXRlciB2YWx1 ZTsgb3RoZXJ3aXNlCisgKiB0aGUgcGxhbm5lciB3aWxsIHRyZWF0IHRoZSB2YWx1ZSBhcyBhIGhp bnQgcmF0aGVyIHRoYW4gYSBoYXJkIGNvbnN0YW50LgogICoKICAqIFBsYW5uaW5nIHdvcmsgaXMg ZG9uZSBpbiB0aGUgY2FsbGVyJ3MgbWVtb3J5IGNvbnRleHQuICBUaGUgZmluaXNoZWQgcGxhbgog ICogaXMgaW4gYSBjaGlsZCBtZW1vcnkgY29udGV4dCwgd2hpY2ggdHlwaWNhbGx5IHNob3VsZCBn ZXQgcmVwYXJlbnRlZApAQCAtOTA0LDcgKzkwOCw4IEBAIENoZWNrQ2FjaGVkUGxhbihDYWNoZWRQ bGFuU291cmNlICpwbGFuc291cmNlKQogICovCiBzdGF0aWMgQ2FjaGVkUGxhbiAqCiBCdWlsZENh Y2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgTGlzdCAqcWxpc3QsCi0JCQkJ UGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpCisJ CQkJUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYs CisJCQkJYm9vbCBnZW5lcmljKQogewogCUNhY2hlZFBsYW4gKnBsYW47CiAJTGlzdAkgICAqcGxp c3Q7CkBAIC0xMDI2LDYgKzEwMzEsNyBAQCBCdWlsZENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJj ZSAqcGxhbnNvdXJjZSwgTGlzdCAqcWxpc3QsCiAJcGxhbi0+cmVmY291bnQgPSAwOwogCXBsYW4t PmNvbnRleHQgPSBwbGFuX2NvbnRleHQ7CiAJcGxhbi0+aXNfb25lc2hvdCA9IHBsYW5zb3VyY2Ut PmlzX29uZXNob3Q7CisJcGxhbi0+aXNfZ2VuZXJpYyA9IGdlbmVyaWM7CiAJcGxhbi0+aXNfc2F2 ZWQgPSBmYWxzZTsKIAlwbGFuLT5pc192YWxpZCA9IHRydWU7CiAKQEAgLTExOTYsNyArMTIwMiw3 IEBAIEdldENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgUGFyYW1MaXN0 SW5mbyBib3VuZFBhcmFtcywKIAkJZWxzZQogCQl7CiAJCQkvKiBCdWlsZCBhIG5ldyBnZW5lcmlj IHBsYW4gKi8KLQkJCXBsYW4gPSBCdWlsZENhY2hlZFBsYW4ocGxhbnNvdXJjZSwgcWxpc3QsIE5V TEwsIHF1ZXJ5RW52KTsKKwkJCXBsYW4gPSBCdWlsZENhY2hlZFBsYW4ocGxhbnNvdXJjZSwgcWxp c3QsIE5VTEwsIHF1ZXJ5RW52LCB0cnVlKTsKIAkJCS8qIEp1c3QgbWFrZSByZWFsIHN1cmUgcGxh bnNvdXJjZS0+Z3BsYW4gaXMgY2xlYXIgKi8KIAkJCVJlbGVhc2VHZW5lcmljUGxhbihwbGFuc291 cmNlKTsKIAkJCS8qIExpbmsgdGhlIG5ldyBnZW5lcmljIHBsYW4gaW50byB0aGUgcGxhbnNvdXJj ZSAqLwpAQCAtMTI0MSw3ICsxMjQ3LDcgQEAgR2V0Q2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNl ICpwbGFuc291cmNlLCBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLAogCWlmIChjdXN0b21wbGFu KQogCXsKIAkJLyogQnVpbGQgYSBjdXN0b20gcGxhbiAqLwotCQlwbGFuID0gQnVpbGRDYWNoZWRQ bGFuKHBsYW5zb3VyY2UsIHFsaXN0LCBib3VuZFBhcmFtcywgcXVlcnlFbnYpOworCQlwbGFuID0g QnVpbGRDYWNoZWRQbGFuKHBsYW5zb3VyY2UsIHFsaXN0LCBib3VuZFBhcmFtcywgcXVlcnlFbnYs IGZhbHNlKTsKIAkJLyogQWNjdW11bGF0ZSB0b3RhbCBjb3N0cyBvZiBjdXN0b20gcGxhbnMgKi8K IAkJcGxhbnNvdXJjZS0+dG90YWxfY3VzdG9tX2Nvc3QgKz0gY2FjaGVkX3BsYW5fY29zdChwbGFu LCB0cnVlKTsKIApAQCAtMTM4Nyw4ICsxMzkzLDggQEAgQ2FjaGVkUGxhbkFsbG93c1NpbXBsZVZh bGlkaXR5Q2hlY2soQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKIAl9CiAKIAkvKgotCSAq IFJlamVjdCBpZiBBY3F1aXJlRXhlY3V0b3JMb2NrcyB3b3VsZCBoYXZlIGFueXRoaW5nIHRvIGRv LiAgVGhpcyBpcwotCSAqIHByb2JhYmx5IHVubmVjZXNzYXJ5IGdpdmVuIHRoZSBwcmV2aW91cyBj aGVjaywgYnV0IGxldCdzIGJlIHNhZmUuCisJICogUmVqZWN0IGlmIHRoZXJlIGFyZSBhbnkgbG9j a2FibGUgcmVsYXRpb25zLiAgVGhpcyBpcyBwcm9iYWJseQorCSAqIHVubmVjZXNzYXJ5IGdpdmVu IHRoZSBwcmV2aW91cyBjaGVjaywgYnV0IGxldCdzIGJlIHNhZmUuCiAJICovCiAJZm9yZWFjaChs YywgcGxhbi0+c3RtdF9saXN0KQogCXsKQEAgLTE3NzYsNyArMTc4Miw3IEBAIEFjcXVpcmVFeGVj dXRvckxvY2tzKExpc3QgKnN0bXRfbGlzdCwgYm9vbCBhY3F1aXJlKQogCWZvcmVhY2gobGMxLCBz dG10X2xpc3QpCiAJewogCQlQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQgPSBsZmlyc3Rfbm9kZShQ bGFubmVkU3RtdCwgbGMxKTsKLQkJTGlzdENlbGwgICAqbGMyOworCQlpbnQJCQlydGluZGV4Owog CiAJCWlmIChwbGFubmVkc3RtdC0+Y29tbWFuZFR5cGUgPT0gQ01EX1VUSUxJVFkpCiAJCXsKQEAg LTE3OTQsOSArMTgwMCwxMyBAQCBBY3F1aXJlRXhlY3V0b3JMb2NrcyhMaXN0ICpzdG10X2xpc3Qs IGJvb2wgYWNxdWlyZSkKIAkJCWNvbnRpbnVlOwogCQl9CiAKLQkJZm9yZWFjaChsYzIsIHBsYW5u ZWRzdG10LT5ydGFibGUpCisJCXJ0aW5kZXggPSAtMTsKKwkJd2hpbGUgKChydGluZGV4ID0gYm1z X25leHRfbWVtYmVyKHBsYW5uZWRzdG10LT51bnBydW5hYmxlUmVsaWRzLAorCQkJCQkJCQkJCSAg cnRpbmRleCkpID49IDApCiAJCXsKLQkJCVJhbmdlVGJsRW50cnkgKnJ0ZSA9IChSYW5nZVRibEVu dHJ5ICopIGxmaXJzdChsYzIpOworCQkJUmFuZ2VUYmxFbnRyeSAqcnRlID0gbGlzdF9udGhfbm9k ZShSYW5nZVRibEVudHJ5LAorCQkJCQkJCQkJCQkgICBwbGFubmVkc3RtdC0+cnRhYmxlLAorCQkJ CQkJCQkJCQkgICBydGluZGV4IC0gMSk7CiAKIAkJCWlmICghKHJ0ZS0+cnRla2luZCA9PSBSVEVf UkVMQVRJT04gfHwKIAkJCQkgIChydGUtPnJ0ZWtpbmQgPT0gUlRFX1NVQlFVRVJZICYmIE9pZElz VmFsaWQocnRlLT5yZWxpZCkpKSkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4 cGxhaW4uaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaAppbmRleCAzYWIwYWFlNzhm Li4yMWM3MWUwZDUzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgK KysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oCkBAIC0xMDMsOCArMTAzLDkgQEAg ZXh0ZXJuIHZvaWQgRXhwbGFpbk9uZVV0aWxpdHkoTm9kZSAqdXRpbGl0eVN0bXQsIEludG9DbGF1 c2UgKmludG8sCiAJCQkJCQkJICBFeHBsYWluU3RhdGUgKmVzLCBjb25zdCBjaGFyICpxdWVyeVN0 cmluZywKIAkJCQkJCQkgIFBhcmFtTGlzdEluZm8gcGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpx dWVyeUVudik7CiAKLWV4dGVybiB2b2lkIEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFu bmVkc3RtdCwgSW50b0NsYXVzZSAqaW50bywKLQkJCQkJCSAgIEV4cGxhaW5TdGF0ZSAqZXMsIGNv bnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAorZXh0ZXJuIHZvaWQgRXhwbGFpbk9uZVBsYW4oUGxhbm5l ZFN0bXQgKnBsYW5uZWRzdG10LCBDYWNoZWRQbGFuICpjcGxhbiwKKwkJCQkJCSAgIEludG9DbGF1 c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCisJCQkJCQkgICBjb25zdCBjaGFyICpxdWVyeVN0 cmluZywKIAkJCQkJCSAgIFBhcmFtTGlzdEluZm8gcGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpx dWVyeUVudiwKIAkJCQkJCSAgIGNvbnN0IGluc3RyX3RpbWUgKnBsYW5kdXJhdGlvbiwKIAkJCQkJ CSAgIGNvbnN0IEJ1ZmZlclVzYWdlICpidWZ1c2FnZSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0 aXRpb24uaAppbmRleCBlZjZkOGIyZDQ4Li43ZjI1OTJlM2IwIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3Iv ZXhlY1BhcnRpdGlvbi5oCkBAIC00OCw2ICs0OCw3IEBAIGV4dGVybiB2b2lkIEV4ZWNDbGVhbnVw VHVwbGVSb3V0aW5nKE1vZGlmeVRhYmxlU3RhdGUgKm10c3RhdGUsCiAgKiBucGFydHMJCQkJCQlM ZW5ndGggb2Ygc3VicGxhbl9tYXBbXSBhbmQgc3VicGFydF9tYXBbXS4KICAqIHN1YnBsYW5fbWFw CQkJCQlTdWJwbGFuIGluZGV4IGJ5IHBhcnRpdGlvbiBpbmRleCwgb3IgLTEuCiAgKiBzdWJwYXJ0 X21hcAkJCQkJU3VicGFydCBpbmRleCBieSBwYXJ0aXRpb24gaW5kZXgsIG9yIC0xLgorICogcnRp X21hcAkJCQkJCVJUIGluZGV4IGJ5IHBhcnRpdGlvbiBpbmRleCwgb3IgMC4KICAqIHByZXNlbnRf cGFydHMJCQkJQSBCaXRtYXBzZXQgb2YgdGhlIHBhcnRpdGlvbiBpbmRleGVzIHRoYXQgd2UKICAq CQkJCQkJCQloYXZlIHN1YnBsYW5zIG9yIHN1YnBhcnRzIGZvci4KICAqIGluaXRpYWxfcHJ1bmlu Z19zdGVwcwkJTGlzdCBvZiBQYXJ0aXRpb25QcnVuZVN0ZXBzIHVzZWQgdG8KQEAgLTY1LDYgKzY2 LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uZWRSZWxQcnVuaW5nRGF0YQogCWludAkJCW5w YXJ0czsKIAlpbnQJCSAgICpzdWJwbGFuX21hcDsKIAlpbnQJCSAgICpzdWJwYXJ0X21hcDsKKwlp bnQJCSAgICpydGlfbWFwIHBnX25vZGVfYXR0cihhcnJheV9zaXplKG5wYXJ0cykpOwogCUJpdG1h cHNldCAgKnByZXNlbnRfcGFydHM7CiAJTGlzdAkgICAqaW5pdGlhbF9wcnVuaW5nX3N0ZXBzOwog CUxpc3QJICAgKmV4ZWNfcHJ1bmluZ19zdGVwczsKQEAgLTEzMiw3ICsxMzQsOCBAQCBleHRlcm4g UGFydGl0aW9uUHJ1bmVTdGF0ZSAqRXhlY0luaXRQYXJ0aXRpb25QcnVuaW5nKFBsYW5TdGF0ZSAq cGxhbnN0YXRlLAogCQkJCQkJCQkJCQkJCSBCaXRtYXBzZXQgKnJvb3RfcGFyZW50X3JlbGlkcywK IAkJCQkJCQkJCQkJCQkgQml0bWFwc2V0ICoqaW5pdGlhbGx5X3ZhbGlkX3N1YnBsYW5zKTsKIGV4 dGVybiBCaXRtYXBzZXQgKkV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhQYXJ0aXRpb25QcnVuZVN0 YXRlICpwcnVuZXN0YXRlLAotCQkJCQkJCQkJCSAgIGJvb2wgaW5pdGlhbF9wcnVuZSk7CisJCQkJ CQkJCQkJICAgYm9vbCBpbml0aWFsX3BydW5lLAorCQkJCQkJCQkJCSAgIEJpdG1hcHNldCAqKnZh bGlkc3VicGxhbl9ydGlzKTsKIGV4dGVybiBQYXJ0aXRpb25QcnVuZVN0YXRlICpFeGVjQ3JlYXRl UGFydGl0aW9uUHJ1bmVTdGF0ZShFU3RhdGUgKmVzdGF0ZSwKIAkJCQkJCQkJCQkJCQkJICBQYXJ0 aXRpb25QcnVuZUluZm8gKnBydW5laW5mbyk7CiAjZW5kaWYJCQkJCQkJLyogRVhFQ1BBUlRJVElP Tl9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oIGIvc3Jj L2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaAppbmRleCAwYTcyNzRlMjZjLi4wZTcyNDU0MzVk IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oCisrKyBiL3NyYy9p bmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmgKQEAgLTM1LDYgKzM1LDcgQEAgdHlwZWRlZiBzdHJ1 Y3QgUXVlcnlEZXNjCiAJLyogVGhlc2UgZmllbGRzIGFyZSBwcm92aWRlZCBieSBDcmVhdGVRdWVy eURlc2MgKi8KIAlDbWRUeXBlCQlvcGVyYXRpb247CQkvKiBDTURfU0VMRUNULCBDTURfVVBEQVRF LCBldGMuICovCiAJUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10OwkvKiBwbGFubmVyJ3Mgb3V0cHV0 IChjb3VsZCBiZSB1dGlsaXR5LCB0b28pICovCisJQ2FjaGVkUGxhbiAqY3BsYW47CQkJLyogQ2Fj aGVkUGxhbiB0aGF0IHN1cHBsaWVzIHRoZSBwbGFubmVkc3RtdCAqLwogCWNvbnN0IGNoYXIgKnNv dXJjZVRleHQ7CQkvKiBzb3VyY2UgdGV4dCBvZiB0aGUgcXVlcnkgKi8KIAlTbmFwc2hvdAlzbmFw c2hvdDsJCS8qIHNuYXBzaG90IHRvIHVzZSBmb3IgcXVlcnkgKi8KIAlTbmFwc2hvdAljcm9zc2No ZWNrX3NuYXBzaG90OwkvKiBjcm9zc2NoZWNrIGZvciBSSSB1cGRhdGUvZGVsZXRlICovCkBAIC01 Nyw2ICs1OCw3IEBAIHR5cGVkZWYgc3RydWN0IFF1ZXJ5RGVzYwogCiAvKiBpbiBwcXVlcnkuYyAq LwogZXh0ZXJuIFF1ZXJ5RGVzYyAqQ3JlYXRlUXVlcnlEZXNjKFBsYW5uZWRTdG10ICpwbGFubmVk c3RtdCwKKwkJCQkJCQkJICBDYWNoZWRQbGFuICpjcGxhbiwKIAkJCQkJCQkJICBjb25zdCBjaGFy ICpzb3VyY2VUZXh0LAogCQkJCQkJCQkgIFNuYXBzaG90IHNuYXBzaG90LAogCQkJCQkJCQkgIFNu YXBzaG90IGNyb3NzY2hlY2tfc25hcHNob3QsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rl cy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IDUxOGE5 ZmNkMTUuLjU3MTcwODE4YzAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rl cy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBAIC00Miw2ICs0Miw3IEBA CiAjaW5jbHVkZSAic3RvcmFnZS9jb25kaXRpb25fdmFyaWFibGUuaCIKICNpbmNsdWRlICJ1dGls cy9oc2VhcmNoLmgiCiAjaW5jbHVkZSAidXRpbHMvcXVlcnllbnZpcm9ubWVudC5oIgorI2luY2x1 ZGUgInV0aWxzL3BsYW5jYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3JlbHRyaWdnZXIuaCIKICNp bmNsdWRlICJ1dGlscy9zaGFyZWR0dXBsZXN0b3JlLmgiCiAjaW5jbHVkZSAidXRpbHMvc25hcHNo b3QuaCIKQEAgLTYzNiw5ICs2MzcsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QgRVN0YXRlCiAJCQkJCQkJ CQkJICogRXhlY1Jvd01hcmtzLCBvciBOVUxMIGlmIG5vbmUgKi8KIAlMaXN0CSAgICplc19ydGVw ZXJtaW5mb3M7CS8qIExpc3Qgb2YgUlRFUGVybWlzc2lvbkluZm8gKi8KIAlQbGFubmVkU3RtdCAq ZXNfcGxhbm5lZHN0bXQ7CS8qIGxpbmsgdG8gdG9wIG9mIHBsYW4gdHJlZSAqLworCUNhY2hlZFBs YW4gKmVzX2NhY2hlZHBsYW47CiAJTGlzdAkgICAqZXNfcGFydF9wcnVuZV9pbmZvczsJLyogUGxh bm5lZFN0bXQucGFydFBydW5lSW5mb3MgKi8KIAlMaXN0CSAgICplc19wYXJ0X3BydW5lX3N0YXRl czsJLyogTGlzdCBvZiBQYXJ0aXRpb25QcnVuZVN0YXRlICovCiAJTGlzdAkgICAqZXNfcGFydF9w cnVuZV9yZXN1bHRzOwkvKiBMaXN0IG9mIEJpdG1hcHNldCAqLworCUJpdG1hcHNldCAgKmVzX3Vu cHJ1bmFibGVfcmVsaWRzOwkvKiBQbGFubmVkU3RtdC51bnBydW5hYmxlUmVsaWRzICsgUlQKKwkJ CQkJCQkJCQkgKiBpbmRleGVzIG9mIGxlYWYgcGFydGl0aW9ucyB0aGF0CisJCQkJCQkJCQkJICog c3Vydml2ZSBpbml0aWFsIHBydW5pbmc7IHNlZQorCQkJCQkJCQkJCSAqIEV4ZWNEb0luaXRpYWxQ cnVuaW5nKCkgKi8KIAljb25zdCBjaGFyICplc19zb3VyY2VUZXh0OwkvKiBTb3VyY2UgdGV4dCBm cm9tIFF1ZXJ5RGVzYyAqLwogCiAJSnVua0ZpbHRlciAqZXNfanVua0ZpbHRlcjsJLyogdG9wLWxl dmVsIGp1bmsgZmlsdGVyLCBpZiBhbnkgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVz L3BhdGhub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKaW5kZXggOGQzMGI2 ZTg5Ni4uY2MyMTkwZWE2MyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVz LmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKQEAgLTExNiw2ICsxMTYsMTIg QEAgdHlwZWRlZiBzdHJ1Y3QgUGxhbm5lckdsb2JhbAogCS8qICJmbGF0IiByYW5nZXRhYmxlIGZv ciBleGVjdXRvciAqLwogCUxpc3QJICAgKmZpbmFscnRhYmxlOwogCisJLyoKKwkgKiBSVCBpbmRl eGVzIG9mIHJlbGF0aW9ucyBzdWJqZWN0IHRvIHJlbW92YWwgZnJvbSB0aGUgcGxhbiBkdWUgdG8g cnVudGltZQorCSAqIHBydW5pbmcgYXQgcGxhbiBpbml0aWFsaXphdGlvbiB0aW1lCisJICovCisJ Qml0bWFwc2V0ICAqcHJ1bmFibGVSZWxpZHM7CisKIAkvKiAiZmxhdCIgbGlzdCBvZiBSVEVQZXJt aXNzaW9uSW5mb3MgKi8KIAlMaXN0CSAgICpmaW5hbHJ0ZXBlcm1pbmZvczsKIApkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFu bm9kZXMuaAppbmRleCAzOWQwMjgxYzIzLi4zMThlMzBmZTJmIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9ub2Rlcy9wbGFubm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMu aApAQCAtNzQsNiArNzQsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgUGxhbm5lZFN0bXQKIAogCUxpc3QJ ICAgKnJ0YWJsZTsJCQkvKiBsaXN0IG9mIFJhbmdlVGJsRW50cnkgbm9kZXMgKi8KIAorCUJpdG1h cHNldCAgKnVucHJ1bmFibGVSZWxpZHM7CS8qIFJUIGluZGV4ZXMgb2YgcmVsYXRpb25zIHRoYXQg YXJlIG5vdAorCQkJCQkJCQkJICogc3ViamVjdCB0byBydW50aW1lIHBydW5pbmc7IGZvcgorCQkJ CQkJCQkJICogQWNxdWlyZUV4ZWN1dG9yTG9ja3MoKSAqLworCiAJTGlzdAkgICAqcGVybUluZm9z OwkJLyogbGlzdCBvZiBSVEVQZXJtaXNzaW9uSW5mbyBub2RlcyBmb3IgcnRhYmxlCiAJCQkJCQkJ CSAqIGVudHJpZXMgbmVlZGluZyBvbmUgKi8KIApAQCAtMTQ3NCw2ICsxNDc4LDkgQEAgdHlwZWRl ZiBzdHJ1Y3QgUGFydGl0aW9uZWRSZWxQcnVuZUluZm8KIAkvKiBzdWJwYXJ0IGluZGV4IGJ5IHBh cnRpdGlvbiBpbmRleCwgb3IgLTEgKi8KIAlpbnQJCSAgICpzdWJwYXJ0X21hcCBwZ19ub2RlX2F0 dHIoYXJyYXlfc2l6ZShucGFydHMpKTsKIAorCS8qIFJUIGluZGV4IGJ5IHBhcnRpdGlvbiBpbmRl eCwgb3IgMCAqLworCWludAkJICAgKnJ0aV9tYXAgcGdfbm9kZV9hdHRyKGFycmF5X3NpemUobnBh cnRzKSk7CisKIAkvKiByZWxhdGlvbiBPSUQgYnkgcGFydGl0aW9uIGluZGV4LCBvciAwICovCiAJ T2lkCQkgICAqcmVsaWRfbWFwIHBnX25vZGVfYXR0cihhcnJheV9zaXplKG5wYXJ0cykpOwogCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaCBiL3NyYy9pbmNsdWRlL3V0 aWxzL3BsYW5jYWNoZS5oCmluZGV4IGE5MGRmZGY5MDYuLjBiNWVlMDA3Y2EgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3Bs YW5jYWNoZS5oCkBAIC0xNDksNiArMTQ5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQ2FjaGVkUGxhbgog CWludAkJCW1hZ2ljOwkJCS8qIHNob3VsZCBlcXVhbCBDQUNIRURQTEFOX01BR0lDICovCiAJTGlz dAkgICAqc3RtdF9saXN0OwkJLyogbGlzdCBvZiBQbGFubmVkU3RtdHMgKi8KIAlib29sCQlpc19v bmVzaG90OwkJLyogaXMgaXQgYSAib25lc2hvdCIgcGxhbj8gKi8KKwlib29sCQlpc19nZW5lcmlj OwkJLyogaXMgaXQgYSByZXVzYWJsZSBnZW5lcmljIHBsYW4/ICovCiAJYm9vbAkJaXNfc2F2ZWQ7 CQkvKiBpcyBDYWNoZWRQbGFuIGluIGEgbG9uZy1saXZlZCBjb250ZXh0PyAqLwogCWJvb2wJCWlz X3ZhbGlkOwkJLyogaXMgdGhlIHN0bXRfbGlzdCBjdXJyZW50bHkgdmFsaWQ/ICovCiAJT2lkCQkJ cGxhblJvbGVJZDsJCS8qIFJvbGUgSUQgdGhlIHBsYW4gd2FzIGNyZWF0ZWQgZm9yICovCkBAIC0y MzUsNCArMjM2LDEzIEBAIGV4dGVybiBib29sIENhY2hlZFBsYW5Jc1NpbXBseVZhbGlkKENhY2hl ZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiBleHRlcm4gQ2FjaGVkRXhwcmVzc2lvbiAqR2V0Q2Fj aGVkRXhwcmVzc2lvbihOb2RlICpleHByKTsKIGV4dGVybiB2b2lkIEZyZWVDYWNoZWRFeHByZXNz aW9uKENhY2hlZEV4cHJlc3Npb24gKmNleHByKTsKIAorLyoKKyAqIENhY2hlZFBsYW5SZXF1aXJl c0xvY2tpbmc6IHNob3VsZCB0aGUgZXhlY3V0b3IgYWNxdWlyZSBsb2Nrcz8KKyAqLworc3RhdGlj IGlubGluZSBib29sCitDYWNoZWRQbGFuUmVxdWlyZXNMb2NraW5nKENhY2hlZFBsYW4gKmNwbGFu KQoreworCXJldHVybiBjcGxhbi0+aXNfZ2VuZXJpYzsKK30KKwogI2VuZGlmCQkJCQkJCS8qIFBM QU5DQUNIRV9IICovCi0tIAoyLjQzLjAKCg== --0000000000007b8704062277ce88 Content-Type: application/octet-stream; name="v55-0005-Handle-CachedPlan-invalidation-in-the-executor.patch" Content-Disposition: attachment; filename="v55-0005-Handle-CachedPlan-invalidation-in-the-executor.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m1990pu04 RnJvbSAyNGVlYTRmMTBmYTcxMjliYzYyODRhNzMxN2Q0MTNiZWQyYjE3N2I1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFRodSwgMjIgQXVnIDIwMjQgMTk6Mzg6MTMgKzA5MDAKU3ViamVjdDogW1BBVENIIHY1 NSA1LzVdIEhhbmRsZSBDYWNoZWRQbGFuIGludmFsaWRhdGlvbiBpbiB0aGUgZXhlY3V0b3IKClRo aXMgY29tbWl0IG1ha2VzIGNoYW5nZXMgdG8gaGFuZGxlIGNhc2VzIHdoZXJlIGEgY2FjaGVkIHBs YW4KYmVjb21lcyBpbnZhbGlkIGJlZm9yZSBkZWZlcnJlZCBsb2NrcyBvbiBwcnVuYWJsZSByZWxh dGlvbnMgYXJlIHRha2VuLgoKKiBBZGQgY2hlY2tzIGF0IHZhcmlvdXMgcG9pbnRzIGluIEV4ZWN1 dG9yU3RhcnQoKSBhbmQgaXRzIGNhbGxlZAogIGZ1bmN0aW9ucyB0byBkZXRlcm1pbmUgaWYgdGhl IHBsYW4gYmVjb21lcyBpbnZhbGlkLiBJZiBkZXRlY3RlZCwKICB0aGUgZnVuY3Rpb24gYW5kIGl0 cyBjYWxsZXJzIHJldHVybiBpbW1lZGlhdGVseS4gQSBwcmV2aW91cyBjb21taXQKICBlbnN1cmVz IGFueSBwYXJ0aWFsbHkgaW5pdGlhbGl6ZWQgUGxhblN0YXRlIHRyZWUgb2JqZWN0cyBhcmUgY2xl YW5lZAogIHVwIGFwcHJvcHJpYXRlbHkuCgoqIEludHJvZHVjZSBFeGVjdXRvclN0YXJ0RXh0KCks IGEgd3JhcHBlciBvdmVyIEV4ZWN1dG9yU3RhcnQoKSwgdG8KICBoYW5kbGUgY2FzZXMgd2hlcmUg cGxhbiBpbml0aWFsaXphdGlvbiBpcyBhYm9ydGVkIGR1ZSB0byBpbnZhbGlkYXRpb24uCiAgRXhl Y3V0b3JTdGFydEV4dCgpIGNyZWF0ZXMgYSBuZXcgdHJhbnNpZW50IENhY2hlZFBsYW4gaWYgbmVl ZGVkIGFuZAogIHJldHJpZXMgZXhlY3V0aW9uLiBUaGlzIG5ldyBlbnRyeSBwb2ludCBpcyBvbmx5 IHJlcXVpcmVkIGZvciBzaXRlcwogIHVzaW5nIHBsYW5jYWNoZS5jLiBJdCByZXF1aXJlcyBwYXNz aW5nIHRoZSBRdWVyeURlc2MsIGVmbGFncywKICBDYWNoZWRQbGFuU291cmNlLCBhbmQgcXVlcnlf aW5kZXggKGluZGV4IGluIENhY2hlZFBsYW5Tb3VyY2UucXVlcnlfbGlzdCkuCgoqIEFkZCBHZXRT aW5nbGVDYWNoZWRQbGFuKCkgaW4gcGxhbmNhY2hlLmMgdG8gY3JlYXRlIGEgdHJhbnNpZW50CiAg Q2FjaGVkUGxhbiBmb3IgYSBzcGVjaWZpZWQgcXVlcnkgaW4gdGhlIGdpdmVuIENhY2hlZFBsYW5T b3VyY2UuCiAgU3VjaCBDYWNoZWRQbGFucyBhcmUgdHJhY2tlZCBpbiBhIHNlcGFyYXRlIGdsb2Jh bCBsaXN0IGZvciB0aGUKICBwbGFuY2FjaGUgaW52YWxpZGF0aW9uIGNhbGxiYWNrcyB0byBjaGVj ay4KClRoaXMgYWxzbyBhZGRzIGlzb2xhdGlvbiB0ZXN0cyB1c2luZyB0aGUgZGVsYXlfZXhlY3V0 aW9uIHRlc3QgbW9kdWxlCnRvIHZlcmlmeSBzY2VuYXJpb3Mgd2hlcmUgYSBDYWNoZWRQbGFuIGJl Y29tZXMgaW52YWxpZCBiZWZvcmUgdGhlCmRlZmVycmVkIGxvY2tzIGFyZSB0YWtlbi4KCkFsbCBF eGVjdXRvclN0YXJ0X2hvb2sgaW1wbGVtZW50YXRpb25zIG5vdyBtdXN0IGFkZCB0aGUgZm9sbG93 aW5nCmJsb2NrIGFmdGVyIHRoZSBFeGVjdXRvclN0YXJ0KCkgY2FsbCB0byBlbnN1cmUgaXQgZG9l c24ndCB3b3JrIHdpdGggYW4KaW52YWxpZCBwbGFuOgoKICAgIC8qIFRoZSBwbGFuIG1heSBoYXZl IGJlY29tZSBpbnZhbGlkIGR1cmluZyBFeGVjdXRvclN0YXJ0KCkgKi8KICAgIGlmICghRXhlY1Bs YW5TdGlsbFZhbGlkKHF1ZXJ5RGVzYy0+ZXN0YXRlKSkKICAgICAgICByZXR1cm47CgpSZXZpZXdl ZC1ieTogUm9iZXJ0IEhhYXMKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQStIaXdx RkdrTVNnZTZUZ0M5S1F6ZGUwb2hwQXljTFF1Vjdvb2l0RUVwYktCME9fbWdAbWFpbC5nbWFpbC5j b21rCi0tLQogY29udHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBsYWluLmMgICAgICAgICAgIHwg ICA0ICsKIC4uLi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMgICB8ICAg NCArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgICAgICAgICAgICAgICAgfCAgIDgg Ky0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYyAgICAgICAgICAgICB8ICAgMSAr CiBzcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgICAgICAgICAgICAgICAgfCAgMTAgKy0K IHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYyAgICAgICAgICAgICAgICB8ICAxNCArKwog c3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FICAgICAgICAgICAgICAgICAgIHwgIDM1ICsrLQog c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyAgICAgICAgICAgICAgIHwgIDg0ICsrKysr Ky0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jICAgICAgICAgICAgICB8ICAgMyAr LQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMgICAgICAgICAgICAgICAgICAgIHwgIDE5ICst CiBzcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0K IHNyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMgICAgICAgICAgICAgICAgICAgICB8ICAzMSArKy0K IHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jICAgICAgICAgICB8IDIwNiArKysr KysrKysrKysrKysrCiBzcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jICAgICAgICAg ICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaCAgICAgICAgICAgICAg ICB8ICAgMSArCiBzcmMvaW5jbHVkZS9jb21tYW5kcy90cmlnZ2VyLmggICAgICAgICAgICAgICAg fCAgIDEgKwogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaCAgICAgICAgICAgICAgIHwg ICAxICsKIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmggICAgICAgICAgICAgICB8ICAx NyArKwogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgICAgICAgIHwgICAx ICsKIHNyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oICAgICAgICAgICAgICAgICB8ICAyNiAr Kwogc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmggICAgICAgICAgICAgICAgICAgIHwgICA0ICst CiBzcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9NYWtlZmlsZSAgICAgfCAgIDMgKy0K IC4uLi9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9kZWxheV9leGVjdXRpb24uYyB8ICA2MyArKysr LQogLi4uL2V4cGVjdGVkL2NhY2hlZC1wbGFuLWludmFsLm91dCAgICAgICAgICAgIHwgMjMwICsr KysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vbWVzb24u YnVpbGQgIHwgICAxICsKIC4uLi9zcGVjcy9jYWNoZWQtcGxhbi1pbnZhbC5zcGVjICAgICAgICAg ICAgICB8ICA3NSArKysrKysKIDI2IGZpbGVzIGNoYW5nZWQsIDgxNCBpbnNlcnRpb25zKCspLCAz NiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL2RlbGF5 X2V4ZWN1dGlvbi9leHBlY3RlZC9jYWNoZWQtcGxhbi1pbnZhbC5vdXQKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9zcGVjcy9jYWNoZWQtcGxhbi1p bnZhbC5zcGVjCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBsYWlu LmMgYi9jb250cmliL2F1dG9fZXhwbGFpbi9hdXRvX2V4cGxhaW4uYwppbmRleCA2NzdjMTM1ZjU5 Li45ZWI1ZTlhNjE5IDEwMDY0NAotLS0gYS9jb250cmliL2F1dG9fZXhwbGFpbi9hdXRvX2V4cGxh aW4uYworKysgYi9jb250cmliL2F1dG9fZXhwbGFpbi9hdXRvX2V4cGxhaW4uYwpAQCAtMzAwLDYg KzMwMCwxMCBAQCBleHBsYWluX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGlu dCBlZmxhZ3MpCiAJZWxzZQogCQlzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZs YWdzKTsKIAorCS8qIFRoZSBwbGFuIG1heSBoYXZlIGJlY29tZSBpbnZhbGlkIGR1cmluZyBzdGFu ZGFyZF9FeGVjdXRvclN0YXJ0KCkgKi8KKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChxdWVyeURl c2MtPmVzdGF0ZSkpCisJCXJldHVybjsKKwogCWlmIChhdXRvX2V4cGxhaW5fZW5hYmxlZCgpKQog CXsKIAkJLyoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRf c3RhdGVtZW50cy5jIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1l bnRzLmMKaW5kZXggM2M3MmU0MzdmNy4uNzY2NDJiNTU3YSAxMDA2NDQKLS0tIGEvY29udHJpYi9w Z19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMKKysrIGIvY29udHJpYi9wZ19z dGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMKQEAgLTk4NSw2ICs5ODUsMTAgQEAg cGdzc19FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCWVs c2UKIAkJc3RhbmRhcmRfRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7CiAKKwkvKiBU aGUgcGxhbiBtYXkgaGF2ZSBiZWNvbWUgaW52YWxpZCBkdXJpbmcgc3RhbmRhcmRfRXhlY3V0b3JT dGFydCgpICovCisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQocXVlcnlEZXNjLT5lc3RhdGUpKQor CQlyZXR1cm47CisKIAkvKgogCSAqIElmIHF1ZXJ5IGhhcyBxdWVyeUlkIHplcm8sIGRvbid0IHRy YWNrIGl0LiAgVGhpcyBwcmV2ZW50cyBkb3VibGUKIAkgKiBjb3VudGluZyBvZiBvcHRpbWl6YWJs ZSBzdGF0ZW1lbnRzIHRoYXQgYXJlIGRpcmVjdGx5IGNvbnRhaW5lZCBpbgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhw bGFpbi5jCmluZGV4IDQ5ZjczNzA3MzQuLmI3YTBiOGMwNWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2V4cGxhaW4uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWlu LmMKQEAgLTUwOSw3ICs1MDksOCBAQCBzdGFuZGFyZF9FeHBsYWluT25lUXVlcnkoUXVlcnkgKnF1 ZXJ5LCBpbnQgY3Vyc29yT3B0aW9ucywKIAl9CiAKIAkvKiBydW4gaXQgKGlmIG5lZWRlZCkgYW5k IHByb2R1Y2Ugb3V0cHV0ICovCi0JRXhwbGFpbk9uZVBsYW4ocGxhbiwgTlVMTCwgaW50bywgZXMs IHF1ZXJ5U3RyaW5nLCBwYXJhbXMsIHF1ZXJ5RW52LAorCUV4cGxhaW5PbmVQbGFuKHBsYW4sIE5V TEwsIE5VTEwsIC0xLCBpbnRvLCBlcywgcXVlcnlTdHJpbmcsIHBhcmFtcywKKwkJCQkgICBxdWVy eUVudiwKIAkJCQkgICAmcGxhbmR1cmF0aW9uLCAoZXMtPmJ1ZmZlcnMgPyAmYnVmdXNhZ2UgOiBO VUxMKSwKIAkJCQkgICBlcy0+bWVtb3J5ID8gJm1lbV9jb3VudGVycyA6IE5VTEwpOwogfQpAQCAt NjE4LDYgKzYxOSw3IEBAIEV4cGxhaW5PbmVVdGlsaXR5KE5vZGUgKnV0aWxpdHlTdG10LCBJbnRv Q2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogICovCiB2b2lkCiBFeHBsYWluT25lUGxh bihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIENhY2hlZFBsYW4gKmNwbGFuLAorCQkJICAgQ2Fj aGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgaW50IHF1ZXJ5X2luZGV4LAogCQkJICAgSW50b0Ns YXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAkJCSAgIGNvbnN0IGNoYXIgKnF1ZXJ5U3Ry aW5nLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCSAgIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5 RW52LCBjb25zdCBpbnN0cl90aW1lICpwbGFuZHVyYXRpb24sCkBAIC02ODgsOCArNjkwLDggQEAg RXhwbGFpbk9uZVBsYW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBDYWNoZWRQbGFuICpjcGxh biwKIAlpZiAoaW50bykKIAkJZWZsYWdzIHw9IEdldEludG9SZWxFRmxhZ3MoaW50byk7CiAKLQkv KiBjYWxsIEV4ZWN1dG9yU3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uICov Ci0JRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7CisJLyogQ2FsbCBFeGVjdXRvclN0 YXJ0RXh0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbi4gKi8KKwlFeGVjdXRvclN0 YXJ0RXh0KHF1ZXJ5RGVzYywgZWZsYWdzLCBwbGFuc291cmNlLCBxdWVyeV9pbmRleCk7CiAKIAkv KiBFeGVjdXRlIHRoZSBwbGFuIGZvciBzdGF0aXN0aWNzIGlmIGFza2VkIGZvciAqLwogCWlmIChl cy0+YW5hbHl6ZSkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMu YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYwppbmRleCA0ZjZhY2Y2NzE5Li40 YjE1MDNjMDVlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wb3J0YWxjbWRzLmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9ydGFsY21kcy5jCkBAIC0xMDcsNiArMTA3LDcg QEAgUGVyZm9ybUN1cnNvck9wZW4oUGFyc2VTdGF0ZSAqcHN0YXRlLCBEZWNsYXJlQ3Vyc29yU3Rt dCAqY3N0bXQsIFBhcmFtTGlzdEluZm8gcGEKIAkJCQkJICBxdWVyeVN0cmluZywKIAkJCQkJICBD TURUQUdfU0VMRUNULAkvKiBjdXJzb3IncyBxdWVyeSBpcyBhbHdheXMgYSBTRUxFQ1QgKi8KIAkJ CQkJICBsaXN0X21ha2UxKHBsYW4pLAorCQkJCQkgIE5VTEwsCiAJCQkJCSAgTlVMTCk7CiAKIAkv Ki0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwppbmRleCAzMTFiOWViZDViLi40Y2Q3OWE2 ZTNhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCkBAIC0yMDIsNyArMjAyLDggQEAgRXhlY3V0ZVF1 ZXJ5KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJICBxdWVyeV9zdHJpbmcsCiAJCQkJCSAgZW50 cnktPnBsYW5zb3VyY2UtPmNvbW1hbmRUYWcsCiAJCQkJCSAgcGxhbl9saXN0LAotCQkJCQkgIGNw bGFuKTsKKwkJCQkJICBjcGxhbiwKKwkJCQkJICBlbnRyeS0+cGxhbnNvdXJjZSk7CiAKIAkvKgog CSAqIEZvciBDUkVBVEUgVEFCTEUgLi4uIEFTIEVYRUNVVEUsIHdlIG11c3QgdmVyaWZ5IHRoYXQg dGhlIHByZXBhcmVkCkBAIC01ODMsNiArNTg0LDcgQEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVj dXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJ TWVtb3J5Q29udGV4dENvdW50ZXJzIG1lbV9jb3VudGVyczsKIAlNZW1vcnlDb250ZXh0IHBsYW5u ZXJfY3R4ID0gTlVMTDsKIAlNZW1vcnlDb250ZXh0IHNhdmVkX2N0eCA9IE5VTEw7CisJaW50CQkJ aSA9IDA7CiAKIAlpZiAoZXMtPm1lbW9yeSkKIAl7CkBAIC02NTUsOCArNjU3LDggQEAgRXhwbGFp bkV4ZWN1dGVRdWVyeShFeGVjdXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4 cGxhaW5TdGF0ZSAqZXMsCiAJCVBsYW5uZWRTdG10ICpwc3RtdCA9IGxmaXJzdF9ub2RlKFBsYW5u ZWRTdG10LCBwKTsKIAogCQlpZiAocHN0bXQtPmNvbW1hbmRUeXBlICE9IENNRF9VVElMSVRZKQot CQkJRXhwbGFpbk9uZVBsYW4ocHN0bXQsIGNwbGFuLCBpbnRvLCBlcywgcXVlcnlfc3RyaW5nLCBw YXJhbUxJLAotCQkJCQkJICAgcXVlcnlFbnYsCisJCQlFeHBsYWluT25lUGxhbihwc3RtdCwgY3Bs YW4sIGVudHJ5LT5wbGFuc291cmNlLCBpLAorCQkJCQkJICAgaW50bywgZXMsIHF1ZXJ5X3N0cmlu ZywgcGFyYW1MSSwgcXVlcnlFbnYsCiAJCQkJCQkgICAmcGxhbmR1cmF0aW9uLCAoZXMtPmJ1ZmZl cnMgPyAmYnVmdXNhZ2UgOiBOVUxMKSwKIAkJCQkJCSAgIGVzLT5tZW1vcnkgPyAmbWVtX2NvdW50 ZXJzIDogTlVMTCk7CiAJCWVsc2UKQEAgLTY2OCw2ICs2NzAsOCBAQCBFeHBsYWluRXhlY3V0ZVF1 ZXJ5KEV4ZWN1dGVTdG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRl ICplcywKIAkJLyogU2VwYXJhdGUgcGxhbnMgd2l0aCBhbiBhcHByb3ByaWF0ZSBzZXBhcmF0b3Ig Ki8KIAkJaWYgKGxuZXh0KHBsYW5fbGlzdCwgcCkgIT0gTlVMTCkKIAkJCUV4cGxhaW5TZXBhcmF0 ZVBsYW5zKGVzKTsKKworCQlpKys7CiAJfQogCiAJaWYgKGVzdGF0ZSkKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdn ZXIuYwppbmRleCAyOWQzMGJmYjZmLi5lMzNiOGY1NzNiIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy90cmlnZ2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5j CkBAIC01MTIwLDYgKzUxMjAsMjAgQEAgQWZ0ZXJUcmlnZ2VyRW5kUXVlcnkoRVN0YXRlICplc3Rh dGUpCiAJYWZ0ZXJUcmlnZ2Vycy5xdWVyeV9kZXB0aC0tOwogfQogCisvKiAtLS0tLS0tLS0tCisg KiBBZnRlclRyaWdnZXJBYm9ydFF1ZXJ5KCkKKyAqCisgKiBDYWxsZWQgYnkgRXhlY3V0b3JFbmQo KSBpZiB0aGUgcXVlcnkgZXhlY3V0aW9uIHdhcyBhYm9ydGVkIGR1ZSB0byB0aGUKKyAqIHBsYW4g YmVjb21pbmcgaW52YWxpZCBkdXJpbmcgaW5pdGlhbGl6YXRpb24uCisgKiAtLS0tLS0tLS0tCisg Ki8KK3ZvaWQKK0FmdGVyVHJpZ2dlckFib3J0UXVlcnkodm9pZCkKK3sKKwkvKiBSZXZlcnQgdGhl IGFjdGlvbnMgb2YgQWZ0ZXJUcmlnZ2VyQmVnaW5RdWVyeSgpLiAqLworCWFmdGVyVHJpZ2dlcnMu cXVlcnlfZGVwdGgtLTsKK30KKwogCiAvKgogICogQWZ0ZXJUcmlnZ2VyRnJlZVF1ZXJ5CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9SRUFETUUKaW5kZXggNjQyZDYzYmU2MS4uYzc2YTAwYjM5NCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvUkVBRE1FCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRQpA QCAtMjgwLDYgKzI4MCwyOCBAQCBhcmUgdHlwaWNhbGx5IHJlc2V0IHRvIGVtcHR5IG9uY2UgcGVy IHR1cGxlLiAgUGVyLXR1cGxlIGNvbnRleHRzIGFyZSB1c3VhbGx5CiBhc3NvY2lhdGVkIHdpdGgg RXhwckNvbnRleHRzLCBhbmQgY29tbW9ubHkgZWFjaCBQbGFuU3RhdGUgbm9kZSBoYXMgaXRzIG93 bgogRXhwckNvbnRleHQgdG8gZXZhbHVhdGUgaXRzIHF1YWwgYW5kIHRhcmdldGxpc3QgZXhwcmVz c2lvbnMgaW4uCiAKK1JlbGF0aW9uIExvY2tpbmcKKy0tLS0tLS0tLS0tLS0tLS0KKworVHlwaWNh bGx5LCB3aGVuIHRoZSBleGVjdXRvciBpbml0aWFsaXplcyBhIHBsYW4gdHJlZSBmb3IgZXhlY3V0 aW9uLCBpdCBkb2Vzbid0Citsb2NrIG5vbi1pbmRleCByZWxhdGlvbnMgaWYgdGhlIHBsYW4gdHJl ZSBpcyBmcmVzaGx5IGdlbmVyYXRlZCBhbmQgbm90IGRlcml2ZWQKK2Zyb20gYSBDYWNoZWRQbGFu LiBUaGlzIGlzIGJlY2F1c2Ugc3VjaCBsb2NrcyBoYXZlIGFscmVhZHkgYmVlbiBlc3RhYmxpc2hl ZAorZHVyaW5nIHRoZSBxdWVyeSdzIHBhcnNpbmcsIHJld3JpdGluZywgYW5kIHBsYW5uaW5nIHBo YXNlcy4gSG93ZXZlciwgd2l0aCBhCitjYWNoZWQgcGxhbiB0cmVlLCBzb21lIHJlbGF0aW9ucyBt YXkgcmVtYWluIHVubG9ja2VkLiBUaGUgZnVuY3Rpb24KK0FjcXVpcmVFeGVjdXRvckxvY2tzKCkg b25seSBsb2NrcyB1bnBydW5hYmxlIHJlbGF0aW9ucyBpbiB0aGUgcGxhbiwgZGVmZXJyaW5nCit0 aGUgbG9ja2luZyBvZiBwcnVuYWJsZSBvbmVzIHRvIGV4ZWN1dG9yIGluaXRpYWxpemF0aW9uLiBU aGlzIGF2b2lkcwordW5uZWNlc3NhcnkgbG9ja2luZyBvZiByZWxhdGlvbnMgdGhhdCB3aWxsIGJl IHBydW5lZCBkdXJpbmcgImluaXRpYWwiIHJ1bnRpbWUKK3BydW5pbmcgaW4gRXhlY0RvSW5pdGlh bFBydW5pbmcoKS4KKworVGhpcyBhcHByb2FjaCBjcmVhdGVzIGEgd2luZG93IHdoZXJlIGEgY2Fj aGVkIHBsYW4gdHJlZSB3aXRoIGNoaWxkIHRhYmxlcworY291bGQgYmVjb21lIG91dGRhdGVkIGlm IGFub3RoZXIgYmFja2VuZCBtb2RpZmllcyB0aGVzZSB0YWJsZXMgYmVmb3JlCitFeGVjRG9Jbml0 aWFsUHJ1bmluZygpIGxvY2tzIHRoZW0uIEFzIGEgcmVzdWx0LCB0aGUgZXhlY3V0b3IgaGFzIHRo ZSBhZGRlZCBkdXR5Cit0byB2ZXJpZnkgdGhlIHBsYW4gdHJlZSdzIHZhbGlkaXR5IHdoZW5ldmVy IGl0IGxvY2tzIGEgY2hpbGQgdGFibGUgYWZ0ZXIKK2RvaW5nIGluaXRpYWwgcHJ1bmluZy4gVGhp cyB2YWxpZGF0aW9uIGlzIGRvbmUgYnkgY2hlY2tpbmcgdGhlIENhY2hlZFBsYW4uaXNfdmFsaWQK K2F0dHJpYnV0ZS4gSWYgdGhlIHBsYW4gdHJlZSBpcyBvdXRkYXRlZCAoaXNfdmFsaWQ9ZmFsc2Up LCB0aGUgZXhlY3V0b3IgaGFsdHMKK2Z1cnRoZXIgaW5pdGlhbGl6YXRpb24sIGNsZWFucyB1cCBh bnl0aGluZyBpbiBFU3RhdGUgdGhhdCB3b3VsZCBoYXZlIGJlZW4KK2FsbG9jYXRlZCB1cCB0byB0 aGF0IHBvaW50LCBhbmQgcmV0cmllcyBleGVjdXRpb24gYWZ0ZXIgcmVjcmVhdGluZyB0aGUKK2lu dmFsaWQgcGxhbiBpbiB0aGUgQ2FjaGVkUGxhbi4KIAogUXVlcnkgUHJvY2Vzc2luZyBDb250cm9s IEZsb3cKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0yODgsMTEgKzMxMCwxMyBA QCBUaGlzIGlzIGEgc2tldGNoIG9mIGNvbnRyb2wgZmxvdyBmb3IgZnVsbCBxdWVyeSBwcm9jZXNz aW5nOgogCiAJQ3JlYXRlUXVlcnlEZXNjCiAKLQlFeGVjdXRvclN0YXJ0CisJRXhlY3V0b3JTdGFy dCBvciBFeGVjdXRvclN0YXJ0RXh0CiAJCUNyZWF0ZUV4ZWN1dG9yU3RhdGUKIAkJCWNyZWF0ZXMg cGVyLXF1ZXJ5IGNvbnRleHQKLQkJc3dpdGNoIHRvIHBlci1xdWVyeSBjb250ZXh0IHRvIHJ1biBF eGVjSW5pdE5vZGUKKwkJc3dpdGNoIHRvIHBlci1xdWVyeSBjb250ZXh0IHRvIHJ1biBFeGVjRG9J bml0aWFsUHJ1bmluZyBhbmQgRXhlY0luaXROb2RlCiAJCUFmdGVyVHJpZ2dlckJlZ2luUXVlcnkK KwkJRXhlY0RvSW5pdGlhbFBydW5pbmcKKwkJCWRvZXMgaW5pdGlhbCBwcnVuaW5nIGFuZCBsb2Nr cyBzdXJ2aXZpbmcgcGFydGl0aW9ucyBpZiBuZWVkZWQKIAkJRXhlY0luaXROb2RlIC0tLSByZWN1 cnNpdmVseSBzY2FucyBwbGFuIHRyZWUKIAkJCUV4ZWNJbml0Tm9kZQogCQkJCXJlY3Vyc2UgaW50 byBzdWJzaWRpYXJ5IG5vZGVzCkBAIC0zMTYsNyArMzQwLDEyIEBAIFRoaXMgaXMgYSBza2V0Y2gg b2YgY29udHJvbCBmbG93IGZvciBmdWxsIHF1ZXJ5IHByb2Nlc3Npbmc6CiAKIAlGcmVlUXVlcnlE ZXNjCiAKLVBlciBhYm92ZSBjb21tZW50cywgaXQncyBub3QgcmVhbGx5IGNyaXRpY2FsIGZvciBF eGVjRW5kTm9kZSB0byBmcmVlIGFueQorQXMgbWVudGlvbmVkIGluIHRoZSAiUmVsYXRpb24gTG9j a2luZyIgc2VjdGlvbiwgaWYgdGhlIHBsYW4gdHJlZSBpcyBmb3VuZCB0bworYmUgc3RhbGUgYWZ0 ZXIgbG9ja2luZyBwYXJ0aXRpb25zIGluIEV4ZWNEb0luaXRpYWxQcnVuaW5nKCksIHRoZSBjb250 cm9sIGlzCitpbW1lZGlhdGVseSByZXR1cm5lZCB0byBFeGVjdXRvclN0YXJ0RXh0KCksIHdoaWNo IHdpbGwgY3JlYXRlIGEgbmV3IHBsYW4gdHJlZQorYW5kIHBlcmZvcm0gdGhlIHN0ZXBzIHN0YXJ0 aW5nIGZyb20gQ3JlYXRlRXhlY3V0b3JTdGF0ZSgpIGFnYWluLgorCitQZXIgYWJvdmUgY29tbWVu dHMsIGl0J3Mgbm90IHJlYWxseSBjcml0aWNhbCBmb3IgRXhlY0VuZFBsYW4gdG8gZnJlZSBhbnkK IG1lbW9yeTsgaXQnbGwgYWxsIGdvIGF3YXkgaW4gRnJlZUV4ZWN1dG9yU3RhdGUgYW55d2F5LiAg SG93ZXZlciwgd2UgZG8gbmVlZCB0bwogYmUgY2FyZWZ1bCB0byBjbG9zZSByZWxhdGlvbnMsIGRy b3AgYnVmZmVyIHBpbnMsIGV0Yywgc28gd2UgZG8gbmVlZCB0byBzY2FuCiB0aGUgcGxhbiBzdGF0 ZSB0cmVlIHRvIGZpbmQgdGhlc2Ugc29ydHMgb2YgcmVzb3VyY2VzLgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNN YWluLmMKaW5kZXggZGYxYjViMmRjMy4uZGYxMTdlOTQ3NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY01haW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFp bi5jCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAidXRpbHMvYmFja2VuZF9zdGF0dXMuaCIK ICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9wYXJ0Y2FjaGUu aCIKKyNpbmNsdWRlICJ1dGlscy9wbGFuY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9ybHMuaCIK ICNpbmNsdWRlICJ1dGlscy9zbmFwbWdyLmgiCiAKQEAgLTEzNyw2ICsxMzgsNjAgQEAgRXhlY3V0 b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAkJc3RhbmRhcmRfRXhl Y3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7CiB9CiAKKy8qCisgKiBBIHZhcmlhbnQgb2Yg RXhlY3V0b3JTdGFydCgpIHRoYXQgaGFuZGxlcyBjbGVhbnVwIGFuZCByZXBsYW5uaW5nIGlmIHRo ZQorICogaW5wdXQgQ2FjaGVkUGxhbiBiZWNvbWVzIGludmFsaWQgZHVlIHRvIGxvY2tzIGJlaW5n IHRha2VuIGR1cmluZworICogRXhlY3V0b3JTdGFydEludGVybmFsKCkuICBJZiB0aGF0IGhhcHBl bnMsIGEgbmV3IENhY2hlZFBsYW4gaXMgY3JlYXRlZAorICogb25seSBmb3IgdGhlIGF0IHRoZSBp bmRleCAncXVlcnlfaW5kZXgnIGluIHBsYW5zb3VyY2UtPnF1ZXJ5X2xpc3QsIHdoaWNoCisgKiBp cyByZWxlYXNlZCBzZXBhcmF0ZWx5IGZyb20gdGhlIG9yaWdpbmFsIENhY2hlZFBsYW4uCisgKi8K K3ZvaWQKK0V4ZWN1dG9yU3RhcnRFeHQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3Ms CisJCQkJIENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCisJCQkJIGludCBxdWVyeV9pbmRl eCkKK3sKKwlpZiAocXVlcnlEZXNjLT5jcGxhbiA9PSBOVUxMKQorCXsKKwkJRXhlY3V0b3JTdGFy dChxdWVyeURlc2MsIGVmbGFncyk7CisJCXJldHVybjsKKwl9CisKKwl3aGlsZSAoMSkKKwl7CisJ CUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOworCQlpZiAoIUNhY2hlZFBsYW5WYWxp ZChxdWVyeURlc2MtPmNwbGFuKSkKKwkJeworCQkJQ2FjaGVkUGxhbiAqY3BsYW47CisKKwkJCS8q CisJCQkgKiBUaGUgcGxhbiBnb3QgaW52YWxpZGF0ZWQsIHNvIHRyeSB3aXRoIGEgbmV3IHVwZGF0 ZWQgcGxhbi4KKwkJCSAqCisJCQkgKiBCdXQgZmlyc3QgdW5kbyB3aGF0IEV4ZWN1dG9yU3RhcnQo KSB3b3VsZCd2ZSBkb25lLiAgTWFyaworCQkJICogZXhlY3V0aW9uIGFzIGFib3J0ZWQgdG8gZW5z dXJlIHRoYXQgQUZURVIgdHJpZ2dlciBzdGF0ZSBpcworCQkJICogcHJvcGVybHkgcmVzZXQuCisJ CQkgKi8KKwkJCXF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19hYm9ydGVkID0gdHJ1ZTsKKwkJCUV4ZWN1 dG9yRW5kKHF1ZXJ5RGVzYyk7CisKKwkJCWNwbGFuID0gR2V0U2luZ2xlQ2FjaGVkUGxhbihwbGFu c291cmNlLCBxdWVyeV9pbmRleCwKKwkJCQkJCQkJCQlxdWVyeURlc2MtPnF1ZXJ5RW52KTsKKwor CQkJLyoKKwkJCSAqIEluc3RhbGwgdGhlIG5ldyB0cmFuc2llbnQgY3BsYW4gaW50byB0aGUgUXVl cnlEZXNjIHJlcGxhY2luZworCQkJICogdGhlIG9sZCBvbmUgc28gdGhhdCBleGVjdXRvciBpbml0 aWFsaXphdGlvbiBjb2RlIGNhbiBzZWUgaXQuCisJCQkgKiBNYXJrIGl0IGFzIGluIHVzZSBieSB1 cyBhbmQgYXNrIEZyZWVRdWVyeURlc2MoKSB0byByZWxlYXNlIGl0LgorCQkJICovCisJCQljcGxh bi0+cmVmY291bnQgPSAxOworCQkJcXVlcnlEZXNjLT5jcGxhbiA9IGNwbGFuOworCQkJcXVlcnlE ZXNjLT5jcGxhbl9yZWxlYXNlID0gdHJ1ZTsKKwkJCXF1ZXJ5RGVzYy0+cGxhbm5lZHN0bXQgPSBs aW5pdGlhbF9ub2RlKFBsYW5uZWRTdG10LAorCQkJCQkJCQkJCQkJICAgcXVlcnlEZXNjLT5jcGxh bi0+c3RtdF9saXN0KTsKKwkJfQorCQllbHNlCisJCQlicmVhazsJLyogRXhlY3V0b3JTdGFydCgp IHN1Y2NlZWRlZCEgKi8KKwl9Cit9CisKIHZvaWQKIHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQoUXVl cnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiB7CkBAIC0zMjAsNiArMzc1LDcgQEAgc3Rh bmRhcmRfRXhlY3V0b3JSdW4oUXVlcnlEZXNjICpxdWVyeURlc2MsCiAJZXN0YXRlID0gcXVlcnlE ZXNjLT5lc3RhdGU7CiAKIAlBc3NlcnQoZXN0YXRlICE9IE5VTEwpOworCUFzc2VydCghZXN0YXRl LT5lc19hYm9ydGVkKTsKIAlBc3NlcnQoIShlc3RhdGUtPmVzX3RvcF9lZmxhZ3MgJiBFWEVDX0ZM QUdfRVhQTEFJTl9PTkxZKSk7CiAKIAkvKiBjYWxsZXIgbXVzdCBlbnN1cmUgdGhlIHF1ZXJ5J3Mg c25hcHNob3QgaXMgYWN0aXZlICovCkBAIC00MjYsOCArNDgyLDExIEBAIHN0YW5kYXJkX0V4ZWN1 dG9yRmluaXNoKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKQogCUFzc2VydChlc3RhdGUgIT0gTlVMTCk7 CiAJQXNzZXJ0KCEoZXN0YXRlLT5lc190b3BfZWZsYWdzICYgRVhFQ19GTEFHX0VYUExBSU5fT05M WSkpOwogCi0JLyogVGhpcyBzaG91bGQgYmUgcnVuIG9uY2UgYW5kIG9ubHkgb25jZSBwZXIgRXhl Y3V0b3IgaW5zdGFuY2UgKi8KLQlBc3NlcnQoIWVzdGF0ZS0+ZXNfZmluaXNoZWQpOworCS8qCisJ ICogVGhpcyBzaG91bGQgYmUgcnVuIG9uY2UgYW5kIG9ubHkgb25jZSBwZXIgRXhlY3V0b3IgaW5z dGFuY2UgYW5kIG5ldmVyCisJICogaWYgdGhlIGV4ZWN1dGlvbiB3YXMgYWJvcnRlZC4KKwkgKi8K KwlBc3NlcnQoIWVzdGF0ZS0+ZXNfZmluaXNoZWQgJiYgIWVzdGF0ZS0+ZXNfYWJvcnRlZCk7CiAK IAkvKiBTd2l0Y2ggaW50byBwZXItcXVlcnkgbWVtb3J5IGNvbnRleHQgKi8KIAlvbGRjb250ZXh0 ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGVzdGF0ZS0+ZXNfcXVlcnlfY3h0KTsKQEAgLTQ4Niwx MSArNTQ1LDEwIEBAIHN0YW5kYXJkX0V4ZWN1dG9yRW5kKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKQog CUFzc2VydChlc3RhdGUgIT0gTlVMTCk7CiAKIAkvKgotCSAqIENoZWNrIHRoYXQgRXhlY3V0b3JG aW5pc2ggd2FzIGNhbGxlZCwgdW5sZXNzIGluIEVYUExBSU4tb25seSBtb2RlLiBUaGlzCi0JICog QXNzZXJ0IGlzIG5lZWRlZCBiZWNhdXNlIEV4ZWN1dG9yRmluaXNoIGlzIG5ldyBhcyBvZiA5LjEs IGFuZCBjYWxsZXJzCi0JICogbWlnaHQgZm9yZ2V0IHRvIGNhbGwgaXQuCisJICogQ2hlY2sgdGhh dCBFeGVjdXRvckZpbmlzaCB3YXMgY2FsbGVkLCB1bmxlc3MgaW4gRVhQTEFJTi1vbmx5IG1vZGUg b3IgaWYKKwkgKiBleGVjdXRpb24gd2FzIGFib3J0ZWQuCiAJICovCi0JQXNzZXJ0KGVzdGF0ZS0+ ZXNfZmluaXNoZWQgfHwKKwlBc3NlcnQoZXN0YXRlLT5lc19maW5pc2hlZCB8fCBlc3RhdGUtPmVz X2Fib3J0ZWQgfHwKIAkJICAgKGVzdGF0ZS0+ZXNfdG9wX2VmbGFncyAmIEVYRUNfRkxBR19FWFBM QUlOX09OTFkpKTsKIAogCS8qCkBAIC01MDQsNiArNTYyLDE0IEBAIHN0YW5kYXJkX0V4ZWN1dG9y RW5kKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKQogCVVucmVnaXN0ZXJTbmFwc2hvdChlc3RhdGUtPmVz X3NuYXBzaG90KTsKIAlVbnJlZ2lzdGVyU25hcHNob3QoZXN0YXRlLT5lc19jcm9zc2NoZWNrX3Nu YXBzaG90KTsKIAorCS8qCisJICogUmVzZXQgQUZURVIgdHJpZ2dlciBtb2R1bGUgaWYgdGhlIHF1 ZXJ5IGV4ZWN1dGlvbiB3YXMgYWJvcnRlZC4KKwkgKi8KKwlpZiAoZXN0YXRlLT5lc19hYm9ydGVk ICYmCisJCSEoZXN0YXRlLT5lc190b3BfZWZsYWdzICYKKwkJICAoRVhFQ19GTEFHX1NLSVBfVFJJ R0dFUlMgfCBFWEVDX0ZMQUdfRVhQTEFJTl9PTkxZKSkpCisJCUFmdGVyVHJpZ2dlckFib3J0UXVl cnkoKTsKKwogCS8qCiAJICogTXVzdCBzd2l0Y2ggb3V0IG9mIGNvbnRleHQgYmVmb3JlIGRlc3Ry b3lpbmcgaXQKIAkgKi8KQEAgLTk2Miw2ICsxMDI4LDkgQEAgSW5pdFBsYW4oUXVlcnlEZXNjICpx dWVyeURlc2MsIGludCBlZmxhZ3MpCiAJZXN0YXRlLT5lc19wYXJ0X3BydW5lX2luZm9zID0gcGxh bm5lZHN0bXQtPnBhcnRQcnVuZUluZm9zOwogCUV4ZWNEb0luaXRpYWxQcnVuaW5nKGVzdGF0ZSk7 CiAKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm47CisKIAkvKgog CSAqIE5leHQsIGJ1aWxkIHRoZSBFeGVjUm93TWFyayBhcnJheSBmcm9tIHRoZSBQbGFuUm93TWFy ayhzKSwgaWYgYW55LgogCSAqLwpAQCAtMjk0OCw2ICszMDE3LDkgQEAgRXZhbFBsYW5RdWFsU3Rh cnQoRVBRU3RhdGUgKmVwcXN0YXRlLCBQbGFuICpwbGFuVHJlZSkKIAkgKiB0aGUgc25hcHNob3Qs IHJhbmdldGFibGUsIGFuZCBleHRlcm5hbCBQYXJhbSBpbmZvLiAgVGhleSBuZWVkIHRoZWlyIG93 bgogCSAqIGNvcGllcyBvZiBsb2NhbCBzdGF0ZSwgaW5jbHVkaW5nIGEgdHVwbGUgdGFibGUsIGVz X3BhcmFtX2V4ZWNfdmFscywKIAkgKiByZXN1bHQtcmVsIGluZm8sIGV0Yy4KKwkgKgorCSAqIGVz X2NhY2hlZHBsYW4gaXMgbm90IGNvcGllZCBiZWNhdXNlIEVQUSBwbGFuIGV4ZWN1dGlvbiBkb2Vz IG5vdCBhY3F1aXJlCisJICogYW55IG5ldyBsb2NrcyB0aGF0IGNvdWxkIGludmFsaWRhdGUgdGhl IENhY2hlZFBsYW4uCiAJICovCiAJcmNlc3RhdGUtPmVzX2RpcmVjdGlvbiA9IEZvcndhcmRTY2Fu RGlyZWN0aW9uOwogCXJjZXN0YXRlLT5lc19zbmFwc2hvdCA9IHBhcmVudGVzdGF0ZS0+ZXNfc25h cHNob3Q7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCmluZGV4IDY3NzM0OTc5YjAuLjQzNWFlMGRm N2EgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCkBAIC0xNDcsNiArMTQ3LDcgQEAgQ3JlYXRl RXhlY3V0b3JTdGF0ZSh2b2lkKQogCWVzdGF0ZS0+ZXNfdG9wX2VmbGFncyA9IDA7CiAJZXN0YXRl LT5lc19pbnN0cnVtZW50ID0gMDsKIAllc3RhdGUtPmVzX2ZpbmlzaGVkID0gZmFsc2U7CisJZXN0 YXRlLT5lc19hYm9ydGVkID0gZmFsc2U7CiAKIAllc3RhdGUtPmVzX2V4cHJjb250ZXh0cyA9IE5J TDsKIApAQCAtNzU3LDcgKzc1OCw3IEBAIEV4ZWNJbml0UmFuZ2VUYWJsZShFU3RhdGUgKmVzdGF0 ZSwgTGlzdCAqcmFuZ2VUYWJsZSwgTGlzdCAqcGVybUluZm9zKQogICogRXhlY0dldFJhbmdlVGFi bGVSZWxhdGlvbgogICoJCU9wZW4gdGhlIFJlbGF0aW9uIGZvciBhIHJhbmdlIHRhYmxlIGVudHJ5 LCBpZiBub3QgYWxyZWFkeSBkb25lCiAgKgotICogVGhlIFJlbGF0aW9ucyB3aWxsIGJlIGNsb3Nl ZCBhZ2FpbiBpbiBFeGVjRW5kUGxhbigpLgorICogVGhlIFJlbGF0aW9ucyB3aWxsIGJlIGNsb3Nl ZCBpbiBFeGVjRW5kUGxhbigpLgogICovCiBSZWxhdGlvbgogRXhlY0dldFJhbmdlVGFibGVSZWxh dGlvbihFU3RhdGUgKmVzdGF0ZSwgSW5kZXggcnRpKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivc3BpLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYwppbmRleCA2NTliZDZk Y2Q5Li5mODRmMzc2YzljIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYwor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYwpAQCAtNzAsNyArNzAsOCBAQCBzdGF0aWMg aW50CV9TUElfZXhlY3V0ZV9wbGFuKFNQSVBsYW5QdHIgcGxhbiwgY29uc3QgU1BJRXhlY3V0ZU9w dGlvbnMgKm9wdGlvbnMsCiBzdGF0aWMgUGFyYW1MaXN0SW5mbyBfU1BJX2NvbnZlcnRfcGFyYW1z KGludCBuYXJncywgT2lkICphcmd0eXBlcywKIAkJCQkJCQkJCQkgRGF0dW0gKlZhbHVlcywgY29u c3QgY2hhciAqTnVsbHMpOwogCi1zdGF0aWMgaW50CV9TUElfcHF1ZXJ5KFF1ZXJ5RGVzYyAqcXVl cnlEZXNjLCBib29sIGZpcmVfdHJpZ2dlcnMsIHVpbnQ2NCB0Y291bnQpOworc3RhdGljIGludAlf U1BJX3BxdWVyeShRdWVyeURlc2MgKnF1ZXJ5RGVzYywgYm9vbCBmaXJlX3RyaWdnZXJzLCB1aW50 NjQgdGNvdW50LAorCQkJCQkJQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgaW50IHF1ZXJ5 X2luZGV4KTsKIAogc3RhdGljIHZvaWQgX1NQSV9lcnJvcl9jYWxsYmFjayh2b2lkICphcmcpOwog CkBAIC0xNjgyLDcgKzE2ODMsOCBAQCBTUElfY3Vyc29yX29wZW5faW50ZXJuYWwoY29uc3QgY2hh ciAqbmFtZSwgU1BJUGxhblB0ciBwbGFuLAogCQkJCQkgIHF1ZXJ5X3N0cmluZywKIAkJCQkJICBw bGFuc291cmNlLT5jb21tYW5kVGFnLAogCQkJCQkgIHN0bXRfbGlzdCwKLQkJCQkJICBjcGxhbik7 CisJCQkJCSAgY3BsYW4sCisJCQkJCSAgcGxhbnNvdXJjZSk7CiAKIAkvKgogCSAqIFNldCB1cCBv cHRpb25zIGZvciBwb3J0YWwuICBEZWZhdWx0IFNDUk9MTCB0eXBlIGlzIGNob3NlbiB0aGUgc2Ft ZSB3YXkKQEAgLTI0OTQsNiArMjQ5Niw3IEBAIF9TUElfZXhlY3V0ZV9wbGFuKFNQSVBsYW5QdHIg cGxhbiwgY29uc3QgU1BJRXhlY3V0ZU9wdGlvbnMgKm9wdGlvbnMsCiAJCUNhY2hlZFBsYW5Tb3Vy Y2UgKnBsYW5zb3VyY2UgPSAoQ2FjaGVkUGxhblNvdXJjZSAqKSBsZmlyc3QobGMxKTsKIAkJTGlz dAkgICAqc3RtdF9saXN0OwogCQlMaXN0Q2VsbCAgICpsYzI7CisJCWludAkJCWkgPSAwOwogCiAJ CXNwaWNhbGxiYWNrYXJnLnF1ZXJ5ID0gcGxhbnNvdXJjZS0+cXVlcnlfc3RyaW5nOwogCkBAIC0y NjkxLDggKzI2OTQsOSBAQCBfU1BJX2V4ZWN1dGVfcGxhbihTUElQbGFuUHRyIHBsYW4sIGNvbnN0 IFNQSUV4ZWN1dGVPcHRpb25zICpvcHRpb25zLAogCQkJCQkJCQkJCW9wdGlvbnMtPnBhcmFtcywK IAkJCQkJCQkJCQlfU1BJX2N1cnJlbnQtPnF1ZXJ5RW52LAogCQkJCQkJCQkJCTApOwotCQkJCXJl cyA9IF9TUElfcHF1ZXJ5KHFkZXNjLCBmaXJlX3RyaWdnZXJzLAotCQkJCQkJCQkgIGNhblNldFRh ZyA/IG9wdGlvbnMtPnRjb3VudCA6IDApOworCisJCQkJcmVzID0gX1NQSV9wcXVlcnkocWRlc2Ms IGZpcmVfdHJpZ2dlcnMsIGNhblNldFRhZyA/IG9wdGlvbnMtPnRjb3VudCA6IDAsCisJCQkJCQkJ CSAgcGxhbnNvdXJjZSwgaSk7CiAJCQkJRnJlZVF1ZXJ5RGVzYyhxZGVzYyk7CiAJCQl9CiAJCQll bHNlCkBAIC0yNzg5LDYgKzI3OTMsOCBAQCBfU1BJX2V4ZWN1dGVfcGxhbihTUElQbGFuUHRyIHBs YW4sIGNvbnN0IFNQSUV4ZWN1dGVPcHRpb25zICpvcHRpb25zLAogCQkJCW15X3JlcyA9IHJlczsK IAkJCQlnb3RvIGZhaWw7CiAJCQl9CisKKwkJCWkrKzsKIAkJfQogCiAJCS8qIERvbmUgd2l0aCB0 aGlzIHBsYW4sIHNvIHJlbGVhc2UgcmVmY291bnQgKi8KQEAgLTI4NjYsNyArMjg3Miw4IEBAIF9T UElfY29udmVydF9wYXJhbXMoaW50IG5hcmdzLCBPaWQgKmFyZ3R5cGVzLAogfQogCiBzdGF0aWMg aW50Ci1fU1BJX3BxdWVyeShRdWVyeURlc2MgKnF1ZXJ5RGVzYywgYm9vbCBmaXJlX3RyaWdnZXJz LCB1aW50NjQgdGNvdW50KQorX1NQSV9wcXVlcnkoUXVlcnlEZXNjICpxdWVyeURlc2MsIGJvb2wg ZmlyZV90cmlnZ2VycywgdWludDY0IHRjb3VudCwKKwkJCUNhY2hlZFBsYW5Tb3VyY2UgKnBsYW5z b3VyY2UsIGludCBxdWVyeV9pbmRleCkKIHsKIAlpbnQJCQlvcGVyYXRpb24gPSBxdWVyeURlc2Mt Pm9wZXJhdGlvbjsKIAlpbnQJCQllZmxhZ3M7CkBAIC0yOTIyLDcgKzI5MjksNyBAQCBfU1BJX3Bx dWVyeShRdWVyeURlc2MgKnF1ZXJ5RGVzYywgYm9vbCBmaXJlX3RyaWdnZXJzLCB1aW50NjQgdGNv dW50KQogCWVsc2UKIAkJZWZsYWdzID0gRVhFQ19GTEFHX1NLSVBfVFJJR0dFUlM7CiAKLQlFeGVj dXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKKwlFeGVjdXRvclN0YXJ0RXh0KHF1ZXJ5RGVz YywgZWZsYWdzLCBwbGFuc291cmNlLCBxdWVyeV9pbmRleCk7CiAKIAlFeGVjdXRvclJ1bihxdWVy eURlc2MsIEZvcndhcmRTY2FuRGlyZWN0aW9uLCB0Y291bnQsIHRydWUpOwogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVz LmMKaW5kZXggZTM5NGYxNDE5YS4uYjk1Yzg1OTY1NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dGNvcC9wb3N0Z3Jlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwpAQCAtMTIz Nyw2ICsxMjM3LDcgQEAgZXhlY19zaW1wbGVfcXVlcnkoY29uc3QgY2hhciAqcXVlcnlfc3RyaW5n KQogCQkJCQkJICBxdWVyeV9zdHJpbmcsCiAJCQkJCQkgIGNvbW1hbmRUYWcsCiAJCQkJCQkgIHBs YW50cmVlX2xpc3QsCisJCQkJCQkgIE5VTEwsCiAJCQkJCQkgIE5VTEwpOwogCiAJCS8qCkBAIC0y MDM5LDcgKzIwNDAsOCBAQCBleGVjX2JpbmRfbWVzc2FnZShTdHJpbmdJbmZvIGlucHV0X21lc3Nh Z2UpCiAJCQkJCSAgcXVlcnlfc3RyaW5nLAogCQkJCQkgIHBzcmMtPmNvbW1hbmRUYWcsCiAJCQkJ CSAgY3BsYW4tPnN0bXRfbGlzdCwKLQkJCQkJICBjcGxhbik7CisJCQkJCSAgY3BsYW4sCisJCQkJ CSAgcHNyYyk7CiAKIAkvKiBEb25lIHdpdGggdGhlIHNuYXBzaG90IHVzZWQgZm9yIHBhcmFtZXRl ciBJL08gYW5kIHBhcnNpbmcvcGxhbm5pbmcgKi8KIAlpZiAoc25hcHNob3Rfc2V0KQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5 LmMKaW5kZXggNmU4ZjZiMWI4Zi4uZGJiMGZmYjc3MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dGNvcC9wcXVlcnkuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jCkBAIC0xOSw2ICsx OSw3IEBACiAKICNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3By ZXBhcmUuaCIKKyNpbmNsdWRlICJleGVjdXRvci9leGVjZGVzYy5oIgogI2luY2x1ZGUgImV4ZWN1 dG9yL3RzdG9yZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAi cGdfdHJhY2UuaCIKQEAgLTM3LDYgKzM4LDggQEAgUG9ydGFsCQlBY3RpdmVQb3J0YWwgPSBOVUxM OwogCiBzdGF0aWMgdm9pZCBQcm9jZXNzUXVlcnkoUGxhbm5lZFN0bXQgKnBsYW4sCiAJCQkJCQkg Q2FjaGVkUGxhbiAqY3BsYW4sCisJCQkJCQkgQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwK KwkJCQkJCSBpbnQgcXVlcnlfaW5kZXgsCiAJCQkJCQkgY29uc3QgY2hhciAqc291cmNlVGV4dCwK IAkJCQkJCSBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCQkJCSBRdWVyeUVudmlyb25tZW50ICpx dWVyeUVudiwKQEAgLTgwLDYgKzgzLDcgQEAgQ3JlYXRlUXVlcnlEZXNjKFBsYW5uZWRTdG10ICpw bGFubmVkc3RtdCwKIAlxZC0+b3BlcmF0aW9uID0gcGxhbm5lZHN0bXQtPmNvbW1hbmRUeXBlOwkv KiBvcGVyYXRpb24gKi8KIAlxZC0+cGxhbm5lZHN0bXQgPSBwbGFubmVkc3RtdDsJLyogcGxhbiAq LwogCXFkLT5jcGxhbiA9IGNwbGFuOwkJCS8qIENhY2hlZFBsYW4gc3VwcGx5aW5nIHRoZSBwbGFu bmVkc3RtdCAqLworCXFkLT5jcGxhbl9yZWxlYXNlID0gZmFsc2U7CiAJcWQtPnNvdXJjZVRleHQg PSBzb3VyY2VUZXh0OwkvKiBxdWVyeSB0ZXh0ICovCiAJcWQtPnNuYXBzaG90ID0gUmVnaXN0ZXJT bmFwc2hvdChzbmFwc2hvdCk7CS8qIHNuYXBzaG90ICovCiAJLyogUkkgY2hlY2sgc25hcHNob3Qg Ki8KQEAgLTExNCw2ICsxMTgsMTMgQEAgRnJlZVF1ZXJ5RGVzYyhRdWVyeURlc2MgKnFkZXNjKQog CVVucmVnaXN0ZXJTbmFwc2hvdChxZGVzYy0+c25hcHNob3QpOwogCVVucmVnaXN0ZXJTbmFwc2hv dChxZGVzYy0+Y3Jvc3NjaGVja19zbmFwc2hvdCk7CiAKKwkvKgorCSAqIFJlbGVhc2UgQ2FjaGVk UGxhbiBpZiByZXF1ZXN0ZWQuICBUaGUgQ2FjaGVkUGxhbiBpcyBub3QgYXNzb2NpYXRlZCB3aXRo CisJICogYSBSZXNvdXJjZU93bmVyIHdoZW4gY3BsYW5fcmVsZWFzZSBpcyB0cnVlOyBzZWUgRXhl Y3V0b3JTdGFydEV4dCgpLgorCSAqLworCWlmIChxZGVzYy0+Y3BsYW5fcmVsZWFzZSkKKwkJUmVs ZWFzZUNhY2hlZFBsYW4ocWRlc2MtPmNwbGFuLCBOVUxMKTsKKwogCS8qIE9ubHkgdGhlIFF1ZXJ5 RGVzYyBpdHNlbGYgbmVlZCBiZSBmcmVlZCAqLwogCXBmcmVlKHFkZXNjKTsKIH0KQEAgLTEyNiw2 ICsxMzcsOCBAQCBGcmVlUXVlcnlEZXNjKFF1ZXJ5RGVzYyAqcWRlc2MpCiAgKgogICoJcGxhbjog dGhlIHBsYW4gdHJlZSBmb3IgdGhlIHF1ZXJ5CiAgKgljcGxhbjogQ2FjaGVkUGxhbiBzdXBwbHlp bmcgdGhlIHBsYW4KKyAqCXBsYW5zb3VyY2U6IENhY2hlZFBsYW5Tb3VyY2Ugc3VwcGx5aW5nIHRo ZSBjcGxhbgorICoJcXVlcnlfaW5kZXg6IGluZGV4IG9mIHRoZSBxdWVyeSBpbiBwbGFuc291cmNl LT5xdWVyeV9saXN0CiAgKglzb3VyY2VUZXh0OiB0aGUgc291cmNlIHRleHQgb2YgdGhlIHF1ZXJ5 CiAgKglwYXJhbXM6IGFueSBwYXJhbWV0ZXJzIG5lZWRlZAogICoJZGVzdDogd2hlcmUgdG8gc2Vu ZCByZXN1bHRzCkBAIC0xMzksNiArMTUyLDggQEAgRnJlZVF1ZXJ5RGVzYyhRdWVyeURlc2MgKnFk ZXNjKQogc3RhdGljIHZvaWQKIFByb2Nlc3NRdWVyeShQbGFubmVkU3RtdCAqcGxhbiwKIAkJCSBD YWNoZWRQbGFuICpjcGxhbiwKKwkJCSBDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAorCQkJ IGludCBxdWVyeV9pbmRleCwKIAkJCSBjb25zdCBjaGFyICpzb3VyY2VUZXh0LAogCQkJIFBhcmFt TGlzdEluZm8gcGFyYW1zLAogCQkJIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LApAQCAtMTU3 LDcgKzE3Miw3IEBAIFByb2Nlc3NRdWVyeShQbGFubmVkU3RtdCAqcGxhbiwKIAkvKgogCSAqIENh bGwgRXhlY3V0b3JTdGFydCB0byBwcmVwYXJlIHRoZSBwbGFuIGZvciBleGVjdXRpb24KIAkgKi8K LQlFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgMCk7CisJRXhlY3V0b3JTdGFydEV4dChxdWVyeURl c2MsIDAsIHBsYW5zb3VyY2UsIHF1ZXJ5X2luZGV4KTsKIAogCS8qCiAJICogUnVuIHRoZSBwbGFu IHRvIGNvbXBsZXRpb24uCkBAIC01MTgsOSArNTMzLDEyIEBAIFBvcnRhbFN0YXJ0KFBvcnRhbCBw b3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJCQlteWVmbGFncyA9IGVmbGFnczsKIAog CQkJCS8qCi0JCQkJICogQ2FsbCBFeGVjdXRvclN0YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9y IGV4ZWN1dGlvbgorCQkJCSAqIEV4ZWN1dG9yU3RhcnRFeHQoKSB0byBwcmVwYXJlIHRoZSBwbGFu IGZvciBleGVjdXRpb24uICBJZgorCQkJCSAqIHRoZSBwb3J0YWwgaXMgdXNpbmcgYSBjYWNoZWQg cGxhbiwgaXQgIG1heSBnZXQgaW52YWxpZGF0ZWQKKwkJCQkgKiBkdXJpbmcgcGxhbiBpbnRpYWxp emF0aW9uLCBpbiB3aGljaCBjYXNlIGEgbmV3IG9uZSBpcworCQkJCSAqIGNyZWF0ZWQgYW5kIHNh dmVkIGluIHRoZSBRdWVyeURlc2MuCiAJCQkJICovCi0JCQkJRXhlY3V0b3JTdGFydChxdWVyeURl c2MsIG15ZWZsYWdzKTsKKwkJCQlFeGVjdXRvclN0YXJ0RXh0KHF1ZXJ5RGVzYywgbXllZmxhZ3Ms IHBvcnRhbC0+cGxhbnNvdXJjZSwgMCk7CiAKIAkJCQkvKgogCQkJCSAqIFRoaXMgdGVsbHMgUG9y dGFsQ2xlYW51cCB0byBzaHV0IGRvd24gdGhlIGV4ZWN1dG9yCkBAIC0xMjAxLDYgKzEyMTksNyBA QCBQb3J0YWxSdW5NdWx0aShQb3J0YWwgcG9ydGFsLAogewogCWJvb2wJCWFjdGl2ZV9zbmFwc2hv dF9zZXQgPSBmYWxzZTsKIAlMaXN0Q2VsbCAgICpzdG10bGlzdF9pdGVtOworCWludAkJCWkgPSAw OwogCiAJLyoKIAkgKiBJZiB0aGUgZGVzdGluYXRpb24gaXMgRGVzdFJlbW90ZUV4ZWN1dGUsIGNo YW5nZSB0byBEZXN0Tm9uZS4gIFRoZQpAQCAtMTI4Myw2ICsxMzAyLDggQEAgUG9ydGFsUnVuTXVs dGkoUG9ydGFsIHBvcnRhbCwKIAkJCQkvKiBzdGF0ZW1lbnQgY2FuIHNldCB0YWcgc3RyaW5nICov CiAJCQkJUHJvY2Vzc1F1ZXJ5KHBzdG10LAogCQkJCQkJCSBwb3J0YWwtPmNwbGFuLAorCQkJCQkJ CSBwb3J0YWwtPnBsYW5zb3VyY2UsCisJCQkJCQkJIGksCiAJCQkJCQkJIHBvcnRhbC0+c291cmNl VGV4dCwKIAkJCQkJCQkgcG9ydGFsLT5wb3J0YWxQYXJhbXMsCiAJCQkJCQkJIHBvcnRhbC0+cXVl cnlFbnYsCkBAIC0xMjkzLDYgKzEzMTQsOCBAQCBQb3J0YWxSdW5NdWx0aShQb3J0YWwgcG9ydGFs LAogCQkJCS8qIHN0bXQgYWRkZWQgYnkgcmV3cml0ZSBjYW5ub3Qgc2V0IHRhZyAqLwogCQkJCVBy b2Nlc3NRdWVyeShwc3RtdCwKIAkJCQkJCQkgcG9ydGFsLT5jcGxhbiwKKwkJCQkJCQkgcG9ydGFs LT5wbGFuc291cmNlLAorCQkJCQkJCSBpLAogCQkJCQkJCSBwb3J0YWwtPnNvdXJjZVRleHQsCiAJ CQkJCQkJIHBvcnRhbC0+cG9ydGFsUGFyYW1zLAogCQkJCQkJCSBwb3J0YWwtPnF1ZXJ5RW52LApA QCAtMTM1Nyw2ICsxMzgwLDggQEAgUG9ydGFsUnVuTXVsdGkoUG9ydGFsIHBvcnRhbCwKIAkJICov CiAJCWlmIChsbmV4dChwb3J0YWwtPnN0bXRzLCBzdG10bGlzdF9pdGVtKSAhPSBOVUxMKQogCQkJ Q29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKKworCQlpKys7CiAJfQogCiAJLyogUG9wIHRoZSBz bmFwc2hvdCBpZiB3ZSBwdXNoZWQgb25lLiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvcGxhbmNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUu YwppbmRleCA1Yjc1ZGFkZjEzLi5kMzNmODcxZWEyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9jYWNoZS9wbGFuY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFu Y2FjaGUuYwpAQCAtOTQsNiArOTQsMTQgQEAKICAqLwogc3RhdGljIGRsaXN0X2hlYWQgc2F2ZWRf cGxhbl9saXN0ID0gRExJU1RfU1RBVElDX0lOSVQoc2F2ZWRfcGxhbl9saXN0KTsKIAorLyoKKyAq IEhlYWQgb2YgdGhlIGJhY2tlbmQncyBsaXN0IG9mICJzdGFuZGFsb25lIiBDYWNoZWRQbGFucyB0 aGF0IGFyZSBub3QKKyAqIGFzc29jaWF0ZWQgd2l0aCBhIENhY2hlZFBsYW5Tb3VyY2UsIGNyZWF0 ZWQgYnkgR2V0U2luZ2xlQ2FjaGVkUGxhbigpIGZvcgorICogdHJhbnNpZW50IHVzZSBieSB0aGUg ZXhlY3V0b3IgaW4gY2VydGFpbiBzY2VuYXJpb3Mgd2hlcmUgdGhleSdyZSBuZWVkZWQKKyAqIG9u bHkgZm9yIG9uZSBleGVjdXRpb24gb2YgdGhlIHBsYW4uCisgKi8KK3N0YXRpYyBkbGlzdF9oZWFk IHN0YW5kYWxvbmVfcGxhbl9saXN0ID0gRExJU1RfU1RBVElDX0lOSVQoc3RhbmRhbG9uZV9wbGFu X2xpc3QpOworCiAvKgogICogVGhpcyBpcyB0aGUgaGVhZCBvZiB0aGUgYmFja2VuZCdzIGxpc3Qg b2YgQ2FjaGVkRXhwcmVzc2lvbnMuCiAgKi8KQEAgLTkwNSw2ICs5MTMsOCBAQCBDaGVja0NhY2hl ZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSkKICAqIFBsYW5uaW5nIHdvcmsgaXMg ZG9uZSBpbiB0aGUgY2FsbGVyJ3MgbWVtb3J5IGNvbnRleHQuICBUaGUgZmluaXNoZWQgcGxhbgog ICogaXMgaW4gYSBjaGlsZCBtZW1vcnkgY29udGV4dCwgd2hpY2ggdHlwaWNhbGx5IHNob3VsZCBn ZXQgcmVwYXJlbnRlZAogICogKHVubGVzcyB0aGlzIGlzIGEgb25lLXNob3QgcGxhbiwgaW4gd2hp Y2ggY2FzZSB3ZSBkb24ndCBjb3B5IHRoZSBwbGFuKS4KKyAqCisgKiBOb3RlOiBXaGVuIGNoYW5n aW5nIHRoaXMsIHlvdSBzaG91bGQgYWxzbyBsb29rIGF0IEdldFNpbmdsZUNhY2hlZFBsYW4oKS4K ICAqLwogc3RhdGljIENhY2hlZFBsYW4gKgogQnVpbGRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3Vy Y2UgKnBsYW5zb3VyY2UsIExpc3QgKnFsaXN0LApAQCAtMTAzNCw2ICsxMDQ0LDcgQEAgQnVpbGRD YWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIExpc3QgKnFsaXN0LAogCXBs YW4tPmlzX2dlbmVyaWMgPSBnZW5lcmljOwogCXBsYW4tPmlzX3NhdmVkID0gZmFsc2U7CiAJcGxh bi0+aXNfdmFsaWQgPSB0cnVlOworCXBsYW4tPmlzX3N0YW5kYWxvbmUgPSBmYWxzZTsKIAogCS8q IGFzc2lnbiBnZW5lcmF0aW9uIG51bWJlciB0byBuZXcgcGxhbiAqLwogCXBsYW4tPmdlbmVyYXRp b24gPSArKyhwbGFuc291cmNlLT5nZW5lcmF0aW9uKTsKQEAgLTEyODIsNiArMTI5MywxMjEgQEAg R2V0Q2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBQYXJhbUxpc3RJbmZv IGJvdW5kUGFyYW1zLAogCXJldHVybiBwbGFuOwogfQogCisvKgorICogQ3JlYXRlIGEgZnJlc2gg Q2FjaGVkUGxhbiBmb3IgdGhlIHF1ZXJ5X2luZGV4J3RoIHF1ZXJ5IGluIHRoZSBwcm92aWRlZAor ICogQ2FjaGVkUGxhblNvdXJjZS4KKyAqCisgKiBUaGUgY3JlYXRlZCBDYWNoZWRQbGFuIGlzIHN0 YW5kYWxvbmUsIG1lYW5pbmcgaXQgaXMgbm90IHRyYWNrZWQgaW4gdGhlCisgKiBDYWNoZWRQbGFu U291cmNlLiBUaGUgQ2FjaGVkUGxhbiBhbmQgaXRzIHBsYW4gdHJlZXMgYXJlIGFsbG9jYXRlZCBp biBhCisgKiBjaGlsZCBjb250ZXh0IG9mIHRoZSBjYWxsZXIncyBtZW1vcnkgY29udGV4dC4gVGhl IGNhbGxlciBtdXN0IGVuc3VyZSB0aGV5CisgKiByZW1haW4gdmFsaWQgdW50aWwgZXhlY3V0aW9u IGlzIGNvbXBsZXRlLCBhZnRlciB3aGljaCB0aGUgcGxhbiBzaG91bGQgYmUKKyAqIHJlbGVhc2Vk IGJ5IGNhbGxpbmcgUmVsZWFzZUNhY2hlZFBsYW4oKS4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIHBy aW1hcmlseSBzdXBwb3J0cyBFeGVjdXRvclN0YXJ0RXh0KCksIHdoaWNoIGhhbmRsZXMgY2FzZXMK KyAqIHdoZXJlIHRoZSBvcmlnaW5hbCBnZW5lcmljIENhY2hlZFBsYW4gYmVjb21lcyBpbnZhbGlk IGFmdGVyIHBydW5hYmxlCisgKiByZWxhdGlvbnMgYXJlIGxvY2tlZC4KKyAqLworQ2FjaGVkUGxh biAqCitHZXRTaW5nbGVDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIGlu dCBxdWVyeV9pbmRleCwKKwkJCQkJUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpCit7CisJTGlz dCAqcXVlcnlfbGlzdCA9IHBsYW5zb3VyY2UtPnF1ZXJ5X2xpc3QsCisJCSAqcGxhbl9saXN0Owor CUNhY2hlZFBsYW4gKnBsYW4gPSBwbGFuc291cmNlLT5ncGxhbjsKKwlNZW1vcnlDb250ZXh0IG9s ZGN4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0LAorCQlwbGFuX2NvbnRleHQ7CisJUGxhbm5lZFN0 bXQgKnBsYW5uZWRzdG10OworCisJQXNzZXJ0KEFjdGl2ZVNuYXBzaG90U2V0KCkpOworCisJLyog U2FuaXR5IGNoZWNrcyAqLworCWlmIChwbGFuID09IE5VTEwpCisJCWVsb2coRVJST1IsICJHZXRT aW5nbGVDYWNoZWRQbGFuKCkgY2FsbGVkIGluIHRoZSB3cm9uZyBjb250ZXh0OiBwbGFuc291cmNl LT5ncGxhbiBpcyBOVUxMIik7CisJZWxzZSBpZiAocGxhbi0+aXNfdmFsaWQpCisJCWVsb2coRVJS T1IsICJHZXRTaW5nbGVDYWNoZWRQbGFuKCkgY2FsbGVkIGluIHRoZSB3cm9uZyBjb250ZXh0OiBw bGFuc291cmNlLT5ncGxhbi0+aXNfdmFsaWQiKTsKKworCS8qCisJICogVGhlIHBsYW5zb3VyY2Ug bWlnaHQgaGF2ZSBiZWNvbWUgaW52YWxpZCBzaW5jZSBHZXRDYWNoZWRQbGFuKCkuIFNlZSB0aGUK KwkgKiBjb21tZW50IGluIEJ1aWxkQ2FjaGVkUGxhbigpIGZvciBkZXRhaWxzIG9uIHdoeSB0aGlz IG1pZ2h0IGhhcHBlbi4KKwkgKgorCSAqIFRoZSByaXNrIGlzIGdyZWF0ZXIgaGVyZSBiZWNhdXNl IHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gdGhlCisJICogZXhlY3V0b3IsIG1lYW5pbmcg bXVjaCBtb3JlIHByb2Nlc3NpbmcgbWF5IGhhdmUgb2NjdXJyZWQgY29tcGFyZWQgdG8KKwkgKiB3 aGVuIEJ1aWxkQ2FjaGVkUGxhbigpIGlzIGNhbGxlZCBmcm9tIEdldENhY2hlZFBsYW4oKS4KKwkg Ki8KKwlpZiAoIXBsYW5zb3VyY2UtPmlzX3ZhbGlkKQorCQlxdWVyeV9saXN0ID0gUmV2YWxpZGF0 ZUNhY2hlZFF1ZXJ5KHBsYW5zb3VyY2UsIHF1ZXJ5RW52KTsKKwlBc3NlcnQocXVlcnlfbGlzdCAh PSBOSUwpOworCisJLyoKKwkgKiBCdWlsZCBhIG5ldyBnZW5lcmljIHBsYW4gZm9yIHRoZSBxdWVy eV9pbmRleCd0aCBxdWVyeSwgYnV0IG1ha2UgYSBjb3B5CisJICogdG8gYmUgc2NyaWJibGVkIG9u IGJ5IHRoZSBwbGFubmVyCisJICovCisJcXVlcnlfbGlzdCA9IGxpc3RfbWFrZTEoY29weU9iamVj dChsaXN0X250aF9ub2RlKFF1ZXJ5LCBxdWVyeV9saXN0LAorCQkJCQkJCQkJCQkJCSBxdWVyeV9p bmRleCkpKTsKKwlwbGFuX2xpc3QgPSBwZ19wbGFuX3F1ZXJpZXMocXVlcnlfbGlzdCwgcGxhbnNv dXJjZS0+cXVlcnlfc3RyaW5nLAorCQkJCQkJCQlwbGFuc291cmNlLT5jdXJzb3Jfb3B0aW9ucywg TlVMTCk7CisKKwlsaXN0X2ZyZWVfZGVlcChxdWVyeV9saXN0KTsKKworCS8qCisJICogTWFrZSBh IGRlZGljYXRlZCBtZW1vcnkgY29udGV4dCBmb3IgdGhlIENhY2hlZFBsYW4gYW5kIGl0cyBzdWJz aWRpYXJ5CisJICogZGF0YSBzbyB0aGF0IHdlIGNhbiByZWxlYXNlIGl0IGluIFJlbGVhc2VDYWNo ZWRQbGFuKCkgdGhhdCB3aWxsIGJlCisJICogY2FsbGVkIGluIEZyZWVRdWVyeURlc2MoKS4KKwkg Ki8KKwlwbGFuX2NvbnRleHQgPSBBbGxvY1NldENvbnRleHRDcmVhdGUoQ3VycmVudE1lbW9yeUNv bnRleHQsCisJCQkJCQkJCQkJICJTdGFuZGFsb25lIENhY2hlZFBsYW4iLAorCQkJCQkJCQkJCSBB TExPQ1NFVF9TVEFSVF9TTUFMTF9TSVpFUyk7CisJTWVtb3J5Q29udGV4dENvcHlBbmRTZXRJZGVu dGlmaWVyKHBsYW5fY29udGV4dCwgcGxhbnNvdXJjZS0+cXVlcnlfc3RyaW5nKTsKKworCS8qCisJ ICogQ29weSBwbGFuIGludG8gdGhlIG5ldyBjb250ZXh0LgorCSAqLworCU1lbW9yeUNvbnRleHRT d2l0Y2hUbyhwbGFuX2NvbnRleHQpOworCXBsYW5fbGlzdCA9IGNvcHlPYmplY3QocGxhbl9saXN0 KTsKKworCS8qCisJICogQ3JlYXRlIGFuZCBmaWxsIHRoZSBDYWNoZWRQbGFuIHN0cnVjdCB3aXRo aW4gdGhlIG5ldyBjb250ZXh0LgorCSAqLworCXBsYW4gPSAoQ2FjaGVkUGxhbiAqKSBwYWxsb2Mo c2l6ZW9mKENhY2hlZFBsYW4pKTsKKwlwbGFuLT5tYWdpYyA9IENBQ0hFRFBMQU5fTUFHSUM7CisJ cGxhbi0+c3RtdF9saXN0ID0gcGxhbl9saXN0OworCisJcGxhbi0+cGxhblJvbGVJZCA9IEdldFVz ZXJJZCgpOworCUFzc2VydChsaXN0X2xlbmd0aChwbGFuX2xpc3QpID09IDEpOworCXBsYW5uZWRz dG10ID0gbGluaXRpYWxfbm9kZShQbGFubmVkU3RtdCwgcGxhbl9saXN0KTsKKworCS8qCisJICog Q2FjaGVkUGxhbiBpcyBkZXBlbmRlbnQgb24gcm9sZSBlaXRoZXIgaWYgUkxTIGFmZmVjdGVkIHRo ZSByZXdyaXRlCisJICogcGhhc2Ugb3IgaWYgYSByb2xlIGRlcGVuZGVuY3kgd2FzIGluamVjdGVk IGR1cmluZyBwbGFubmluZy4gIEFuZCBpdCdzCisJICogdHJhbnNpZW50IGlmIGFueSBwbGFuIGlz IG1hcmtlZCBzby4KKwkgKi8KKwlwbGFuLT5kZXBlbmRzT25Sb2xlID0gcGxhbnNvdXJjZS0+ZGVw ZW5kc09uUkxTIHx8IHBsYW5uZWRzdG10LT5kZXBlbmRzT25Sb2xlOworCWlmIChwbGFubmVkc3Rt dC0+dHJhbnNpZW50UGxhbikKKwl7CisJCUFzc2VydChUcmFuc2FjdGlvbklkSXNOb3JtYWwoVHJh bnNhY3Rpb25YbWluKSk7CisJCXBsYW4tPnNhdmVkX3htaW4gPSBUcmFuc2FjdGlvblhtaW47CisJ fQorCWVsc2UKKwkJcGxhbi0+c2F2ZWRfeG1pbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCXBs YW4tPnJlZmNvdW50ID0gMDsKKwlwbGFuLT5jb250ZXh0ID0gcGxhbl9jb250ZXh0OworCXBsYW4t PmlzX29uZXNob3QgPSBmYWxzZTsKKwlwbGFuLT5pc19nZW5lcmljID0gdHJ1ZTsKKwlwbGFuLT5p c19zYXZlZCA9IGZhbHNlOworCXBsYW4tPmlzX3ZhbGlkID0gdHJ1ZTsKKwlwbGFuLT5pc19zdGFu ZGFsb25lID0gdHJ1ZTsKKwlwbGFuLT5nZW5lcmF0aW9uID0gMTsKKwlNZW1vcnlDb250ZXh0U3dp dGNoVG8ob2xkY3h0KTsKKworCS8qCisJICogQWRkIHRoZSBlbnRyeSB0byB0aGUgZ2xvYmFsIGxp c3Qgb2YgInN0YW5kYWxvbmUiIGNhY2hlZCBwbGFucy4gIEl0IGlzCisJICogcmVtb3ZlZCBmcm9t IHRoZSBsaXN0IGJ5IFJlbGVhc2VDYWNoZWRQbGFuKCkuCisJICovCisJZGxpc3RfcHVzaF90YWls KCZzdGFuZGFsb25lX3BsYW5fbGlzdCwgJnBsYW4tPm5vZGUpOworCisJcmV0dXJuIHBsYW47Cit9 CisKIC8qCiAgKiBSZWxlYXNlQ2FjaGVkUGxhbjogcmVsZWFzZSBhY3RpdmUgdXNlIG9mIGEgY2Fj aGVkIHBsYW4uCiAgKgpAQCAtMTMwOSw2ICsxNDM1LDEwIEBAIFJlbGVhc2VDYWNoZWRQbGFuKENh Y2hlZFBsYW4gKnBsYW4sIFJlc291cmNlT3duZXIgb3duZXIpCiAJCS8qIE1hcmsgaXQgbm8gbG9u Z2VyIHZhbGlkICovCiAJCXBsYW4tPm1hZ2ljID0gMDsKIAorCQkvKiBSZW1vdmUgZnJvbSB0aGUg Z2xvYmFsIGxpc3QgaWYgd2UgYXJlIGEgc3RhbmRhbG9uZSBwbGFuLiAqLworCQlpZiAocGxhbi0+ aXNfc3RhbmRhbG9uZSkKKwkJCWRsaXN0X2RlbGV0ZSgmcGxhbi0+bm9kZSk7CisKIAkJLyogT25l LXNob3QgcGxhbnMgZG8gbm90IG93biB0aGVpciBjb250ZXh0LCBzbyB3ZSBjYW4ndCBmcmVlIHRo ZW0gKi8KIAkJaWYgKCFwbGFuLT5pc19vbmVzaG90KQogCQkJTWVtb3J5Q29udGV4dERlbGV0ZShw bGFuLT5jb250ZXh0KTsKQEAgLTIwNjYsNiArMjE5NiwzMyBAQCBQbGFuQ2FjaGVSZWxDYWxsYmFj ayhEYXR1bSBhcmcsIE9pZCByZWxpZCkKIAkJCWNleHByLT5pc192YWxpZCA9IGZhbHNlOwogCQl9 CiAJfQorCisJLyogRmluYWxseSwgaW52YWxpZGF0ZSBhbnkgc3RhbmRhbG9uZSBjYWNoZWQgcGxh bnMgKi8KKwlkbGlzdF9mb3JlYWNoKGl0ZXIsICZzdGFuZGFsb25lX3BsYW5fbGlzdCkKKwl7CisJ CUNhY2hlZFBsYW4gKmNwbGFuID0gZGxpc3RfY29udGFpbmVyKENhY2hlZFBsYW4sCisJCQkJCQkJ CQkJCW5vZGUsIGl0ZXIuY3VyKTsKKworCQlBc3NlcnQoY3BsYW4tPm1hZ2ljID09IENBQ0hFRFBM QU5fTUFHSUMpOworCisJCWlmIChjcGxhbi0+aXNfdmFsaWQpCisJCXsKKwkJCUxpc3RDZWxsICAg KmxjOworCisJCQlmb3JlYWNoKGxjLCBjcGxhbi0+c3RtdF9saXN0KQorCQkJeworCQkJCVBsYW5u ZWRTdG10ICpwbGFubmVkc3RtdCA9IGxmaXJzdF9ub2RlKFBsYW5uZWRTdG10LCBsYyk7CisKKwkJ CQlpZiAocGxhbm5lZHN0bXQtPmNvbW1hbmRUeXBlID09IENNRF9VVElMSVRZKQorCQkJCQljb250 aW51ZTsJLyogSWdub3JlIHV0aWxpdHkgc3RhdGVtZW50cyAqLworCQkJCWlmICgocmVsaWQgPT0g SW52YWxpZE9pZCkgPyBwbGFubmVkc3RtdC0+cmVsYXRpb25PaWRzICE9IE5JTCA6CisJCQkJCWxp c3RfbWVtYmVyX29pZChwbGFubmVkc3RtdC0+cmVsYXRpb25PaWRzLCByZWxpZCkpCisJCQkJCWNw bGFuLT5pc192YWxpZCA9IGZhbHNlOworCQkJCWlmICghY3BsYW4tPmlzX3ZhbGlkKQorCQkJCQli cmVhazsJCS8qIG91dCBvZiBzdG10X2xpc3Qgc2NhbiAqLworCQkJfQorCQl9CisJfQogfQogCiAv KgpAQCAtMjE3Niw2ICsyMzMzLDQ0IEBAIFBsYW5DYWNoZU9iamVjdENhbGxiYWNrKERhdHVtIGFy ZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpCiAJCQl9CiAJCX0KIAl9CisKKwkvKiBG aW5hbGx5LCBpbnZhbGlkYXRlIGFueSBzdGFuZGFsb25lIGNhY2hlZCBwbGFucyAqLworCWRsaXN0 X2ZvcmVhY2goaXRlciwgJnN0YW5kYWxvbmVfcGxhbl9saXN0KQorCXsKKwkJQ2FjaGVkUGxhbiAq Y3BsYW4gPSBkbGlzdF9jb250YWluZXIoQ2FjaGVkUGxhbiwKKwkJCQkJCQkJCQkJbm9kZSwgaXRl ci5jdXIpOworCisJCUFzc2VydChjcGxhbi0+bWFnaWMgPT0gQ0FDSEVEUExBTl9NQUdJQyk7CisK KwkJaWYgKGNwbGFuLT5pc192YWxpZCkKKwkJeworCQkJTGlzdENlbGwgICAqbGM7CisKKwkJCWZv cmVhY2gobGMsIGNwbGFuLT5zdG10X2xpc3QpCisJCQl7CisJCQkJUGxhbm5lZFN0bXQgKnBsYW5u ZWRzdG10ID0gbGZpcnN0X25vZGUoUGxhbm5lZFN0bXQsIGxjKTsKKwkJCQlMaXN0Q2VsbCAgICps YzM7CisKKwkJCQlpZiAocGxhbm5lZHN0bXQtPmNvbW1hbmRUeXBlID09IENNRF9VVElMSVRZKQor CQkJCQljb250aW51ZTsJLyogSWdub3JlIHV0aWxpdHkgc3RhdGVtZW50cyAqLworCQkJCWZvcmVh Y2gobGMzLCBwbGFubmVkc3RtdC0+aW52YWxJdGVtcykKKwkJCQl7CisJCQkJCVBsYW5JbnZhbEl0 ZW0gKml0ZW0gPSAoUGxhbkludmFsSXRlbSAqKSBsZmlyc3QobGMzKTsKKworCQkJCQlpZiAoaXRl bS0+Y2FjaGVJZCAhPSBjYWNoZWlkKQorCQkJCQkJY29udGludWU7CisJCQkJCWlmIChoYXNodmFs dWUgPT0gMCB8fAorCQkJCQkJaXRlbS0+aGFzaFZhbHVlID09IGhhc2h2YWx1ZSkKKwkJCQkJewor CQkJCQkJY3BsYW4tPmlzX3ZhbGlkID0gZmFsc2U7CisJCQkJCQlicmVhazsJLyogb3V0IG9mIGlu dmFsSXRlbXMgc2NhbiAqLworCQkJCQl9CisJCQkJfQorCQkJCWlmICghY3BsYW4tPmlzX3ZhbGlk KQorCQkJCQlicmVhazsJCS8qIG91dCBvZiBzdG10X2xpc3Qgc2NhbiAqLworCQkJfQorCQl9CisJ fQogfQogCiAvKgpAQCAtMjIzNSw2ICsyNDMwLDE3IEBAIFJlc2V0UGxhbkNhY2hlKHZvaWQpCiAK IAkJY2V4cHItPmlzX3ZhbGlkID0gZmFsc2U7CiAJfQorCisJLyogRmluYWxseSwgaW52YWxpZGF0 ZSBhbnkgc3RhbmRhbG9uZSBjYWNoZWQgcGxhbnMgKi8KKwlkbGlzdF9mb3JlYWNoKGl0ZXIsICZz dGFuZGFsb25lX3BsYW5fbGlzdCkKKwl7CisJCUNhY2hlZFBsYW4gKmNwbGFuID0gZGxpc3RfY29u dGFpbmVyKENhY2hlZFBsYW4sCisJCQkJCQkJCQkJCW5vZGUsIGl0ZXIuY3VyKTsKKworCQlBc3Nl cnQoY3BsYW4tPm1hZ2ljID09IENBQ0hFRFBMQU5fTUFHSUMpOworCisJCWNwbGFuLT5pc192YWxp ZCA9IGZhbHNlOworCX0KIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21t Z3IvcG9ydGFsbWVtLmMgYi9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jCmluZGV4 IDRhMjQ2MTM1MzcuLmJmNzBmZDRjZTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21t Z3IvcG9ydGFsbWVtLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYwpA QCAtMjg0LDcgKzI4NCw4IEBAIFBvcnRhbERlZmluZVF1ZXJ5KFBvcnRhbCBwb3J0YWwsCiAJCQkJ ICBjb25zdCBjaGFyICpzb3VyY2VUZXh0LAogCQkJCSAgQ29tbWFuZFRhZyBjb21tYW5kVGFnLAog CQkJCSAgTGlzdCAqc3RtdHMsCi0JCQkJICBDYWNoZWRQbGFuICpjcGxhbikKKwkJCQkgIENhY2hl ZFBsYW4gKmNwbGFuLAorCQkJCSAgQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSkKIHsKIAlB c3NlcnQoUG9ydGFsSXNWYWxpZChwb3J0YWwpKTsKIAlBc3NlcnQocG9ydGFsLT5zdGF0dXMgPT0g UE9SVEFMX05FVyk7CkBAIC0yOTksNiArMzAwLDcgQEAgUG9ydGFsRGVmaW5lUXVlcnkoUG9ydGFs IHBvcnRhbCwKIAlwb3J0YWwtPmNvbW1hbmRUYWcgPSBjb21tYW5kVGFnOwogCXBvcnRhbC0+c3Rt dHMgPSBzdG10czsKIAlwb3J0YWwtPmNwbGFuID0gY3BsYW47CisJcG9ydGFsLT5wbGFuc291cmNl ID0gcGxhbnNvdXJjZTsKIAlwb3J0YWwtPnN0YXR1cyA9IFBPUlRBTF9ERUZJTkVEOwogfQogCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmggYi9zcmMvaW5jbHVkZS9j b21tYW5kcy9leHBsYWluLmgKaW5kZXggMjFjNzFlMGQ1My4uYTM5OTg5YTk1MCAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1h bmRzL2V4cGxhaW4uaApAQCAtMTA0LDYgKzEwNCw3IEBAIGV4dGVybiB2b2lkIEV4cGxhaW5PbmVV dGlsaXR5KE5vZGUgKnV0aWxpdHlTdG10LCBJbnRvQ2xhdXNlICppbnRvLAogCQkJCQkJCSAgUGFy YW1MaXN0SW5mbyBwYXJhbXMsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKIAogZXh0ZXJu IHZvaWQgRXhwbGFpbk9uZVBsYW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBDYWNoZWRQbGFu ICpjcGxhbiwKKwkJCQkJCSAgIENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIGludCBwbGFu X2luZGV4LAogCQkJCQkJICAgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAkJ CQkJCSAgIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAogCQkJCQkJICAgUGFyYW1MaXN0SW5mbyBw YXJhbXMsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvY29tbWFuZHMvdHJpZ2dlci5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvdHJpZ2dlci5oCmlu ZGV4IDhhNWE5ZmU2NDIuLmRiMjE1NjFjOGMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1h bmRzL3RyaWdnZXIuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy90cmlnZ2VyLmgKQEAgLTI1 OCw2ICsyNTgsNyBAQCBleHRlcm4gdm9pZCBFeGVjQVNUcnVuY2F0ZVRyaWdnZXJzKEVTdGF0ZSAq ZXN0YXRlLAogZXh0ZXJuIHZvaWQgQWZ0ZXJUcmlnZ2VyQmVnaW5YYWN0KHZvaWQpOwogZXh0ZXJu IHZvaWQgQWZ0ZXJUcmlnZ2VyQmVnaW5RdWVyeSh2b2lkKTsKIGV4dGVybiB2b2lkIEFmdGVyVHJp Z2dlckVuZFF1ZXJ5KEVTdGF0ZSAqZXN0YXRlKTsKK2V4dGVybiB2b2lkIEFmdGVyVHJpZ2dlckFi b3J0UXVlcnkodm9pZCk7CiBleHRlcm4gdm9pZCBBZnRlclRyaWdnZXJGaXJlRGVmZXJyZWQodm9p ZCk7CiBleHRlcm4gdm9pZCBBZnRlclRyaWdnZXJFbmRYYWN0KGJvb2wgaXNDb21taXQpOwogZXh0 ZXJuIHZvaWQgQWZ0ZXJUcmlnZ2VyQmVnaW5TdWJYYWN0KHZvaWQpOwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNk ZXNjLmgKaW5kZXggMGU3MjQ1NDM1ZC4uZjZjYjY0NzljMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVz Yy5oCkBAIC0zNiw2ICszNiw3IEBAIHR5cGVkZWYgc3RydWN0IFF1ZXJ5RGVzYwogCUNtZFR5cGUJ CW9wZXJhdGlvbjsJCS8qIENNRF9TRUxFQ1QsIENNRF9VUERBVEUsIGV0Yy4gKi8KIAlQbGFubmVk U3RtdCAqcGxhbm5lZHN0bXQ7CS8qIHBsYW5uZXIncyBvdXRwdXQgKGNvdWxkIGJlIHV0aWxpdHks IHRvbykgKi8KIAlDYWNoZWRQbGFuICpjcGxhbjsJCQkvKiBDYWNoZWRQbGFuIHRoYXQgc3VwcGxp ZXMgdGhlIHBsYW5uZWRzdG10ICovCisJYm9vbAkJY3BsYW5fcmVsZWFzZTsJLyogU2hvdWxkIEZy ZWVRdWVyeURlc2MoKSByZWxlYXNlIGNwbGFuPyAqLwogCWNvbnN0IGNoYXIgKnNvdXJjZVRleHQ7 CQkvKiBzb3VyY2UgdGV4dCBvZiB0aGUgcXVlcnkgKi8KIAlTbmFwc2hvdAlzbmFwc2hvdDsJCS8q IHNuYXBzaG90IHRvIHVzZSBmb3IgcXVlcnkgKi8KIAlTbmFwc2hvdAljcm9zc2NoZWNrX3NuYXBz aG90OwkvKiBjcm9zc2NoZWNrIGZvciBSSSB1cGRhdGUvZGVsZXRlICovCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhl Y3V0b3IuaAppbmRleCA2OWMzZWJmZjAwLi41YmMwZWRiNWEwIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9leGVjdXRvci9leGVjdXRvci5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1 dG9yLmgKQEAgLTE5LDYgKzE5LDcgQEAKICNpbmNsdWRlICJub2Rlcy9sb2Nrb3B0aW9ucy5oIgog I2luY2x1ZGUgIm5vZGVzL3BhcnNlbm9kZXMuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5o IgorI2luY2x1ZGUgInV0aWxzL3BsYW5jYWNoZS5oIgogCiAKIC8qCkBAIC0xOTgsNiArMTk5LDgg QEAgRXhlY0dldEp1bmtBdHRyaWJ1dGUoVHVwbGVUYWJsZVNsb3QgKnNsb3QsIEF0dHJOdW1iZXIg YXR0bm8sIGJvb2wgKmlzTnVsbCkKICAqIHByb3RvdHlwZXMgZnJvbSBmdW5jdGlvbnMgaW4gZXhl Y01haW4uYwogICovCiBleHRlcm4gdm9pZCBFeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlE ZXNjLCBpbnQgZWZsYWdzKTsKK2V4dGVybiB2b2lkIEV4ZWN1dG9yU3RhcnRFeHQoUXVlcnlEZXNj ICpxdWVyeURlc2MsIGludCBlZmxhZ3MsCisJCQkJCQkJIENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5z b3VyY2UsIGludCBxdWVyeV9pbmRleCk7CiBleHRlcm4gdm9pZCBzdGFuZGFyZF9FeGVjdXRvclN0 YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKTsKIGV4dGVybiB2b2lkIEV4ZWN1 dG9yUnVuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLAogCQkJCQkJU2NhbkRpcmVjdGlvbiBkaXJlY3Rp b24sIHVpbnQ2NCBjb3VudCwgYm9vbCBleGVjdXRlX29uY2UpOwpAQCAtMjYxLDYgKzI2NCwxOSBA QCBleHRlcm4gdm9pZCBFeGVjRW5kTm9kZShQbGFuU3RhdGUgKm5vZGUpOwogZXh0ZXJuIHZvaWQg RXhlY1NodXRkb3duTm9kZShQbGFuU3RhdGUgKm5vZGUpOwogZXh0ZXJuIHZvaWQgRXhlY1NldFR1 cGxlQm91bmQoaW50NjQgdHVwbGVzX25lZWRlZCwgUGxhblN0YXRlICpjaGlsZF9ub2RlKTsKIAor LyoKKyAqIElzIHRoZSBDYWNoZWRQbGFuIGluIGVzX2NhY2hlZHBsYW4gc3RpbGwgdmFsaWQ/Cisg KgorICogQ2FsbGVkIGZyb20gSW5pdFBsYW4oKSBiZWNhdXNlIGludmFsaWRhdGlvbiBtZXNzYWdl cyB0aGF0IGFmZmVjdCB0aGUgcGxhbgorICogbWlnaHQgYmUgcmVjZWl2ZWQgYWZ0ZXIgbG9ja3Mg aGF2ZSBiZWVuIHRha2VuIG9uIHJ1bnRpbWUtcHJ1bmFibGUgcmVsYXRpb25zLgorICogVGhlIGNh bGxlciBzaG91bGQgdGFrZSBhcHByb3ByaWF0ZSBhY3Rpb24gaWYgdGhlIHBsYW4gaGFzIGJlY29t ZSBpbnZhbGlkLgorICovCitzdGF0aWMgaW5saW5lIGJvb2wKK0V4ZWNQbGFuU3RpbGxWYWxpZChF U3RhdGUgKmVzdGF0ZSkKK3sKKwlyZXR1cm4gZXN0YXRlLT5lc19jYWNoZWRwbGFuID09IE5VTEwg PyB0cnVlIDoKKwkJQ2FjaGVkUGxhblZhbGlkKGVzdGF0ZS0+ZXNfY2FjaGVkcGxhbik7Cit9CiAK IC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KICAqCQlFeGVjUHJvY05vZGUKQEAgLTU4OSw2ICs2MDUsNyBAQCBleHRlcm4g dm9pZCBFeGVjQ3JlYXRlU2NhblNsb3RGcm9tT3V0ZXJQbGFuKEVTdGF0ZSAqZXN0YXRlLAogZXh0 ZXJuIGJvb2wgRXhlY1JlbGF0aW9uSXNUYXJnZXRSZWxhdGlvbihFU3RhdGUgKmVzdGF0ZSwgSW5k ZXggc2NhbnJlbGlkKTsKIAogZXh0ZXJuIFJlbGF0aW9uIEV4ZWNPcGVuU2NhblJlbGF0aW9uKEVT dGF0ZSAqZXN0YXRlLCBJbmRleCBzY2FucmVsaWQsIGludCBlZmxhZ3MpOworZXh0ZXJuIFJlbGF0 aW9uIEV4ZWNPcGVuU2NhbkluZGV4UmVsYXRpb24oRVN0YXRlICplc3RhdGUsIE9pZCBpbmRleGlk LCBpbnQgbG9ja21vZGUpOwogCiBleHRlcm4gdm9pZCBFeGVjSW5pdFJhbmdlVGFibGUoRVN0YXRl ICplc3RhdGUsIExpc3QgKnJhbmdlVGFibGUsIExpc3QgKnBlcm1JbmZvcyk7CiBleHRlcm4gdm9p ZCBFeGVjQ2xvc2VSYW5nZVRhYmxlUmVsYXRpb25zKEVTdGF0ZSAqZXN0YXRlKTsKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhl Y25vZGVzLmgKaW5kZXggNTcxNzA4MThjMC4uZjUwYjZiNTBhOCAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVz LmgKQEAgLTY5MCw2ICs2OTAsNyBAQCB0eXBlZGVmIHN0cnVjdCBFU3RhdGUKIAlpbnQJCQllc190 b3BfZWZsYWdzOwkvKiBlZmxhZ3MgcGFzc2VkIHRvIEV4ZWN1dG9yU3RhcnQgKi8KIAlpbnQJCQll c19pbnN0cnVtZW50OwkvKiBPUiBvZiBJbnN0cnVtZW50T3B0aW9uIGZsYWdzICovCiAJYm9vbAkJ ZXNfZmluaXNoZWQ7CS8qIHRydWUgd2hlbiBFeGVjdXRvckZpbmlzaCBpcyBkb25lICovCisJYm9v bAkJZXNfYWJvcnRlZDsJCS8qIHRydWUgd2hlbiBleGVjdXRpb24gd2FzIGFib3J0ZWQgKi8KIAog CUxpc3QJICAgKmVzX2V4cHJjb250ZXh0czsJLyogTGlzdCBvZiBFeHByQ29udGV4dHMgd2l0aGlu IEVTdGF0ZSAqLwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaCBi L3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oCmluZGV4IDBiNWVlMDA3Y2EuLjE1NGY2OGY2 NzEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oCisrKyBiL3NyYy9p bmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oCkBAIC0xOCw2ICsxOCw3IEBACiAjaW5jbHVkZSAiYWNj ZXNzL3R1cGRlc2MuaCIKICNpbmNsdWRlICJsaWIvaWxpc3QuaCIKICNpbmNsdWRlICJub2Rlcy9w YXJhbXMuaCIKKyNpbmNsdWRlICJub2Rlcy9wYXJzZW5vZGVzLmgiCiAjaW5jbHVkZSAidGNvcC9j bWR0YWcuaCIKICNpbmNsdWRlICJ1dGlscy9xdWVyeWVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAi dXRpbHMvcmVzb3duZXIuaCIKQEAgLTE1Miw2ICsxNTMsOCBAQCB0eXBlZGVmIHN0cnVjdCBDYWNo ZWRQbGFuCiAJYm9vbAkJaXNfZ2VuZXJpYzsJCS8qIGlzIGl0IGEgcmV1c2FibGUgZ2VuZXJpYyBw bGFuPyAqLwogCWJvb2wJCWlzX3NhdmVkOwkJLyogaXMgQ2FjaGVkUGxhbiBpbiBhIGxvbmctbGl2 ZWQgY29udGV4dD8gKi8KIAlib29sCQlpc192YWxpZDsJCS8qIGlzIHRoZSBzdG10X2xpc3QgY3Vy cmVudGx5IHZhbGlkPyAqLworCWJvb2wJCWlzX3N0YW5kYWxvbmU7CS8qIGlzIGl0IG5vdCBhc3Nv Y2lhdGVkIHdpdGggYQorCQkJCQkJCQkgKiBDYWNoZWRQbGFuU291cmNlPyAqLwogCU9pZAkJCXBs YW5Sb2xlSWQ7CQkvKiBSb2xlIElEIHRoZSBwbGFuIHdhcyBjcmVhdGVkIGZvciAqLwogCWJvb2wJ CWRlcGVuZHNPblJvbGU7CS8qIGlzIHBsYW4gc3BlY2lmaWMgdG8gdGhhdCByb2xlPyAqLwogCVRy YW5zYWN0aW9uSWQgc2F2ZWRfeG1pbjsJLyogaWYgdmFsaWQsIHJlcGxhbiB3aGVuIFRyYW5zYWN0 aW9uWG1pbgpAQCAtMTU5LDYgKzE2MiwxMiBAQCB0eXBlZGVmIHN0cnVjdCBDYWNoZWRQbGFuCiAJ aW50CQkJZ2VuZXJhdGlvbjsJCS8qIHBhcmVudCdzIGdlbmVyYXRpb24gbnVtYmVyIGZvciB0aGlz IHBsYW4gKi8KIAlpbnQJCQlyZWZjb3VudDsJCS8qIGNvdW50IG9mIGxpdmUgcmVmZXJlbmNlcyB0 byB0aGlzIHN0cnVjdCAqLwogCU1lbW9yeUNvbnRleHQgY29udGV4dDsJCS8qIGNvbnRleHQgY29u dGFpbmluZyB0aGlzIENhY2hlZFBsYW4gKi8KKworCS8qCisJICogSWYgdGhlIHBsYW4gaXMgbm90 IGFzc29jaWF0ZWQgd2l0aCBhIENhY2hlZFBsYW5Tb3VyY2UsIGl0IGlzIHNhdmVkIGluCisJICog YSBzZXBhcmF0ZSBnbG9iYWwgbGlzdC4KKwkgKi8KKwlkbGlzdF9ub2RlCW5vZGU7CQkJLyogbGlz dCBsaW5rLCBpZiBpc19zdGFuZGFsb25lICovCiB9IENhY2hlZFBsYW47CiAKIC8qCkBAIC0yMjQs NiArMjMzLDEwIEBAIGV4dGVybiBDYWNoZWRQbGFuICpHZXRDYWNoZWRQbGFuKENhY2hlZFBsYW5T b3VyY2UgKnBsYW5zb3VyY2UsCiAJCQkJCQkJCSBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLAog CQkJCQkJCQkgUmVzb3VyY2VPd25lciBvd25lciwKIAkJCQkJCQkJIFF1ZXJ5RW52aXJvbm1lbnQg KnF1ZXJ5RW52KTsKK2V4dGVybiBDYWNoZWRQbGFuICpHZXRTaW5nbGVDYWNoZWRQbGFuKENhY2hl ZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCisJCQkJCQkJCQkgICBpbnQgcXVlcnlfaW5kZXgsCisJ CQkJCQkJCQkgICBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7CisKIGV4dGVybiB2b2lkIFJl bGVhc2VDYWNoZWRQbGFuKENhY2hlZFBsYW4gKnBsYW4sIFJlc291cmNlT3duZXIgb3duZXIpOwog CiBleHRlcm4gYm9vbCBDYWNoZWRQbGFuQWxsb3dzU2ltcGxlVmFsaWRpdHlDaGVjayhDYWNoZWRQ bGFuU291cmNlICpwbGFuc291cmNlLApAQCAtMjQ1LDQgKzI1OCwxNyBAQCBDYWNoZWRQbGFuUmVx dWlyZXNMb2NraW5nKENhY2hlZFBsYW4gKmNwbGFuKQogCXJldHVybiBjcGxhbi0+aXNfZ2VuZXJp YzsKIH0KIAorLyoKKyAqIENhY2hlZFBsYW5WYWxpZAorICogICAgICBSZXR1cm5zIHdoZXRoZXIg YSBjYWNoZWQgZ2VuZXJpYyBwbGFuIGlzIHN0aWxsIHZhbGlkLgorICoKKyAqIEludm9rZWQgYnkg dGhlIGV4ZWN1dG9yIHRvIGNoZWNrIGlmIHRoZSBwbGFuIGhhcyBub3QgYmVlbiBpbnZhbGlkYXRl ZCBhZnRlcgorICogdGFraW5nIGxvY2tzIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhl IHBsYW4uCisgKi8KK3N0YXRpYyBpbmxpbmUgYm9vbAorQ2FjaGVkUGxhblZhbGlkKENhY2hlZFBs YW4gKmNwbGFuKQoreworCXJldHVybiBjcGxhbi0+aXNfdmFsaWQ7Cit9CisKICNlbmRpZgkJCQkJ CQkvKiBQTEFOQ0FDSEVfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFs LmggYi9zcmMvaW5jbHVkZS91dGlscy9wb3J0YWwuaAppbmRleCAyOWY0OTgyOWYyLi41OGMzODI4 ZDJjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9wb3J0YWwuaAorKysgYi9zcmMvaW5j bHVkZS91dGlscy9wb3J0YWwuaApAQCAtMTM4LDYgKzEzOCw3IEBAIHR5cGVkZWYgc3RydWN0IFBv cnRhbERhdGEKIAlRdWVyeUNvbXBsZXRpb24gcWM7CQkJLyogY29tbWFuZCBjb21wbGV0aW9uIGRh dGEgZm9yIGV4ZWN1dGVkIHF1ZXJ5ICovCiAJTGlzdAkgICAqc3RtdHM7CQkJLyogbGlzdCBvZiBQ bGFubmVkU3RtdHMgKi8KIAlDYWNoZWRQbGFuICpjcGxhbjsJCQkvKiBDYWNoZWRQbGFuLCBpZiBz dG10cyBhcmUgZnJvbSBvbmUgKi8KKwlDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlOwkvKiBD YWNoZWRQbGFuU291cmNlLCBmb3IgY3BsYW4gKi8KIAogCVBhcmFtTGlzdEluZm8gcG9ydGFsUGFy YW1zOyAvKiBwYXJhbXMgdG8gcGFzcyB0byBxdWVyeSAqLwogCVF1ZXJ5RW52aXJvbm1lbnQgKnF1 ZXJ5RW52OyAvKiBlbnZpcm9ubWVudCBmb3IgcXVlcnkgKi8KQEAgLTI0MSw3ICsyNDIsOCBAQCBl eHRlcm4gdm9pZCBQb3J0YWxEZWZpbmVRdWVyeShQb3J0YWwgcG9ydGFsLAogCQkJCQkJCSAgY29u c3QgY2hhciAqc291cmNlVGV4dCwKIAkJCQkJCQkgIENvbW1hbmRUYWcgY29tbWFuZFRhZywKIAkJ CQkJCQkgIExpc3QgKnN0bXRzLAotCQkJCQkJCSAgQ2FjaGVkUGxhbiAqY3BsYW4pOworCQkJCQkJ CSAgQ2FjaGVkUGxhbiAqY3BsYW4sCisJCQkJCQkJICBDYWNoZWRQbGFuU291cmNlICpwbGFuc291 cmNlKTsKIGV4dGVybiBQbGFubmVkU3RtdCAqUG9ydGFsR2V0UHJpbWFyeVN0bXQoUG9ydGFsIHBv cnRhbCk7CiBleHRlcm4gdm9pZCBQb3J0YWxDcmVhdGVIb2xkU3RvcmUoUG9ydGFsIHBvcnRhbCk7 CiBleHRlcm4gdm9pZCBQb3J0YWxIYXNoVGFibGVEZWxldGVBbGwodm9pZCk7CmRpZmYgLS1naXQg YS9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9NYWtlZmlsZSBiL3NyYy90ZXN0L21v ZHVsZXMvZGVsYXlfZXhlY3V0aW9uL01ha2VmaWxlCmluZGV4IDcwZjI0ZTg0NmQuLjNlZWIwOTdm ZGUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL01ha2VmaWxl CisrKyBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL01ha2VmaWxlCkBAIC04LDcg KzgsOCBAQCBPQkpTID0gXAogCWRlbGF5X2V4ZWN1dGlvbi5vCiAKIElTT0xBVElPTiA9IHBhcnRp dGlvbi1hZGRpdGlvbiBcCi0JICAgIHBhcnRpdGlvbi1yZW1vdmFsLTEKKwkgICAgcGFydGl0aW9u LXJlbW92YWwtMSBcCisJCWNhY2hlZC1wbGFuLWludmFsCiAKIGlmZGVmIFVTRV9QR1hTCiBQR19D T05GSUcgPSBwZ19jb25maWcKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhl Y3V0aW9uL2RlbGF5X2V4ZWN1dGlvbi5jIGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRp b24vZGVsYXlfZXhlY3V0aW9uLmMKaW5kZXggMTU1YzhhOGQ1NS4uMzA0Y2E3N2Y3YiAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vZGVsYXlfZXhlY3V0aW9uLmMK KysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vZGVsYXlfZXhlY3V0aW9uLmMK QEAgLTEsMTQgKzEsMTggQEAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoKICAqIGRlbGF5X2V4ZWN1 dGlvbi5jCi0gKgkJVGVzdCBtb2R1bGUgdG8gYWxsb3cgZGVsYXkgYmV0d2VlbiBwYXJzaW5nIGFu ZCBleGVjdXRpb24gb2YgYSBxdWVyeS4KKyAqCQlUZXN0IG1vZHVsZSB0byBpbnRyb2R1Y2UgZGVs YXkgYXQgdmFyaW91cyBwb2ludHMgZHVyaW5nIGV4ZWN1dGlvbiBvZiBhCisgKgkJcXVlcnkgdG8g dGVzdCB0aGF0IGV4ZWN1dGlvbiBwcm9jZWVkcyBzYWZlbHkgaW4gbGlnaHQgb2YgY29uY3VycmVu dAorICoJCWNoYW5nZXMuCiAgKgogICogVGhlIGRlbGF5IGlzIGltcGxlbWVudGVkIGJ5IHRha2lu ZyBhbmQgaW1tZWRpYXRlbHkgcmVsZWFzaW5nIGEgc3BlY2lmaWVkCiAgKiBhZHZpc29yeSBsb2Nr LiAgSWYgYW5vdGhlciBwcm9jZXNzIGhhcyBwcmV2aW91c2x5IHRha2VuIHRoYXQgbG9jaywgdGhl CiAgKiBjdXJyZW50IHByb2Nlc3Mgd2lsbCBiZSBibG9ja2VkIHVudGlsIHRoZSBsb2NrIGlzIHJl bGVhc2VkOyBvdGhlcndpc2UsCiAgKiB0aGVyZSdzIG5vIGVmZmVjdC4gIFRoaXMgYWxsb3dzIGFu IGlzb2xhdGlvbnRlc3RlciBzY3JpcHQgdG8gcmVsaWFibHkKLSAqIHRlc3QgYmVoYXZpb3JzIHdo ZXJlIHNvbWUgc3BlY2lmaWVkIGFjdGlvbiBoYXBwZW5zIGluIGFub3RoZXIgYmFja2VuZAotICog YmV0d2VlbiBwYXJzaW5nIGFuZCBleGVjdXRpb24gb2YgYW55IGRlc2lyZWQgcXVlcnkuCisgKiB0 ZXN0IGJlaGF2aW9ycyB3aGVyZSBzb21lIHNwZWNpZmllZCBhY3Rpb24gaGFwcGVucyBpbiBhbm90 aGVyIGJhY2tlbmQgaW4KKyAqIGEgY291cGxlIG9mIGNhc2VzOiAxKSBiZXR3ZWVuIHBhcnNpbmcg YW5kIGV4ZWN1dGlvbiBvZiBhbnkgZGVzaXJlZCBxdWVyeQorICogd2hlbiB1c2luZyB0aGUgcGxh bm5lcl9ob29rLCAyKSBiZXR3ZWVuIFJldmFsaWRhdGVDYWNoZWRRdWVyeSgpIGFuZAorICogRXhl Y3V0b3JTdGFydCgpIHdoZW4gdXNpbmcgdGhlIEV4ZWN1dG9yU3RhcnRfaG9vay4KICAqCiAgKiBD b3B5cmlnaHQgKGMpIDIwMjAtMjAyNCwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3Jv dXAKICAqCkBAIC0yMiw2ICsyNiw3IEBACiAKICNpbmNsdWRlIDxsaW1pdHMuaD4KIAorI2luY2x1 ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL3BsYW5uZXIuaCIK ICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgpAQCAt MzIsOSArMzcsMTEgQEAgUEdfTU9EVUxFX01BR0lDOwogCiAvKiBHVUM6IGFkdmlzb3J5IGxvY2sg SUQgdG8gdXNlLiAgWmVybyBkaXNhYmxlcyB0aGUgZmVhdHVyZS4gKi8KIHN0YXRpYyBpbnQJcG9z dF9wbGFubmluZ19sb2NrX2lkID0gMDsKK3N0YXRpYyBpbnQJZXhlY3V0b3Jfc3RhcnRfbG9ja19p ZCA9IDA7CiAKLS8qIFNhdmUgcHJldmlvdXMgcGxhbm5lciBob29rIHVzZXIgdG8gYmUgYSBnb29k IGNpdGl6ZW4gKi8KKy8qIFNhdmUgcHJldmlvdXMgaG9vayB1c2VycyB0byBiZSBhIGdvb2QgY2l0 aXplbiAqLwogc3RhdGljIHBsYW5uZXJfaG9va190eXBlIHByZXZfcGxhbm5lcl9ob29rID0gTlVM TDsKK3N0YXRpYyBFeGVjdXRvclN0YXJ0X2hvb2tfdHlwZSBwcmV2X0V4ZWN1dG9yU3RhcnRfaG9v ayA9IE5VTEw7CiAKIAogLyogcGxhbm5lcl9ob29rIGZ1bmN0aW9uIHRvIHByb3ZpZGUgdGhlIGRl c2lyZWQgZGVsYXkgKi8KQEAgLTcwLDExICs3Nyw0MSBAQCBkZWxheV9leGVjdXRpb25fcGxhbm5l cihRdWVyeSAqcGFyc2UsIGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZywKIAlyZXR1cm4gcmVzdWx0 OwogfQogCisvKiBFeGVjdXRvclN0YXJ0X2hvb2sgZnVuY3Rpb24gdG8gcHJvdmlkZSB0aGUgZGVz aXJlZCBkZWxheSAqLworc3RhdGljIHZvaWQKK2RlbGF5X2V4ZWN1dGlvbl9FeGVjdXRvclN0YXJ0 KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQoreworCS8qIElmIGVuYWJsZWQsIGRl bGF5IGJ5IHRha2luZyBhbmQgcmVsZWFzaW5nIHRoZSBzcGVjaWZpZWQgbG9jayAqLworCWlmIChl eGVjdXRvcl9zdGFydF9sb2NrX2lkICE9IDApCisJeworCQlEaXJlY3RGdW5jdGlvbkNhbGwxKHBn X2Fkdmlzb3J5X2xvY2tfaW50OCwKKwkJCQkJCQlJbnQ2NEdldERhdHVtKChpbnQ2NCkgZXhlY3V0 b3Jfc3RhcnRfbG9ja19pZCkpOworCQlEaXJlY3RGdW5jdGlvbkNhbGwxKHBnX2Fkdmlzb3J5X3Vu bG9ja19pbnQ4LAorCQkJCQkJCUludDY0R2V0RGF0dW0oKGludDY0KSBleGVjdXRvcl9zdGFydF9s b2NrX2lkKSk7CisKKwkJLyoKKwkJICogRW5zdXJlIHRoYXQgd2Ugbm90aWNlIGFueSBwZW5kaW5n IGludmFsaWRhdGlvbnMsIHNpbmNlIHRoZSBhZHZpc29yeQorCQkgKiBsb2NrIGZ1bmN0aW9ucyBk b24ndCBkbyB0aGlzLgorCQkgKi8KKwkJQWNjZXB0SW52YWxpZGF0aW9uTWVzc2FnZXMoKTsKKwl9 CisKKwkvKiBOb3cgc3RhcnQgdGhlIGV4ZWN1dG9yLCBwb3NzaWJseSB2aWEgYSBwcmV2aW91cyBo b29rIHVzZXIgKi8KKwlpZiAocHJldl9FeGVjdXRvclN0YXJ0X2hvb2spCisJCXByZXZfRXhlY3V0 b3JTdGFydF9ob29rKHF1ZXJ5RGVzYywgZWZsYWdzKTsKKwllbHNlCisJCXN0YW5kYXJkX0V4ZWN1 dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOworCisJaWYgKGV4ZWN1dG9yX3N0YXJ0X2xvY2tf aWQgIT0gMCkKKwkJZWxvZyhOT1RJQ0UsICJGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hl ZFBsYW4gaXMgJXMiLAorCQkJIENhY2hlZFBsYW5WYWxpZChxdWVyeURlc2MtPmNwbGFuKSA/ICJ2 YWxpZCIgOiAibm90IHZhbGlkIik7Cit9CisKIC8qIE1vZHVsZSBsb2FkIGZ1bmN0aW9uICovCiB2 b2lkCiBfUEdfaW5pdCh2b2lkKQogewotCS8qIFNldCB1cCB0aGUgR1VDIHRvIGNvbnRyb2wgd2hp Y2ggbG9jayBpcyB1c2VkICovCisJLyogU2V0IHVwIEdVQ3MgdG8gY29udHJvbCB3aGljaCBsb2Nr IGlzIHVzZWQgKi8KIAlEZWZpbmVDdXN0b21JbnRWYXJpYWJsZSgiZGVsYXlfZXhlY3V0aW9uLnBv c3RfcGxhbm5pbmdfbG9ja19pZCIsCiAJCQkJCQkJIlNldHMgdGhlIGFkdmlzb3J5IGxvY2sgSUQg dG8gYmUgbG9ja2VkL3VubG9ja2VkIGFmdGVyIHBsYW5uaW5nLiIsCiAJCQkJCQkJIlplcm8gZGlz YWJsZXMgdGhlIGRlbGF5LiIsCkBAIC04NiwxMCArMTIzLDIyIEBAIF9QR19pbml0KHZvaWQpCiAJ CQkJCQkJTlVMTCwKIAkJCQkJCQlOVUxMLAogCQkJCQkJCU5VTEwpOwotCisJRGVmaW5lQ3VzdG9t SW50VmFyaWFibGUoImRlbGF5X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9sb2NrX2lkIiwKKwkJ CQkJCQkiU2V0cyB0aGUgYWR2aXNvcnkgbG9jayBJRCB0byBiZSBsb2NrZWQvdW5sb2NrZWQgYmVm b3JlIHN0YXJ0aW5nIGV4ZWN1dGlvbi4iLAorCQkJCQkJCSJaZXJvIGRpc2FibGVzIHRoZSBkZWxh eS4iLAorCQkJCQkJCSZleGVjdXRvcl9zdGFydF9sb2NrX2lkLAorCQkJCQkJCTAsCisJCQkJCQkJ MCwgSU5UX01BWCwKKwkJCQkJCQlQR0NfVVNFUlNFVCwKKwkJCQkJCQkwLAorCQkJCQkJCU5VTEws CisJCQkJCQkJTlVMTCwKKwkJCQkJCQlOVUxMKTsKIAlNYXJrR1VDUHJlZml4UmVzZXJ2ZWQoImRl bGF5X2V4ZWN1dGlvbiIpOwogCi0JLyogSW5zdGFsbCBvdXIgaG9vayAqLworCS8qIEluc3RhbGwg b3VyIGhvb2tzLiAqLwogCXByZXZfcGxhbm5lcl9ob29rID0gcGxhbm5lcl9ob29rOwogCXBsYW5u ZXJfaG9vayA9IGRlbGF5X2V4ZWN1dGlvbl9wbGFubmVyOworCXByZXZfRXhlY3V0b3JTdGFydF9o b29rID0gRXhlY3V0b3JTdGFydF9ob29rOworCUV4ZWN1dG9yU3RhcnRfaG9vayA9IGRlbGF5X2V4 ZWN1dGlvbl9FeGVjdXRvclN0YXJ0OwogfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9k ZWxheV9leGVjdXRpb24vZXhwZWN0ZWQvY2FjaGVkLXBsYW4taW52YWwub3V0IGIvc3JjL3Rlc3Qv bW9kdWxlcy9kZWxheV9leGVjdXRpb24vZXhwZWN0ZWQvY2FjaGVkLXBsYW4taW52YWwub3V0Cm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmUwMDJjZmJjOWMKLS0tIC9kZXYv bnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9leHBlY3RlZC9jYWNo ZWQtcGxhbi1pbnZhbC5vdXQKQEAgLTAsMCArMSwyMzAgQEAKK1BhcnNlZCB0ZXN0IHNwZWMgd2l0 aCAyIHNlc3Npb25zCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMXByZXAgczJsb2NrIHMxZXhl YyBzMmRyb3BpIHMydW5sb2NrCitzdGVwIHMxcHJlcDogU0VUIHBsYW5fY2FjaGVfbW9kZSA9IGZv cmNlX2dlbmVyaWNfcGxhbjsKKwkJICBQUkVQQVJFIHEgQVMgU0VMRUNUICogRlJPTSBmb292IFdI RVJFIGEgPSAkMSBGT1IgVVBEQVRFOworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBx ICgxKTsKK1FVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMb2NrUm93 cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgLT4gIEFwcGVuZCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBTdWJwbGFucyBSZW1v dmVkOiAyICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIC0+ICBCaXRtYXAgSGVhcCBTY2Fu IG9uIGZvbzEyXzEgZm9vXzEgICAKKyAgICAgICAgICAgICAgUmVjaGVjayBDb25kOiAoYSA9ICQx KSAgICAgICAgICAgIAorICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gZm9v MTJfMV9hCisgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChhID0gJDEpICAgICAgICAK Kyg3IHJvd3MpCisKK3N0ZXAgczJsb2NrOiBTRUxFQ1QgcGdfYWR2aXNvcnlfbG9jaygxMjM0NSk7 CitwZ19hZHZpc29yeV9sb2NrCistLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgCiso MSByb3cpCisKK3N0ZXAgczFleGVjOiBMT0FEICdkZWxheV9leGVjdXRpb24nOworCQkgIFNFVCBk ZWxheV9leGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCA9IDEyMzQ1OworCQkgIEVYUExB SU4gKENPU1RTIE9GRikgRVhFQ1VURSBxICgxKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMmRyb3Bp OiBEUk9QIElOREVYIGZvbzEyXzFfYTsKK3N0ZXAgczJ1bmxvY2s6IFNFTEVDVCBwZ19hZHZpc29y eV91bmxvY2soMTIzNDUpOworcGdfYWR2aXNvcnlfdW5sb2NrCistLS0tLS0tLS0tLS0tLS0tLS0K K3QgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMxZXhlYzogPC4uLiBjb21wbGV0 ZWQ+CitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlz IG5vdCB2YWxpZAorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVk UGxhbiBpcyB2YWxpZAorUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTG9ja1Jvd3MgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorICAtPiAgQXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAgIAor ICAgICAgICBTdWJwbGFucyBSZW1vdmVkOiAyICAgICAgICAgIAorICAgICAgICAtPiAgU2VxIFNj YW4gb24gZm9vMTJfMSBmb29fMQorICAgICAgICAgICAgICBGaWx0ZXI6IChhID0gJDEpICAgICAg IAorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFwcmVwMiBzMmxvY2sgczFl eGVjMiBzMmRyb3BpIHMydW5sb2NrCitzdGVwIHMxcHJlcDI6IFNFVCBwbGFuX2NhY2hlX21vZGUg PSBmb3JjZV9nZW5lcmljX3BsYW47CisJCSAgUFJFUEFSRSBxMiBBUyBTRUxFQ1QgKiBGUk9NIGZv b3YgV0hFUkUgYSA9IG9uZSgpIG9yIGEgPSB0d28oKTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYp IEVYRUNVVEUgcTI7CitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNo ZWRQbGFuIGlzIHZhbGlkCitRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KK0FwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CisgIFN1YnBsYW5zIFJlbW92ZWQ6IDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAt PiAgQml0bWFwIEhlYXAgU2NhbiBvbiBmb28xMl8xIGZvb18xICAgICAgICAgICAKKyAgICAgICAg UmVjaGVjayBDb25kOiAoKGEgPSBvbmUoKSkgT1IgKGEgPSB0d28oKSkpCisgICAgICAgIC0+ICBC aXRtYXBPciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAtPiAg Qml0bWFwIEluZGV4IFNjYW4gb24gZm9vMTJfMV9hICAKKyAgICAgICAgICAgICAgICAgICAgSW5k ZXggQ29uZDogKGEgPSBvbmUoKSkgICAgICAgCisgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5k ZXggU2NhbiBvbiBmb28xMl8xX2EgIAorICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAo YSA9IHR3bygpKSAgICAgICAKKyAgLT4gIFNlcSBTY2FuIG9uIGZvbzEyXzIgZm9vXzIgICAgICAg ICAgICAgICAgICAgCisgICAgICAgIEZpbHRlcjogKChhID0gb25lKCkpIE9SIChhID0gdHdvKCkp KSAgICAgIAorKDExIHJvd3MpCisKK3N0ZXAgczJsb2NrOiBTRUxFQ1QgcGdfYWR2aXNvcnlfbG9j aygxMjM0NSk7CitwZ19hZHZpc29yeV9sb2NrCistLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAg ICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFleGVjMjogTE9BRCAnZGVsYXlfZXhlY3V0aW9uJzsK KwkJICBTRVQgZGVsYXlfZXhlY3V0aW9uLmV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQgPSAxMjM0NTsK KwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcTI7IDx3YWl0aW5nIC4uLj4KK3N0ZXAg czJkcm9waTogRFJPUCBJTkRFWCBmb28xMl8xX2E7CitzdGVwIHMydW5sb2NrOiBTRUxFQ1QgcGdf YWR2aXNvcnlfdW5sb2NrKDEyMzQ1KTsKK3BnX2Fkdmlzb3J5X3VubG9jaworLS0tLS0tLS0tLS0t LS0tLS0tCit0ICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzMWV4ZWMyOiA8Li4u IGNvbXBsZXRlZD4KK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hl ZFBsYW4gaXMgbm90IHZhbGlkCitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgp OiBDYWNoZWRQbGFuIGlzIHZhbGlkCitRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K K0FwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIFN1YnBsYW5z IFJlbW92ZWQ6IDEgICAgICAgICAgICAgICAgICAgICAgIAorICAtPiAgU2VxIFNjYW4gb24gZm9v MTJfMSBmb29fMSAgICAgICAgICAgICAKKyAgICAgICAgRmlsdGVyOiAoKGEgPSBvbmUoKSkgT1Ig KGEgPSB0d28oKSkpCisgIC0+ICBTZXEgU2NhbiBvbiBmb28xMl8yIGZvb18yICAgICAgICAgICAg IAorICAgICAgICBGaWx0ZXI6ICgoYSA9IG9uZSgpKSBPUiAoYSA9IHR3bygpKSkKKyg2IHJvd3Mp CisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxcHJlcDMgczJsb2NrIHMxZXhlYzMgczJkcm9w aSBzMnVubG9jaworc3RlcCBzMXByZXAzOiBTRVQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2Vu ZXJpY19wbGFuOworCQkgIFBSRVBBUkUgcTMgQVMgVVBEQVRFIGZvb3YgU0VUIGEgPSBhIFdIRVJF IGEgPSBvbmUoKSBvciBhID0gdHdvKCk7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRF IHEzOworczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBp cyB2YWxpZAorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxh biBpcyB2YWxpZAorUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCitBcHBlbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorICBTdWJwbGFucyBSZW1vdmVkOiAxICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKyAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gZm9vMTJfMSBmb29fMSAg ICAgICAgICAgICAgICAgCisgICAgICAgIFJlY2hlY2sgQ29uZDogKChhID0gb25lKCkpIE9SIChh ID0gdHdvKCkpKSAgICAgIAorICAgICAgICAtPiAgQml0bWFwT3IgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9u IGZvbzEyXzFfYSAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChhID0g b25lKCkpICAgICAgICAgICAgIAorICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4g b24gZm9vMTJfMV9hICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGEg PSB0d28oKSkgICAgICAgICAgICAgCisgIC0+ICBTZXEgU2NhbiBvbiBmb28xMl8yIGZvb18yICAg ICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBGaWx0ZXI6ICgoYSA9IG9uZSgpKSBPUiAo YSA9IHR3bygpKSkgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCitVcGRhdGUgb24gZm9vICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorICBVcGRhdGUgb24gZm9vMTJfMSBmb29fMSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgVXBkYXRlIG9uIGZvbzEyXzIgZm9vXzIgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIC0+ICBBcHBlbmQgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBTdWJwbGFucyBSZW1vdmVkOiAx ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgLT4gIEJpdG1hcCBIZWFwIFNj YW4gb24gZm9vMTJfMSBmb29fMSAgICAgICAgICAgCisgICAgICAgICAgICAgIFJlY2hlY2sgQ29u ZDogKChhID0gb25lKCkpIE9SIChhID0gdHdvKCkpKQorICAgICAgICAgICAgICAtPiAgQml0bWFw T3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLT4g IEJpdG1hcCBJbmRleCBTY2FuIG9uIGZvbzEyXzFfYSAgCisgICAgICAgICAgICAgICAgICAgICAg ICAgIEluZGV4IENvbmQ6IChhID0gb25lKCkpICAgICAgIAorICAgICAgICAgICAgICAgICAgICAt PiAgQml0bWFwIEluZGV4IFNjYW4gb24gZm9vMTJfMV9hICAKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgSW5kZXggQ29uZDogKGEgPSB0d28oKSkgICAgICAgCisgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBmb28xMl8yIGZvb18yICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBGaWx0 ZXI6ICgoYSA9IG9uZSgpKSBPUiAoYSA9IHR3bygpKSkgICAgICAKKygyNiByb3dzKQorCitzdGVw IHMybG9jazogU0VMRUNUIHBnX2Fkdmlzb3J5X2xvY2soMTIzNDUpOworcGdfYWR2aXNvcnlfbG9j aworLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMx ZXhlYzM6IExPQUQgJ2RlbGF5X2V4ZWN1dGlvbic7CisJCSAgU0VUIGRlbGF5X2V4ZWN1dGlvbi5l eGVjdXRvcl9zdGFydF9sb2NrX2lkID0gMTIzNDU7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBF WEVDVVRFIHEzOyA8d2FpdGluZyAuLi4+CitzdGVwIHMyZHJvcGk6IERST1AgSU5ERVggZm9vMTJf MV9hOworc3RlcCBzMnVubG9jazogU0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9jaygxMjM0NSk7Citw Z19hZHZpc29yeV91bmxvY2sKKy0tLS0tLS0tLS0tLS0tLS0tLQordCAgICAgICAgICAgICAgICAg CisoMSByb3cpCisKK3N0ZXAgczFleGVjMzogPC4uLiBjb21wbGV0ZWQ+CitzMTogTk9USUNFOiAg RmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzIG5vdCB2YWxpZAorczE6IE5P VElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyB2YWxpZAorczE6 IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyBub3QgdmFs aWQKK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMg dmFsaWQKK1FVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQXBw ZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgU3VicGxh bnMgUmVtb3ZlZDogMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIC0+ICBTZXEgU2Nh biBvbiBmb28xMl8xIGZvb18xICAgICAgICAgICAgICAgICAgIAorICAgICAgICBGaWx0ZXI6ICgo YSA9IG9uZSgpKSBPUiAoYSA9IHR3bygpKSkgICAgICAKKyAgLT4gIFNlcSBTY2FuIG9uIGZvbzEy XzIgZm9vXzIgICAgICAgICAgICAgICAgICAgCisgICAgICAgIEZpbHRlcjogKChhID0gb25lKCkp IE9SIChhID0gdHdvKCkpKSAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKK1VwZGF0ZSBvbiBmb28gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCisgIFVwZGF0ZSBvbiBmb28xMl8xIGZvb18xICAgICAgICAgICAgICAgICAg ICAgICAgIAorICBVcGRhdGUgb24gZm9vMTJfMiBmb29fMiAgICAgICAgICAgICAgICAgICAgICAg ICAKKyAgLT4gIEFwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisg ICAgICAgIFN1YnBsYW5zIFJlbW92ZWQ6IDEgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAg ICAtPiAgU2VxIFNjYW4gb24gZm9vMTJfMSBmb29fMSAgICAgICAgICAgICAKKyAgICAgICAgICAg ICAgRmlsdGVyOiAoKGEgPSBvbmUoKSkgT1IgKGEgPSB0d28oKSkpCisgICAgICAgIC0+ICBTZXEg U2NhbiBvbiBmb28xMl8yIGZvb18yICAgICAgICAgICAgIAorICAgICAgICAgICAgICBGaWx0ZXI6 ICgoYSA9IG9uZSgpKSBPUiAoYSA9IHR3bygpKSkKKygxNiByb3dzKQorCisKK3N0YXJ0aW5nIHBl cm11dGF0aW9uOiBzMXByZXA0IHMybG9jayBzMWV4ZWM0IHMyZHJvcGkgczJ1bmxvY2sKK3N0ZXAg czFwcmVwNDogU0VUIHBsYW5fY2FjaGVfbW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxhbjsKKwkJICBT RVQgZW5hYmxlX3NlcXNjYW4gVE8gb2ZmOworCQkgIFBSRVBBUkUgcTQgQVMgU0VMRUNUICogRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgMSkgV0hFUkUgRVhJU1RTIChTRUxFQ1QgKiBGUk9NIGZvb3Yg V0hFUkUgYSA9ICQxIEZPUiBVUERBVEUpOworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VU RSBxNCAoMSk7CitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQ bGFuIGlzIHZhbGlkCitRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUmVzdWx0ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIE9uZS1UaW1lIEZpbHRlcjog KEluaXRQbGFuIDEpLmNvbDEgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgSW5pdFBsYW4g MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAg IC0+ICBMb2NrUm93cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCisgICAgICAgICAgRGlzYWJsZWQgTm9kZXM6IDIgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKyAgICAgICAgICAtPiAgQXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIERpc2FibGVkIE5vZGVzOiAyICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgU3VicGxhbnMgUmVt b3ZlZDogMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAtPiAg SW5kZXggU2NhbiB1c2luZyBmb28xMl8xX2Egb24gZm9vMTJfMSBmb29fMQorICAgICAgICAgICAg ICAgICAgICAgIEluZGV4IENvbmQ6IChhID0gJDEpICAgICAgICAgICAgICAgICAgICAgCisgIC0+ ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyAgICAgICAgICAgICAgICAgICAgICAg ICAKKygxMSByb3dzKQorCitzdGVwIHMybG9jazogU0VMRUNUIHBnX2Fkdmlzb3J5X2xvY2soMTIz NDUpOworcGdfYWR2aXNvcnlfbG9jaworLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAg IAorKDEgcm93KQorCitzdGVwIHMxZXhlYzQ6IExPQUQgJ2RlbGF5X2V4ZWN1dGlvbic7CisJCSAg U0VUIGRlbGF5X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9sb2NrX2lkID0gMTIzNDU7CisJCSAg RVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHE0ICgxKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBz MmRyb3BpOiBEUk9QIElOREVYIGZvbzEyXzFfYTsKK3N0ZXAgczJ1bmxvY2s6IFNFTEVDVCBwZ19h ZHZpc29yeV91bmxvY2soMTIzNDUpOworcGdfYWR2aXNvcnlfdW5sb2NrCistLS0tLS0tLS0tLS0t LS0tLS0KK3QgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMxZXhlYzQ6IDwuLi4g Y29tcGxldGVkPgorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVk UGxhbiBpcyBub3QgdmFsaWQKK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6 IENhY2hlZFBsYW4gaXMgdmFsaWQKK1FVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CitSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgT25lLVRp bWUgRmlsdGVyOiAoSW5pdFBsYW4gMSkuY29sMSAgICAgICAgIAorICBJbml0UGxhbiAxICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgLT4gIExvY2tSb3dzICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKyAgICAgICAgICBEaXNhYmxlZCBOb2RlczogMyAgICAgICAgICAg ICAgICAgIAorICAgICAgICAgIC0+ICBBcHBlbmQgICAgICAgICAgICAgICAgICAgICAgICAgCisg ICAgICAgICAgICAgICAgRGlzYWJsZWQgTm9kZXM6IDMgICAgICAgICAgICAKKyAgICAgICAgICAg ICAgICBTdWJwbGFucyBSZW1vdmVkOiAyICAgICAgICAgIAorICAgICAgICAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBmb28xMl8xIGZvb18xCisgICAgICAgICAgICAgICAgICAgICAgRGlzYWJsZWQg Tm9kZXM6IDEgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXI6IChhID0gJDEpICAg ICAgIAorICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgICAgICAgCisoMTIg cm93cykKKwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vbWVz b24uYnVpbGQgYi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9tZXNvbi5idWlsZApp bmRleCA0MWYzYWMwYjg5Li41YTcwYjE4M2QwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVz L2RlbGF5X2V4ZWN1dGlvbi9tZXNvbi5idWlsZAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5 X2V4ZWN1dGlvbi9tZXNvbi5idWlsZApAQCAtMjQsNiArMjQsNyBAQCB0ZXN0cyArPSB7CiAgICAg J3NwZWNzJzogWwogICAgICAgJ3BhcnRpdGlvbi1hZGRpdGlvbicsCiAgICAgICAncGFydGl0aW9u LXJlbW92YWwtMScsCisgICAgICAnY2FjaGVkLXBsYW4taW52YWwnLAogICAgIF0sCiAgIH0sCiB9 CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9zcGVjcy9jYWNo ZWQtcGxhbi1pbnZhbC5zcGVjIGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vc3Bl Y3MvY2FjaGVkLXBsYW4taW52YWwuc3BlYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwLi44MjBhODQzMDUxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9k ZWxheV9leGVjdXRpb24vc3BlY3MvY2FjaGVkLXBsYW4taW52YWwuc3BlYwpAQCAtMCwwICsxLDc1 IEBACisjIFRlc3QgdG8gY2hlY2sgdGhhdCBpbnZhbGlkYXRpb24gb2YgY2FjaGVkIGdlbmVyaWMg cGxhbnMgZHVyaW5nIEV4ZWN1dG9yU3RhcnQKKyMgY29ycmVjdGx5IHRyaWdnZXJzIHJlcGxhbm5p bmcgYW5kIHJlLWV4ZWN1dGlvbi4KKworc2V0dXAKK3sKKyAgQ1JFQVRFIFRBQkxFIGZvbyAoYSBp bnQsIGIgdGV4dCkgUEFSVElUSU9OIEJZIExJU1QoYSk7CisgIENSRUFURSBUQUJMRSBmb28xMiBQ QVJUSVRJT04gT0YgZm9vIEZPUiBWQUxVRVMgSU4gKDEsIDIpIFBBUlRJVElPTiBCWSBMSVNUIChh KTsKKyAgQ1JFQVRFIFRBQkxFIGZvbzEyXzEgUEFSVElUSU9OIE9GIGZvbzEyIEZPUiBWQUxVRVMg SU4gKDEpOworICBDUkVBVEUgVEFCTEUgZm9vMTJfMiBQQVJUSVRJT04gT0YgZm9vMTIgRk9SIFZB TFVFUyBJTiAoMik7CisgIENSRUFURSBJTkRFWCBmb28xMl8xX2EgT04gZm9vMTJfMSAoYSk7Cisg IENSRUFURSBUQUJMRSBmb28zIFBBUlRJVElPTiBPRiBmb28gRk9SIFZBTFVFUyBJTiAoMyk7Cisg IENSRUFURSBWSUVXIGZvb3YgQVMgU0VMRUNUICogRlJPTSBmb287CisgIENSRUFURSBGVU5DVElP TiBvbmUgKCkgUkVUVVJOUyBpbnQgQVMgJCQgQkVHSU4gUkVUVVJOIDE7IEVORDsgJCQgTEFOR1VB R0UgUExQR1NRTCBTVEFCTEU7CisgIENSRUFURSBGVU5DVElPTiB0d28gKCkgUkVUVVJOUyBpbnQg QVMgJCQgQkVHSU4gUkVUVVJOIDI7IEVORDsgJCQgTEFOR1VBR0UgUExQR1NRTCBTVEFCTEU7Cisg IENSRUFURSBSVUxFIHVwZGF0ZV9mb28gQVMgT04gVVBEQVRFIFRPIGZvbyBETyBBTFNPIFNFTEVD VCAxOworfQorCit0ZWFyZG93bgoreworICBEUk9QIFZJRVcgZm9vdjsKKyAgRFJPUCBSVUxFIHVw ZGF0ZV9mb28gT04gZm9vOworICBEUk9QIFRBQkxFIGZvbzsKKyAgRFJPUCBGVU5DVElPTiBvbmUo KSwgdHdvKCk7Cit9CisKK3Nlc3Npb24gInMxIgorIyBBcHBlbmQgd2l0aCBydW4tdGltZSBwcnVu aW5nCitzdGVwICJzMXByZXAiICAgeyBTRVQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJp Y19wbGFuOworCQkgIFBSRVBBUkUgcSBBUyBTRUxFQ1QgKiBGUk9NIGZvb3YgV0hFUkUgYSA9ICQx IEZPUiBVUERBVEU7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEgKDEpOyB9CisK KyMgQW5vdGhlciBjYXNlIHdpdGggQXBwZW5kIHdpdGggcnVuLXRpbWUgcHJ1bmluZworc3RlcCAi czFwcmVwMiIgICB7IFNFVCBwbGFuX2NhY2hlX21vZGUgPSBmb3JjZV9nZW5lcmljX3BsYW47CisJ CSAgUFJFUEFSRSBxMiBBUyBTRUxFQ1QgKiBGUk9NIGZvb3YgV0hFUkUgYSA9IG9uZSgpIG9yIGEg PSB0d28oKTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcTI7IH0KKworIyBDYXNl IHdpdGggYSBydWxlIGFkZGluZyBhbm90aGVyIHF1ZXJ5CitzdGVwICJzMXByZXAzIiAgIHsgU0VU IHBsYW5fY2FjaGVfbW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxhbjsKKwkJICBQUkVQQVJFIHEzIEFT IFVQREFURSBmb292IFNFVCBhID0gYSBXSEVSRSBhID0gb25lKCkgb3IgYSA9IHR3bygpOworCQkg IEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxMzsgfQorCisjIEFub3RoZXIgY2FzZSB3aXRo IEFwcGVuZCB3aXRoIHJ1bi10aW1lIHBydW5pbmcgaW4gYSBzdWJxdWVyeQorc3RlcCAiczFwcmVw NCIgICB7IFNFVCBwbGFuX2NhY2hlX21vZGUgPSBmb3JjZV9nZW5lcmljX3BsYW47CisJCSAgU0VU IGVuYWJsZV9zZXFzY2FuIFRPIG9mZjsKKwkJICBQUkVQQVJFIHE0IEFTIFNFTEVDVCAqIEZST00g Z2VuZXJhdGVfc2VyaWVzKDEsIDEpIFdIRVJFIEVYSVNUUyAoU0VMRUNUICogRlJPTSBmb292IFdI RVJFIGEgPSAkMSBGT1IgVVBEQVRFKTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUg cTQgKDEpOyB9CisKKyMgRXhlY3V0ZXMgYSBnZW5lcmljIHBsYW4KK3N0ZXAgInMxZXhlYyIJeyBM T0FEICdkZWxheV9leGVjdXRpb24nOworCQkgIFNFVCBkZWxheV9leGVjdXRpb24uZXhlY3V0b3Jf c3RhcnRfbG9ja19pZCA9IDEyMzQ1OworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBx ICgxKTsgfQorc3RlcCAiczFleGVjMiIJeyBMT0FEICdkZWxheV9leGVjdXRpb24nOworCQkgIFNF VCBkZWxheV9leGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCA9IDEyMzQ1OworCQkgIEVY UExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxMjsgfQorc3RlcCAiczFleGVjMyIJeyBMT0FEICdk ZWxheV9leGVjdXRpb24nOworCQkgIFNFVCBkZWxheV9leGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRf bG9ja19pZCA9IDEyMzQ1OworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxMzsgfQor c3RlcCAiczFleGVjNCIJeyBMT0FEICdkZWxheV9leGVjdXRpb24nOworCQkgIFNFVCBkZWxheV9l eGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCA9IDEyMzQ1OworCQkgIEVYUExBSU4gKENP U1RTIE9GRikgRVhFQ1VURSBxNCAoMSk7IH0KKworc2Vzc2lvbiAiczIiCitzdGVwICJzMmxvY2si CXsgU0VMRUNUIHBnX2Fkdmlzb3J5X2xvY2soMTIzNDUpOyB9CitzdGVwICJzMnVubG9jayIJeyBT RUxFQ1QgcGdfYWR2aXNvcnlfdW5sb2NrKDEyMzQ1KTsgfQorc3RlcCAiczJkcm9waSIJeyBEUk9Q IElOREVYIGZvbzEyXzFfYTsgfQorCisjIFdoaWxlICJzMWV4ZWMiLCBldGMuIHdhaXQgdG8gYWNx dWlyZSB0aGUgYWR2aXNvcnkgbG9jaywgInMyZHJvcCIgaXMgYWJsZSB0bworIyBkcm9wIHRoZSBp bmRleCBiZWluZyB1c2VkIGluIHRoZSBjYWNoZWQgcGxhbi4gIFdoZW4gInMxZXhlYyIgaXMgdGhl bgorIyB1bmJsb2NrZWQgYW5kIGluaXRpYWxpemVzIHRoZSBjYWNoZWQgcGxhbiBmb3IgZXhlY3V0 aW9uLCBpdCBkZXRlY3RzIHRoZQorIyBjb25jdXJyZW50IGluZGV4IGRyb3AgYW5kIGNhdXNlcyB0 aGUgY2FjaGVkIHBsYW4gdG8gYmUgZGlzY2FyZGVkIGFuZAorIyByZWNyZWF0ZWQgd2l0aG91dCB0 aGUgaW5kZXguCitwZXJtdXRhdGlvbiAiczFwcmVwIiAiczJsb2NrIiAiczFleGVjIiAiczJkcm9w aSIgInMydW5sb2NrIgorcGVybXV0YXRpb24gInMxcHJlcDIiICJzMmxvY2siICJzMWV4ZWMyIiAi czJkcm9waSIgInMydW5sb2NrIgorcGVybXV0YXRpb24gInMxcHJlcDMiICJzMmxvY2siICJzMWV4 ZWMzIiAiczJkcm9waSIgInMydW5sb2NrIgorcGVybXV0YXRpb24gInMxcHJlcDQiICJzMmxvY2si ICJzMWV4ZWM0IiAiczJkcm9waSIgInMydW5sb2NrIgotLSAKMi40My4wCgo= --0000000000007b8704062277ce88--