Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1veXDA-00EXQD-2W for pgsql-hackers@arkaria.postgresql.org; Sat, 10 Jan 2026 11:32:54 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1veXD9-009zdc-1U for pgsql-hackers@arkaria.postgresql.org; Sat, 10 Jan 2026 11:32:52 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1veXD8-009zdS-1I for pgsql-hackers@lists.postgresql.org; Sat, 10 Jan 2026 11:32:51 +0000 Received: from mail-ed1-x536.google.com ([2a00:1450:4864:20::536]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1veXD1-005E9o-2T for pgsql-hackers@lists.postgresql.org; Sat, 10 Jan 2026 11:32:49 +0000 Received: by mail-ed1-x536.google.com with SMTP id 4fb4d7f45d1cf-64d30dc4ed7so9766988a12.0 for ; Sat, 10 Jan 2026 03:32:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jeltef.nl; s=google; t=1768044762; x=1768649562; darn=lists.postgresql.org; h=in-reply-to:references:subject:cc:from:to:message-id:date :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=5yePrUOU8+f0toKhYNTOw10qfO4A0WMrf5lr6JbRVyU=; b=X9Z07iC8kghR1NEcEr7z50Gd/+UiEr4UN34G7rr3kXzT6IHWhWrIktO3wlGptRyQDF mMXwmCoxviacleJ9IEGl3Sc3ekIfV0nBNizohNcC/mogj7yLEZD0Q7eUCkA34EbC5aAS cE+oXlfacm7Sr4OLe6DTc8sZXTIpkwhfN7DlaAFo0MGPG+4uMucYtmolFGCRNBf84zJE 0NVwf8IX//vQwvvPVnxNjyndFj62sGnxuA29x5w+YbP7zg027Klv230D4lHrQlRyC7fQ GGwOqe3isLzo1XCb8r93rWSDCVkCKW9PbnOvX1DenUsPbkn9o/VmdFZPnQQ0hS4VajLl eqmg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768044762; x=1768649562; h=in-reply-to:references:subject:cc:from:to:message-id:date :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=5yePrUOU8+f0toKhYNTOw10qfO4A0WMrf5lr6JbRVyU=; b=t9d0PpIZ/Axq5xsc+6u+3A+wkaVQtanq1DBcAixagf0NRyuDkys3+vDj/aDXU1oLOW 3gd9StqixrW9R64Oe3tT2mY1AFR1V0z6RUW67nxbdFUjC1DH+PobW+RphwZGsQRp7HTZ YKtpFFl/uAQOnCmcxBqFxaR+v9n2yFZfDoePdOi57i0wBx1+hdDBbHXyNHHiZC89p+G1 q76I9Yqval4az4+cJMqAy5ZfS2J3bGXjifVInrmVroC2Vdl9ZqyfwLV4MB/UIzvFW6GW cMY4HJO2PKWucfYbkhgKjGko8UaNIEUJXMI6+W96/3u5J/l5vIiVKZdc8/TRPQvlq1Cr evTA== X-Forwarded-Encrypted: i=1; AJvYcCU8/IZ75DXKlfeknz1/T7g8o7RI50iAGgfcaTiIj5MnpXDFbgtqnsVl6l/n68c/OlKztsyqNyc4D/xhM8l8@lists.postgresql.org X-Gm-Message-State: AOJu0YwbssnN1DYLoMdDoAubNDIb2w5tMEcxRKBD5NkgnPvmPUmnh0Aw 6jF84qFwZbmEQ5d5ZfZIi/uaWpvR2Kicaz90yQiofbKlf7Vqp2qe6goV2/ylqCNGw6Y= X-Gm-Gg: AY/fxX5rCwFDDLHOdQXkVdbegViO8wWkpVsqMlmS1qn4MnNc5gQql/wrHF/zNdqvR8w Ttw34VYpMA/hO4SdTDuK1mSMupO7IoU4K/LaXB59OGzpKe6kx5Ji82jnRzBEGTEgFZw6hWxcvPu xn61Hz017W0/6iKELrRr0fAFSSGKoIyTogXr67aMaik0El7/YyHdCrRp5v3bS1Fr9vRI2JtvPkY JRJAM9XenSdde9v460CvaxvVDqW86K6c1MlESS/Kav0DGpbesFUXKiRT8VvrhYMrV1fEZaXJVTq lb4yNjfHkA8Ej2DjIyZIJXHBsLrf7NZVBCoFq3lqrPWOa1F2Ztx+Kb9HTvwK8CGwPZIeb/Kv9n1 xNXosoJ+ElWUFLibFAdFBasi+CLKPpGg18Sm948qtQdOADkhHXOwVe6+QG8ibNDZYoFF20D/pZ/ nH6nOr3T0wSRIMdndLvMqNOIDQAcSgTdZh7X4= X-Google-Smtp-Source: AGHT+IF+I2zvYSz6mgvCHkJZfWlYG/GXVlVNcsv76UcNEHxgHlbeKAgBIG4jFFrxJtHN/N09JsGToA== X-Received: by 2002:a17:906:fe4c:b0:b73:826a:9102 with SMTP id a640c23a62f3a-b8444fd0a3dmr1223885166b.49.1768044761581; Sat, 10 Jan 2026 03:32:41 -0800 (PST) Received: from localhost (145-53-221-196.fixed.kpn.net. [145.53.221.196]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-6507bf66214sm12549161a12.27.2026.01.10.03.32.40 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 10 Jan 2026 03:32:40 -0800 (PST) Content-Type: multipart/mixed; boundary=cff217dca48da7654d3c859f55554fe6e9047c1de32e45e5c1333ff31462 Mime-Version: 1.0 Date: Sat, 10 Jan 2026 12:32:39 +0100 Message-Id: To: "Bertrand Drouvot" From: "Jelte Fennema-Nio" Cc: "Thomas Munro" , Subject: Re: Safer hash table initialization macro X-Mailer: aerc 0.20.1-31-gf6db7c329ce0 References: In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --cff217dca48da7654d3c859f55554fe6e9047c1de32e45e5c1333ff31462 Content-Type: multipart/alternative; boundary=3b3a39f88b9f1b96bb627252da30a7f78ef29edeec95d9e1628f938005fa --3b3a39f88b9f1b96bb627252da30a7f78ef29edeec95d9e1628f938005fa Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8; format=Flowed On Tue Dec 9, 2025 at 8:27 AM CET, Bertrand Drouvot wrote: > Thanks for this patch series! v4 attached, which fixes some rebase conflicts. Also I moved the patches that start using the new API to the end of the series, so the introduction of the new APIs is now done in the first two patches. --3b3a39f88b9f1b96bb627252da30a7f78ef29edeec95d9e1628f938005fa-- --cff217dca48da7654d3c859f55554fe6e9047c1de32e45e5c1333ff31462 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v4-0001-Add-hash_make-macros.patch Content-Type: text/x-patch; charset=utf-8; name=v4-0001-Add-hash_make-macros.patch RnJvbSAwYWM0NDM2YWM4MDYxNTliODEyYzRhNjJjZDJjM2MzZmNiMzk1MjkyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBUaHUsIDQgRGVjIDIwMjUgMTU6MzU6MDggKzAxMDAKU3ViamVjdDogW1BBVENIIHY0 IDEvNV0gQWRkIGhhc2hfbWFrZSBtYWNyb3MKClRoaXMgYWRkcyBhIGJ1bmNoIG9mIGhhc2hfbWFr ZSogYW5kIHNobWVtX2hhc2hfbWFrZSogbWFjcm9zIHRvIG1ha2UgaXQKZWFzaWVyIGFuZCBsZXNz IGVycm9yIHByb25lIHRvIGNyZWF0ZSBIVEFCcy4gVGhlc2UgbWFjcm9zIGFyZQppbXBsZW1lbnRl ZCBhcyB3cmFwcGVycyBhcm91bmQgdGhlIGFscmVhZHkgZXhpc3RpbmcgaGFzaF9jcmVhdGUKZnVu Y3Rpb24uIFVzaW5nIHRoZSBuZXcgbWFjcm9zIGlzIHByZWZlcnJlZCwgZHVlIHRvIHRoZSBhZGRp dGlvbmFsCmNvbXBpbGUgdGltZSBjaGVja3MgdGhhdCB0aGV5IGJyaW5nLgoKQ28tQXV0aG9yZWQt Qnk6IEJlcnRyYW5kIERyb3V2b3QgPGJlcnRyYW5kZHJvdXZvdC5wZ0BnbWFpbC5jb20+Ci0tLQog c3JjL2JhY2tlbmQvdXRpbHMvaGFzaC9keW5haGFzaC5jIHwgMTA5ICsrKysrKysrKysrKysrKysr KysrCiBzcmMvaW5jbHVkZS9jLmggICAgICAgICAgICAgICAgICAgfCAgMzEgKysrKysrCiBzcmMv aW5jbHVkZS9zdG9yYWdlL3NobWVtLmggICAgICAgfCAgMzIgKysrKysrCiBzcmMvaW5jbHVkZS91 dGlscy9oc2VhcmNoLmggICAgICAgfCAxNjAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKyst CiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgfCAgIDEgKwogNSBmaWxlcyBjaGFu Z2VkLCAzMjggaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9oYXNoL2R5bmFoYXNoLmMgYi9zcmMvYmFja2VuZC91dGlscy9oYXNoL2R5 bmFoYXNoLmMKaW5kZXggMTFmNTc3OGViYTEuLmMwZmFhYWY2MWRhIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9oYXNoL2R5bmFoYXNoLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvaGFz aC9keW5haGFzaC5jCkBAIC02MzEsNiArNjMxLDExNSBAQCBoYXNoX2NyZWF0ZShjb25zdCBjaGFy ICp0YWJuYW1lLCBpbnQ2NCBuZWxlbSwgY29uc3QgSEFTSENUTCAqaW5mbywgaW50IGZsYWdzKQog CXJldHVybiBoYXNocDsKIH0KIAorLyoKKyAqIGhhc2hfb3B0c19pbml0IC0tIGluaXRpYWxpemUg SEFTSENUTCBhbmQgZmxhZ3MgZnJvbSBIQVNIT1BUUworICoKKyAqIFRoaXMgcHJvY2Vzc2VzIEhB U0hPUFRTIGZpZWxkcyBpbnRvIEhBU0hDVEwgYW5kIGZsYWdzLiBJdCdzIHVzZWQgYnkgY29kZQor ICogdGhhdCBuZWVkcyB0byBjYWxsIHRoZSBsb3ctbGV2ZWwgaGFzaF9jcmVhdGUgZnVuY3Rpb24u CisgKi8KK3ZvaWQKK2hhc2hfb3B0c19pbml0KEhBU0hDVEwgKmN0bCwgaW50ICpmbGFncywKKwkJ CSAgIFNpemUga2V5c2l6ZSwgU2l6ZSBlbnRyeXNpemUsIGJvb2wgc3RyaW5nX2tleSwKKwkJCSAg IGNvbnN0IEhBU0hPUFRTICpvcHRzKQoreworCU1lbVNldChjdGwsIDAsIHNpemVvZigqY3RsKSk7 CisJY3RsLT5rZXlzaXplID0ga2V5c2l6ZTsKKwljdGwtPmVudHJ5c2l6ZSA9IGVudHJ5c2l6ZTsK KworCSpmbGFncyA9IEhBU0hfRUxFTTsKKworCWlmIChvcHRzICE9IE5VTEwgJiYgb3B0cy0+aGFz aCAhPSBOVUxMKQorCXsKKwkJLyogZm9yY2VfYmxvYnMgb25seSBhZmZlY3RzIGRlZmF1bHQgaGFz aCBzZWxlY3Rpb24sIG5vdCBjdXN0b20gaGFzaCAqLworCQlBc3NlcnQoIW9wdHMtPmZvcmNlX2Js b2JzKTsKKwkJY3RsLT5oYXNoID0gb3B0cy0+aGFzaDsKKwkJKmZsYWdzIHw9IEhBU0hfRlVOQ1RJ T047CisJfQorCWVsc2UgaWYgKG9wdHMgIT0gTlVMTCAmJiBvcHRzLT5mb3JjZV9ibG9icykKKwl7 CisJCSpmbGFncyB8PSBIQVNIX0JMT0JTOworCX0KKwllbHNlCisJeworCQkqZmxhZ3MgfD0gc3Ry aW5nX2tleSA/IEhBU0hfU1RSSU5HUyA6IEhBU0hfQkxPQlM7CisJfQorCisJaWYgKG9wdHMgIT0g TlVMTCAmJiBvcHRzLT5tYXRjaCAhPSBOVUxMKQorCXsKKwkJY3RsLT5tYXRjaCA9IG9wdHMtPm1h dGNoOworCQkqZmxhZ3MgfD0gSEFTSF9DT01QQVJFOworCX0KKworCWlmIChvcHRzICE9IE5VTEwg JiYgb3B0cy0+a2V5Y29weSAhPSBOVUxMKQorCXsKKwkJY3RsLT5rZXljb3B5ID0gb3B0cy0+a2V5 Y29weTsKKwkJKmZsYWdzIHw9IEhBU0hfS0VZQ09QWTsKKwl9CisKKwlpZiAob3B0cyAhPSBOVUxM ICYmIG9wdHMtPmFsbG9jICE9IE5VTEwpCisJeworCQljdGwtPmFsbG9jID0gb3B0cy0+YWxsb2M7 CisJCSpmbGFncyB8PSBIQVNIX0FMTE9DOworCX0KKworCWlmIChvcHRzICE9IE5VTEwgJiYgb3B0 cy0+bnVtX3BhcnRpdGlvbnMgPiAwKQorCXsKKwkJY3RsLT5udW1fcGFydGl0aW9ucyA9IG9wdHMt Pm51bV9wYXJ0aXRpb25zOworCQkqZmxhZ3MgfD0gSEFTSF9QQVJUSVRJT047CisJfQorCisJaWYg KG9wdHMgIT0gTlVMTCAmJiBvcHRzLT5maXhlZF9zaXplKQorCQkqZmxhZ3MgfD0gSEFTSF9GSVhF RF9TSVpFOworfQorCisvKgorICogaGFzaF9tYWtlX2ltcGwgLS0gc2ltcGxpZmllZCBoYXNoIHRh YmxlIGNyZWF0aW9uCisgKgorICogVGhpcyBpcyB0aGUgaW1wbGVtZW50YXRpb24gZnVuY3Rpb24g Zm9yIHRoZSBoYXNoX21ha2UoKSBhbmQgaGFzaF9tYWtlX2V4dCgpCisgKiBtYWNyb3MuIEl0IGNy ZWF0ZXMgYSBoYXNoIHRhYmxlIHdpdGggc2Vuc2libGUgZGVmYXVsdHMuCisgKgorICogSWYgc3Ry aW5nX2tleSBpcyB0cnVlLCB0aGUga2V5IGlzIHRyZWF0ZWQgYXMgYSBudWxsLXRlcm1pbmF0ZWQg c3RyaW5nCisgKiAodXNlcyBIQVNIX1NUUklOR1MpLiBPdGhlcndpc2UsIHRoZSBrZXkgaXMgdHJl YXRlZCBhcyBhIGJpbmFyeSBibG9iCisgKiAodXNlcyBIQVNIX0JMT0JTKS4KKyAqCisgKiBQYXNz IE5VTEwgZm9yIG9wdHMgdG8gdXNlIGFsbCBkZWZhdWx0cy4KKyAqLworSFRBQiAqCitoYXNoX21h a2VfaW1wbChjb25zdCBjaGFyICp0YWJuYW1lLCBpbnQ2NCBuZWxlbSwKKwkJCSAgIFNpemUga2V5 c2l6ZSwgU2l6ZSBlbnRyeXNpemUsCisJCQkgICBib29sIHN0cmluZ19rZXksCisJCQkgICBjb25z dCBIQVNIT1BUUyAqb3B0cywKKwkJCSAgIE1lbW9yeUNvbnRleHQgbWN4dCkKK3sKKwlIQVNIQ1RM CQljdGw7CisJaW50CQkJZmxhZ3M7CisKKwloYXNoX29wdHNfaW5pdCgmY3RsLCAmZmxhZ3MsIGtl eXNpemUsIGVudHJ5c2l6ZSwgc3RyaW5nX2tleSwgb3B0cyk7CisKKwljdGwuaGN4dCA9IG1jeHQ7 CisJZmxhZ3MgfD0gSEFTSF9DT05URVhUOworCisJcmV0dXJuIGhhc2hfY3JlYXRlKHRhYm5hbWUs IG5lbGVtLCAmY3RsLCBmbGFncyk7Cit9CisKKy8qCisgKiBoYXNoX21ha2VfZm5faW1wbCAtLSBj cmVhdGUgYSBoYXNoIHRhYmxlIHdpdGggY3VzdG9tIGZ1bmN0aW9ucworICovCitIVEFCICoKK2hh c2hfbWFrZV9mbl9pbXBsKGNvbnN0IGNoYXIgKnRhYm5hbWUsIGludDY0IG5lbGVtLAorCQkJCSAg U2l6ZSBrZXlzaXplLCBTaXplIGVudHJ5c2l6ZSwgYm9vbCBzdHJpbmdfa2V5LAorCQkJCSAgSGFz aFZhbHVlRnVuYyBoYXNoZm4sIEhhc2hDb21wYXJlRnVuYyBtYXRjaGZuLAorCQkJCSAgTWVtb3J5 Q29udGV4dCBtY3h0KQoreworCUhBU0hPUFRTCW9wdHMgPSB7CisJCS5oYXNoID0gaGFzaGZuLAor CQkubWF0Y2ggPSBtYXRjaGZuCisJfTsKKworCXJldHVybiBoYXNoX21ha2VfaW1wbCh0YWJuYW1l LCBuZWxlbSwga2V5c2l6ZSwgZW50cnlzaXplLAorCQkJCQkJICBzdHJpbmdfa2V5LCAmb3B0cywg bWN4dCk7Cit9CisKIC8qCiAgKiBTZXQgZGVmYXVsdCBIQVNISERSIHBhcmFtZXRlcnMuCiAgKi8K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2MuaCBiL3NyYy9pbmNsdWRlL2MuaAppbmRleCAzMzVh ZjMzNTJkMS4uNzIxOTQ4MjM5OGMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2MuaAorKysgYi9z cmMvaW5jbHVkZS9jLmgKQEAgLTgyLDYgKzgyLDExIEBACiAjZW5kaWYKICNpZmRlZiBFTkFCTEVf TkxTCiAjaW5jbHVkZSA8bGliaW50bC5oPgorI2VuZGlmCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4 dGVybiAiQysrIiB7CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+Cit9CiAjZW5kaWYKIAogIC8qIFB1 bGwgaW4gZnVuZGFtZW50YWwgc3ltYm9scyB0aGF0IHdlIGFsc28gZXhwb3NlIHRvIGFwcGxpY2F0 aW9ucyAqLwpAQCAtMzczLDYgKzM3OCwzMiBAQAogI2RlZmluZSBIQVZFX1BHX0lOVEVHRVJfQ09O U1RBTlRfUAogI2VuZGlmCiAKKy8qCisgKiBwZ19leHByX2hhc190eXBlX3AoZXhwciwgdHlwZSkg LSBDaGVjayBpZiBhbiBleHByZXNzaW9uIGhhcyBhIHNwZWNpZmljIHR5cGUuCisgKgorICogU2lt aWxhciB0byBwZ19pc19zYW1lLCBidXQgdGFrZXMgYW4gZXhwcmVzc2lvbiBpbnN0ZWFkIG9mIGEg dHlwZSBhcyB0aGUKKyAqIGZpcnN0IGFyZ3VtZW50LiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHlvdSBo YXZlIGFuIGV4cHJlc3Npb24gYW5kIHdhbnQgdG8KKyAqIGNoZWNrIGl0cyB0eXBlIHdpdGhvdXQg bmVlZGluZyB0eXBlb2YvZGVjbHR5cGUuCisgKi8KKyNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQor I2RlZmluZSBwZ19leHByX2hhc190eXBlX3AoZXhwciwgdHlwZSkgKHN0ZDo6aXNfc2FtZTxkZWNs dHlwZShleHByKSwgdHlwZT46OnZhbHVlKQorI2Vsc2UKKyNkZWZpbmUgcGdfZXhwcl9oYXNfdHlw ZV9wKGV4cHIsIHR5cGUpIFwKKwlfR2VuZXJpYygoZXhwciksIHR5cGU6IDEsIGRlZmF1bHQ6IDAp CisjZW5kaWYKKworLyoKKyAqIHBnX251bGxwdHJfb2YodHlwZSkgLSBDcmVhdGUgYSBudWxsIHBv aW50ZXIgb2YgdGhlIGdpdmVuIHR5cGUuCisgKgorICogSW4gQywgKHR5cGUgKilOVUxMIHdvcmtz IGZvciBhbGwgdHlwZXMuIEluIEMrKywgdGhpcyBzeW50YXggZmFpbHMgZm9yIHR5cGVzCisgKiBj b250YWluaW5nIGJyYWNrZXRzIChsaWtlIGNoYXJbNjRdKSwgc28gd2UgdXNlIHN0ZDo6YWRkX3Bv aW50ZXJfdCBpbnN0ZWFkLgorICovCisjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykKKyNkZWZpbmUg cGdfbnVsbHB0cl9vZih0eXBlKSAoc3RhdGljX2Nhc3Q8c3RkOjphZGRfcG9pbnRlcl90PHR5cGU+ PihudWxscHRyKSkKKyNlbHNlCisjZGVmaW5lIHBnX251bGxwdHJfb2YodHlwZSkgKCh0eXBlICop TlVMTCkKKyNlbmRpZgorCiAvKgogICogcGdfYXNzdW1lKGV4cHIpIHN0YXRlcyB0aGF0IHdlIGFz c3VtZSBgZXhwcmAgdG8gZXZhbHVhdGUgdG8gdHJ1ZS4gSW4gYXNzZXJ0CiAgKiBlbmFibGVkIGJ1 aWxkcyBwZ19hc3N1bWUoKSBpcyB0dXJuZWQgaW50byBhbiBhc3NlcnRpb24sIGluIG9wdGltaXpl ZCBidWlsZHMKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW0uaCBiL3NyYy9p bmNsdWRlL3N0b3JhZ2Uvc2htZW0uaAppbmRleCBlNzFhNTFkZmU4NC4uMmEyZDI0Y2NmNjAgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW0uaAorKysgYi9zcmMvaW5jbHVkZS9z dG9yYWdlL3NobWVtLmgKQEAgLTQzLDYgKzQzLDM4IEBAIGV4dGVybiBTaXplIG11bF9zaXplKFNp emUgczEsIFNpemUgczIpOwogCiBleHRlcm4gUEdETExJTVBPUlQgU2l6ZSBwZ19nZXRfc2htZW1f cGFnZXNpemUodm9pZCk7CiAKKy8qCisgKiBTaW1wbGlmaWVkIHNoYXJlZCBtZW1vcnkgaGFzaCB0 YWJsZSBjcmVhdGlvbiBBUEkKKyAqCisgKiBUaGVzZSBtYWNyb3MgcHJvdmlkZSBhIHNpbXBsZXIg d2F5IHRvIGNyZWF0ZSBzaGFyZWQgbWVtb3J5IGhhc2ggdGFibGVzIGJ5OgorICogLSBBdXRvbWF0 aWNhbGx5IGRldGVybWluaW5nIGtleXNpemUgYW5kIGVudHJ5c2l6ZSBmcm9tIHR5cGUgaW5mb3Jt YXRpb24KKyAqIC0gQXV0b21hdGljYWxseSBjaG9vc2luZyBIQVNIX1NUUklOR1MgdnMgSEFTSF9C TE9CUyBiYXNlZCBvbiBrZXkgdHlwZQorICogLSBFbGltaW5hdGluZyB0aGUgbmVlZCBmb3IgZXhw bGljaXQgSEFTSENUTCBhbmQgZmxhZ3MgaW4gY29tbW9uIGNhc2VzCisgKgorICogVXNhZ2U6Cisg KiAgIEhUQUIgKmhhc2ggPSBzaG1lbV9oYXNoX21ha2UoTXlFbnRyeSwga2V5ZmllbGQsICJNeSBo YXNoIiwgNjQsIDEyOCk7CisgKgorICogRm9yIG1vcmUgb3B0aW9ucyAocGFydGl0aW9uaW5nLCBm aXhlZCBzaXplLCBjdXN0b20gaGFzaCk6CisgKiAgIEhBU0hPUFRTIG9wdHMgPSB7Lm51bV9wYXJ0 aXRpb25zID0gMTYsIC5maXhlZF9zaXplID0gdHJ1ZX07CisgKiAgIEhUQUIgKmhhc2ggPSBzaG1l bV9oYXNoX21ha2VfZXh0KE15RW50cnksIGtleWZpZWxkLCAiTXkgaGFzaCIsIDY0LCAxMjgsICZv cHRzKTsKKyAqLworI2RlZmluZSBzaG1lbV9oYXNoX21ha2UoZW50cnl0eXBlLCBrZXltZW1iZXIs IHRhYm5hbWUsIGluaXRfc2l6ZSwgbWF4X3NpemUpIFwKKwlzaG1lbV9oYXNoX21ha2VfZXh0KGVu dHJ5dHlwZSwga2V5bWVtYmVyLCB0YWJuYW1lLCBpbml0X3NpemUsIG1heF9zaXplLCBOVUxMKQor CisjZGVmaW5lIHNobWVtX2hhc2hfbWFrZV9leHQoZW50cnl0eXBlLCBrZXltZW1iZXIsIHRhYm5h bWUsIGluaXRfc2l6ZSwgbWF4X3NpemUsIG9wdHMpIFwKKwkoU3RhdGljQXNzZXJ0RXhwcihvZmZz ZXRvZihlbnRyeXR5cGUsIGtleW1lbWJlcikgPT0gMCwgXAorCQkJCQkJICNrZXltZW1iZXIgIiBt dXN0IGJlIGZpcnN0IG1lbWJlciBpbiAiICNlbnRyeXR5cGUpLCBcCisJc2htZW1faGFzaF9tYWtl X2ltcGwoIFwKKwkJKHRhYm5hbWUpLCAoaW5pdF9zaXplKSwgKG1heF9zaXplKSwgXAorCQlzaXpl b2YoKChlbnRyeXR5cGUgKikwKS0+a2V5bWVtYmVyKSwgXAorCQlzaXplb2YoZW50cnl0eXBlKSwg XAorCQlIQVNIX0tFWV9BU19TVFJJTkcoZW50cnl0eXBlLCBrZXltZW1iZXIpLCBcCisJCShvcHRz KSkpCisKK2V4dGVybiBIVEFCICpzaG1lbV9oYXNoX21ha2VfaW1wbChjb25zdCBjaGFyICpuYW1l LCBpbnQ2NCBpbml0X3NpemUsIGludDY0IG1heF9zaXplLAorCQkJCQkJCQkgIFNpemUga2V5c2l6 ZSwgU2l6ZSBlbnRyeXNpemUsIGJvb2wgc3RyaW5nX2tleSwKKwkJCQkJCQkJICBjb25zdCBIQVNI T1BUUyAqb3B0cyk7CisKIC8qIGlwY2kuYyAqLwogZXh0ZXJuIHZvaWQgUmVxdWVzdEFkZGluU2ht ZW1TcGFjZShTaXplIHNpemUpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9oc2Vh cmNoLmggYi9zcmMvaW5jbHVkZS91dGlscy9oc2VhcmNoLmgKaW5kZXggY2RjNTMwZmI3MzIuLjlk NzZjZmNlNDFmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9oc2VhcmNoLmgKKysrIGIv c3JjL2luY2x1ZGUvdXRpbHMvaHNlYXJjaC5oCkBAIC0xNSw2ICsxNSw5IEBACiAjZGVmaW5lIEhT RUFSQ0hfSAogCiAKKy8qIEhhc2ggdGFibGUgY29udHJvbCBzdHJ1Y3QgaXMgYW4gb3BhcXVlIHR5 cGUga25vd24gb25seSB3aXRoaW4gZHluYWhhc2guYyAqLwordHlwZWRlZiBzdHJ1Y3QgSFRBQiBI VEFCOworCiAvKgogICogSGFzaCBmdW5jdGlvbnMgbXVzdCBoYXZlIHRoaXMgc2lnbmF0dXJlLgog ICovCkBAIC00Myw2ICs0NiwxNTAgQEAgdHlwZWRlZiB2b2lkICooKkhhc2hDb3B5RnVuYykgKHZv aWQgKmRlc3QsIGNvbnN0IHZvaWQgKnNyYywgU2l6ZSBrZXlzaXplKTsKICAqLwogdHlwZWRlZiB2 b2lkICooKkhhc2hBbGxvY0Z1bmMpIChTaXplIHJlcXVlc3QpOwogCisvKgorICogSGFzaCBvcHRp b25zIGZvciBoYXNoX21ha2VfZXh0IGFuZCBzaG1lbV9oYXNoX21ha2VfZXh0IG1hY3Jvcy4KKyAq IENvbnRhaW5zIGxlc3MgY29tbW9ubHkgbmVlZGVkIG9wdGlvbnMgdGhhdCBhcmVuJ3QgY292ZXJl ZCBieSB0aGUgYmFzaWMgbWFjcm9zLgorICogQWxsIGZpZWxkcyBkZWZhdWx0IHRvIE5VTEwvMC9m YWxzZSB3aGVuIHplcm8taW5pdGlhbGl6ZWQuCisgKi8KK3R5cGVkZWYgc3RydWN0IEhBU0hPUFRT Cit7CisJSGFzaFZhbHVlRnVuYyBoYXNoOwkJCS8qIGN1c3RvbSBoYXNoIGZ1bmN0aW9uIChOVUxM IGZvciBkZWZhdWx0KSAqLworCUhhc2hDb21wYXJlRnVuYyBtYXRjaDsJCS8qIGN1c3RvbSBjb21w YXJpc29uIGZ1bmN0aW9uIChOVUxMIGZvcgorCQkJCQkJCQkgKiBkZWZhdWx0KSAqLworCUhhc2hD b3B5RnVuYyBrZXljb3B5OwkJLyogY3VzdG9tIGtleSBjb3B5IGZ1bmN0aW9uIChOVUxMIGZvciBk ZWZhdWx0KSAqLworCUhhc2hBbGxvY0Z1bmMgYWxsb2M7CQkvKiBjdXN0b20gYWxsb2NhdG9yIChO VUxMIGZvciBkZWZhdWx0KSAqLworCWludDY0CQludW1fcGFydGl0aW9uczsgLyogcGFydGl0aW9u IGNvdW50ICgwIGZvciBub25lKSAqLworCWJvb2wJCWZpeGVkX3NpemU7CQkvKiBpZiB0cnVlLCBo YXNoIHRhYmxlIGNhbm5vdCBncm93ICovCisJYm9vbAkJZm9yY2VfYmxvYnM7CS8qIGlmIHRydWUs IHVzZSBIQVNIX0JMT0JTIGV2ZW4gZm9yIHN0cmluZworCQkJCQkJCQkgKiB0eXBlcyAqLworfSBI QVNIT1BUUzsKKworLyoKKyAqIEhlbHBlcnMgdG8gZGV0ZWN0IGlmIGEgdHlwZSBzaG91bGQgYmUg aGFzaGVkIGFzIGEgc3RyaW5nLgorICoKKyAqIFN0cmluZyB0eXBlcyBpbmNsdWRlOiBjaGFyIGFy cmF5cyBhbmQgTmFtZURhdGEuCisgKiBFdmVyeXRoaW5nIGVsc2UgaXMgdHJlYXRlZCBhcyBhIGJp bmFyeSBibG9iIChIQVNIX0JMT0JTKS4KKyAqLworI2RlZmluZSBIQVNIX1BUUl9BU19TVFJJTkco cHRyLCBzaXplKSBcCisJKHBnX2V4cHJfaGFzX3R5cGVfcCgocHRyKSwgY2hhcigqKVtzaXplXSkg fHwgcGdfZXhwcl9oYXNfdHlwZV9wKChwdHIpLCBOYW1lRGF0YSAqKSkKKyNkZWZpbmUgSEFTSF9L RVlfQVNfU1RSSU5HKGVudHJ5dHlwZSwga2V5bWVtYmVyKSBcCisJSEFTSF9QVFJfQVNfU1RSSU5H KCYoKGVudHJ5dHlwZSAqKTApLT5rZXltZW1iZXIsIFwKKwkJCQkJICAgc2l6ZW9mKCgoZW50cnl0 eXBlICopMCktPmtleW1lbWJlcikpCisjZGVmaW5lIEhBU0hfVFlQRV9BU19TVFJJTkcodHlwZSkg XAorCUhBU0hfUFRSX0FTX1NUUklORyhwZ19udWxscHRyX29mKHR5cGUpLCBzaXplb2YodHlwZSkp CisKKy8qCisgKiBDcmVhdGUgYSBoYXNoIHRhYmxlIHdpdGggbWluaW1hbCBib2lsZXJwbGF0ZS4K KyAqCisgKiBUaGlzIGlzIHRoZSBzaW1wbGVzdCB3YXkgdG8gY3JlYXRlIGEgaGFzaCB0YWJsZS4g SXQ6CisgKiAtIERlcml2ZXMga2V5c2l6ZSBmcm9tIHRoZSBrZXltZW1iZXIncyBhY3R1YWwgdHlw ZQorICogLSBEZXJpdmVzIGVudHJ5c2l6ZSBmcm9tIHRoZSBlbnRyeXR5cGUKKyAqIC0gQXV0b21h dGljYWxseSBjaG9vc2VzIEhBU0hfU1RSSU5HUyBvciBIQVNIX0JMT0JTIGJhc2VkIG9uIGtleSB0 eXBlIChjaGFyIGFycmF5cyBhbmQgTmFtZURhdGEgYXJlIHRyZWF0ZWQgYXMgc3RyaW5ncykKKyAq IC0gVXNlcyBDdXJyZW50TWVtb3J5Q29udGV4dCAobm90IFRvcE1lbW9yeUNvbnRleHQpCisgKiAt IFZhbGlkYXRlcyB0aGF0IGtleW1lbWJlciBpcyBhdCBvZmZzZXQgMAorICoKKyAqIFVzYWdlOgor ICogICB0eXBlZGVmIHN0cnVjdCB7IE9pZCBvaWQ7IGNoYXIgKmRhdGE7IH0gTXlFbnRyeTsKKyAq ICAgSFRBQiAqaCA9IGhhc2hfbWFrZShNeUVudHJ5LCBvaWQsICJteSB0YWJsZSIsIDY0KTsKKyAq LworI2RlZmluZSBoYXNoX21ha2UoZW50cnl0eXBlLCBrZXltZW1iZXIsIHRhYm5hbWUsIG5lbGVt KSBcCisJaGFzaF9tYWtlX2N4dChlbnRyeXR5cGUsIGtleW1lbWJlciwgdGFibmFtZSwgbmVsZW0s IEN1cnJlbnRNZW1vcnlDb250ZXh0KQorCisvKgorICogTGlrZSBoYXNoX21ha2UsIGJ1dCBhbGxv d3Mgc3BlY2lmeWluZyBhIG1lbW9yeSBjb250ZXh0LgorICovCisjZGVmaW5lIGhhc2hfbWFrZV9j eHQoZW50cnl0eXBlLCBrZXltZW1iZXIsIHRhYm5hbWUsIG5lbGVtLCBtY3h0KSBcCisJaGFzaF9t YWtlX2V4dF9jeHQoZW50cnl0eXBlLCBrZXltZW1iZXIsIHRhYm5hbWUsIG5lbGVtLCBOVUxMLCBt Y3h0KQorCisvKgorICogSGFzaCB0YWJsZSB3aXRoIGN1c3RvbSBoYXNoIGFuZC9vciBtYXRjaCBm dW5jdGlvbnMuCisgKgorICogTGlrZSBoYXNoX21ha2UsIGJ1dCBhY2NlcHRzIGN1c3RvbSBoYXNo IGFuZCBtYXRjaCBmdW5jdGlvbiBwb2ludGVycy4KKyAqIFBhc3MgTlVMTCBmb3IgaGFzaGZuIHRv IHVzZSB0aGUgZGVmYXVsdCBoYXNoIChiYXNlZCBvbiBrZXkgdHlwZSksCisgKiBvciBOVUxMIGZv ciBtYXRjaGZuIHRvIHVzZSB0aGUgZGVmYXVsdCBtZW1jbXAtYmFzZWQgY29tcGFyaXNvbi4KKyAq LworI2RlZmluZSBoYXNoX21ha2VfZm4oZW50cnl0eXBlLCBrZXltZW1iZXIsIHRhYm5hbWUsIG5l bGVtLCBoYXNoZm4sIG1hdGNoZm4pIFwKKwloYXNoX21ha2VfZm5fY3h0KGVudHJ5dHlwZSwga2V5 bWVtYmVyLCB0YWJuYW1lLCBuZWxlbSwgaGFzaGZuLCBtYXRjaGZuLCBcCisJCQkJCSBDdXJyZW50 TWVtb3J5Q29udGV4dCkKKyNkZWZpbmUgaGFzaF9tYWtlX2ZuX2N4dChlbnRyeXR5cGUsIGtleW1l bWJlciwgdGFibmFtZSwgbmVsZW0sIGhhc2hmbiwgbWF0Y2hmbiwgbWN4dCkgXAorCShTdGF0aWNB c3NlcnRFeHByKG9mZnNldG9mKGVudHJ5dHlwZSwga2V5bWVtYmVyKSA9PSAwLCBcCisJCQkJCSAg I2tleW1lbWJlciAiIG11c3QgYmUgZmlyc3QgbWVtYmVyIGluICIgI2VudHJ5dHlwZSksIFwKKwkg aGFzaF9tYWtlX2ZuX2ltcGwoKHRhYm5hbWUpLCAobmVsZW0pLCBcCisJCQkJCSAgIHNpemVvZigo KGVudHJ5dHlwZSAqKTApLT5rZXltZW1iZXIpLCBcCisJCQkJCSAgIHNpemVvZihlbnRyeXR5cGUp LCBcCisJCQkJCSAgIEhBU0hfS0VZX0FTX1NUUklORyhlbnRyeXR5cGUsIGtleW1lbWJlciksIFwK KwkJCQkJICAgKGhhc2hmbiksIChtYXRjaGZuKSwgKG1jeHQpKSkKKworLyoKKyAqIEhhc2ggdGFi bGUgd2l0aCBleHRlbmRlZCBvcHRpb25zIHZpYSBIQVNIT1BUUyBzdHJ1Y3QuCisgKgorICogTGlr ZSBoYXNoX21ha2UsIGJ1dCBhY2NlcHRzIGFkZGl0aW9uYWwgb3B0aW9ucyB2aWEgSEFTSE9QVFMg c3RydWN0IHBvaW50ZXIuCisgKiBQYXNzIE5VTEwgZm9yIG9wdHMgdG8gdXNlIGFsbCBkZWZhdWx0 cy4KKyAqCisgKiBFeGFtcGxlIHVzYWdlOgorICogICBIQVNIT1BUUyBvcHRzID0gezB9OworICog ICBvcHRzLmhhc2ggPSBteV9oYXNoX2Z1bmM7CisgKiAgIG9wdHMubnVtX3BhcnRpdGlvbnMgPSAx NjsKKyAqICAgSFRBQiAqaCA9IGhhc2hfbWFrZV9leHQoTXlFbnRyeSwga2V5LCAibXkgdGFibGUi LCA2NCwgJm9wdHMpOworICovCisjZGVmaW5lIGhhc2hfbWFrZV9leHQoZW50cnl0eXBlLCBrZXlt ZW1iZXIsIHRhYm5hbWUsIG5lbGVtLCBvcHRzKSBcCisJaGFzaF9tYWtlX2V4dF9jeHQoZW50cnl0 eXBlLCBrZXltZW1iZXIsIHRhYm5hbWUsIG5lbGVtLCBvcHRzLCBDdXJyZW50TWVtb3J5Q29udGV4 dCkKKworI2RlZmluZSBoYXNoX21ha2VfZXh0X2N4dChlbnRyeXR5cGUsIGtleW1lbWJlciwgdGFi bmFtZSwgbmVsZW0sIG9wdHMsIG1jeHQpIFwKKwkoU3RhdGljQXNzZXJ0RXhwcihvZmZzZXRvZihl bnRyeXR5cGUsIGtleW1lbWJlcikgPT0gMCwgXAorCQkJCQkJICNrZXltZW1iZXIgIiBtdXN0IGJl IGZpcnN0IG1lbWJlciBpbiAiICNlbnRyeXR5cGUpLCBcCisJaGFzaF9tYWtlX2ltcGwoIFwKKwkJ KHRhYm5hbWUpLCAobmVsZW0pLCBcCisJCXNpemVvZigoKGVudHJ5dHlwZSAqKTApLT5rZXltZW1i ZXIpLCBcCisJCXNpemVvZihlbnRyeXR5cGUpLCBcCisJCUhBU0hfS0VZX0FTX1NUUklORyhlbnRy eXR5cGUsIGtleW1lbWJlciksIFwKKwkJKG9wdHMpLCBcCisJCShtY3h0KSkpCisKKworLyoKKyAq IENyZWF0ZSBhIGhhc2ggc2V0IHdoZXJlIHRoZSBlbnRpcmUgZW50cnkgaXMgdGhlIGtleS4gVGhp cyBpcworICogbGlrZSBoYXNoX21ha2UsIGJ1dCB3aGVyZSB0aGUga2V5IGlzIGFsc28gdGhlIGVu dHJ5LgorICovCisjZGVmaW5lIGhhc2hzZXRfbWFrZShlbnRyeXR5cGUsIHRhYm5hbWUsIG5lbGVt KSBcCisJaGFzaHNldF9tYWtlX2N4dChlbnRyeXR5cGUsIHRhYm5hbWUsIG5lbGVtLCBDdXJyZW50 TWVtb3J5Q29udGV4dCkKKyNkZWZpbmUgaGFzaHNldF9tYWtlX2N4dChlbnRyeXR5cGUsIHRhYm5h bWUsIG5lbGVtLCBtY3h0KSBcCisJaGFzaHNldF9tYWtlX2V4dF9jeHQoZW50cnl0eXBlLCB0YWJu YW1lLCBuZWxlbSwgTlVMTCwgbWN4dCkKKyNkZWZpbmUgaGFzaHNldF9tYWtlX2ZuKGVudHJ5dHlw ZSwgdGFibmFtZSwgbmVsZW0sIGhhc2hmbiwgbWF0Y2hmbikgXAorCWhhc2hzZXRfbWFrZV9mbl9j eHQoZW50cnl0eXBlLCB0YWJuYW1lLCBuZWxlbSwgaGFzaGZuLCBtYXRjaGZuLCBcCisJCQkJCQkJ Q3VycmVudE1lbW9yeUNvbnRleHQpCisjZGVmaW5lIGhhc2hzZXRfbWFrZV9mbl9jeHQoZW50cnl0 eXBlLCB0YWJuYW1lLCBuZWxlbSwgaGFzaGZuLCBtYXRjaGZuLCBtY3h0KSBcCisJaGFzaF9tYWtl X2ZuX2ltcGwoKHRhYm5hbWUpLCAobmVsZW0pLCBzaXplb2YoZW50cnl0eXBlKSwgc2l6ZW9mKGVu dHJ5dHlwZSksIFwKKwkJCQkJCSBIQVNIX1RZUEVfQVNfU1RSSU5HKGVudHJ5dHlwZSksIChoYXNo Zm4pLCAobWF0Y2hmbiksIFwKKwkJCQkJCSBtY3h0KQorI2RlZmluZSBoYXNoc2V0X21ha2VfZXh0 KGVudHJ5dHlwZSwgdGFibmFtZSwgbmVsZW0sIG9wdHMpIFwKKwloYXNoc2V0X21ha2VfZXh0X2N4 dChlbnRyeXR5cGUsIHRhYm5hbWUsIG5lbGVtLCBvcHRzLCBcCisJCQkJCQkJQ3VycmVudE1lbW9y eUNvbnRleHQpCisjZGVmaW5lIGhhc2hzZXRfbWFrZV9leHRfY3h0KGVudHJ5dHlwZSwgdGFibmFt ZSwgbmVsZW0sIG9wdHMsIG1jeHQpIFwKKwloYXNoX21ha2VfaW1wbCgodGFibmFtZSksIChuZWxl bSksIHNpemVvZihlbnRyeXR5cGUpLCBzaXplb2YoZW50cnl0eXBlKSwgXAorCQkJCSAgIEhBU0hf VFlQRV9BU19TVFJJTkcoZW50cnl0eXBlKSwgb3B0cywgKG1jeHQpKQorCisvKgorICogSW1wbGVt ZW50YXRpb24gZnVuY3Rpb24gZm9yIGhhc2hfbWFrZSBtYWNyb3MuIE5vdCBtZWFudCB0byBiZSBj YWxsZWQKKyAqIGRpcmVjdGx5LgorICoKKyAqIElmIHN0cmluZ19rZXkgaXMgdHJ1ZSwgdGhlIGtl eSBpcyB0cmVhdGVkIGFzIGEgbnVsbC10ZXJtaW5hdGVkIHN0cmluZy4KKyAqIFBhc3MgTlVMTCBm b3Igb3B0cyB0byB1c2UgYWxsIGRlZmF1bHRzLgorICovCitleHRlcm4gSFRBQiAqaGFzaF9tYWtl X2ltcGwoY29uc3QgY2hhciAqdGFibmFtZSwgaW50NjQgbmVsZW0sCisJCQkJCQkJU2l6ZSBrZXlz aXplLCBTaXplIGVudHJ5c2l6ZSwKKwkJCQkJCQlib29sIHN0cmluZ19rZXksCisJCQkJCQkJY29u c3QgSEFTSE9QVFMgKm9wdHMsCisJCQkJCQkJTWVtb3J5Q29udGV4dCBtY3h0KTsKKworLyoKKyAq IEltcGxlbWVudGF0aW9uIGZ1bmN0aW9uIGZvciBoYXNoX21ha2VfZm4gbWFjcm9zLgorICovCitl eHRlcm4gSFRBQiAqaGFzaF9tYWtlX2ZuX2ltcGwoY29uc3QgY2hhciAqdGFibmFtZSwgaW50NjQg bmVsZW0sCisJCQkJCQkJICAgU2l6ZSBrZXlzaXplLCBTaXplIGVudHJ5c2l6ZSwgYm9vbCBzdHJp bmdfa2V5LAorCQkJCQkJCSAgIEhhc2hWYWx1ZUZ1bmMgaGFzaGZuLCBIYXNoQ29tcGFyZUZ1bmMg bWF0Y2hmbiwKKwkJCQkJCQkgICBNZW1vcnlDb250ZXh0IG1jeHQpOworCiAvKgogICogSEFTSEVM RU1FTlQgaXMgdGhlIHByaXZhdGUgcGFydCBvZiBhIGhhc2h0YWJsZSBlbnRyeS4gIFRoZSBjYWxs ZXIncyBkYXRhCiAgKiBmb2xsb3dzIHRoZSBIQVNIRUxFTUVOVCBzdHJ1Y3R1cmUgKG9uIGEgTUFY QUxJR04nZCBib3VuZGFyeSkuICBUaGUgaGFzaCBrZXkKQEAgLTU3LDExICsyMDQsMTEgQEAgdHlw ZWRlZiBzdHJ1Y3QgSEFTSEVMRU1FTlQKIC8qIEhhc2ggdGFibGUgaGVhZGVyIHN0cnVjdCBpcyBh biBvcGFxdWUgdHlwZSBrbm93biBvbmx5IHdpdGhpbiBkeW5haGFzaC5jICovCiB0eXBlZGVmIHN0 cnVjdCBIQVNISERSIEhBU0hIRFI7CiAKLS8qIEhhc2ggdGFibGUgY29udHJvbCBzdHJ1Y3QgaXMg YW4gb3BhcXVlIHR5cGUga25vd24gb25seSB3aXRoaW4gZHluYWhhc2guYyAqLwotdHlwZWRlZiBz dHJ1Y3QgSFRBQiBIVEFCOwotCi0vKiBQYXJhbWV0ZXIgZGF0YSBzdHJ1Y3R1cmUgZm9yIGhhc2hf Y3JlYXRlICovCi0vKiBPbmx5IHRob3NlIGZpZWxkcyBpbmRpY2F0ZWQgYnkgaGFzaF9mbGFncyBu ZWVkIGJlIHNldCAqLworLyoKKyAqIFBhcmFtZXRlciBkYXRhIHN0cnVjdHVyZSBmb3IgaGFzaF9j cmVhdGUgKHdoaWNoIGlzIHRoZSBsb3ctbGV2ZWwgbWV0aG9kIG9mCisgKiBpbml0aWFsaXppbmcg aGFzaCB0YWJsZXMsIGhhc2hfbWFrZSBtYWNyb3MgYXJlIHByZWZlcnJlZCkKKyAqIE9ubHkgdGhv c2UgZmllbGRzIGluZGljYXRlZCBieSBoYXNoX2ZsYWdzIG5lZWQgYmUgc2V0CisgKi8KIHR5cGVk ZWYgc3RydWN0IEhBU0hDVEwKIHsKIAkvKiBVc2VkIGlmIEhBU0hfUEFSVElUSU9OIGZsYWcgaXMg c2V0OiAqLwpAQCAtMTMxLDYgKzI3OCw5IEBAIHR5cGVkZWYgc3RydWN0CiAgKi8KIGV4dGVybiBI VEFCICpoYXNoX2NyZWF0ZShjb25zdCBjaGFyICp0YWJuYW1lLCBpbnQ2NCBuZWxlbSwKIAkJCQkJ CSBjb25zdCBIQVNIQ1RMICppbmZvLCBpbnQgZmxhZ3MpOworZXh0ZXJuIHZvaWQgaGFzaF9vcHRz X2luaXQoSEFTSENUTCAqY3RsLCBpbnQgKmZsYWdzLAorCQkJCQkJICAgU2l6ZSBrZXlzaXplLCBT aXplIGVudHJ5c2l6ZSwgYm9vbCBzdHJpbmdfa2V5LAorCQkJCQkJICAgY29uc3QgSEFTSE9QVFMg Km9wdHMpOwogZXh0ZXJuIHZvaWQgaGFzaF9kZXN0cm95KEhUQUIgKmhhc2hwKTsKIGV4dGVybiB2 b2lkIGhhc2hfc3RhdHMoY29uc3QgY2hhciAqY2FsbGVyLCBIVEFCICpoYXNocCk7CiBleHRlcm4g dm9pZCAqaGFzaF9zZWFyY2goSFRBQiAqaGFzaHAsIGNvbnN0IHZvaWQgKmtleVB0ciwgSEFTSEFD VElPTiBhY3Rpb24sCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlz dCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDA5ZTdmMWQ0MjBlLi5m N2ZiODRlMTg1MyAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QK KysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTExNTUsNiArMTE1NSw3 IEBAIEhBU0hCVUNLRVQKIEhBU0hDVEwKIEhBU0hFTEVNRU5UCiBIQVNISERSCitIQVNIT1BUUwog SEFTSFNFR01FTlQKIEhBU0hfU0VRX1NUQVRVUwogSEUKCmJhc2UtY29tbWl0OiBlNWE1ZTBhOTA3 NTBkNjY1Y2FiNDE3MzIyYjlmODVjODA2NDMwZDg1Ci0tIAoyLjUyLjAKCg== --cff217dca48da7654d3c859f55554fe6e9047c1de32e45e5c1333ff31462 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v4-0002-Add-foreach_hash-macro.patch Content-Type: text/x-patch; charset=utf-8; name=v4-0002-Add-foreach_hash-macro.patch RnJvbSBiOGRkYjcwZWE3MGRjY2VlN2YwZWNmZTZjNDI1YTczYTkxOWM3YmNmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBUaHUsIDQgRGVjIDIwMjUgMTU6Mzk6MDAgKzAxMDAKU3ViamVjdDogW1BBVENIIHY0 IDIvNV0gQWRkIGZvcmVhY2hfaGFzaCBtYWNybwoKRm9yIGxpc3RzIHdlJ3ZlIGhhZCBhIG5ldyBm b3JlYWNoIHN0eWxlIG1hY3JvcyBzaW5jZSAxNGRkMGYyN2Q3LiBUaGlzCmFkZHMgYSBzaW1pbGFy IG1hY3JvIGZvciBoYXNoIHRhYmxlcy4gVGhpcyBuZXcgZm9yZWFjaF9oYXNoIG1hY3JvIG1ha2Vz Cml0ZXJhdGluZyBvdmVyIHRoZSBpdGVtcyBpbiBhbiBIVEFCIGFzIHNpbXBsZSBhcyBpdGVyYXRp bmcgb3ZlciB0aGUKaXRlbXMgaW4gYSBMaXN0LiBUaGUgb25seSBhZGRpdGlvbmFsIHRoaW5nIHRv IGtlZXAgaW4gbWluZCBpcyB0aGF0IHdoZW4KZXhpdGluZyB0aGUgbG9vcCBlYXJseSB5b3UgbmVl ZCB0byBjYWxsIGZvcmVhY2hfaGFzaF90ZXJtLgotLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2hhc2gv ZHluYWhhc2guYyB8IDE1ICsrKysrKysrKy0KIHNyYy9pbmNsdWRlL3V0aWxzL2hzZWFyY2guaCAg ICAgICB8IDQ2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdl ZCwgNjAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL2hhc2gvZHluYWhhc2guYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2hhc2gvZHluYWhh c2guYwppbmRleCBjMGZhYWFmNjFkYS4uMjlmYzhmNDYwYmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL2hhc2gvZHluYWhhc2guYworKysgYi9zcmMvYmFja2VuZC91dGlscy9oYXNoL2R5 bmFoYXNoLmMKQEAgLTE0NjIsNyArMTQ2Miw3IEBAIGhhc2hfZ2V0X251bV9lbnRyaWVzKEhUQUIg Kmhhc2hwKQogfQogCiAvKgotICogaGFzaF9zZXFfaW5pdC9fc2VhcmNoL190ZXJtCisgKiBoYXNo X3NlcV9pbml0L19uZXcvX3NlYXJjaC9fdGVybQogICoJCQlTZXF1ZW50aWFsbHkgc2VhcmNoIHRo cm91Z2ggaGFzaCB0YWJsZSBhbmQgcmV0dXJuCiAgKgkJCWFsbCB0aGUgZWxlbWVudHMgb25lIGJ5 IG9uZSwgcmV0dXJuIE5VTEwgd2hlbiBubyBtb3JlLgogICoKQEAgLTE0OTYsNiArMTQ5NiwxOSBA QCBoYXNoX3NlcV9pbml0KEhBU0hfU0VRX1NUQVRVUyAqc3RhdHVzLCBIVEFCICpoYXNocCkKIAkJ cmVnaXN0ZXJfc2VxX3NjYW4oaGFzaHApOwogfQogCisvKgorICogU2FtZSBhcyBoYXNoX3NlcV9p bml0KCksIGJ1dCByZXR1cm5zIHRoZSBzdGF0dXMgc3RydWN0IGluc3RlYWQgb2YgdGFraW5nIGEK KyAqIHBvaW50ZXIuCisgKi8KK0hBU0hfU0VRX1NUQVRVUworaGFzaF9zZXFfbmV3KEhUQUIgKmhh c2hwKQoreworCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7CisKKwloYXNoX3NlcV9pbml0KCZzdGF0 dXMsIGhhc2hwKTsKKwlyZXR1cm4gc3RhdHVzOworfQorCiAvKgogICogU2FtZSBhcyBhYm92ZSBi dXQgc2NhbiBieSB0aGUgZ2l2ZW4gaGFzaCB2YWx1ZS4KICAqIFNlZSBhbHNvIGhhc2hfc2VxX3Nl YXJjaCgpLgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvaHNlYXJjaC5oIGIvc3JjL2lu Y2x1ZGUvdXRpbHMvaHNlYXJjaC5oCmluZGV4IDlkNzZjZmNlNDFmLi5lYjI4NzRmMmFmZiAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvaHNlYXJjaC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0 aWxzL2hzZWFyY2guaApAQCAtMjczLDYgKzI3Myw1MSBAQCB0eXBlZGVmIHN0cnVjdAogCXVpbnQz MgkJaGFzaHZhbHVlOwkJLyogaGFzaHZhbHVlIHRvIHN0YXJ0IHNlcXNjYW4gb3ZlciBoYXNoICov CiB9IEhBU0hfU0VRX1NUQVRVUzsKIAorLyoKKyAqIGZvcmVhY2hfaGFzaCAtIGl0ZXJhdGUgb3Zl ciBhbGwgZW50cmllcyBpbiBhIGhhc2ggdGFibGUKKyAqCisgKiBUaGlzIG1hY3JvIHNpbXBsaWZp ZXMgaGFzaCB0YWJsZSBpdGVyYXRpb24gYnkgY29tYmluaW5nIGhhc2hfc2VxX2luaXQKKyAqIGFu ZCBoYXNoX3NlcV9zZWFyY2ggaW50byBhIHNpbmdsZSBmb3ItbG9vcCBjb25zdHJ1Y3QuCisgKgor ICogVXNhZ2U6CisgKiAgIGZvcmVhY2hfaGFzaChNeUVudHJ5LCBlbnRyeSwgbXlfaGFzaHRhYmxl KQorICogICB7CisgKiAgICAgICAvLyB1c2UgZW50cnkKKyAqICAgfQorICoKKyAqIFRoaXMgcmVw bGFjZXMgdGhlIG1vcmUgdmVyYm9zZSBwYXR0ZXJuOgorICogICBIQVNIX1NFUV9TVEFUVVMgc3Rh dHVzOworICogICBNeUVudHJ5ICplbnRyeTsKKyAqICAgaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBt eV9oYXNodGFibGUpOworICogICB3aGlsZSAoKGVudHJ5ID0gKE15RW50cnkgKikgaGFzaF9zZXFf c2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorICogICB7CisgKiAgICAgICAvLyB1c2UgZW50cnkK KyAqICAgfQorICoKKyAqIEZvciBlYXJseSB0ZXJtaW5hdGlvbiwgdXNlIGZvcmVhY2hfaGFzaF90 ZXJtKCkgYmVmb3JlIGJyZWFrOgorICogICBmb3JlYWNoX2hhc2goTXlFbnRyeSwgZW50cnksIG15 X2hhc2h0YWJsZSkKKyAqICAgeworICogICAgICAgaWYgKGZvdW5kX2l0KQorICogICAgICAgewor ICogICAgICAgICAgIGZvcmVhY2hfaGFzaF90ZXJtKGVudHJ5KTsKKyAqICAgICAgICAgICBicmVh azsKKyAqICAgICAgIH0KKyAqICAgfQorICovCisjZGVmaW5lIGZvcmVhY2hfaGFzaCh0eXBlLCB2 YXIsIGh0YWIpIFwKKwlmb3IgKHR5cGUgKnZhciA9IDAsICp2YXIjI19fb3V0ZXJsb29wID0gKHR5 cGUgKikgMTsgXAorCQkgdmFyIyNfX291dGVybG9vcDsgXAorCQkgdmFyIyNfX291dGVybG9vcCA9 IDApIFwKKwkJZm9yIChIQVNIX1NFUV9TVEFUVVMgdmFyIyNfX3N0YXR1cyA9IGhhc2hfc2VxX25l dyhodGFiKTsgXAorCQkJICh2YXIgPSAodHlwZSAqKSBoYXNoX3NlcV9zZWFyY2goJnZhciMjX19z dGF0dXMpKSAhPSBOVUxMOyApCisKKy8qCisgKiBmb3JlYWNoX2hhc2hfdGVybSAtIHRlcm1pbmF0 ZSBhIGZvcmVhY2hfaGFzaCBsb29wIGVhcmx5CisgKgorICogQ2FsbCB0aGlzIGJlZm9yZSAnYnJl YWsnIHRvIHByb3Blcmx5IGNsZWFuIHVwIHRoZSBoYXNoIHNjYW4uCisgKi8KKyNkZWZpbmUgZm9y ZWFjaF9oYXNoX3Rlcm0odmFyKSBoYXNoX3NlcV90ZXJtKCZ2YXIjI19fc3RhdHVzKQorCiAvKgog ICogcHJvdG90eXBlcyBmb3IgZnVuY3Rpb25zIGluIGR5bmFoYXNoLmMKICAqLwpAQCAtMjkzLDYg KzMzOCw3IEBAIGV4dGVybiBib29sIGhhc2hfdXBkYXRlX2hhc2hfa2V5KEhUQUIgKmhhc2hwLCB2 b2lkICpleGlzdGluZ0VudHJ5LAogCQkJCQkJCQkgY29uc3Qgdm9pZCAqbmV3S2V5UHRyKTsKIGV4 dGVybiBpbnQ2NCBoYXNoX2dldF9udW1fZW50cmllcyhIVEFCICpoYXNocCk7CiBleHRlcm4gdm9p ZCBoYXNoX3NlcV9pbml0KEhBU0hfU0VRX1NUQVRVUyAqc3RhdHVzLCBIVEFCICpoYXNocCk7Citl eHRlcm4gSEFTSF9TRVFfU1RBVFVTIGhhc2hfc2VxX25ldyhIVEFCICpoYXNocCk7CiBleHRlcm4g dm9pZCBoYXNoX3NlcV9pbml0X3dpdGhfaGFzaF92YWx1ZShIQVNIX1NFUV9TVEFUVVMgKnN0YXR1 cywKIAkJCQkJCQkJCQkgIEhUQUIgKmhhc2hwLAogCQkJCQkJCQkJCSAgdWludDMyIGhhc2h2YWx1 ZSk7Ci0tIAoyLjUyLjAKCg== --cff217dca48da7654d3c859f55554fe6e9047c1de32e45e5c1333ff31462 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v4-0003-Use-hash_make-macros-throughout-the-codebase.patch Content-Type: text/x-patch; charset=utf-8; name=v4-0003-Use-hash_make-macros-throughout-the-codebase.patch RnJvbSBhY2JlMTk1NTZjZTMyZGM5NzBjZGYwYTQzYzhiM2VmMmE5Njc3OGM0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBUaHUsIDQgRGVjIDIwMjUgMTU6MzY6MTkgKzAxMDAKU3ViamVjdDogW1BBVENIIHY0 IDMvNV0gVXNlIGhhc2hfbWFrZSBtYWNyb3MgdGhyb3VnaG91dCB0aGUgY29kZWJhc2UKClRoaXMg c2hvd3MgaG93IG91ciBjb2RlIGJhc2UgbG9va3Mgd2hlbiB1c2luZyB0aGUgbmV3IEFQSXMuIFRo aXMgaGFzCnNvbWUgdHlwZXNhZmV0eSwgcmVhZGFiaWxpdHkgYW5kIG1haW50YW5hYmlsaXR5IGJl bmVmaXRzLCBidXQgaXQgYWxzbwppbnRyb2R1Y2VzIHNvbWUgYmFja3BhdGNoaW5nIHByb2JsZW1z LiBUaGVzZSBiYWNrcGF0Y2hpbmcgcHJvYmxlbXMKY2Fubm90IGJlIHJlc29sdmVkIGJ5IGJhY2tw b3J0aW5nIHRoZSBuZXcgaGFzaF9tYWtlIG1hY3JvcywgYmVjYXVzZSBzb21lCm9mIHRoZW0gcmVx dWlyZSBDMTEgKHdoaWNoIHdlIG9ubHkgcmVxdWlyZSBvbiBtYXN0ZXIgZm9yIG5vdykuIEkgdGhp bmsKaXQncyB1bmxpa2VseSB0aGF0IHdlJ2xsIG5lZWQgdG8gYmFja3BhdGNoIHRoaW5ncyBpbiBj b2RlIHRoYXQgY3JlYXRlcwpoYXNodGFibGVzIHRob3VnaCwgc28gaXQgY291bGQgc3RpbGwgYmUg d29ydGggaXQgdG8gZG8gdGhpcyBjb21wbGV0ZQpyZWZhY3Rvci4KCkF0IHRoZSB2ZXJ5IGxlYXN0 IHdlIHNob3VsZCBjaG9vc2UgYSBmZXcgcGxhY2VzIHdoZXJlIHdlIHVzZSB0aGUgbmV3Cm1hY3Jv cyB0byBtYWtlIHN1cmUgdGhleSBoYXZlIGNvdmVyYWdlLgotLS0KIGNvbnRyaWIvZGJsaW5rL2Ri bGluay5jICAgICAgICAgICAgICAgICAgICAgICB8IDEwICstLQogLi4uL3BnX3N0YXRfc3RhdGVt ZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYyAgIHwgMTAgKy0tCiBjb250cmliL3BnX3RyZ20vdHJn bV9yZWdleHAuYyAgICAgICAgICAgICAgICAgfCAgOSArLS0KIGNvbnRyaWIvcG9zdGdyZXNfZmR3 L2Nvbm5lY3Rpb24uYyAgICAgICAgICAgICB8IDEwICstLQogY29udHJpYi9wb3N0Z3Jlc19mZHcv c2hpcHBhYmxlLmMgICAgICAgICAgICAgIHwgMTAgKystCiBjb250cmliL3RhYmxlZnVuYy90YWJs ZWZ1bmMuYyAgICAgICAgICAgICAgICAgfCAxNyArKy0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2Nv bW1vbi9oZWFwdHVwbGUuYyAgICAgICAgIHwgMTMgKy0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2dp c3QvZ2lzdGJ1aWxkLmMgICAgICAgICAgIHwgMTEgKy0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2dp c3QvZ2lzdGJ1aWxkYnVmZmVycy5jICAgIHwgMTAgKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGFz aC9oYXNocGFnZS5jICAgICAgICAgICAgfCAxMyArLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9yZXdyaXRlaGVhcC5jICAgICAgICAgfCAzOSArKysrLS0tLS0tLQogc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0veGxvZ3ByZWZldGNoZXIuYyAgIHwgIDggKy0tCiBzcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS94bG9ndXRpbHMuYyAgICAgICAgfCAxMyArKy0tCiBzcmMvYmFja2VuZC9jYXRh bG9nL3BnX2VudW0uYyAgICAgICAgICAgICAgICAgfCAyNCArKy0tLS0tCiBzcmMvYmFja2VuZC9j YXRhbG9nL3BnX2luaGVyaXRzLmMgICAgICAgICAgICAgfCAxMSArLS0tCiBzcmMvYmFja2VuZC9j YXRhbG9nL3N0b3JhZ2UuYyAgICAgICAgICAgICAgICAgfCAyMSArKy0tLS0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL2FzeW5jLmMgICAgICAgICAgICAgICAgICB8IDE0ICsrLS0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL3ByZXBhcmUuYyAgICAgICAgICAgICAgICB8IDEyICstLS0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL3NlcXVlbmNlLmMgICAgICAgICAgICAgICB8IDEwICstLQogc3JjL2JhY2tlbmQv Y29tbWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAgICAgIHwgMTYgKy0tLS0KIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jICAgICAgICB8IDEwICstLQogc3JjL2JhY2tlbmQv bm9kZXMvZXh0ZW5zaWJsZS5jICAgICAgICAgICAgICAgIHwgMTAgKy0tCiBzcmMvYmFja2VuZC9v cHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMgICAgICAgICAgfCAxNyArKy0tLQogc3JjL2JhY2tlbmQv b3B0aW1pemVyL3V0aWwvcHJlZHRlc3QuYyAgICAgICAgIHwgIDkgKy0tCiBzcmMvYmFja2VuZC9v cHRpbWl6ZXIvdXRpbC9yZWxub2RlLmMgICAgICAgICAgfCAxMyArLS0tCiBzcmMvYmFja2VuZC9w YXJzZXIvcGFyc2Vfb3Blci5jICAgICAgICAgICAgICAgfCAxMCArKy0KIHNyYy9iYWNrZW5kL3Bh cnRpdGlvbmluZy9wYXJ0ZGVzYy5jICAgICAgICAgICB8ICA5ICstLQogc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci9hdXRvdmFjdXVtLmMgICAgICAgICAgIHwgMjIgKystLS0tLQogc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYyAgICAgICAgIHwgMTIgKy0tLQogLi4uL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jIHwgMTMgKy0tLQogc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jICAgIHwgMjIgKystLS0tLQogLi4uL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jICAgICAgIHwgMjkgKystLS0tLS0KIHNyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgICB8IDEwICsrLQogc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyAgIHwgMTEgKy0tLQogc3JjL2Jh Y2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmX3RhYmxlLmMgICAgICAgIHwgMTUgKystLS0KIHNyYy9i YWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jICAgICAgICAgICB8IDExICsrLS0KIHNyYy9i YWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2xvY2FsYnVmLmMgICAgICAgICB8IDExICstLS0KIHNyYy9i YWNrZW5kL3N0b3JhZ2UvZmlsZS9yZWluaXQuYyAgICAgICAgICAgICB8ICA4ICstLQogc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYyAgICAgICAgICAgICAgIHwgMzMgKysrKysrKy0tLQog c3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jICAgICAgICAgICAgIHwgMjAgKystLS0t CiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG9jay5jICAgICAgICAgICAgICAgfCA1NSArKysr Ky0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2NrLmMgICAgICAgICAg ICAgfCAgOCArLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYyAgICAgICAg ICB8IDY2ICsrKysrKysrLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2Uvc21nci9zbWdy LmMgICAgICAgICAgICAgICB8IDEwICsrLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9zeW5jL3N5bmMu YyAgICAgICAgICAgICAgIHwgMTEgKy0tLQogc3JjL2JhY2tlbmQvdHNlYXJjaC90c190eXBhbmFs eXplLmMgICAgICAgICAgIHwgMTMgKy0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2Fp dF9ldmVudC5jICAgICAgIHwgMjMgKysrLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5 X3R5cGFuYWx5emUuYyAgICAgIHwgMjMgKystLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pz b24uYyAgICAgICAgICAgICAgICAgIHwgMTUgKy0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9q c29uZnVuY3MuYyAgICAgICAgICAgICB8IDIwICsrLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L21jeHRmdW5jcy5jICAgICAgICAgICAgIHwgMTEgKy0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3JpX3RyaWdnZXJzLmMgICAgICAgICAgIHwgMjkgKysrKy0tLS0KIHNyYy9iYWNrZW5kL3V0aWxz L2FkdC9ydWxldXRpbHMuYyAgICAgICAgICAgICB8IDIzICsrLS0tLS0KIHNyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL2F0dG9wdGNhY2hlLmMgICAgICAgICB8IDE2ICsrLS0tCiBzcmMvYmFja2VuZC91 dGlscy9jYWNoZS9ldnRjYWNoZS5jICAgICAgICAgICAgfCAgOSArLS0KIHNyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL2Z1bmNjYWNoZS5jICAgICAgICAgICB8IDE0ICsrLS0KIHNyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL3JlbGNhY2hlLmMgICAgICAgICAgICB8IDE5ICsrLS0tLQogc3JjL2JhY2tlbmQv dXRpbHMvY2FjaGUvcmVsZmlsZW51bWJlcm1hcC5jICAgIHwgIDkgKy0tCiBzcmMvYmFja2VuZC91 dGlscy9jYWNoZS9zcGNjYWNoZS5jICAgICAgICAgICAgfCAgOSArLS0KIHNyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL3RzX2NhY2hlLmMgICAgICAgICAgICB8IDI3ICsrKy0tLS0tCiBzcmMvYmFja2Vu ZC91dGlscy9jYWNoZS90eXBjYWNoZS5jICAgICAgICAgICAgfCAzMyArKysrLS0tLS0tCiBzcmMv YmFja2VuZC91dGlscy9mbWdyL2RmbWdyLmMgICAgICAgICAgICAgICAgfCAxMiArKy0tCiBzcmMv YmFja2VuZC91dGlscy9mbWdyL2ZtZ3IuYyAgICAgICAgICAgICAgICAgfCAxMSArLS0tCiBzcmMv YmFja2VuZC91dGlscy9taXNjL2d1Yy5jICAgICAgICAgICAgICAgICAgfCAxNCArKy0tCiBzcmMv YmFja2VuZC91dGlscy9taXNjL2luamVjdGlvbl9wb2ludC5jICAgICAgfCAxNCArKy0tCiBzcmMv YmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jICAgICAgICAgICAgfCAxMCArLS0KIHNyYy9i YWNrZW5kL3V0aWxzL3RpbWUvY29tYm9jaWQuYyAgICAgICAgICAgICB8IDEzICstLS0KIHNyYy9w bC9wbHBlcmwvcGxwZXJsLmMgICAgICAgICAgICAgICAgICAgICAgICB8IDMyICsrKy0tLS0tLQog c3JjL3BsL3BscGdzcWwvc3JjL3BsX2V4ZWMuYyAgICAgICAgICAgICAgICAgIHwgMzIgKysrKy0t LS0tCiBzcmMvcGwvcGxweXRob24vcGxweV9wbHB5bW9kdWxlLmMgICAgICAgICAgICAgfCAgOSAr Ky0KIHNyYy9wbC9wbHB5dGhvbi9wbHB5X3Byb2NlZHVyZS5jICAgICAgICAgICAgICB8ICA5ICst LQogc3JjL3BsL3RjbC9wbHRjbC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTkgKyst LS0tCiBzcmMvdGltZXpvbmUvcGd0ei5jICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMiAr LS0tCiA3MyBmaWxlcyBjaGFuZ2VkLCAzNzEgaW5zZXJ0aW9ucygrKSwgODM1IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvZGJsaW5rL2RibGluay5jIGIvY29udHJpYi9kYmxpbmsv ZGJsaW5rLmMKaW5kZXggOGNiMzE2NjQ5NWMuLjE5MjQxOGRmNGFmIDEwMDY0NAotLS0gYS9jb250 cmliL2RibGluay9kYmxpbmsuYworKysgYi9jb250cmliL2RibGluay9kYmxpbmsuYwpAQCAtMjU0 MCwxMyArMjU0MCw5IEBAIGdldENvbm5lY3Rpb25CeU5hbWUoY29uc3QgY2hhciAqbmFtZSkKIHN0 YXRpYyBIVEFCICoKIGNyZWF0ZUNvbm5IYXNoKHZvaWQpCiB7Ci0JSEFTSENUTAkJY3RsOwotCi0J Y3RsLmtleXNpemUgPSBOQU1FREFUQUxFTjsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9mKHJlbW90 ZUNvbm5IYXNoRW50KTsKLQotCXJldHVybiBoYXNoX2NyZWF0ZSgiUmVtb3RlIENvbiBoYXNoIiwg TlVNQ09OTiwgJmN0bCwKLQkJCQkJICAgSEFTSF9FTEVNIHwgSEFTSF9TVFJJTkdTKTsKKwlyZXR1 cm4gaGFzaF9tYWtlX2N4dChyZW1vdGVDb25uSGFzaEVudCwgbmFtZSwKKwkJCQkJCSAiUmVtb3Rl IENvbiBoYXNoIiwgTlVNQ09OTiwKKwkJCQkJCSBUb3BNZW1vcnlDb250ZXh0KTsKIH0KIAogc3Rh dGljIHJlbW90ZUNvbm4gKgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMv cGdfc3RhdF9zdGF0ZW1lbnRzLmMgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0 X3N0YXRlbWVudHMuYwppbmRleCBhZGM0OTNlOTg1MC4uNDcyMjdmODU3MjEgMTAwNjQ0Ci0tLSBh L2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jCisrKyBiL2Nv bnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jCkBAIC01MTcsNyAr NTE3LDYgQEAgc3RhdGljIHZvaWQKIHBnc3Nfc2htZW1fc3RhcnR1cCh2b2lkKQogewogCWJvb2wJ CWZvdW5kOwotCUhBU0hDVEwJCWluZm87CiAJRklMRQkgICAqZmlsZSA9IE5VTEw7CiAJRklMRQkg ICAqcWZpbGUgPSBOVUxMOwogCXVpbnQzMgkJaGVhZGVyOwpAQCAtNTU3LDEyICs1NTYsOSBAQCBw Z3NzX3NobWVtX3N0YXJ0dXAodm9pZCkKIAkJcGdzcy0+c3RhdHMuc3RhdHNfcmVzZXQgPSBHZXRD dXJyZW50VGltZXN0YW1wKCk7CiAJfQogCi0JaW5mby5rZXlzaXplID0gc2l6ZW9mKHBnc3NIYXNo S2V5KTsKLQlpbmZvLmVudHJ5c2l6ZSA9IHNpemVvZihwZ3NzRW50cnkpOwotCXBnc3NfaGFzaCA9 IFNobWVtSW5pdEhhc2goInBnX3N0YXRfc3RhdGVtZW50cyBoYXNoIiwKLQkJCQkJCQkgIHBnc3Nf bWF4LCBwZ3NzX21heCwKLQkJCQkJCQkgICZpbmZvLAotCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFT SF9CTE9CUyk7CisJcGdzc19oYXNoID0gc2htZW1faGFzaF9tYWtlKHBnc3NFbnRyeSwga2V5LAor CQkJCQkJCQkicGdfc3RhdF9zdGF0ZW1lbnRzIGhhc2giLAorCQkJCQkJCQlwZ3NzX21heCwgcGdz c19tYXgpOwogCiAJTFdMb2NrUmVsZWFzZShBZGRpblNobWVtSW5pdExvY2spOwogCmRpZmYgLS1n aXQgYS9jb250cmliL3BnX3RyZ20vdHJnbV9yZWdleHAuYyBiL2NvbnRyaWIvcGdfdHJnbS90cmdt X3JlZ2V4cC5jCmluZGV4IDFkMWI1ZmUzMDRkLi5lY2Q0ZDY3Nzk0OCAxMDA2NDQKLS0tIGEvY29u dHJpYi9wZ190cmdtL3RyZ21fcmVnZXhwLmMKKysrIGIvY29udHJpYi9wZ190cmdtL3RyZ21fcmVn ZXhwLmMKQEAgLTg5Myw3ICs4OTMsNiBAQCBjb252ZXJ0UGdXY2hhcihwZ193Y2hhciBjLCB0cmdt X21iX2NoYXIgKnJlc3VsdCkKIHN0YXRpYyB2b2lkCiB0cmFuc2Zvcm1HcmFwaChUcmdtTkZBICp0 cmdtTkZBKQogewotCUhBU0hDVEwJCWhhc2hDdGw7CiAJVHJnbVN0YXRlS2V5IGluaXRrZXk7CiAJ VHJnbVN0YXRlICAqaW5pdHN0YXRlOwogCUxpc3RDZWxsICAgKmxjOwpAQCAtOTA1LDEzICs5MDQs NyBAQCB0cmFuc2Zvcm1HcmFwaChUcmdtTkZBICp0cmdtTkZBKQogCXRyZ21ORkEtPm92ZXJmbG93 ZWQgPSBmYWxzZTsKIAogCS8qIENyZWF0ZSBoYXNodGFibGUgZm9yIHN0YXRlcyAqLwotCWhhc2hD dGwua2V5c2l6ZSA9IHNpemVvZihUcmdtU3RhdGVLZXkpOwotCWhhc2hDdGwuZW50cnlzaXplID0g c2l6ZW9mKFRyZ21TdGF0ZSk7Ci0JaGFzaEN0bC5oY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7 Ci0JdHJnbU5GQS0+c3RhdGVzID0gaGFzaF9jcmVhdGUoIlRyaWdyYW0gTkZBIiwKLQkJCQkJCQkJ ICAxMDI0LAotCQkJCQkJCQkgICZoYXNoQ3RsLAotCQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hf QkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCXRyZ21ORkEtPnN0YXRlcyA9IGhhc2hfbWFrZShUcmdt U3RhdGUsIHN0YXRlS2V5LCAiVHJpZ3JhbSBORkEiLCAxMDI0KTsKIAl0cmdtTkZBLT5uc3RhdGVz ID0gMDsKIAogCS8qIENyZWF0ZSBpbml0aWFsIHN0YXRlOiBhbWJpZ3VvdXMgcHJlZml4LCBORkEn cyBpbml0aWFsIHN0YXRlICovCmRpZmYgLS1naXQgYS9jb250cmliL3Bvc3RncmVzX2Zkdy9jb25u ZWN0aW9uLmMgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9jb25uZWN0aW9uLmMKaW5kZXggNDg3YTFh MjMxNzAuLjVjNzdjOWVjZGU1IDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9jb25u ZWN0aW9uLmMKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvY29ubmVjdGlvbi5jCkBAIC0yMTQs MTcgKzIxNCwxMyBAQCBHZXRDb25uZWN0aW9uKFVzZXJNYXBwaW5nICp1c2VyLCBib29sIHdpbGxf cHJlcF9zdG10LCBQZ0Zkd0Nvbm5TdGF0ZSAqKnN0YXRlKQogCS8qIEZpcnN0IHRpbWUgdGhyb3Vn aCwgaW5pdGlhbGl6ZSBjb25uZWN0aW9uIGNhY2hlIGhhc2h0YWJsZSAqLwogCWlmIChDb25uZWN0 aW9uSGFzaCA9PSBOVUxMKQogCXsKLQkJSEFTSENUTAkJY3RsOwotCiAJCWlmIChwZ2Zkd193ZV9n ZXRfcmVzdWx0ID09IDApCiAJCQlwZ2Zkd193ZV9nZXRfcmVzdWx0ID0KIAkJCQlXYWl0RXZlbnRF eHRlbnNpb25OZXcoIlBvc3RncmVzRmR3R2V0UmVzdWx0Iik7CiAKLQkJY3RsLmtleXNpemUgPSBz aXplb2YoQ29ubkNhY2hlS2V5KTsKLQkJY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihDb25uQ2FjaGVF bnRyeSk7Ci0JCUNvbm5lY3Rpb25IYXNoID0gaGFzaF9jcmVhdGUoInBvc3RncmVzX2ZkdyBjb25u ZWN0aW9ucyIsIDgsCi0JCQkJCQkJCQkgJmN0bCwKLQkJCQkJCQkJCSBIQVNIX0VMRU0gfCBIQVNI X0JMT0JTKTsKKwkJQ29ubmVjdGlvbkhhc2ggPSBoYXNoX21ha2VfY3h0KENvbm5DYWNoZUVudHJ5 LCBrZXksCisJCQkJCQkJCQkgICAicG9zdGdyZXNfZmR3IGNvbm5lY3Rpb25zIiwgOCwKKwkJCQkJ CQkJCSAgIFRvcE1lbW9yeUNvbnRleHQpOwogCiAJCS8qCiAJCSAqIFJlZ2lzdGVyIHNvbWUgY2Fs bGJhY2sgZnVuY3Rpb25zIHRoYXQgbWFuYWdlIGNvbm5lY3Rpb24gY2xlYW51cC4KZGlmZiAtLWdp dCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3NoaXBwYWJsZS5jIGIvY29udHJpYi9wb3N0Z3Jlc19m ZHcvc2hpcHBhYmxlLmMKaW5kZXggZDMyZDNkMGU0NjEuLmVjMTg1MjQ5MGUwIDEwMDY0NAotLS0g YS9jb250cmliL3Bvc3RncmVzX2Zkdy9zaGlwcGFibGUuYworKysgYi9jb250cmliL3Bvc3RncmVz X2Zkdy9zaGlwcGFibGUuYwpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgInBvc3RncmVzX2Zk dy5oIgogI2luY2x1ZGUgInV0aWxzL2hzZWFyY2guaCIKICNpbmNsdWRlICJ1dGlscy9pbnZhbC5o IgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUu aCIKIAogLyogSGFzaCB0YWJsZSBmb3IgY2FjaGluZyB0aGUgcmVzdWx0cyBvZiBzaGlwcGFiaWxp dHkgbG9va3VwcyAqLwpAQCAtOTAsMTMgKzkxLDEwIEBAIEludmFsaWRhdGVTaGlwcGFibGVDYWNo ZUNhbGxiYWNrKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpCiBzdGF0 aWMgdm9pZAogSW5pdGlhbGl6ZVNoaXBwYWJsZUNhY2hlKHZvaWQpCiB7Ci0JSEFTSENUTAkJY3Rs OwotCiAJLyogQ3JlYXRlIHRoZSBoYXNoIHRhYmxlLiAqLwotCWN0bC5rZXlzaXplID0gc2l6ZW9m KFNoaXBwYWJsZUNhY2hlS2V5KTsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9mKFNoaXBwYWJsZUNh Y2hlRW50cnkpOwotCVNoaXBwYWJsZUNhY2hlSGFzaCA9Ci0JCWhhc2hfY3JlYXRlKCJTaGlwcGFi aWxpdHkgY2FjaGUiLCAyNTYsICZjdGwsIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCVNoaXBw YWJsZUNhY2hlSGFzaCA9IGhhc2hfbWFrZV9jeHQoU2hpcHBhYmxlQ2FjaGVFbnRyeSwga2V5LAor CQkJCQkJCQkJICAgIlNoaXBwYWJpbGl0eSBjYWNoZSIsIDI1NiwKKwkJCQkJCQkJCSAgIFRvcE1l bW9yeUNvbnRleHQpOwogCiAJLyogU2V0IHVwIGludmFsaWRhdGlvbiBjYWxsYmFjayBvbiBwZ19m b3JlaWduX3NlcnZlci4gKi8KIAlDYWNoZVJlZ2lzdGVyU3lzY2FjaGVDYWxsYmFjayhGT1JFSUdO U0VSVkVST0lELApkaWZmIC0tZ2l0IGEvY29udHJpYi90YWJsZWZ1bmMvdGFibGVmdW5jLmMgYi9j b250cmliL3RhYmxlZnVuYy90YWJsZWZ1bmMuYwppbmRleCBjYTI0MzRjNmUxOS4uNDI2ZjRiMjM2 YTIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvdGFibGVmdW5jL3RhYmxlZnVuYy5jCisrKyBiL2NvbnRy aWIvdGFibGVmdW5jL3RhYmxlZnVuYy5jCkBAIC03MDUsMjQgKzcwNSwxNyBAQCBzdGF0aWMgSFRB QiAqCiBsb2FkX2NhdGVnb3JpZXNfaGFzaChjaGFyICpjYXRzX3NxbCwgTWVtb3J5Q29udGV4dCBw ZXJfcXVlcnlfY3R4KQogewogCUhUQUIJICAgKmNyb3NzdGFiX2hhc2g7Ci0JSEFTSENUTAkJY3Rs OwogCWludAkJCXJldDsKIAl1aW50NjQJCXByb2M7CiAJTWVtb3J5Q29udGV4dCBTUEljb250ZXh0 OwogCi0JLyogaW5pdGlhbGl6ZSB0aGUgY2F0ZWdvcnkgaGFzaCB0YWJsZSAqLwotCWN0bC5rZXlz aXplID0gTUFYX0NBVE5BTUVfTEVOOwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoY3Jvc3N0YWJf SGFzaEVudCk7Ci0JY3RsLmhjeHQgPSBwZXJfcXVlcnlfY3R4OwotCiAJLyoKLQkgKiB1c2UgSU5J VF9DQVRTLCBkZWZpbmVkIGFib3ZlIGFzIGEgZ3Vlc3Mgb2YgaG93IG1hbnkgaGFzaCB0YWJsZSBl bnRyaWVzCi0JICogdG8gY3JlYXRlLCBpbml0aWFsbHkKKwkgKiBJbml0aWFsaXplIHRoZSBjYXRl Z29yeSBoYXNoIHRhYmxlLiBVc2UgSU5JVF9DQVRTLCBkZWZpbmVkIGFib3ZlIGFzIGEKKwkgKiBn dWVzcyBvZiBob3cgbWFueSBoYXNoIHRhYmxlIGVudHJpZXMgdG8gY3JlYXRlLCBpbml0aWFsbHku CiAJICovCi0JY3Jvc3N0YWJfaGFzaCA9IGhhc2hfY3JlYXRlKCJjcm9zc3RhYiBoYXNoIiwKLQkJ CQkJCQkJSU5JVF9DQVRTLAotCQkJCQkJCQkmY3RsLAotCQkJCQkJCQlIQVNIX0VMRU0gfCBIQVNI X1NUUklOR1MgfCBIQVNIX0NPTlRFWFQpOworCWNyb3NzdGFiX2hhc2ggPSBoYXNoX21ha2VfY3h0 KGNyb3NzdGFiX0hhc2hFbnQsIGludGVybmFsX2NhdG5hbWUsCisJCQkJCQkJCSAgImNyb3NzdGFi IGhhc2giLCBJTklUX0NBVFMsCisJCQkJCQkJCSAgcGVyX3F1ZXJ5X2N0eCk7CiAKIAkvKiBDb25u ZWN0IHRvIFNQSSBtYW5hZ2VyICovCiAJU1BJX2Nvbm5lY3QoKTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9jb21tb24vaGVhcHR1cGxlLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29t bW9uL2hlYXB0dXBsZS5jCmluZGV4IDYxMzY3YjMyMzVhLi40OTc4NzdkNjY3ZiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9oZWFwdHVwbGUuYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvY29tbW9uL2hlYXB0dXBsZS5jCkBAIC0xMjUsMTggKzEyNSw5IEBAIG1pc3Npbmdf bWF0Y2goY29uc3Qgdm9pZCAqa2V5MSwgY29uc3Qgdm9pZCAqa2V5MiwgU2l6ZSBrZXlzaXplKQog c3RhdGljIHZvaWQKIGluaXRfbWlzc2luZ19jYWNoZSh2b2lkKQogewotCUhBU0hDVEwJCWhhc2hf Y3RsOwotCi0JaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihtaXNzaW5nX2NhY2hlX2tleSk7Ci0J aGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKG1pc3NpbmdfY2FjaGVfa2V5KTsKLQloYXNoX2N0 bC5oY3h0ID0gVG9wTWVtb3J5Q29udGV4dDsKLQloYXNoX2N0bC5oYXNoID0gbWlzc2luZ19oYXNo OwotCWhhc2hfY3RsLm1hdGNoID0gbWlzc2luZ19tYXRjaDsKIAltaXNzaW5nX2NhY2hlID0KLQkJ aGFzaF9jcmVhdGUoIk1pc3NpbmcgVmFsdWVzIENhY2hlIiwKLQkJCQkJMzIsCi0JCQkJCSZoYXNo X2N0bCwKLQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9DT05URVhUIHwgSEFTSF9GVU5DVElPTiB8IEhB U0hfQ09NUEFSRSk7CisJCWhhc2hzZXRfbWFrZV9mbl9jeHQobWlzc2luZ19jYWNoZV9rZXksICJN aXNzaW5nIFZhbHVlcyBDYWNoZSIsIDMyLAorCQkJCQkJCW1pc3NpbmdfaGFzaCwgbWlzc2luZ19t YXRjaCwgVG9wTWVtb3J5Q29udGV4dCk7CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dp c3QvZ2lzdGJ1aWxkLmMKaW5kZXggN2Y1N2M3ODdmNGMuLjA5ZjExYzQ1OWQ3IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvZ2lzdC9naXN0YnVpbGQuYwpAQCAtMTUxNSwxNSArMTUxNSw4IEBAIHR5cGVkZWYgc3Ry dWN0CiBzdGF0aWMgdm9pZAogZ2lzdEluaXRQYXJlbnRNYXAoR0lTVEJ1aWxkU3RhdGUgKmJ1aWxk c3RhdGUpCiB7Ci0JSEFTSENUTAkJaGFzaEN0bDsKLQotCWhhc2hDdGwua2V5c2l6ZSA9IHNpemVv ZihCbG9ja051bWJlcik7Ci0JaGFzaEN0bC5lbnRyeXNpemUgPSBzaXplb2YoUGFyZW50TWFwRW50 cnkpOwotCWhhc2hDdGwuaGN4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OwotCWJ1aWxkc3RhdGUt PnBhcmVudE1hcCA9IGhhc2hfY3JlYXRlKCJnaXN0YnVpbGQgcGFyZW50IG1hcCIsCi0JCQkJCQkJ CQkJMTAyNCwKLQkJCQkJCQkJCQkmaGFzaEN0bCwKLQkJCQkJCQkJCQlIQVNIX0VMRU0gfCBIQVNI X0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwlidWlsZHN0YXRlLT5wYXJlbnRNYXAgPSBoYXNoX21h a2UoUGFyZW50TWFwRW50cnksIGNoaWxkYmxrbm8sCisJCQkJCQkJCQkgICJnaXN0YnVpbGQgcGFy ZW50IG1hcCIsIDEwMjQpOwogfQogCiBzdGF0aWMgdm9pZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkYnVmZmVycy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dp c3QvZ2lzdGJ1aWxkYnVmZmVycy5jCmluZGV4IDMyMTNjZjQ1YWE2Li4wMjlhZjg1NDJmOSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkYnVmZmVycy5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZGJ1ZmZlcnMuYwpAQCAtNDQsNyArNDQs NiBAQCBHSVNUQnVpbGRCdWZmZXJzICoKIGdpc3RJbml0QnVpbGRCdWZmZXJzKGludCBwYWdlc1Bl ckJ1ZmZlciwgaW50IGxldmVsU3RlcCwgaW50IG1heExldmVsKQogewogCUdJU1RCdWlsZEJ1ZmZl cnMgKmdmYmI7Ci0JSEFTSENUTAkJaGFzaEN0bDsKIAogCWdmYmIgPSBwYWxsb2Nfb2JqZWN0KEdJ U1RCdWlsZEJ1ZmZlcnMpOwogCWdmYmItPnBhZ2VzUGVyQnVmZmVyID0gcGFnZXNQZXJCdWZmZXI7 CkBAIC03MiwxMyArNzEsOCBAQCBnaXN0SW5pdEJ1aWxkQnVmZmVycyhpbnQgcGFnZXNQZXJCdWZm ZXIsIGludCBsZXZlbFN0ZXAsIGludCBtYXhMZXZlbCkKIAkgKiBub2RlQnVmZmVyc1RhYiBoYXNo IGlzIGFzc29jaWF0aW9uIGJldHdlZW4gaW5kZXggYmxvY2tzIGFuZCBpdCdzCiAJICogYnVmZmVy cy4KIAkgKi8KLQloYXNoQ3RsLmtleXNpemUgPSBzaXplb2YoQmxvY2tOdW1iZXIpOwotCWhhc2hD dGwuZW50cnlzaXplID0gc2l6ZW9mKEdJU1ROb2RlQnVmZmVyKTsKLQloYXNoQ3RsLmhjeHQgPSBD dXJyZW50TWVtb3J5Q29udGV4dDsKLQlnZmJiLT5ub2RlQnVmZmVyc1RhYiA9IGhhc2hfY3JlYXRl KCJnaXN0YnVpbGRidWZmZXJzIiwKLQkJCQkJCQkJCSAgIDEwMjQsCi0JCQkJCQkJCQkgICAmaGFz aEN0bCwKLQkJCQkJCQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQp OworCWdmYmItPm5vZGVCdWZmZXJzVGFiID0gaGFzaF9tYWtlKEdJU1ROb2RlQnVmZmVyLCBub2Rl QmxvY2tudW0sCisJCQkJCQkJCQkgImdpc3RidWlsZGJ1ZmZlcnMiLCAxMDI0KTsKIAogCWdmYmIt PmJ1ZmZlckVtcHR5aW5nUXVldWUgPSBOSUw7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oYXNoL2hhc2hwYWdlLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNocGFnZS5j CmluZGV4IDhlMjIwYTNhZTE2Li45OWViMjkxZTgzMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hhc2gvaGFzaHBhZ2UuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNo cGFnZS5jCkBAIC0xMzU2LDcgKzEzNTYsNiBAQCB2b2lkCiBfaGFzaF9maW5pc2hfc3BsaXQoUmVs YXRpb24gcmVsLCBCdWZmZXIgbWV0YWJ1ZiwgQnVmZmVyIG9idWYsIEJ1Y2tldCBvYnVja2V0LAog CQkJCSAgIHVpbnQzMiBtYXhidWNrZXQsIHVpbnQzMiBoaWdobWFzaywgdWludDMyIGxvd21hc2sp CiB7Ci0JSEFTSENUTAkJaGFzaF9jdGw7CiAJSFRBQgkgICAqdGlkaHRhYjsKIAlCdWZmZXIJCWJ1 Y2tldF9uYnVmID0gSW52YWxpZEJ1ZmZlcjsKIAlCdWZmZXIJCW5idWY7CkBAIC0xMzY3LDE2ICsx MzY2LDggQEAgX2hhc2hfZmluaXNoX3NwbGl0KFJlbGF0aW9uIHJlbCwgQnVmZmVyIG1ldGFidWYs IEJ1ZmZlciBvYnVmLCBCdWNrZXQgb2J1Y2tldCwKIAlCdWNrZXQJCW5idWNrZXQ7CiAJYm9vbAkJ Zm91bmQ7CiAKLQkvKiBJbml0aWFsaXplIGhhc2ggdGFibGVzIHVzZWQgdG8gdHJhY2sgVElEcyAq LwotCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoSXRlbVBvaW50ZXJEYXRhKTsKLQloYXNoX2N0 bC5lbnRyeXNpemUgPSBzaXplb2YoSXRlbVBvaW50ZXJEYXRhKTsKLQloYXNoX2N0bC5oY3h0ID0g Q3VycmVudE1lbW9yeUNvbnRleHQ7Ci0KLQl0aWRodGFiID0KLQkJaGFzaF9jcmVhdGUoImJ1Y2tl dCBjdGlkcyIsCi0JCQkJCTI1NiwJCS8qIGFyYml0cmFyeSBpbml0aWFsIHNpemUgKi8KLQkJCQkJ Jmhhc2hfY3RsLAotCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsK KwkvKiBJbml0aWFsaXplIGhhc2ggdGFibGVzIHVzZWQgdG8gdHJhY2sgVElEcyAod2l0aCBhcmJp dHJhcnkgaW5pdGlhbCBzaXplKSAqLworCXRpZGh0YWIgPSBoYXNoc2V0X21ha2UoSXRlbVBvaW50 ZXJEYXRhLCAiYnVja2V0IGN0aWRzIiwgMjU2KTsKIAogCWJ1Y2tldF9uYmxrbm8gPSBuYmxrbm8g PSBfaGFzaF9nZXRfbmV3YmxvY2tfZnJvbV9vbGRidWNrZXQocmVsLCBvYnVja2V0KTsKIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcmV3cml0ZWhlYXAuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3Jld3JpdGVoZWFwLmMKaW5kZXggYmFlM2EyZGE3N2EuLjM2ODc3NGI1 MjcwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9yZXdyaXRlaGVhcC5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Jld3JpdGVoZWFwLmMKQEAgLTIzNyw3ICsyMzcs NiBAQCBiZWdpbl9oZWFwX3Jld3JpdGUoUmVsYXRpb24gb2xkX2hlYXAsIFJlbGF0aW9uIG5ld19o ZWFwLCBUcmFuc2FjdGlvbklkIG9sZGVzdF94bQogCVJld3JpdGVTdGF0ZSBzdGF0ZTsKIAlNZW1v cnlDb250ZXh0IHJ3X2N4dDsKIAlNZW1vcnlDb250ZXh0IG9sZF9jeHQ7Ci0JSEFTSENUTAkJaGFz aF9jdGw7CiAKIAkvKgogCSAqIFRvIGVhc2UgY2xlYW51cCwgbWFrZSBhIHNlcGFyYXRlIGNvbnRl eHQgdGhhdCB3aWxsIGNvbnRhaW4gdGhlCkBAIC0yNjIsMjQgKzI2MSwxOSBAQCBiZWdpbl9oZWFw X3Jld3JpdGUoUmVsYXRpb24gb2xkX2hlYXAsIFJlbGF0aW9uIG5ld19oZWFwLCBUcmFuc2FjdGlv bklkIG9sZGVzdF94bQogCXN0YXRlLT5yc19jeHQgPSByd19jeHQ7CiAJc3RhdGUtPnJzX2J1bGtz dGF0ZSA9IHNtZ3JfYnVsa19zdGFydF9yZWwobmV3X2hlYXAsIE1BSU5fRk9SS05VTSk7CiAKLQkv KiBJbml0aWFsaXplIGhhc2ggdGFibGVzIHVzZWQgdG8gdHJhY2sgdXBkYXRlIGNoYWlucyAqLwot CWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoVGlkSGFzaEtleSk7Ci0JaGFzaF9jdGwuZW50cnlz aXplID0gc2l6ZW9mKFVucmVzb2x2ZWRUdXBEYXRhKTsKLQloYXNoX2N0bC5oY3h0ID0gc3RhdGUt PnJzX2N4dDsKLQorCS8qCisJICogSW5pdGlhbGl6ZSBoYXNoIHRhYmxlcyB1c2VkIHRvIHRyYWNr IHVwZGF0ZSBjaGFpbnMgKHdpdGggYXJiaXRyYXJ5CisJICogaW5pdGlhbCBzaXplcykKKwkgKi8K IAlzdGF0ZS0+cnNfdW5yZXNvbHZlZF90dXBzID0KLQkJaGFzaF9jcmVhdGUoIlJld3JpdGUgLyBV bnJlc29sdmVkIGN0aWRzIiwKLQkJCQkJMTI4LAkJLyogYXJiaXRyYXJ5IGluaXRpYWwgc2l6ZSAq LwotCQkJCQkmaGFzaF9jdGwsCi0JCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NP TlRFWFQpOwotCi0JaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKE9sZFRvTmV3TWFwcGluZ0Rh dGEpOworCQloYXNoX21ha2VfY3h0KFVucmVzb2x2ZWRUdXBEYXRhLCBrZXksCisJCQkJCSAgIlJl d3JpdGUgLyBVbnJlc29sdmVkIGN0aWRzIiwgMTI4LAorCQkJCQkgIHN0YXRlLT5yc19jeHQpOwog CiAJc3RhdGUtPnJzX29sZF9uZXdfdGlkX21hcCA9Ci0JCWhhc2hfY3JlYXRlKCJSZXdyaXRlIC8g T2xkIHRvIG5ldyB0aWQgbWFwIiwKLQkJCQkJMTI4LAkJLyogYXJiaXRyYXJ5IGluaXRpYWwgc2l6 ZSAqLwotCQkJCQkmaGFzaF9jdGwsCi0JCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNI X0NPTlRFWFQpOworCQloYXNoX21ha2VfY3h0KE9sZFRvTmV3TWFwcGluZ0RhdGEsIGtleSwKKwkJ CQkJICAiUmV3cml0ZSAvIE9sZCB0byBuZXcgdGlkIG1hcCIsIDEyOCwKKwkJCQkJICBzdGF0ZS0+ cnNfY3h0KTsKIAogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRfY3h0KTsKIApAQCAtNzU3LDcg Kzc1MSw2IEBAIHJhd19oZWFwX2luc2VydChSZXdyaXRlU3RhdGUgc3RhdGUsIEhlYXBUdXBsZSB0 dXApCiBzdGF0aWMgdm9pZAogbG9naWNhbF9iZWdpbl9oZWFwX3Jld3JpdGUoUmV3cml0ZVN0YXRl IHN0YXRlKQogewotCUhBU0hDVEwJCWhhc2hfY3RsOwogCVRyYW5zYWN0aW9uSWQgbG9naWNhbF94 bWluOwogCiAJLyoKQEAgLTc4OCwxNSArNzgxLDExIEBAIGxvZ2ljYWxfYmVnaW5faGVhcF9yZXdy aXRlKFJld3JpdGVTdGF0ZSBzdGF0ZSkKIAlzdGF0ZS0+cnNfYmVnaW5fbHNuID0gR2V0WExvZ0lu c2VydFJlY1B0cigpOwogCXN0YXRlLT5yc19udW1fcmV3cml0ZV9tYXBwaW5ncyA9IDA7CiAKLQlo YXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKFRyYW5zYWN0aW9uSWQpOwotCWhhc2hfY3RsLmVudHJ5 c2l6ZSA9IHNpemVvZihSZXdyaXRlTWFwcGluZ0ZpbGUpOwotCWhhc2hfY3RsLmhjeHQgPSBzdGF0 ZS0+cnNfY3h0OwotCiAJc3RhdGUtPnJzX2xvZ2ljYWxfbWFwcGluZ3MgPQotCQloYXNoX2NyZWF0 ZSgiTG9naWNhbCByZXdyaXRlIG1hcHBpbmciLAotCQkJCQkxMjgsCQkvKiBhcmJpdHJhcnkgaW5p dGlhbCBzaXplICovCi0JCQkJCSZoYXNoX2N0bCwKLQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9C UyB8IEhBU0hfQ09OVEVYVCk7CisJCWhhc2hfbWFrZV9jeHQoUmV3cml0ZU1hcHBpbmdGaWxlLCB4 aWQsCisJCQkJCSAgIkxvZ2ljYWwgcmV3cml0ZSBtYXBwaW5nIiwKKwkJCQkJICAxMjgsCQkvKiBh cmJpdHJhcnkgaW5pdGlhbCBzaXplICovCisJCQkJCSAgc3RhdGUtPnJzX2N4dCk7CiB9CiAKIC8q CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncHJlZmV0Y2hlci5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3ByZWZldGNoZXIuYwppbmRleCAzYzNm MDY3YWFmYi4uMDJlNDE3ODBkZDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL3hsb2dwcmVmZXRjaGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxv Z3ByZWZldGNoZXIuYwpAQCAtMzYyLDE1ICszNjIsMTMgQEAgWExvZ1ByZWZldGNoZXIgKgogWExv Z1ByZWZldGNoZXJBbGxvY2F0ZShYTG9nUmVhZGVyU3RhdGUgKnJlYWRlcikKIHsKIAlYTG9nUHJl ZmV0Y2hlciAqcHJlZmV0Y2hlcjsKLQlIQVNIQ1RMCQljdGw7CiAKIAlwcmVmZXRjaGVyID0gcGFs bG9jMF9vYmplY3QoWExvZ1ByZWZldGNoZXIpOwogCXByZWZldGNoZXItPnJlYWRlciA9IHJlYWRl cjsKIAotCWN0bC5rZXlzaXplID0gc2l6ZW9mKFJlbEZpbGVMb2NhdG9yKTsKLQljdGwuZW50cnlz aXplID0gc2l6ZW9mKFhMb2dQcmVmZXRjaGVyRmlsdGVyKTsKLQlwcmVmZXRjaGVyLT5maWx0ZXJf dGFibGUgPSBoYXNoX2NyZWF0ZSgiWExvZ1ByZWZldGNoZXJGaWx0ZXJUYWJsZSIsIDEwMjQsCi0J CQkJCQkJCQkJICAgJmN0bCwgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJcHJlZmV0Y2hlci0+ ZmlsdGVyX3RhYmxlID0gaGFzaF9tYWtlX2N4dChYTG9nUHJlZmV0Y2hlckZpbHRlciwgcmxvY2F0 b3IsCisJCQkJCQkJCQkJCSAiWExvZ1ByZWZldGNoZXJGaWx0ZXJUYWJsZSIsIDEwMjQsCisJCQkJ CQkJCQkJCSBUb3BNZW1vcnlDb250ZXh0KTsKIAlkbGlzdF9pbml0KCZwcmVmZXRjaGVyLT5maWx0 ZXJfcXVldWUpOwogCiAJU2hhcmVkU3RhdHMtPndhbF9kaXN0YW5jZSA9IDA7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ndXRpbHMuYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL3hsb2d1dGlscy5jCmluZGV4IDVmYmUzOTEzM2I4Li5kMTFlNDJjOTQ5MCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3V0aWxzLmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3V0aWxzLmMKQEAgLTI3LDYgKzI3LDcgQEAK ICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zbWdyLmgiCiAjaW5j bHVkZSAidXRpbHMvaHNlYXJjaC5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5j bHVkZSAidXRpbHMvcmVsLmgiCiAKIApAQCAtMTMxLDE1ICsxMzIsOSBAQCBsb2dfaW52YWxpZF9w YWdlKFJlbEZpbGVMb2NhdG9yIGxvY2F0b3IsIEZvcmtOdW1iZXIgZm9ya25vLCBCbG9ja051bWJl ciBibGtubywKIAlpZiAoaW52YWxpZF9wYWdlX3RhYiA9PSBOVUxMKQogCXsKIAkJLyogY3JlYXRl IGhhc2ggdGFibGUgd2hlbiBmaXJzdCBuZWVkZWQgKi8KLQkJSEFTSENUTAkJY3RsOwotCi0JCWN0 bC5rZXlzaXplID0gc2l6ZW9mKHhsX2ludmFsaWRfcGFnZV9rZXkpOwotCQljdGwuZW50cnlzaXpl ID0gc2l6ZW9mKHhsX2ludmFsaWRfcGFnZSk7Ci0KLQkJaW52YWxpZF9wYWdlX3RhYiA9IGhhc2hf Y3JlYXRlKCJYTE9HIGludmFsaWQtcGFnZSB0YWJsZSIsCi0JCQkJCQkJCQkgICAxMDAsCi0JCQkJ CQkJCQkgICAmY3RsLAotCQkJCQkJCQkJICAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJCWlu dmFsaWRfcGFnZV90YWIgPSBoYXNoX21ha2VfY3h0KHhsX2ludmFsaWRfcGFnZSwga2V5LAorCQkJ CQkJCQkJCSAiWExPRyBpbnZhbGlkLXBhZ2UgdGFibGUiLCAxMDAsCisJCQkJCQkJCQkJIFRvcE1l bW9yeUNvbnRleHQpOwogCX0KIAogCS8qIHdlIGN1cnJlbnRseSBhc3N1bWUgeGxfaW52YWxpZF9w YWdlX2tleSBjb250YWlucyBubyBwYWRkaW5nICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j YXRhbG9nL3BnX2VudW0uYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfZW51bS5jCmluZGV4IDMz YTQ2MTQ4NGQ0Li44NmM4YmFkYTU1NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9w Z19lbnVtLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19lbnVtLmMKQEAgLTI2NywxNSAr MjY3LDkgQEAgRW51bVZhbHVlc0RlbGV0ZShPaWQgZW51bVR5cGVPaWQpCiBzdGF0aWMgdm9pZAog aW5pdF91bmNvbW1pdHRlZF9lbnVtX3R5cGVzKHZvaWQpCiB7Ci0JSEFTSENUTAkJaGFzaF9jdGw7 Ci0KLQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JaGFzaF9jdGwuZW50cnlzaXpl ID0gc2l6ZW9mKE9pZCk7Ci0JaGFzaF9jdGwuaGN4dCA9IFRvcFRyYW5zYWN0aW9uQ29udGV4dDsK LQl1bmNvbW1pdHRlZF9lbnVtX3R5cGVzID0gaGFzaF9jcmVhdGUoIlVuY29tbWl0dGVkIGVudW0g dHlwZXMiLAotCQkJCQkJCQkJCSAzMiwKLQkJCQkJCQkJCQkgJmhhc2hfY3RsLAotCQkJCQkJCQkJ CSBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwl1bmNvbW1pdHRlZF9l bnVtX3R5cGVzID0gaGFzaHNldF9tYWtlX2N4dChPaWQsCisJCQkJCQkJCQkJCSAgIlVuY29tbWl0 dGVkIGVudW0gdHlwZXMiLCAzMiwKKwkJCQkJCQkJCQkJICBUb3BUcmFuc2FjdGlvbkNvbnRleHQp OwogfQogCiAvKgpAQCAtMjg0LDE1ICsyNzgsOSBAQCBpbml0X3VuY29tbWl0dGVkX2VudW1fdHlw ZXModm9pZCkKIHN0YXRpYyB2b2lkCiBpbml0X3VuY29tbWl0dGVkX2VudW1fdmFsdWVzKHZvaWQp CiB7Ci0JSEFTSENUTAkJaGFzaF9jdGw7Ci0KLQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKE9p ZCk7Ci0JaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JaGFzaF9jdGwuaGN4dCA9 IFRvcFRyYW5zYWN0aW9uQ29udGV4dDsKLQl1bmNvbW1pdHRlZF9lbnVtX3ZhbHVlcyA9IGhhc2hf Y3JlYXRlKCJVbmNvbW1pdHRlZCBlbnVtIHZhbHVlcyIsCi0JCQkJCQkJCQkJICAzMiwKLQkJCQkJ CQkJCQkgICZoYXNoX2N0bCwKLQkJCQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBI QVNIX0NPTlRFWFQpOworCXVuY29tbWl0dGVkX2VudW1fdmFsdWVzID0gaGFzaHNldF9tYWtlX2N4 dChPaWQsCisJCQkJCQkJCQkJCSAgICJVbmNvbW1pdHRlZCBlbnVtIHZhbHVlcyIsIDMyLAorCQkJ CQkJCQkJCQkgICBUb3BUcmFuc2FjdGlvbkNvbnRleHQpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19pbmhlcml0cy5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9w Z19pbmhlcml0cy5jCmluZGV4IGNlZjgwNjMzMTU3Li41Mzc3NjliMzlhZSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19pbmhlcml0cy5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvcGdfaW5oZXJpdHMuYwpAQCAtMjU2LDE5ICsyNTYsMTIgQEAgZmluZF9hbGxfaW5oZXJpdG9y cyhPaWQgcGFyZW50cmVsSWQsIExPQ0tNT0RFIGxvY2ttb2RlLCBMaXN0ICoqbnVtcGFyZW50cykK IHsKIAkvKiBoYXNoIHRhYmxlIGZvciBPKDEpIHJlbF9vaWQgLT4gcmVsX251bXBhcmVudHMgY2Vs bCBsb29rdXAgKi8KIAlIVEFCCSAgICpzZWVuX3JlbHM7Ci0JSEFTSENUTAkJY3RsOwogCUxpc3QJ ICAgKnJlbHNfbGlzdCwKIAkJCSAgICpyZWxfbnVtcGFyZW50czsKIAlMaXN0Q2VsbCAgICpsOwog Ci0JY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9mKFNl ZW5SZWxzRW50cnkpOwotCWN0bC5oY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7Ci0KLQlzZWVu X3JlbHMgPSBoYXNoX2NyZWF0ZSgiZmluZF9hbGxfaW5oZXJpdG9ycyB0ZW1wb3JhcnkgdGFibGUi LAotCQkJCQkJCTMyLCAvKiBzdGFydCBzbWFsbCBhbmQgZXh0ZW5kICovCi0JCQkJCQkJJmN0bCwK LQkJCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwlzZWVuX3Jl bHMgPSBoYXNoX21ha2UoU2VlblJlbHNFbnRyeSwgcmVsX2lkLAorCQkJCQkJICAiZmluZF9hbGxf aW5oZXJpdG9ycyB0ZW1wb3JhcnkgdGFibGUiLCAzMik7CiAKIAkvKgogCSAqIFdlIGJ1aWxkIGEg bGlzdCBzdGFydGluZyB3aXRoIHRoZSBnaXZlbiByZWwgYW5kIGFkZGluZyBhbGwgZGlyZWN0IGFu ZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zdG9yYWdlLmMgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL3N0b3JhZ2UuYwppbmRleCBlNDQzYTQ5OTNjNS4uZGIzZTA4MzE5YjUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3RvcmFnZS5jCisrKyBiL3NyYy9iYWNrZW5kL2Nh dGFsb2cvc3RvcmFnZS5jCkBAIC05MCwxNSArOTAsOSBAQCBBZGRQZW5kaW5nU3luYyhjb25zdCBS ZWxGaWxlTG9jYXRvciAqcmxvY2F0b3IpCiAKIAkvKiBjcmVhdGUgdGhlIGhhc2ggaWYgbm90IHll dCAqLwogCWlmICghcGVuZGluZ1N5bmNIYXNoKQotCXsKLQkJSEFTSENUTAkJY3RsOwotCi0JCWN0 bC5rZXlzaXplID0gc2l6ZW9mKFJlbEZpbGVMb2NhdG9yKTsKLQkJY3RsLmVudHJ5c2l6ZSA9IHNp emVvZihQZW5kaW5nUmVsU3luYyk7Ci0JCWN0bC5oY3h0ID0gVG9wVHJhbnNhY3Rpb25Db250ZXh0 OwotCQlwZW5kaW5nU3luY0hhc2ggPSBoYXNoX2NyZWF0ZSgicGVuZGluZyBzeW5jIGhhc2giLCAx NiwgJmN0bCwKLQkJCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVY VCk7Ci0JfQorCQlwZW5kaW5nU3luY0hhc2ggPSBoYXNoX21ha2VfY3h0KFBlbmRpbmdSZWxTeW5j LCBybG9jYXRvciwKKwkJCQkJCQkJCQkicGVuZGluZyBzeW5jIGhhc2giLCAxNiwKKwkJCQkJCQkJ CQlUb3BUcmFuc2FjdGlvbkNvbnRleHQpOwogCiAJcGVuZGluZyA9IGhhc2hfc2VhcmNoKHBlbmRp bmdTeW5jSGFzaCwgcmxvY2F0b3IsIEhBU0hfRU5URVIsICZmb3VuZCk7CiAJQXNzZXJ0KCFmb3Vu ZCk7CkBAIC02MDAsNyArNTk0LDYgQEAgdm9pZAogU2VyaWFsaXplUGVuZGluZ1N5bmNzKFNpemUg bWF4U2l6ZSwgY2hhciAqc3RhcnRBZGRyZXNzKQogewogCUhUQUIJICAgKnRtcGhhc2g7Ci0JSEFT SENUTAkJY3RsOwogCUhBU0hfU0VRX1NUQVRVUyBzY2FuOwogCVBlbmRpbmdSZWxTeW5jICpzeW5j OwogCVBlbmRpbmdSZWxEZWxldGUgKmRlbGV0ZTsKQEAgLTYxMSwxMiArNjA0LDggQEAgU2VyaWFs aXplUGVuZGluZ1N5bmNzKFNpemUgbWF4U2l6ZSwgY2hhciAqc3RhcnRBZGRyZXNzKQogCQlnb3Rv IHRlcm1pbmF0ZTsKIAogCS8qIENyZWF0ZSB0ZW1wb3JhcnkgaGFzaCB0byBjb2xsZWN0IGFjdGl2 ZSByZWxmaWxlbG9jYXRvcnMgKi8KLQljdGwua2V5c2l6ZSA9IHNpemVvZihSZWxGaWxlTG9jYXRv cik7Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihSZWxGaWxlTG9jYXRvcik7Ci0JY3RsLmhjeHQg PSBDdXJyZW50TWVtb3J5Q29udGV4dDsKLQl0bXBoYXNoID0gaGFzaF9jcmVhdGUoInRtcCByZWxm aWxlbG9jYXRvcnMiLAotCQkJCQkJICBoYXNoX2dldF9udW1fZW50cmllcyhwZW5kaW5nU3luY0hh c2gpLCAmY3RsLAotCQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhU KTsKKwl0bXBoYXNoID0gaGFzaHNldF9tYWtlKFJlbEZpbGVMb2NhdG9yLCAidG1wIHJlbGZpbGVs b2NhdG9ycyIsCisJCQkJCQkgICBoYXNoX2dldF9udW1fZW50cmllcyhwZW5kaW5nU3luY0hhc2gp KTsKIAogCS8qIGNvbGxlY3QgYWxsIHJsb2NhdG9yIGZyb20gcGVuZGluZyBzeW5jcyAqLwogCWhh c2hfc2VxX2luaXQoJnNjYW4sIHBlbmRpbmdTeW5jSGFzaCk7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9hc3luYy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYXN5bmMuYwppbmRl eCA0MGM0MmY1NzJlZC4uODE5YzMxMDdiYTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2FzeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYXN5bmMuYwpAQCAtMjQxNCwy MCArMjQxNCwxNCBAQCBBZGRFdmVudFRvUGVuZGluZ05vdGlmaWVzKE5vdGlmaWNhdGlvbiAqbikK IAlpZiAobGlzdF9sZW5ndGgocGVuZGluZ05vdGlmaWVzLT5ldmVudHMpID49IE1JTl9IQVNIQUJM RV9OT1RJRklFUyAmJgogCQlwZW5kaW5nTm90aWZpZXMtPmhhc2h0YWIgPT0gTlVMTCkKIAl7Ci0J CUhBU0hDVEwJCWhhc2hfY3RsOwogCQlMaXN0Q2VsbCAgICpsOwogCiAJCS8qIENyZWF0ZSB0aGUg aGFzaCB0YWJsZSAqLwotCQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKE5vdGlmaWNhdGlvbiAq KTsKLQkJaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKHN0cnVjdCBOb3RpZmljYXRpb25IYXNo KTsKLQkJaGFzaF9jdGwuaGFzaCA9IG5vdGlmaWNhdGlvbl9oYXNoOwotCQloYXNoX2N0bC5tYXRj aCA9IG5vdGlmaWNhdGlvbl9tYXRjaDsKLQkJaGFzaF9jdGwuaGN4dCA9IEN1clRyYW5zYWN0aW9u Q29udGV4dDsKIAkJcGVuZGluZ05vdGlmaWVzLT5oYXNodGFiID0KLQkJCWhhc2hfY3JlYXRlKCJQ ZW5kaW5nIE5vdGlmaWVzIiwKLQkJCQkJCTI1NkwsCi0JCQkJCQkmaGFzaF9jdGwsCi0JCQkJCQlI QVNIX0VMRU0gfCBIQVNIX0ZVTkNUSU9OIHwgSEFTSF9DT01QQVJFIHwgSEFTSF9DT05URVhUKTsK KwkJCWhhc2hfbWFrZV9mbl9jeHQoc3RydWN0IE5vdGlmaWNhdGlvbkhhc2gsIGV2ZW50LAorCQkJ CQkJCSAiUGVuZGluZyBOb3RpZmllcyIsIDI1NiwKKwkJCQkJCQkgbm90aWZpY2F0aW9uX2hhc2gs IG5vdGlmaWNhdGlvbl9tYXRjaCwKKwkJCQkJCQkgQ3VyVHJhbnNhY3Rpb25Db250ZXh0KTsKIAog CQkvKiBJbnNlcnQgYWxsIHRoZSBhbHJlYWR5LWV4aXN0aW5nIGV2ZW50cyAqLwogCQlmb3JlYWNo KGwsIHBlbmRpbmdOb3RpZmllcy0+ZXZlbnRzKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvcHJlcGFyZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCmluZGV4IDVi ODZhNzI3NTg3Li5lYjFhN2VjZmViYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv cHJlcGFyZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwpAQCAtMzcxLDE1 ICszNzEsOSBAQCBFdmFsdWF0ZVBhcmFtcyhQYXJzZVN0YXRlICpwc3RhdGUsIFByZXBhcmVkU3Rh dGVtZW50ICpwc3RtdCwgTGlzdCAqcGFyYW1zLAogc3RhdGljIHZvaWQKIEluaXRRdWVyeUhhc2hU YWJsZSh2b2lkKQogewotCUhBU0hDVEwJCWhhc2hfY3RsOwotCi0JaGFzaF9jdGwua2V5c2l6ZSA9 IE5BTUVEQVRBTEVOOwotCWhhc2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihQcmVwYXJlZFN0YXRl bWVudCk7Ci0KLQlwcmVwYXJlZF9xdWVyaWVzID0gaGFzaF9jcmVhdGUoIlByZXBhcmVkIFF1ZXJp ZXMiLAotCQkJCQkJCQkgICAzMiwKLQkJCQkJCQkJICAgJmhhc2hfY3RsLAotCQkJCQkJCQkgICBI QVNIX0VMRU0gfCBIQVNIX1NUUklOR1MpOworCXByZXBhcmVkX3F1ZXJpZXMgPSBoYXNoX21ha2Vf Y3h0KFByZXBhcmVkU3RhdGVtZW50LCBzdG10X25hbWUsCisJCQkJCQkJCQkgIlByZXBhcmVkIFF1 ZXJpZXMiLCAzMiwKKwkJCQkJCQkJCSBUb3BNZW1vcnlDb250ZXh0KTsKIH0KIAogLyoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9zZXF1ZW5jZS5jCmluZGV4IGUxYjgwOGJiYjYwLi41YTI2ODNjMDczNSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYworKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9zZXF1ZW5jZS5jCkBAIC0xMTEzLDEzICsxMTEzLDkgQEAgbG9ja19hbmRfb3Blbl9zZXF1 ZW5jZShTZXFUYWJsZSBzZXEpCiBzdGF0aWMgdm9pZAogY3JlYXRlX3NlcV9oYXNodGFibGUodm9p ZCkKIHsKLQlIQVNIQ1RMCQljdGw7Ci0KLQljdGwua2V5c2l6ZSA9IHNpemVvZihPaWQpOwotCWN0 bC5lbnRyeXNpemUgPSBzaXplb2YoU2VxVGFibGVEYXRhKTsKLQotCXNlcWhhc2h0YWIgPSBoYXNo X2NyZWF0ZSgiU2VxdWVuY2UgdmFsdWVzIiwgMTYsICZjdGwsCi0JCQkJCQkJIEhBU0hfRUxFTSB8 IEhBU0hfQkxPQlMpOworCXNlcWhhc2h0YWIgPSBoYXNoX21ha2VfY3h0KFNlcVRhYmxlRGF0YSwg cmVsaWQsCisJCQkJCQkJICAgIlNlcXVlbmNlIHZhbHVlcyIsIDE2LAorCQkJCQkJCSAgIFRvcE1l bW9yeUNvbnRleHQpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv dGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCBmOTc2 YzBlNWM3ZS4uNDBhMzk5ODllYWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Rh YmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC0yMTYw LDE5ICsyMTYwLDkgQEAgRXhlY3V0ZVRydW5jYXRlR3V0cyhMaXN0ICpleHBsaWNpdF9yZWxzLAog CiAJCQkvKiBGaXJzdCB0aW1lIHRocm91Z2gsIGluaXRpYWxpemUgaGFzaHRhYmxlIGZvciBmb3Jl aWduIHRhYmxlcyAqLwogCQkJaWYgKCFmdF9odGFiKQotCQkJewotCQkJCUhBU0hDVEwJCWhjdGw7 Ci0KLQkJCQltZW1zZXQoJmhjdGwsIDAsIHNpemVvZihIQVNIQ1RMKSk7Ci0JCQkJaGN0bC5rZXlz aXplID0gc2l6ZW9mKE9pZCk7Ci0JCQkJaGN0bC5lbnRyeXNpemUgPSBzaXplb2YoRm9yZWlnblRy dW5jYXRlSW5mbyk7Ci0JCQkJaGN0bC5oY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7Ci0KLQkJ CQlmdF9odGFiID0gaGFzaF9jcmVhdGUoIlRSVU5DQVRFIGZvciBGb3JlaWduIFRhYmxlcyIsCi0J CQkJCQkJCQkgIDMyLAkvKiBzdGFydCBzbWFsbCBhbmQgZXh0ZW5kICovCi0JCQkJCQkJCQkgICZo Y3RsLAotCQkJCQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsK LQkJCX0KKwkJCQlmdF9odGFiID0gaGFzaF9tYWtlKEZvcmVpZ25UcnVuY2F0ZUluZm8sIHNlcnZl cmlkLAorCQkJCQkJCQkJIlRSVU5DQVRFIGZvciBGb3JlaWduIFRhYmxlcyIsCisJCQkJCQkJCQkz Mik7CS8qIHN0YXJ0IHNtYWxsIGFuZCBleHRlbmQgKi8KIAogCQkJLyogRmluZCBvciBjcmVhdGUg Y2FjaGVkIGVudHJ5IGZvciB0aGUgZm9yZWlnbiB0YWJsZSAqLwogCQkJZnRfaW5mbyA9IGhhc2hf c2VhcmNoKGZ0X2h0YWIsICZzZXJ2ZXJpZCwgSEFTSF9FTlRFUiwgJmZvdW5kKTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKaW5kZXggNDZmZjZkYTgyODkuLjYzMzZhOTJiMjQ4 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwpAQCAtNTEzMSwxNSArNTEz MSw5IEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0ZSAqZXN0 YXRlLCBpbnQgZWZsYWdzKQogI2VuZGlmCiAJaWYgKG5yZWxzID49IE1UX05SRUxTX0hBU0gpCiAJ ewotCQlIQVNIQ1RMCQloYXNoX2N0bDsKLQotCQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKE9p ZCk7Ci0JCWhhc2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihNVFRhcmdldFJlbExvb2t1cCk7Ci0J CWhhc2hfY3RsLmhjeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKIAkJbXRzdGF0ZS0+bXRfcmVz dWx0T2lkSGFzaCA9Ci0JCQloYXNoX2NyZWF0ZSgiTW9kaWZ5VGFibGUgdGFyZ2V0IGhhc2giLAot CQkJCQkJbnJlbHMsICZoYXNoX2N0bCwKLQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBI QVNIX0NPTlRFWFQpOworCQkJaGFzaF9tYWtlKE1UVGFyZ2V0UmVsTG9va3VwLCByZWxhdGlvbk9p ZCwKKwkJCQkJICAiTW9kaWZ5VGFibGUgdGFyZ2V0IGhhc2giLCBucmVscyk7CiAJCWZvciAoaSA9 IDA7IGkgPCBucmVsczsgaSsrKQogCQl7CiAJCQlPaWQJCQloYXNoa2V5OwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvbm9kZXMvZXh0ZW5zaWJsZS5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvZXh0ZW5z aWJsZS5jCmluZGV4IDBkNDNkNjZjMWNkLi5iZjBiOTRkM2M3MiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvbm9kZXMvZXh0ZW5zaWJsZS5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL2V4dGVuc2li bGUuYwpAQCAtMjIsNiArMjIsNyBAQAogCiAjaW5jbHVkZSAibm9kZXMvZXh0ZW5zaWJsZS5oIgog I2luY2x1ZGUgInV0aWxzL2hzZWFyY2guaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgog CiBzdGF0aWMgSFRBQiAqZXh0ZW5zaWJsZV9ub2RlX21ldGhvZHMgPSBOVUxMOwogc3RhdGljIEhU QUIgKmN1c3RvbV9zY2FuX21ldGhvZHMgPSBOVUxMOwpAQCAtNDUsMTMgKzQ2LDggQEAgUmVnaXN0 ZXJFeHRlbnNpYmxlTm9kZUVudHJ5KEhUQUIgKipwX2h0YWJsZSwgY29uc3QgY2hhciAqaHRhYmxl X2xhYmVsLAogCiAJaWYgKCpwX2h0YWJsZSA9PSBOVUxMKQogCXsKLQkJSEFTSENUTAkJY3RsOwot Ci0JCWN0bC5rZXlzaXplID0gRVhUTk9ERU5BTUVfTUFYX0xFTjsKLQkJY3RsLmVudHJ5c2l6ZSA9 IHNpemVvZihFeHRlbnNpYmxlTm9kZUVudHJ5KTsKLQotCQkqcF9odGFibGUgPSBoYXNoX2NyZWF0 ZShodGFibGVfbGFiZWwsIDEwMCwgJmN0bCwKLQkJCQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9TVFJJ TkdTKTsKKwkJKnBfaHRhYmxlID0gaGFzaF9tYWtlX2N4dChFeHRlbnNpYmxlTm9kZUVudHJ5LCBl eHRub2RlbmFtZSwKKwkJCQkJCQkJICBodGFibGVfbGFiZWwsIDEwMCwgVG9wTWVtb3J5Q29udGV4 dCk7CiAJfQogCiAJaWYgKHN0cmxlbihleHRub2RlbmFtZSkgPj0gRVhUTk9ERU5BTUVfTUFYX0xF TikKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQuYyBiL3Ny Yy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQuYwppbmRleCBhOTBlMWM5ZWU2Yi4uZmZh ODljYjMzNjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQu YworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMKQEAgLTcxMywxOSAr NzEzLDEwIEBAIGdldF9yZWxhdGlvbl9ub3RudWxsYXR0cyhQbGFubmVySW5mbyAqcm9vdCwgUmVs YXRpb24gcmVsYXRpb24pCiAJLyogY3JlYXRlIHRoZSBoYXNoIHRhYmxlIGlmIGl0IGhhc24ndCBi ZWVuIGNyZWF0ZWQgeWV0ICovCiAJaWYgKHJvb3QtPmdsb2ItPnJlbF9ub3RudWxsYXR0c19oYXNo ID09IE5VTEwpCiAJewotCQlIVEFCCSAgICpoYXNodGFiOwotCQlIQVNIQ1RMCQloYXNoX2N0bDsK LQotCQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JCWhhc2hfY3RsLmVudHJ5c2l6 ZSA9IHNpemVvZihOb3RudWxsSGFzaEVudHJ5KTsKLQkJaGFzaF9jdGwuaGN4dCA9IEN1cnJlbnRN ZW1vcnlDb250ZXh0OwotCi0JCWhhc2h0YWIgPSBoYXNoX2NyZWF0ZSgiUmVsYXRpb24gTk9UIE5V TEwgYXR0bnVtcyIsCi0JCQkJCQkJICA2NEwsCS8qIGFyYml0cmFyeSBpbml0aWFsIHNpemUgKi8K LQkJCQkJCQkgICZoYXNoX2N0bCwKLQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBI QVNIX0NPTlRFWFQpOwotCi0JCXJvb3QtPmdsb2ItPnJlbF9ub3RudWxsYXR0c19oYXNoID0gaGFz aHRhYjsKKwkJcm9vdC0+Z2xvYi0+cmVsX25vdG51bGxhdHRzX2hhc2ggPQorCQkJaGFzaF9tYWtl KE5vdG51bGxIYXNoRW50cnksIHJlbGlkLAorCQkJCQkgICJSZWxhdGlvbiBOT1QgTlVMTCBhdHRu dW1zIiwKKwkJCQkJICA2NEwpOwkJLyogYXJiaXRyYXJ5IGluaXRpYWwgc2l6ZSAqLwogCX0KIAog CS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wcmVkdGVzdC5jIGIv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcHJlZHRlc3QuYwppbmRleCAyNjg1OGQxZDJiMC4u M2JmNWU3YWM4YmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3ByZWR0 ZXN0LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcHJlZHRlc3QuYwpAQCAtMjEx NywxMiArMjExNyw5IEBAIGxvb2t1cF9wcm9vZl9jYWNoZShPaWQgcHJlZF9vcCwgT2lkIGNsYXVz ZV9vcCwgYm9vbCByZWZ1dGVfaXQpCiAJaWYgKE9wclByb29mQ2FjaGVIYXNoID09IE5VTEwpCiAJ ewogCQkvKiBGaXJzdCB0aW1lIHRocm91Z2g6IGluaXRpYWxpemUgdGhlIGhhc2ggdGFibGUgKi8K LQkJSEFTSENUTAkJY3RsOwotCi0JCWN0bC5rZXlzaXplID0gc2l6ZW9mKE9wclByb29mQ2FjaGVL ZXkpOwotCQljdGwuZW50cnlzaXplID0gc2l6ZW9mKE9wclByb29mQ2FjaGVFbnRyeSk7Ci0JCU9w clByb29mQ2FjaGVIYXNoID0gaGFzaF9jcmVhdGUoIkJ0cmVlIHByb29mIGxvb2t1cCBjYWNoZSIs IDI1NiwKLQkJCQkJCQkJCQkmY3RsLCBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwkJT3ByUHJv b2ZDYWNoZUhhc2ggPSBoYXNoX21ha2VfY3h0KE9wclByb29mQ2FjaGVFbnRyeSwga2V5LAorCQkJ CQkJCQkJCSAgIkJ0cmVlIHByb29mIGxvb2t1cCBjYWNoZSIsIDI1NiwKKwkJCQkJCQkJCQkgIFRv cE1lbW9yeUNvbnRleHQpOwogCiAJCS8qIEFycmFuZ2UgdG8gZmx1c2ggY2FjaGUgb24gcGdfYW1v cCBjaGFuZ2VzICovCiAJCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxiYWNrKEFNT1BPUElELApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcmVsbm9kZS5jIGIvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3V0aWwvcmVsbm9kZS5jCmluZGV4IGY1NzYzMWU4NzZmLi5hOTA3ZjFk MDI4ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcmVsbm9kZS5jCisr KyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3JlbG5vZGUuYwpAQCAtNjAxLDE5ICs2MDEs MTIgQEAgc3RhdGljIHZvaWQKIGJ1aWxkX2pvaW5fcmVsX2hhc2goUGxhbm5lckluZm8gKnJvb3Qp CiB7CiAJSFRBQgkgICAqaGFzaHRhYjsKLQlIQVNIQ1RMCQloYXNoX2N0bDsKIAlMaXN0Q2VsbCAg ICpsOwogCiAJLyogQ3JlYXRlIHRoZSBoYXNoIHRhYmxlICovCi0JaGFzaF9jdGwua2V5c2l6ZSA9 IHNpemVvZihSZWxpZHMpOwotCWhhc2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihKb2luSGFzaEVu dHJ5KTsKLQloYXNoX2N0bC5oYXNoID0gYml0bWFwX2hhc2g7Ci0JaGFzaF9jdGwubWF0Y2ggPSBi aXRtYXBfbWF0Y2g7Ci0JaGFzaF9jdGwuaGN4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OwotCWhh c2h0YWIgPSBoYXNoX2NyZWF0ZSgiSm9pblJlbEhhc2hUYWJsZSIsCi0JCQkJCQkgIDI1NkwsCi0J CQkJCQkgICZoYXNoX2N0bCwKLQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9GVU5DVElPTiB8IEhB U0hfQ09NUEFSRSB8IEhBU0hfQ09OVEVYVCk7CisJaGFzaHRhYiA9IGhhc2hfbWFrZV9mbihKb2lu SGFzaEVudHJ5LCBqb2luX3JlbGlkcywKKwkJCQkJCSAgICJKb2luUmVsSGFzaFRhYmxlIiwgMjU2 LAorCQkJCQkJICAgYml0bWFwX2hhc2gsIGJpdG1hcF9tYXRjaCk7CiAKIAkvKiBJbnNlcnQgYWxs IHRoZSBhbHJlYWR5LWV4aXN0aW5nIGpvaW5yZWxzICovCiAJZm9yZWFjaChsLCByb290LT5qb2lu X3JlbF9saXN0KQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX29wZXIuYyBi L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9vcGVyLmMKaW5kZXggNzY4ZTRjZmY5YzUuLmQzNmU3 YWQzMDMwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vfb3Blci5jCisrKyBi L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9vcGVyLmMKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNs dWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgiCiAjaW5jbHVk ZSAidXRpbHMvbHN5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNs dWRlICJ1dGlscy9zeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3R5cGNhY2hlLmgiCiAKQEAg LTEwMjgsMTIgKzEwMjksOSBAQCBmaW5kX29wZXJfY2FjaGVfZW50cnkoT3ByQ2FjaGVLZXkgKmtl eSkKIAlpZiAoT3ByQ2FjaGVIYXNoID09IE5VTEwpCiAJewogCQkvKiBGaXJzdCB0aW1lIHRocm91 Z2g6IGluaXRpYWxpemUgdGhlIGhhc2ggdGFibGUgKi8KLQkJSEFTSENUTAkJY3RsOwotCi0JCWN0 bC5rZXlzaXplID0gc2l6ZW9mKE9wckNhY2hlS2V5KTsKLQkJY3RsLmVudHJ5c2l6ZSA9IHNpemVv ZihPcHJDYWNoZUVudHJ5KTsKLQkJT3ByQ2FjaGVIYXNoID0gaGFzaF9jcmVhdGUoIk9wZXJhdG9y IGxvb2t1cCBjYWNoZSIsIDI1NiwKLQkJCQkJCQkJICAgJmN0bCwgSEFTSF9FTEVNIHwgSEFTSF9C TE9CUyk7CisJCU9wckNhY2hlSGFzaCA9IGhhc2hfbWFrZV9jeHQoT3ByQ2FjaGVFbnRyeSwga2V5 LAorCQkJCQkJCQkJICJPcGVyYXRvciBsb29rdXAgY2FjaGUiLCAyNTYsCisJCQkJCQkJCQkgVG9w TWVtb3J5Q29udGV4dCk7CiAKIAkJLyogQXJyYW5nZSB0byBmbHVzaCBjYWNoZSBvbiBwZ19vcGVy YXRvciBhbmQgcGdfY2FzdCBjaGFuZ2VzICovCiAJCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxi YWNrKE9QRVJOQU1FTlNQLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3Bh cnRkZXNjLmMgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGRlc2MuYwppbmRleCBjM2Qy NzVmODcyNi4uZGIyNmU0YTgyYjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmlu Zy9wYXJ0ZGVzYy5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0ZGVzYy5jCkBA IC00MjQsMTcgKzQyNCwxMiBAQCBDcmVhdGVQYXJ0aXRpb25EaXJlY3RvcnkoTWVtb3J5Q29udGV4 dCBtY3h0LCBib29sIG9taXRfZGV0YWNoZWQpCiB7CiAJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0 ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKG1jeHQpOwogCVBhcnRpdGlvbkRpcmVjdG9yeSBwZGly OwotCUhBU0hDVEwJCWN0bDsKIAogCXBkaXIgPSBwYWxsb2Nfb2JqZWN0KFBhcnRpdGlvbkRpcmVj dG9yeURhdGEpOwogCXBkaXItPnBkaXJfbWN4dCA9IG1jeHQ7CiAKLQljdGwua2V5c2l6ZSA9IHNp emVvZihPaWQpOwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoUGFydGl0aW9uRGlyZWN0b3J5RW50 cnkpOwotCWN0bC5oY3h0ID0gbWN4dDsKLQotCXBkaXItPnBkaXJfaGFzaCA9IGhhc2hfY3JlYXRl KCJwYXJ0aXRpb24gZGlyZWN0b3J5IiwgMjU2LCAmY3RsLAotCQkJCQkJCQkgIEhBU0hfRUxFTSB8 IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCXBkaXItPnBkaXJfaGFzaCA9IGhhc2hfbWFr ZV9jeHQoUGFydGl0aW9uRGlyZWN0b3J5RW50cnksIHJlbG9pZCwKKwkJCQkJCQkJCSJwYXJ0aXRp b24gZGlyZWN0b3J5IiwgMjU2LCBtY3h0KTsKIAlwZGlyLT5vbWl0X2RldGFjaGVkID0gb21pdF9k ZXRhY2hlZDsKIAogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci9hdXRvdmFjdXVtLmMKaW5kZXggM2U1MDdkMjNjYzkuLmY4Zjg1OTUxNzQxIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYworKysgYi9zcmMvYmFj a2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYwpAQCAtOTA3LDcgKzkwNyw2IEBAIHJlYnVpbGRf ZGF0YWJhc2VfbGlzdChPaWQgbmV3ZGIpCiAJTWVtb3J5Q29udGV4dCBuZXdjeHQ7CiAJTWVtb3J5 Q29udGV4dCBvbGRjeHQ7CiAJTWVtb3J5Q29udGV4dCB0bXBjeHQ7Ci0JSEFTSENUTAkJaGN0bDsK IAlpbnQJCQlzY29yZTsKIAlpbnQJCQluZWxlbXM7CiAJSFRBQgkgICAqZGJoYXNoOwpAQCAtOTM3 LDEyICs5MzYsMTAgQEAgcmVidWlsZF9kYXRhYmFzZV9saXN0KE9pZCBuZXdkYikKIAkgKiBzY29y ZSwgYW5kIGZpbmFsbHkgcHV0IHRoZSBhcnJheSBlbGVtZW50cyBpbnRvIHRoZSBuZXcgZG91Ymx5 IGxpbmtlZAogCSAqIGxpc3QuCiAJICovCi0JaGN0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0J aGN0bC5lbnRyeXNpemUgPSBzaXplb2YoYXZsX2RiYXNlKTsKLQloY3RsLmhjeHQgPSB0bXBjeHQ7 Ci0JZGJoYXNoID0gaGFzaF9jcmVhdGUoImF1dG92YWN1dW0gZGIgaGFzaCIsIDIwLCAmaGN0bCwJ LyogbWFnaWMgbnVtYmVyIGhlcmUKLQkJCQkJCQkJCQkJCQkJCSAqIEZJWE1FICovCi0JCQkJCQkg SEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJZGJoYXNoID0gaGFzaF9t YWtlX2N4dChhdmxfZGJhc2UsIGFkbF9kYXRpZCwKKwkJCQkJCSAgICJhdXRvdmFjdXVtIGRiIGhh c2giLAorCQkJCQkJICAgMjAsCS8qIG1hZ2ljIG51bWJlciBoZXJlIEZJWE1FICovCisJCQkJCQkg ICB0bXBjeHQpOwogCiAJLyogc3RhcnQgYnkgaW5zZXJ0aW5nIHRoZSBuZXcgZGF0YWJhc2UgKi8K IAlzY29yZSA9IDA7CkBAIC0xOTA0LDcgKzE5MDEsNiBAQCBkb19hdXRvdmFjdXVtKHZvaWQpCiAJ Rm9ybV9wZ19kYXRhYmFzZSBkYkZvcm07CiAJTGlzdAkgICAqdGFibGVfb2lkcyA9IE5JTDsKIAlM aXN0CSAgICpvcnBoYW5fb2lkcyA9IE5JTDsKLQlIQVNIQ1RMCQljdGw7CiAJSFRBQgkgICAqdGFi bGVfdG9hc3RfbWFwOwogCUxpc3RDZWxsICAgKnZvbGF0aWxlIGNlbGw7CiAJQnVmZmVyQWNjZXNz U3RyYXRlZ3kgYnN0cmF0ZWd5OwpAQCAtMTk3NywxMyArMTk3Myw5IEBAIGRvX2F1dG92YWN1dW0o dm9pZCkKIAlwZ19jbGFzc19kZXNjID0gQ3JlYXRlVHVwbGVEZXNjQ29weShSZWxhdGlvbkdldERl c2NyKGNsYXNzUmVsKSk7CiAKIAkvKiBjcmVhdGUgaGFzaCB0YWJsZSBmb3IgdG9hc3QgPC0+IG1h aW4gcmVsaWQgbWFwcGluZyAqLwotCWN0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JY3RsLmVu dHJ5c2l6ZSA9IHNpemVvZihhdl9yZWxhdGlvbik7Ci0KLQl0YWJsZV90b2FzdF9tYXAgPSBoYXNo X2NyZWF0ZSgiVE9BU1QgdG8gbWFpbiByZWxpZCBtYXAiLAotCQkJCQkJCQkgIDEwMCwKLQkJCQkJ CQkJICAmY3RsLAotCQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCXRhYmxlX3Rv YXN0X21hcCA9IGhhc2hfbWFrZV9jeHQoYXZfcmVsYXRpb24sIGFyX3RvYXN0cmVsaWQsCisJCQkJ CQkJCQkiVE9BU1QgdG8gbWFpbiByZWxpZCBtYXAiLCAxMDAsCisJCQkJCQkJCQlUb3BNZW1vcnlD b250ZXh0KTsKIAogCS8qCiAJICogU2NhbiBwZ19jbGFzcyB0byBkZXRlcm1pbmUgd2hpY2ggdGFi bGVzIHRvIHZhY3V1bS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2tw b2ludGVyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2NoZWNrcG9pbnRlci5jCmluZGV4IDY0 ODJjMjFiOGY5Li4yNDI1OWVkNWU0MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rl ci9jaGVja3BvaW50ZXIuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2NoZWNrcG9pbnRl ci5jCkBAIC0xMzA5LDcgKzEzMDksNiBAQCBDb21wYWN0Q2hlY2twb2ludGVyUmVxdWVzdFF1ZXVl KHZvaWQpCiAJaW50CQkJbnVtX3JlcXVlc3RzOwogCWludAkJCXJlYWRfaWR4LAogCQkJCXdyaXRl X2lkeDsKLQlIQVNIQ1RMCQljdGw7CiAJSFRBQgkgICAqaHRhYjsKIAlib29sCSAgICpza2lwX3Ns b3Q7CiAKQEAgLTEzMjksMTQgKzEzMjgsOSBAQCBDb21wYWN0Q2hlY2twb2ludGVyUmVxdWVzdFF1 ZXVlKHZvaWQpCiAJaGVhZCA9IENoZWNrcG9pbnRlclNobWVtLT5oZWFkOwogCiAJLyogSW5pdGlh bGl6ZSB0ZW1wb3JhcnkgaGFzaCB0YWJsZSAqLwotCWN0bC5rZXlzaXplID0gc2l6ZW9mKENoZWNr cG9pbnRlclJlcXVlc3QpOwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2Yoc3RydWN0IENoZWNrcG9p bnRlclNsb3RNYXBwaW5nKTsKLQljdGwuaGN4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OwotCi0J aHRhYiA9IGhhc2hfY3JlYXRlKCJDb21wYWN0Q2hlY2twb2ludGVyUmVxdWVzdFF1ZXVlIiwKLQkJ CQkJICAgQ2hlY2twb2ludGVyU2htZW0tPm51bV9yZXF1ZXN0cywKLQkJCQkJICAgJmN0bCwKLQkJ CQkJICAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJaHRhYiA9IGhh c2hfbWFrZShzdHJ1Y3QgQ2hlY2twb2ludGVyU2xvdE1hcHBpbmcsIHJlcXVlc3QsCisJCQkJCSAi Q29tcGFjdENoZWNrcG9pbnRlclJlcXVlc3RRdWV1ZSIsCisJCQkJCSBDaGVja3BvaW50ZXJTaG1l bS0+bnVtX3JlcXVlc3RzKTsKIAogCS8qCiAJICogVGhlIGJhc2ljIGlkZWEgaGVyZSBpcyB0aGF0 IGEgcmVxdWVzdCBjYW4gYmUgc2tpcHBlZCBpZiBpdCdzIGZvbGxvd2VkCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCmluZGV4 IDVlYmQyMzUzZmVkLi5lN2U5OWE2ZWNlYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKQEAgLTQ4NCwxNiArNDg0LDkg QEAgcGFfYWxsb2NhdGVfd29ya2VyKFRyYW5zYWN0aW9uSWQgeGlkKQogCS8qIEZpcnN0IHRpbWUg dGhyb3VnaCwgaW5pdGlhbGl6ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgc3RhdGUgaGFzaHRhYmxl LiAqLwogCWlmICghUGFyYWxsZWxBcHBseVR4bkhhc2gpCiAJewotCQlIQVNIQ1RMCQljdGw7Ci0K LQkJTWVtU2V0KCZjdGwsIDAsIHNpemVvZihjdGwpKTsKLQkJY3RsLmtleXNpemUgPSBzaXplb2Yo VHJhbnNhY3Rpb25JZCk7Ci0JCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoUGFyYWxsZWxBcHBseVdv cmtlckVudHJ5KTsKLQkJY3RsLmhjeHQgPSBBcHBseUNvbnRleHQ7Ci0KLQkJUGFyYWxsZWxBcHBs eVR4bkhhc2ggPSBoYXNoX2NyZWF0ZSgibG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBs eSB3b3JrZXJzIGhhc2giLAotCQkJCQkJCQkJCSAgIDE2LCAmY3RsLAotCQkJCQkJCQkJCSAgIEhB U0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCQlQYXJhbGxlbEFwcGx5VHhu SGFzaCA9IGhhc2hfbWFrZV9jeHQoUGFyYWxsZWxBcHBseVdvcmtlckVudHJ5LCB4aWQsCisJCQkJ CQkJCQkJCSAibG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGhhc2gi LAorCQkJCQkJCQkJCQkgMTYsIEFwcGx5Q29udGV4dCk7CiAJfQogCiAJLyogQ3JlYXRlIGFuIGVu dHJ5IGZvciB0aGUgcmVxdWVzdGVkIHRyYW5zYWN0aW9uLiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9yZWxhdGlvbi5jCmluZGV4IDJkZjkxMDM3OGRjLi4wOTk1MDFhZDU5MyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jCisr KyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYwpAQCAtMTA0LDgg KzEwNCw2IEBAIGxvZ2ljYWxyZXBfcmVsbWFwX2ludmFsaWRhdGVfY2IoRGF0dW0gYXJnLCBPaWQg cmVsb2lkKQogc3RhdGljIHZvaWQKIGxvZ2ljYWxyZXBfcmVsbWFwX2luaXQodm9pZCkKIHsKLQlI QVNIQ1RMCQljdGw7Ci0KIAlpZiAoIUxvZ2ljYWxSZXBSZWxNYXBDb250ZXh0KQogCQlMb2dpY2Fs UmVwUmVsTWFwQ29udGV4dCA9CiAJCQlBbGxvY1NldENvbnRleHRDcmVhdGUoQ2FjaGVNZW1vcnlD b250ZXh0LApAQCAtMTEzLDEyICsxMTEsOSBAQCBsb2dpY2FscmVwX3JlbG1hcF9pbml0KHZvaWQp CiAJCQkJCQkJCSAgQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7CiAKIAkvKiBJbml0aWFsaXplIHRo ZSByZWxhdGlvbiBoYXNoIHRhYmxlLiAqLwotCWN0bC5rZXlzaXplID0gc2l6ZW9mKExvZ2ljYWxS ZXBSZWxJZCk7Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihMb2dpY2FsUmVwUmVsTWFwRW50cnkp OwotCWN0bC5oY3h0ID0gTG9naWNhbFJlcFJlbE1hcENvbnRleHQ7Ci0KLQlMb2dpY2FsUmVwUmVs TWFwID0gaGFzaF9jcmVhdGUoImxvZ2ljYWxyZXAgcmVsYXRpb24gbWFwIGNhY2hlIiwgMTI4LCAm Y3RsLAotCQkJCQkJCQkgICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsK KwlMb2dpY2FsUmVwUmVsTWFwID0gaGFzaF9tYWtlX2N4dChMb2dpY2FsUmVwUmVsTWFwRW50cnks IHJlbW90ZXJlbC5yZW1vdGVpZCwKKwkJCQkJCQkJCSAibG9naWNhbHJlcCByZWxhdGlvbiBtYXAg Y2FjaGUiLCAxMjgsCisJCQkJCQkJCQkgTG9naWNhbFJlcFJlbE1hcENvbnRleHQpOwogCiAJLyog V2F0Y2ggZm9yIGludmFsaWRhdGlvbiBldmVudHMuICovCiAJQ2FjaGVSZWdpc3RlclJlbGNhY2hl Q2FsbGJhY2sobG9naWNhbHJlcF9yZWxtYXBfaW52YWxpZGF0ZV9jYiwKQEAgLTYxMCw4ICs2MDUs NiBAQCBsb2dpY2FscmVwX3BhcnRtYXBfcmVzZXRfcmVsbWFwKExvZ2ljYWxSZXBSZWxhdGlvbiAq cmVtb3RlcmVsKQogc3RhdGljIHZvaWQKIGxvZ2ljYWxyZXBfcGFydG1hcF9pbml0KHZvaWQpCiB7 Ci0JSEFTSENUTAkJY3RsOwotCiAJaWYgKCFMb2dpY2FsUmVwUGFydE1hcENvbnRleHQpCiAJCUxv Z2ljYWxSZXBQYXJ0TWFwQ29udGV4dCA9CiAJCQlBbGxvY1NldENvbnRleHRDcmVhdGUoQ2FjaGVN ZW1vcnlDb250ZXh0LApAQCAtNjE5LDEyICs2MTIsOSBAQCBsb2dpY2FscmVwX3BhcnRtYXBfaW5p dCh2b2lkKQogCQkJCQkJCQkgIEFMTE9DU0VUX0RFRkFVTFRfU0laRVMpOwogCiAJLyogSW5pdGlh bGl6ZSB0aGUgcmVsYXRpb24gaGFzaCB0YWJsZS4gKi8KLQljdGwua2V5c2l6ZSA9IHNpemVvZihP aWQpOwkvKiBwYXJ0aXRpb24gT0lEICovCi0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihMb2dpY2Fs UmVwUGFydE1hcEVudHJ5KTsKLQljdGwuaGN4dCA9IExvZ2ljYWxSZXBQYXJ0TWFwQ29udGV4dDsK LQotCUxvZ2ljYWxSZXBQYXJ0TWFwID0gaGFzaF9jcmVhdGUoImxvZ2ljYWxyZXAgcGFydGl0aW9u IG1hcCBjYWNoZSIsIDY0LCAmY3RsLAotCQkJCQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8 IEhBU0hfQ09OVEVYVCk7CisJTG9naWNhbFJlcFBhcnRNYXAgPSBoYXNoX21ha2VfY3h0KExvZ2lj YWxSZXBQYXJ0TWFwRW50cnksIHBhcnRvaWQsCisJCQkJCQkJCQkgICJsb2dpY2FscmVwIHBhcnRp dGlvbiBtYXAgY2FjaGUiLCA2NCwKKwkJCQkJCQkJCSAgTG9naWNhbFJlcFBhcnRNYXBDb250ZXh0 KTsKIAogCS8qIFdhdGNoIGZvciBpbnZhbGlkYXRpb24gZXZlbnRzLiAqLwogCUNhY2hlUmVnaXN0 ZXJSZWxjYWNoZUNhbGxiYWNrKGxvZ2ljYWxyZXBfcGFydG1hcF9pbnZhbGlkYXRlX2NiLApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYwppbmRleCBh MDI5M2Y2ZWM3Yy4uZmE5M2ExYmJkZTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCkBAIC0zMjQsNyArMzI0LDYgQEAgUmVvcmRlckJ1ZmZl ciAqCiBSZW9yZGVyQnVmZmVyQWxsb2NhdGUodm9pZCkKIHsKIAlSZW9yZGVyQnVmZmVyICpidWZm ZXI7Ci0JSEFTSENUTAkJaGFzaF9jdGw7CiAJTWVtb3J5Q29udGV4dCBuZXdfY3R4OwogCiAJQXNz ZXJ0KE15UmVwbGljYXRpb25TbG90ICE9IE5VTEwpOwpAQCAtMzM3LDggKzMzNiw2IEBAIFJlb3Jk ZXJCdWZmZXJBbGxvY2F0ZSh2b2lkKQogCWJ1ZmZlciA9CiAJCShSZW9yZGVyQnVmZmVyICopIE1l bW9yeUNvbnRleHRBbGxvYyhuZXdfY3R4LCBzaXplb2YoUmVvcmRlckJ1ZmZlcikpOwogCi0JbWVt c2V0KCZoYXNoX2N0bCwgMCwgc2l6ZW9mKGhhc2hfY3RsKSk7Ci0KIAlidWZmZXItPmNvbnRleHQg PSBuZXdfY3R4OwogCiAJYnVmZmVyLT5jaGFuZ2VfY29udGV4dCA9IFNsYWJDb250ZXh0Q3JlYXRl KG5ld19jdHgsCkBAIC0zNjcsMTIgKzM2NCw4IEBAIFJlb3JkZXJCdWZmZXJBbGxvY2F0ZSh2b2lk KQogCQkJCQkJCQkJCQkJICBTTEFCX0RFRkFVTFRfQkxPQ0tfU0laRSwKIAkJCQkJCQkJCQkJCSAg U0xBQl9ERUZBVUxUX0JMT0NLX1NJWkUpOwogCi0JaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihU cmFuc2FjdGlvbklkKTsKLQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoUmVvcmRlckJ1ZmZl clRYTkJ5SWRFbnQpOwotCWhhc2hfY3RsLmhjeHQgPSBidWZmZXItPmNvbnRleHQ7Ci0KLQlidWZm ZXItPmJ5X3R4biA9IGhhc2hfY3JlYXRlKCJSZW9yZGVyQnVmZmVyQnlYaWQiLCAxMDAwLCAmaGFz aF9jdGwsCi0JCQkJCQkJCSBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsK KwlidWZmZXItPmJ5X3R4biA9IGhhc2hfbWFrZV9jeHQoUmVvcmRlckJ1ZmZlclRYTkJ5SWRFbnQs IHhpZCwKKwkJCQkJCQkJICAgIlJlb3JkZXJCdWZmZXJCeVhpZCIsIDEwMDAsIGJ1ZmZlci0+Y29u dGV4dCk7CiAKIAlidWZmZXItPmJ5X3R4bl9sYXN0X3hpZCA9IEludmFsaWRUcmFuc2FjdGlvbklk OwogCWJ1ZmZlci0+YnlfdHhuX2xhc3RfdHhuID0gTlVMTDsKQEAgLTE4MzYsMjIgKzE4MjksMTcg QEAgc3RhdGljIHZvaWQKIFJlb3JkZXJCdWZmZXJCdWlsZFR1cGxlQ2lkSGFzaChSZW9yZGVyQnVm ZmVyICpyYiwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuKQogewogCWRsaXN0X2l0ZXIJaXRlcjsKLQlI QVNIQ1RMCQloYXNoX2N0bDsKIAogCWlmICghcmJ0eG5faGFzX2NhdGFsb2dfY2hhbmdlcyh0eG4p IHx8IGRsaXN0X2lzX2VtcHR5KCZ0eG4tPnR1cGxlY2lkcykpCiAJCXJldHVybjsKIAotCWhhc2hf Y3RsLmtleXNpemUgPSBzaXplb2YoUmVvcmRlckJ1ZmZlclR1cGxlQ2lkS2V5KTsKLQloYXNoX2N0 bC5lbnRyeXNpemUgPSBzaXplb2YoUmVvcmRlckJ1ZmZlclR1cGxlQ2lkRW50KTsKLQloYXNoX2N0 bC5oY3h0ID0gcmItPmNvbnRleHQ7Ci0KIAkvKgogCSAqIGNyZWF0ZSB0aGUgaGFzaCB3aXRoIHRo ZSBleGFjdCBudW1iZXIgb2YgdG8tYmUtc3RvcmVkIHR1cGxlY2lkcyBmcm9tCiAJICogdGhlIHN0 YXJ0CiAJICovCiAJdHhuLT50dXBsZWNpZF9oYXNoID0KLQkJaGFzaF9jcmVhdGUoIlJlb3JkZXJC dWZmZXJUdXBsZUNpZCIsIHR4bi0+bnR1cGxlY2lkcywgJmhhc2hfY3RsLAotCQkJCQlIQVNIX0VM RU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwkJaGFzaF9tYWtlX2N4dChSZW9yZGVy QnVmZmVyVHVwbGVDaWRFbnQsIGtleSwKKwkJCQkJICAiUmVvcmRlckJ1ZmZlclR1cGxlQ2lkIiwg dHhuLT5udHVwbGVjaWRzLCByYi0+Y29udGV4dCk7CiAKIAlkbGlzdF9mb3JlYWNoKGl0ZXIsICZ0 eG4tPnR1cGxlY2lkcykKIAl7CkBAIC00OTc0LDE1ICs0OTYyLDEwIEBAIFN0YXJ0dXBSZW9yZGVy QnVmZmVyKHZvaWQpCiBzdGF0aWMgdm9pZAogUmVvcmRlckJ1ZmZlclRvYXN0SW5pdEhhc2goUmVv cmRlckJ1ZmZlciAqcmIsIFJlb3JkZXJCdWZmZXJUWE4gKnR4bikKIHsKLQlIQVNIQ1RMCQloYXNo X2N0bDsKLQogCUFzc2VydCh0eG4tPnRvYXN0X2hhc2ggPT0gTlVMTCk7CiAKLQloYXNoX2N0bC5r ZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKFJlb3Jk ZXJCdWZmZXJUb2FzdEVudCk7Ci0JaGFzaF9jdGwuaGN4dCA9IHJiLT5jb250ZXh0OwotCXR4bi0+ dG9hc3RfaGFzaCA9IGhhc2hfY3JlYXRlKCJSZW9yZGVyQnVmZmVyVG9hc3RIYXNoIiwgNSwgJmhh c2hfY3RsLAotCQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQp OworCXR4bi0+dG9hc3RfaGFzaCA9IGhhc2hfbWFrZV9jeHQoUmVvcmRlckJ1ZmZlclRvYXN0RW50 LCBjaHVua19pZCwKKwkJCQkJCQkJCSJSZW9yZGVyQnVmZmVyVG9hc3RIYXNoIiwgNSwgcmItPmNv bnRleHQpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC90YWJsZXN5bmMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVz eW5jLmMKaW5kZXggNjdlNTc1MjAzODYuLjMxMjczYWQ5ZjU4IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKQEAgLTExNyw2ICsxMTcsNyBAQAogI2luY2x1 ZGUgInV0aWxzL2FycmF5LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRl ICJ1dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1 ZGUgInV0aWxzL3Jscy5oIgogI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIKICNpbmNsdWRlICJ1 dGlscy9zeXNjYWNoZS5oIgpAQCAtMzkwLDEyICszOTEsOSBAQCBQcm9jZXNzU3luY2luZ1RhYmxl c0ZvckFwcGx5KFhMb2dSZWNQdHIgY3VycmVudF9sc24pCiAJICovCiAJaWYgKHRhYmxlX3N0YXRl c19ub3RfcmVhZHkgIT0gTklMICYmICFsYXN0X3N0YXJ0X3RpbWVzKQogCXsKLQkJSEFTSENUTAkJ Y3RsOwotCi0JCWN0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JCWN0bC5lbnRyeXNpemUgPSBz aXplb2Yoc3RydWN0IHRhYmxlc3luY19zdGFydF90aW1lX21hcHBpbmcpOwotCQlsYXN0X3N0YXJ0 X3RpbWVzID0gaGFzaF9jcmVhdGUoIkxvZ2ljYWwgcmVwbGljYXRpb24gdGFibGUgc3luYyB3b3Jr ZXIgc3RhcnQgdGltZXMiLAotCQkJCQkJCQkJICAgMjU2LCAmY3RsLCBIQVNIX0VMRU0gfCBIQVNI X0JMT0JTKTsKKwkJbGFzdF9zdGFydF90aW1lcyA9IGhhc2hfbWFrZV9jeHQoc3RydWN0IHRhYmxl c3luY19zdGFydF90aW1lX21hcHBpbmcsIHJlbGlkLAorCQkJCQkJCQkJCSAiTG9naWNhbCByZXBs aWNhdGlvbiB0YWJsZSBzeW5jIHdvcmtlciBzdGFydCB0aW1lcyIsCisJCQkJCQkJCQkJIDI1Niwg VG9wTWVtb3J5Q29udGV4dCk7CiAJfQogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9w Z291dHB1dC9wZ291dHB1dC5jCmluZGV4IDllZTg5NDllMDQwLi4wZGNmYmZkZDYwOSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYworKysgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCkBAIC0xOTczLDcgKzE5 NzMsNiBAQCBwZ291dHB1dF9zdHJlYW1fcHJlcGFyZV90eG4oTG9naWNhbERlY29kaW5nQ29udGV4 dCAqY3R4LAogc3RhdGljIHZvaWQKIGluaXRfcmVsX3N5bmNfY2FjaGUoTWVtb3J5Q29udGV4dCBj YWNoZWN0eCkKIHsKLQlIQVNIQ1RMCQljdGw7CiAJc3RhdGljIGJvb2wgcmVsYXRpb25fY2FsbGJh Y2tzX3JlZ2lzdGVyZWQgPSBmYWxzZTsKIAogCS8qIE5vdGhpbmcgdG8gZG8gaWYgaGFzaCB0YWJs ZSBhbHJlYWR5IGV4aXN0cyAqLwpAQCAtMTk4MSwxMyArMTk4MCw5IEBAIGluaXRfcmVsX3N5bmNf Y2FjaGUoTWVtb3J5Q29udGV4dCBjYWNoZWN0eCkKIAkJcmV0dXJuOwogCiAJLyogTWFrZSBhIG5l dyBoYXNoIHRhYmxlIGZvciB0aGUgY2FjaGUgKi8KLQljdGwua2V5c2l6ZSA9IHNpemVvZihPaWQp OwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoUmVsYXRpb25TeW5jRW50cnkpOwotCWN0bC5oY3h0 ID0gY2FjaGVjdHg7Ci0KLQlSZWxhdGlvblN5bmNDYWNoZSA9IGhhc2hfY3JlYXRlKCJsb2dpY2Fs IHJlcGxpY2F0aW9uIG91dHB1dCByZWxhdGlvbiBjYWNoZSIsCi0JCQkJCQkJCQkxMjgsICZjdGws Ci0JCQkJCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0NPTlRFWFQgfCBIQVNIX0JMT0JTKTsKKwlSZWxh dGlvblN5bmNDYWNoZSA9IGhhc2hfbWFrZV9jeHQoUmVsYXRpb25TeW5jRW50cnksIHJlbGlkLAor CQkJCQkJCQkJICAibG9naWNhbCByZXBsaWNhdGlvbiBvdXRwdXQgcmVsYXRpb24gY2FjaGUiLAor CQkJCQkJCQkJICAxMjgsIGNhY2hlY3R4KTsKIAogCUFzc2VydChSZWxhdGlvblN5bmNDYWNoZSAh PSBOVUxMKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmX3Rh YmxlLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZfdGFibGUuYwppbmRleCAyM2Q4 NWZkMzJlMi4uOTU2NTM5NDRhOWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVm ZmVyL2J1Zl90YWJsZS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zl90YWJs ZS5jCkBAIC01MCwxOSArNTAsMTYgQEAgQnVmVGFibGVTaG1lbVNpemUoaW50IHNpemUpCiB2b2lk CiBJbml0QnVmVGFibGUoaW50IHNpemUpCiB7Ci0JSEFTSENUTAkJaW5mbzsKKwlIQVNIT1BUUwlv cHRzID0gezB9OwogCiAJLyogYXNzdW1lIG5vIGxvY2tpbmcgaXMgbmVlZGVkIHlldCAqLwogCiAJ LyogQnVmZmVyVGFnIG1hcHMgdG8gQnVmZmVyICovCi0JaW5mby5rZXlzaXplID0gc2l6ZW9mKEJ1 ZmZlclRhZyk7Ci0JaW5mby5lbnRyeXNpemUgPSBzaXplb2YoQnVmZmVyTG9va3VwRW50KTsKLQlp bmZvLm51bV9wYXJ0aXRpb25zID0gTlVNX0JVRkZFUl9QQVJUSVRJT05TOwotCi0JU2hhcmVkQnVm SGFzaCA9IFNobWVtSW5pdEhhc2goIlNoYXJlZCBCdWZmZXIgTG9va3VwIFRhYmxlIiwKLQkJCQkJ CQkJICBzaXplLCBzaXplLAotCQkJCQkJCQkgICZpbmZvLAotCQkJCQkJCQkgIEhBU0hfRUxFTSB8 IEhBU0hfQkxPQlMgfCBIQVNIX1BBUlRJVElPTiB8IEhBU0hfRklYRURfU0laRSk7CisJb3B0cy5u dW1fcGFydGl0aW9ucyA9IE5VTV9CVUZGRVJfUEFSVElUSU9OUzsKKwlvcHRzLmZpeGVkX3NpemUg PSB0cnVlOworCVNoYXJlZEJ1Zkhhc2ggPSBzaG1lbV9oYXNoX21ha2VfZXh0KEJ1ZmZlckxvb2t1 cEVudCwga2V5LAorCQkJCQkJCQkJCSJTaGFyZWQgQnVmZmVyIExvb2t1cCBUYWJsZSIsCisJCQkJ CQkJCQkJc2l6ZSwgc2l6ZSwgJm9wdHMpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9i dWZtZ3IuYwppbmRleCBhMDM2YzJhYTI3NS4uYTk0Y2M4OTY1NGUgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv YnVmZmVyL2J1Zm1nci5jCkBAIC02Miw2ICs2Miw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9zbWdy LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zdGFuZGJ5LmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtZGVi dWcuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3BzX3N0 YXR1cy5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogI2luY2x1ZGUgInV0aWxzL3Jlc293bmVy LmgiCkBAIC00MTAwLDggKzQxMDEsNiBAQCBBdEVPWGFjdF9CdWZmZXJzKGJvb2wgaXNDb21taXQp CiB2b2lkCiBJbml0QnVmZmVyTWFuYWdlckFjY2Vzcyh2b2lkKQogewotCUhBU0hDVEwJCWhhc2hf Y3RsOwotCiAJLyoKIAkgKiBBbiBhZHZpc29yeSBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIHBpbnMg ZWFjaCBiYWNrZW5kIHNob3VsZCBob2xkLCBiYXNlZAogCSAqIG9uIHNoYXJlZF9idWZmZXJzIGFu ZCB0aGUgbWF4aW11bSBudW1iZXIgb2YgY29ubmVjdGlvbnMgcG9zc2libGUuCkBAIC00MTE0LDEx ICs0MTEzLDkgQEAgSW5pdEJ1ZmZlck1hbmFnZXJBY2Nlc3Modm9pZCkKIAltZW1zZXQoJlByaXZh dGVSZWZDb3VudEFycmF5LCAwLCBzaXplb2YoUHJpdmF0ZVJlZkNvdW50QXJyYXkpKTsKIAltZW1z ZXQoJlByaXZhdGVSZWZDb3VudEFycmF5S2V5cywgMCwgc2l6ZW9mKFByaXZhdGVSZWZDb3VudEFy cmF5S2V5cykpOwogCi0JaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihCdWZmZXIpOwotCWhhc2hf Y3RsLmVudHJ5c2l6ZSA9IHNpemVvZihQcml2YXRlUmVmQ291bnRFbnRyeSk7Ci0KLQlQcml2YXRl UmVmQ291bnRIYXNoID0gaGFzaF9jcmVhdGUoIlByaXZhdGVSZWZDb3VudCIsIDEwMCwgJmhhc2hf Y3RsLAotCQkJCQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwlQcml2YXRlUmVmQ291 bnRIYXNoID0gaGFzaF9tYWtlX2N4dChQcml2YXRlUmVmQ291bnRFbnRyeSwgYnVmZmVyLAorCQkJ CQkJCQkJCSJQcml2YXRlUmVmQ291bnQiLCAxMDAsCisJCQkJCQkJCQkJVG9wTWVtb3J5Q29udGV4 dCk7CiAKIAkvKgogCSAqIEF0UHJvY0V4aXRfQnVmZmVycyBuZWVkcyBMV0xvY2sgYWNjZXNzLCBh bmQgdGhlcmVieSBoYXMgdG8gYmUgY2FsbGVkIGF0CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9z dG9yYWdlL2J1ZmZlci9sb2NhbGJ1Zi5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvbG9j YWxidWYuYwppbmRleCBmNmUyYjFhYTI4OC4uNTFmNjU4ZGZjZjYgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2xvY2FsYnVmLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9idWZmZXIvbG9jYWxidWYuYwpAQCAtNzI4LDcgKzcyOCw2IEBAIHN0YXRpYyB2b2lkCiBJbml0 TG9jYWxCdWZmZXJzKHZvaWQpCiB7CiAJaW50CQkJbmJ1ZnMgPSBudW1fdGVtcF9idWZmZXJzOwot CUhBU0hDVEwJCWluZm87CiAJaW50CQkJaTsKIAogCS8qCkBAIC03NzksMTMgKzc3OCw5IEBAIElu aXRMb2NhbEJ1ZmZlcnModm9pZCkKIAl9CiAKIAkvKiBDcmVhdGUgdGhlIGxvb2t1cCBoYXNoIHRh YmxlICovCi0JaW5mby5rZXlzaXplID0gc2l6ZW9mKEJ1ZmZlclRhZyk7Ci0JaW5mby5lbnRyeXNp emUgPSBzaXplb2YoTG9jYWxCdWZmZXJMb29rdXBFbnQpOwotCi0JTG9jYWxCdWZIYXNoID0gaGFz aF9jcmVhdGUoIkxvY2FsIEJ1ZmZlciBMb29rdXAgVGFibGUiLAotCQkJCQkJCSAgIG5idWZzLAot CQkJCQkJCSAgICZpbmZvLAotCQkJCQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCUxv Y2FsQnVmSGFzaCA9IGhhc2hfbWFrZV9jeHQoTG9jYWxCdWZmZXJMb29rdXBFbnQsIGtleSwKKwkJ CQkJCQkJICJMb2NhbCBCdWZmZXIgTG9va3VwIFRhYmxlIiwgbmJ1ZnMsCisJCQkJCQkJCSBUb3BN ZW1vcnlDb250ZXh0KTsKIAogCWlmICghTG9jYWxCdWZIYXNoKQogCQllbG9nKEVSUk9SLCAiY291 bGQgbm90IGluaXRpYWxpemUgbG9jYWwgYnVmZmVyIGhhc2ggdGFibGUiKTsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9yZWluaXQuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv ZmlsZS9yZWluaXQuYwppbmRleCAyNWZhMjE1MTMwOS4uMjZlODEwZTZiNTAgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9yZWluaXQuYworKysgYi9zcmMvYmFja2VuZC9zdG9y YWdlL2ZpbGUvcmVpbml0LmMKQEAgLTE3NSw3ICsxNzUsNiBAQCBSZXNldFVubG9nZ2VkUmVsYXRp b25zSW5EYnNwYWNlRGlyKGNvbnN0IGNoYXIgKmRic3BhY2VkaXJuYW1lLCBpbnQgb3ApCiAJaWYg KChvcCAmIFVOTE9HR0VEX1JFTEFUSU9OX0NMRUFOVVApICE9IDApCiAJewogCQlIVEFCCSAgICpo YXNoOwotCQlIQVNIQ1RMCQljdGw7CiAKIAkJLyoKIAkJICogSXQncyBwb3NzaWJsZSB0aGF0IHNv bWVvbmUgY291bGQgY3JlYXRlIGEgdG9uIG9mIHVubG9nZ2VkIHJlbGF0aW9ucwpAQCAtMTg0LDEx ICsxODMsOCBAQCBSZXNldFVubG9nZ2VkUmVsYXRpb25zSW5EYnNwYWNlRGlyKGNvbnN0IGNoYXIg KmRic3BhY2VkaXJuYW1lLCBpbnQgb3ApCiAJCSAqIG5lZWQgdG8gYmUgcmVzZXQuICBPdGhlcndp c2UsIHRoaXMgY2xlYW51cCBvcGVyYXRpb24gd291bGQgYmUKIAkJICogTyhuXjIpLgogCQkgKi8K LQkJY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQkJY3RsLmVudHJ5c2l6ZSA9IHNpemVvZih1 bmxvZ2dlZF9yZWxhdGlvbl9lbnRyeSk7Ci0JCWN0bC5oY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRl eHQ7Ci0JCWhhc2ggPSBoYXNoX2NyZWF0ZSgidW5sb2dnZWQgcmVsYXRpb24gT0lEcyIsIDMyLCAm Y3RsLAotCQkJCQkJICAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJ CWhhc2ggPSBoYXNoX21ha2UodW5sb2dnZWRfcmVsYXRpb25fZW50cnksIHJlbG51bWJlciwKKwkJ CQkJCSAidW5sb2dnZWQgcmVsYXRpb24gT0lEcyIsIDMyKTsKIAogCQkvKiBTY2FuIHRoZSBkaXJl Y3RvcnkuICovCiAJCWRic3BhY2VfZGlyID0gQWxsb2NhdGVEaXIoZGJzcGFjZWRpcm5hbWUpOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL3NobWVtLmMKaW5kZXggZDJmNDcxMGYxNDEuLmI2YThkMWVjNzc2IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jCisrKyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL3NobWVtLmMKQEAgLTI4NCw4ICsyODQsNiBAQCBTaG1lbUFkZHJJc1ZhbGlk KGNvbnN0IHZvaWQgKmFkZHIpCiB2b2lkCiBJbml0U2htZW1JbmRleCh2b2lkKQogewotCUhBU0hD VEwJCWluZm87Ci0KIAkvKgogCSAqIENyZWF0ZSB0aGUgc2hhcmVkIG1lbW9yeSBzaG1lbSBpbmRl eC4KIAkgKgpAQCAtMjk0LDEzICsyOTIsOCBAQCBJbml0U2htZW1JbmRleCh2b2lkKQogCSAqIGlu aXRpYWxpemluZyB0aGUgU2htZW1JbmRleCBpdHNlbGYuICBUaGUgc3BlY2lhbCAiU2htZW1JbmRl eCIgaGFzaAogCSAqIHRhYmxlIG5hbWUgd2lsbCB0ZWxsIFNobWVtSW5pdFN0cnVjdCB0byBmYWtl IGl0LgogCSAqLwotCWluZm8ua2V5c2l6ZSA9IFNITUVNX0lOREVYX0tFWVNJWkU7Ci0JaW5mby5l bnRyeXNpemUgPSBzaXplb2YoU2htZW1JbmRleEVudCk7Ci0KLQlTaG1lbUluZGV4ID0gU2htZW1J bml0SGFzaCgiU2htZW1JbmRleCIsCi0JCQkJCQkJICAgU0hNRU1fSU5ERVhfU0laRSwgU0hNRU1f SU5ERVhfU0laRSwKLQkJCQkJCQkgICAmaW5mbywKLQkJCQkJCQkgICBIQVNIX0VMRU0gfCBIQVNI X1NUUklOR1MpOworCVNobWVtSW5kZXggPSBzaG1lbV9oYXNoX21ha2UoU2htZW1JbmRleEVudCwg a2V5LCAiU2htZW1JbmRleCIsCisJCQkJCQkJCSBTSE1FTV9JTkRFWF9TSVpFLCBTSE1FTV9JTkRF WF9TSVpFKTsKIH0KIAogLyoKQEAgLTM2OSw2ICszNjIsMjggQEAgU2htZW1Jbml0SGFzaChjb25z dCBjaGFyICpuYW1lLAkJLyogdGFibGUgc3RyaW5nIG5hbWUgZm9yIHNobWVtIGluZGV4ICovCiAJ cmV0dXJuIGhhc2hfY3JlYXRlKG5hbWUsIGluaXRfc2l6ZSwgaW5mb1AsIGhhc2hfZmxhZ3MpOwog fQogCisvKgorICogSW1wbGVtZW50YXRpb24gZnVuY3Rpb24gZm9yIHNobWVtX2hhc2hfbWFrZSBt YWNyb3MuCisgKgorICogQ3JlYXRlcyBhIHNoYXJlZCBtZW1vcnkgaGFzaCB0YWJsZSB3aXRoIHNp bXBsaWZpZWQgcGFyYW1ldGVycy4KKyAqIFBhc3MgTlVMTCBmb3Igb3B0cyB0byB1c2UgYWxsIGRl ZmF1bHRzLgorICovCitIVEFCICoKK3NobWVtX2hhc2hfbWFrZV9pbXBsKGNvbnN0IGNoYXIgKm5h bWUsIGludDY0IGluaXRfc2l6ZSwgaW50NjQgbWF4X3NpemUsCisJCQkJCSBTaXplIGtleXNpemUs IFNpemUgZW50cnlzaXplLCBib29sIHN0cmluZ19rZXksCisJCQkJCSBjb25zdCBIQVNIT1BUUyAq b3B0cykKK3sKKwlIQVNIQ1RMCQljdGw7CisJaW50CQkJZmxhZ3M7CisKKwkvKiBTaGFyZWQgbWVt b3J5IGhhc2ggdGFibGVzIHVzZSBTaG1lbUFsbG9jTm9FcnJvciwgbm90IGEgY3VzdG9tIGFsbG9j YXRvciAqLworCUFzc2VydChvcHRzID09IE5VTEwgfHwgb3B0cy0+YWxsb2MgPT0gTlVMTCk7CisK KwloYXNoX29wdHNfaW5pdCgmY3RsLCAmZmxhZ3MsIGtleXNpemUsIGVudHJ5c2l6ZSwgc3RyaW5n X2tleSwgb3B0cyk7CisKKwlyZXR1cm4gU2htZW1Jbml0SGFzaChuYW1lLCBpbml0X3NpemUsIG1h eF9zaXplLCAmY3RsLCBmbGFncyk7Cit9CisKIC8qCiAgKiBTaG1lbUluaXRTdHJ1Y3QgLS0gQ3Jl YXRlL2F0dGFjaCB0byBhIHN0cnVjdHVyZSBpbiBzaGFyZWQgbWVtb3J5LgogICoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYyBiL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL3N0YW5kYnkuYwppbmRleCBhZmZmYWI3NzEwNi4uN2E5NmUzZTIwMzkgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYworKysgYi9zcmMvYmFja2VuZC9z dG9yYWdlL2lwYy9zdGFuZGJ5LmMKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJzdG9yYWdl L3N0YW5kYnkuaCIKICNpbmNsdWRlICJ1dGlscy9oc2VhcmNoLmgiCiAjaW5jbHVkZSAidXRpbHMv aW5qZWN0aW9uX3BvaW50LmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRl ICJ1dGlscy9wc19zdGF0dXMuaCIKICNpbmNsdWRlICJ1dGlscy90aW1lb3V0LmgiCiAjaW5jbHVk ZSAidXRpbHMvdGltZXN0YW1wLmgiCkBAIC05NSw3ICs5Niw2IEBAIHZvaWQKIEluaXRSZWNvdmVy eVRyYW5zYWN0aW9uRW52aXJvbm1lbnQodm9pZCkKIHsKIAlWaXJ0dWFsVHJhbnNhY3Rpb25JZCB2 eGlkOwotCUhBU0hDVEwJCWhhc2hfY3RsOwogCiAJQXNzZXJ0KFJlY292ZXJ5TG9ja0hhc2ggPT0g TlVMTCk7CS8qIGRvbid0IHJ1biB0aGlzIHR3aWNlICovCiAKQEAgLTEwMywxOCArMTAzLDEyIEBA IEluaXRSZWNvdmVyeVRyYW5zYWN0aW9uRW52aXJvbm1lbnQodm9pZCkKIAkgKiBJbml0aWFsaXpl IHRoZSBoYXNoIHRhYmxlcyBmb3IgdHJhY2tpbmcgdGhlIGxvY2tzIGhlbGQgYnkgZWFjaAogCSAq IHRyYW5zYWN0aW9uLgogCSAqLwotCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoeGxfc3RhbmRi eV9sb2NrKTsKLQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoUmVjb3ZlcnlMb2NrRW50cnkp OwotCVJlY292ZXJ5TG9ja0hhc2ggPSBoYXNoX2NyZWF0ZSgiUmVjb3ZlcnlMb2NrSGFzaCIsCi0J CQkJCQkJCSAgIDY0LAotCQkJCQkJCQkgICAmaGFzaF9jdGwsCi0JCQkJCQkJCSAgIEhBU0hfRUxF TSB8IEhBU0hfQkxPQlMpOwotCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoVHJhbnNhY3Rpb25J ZCk7Ci0JaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKFJlY292ZXJ5TG9ja1hpZEVudHJ5KTsK LQlSZWNvdmVyeUxvY2tYaWRIYXNoID0gaGFzaF9jcmVhdGUoIlJlY292ZXJ5TG9ja1hpZEhhc2gi LAotCQkJCQkJCQkJICA2NCwKLQkJCQkJCQkJCSAgJmhhc2hfY3RsLAotCQkJCQkJCQkJICBIQVNI X0VMRU0gfCBIQVNIX0JMT0JTKTsKKwlSZWNvdmVyeUxvY2tIYXNoID0gaGFzaF9tYWtlX2N4dChS ZWNvdmVyeUxvY2tFbnRyeSwga2V5LAorCQkJCQkJCQkJICJSZWNvdmVyeUxvY2tIYXNoIiwgNjQs CisJCQkJCQkJCQkgVG9wTWVtb3J5Q29udGV4dCk7CisJUmVjb3ZlcnlMb2NrWGlkSGFzaCA9IGhh c2hfbWFrZV9jeHQoUmVjb3ZlcnlMb2NrWGlkRW50cnksIHhpZCwKKwkJCQkJCQkJCQkiUmVjb3Zl cnlMb2NrWGlkSGFzaCIsIDY0LAorCQkJCQkJCQkJCVRvcE1lbW9yeUNvbnRleHQpOwogCiAJLyoK IAkgKiBJbml0aWFsaXplIHNoYXJlZCBpbnZhbGlkYXRpb24gbWFuYWdlbWVudCBmb3IgU3RhcnR1 cCBwcm9jZXNzLCBiZWluZwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xv Y2suYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMKaW5kZXggN2YwY2Q3ODRmNzku LjNmMjBjODU4ODFhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG9jay5j CisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMKQEAgLTQ0Myw3ICs0NDMsNyBA QCBzdGF0aWMgdm9pZCBHZXRTaW5nbGVQcm9jQmxvY2tlclN0YXR1c0RhdGEoUEdQUk9DICpibG9j a2VkX3Byb2MsCiB2b2lkCiBMb2NrTWFuYWdlclNobWVtSW5pdCh2b2lkKQogewotCUhBU0hDVEwJ CWluZm87CisJSEFTSE9QVFMJb3B0czsKIAlpbnQ2NAkJaW5pdF90YWJsZV9zaXplLAogCQkJCW1h eF90YWJsZV9zaXplOwogCWJvb2wJCWZvdW5kOwpAQCAtNDU5LDE1ICs0NTksMTEgQEAgTG9ja01h bmFnZXJTaG1lbUluaXQodm9pZCkKIAkgKiBBbGxvY2F0ZSBoYXNoIHRhYmxlIGZvciBMT0NLIHN0 cnVjdHMuICBUaGlzIHN0b3JlcyBwZXItbG9ja2VkLW9iamVjdAogCSAqIGluZm9ybWF0aW9uLgog CSAqLwotCWluZm8ua2V5c2l6ZSA9IHNpemVvZihMT0NLVEFHKTsKLQlpbmZvLmVudHJ5c2l6ZSA9 IHNpemVvZihMT0NLKTsKLQlpbmZvLm51bV9wYXJ0aXRpb25zID0gTlVNX0xPQ0tfUEFSVElUSU9O UzsKLQotCUxvY2tNZXRob2RMb2NrSGFzaCA9IFNobWVtSW5pdEhhc2goIkxPQ0sgaGFzaCIsCi0J CQkJCQkJCQkgICBpbml0X3RhYmxlX3NpemUsCi0JCQkJCQkJCQkgICBtYXhfdGFibGVfc2l6ZSwK LQkJCQkJCQkJCSAgICZpbmZvLAotCQkJCQkJCQkJICAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8 IEhBU0hfUEFSVElUSU9OKTsKKwlNZW1TZXQoJm9wdHMsIDAsIHNpemVvZihvcHRzKSk7CisJb3B0 cy5udW1fcGFydGl0aW9ucyA9IE5VTV9MT0NLX1BBUlRJVElPTlM7CisJTG9ja01ldGhvZExvY2tI YXNoID0gc2htZW1faGFzaF9tYWtlX2V4dChMT0NLLCB0YWcsICJMT0NLIGhhc2giLAorCQkJCQkJ CQkJCQkgaW5pdF90YWJsZV9zaXplLCBtYXhfdGFibGVfc2l6ZSwKKwkJCQkJCQkJCQkJICZvcHRz KTsKIAogCS8qIEFzc3VtZSBhbiBhdmVyYWdlIG9mIDIgaG9sZGVycyBwZXIgbG9jayAqLwogCW1h eF90YWJsZV9zaXplICo9IDI7CkBAIC00NzcsMTYgKzQ3MywxMiBAQCBMb2NrTWFuYWdlclNobWVt SW5pdCh2b2lkKQogCSAqIEFsbG9jYXRlIGhhc2ggdGFibGUgZm9yIFBST0NMT0NLIHN0cnVjdHMu ICBUaGlzIHN0b3JlcwogCSAqIHBlci1sb2NrLXBlci1ob2xkZXIgaW5mb3JtYXRpb24uCiAJICov Ci0JaW5mby5rZXlzaXplID0gc2l6ZW9mKFBST0NMT0NLVEFHKTsKLQlpbmZvLmVudHJ5c2l6ZSA9 IHNpemVvZihQUk9DTE9DSyk7Ci0JaW5mby5oYXNoID0gcHJvY2xvY2tfaGFzaDsKLQlpbmZvLm51 bV9wYXJ0aXRpb25zID0gTlVNX0xPQ0tfUEFSVElUSU9OUzsKLQotCUxvY2tNZXRob2RQcm9jTG9j a0hhc2ggPSBTaG1lbUluaXRIYXNoKCJQUk9DTE9DSyBoYXNoIiwKLQkJCQkJCQkJCQkgICBpbml0 X3RhYmxlX3NpemUsCi0JCQkJCQkJCQkJICAgbWF4X3RhYmxlX3NpemUsCi0JCQkJCQkJCQkJICAg JmluZm8sCi0JCQkJCQkJCQkJICAgSEFTSF9FTEVNIHwgSEFTSF9GVU5DVElPTiB8IEhBU0hfUEFS VElUSU9OKTsKKwlNZW1TZXQoJm9wdHMsIDAsIHNpemVvZihvcHRzKSk7CisJb3B0cy5oYXNoID0g cHJvY2xvY2tfaGFzaDsKKwlvcHRzLm51bV9wYXJ0aXRpb25zID0gTlVNX0xPQ0tfUEFSVElUSU9O UzsKKwlMb2NrTWV0aG9kUHJvY0xvY2tIYXNoID0gc2htZW1faGFzaF9tYWtlX2V4dChQUk9DTE9D SywgdGFnLCAiUFJPQ0xPQ0sgaGFzaCIsCisJCQkJCQkJCQkJCQkgaW5pdF90YWJsZV9zaXplLCBt YXhfdGFibGVfc2l6ZSwKKwkJCQkJCQkJCQkJCSAmb3B0cyk7CiAKIAkvKgogCSAqIEFsbG9jYXRl IGZhc3QtcGF0aCBzdHJ1Y3R1cmVzLgpAQCAtNTA4LDE1ICs1MDAsOSBAQCBJbml0TG9ja01hbmFn ZXJBY2Nlc3Modm9pZCkKIAkgKiBBbGxvY2F0ZSBub24tc2hhcmVkIGhhc2ggdGFibGUgZm9yIExP Q0FMTE9DSyBzdHJ1Y3RzLiAgVGhpcyBzdG9yZXMgbG9jawogCSAqIGNvdW50cyBhbmQgcmVzb3Vy Y2Ugb3duZXIgaW5mb3JtYXRpb24uCiAJICovCi0JSEFTSENUTAkJaW5mbzsKLQotCWluZm8ua2V5 c2l6ZSA9IHNpemVvZihMT0NBTExPQ0tUQUcpOwotCWluZm8uZW50cnlzaXplID0gc2l6ZW9mKExP Q0FMTE9DSyk7Ci0KLQlMb2NrTWV0aG9kTG9jYWxIYXNoID0gaGFzaF9jcmVhdGUoIkxPQ0FMTE9D SyBoYXNoIiwKLQkJCQkJCQkJCSAgMTYsCi0JCQkJCQkJCQkgICZpbmZvLAotCQkJCQkJCQkJICBI QVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwlMb2NrTWV0aG9kTG9jYWxIYXNoID0gaGFzaF9tYWtl X2N4dChMT0NBTExPQ0ssIHRhZywKKwkJCQkJCQkJCQkiTE9DQUxMT0NLIGhhc2giLCAxNiwKKwkJ CQkJCQkJCQlUb3BNZW1vcnlDb250ZXh0KTsKIH0KIAogCkBAIC0zMzk0LDIwICszMzgwLDEzIEBA IENoZWNrRm9yU2Vzc2lvbkFuZFhhY3RMb2Nrcyh2b2lkKQogCQlib29sCQl4YWN0TG9jazsJLyog aXMgYW55IGxvY2ttb2RlIGhlbGQgYXQgeGFjdCBsZXZlbD8gKi8KIAl9IFBlckxvY2tUYWdFbnRy eTsKIAotCUhBU0hDVEwJCWhhc2hfY3RsOwogCUhUQUIJICAgKmxvY2todGFiOwogCUhBU0hfU0VR X1NUQVRVUyBzdGF0dXM7CiAJTE9DQUxMT0NLICAqbG9jYWxsb2NrOwogCiAJLyogQ3JlYXRlIGEg bG9jYWwgaGFzaCB0YWJsZSBrZXllZCBieSBMT0NLVEFHIG9ubHkgKi8KLQloYXNoX2N0bC5rZXlz aXplID0gc2l6ZW9mKExPQ0tUQUcpOwotCWhhc2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihQZXJM b2NrVGFnRW50cnkpOwotCWhhc2hfY3RsLmhjeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKLQot CWxvY2todGFiID0gaGFzaF9jcmVhdGUoIkNoZWNrRm9yU2Vzc2lvbkFuZFhhY3RMb2NrcyB0YWJs ZSIsCi0JCQkJCQkgICAyNTYsIC8qIGFyYml0cmFyeSBpbml0aWFsIHNpemUgKi8KLQkJCQkJCSAg ICZoYXNoX2N0bCwKLQkJCQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRF WFQpOworCWxvY2todGFiID0gaGFzaF9tYWtlKFBlckxvY2tUYWdFbnRyeSwgbG9jaywKKwkJCQkJ CSAiQ2hlY2tGb3JTZXNzaW9uQW5kWGFjdExvY2tzIHRhYmxlIiwgMjU2KTsKIAogCS8qIFNjYW4g bG9jYWwgbG9jayB0YWJsZSB0byBmaW5kIGVudHJpZXMgZm9yIGVhY2ggTE9DS1RBRyAqLwogCWhh c2hfc2VxX2luaXQoJnN0YXR1cywgTG9ja01ldGhvZExvY2FsSGFzaCk7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2NrLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xt Z3IvbHdsb2NrLmMKaW5kZXggNmE5Zjg2ZDUwMjUuLjBhZmM3Y2FlZWVlIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2NrLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9sbWdyL2x3bG9jay5jCkBAIC0yODUsNyArMjg1LDYgQEAgc3RhdGljIGx3bG9ja19zdGF0cyAq IGdldF9sd2xvY2tfc3RhdHNfZW50cnkoTFdMb2NrICpsb2NrKTsKIHN0YXRpYyB2b2lkCiBpbml0 X2x3bG9ja19zdGF0cyh2b2lkKQogewotCUhBU0hDVEwJCWN0bDsKIAlzdGF0aWMgTWVtb3J5Q29u dGV4dCBsd2xvY2tfc3RhdHNfY3h0ID0gTlVMTDsKIAlzdGF0aWMgYm9vbCBleGl0X3JlZ2lzdGVy ZWQgPSBmYWxzZTsKIApAQCAtMzA1LDExICszMDQsOCBAQCBpbml0X2x3bG9ja19zdGF0cyh2b2lk KQogCQkJCQkJCQkJCQkgQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7CiAJTWVtb3J5Q29udGV4dEFs bG93SW5Dcml0aWNhbFNlY3Rpb24obHdsb2NrX3N0YXRzX2N4dCwgdHJ1ZSk7CiAKLQljdGwua2V5 c2l6ZSA9IHNpemVvZihsd2xvY2tfc3RhdHNfa2V5KTsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9m KGx3bG9ja19zdGF0cyk7Ci0JY3RsLmhjeHQgPSBsd2xvY2tfc3RhdHNfY3h0OwotCWx3bG9ja19z dGF0c19odGFiID0gaGFzaF9jcmVhdGUoImx3bG9jayBzdGF0cyIsIDE2Mzg0LCAmY3RsLAotCQkJ CQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJbHdsb2NrX3N0 YXRzX2h0YWIgPSBoYXNoX21ha2VfY3h0KGx3bG9ja19zdGF0cywga2V5LAorCQkJCQkJCQkJICAi bHdsb2NrIHN0YXRzIiwgMTYzODQsIGx3bG9ja19zdGF0c19jeHQpOwogCWlmICghZXhpdF9yZWdp c3RlcmVkKQogCXsKIAkJb25fc2htZW1fZXhpdChwcmludF9sd2xvY2tfc3RhdHMsIDApOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jIGIvc3JjL2JhY2tl bmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jCmluZGV4IGZlNzVlYWQzNTAxLi45ZjM3NzliOWFl YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jCisrKyBi L3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYwpAQCAtMjEyLDYgKzIxMiw3IEBA CiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXku aCIKICNpbmNsdWRlICJ1dGlscy9ndWNfaG9va3MuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGls cy5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIK IApAQCAtMTE0NCw3ICsxMTQ1LDcgQEAgQ2hlY2tQb2ludFByZWRpY2F0ZSh2b2lkKQogdm9pZAog UHJlZGljYXRlTG9ja1NobWVtSW5pdCh2b2lkKQogewotCUhBU0hDVEwJCWluZm87CisJSEFTSE9Q VFMJb3B0czsKIAlpbnQ2NAkJbWF4X3RhYmxlX3NpemU7CiAJU2l6ZQkJcmVxdWVzdFNpemU7CiAJ Ym9vbAkJZm91bmQ7CkBAIC0xMTYzLDE2ICsxMTY0LDEzIEBAIFByZWRpY2F0ZUxvY2tTaG1lbUlu aXQodm9pZCkKIAkgKiBBbGxvY2F0ZSBoYXNoIHRhYmxlIGZvciBQUkVESUNBVEVMT0NLVEFSR0VU IHN0cnVjdHMuICBUaGlzIHN0b3JlcwogCSAqIHBlci1wcmVkaWNhdGUtbG9jay10YXJnZXQgaW5m b3JtYXRpb24uCiAJICovCi0JaW5mby5rZXlzaXplID0gc2l6ZW9mKFBSRURJQ0FURUxPQ0tUQVJH RVRUQUcpOwotCWluZm8uZW50cnlzaXplID0gc2l6ZW9mKFBSRURJQ0FURUxPQ0tUQVJHRVQpOwot CWluZm8ubnVtX3BhcnRpdGlvbnMgPSBOVU1fUFJFRElDQVRFTE9DS19QQVJUSVRJT05TOwotCi0J UHJlZGljYXRlTG9ja1RhcmdldEhhc2ggPSBTaG1lbUluaXRIYXNoKCJQUkVESUNBVEVMT0NLVEFS R0VUIGhhc2giLAotCQkJCQkJCQkJCQltYXhfdGFibGVfc2l6ZSwKLQkJCQkJCQkJCQkJbWF4X3Rh YmxlX3NpemUsCi0JCQkJCQkJCQkJCSZpbmZvLAotCQkJCQkJCQkJCQlIQVNIX0VMRU0gfCBIQVNI X0JMT0JTIHwKLQkJCQkJCQkJCQkJSEFTSF9QQVJUSVRJT04gfCBIQVNIX0ZJWEVEX1NJWkUpOwor CU1lbVNldCgmb3B0cywgMCwgc2l6ZW9mKG9wdHMpKTsKKwlvcHRzLm51bV9wYXJ0aXRpb25zID0g TlVNX1BSRURJQ0FURUxPQ0tfUEFSVElUSU9OUzsKKwlvcHRzLmZpeGVkX3NpemUgPSB0cnVlOwor CVByZWRpY2F0ZUxvY2tUYXJnZXRIYXNoID0gc2htZW1faGFzaF9tYWtlX2V4dChQUkVESUNBVEVM T0NLVEFSR0VULCB0YWcsCisJCQkJCQkJCQkJCQkgICJQUkVESUNBVEVMT0NLVEFSR0VUIGhhc2gi LAorCQkJCQkJCQkJCQkJICBtYXhfdGFibGVfc2l6ZSwgbWF4X3RhYmxlX3NpemUsCisJCQkJCQkJ CQkJCQkgICZvcHRzKTsKIAogCS8qCiAJICogUmVzZXJ2ZSBhIGR1bW15IGVudHJ5IGluIHRoZSBo YXNoIHRhYmxlOyB3ZSB1c2UgaXQgdG8gbWFrZSBzdXJlIHRoZXJlJ3MKQEAgLTExOTUsMjAgKzEx OTMsMTcgQEAgUHJlZGljYXRlTG9ja1NobWVtSW5pdCh2b2lkKQogCSAqIEFsbG9jYXRlIGhhc2gg dGFibGUgZm9yIFBSRURJQ0FURUxPQ0sgc3RydWN0cy4gIFRoaXMgc3RvcmVzIHBlcgogCSAqIHhh Y3QtbG9jay1vZi1hLXRhcmdldCBpbmZvcm1hdGlvbi4KIAkgKi8KLQlpbmZvLmtleXNpemUgPSBz aXplb2YoUFJFRElDQVRFTE9DS1RBRyk7Ci0JaW5mby5lbnRyeXNpemUgPSBzaXplb2YoUFJFRElD QVRFTE9DSyk7Ci0JaW5mby5oYXNoID0gcHJlZGljYXRlbG9ja19oYXNoOwotCWluZm8ubnVtX3Bh cnRpdGlvbnMgPSBOVU1fUFJFRElDQVRFTE9DS19QQVJUSVRJT05TOwotCiAJLyogQXNzdW1lIGFu IGF2ZXJhZ2Ugb2YgMiB4YWN0cyBwZXIgdGFyZ2V0ICovCiAJbWF4X3RhYmxlX3NpemUgKj0gMjsK IAotCVByZWRpY2F0ZUxvY2tIYXNoID0gU2htZW1Jbml0SGFzaCgiUFJFRElDQVRFTE9DSyBoYXNo IiwKLQkJCQkJCQkJCSAgbWF4X3RhYmxlX3NpemUsCi0JCQkJCQkJCQkgIG1heF90YWJsZV9zaXpl LAotCQkJCQkJCQkJICAmaW5mbywKLQkJCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9GVU5DVElP TiB8Ci0JCQkJCQkJCQkgIEhBU0hfUEFSVElUSU9OIHwgSEFTSF9GSVhFRF9TSVpFKTsKKwlNZW1T ZXQoJm9wdHMsIDAsIHNpemVvZihvcHRzKSk7CisJb3B0cy5oYXNoID0gcHJlZGljYXRlbG9ja19o YXNoOworCW9wdHMubnVtX3BhcnRpdGlvbnMgPSBOVU1fUFJFRElDQVRFTE9DS19QQVJUSVRJT05T OworCW9wdHMuZml4ZWRfc2l6ZSA9IHRydWU7CisJUHJlZGljYXRlTG9ja0hhc2ggPSBzaG1lbV9o YXNoX21ha2VfZXh0KFBSRURJQ0FURUxPQ0ssIHRhZywKKwkJCQkJCQkJCQkJIlBSRURJQ0FURUxP Q0sgaGFzaCIsCisJCQkJCQkJCQkJCW1heF90YWJsZV9zaXplLCBtYXhfdGFibGVfc2l6ZSwKKwkJ CQkJCQkJCQkJJm9wdHMpOwogCiAJLyoKIAkgKiBDb21wdXRlIHNpemUgZm9yIHNlcmlhbGl6YWJs ZSB0cmFuc2FjdGlvbiBoYXNodGFibGUuIE5vdGUgdGhlc2UKQEAgLTEyODIsMTUgKzEyNzcsMTIg QEAgUHJlZGljYXRlTG9ja1NobWVtSW5pdCh2b2lkKQogCSAqIEFsbG9jYXRlIGhhc2ggdGFibGUg Zm9yIFNFUklBTElaQUJMRVhJRCBzdHJ1Y3RzLiAgVGhpcyBzdG9yZXMgcGVyLXhpZAogCSAqIGlu Zm9ybWF0aW9uIGZvciBzZXJpYWxpemFibGUgdHJhbnNhY3Rpb25zIHdoaWNoIGhhdmUgYWNjZXNz ZWQgZGF0YS4KIAkgKi8KLQlpbmZvLmtleXNpemUgPSBzaXplb2YoU0VSSUFMSVpBQkxFWElEVEFH KTsKLQlpbmZvLmVudHJ5c2l6ZSA9IHNpemVvZihTRVJJQUxJWkFCTEVYSUQpOwotCi0JU2VyaWFs aXphYmxlWGlkSGFzaCA9IFNobWVtSW5pdEhhc2goIlNFUklBTElaQUJMRVhJRCBoYXNoIiwKLQkJ CQkJCQkJCQltYXhfdGFibGVfc2l6ZSwKLQkJCQkJCQkJCQltYXhfdGFibGVfc2l6ZSwKLQkJCQkJ CQkJCQkmaW5mbywKLQkJCQkJCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwKLQkJCQkJCQkJ CQlIQVNIX0ZJWEVEX1NJWkUpOworCU1lbVNldCgmb3B0cywgMCwgc2l6ZW9mKG9wdHMpKTsKKwlv cHRzLmZpeGVkX3NpemUgPSB0cnVlOworCVNlcmlhbGl6YWJsZVhpZEhhc2ggPSBzaG1lbV9oYXNo X21ha2VfZXh0KFNFUklBTElaQUJMRVhJRCwgdGFnLAorCQkJCQkJCQkJCQkgICJTRVJJQUxJWkFC TEVYSUQgaGFzaCIsCisJCQkJCQkJCQkJCSAgbWF4X3RhYmxlX3NpemUsIG1heF90YWJsZV9zaXpl LAorCQkJCQkJCQkJCQkgICZvcHRzKTsKIAogCS8qCiAJICogQWxsb2NhdGUgc3BhY2UgZm9yIHRy YWNraW5nIHJ3LWNvbmZsaWN0cyBpbiBsaXN0cyBhdHRhY2hlZCB0byB0aGUKQEAgLTE5MzcsMTYg KzE5MjksMTIgQEAgR2V0U2VyaWFsaXphYmxlVHJhbnNhY3Rpb25TbmFwc2hvdEludChTbmFwc2hv dCBzbmFwc2hvdCwKIHN0YXRpYyB2b2lkCiBDcmVhdGVMb2NhbFByZWRpY2F0ZUxvY2tIYXNoKHZv aWQpCiB7Ci0JSEFTSENUTAkJaGFzaF9jdGw7Ci0KIAkvKiBJbml0aWFsaXplIHRoZSBiYWNrZW5k LWxvY2FsIGhhc2ggdGFibGUgb2YgcGFyZW50IGxvY2tzICovCiAJQXNzZXJ0KExvY2FsUHJlZGlj YXRlTG9ja0hhc2ggPT0gTlVMTCk7Ci0JaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihQUkVESUNB VEVMT0NLVEFSR0VUVEFHKTsKLQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoTE9DQUxQUkVE SUNBVEVMT0NLKTsKLQlMb2NhbFByZWRpY2F0ZUxvY2tIYXNoID0gaGFzaF9jcmVhdGUoIkxvY2Fs IHByZWRpY2F0ZSBsb2NrIiwKLQkJCQkJCQkJCQkgbWF4X3ByZWRpY2F0ZV9sb2Nrc19wZXJfeGFj dCwKLQkJCQkJCQkJCQkgJmhhc2hfY3RsLAotCQkJCQkJCQkJCSBIQVNIX0VMRU0gfCBIQVNIX0JM T0JTKTsKKwlMb2NhbFByZWRpY2F0ZUxvY2tIYXNoID0gaGFzaF9tYWtlX2N4dChMT0NBTFBSRURJ Q0FURUxPQ0ssIHRhZywKKwkJCQkJCQkJCQkgICAiTG9jYWwgcHJlZGljYXRlIGxvY2siLAorCQkJ CQkJCQkJCSAgIG1heF9wcmVkaWNhdGVfbG9ja3NfcGVyX3hhY3QsCisJCQkJCQkJCQkJICAgVG9w TWVtb3J5Q29udGV4dCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdl L3NtZ3Ivc21nci5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9zbWdyL3NtZ3IuYwppbmRleCA4OTQz NTI4ZmUxYy4uNjgwZGE1MDQ4ZmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc21n ci9zbWdyLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9zbWdyL3NtZ3IuYwpAQCAtNzMsNiAr NzMsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2Uvc21nci5oIgogI2luY2x1ZGUgInV0aWxzL2hzZWFy Y2guaCIKICNpbmNsdWRlICJ1dGlscy9pbnZhbC5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxz LmgiCiAKIAogLyoKQEAgLTI1MCwxMiArMjUxLDkgQEAgc21ncm9wZW4oUmVsRmlsZUxvY2F0b3Ig cmxvY2F0b3IsIFByb2NOdW1iZXIgYmFja2VuZCkKIAlpZiAoU01nclJlbGF0aW9uSGFzaCA9PSBO VUxMKQogCXsKIAkJLyogRmlyc3QgdGltZSB0aHJvdWdoOiBpbml0aWFsaXplIHRoZSBoYXNoIHRh YmxlICovCi0JCUhBU0hDVEwJCWN0bDsKLQotCQljdGwua2V5c2l6ZSA9IHNpemVvZihSZWxGaWxl TG9jYXRvckJhY2tlbmQpOwotCQljdGwuZW50cnlzaXplID0gc2l6ZW9mKFNNZ3JSZWxhdGlvbkRh dGEpOwotCQlTTWdyUmVsYXRpb25IYXNoID0gaGFzaF9jcmVhdGUoInNtZ3IgcmVsYXRpb24gdGFi bGUiLCA0MDAsCi0JCQkJCQkJCQkgICAmY3RsLCBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwkJ U01nclJlbGF0aW9uSGFzaCA9IGhhc2hfbWFrZV9jeHQoU01nclJlbGF0aW9uRGF0YSwgc21ncl9y bG9jYXRvciwKKwkJCQkJCQkJCQkgInNtZ3IgcmVsYXRpb24gdGFibGUiLCA0MDAsCisJCQkJCQkJ CQkJIFRvcE1lbW9yeUNvbnRleHQpOwogCQlkbGlzdF9pbml0KCZ1bnBpbm5lZF9yZWxucyk7CiAJ fQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL3N5bmMvc3luYy5jIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9zeW5jL3N5bmMuYwppbmRleCBiMWFjY2M2OGI5NS4uMDFhY2IzMGYxYmIg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc3luYy9zeW5jLmMKKysrIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9zeW5jL3N5bmMuYwpAQCAtMTMwLDggKzEzMCw2IEBAIEluaXRTeW5jKHZv aWQpCiAJICovCiAJaWYgKCFJc1VuZGVyUG9zdG1hc3RlciB8fCBBbUNoZWNrcG9pbnRlclByb2Nl c3MoKSkKIAl7Ci0JCUhBU0hDVEwJCWhhc2hfY3RsOwotCiAJCS8qCiAJCSAqIFhYWDogVGhlIGNo ZWNrcG9pbnRlciBuZWVkcyB0byBhZGQgZW50cmllcyB0byB0aGUgcGVuZGluZyBvcHMgdGFibGUK IAkJICogd2hlbiBhYnNvcmJpbmcgZnN5bmMgcmVxdWVzdHMuICBUaGF0IGlzIGRvbmUgd2l0aGlu IGEgY3JpdGljYWwKQEAgLTE0NiwxMyArMTQ0LDggQEAgSW5pdFN5bmModm9pZCkKIAkJCQkJCQkJ CQkJICBBTExPQ1NFVF9ERUZBVUxUX1NJWkVTKTsKIAkJTWVtb3J5Q29udGV4dEFsbG93SW5Dcml0 aWNhbFNlY3Rpb24ocGVuZGluZ09wc0N4dCwgdHJ1ZSk7CiAKLQkJaGFzaF9jdGwua2V5c2l6ZSA9 IHNpemVvZihGaWxlVGFnKTsKLQkJaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKFBlbmRpbmdG c3luY0VudHJ5KTsKLQkJaGFzaF9jdGwuaGN4dCA9IHBlbmRpbmdPcHNDeHQ7Ci0JCXBlbmRpbmdP cHMgPSBoYXNoX2NyZWF0ZSgiUGVuZGluZyBPcHMgVGFibGUiLAotCQkJCQkJCQkgMTAwTCwKLQkJ CQkJCQkJICZoYXNoX2N0bCwKLQkJCQkJCQkJIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNI X0NPTlRFWFQpOworCQlwZW5kaW5nT3BzID0gaGFzaF9tYWtlX2N4dChQZW5kaW5nRnN5bmNFbnRy eSwgdGFnLAorCQkJCQkJCQkgICAiUGVuZGluZyBPcHMgVGFibGUiLCAxMDBMLCBwZW5kaW5nT3Bz Q3h0KTsKIAkJcGVuZGluZ1VubGlua3MgPSBOSUw7CiAJfQogfQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdHNlYXJjaC90c190eXBhbmFseXplLmMgYi9zcmMvYmFja2VuZC90c2VhcmNoL3RzX3R5 cGFuYWx5emUuYwppbmRleCAwYzUxM2Q2OTRlNy4uYzJmM2I2MzI2NWQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3RzZWFyY2gvdHNfdHlwYW5hbHl6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3RzZWFy Y2gvdHNfdHlwYW5hbHl6ZS5jCkBAIC0xNDksNyArMTQ5LDYgQEAgY29tcHV0ZV90c3ZlY3Rvcl9z dGF0cyhWYWNBdHRyU3RhdHMgKnN0YXRzLAogCiAJLyogVGhpcyBpcyBEIGZyb20gdGhlIExDIGFs Z29yaXRobS4gKi8KIAlIVEFCCSAgICpsZXhlbWVzX3RhYjsKLQlIQVNIQ1RMCQloYXNoX2N0bDsK IAlIQVNIX1NFUV9TVEFUVVMgc2Nhbl9zdGF0dXM7CiAKIAkvKiBUaGlzIGlzIHRoZSBjdXJyZW50 IGJ1Y2tldCBudW1iZXIgZnJvbSB0aGUgTEMgYWxnb3JpdGhtICovCkBAIC0xODAsMTUgKzE3OSw5 IEBAIGNvbXB1dGVfdHN2ZWN0b3Jfc3RhdHMoVmFjQXR0clN0YXRzICpzdGF0cywKIAkgKiB3b3Jy eSBhYm91dCBvdmVyZmxvd2luZyB0aGUgaW5pdGlhbCBzaXplLiBBbHNvIHdlIGRvbid0IG5lZWQg dG8gcGF5IGFueQogCSAqIGF0dGVudGlvbiB0byBsb2NraW5nIGFuZCBtZW1vcnkgbWFuYWdlbWVu dC4KIAkgKi8KLQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKExleGVtZUhhc2hLZXkpOwotCWhh c2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihUcmFja0l0ZW0pOwotCWhhc2hfY3RsLmhhc2ggPSBs ZXhlbWVfaGFzaDsKLQloYXNoX2N0bC5tYXRjaCA9IGxleGVtZV9tYXRjaDsKLQloYXNoX2N0bC5o Y3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7Ci0JbGV4ZW1lc190YWIgPSBoYXNoX2NyZWF0ZSgi QW5hbHl6ZWQgbGV4ZW1lcyB0YWJsZSIsCi0JCQkJCQkJICBudW1fbWNlbGVtLAotCQkJCQkJCSAg Jmhhc2hfY3RsLAotCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9GVU5DVElPTiB8IEhBU0hfQ09N UEFSRSB8IEhBU0hfQ09OVEVYVCk7CisJbGV4ZW1lc190YWIgPSBoYXNoX21ha2VfZm4oVHJhY2tJ dGVtLCBrZXksCisJCQkJCQkJICAgIkFuYWx5emVkIGxleGVtZXMgdGFibGUiLCBudW1fbWNlbGVt LAorCQkJCQkJCSAgIGxleGVtZV9oYXNoLCBsZXhlbWVfbWF0Y2gpOwogCiAJLyogSW5pdGlhbGl6 ZSBjb3VudGVycy4gKi8KIAliX2N1cnJlbnQgPSAxOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkv d2FpdF9ldmVudC5jCmluZGV4IGU0ZjJjNDQwMjU3Li5lNWFjOTU2ZGFmMCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYwpAQCAtMTE5LDcgKzExOSw2IEBAIHZvaWQKIFdh aXRFdmVudEN1c3RvbVNobWVtSW5pdCh2b2lkKQogewogCWJvb2wJCWZvdW5kOwotCUhBU0hDVEwJ CWluZm87CiAKIAlXYWl0RXZlbnRDdXN0b21Db3VudGVyID0gKFdhaXRFdmVudEN1c3RvbUNvdW50 ZXJEYXRhICopCiAJCVNobWVtSW5pdFN0cnVjdCgiV2FpdEV2ZW50Q3VzdG9tQ291bnRlckRhdGEi LApAQCAtMTMzLDI0ICsxMzIsMTggQEAgV2FpdEV2ZW50Q3VzdG9tU2htZW1Jbml0KHZvaWQpCiAJ fQogCiAJLyogaW5pdGlhbGl6ZSBvciBhdHRhY2ggdGhlIGhhc2ggdGFibGVzIHRvIHN0b3JlIGN1 c3RvbSB3YWl0IGV2ZW50cyAqLwotCWluZm8ua2V5c2l6ZSA9IHNpemVvZih1aW50MzIpOwotCWlu Zm8uZW50cnlzaXplID0gc2l6ZW9mKFdhaXRFdmVudEN1c3RvbUVudHJ5QnlJbmZvKTsKIAlXYWl0 RXZlbnRDdXN0b21IYXNoQnlJbmZvID0KLQkJU2htZW1Jbml0SGFzaCgiV2FpdEV2ZW50Q3VzdG9t IGhhc2ggYnkgd2FpdCBldmVudCBpbmZvcm1hdGlvbiIsCi0JCQkJCSAgV0FJVF9FVkVOVF9DVVNU T01fSEFTSF9JTklUX1NJWkUsCi0JCQkJCSAgV0FJVF9FVkVOVF9DVVNUT01fSEFTSF9NQVhfU0la RSwKLQkJCQkJICAmaW5mbywKLQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwkJc2ht ZW1faGFzaF9tYWtlKFdhaXRFdmVudEN1c3RvbUVudHJ5QnlJbmZvLCB3YWl0X2V2ZW50X2luZm8s CisJCQkJCQkiV2FpdEV2ZW50Q3VzdG9tIGhhc2ggYnkgd2FpdCBldmVudCBpbmZvcm1hdGlvbiIs CisJCQkJCQlXQUlUX0VWRU5UX0NVU1RPTV9IQVNIX0lOSVRfU0laRSwKKwkJCQkJCVdBSVRfRVZF TlRfQ1VTVE9NX0hBU0hfTUFYX1NJWkUpOwogCiAJLyoga2V5IGlzIGEgTlVMTC10ZXJtaW5hdGVk IHN0cmluZyAqLwotCWluZm8ua2V5c2l6ZSA9IHNpemVvZihjaGFyW05BTUVEQVRBTEVOXSk7Ci0J aW5mby5lbnRyeXNpemUgPSBzaXplb2YoV2FpdEV2ZW50Q3VzdG9tRW50cnlCeU5hbWUpOwogCVdh aXRFdmVudEN1c3RvbUhhc2hCeU5hbWUgPQotCQlTaG1lbUluaXRIYXNoKCJXYWl0RXZlbnRDdXN0 b20gaGFzaCBieSBuYW1lIiwKLQkJCQkJICBXQUlUX0VWRU5UX0NVU1RPTV9IQVNIX0lOSVRfU0la RSwKLQkJCQkJICBXQUlUX0VWRU5UX0NVU1RPTV9IQVNIX01BWF9TSVpFLAotCQkJCQkgICZpbmZv LAotCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfU1RSSU5HUyk7CisJCXNobWVtX2hhc2hfbWFrZShX YWl0RXZlbnRDdXN0b21FbnRyeUJ5TmFtZSwgd2FpdF9ldmVudF9uYW1lLAorCQkJCQkJIldhaXRF dmVudEN1c3RvbSBoYXNoIGJ5IG5hbWUiLAorCQkJCQkJV0FJVF9FVkVOVF9DVVNUT01fSEFTSF9J TklUX1NJWkUsCisJCQkJCQlXQUlUX0VWRU5UX0NVU1RPTV9IQVNIX01BWF9TSVpFKTsKIH0KIAog LyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheV90eXBhbmFseXplLmMg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlfdHlwYW5hbHl6ZS5jCmluZGV4IDdiYjAwMGRk YmQzLi5iZGM3ZTIyMzdmNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5 X3R5cGFuYWx5emUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlfdHlwYW5hbHl6 ZS5jCkBAIC0yMjMsNyArMjIzLDYgQEAgY29tcHV0ZV9hcnJheV9zdGF0cyhWYWNBdHRyU3RhdHMg KnN0YXRzLCBBbmFseXplQXR0ckZldGNoRnVuYyBmZXRjaGZ1bmMsCiAKIAkvKiBUaGlzIGlzIEQg ZnJvbSB0aGUgTEMgYWxnb3JpdGhtLiAqLwogCUhUQUIJICAgKmVsZW1lbnRzX3RhYjsKLQlIQVNI Q1RMCQllbGVtX2hhc2hfY3RsOwogCUhBU0hfU0VRX1NUQVRVUyBzY2FuX3N0YXR1czsKIAogCS8q IFRoaXMgaXMgdGhlIGN1cnJlbnQgYnVja2V0IG51bWJlciBmcm9tIHRoZSBMQyBhbGdvcml0aG0g Ki8KQEAgLTIzNiw3ICsyMzUsNiBAQCBjb21wdXRlX2FycmF5X3N0YXRzKFZhY0F0dHJTdGF0cyAq c3RhdHMsIEFuYWx5emVBdHRyRmV0Y2hGdW5jIGZldGNoZnVuYywKIAlUcmFja0l0ZW0gICppdGVt OwogCWludAkJCXNsb3RfaWR4OwogCUhUQUIJICAgKmNvdW50X3RhYjsKLQlIQVNIQ1RMCQljb3Vu dF9oYXNoX2N0bDsKIAlERUNvdW50SXRlbSAqY291bnRfaXRlbTsKIAogCWV4dHJhX2RhdGEgPSAo QXJyYXlBbmFseXplRXh0cmFEYXRhICopIHN0YXRzLT5leHRyYV9kYXRhOwpAQCAtMjc2LDI0ICsy NzQsMTMgQEAgY29tcHV0ZV9hcnJheV9zdGF0cyhWYWNBdHRyU3RhdHMgKnN0YXRzLCBBbmFseXpl QXR0ckZldGNoRnVuYyBmZXRjaGZ1bmMsCiAJICogd29ycnkgYWJvdXQgb3ZlcmZsb3dpbmcgdGhl IGluaXRpYWwgc2l6ZS4gQWxzbyB3ZSBkb24ndCBuZWVkIHRvIHBheSBhbnkKIAkgKiBhdHRlbnRp b24gdG8gbG9ja2luZyBhbmQgbWVtb3J5IG1hbmFnZW1lbnQuCiAJICovCi0JZWxlbV9oYXNoX2N0 bC5rZXlzaXplID0gc2l6ZW9mKERhdHVtKTsKLQllbGVtX2hhc2hfY3RsLmVudHJ5c2l6ZSA9IHNp emVvZihUcmFja0l0ZW0pOwotCWVsZW1faGFzaF9jdGwuaGFzaCA9IGVsZW1lbnRfaGFzaDsKLQll bGVtX2hhc2hfY3RsLm1hdGNoID0gZWxlbWVudF9tYXRjaDsKLQllbGVtX2hhc2hfY3RsLmhjeHQg PSBDdXJyZW50TWVtb3J5Q29udGV4dDsKLQllbGVtZW50c190YWIgPSBoYXNoX2NyZWF0ZSgiQW5h bHl6ZWQgZWxlbWVudHMgdGFibGUiLAotCQkJCQkJCSAgIG51bV9tY2VsZW0sCi0JCQkJCQkJICAg JmVsZW1faGFzaF9jdGwsCi0JCQkJCQkJICAgSEFTSF9FTEVNIHwgSEFTSF9GVU5DVElPTiB8IEhB U0hfQ09NUEFSRSB8IEhBU0hfQ09OVEVYVCk7CisJZWxlbWVudHNfdGFiID0gaGFzaF9tYWtlX2Zu KFRyYWNrSXRlbSwga2V5LAorCQkJCQkJCQkiQW5hbHl6ZWQgZWxlbWVudHMgdGFibGUiLCBudW1f bWNlbGVtLAorCQkJCQkJCQllbGVtZW50X2hhc2gsIGVsZW1lbnRfbWF0Y2gpOwogCiAJLyogaGFz aHRhYmxlIGZvciBhcnJheSBkaXN0aW5jdCBlbGVtZW50cyBjb3VudHMgKi8KLQljb3VudF9oYXNo X2N0bC5rZXlzaXplID0gc2l6ZW9mKGludCk7Ci0JY291bnRfaGFzaF9jdGwuZW50cnlzaXplID0g c2l6ZW9mKERFQ291bnRJdGVtKTsKLQljb3VudF9oYXNoX2N0bC5oY3h0ID0gQ3VycmVudE1lbW9y eUNvbnRleHQ7Ci0JY291bnRfdGFiID0gaGFzaF9jcmVhdGUoIkFycmF5IGRpc3RpbmN0IGVsZW1l bnQgY291bnQgdGFibGUiLAotCQkJCQkJCTY0LAotCQkJCQkJCSZjb3VudF9oYXNoX2N0bCwKLQkJ CQkJCQlIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwljb3VudF90YWIg PSBoYXNoX21ha2UoREVDb3VudEl0ZW0sIGNvdW50LAorCQkJCQkJICAiQXJyYXkgZGlzdGluY3Qg ZWxlbWVudCBjb3VudCB0YWJsZSIsIDY0KTsKIAogCS8qIEluaXRpYWxpemUgY291bnRlcnMuICov CiAJYl9jdXJyZW50ID0gMTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29u LmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbi5jCmluZGV4IDc4ZTg0NzI3ZmRjLi4wOGIw MmNjMGY1MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb24uYworKysgYi9z cmMvYmFja2VuZC91dGlscy9hZHQvanNvbi5jCkBAIC05MzMsMTkgKzkzMyw4IEBAIGpzb25fdW5p cXVlX2hhc2hfbWF0Y2goY29uc3Qgdm9pZCAqa2V5MSwgY29uc3Qgdm9pZCAqa2V5MiwgU2l6ZSBr ZXlzaXplKQogc3RhdGljIHZvaWQKIGpzb25fdW5pcXVlX2NoZWNrX2luaXQoSnNvblVuaXF1ZUNo ZWNrU3RhdGUgKmN4dCkKIHsKLQlIQVNIQ1RMCQljdGw7Ci0KLQltZW1zZXQoJmN0bCwgMCwgc2l6 ZW9mKGN0bCkpOwotCWN0bC5rZXlzaXplID0gc2l6ZW9mKEpzb25VbmlxdWVIYXNoRW50cnkpOwot CWN0bC5lbnRyeXNpemUgPSBzaXplb2YoSnNvblVuaXF1ZUhhc2hFbnRyeSk7Ci0JY3RsLmhjeHQg PSBDdXJyZW50TWVtb3J5Q29udGV4dDsKLQljdGwuaGFzaCA9IGpzb25fdW5pcXVlX2hhc2g7Ci0J Y3RsLm1hdGNoID0ganNvbl91bmlxdWVfaGFzaF9tYXRjaDsKLQotCSpjeHQgPSBoYXNoX2NyZWF0 ZSgianNvbiBvYmplY3QgaGFzaHRhYmxlIiwKLQkJCQkJICAgMzIsCi0JCQkJCSAgICZjdGwsCi0J CQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfQ09OVEVYVCB8IEhBU0hfRlVOQ1RJT04gfCBIQVNIX0NP TVBBUkUpOworCSpjeHQgPSBoYXNoc2V0X21ha2VfZm4oSnNvblVuaXF1ZUhhc2hFbnRyeSwgImpz b24gb2JqZWN0IGhhc2h0YWJsZSIsIDMyLAorCQkJCQkJICAganNvbl91bmlxdWVfaGFzaCwganNv bl91bmlxdWVfaGFzaF9tYXRjaCk7CiB9CiAKIHN0YXRpYyB2b2lkCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9hZHQvanNvbmZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNv bmZ1bmNzLmMKaW5kZXggZjJmMWY1OTAxM2EuLjdkM2YxYTBmMTU5IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9hZHQvanNvbmZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L2pzb25mdW5jcy5jCkBAIC0zODA4LDE4ICszODA4LDEyIEBAIHN0YXRpYyBIVEFCICoKIGdldF9q c29uX29iamVjdF9hc19oYXNoKGNvbnN0IGNoYXIgKmpzb24sIGludCBsZW4sIGNvbnN0IGNoYXIg KmZ1bmNuYW1lLAogCQkJCQkJTm9kZSAqZXNjb250ZXh0KQogewotCUhBU0hDVEwJCWN0bDsKIAlI VEFCCSAgICp0YWI7CiAJSkhhc2hTdGF0ZSAqc3RhdGU7CiAJSnNvblNlbUFjdGlvbiAqc2VtOwog Ci0JY3RsLmtleXNpemUgPSBOQU1FREFUQUxFTjsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9mKEpz b25IYXNoRW50cnkpOwotCWN0bC5oY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7Ci0JdGFiID0g aGFzaF9jcmVhdGUoImpzb24gb2JqZWN0IGhhc2h0YWJsZSIsCi0JCQkJCSAgMTAwLAotCQkJCQkg ICZjdGwsCi0JCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9TVFJJTkdTIHwgSEFTSF9DT05URVhUKTsK Kwl0YWIgPSBoYXNoX21ha2UoSnNvbkhhc2hFbnRyeSwgZm5hbWUsCisJCQkJCSJqc29uIG9iamVj dCBoYXNodGFibGUiLCAxMDApOwogCiAJc3RhdGUgPSBwYWxsb2MwX29iamVjdChKSGFzaFN0YXRl KTsKIAlzZW0gPSBwYWxsb2MwX29iamVjdChKc29uU2VtQWN0aW9uKTsKQEAgLTQyMTMsNyArNDIw Nyw2IEBAIHBvcHVsYXRlX3JlY29yZHNldF9vYmplY3Rfc3RhcnQodm9pZCAqc3RhdGUpCiB7CiAJ UG9wdWxhdGVSZWNvcmRzZXRTdGF0ZSAqX3N0YXRlID0gKFBvcHVsYXRlUmVjb3Jkc2V0U3RhdGUg Kikgc3RhdGU7CiAJaW50CQkJbGV4X2xldmVsID0gX3N0YXRlLT5sZXgtPmxleF9sZXZlbDsKLQlI QVNIQ1RMCQljdGw7CiAKIAkvKiBSZWplY3Qgb2JqZWN0IGF0IHRvcCBsZXZlbDogd2UgbXVzdCBo YXZlIGFuIGFycmF5IGF0IGxldmVsIDAgKi8KIAlpZiAobGV4X2xldmVsID09IDApCkBAIC00MjI3 LDEzICs0MjIwLDggQEAgcG9wdWxhdGVfcmVjb3Jkc2V0X29iamVjdF9zdGFydCh2b2lkICpzdGF0 ZSkKIAkJcmV0dXJuIEpTT05fU1VDQ0VTUzsKIAogCS8qIE9iamVjdCBhdCBsZXZlbCAxOiBzZXQg dXAgYSBuZXcgaGFzaCB0YWJsZSBmb3IgdGhpcyBvYmplY3QgKi8KLQljdGwua2V5c2l6ZSA9IE5B TUVEQVRBTEVOOwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoSnNvbkhhc2hFbnRyeSk7Ci0JY3Rs LmhjeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKLQlfc3RhdGUtPmpzb25faGFzaCA9IGhhc2hf Y3JlYXRlKCJqc29uIG9iamVjdCBoYXNodGFibGUiLAotCQkJCQkJCQkJMTAwLAotCQkJCQkJCQkJ JmN0bCwKLQkJCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfU1RSSU5HUyB8IEhBU0hfQ09OVEVYVCk7 CisJX3N0YXRlLT5qc29uX2hhc2ggPSBoYXNoX21ha2UoSnNvbkhhc2hFbnRyeSwgZm5hbWUsCisJ CQkJCQkJCSAgImpzb24gb2JqZWN0IGhhc2h0YWJsZSIsIDEwMCk7CiAKIAlyZXR1cm4gSlNPTl9T VUNDRVNTOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21jeHRmdW5jcy5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21jeHRmdW5jcy5jCmluZGV4IDEyYjhkNGNlZmFmLi42 OTQyNTJjZmVkNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21jeHRmdW5jcy5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9tY3h0ZnVuY3MuYwpAQCAtMTg1LDE3ICsxODUs MTAgQEAgcGdfZ2V0X2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJ UmV0dXJuU2V0SW5mbyAqcnNpbmZvID0gKFJldHVyblNldEluZm8gKikgZmNpbmZvLT5yZXN1bHRp bmZvOwogCWludAkJCWNvbnRleHRfaWQ7CiAJTGlzdAkgICAqY29udGV4dHM7Ci0JSEFTSENUTAkJ Y3RsOwogCUhUQUIJICAgKmNvbnRleHRfaWRfbG9va3VwOwogCi0JY3RsLmtleXNpemUgPSBzaXpl b2YoTWVtb3J5Q29udGV4dCk7Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihNZW1vcnlDb250ZXh0 SWQpOwotCWN0bC5oY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7Ci0KLQljb250ZXh0X2lkX2xv b2t1cCA9IGhhc2hfY3JlYXRlKCJwZ19nZXRfYmFja2VuZF9tZW1vcnlfY29udGV4dHMiLAotCQkJ CQkJCQkJMjU2LAotCQkJCQkJCQkJJmN0bCwKLQkJCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxP QlMgfCBIQVNIX0NPTlRFWFQpOworCWNvbnRleHRfaWRfbG9va3VwID0gaGFzaF9tYWtlKE1lbW9y eUNvbnRleHRJZCwgY29udGV4dCwKKwkJCQkJCQkJICAicGdfZ2V0X2JhY2tlbmRfbWVtb3J5X2Nv bnRleHRzIiwgMjU2KTsKIAogCUluaXRNYXRlcmlhbGl6ZWRTUkYoZmNpbmZvLCAwKTsKIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMgYi9zcmMvYmFja2Vu ZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYwppbmRleCBiYmFkZWNlZjVmOS4uNTMzNGM5ZGQ3NTMg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCkBAIC0yODU5LDMwICsyODU5LDI1IEBA IHJpX051bGxDaGVjayhUdXBsZURlc2MgdHVwRGVzYywKIHN0YXRpYyB2b2lkCiByaV9Jbml0SGFz aFRhYmxlcyh2b2lkKQogewotCUhBU0hDVEwJCWN0bDsKLQotCWN0bC5rZXlzaXplID0gc2l6ZW9m KE9pZCk7Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihSSV9Db25zdHJhaW50SW5mbyk7Ci0Jcmlf Y29uc3RyYWludF9jYWNoZSA9IGhhc2hfY3JlYXRlKCJSSSBjb25zdHJhaW50IGNhY2hlIiwKLQkJ CQkJCQkJCSAgUklfSU5JVF9DT05TVFJBSU5USEFTSFNJWkUsCi0JCQkJCQkJCQkgICZjdGwsIEhB U0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCXJpX2NvbnN0cmFpbnRfY2FjaGUgPSBoYXNoX21ha2Vf Y3h0KFJJX0NvbnN0cmFpbnRJbmZvLCBjb25zdHJhaW50X2lkLAorCQkJCQkJCQkJCSJSSSBjb25z dHJhaW50IGNhY2hlIiwKKwkJCQkJCQkJCQlSSV9JTklUX0NPTlNUUkFJTlRIQVNIU0laRSwKKwkJ CQkJCQkJCQlUb3BNZW1vcnlDb250ZXh0KTsKIAogCS8qIEFycmFuZ2UgdG8gZmx1c2ggY2FjaGUg b24gcGdfY29uc3RyYWludCBjaGFuZ2VzICovCiAJQ2FjaGVSZWdpc3RlclN5c2NhY2hlQ2FsbGJh Y2soQ09OU1RST0lELAogCQkJCQkJCQkgIEludmFsaWRhdGVDb25zdHJhaW50Q2FjaGVDYWxsQmFj aywKIAkJCQkJCQkJICAoRGF0dW0pIDApOwogCi0JY3RsLmtleXNpemUgPSBzaXplb2YoUklfUXVl cnlLZXkpOwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoUklfUXVlcnlIYXNoRW50cnkpOwotCXJp X3F1ZXJ5X2NhY2hlID0gaGFzaF9jcmVhdGUoIlJJIHF1ZXJ5IGNhY2hlIiwKLQkJCQkJCQkJIFJJ X0lOSVRfUVVFUllIQVNIU0laRSwKLQkJCQkJCQkJICZjdGwsIEhBU0hfRUxFTSB8IEhBU0hfQkxP QlMpOwotCi0JY3RsLmtleXNpemUgPSBzaXplb2YoUklfQ29tcGFyZUtleSk7Ci0JY3RsLmVudHJ5 c2l6ZSA9IHNpemVvZihSSV9Db21wYXJlSGFzaEVudHJ5KTsKLQlyaV9jb21wYXJlX2NhY2hlID0g aGFzaF9jcmVhdGUoIlJJIGNvbXBhcmUgY2FjaGUiLAorCXJpX3F1ZXJ5X2NhY2hlID0gaGFzaF9t YWtlX2N4dChSSV9RdWVyeUhhc2hFbnRyeSwga2V5LAorCQkJCQkJCQkgICAiUkkgcXVlcnkgY2Fj aGUiLAogCQkJCQkJCQkgICBSSV9JTklUX1FVRVJZSEFTSFNJWkUsCi0JCQkJCQkJCSAgICZjdGws IEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCQkJCQkJCQkgICBUb3BNZW1vcnlDb250ZXh0KTsK KworCXJpX2NvbXBhcmVfY2FjaGUgPSBoYXNoX21ha2VfY3h0KFJJX0NvbXBhcmVIYXNoRW50cnks IGtleSwKKwkJCQkJCQkJCSAiUkkgY29tcGFyZSBjYWNoZSIsCisJCQkJCQkJCQkgUklfSU5JVF9R VUVSWUhBU0hTSVpFLAorCQkJCQkJCQkJIFRvcE1lbW9yeUNvbnRleHQpOwogfQogCiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9ydWxldXRpbHMuYwppbmRleCAwMzNiNjI1ZjNmYy4uMGNmMTAyMGI0ZGEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKQEAgLTM4ODcsNyArMzg4Nyw2IEBAIHN0YXRpYyB2b2lk CiBzZXRfcnRhYmxlX25hbWVzKGRlcGFyc2VfbmFtZXNwYWNlICpkcG5zLCBMaXN0ICpwYXJlbnRf bmFtZXNwYWNlcywKIAkJCQkgQml0bWFwc2V0ICpyZWxzX3VzZWQpCiB7Ci0JSEFTSENUTAkJaGFz aF9jdGw7CiAJSFRBQgkgICAqbmFtZXNfaGFzaDsKIAlOYW1lSGFzaEVudHJ5ICpoZW50cnk7CiAJ Ym9vbAkJZm91bmQ7CkBAIC0zOTAzLDEzICszOTAyLDkgQEAgc2V0X3J0YWJsZV9uYW1lcyhkZXBh cnNlX25hbWVzcGFjZSAqZHBucywgTGlzdCAqcGFyZW50X25hbWVzcGFjZXMsCiAJICogV2UgdXNl IGEgaGFzaCB0YWJsZSB0byBob2xkIGtub3duIG5hbWVzLCBzbyB0aGF0IHRoaXMgcHJvY2VzcyBp cyBPKE4pCiAJICogbm90IE8oTl4yKSBmb3IgTiBuYW1lcy4KIAkgKi8KLQloYXNoX2N0bC5rZXlz aXplID0gTkFNRURBVEFMRU47Ci0JaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKE5hbWVIYXNo RW50cnkpOwotCWhhc2hfY3RsLmhjeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKLQluYW1lc19o YXNoID0gaGFzaF9jcmVhdGUoInNldF9ydGFibGVfbmFtZXMgbmFtZXMiLAotCQkJCQkJCSBsaXN0 X2xlbmd0aChkcG5zLT5ydGFibGUpLAotCQkJCQkJCSAmaGFzaF9jdGwsCi0JCQkJCQkJIEhBU0hf RUxFTSB8IEhBU0hfU1RSSU5HUyB8IEhBU0hfQ09OVEVYVCk7CisJbmFtZXNfaGFzaCA9IGhhc2hf bWFrZShOYW1lSGFzaEVudHJ5LCBuYW1lLAorCQkJCQkJICAgInNldF9ydGFibGVfbmFtZXMgbmFt ZXMiLAorCQkJCQkJICAgbGlzdF9sZW5ndGgoZHBucy0+cnRhYmxlKSk7CiAKIAkvKiBQcmVsb2Fk IHRoZSBoYXNoIHRhYmxlIHdpdGggbmFtZXMgYXBwZWFyaW5nIGluIHBhcmVudF9uYW1lc3BhY2Vz ICovCiAJZm9yZWFjaChsYywgcGFyZW50X25hbWVzcGFjZXMpCkBAIC00OTgwLDcgKzQ5NzUsNiBA QCBleHBhbmRfY29sbmFtZXNfYXJyYXlfdG8oZGVwYXJzZV9jb2x1bW5zICpjb2xpbmZvLCBpbnQg bikKIHN0YXRpYyB2b2lkCiBidWlsZF9jb2xpbmZvX25hbWVzX2hhc2goZGVwYXJzZV9jb2x1bW5z ICpjb2xpbmZvKQogewotCUhBU0hDVEwJCWhhc2hfY3RsOwogCWludAkJCWk7CiAJTGlzdENlbGwg ICAqbGM7CiAKQEAgLTQ5OTYsMTMgKzQ5OTAsMTAgQEAgYnVpbGRfY29saW5mb19uYW1lc19oYXNo KGRlcGFyc2VfY29sdW1ucyAqY29saW5mbykKIAkgKiBTZXQgdXAgdGhlIGhhc2ggdGFibGUuICBU aGUgZW50cmllcyBhcmUganVzdCBzdHJpbmdzIHdpdGggbm8gb3RoZXIKIAkgKiBwYXlsb2FkLgog CSAqLwotCWhhc2hfY3RsLmtleXNpemUgPSBOQU1FREFUQUxFTjsKLQloYXNoX2N0bC5lbnRyeXNp emUgPSBOQU1FREFUQUxFTjsKLQloYXNoX2N0bC5oY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7 Ci0JY29saW5mby0+bmFtZXNfaGFzaCA9IGhhc2hfY3JlYXRlKCJkZXBhcnNlX2NvbHVtbnMgbmFt ZXMiLAotCQkJCQkJCQkJICBjb2xpbmZvLT5udW1fY29scyArIGNvbGluZm8tPm51bV9uZXdfY29s cywKLQkJCQkJCQkJCSAgJmhhc2hfY3RsLAotCQkJCQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX1NU UklOR1MgfCBIQVNIX0NPTlRFWFQpOworCWNvbGluZm8tPm5hbWVzX2hhc2ggPQorCQloYXNoc2V0 X21ha2VfY3h0KE5hbWVEYXRhLCAiZGVwYXJzZV9jb2x1bW5zIG5hbWVzIiwKKwkJCQkJCSBjb2xp bmZvLT5udW1fY29scyArIGNvbGluZm8tPm51bV9uZXdfY29scywKKwkJCQkJCSBDdXJyZW50TWVt b3J5Q29udGV4dCk7CiAKIAkvKgogCSAqIFByZWxvYWQgdGhlIGhhc2ggdGFibGUgd2l0aCBhbnkg bmFtZXMgYWxyZWFkeSBwcmVzZW50ICh0aGVzZSB3b3VsZCBoYXZlCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9jYWNoZS9hdHRvcHRjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvYXR0b3B0Y2FjaGUuYwppbmRleCA3MmVkYzhmNjY1Yi4uNzcxYmY3N2ZhNzUgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2F0dG9wdGNhY2hlLmMKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvY2FjaGUvYXR0b3B0Y2FjaGUuYwpAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUg InV0aWxzL2NhdGNhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvaHNlYXJjaC5oIgogI2luY2x1ZGUg InV0aWxzL2ludmFsLmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1 dGlscy9zeXNjYWNoZS5oIgogI2luY2x1ZGUgInZhcmF0dC5oIgogCkBAIC05NiwyMiArOTcsMTUg QEAgcmVsYXR0X2NhY2hlX3N5c2hhc2goY29uc3Qgdm9pZCAqa2V5LCBTaXplIGtleXNpemUpCiBz dGF0aWMgdm9pZAogSW5pdGlhbGl6ZUF0dG9wdENhY2hlKHZvaWQpCiB7Ci0JSEFTSENUTAkJY3Rs OwotCi0JLyogSW5pdGlhbGl6ZSB0aGUgaGFzaCB0YWJsZS4gKi8KLQljdGwua2V5c2l6ZSA9IHNp emVvZihBdHRvcHRDYWNoZUtleSk7Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihBdHRvcHRDYWNo ZUVudHJ5KTsKLQogCS8qCiAJICogQXR0b3B0Q2FjaGVFbnRyeSB0YWtlcyBoYXNoIHZhbHVlIGZy b20gdGhlIHN5c3RlbSBjYWNoZS4gRm9yCiAJICogQXR0b3B0Q2FjaGVIYXNoIHdlIHVzZSB0aGUg c2FtZSBoYXNoIGluIG9yZGVyIHRvIHNwZWVkdXAgc2VhcmNoIGJ5IGhhc2gKIAkgKiB2YWx1ZS4g VGhpcyBpcyB1c2VkIGJ5IGhhc2hfc2VxX2luaXRfd2l0aF9oYXNoX3ZhbHVlKCkuCiAJICovCi0J Y3RsLmhhc2ggPSByZWxhdHRfY2FjaGVfc3lzaGFzaDsKLQotCUF0dG9wdENhY2hlSGFzaCA9Ci0J CWhhc2hfY3JlYXRlKCJBdHRvcHQgY2FjaGUiLCAyNTYsICZjdGwsCi0JCQkJCUhBU0hfRUxFTSB8 IEhBU0hfRlVOQ1RJT04pOworCUF0dG9wdENhY2hlSGFzaCA9IGhhc2hfbWFrZV9mbl9jeHQoQXR0 b3B0Q2FjaGVFbnRyeSwga2V5LAorCQkJCQkJCQkJICAgIkF0dG9wdCBjYWNoZSIsIDI1NiwKKwkJ CQkJCQkJCSAgIHJlbGF0dF9jYWNoZV9zeXNoYXNoLCBOVUxMLAorCQkJCQkJCQkJICAgVG9wTWVt b3J5Q29udGV4dCk7CiAKIAkvKiBNYWtlIHN1cmUgd2UndmUgaW5pdGlhbGl6ZWQgQ2FjaGVNZW1v cnlDb250ZXh0LiAqLwogCWlmICghQ2FjaGVNZW1vcnlDb250ZXh0KQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdXRpbHMvY2FjaGUvZXZ0Y2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hl L2V2dGNhY2hlLmMKaW5kZXggMmI0NDUzZTU0YTcuLjY1MmY2ZjI1YmUzIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9jYWNoZS9ldnRjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L2NhY2hlL2V2dGNhY2hlLmMKQEAgLTc2LDcgKzc2LDYgQEAgRXZlbnRDYWNoZUxvb2t1cChFdmVu dFRyaWdnZXJFdmVudCBldmVudCkKIHN0YXRpYyB2b2lkCiBCdWlsZEV2ZW50VHJpZ2dlckNhY2hl KHZvaWQpCiB7Ci0JSEFTSENUTAkJY3RsOwogCUhUQUIJICAgKmNhY2hlOwogCVJlbGF0aW9uCXJl bDsKIAlSZWxhdGlvbglpcmVsOwpAQCAtMTEzLDExICsxMTIsOSBAQCBCdWlsZEV2ZW50VHJpZ2dl ckNhY2hlKHZvaWQpCiAJRXZlbnRUcmlnZ2VyQ2FjaGVTdGF0ZSA9IEVUQ1NfUkVCVUlMRF9TVEFS VEVEOwogCiAJLyogQ3JlYXRlIG5ldyBoYXNoIHRhYmxlLiAqLwotCWN0bC5rZXlzaXplID0gc2l6 ZW9mKEV2ZW50VHJpZ2dlckV2ZW50KTsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9mKEV2ZW50VHJp Z2dlckNhY2hlRW50cnkpOwotCWN0bC5oY3h0ID0gRXZlbnRUcmlnZ2VyQ2FjaGVDb250ZXh0Owot CWNhY2hlID0gaGFzaF9jcmVhdGUoIkV2ZW50VHJpZ2dlckNhY2hlSGFzaCIsIDMyLCAmY3RsLAot CQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJY2FjaGUgPSBo YXNoX21ha2VfY3h0KEV2ZW50VHJpZ2dlckNhY2hlRW50cnksIGV2ZW50LAorCQkJCQkJICAiRXZl bnRUcmlnZ2VyQ2FjaGVIYXNoIiwgMzIsCisJCQkJCQkgIEV2ZW50VHJpZ2dlckNhY2hlQ29udGV4 dCk7CiAKIAkvKgogCSAqIFByZXBhcmUgdG8gc2NhbiBwZ19ldmVudF90cmlnZ2VyIGluIG5hbWUg b3JkZXIuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9mdW5jY2FjaGUuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2Z1bmNjYWNoZS5jCmluZGV4IDcwMWMyOTRiODhkLi5i ZWY5MzhjMzdjMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvZnVuY2NhY2hl LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvZnVuY2NhY2hlLmMKQEAgLTU4LDE5ICs1 OCwxMyBAQCBzdGF0aWMgaW50CWNmdW5jX21hdGNoKGNvbnN0IHZvaWQgKmtleTEsIGNvbnN0IHZv aWQgKmtleTIsIFNpemUga2V5c2l6ZSk7CiBzdGF0aWMgdm9pZAogY2Z1bmNfaGFzaHRhYmxlX2lu aXQodm9pZCkKIHsKLQlIQVNIQ1RMCQljdGw7Ci0KIAkvKiBkb24ndCBhbGxvdyBkb3VibGUtaW5p dGlhbGl6YXRpb24gKi8KIAlBc3NlcnQoY2Z1bmNfaGFzaHRhYmxlID09IE5VTEwpOwogCi0JY3Rs LmtleXNpemUgPSBzaXplb2YoQ2FjaGVkRnVuY3Rpb25IYXNoS2V5KTsKLQljdGwuZW50cnlzaXpl ID0gc2l6ZW9mKENhY2hlZEZ1bmN0aW9uSGFzaEVudHJ5KTsKLQljdGwuaGFzaCA9IGNmdW5jX2hh c2g7Ci0JY3RsLm1hdGNoID0gY2Z1bmNfbWF0Y2g7Ci0JY2Z1bmNfaGFzaHRhYmxlID0gaGFzaF9j cmVhdGUoIkNhY2hlZCBmdW5jdGlvbiBoYXNoIiwKLQkJCQkJCQkJICBGVU5DU19QRVJfVVNFUiwK LQkJCQkJCQkJICAmY3RsLAotCQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfRlVOQ1RJT04gfCBI QVNIX0NPTVBBUkUpOworCWNmdW5jX2hhc2h0YWJsZSA9IGhhc2hfbWFrZV9mbl9jeHQoQ2FjaGVk RnVuY3Rpb25IYXNoRW50cnksIGtleSwKKwkJCQkJCQkJCSAgICJDYWNoZWQgZnVuY3Rpb24gaGFz aCIsIEZVTkNTX1BFUl9VU0VSLAorCQkJCQkJCQkJICAgY2Z1bmNfaGFzaCwgY2Z1bmNfbWF0Y2gs CisJCQkJCQkJCQkgICBUb3BNZW1vcnlDb250ZXh0KTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9yZWxjYWNoZS5jCmluZGV4IDZiNjM0YzlmZmYxLi5jMTViMTI3YmRiZiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGls cy9jYWNoZS9yZWxjYWNoZS5jCkBAIC0xNjcyLDE3ICsxNjcyLDE0IEBAIExvb2t1cE9wY2xhc3NJ bmZvKE9pZCBvcGVyYXRvckNsYXNzT2lkLAogCiAJaWYgKE9wQ2xhc3NDYWNoZSA9PSBOVUxMKQog CXsKLQkJLyogRmlyc3QgdGltZSB0aHJvdWdoOiBpbml0aWFsaXplIHRoZSBvcGNsYXNzIGNhY2hl ICovCi0JCUhBU0hDVEwJCWN0bDsKLQogCQkvKiBBbHNvIG1ha2Ugc3VyZSBDYWNoZU1lbW9yeUNv bnRleHQgZXhpc3RzICovCiAJCWlmICghQ2FjaGVNZW1vcnlDb250ZXh0KQogCQkJQ3JlYXRlQ2Fj aGVNZW1vcnlDb250ZXh0KCk7CiAKLQkJY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQkJY3Rs LmVudHJ5c2l6ZSA9IHNpemVvZihPcENsYXNzQ2FjaGVFbnQpOwotCQlPcENsYXNzQ2FjaGUgPSBo YXNoX2NyZWF0ZSgiT3BlcmF0b3IgY2xhc3MgY2FjaGUiLCA2NCwKLQkJCQkJCQkJICAgJmN0bCwg SEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJCS8qIEZpcnN0IHRpbWUgdGhyb3VnaDogaW5pdGlh bGl6ZSB0aGUgb3BjbGFzcyBjYWNoZSAqLworCQlPcENsYXNzQ2FjaGUgPSBoYXNoX21ha2VfY3h0 KE9wQ2xhc3NDYWNoZUVudCwgb3BjbGFzc29pZCwKKwkJCQkJCQkJCSAiT3BlcmF0b3IgY2xhc3Mg Y2FjaGUiLCA2NCwKKwkJCQkJCQkJCSBUb3BNZW1vcnlDb250ZXh0KTsKIAl9CiAKIAlvcGNlbnRy eSA9IChPcENsYXNzQ2FjaGVFbnQgKikgaGFzaF9zZWFyY2goT3BDbGFzc0NhY2hlLApAQCAtMzk5 Niw3ICszOTkzLDYgQEAgUmVsYXRpb25Bc3N1bWVOZXdSZWxmaWxlbG9jYXRvcihSZWxhdGlvbiBy ZWxhdGlvbikKIHZvaWQKIFJlbGF0aW9uQ2FjaGVJbml0aWFsaXplKHZvaWQpCiB7Ci0JSEFTSENU TAkJY3RsOwogCWludAkJCWFsbG9jc2l6ZTsKIAogCS8qCkBAIC00MDA4LDEwICs0MDA0LDkgQEAg UmVsYXRpb25DYWNoZUluaXRpYWxpemUodm9pZCkKIAkvKgogCSAqIGNyZWF0ZSBoYXNodGFibGUg dGhhdCBpbmRleGVzIHRoZSByZWxjYWNoZQogCSAqLwotCWN0bC5rZXlzaXplID0gc2l6ZW9mKE9p ZCk7Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihSZWxJZENhY2hlRW50KTsKLQlSZWxhdGlvbklk Q2FjaGUgPSBoYXNoX2NyZWF0ZSgiUmVsY2FjaGUgYnkgT0lEIiwgSU5JVFJFTENBQ0hFU0laRSwK LQkJCQkJCQkJICAmY3RsLCBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwlSZWxhdGlvbklkQ2Fj aGUgPSBoYXNoX21ha2VfY3h0KFJlbElkQ2FjaGVFbnQsIHJlbG9pZCwKKwkJCQkJCQkJCSJSZWxj YWNoZSBieSBPSUQiLCBJTklUUkVMQ0FDSEVTSVpFLAorCQkJCQkJCQkJVG9wTWVtb3J5Q29udGV4 dCk7CiAKIAkvKgogCSAqIHJlc2VydmUgZW5vdWdoIGluX3Byb2dyZXNzX2xpc3Qgc2xvdHMgZm9y IG1hbnkgY2FzZXMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGZpbGVu dW1iZXJtYXAuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGZpbGVudW1iZXJtYXAuYwpp bmRleCA2Zjk3MGZhZmEwNS4uMDliMDVkZWM5ZDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL3JlbGZpbGVudW1iZXJtYXAuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9yZWxmaWxlbnVtYmVybWFwLmMKQEAgLTg1LDcgKzg1LDYgQEAgUmVsZmlsZW51bWJlck1hcElu dmFsaWRhdGVDYWxsYmFjayhEYXR1bSBhcmcsIE9pZCByZWxpZCkKIHN0YXRpYyB2b2lkCiBJbml0 aWFsaXplUmVsZmlsZW51bWJlck1hcCh2b2lkKQogewotCUhBU0hDVEwJCWN0bDsKIAlpbnQJCQlp OwogCiAJLyogTWFrZSBzdXJlIHdlJ3ZlIGluaXRpYWxpemVkIENhY2hlTWVtb3J5Q29udGV4dC4g Ki8KQEAgLTExMywxMyArMTEyLDkgQEAgSW5pdGlhbGl6ZVJlbGZpbGVudW1iZXJNYXAodm9pZCkK IAkgKiBpbml0aWFsaXplZCB3aGVuIGZtZ3JfaW5mb19jeHQoKSBhYm92ZSBFUlJPUnMgb3V0IHdp dGggYW4gb3V0IG9mIG1lbW9yeQogCSAqIGVycm9yLgogCSAqLwotCWN0bC5rZXlzaXplID0gc2l6 ZW9mKFJlbGZpbGVudW1iZXJNYXBLZXkpOwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoUmVsZmls ZW51bWJlck1hcEVudHJ5KTsKLQljdGwuaGN4dCA9IENhY2hlTWVtb3J5Q29udGV4dDsKLQogCVJl bGZpbGVudW1iZXJNYXBIYXNoID0KLQkJaGFzaF9jcmVhdGUoIlJlbGZpbGVudW1iZXJNYXAgY2Fj aGUiLCA2NCwgJmN0bCwKLQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVY VCk7CisJCWhhc2hfbWFrZV9jeHQoUmVsZmlsZW51bWJlck1hcEVudHJ5LCBrZXksCisJCQkJCSAg IlJlbGZpbGVudW1iZXJNYXAgY2FjaGUiLCA2NCwgQ2FjaGVNZW1vcnlDb250ZXh0KTsKIAogCS8q IFdhdGNoIGZvciBpbnZhbGlkYXRpb24gZXZlbnRzLiAqLwogCUNhY2hlUmVnaXN0ZXJSZWxjYWNo ZUNhbGxiYWNrKFJlbGZpbGVudW1iZXJNYXBJbnZhbGlkYXRlQ2FsbGJhY2ssCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9zcGNjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvc3BjY2FjaGUuYwppbmRleCA4ZjFhNWU2OTU5NS4uYmYwMDdkNjlhZDQgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3NwY2NhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvY2FjaGUvc3BjY2FjaGUuYwpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgInV0aWxz L2NhdGNhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvaHNlYXJjaC5oIgogI2luY2x1ZGUgInV0aWxz L2ludmFsLmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9z cGNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCiAjaW5jbHVkZSAidmFyYXR0 LmgiCkBAIC03NywxNCArNzgsMTAgQEAgSW52YWxpZGF0ZVRhYmxlU3BhY2VDYWNoZUNhbGxiYWNr KERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpCiBzdGF0aWMgdm9pZAog SW5pdGlhbGl6ZVRhYmxlU3BhY2VDYWNoZSh2b2lkKQogewotCUhBU0hDVEwJCWN0bDsKLQogCS8q IEluaXRpYWxpemUgdGhlIGhhc2ggdGFibGUuICovCi0JY3RsLmtleXNpemUgPSBzaXplb2YoT2lk KTsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9mKFRhYmxlU3BhY2VDYWNoZUVudHJ5KTsKIAlUYWJs ZVNwYWNlQ2FjaGVIYXNoID0KLQkJaGFzaF9jcmVhdGUoIlRhYmxlU3BhY2UgY2FjaGUiLCAxNiwg JmN0bCwKLQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJCWhhc2hfbWFrZV9jeHQoVGFi bGVTcGFjZUNhY2hlRW50cnksIG9pZCwKKwkJCQkJICAiVGFibGVTcGFjZSBjYWNoZSIsIDE2LCBU b3BNZW1vcnlDb250ZXh0KTsKIAogCS8qIE1ha2Ugc3VyZSB3ZSd2ZSBpbml0aWFsaXplZCBDYWNo ZU1lbW9yeUNvbnRleHQuICovCiAJaWYgKCFDYWNoZU1lbW9yeUNvbnRleHQpCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS90c19jYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvdHNfY2FjaGUuYwppbmRleCA3MWU0OWIyYjkxOS4uZTlhZTRhNWYwOTMgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3RzX2NhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvY2FjaGUvdHNfY2FjaGUuYwpAQCAtMTE3LDEyICsxMTcsOSBAQCBsb29rdXBfdHNfcGFy c2VyX2NhY2hlKE9pZCBwcnNJZCkKIAlpZiAoVFNQYXJzZXJDYWNoZUhhc2ggPT0gTlVMTCkKIAl7 CiAJCS8qIEZpcnN0IHRpbWUgdGhyb3VnaDogaW5pdGlhbGl6ZSB0aGUgaGFzaCB0YWJsZSAqLwot CQlIQVNIQ1RMCQljdGw7Ci0KLQkJY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQkJY3RsLmVu dHJ5c2l6ZSA9IHNpemVvZihUU1BhcnNlckNhY2hlRW50cnkpOwotCQlUU1BhcnNlckNhY2hlSGFz aCA9IGhhc2hfY3JlYXRlKCJUc2VhcmNoIHBhcnNlciBjYWNoZSIsIDQsCi0JCQkJCQkJCQkJJmN0 bCwgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJCVRTUGFyc2VyQ2FjaGVIYXNoID0gaGFzaF9t YWtlX2N4dChUU1BhcnNlckNhY2hlRW50cnksIHByc0lkLAorCQkJCQkJCQkJCSAgIlRzZWFyY2gg cGFyc2VyIGNhY2hlIiwgNCwKKwkJCQkJCQkJCQkgIFRvcE1lbW9yeUNvbnRleHQpOwogCQkvKiBG bHVzaCBjYWNoZSBvbiBwZ190c19wYXJzZXIgY2hhbmdlcyAqLwogCQlDYWNoZVJlZ2lzdGVyU3lz Y2FjaGVDYWxsYmFjayhUU1BBUlNFUk9JRCwgSW52YWxpZGF0ZVRTQ2FjaGVDYWxsQmFjaywKIAkJ CQkJCQkJCSAgUG9pbnRlckdldERhdHVtKFRTUGFyc2VyQ2FjaGVIYXNoKSk7CkBAIC0yMTIsMTIg KzIwOSw5IEBAIGxvb2t1cF90c19kaWN0aW9uYXJ5X2NhY2hlKE9pZCBkaWN0SWQpCiAJaWYgKFRT RGljdGlvbmFyeUNhY2hlSGFzaCA9PSBOVUxMKQogCXsKIAkJLyogRmlyc3QgdGltZSB0aHJvdWdo OiBpbml0aWFsaXplIHRoZSBoYXNoIHRhYmxlICovCi0JCUhBU0hDVEwJCWN0bDsKLQotCQljdGwu a2V5c2l6ZSA9IHNpemVvZihPaWQpOwotCQljdGwuZW50cnlzaXplID0gc2l6ZW9mKFRTRGljdGlv bmFyeUNhY2hlRW50cnkpOwotCQlUU0RpY3Rpb25hcnlDYWNoZUhhc2ggPSBoYXNoX2NyZWF0ZSgi VHNlYXJjaCBkaWN0aW9uYXJ5IGNhY2hlIiwgOCwKLQkJCQkJCQkJCQkJJmN0bCwgSEFTSF9FTEVN IHwgSEFTSF9CTE9CUyk7CisJCVRTRGljdGlvbmFyeUNhY2hlSGFzaCA9IGhhc2hfbWFrZV9jeHQo VFNEaWN0aW9uYXJ5Q2FjaGVFbnRyeSwgZGljdElkLAorCQkJCQkJCQkJCQkgICJUc2VhcmNoIGRp Y3Rpb25hcnkgY2FjaGUiLCA4LAorCQkJCQkJCQkJCQkgIFRvcE1lbW9yeUNvbnRleHQpOwogCQkv KiBGbHVzaCBjYWNoZSBvbiBwZ190c19kaWN0IGFuZCBwZ190c190ZW1wbGF0ZSBjaGFuZ2VzICov CiAJCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxiYWNrKFRTRElDVE9JRCwgSW52YWxpZGF0ZVRT Q2FjaGVDYWxsQmFjaywKIAkJCQkJCQkJCSAgUG9pbnRlckdldERhdHVtKFRTRGljdGlvbmFyeUNh Y2hlSGFzaCkpOwpAQCAtMzYzLDEyICszNTcsOSBAQCBsb29rdXBfdHNfZGljdGlvbmFyeV9jYWNo ZShPaWQgZGljdElkKQogc3RhdGljIHZvaWQKIGluaXRfdHNfY29uZmlnX2NhY2hlKHZvaWQpCiB7 Ci0JSEFTSENUTAkJY3RsOwotCi0JY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQljdGwuZW50 cnlzaXplID0gc2l6ZW9mKFRTQ29uZmlnQ2FjaGVFbnRyeSk7Ci0JVFNDb25maWdDYWNoZUhhc2gg PSBoYXNoX2NyZWF0ZSgiVHNlYXJjaCBjb25maWd1cmF0aW9uIGNhY2hlIiwgMTYsCi0JCQkJCQkJ CQkmY3RsLCBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwlUU0NvbmZpZ0NhY2hlSGFzaCA9IGhh c2hfbWFrZV9jeHQoVFNDb25maWdDYWNoZUVudHJ5LCBjZmdJZCwKKwkJCQkJCQkJCSAgIlRzZWFy Y2ggY29uZmlndXJhdGlvbiBjYWNoZSIsIDE2LAorCQkJCQkJCQkJICBUb3BNZW1vcnlDb250ZXh0 KTsKIAkvKiBGbHVzaCBjYWNoZSBvbiBwZ190c19jb25maWcgYW5kIHBnX3RzX2NvbmZpZ19tYXAg Y2hhbmdlcyAqLwogCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxiYWNrKFRTQ09ORklHT0lELCBJ bnZhbGlkYXRlVFNDYWNoZUNhbGxCYWNrLAogCQkJCQkJCQkgIFBvaW50ZXJHZXREYXR1bShUU0Nv bmZpZ0NhY2hlSGFzaCkpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHlw Y2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMKaW5kZXggOTZiYmQ2 NGRlMmMuLjU1ZmY5NjllMDlmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS90 eXBjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMKQEAgLTM5 MiwyOCArMzkyLDIzIEBAIGxvb2t1cF90eXBlX2NhY2hlKE9pZCB0eXBlX2lkLCBpbnQgZmxhZ3Mp CiAJaWYgKFR5cGVDYWNoZUhhc2ggPT0gTlVMTCkKIAl7CiAJCS8qIEZpcnN0IHRpbWUgdGhyb3Vn aDogaW5pdGlhbGl6ZSB0aGUgaGFzaCB0YWJsZSAqLwotCQlIQVNIQ1RMCQljdGw7CiAJCWludAkJ CWFsbG9jc2l6ZTsKIAotCQljdGwua2V5c2l6ZSA9IHNpemVvZihPaWQpOwotCQljdGwuZW50cnlz aXplID0gc2l6ZW9mKFR5cGVDYWNoZUVudHJ5KTsKLQogCQkvKgogCQkgKiBUeXBlQ2FjaGVFbnRy eSB0YWtlcyBoYXNoIHZhbHVlIGZyb20gdGhlIHN5c3RlbSBjYWNoZS4gRm9yCiAJCSAqIFR5cGVD YWNoZUhhc2ggd2UgdXNlIHRoZSBzYW1lIGhhc2ggaW4gb3JkZXIgdG8gc3BlZWR1cCBzZWFyY2gg YnkKIAkJICogaGFzaCB2YWx1ZS4gVGhpcyBpcyB1c2VkIGJ5IGhhc2hfc2VxX2luaXRfd2l0aF9o YXNoX3ZhbHVlKCkuCiAJCSAqLwotCQljdGwuaGFzaCA9IHR5cGVfY2FjaGVfc3lzaGFzaDsKLQot CQlUeXBlQ2FjaGVIYXNoID0gaGFzaF9jcmVhdGUoIlR5cGUgaW5mb3JtYXRpb24gY2FjaGUiLCA2 NCwKLQkJCQkJCQkJCSZjdGwsIEhBU0hfRUxFTSB8IEhBU0hfRlVOQ1RJT04pOworCQlUeXBlQ2Fj aGVIYXNoID0gaGFzaF9tYWtlX2ZuX2N4dChUeXBlQ2FjaGVFbnRyeSwgdHlwZV9pZCwKKwkJCQkJ CQkJCQkgIlR5cGUgaW5mb3JtYXRpb24gY2FjaGUiLCA2NCwKKwkJCQkJCQkJCQkgdHlwZV9jYWNo ZV9zeXNoYXNoLCBOVUxMLAorCQkJCQkJCQkJCSBUb3BNZW1vcnlDb250ZXh0KTsKIAogCQlBc3Nl cnQoUmVsSWRUb1R5cGVJZENhY2hlSGFzaCA9PSBOVUxMKTsKIAotCQljdGwua2V5c2l6ZSA9IHNp emVvZihPaWQpOwotCQljdGwuZW50cnlzaXplID0gc2l6ZW9mKFJlbElkVG9UeXBlSWRDYWNoZUVu dHJ5KTsKLQkJUmVsSWRUb1R5cGVJZENhY2hlSGFzaCA9IGhhc2hfY3JlYXRlKCJNYXAgZnJvbSBy ZWxpZCB0byBPSUQgb2YgY2FjaGVkIGNvbXBvc2l0ZSB0eXBlIiwgNjQsCi0JCQkJCQkJCQkJCSAm Y3RsLCBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwkJUmVsSWRUb1R5cGVJZENhY2hlSGFzaCA9 IGhhc2hfbWFrZV9jeHQoUmVsSWRUb1R5cGVJZENhY2hlRW50cnksIHJlbGlkLAorCQkJCQkJCQkJ CQkgICAiTWFwIGZyb20gcmVsaWQgdG8gT0lEIG9mIGNhY2hlZCBjb21wb3NpdGUgdHlwZSIsCisJ CQkJCQkJCQkJCSAgIDY0LCBUb3BNZW1vcnlDb250ZXh0KTsKIAogCQkvKiBBbHNvIHNldCB1cCBj YWxsYmFja3MgZm9yIFNJIGludmFsaWRhdGlvbnMgKi8KIAkJQ2FjaGVSZWdpc3RlclJlbGNhY2hl Q2FsbGJhY2soVHlwZUNhY2hlUmVsQ2FsbGJhY2ssIChEYXR1bSkgMCk7CkBAIC0yMDUwLDE1ICsy MDQ1LDExIEBAIGFzc2lnbl9yZWNvcmRfdHlwZV90eXBtb2QoVHVwbGVEZXNjIHR1cERlc2MpCiAJ aWYgKFJlY29yZENhY2hlSGFzaCA9PSBOVUxMKQogCXsKIAkJLyogRmlyc3QgdGltZSB0aHJvdWdo OiBpbml0aWFsaXplIHRoZSBoYXNoIHRhYmxlICovCi0JCUhBU0hDVEwJCWN0bDsKLQotCQljdGwu a2V5c2l6ZSA9IHNpemVvZihUdXBsZURlc2MpOwkvKiBqdXN0IHRoZSBwb2ludGVyICovCi0JCWN0 bC5lbnRyeXNpemUgPSBzaXplb2YoUmVjb3JkQ2FjaGVFbnRyeSk7Ci0JCWN0bC5oYXNoID0gcmVj b3JkX3R5cGVfdHlwbW9kX2hhc2g7Ci0JCWN0bC5tYXRjaCA9IHJlY29yZF90eXBlX3R5cG1vZF9j b21wYXJlOwotCQlSZWNvcmRDYWNoZUhhc2ggPSBoYXNoX2NyZWF0ZSgiUmVjb3JkIGluZm9ybWF0 aW9uIGNhY2hlIiwgNjQsCi0JCQkJCQkJCQkgICZjdGwsCi0JCQkJCQkJCQkgIEhBU0hfRUxFTSB8 IEhBU0hfRlVOQ1RJT04gfCBIQVNIX0NPTVBBUkUpOworCQlSZWNvcmRDYWNoZUhhc2ggPSBoYXNo X21ha2VfZm5fY3h0KFJlY29yZENhY2hlRW50cnksIHR1cGRlc2MsCisJCQkJCQkJCQkJICAgIlJl Y29yZCBpbmZvcm1hdGlvbiBjYWNoZSIsIDY0LAorCQkJCQkJCQkJCSAgIHJlY29yZF90eXBlX3R5 cG1vZF9oYXNoLAorCQkJCQkJCQkJCSAgIHJlY29yZF90eXBlX3R5cG1vZF9jb21wYXJlLAorCQkJ CQkJCQkJCSAgIFRvcE1lbW9yeUNvbnRleHQpOwogCiAJCS8qIEFsc28gbWFrZSBzdXJlIENhY2hl TWVtb3J5Q29udGV4dCBleGlzdHMgKi8KIAkJaWYgKCFDYWNoZU1lbW9yeUNvbnRleHQpCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9mbWdyL2RmbWdyLmMgYi9zcmMvYmFja2VuZC91dGls cy9mbWdyL2RmbWdyLmMKaW5kZXggZTYzNmNjODFjZjguLjVkOTk0NjdlMmJkIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9mbWdyL2RmbWdyLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv Zm1nci9kZm1nci5jCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgog I2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKICNpbmNsdWRlICJ1dGlscy9oc2VhcmNoLmgiCisj aW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKIAogCiAvKiBzaWduYXR1cmUgZm9yIFBvc3RncmVT UUwtc3BlY2lmaWMgbGlicmFyeSBpbml0IGZ1bmN0aW9uICovCkBAIC02NzEsMTQgKzY3Miw5IEBA IGZpbmRfcmVuZGV6dm91c192YXJpYWJsZShjb25zdCBjaGFyICp2YXJOYW1lKQogCS8qIENyZWF0 ZSBhIGhhc2h0YWJsZSBpZiB3ZSBoYXZlbid0IGFscmVhZHkgZG9uZSBzbyBpbiB0aGlzIHByb2Nl c3MgKi8KIAlpZiAocmVuZGV6dm91c0hhc2ggPT0gTlVMTCkKIAl7Ci0JCUhBU0hDVEwJCWN0bDsK LQotCQljdGwua2V5c2l6ZSA9IE5BTUVEQVRBTEVOOwotCQljdGwuZW50cnlzaXplID0gc2l6ZW9m KHJlbmRlenZvdXNIYXNoRW50cnkpOwotCQlyZW5kZXp2b3VzSGFzaCA9IGhhc2hfY3JlYXRlKCJS ZW5kZXp2b3VzIHZhcmlhYmxlIGhhc2giLAotCQkJCQkJCQkJIDE2LAotCQkJCQkJCQkJICZjdGws Ci0JCQkJCQkJCQkgSEFTSF9FTEVNIHwgSEFTSF9TVFJJTkdTKTsKKwkJcmVuZGV6dm91c0hhc2gg PSBoYXNoX21ha2VfY3h0KHJlbmRlenZvdXNIYXNoRW50cnksIHZhck5hbWUsCisJCQkJCQkJCQkg ICAiUmVuZGV6dm91cyB2YXJpYWJsZSBoYXNoIiwgMTYsCisJCQkJCQkJCQkgICBUb3BNZW1vcnlD b250ZXh0KTsKIAl9CiAKIAkvKiBGaW5kIG9yIGNyZWF0ZSB0aGUgaGFzaHRhYmxlIGVudHJ5IGZv ciB0aGlzIHZhck5hbWUgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2ZtZ3IvZm1n ci5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvZm1nci9mbWdyLmMKaW5kZXggMDU5ODRlN2VmMjYuLmRl Yjg1NTExYWQ1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9mbWdyL2ZtZ3IuYworKysg Yi9zcmMvYmFja2VuZC91dGlscy9mbWdyL2ZtZ3IuYwpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1 ZGUgInV0aWxzL2ZtZ3J0YWIuaCIKICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKICNpbmNsdWRlICJ1 dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1ZGUg InV0aWxzL3N5c2NhY2hlLmgiCiAKIC8qCkBAIC01NDcsMTQgKzU0OCw4IEBAIHJlY29yZF9DX2Z1 bmMoSGVhcFR1cGxlIHByb2NlZHVyZVR1cGxlLAogCS8qIENyZWF0ZSB0aGUgaGFzaCB0YWJsZSBp ZiBpdCBkb2Vzbid0IGV4aXN0IHlldCAqLwogCWlmIChDRnVuY0hhc2ggPT0gTlVMTCkKIAl7Ci0J CUhBU0hDVEwJCWhhc2hfY3RsOwotCi0JCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsK LQkJaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKENGdW5jSGFzaFRhYkVudHJ5KTsKLQkJQ0Z1 bmNIYXNoID0gaGFzaF9jcmVhdGUoIkNGdW5jSGFzaCIsCi0JCQkJCQkJCTEwMCwKLQkJCQkJCQkJ Jmhhc2hfY3RsLAotCQkJCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwkJQ0Z1bmNIYXNo ID0gaGFzaF9tYWtlX2N4dChDRnVuY0hhc2hUYWJFbnRyeSwgZm5fb2lkLAorCQkJCQkJCQkgICJD RnVuY0hhc2giLCAxMDAsIFRvcE1lbW9yeUNvbnRleHQpOwogCX0KIAogCWVudHJ5ID0gKENGdW5j SGFzaFRhYkVudHJ5ICopCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYwppbmRleCBhZTlkNWYzZmI3MC4uNjE4ZDAx MDBkMzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYwpAQCAtODcxLDcgKzg3MSw2IEBAIGJ1aWxkX2d1Y192 YXJpYWJsZXModm9pZCkKIHsKIAlpbnQJCQlzaXplX3ZhcnM7CiAJaW50CQkJbnVtX3ZhcnMgPSAw OwotCUhBU0hDVEwJCWhhc2hfY3RsOwogCUdVQ0hhc2hFbnRyeSAqaGVudHJ5OwogCWJvb2wJCWZv dW5kOwogCkBAIC04OTQsMTUgKzg5MywxMCBAQCBidWlsZF9ndWNfdmFyaWFibGVzKHZvaWQpCiAJ ICovCiAJc2l6ZV92YXJzID0gbnVtX3ZhcnMgKyBudW1fdmFycyAvIDQ7CiAKLQloYXNoX2N0bC5r ZXlzaXplID0gc2l6ZW9mKGNoYXIgKik7Ci0JaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKEdV Q0hhc2hFbnRyeSk7Ci0JaGFzaF9jdGwuaGFzaCA9IGd1Y19uYW1lX2hhc2g7Ci0JaGFzaF9jdGwu bWF0Y2ggPSBndWNfbmFtZV9tYXRjaDsKLQloYXNoX2N0bC5oY3h0ID0gR1VDTWVtb3J5Q29udGV4 dDsKLQlndWNfaGFzaHRhYiA9IGhhc2hfY3JlYXRlKCJHVUMgaGFzaCB0YWJsZSIsCi0JCQkJCQkJ ICBzaXplX3ZhcnMsCi0JCQkJCQkJICAmaGFzaF9jdGwsCi0JCQkJCQkJICBIQVNIX0VMRU0gfCBI QVNIX0ZVTkNUSU9OIHwgSEFTSF9DT01QQVJFIHwgSEFTSF9DT05URVhUKTsKKwlndWNfaGFzaHRh YiA9IGhhc2hfbWFrZV9mbl9jeHQoR1VDSGFzaEVudHJ5LCBndWNuYW1lLAorCQkJCQkJCQkgICAi R1VDIGhhc2ggdGFibGUiLCBzaXplX3ZhcnMsCisJCQkJCQkJCSAgIGd1Y19uYW1lX2hhc2gsIGd1 Y19uYW1lX21hdGNoLAorCQkJCQkJCQkgICBHVUNNZW1vcnlDb250ZXh0KTsKIAogCWZvciAoaW50 IGkgPSAwOyBDb25maWd1cmVOYW1lc1tpXS5uYW1lOyBpKyspCiAJewpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdXRpbHMvbWlzYy9pbmplY3Rpb25fcG9pbnQuYyBiL3NyYy9iYWNrZW5kL3V0aWxz L21pc2MvaW5qZWN0aW9uX3BvaW50LmMKaW5kZXggYzA2YjBlOWI4MDAuLmE2Y2I0NjQwMmFhIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2luamVjdGlvbl9wb2ludC5jCisrKyBi L3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvaW5qZWN0aW9uX3BvaW50LmMKQEAgLTEyNywxNiArMTI3 LDEwIEBAIGluamVjdGlvbl9wb2ludF9jYWNoZV9hZGQoY29uc3QgY2hhciAqbmFtZSwKIAkvKiBJ ZiBmaXJzdCB0aW1lLCBpbml0aWFsaXplICovCiAJaWYgKEluamVjdGlvblBvaW50Q2FjaGUgPT0g TlVMTCkKIAl7Ci0JCUhBU0hDVEwJCWhhc2hfY3RsOwotCi0JCWhhc2hfY3RsLmtleXNpemUgPSBz aXplb2YoY2hhcltJTkpfTkFNRV9NQVhMRU5dKTsKLQkJaGFzaF9jdGwuZW50cnlzaXplID0gc2l6 ZW9mKEluamVjdGlvblBvaW50Q2FjaGVFbnRyeSk7Ci0JCWhhc2hfY3RsLmhjeHQgPSBUb3BNZW1v cnlDb250ZXh0OwotCi0JCUluamVjdGlvblBvaW50Q2FjaGUgPSBoYXNoX2NyZWF0ZSgiSW5qZWN0 aW9uUG9pbnQgY2FjaGUgaGFzaCIsCi0JCQkJCQkJCQkJICBNQVhfSU5KRUNUSU9OX1BPSU5UUywK LQkJCQkJCQkJCQkgICZoYXNoX2N0bCwKLQkJCQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfU1RS SU5HUyB8IEhBU0hfQ09OVEVYVCk7CisJCUluamVjdGlvblBvaW50Q2FjaGUgPSBoYXNoX21ha2Vf Y3h0KEluamVjdGlvblBvaW50Q2FjaGVFbnRyeSwgbmFtZSwKKwkJCQkJCQkJCQkJIkluamVjdGlv blBvaW50IGNhY2hlIGhhc2giLAorCQkJCQkJCQkJCQlNQVhfSU5KRUNUSU9OX1BPSU5UUywKKwkJ CQkJCQkJCQkJVG9wTWVtb3J5Q29udGV4dCk7CiAJfQogCiAJZW50cnkgPSAoSW5qZWN0aW9uUG9p bnRDYWNoZUVudHJ5ICopCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRh bG1lbS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYwppbmRleCA0ZmE0ZDQz MjAyMS4uMGExMDgyZjQ4NDUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9y dGFsbWVtLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYwpAQCAtMTAz LDIzICsxMDMsMTkgQEAgc3RhdGljIE1lbW9yeUNvbnRleHQgVG9wUG9ydGFsQ29udGV4dCA9IE5V TEw7CiB2b2lkCiBFbmFibGVQb3J0YWxNYW5hZ2VyKHZvaWQpCiB7Ci0JSEFTSENUTAkJY3RsOwot CiAJQXNzZXJ0KFRvcFBvcnRhbENvbnRleHQgPT0gTlVMTCk7CiAKIAlUb3BQb3J0YWxDb250ZXh0 ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKFRvcE1lbW9yeUNvbnRleHQsCiAJCQkJCQkJCQkJCSAi VG9wUG9ydGFsQ29udGV4dCIsCiAJCQkJCQkJCQkJCSBBTExPQ1NFVF9ERUZBVUxUX1NJWkVTKTsK IAotCWN0bC5rZXlzaXplID0gTUFYX1BPUlRBTE5BTUVfTEVOOwotCWN0bC5lbnRyeXNpemUgPSBz aXplb2YoUG9ydGFsSGFzaEVudCk7Ci0KIAkvKgogCSAqIHVzZSBQT1JUQUxTX1BFUl9VU0VSIGFz IGEgZ3Vlc3Mgb2YgaG93IG1hbnkgaGFzaCB0YWJsZSBlbnRyaWVzIHRvCiAJICogY3JlYXRlLCBp bml0aWFsbHkKIAkgKi8KLQlQb3J0YWxIYXNoVGFibGUgPSBoYXNoX2NyZWF0ZSgiUG9ydGFsIGhh c2giLCBQT1JUQUxTX1BFUl9VU0VSLAotCQkJCQkJCQkgICZjdGwsIEhBU0hfRUxFTSB8IEhBU0hf U1RSSU5HUyk7CisJUG9ydGFsSGFzaFRhYmxlID0gaGFzaF9tYWtlX2N4dChQb3J0YWxIYXNoRW50 LCBwb3J0YWxuYW1lLAorCQkJCQkJCQkJIlBvcnRhbCBoYXNoIiwgUE9SVEFMU19QRVJfVVNFUiwK KwkJCQkJCQkJCVRvcE1lbW9yeUNvbnRleHQpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvdGltZS9jb21ib2NpZC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9jb21i b2NpZC5jCmluZGV4IDYxNGI3YzEwMDZiLi40YzMxNjc1NTM1YSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdXRpbHMvdGltZS9jb21ib2NpZC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL3RpbWUv Y29tYm9jaWQuYwpAQCAtMjE0LDggKzIxNCw2IEBAIEdldENvbWJvQ29tbWFuZElkKENvbW1hbmRJ ZCBjbWluLCBDb21tYW5kSWQgY21heCkKIAkgKi8KIAlpZiAoY29tYm9IYXNoID09IE5VTEwpCiAJ ewotCQlIQVNIQ1RMCQloYXNoX2N0bDsKLQogCQkvKiBNYWtlIGFycmF5IGZpcnN0OyBleGlzdGVu Y2Ugb2YgaGFzaCB0YWJsZSBhc3NlcnRzIGFycmF5IGV4aXN0cyAqLwogCQljb21ib0NpZHMgPSAo Q29tYm9DaWRLZXlEYXRhICopCiAJCQlNZW1vcnlDb250ZXh0QWxsb2MoVG9wVHJhbnNhY3Rpb25D b250ZXh0LApAQCAtMjIzLDE0ICsyMjEsOSBAQCBHZXRDb21ib0NvbW1hbmRJZChDb21tYW5kSWQg Y21pbiwgQ29tbWFuZElkIGNtYXgpCiAJCXNpemVDb21ib0NpZHMgPSBDQ0lEX0FSUkFZX1NJWkU7 CiAJCXVzZWRDb21ib0NpZHMgPSAwOwogCi0JCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoQ29t Ym9DaWRLZXlEYXRhKTsKLQkJaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKENvbWJvQ2lkRW50 cnlEYXRhKTsKLQkJaGFzaF9jdGwuaGN4dCA9IFRvcFRyYW5zYWN0aW9uQ29udGV4dDsKLQotCQlj b21ib0hhc2ggPSBoYXNoX2NyZWF0ZSgiQ29tYm8gQ0lEcyIsCi0JCQkJCQkJCUNDSURfSEFTSF9T SVpFLAotCQkJCQkJCQkmaGFzaF9jdGwsCi0JCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMg fCBIQVNIX0NPTlRFWFQpOworCQljb21ib0hhc2ggPSBoYXNoX21ha2VfY3h0KENvbWJvQ2lkRW50 cnlEYXRhLCBrZXksCisJCQkJCQkJCSAgIkNvbWJvIENJRHMiLCBDQ0lEX0hBU0hfU0laRSwKKwkJ CQkJCQkJICBUb3BUcmFuc2FjdGlvbkNvbnRleHQpOwogCX0KIAogCS8qCmRpZmYgLS1naXQgYS9z cmMvcGwvcGxwZXJsL3BscGVybC5jIGIvc3JjL3BsL3BscGVybC9wbHBlcmwuYwppbmRleCAwMmVj ZWQzYjJjNS4uNDkwNDRiYzgwOGIgMTAwNjQ0Ci0tLSBhL3NyYy9wbC9wbHBlcmwvcGxwZXJsLmMK KysrIGIvc3JjL3BsL3BscGVybC9wbHBlcmwuYwpAQCAtMzkwLDcgKzM5MCw2IEBAIF9QR19pbml0 KHZvaWQpCiAJICogInBscGVybC51c2Vfc3RyaWN0IgogCSAqLwogCXN0YXRpYyBib29sIGluaXRl ZCA9IGZhbHNlOwotCUhBU0hDVEwJCWhhc2hfY3RsOwogCiAJaWYgKGluaXRlZCkKIAkJcmV0dXJu OwpAQCAtNDYwLDE5ICs0NTksMTMgQEAgX1BHX2luaXQodm9pZCkKIAkvKgogCSAqIENyZWF0ZSBo YXNoIHRhYmxlcy4KIAkgKi8KLQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JaGFz aF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKHBscGVybF9pbnRlcnBfZGVzYyk7Ci0JcGxwZXJsX2lu dGVycF9oYXNoID0gaGFzaF9jcmVhdGUoIlBML1BlcmwgaW50ZXJwcmV0ZXJzIiwKLQkJCQkJCQkJ CSA4LAotCQkJCQkJCQkJICZoYXNoX2N0bCwKLQkJCQkJCQkJCSBIQVNIX0VMRU0gfCBIQVNIX0JM T0JTKTsKLQotCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YocGxwZXJsX3Byb2Nfa2V5KTsKLQlo YXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YocGxwZXJsX3Byb2NfcHRyKTsKLQlwbHBlcmxfcHJv Y19oYXNoID0gaGFzaF9jcmVhdGUoIlBML1BlcmwgcHJvY2VkdXJlcyIsCi0JCQkJCQkJCSAgIDMy LAotCQkJCQkJCQkgICAmaGFzaF9jdGwsCi0JCQkJCQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfQkxP QlMpOworCXBscGVybF9pbnRlcnBfaGFzaCA9IGhhc2hfbWFrZV9jeHQocGxwZXJsX2ludGVycF9k ZXNjLCB1c2VyX2lkLAorCQkJCQkJCQkJICAgIlBML1BlcmwgaW50ZXJwcmV0ZXJzIiwgOCwKKwkJ CQkJCQkJCSAgIFRvcE1lbW9yeUNvbnRleHQpOworCisJcGxwZXJsX3Byb2NfaGFzaCA9IGhhc2hf bWFrZV9jeHQocGxwZXJsX3Byb2NfcHRyLCBwcm9jX2tleSwKKwkJCQkJCQkJCSAiUEwvUGVybCBw cm9jZWR1cmVzIiwgMzIsCisJCQkJCQkJCQkgVG9wTWVtb3J5Q29udGV4dCk7CiAKIAkvKgogCSAq IFNhdmUgdGhlIGRlZmF1bHQgb3BtYXNrLgpAQCAtNTc4LDE0ICs1NzEsOSBAQCBzZWxlY3RfcGVy bF9jb250ZXh0KGJvb2wgdHJ1c3RlZCkKIAkvKiBNYWtlIHN1cmUgd2UgaGF2ZSBhIHF1ZXJ5X2hh c2ggZm9yIHRoaXMgaW50ZXJwcmV0ZXIgKi8KIAlpZiAoaW50ZXJwX2Rlc2MtPnF1ZXJ5X2hhc2gg PT0gTlVMTCkKIAl7Ci0JCUhBU0hDVEwJCWhhc2hfY3RsOwotCi0JCWhhc2hfY3RsLmtleXNpemUg PSBOQU1FREFUQUxFTjsKLQkJaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKHBscGVybF9xdWVy eV9lbnRyeSk7Ci0JCWludGVycF9kZXNjLT5xdWVyeV9oYXNoID0gaGFzaF9jcmVhdGUoIlBML1Bl cmwgcXVlcmllcyIsCi0JCQkJCQkJCQkJCSAgMzIsCi0JCQkJCQkJCQkJCSAgJmhhc2hfY3RsLAot CQkJCQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfU1RSSU5HUyk7CisJCWludGVycF9kZXNjLT5x dWVyeV9oYXNoID0gaGFzaF9tYWtlX2N4dChwbHBlcmxfcXVlcnlfZW50cnksIHF1ZXJ5X25hbWUs CisJCQkJCQkJCQkJCQkiUEwvUGVybCBxdWVyaWVzIiwgMzIsCisJCQkJCQkJCQkJCQlUb3BNZW1v cnlDb250ZXh0KTsKIAl9CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL3BsL3BscGdzcWwvc3JjL3Bs X2V4ZWMuYyBiL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9leGVjLmMKaW5kZXggNzUzMjUxMTdlYzku LmZiYjg4YWZmYTE1IDEwMDY0NAotLS0gYS9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZXhlYy5jCisr KyBiL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9leGVjLmMKQEAgLTM5OTUsOCArMzk5NSw2IEBAIHBs cGdzcWxfZXN0YXRlX3NldHVwKFBMcGdTUUxfZXhlY3N0YXRlICplc3RhdGUsCiAJCQkJCSBFU3Rh dGUgKnNpbXBsZV9ldmFsX2VzdGF0ZSwKIAkJCQkJIFJlc291cmNlT3duZXIgc2ltcGxlX2V2YWxf cmVzb3duZXIpCiB7Ci0JSEFTSENUTAkJY3RsOwotCiAJLyogdGhpcyBsaW5rIHdpbGwgYmUgcmVz dG9yZWQgYXQgZXhpdCBmcm9tIHBscGdzcWxfY2FsbF9oYW5kbGVyICovCiAJZnVuYy0+Y3VyX2Vz dGF0ZSA9IGVzdGF0ZTsKIApAQCAtNDA1MSwxMiArNDA0OSwxMCBAQCBwbHBnc3FsX2VzdGF0ZV9z ZXR1cChQTHBnU1FMX2V4ZWNzdGF0ZSAqZXN0YXRlLAogCS8qIENyZWF0ZSB0aGUgc2Vzc2lvbi13 aWRlIGNhc3QtZXhwcmVzc2lvbiBoYXNoIGlmIHdlIGRpZG4ndCBhbHJlYWR5ICovCiAJaWYgKGNh c3RfZXhwcl9oYXNoID09IE5VTEwpCiAJewotCQljdGwua2V5c2l6ZSA9IHNpemVvZihwbHBnc3Fs X0Nhc3RIYXNoS2V5KTsKLQkJY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihwbHBnc3FsX0Nhc3RFeHBy SGFzaEVudHJ5KTsKLQkJY2FzdF9leHByX2hhc2ggPSBoYXNoX2NyZWF0ZSgiUExwZ1NRTCBjYXN0 IGV4cHJlc3Npb25zIiwKLQkJCQkJCQkJCSAxNiwJLyogc3RhcnQgc21hbGwgYW5kIGV4dGVuZCAq LwotCQkJCQkJCQkJICZjdGwsCi0JCQkJCQkJCQkgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJ CWNhc3RfZXhwcl9oYXNoID0gaGFzaF9tYWtlX2N4dChwbHBnc3FsX0Nhc3RFeHBySGFzaEVudHJ5 LCBrZXksCisJCQkJCQkJCQkgICAiUExwZ1NRTCBjYXN0IGV4cHJlc3Npb25zIiwKKwkJCQkJCQkJ CSAgIDE2LAkvKiBzdGFydCBzbWFsbCBhbmQgZXh0ZW5kICovCisJCQkJCQkJCQkgICBUb3BNZW1v cnlDb250ZXh0KTsKIAl9CiAKIAkvKiBzZXQgdXAgZm9yIHVzZSBvZiBhcHByb3ByaWF0ZSBzaW1w bGUtZXhwcmVzc2lvbiBFU3RhdGUgYW5kIGNhc3QgaGFzaCAqLwpAQCAtNDA2NCwxMyArNDA2MCw5 IEBAIHBscGdzcWxfZXN0YXRlX3NldHVwKFBMcGdTUUxfZXhlY3N0YXRlICplc3RhdGUsCiAJewog CQllc3RhdGUtPnNpbXBsZV9ldmFsX2VzdGF0ZSA9IHNpbXBsZV9ldmFsX2VzdGF0ZTsKIAkJLyog UHJpdmF0ZSBjYXN0IGhhc2gganVzdCBsaXZlcyBpbiBmdW5jdGlvbidzIG1haW4gY29udGV4dCAq LwotCQljdGwua2V5c2l6ZSA9IHNpemVvZihwbHBnc3FsX0Nhc3RIYXNoS2V5KTsKLQkJY3RsLmVu dHJ5c2l6ZSA9IHNpemVvZihwbHBnc3FsX0Nhc3RIYXNoRW50cnkpOwotCQljdGwuaGN4dCA9IEN1 cnJlbnRNZW1vcnlDb250ZXh0OwotCQllc3RhdGUtPmNhc3RfaGFzaCA9IGhhc2hfY3JlYXRlKCJQ THBnU1FMIHByaXZhdGUgY2FzdCBjYWNoZSIsCi0JCQkJCQkJCQkJMTYsIC8qIHN0YXJ0IHNtYWxs IGFuZCBleHRlbmQgKi8KLQkJCQkJCQkJCQkmY3RsLAotCQkJCQkJCQkJCUhBU0hfRUxFTSB8IEhB U0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCQllc3RhdGUtPmNhc3RfaGFzaCA9IGhhc2hfbWFr ZShwbHBnc3FsX0Nhc3RIYXNoRW50cnksIGtleSwKKwkJCQkJCQkJCSAgIlBMcGdTUUwgcHJpdmF0 ZSBjYXN0IGNhY2hlIiwKKwkJCQkJCQkJCSAgMTYpOwkvKiBzdGFydCBzbWFsbCBhbmQgZXh0ZW5k ICovCiAJfQogCWVsc2UKIAl7CkBAIC00MDc4LDEyICs0MDcwLDEwIEBAIHBscGdzcWxfZXN0YXRl X3NldHVwKFBMcGdTUUxfZXhlY3N0YXRlICplc3RhdGUsCiAJCS8qIENyZWF0ZSB0aGUgc2Vzc2lv bi13aWRlIGNhc3QtaW5mbyBoYXNoIHRhYmxlIGlmIHdlIGRpZG4ndCBhbHJlYWR5ICovCiAJCWlm IChzaGFyZWRfY2FzdF9oYXNoID09IE5VTEwpCiAJCXsKLQkJCWN0bC5rZXlzaXplID0gc2l6ZW9m KHBscGdzcWxfQ2FzdEhhc2hLZXkpOwotCQkJY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihwbHBnc3Fs X0Nhc3RIYXNoRW50cnkpOwotCQkJc2hhcmVkX2Nhc3RfaGFzaCA9IGhhc2hfY3JlYXRlKCJQTHBn U1FMIGNhc3QgY2FjaGUiLAotCQkJCQkJCQkJCSAgIDE2LAkvKiBzdGFydCBzbWFsbCBhbmQgZXh0 ZW5kICovCi0JCQkJCQkJCQkJICAgJmN0bCwKLQkJCQkJCQkJCQkgICBIQVNIX0VMRU0gfCBIQVNI X0JMT0JTKTsKKwkJCXNoYXJlZF9jYXN0X2hhc2ggPSBoYXNoX21ha2VfY3h0KHBscGdzcWxfQ2Fz dEhhc2hFbnRyeSwga2V5LAorCQkJCQkJCQkJCQkgIlBMcGdTUUwgY2FzdCBjYWNoZSIsCisJCQkJ CQkJCQkJCSAxNiwJLyogc3RhcnQgc21hbGwgYW5kIGV4dGVuZCAqLworCQkJCQkJCQkJCQkgVG9w TWVtb3J5Q29udGV4dCk7CiAJCX0KIAkJZXN0YXRlLT5jYXN0X2hhc2ggPSBzaGFyZWRfY2FzdF9o YXNoOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9wbC9wbHB5dGhvbi9wbHB5X3BscHltb2R1bGUuYyBi L3NyYy9wbC9wbHB5dGhvbi9wbHB5X3BscHltb2R1bGUuYwppbmRleCA4OTkzMTYxMmM1Yi4uYjI2 OGIzODBjZDUgMTAwNjQ0Ci0tLSBhL3NyYy9wbC9wbHB5dGhvbi9wbHB5X3BscHltb2R1bGUuYwor KysgYi9zcmMvcGwvcGxweXRob24vcGxweV9wbHB5bW9kdWxlLmMKQEAgLTE2LDYgKzE2LDcgQEAK ICNpbmNsdWRlICJwbHB5X3N1YnhhY3RvYmplY3QuaCIKICNpbmNsdWRlICJwbHB5X3V0aWwuaCIK ICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgi CiAKIEhUQUIJICAgKlBMeV9zcGlfZXhjZXB0aW9ucyA9IE5VTEw7CiAKQEAgLTE3Miw3ICsxNzMs NiBAQCBzdGF0aWMgdm9pZAogUEx5X2FkZF9leGNlcHRpb25zKFB5T2JqZWN0ICpwbHB5KQogewog CVB5T2JqZWN0ICAgKmV4Y21vZDsKLQlIQVNIQ1RMCQloYXNoX2N0bDsKIAogCWV4Y21vZCA9IFB5 TW9kdWxlX0NyZWF0ZSgmUEx5X2V4Y19tb2R1bGUpOwogCWlmIChleGNtb2QgPT0gTlVMTCkKQEAg LTE5MywxMCArMTkzLDkgQEAgUEx5X2FkZF9leGNlcHRpb25zKFB5T2JqZWN0ICpwbHB5KQogCVBM eV9leGNfc3BpX2Vycm9yID0gUEx5X2NyZWF0ZV9leGNlcHRpb24oInBscHkuU1BJRXJyb3IiLCBO VUxMLCBOVUxMLAogCQkJCQkJCQkJCQkgIlNQSUVycm9yIiwgcGxweSk7CiAKLQloYXNoX2N0bC5r ZXlzaXplID0gc2l6ZW9mKGludCk7Ci0JaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKFBMeUV4 Y2VwdGlvbkVudHJ5KTsKLQlQTHlfc3BpX2V4Y2VwdGlvbnMgPSBoYXNoX2NyZWF0ZSgiUEwvUHl0 aG9uIFNQSSBleGNlcHRpb25zIiwgMjU2LAotCQkJCQkJCQkJICZoYXNoX2N0bCwgSEFTSF9FTEVN IHwgSEFTSF9CTE9CUyk7CisJUEx5X3NwaV9leGNlcHRpb25zID0gaGFzaF9tYWtlX2N4dChQTHlF eGNlcHRpb25FbnRyeSwgc3Fsc3RhdGUsCisJCQkJCQkJCQkgICAiUEwvUHl0aG9uIFNQSSBleGNl cHRpb25zIiwgMjU2LAorCQkJCQkJCQkJICAgVG9wTWVtb3J5Q29udGV4dCk7CiAKIAlQTHlfZ2Vu ZXJhdGVfc3BpX2V4Y2VwdGlvbnMoZXhjbW9kLCBQTHlfZXhjX3NwaV9lcnJvcik7CiB9CmRpZmYg LS1naXQgYS9zcmMvcGwvcGxweXRob24vcGxweV9wcm9jZWR1cmUuYyBiL3NyYy9wbC9wbHB5dGhv bi9wbHB5X3Byb2NlZHVyZS5jCmluZGV4IDc1MGJhNTg2ZTBjLi5mYzcyOGY3YWI4YSAxMDA2NDQK LS0tIGEvc3JjL3BsL3BscHl0aG9uL3BscHlfcHJvY2VkdXJlLmMKKysrIGIvc3JjL3BsL3BscHl0 aG9uL3BscHlfcHJvY2VkdXJlLmMKQEAgLTI5LDEyICsyOSw5IEBAIHN0YXRpYyBjaGFyICpQTHlf cHJvY2VkdXJlX211bmdlX3NvdXJjZShjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpzcmMp Owogdm9pZAogaW5pdF9wcm9jZWR1cmVfY2FjaGVzKHZvaWQpCiB7Ci0JSEFTSENUTAkJaGFzaF9j dGw7Ci0KLQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKFBMeVByb2NlZHVyZUtleSk7Ci0JaGFz aF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKFBMeVByb2NlZHVyZUVudHJ5KTsKLQlQTHlfcHJvY2Vk dXJlX2NhY2hlID0gaGFzaF9jcmVhdGUoIlBML1B5dGhvbiBwcm9jZWR1cmVzIiwgMzIsICZoYXNo X2N0bCwKLQkJCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJUEx5X3Byb2NlZHVy ZV9jYWNoZSA9IGhhc2hfbWFrZV9jeHQoUEx5UHJvY2VkdXJlRW50cnksIGtleSwKKwkJCQkJCQkJ CQkiUEwvUHl0aG9uIHByb2NlZHVyZXMiLCAzMiwKKwkJCQkJCQkJCQlUb3BNZW1vcnlDb250ZXh0 KTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9wbC90Y2wvcGx0Y2wuYyBiL3NyYy9wbC90Y2wv cGx0Y2wuYwppbmRleCAxODc2OThjY2RkMi4uNzA3MDA1MTQ2M2QgMTAwNjQ0Ci0tLSBhL3NyYy9w bC90Y2wvcGx0Y2wuYworKysgYi9zcmMvcGwvdGNsL3BsdGNsLmMKQEAgLTQwOCw3ICs0MDgsNiBA QCB2b2lkCiBfUEdfaW5pdCh2b2lkKQogewogCVRjbF9Ob3RpZmllclByb2NzIG5vdGlmaWVyOwot CUhBU0hDVEwJCWhhc2hfY3RsOwogCiAJLyogQmUgc3VyZSB3ZSBkbyBpbml0aWFsaXphdGlvbiBv bmx5IG9uY2UgKHNob3VsZCBiZSByZWR1bmRhbnQgbm93KSAqLwogCWlmIChwbHRjbF9wbV9pbml0 X2RvbmUpCkBAIC00NDYsMjIgKzQ0NSwxNiBAQCBfUEdfaW5pdCh2b2lkKQogCS8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIAkgKiBD cmVhdGUgdGhlIGhhc2ggdGFibGUgZm9yIHdvcmtpbmcgaW50ZXJwcmV0ZXJzCiAJICoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQlo YXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JaGFzaF9jdGwuZW50cnlzaXplID0gc2l6 ZW9mKHBsdGNsX2ludGVycF9kZXNjKTsKLQlwbHRjbF9pbnRlcnBfaHRhYiA9IGhhc2hfY3JlYXRl KCJQTC9UY2wgaW50ZXJwcmV0ZXJzIiwKLQkJCQkJCQkJCTgsCi0JCQkJCQkJCQkmaGFzaF9jdGws Ci0JCQkJCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwlwbHRjbF9pbnRlcnBfaHRhYiA9 IGhhc2hfbWFrZV9jeHQocGx0Y2xfaW50ZXJwX2Rlc2MsIHVzZXJfaWQsCisJCQkJCQkJCQkgICJQ TC9UY2wgaW50ZXJwcmV0ZXJzIiwgOCwKKwkJCQkJCQkJCSAgVG9wTWVtb3J5Q29udGV4dCk7CiAK IAkvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqCiAJICogQ3JlYXRlIHRoZSBoYXNoIHRhYmxlIGZvciBmdW5jdGlvbiBsb29rdXAKIAkg KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLwotCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YocGx0Y2xfcHJvY19rZXkpOwotCWhhc2hf Y3RsLmVudHJ5c2l6ZSA9IHNpemVvZihwbHRjbF9wcm9jX3B0cik7Ci0JcGx0Y2xfcHJvY19odGFi ID0gaGFzaF9jcmVhdGUoIlBML1RjbCBmdW5jdGlvbnMiLAotCQkJCQkJCQkgIDEwMCwKLQkJCQkJ CQkJICAmaGFzaF9jdGwsCi0JCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJcGx0 Y2xfcHJvY19odGFiID0gaGFzaF9tYWtlX2N4dChwbHRjbF9wcm9jX3B0ciwgcHJvY19rZXksCisJ CQkJCQkJCQkiUEwvVGNsIGZ1bmN0aW9ucyIsIDEwMCwKKwkJCQkJCQkJCVRvcE1lbW9yeUNvbnRl eHQpOwogCiAJLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgogCSAqIERlZmluZSBQTC9UY2wncyBjdXN0b20gR1VDcwpkaWZmIC0tZ2l0 IGEvc3JjL3RpbWV6b25lL3BndHouYyBiL3NyYy90aW1lem9uZS9wZ3R6LmMKaW5kZXggZWFjOTg4 YzIxZTcuLmM2OGRlOTNiNTM1IDEwMDY0NAotLS0gYS9zcmMvdGltZXpvbmUvcGd0ei5jCisrKyBi L3NyYy90aW1lem9uZS9wZ3R6LmMKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJwZ3R6Lmgi CiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgogI2luY2x1ZGUgInV0aWxzL2hzZWFyY2guaCIKKyNp bmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogCiAKIC8qIEN1cnJlbnQgc2Vzc2lvbiB0aW1lem9u ZSAoY29udHJvbGxlZCBieSBUaW1lWm9uZSBHVUMpICovCkBAIC0yMDEsMTUgKzIwMiw4IEBAIHN0 YXRpYyBIVEFCICp0aW1lem9uZV9jYWNoZSA9IE5VTEw7CiBzdGF0aWMgYm9vbAogaW5pdF90aW1l em9uZV9oYXNodGFibGUodm9pZCkKIHsKLQlIQVNIQ1RMCQloYXNoX2N0bDsKLQotCWhhc2hfY3Rs LmtleXNpemUgPSBUWl9TVFJMRU5fTUFYICsgMTsKLQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXpl b2YocGdfdHpfY2FjaGUpOwotCi0JdGltZXpvbmVfY2FjaGUgPSBoYXNoX2NyZWF0ZSgiVGltZXpv bmVzIiwKLQkJCQkJCQkJIDQsCi0JCQkJCQkJCSAmaGFzaF9jdGwsCi0JCQkJCQkJCSBIQVNIX0VM RU0gfCBIQVNIX1NUUklOR1MpOworCXRpbWV6b25lX2NhY2hlID0gaGFzaF9tYWtlX2N4dChwZ190 el9jYWNoZSwgdHpuYW1ldXBwZXIsCisJCQkJCQkJCSAgICJUaW1lem9uZXMiLCA0LCBUb3BNZW1v cnlDb250ZXh0KTsKIAlpZiAoIXRpbWV6b25lX2NhY2hlKQogCQlyZXR1cm4gZmFsc2U7CiAKLS0g CjIuNTIuMAoK --cff217dca48da7654d3c859f55554fe6e9047c1de32e45e5c1333ff31462 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v4-0004-Use-foreach_hash-macro-throughout-the-codebase.patch Content-Type: text/x-patch; charset=utf-8; name=v4-0004-Use-foreach_hash-macro-throughout-the-codebase.patch RnJvbSBmYzU0NzY3MTBkYWVjYmQ5NGRiNmZhMTZiN2UzNzZlOGY3MzMzYzk5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBUaHUsIDQgRGVjIDIwMjUgMTU6Mzk6MDkgKzAxMDAKU3ViamVjdDogW1BBVENIIHY0 IDQvNV0gVXNlIGZvcmVhY2hfaGFzaCBtYWNybyB0aHJvdWdob3V0IHRoZSBjb2RlYmFzZQoKVGhp cyBzdGFydHMgdXNpbmcgdGhlIG5ldyBmb3JlYWNoX2hhc2ggbWFjcm8gdGhyb3VnaG91dCB0aGUg Y29kZWJhc2UuClRoaXMgbWFrZXMgY29kZSBlYXNpZXIgdG8gcmVhZCwgYnV0IG9idmlvdXNseSBk b2VzIGludHJvZHVjZQpiYWNrcGF0Y2hpbmcgcHJvYmxlbXMuIFdlIGNhbiBjaG9vc2Ugbm90IHRv IGRvIHRoaXMgcmVmYWN0b3IgdG8gYXZvaWQKdGhhdC4gT3Igd2UgY291bGQgaW5zdGVhZCBjaG9v c2UgdG8gZG8gdGhlIHJlZmFjdG9yIGFuZCB0aGVuIGJhY2twYXRjaAp0aGVzZSBuZXcgbWFjcm9z IHNvIHRoZXkgY2FuIGJlIHVzZWQgaW4gYmFja3BhdGNoZWQgY29kZS4KCkF0IHRoZSB2ZXJ5IGxl YXN0IHdlIHNob3VsZCBjaG9vc2UgYSBmZXcgcGxhY2VzIHdoZXJlIHdlIHVzZSB0aGUgbmV3Cm1h Y3JvcyB0byBtYWtlIHN1cmUgdGhleSBoYXZlIGNvdmVyYWdlLgotLS0KIGNvbnRyaWIvZGJsaW5r L2RibGluay5jICAgICAgICAgICAgICAgICAgICAgICB8ICA1ICstCiAuLi4vcGdfc3RhdF9zdGF0 ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jICAgfCAzOSArKysrLS0tLS0tLQogY29udHJpYi9w Z190cmdtL3RyZ21fcmVnZXhwLmMgICAgICAgICAgICAgICAgIHwgMTggKystLS0KIGNvbnRyaWIv cG9zdGdyZXNfZmR3L2Nvbm5lY3Rpb24uYyAgICAgICAgICAgICB8IDI2ICsrLS0tLS0KIGNvbnRy aWIvcG9zdGdyZXNfZmR3L3NoaXBwYWJsZS5jICAgICAgICAgICAgICB8ICA2ICstCiBzcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9yZXdyaXRlaGVhcC5jICAgICAgICAgfCAxOCArLS0tLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3V0aWxzLmMgICAgICAgIHwgMjAgKy0tLS0tCiBzcmMv YmFja2VuZC9jYXRhbG9nL3BnX2VudW0uYyAgICAgICAgICAgICAgICAgfCAxNiArKy0tLQogc3Jj L2JhY2tlbmQvY2F0YWxvZy9zdG9yYWdlLmMgICAgICAgICAgICAgICAgIHwgMTggKystLS0KIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyAgICAgICAgICAgICAgICB8IDEyICstLS0KIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgICAgICB8ICA3ICstCiBzcmMv YmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wcmVkdGVzdC5jICAgICAgICAgfCAgNyArLQogc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX29wZXIuYyAgICAgICAgICAgICAgIHwgIDcgKy0KIHNyYy9iYWNr ZW5kL3BhcnRpdGlvbmluZy9wYXJ0ZGVzYy5jICAgICAgICAgICB8ICA2ICstCiBzcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYyAgICAgICAgICAgfCAgNyArLQogc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jICAgIHwgMzcgKystLS0tLS0tLQogLi4uL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jICAgICAgIHwgMTIgKy0tLQogc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyAgIHwgMjQgKystLS0tLQogc3Jj L2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMgICAgICAgICAgIHwgMTAgKy0tCiBzcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jICAgICAgICAgICAgICAgfCAxMiArLS0tCiBzcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMgICAgICAgICAgICAgfCAxMiArLS0tCiBzcmMv YmFja2VuZC9zdG9yYWdlL2xtZ3IvbG9jay5jICAgICAgICAgICAgICAgfCA2NyArKysrLS0tLS0t LS0tLS0tLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2NrLmMgICAgICAgICAgICAg fCAgNyArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jICAgICAgICAgIHwg MTggKy0tLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2Uvc21nci9zbWdyLmMgICAgICAgICAgICAgICB8 ICA3ICstCiBzcmMvYmFja2VuZC9zdG9yYWdlL3N5bmMvc3luYy5jICAgICAgICAgICAgICAgfCAx MyArLS0tCiBzcmMvYmFja2VuZC90c2VhcmNoL3RzX3R5cGFuYWx5emUuYyAgICAgICAgICAgfCAx MSArLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYyAgICAgICB8ICA2 ICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlfdHlwYW5hbHl6ZS5jICAgICAgfCAxNyAr Ky0tLQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYyAgICAgICAgICAgIHwgNDIg KysrKy0tLS0tLS0tCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxmaWxlbnVtYmVybWFwLmMg ICAgfCAgNiArLQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvc3BjY2FjaGUuYyAgICAgICAgICAg IHwgIDYgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3RzX2NhY2hlLmMgICAgICAgICAgICB8 ICA1ICstCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jICAgICAgICAgICAgICAgICAgfCAz MCArKy0tLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMgICAgICAgICAg ICB8IDY3ICsrKy0tLS0tLS0tLS0tLS0tLS0KIDM1IGZpbGVzIGNoYW5nZWQsIDEzMSBpbnNlcnRp b25zKCspLCA0OTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9kYmxpbmsvZGJs aW5rLmMgYi9jb250cmliL2RibGluay9kYmxpbmsuYwppbmRleCAxOTI0MThkZjRhZi4uNDNkNjFj OWNmNjUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvZGJsaW5rL2RibGluay5jCisrKyBiL2NvbnRyaWIv ZGJsaW5rL2RibGluay5jCkBAIC0xMjc1LDE0ICsxMjc1LDExIEBAIFBHX0ZVTkNUSU9OX0lORk9f VjEoZGJsaW5rX2dldF9jb25uZWN0aW9ucyk7CiBEYXR1bQogZGJsaW5rX2dldF9jb25uZWN0aW9u cyhQR19GVU5DVElPTl9BUkdTKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JcmVtb3Rl Q29ubkhhc2hFbnQgKmhlbnRyeTsKIAlBcnJheUJ1aWxkU3RhdGUgKmFzdGF0ZSA9IE5VTEw7CiAK IAlpZiAocmVtb3RlQ29ubkhhc2gpCiAJewotCQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIHJlbW90 ZUNvbm5IYXNoKTsKLQkJd2hpbGUgKChoZW50cnkgPSAocmVtb3RlQ29ubkhhc2hFbnQgKikgaGFz aF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCQlmb3JlYWNoX2hhc2gocmVtb3RlQ29u bkhhc2hFbnQsIGhlbnRyeSwgcmVtb3RlQ29ubkhhc2gpCiAJCXsKIAkJCS8qIGlnbm9yZSBpdCBp ZiBpdCdzIG5vdCBhbiBvcGVuIGNvbm5lY3Rpb24gKi8KIAkJCWlmIChoZW50cnktPnJjb25uLmNv bm4gPT0gTlVMTCkKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0 YXRfc3RhdGVtZW50cy5jIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0 ZW1lbnRzLmMKaW5kZXggNDcyMjdmODU3MjEuLjQwMjhhMjI5NTNlIDEwMDY0NAotLS0gYS9jb250 cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYworKysgYi9jb250cmli L3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYwpAQCAtNzQxLDkgKzc0MSw3 IEBAIHBnc3Nfc2htZW1fc2h1dGRvd24oaW50IGNvZGUsIERhdHVtIGFyZykKIAlGSUxFCSAgICpm aWxlOwogCWNoYXIJICAgKnFidWZmZXIgPSBOVUxMOwogCVNpemUJCXFidWZmZXJfc2l6ZSA9IDA7 Ci0JSEFTSF9TRVFfU1RBVFVTIGhhc2hfc2VxOwogCWludDMyCQludW1fZW50cmllczsKLQlwZ3Nz RW50cnkgICplbnRyeTsKIAogCS8qIERvbid0IHRyeSB0byBkdW1wIGR1cmluZyBhIGNyYXNoLiAq LwogCWlmIChjb2RlKQpAQCAtNzc3LDggKzc3NSw3IEBAIHBnc3Nfc2htZW1fc2h1dGRvd24oaW50 IGNvZGUsIERhdHVtIGFyZykKIAkgKiBXaGVuIHNlcmlhbGl6aW5nIHRvIGRpc2ssIHdlIHN0b3Jl IHF1ZXJ5IHRleHRzIGltbWVkaWF0ZWx5IGFmdGVyIHRoZWlyCiAJICogZW50cnkgZGF0YS4gIEFu eSBvcnBoYW5lZCBxdWVyeSB0ZXh0cyBhcmUgdGhlcmVieSBleGNsdWRlZC4KIAkgKi8KLQloYXNo X3NlcV9pbml0KCZoYXNoX3NlcSwgcGdzc19oYXNoKTsKLQl3aGlsZSAoKGVudHJ5ID0gaGFzaF9z ZXFfc2VhcmNoKCZoYXNoX3NlcSkpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKHBnc3NFbnRyeSwg ZW50cnksIHBnc3NfaGFzaCkKIAl7CiAJCWludAkJCWxlbiA9IGVudHJ5LT5xdWVyeV9sZW47CiAJ CWNoYXIJICAgKnFzdHIgPSBxdGV4dF9mZXRjaChlbnRyeS0+cXVlcnlfb2Zmc2V0LCBsZW4sCkBA IC03OTAsOCArNzg3LDggQEAgcGdzc19zaG1lbV9zaHV0ZG93bihpbnQgY29kZSwgRGF0dW0gYXJn KQogCQlpZiAoZndyaXRlKGVudHJ5LCBzaXplb2YocGdzc0VudHJ5KSwgMSwgZmlsZSkgIT0gMSB8 fAogCQkJZndyaXRlKHFzdHIsIDEsIGxlbiArIDEsIGZpbGUpICE9IGxlbiArIDEpCiAJCXsKLQkJ CS8qIG5vdGU6IHdlIGFzc3VtZSBoYXNoX3NlcV90ZXJtIHdvbid0IGNoYW5nZSBlcnJubyAqLwot CQkJaGFzaF9zZXFfdGVybSgmaGFzaF9zZXEpOworCQkJLyogbm90ZTogd2UgYXNzdW1lIGZvcmVh Y2hfaGFzaF90ZXJtIHdvbid0IGNoYW5nZSBlcnJubyAqLworCQkJZm9yZWFjaF9oYXNoX3Rlcm0o ZW50cnkpOwogCQkJZ290byBlcnJvcjsKIAkJfQogCX0KQEAgLTE2OTUsOCArMTY5Miw2IEBAIHBn X3N0YXRfc3RhdGVtZW50c19pbnRlcm5hbChGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywKIAlTaXpl CQlxYnVmZmVyX3NpemUgPSAwOwogCVNpemUJCWV4dGVudCA9IDA7CiAJaW50CQkJZ2NfY291bnQg PSAwOwotCUhBU0hfU0VRX1NUQVRVUyBoYXNoX3NlcTsKLQlwZ3NzRW50cnkgICplbnRyeTsKIAog CS8qCiAJICogU3VwZXJ1c2VycyBvciByb2xlcyB3aXRoIHRoZSBwcml2aWxlZ2VzIG9mIHBnX3Jl YWRfYWxsX3N0YXRzIG1lbWJlcnMKQEAgLTE4MjUsOCArMTgyMCw3IEBAIHBnX3N0YXRfc3RhdGVt ZW50c19pbnRlcm5hbChGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywKIAkJfQogCX0KIAotCWhhc2hf c2VxX2luaXQoJmhhc2hfc2VxLCBwZ3NzX2hhc2gpOwotCXdoaWxlICgoZW50cnkgPSBoYXNoX3Nl cV9zZWFyY2goJmhhc2hfc2VxKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2gocGdzc0VudHJ5LCBl bnRyeSwgcGdzc19oYXNoKQogCXsKIAkJRGF0dW0JCXZhbHVlc1tQR19TVEFUX1NUQVRFTUVOVFNf Q09MU107CiAJCWJvb2wJCW51bGxzW1BHX1NUQVRfU1RBVEVNRU5UU19DT0xTXTsKQEAgLTIxNzAs OSArMjE2NCw3IEBAIGVudHJ5X2NtcChjb25zdCB2b2lkICpsaHMsIGNvbnN0IHZvaWQgKnJocykK IHN0YXRpYyB2b2lkCiBlbnRyeV9kZWFsbG9jKHZvaWQpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIGhh c2hfc2VxOwogCXBnc3NFbnRyeSAqKmVudHJpZXM7Ci0JcGdzc0VudHJ5ICAqZW50cnk7CiAJaW50 CQkJbnZpY3RpbXM7CiAJaW50CQkJaTsKIAlTaXplCQl0b3R0ZXh0bGVuOwpAQCAtMjE5Niw4ICsy MTg4LDcgQEAgZW50cnlfZGVhbGxvYyh2b2lkKQogCXRvdHRleHRsZW4gPSAwOwogCW52YWxpZHRl eHRzID0gMDsKIAotCWhhc2hfc2VxX2luaXQoJmhhc2hfc2VxLCBwZ3NzX2hhc2gpOwotCXdoaWxl ICgoZW50cnkgPSBoYXNoX3NlcV9zZWFyY2goJmhhc2hfc2VxKSkgIT0gTlVMTCkKKwlmb3JlYWNo X2hhc2gocGdzc0VudHJ5LCBlbnRyeSwgcGdzc19oYXNoKQogCXsKIAkJZW50cmllc1tpKytdID0g ZW50cnk7CiAJCS8qICJTdGlja3kiIGVudHJpZXMgZ2V0IGEgZGlmZmVyZW50IHVzYWdlIGRlY2F5 IHJhdGUuICovCkBAIC0yNTA5LDggKzI1MDAsNiBAQCBnY19xdGV4dHModm9pZCkKIAljaGFyCSAg ICpxYnVmZmVyOwogCVNpemUJCXFidWZmZXJfc2l6ZTsKIAlGSUxFCSAgICpxZmlsZSA9IE5VTEw7 Ci0JSEFTSF9TRVFfU1RBVFVTIGhhc2hfc2VxOwotCXBnc3NFbnRyeSAgKmVudHJ5OwogCVNpemUJ CWV4dGVudDsKIAlpbnQJCQluZW50cmllczsKIApAQCAtMjU1Miw4ICsyNTQxLDcgQEAgZ2NfcXRl eHRzKHZvaWQpCiAJZXh0ZW50ID0gMDsKIAluZW50cmllcyA9IDA7CiAKLQloYXNoX3NlcV9pbml0 KCZoYXNoX3NlcSwgcGdzc19oYXNoKTsKLQl3aGlsZSAoKGVudHJ5ID0gaGFzaF9zZXFfc2VhcmNo KCZoYXNoX3NlcSkpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKHBnc3NFbnRyeSwgZW50cnksIHBn c3NfaGFzaCkKIAl7CiAJCWludAkJCXF1ZXJ5X2xlbiA9IGVudHJ5LT5xdWVyeV9sZW47CiAJCWNo YXIJICAgKnFyeSA9IHF0ZXh0X2ZldGNoKGVudHJ5LT5xdWVyeV9vZmZzZXQsCkBAIC0yNTc2LDcg KzI1NjQsNyBAQCBnY19xdGV4dHModm9pZCkKIAkJCQkJKGVycmNvZGVfZm9yX2ZpbGVfYWNjZXNz KCksCiAJCQkJCSBlcnJtc2coImNvdWxkIG5vdCB3cml0ZSBmaWxlIFwiJXNcIjogJW0iLAogCQkJ CQkJCVBHU1NfVEVYVF9GSUxFKSkpOwotCQkJaGFzaF9zZXFfdGVybSgmaGFzaF9zZXEpOworCQkJ Zm9yZWFjaF9oYXNoX3Rlcm0oZW50cnkpOwogCQkJZ290byBnY19mYWlsOwogCQl9CiAKQEAgLTI2 NDMsOCArMjYzMSw3IEBAIGdjX2ZhaWw6CiAJICogU2luY2UgdGhlIGNvbnRlbnRzIG9mIHRoZSBl eHRlcm5hbCBmaWxlIGFyZSBub3cgdW5jZXJ0YWluLCBtYXJrIGFsbAogCSAqIGhhc2h0YWJsZSBl bnRyaWVzIGFzIGhhdmluZyBpbnZhbGlkIHRleHRzLgogCSAqLwotCWhhc2hfc2VxX2luaXQoJmhh c2hfc2VxLCBwZ3NzX2hhc2gpOwotCXdoaWxlICgoZW50cnkgPSBoYXNoX3NlcV9zZWFyY2goJmhh c2hfc2VxKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2gocGdzc0VudHJ5LCBlbnRyeSwgcGdzc19o YXNoKQogCXsKIAkJZW50cnktPnF1ZXJ5X29mZnNldCA9IDA7CiAJCWVudHJ5LT5xdWVyeV9sZW4g PSAtMTsKQEAgLTI3MDgsOCArMjY5NSw2IEBAIGlmIChlKSB7IFwKIHN0YXRpYyBUaW1lc3RhbXBU egogZW50cnlfcmVzZXQoT2lkIHVzZXJpZCwgT2lkIGRiaWQsIGludDY0IHF1ZXJ5aWQsIGJvb2wg bWlubWF4X29ubHkpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIGhhc2hfc2VxOwotCXBnc3NFbnRyeSAg KmVudHJ5OwogCUZJTEUJICAgKnFmaWxlOwogCWludDY0CQludW1fZW50cmllczsKIAlpbnQ2NAkJ bnVtX3JlbW92ZSA9IDA7CkBAIC0yNzI5LDYgKzI3MTQsOCBAQCBlbnRyeV9yZXNldChPaWQgdXNl cmlkLCBPaWQgZGJpZCwgaW50NjQgcXVlcnlpZCwgYm9vbCBtaW5tYXhfb25seSkKIAlpZiAodXNl cmlkICE9IDAgJiYgZGJpZCAhPSAwICYmIHF1ZXJ5aWQgIT0gSU5UNjRDT05TVCgwKSkKIAl7CiAJ CS8qIElmIGFsbCB0aGUgcGFyYW1ldGVycyBhcmUgYXZhaWxhYmxlLCB1c2UgdGhlIGZhc3QgcGF0 aC4gKi8KKwkJcGdzc0VudHJ5ICAqZW50cnk7CisKIAkJbWVtc2V0KCZrZXksIDAsIHNpemVvZihw Z3NzSGFzaEtleSkpOwogCQlrZXkudXNlcmlkID0gdXNlcmlkOwogCQlrZXkuZGJpZCA9IGRiaWQ7 CkBAIC0yNzUyLDggKzI3MzksNyBAQCBlbnRyeV9yZXNldChPaWQgdXNlcmlkLCBPaWQgZGJpZCwg aW50NjQgcXVlcnlpZCwgYm9vbCBtaW5tYXhfb25seSkKIAllbHNlIGlmICh1c2VyaWQgIT0gMCB8 fCBkYmlkICE9IDAgfHwgcXVlcnlpZCAhPSBJTlQ2NENPTlNUKDApKQogCXsKIAkJLyogUmVzZXQg ZW50cmllcyBjb3JyZXNwb25kaW5nIHRvIHZhbGlkIHBhcmFtZXRlcnMuICovCi0JCWhhc2hfc2Vx X2luaXQoJmhhc2hfc2VxLCBwZ3NzX2hhc2gpOwotCQl3aGlsZSAoKGVudHJ5ID0gaGFzaF9zZXFf c2VhcmNoKCZoYXNoX3NlcSkpICE9IE5VTEwpCisJCWZvcmVhY2hfaGFzaChwZ3NzRW50cnksIGVu dHJ5LCBwZ3NzX2hhc2gpCiAJCXsKIAkJCWlmICgoIXVzZXJpZCB8fCBlbnRyeS0+a2V5LnVzZXJp ZCA9PSB1c2VyaWQpICYmCiAJCQkJKCFkYmlkIHx8IGVudHJ5LT5rZXkuZGJpZCA9PSBkYmlkKSAm JgpAQCAtMjc2Niw4ICsyNzUyLDcgQEAgZW50cnlfcmVzZXQoT2lkIHVzZXJpZCwgT2lkIGRiaWQs IGludDY0IHF1ZXJ5aWQsIGJvb2wgbWlubWF4X29ubHkpCiAJZWxzZQogCXsKIAkJLyogUmVzZXQg YWxsIGVudHJpZXMuICovCi0JCWhhc2hfc2VxX2luaXQoJmhhc2hfc2VxLCBwZ3NzX2hhc2gpOwot CQl3aGlsZSAoKGVudHJ5ID0gaGFzaF9zZXFfc2VhcmNoKCZoYXNoX3NlcSkpICE9IE5VTEwpCisJ CWZvcmVhY2hfaGFzaChwZ3NzRW50cnksIGVudHJ5LCBwZ3NzX2hhc2gpCiAJCXsKIAkJCVNJTkdM RV9FTlRSWV9SRVNFVChlbnRyeSk7CiAJCX0KZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfdHJnbS90 cmdtX3JlZ2V4cC5jIGIvY29udHJpYi9wZ190cmdtL3RyZ21fcmVnZXhwLmMKaW5kZXggZWNkNGQ2 Nzc5NDguLjY3ZTg2OTgxNDc2IDEwMDY0NAotLS0gYS9jb250cmliL3BnX3RyZ20vdHJnbV9yZWdl eHAuYworKysgYi9jb250cmliL3BnX3RyZ20vdHJnbV9yZWdleHAuYwpAQCAtMTQ0OSwxMCArMTQ0 OSw4IEBAIHByZWZpeENvbnRhaW5zKFRyZ21QcmVmaXggKnByZWZpeDEsIFRyZ21QcmVmaXggKnBy ZWZpeDIpCiBzdGF0aWMgYm9vbAogc2VsZWN0Q29sb3JUcmlncmFtcyhUcmdtTkZBICp0cmdtTkZB KQogewotCUhBU0hfU0VRX1NUQVRVUyBzY2FuX3N0YXR1czsKIAlpbnQJCQlhcmNzQ291bnQgPSB0 cmdtTkZBLT5hcmNzQ291bnQsCiAJCQkJaTsKLQlUcmdtU3RhdGUgICpzdGF0ZTsKIAlDb2xvclRy Z21JbmZvICpjb2xvclRyZ21zOwogCWludDY0CQl0b3RhbFRyZ21Db3VudDsKIAlmbG9hdDQJCXRv dGFsVHJnbVBlbmFsdHk7CkBAIC0xNDYzLDggKzE0NjEsNyBAQCBzZWxlY3RDb2xvclRyaWdyYW1z KFRyZ21ORkEgKnRyZ21ORkEpCiAJdHJnbU5GQS0+Y29sb3JUcmdtcyA9IGNvbG9yVHJnbXM7CiAK IAlpID0gMDsKLQloYXNoX3NlcV9pbml0KCZzY2FuX3N0YXR1cywgdHJnbU5GQS0+c3RhdGVzKTsK LQl3aGlsZSAoKHN0YXRlID0gKFRyZ21TdGF0ZSAqKSBoYXNoX3NlcV9zZWFyY2goJnNjYW5fc3Rh dHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goVHJnbVN0YXRlLCBzdGF0ZSwgdHJnbU5GQS0+ c3RhdGVzKQogCXsKIAkJTGlzdENlbGwgICAqY2VsbDsKIApAQCAtMTkyNiw4ICsxOTIzLDYgQEAg cGFja0dyYXBoKFRyZ21ORkEgKnRyZ21ORkEsIE1lbW9yeUNvbnRleHQgcmNvbnRleHQpCiAJaW50 CQkJc251bWJlciA9IDIsCiAJCQkJYXJjSW5kZXgsCiAJCQkJYXJjc0NvdW50OwotCUhBU0hfU0VR X1NUQVRVUyBzY2FuX3N0YXR1czsKLQlUcmdtU3RhdGUgICpzdGF0ZTsKIAlUcmdtUGFja0FyY0lu Zm8gKmFyY3M7CiAJVHJnbVBhY2tlZEFyYyAqcGFja2VkQXJjczsKIAlUcmdtUGFja2VkR3JhcGgg KnJlc3VsdDsKQEAgLTE5MzUsOCArMTkzMCw3IEBAIHBhY2tHcmFwaChUcmdtTkZBICp0cmdtTkZB LCBNZW1vcnlDb250ZXh0IHJjb250ZXh0KQogCQkJCWo7CiAKIAkvKiBFbnVtZXJhdGUgc3Vydml2 aW5nIHN0YXRlcywgZ2l2aW5nIGluaXQgYW5kIGZpbiByZXNlcnZlZCBudW1iZXJzICovCi0JaGFz aF9zZXFfaW5pdCgmc2Nhbl9zdGF0dXMsIHRyZ21ORkEtPnN0YXRlcyk7Ci0Jd2hpbGUgKChzdGF0 ZSA9IChUcmdtU3RhdGUgKikgaGFzaF9zZXFfc2VhcmNoKCZzY2FuX3N0YXR1cykpICE9IE5VTEwp CisJZm9yZWFjaF9oYXNoKFRyZ21TdGF0ZSwgc3RhdGUsIHRyZ21ORkEtPnN0YXRlcykKIAl7CiAJ CXdoaWxlIChzdGF0ZS0+cGFyZW50KQogCQkJc3RhdGUgPSBzdGF0ZS0+cGFyZW50OwpAQCAtMTk1 OCw4ICsxOTUyLDcgQEAgcGFja0dyYXBoKFRyZ21ORkEgKnRyZ21ORkEsIE1lbW9yeUNvbnRleHQg cmNvbnRleHQpCiAJLyogQ29sbGVjdCBhcnJheSBvZiBhbGwgYXJjcyAqLwogCWFyY3MgPSBwYWxs b2NfYXJyYXkoVHJnbVBhY2tBcmNJbmZvLCB0cmdtTkZBLT5hcmNzQ291bnQpOwogCWFyY0luZGV4 ID0gMDsKLQloYXNoX3NlcV9pbml0KCZzY2FuX3N0YXR1cywgdHJnbU5GQS0+c3RhdGVzKTsKLQl3 aGlsZSAoKHN0YXRlID0gKFRyZ21TdGF0ZSAqKSBoYXNoX3NlcV9zZWFyY2goJnNjYW5fc3RhdHVz KSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goVHJnbVN0YXRlLCBzdGF0ZSwgdHJnbU5GQS0+c3Rh dGVzKQogCXsKIAkJVHJnbVN0YXRlICAqc291cmNlID0gc3RhdGU7CiAJCUxpc3RDZWxsICAgKmNl bGw7CkBAIC0yMjAyLDE2ICsyMTk1LDEzIEBAIHN0YXRpYyB2b2lkCiBwcmludFRyZ21ORkEoVHJn bU5GQSAqdHJnbU5GQSkKIHsKIAlTdHJpbmdJbmZvRGF0YSBidWY7Ci0JSEFTSF9TRVFfU1RBVFVT IHNjYW5fc3RhdHVzOwotCVRyZ21TdGF0ZSAgKnN0YXRlOwogCVRyZ21TdGF0ZSAgKmluaXRzdGF0 ZSA9IE5VTEw7CiAKIAlpbml0U3RyaW5nSW5mbygmYnVmKTsKIAogCWFwcGVuZFN0cmluZ0luZm9T dHJpbmcoJmJ1ZiwgIlxuZGlncmFwaCB0cmFuc2Zvcm1lZE5GQSB7XG4iKTsKIAotCWhhc2hfc2Vx X2luaXQoJnNjYW5fc3RhdHVzLCB0cmdtTkZBLT5zdGF0ZXMpOwotCXdoaWxlICgoc3RhdGUgPSAo VHJnbVN0YXRlICopIGhhc2hfc2VxX3NlYXJjaCgmc2Nhbl9zdGF0dXMpKSAhPSBOVUxMKQorCWZv cmVhY2hfaGFzaChUcmdtU3RhdGUsIHN0YXRlLCB0cmdtTkZBLT5zdGF0ZXMpCiAJewogCQlMaXN0 Q2VsbCAgICpjZWxsOwogCmRpZmYgLS1naXQgYS9jb250cmliL3Bvc3RncmVzX2Zkdy9jb25uZWN0 aW9uLmMgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9jb25uZWN0aW9uLmMKaW5kZXggNWM3N2M5ZWNk ZTUuLjk5MDI1NjdmMWZiIDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9jb25uZWN0 aW9uLmMKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvY29ubmVjdGlvbi5jCkBAIC0xMDQ0LDgg KzEwNDQsNiBAQCBwZ2Zkd19yZXBvcnRfaW50ZXJuYWwoaW50IGVsZXZlbCwgUEdyZXN1bHQgKnJl cywgUEdjb25uICpjb25uLAogc3RhdGljIHZvaWQKIHBnZmR3X3hhY3RfY2FsbGJhY2soWGFjdEV2 ZW50IGV2ZW50LCB2b2lkICphcmcpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHNjYW47Ci0JQ29ubkNh Y2hlRW50cnkgKmVudHJ5OwogCUxpc3QJICAgKnBlbmRpbmdfZW50cmllcyA9IE5JTDsKIAlMaXN0 CSAgICpjYW5jZWxfcmVxdWVzdGVkID0gTklMOwogCkBAIC0xMDU3LDggKzEwNTUsNyBAQCBwZ2Zk d194YWN0X2NhbGxiYWNrKFhhY3RFdmVudCBldmVudCwgdm9pZCAqYXJnKQogCSAqIFNjYW4gYWxs IGNvbm5lY3Rpb24gY2FjaGUgZW50cmllcyB0byBmaW5kIG9wZW4gcmVtb3RlIHRyYW5zYWN0aW9u cywgYW5kCiAJICogY2xvc2UgdGhlbS4KIAkgKi8KLQloYXNoX3NlcV9pbml0KCZzY2FuLCBDb25u ZWN0aW9uSGFzaCk7Ci0Jd2hpbGUgKChlbnRyeSA9IChDb25uQ2FjaGVFbnRyeSAqKSBoYXNoX3Nl cV9zZWFyY2goJnNjYW4pKSkKKwlmb3JlYWNoX2hhc2goQ29ubkNhY2hlRW50cnksIGVudHJ5LCBD b25uZWN0aW9uSGFzaCkKIAl7CiAJCVBHcmVzdWx0ICAgKnJlczsKIApAQCAtMTE5NSw4ICsxMTky LDYgQEAgc3RhdGljIHZvaWQKIHBnZmR3X3N1YnhhY3RfY2FsbGJhY2soU3ViWGFjdEV2ZW50IGV2 ZW50LCBTdWJUcmFuc2FjdGlvbklkIG15U3ViaWQsCiAJCQkJCSAgIFN1YlRyYW5zYWN0aW9uSWQg cGFyZW50U3ViaWQsIHZvaWQgKmFyZykKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc2NhbjsKLQlDb25u Q2FjaGVFbnRyeSAqZW50cnk7CiAJaW50CQkJY3VybGV2ZWw7CiAJTGlzdAkgICAqcGVuZGluZ19l bnRyaWVzID0gTklMOwogCUxpc3QJICAgKmNhbmNlbF9yZXF1ZXN0ZWQgPSBOSUw7CkBAIC0xMjE1 LDggKzEyMTAsNyBAQCBwZ2Zkd19zdWJ4YWN0X2NhbGxiYWNrKFN1YlhhY3RFdmVudCBldmVudCwg U3ViVHJhbnNhY3Rpb25JZCBteVN1YmlkLAogCSAqIG9mIHRoZSBjdXJyZW50IGxldmVsLCBhbmQg Y2xvc2UgdGhlbS4KIAkgKi8KIAljdXJsZXZlbCA9IEdldEN1cnJlbnRUcmFuc2FjdGlvbk5lc3RM ZXZlbCgpOwotCWhhc2hfc2VxX2luaXQoJnNjYW4sIENvbm5lY3Rpb25IYXNoKTsKLQl3aGlsZSAo KGVudHJ5ID0gKENvbm5DYWNoZUVudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmc2NhbikpKQorCWZv cmVhY2hfaGFzaChDb25uQ2FjaGVFbnRyeSwgZW50cnksIENvbm5lY3Rpb25IYXNoKQogCXsKIAkJ Y2hhcgkJc3FsWzEwMF07CiAKQEAgLTEzMDcsMTQgKzEzMDEsMTAgQEAgcGdmZHdfc3VieGFjdF9j YWxsYmFjayhTdWJYYWN0RXZlbnQgZXZlbnQsIFN1YlRyYW5zYWN0aW9uSWQgbXlTdWJpZCwKIHN0 YXRpYyB2b2lkCiBwZ2Zkd19pbnZhbF9jYWxsYmFjayhEYXR1bSBhcmcsIGludCBjYWNoZWlkLCB1 aW50MzIgaGFzaHZhbHVlKQogewotCUhBU0hfU0VRX1NUQVRVUyBzY2FuOwotCUNvbm5DYWNoZUVu dHJ5ICplbnRyeTsKLQogCUFzc2VydChjYWNoZWlkID09IEZPUkVJR05TRVJWRVJPSUQgfHwgY2Fj aGVpZCA9PSBVU0VSTUFQUElOR09JRCk7CiAKIAkvKiBDb25uZWN0aW9uSGFzaCBtdXN0IGV4aXN0 IGFscmVhZHksIGlmIHdlJ3JlIHJlZ2lzdGVyZWQgKi8KLQloYXNoX3NlcV9pbml0KCZzY2FuLCBD b25uZWN0aW9uSGFzaCk7Ci0Jd2hpbGUgKChlbnRyeSA9IChDb25uQ2FjaGVFbnRyeSAqKSBoYXNo X3NlcV9zZWFyY2goJnNjYW4pKSkKKwlmb3JlYWNoX2hhc2goQ29ubkNhY2hlRW50cnksIGVudHJ5 LCBDb25uZWN0aW9uSGFzaCkKIAl7CiAJCS8qIElnbm9yZSBpbnZhbGlkIGVudHJpZXMgKi8KIAkJ aWYgKGVudHJ5LT5jb25uID09IE5VTEwpCkBAIC0yMTY1LDggKzIxNTUsNiBAQCBwb3N0Z3Jlc19m ZHdfZ2V0X2Nvbm5lY3Rpb25zX2ludGVybmFsKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLAogCQkJ CQkJCQkJICBlbnVtIHBnZmR3VmVyc2lvbiBhcGlfdmVyc2lvbikKIHsKIAlSZXR1cm5TZXRJbmZv ICpyc2luZm8gPSAoUmV0dXJuU2V0SW5mbyAqKSBmY2luZm8tPnJlc3VsdGluZm87Ci0JSEFTSF9T RVFfU1RBVFVTIHNjYW47Ci0JQ29ubkNhY2hlRW50cnkgKmVudHJ5OwogCiAJSW5pdE1hdGVyaWFs aXplZFNSRihmY2luZm8sIDApOwogCkBAIC0yMTg5LDggKzIxNzcsNyBAQCBwb3N0Z3Jlc19mZHdf Z2V0X2Nvbm5lY3Rpb25zX2ludGVybmFsKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLAogCQkJZWxv ZyhFUlJPUiwgImluY29ycmVjdCBudW1iZXIgb2Ygb3V0cHV0IGFyZ3VtZW50cyIpOwogCX0KIAot CWhhc2hfc2VxX2luaXQoJnNjYW4sIENvbm5lY3Rpb25IYXNoKTsKLQl3aGlsZSAoKGVudHJ5ID0g KENvbm5DYWNoZUVudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmc2NhbikpKQorCWZvcmVhY2hfaGFz aChDb25uQ2FjaGVFbnRyeSwgZW50cnksIENvbm5lY3Rpb25IYXNoKQogCXsKIAkJRm9yZWlnblNl cnZlciAqc2VydmVyOwogCQlEYXR1bQkJdmFsdWVzW1BPU1RHUkVTX0ZEV19HRVRfQ09OTkVDVElP TlNfQ09MU10gPSB7MH07CkBAIC0yMzkyLDggKzIzNzksNiBAQCBwb3N0Z3Jlc19mZHdfZGlzY29u bmVjdF9hbGwoUEdfRlVOQ1RJT05fQVJHUykKIHN0YXRpYyBib29sCiBkaXNjb25uZWN0X2NhY2hl ZF9jb25uZWN0aW9ucyhPaWQgc2VydmVyaWQpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHNjYW47Ci0J Q29ubkNhY2hlRW50cnkgKmVudHJ5OwogCWJvb2wJCWFsbCA9ICFPaWRJc1ZhbGlkKHNlcnZlcmlk KTsKIAlib29sCQlyZXN1bHQgPSBmYWxzZTsKIApAQCAtMjQwNCw4ICsyMzg5LDcgQEAgZGlzY29u bmVjdF9jYWNoZWRfY29ubmVjdGlvbnMoT2lkIHNlcnZlcmlkKQogCWlmICghQ29ubmVjdGlvbkhh c2gpCiAJCXJldHVybiBmYWxzZTsKIAotCWhhc2hfc2VxX2luaXQoJnNjYW4sIENvbm5lY3Rpb25I YXNoKTsKLQl3aGlsZSAoKGVudHJ5ID0gKENvbm5DYWNoZUVudHJ5ICopIGhhc2hfc2VxX3NlYXJj aCgmc2NhbikpKQorCWZvcmVhY2hfaGFzaChDb25uQ2FjaGVFbnRyeSwgZW50cnksIENvbm5lY3Rp b25IYXNoKQogCXsKIAkJLyogSWdub3JlIGNhY2hlIGVudHJ5IGlmIG5vIG9wZW4gY29ubmVjdGlv biByaWdodCBub3cuICovCiAJCWlmICghZW50cnktPmNvbm4pCmRpZmYgLS1naXQgYS9jb250cmli L3Bvc3RncmVzX2Zkdy9zaGlwcGFibGUuYyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3NoaXBwYWJs ZS5jCmluZGV4IGVjMTg1MjQ5MGUwLi5jMWQ2MGU1ODJhNiAxMDA2NDQKLS0tIGEvY29udHJpYi9w b3N0Z3Jlc19mZHcvc2hpcHBhYmxlLmMKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvc2hpcHBh YmxlLmMKQEAgLTY1LDE3ICs2NSwxMyBAQCB0eXBlZGVmIHN0cnVjdAogc3RhdGljIHZvaWQKIElu dmFsaWRhdGVTaGlwcGFibGVDYWNoZUNhbGxiYWNrKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVp bnQzMiBoYXNodmFsdWUpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlTaGlwcGFibGVD YWNoZUVudHJ5ICplbnRyeTsKLQogCS8qCiAJICogSW4gcHJpbmNpcGxlIHdlIGNvdWxkIGZsdXNo IG9ubHkgY2FjaGUgZW50cmllcyByZWxhdGluZyB0byB0aGUKIAkgKiBwZ19mb3JlaWduX3NlcnZl ciBlbnRyeSBiZWluZyBvdXRkYXRlZDsgYnV0IHRoYXQgd291bGQgYmUgbW9yZQogCSAqIGNvbXBs aWNhdGVkLCBhbmQgaXQncyBwcm9iYWJseSBub3Qgd29ydGggdGhlIHRyb3VibGUuICBTbyBmb3Ig bm93LCBqdXN0CiAJICogZmx1c2ggYWxsIGVudHJpZXMuCiAJICovCi0JaGFzaF9zZXFfaW5pdCgm c3RhdHVzLCBTaGlwcGFibGVDYWNoZUhhc2gpOwotCXdoaWxlICgoZW50cnkgPSAoU2hpcHBhYmxl Q2FjaGVFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFj aF9oYXNoKFNoaXBwYWJsZUNhY2hlRW50cnksIGVudHJ5LCBTaGlwcGFibGVDYWNoZUhhc2gpCiAJ ewogCQlpZiAoaGFzaF9zZWFyY2goU2hpcHBhYmxlQ2FjaGVIYXNoLAogCQkJCQkJJmVudHJ5LT5r ZXksCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9yZXdyaXRlaGVhcC5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcmV3cml0ZWhlYXAuYwppbmRleCAzNjg3NzRiNTI3MC4u MDc5YWZmODhlMjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Jld3JpdGVo ZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcmV3cml0ZWhlYXAuYwpAQCAtMjkw LDE2ICsyOTAsMTEgQEAgYmVnaW5faGVhcF9yZXdyaXRlKFJlbGF0aW9uIG9sZF9oZWFwLCBSZWxh dGlvbiBuZXdfaGVhcCwgVHJhbnNhY3Rpb25JZCBvbGRlc3RfeG0KIHZvaWQKIGVuZF9oZWFwX3Jl d3JpdGUoUmV3cml0ZVN0YXRlIHN0YXRlKQogewotCUhBU0hfU0VRX1NUQVRVUyBzZXFfc3RhdHVz OwotCVVucmVzb2x2ZWRUdXAgdW5yZXNvbHZlZDsKLQogCS8qCiAJICogV3JpdGUgYW55IHJlbWFp bmluZyB0dXBsZXMgaW4gdGhlIFVucmVzb2x2ZWRUdXBzIHRhYmxlLiBJZiB3ZSBoYXZlIGFueQog CSAqIGxlZnQsIHRoZXkgc2hvdWxkIGluIGZhY3QgYmUgZGVhZCwgYnV0IGxldCdzIGVyciBvbiB0 aGUgc2FmZSBzaWRlLgogCSAqLwotCWhhc2hfc2VxX2luaXQoJnNlcV9zdGF0dXMsIHN0YXRlLT5y c191bnJlc29sdmVkX3R1cHMpOwotCi0Jd2hpbGUgKCh1bnJlc29sdmVkID0gaGFzaF9zZXFfc2Vh cmNoKCZzZXFfc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goVW5yZXNvbHZlZFR1cERh dGEsIHVucmVzb2x2ZWQsIHN0YXRlLT5yc191bnJlc29sdmVkX3R1cHMpCiAJewogCQlJdGVtUG9p bnRlclNldEludmFsaWQoJnVucmVzb2x2ZWQtPnR1cGxlLT50X2RhdGEtPnRfY3RpZCk7CiAJCXJh d19oZWFwX2luc2VydChzdGF0ZSwgdW5yZXNvbHZlZC0+dHVwbGUpOwpAQCAtNzk0LDggKzc4OSw2 IEBAIGxvZ2ljYWxfYmVnaW5faGVhcF9yZXdyaXRlKFJld3JpdGVTdGF0ZSBzdGF0ZSkKIHN0YXRp YyB2b2lkCiBsb2dpY2FsX2hlYXBfcmV3cml0ZV9mbHVzaF9tYXBwaW5ncyhSZXdyaXRlU3RhdGUg c3RhdGUpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHNlcV9zdGF0dXM7Ci0JUmV3cml0ZU1hcHBpbmdG aWxlICpzcmM7CiAJZGxpc3RfbXV0YWJsZV9pdGVyIGl0ZXI7CiAKIAlBc3NlcnQoc3RhdGUtPnJz X2xvZ2ljYWxfcmV3cml0ZSk7CkBAIC04MDcsOCArODAwLDcgQEAgbG9naWNhbF9oZWFwX3Jld3Jp dGVfZmx1c2hfbWFwcGluZ3MoUmV3cml0ZVN0YXRlIHN0YXRlKQogCWVsb2coREVCVUcxLCAiZmx1 c2hpbmcgJXUgbG9naWNhbCByZXdyaXRlIG1hcHBpbmcgZW50cmllcyIsCiAJCSBzdGF0ZS0+cnNf bnVtX3Jld3JpdGVfbWFwcGluZ3MpOwogCi0JaGFzaF9zZXFfaW5pdCgmc2VxX3N0YXR1cywgc3Rh dGUtPnJzX2xvZ2ljYWxfbWFwcGluZ3MpOwotCXdoaWxlICgoc3JjID0gKFJld3JpdGVNYXBwaW5n RmlsZSAqKSBoYXNoX3NlcV9zZWFyY2goJnNlcV9zdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hf aGFzaChSZXdyaXRlTWFwcGluZ0ZpbGUsIHNyYywgc3RhdGUtPnJzX2xvZ2ljYWxfbWFwcGluZ3Mp CiAJewogCQljaGFyCSAgICp3YWxkYXRhOwogCQljaGFyCSAgICp3YWxkYXRhX3N0YXJ0OwpAQCAt ODkyLDkgKzg4NCw2IEBAIGxvZ2ljYWxfaGVhcF9yZXdyaXRlX2ZsdXNoX21hcHBpbmdzKFJld3Jp dGVTdGF0ZSBzdGF0ZSkKIHN0YXRpYyB2b2lkCiBsb2dpY2FsX2VuZF9oZWFwX3Jld3JpdGUoUmV3 cml0ZVN0YXRlIHN0YXRlKQogewotCUhBU0hfU0VRX1NUQVRVUyBzZXFfc3RhdHVzOwotCVJld3Jp dGVNYXBwaW5nRmlsZSAqc3JjOwotCiAJLyogZG9uZSwgbm8gbG9naWNhbCByZXdyaXRlIGluIHBy b2dyZXNzICovCiAJaWYgKCFzdGF0ZS0+cnNfbG9naWNhbF9yZXdyaXRlKQogCQlyZXR1cm47CkBA IC05MDQsOCArODkzLDcgQEAgbG9naWNhbF9lbmRfaGVhcF9yZXdyaXRlKFJld3JpdGVTdGF0ZSBz dGF0ZSkKIAkJbG9naWNhbF9oZWFwX3Jld3JpdGVfZmx1c2hfbWFwcGluZ3Moc3RhdGUpOwogCiAJ LyogSXRlcmF0ZSBvdmVyIGFsbCBtYXBwaW5ncyB3ZSBoYXZlIHdyaXR0ZW4gYW5kIGZzeW5jIHRo ZSBmaWxlcy4gKi8KLQloYXNoX3NlcV9pbml0KCZzZXFfc3RhdHVzLCBzdGF0ZS0+cnNfbG9naWNh bF9tYXBwaW5ncyk7Ci0Jd2hpbGUgKChzcmMgPSAoUmV3cml0ZU1hcHBpbmdGaWxlICopIGhhc2hf c2VxX3NlYXJjaCgmc2VxX3N0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFJld3JpdGVN YXBwaW5nRmlsZSwgc3JjLCBzdGF0ZS0+cnNfbG9naWNhbF9tYXBwaW5ncykKIAl7CiAJCWlmIChG aWxlU3luYyhzcmMtPnZmZCwgV0FJVF9FVkVOVF9MT0dJQ0FMX1JFV1JJVEVfU1lOQykgIT0gMCkK IAkJCWVyZXBvcnQoZGF0YV9zeW5jX2VsZXZlbChFUlJPUiksCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ndXRpbHMuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL3hsb2d1dGlscy5jCmluZGV4IGQxMWU0MmM5NDkwLi4zYzdmYzY1YjhkNCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3V0aWxzLmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0veGxvZ3V0aWxzLmMKQEAgLTE2MCwxNSArMTYwLDEwIEBAIHN0YXRp YyB2b2lkCiBmb3JnZXRfaW52YWxpZF9wYWdlcyhSZWxGaWxlTG9jYXRvciBsb2NhdG9yLCBGb3Jr TnVtYmVyIGZvcmtubywKIAkJCQkJIEJsb2NrTnVtYmVyIG1pbmJsa25vKQogewotCUhBU0hfU0VR X1NUQVRVUyBzdGF0dXM7Ci0JeGxfaW52YWxpZF9wYWdlICpoZW50cnk7Ci0KIAlpZiAoaW52YWxp ZF9wYWdlX3RhYiA9PSBOVUxMKQogCQlyZXR1cm47CQkJCQkvKiBub3RoaW5nIHRvIGRvICovCiAK LQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIGludmFsaWRfcGFnZV90YWIpOwotCi0Jd2hpbGUgKCho ZW50cnkgPSAoeGxfaW52YWxpZF9wYWdlICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0g TlVMTCkKKwlmb3JlYWNoX2hhc2goeGxfaW52YWxpZF9wYWdlLCBoZW50cnksIGludmFsaWRfcGFn ZV90YWIpCiAJewogCQlpZiAoUmVsRmlsZUxvY2F0b3JFcXVhbHMoaGVudHJ5LT5rZXkubG9jYXRv ciwgbG9jYXRvcikgJiYKIAkJCWhlbnRyeS0+a2V5LmZvcmtubyA9PSBmb3Jrbm8gJiYKQEAgLTE5 MCwxNSArMTg1LDEwIEBAIGZvcmdldF9pbnZhbGlkX3BhZ2VzKFJlbEZpbGVMb2NhdG9yIGxvY2F0 b3IsIEZvcmtOdW1iZXIgZm9ya25vLAogc3RhdGljIHZvaWQKIGZvcmdldF9pbnZhbGlkX3BhZ2Vz X2RiKE9pZCBkYmlkKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JeGxfaW52YWxpZF9w YWdlICpoZW50cnk7Ci0KIAlpZiAoaW52YWxpZF9wYWdlX3RhYiA9PSBOVUxMKQogCQlyZXR1cm47 CQkJCQkvKiBub3RoaW5nIHRvIGRvICovCiAKLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIGludmFs aWRfcGFnZV90YWIpOwotCi0Jd2hpbGUgKChoZW50cnkgPSAoeGxfaW52YWxpZF9wYWdlICopIGhh c2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goeGxfaW52YWxp ZF9wYWdlLCBoZW50cnksIGludmFsaWRfcGFnZV90YWIpCiAJewogCQlpZiAoaGVudHJ5LT5rZXku bG9jYXRvci5kYk9pZCA9PSBkYmlkKQogCQl7CkBAIC0yMjgsMjAgKzIxOCwxNiBAQCBYTG9nSGF2 ZUludmFsaWRQYWdlcyh2b2lkKQogdm9pZAogWExvZ0NoZWNrSW52YWxpZFBhZ2VzKHZvaWQpCiB7 Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQl4bF9pbnZhbGlkX3BhZ2UgKmhlbnRyeTsKIAli b29sCQlmb3VuZG9uZSA9IGZhbHNlOwogCiAJaWYgKGludmFsaWRfcGFnZV90YWIgPT0gTlVMTCkK IAkJcmV0dXJuOwkJCQkJLyogbm90aGluZyB0byBkbyAqLwogCi0JaGFzaF9zZXFfaW5pdCgmc3Rh dHVzLCBpbnZhbGlkX3BhZ2VfdGFiKTsKLQogCS8qCiAJICogT3VyIHN0cmF0ZWd5IGlzIHRvIGVt aXQgV0FSTklORyBtZXNzYWdlcyBmb3IgYWxsIHJlbWFpbmluZyBlbnRyaWVzIGFuZAogCSAqIG9u bHkgUEFOSUMgYWZ0ZXIgd2UndmUgZHVtcGVkIGFsbCB0aGUgYXZhaWxhYmxlIGluZm8uCiAJICov Ci0Jd2hpbGUgKChoZW50cnkgPSAoeGxfaW52YWxpZF9wYWdlICopIGhhc2hfc2VxX3NlYXJjaCgm c3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goeGxfaW52YWxpZF9wYWdlLCBoZW50cnks IGludmFsaWRfcGFnZV90YWIpCiAJewogCQlyZXBvcnRfaW52YWxpZF9wYWdlKFdBUk5JTkcsIGhl bnRyeS0+a2V5LmxvY2F0b3IsIGhlbnRyeS0+a2V5LmZvcmtubywKIAkJCQkJCQloZW50cnktPmtl eS5ibGtubywgaGVudHJ5LT5wcmVzZW50KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFs b2cvcGdfZW51bS5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19lbnVtLmMKaW5kZXggODZjOGJh ZGE1NTcuLjUyODgxYWFmOGJhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2Vu dW0uYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2VudW0uYwpAQCAtODM4LDEyICs4Mzgs MTAgQEAgU2VyaWFsaXplVW5jb21taXR0ZWRFbnVtcyh2b2lkICpzcGFjZSwgU2l6ZSBzaXplKQog CS8qIFdyaXRlIG91dCBhbGwgdGhlIE9JRHMgZnJvbSB0aGUgdHlwZXMgaGFzaCB0YWJsZSwgaWYg dGhlcmUgaXMgb25lLiAqLwogCWlmICh1bmNvbW1pdHRlZF9lbnVtX3R5cGVzKQogCXsKLQkJSEFT SF9TRVFfU1RBVFVTIHN0YXR1czsKLQkJT2lkCQkgICAqdmFsdWU7Ci0KLQkJaGFzaF9zZXFfaW5p dCgmc3RhdHVzLCB1bmNvbW1pdHRlZF9lbnVtX3R5cGVzKTsKLQkJd2hpbGUgKCh2YWx1ZSA9IChP aWQgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSkKKwkJZm9yZWFjaF9oYXNoKE9pZCwgdmFs dWUsIHVuY29tbWl0dGVkX2VudW1fdHlwZXMpCisJCXsKIAkJCSpzZXJpYWxpemVkKysgPSAqdmFs dWU7CisJCX0KIAl9CiAKIAkvKiBXcml0ZSBvdXQgdGhlIHRlcm1pbmF0b3IuICovCkBAIC04NTIs MTIgKzg1MCw4IEBAIFNlcmlhbGl6ZVVuY29tbWl0dGVkRW51bXModm9pZCAqc3BhY2UsIFNpemUg c2l6ZSkKIAkvKiBXcml0ZSBvdXQgYWxsIHRoZSBPSURzIGZyb20gdGhlIHZhbHVlcyBoYXNoIHRh YmxlLCBpZiB0aGVyZSBpcyBvbmUuICovCiAJaWYgKHVuY29tbWl0dGVkX2VudW1fdmFsdWVzKQog CXsKLQkJSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQkJT2lkCQkgICAqdmFsdWU7Ci0KLQkJaGFz aF9zZXFfaW5pdCgmc3RhdHVzLCB1bmNvbW1pdHRlZF9lbnVtX3ZhbHVlcyk7Ci0JCXdoaWxlICgo dmFsdWUgPSAoT2lkICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkpCi0JCQkqc2VyaWFsaXpl ZCsrID0gKnZhbHVlOworCQlmb3JlYWNoX2hhc2goT2lkLCB2YWx1ZSwgdW5jb21taXR0ZWRfZW51 bV92YWx1ZXMpCisJCQkqIHNlcmlhbGl6ZWQrKyA9ICp2YWx1ZTsKIAl9CiAKIAkvKiBXcml0ZSBv dXQgdGhlIHRlcm1pbmF0b3IuICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N0 b3JhZ2UuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3RvcmFnZS5jCmluZGV4IGRiM2UwODMxOWI1 Li4yN2QyMWI1NTZiZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zdG9yYWdlLmMK KysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zdG9yYWdlLmMKQEAgLTU5NCwxMCArNTk0LDcgQEAg dm9pZAogU2VyaWFsaXplUGVuZGluZ1N5bmNzKFNpemUgbWF4U2l6ZSwgY2hhciAqc3RhcnRBZGRy ZXNzKQogewogCUhUQUIJICAgKnRtcGhhc2g7Ci0JSEFTSF9TRVFfU1RBVFVTIHNjYW47Ci0JUGVu ZGluZ1JlbFN5bmMgKnN5bmM7CiAJUGVuZGluZ1JlbERlbGV0ZSAqZGVsZXRlOwotCVJlbEZpbGVM b2NhdG9yICpzcmM7CiAJUmVsRmlsZUxvY2F0b3IgKmRlc3QgPSAoUmVsRmlsZUxvY2F0b3IgKikg c3RhcnRBZGRyZXNzOwogCiAJaWYgKCFwZW5kaW5nU3luY0hhc2gpCkBAIC02MDgsOSArNjA1LDEw IEBAIFNlcmlhbGl6ZVBlbmRpbmdTeW5jcyhTaXplIG1heFNpemUsIGNoYXIgKnN0YXJ0QWRkcmVz cykKIAkJCQkJCSAgIGhhc2hfZ2V0X251bV9lbnRyaWVzKHBlbmRpbmdTeW5jSGFzaCkpOwogCiAJ LyogY29sbGVjdCBhbGwgcmxvY2F0b3IgZnJvbSBwZW5kaW5nIHN5bmNzICovCi0JaGFzaF9zZXFf aW5pdCgmc2NhbiwgcGVuZGluZ1N5bmNIYXNoKTsKLQl3aGlsZSAoKHN5bmMgPSAoUGVuZGluZ1Jl bFN5bmMgKikgaGFzaF9zZXFfc2VhcmNoKCZzY2FuKSkpCisJZm9yZWFjaF9oYXNoKFBlbmRpbmdS ZWxTeW5jLCBzeW5jLCBwZW5kaW5nU3luY0hhc2gpCisJewogCQkodm9pZCkgaGFzaF9zZWFyY2go dG1waGFzaCwgJnN5bmMtPnJsb2NhdG9yLCBIQVNIX0VOVEVSLCBOVUxMKTsKKwl9CiAKIAkvKiBy ZW1vdmUgZGVsZXRlZCBybm9kZXMgKi8KIAlmb3IgKGRlbGV0ZSA9IHBlbmRpbmdEZWxldGVzOyBk ZWxldGUgIT0gTlVMTDsgZGVsZXRlID0gZGVsZXRlLT5uZXh0KQpAQCAtNjE4LDkgKzYxNiwxMCBA QCBTZXJpYWxpemVQZW5kaW5nU3luY3MoU2l6ZSBtYXhTaXplLCBjaGFyICpzdGFydEFkZHJlc3Mp CiAJCQkodm9pZCkgaGFzaF9zZWFyY2godG1waGFzaCwgJmRlbGV0ZS0+cmxvY2F0b3IsCiAJCQkJ CQkJICAgSEFTSF9SRU1PVkUsIE5VTEwpOwogCi0JaGFzaF9zZXFfaW5pdCgmc2NhbiwgdG1waGFz aCk7Ci0Jd2hpbGUgKChzcmMgPSAoUmVsRmlsZUxvY2F0b3IgKikgaGFzaF9zZXFfc2VhcmNoKCZz Y2FuKSkpCisJZm9yZWFjaF9oYXNoKFJlbEZpbGVMb2NhdG9yLCBzcmMsIHRtcGhhc2gpCisJewog CQkqZGVzdCsrID0gKnNyYzsKKwl9CiAKIAloYXNoX2Rlc3Ryb3kodG1waGFzaCk7CiAKQEAgLTcz Myw4ICs3MzIsNiBAQCBzbWdyRG9QZW5kaW5nU3luY3MoYm9vbCBpc0NvbW1pdCwgYm9vbCBpc1Bh cmFsbGVsV29ya2VyKQogCWludAkJCW5yZWxzID0gMCwKIAkJCQltYXhyZWxzID0gMDsKIAlTTWdy UmVsYXRpb24gKnNyZWxzID0gTlVMTDsKLQlIQVNIX1NFUV9TVEFUVVMgc2NhbjsKLQlQZW5kaW5n UmVsU3luYyAqcGVuZGluZ3N5bmM7CiAKIAlBc3NlcnQoR2V0Q3VycmVudFRyYW5zYWN0aW9uTmVz dExldmVsKCkgPT0gMSk7CiAKQEAgLTc2Myw4ICs3NjAsNyBAQCBzbWdyRG9QZW5kaW5nU3luY3Mo Ym9vbCBpc0NvbW1pdCwgYm9vbCBpc1BhcmFsbGVsV29ya2VyKQogCQkJKHZvaWQpIGhhc2hfc2Vh cmNoKHBlbmRpbmdTeW5jSGFzaCwgJnBlbmRpbmctPnJsb2NhdG9yLAogCQkJCQkJCSAgIEhBU0hf UkVNT1ZFLCBOVUxMKTsKIAotCWhhc2hfc2VxX2luaXQoJnNjYW4sIHBlbmRpbmdTeW5jSGFzaCk7 Ci0Jd2hpbGUgKChwZW5kaW5nc3luYyA9IChQZW5kaW5nUmVsU3luYyAqKSBoYXNoX3NlcV9zZWFy Y2goJnNjYW4pKSkKKwlmb3JlYWNoX2hhc2goUGVuZGluZ1JlbFN5bmMsIHBlbmRpbmdzeW5jLCBw ZW5kaW5nU3luY0hhc2gpCiAJewogCQlGb3JrTnVtYmVyCWZvcms7CiAJCUJsb2NrTnVtYmVyIG5i bG9ja3NbTUFYX0ZPUktOVU0gKyAxXTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3ByZXBhcmUuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwppbmRleCBlYjFhN2Vj ZmViYy4uNGFkOWMxMGE3ZjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBh cmUuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKQEAgLTUzMywxNiArNTMz LDEyIEBAIERyb3BQcmVwYXJlZFN0YXRlbWVudChjb25zdCBjaGFyICpzdG10X25hbWUsIGJvb2wg c2hvd0Vycm9yKQogdm9pZAogRHJvcEFsbFByZXBhcmVkU3RhdGVtZW50cyh2b2lkKQogewotCUhB U0hfU0VRX1NUQVRVUyBzZXE7Ci0JUHJlcGFyZWRTdGF0ZW1lbnQgKmVudHJ5OwotCiAJLyogbm90 aGluZyBjYWNoZWQgKi8KIAlpZiAoIXByZXBhcmVkX3F1ZXJpZXMpCiAJCXJldHVybjsKIAogCS8q IHdhbGsgb3ZlciBjYWNoZSAqLwotCWhhc2hfc2VxX2luaXQoJnNlcSwgcHJlcGFyZWRfcXVlcmll cyk7Ci0Jd2hpbGUgKChlbnRyeSA9IGhhc2hfc2VxX3NlYXJjaCgmc2VxKSkgIT0gTlVMTCkKKwlm b3JlYWNoX2hhc2goUHJlcGFyZWRTdGF0ZW1lbnQsIGVudHJ5LCBwcmVwYXJlZF9xdWVyaWVzKQog CXsKIAkJLyogUmVsZWFzZSB0aGUgcGxhbmNhY2hlIGVudHJ5ICovCiAJCURyb3BDYWNoZWRQbGFu KGVudHJ5LT5wbGFuc291cmNlKTsKQEAgLTY4OSwxMSArNjg1LDcgQEAgcGdfcHJlcGFyZWRfc3Rh dGVtZW50KFBHX0ZVTkNUSU9OX0FSR1MpCiAJLyogaGFzaCB0YWJsZSBtaWdodCBiZSB1bmluaXRp YWxpemVkICovCiAJaWYgKHByZXBhcmVkX3F1ZXJpZXMpCiAJewotCQlIQVNIX1NFUV9TVEFUVVMg aGFzaF9zZXE7Ci0JCVByZXBhcmVkU3RhdGVtZW50ICpwcmVwX3N0bXQ7Ci0KLQkJaGFzaF9zZXFf aW5pdCgmaGFzaF9zZXEsIHByZXBhcmVkX3F1ZXJpZXMpOwotCQl3aGlsZSAoKHByZXBfc3RtdCA9 IGhhc2hfc2VxX3NlYXJjaCgmaGFzaF9zZXEpKSAhPSBOVUxMKQorCQlmb3JlYWNoX2hhc2goUHJl cGFyZWRTdGF0ZW1lbnQsIHByZXBfc3RtdCwgcHJlcGFyZWRfcXVlcmllcykKIAkJewogCQkJVHVw bGVEZXNjCXJlc3VsdF9kZXNjOwogCQkJRGF0dW0JCXZhbHVlc1s4XTsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFi bGVjbWRzLmMKaW5kZXggNDBhMzk5ODllYWEuLjc3MjI1MDdjODM4IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90 YWJsZWNtZHMuYwpAQCAtMjI0MiwxNCArMjI0Miw5IEBAIEV4ZWN1dGVUcnVuY2F0ZUd1dHMoTGlz dCAqZXhwbGljaXRfcmVscywKIAkvKiBOb3cgZ28gdGhyb3VnaCB0aGUgaGFzaCB0YWJsZSwgYW5k IHRydW5jYXRlIGZvcmVpZ24gdGFibGVzICovCiAJaWYgKGZ0X2h0YWIpCiAJewotCQlGb3JlaWdu VHJ1bmNhdGVJbmZvICpmdF9pbmZvOwotCQlIQVNIX1NFUV9TVEFUVVMgc2VxOwotCi0JCWhhc2hf c2VxX2luaXQoJnNlcSwgZnRfaHRhYik7Ci0KIAkJUEdfVFJZKCk7CiAJCXsKLQkJCXdoaWxlICgo ZnRfaW5mbyA9IGhhc2hfc2VxX3NlYXJjaCgmc2VxKSkgIT0gTlVMTCkKKwkJCWZvcmVhY2hfaGFz aChGb3JlaWduVHJ1bmNhdGVJbmZvLCBmdF9pbmZvLCBmdF9odGFiKQogCQkJewogCQkJCUZkd1Jv dXRpbmUgKnJvdXRpbmUgPSBHZXRGZHdSb3V0aW5lQnlTZXJ2ZXJJZChmdF9pbmZvLT5zZXJ2ZXJp ZCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3ByZWR0ZXN0LmMg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wcmVkdGVzdC5jCmluZGV4IDNiZjVlN2FjOGJi Li40YWUxNDU0ODk0YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcHJl ZHRlc3QuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wcmVkdGVzdC5jCkBAIC0y MzQyLDE1ICsyMzQyLDEwIEBAIGdldF9idHJlZV90ZXN0X29wKE9pZCBwcmVkX29wLCBPaWQgY2xh dXNlX29wLCBib29sIHJlZnV0ZV9pdCkKIHN0YXRpYyB2b2lkCiBJbnZhbGlkYXRlT3ByUHJvb2ZD YWNoZUNhbGxCYWNrKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpCiB7 Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlPcHJQcm9vZkNhY2hlRW50cnkgKmhlbnRyeTsK LQogCUFzc2VydChPcHJQcm9vZkNhY2hlSGFzaCAhPSBOVUxMKTsKIAogCS8qIEN1cnJlbnRseSB3 ZSBqdXN0IHJlc2V0IGFsbCBlbnRyaWVzOyBoYXJkIHRvIGJlIHNtYXJ0ZXIgLi4uICovCi0JaGFz aF9zZXFfaW5pdCgmc3RhdHVzLCBPcHJQcm9vZkNhY2hlSGFzaCk7Ci0KLQl3aGlsZSAoKGhlbnRy eSA9IChPcHJQcm9vZkNhY2hlRW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBO VUxMKQorCWZvcmVhY2hfaGFzaChPcHJQcm9vZkNhY2hlRW50cnksIGhlbnRyeSwgT3ByUHJvb2ZD YWNoZUhhc2gpCiAJewogCQloZW50cnktPmhhdmVfaW1wbGljID0gZmFsc2U7CiAJCWhlbnRyeS0+ aGF2ZV9yZWZ1dGUgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV9vcGVyLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vfb3Blci5jCmluZGV4IGQzNmU3YWQz MDMwLi5iMjVhYjBlNmI3YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX29w ZXIuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vfb3Blci5jCkBAIC0xMDc2LDE1ICsx MDc2LDEwIEBAIG1ha2Vfb3Blcl9jYWNoZV9lbnRyeShPcHJDYWNoZUtleSAqa2V5LCBPaWQgb3By X29pZCkKIHN0YXRpYyB2b2lkCiBJbnZhbGlkYXRlT3ByQ2FjaGVDYWxsQmFjayhEYXR1bSBhcmcs IGludCBjYWNoZWlkLCB1aW50MzIgaGFzaHZhbHVlKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0 dXM7Ci0JT3ByQ2FjaGVFbnRyeSAqaGVudHJ5OwotCiAJQXNzZXJ0KE9wckNhY2hlSGFzaCAhPSBO VUxMKTsKIAogCS8qIEN1cnJlbnRseSB3ZSBqdXN0IGZsdXNoIGFsbCBlbnRyaWVzOyBoYXJkIHRv IGJlIHNtYXJ0ZXIgLi4uICovCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBPcHJDYWNoZUhhc2gp OwotCi0Jd2hpbGUgKChoZW50cnkgPSAoT3ByQ2FjaGVFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2go JnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKE9wckNhY2hlRW50cnksIGhlbnRyeSwg T3ByQ2FjaGVIYXNoKQogCXsKIAkJaWYgKGhhc2hfc2VhcmNoKE9wckNhY2hlSGFzaCwKIAkJCQkJ CSZoZW50cnktPmtleSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0 ZGVzYy5jIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRkZXNjLmMKaW5kZXggZGIyNmU0 YTgyYjYuLjNlY2M5Mzg3MjNiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcv cGFydGRlc2MuYworKysgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGRlc2MuYwpAQCAt NDc4LDExICs0NzgsNyBAQCBQYXJ0aXRpb25EaXJlY3RvcnlMb29rdXAoUGFydGl0aW9uRGlyZWN0 b3J5IHBkaXIsIFJlbGF0aW9uIHJlbCkKIHZvaWQKIERlc3Ryb3lQYXJ0aXRpb25EaXJlY3Rvcnko UGFydGl0aW9uRGlyZWN0b3J5IHBkaXIpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlQ YXJ0aXRpb25EaXJlY3RvcnlFbnRyeSAqcGRlOwotCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBw ZGlyLT5wZGlyX2hhc2gpOwotCXdoaWxlICgocGRlID0gaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMp KSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChQYXJ0aXRpb25EaXJlY3RvcnlFbnRyeSwgcGRlLCBw ZGlyLT5wZGlyX2hhc2gpCiAJCVJlbGF0aW9uRGVjcmVtZW50UmVmZXJlbmNlQ291bnQocGRlLT5y ZWwpOwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0u YyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCmluZGV4IGY4Zjg1OTUxNzQx Li42ODYwMzFlZGYyYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFj dXVtLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKQEAgLTEwMjEs OCArMTAyMSw2IEBAIHJlYnVpbGRfZGF0YWJhc2VfbGlzdChPaWQgbmV3ZGIpCiAJCVRpbWVzdGFt cFR6IGN1cnJlbnRfdGltZTsKIAkJaW50CQkJbWlsbGlzX2luY3JlbWVudDsKIAkJYXZsX2RiYXNl ICAqZGJhcnk7Ci0JCWF2bF9kYmFzZSAgKmRiOwotCQlIQVNIX1NFUV9TVEFUVVMgc2VxOwogCQlp bnQJCQlpOwogCiAJCS8qIHB1dCBhbGwgdGhlIGhhc2ggZWxlbWVudHMgaW50byBhbiBhcnJheSAq LwpAQCAtMTAzMyw4ICsxMDMxLDcgQEAgcmVidWlsZF9kYXRhYmFzZV9saXN0KE9pZCBuZXdkYikK ICNlbmRpZgogCiAJCWkgPSAwOwotCQloYXNoX3NlcV9pbml0KCZzZXEsIGRiaGFzaCk7Ci0JCXdo aWxlICgoZGIgPSBoYXNoX3NlcV9zZWFyY2goJnNlcSkpICE9IE5VTEwpCisJCWZvcmVhY2hfaGFz aChhdmxfZGJhc2UsIGRiLCBkYmhhc2gpCiAJCQltZW1jcHkoJihkYmFyeVtpKytdKSwgZGIsIHNp emVvZihhdmxfZGJhc2UpKTsKIAogCQkvKiBzb3J0IHRoZSBhcnJheSAqLwpAQCAtMTA1OSw3ICsx MDU2LDcgQEAgcmVidWlsZF9kYXRhYmFzZV9saXN0KE9pZCBuZXdkYikKIAkJICovCiAJCWZvciAo aSA9IDA7IGkgPCBuZWxlbXM7IGkrKykKIAkJewotCQkJZGIgPSAmKGRiYXJ5W2ldKTsKKwkJCWF2 bF9kYmFzZSAgKmRiID0gJihkYmFyeVtpXSk7CiAKIAkJCWN1cnJlbnRfdGltZSA9IFRpbWVzdGFt cFR6UGx1c01pbGxpc2Vjb25kcyhjdXJyZW50X3RpbWUsCiAJCQkJCQkJCQkJCQkJICAgbWlsbGlz X2luY3JlbWVudCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L3JlbGF0aW9uLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMK aW5kZXggMDk5NTAxYWQ1OTMuLjQ3NzNkYjljNzlmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9yZWxhdGlvbi5jCkBAIC02MywyNSArNjMsMTkgQEAgc3RhdGljIE9pZAlGaW5k TG9naWNhbFJlcExvY2FsSW5kZXgoUmVsYXRpb24gbG9jYWxyZWwsIExvZ2ljYWxSZXBSZWxhdGlv biAqcmVtb3QKIHN0YXRpYyB2b2lkCiBsb2dpY2FscmVwX3JlbG1hcF9pbnZhbGlkYXRlX2NiKERh dHVtIGFyZywgT2lkIHJlbG9pZCkKIHsKLQlMb2dpY2FsUmVwUmVsTWFwRW50cnkgKmVudHJ5Owot CiAJLyogSnVzdCB0byBiZSBzdXJlLiAqLwogCWlmIChMb2dpY2FsUmVwUmVsTWFwID09IE5VTEwp CiAJCXJldHVybjsKIAogCWlmIChyZWxvaWQgIT0gSW52YWxpZE9pZCkKIAl7Ci0JCUhBU0hfU0VR X1NUQVRVUyBzdGF0dXM7Ci0KLQkJaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBMb2dpY2FsUmVwUmVs TWFwKTsKLQogCQkvKiBUT0RPLCB1c2UgaW52ZXJzZSBsb29rdXAgaGFzaHRhYmxlPyAqLwotCQl3 aGlsZSAoKGVudHJ5ID0gKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2go JnN0YXR1cykpICE9IE5VTEwpCisJCWZvcmVhY2hfaGFzaChMb2dpY2FsUmVwUmVsTWFwRW50cnks IGVudHJ5LCBMb2dpY2FsUmVwUmVsTWFwKQogCQl7CiAJCQlpZiAoZW50cnktPmxvY2FscmVsb2lk ID09IHJlbG9pZCkKIAkJCXsKIAkJCQllbnRyeS0+bG9jYWxyZWx2YWxpZCA9IGZhbHNlOwotCQkJ CWhhc2hfc2VxX3Rlcm0oJnN0YXR1cyk7CisJCQkJZm9yZWFjaF9oYXNoX3Rlcm0oZW50cnkpOwog CQkJCWJyZWFrOwogCQkJfQogCQl9CkBAIC04OSwxMSArODMsNyBAQCBsb2dpY2FscmVwX3JlbG1h cF9pbnZhbGlkYXRlX2NiKERhdHVtIGFyZywgT2lkIHJlbG9pZCkKIAllbHNlCiAJewogCQkvKiBp bnZhbGlkYXRlIGFsbCBjYWNoZSBlbnRyaWVzICovCi0JCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7 Ci0KLQkJaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBMb2dpY2FsUmVwUmVsTWFwKTsKLQotCQl3aGls ZSAoKGVudHJ5ID0gKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJnN0 YXR1cykpICE9IE5VTEwpCisJCWZvcmVhY2hfaGFzaChMb2dpY2FsUmVwUmVsTWFwRW50cnksIGVu dHJ5LCBMb2dpY2FsUmVwUmVsTWFwKQogCQkJZW50cnktPmxvY2FscmVsdmFsaWQgPSBmYWxzZTsK IAl9CiB9CkBAIC01MzAsMjUgKzUyMCwxOSBAQCBsb2dpY2FscmVwX3JlbF9jbG9zZShMb2dpY2Fs UmVwUmVsTWFwRW50cnkgKnJlbCwgTE9DS01PREUgbG9ja21vZGUpCiBzdGF0aWMgdm9pZAogbG9n aWNhbHJlcF9wYXJ0bWFwX2ludmFsaWRhdGVfY2IoRGF0dW0gYXJnLCBPaWQgcmVsb2lkKQogewot CUxvZ2ljYWxSZXBQYXJ0TWFwRW50cnkgKmVudHJ5OwotCiAJLyogSnVzdCB0byBiZSBzdXJlLiAq LwogCWlmIChMb2dpY2FsUmVwUGFydE1hcCA9PSBOVUxMKQogCQlyZXR1cm47CiAKIAlpZiAocmVs b2lkICE9IEludmFsaWRPaWQpCiAJewotCQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCi0JCWhh c2hfc2VxX2luaXQoJnN0YXR1cywgTG9naWNhbFJlcFBhcnRNYXApOwotCiAJCS8qIFRPRE8sIHVz ZSBpbnZlcnNlIGxvb2t1cCBoYXNodGFibGU/ICovCi0JCXdoaWxlICgoZW50cnkgPSAoTG9naWNh bFJlcFBhcnRNYXBFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJ CWZvcmVhY2hfaGFzaChMb2dpY2FsUmVwUGFydE1hcEVudHJ5LCBlbnRyeSwgTG9naWNhbFJlcFBh cnRNYXApCiAJCXsKIAkJCWlmIChlbnRyeS0+cmVsbWFwZW50cnkubG9jYWxyZWxvaWQgPT0gcmVs b2lkKQogCQkJewogCQkJCWVudHJ5LT5yZWxtYXBlbnRyeS5sb2NhbHJlbHZhbGlkID0gZmFsc2U7 Ci0JCQkJaGFzaF9zZXFfdGVybSgmc3RhdHVzKTsKKwkJCQlmb3JlYWNoX2hhc2hfdGVybShlbnRy eSk7CiAJCQkJYnJlYWs7CiAJCQl9CiAJCX0KQEAgLTU1NiwxMSArNTQwLDcgQEAgbG9naWNhbHJl cF9wYXJ0bWFwX2ludmFsaWRhdGVfY2IoRGF0dW0gYXJnLCBPaWQgcmVsb2lkKQogCWVsc2UKIAl7 CiAJCS8qIGludmFsaWRhdGUgYWxsIGNhY2hlIGVudHJpZXMgKi8KLQkJSEFTSF9TRVFfU1RBVFVT IHN0YXR1czsKLQotCQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIExvZ2ljYWxSZXBQYXJ0TWFwKTsK LQotCQl3aGlsZSAoKGVudHJ5ID0gKExvZ2ljYWxSZXBQYXJ0TWFwRW50cnkgKikgaGFzaF9zZXFf c2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCQlmb3JlYWNoX2hhc2goTG9naWNhbFJlcFBhcnRN YXBFbnRyeSwgZW50cnksIExvZ2ljYWxSZXBQYXJ0TWFwKQogCQkJZW50cnktPnJlbG1hcGVudHJ5 LmxvY2FscmVsdmFsaWQgPSBmYWxzZTsKIAl9CiB9CkBAIC01NzgsMTUgKzU1OCwxMiBAQCBsb2dp Y2FscmVwX3BhcnRtYXBfaW52YWxpZGF0ZV9jYihEYXR1bSBhcmcsIE9pZCByZWxvaWQpCiB2b2lk CiBsb2dpY2FscmVwX3BhcnRtYXBfcmVzZXRfcmVsbWFwKExvZ2ljYWxSZXBSZWxhdGlvbiAqcmVt b3RlcmVsKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JTG9naWNhbFJlcFBhcnRNYXBF bnRyeSAqcGFydF9lbnRyeTsKIAlMb2dpY2FsUmVwUmVsTWFwRW50cnkgKmVudHJ5OwogCiAJaWYg KExvZ2ljYWxSZXBQYXJ0TWFwID09IE5VTEwpCiAJCXJldHVybjsKIAotCWhhc2hfc2VxX2luaXQo JnN0YXR1cywgTG9naWNhbFJlcFBhcnRNYXApOwotCXdoaWxlICgocGFydF9lbnRyeSA9IChMb2dp Y2FsUmVwUGFydE1hcEVudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkK Kwlmb3JlYWNoX2hhc2goTG9naWNhbFJlcFBhcnRNYXBFbnRyeSwgcGFydF9lbnRyeSwgTG9naWNh bFJlcFBhcnRNYXApCiAJewogCQllbnRyeSA9ICZwYXJ0X2VudHJ5LT5yZWxtYXBlbnRyeTsKIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVy LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYwppbmRl eCBmYTkzYTFiYmRlMS4uYWRkMzE1MTQ0NDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCkBAIC01MjQ3LDE1ICs1MjQ3LDExIEBAIFJlb3Jk ZXJCdWZmZXJUb2FzdFJlcGxhY2UoUmVvcmRlckJ1ZmZlciAqcmIsIFJlb3JkZXJCdWZmZXJUWE4g KnR4biwKIHN0YXRpYyB2b2lkCiBSZW9yZGVyQnVmZmVyVG9hc3RSZXNldChSZW9yZGVyQnVmZmVy ICpyYiwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuKQogewotCUhBU0hfU0VRX1NUQVRVUyBoc3RhdDsK LQlSZW9yZGVyQnVmZmVyVG9hc3RFbnQgKmVudDsKLQogCWlmICh0eG4tPnRvYXN0X2hhc2ggPT0g TlVMTCkKIAkJcmV0dXJuOwogCiAJLyogc2VxdWVudGlhbGx5IHdhbGsgb3ZlciB0aGUgaGFzaCBh bmQgZnJlZSBldmVyeXRoaW5nICovCi0JaGFzaF9zZXFfaW5pdCgmaHN0YXQsIHR4bi0+dG9hc3Rf aGFzaCk7Ci0Jd2hpbGUgKChlbnQgPSAoUmVvcmRlckJ1ZmZlclRvYXN0RW50ICopIGhhc2hfc2Vx X3NlYXJjaCgmaHN0YXQpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChSZW9yZGVyQnVmZmVyVG9h c3RFbnQsIGVudCwgdHhuLT50b2FzdF9oYXNoKQogCXsKIAkJZGxpc3RfbXV0YWJsZV9pdGVyIGl0 OwogCkBAIC01MzE4LDExICs1MzE0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUmV3cml0ZU1hcHBpbmdG aWxlCiBzdGF0aWMgdm9pZAogRGlzcGxheU1hcHBpbmcoSFRBQiAqdHVwbGVjaWRfZGF0YSkKIHsK LQlIQVNIX1NFUV9TVEFUVVMgaHN0YXQ7Ci0JUmVvcmRlckJ1ZmZlclR1cGxlQ2lkRW50ICplbnQ7 Ci0KLQloYXNoX3NlcV9pbml0KCZoc3RhdCwgdHVwbGVjaWRfZGF0YSk7Ci0Jd2hpbGUgKChlbnQg PSAoUmVvcmRlckJ1ZmZlclR1cGxlQ2lkRW50ICopIGhhc2hfc2VxX3NlYXJjaCgmaHN0YXQpKSAh PSBOVUxMKQorCWZvcmVhY2hfaGFzaChSZW9yZGVyQnVmZmVyVHVwbGVDaWRFbnQsIGVudCwgdHVw bGVjaWRfZGF0YSkKIAl7CiAJCWVsb2coREVCVUczLCAibWFwcGluZzogbm9kZTogJXUvJXUvJXUg dGlkOiAldS8ldSBjbWluOiAldSwgY21heDogJXUiLAogCQkJIGVudC0+a2V5LnJsb2NhdG9yLmRi T2lkLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRw dXQuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKaW5kZXgg MGRjZmJmZGQ2MDkuLjUwN2E4NzNjYTFiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bn b3V0cHV0L3Bnb3V0cHV0LmMKQEAgLTIzNDMsMTMgKzIzNDMsOSBAQCBnZXRfcmVsX3N5bmNfZW50 cnkoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbikKIHN0YXRpYyB2b2lkCiBj bGVhbnVwX3JlbF9zeW5jX2NhY2hlKFRyYW5zYWN0aW9uSWQgeGlkLCBib29sIGlzX2NvbW1pdCkK IHsKLQlIQVNIX1NFUV9TVEFUVVMgaGFzaF9zZXE7Ci0JUmVsYXRpb25TeW5jRW50cnkgKmVudHJ5 OwotCiAJQXNzZXJ0KFJlbGF0aW9uU3luY0NhY2hlICE9IE5VTEwpOwogCi0JaGFzaF9zZXFfaW5p dCgmaGFzaF9zZXEsIFJlbGF0aW9uU3luY0NhY2hlKTsKLQl3aGlsZSAoKGVudHJ5ID0gaGFzaF9z ZXFfc2VhcmNoKCZoYXNoX3NlcSkpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFJlbGF0aW9uU3lu Y0VudHJ5LCBlbnRyeSwgUmVsYXRpb25TeW5jQ2FjaGUpCiAJewogCQkvKgogCQkgKiBXZSBjYW4g c2V0IHRoZSBzY2hlbWFfc2VudCBmbGFnIGZvciBhbiBlbnRyeSB0aGF0IGhhcyBjb21taXR0ZWQg eGlkCkBAIC0yMzc4LDggKzIzNzQsNiBAQCBjbGVhbnVwX3JlbF9zeW5jX2NhY2hlKFRyYW5zYWN0 aW9uSWQgeGlkLCBib29sIGlzX2NvbW1pdCkKIHN0YXRpYyB2b2lkCiByZWxfc3luY19jYWNoZV9y ZWxhdGlvbl9jYihEYXR1bSBhcmcsIE9pZCByZWxpZCkKIHsKLQlSZWxhdGlvblN5bmNFbnRyeSAq ZW50cnk7Ci0KIAkvKgogCSAqIFdlIGNhbiBnZXQgaGVyZSBpZiB0aGUgcGx1Z2luIHdhcyB1c2Vk IGluIFNRTCBpbnRlcmZhY2UgYXMgdGhlCiAJICogUmVsYXRpb25TeW5jQ2FjaGUgaXMgZGVzdHJv eWVkIHdoZW4gdGhlIGRlY29kaW5nIGZpbmlzaGVzLCBidXQgdGhlcmUgaXMKQEAgLTI0MDIsMTgg KzIzOTYsMTYgQEAgcmVsX3N5bmNfY2FjaGVfcmVsYXRpb25fY2IoRGF0dW0gYXJnLCBPaWQgcmVs aWQpCiAJCSAqIEdldHRpbmcgaW52YWxpZGF0aW9ucyBmb3IgcmVsYXRpb25zIHRoYXQgYXJlbid0 IGluIHRoZSB0YWJsZSBpcwogCQkgKiBlbnRpcmVseSBub3JtYWwuICBTbyB3ZSBkb24ndCBjYXJl IGlmIGl0J3MgZm91bmQgb3Igbm90LgogCQkgKi8KLQkJZW50cnkgPSAoUmVsYXRpb25TeW5jRW50 cnkgKikgaGFzaF9zZWFyY2goUmVsYXRpb25TeW5jQ2FjaGUsICZyZWxpZCwKLQkJCQkJCQkJCQkJ CSAgSEFTSF9GSU5ELCBOVUxMKTsKKwkJUmVsYXRpb25TeW5jRW50cnkgKmVudHJ5ID0gaGFzaF9z ZWFyY2goUmVsYXRpb25TeW5jQ2FjaGUsICZyZWxpZCwKKwkJCQkJCQkJCQkJICAgSEFTSF9GSU5E LCBOVUxMKTsKKwogCQlpZiAoZW50cnkgIT0gTlVMTCkKIAkJCWVudHJ5LT5yZXBsaWNhdGVfdmFs aWQgPSBmYWxzZTsKIAl9CiAJZWxzZQogCXsKIAkJLyogV2hvbGUgY2FjaGUgbXVzdCBiZSBmbHVz aGVkLiAqLwotCQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCi0JCWhhc2hfc2VxX2luaXQoJnN0 YXR1cywgUmVsYXRpb25TeW5jQ2FjaGUpOwotCQl3aGlsZSAoKGVudHJ5ID0gKFJlbGF0aW9uU3lu Y0VudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwkJZm9yZWFjaF9o YXNoKFJlbGF0aW9uU3luY0VudHJ5LCBlbnRyeSwgUmVsYXRpb25TeW5jQ2FjaGUpCiAJCXsKIAkJ CWVudHJ5LT5yZXBsaWNhdGVfdmFsaWQgPSBmYWxzZTsKIAkJfQpAQCAtMjQyOCw5ICsyNDIwLDYg QEAgcmVsX3N5bmNfY2FjaGVfcmVsYXRpb25fY2IoRGF0dW0gYXJnLCBPaWQgcmVsaWQpCiBzdGF0 aWMgdm9pZAogcmVsX3N5bmNfY2FjaGVfcHVibGljYXRpb25fY2IoRGF0dW0gYXJnLCBpbnQgY2Fj aGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVJl bGF0aW9uU3luY0VudHJ5ICplbnRyeTsKLQogCS8qCiAJICogV2UgY2FuIGdldCBoZXJlIGlmIHRo ZSBwbHVnaW4gd2FzIHVzZWQgaW4gU1FMIGludGVyZmFjZSBhcyB0aGUKIAkgKiBSZWxhdGlvblN5 bmNDYWNoZSBpcyBkZXN0cm95ZWQgd2hlbiB0aGUgZGVjb2RpbmcgZmluaXNoZXMsIGJ1dCB0aGVy ZSBpcwpAQCAtMjQ0Myw4ICsyNDMyLDcgQEAgcmVsX3N5bmNfY2FjaGVfcHVibGljYXRpb25fY2Io RGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKIAkgKiBXZSBoYXZlIG5v IGVhc3kgd2F5IHRvIGlkZW50aWZ5IHdoaWNoIGNhY2hlIGVudHJpZXMgdGhpcyBpbnZhbGlkYXRp b24KIAkgKiBldmVudCBtaWdodCBoYXZlIGFmZmVjdGVkLCBzbyBqdXN0IG1hcmsgdGhlbSBhbGwg aW52YWxpZC4KIAkgKi8KLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIFJlbGF0aW9uU3luY0NhY2hl KTsKLQl3aGlsZSAoKGVudHJ5ID0gKFJlbGF0aW9uU3luY0VudHJ5ICopIGhhc2hfc2VxX3NlYXJj aCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUmVsYXRpb25TeW5jRW50cnksIGVu dHJ5LCBSZWxhdGlvblN5bmNDYWNoZSkKIAl7CiAJCWVudHJ5LT5yZXBsaWNhdGVfdmFsaWQgPSBm YWxzZTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3Iu YyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCmluZGV4IGE5NGNjODk2NTRl Li5lZjkxODY3NmEyNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVm bWdyLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMKQEAgLTQxNTIs NyArNDE1Miw2IEBAIENoZWNrRm9yQnVmZmVyTGVha3Modm9pZCkKIHsKICNpZmRlZiBVU0VfQVNT RVJUX0NIRUNLSU5HCiAJaW50CQkJUmVmQ291bnRFcnJvcnMgPSAwOwotCVByaXZhdGVSZWZDb3Vu dEVudHJ5ICpyZXM7CiAJaW50CQkJaTsKIAljaGFyCSAgICpzOwogCkBAIC00MTYxLDcgKzQxNjAs NyBAQCBDaGVja0ZvckJ1ZmZlckxlYWtzKHZvaWQpCiAJewogCQlpZiAoUHJpdmF0ZVJlZkNvdW50 QXJyYXlLZXlzW2ldICE9IEludmFsaWRCdWZmZXIpCiAJCXsKLQkJCXJlcyA9ICZQcml2YXRlUmVm Q291bnRBcnJheVtpXTsKKwkJCVByaXZhdGVSZWZDb3VudEVudHJ5ICpyZXMgPSAmUHJpdmF0ZVJl ZkNvdW50QXJyYXlbaV07CiAKIAkJCXMgPSBEZWJ1Z1ByaW50QnVmZmVyUmVmY291bnQocmVzLT5i dWZmZXIpOwogCQkJZWxvZyhXQVJOSU5HLCAiYnVmZmVyIHJlZmNvdW50IGxlYWs6ICVzIiwgcyk7 CkBAIC00MTc0LDEyICs0MTczLDkgQEAgQ2hlY2tGb3JCdWZmZXJMZWFrcyh2b2lkKQogCS8qIGlm IG5lY2Vzc2FyeSBzZWFyY2ggdGhlIGhhc2ggKi8KIAlpZiAoUHJpdmF0ZVJlZkNvdW50T3ZlcmZs b3dlZCkKIAl7Ci0JCUhBU0hfU0VRX1NUQVRVUyBoc3RhdDsKLQotCQloYXNoX3NlcV9pbml0KCZo c3RhdCwgUHJpdmF0ZVJlZkNvdW50SGFzaCk7Ci0JCXdoaWxlICgocmVzID0gKFByaXZhdGVSZWZD b3VudEVudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmaHN0YXQpKSAhPSBOVUxMKQorCQlmb3JlYWNo X2hhc2goUHJpdmF0ZVJlZkNvdW50RW50cnksIGVudCwgUHJpdmF0ZVJlZkNvdW50SGFzaCkKIAkJ ewotCQkJcyA9IERlYnVnUHJpbnRCdWZmZXJSZWZjb3VudChyZXMtPmJ1ZmZlcik7CisJCQlzID0g RGVidWdQcmludEJ1ZmZlclJlZmNvdW50KGVudC0+YnVmZmVyKTsKIAkJCWVsb2coV0FSTklORywg ImJ1ZmZlciByZWZjb3VudCBsZWFrOiAlcyIsIHMpOwogCQkJcGZyZWUocyk7CiAJCQlSZWZDb3Vu dEVycm9ycysrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYyBi L3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMKaW5kZXggYjZhOGQxZWM3NzYuLjVmZDFl MzFmMzQ2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jCisrKyBi L3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMKQEAgLTUzOSw4ICs1MzksNiBAQCBwZ19n ZXRfc2htZW1fYWxsb2NhdGlvbnMoUEdfRlVOQ1RJT05fQVJHUykKIHsKICNkZWZpbmUgUEdfR0VU X1NITUVNX1NJWkVTX0NPTFMgNAogCVJldHVyblNldEluZm8gKnJzaW5mbyA9IChSZXR1cm5TZXRJ bmZvICopIGZjaW5mby0+cmVzdWx0aW5mbzsKLQlIQVNIX1NFUV9TVEFUVVMgaHN0YXQ7Ci0JU2ht ZW1JbmRleEVudCAqZW50OwogCVNpemUJCW5hbWVkX2FsbG9jYXRlZCA9IDA7CiAJRGF0dW0JCXZh bHVlc1tQR19HRVRfU0hNRU1fU0laRVNfQ09MU107CiAJYm9vbAkJbnVsbHNbUEdfR0VUX1NITUVN X1NJWkVTX0NPTFNdOwpAQCAtNTQ5LDExICs1NDcsOSBAQCBwZ19nZXRfc2htZW1fYWxsb2NhdGlv bnMoUEdfRlVOQ1RJT05fQVJHUykKIAogCUxXTG9ja0FjcXVpcmUoU2htZW1JbmRleExvY2ssIExX X1NIQVJFRCk7CiAKLQloYXNoX3NlcV9pbml0KCZoc3RhdCwgU2htZW1JbmRleCk7Ci0KIAkvKiBv dXRwdXQgYWxsIGFsbG9jYXRlZCBlbnRyaWVzICovCiAJbWVtc2V0KG51bGxzLCAwLCBzaXplb2Yo bnVsbHMpKTsKLQl3aGlsZSAoKGVudCA9IChTaG1lbUluZGV4RW50ICopIGhhc2hfc2VxX3NlYXJj aCgmaHN0YXQpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChTaG1lbUluZGV4RW50LCBlbnQsIFNo bWVtSW5kZXgpCiAJewogCQl2YWx1ZXNbMF0gPSBDU3RyaW5nR2V0VGV4dERhdHVtKGVudC0+a2V5 KTsKIAkJdmFsdWVzWzFdID0gSW50NjRHZXREYXR1bSgoY2hhciAqKSBlbnQtPmxvY2F0aW9uIC0g KGNoYXIgKikgU2htZW1TZWdIZHIpOwpAQCAtNTk2LDggKzU5Miw2IEBAIHBnX2dldF9zaG1lbV9h bGxvY2F0aW9uc19udW1hKFBHX0ZVTkNUSU9OX0FSR1MpCiB7CiAjZGVmaW5lIFBHX0dFVF9TSE1F TV9OVU1BX1NJWkVTX0NPTFMgMwogCVJldHVyblNldEluZm8gKnJzaW5mbyA9IChSZXR1cm5TZXRJ bmZvICopIGZjaW5mby0+cmVzdWx0aW5mbzsKLQlIQVNIX1NFUV9TVEFUVVMgaHN0YXQ7Ci0JU2ht ZW1JbmRleEVudCAqZW50OwogCURhdHVtCQl2YWx1ZXNbUEdfR0VUX1NITUVNX05VTUFfU0laRVNf Q09MU107CiAJYm9vbAkJbnVsbHNbUEdfR0VUX1NITUVNX05VTUFfU0laRVNfQ09MU107CiAJU2l6 ZQkJb3NfcGFnZV9zaXplOwpAQCAtNjQ3LDExICs2NDEsOSBAQCBwZ19nZXRfc2htZW1fYWxsb2Nh dGlvbnNfbnVtYShQR19GVU5DVElPTl9BUkdTKQogCiAJTFdMb2NrQWNxdWlyZShTaG1lbUluZGV4 TG9jaywgTFdfU0hBUkVEKTsKIAotCWhhc2hfc2VxX2luaXQoJmhzdGF0LCBTaG1lbUluZGV4KTsK LQogCS8qIG91dHB1dCBhbGwgYWxsb2NhdGVkIGVudHJpZXMgKi8KIAltZW1zZXQobnVsbHMsIDAs IHNpemVvZihudWxscykpOwotCXdoaWxlICgoZW50ID0gKFNobWVtSW5kZXhFbnQgKikgaGFzaF9z ZXFfc2VhcmNoKCZoc3RhdCkpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFNobWVtSW5kZXhFbnQs IGVudCwgU2htZW1JbmRleCkKIAl7CiAJCWludAkJCWk7CiAJCWNoYXIJICAgKnN0YXJ0cHRyLApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jIGIvc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jCmluZGV4IDdhOTZlM2UyMDM5Li44ZjAwYThlMWYwMiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jCisrKyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYwpAQCAtMTA5OSwxMyArMTA5OSw5IEBAIFN0YW5k YnlSZWxlYXNlTG9ja1RyZWUoVHJhbnNhY3Rpb25JZCB4aWQsIGludCBuc3VieGlkcywgVHJhbnNh Y3Rpb25JZCAqc3VieGlkcykKIHZvaWQKIFN0YW5kYnlSZWxlYXNlQWxsTG9ja3Modm9pZCkKIHsK LQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVJlY292ZXJ5TG9ja1hpZEVudHJ5ICplbnRyeTsK LQogCWVsb2coREVCVUcyLCAicmVsZWFzZSBhbGwgc3RhbmRieSBsb2NrcyIpOwogCi0JaGFzaF9z ZXFfaW5pdCgmc3RhdHVzLCBSZWNvdmVyeUxvY2tYaWRIYXNoKTsKLQl3aGlsZSAoKGVudHJ5ID0g aGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSkKKwlmb3JlYWNoX2hhc2goUmVjb3ZlcnlMb2NrWGlk RW50cnksIGVudHJ5LCBSZWNvdmVyeUxvY2tYaWRIYXNoKQogCXsKIAkJU3RhbmRieVJlbGVhc2VY aWRFbnRyeUxvY2tzKGVudHJ5KTsKIAkJaGFzaF9zZWFyY2goUmVjb3ZlcnlMb2NrWGlkSGFzaCwg ZW50cnksIEhBU0hfUkVNT1ZFLCBOVUxMKTsKQEAgLTExMjMsMTEgKzExMTksNyBAQCBTdGFuZGJ5 UmVsZWFzZUFsbExvY2tzKHZvaWQpCiB2b2lkCiBTdGFuZGJ5UmVsZWFzZU9sZExvY2tzKFRyYW5z YWN0aW9uSWQgb2xkeGlkKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JUmVjb3ZlcnlM b2NrWGlkRW50cnkgKmVudHJ5OwotCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBSZWNvdmVyeUxv Y2tYaWRIYXNoKTsKLQl3aGlsZSAoKGVudHJ5ID0gaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSkK Kwlmb3JlYWNoX2hhc2goUmVjb3ZlcnlMb2NrWGlkRW50cnksIGVudHJ5LCBSZWNvdmVyeUxvY2tY aWRIYXNoKQogCXsKIAkJQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKGVudHJ5LT54aWQpKTsK IApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xvY2suYyBiL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMKaW5kZXggM2YyMGM4NTg4MWEuLmViZmI3NmNjNDc2IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG9jay5jCisrKyBiL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMKQEAgLTIyOTIsMTEgKzIyOTIsOSBAQCBMb2NrUmVsZWFz ZShjb25zdCBMT0NLVEFHICpsb2NrdGFnLCBMT0NLTU9ERSBsb2NrbW9kZSwgYm9vbCBzZXNzaW9u TG9jaykKIHZvaWQKIExvY2tSZWxlYXNlQWxsKExPQ0tNRVRIT0RJRCBsb2NrbWV0aG9kaWQsIGJv b2wgYWxsTG9ja3MpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKIAlMb2NrTWV0aG9kCWxv Y2tNZXRob2RUYWJsZTsKIAlpbnQJCQlpLAogCQkJCW51bUxvY2tNb2RlczsKLQlMT0NBTExPQ0sg ICpsb2NhbGxvY2s7CiAJTE9DSwkgICAqbG9jazsKIAlpbnQJCQlwYXJ0aXRpb247CiAJYm9vbAkJ aGF2ZV9mYXN0X3BhdGhfbHdsb2NrID0gZmFsc2U7CkBAIC0yMzI5LDkgKzIzMjcsNyBAQCBMb2Nr UmVsZWFzZUFsbChMT0NLTUVUSE9ESUQgbG9ja21ldGhvZGlkLCBib29sIGFsbExvY2tzKQogCSAq IHBvaW50ZXJzLiAgRmFzdC1wYXRoIGxvY2tzIGFyZSBjbGVhbmVkIHVwIGR1cmluZyB0aGUgbG9j YWxsb2NrIHRhYmxlCiAJICogc2NhbiwgdGhvdWdoLgogCSAqLwotCWhhc2hfc2VxX2luaXQoJnN0 YXR1cywgTG9ja01ldGhvZExvY2FsSGFzaCk7Ci0KLQl3aGlsZSAoKGxvY2FsbG9jayA9IChMT0NB TExPQ0sgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFz aChMT0NBTExPQ0ssIGxvY2FsbG9jaywgTG9ja01ldGhvZExvY2FsSGFzaCkKIAl7CiAJCS8qCiAJ CSAqIElmIHRoZSBMT0NBTExPQ0sgZW50cnkgaXMgdW51c2VkLCBzb21ldGhpbmcgbXVzdCd2ZSBn b25lIHdyb25nCkBAIC0yNTY2LDE1ICsyNTYyLDEwIEBAIExvY2tSZWxlYXNlQWxsKExPQ0tNRVRI T0RJRCBsb2NrbWV0aG9kaWQsIGJvb2wgYWxsTG9ja3MpCiB2b2lkCiBMb2NrUmVsZWFzZVNlc3Np b24oTE9DS01FVEhPRElEIGxvY2ttZXRob2RpZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVz OwotCUxPQ0FMTE9DSyAgKmxvY2FsbG9jazsKLQogCWlmIChsb2NrbWV0aG9kaWQgPD0gMCB8fCBs b2NrbWV0aG9kaWQgPj0gbGVuZ3Rob2YoTG9ja01ldGhvZHMpKQogCQllbG9nKEVSUk9SLCAidW5y ZWNvZ25pemVkIGxvY2sgbWV0aG9kOiAlZCIsIGxvY2ttZXRob2RpZCk7CiAKLQloYXNoX3NlcV9p bml0KCZzdGF0dXMsIExvY2tNZXRob2RMb2NhbEhhc2gpOwotCi0Jd2hpbGUgKChsb2NhbGxvY2sg PSAoTE9DQUxMT0NLICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3Jl YWNoX2hhc2goTE9DQUxMT0NLLCBsb2NhbGxvY2ssIExvY2tNZXRob2RMb2NhbEhhc2gpCiAJewog CQkvKiBJZ25vcmUgaXRlbXMgdGhhdCBhcmUgbm90IG9mIHRoZSBzcGVjaWZpZWQgbG9jayBtZXRo b2QgKi8KIAkJaWYgKExPQ0FMTE9DS19MT0NLTUVUSE9EKCpsb2NhbGxvY2spICE9IGxvY2ttZXRo b2RpZCkKQEAgLTI1OTgsMTIgKzI1ODksNyBAQCBMb2NrUmVsZWFzZUN1cnJlbnRPd25lcihMT0NB TExPQ0sgKipsb2NhbGxvY2tzLCBpbnQgbmxvY2tzKQogewogCWlmIChsb2NhbGxvY2tzID09IE5V TEwpCiAJewotCQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCQlMT0NBTExPQ0sgICpsb2NhbGxv Y2s7Ci0KLQkJaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBMb2NrTWV0aG9kTG9jYWxIYXNoKTsKLQot CQl3aGlsZSAoKGxvY2FsbG9jayA9IChMT0NBTExPQ0sgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0 dXMpKSAhPSBOVUxMKQorCQlmb3JlYWNoX2hhc2goTE9DQUxMT0NLLCBsb2NhbGxvY2ssIExvY2tN ZXRob2RMb2NhbEhhc2gpCiAJCQlSZWxlYXNlTG9ja0lmSGVsZChsb2NhbGxvY2ssIGZhbHNlKTsK IAl9CiAJZWxzZQpAQCAtMjY5NywxMiArMjY4Myw3IEBAIExvY2tSZWFzc2lnbkN1cnJlbnRPd25l cihMT0NBTExPQ0sgKipsb2NhbGxvY2tzLCBpbnQgbmxvY2tzKQogCiAJaWYgKGxvY2FsbG9ja3Mg PT0gTlVMTCkKIAl7Ci0JCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JCUxPQ0FMTE9DSyAgKmxv Y2FsbG9jazsKLQotCQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIExvY2tNZXRob2RMb2NhbEhhc2gp OwotCi0JCXdoaWxlICgobG9jYWxsb2NrID0gKExPQ0FMTE9DSyAqKSBoYXNoX3NlcV9zZWFyY2go JnN0YXR1cykpICE9IE5VTEwpCisJCWZvcmVhY2hfaGFzaChMT0NBTExPQ0ssIGxvY2FsbG9jaywg TG9ja01ldGhvZExvY2FsSGFzaCkKIAkJCUxvY2tSZWFzc2lnbk93bmVyKGxvY2FsbG9jaywgcGFy ZW50KTsKIAl9CiAJZWxzZQpAQCAtMzM4MSwxNyArMzM2MiwxMyBAQCBDaGVja0ZvclNlc3Npb25B bmRYYWN0TG9ja3Modm9pZCkKIAl9IFBlckxvY2tUYWdFbnRyeTsKIAogCUhUQUIJICAgKmxvY2to dGFiOwotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JTE9DQUxMT0NLICAqbG9jYWxsb2NrOwog CiAJLyogQ3JlYXRlIGEgbG9jYWwgaGFzaCB0YWJsZSBrZXllZCBieSBMT0NLVEFHIG9ubHkgKi8K IAlsb2NraHRhYiA9IGhhc2hfbWFrZShQZXJMb2NrVGFnRW50cnksIGxvY2ssCiAJCQkJCQkgIkNo ZWNrRm9yU2Vzc2lvbkFuZFhhY3RMb2NrcyB0YWJsZSIsIDI1Nik7CiAKIAkvKiBTY2FuIGxvY2Fs IGxvY2sgdGFibGUgdG8gZmluZCBlbnRyaWVzIGZvciBlYWNoIExPQ0tUQUcgKi8KLQloYXNoX3Nl cV9pbml0KCZzdGF0dXMsIExvY2tNZXRob2RMb2NhbEhhc2gpOwotCi0Jd2hpbGUgKChsb2NhbGxv Y2sgPSAoTE9DQUxMT0NLICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlm b3JlYWNoX2hhc2goTE9DQUxMT0NLLCBsb2NhbGxvY2ssIExvY2tNZXRob2RMb2NhbEhhc2gpCiAJ ewogCQlMT0NBTExPQ0tPV05FUiAqbG9ja093bmVycyA9IGxvY2FsbG9jay0+bG9ja093bmVyczsK IAkJUGVyTG9ja1RhZ0VudHJ5ICpoZW50cnk7CkBAIC0zNDU0LDE2ICszNDMxLDExIEBAIENoZWNr Rm9yU2Vzc2lvbkFuZFhhY3RMb2Nrcyh2b2lkKQogdm9pZAogQXRQcmVwYXJlX0xvY2tzKHZvaWQp CiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlMT0NBTExPQ0sgICpsb2NhbGxvY2s7Ci0K IAkvKiBGaXJzdCwgdmVyaWZ5IHRoZXJlIGFyZW4ndCBsb2NrcyBvZiBib3RoIHhhY3QgYW5kIHNl c3Npb24gbGV2ZWwgKi8KIAlDaGVja0ZvclNlc3Npb25BbmRYYWN0TG9ja3MoKTsKIAogCS8qIE5v dyBkbyB0aGUgcGVyLWxvY2FsbG9jayBjbGVhbnVwIHdvcmsgKi8KLQloYXNoX3NlcV9pbml0KCZz dGF0dXMsIExvY2tNZXRob2RMb2NhbEhhc2gpOwotCi0Jd2hpbGUgKChsb2NhbGxvY2sgPSAoTE9D QUxMT0NLICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hh c2goTE9DQUxMT0NLLCBsb2NhbGxvY2ssIExvY2tNZXRob2RMb2NhbEhhc2gpCiAJewogCQlUd29Q aGFzZUxvY2tSZWNvcmQgcmVjb3JkOwogCQlMT0NBTExPQ0tPV05FUiAqbG9ja093bmVycyA9IGxv Y2FsbG9jay0+bG9ja093bmVyczsKQEAgLTM1NTEsOCArMzUyMyw2IEBAIHZvaWQKIFBvc3RQcmVw YXJlX0xvY2tzKEZ1bGxUcmFuc2FjdGlvbklkIGZ4aWQpCiB7CiAJUEdQUk9DCSAgICpuZXdwcm9j ID0gVHdvUGhhc2VHZXREdW1teVByb2MoZnhpZCwgZmFsc2UpOwotCUhBU0hfU0VRX1NUQVRVUyBz dGF0dXM7Ci0JTE9DQUxMT0NLICAqbG9jYWxsb2NrOwogCUxPQ0sJICAgKmxvY2s7CiAJUFJPQ0xP Q0sgICAqcHJvY2xvY2s7CiAJUFJPQ0xPQ0tUQUcgcHJvY2xvY2t0YWc7CkBAIC0zNTc0LDkgKzM1 NDQsNyBAQCBQb3N0UHJlcGFyZV9Mb2NrcyhGdWxsVHJhbnNhY3Rpb25JZCBmeGlkKQogCSAqIHBv aW50aW5nIHRvIHRoZSBzYW1lIHByb2Nsb2NrLCBhbmQgd2UgZGFyZW4ndCBlbmQgdXAgd2l0aCBh bnkgZGFuZ2xpbmcKIAkgKiBwb2ludGVycy4KIAkgKi8KLQloYXNoX3NlcV9pbml0KCZzdGF0dXMs IExvY2tNZXRob2RMb2NhbEhhc2gpOwotCi0Jd2hpbGUgKChsb2NhbGxvY2sgPSAoTE9DQUxMT0NL ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goTE9D QUxMT0NLLCBsb2NhbGxvY2ssIExvY2tNZXRob2RMb2NhbEhhc2gpCiAJewogCQlMT0NBTExPQ0tP V05FUiAqbG9ja093bmVycyA9IGxvY2FsbG9jay0+bG9ja093bmVyczsKIAkJYm9vbAkJaGF2ZVNl c3Npb25Mb2NrOwpAQCAtMzc3Miw4ICszNzQwLDYgQEAgTG9ja0RhdGEgKgogR2V0TG9ja1N0YXR1 c0RhdGEodm9pZCkKIHsKIAlMb2NrRGF0YSAgICpkYXRhOwotCVBST0NMT0NLICAgKnByb2Nsb2Nr OwotCUhBU0hfU0VRX1NUQVRVUyBzZXFzdGF0OwogCWludAkJCWVsczsKIAlpbnQJCQllbDsKIAlp bnQJCQlpOwpAQCAtMzkwOSw5ICszODc1LDcgQEAgR2V0TG9ja1N0YXR1c0RhdGEodm9pZCkKIAl9 CiAKIAkvKiBOb3cgc2NhbiB0aGUgdGFibGVzIHRvIGNvcHkgdGhlIGRhdGEgKi8KLQloYXNoX3Nl cV9pbml0KCZzZXFzdGF0LCBMb2NrTWV0aG9kUHJvY0xvY2tIYXNoKTsKLQotCXdoaWxlICgocHJv Y2xvY2sgPSAoUFJPQ0xPQ0sgKikgaGFzaF9zZXFfc2VhcmNoKCZzZXFzdGF0KSkpCisJZm9yZWFj aF9oYXNoKFBST0NMT0NLLCBwcm9jbG9jaywgTG9ja01ldGhvZFByb2NMb2NrSGFzaCkKIAl7CiAJ CVBHUFJPQwkgICAqcHJvYyA9IHByb2Nsb2NrLT50YWcubXlQcm9jOwogCQlMT0NLCSAgICpsb2Nr ID0gcHJvY2xvY2stPnRhZy5teUxvY2s7CkBAIC00MTUwLDggKzQxMTQsNiBAQCB4bF9zdGFuZGJ5 X2xvY2sgKgogR2V0UnVubmluZ1RyYW5zYWN0aW9uTG9ja3MoaW50ICpubG9ja3MpCiB7CiAJeGxf c3RhbmRieV9sb2NrICphY2Nlc3NFeGNsdXNpdmVMb2NrczsKLQlQUk9DTE9DSyAgICpwcm9jbG9j azsKLQlIQVNIX1NFUV9TVEFUVVMgc2Vxc3RhdDsKIAlpbnQJCQlpOwogCWludAkJCWluZGV4Owog CWludAkJCWVsczsKQEAgLTQxNzMsMTAgKzQxMzUsOSBAQCBHZXRSdW5uaW5nVHJhbnNhY3Rpb25M b2NrcyhpbnQgKm5sb2NrcykKIAkgKi8KIAlhY2Nlc3NFeGNsdXNpdmVMb2NrcyA9IHBhbGxvYyhl bHMgKiBzaXplb2YoeGxfc3RhbmRieV9sb2NrKSk7CiAKLQkvKiBOb3cgc2NhbiB0aGUgdGFibGVz IHRvIGNvcHkgdGhlIGRhdGEgKi8KLQloYXNoX3NlcV9pbml0KCZzZXFzdGF0LCBMb2NrTWV0aG9k UHJvY0xvY2tIYXNoKTsKLQogCS8qCisJICogTm93IHNjYW4gdGhlIHRhYmxlcyB0byBjb3B5IHRo ZSBkYXRhLgorCSAqCiAJICogSWYgbG9jayBpcyBhIGN1cnJlbnRseSBncmFudGVkIEFjY2Vzc0V4 Y2x1c2l2ZUxvY2sgdGhlbiBpdCB3aWxsIGhhdmUKIAkgKiBqdXN0IG9uZSBwcm9jbG9jayBob2xk ZXIsIHNvIGxvY2tzIGFyZSBuZXZlciBhY2Nlc3NlZCB0d2ljZSBpbiB0aGlzCiAJICogcGFydGlj dWxhciBjYXNlLiBEb24ndCBjb3B5IHRoaXMgY29kZSBmb3IgdXNlIGVsc2V3aGVyZSBiZWNhdXNl IGluIHRoZQpAQCAtNDE4NCw3ICs0MTQ1LDcgQEAgR2V0UnVubmluZ1RyYW5zYWN0aW9uTG9ja3Mo aW50ICpubG9ja3MpCiAJICogbm9uLWV4Y2x1c2l2ZSBsb2NrIHR5cGVzLgogCSAqLwogCWluZGV4 ID0gMDsKLQl3aGlsZSAoKHByb2Nsb2NrID0gKFBST0NMT0NLICopIGhhc2hfc2VxX3NlYXJjaCgm c2Vxc3RhdCkpKQorCWZvcmVhY2hfaGFzaChQUk9DTE9DSywgcHJvY2xvY2ssIExvY2tNZXRob2RQ cm9jTG9ja0hhc2gpCiAJewogCQkvKiBtYWtlIHN1cmUgdGhpcyBkZWZpbml0aW9uIG1hdGNoZXMg dGhlIG9uZSB1c2VkIGluIExvY2tBY3F1aXJlICovCiAJCWlmICgocHJvY2xvY2stPmhvbGRNYXNr ICYgTE9DS0JJVF9PTihBY2Nlc3NFeGNsdXNpdmVMb2NrKSkgJiYKQEAgLTQyNzksMTggKzQyNDAs MTQgQEAgdm9pZAogRHVtcEFsbExvY2tzKHZvaWQpCiB7CiAJUEdQUk9DCSAgICpwcm9jOwotCVBS T0NMT0NLICAgKnByb2Nsb2NrOwogCUxPQ0sJICAgKmxvY2s7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0 YXR1czsKIAogCXByb2MgPSBNeVByb2M7CiAKIAlpZiAocHJvYyAmJiBwcm9jLT53YWl0TG9jaykK IAkJTE9DS19QUklOVCgiRHVtcEFsbExvY2tzOiB3YWl0aW5nIG9uIiwgcHJvYy0+d2FpdExvY2ss IDApOwogCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBMb2NrTWV0aG9kUHJvY0xvY2tIYXNoKTsK LQotCXdoaWxlICgocHJvY2xvY2sgPSAoUFJPQ0xPQ0sgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0 dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChQUk9DTE9DSywgcHJvY2xvY2ssIExvY2tNZXRo b2RQcm9jTG9ja0hhc2gpCiAJewogCQlQUk9DTE9DS19QUklOVCgiRHVtcEFsbExvY2tzIiwgcHJv Y2xvY2spOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2NrLmMg Yi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2NrLmMKaW5kZXggMGFmYzdjYWVlZWUuLjEy OTc5NjI5ZTUzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2NrLmMK KysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2x3bG9jay5jCkBAIC0zMTYsMTUgKzMxNiwx MCBAQCBpbml0X2x3bG9ja19zdGF0cyh2b2lkKQogc3RhdGljIHZvaWQKIHByaW50X2x3bG9ja19z dGF0cyhpbnQgY29kZSwgRGF0dW0gYXJnKQogewotCUhBU0hfU0VRX1NUQVRVUyBzY2FuOwotCWx3 bG9ja19zdGF0cyAqbHdzdGF0czsKLQotCWhhc2hfc2VxX2luaXQoJnNjYW4sIGx3bG9ja19zdGF0 c19odGFiKTsKLQogCS8qIEdyYWIgYW4gTFdMb2NrIHRvIGtlZXAgZGlmZmVyZW50IGJhY2tlbmRz IGZyb20gbWl4aW5nIHJlcG9ydHMgKi8KIAlMV0xvY2tBY3F1aXJlKCZNYWluTFdMb2NrQXJyYXlb MF0ubG9jaywgTFdfRVhDTFVTSVZFKTsKIAotCXdoaWxlICgobHdzdGF0cyA9IChsd2xvY2tfc3Rh dHMgKikgaGFzaF9zZXFfc2VhcmNoKCZzY2FuKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2gobHds b2NrX3N0YXRzLCBsd3N0YXRzLCBsd2xvY2tfc3RhdHNfaHRhYikKIAl7CiAJCWZwcmludGYoc3Rk ZXJyLAogCQkJCSJQSUQgJWQgbHdsb2NrICVzICVwOiBzaGFjcSAldSBleGFjcSAldSBibGsgJXUg c3BpbmRlbGF5ICV1IGRlcXVldWUgc2VsZiAldVxuIiwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVk aWNhdGUuYwppbmRleCA5ZjM3NzliOWFlYS4uNjNlMjYwZGU0ZWIgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdl L2xtZ3IvcHJlZGljYXRlLmMKQEAgLTE0NDAsOCArMTQ0MCw2IEBAIEdldFByZWRpY2F0ZUxvY2tT dGF0dXNEYXRhKHZvaWQpCiAJaW50CQkJaTsKIAlpbnQJCQllbHMsCiAJCQkJZWw7Ci0JSEFTSF9T RVFfU1RBVFVTIHNlcXN0YXQ7Ci0JUFJFRElDQVRFTE9DSyAqcHJlZGxvY2s7CiAKIAlkYXRhID0g cGFsbG9jX29iamVjdChQcmVkaWNhdGVMb2NrRGF0YSk7CiAKQEAgLTE0NjEsMTEgKzE0NTksOSBA QCBHZXRQcmVkaWNhdGVMb2NrU3RhdHVzRGF0YSh2b2lkKQogCiAKIAkvKiBTY2FuIHRocm91Z2gg UHJlZGljYXRlTG9ja0hhc2ggYW5kIGNvcHkgY29udGVudHMgKi8KLQloYXNoX3NlcV9pbml0KCZz ZXFzdGF0LCBQcmVkaWNhdGVMb2NrSGFzaCk7Ci0KIAllbCA9IDA7CiAKLQl3aGlsZSAoKHByZWRs b2NrID0gKFBSRURJQ0FURUxPQ0sgKikgaGFzaF9zZXFfc2VhcmNoKCZzZXFzdGF0KSkpCisJZm9y ZWFjaF9oYXNoKFBSRURJQ0FURUxPQ0ssIHByZWRsb2NrLCBQcmVkaWNhdGVMb2NrSGFzaCkKIAl7 CiAJCWRhdGEtPmxvY2t0YWdzW2VsXSA9IHByZWRsb2NrLT50YWcubXlUYXJnZXQtPnRhZzsKIAkJ ZGF0YS0+eGFjdHNbZWxdID0gKnByZWRsb2NrLT50YWcubXlYYWN0OwpAQCAtMjkyMiw4ICsyOTE4 LDYgQEAgZXhpdDoKIHN0YXRpYyB2b2lkCiBEcm9wQWxsUHJlZGljYXRlTG9ja3NGcm9tVGFibGUo UmVsYXRpb24gcmVsYXRpb24sIGJvb2wgdHJhbnNmZXIpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHNl cXN0YXQ7Ci0JUFJFRElDQVRFTE9DS1RBUkdFVCAqb2xkdGFyZ2V0OwogCVBSRURJQ0FURUxPQ0tU QVJHRVQgKmhlYXB0YXJnZXQ7CiAJT2lkCQkJZGJJZDsKIAlPaWQJCQlyZWxJZDsKQEAgLTI5Nzks OSArMjk3Myw3IEBAIERyb3BBbGxQcmVkaWNhdGVMb2Nrc0Zyb21UYWJsZShSZWxhdGlvbiByZWxh dGlvbiwgYm9vbCB0cmFuc2ZlcikKIAkJUmVtb3ZlU2NyYXRjaFRhcmdldCh0cnVlKTsKIAogCS8q IFNjYW4gdGhyb3VnaCB0YXJnZXQgbWFwICovCi0JaGFzaF9zZXFfaW5pdCgmc2Vxc3RhdCwgUHJl ZGljYXRlTG9ja1RhcmdldEhhc2gpOwotCi0Jd2hpbGUgKChvbGR0YXJnZXQgPSAoUFJFRElDQVRF TE9DS1RBUkdFVCAqKSBoYXNoX3NlcV9zZWFyY2goJnNlcXN0YXQpKSkKKwlmb3JlYWNoX2hhc2go UFJFRElDQVRFTE9DS1RBUkdFVCwgb2xkdGFyZ2V0LCBQcmVkaWNhdGVMb2NrVGFyZ2V0SGFzaCkK IAl7CiAJCWRsaXN0X211dGFibGVfaXRlciBpdGVyOwogCkBAIC00NDA0LDggKzQzOTYsNiBAQCBD aGVja0ZvclNlcmlhbGl6YWJsZUNvbmZsaWN0SW4oUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0 ZW1Qb2ludGVyRGF0YSAqdGlkLCBCbAogdm9pZAogQ2hlY2tUYWJsZUZvclNlcmlhbGl6YWJsZUNv bmZsaWN0SW4oUmVsYXRpb24gcmVsYXRpb24pCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHNlcXN0YXQ7 Ci0JUFJFRElDQVRFTE9DS1RBUkdFVCAqdGFyZ2V0OwogCU9pZAkJCWRiSWQ7CiAJT2lkCQkJaGVh cElkOwogCWludAkJCWk7CkBAIC00NDM5LDkgKzQ0MjksNyBAQCBDaGVja1RhYmxlRm9yU2VyaWFs aXphYmxlQ29uZmxpY3RJbihSZWxhdGlvbiByZWxhdGlvbikKIAlMV0xvY2tBY3F1aXJlKFNlcmlh bGl6YWJsZVhhY3RIYXNoTG9jaywgTFdfRVhDTFVTSVZFKTsKIAogCS8qIFNjYW4gdGhyb3VnaCB0 YXJnZXQgbGlzdCAqLwotCWhhc2hfc2VxX2luaXQoJnNlcXN0YXQsIFByZWRpY2F0ZUxvY2tUYXJn ZXRIYXNoKTsKLQotCXdoaWxlICgodGFyZ2V0ID0gKFBSRURJQ0FURUxPQ0tUQVJHRVQgKikgaGFz aF9zZXFfc2VhcmNoKCZzZXFzdGF0KSkpCisJZm9yZWFjaF9oYXNoKFBSRURJQ0FURUxPQ0tUQVJH RVQsIHRhcmdldCwgUHJlZGljYXRlTG9ja1RhcmdldEhhc2gpCiAJewogCQlkbGlzdF9tdXRhYmxl X2l0ZXIgaXRlcjsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9zbWdyL3NtZ3Iu YyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc21nci9zbWdyLmMKaW5kZXggNjgwZGE1MDQ4ZmQuLmNh YzYyNDlmOWFmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL3NtZ3Ivc21nci5jCisr KyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc21nci9zbWdyLmMKQEAgLTQwOSw5ICs0MDksNiBAQCBz bWdyZGVzdHJveWFsbCh2b2lkKQogdm9pZAogc21ncnJlbGVhc2VhbGwodm9pZCkKIHsKLQlIQVNI X1NFUV9TVEFUVVMgc3RhdHVzOwotCVNNZ3JSZWxhdGlvbiByZWxuOwotCiAJLyogTm90aGluZyB0 byBkbyBpZiBoYXNodGFibGUgbm90IHNldCB1cCAqLwogCWlmIChTTWdyUmVsYXRpb25IYXNoID09 IE5VTEwpCiAJCXJldHVybjsKQEAgLTQxOSw5ICs0MTYsNyBAQCBzbWdycmVsZWFzZWFsbCh2b2lk KQogCS8qIHNlZW1zIHVuc2FmZSB0byBhY2NlcHQgaW50ZXJydXB0cyB3aGlsZSBpdGVyYXRpbmcg Ki8KIAlIT0xEX0lOVEVSUlVQVFMoKTsKIAotCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgU01nclJl bGF0aW9uSGFzaCk7Ci0KLQl3aGlsZSAoKHJlbG4gPSAoU01nclJlbGF0aW9uKSBoYXNoX3NlcV9z ZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFNNZ3JSZWxhdGlvbkRhdGEs IHJlbG4sIFNNZ3JSZWxhdGlvbkhhc2gpCiAJewogCQlzbWdycmVsZWFzZShyZWxuKTsKIAl9CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL3N5bmMvc3luYy5jIGIvc3JjL2JhY2tlbmQv c3RvcmFnZS9zeW5jL3N5bmMuYwppbmRleCAwMWFjYjMwZjFiYi4uYjJkNWM3NmVmNzggMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc3luYy9zeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQv c3RvcmFnZS9zeW5jL3N5bmMuYwpAQCAtMjgwLDggKzI4MCw2IEBAIFByb2Nlc3NTeW5jUmVxdWVz dHModm9pZCkKIHsKIAlzdGF0aWMgYm9vbCBzeW5jX2luX3Byb2dyZXNzID0gZmFsc2U7CiAKLQlI QVNIX1NFUV9TVEFUVVMgaHN0YXQ7Ci0JUGVuZGluZ0ZzeW5jRW50cnkgKmVudHJ5OwogCWludAkJ CWFic29yYl9jb3VudGVyOwogCiAJLyogU3RhdGlzdGljcyBvbiBzeW5jIHRpbWVzICovCkBAIC0z MzgsOCArMzM2LDcgQEAgUHJvY2Vzc1N5bmNSZXF1ZXN0cyh2b2lkKQogCWlmIChzeW5jX2luX3By b2dyZXNzKQogCXsKIAkJLyogcHJpb3IgdHJ5IGZhaWxlZCwgc28gdXBkYXRlIGFueSBzdGFsZSBj eWNsZV9jdHIgdmFsdWVzICovCi0JCWhhc2hfc2VxX2luaXQoJmhzdGF0LCBwZW5kaW5nT3BzKTsK LQkJd2hpbGUgKChlbnRyeSA9IChQZW5kaW5nRnN5bmNFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2go JmhzdGF0KSkgIT0gTlVMTCkKKwkJZm9yZWFjaF9oYXNoKFBlbmRpbmdGc3luY0VudHJ5LCBlbnRy eSwgcGVuZGluZ09wcykKIAkJewogCQkJZW50cnktPmN5Y2xlX2N0ciA9IHN5bmNfY3ljbGVfY3Ry OwogCQl9CkBAIC0zNTMsOCArMzUwLDcgQEAgUHJvY2Vzc1N5bmNSZXF1ZXN0cyh2b2lkKQogCiAJ LyogTm93IHNjYW4gdGhlIGhhc2h0YWJsZSBmb3IgZnN5bmMgcmVxdWVzdHMgdG8gcHJvY2VzcyAq LwogCWFic29yYl9jb3VudGVyID0gRlNZTkNTX1BFUl9BQlNPUkI7Ci0JaGFzaF9zZXFfaW5pdCgm aHN0YXQsIHBlbmRpbmdPcHMpOwotCXdoaWxlICgoZW50cnkgPSAoUGVuZGluZ0ZzeW5jRW50cnkg KikgaGFzaF9zZXFfc2VhcmNoKCZoc3RhdCkpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFBlbmRp bmdGc3luY0VudHJ5LCBlbnRyeSwgcGVuZGluZ09wcykKIAl7CiAJCWludAkJCWZhaWx1cmVzOwog CkBAIC00OTUsMTMgKzQ5MSwxMCBAQCBSZW1lbWJlclN5bmNSZXF1ZXN0KGNvbnN0IEZpbGVUYWcg KmZ0YWcsIFN5bmNSZXF1ZXN0VHlwZSB0eXBlKQogCX0KIAllbHNlIGlmICh0eXBlID09IFNZTkNf RklMVEVSX1JFUVVFU1QpCiAJewotCQlIQVNIX1NFUV9TVEFUVVMgaHN0YXQ7Ci0JCVBlbmRpbmdG c3luY0VudHJ5ICpwZmU7CiAJCUxpc3RDZWxsICAgKmNlbGw7CiAKIAkJLyogQ2FuY2VsIG1hdGNo aW5nIGZzeW5jIHJlcXVlc3RzICovCi0JCWhhc2hfc2VxX2luaXQoJmhzdGF0LCBwZW5kaW5nT3Bz KTsKLQkJd2hpbGUgKChwZmUgPSAoUGVuZGluZ0ZzeW5jRW50cnkgKikgaGFzaF9zZXFfc2VhcmNo KCZoc3RhdCkpICE9IE5VTEwpCisJCWZvcmVhY2hfaGFzaChQZW5kaW5nRnN5bmNFbnRyeSwgcGZl LCBwZW5kaW5nT3BzKQogCQl7CiAJCQlpZiAocGZlLT50YWcuaGFuZGxlciA9PSBmdGFnLT5oYW5k bGVyICYmCiAJCQkJc3luY3N3W2Z0YWctPmhhbmRsZXJdLnN5bmNfZmlsZXRhZ21hdGNoZXMoZnRh ZywgJnBmZS0+dGFnKSkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3RzZWFyY2gvdHNfdHlwYW5h bHl6ZS5jIGIvc3JjL2JhY2tlbmQvdHNlYXJjaC90c190eXBhbmFseXplLmMKaW5kZXggYzJmM2I2 MzI2NWQuLjFhNGIzMjhjNGNkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90c2VhcmNoL3RzX3R5 cGFuYWx5emUuYworKysgYi9zcmMvYmFja2VuZC90c2VhcmNoL3RzX3R5cGFuYWx5emUuYwpAQCAt MTQ5LDcgKzE0OSw2IEBAIGNvbXB1dGVfdHN2ZWN0b3Jfc3RhdHMoVmFjQXR0clN0YXRzICpzdGF0 cywKIAogCS8qIFRoaXMgaXMgRCBmcm9tIHRoZSBMQyBhbGdvcml0aG0uICovCiAJSFRBQgkgICAq bGV4ZW1lc190YWI7Ci0JSEFTSF9TRVFfU1RBVFVTIHNjYW5fc3RhdHVzOwogCiAJLyogVGhpcyBp cyB0aGUgY3VycmVudCBidWNrZXQgbnVtYmVyIGZyb20gdGhlIExDIGFsZ29yaXRobSAqLwogCWlu dAkJCWJfY3VycmVudDsKQEAgLTI4OCw3ICsyODcsNiBAQCBjb21wdXRlX3RzdmVjdG9yX3N0YXRz KFZhY0F0dHJTdGF0cyAqc3RhdHMsCiAJCWludAkJCW5vbm51bGxfY250ID0gc2FtcGxlcm93cyAt IG51bGxfY250OwogCQlpbnQJCQlpOwogCQlUcmFja0l0ZW0gKipzb3J0X3RhYmxlOwotCQlUcmFj a0l0ZW0gICppdGVtOwogCQlpbnQJCQl0cmFja19sZW47CiAJCWludAkJCWN1dG9mZl9mcmVxOwog CQlpbnQJCQltaW5mcmVxLApAQCAtMzE1LDEwICszMTMsOSBAQCBjb21wdXRlX3RzdmVjdG9yX3N0 YXRzKFZhY0F0dHJTdGF0cyAqc3RhdHMsCiAJCWkgPSBoYXNoX2dldF9udW1fZW50cmllcyhsZXhl bWVzX3RhYik7CS8qIHN1cmVseSBlbm91Z2ggc3BhY2UgKi8KIAkJc29ydF90YWJsZSA9IHBhbGxv Y19hcnJheShUcmFja0l0ZW0gKiwgaSk7CiAKLQkJaGFzaF9zZXFfaW5pdCgmc2Nhbl9zdGF0dXMs IGxleGVtZXNfdGFiKTsKIAkJdHJhY2tfbGVuID0gMDsKIAkJbWF4ZnJlcSA9IDA7Ci0JCXdoaWxl ICgoaXRlbSA9IChUcmFja0l0ZW0gKikgaGFzaF9zZXFfc2VhcmNoKCZzY2FuX3N0YXR1cykpICE9 IE5VTEwpCisJCWZvcmVhY2hfaGFzaChUcmFja0l0ZW0sIGl0ZW0sIGxleGVtZXNfdGFiKQogCQl7 CiAJCQlpZiAoaXRlbS0+ZnJlcXVlbmN5ID4gY3V0b2ZmX2ZyZXEpCiAJCQl7CkBAIC00NjIsMTEg KzQ1OSw3IEBAIGNvbXB1dGVfdHN2ZWN0b3Jfc3RhdHMoVmFjQXR0clN0YXRzICpzdGF0cywKIHN0 YXRpYyB2b2lkCiBwcnVuZV9sZXhlbWVzX2hhc2h0YWJsZShIVEFCICpsZXhlbWVzX3RhYiwgaW50 IGJfY3VycmVudCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc2Nhbl9zdGF0dXM7Ci0JVHJhY2tJdGVt ICAqaXRlbTsKLQotCWhhc2hfc2VxX2luaXQoJnNjYW5fc3RhdHVzLCBsZXhlbWVzX3RhYik7Ci0J d2hpbGUgKChpdGVtID0gKFRyYWNrSXRlbSAqKSBoYXNoX3NlcV9zZWFyY2goJnNjYW5fc3RhdHVz KSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goVHJhY2tJdGVtLCBpdGVtLCBsZXhlbWVzX3RhYikK IAl7CiAJCWlmIChpdGVtLT5mcmVxdWVuY3kgKyBpdGVtLT5kZWx0YSA8PSBiX2N1cnJlbnQpCiAJ CXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYwppbmRleCBlNWFjOTU2ZGFm MC4uZTdiODM0YjI0MDggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dh aXRfZXZlbnQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMK QEAgLTI5OSw4ICsyOTksNiBAQCBjaGFyCSAgKioKIEdldFdhaXRFdmVudEN1c3RvbU5hbWVzKHVp bnQzMiBjbGFzc0lkLCBpbnQgKm53YWl0ZXZlbnRzKQogewogCWNoYXIJICAqKndhaXRldmVudG5h bWVzOwotCVdhaXRFdmVudEN1c3RvbUVudHJ5QnlOYW1lICpoZW50cnk7Ci0JSEFTSF9TRVFfU1RB VFVTIGhhc2hfc2VxOwogCWludAkJCWluZGV4OwogCWludAkJCWVsczsKIApAQCAtMzEzLDEwICsz MTEsOCBAQCBHZXRXYWl0RXZlbnRDdXN0b21OYW1lcyh1aW50MzIgY2xhc3NJZCwgaW50ICpud2Fp dGV2ZW50cykKIAl3YWl0ZXZlbnRuYW1lcyA9IHBhbGxvY19hcnJheShjaGFyICosIGVscyk7CiAK IAkvKiBOb3cgc2NhbiB0aGUgaGFzaCB0YWJsZSB0byBjb3B5IHRoZSBkYXRhICovCi0JaGFzaF9z ZXFfaW5pdCgmaGFzaF9zZXEsIFdhaXRFdmVudEN1c3RvbUhhc2hCeU5hbWUpOwotCiAJaW5kZXgg PSAwOwotCXdoaWxlICgoaGVudHJ5ID0gKFdhaXRFdmVudEN1c3RvbUVudHJ5QnlOYW1lICopIGhh c2hfc2VxX3NlYXJjaCgmaGFzaF9zZXEpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChXYWl0RXZl bnRDdXN0b21FbnRyeUJ5TmFtZSwgaGVudHJ5LCBXYWl0RXZlbnRDdXN0b21IYXNoQnlOYW1lKQog CXsKIAkJaWYgKChoZW50cnktPndhaXRfZXZlbnRfaW5mbyAmIFdBSVRfRVZFTlRfQ0xBU1NfTUFT SykgIT0gY2xhc3NJZCkKIAkJCWNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L2FycmF5X3R5cGFuYWx5emUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheV90 eXBhbmFseXplLmMKaW5kZXggYmRjN2UyMjM3ZjYuLjI4MWY2ODAwMzEwIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlfdHlwYW5hbHl6ZS5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9hcnJheV90eXBhbmFseXplLmMKQEAgLTIyMyw3ICsyMjMsNiBAQCBjb21wdXRl X2FycmF5X3N0YXRzKFZhY0F0dHJTdGF0cyAqc3RhdHMsIEFuYWx5emVBdHRyRmV0Y2hGdW5jIGZl dGNoZnVuYywKIAogCS8qIFRoaXMgaXMgRCBmcm9tIHRoZSBMQyBhbGdvcml0aG0uICovCiAJSFRB QgkgICAqZWxlbWVudHNfdGFiOwotCUhBU0hfU0VRX1NUQVRVUyBzY2FuX3N0YXR1czsKIAogCS8q IFRoaXMgaXMgdGhlIGN1cnJlbnQgYnVja2V0IG51bWJlciBmcm9tIHRoZSBMQyBhbGdvcml0aG0g Ki8KIAlpbnQJCQliX2N1cnJlbnQ7CkBAIC0yMzIsMTAgKzIzMSw4IEBAIGNvbXB1dGVfYXJyYXlf c3RhdHMoVmFjQXR0clN0YXRzICpzdGF0cywgQW5hbHl6ZUF0dHJGZXRjaEZ1bmMgZmV0Y2hmdW5j LAogCWludAkJCWJ1Y2tldF93aWR0aDsKIAlpbnQJCQlhcnJheV9ubzsKIAlpbnQ2NAkJZWxlbWVu dF9ubzsKLQlUcmFja0l0ZW0gICppdGVtOwogCWludAkJCXNsb3RfaWR4OwogCUhUQUIJICAgKmNv dW50X3RhYjsKLQlERUNvdW50SXRlbSAqY291bnRfaXRlbTsKIAogCWV4dHJhX2RhdGEgPSAoQXJy YXlBbmFseXplRXh0cmFEYXRhICopIHN0YXRzLT5leHRyYV9kYXRhOwogCkBAIC0zMDAsNiArMjk3 LDcgQEAgY29tcHV0ZV9hcnJheV9zdGF0cyhWYWNBdHRyU3RhdHMgKnN0YXRzLCBBbmFseXplQXR0 ckZldGNoRnVuYyBmZXRjaGZ1bmMsCiAJCWludDY0CQlwcmV2X2VsZW1lbnRfbm8gPSBlbGVtZW50 X25vOwogCQlpbnQJCQlkaXN0aW5jdF9jb3VudDsKIAkJYm9vbAkJY291bnRfaXRlbV9mb3VuZDsK KwkJREVDb3VudEl0ZW0gKmNvdW50X2l0ZW07CiAKIAkJdmFjdXVtX2RlbGF5X3BvaW50KHRydWUp OwogCkBAIC0zMzgsNiArMzM2LDcgQEAgY29tcHV0ZV9hcnJheV9zdGF0cyhWYWNBdHRyU3RhdHMg KnN0YXRzLCBBbmFseXplQXR0ckZldGNoRnVuYyBmZXRjaGZ1bmMsCiAJCXsKIAkJCURhdHVtCQll bGVtX3ZhbHVlOwogCQkJYm9vbAkJZm91bmQ7CisJCQlUcmFja0l0ZW0gICppdGVtOwogCiAJCQkv KiBObyBudWxsIGVsZW1lbnQgcHJvY2Vzc2luZyBvdGhlciB0aGFuIGZsYWcgc2V0dGluZyBoZXJl ICovCiAJCQlpZiAoZWxlbV9udWxsc1tqXSkKQEAgLTQ1OCwxMCArNDU3LDkgQEAgY29tcHV0ZV9h cnJheV9zdGF0cyhWYWNBdHRyU3RhdHMgKnN0YXRzLCBBbmFseXplQXR0ckZldGNoRnVuYyBmZXRj aGZ1bmMsCiAJCWkgPSBoYXNoX2dldF9udW1fZW50cmllcyhlbGVtZW50c190YWIpOyAvKiBzdXJl bHkgZW5vdWdoIHNwYWNlICovCiAJCXNvcnRfdGFibGUgPSBwYWxsb2NfYXJyYXkoVHJhY2tJdGVt ICosIGkpOwogCi0JCWhhc2hfc2VxX2luaXQoJnNjYW5fc3RhdHVzLCBlbGVtZW50c190YWIpOwog CQl0cmFja19sZW4gPSAwOwogCQltYXhmcmVxID0gMDsKLQkJd2hpbGUgKChpdGVtID0gKFRyYWNr SXRlbSAqKSBoYXNoX3NlcV9zZWFyY2goJnNjYW5fc3RhdHVzKSkgIT0gTlVMTCkKKwkJZm9yZWFj aF9oYXNoKFRyYWNrSXRlbSwgaXRlbSwgZWxlbWVudHNfdGFiKQogCQl7CiAJCQlpZiAoaXRlbS0+ ZnJlcXVlbmN5ID4gY3V0b2ZmX2ZyZXEpCiAJCQl7CkBAIC01OTQsOSArNTkyLDggQEAgY29tcHV0 ZV9hcnJheV9zdGF0cyhWYWNBdHRyU3RhdHMgKnN0YXRzLCBBbmFseXplQXR0ckZldGNoRnVuYyBm ZXRjaGZ1bmMsCiAJCQkgKiBpbmNyZWFzaW5nIGNvdW50IG9yZGVyLgogCQkJICovCiAJCQlzb3J0 ZWRfY291bnRfaXRlbXMgPSBwYWxsb2NfYXJyYXkoREVDb3VudEl0ZW0gKiwgY291bnRfaXRlbXNf Y291bnQpOwotCQkJaGFzaF9zZXFfaW5pdCgmc2Nhbl9zdGF0dXMsIGNvdW50X3RhYik7CiAJCQlq ID0gMDsKLQkJCXdoaWxlICgoY291bnRfaXRlbSA9IChERUNvdW50SXRlbSAqKSBoYXNoX3NlcV9z ZWFyY2goJnNjYW5fc3RhdHVzKSkgIT0gTlVMTCkKKwkJCWZvcmVhY2hfaGFzaChERUNvdW50SXRl bSwgY291bnRfaXRlbSwgY291bnRfdGFiKQogCQkJewogCQkJCXNvcnRlZF9jb3VudF9pdGVtc1tq KytdID0gY291bnRfaXRlbTsKIAkJCX0KQEAgLTY4MywxMSArNjgwLDcgQEAgY29tcHV0ZV9hcnJh eV9zdGF0cyhWYWNBdHRyU3RhdHMgKnN0YXRzLCBBbmFseXplQXR0ckZldGNoRnVuYyBmZXRjaGZ1 bmMsCiBzdGF0aWMgdm9pZAogcHJ1bmVfZWxlbWVudF9oYXNodGFibGUoSFRBQiAqZWxlbWVudHNf dGFiLCBpbnQgYl9jdXJyZW50KQogewotCUhBU0hfU0VRX1NUQVRVUyBzY2FuX3N0YXR1czsKLQlU cmFja0l0ZW0gICppdGVtOwotCi0JaGFzaF9zZXFfaW5pdCgmc2Nhbl9zdGF0dXMsIGVsZW1lbnRz X3RhYik7Ci0Jd2hpbGUgKChpdGVtID0gKFRyYWNrSXRlbSAqKSBoYXNoX3NlcV9zZWFyY2goJnNj YW5fc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goVHJhY2tJdGVtLCBpdGVtLCBlbGVt ZW50c190YWIpCiAJewogCQlpZiAoaXRlbS0+ZnJlcXVlbmN5ICsgaXRlbS0+ZGVsdGEgPD0gYl9j dXJyZW50KQogCQl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNo ZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwppbmRleCBjMTViMTI3YmRi Zi4uMjlkZGYwNDg2ZWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNh Y2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwpAQCAtMjk4NSw4 ICsyOTg1LDYgQEAgUmVsYXRpb25DYWNoZUludmFsaWRhdGVFbnRyeShPaWQgcmVsYXRpb25JZCkK IHZvaWQKIFJlbGF0aW9uQ2FjaGVJbnZhbGlkYXRlKGJvb2wgZGVidWdfZGlzY2FyZCkKIHsKLQlI QVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVJlbElkQ2FjaGVFbnQgKmlkaGVudHJ5OwogCVJlbGF0 aW9uCXJlbGF0aW9uOwogCUxpc3QJICAgKnJlYnVpbGRGaXJzdExpc3QgPSBOSUw7CiAJTGlzdAkg ICAqcmVidWlsZExpc3QgPSBOSUw7CkBAIC0yOTk5LDkgKzI5OTcsNyBAQCBSZWxhdGlvbkNhY2hl SW52YWxpZGF0ZShib29sIGRlYnVnX2Rpc2NhcmQpCiAJUmVsYXRpb25NYXBJbnZhbGlkYXRlQWxs KCk7CiAKIAkvKiBQaGFzZSAxICovCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBSZWxhdGlvbklk Q2FjaGUpOwotCi0Jd2hpbGUgKChpZGhlbnRyeSA9IChSZWxJZENhY2hlRW50ICopIGhhc2hfc2Vx X3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUmVsSWRDYWNoZUVudCwg aWRoZW50cnksIFJlbGF0aW9uSWRDYWNoZSkKIAl7CiAJCXJlbGF0aW9uID0gaWRoZW50cnktPnJl bGRlc2M7CiAKQEAgLTMxNDYsMTIgKzMxNDIsOSBAQCBBc3NlcnRQZW5kaW5nU3luY0NvbnNpc3Rl bmN5KFJlbGF0aW9uIHJlbGF0aW9uKQogdm9pZAogQXNzZXJ0UGVuZGluZ1N5bmNzX1JlbGF0aW9u Q2FjaGUodm9pZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCUxPQ0FMTE9DSyAgKmxv Y2FsbG9jazsKIAlSZWxhdGlvbiAgICpyZWxzOwogCWludAkJCW1heHJlbHM7CiAJaW50CQkJbnJl bHM7Ci0JUmVsSWRDYWNoZUVudCAqaWRoZW50cnk7CiAJaW50CQkJaTsKIAogCS8qCkBAIC0zMTY1 LDggKzMxNTgsNyBAQCBBc3NlcnRQZW5kaW5nU3luY3NfUmVsYXRpb25DYWNoZSh2b2lkKQogCW1h eHJlbHMgPSAxOwogCXJlbHMgPSBwYWxsb2MobWF4cmVscyAqIHNpemVvZigqcmVscykpOwogCW5y ZWxzID0gMDsKLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIEdldExvY2tNZXRob2RMb2NhbEhhc2go KSk7Ci0Jd2hpbGUgKChsb2NhbGxvY2sgPSAoTE9DQUxMT0NLICopIGhhc2hfc2VxX3NlYXJjaCgm c3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goTE9DQUxMT0NLLCBsb2NhbGxvY2ssIEdl dExvY2tNZXRob2RMb2NhbEhhc2goKSkKIAl7CiAJCU9pZAkJCXJlbGlkOwogCQlSZWxhdGlvbgly OwpAQCAtMzE4OCw4ICszMTgwLDcgQEAgQXNzZXJ0UGVuZGluZ1N5bmNzX1JlbGF0aW9uQ2FjaGUo dm9pZCkKIAkJcmVsc1tucmVscysrXSA9IHI7CiAJfQogCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVz LCBSZWxhdGlvbklkQ2FjaGUpOwotCXdoaWxlICgoaWRoZW50cnkgPSAoUmVsSWRDYWNoZUVudCAq KSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFJlbElk Q2FjaGVFbnQsIGlkaGVudHJ5LCBSZWxhdGlvbklkQ2FjaGUpCiAJCUFzc2VydFBlbmRpbmdTeW5j Q29uc2lzdGVuY3koaWRoZW50cnktPnJlbGRlc2MpOwogCiAJZm9yIChpID0gMDsgaSA8IG5yZWxz OyBpKyspCkBAIC0zMjE3LDggKzMyMDgsNiBAQCBBc3NlcnRQZW5kaW5nU3luY3NfUmVsYXRpb25D YWNoZSh2b2lkKQogdm9pZAogQXRFT1hhY3RfUmVsYXRpb25DYWNoZShib29sIGlzQ29tbWl0KQog ewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JUmVsSWRDYWNoZUVudCAqaWRoZW50cnk7CiAJ aW50CQkJaTsKIAogCS8qCkBAIC0zMjQxLDggKzMyMzAsNyBAQCBBdEVPWGFjdF9SZWxhdGlvbkNh Y2hlKGJvb2wgaXNDb21taXQpCiAJICovCiAJaWYgKGVveGFjdF9saXN0X292ZXJmbG93ZWQpCiAJ ewotCQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIFJlbGF0aW9uSWRDYWNoZSk7Ci0JCXdoaWxlICgo aWRoZW50cnkgPSAoUmVsSWRDYWNoZUVudCAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9 IE5VTEwpCisJCWZvcmVhY2hfaGFzaChSZWxJZENhY2hlRW50LCBpZGhlbnRyeSwgUmVsYXRpb25J ZENhY2hlKQogCQl7CiAJCQlBdEVPWGFjdF9jbGVhbnVwKGlkaGVudHJ5LT5yZWxkZXNjLCBpc0Nv bW1pdCk7CiAJCX0KQEAgLTMyNTEsMTAgKzMyMzksMTEgQEAgQXRFT1hhY3RfUmVsYXRpb25DYWNo ZShib29sIGlzQ29tbWl0KQogCXsKIAkJZm9yIChpID0gMDsgaSA8IGVveGFjdF9saXN0X2xlbjsg aSsrKQogCQl7Ci0JCQlpZGhlbnRyeSA9IChSZWxJZENhY2hlRW50ICopIGhhc2hfc2VhcmNoKFJl bGF0aW9uSWRDYWNoZSwKLQkJCQkJCQkJCQkJCQkgJmVveGFjdF9saXN0W2ldLAotCQkJCQkJCQkJ CQkJCSBIQVNIX0ZJTkQsCi0JCQkJCQkJCQkJCQkJIE5VTEwpOworCQkJUmVsSWRDYWNoZUVudCAq aWRoZW50cnkgPSBoYXNoX3NlYXJjaChSZWxhdGlvbklkQ2FjaGUsCisJCQkJCQkJCQkJCQkgICZl b3hhY3RfbGlzdFtpXSwKKwkJCQkJCQkJCQkJCSAgSEFTSF9GSU5ELAorCQkJCQkJCQkJCQkJICBO VUxMKTsKKwogCQkJaWYgKGlkaGVudHJ5ICE9IE5VTEwpCiAJCQkJQXRFT1hhY3RfY2xlYW51cChp ZGhlbnRyeS0+cmVsZGVzYywgaXNDb21taXQpOwogCQl9CkBAIC0zMzcwLDggKzMzNTksNiBAQCB2 b2lkCiBBdEVPU3ViWGFjdF9SZWxhdGlvbkNhY2hlKGJvb2wgaXNDb21taXQsIFN1YlRyYW5zYWN0 aW9uSWQgbXlTdWJpZCwKIAkJCQkJCSAgU3ViVHJhbnNhY3Rpb25JZCBwYXJlbnRTdWJpZCkKIHsK LQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVJlbElkQ2FjaGVFbnQgKmlkaGVudHJ5OwogCWlu dAkJCWk7CiAKIAkvKgpAQCAtMzM4OSw4ICszMzc2LDcgQEAgQXRFT1N1YlhhY3RfUmVsYXRpb25D YWNoZShib29sIGlzQ29tbWl0LCBTdWJUcmFuc2FjdGlvbklkIG15U3ViaWQsCiAJICovCiAJaWYg KGVveGFjdF9saXN0X292ZXJmbG93ZWQpCiAJewotCQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIFJl bGF0aW9uSWRDYWNoZSk7Ci0JCXdoaWxlICgoaWRoZW50cnkgPSAoUmVsSWRDYWNoZUVudCAqKSBo YXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJCWZvcmVhY2hfaGFzaChSZWxJZENh Y2hlRW50LCBpZGhlbnRyeSwgUmVsYXRpb25JZENhY2hlKQogCQl7CiAJCQlBdEVPU3ViWGFjdF9j bGVhbnVwKGlkaGVudHJ5LT5yZWxkZXNjLCBpc0NvbW1pdCwKIAkJCQkJCQkJbXlTdWJpZCwgcGFy ZW50U3ViaWQpOwpAQCAtMzQwMCw2ICszMzg2LDggQEAgQXRFT1N1YlhhY3RfUmVsYXRpb25DYWNo ZShib29sIGlzQ29tbWl0LCBTdWJUcmFuc2FjdGlvbklkIG15U3ViaWQsCiAJewogCQlmb3IgKGkg PSAwOyBpIDwgZW94YWN0X2xpc3RfbGVuOyBpKyspCiAJCXsKKwkJCVJlbElkQ2FjaGVFbnQgKmlk aGVudHJ5OworCiAJCQlpZGhlbnRyeSA9IChSZWxJZENhY2hlRW50ICopIGhhc2hfc2VhcmNoKFJl bGF0aW9uSWRDYWNoZSwKIAkJCQkJCQkJCQkJCQkgJmVveGFjdF9saXN0W2ldLAogCQkJCQkJCQkJ CQkJCSBIQVNIX0ZJTkQsCkBAIC02NTc4LDggKzY1NjYsNiBAQCB3cml0ZV9yZWxjYWNoZV9pbml0 X2ZpbGUoYm9vbCBzaGFyZWQpCiAJY2hhcgkJdGVtcGZpbGVuYW1lW01BWFBHUEFUSF07CiAJY2hh cgkJZmluYWxmaWxlbmFtZVtNQVhQR1BBVEhdOwogCWludAkJCW1hZ2ljOwotCUhBU0hfU0VRX1NU QVRVUyBzdGF0dXM7Ci0JUmVsSWRDYWNoZUVudCAqaWRoZW50cnk7CiAJaW50CQkJaTsKIAogCS8q CkBAIC02NjM5LDkgKzY2MjUsNyBAQCB3cml0ZV9yZWxjYWNoZV9pbml0X2ZpbGUoYm9vbCBzaGFy ZWQpCiAJLyoKIAkgKiBXcml0ZSBhbGwgdGhlIGFwcHJvcHJpYXRlIHJlbGRlc2NzIChpbiBubyBw YXJ0aWN1bGFyIG9yZGVyKS4KIAkgKi8KLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIFJlbGF0aW9u SWRDYWNoZSk7Ci0KLQl3aGlsZSAoKGlkaGVudHJ5ID0gKFJlbElkQ2FjaGVFbnQgKikgaGFzaF9z ZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChSZWxJZENhY2hlRW50 LCBpZGhlbnRyeSwgUmVsYXRpb25JZENhY2hlKQogCXsKIAkJUmVsYXRpb24JcmVsID0gaWRoZW50 cnktPnJlbGRlc2M7CiAJCUZvcm1fcGdfY2xhc3MgcmVsZm9ybSA9IHJlbC0+cmRfcmVsOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsZmlsZW51bWJlcm1hcC5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsZmlsZW51bWJlcm1hcC5jCmluZGV4IDA5YjA1ZGVjOWQw Li4wMGRmN2RiNDgxMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsZmls ZW51bWJlcm1hcC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGZpbGVudW1iZXJt YXAuYwpAQCAtNTEsMTQgKzUxLDEwIEBAIHR5cGVkZWYgc3RydWN0CiBzdGF0aWMgdm9pZAogUmVs ZmlsZW51bWJlck1hcEludmFsaWRhdGVDYWxsYmFjayhEYXR1bSBhcmcsIE9pZCByZWxpZCkKIHsK LQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVJlbGZpbGVudW1iZXJNYXBFbnRyeSAqZW50cnk7 Ci0KIAkvKiBjYWxsYmFjayBvbmx5IGdldHMgcmVnaXN0ZXJlZCBhZnRlciBjcmVhdGluZyB0aGUg aGFzaCAqLwogCUFzc2VydChSZWxmaWxlbnVtYmVyTWFwSGFzaCAhPSBOVUxMKTsKIAotCWhhc2hf c2VxX2luaXQoJnN0YXR1cywgUmVsZmlsZW51bWJlck1hcEhhc2gpOwotCXdoaWxlICgoZW50cnkg PSAoUmVsZmlsZW51bWJlck1hcEVudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0g TlVMTCkKKwlmb3JlYWNoX2hhc2goUmVsZmlsZW51bWJlck1hcEVudHJ5LCBlbnRyeSwgUmVsZmls ZW51bWJlck1hcEhhc2gpCiAJewogCQkvKgogCQkgKiBJZiByZWxpZCBpcyBJbnZhbGlkT2lkLCBz aWduYWxpbmcgYSBjb21wbGV0ZSByZXNldCwgd2UgbXVzdCByZW1vdmUKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2NhY2hlL3NwY2NhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9zcGNjYWNoZS5jCmluZGV4IGJmMDA3ZDY5YWQ0Li40NGUxOTQ3NmMxNiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvc3BjY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGls cy9jYWNoZS9zcGNjYWNoZS5jCkBAIC01NSwxMSArNTUsNyBAQCB0eXBlZGVmIHN0cnVjdAogc3Rh dGljIHZvaWQKIEludmFsaWRhdGVUYWJsZVNwYWNlQ2FjaGVDYWxsYmFjayhEYXR1bSBhcmcsIGlu dCBjYWNoZWlkLCB1aW50MzIgaGFzaHZhbHVlKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7 Ci0JVGFibGVTcGFjZUNhY2hlRW50cnkgKnNwYzsKLQotCWhhc2hfc2VxX2luaXQoJnN0YXR1cywg VGFibGVTcGFjZUNhY2hlSGFzaCk7Ci0Jd2hpbGUgKChzcGMgPSAoVGFibGVTcGFjZUNhY2hlRW50 cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChU YWJsZVNwYWNlQ2FjaGVFbnRyeSwgc3BjLCBUYWJsZVNwYWNlQ2FjaGVIYXNoKQogCXsKIAkJaWYg KHNwYy0+b3B0cykKIAkJCXBmcmVlKHNwYy0+b3B0cyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9jYWNoZS90c19jYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHNfY2Fj aGUuYwppbmRleCBlOWFlNGE1ZjA5My4uMDEwMWFhYTY0MTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL3RzX2NhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUv dHNfY2FjaGUuYwpAQCAtOTQsMTEgKzk0LDggQEAgc3RhdGljIHZvaWQKIEludmFsaWRhdGVUU0Nh Y2hlQ2FsbEJhY2soRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKIHsK IAlIVEFCCSAgICpoYXNoID0gKEhUQUIgKikgRGF0dW1HZXRQb2ludGVyKGFyZyk7Ci0JSEFTSF9T RVFfU1RBVFVTIHN0YXR1czsKLQlUU0FueUNhY2hlRW50cnkgKmVudHJ5OwogCi0JaGFzaF9zZXFf aW5pdCgmc3RhdHVzLCBoYXNoKTsKLQl3aGlsZSAoKGVudHJ5ID0gKFRTQW55Q2FjaGVFbnRyeSAq KSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFRTQW55 Q2FjaGVFbnRyeSwgZW50cnksIGhhc2gpCiAJCWVudHJ5LT5pc3ZhbGlkID0gZmFsc2U7CiAKIAkv KiBBbHNvIGludmFsaWRhdGUgdGhlIGN1cnJlbnQtY29uZmlnIGNhY2hlIGlmIGl0J3MgcGdfdHNf Y29uZmlnICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYwppbmRleCA2MThkMDEwMGQzOC4uNjZlMzEzZDUzMWUg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9ndWMuYwpAQCAtMjg4LDggKzI4OCw2IEBAIFByb2Nlc3NDb25maWdGaWxl SW50ZXJuYWwoR3VjQ29udGV4dCBjb250ZXh0LCBib29sIGFwcGx5U2V0dGluZ3MsIGludCBlbGV2 ZWwpCiAJY29uc3QgY2hhciAqQ29uZkZpbGVXaXRoRXJyb3I7CiAJQ29uZmlnVmFyaWFibGUgKmhl YWQsCiAJCQkgICAqdGFpbDsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCUdVQ0hhc2hFbnRy eSAqaGVudHJ5OwogCiAJLyogUGFyc2UgdGhlIG1haW4gY29uZmlnIGZpbGUgaW50byBhIGxpc3Qg b2Ygb3B0aW9uIG5hbWVzIGFuZCB2YWx1ZXMgKi8KIAlDb25mRmlsZVdpdGhFcnJvciA9IENvbmZp Z0ZpbGVOYW1lOwpAQCAtMzY0LDggKzM2Miw3IEBAIFByb2Nlc3NDb25maWdGaWxlSW50ZXJuYWwo R3VjQ29udGV4dCBjb250ZXh0LCBib29sIGFwcGx5U2V0dGluZ3MsIGludCBlbGV2ZWwpCiAJICog bmVlZCB0aGlzIHNvIHRoYXQgd2UgY2FuIHRlbGwgYmVsb3cgd2hpY2ggb25lcyBoYXZlIGJlZW4g cmVtb3ZlZCBmcm9tCiAJICogdGhlIGZpbGUgc2luY2Ugd2UgbGFzdCBwcm9jZXNzZWQgaXQuCiAJ ICovCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBndWNfaGFzaHRhYik7Ci0Jd2hpbGUgKChoZW50 cnkgPSAoR1VDSGFzaEVudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkK Kwlmb3JlYWNoX2hhc2goR1VDSGFzaEVudHJ5LCBoZW50cnksIGd1Y19oYXNodGFiKQogCXsKIAkJ c3RydWN0IGNvbmZpZ19nZW5lcmljICpnY29uZiA9IGhlbnRyeS0+Z3VjdmFyOwogCkBAIC00NDks OCArNDQ2LDcgQEAgUHJvY2Vzc0NvbmZpZ0ZpbGVJbnRlcm5hbChHdWNDb250ZXh0IGNvbnRleHQs IGJvb2wgYXBwbHlTZXR0aW5ncywgaW50IGVsZXZlbCkKIAkgKiBib290LXRpbWUgZGVmYXVsdHMu ICBJZiBzdWNoIGEgdmFyaWFibGUgY2FuJ3QgYmUgY2hhbmdlZCBhZnRlciBzdGFydHVwLAogCSAq IHJlcG9ydCB0aGF0IGFuZCBjb250aW51ZS4KIAkgKi8KLQloYXNoX3NlcV9pbml0KCZzdGF0dXMs IGd1Y19oYXNodGFiKTsKLQl3aGlsZSAoKGhlbnRyeSA9IChHVUNIYXNoRW50cnkgKikgaGFzaF9z ZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChHVUNIYXNoRW50cnks IGhlbnRyeSwgZ3VjX2hhc2h0YWIpCiAJewogCQlzdHJ1Y3QgY29uZmlnX2dlbmVyaWMgKmdjb25m ID0gaGVudHJ5LT5ndWN2YXI7CiAKQEAgLTgzOSw4ICs4MzUsNiBAQCBzdHJ1Y3QgY29uZmlnX2dl bmVyaWMgKioKIGdldF9ndWNfdmFyaWFibGVzKGludCAqbnVtX3ZhcnMpCiB7CiAJc3RydWN0IGNv bmZpZ19nZW5lcmljICoqcmVzdWx0OwotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JR1VDSGFz aEVudHJ5ICpoZW50cnk7CiAJaW50CQkJaTsKIAogCSpudW1fdmFycyA9IGhhc2hfZ2V0X251bV9l bnRyaWVzKGd1Y19oYXNodGFiKTsKQEAgLTg0OCw4ICs4NDIsNyBAQCBnZXRfZ3VjX3ZhcmlhYmxl cyhpbnQgKm51bV92YXJzKQogCiAJLyogRXh0cmFjdCBwb2ludGVycyBmcm9tIHRoZSBoYXNoIHRh YmxlICovCiAJaSA9IDA7Ci0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBndWNfaGFzaHRhYik7Ci0J d2hpbGUgKChoZW50cnkgPSAoR1VDSGFzaEVudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVz KSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goR1VDSGFzaEVudHJ5LCBoZW50cnksIGd1Y19oYXNo dGFiKQogCQlyZXN1bHRbaSsrXSA9IGhlbnRyeS0+Z3VjdmFyOwogCUFzc2VydChpID09ICpudW1f dmFycyk7CiAKQEAgLTE0MDAsOSArMTM5Myw2IEBAIGNoZWNrX0dVQ19pbml0KGNvbnN0IHN0cnVj dCBjb25maWdfZ2VuZXJpYyAqZ2NvbmYpCiB2b2lkCiBJbml0aWFsaXplR1VDT3B0aW9ucyh2b2lk KQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JR1VDSGFzaEVudHJ5ICpoZW50cnk7Ci0K IAkvKgogCSAqIEJlZm9yZSBsb2dfbGluZV9wcmVmaXggY291bGQgcG9zc2libHkgcmVjZWl2ZSBh IG5vbmVtcHR5IHNldHRpbmcsIG1ha2UKIAkgKiBzdXJlIHRoYXQgdGltZXpvbmUgcHJvY2Vzc2lu ZyBpcyBtaW5pbWFsbHkgYWxpdmUgKHNlZSBlbG9nLmMpLgpAQCAtMTQxOCw4ICsxNDA4LDcgQEAg SW5pdGlhbGl6ZUdVQ09wdGlvbnModm9pZCkKIAkgKiBMb2FkIGFsbCB2YXJpYWJsZXMgd2l0aCB0 aGVpciBjb21waWxlZC1pbiBkZWZhdWx0cywgYW5kIGluaXRpYWxpemUKIAkgKiBzdGF0dXMgZmll bGRzIGFzIG5lZWRlZC4KIAkgKi8KLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIGd1Y19oYXNodGFi KTsKLQl3aGlsZSAoKGhlbnRyeSA9IChHVUNIYXNoRW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZz dGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChHVUNIYXNoRW50cnksIGhlbnRyeSwgZ3Vj X2hhc2h0YWIpCiAJewogCQkvKiBDaGVjayBtYXBwaW5nIGJldHdlZW4gaW5pdGlhbCBhbmQgZGVm YXVsdCB2YWx1ZSAqLwogCQlBc3NlcnQoY2hlY2tfR1VDX2luaXQoaGVudHJ5LT5ndWN2YXIpKTsK QEAgLTI0MTQsOSArMjQwMyw2IEBAIEF0RU9YYWN0X0dVQyhib29sIGlzQ29tbWl0LCBpbnQgbmVz dExldmVsKQogdm9pZAogQmVnaW5SZXBvcnRpbmdHVUNPcHRpb25zKHZvaWQpCiB7Ci0JSEFTSF9T RVFfU1RBVFVTIHN0YXR1czsKLQlHVUNIYXNoRW50cnkgKmhlbnRyeTsKLQogCS8qCiAJICogRG9u J3QgZG8gYW55dGhpbmcgdW5sZXNzIHRhbGtpbmcgdG8gYW4gaW50ZXJhY3RpdmUgZnJvbnRlbmQu CiAJICovCkBAIC0yNDM4LDggKzI0MjQsNyBAQCBCZWdpblJlcG9ydGluZ0dVQ09wdGlvbnModm9p ZCkKIAkJCQkJCVBHQ19JTlRFUk5BTCwgUEdDX1NfT1ZFUlJJREUpOwogCiAJLyogVHJhbnNtaXQg aW5pdGlhbCB2YWx1ZXMgb2YgaW50ZXJlc3RpbmcgdmFyaWFibGVzICovCi0JaGFzaF9zZXFfaW5p dCgmc3RhdHVzLCBndWNfaGFzaHRhYik7Ci0Jd2hpbGUgKChoZW50cnkgPSAoR1VDSGFzaEVudHJ5 ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goR1VD SGFzaEVudHJ5LCBoZW50cnksIGd1Y19oYXNodGFiKQogCXsKIAkJc3RydWN0IGNvbmZpZ19nZW5l cmljICpjb25mID0gaGVudHJ5LT5ndWN2YXI7CiAKQEAgLTUxNDIsMTYgKzUxMjcsMTMgQEAgdm9p ZAogTWFya0dVQ1ByZWZpeFJlc2VydmVkKGNvbnN0IGNoYXIgKmNsYXNzTmFtZSkKIHsKIAlpbnQJ CQljbGFzc0xlbiA9IHN0cmxlbihjbGFzc05hbWUpOwotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7 Ci0JR1VDSGFzaEVudHJ5ICpoZW50cnk7CiAJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OwogCiAJ LyoKIAkgKiBDaGVjayBmb3IgZXhpc3RpbmcgcGxhY2Vob2xkZXJzLiAgV2UgbXVzdCBhY3R1YWxs eSByZW1vdmUgaW52YWxpZAogCSAqIHBsYWNlaG9sZGVycywgZWxzZSBmdXR1cmUgcGFyYWxsZWwg d29ya2VyIHN0YXJ0dXBzIHdpbGwgZmFpbC4KIAkgKi8KLQloYXNoX3NlcV9pbml0KCZzdGF0dXMs IGd1Y19oYXNodGFiKTsKLQl3aGlsZSAoKGhlbnRyeSA9IChHVUNIYXNoRW50cnkgKikgaGFzaF9z ZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChHVUNIYXNoRW50cnks IGhlbnRyeSwgZ3VjX2hhc2h0YWIpCiAJewogCQlzdHJ1Y3QgY29uZmlnX2dlbmVyaWMgKnZhciA9 IGhlbnRyeS0+Z3VjdmFyOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL3Bv cnRhbG1lbS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYwppbmRleCAwYTEw ODJmNDg0NS4uNDZkZGJhMDk2NWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3Iv cG9ydGFsbWVtLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYwpAQCAt Nzc2LDEyICs3NzYsNyBAQCBQcmVDb21taXRfUG9ydGFscyhib29sIGlzUHJlcGFyZSkKIHZvaWQK IEF0QWJvcnRfUG9ydGFscyh2b2lkKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JUG9y dGFsSGFzaEVudCAqaGVudHJ5OwotCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBQb3J0YWxIYXNo VGFibGUpOwotCi0Jd2hpbGUgKChoZW50cnkgPSAoUG9ydGFsSGFzaEVudCAqKSBoYXNoX3NlcV9z ZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFBvcnRhbEhhc2hFbnQsIGhl bnRyeSwgUG9ydGFsSGFzaFRhYmxlKQogCXsKIAkJUG9ydGFsCQlwb3J0YWwgPSBoZW50cnktPnBv cnRhbDsKIApAQCAtODU0LDEyICs4NDksNyBAQCBBdEFib3J0X1BvcnRhbHModm9pZCkKIHZvaWQK IEF0Q2xlYW51cF9Qb3J0YWxzKHZvaWQpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlQ b3J0YWxIYXNoRW50ICpoZW50cnk7Ci0KLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIFBvcnRhbEhh c2hUYWJsZSk7Ci0KLQl3aGlsZSAoKGhlbnRyeSA9IChQb3J0YWxIYXNoRW50ICopIGhhc2hfc2Vx X3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUG9ydGFsSGFzaEVudCwg aGVudHJ5LCBQb3J0YWxIYXNoVGFibGUpCiAJewogCQlQb3J0YWwJCXBvcnRhbCA9IGhlbnRyeS0+ cG9ydGFsOwogCkBAIC05MTMsMTIgKzkwMyw3IEBAIEF0Q2xlYW51cF9Qb3J0YWxzKHZvaWQpCiB2 b2lkCiBQb3J0YWxFcnJvckNsZWFudXAodm9pZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVz OwotCVBvcnRhbEhhc2hFbnQgKmhlbnRyeTsKLQotCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgUG9y dGFsSGFzaFRhYmxlKTsKLQotCXdoaWxlICgoaGVudHJ5ID0gKFBvcnRhbEhhc2hFbnQgKikgaGFz aF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChQb3J0YWxIYXNo RW50LCBoZW50cnksIFBvcnRhbEhhc2hUYWJsZSkKIAl7CiAJCVBvcnRhbAkJcG9ydGFsID0gaGVu dHJ5LT5wb3J0YWw7CiAKQEAgLTk0MiwxMiArOTI3LDcgQEAgQXRTdWJDb21taXRfUG9ydGFscyhT dWJUcmFuc2FjdGlvbklkIG15U3ViaWQsCiAJCQkJCWludCBwYXJlbnRMZXZlbCwKIAkJCQkJUmVz b3VyY2VPd25lciBwYXJlbnRYYWN0T3duZXIpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsK LQlQb3J0YWxIYXNoRW50ICpoZW50cnk7Ci0KLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIFBvcnRh bEhhc2hUYWJsZSk7Ci0KLQl3aGlsZSAoKGhlbnRyeSA9IChQb3J0YWxIYXNoRW50ICopIGhhc2hf c2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUG9ydGFsSGFzaEVu dCwgaGVudHJ5LCBQb3J0YWxIYXNoVGFibGUpCiAJewogCQlQb3J0YWwJCXBvcnRhbCA9IGhlbnRy eS0+cG9ydGFsOwogCkBAIC05NzgsMTIgKzk1OCw3IEBAIEF0U3ViQWJvcnRfUG9ydGFscyhTdWJU cmFuc2FjdGlvbklkIG15U3ViaWQsCiAJCQkJICAgUmVzb3VyY2VPd25lciBteVhhY3RPd25lciwK IAkJCQkgICBSZXNvdXJjZU93bmVyIHBhcmVudFhhY3RPd25lcikKIHsKLQlIQVNIX1NFUV9TVEFU VVMgc3RhdHVzOwotCVBvcnRhbEhhc2hFbnQgKmhlbnRyeTsKLQotCWhhc2hfc2VxX2luaXQoJnN0 YXR1cywgUG9ydGFsSGFzaFRhYmxlKTsKLQotCXdoaWxlICgoaGVudHJ5ID0gKFBvcnRhbEhhc2hF bnQgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChQ b3J0YWxIYXNoRW50LCBoZW50cnksIFBvcnRhbEhhc2hUYWJsZSkKIAl7CiAJCVBvcnRhbAkJcG9y dGFsID0gaGVudHJ5LT5wb3J0YWw7CiAKQEAgLTEwODgsMTIgKzEwNjMsNyBAQCBBdFN1YkFib3J0 X1BvcnRhbHMoU3ViVHJhbnNhY3Rpb25JZCBteVN1YmlkLAogdm9pZAogQXRTdWJDbGVhbnVwX1Bv cnRhbHMoU3ViVHJhbnNhY3Rpb25JZCBteVN1YmlkKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0 dXM7Ci0JUG9ydGFsSGFzaEVudCAqaGVudHJ5OwotCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBQ b3J0YWxIYXNoVGFibGUpOwotCi0Jd2hpbGUgKChoZW50cnkgPSAoUG9ydGFsSGFzaEVudCAqKSBo YXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFBvcnRhbEhh c2hFbnQsIGhlbnRyeSwgUG9ydGFsSGFzaFRhYmxlKQogCXsKIAkJUG9ydGFsCQlwb3J0YWwgPSBo ZW50cnktPnBvcnRhbDsKIApAQCAtMTEyOCw4ICsxMDk4LDYgQEAgRGF0dW0KIHBnX2N1cnNvcihQ R19GVU5DVElPTl9BUkdTKQogewogCVJldHVyblNldEluZm8gKnJzaW5mbyA9IChSZXR1cm5TZXRJ bmZvICopIGZjaW5mby0+cmVzdWx0aW5mbzsKLQlIQVNIX1NFUV9TVEFUVVMgaGFzaF9zZXE7Ci0J UG9ydGFsSGFzaEVudCAqaGVudHJ5OwogCiAJLyoKIAkgKiBXZSBwdXQgYWxsIHRoZSB0dXBsZXMg aW50byBhIHR1cGxlc3RvcmUgaW4gb25lIHNjYW4gb2YgdGhlIGhhc2h0YWJsZS4KQEAgLTExMzcs OCArMTEwNSw3IEBAIHBnX2N1cnNvcihQR19GVU5DVElPTl9BUkdTKQogCSAqLwogCUluaXRNYXRl cmlhbGl6ZWRTUkYoZmNpbmZvLCAwKTsKIAotCWhhc2hfc2VxX2luaXQoJmhhc2hfc2VxLCBQb3J0 YWxIYXNoVGFibGUpOwotCXdoaWxlICgoaGVudHJ5ID0gaGFzaF9zZXFfc2VhcmNoKCZoYXNoX3Nl cSkpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFBvcnRhbEhhc2hFbnQsIGhlbnRyeSwgUG9ydGFs SGFzaFRhYmxlKQogCXsKIAkJUG9ydGFsCQlwb3J0YWwgPSBoZW50cnktPnBvcnRhbDsKIAkJRGF0 dW0JCXZhbHVlc1s2XTsKQEAgLTExNjcsMTIgKzExMzQsNyBAQCBwZ19jdXJzb3IoUEdfRlVOQ1RJ T05fQVJHUykKIGJvb2wKIFRoZXJlQXJlTm9SZWFkeVBvcnRhbHModm9pZCkKIHsKLQlIQVNIX1NF UV9TVEFUVVMgc3RhdHVzOwotCVBvcnRhbEhhc2hFbnQgKmhlbnRyeTsKLQotCWhhc2hfc2VxX2lu aXQoJnN0YXR1cywgUG9ydGFsSGFzaFRhYmxlKTsKLQotCXdoaWxlICgoaGVudHJ5ID0gKFBvcnRh bEhhc2hFbnQgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hf aGFzaChQb3J0YWxIYXNoRW50LCBoZW50cnksIFBvcnRhbEhhc2hUYWJsZSkKIAl7CiAJCVBvcnRh bAkJcG9ydGFsID0gaGVudHJ5LT5wb3J0YWw7CiAKQEAgLTEyMDMsMTIgKzExNjUsNyBAQCBUaGVy ZUFyZU5vUmVhZHlQb3J0YWxzKHZvaWQpCiB2b2lkCiBIb2xkUGlubmVkUG9ydGFscyh2b2lkKQog ewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JUG9ydGFsSGFzaEVudCAqaGVudHJ5OwotCi0J aGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBQb3J0YWxIYXNoVGFibGUpOwotCi0Jd2hpbGUgKChoZW50 cnkgPSAoUG9ydGFsSGFzaEVudCAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwp CisJZm9yZWFjaF9oYXNoKFBvcnRhbEhhc2hFbnQsIGhlbnRyeSwgUG9ydGFsSGFzaFRhYmxlKQog CXsKIAkJUG9ydGFsCQlwb3J0YWwgPSBoZW50cnktPnBvcnRhbDsKIApAQCAtMTI1MiwxNSArMTIw OSwxMSBAQCBIb2xkUGlubmVkUG9ydGFscyh2b2lkKQogdm9pZAogRm9yZ2V0UG9ydGFsU25hcHNo b3RzKHZvaWQpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlQb3J0YWxIYXNoRW50ICpo ZW50cnk7CiAJaW50CQkJbnVtUG9ydGFsU25hcHMgPSAwOwogCWludAkJCW51bUFjdGl2ZVNuYXBz ID0gMDsKIAogCS8qIEZpcnN0LCBzY2FuIFBvcnRhbEhhc2hUYWJsZSBhbmQgY2xlYXIgcG9ydGFs U25hcHNob3QgZmllbGRzICovCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBQb3J0YWxIYXNoVGFi bGUpOwotCi0Jd2hpbGUgKChoZW50cnkgPSAoUG9ydGFsSGFzaEVudCAqKSBoYXNoX3NlcV9zZWFy Y2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFBvcnRhbEhhc2hFbnQsIGhlbnRy eSwgUG9ydGFsSGFzaFRhYmxlKQogCXsKIAkJUG9ydGFsCQlwb3J0YWwgPSBoZW50cnktPnBvcnRh bDsKIAotLSAKMi41Mi4wCgo= --cff217dca48da7654d3c859f55554fe6e9047c1de32e45e5c1333ff31462 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v4-0005-Inline-functions-that-have-now-become-trivial.patch Content-Type: text/x-patch; charset=utf-8; name=v4-0005-Inline-functions-that-have-now-become-trivial.patch RnJvbSAyOTc4OWM1ZDM5Y2EwZmQ3MjViNDYyY2YxNWNjYjgxMWJkZjlhMTc4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBXZWQsIDMgRGVjIDIwMjUgMjM6MzM6MTggKzAxMDAKU3ViamVjdDogW1BBVENIIHY0 IDUvNV0gSW5saW5lIGZ1bmN0aW9ucyB0aGF0IGhhdmUgbm93IGJlY29tZSB0cml2aWFsCgotLS0K IHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyAgICAgIHwgMTcgKysrLS0tLS0tLS0tLS0t LS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMgICAgIHwgMTYgKysrLS0tLS0tLS0t LS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvZnVuY2NhY2hlLmMgfCAyMiArKysrLS0tLS0t LS0tLS0tLS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDQ1IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwppbmRleCA0YWQ5YzEwYTdmOC4uYWQyZjJhYjEz ZWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYworKysgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKQEAgLTQ2LDcgKzQ2LDYgQEAKICAqLwogc3RhdGlj IEhUQUIgKnByZXBhcmVkX3F1ZXJpZXMgPSBOVUxMOwogCi1zdGF0aWMgdm9pZCBJbml0UXVlcnlI YXNoVGFibGUodm9pZCk7CiBzdGF0aWMgUGFyYW1MaXN0SW5mbyBFdmFsdWF0ZVBhcmFtcyhQYXJz ZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCQlQcmVwYXJlZFN0YXRlbWVudCAqcHN0bXQsIExpc3Qg KnBhcmFtcywKIAkJCQkJCQkJCUVTdGF0ZSAqZXN0YXRlKTsKQEAgLTM2NCwxOCArMzYzLDYgQEAg RXZhbHVhdGVQYXJhbXMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBQcmVwYXJlZFN0YXRlbWVudCAqcHN0 bXQsIExpc3QgKnBhcmFtcywKIAlyZXR1cm4gcGFyYW1MSTsKIH0KIAotCi0vKgotICogSW5pdGlh bGl6ZSBxdWVyeSBoYXNoIHRhYmxlIHVwb24gZmlyc3QgdXNlLgotICovCi1zdGF0aWMgdm9pZAot SW5pdFF1ZXJ5SGFzaFRhYmxlKHZvaWQpCi17Ci0JcHJlcGFyZWRfcXVlcmllcyA9IGhhc2hfbWFr ZV9jeHQoUHJlcGFyZWRTdGF0ZW1lbnQsIHN0bXRfbmFtZSwKLQkJCQkJCQkJCSAiUHJlcGFyZWQg UXVlcmllcyIsIDMyLAotCQkJCQkJCQkJIFRvcE1lbW9yeUNvbnRleHQpOwotfQotCiAvKgogICog U3RvcmUgYWxsIHRoZSBkYXRhIHBlcnRhaW5pbmcgdG8gYSBxdWVyeSBpbiB0aGUgaGFzaCB0YWJs ZSB1c2luZwogICogdGhlIHNwZWNpZmllZCBrZXkuICBUaGUgcGFzc2VkIENhY2hlZFBsYW5Tb3Vy Y2Ugc2hvdWxkIGJlICJ1bnNhdmVkIgpAQCAtMzkzLDcgKzM4MCw5IEBAIFN0b3JlUHJlcGFyZWRT dGF0ZW1lbnQoY29uc3QgY2hhciAqc3RtdF9uYW1lLAogCiAJLyogSW5pdGlhbGl6ZSB0aGUgaGFz aCB0YWJsZSwgaWYgbmVjZXNzYXJ5ICovCiAJaWYgKCFwcmVwYXJlZF9xdWVyaWVzKQotCQlJbml0 UXVlcnlIYXNoVGFibGUoKTsKKwkJcHJlcGFyZWRfcXVlcmllcyA9IGhhc2hfbWFrZV9jeHQoUHJl cGFyZWRTdGF0ZW1lbnQsIHN0bXRfbmFtZSwKKwkJCQkJCQkJCQkgIlByZXBhcmVkIFF1ZXJpZXMi LCAzMiwKKwkJCQkJCQkJCQkgVG9wTWVtb3J5Q29udGV4dCk7CiAKIAkvKiBBZGQgZW50cnkgdG8g aGFzaCB0YWJsZSAqLwogCWVudHJ5ID0gKFByZXBhcmVkU3RhdGVtZW50ICopIGhhc2hfc2VhcmNo KHByZXBhcmVkX3F1ZXJpZXMsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zZXF1 ZW5jZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYwppbmRleCA1YTI2ODNjMDcz NS4uNzRmNWFhNDlkNTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNl LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYwpAQCAtODksNyArODksNiBA QCBzdGF0aWMgU2VxVGFibGVEYXRhICpsYXN0X3VzZWRfc2VxID0gTlVMTDsKIHN0YXRpYyB2b2lk IGZpbGxfc2VxX3dpdGhfZGF0YShSZWxhdGlvbiByZWwsIEhlYXBUdXBsZSB0dXBsZSk7CiBzdGF0 aWMgdm9pZCBmaWxsX3NlcV9mb3JrX3dpdGhfZGF0YShSZWxhdGlvbiByZWwsIEhlYXBUdXBsZSB0 dXBsZSwgRm9ya051bWJlciBmb3JrTnVtKTsKIHN0YXRpYyBSZWxhdGlvbiBsb2NrX2FuZF9vcGVu X3NlcXVlbmNlKFNlcVRhYmxlIHNlcSk7Ci1zdGF0aWMgdm9pZCBjcmVhdGVfc2VxX2hhc2h0YWJs ZSh2b2lkKTsKIHN0YXRpYyB2b2lkIGluaXRfc2VxdWVuY2UoT2lkIHJlbGlkLCBTZXFUYWJsZSAq cF9lbG0sIFJlbGF0aW9uICpwX3JlbCk7CiBzdGF0aWMgRm9ybV9wZ19zZXF1ZW5jZV9kYXRhIHJl YWRfc2VxX3R1cGxlKFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJCQkJQnVmZmVyICpidWYsIEhlYXBU dXBsZSBzZXFkYXRhdHVwbGUpOwpAQCAtMTEwNywxNyArMTEwNiw2IEBAIGxvY2tfYW5kX29wZW5f c2VxdWVuY2UoU2VxVGFibGUgc2VxKQogCXJldHVybiBzZXF1ZW5jZV9vcGVuKHNlcS0+cmVsaWQs IE5vTG9jayk7CiB9CiAKLS8qCi0gKiBDcmVhdGVzIHRoZSBoYXNoIHRhYmxlIGZvciBzdG9yaW5n IHNlcXVlbmNlIGRhdGEKLSAqLwotc3RhdGljIHZvaWQKLWNyZWF0ZV9zZXFfaGFzaHRhYmxlKHZv aWQpCi17Ci0Jc2VxaGFzaHRhYiA9IGhhc2hfbWFrZV9jeHQoU2VxVGFibGVEYXRhLCByZWxpZCwK LQkJCQkJCQkgICAiU2VxdWVuY2UgdmFsdWVzIiwgMTYsCi0JCQkJCQkJICAgVG9wTWVtb3J5Q29u dGV4dCk7Ci19Ci0KIC8qCiAgKiBHaXZlbiBhIHJlbGF0aW9uIE9JRCwgb3BlbiBhbmQgbG9jayB0 aGUgc2VxdWVuY2UuICBwX2VsbSBhbmQgcF9yZWwgYXJlCiAgKiBvdXRwdXQgcGFyYW1ldGVycy4K QEAgLTExMzEsNyArMTExOSw5IEBAIGluaXRfc2VxdWVuY2UoT2lkIHJlbGlkLCBTZXFUYWJsZSAq cF9lbG0sIFJlbGF0aW9uICpwX3JlbCkKIAogCS8qIEZpbmQgb3IgY3JlYXRlIGEgaGFzaCB0YWJs ZSBlbnRyeSBmb3IgdGhpcyBzZXF1ZW5jZSAqLwogCWlmIChzZXFoYXNodGFiID09IE5VTEwpCi0J CWNyZWF0ZV9zZXFfaGFzaHRhYmxlKCk7CisJCXNlcWhhc2h0YWIgPSBoYXNoX21ha2VfY3h0KFNl cVRhYmxlRGF0YSwgcmVsaWQsCisJCQkJCQkJCSAgICJTZXF1ZW5jZSB2YWx1ZXMiLCAxNiwKKwkJ CQkJCQkJICAgVG9wTWVtb3J5Q29udGV4dCk7CiAKIAllbG0gPSAoU2VxVGFibGUpIGhhc2hfc2Vh cmNoKHNlcWhhc2h0YWIsICZyZWxpZCwgSEFTSF9FTlRFUiwgJmZvdW5kKTsKIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvZnVuY2NhY2hlLmMgYi9zcmMvYmFja2VuZC91dGls cy9jYWNoZS9mdW5jY2FjaGUuYwppbmRleCBiZWY5MzhjMzdjMC4uMGU1YmZhMmE1NmEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2Z1bmNjYWNoZS5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL2Z1bmNjYWNoZS5jCkBAIC01MCwyMyArNTAsNiBAQCBzdGF0aWMgdWlu dDMyIGNmdW5jX2hhc2goY29uc3Qgdm9pZCAqa2V5LCBTaXplIGtleXNpemUpOwogc3RhdGljIGlu dAljZnVuY19tYXRjaChjb25zdCB2b2lkICprZXkxLCBjb25zdCB2b2lkICprZXkyLCBTaXplIGtl eXNpemUpOwogCiAKLS8qCi0gKiBJbml0aWFsaXplIHRoZSBoYXNoIHRhYmxlIG9uIGZpcnN0IHVz ZS4KLSAqCi0gKiBUaGUgaGFzaCB0YWJsZSB3aWxsIGJlIGluIFRvcE1lbW9yeUNvbnRleHQgcmVn YXJkbGVzcyBvZiBjYWxsZXIncyBjb250ZXh0LgotICovCi1zdGF0aWMgdm9pZAotY2Z1bmNfaGFz aHRhYmxlX2luaXQodm9pZCkKLXsKLQkvKiBkb24ndCBhbGxvdyBkb3VibGUtaW5pdGlhbGl6YXRp b24gKi8KLQlBc3NlcnQoY2Z1bmNfaGFzaHRhYmxlID09IE5VTEwpOwotCi0JY2Z1bmNfaGFzaHRh YmxlID0gaGFzaF9tYWtlX2ZuX2N4dChDYWNoZWRGdW5jdGlvbkhhc2hFbnRyeSwga2V5LAotCQkJ CQkJCQkJICAgIkNhY2hlZCBmdW5jdGlvbiBoYXNoIiwgRlVOQ1NfUEVSX1VTRVIsCi0JCQkJCQkJ CQkgICBjZnVuY19oYXNoLCBjZnVuY19tYXRjaCwKLQkJCQkJCQkJCSAgIFRvcE1lbW9yeUNvbnRl eHQpOwotfQotCiAvKgogICogY2Z1bmNfaGFzaDogaGFzaCBmdW5jdGlvbiBmb3IgY2Z1bmMgaGFz aCB0YWJsZQogICoKQEAgLTE2NSw3ICsxNDgsMTAgQEAgY2Z1bmNfaGFzaHRhYmxlX2luc2VydChD YWNoZWRGdW5jdGlvbiAqZnVuY3Rpb24sCiAJYm9vbAkJZm91bmQ7CiAKIAlpZiAoY2Z1bmNfaGFz aHRhYmxlID09IE5VTEwpCi0JCWNmdW5jX2hhc2h0YWJsZV9pbml0KCk7CisJCWNmdW5jX2hhc2h0 YWJsZSA9IGhhc2hfbWFrZV9mbl9jeHQoQ2FjaGVkRnVuY3Rpb25IYXNoRW50cnksIGtleSwKKwkJ CQkJCQkJCQkgICAiQ2FjaGVkIGZ1bmN0aW9uIGhhc2giLCBGVU5DU19QRVJfVVNFUiwKKwkJCQkJ CQkJCQkgICBjZnVuY19oYXNoLCBjZnVuY19tYXRjaCwKKwkJCQkJCQkJCQkgICBUb3BNZW1vcnlD b250ZXh0KTsKIAogCWhlbnRyeSA9IChDYWNoZWRGdW5jdGlvbkhhc2hFbnRyeSAqKSBoYXNoX3Nl YXJjaChjZnVuY19oYXNodGFibGUsCiAJCQkJCQkJCQkJCQkJIGZ1bmNfa2V5LAotLSAKMi41Mi4w Cgo= --cff217dca48da7654d3c859f55554fe6e9047c1de32e45e5c1333ff31462--