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 1vkKB9-00DeZM-2p for pgsql-hackers@arkaria.postgresql.org; Mon, 26 Jan 2026 10:50:45 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vkKB9-007aE3-00 for pgsql-hackers@arkaria.postgresql.org; Mon, 26 Jan 2026 10:50:43 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vkKB8-007aDr-1V for pgsql-hackers@lists.postgresql.org; Mon, 26 Jan 2026 10:50:42 +0000 Received: from mail-ej1-x62c.google.com ([2a00:1450:4864:20::62c]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vkKB4-00000000WpK-48qS for pgsql-hackers@lists.postgresql.org; Mon, 26 Jan 2026 10:50:42 +0000 Received: by mail-ej1-x62c.google.com with SMTP id a640c23a62f3a-b884a84e655so583282166b.0 for ; Mon, 26 Jan 2026 02:50:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jeltef.nl; s=google; t=1769424638; x=1770029438; darn=lists.postgresql.org; h=in-reply-to:references:from:to:subject:cc:message-id:date :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=ZrI2vXVOe6Yu+GprNwMAlfaNCR5NEzNOnzHIlwMmsew=; b=ILVgxiAY1i/GIUlVB+A9igIyu6LEgKPF0+FSmrwXcaykbIDni+anb19xQgvoLYx4DH kl/2NsBm3+u2R55hYj3qej+aJU51n2wDjAF9Re5cR5gPM6uGYFvva69s9FkAN59qxLz1 f3yUYdqygdqSmMtHt2+6NiZJq8uz7u8MgA/kmcYol0Glh3EKH6AkcFJZonbIFLFHfADx A66UQErrfrkXrTgTT/cEE/QIaW2JE1Yrs4PBMmimQOeqes5Ejz0rE53DAc0lXmM1WhPj +oOH2PFKjlpZY8Jhl6Ezbc4T4hw6dU+qakXRjULFTan8CYCQQnz1RV0fYt51gbFpm3UY TKKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769424638; x=1770029438; h=in-reply-to:references:from:to:subject:cc:message-id:date :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=ZrI2vXVOe6Yu+GprNwMAlfaNCR5NEzNOnzHIlwMmsew=; b=qAhffhW1cpuWTPDK8SWTLRMI97/qJQi2NCmC5NHTtOYQjUYPrXtJsL4RBwe0JLFU1H XEQC4280RlXHsqB6azj5u5l2MOdUqFGwkcrBWwRzGKwtg6wZMoN4KpvS+jU5sDET6c7S g5rR+4GM26n00/oG/IUGj1Nu7iGEevUdGsIBcv2kxTizTYDdfFor/ZocIcY38GD3IteI YIzKK1JqwWTTChW9aXVDxF+ppp1eREaLw/KTwceVEcZniq5H9q1/MjhOVuKmZahMR6FI RQCxXQ4et2Y+kb7WTN/fgYW4UCI9H6nQG3vXFY6rOj3evaoMXw1UA0fISpluPkpo6xwl Ccsg== X-Forwarded-Encrypted: i=1; AJvYcCVDi8Hy4mBxsvTmnWi//B2l21l/KRfookng4Bf6ZqFvCFDGIlAB3XT7ww4egrhdliV9xIIqdPbX+qCUv1rU@lists.postgresql.org X-Gm-Message-State: AOJu0YyIWv7mRDGvB4qPXsh1pDvirp3cMbfo3/KTQI2qN8tm7m4mO/2n eEcDIzcvH+4rtV8ba/BpkDb4mfUlqmcl12Z+G+Y+ObbTzB7lnWlriL7DfRUqsO3A9GyluoKFwNZ N8ITB X-Gm-Gg: AZuq6aIW5xK7yVUTvgNP5zXTP3dCnR5JGwL1vI7RCWk4vJESSNyZyc3VXDhRxR2CZtj pJMAtfYXiXDOFQmzWtuYy/tPhi+I/10LO3uHS7t8YDf/PbryDWTH7buj1xyX2SwgXBt+smxBbuo m3th5YxBRWnqpcFxnxzttNWWfiXAWCXfZRQUDZ+1rXQjIqvacwytkHEIz93SwoebNuAwrSHu4K6 MLn7dhDnPFW2d1+2TB8eLNZ09oxUZuhCLcsLI1m+VRlfmRvyMsLOpkEZADcMo71uZLL6qOXot+T IRRm+/oKHZUzjdyFU4WuOHIO0lGojWpC+dF0+Igbz9Ap+0UJK+MNRrzJS5qEsCgI5TQIQ/Ekyc1 hbLGki8IPr2YZwTXSjCr1XTt2Cfu4RE3xbNMLNjYcKiQ6SbeMhV2qRVYBoCikwezr+upSyEzGby 0YEwV2Oj19W/ZJwbs/Rx7G/WE48WlIlc3c5mr6znowdqR+favb X-Received: by 2002:a17:907:3da3:b0:b8a:f225:ede1 with SMTP id a640c23a62f3a-b8d2e85bff4mr272680766b.41.1769424637773; Mon, 26 Jan 2026 02:50:37 -0800 (PST) Received: from localhost (037153217001.static.ipv4.heldenvannu.net. [37.153.217.1]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b885b754122sm607230966b.46.2026.01.26.02.50.35 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 26 Jan 2026 02:50:36 -0800 (PST) Content-Type: multipart/mixed; boundary=558bd6e5e3266abf27d109104dd5d665478502ad57771e87f437cda96460 Mime-Version: 1.0 Date: Mon, 26 Jan 2026 11:50:34 +0100 Message-Id: Cc: "Thomas Munro" , Subject: Re: Safer hash table initialization macro To: "Bertrand Drouvot" From: "Jelte Fennema-Nio" 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 --558bd6e5e3266abf27d109104dd5d665478502ad57771e87f437cda96460 Content-Type: multipart/alternative; boundary=5b0a66ab70831a1d5d89323c37de5c70cb85025a3af717ff9737192d8a2c --5b0a66ab70831a1d5d89323c37de5c70cb85025a3af717ff9737192d8a2c Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8; format=Flowed On Mon Jan 26, 2026 at 11:26 AM CET, Bertrand Drouvot wrote: > I can still see it. If I apply from 0001 to 0004 and compile, I see it. I= t looks > like it's fixed in 0005: Ugh, you're right. I had ammended that fix to the wrong commit. Fixed now. --5b0a66ab70831a1d5d89323c37de5c70cb85025a3af717ff9737192d8a2c-- --558bd6e5e3266abf27d109104dd5d665478502ad57771e87f437cda96460 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v9-0001-Add-hash_make-macros.patch Content-Type: text/x-patch; charset=utf-8; name=v9-0001-Add-hash_make-macros.patch RnJvbSA1NGFmOGVmOTFhY2NhZGRjYzFhMTE5ZWVmYzUxZmFiNThmZWI2NTM0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBUaHUsIDQgRGVjIDIwMjUgMTU6MzU6MDggKzAxMDAKU3ViamVjdDogW1BBVENIIHY5 IDEvNV0gQWRkIGhhc2hfbWFrZSBtYWNyb3MKClRoaXMgYWRkcyBhIGJ1bmNoIG9mIGhhc2hfbWFr ZSogYW5kIHNobWVtX2hhc2hfbWFrZSogbWFjcm9zIHRvIG1ha2UgaXQKZWFzaWVyIGFuZCBsZXNz IGVycm9yIHByb25lIHRvIGNyZWF0ZSBIVEFCcy4gVGhlc2UgbWFjcm9zIGFyZQppbXBsZW1lbnRl ZCBhcyB3cmFwcGVycyBhcm91bmQgdGhlIGFscmVhZHkgZXhpc3RpbmcgaGFzaF9jcmVhdGUKZnVu Y3Rpb24uIFVzaW5nIHRoZSBuZXcgbWFjcm9zIGlzIHByZWZlcnJlZCwgZHVlIHRvIHRoZSBhZGRp dGlvbmFsCmNvbXBpbGUgdGltZSBjaGVja3MgdGhhdCB0aGV5IGJyaW5nLgoKQ28tQXV0aG9yZWQt Qnk6IEJlcnRyYW5kIERyb3V2b3QgPGJlcnRyYW5kZHJvdXZvdC5wZ0BnbWFpbC5jb20+Ci0tLQog c3JjL2JhY2tlbmQvdXRpbHMvaGFzaC9keW5haGFzaC5jIHwgMTA5ICsrKysrKysrKysrKysrKysr KysrCiBzcmMvaW5jbHVkZS9jLmggICAgICAgICAgICAgICAgICAgfCAgMzIgKysrKysrCiBzcmMv aW5jbHVkZS9zdG9yYWdlL3NobWVtLmggICAgICAgfCAgMzIgKysrKysrCiBzcmMvaW5jbHVkZS91 dGlscy9oc2VhcmNoLmggICAgICAgfCAxNjYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKyst CiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgfCAgIDEgKwogNSBmaWxlcyBjaGFu Z2VkLCAzMzUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMv 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 ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2MuaCBiL3NyYy9pbmNsdWRlL2MuaAppbmRleCAxN2Fm YWVmOWE2YS4uMTYwNWY1ZDhmOWQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2MuaAorKysgYi9z cmMvaW5jbHVkZS9jLmgKQEAgLTgyLDYgKzgyLDEyIEBACiAjZW5kaWYKICNpZmRlZiBFTkFCTEVf TkxTCiAjaW5jbHVkZSA8bGliaW50bC5oPgorI2VuZGlmCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4 dGVybiAiQysrIgoreworI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorfQogI2VuZGlmCiAKICAvKiBQ dWxsIGluIGZ1bmRhbWVudGFsIHN5bWJvbHMgdGhhdCB3ZSBhbHNvIGV4cG9zZSB0byBhcHBsaWNh dGlvbnMgKi8KQEAgLTM3Nyw2ICszODMsMzIgQEAKICNkZWZpbmUgSEFWRV9QR19JTlRFR0VSX0NP TlNUQU5UX1AKICNlbmRpZgogCisvKgorICogcGdfZXhwcl9oYXNfdHlwZV9wKGV4cHIsIHR5cGUp IC0gQ2hlY2sgaWYgYW4gZXhwcmVzc2lvbiBoYXMgYSBzcGVjaWZpYyB0eXBlLgorICoKKyAqIFNp bWlsYXIgdG8gcGdfaXNfc2FtZSwgYnV0IHRha2VzIGFuIGV4cHJlc3Npb24gaW5zdGVhZCBvZiBh IHR5cGUgYXMgdGhlCisgKiBmaXJzdCBhcmd1bWVudC4gVGhpcyBpcyB1c2VmdWwgd2hlbiB5b3Ug aGF2ZSBhbiBleHByZXNzaW9uIGFuZCB3YW50IHRvCisgKiBjaGVjayBpdHMgdHlwZSB3aXRob3V0 IG5lZWRpbmcgdHlwZW9mL2RlY2x0eXBlLgorICovCisjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykK KyNkZWZpbmUgcGdfZXhwcl9oYXNfdHlwZV9wKGV4cHIsIHR5cGUpIChzdGQ6OmlzX3NhbWU8ZGVj bHR5cGUoZXhwciksIHR5cGU+Ojp2YWx1ZSkKKyNlbHNlCisjZGVmaW5lIHBnX2V4cHJfaGFzX3R5 cGVfcChleHByLCB0eXBlKSBcCisJX0dlbmVyaWMoKGV4cHIpLCB0eXBlOiAxLCBkZWZhdWx0OiAw KQorI2VuZGlmCisKKy8qCisgKiBwZ19udWxscHRyX29mKHR5cGUpIC0gQ3JlYXRlIGEgbnVsbCBw b2ludGVyIG9mIHRoZSBnaXZlbiB0eXBlLgorICoKKyAqIEluIEMsICh0eXBlICopIE5VTEwgd29y a3MgZm9yIGFsbCB0eXBlcy4gSW4gQysrLCB0aGlzIHN5bnRheCBmYWlscyBmb3IgdHlwZXMKKyAq IGNvbnRhaW5pbmcgYnJhY2tldHMgKGxpa2UgY2hhcls2NF0pLCBzbyB3ZSB1c2Ugc3RkOjphZGRf cG9pbnRlcl90IGluc3RlYWQuCisgKi8KKyNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQorI2RlZmlu ZSBwZ19udWxscHRyX29mKHR5cGUpIChzdGF0aWNfY2FzdDxzdGQ6OmFkZF9wb2ludGVyX3Q8dHlw ZT4+KG51bGxwdHIpKQorI2Vsc2UKKyNkZWZpbmUgcGdfbnVsbHB0cl9vZih0eXBlKSAoKHR5cGUg KikgTlVMTCkKKyNlbmRpZgorCiAvKgogICogcGdfYXNzdW1lKGV4cHIpIHN0YXRlcyB0aGF0IHdl IGFzc3VtZSBgZXhwcmAgdG8gZXZhbHVhdGUgdG8gdHJ1ZS4gSW4gYXNzZXJ0CiAgKiBlbmFibGVk IGJ1aWxkcyBwZ19hc3N1bWUoKSBpcyB0dXJuZWQgaW50byBhbiBhc3NlcnRpb24sIGluIG9wdGlt aXplZCBidWlsZHMKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW0uaCBiL3Ny Yy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW0uaAppbmRleCBlNzFhNTFkZmU4NC4uMmEyZDI0Y2NmNjAg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW0uaAorKysgYi9zcmMvaW5jbHVk ZS9zdG9yYWdlL3NobWVtLmgKQEAgLTQzLDYgKzQzLDM4IEBAIGV4dGVybiBTaXplIG11bF9zaXpl KFNpemUgczEsIFNpemUgczIpOwogCiBleHRlcm4gUEdETExJTVBPUlQgU2l6ZSBwZ19nZXRfc2ht ZW1fcGFnZXNpemUodm9pZCk7CiAKKy8qCisgKiBTaW1wbGlmaWVkIHNoYXJlZCBtZW1vcnkgaGFz aCB0YWJsZSBjcmVhdGlvbiBBUEkKKyAqCisgKiBUaGVzZSBtYWNyb3MgcHJvdmlkZSBhIHNpbXBs ZXIgd2F5IHRvIGNyZWF0ZSBzaGFyZWQgbWVtb3J5IGhhc2ggdGFibGVzIGJ5OgorICogLSBBdXRv bWF0aWNhbGx5IGRldGVybWluaW5nIGtleXNpemUgYW5kIGVudHJ5c2l6ZSBmcm9tIHR5cGUgaW5m b3JtYXRpb24KKyAqIC0gQXV0b21hdGljYWxseSBjaG9vc2luZyBIQVNIX1NUUklOR1MgdnMgSEFT SF9CTE9CUyBiYXNlZCBvbiBrZXkgdHlwZQorICogLSBFbGltaW5hdGluZyB0aGUgbmVlZCBmb3Ig ZXhwbGljaXQgSEFTSENUTCBhbmQgZmxhZ3MgaW4gY29tbW9uIGNhc2VzCisgKgorICogVXNhZ2U6 CisgKiAgIEhUQUIgKmhhc2ggPSBzaG1lbV9oYXNoX21ha2UoTXlFbnRyeSwga2V5ZmllbGQsICJN eSBoYXNoIiwgNjQsIDEyOCk7CisgKgorICogRm9yIG1vcmUgb3B0aW9ucyAocGFydGl0aW9uaW5n LCBmaXhlZCBzaXplLCBjdXN0b20gaGFzaCk6CisgKiAgIEhBU0hPUFRTIG9wdHMgPSB7Lm51bV9w YXJ0aXRpb25zID0gMTYsIC5maXhlZF9zaXplID0gdHJ1ZX07CisgKiAgIEhUQUIgKmhhc2ggPSBz aG1lbV9oYXNoX21ha2VfZXh0KE15RW50cnksIGtleWZpZWxkLCAiTXkgaGFzaCIsIDY0LCAxMjgs ICZvcHRzKTsKKyAqLworI2RlZmluZSBzaG1lbV9oYXNoX21ha2UoZW50cnl0eXBlLCBrZXltZW1i ZXIsIHRhYm5hbWUsIGluaXRfc2l6ZSwgbWF4X3NpemUpIFwKKwlzaG1lbV9oYXNoX21ha2VfZXh0 KGVudHJ5dHlwZSwga2V5bWVtYmVyLCB0YWJuYW1lLCBpbml0X3NpemUsIG1heF9zaXplLCBOVUxM KQorCisjZGVmaW5lIHNobWVtX2hhc2hfbWFrZV9leHQoZW50cnl0eXBlLCBrZXltZW1iZXIsIHRh Ym5hbWUsIGluaXRfc2l6ZSwgbWF4X3NpemUsIG9wdHMpIFwKKwkoU3RhdGljQXNzZXJ0RXhwcihv ZmZzZXRvZihlbnRyeXR5cGUsIGtleW1lbWJlcikgPT0gMCwgXAorCQkJCQkJICNrZXltZW1iZXIg IiBtdXN0IGJlIGZpcnN0IG1lbWJlciBpbiAiICNlbnRyeXR5cGUpLCBcCisJc2htZW1faGFzaF9t YWtlX2ltcGwoIFwKKwkJKHRhYm5hbWUpLCAoaW5pdF9zaXplKSwgKG1heF9zaXplKSwgXAorCQlz aXplb2YoKChlbnRyeXR5cGUgKikwKS0+a2V5bWVtYmVyKSwgXAorCQlzaXplb2YoZW50cnl0eXBl KSwgXAorCQlIQVNIX0tFWV9BU19TVFJJTkcoZW50cnl0eXBlLCBrZXltZW1iZXIpLCBcCisJCShv cHRzKSkpCisKK2V4dGVybiBIVEFCICpzaG1lbV9oYXNoX21ha2VfaW1wbChjb25zdCBjaGFyICpu YW1lLCBpbnQ2NCBpbml0X3NpemUsIGludDY0IG1heF9zaXplLAorCQkJCQkJCQkgIFNpemUga2V5 c2l6ZSwgU2l6ZSBlbnRyeXNpemUsIGJvb2wgc3RyaW5nX2tleSwKKwkJCQkJCQkJICBjb25zdCBI QVNIT1BUUyAqb3B0cyk7CisKIC8qIGlwY2kuYyAqLwogZXh0ZXJuIHZvaWQgUmVxdWVzdEFkZGlu U2htZW1TcGFjZShTaXplIHNpemUpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9o c2VhcmNoLmggYi9zcmMvaW5jbHVkZS91dGlscy9oc2VhcmNoLmgKaW5kZXggY2RjNTMwZmI3MzIu LjcxYzk3ODAxMzJmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9oc2VhcmNoLmgKKysr IGIvc3JjL2luY2x1ZGUvdXRpbHMvaHNlYXJjaC5oCkBAIC0xNSw2ICsxNSw5IEBACiAjZGVmaW5l IEhTRUFSQ0hfSAogCiAKKy8qIEhhc2ggdGFibGUgY29udHJvbCBzdHJ1Y3QgaXMgYW4gb3BhcXVl IHR5cGUga25vd24gb25seSB3aXRoaW4gZHluYWhhc2guYyAqLwordHlwZWRlZiBzdHJ1Y3QgSFRB QiBIVEFCOworCiAvKgogICogSGFzaCBmdW5jdGlvbnMgbXVzdCBoYXZlIHRoaXMgc2lnbmF0dXJl LgogICovCkBAIC00Myw2ICs0NiwxNTYgQEAgdHlwZWRlZiB2b2lkICooKkhhc2hDb3B5RnVuYykg KHZvaWQgKmRlc3QsIGNvbnN0IHZvaWQgKnNyYywgU2l6ZSBrZXlzaXplKTsKICAqLwogdHlwZWRl ZiB2b2lkICooKkhhc2hBbGxvY0Z1bmMpIChTaXplIHJlcXVlc3QpOwogCisvKgorICogSGFzaCBv cHRpb25zIGZvciBoYXNoX21ha2VfZXh0IGFuZCBzaG1lbV9oYXNoX21ha2VfZXh0IG1hY3Jvcy4K KyAqIENvbnRhaW5zIGxlc3MgY29tbW9ubHkgbmVlZGVkIG9wdGlvbnMgdGhhdCBhcmVuJ3QgY292 ZXJlZCBieSB0aGUgYmFzaWMgbWFjcm9zLgorICogQWxsIGZpZWxkcyBkZWZhdWx0IHRvIE5VTEwv MC9mYWxzZSB3aGVuIHplcm8taW5pdGlhbGl6ZWQuCisgKi8KK3R5cGVkZWYgc3RydWN0IEhBU0hP UFRTCit7CisJSGFzaFZhbHVlRnVuYyBoYXNoOwkJCS8qIGN1c3RvbSBoYXNoIGZ1bmN0aW9uIChO VUxMIGZvciBkZWZhdWx0KSAqLworCUhhc2hDb21wYXJlRnVuYyBtYXRjaDsJCS8qIGN1c3RvbSBj b21wYXJpc29uIGZ1bmN0aW9uIChOVUxMIGZvcgorCQkJCQkJCQkgKiBkZWZhdWx0KSAqLworCUhh c2hDb3B5RnVuYyBrZXljb3B5OwkJLyogY3VzdG9tIGtleSBjb3B5IGZ1bmN0aW9uIChOVUxMIGZv ciBkZWZhdWx0KSAqLworCUhhc2hBbGxvY0Z1bmMgYWxsb2M7CQkvKiBjdXN0b20gYWxsb2NhdG9y IChOVUxMIGZvciBkZWZhdWx0KSAqLworCWludDY0CQludW1fcGFydGl0aW9uczsgLyogcGFydGl0 aW9uIGNvdW50ICgwIGZvciBub25lKSAqLworCWJvb2wJCWZpeGVkX3NpemU7CQkvKiBpZiB0cnVl LCBoYXNoIHRhYmxlIGNhbm5vdCBncm93ICovCisJYm9vbAkJZm9yY2VfYmxvYnM7CS8qIGlmIHRy dWUsIHVzZSBIQVNIX0JMT0JTIGV2ZW4gZm9yIHN0cmluZworCQkJCQkJCQkgKiB0eXBlcyAqLwor fSBIQVNIT1BUUzsKKworLyoKKyAqIEhlbHBlcnMgdG8gZGV0ZWN0IGlmIGEgdHlwZSBzaG91bGQg YmUgaGFzaGVkIGFzIGEgc3RyaW5nLgorICoKKyAqIFN0cmluZyB0eXBlcyBpbmNsdWRlOiBjaGFy IGFycmF5cyBhbmQgTmFtZURhdGEuCisgKiBFdmVyeXRoaW5nIGVsc2UgaXMgdHJlYXRlZCBhcyBh IGJpbmFyeSBibG9iIChIQVNIX0JMT0JTKS4KKyAqLworI2RlZmluZSBIQVNIX1BUUl9BU19TVFJJ TkcocHRyLCBzaXplKSBcCisJKHBnX2V4cHJfaGFzX3R5cGVfcCgocHRyKSwgY2hhcigqKVtzaXpl XSkgfHwgcGdfZXhwcl9oYXNfdHlwZV9wKChwdHIpLCBOYW1lRGF0YSAqKSkKKyNkZWZpbmUgSEFT SF9LRVlfQVNfU1RSSU5HKGVudHJ5dHlwZSwga2V5bWVtYmVyKSBcCisJSEFTSF9QVFJfQVNfU1RS SU5HKCYoKGVudHJ5dHlwZSAqKTApLT5rZXltZW1iZXIsIFwKKwkJCQkJICAgc2l6ZW9mKCgoZW50 cnl0eXBlICopMCktPmtleW1lbWJlcikpCisjZGVmaW5lIEhBU0hfVFlQRV9BU19TVFJJTkcodHlw ZSkgXAorCUhBU0hfUFRSX0FTX1NUUklORyhwZ19udWxscHRyX29mKHR5cGUpLCBzaXplb2YodHlw ZSkpCisKKy8qCisgKiBDcmVhdGUgYSBoYXNoIHRhYmxlIHdpdGggbWluaW1hbCBib2lsZXJwbGF0 ZS4KKyAqCisgKiBUaGlzIGlzIHRoZSBzaW1wbGVzdCB3YXkgdG8gY3JlYXRlIGEgaGFzaCB0YWJs ZS4gSXQ6CisgKiAtIERlcml2ZXMga2V5c2l6ZSBmcm9tIHRoZSBrZXltZW1iZXIncyBhY3R1YWwg dHlwZQorICogLSBEZXJpdmVzIGVudHJ5c2l6ZSBmcm9tIHRoZSBlbnRyeXR5cGUKKyAqIC0gQXV0 b21hdGljYWxseSBjaG9vc2VzIEhBU0hfU1RSSU5HUyBvciBIQVNIX0JMT0JTIGJhc2VkIG9uIGtl eSB0eXBlIChjaGFyIGFycmF5cyBhbmQgTmFtZURhdGEgYXJlIHRyZWF0ZWQgYXMgc3RyaW5ncykK KyAqIC0gVXNlcyBDdXJyZW50TWVtb3J5Q29udGV4dCAobm90IFRvcE1lbW9yeUNvbnRleHQpCisg KiAtIFZhbGlkYXRlcyB0aGF0IGtleW1lbWJlciBpcyBhdCBvZmZzZXQgMAorICoKKyAqIE5PVEU6 IElmIHlvdSB1c2UgY2hhcltOXSB0byBzdG9yZSBiaW5hcnkgZGF0YSB0aGF0IG1pZ2h0IGNvbnRh aW4gbnVsbCBieXRlcworICogYW5kL29yIGlzIG5vdCBudWxsIHRlcm1pbmF0ZWQsIHRoZSBhdXRv bWF0aWMgZGV0ZWN0aW9uIHdpbGwgaW5jb3JyZWN0bHkKKyAqIHRyZWF0IGl0IGFzIGEgc3RyaW5n IGFuZCB1c2Ugc3RyaW5nIGNvbXBhcmlzb24uIEluIHN1Y2ggY2FzZXMsIHVzZQorICogaGFzaF9t YWtlX2V4dCgpIHdpdGggLmZvcmNlX2Jsb2JzID0gdHJ1ZSB0byBvdmVycmlkZSB0aGUgYXV0b21h dGljCisgKiBkZXRlY3Rpb24uCisgKgorICogVXNhZ2U6CisgKiAgIHR5cGVkZWYgc3RydWN0IHsg T2lkIG9pZDsgY2hhciAqZGF0YTsgfSBNeUVudHJ5OworICogICBIVEFCICpoID0gaGFzaF9tYWtl KE15RW50cnksIG9pZCwgIm15IHRhYmxlIiwgNjQpOworICovCisjZGVmaW5lIGhhc2hfbWFrZShl bnRyeXR5cGUsIGtleW1lbWJlciwgdGFibmFtZSwgbmVsZW0pIFwKKwloYXNoX21ha2VfY3h0KGVu dHJ5dHlwZSwga2V5bWVtYmVyLCB0YWJuYW1lLCBuZWxlbSwgQ3VycmVudE1lbW9yeUNvbnRleHQp CisKKy8qCisgKiBMaWtlIGhhc2hfbWFrZSwgYnV0IGFsbG93cyBzcGVjaWZ5aW5nIGEgbWVtb3J5 IGNvbnRleHQuCisgKi8KKyNkZWZpbmUgaGFzaF9tYWtlX2N4dChlbnRyeXR5cGUsIGtleW1lbWJl ciwgdGFibmFtZSwgbmVsZW0sIG1jeHQpIFwKKwloYXNoX21ha2VfZXh0X2N4dChlbnRyeXR5cGUs IGtleW1lbWJlciwgdGFibmFtZSwgbmVsZW0sIE5VTEwsIG1jeHQpCisKKy8qCisgKiBIYXNoIHRh YmxlIHdpdGggY3VzdG9tIGhhc2ggYW5kL29yIG1hdGNoIGZ1bmN0aW9ucy4KKyAqCisgKiBMaWtl IGhhc2hfbWFrZSwgYnV0IGFjY2VwdHMgY3VzdG9tIGhhc2ggYW5kIG1hdGNoIGZ1bmN0aW9uIHBv aW50ZXJzLgorICogUGFzcyBOVUxMIGZvciBoYXNoZm4gdG8gdXNlIHRoZSBkZWZhdWx0IGhhc2gg KGJhc2VkIG9uIGtleSB0eXBlKSwKKyAqIG9yIE5VTEwgZm9yIG1hdGNoZm4gdG8gdXNlIHRoZSBk ZWZhdWx0IG1lbWNtcC1iYXNlZCBjb21wYXJpc29uLgorICovCisjZGVmaW5lIGhhc2hfbWFrZV9m bihlbnRyeXR5cGUsIGtleW1lbWJlciwgdGFibmFtZSwgbmVsZW0sIGhhc2hmbiwgbWF0Y2hmbikg XAorCWhhc2hfbWFrZV9mbl9jeHQoZW50cnl0eXBlLCBrZXltZW1iZXIsIHRhYm5hbWUsIG5lbGVt LCBoYXNoZm4sIG1hdGNoZm4sIFwKKwkJCQkJIEN1cnJlbnRNZW1vcnlDb250ZXh0KQorI2RlZmlu ZSBoYXNoX21ha2VfZm5fY3h0KGVudHJ5dHlwZSwga2V5bWVtYmVyLCB0YWJuYW1lLCBuZWxlbSwg aGFzaGZuLCBtYXRjaGZuLCBtY3h0KSBcCisJKFN0YXRpY0Fzc2VydEV4cHIob2Zmc2V0b2YoZW50 cnl0eXBlLCBrZXltZW1iZXIpID09IDAsIFwKKwkJCQkJICAja2V5bWVtYmVyICIgbXVzdCBiZSBm aXJzdCBtZW1iZXIgaW4gIiAjZW50cnl0eXBlKSwgXAorCSBoYXNoX21ha2VfZm5faW1wbCgodGFi bmFtZSksIChuZWxlbSksIFwKKwkJCQkJICAgc2l6ZW9mKCgoZW50cnl0eXBlICopMCktPmtleW1l bWJlciksIFwKKwkJCQkJICAgc2l6ZW9mKGVudHJ5dHlwZSksIFwKKwkJCQkJICAgSEFTSF9LRVlf QVNfU1RSSU5HKGVudHJ5dHlwZSwga2V5bWVtYmVyKSwgXAorCQkJCQkgICAoaGFzaGZuKSwgKG1h dGNoZm4pLCAobWN4dCkpKQorCisvKgorICogSGFzaCB0YWJsZSB3aXRoIGV4dGVuZGVkIG9wdGlv bnMgdmlhIEhBU0hPUFRTIHN0cnVjdC4KKyAqCisgKiBMaWtlIGhhc2hfbWFrZSwgYnV0IGFjY2Vw dHMgYWRkaXRpb25hbCBvcHRpb25zIHZpYSBIQVNIT1BUUyBzdHJ1Y3QgcG9pbnRlci4KKyAqIFBh c3MgTlVMTCBmb3Igb3B0cyB0byB1c2UgYWxsIGRlZmF1bHRzLgorICoKKyAqIEV4YW1wbGUgdXNh Z2U6CisgKiAgIEhBU0hPUFRTIG9wdHMgPSB7MH07CisgKiAgIG9wdHMuaGFzaCA9IG15X2hhc2hf ZnVuYzsKKyAqICAgb3B0cy5udW1fcGFydGl0aW9ucyA9IDE2OworICogICBIVEFCICpoID0gaGFz aF9tYWtlX2V4dChNeUVudHJ5LCBrZXksICJteSB0YWJsZSIsIDY0LCAmb3B0cyk7CisgKi8KKyNk ZWZpbmUgaGFzaF9tYWtlX2V4dChlbnRyeXR5cGUsIGtleW1lbWJlciwgdGFibmFtZSwgbmVsZW0s IG9wdHMpIFwKKwloYXNoX21ha2VfZXh0X2N4dChlbnRyeXR5cGUsIGtleW1lbWJlciwgdGFibmFt ZSwgbmVsZW0sIG9wdHMsIEN1cnJlbnRNZW1vcnlDb250ZXh0KQorCisjZGVmaW5lIGhhc2hfbWFr ZV9leHRfY3h0KGVudHJ5dHlwZSwga2V5bWVtYmVyLCB0YWJuYW1lLCBuZWxlbSwgb3B0cywgbWN4 dCkgXAorCShTdGF0aWNBc3NlcnRFeHByKG9mZnNldG9mKGVudHJ5dHlwZSwga2V5bWVtYmVyKSA9 PSAwLCBcCisJCQkJCQkgI2tleW1lbWJlciAiIG11c3QgYmUgZmlyc3QgbWVtYmVyIGluICIgI2Vu dHJ5dHlwZSksIFwKKwloYXNoX21ha2VfaW1wbCggXAorCQkodGFibmFtZSksIChuZWxlbSksIFwK KwkJc2l6ZW9mKCgoZW50cnl0eXBlICopMCktPmtleW1lbWJlciksIFwKKwkJc2l6ZW9mKGVudHJ5 dHlwZSksIFwKKwkJSEFTSF9LRVlfQVNfU1RSSU5HKGVudHJ5dHlwZSwga2V5bWVtYmVyKSwgXAor CQkob3B0cyksIFwKKwkJKG1jeHQpKSkKKworCisvKgorICogQ3JlYXRlIGEgaGFzaCBzZXQgd2hl cmUgdGhlIGVudGlyZSBlbnRyeSBpcyB0aGUga2V5LiBUaGlzIGlzCisgKiBsaWtlIGhhc2hfbWFr ZSwgYnV0IHdoZXJlIHRoZSBrZXkgaXMgYWxzbyB0aGUgZW50cnkuCisgKi8KKyNkZWZpbmUgaGFz aHNldF9tYWtlKGVudHJ5dHlwZSwgdGFibmFtZSwgbmVsZW0pIFwKKwloYXNoc2V0X21ha2VfY3h0 KGVudHJ5dHlwZSwgdGFibmFtZSwgbmVsZW0sIEN1cnJlbnRNZW1vcnlDb250ZXh0KQorI2RlZmlu ZSBoYXNoc2V0X21ha2VfY3h0KGVudHJ5dHlwZSwgdGFibmFtZSwgbmVsZW0sIG1jeHQpIFwKKwlo YXNoc2V0X21ha2VfZXh0X2N4dChlbnRyeXR5cGUsIHRhYm5hbWUsIG5lbGVtLCBOVUxMLCBtY3h0 KQorI2RlZmluZSBoYXNoc2V0X21ha2VfZm4oZW50cnl0eXBlLCB0YWJuYW1lLCBuZWxlbSwgaGFz aGZuLCBtYXRjaGZuKSBcCisJaGFzaHNldF9tYWtlX2ZuX2N4dChlbnRyeXR5cGUsIHRhYm5hbWUs IG5lbGVtLCBoYXNoZm4sIG1hdGNoZm4sIFwKKwkJCQkJCQlDdXJyZW50TWVtb3J5Q29udGV4dCkK KyNkZWZpbmUgaGFzaHNldF9tYWtlX2ZuX2N4dChlbnRyeXR5cGUsIHRhYm5hbWUsIG5lbGVtLCBo YXNoZm4sIG1hdGNoZm4sIG1jeHQpIFwKKwloYXNoX21ha2VfZm5faW1wbCgodGFibmFtZSksIChu ZWxlbSksIHNpemVvZihlbnRyeXR5cGUpLCBzaXplb2YoZW50cnl0eXBlKSwgXAorCQkJCQkJIEhB U0hfVFlQRV9BU19TVFJJTkcoZW50cnl0eXBlKSwgKGhhc2hmbiksIChtYXRjaGZuKSwgXAorCQkJ CQkJIG1jeHQpCisjZGVmaW5lIGhhc2hzZXRfbWFrZV9leHQoZW50cnl0eXBlLCB0YWJuYW1lLCBu ZWxlbSwgb3B0cykgXAorCWhhc2hzZXRfbWFrZV9leHRfY3h0KGVudHJ5dHlwZSwgdGFibmFtZSwg bmVsZW0sIG9wdHMsIFwKKwkJCQkJCQlDdXJyZW50TWVtb3J5Q29udGV4dCkKKyNkZWZpbmUgaGFz aHNldF9tYWtlX2V4dF9jeHQoZW50cnl0eXBlLCB0YWJuYW1lLCBuZWxlbSwgb3B0cywgbWN4dCkg XAorCWhhc2hfbWFrZV9pbXBsKCh0YWJuYW1lKSwgKG5lbGVtKSwgc2l6ZW9mKGVudHJ5dHlwZSks IHNpemVvZihlbnRyeXR5cGUpLCBcCisJCQkJICAgSEFTSF9UWVBFX0FTX1NUUklORyhlbnRyeXR5 cGUpLCBvcHRzLCAobWN4dCkpCisKKy8qCisgKiBJbXBsZW1lbnRhdGlvbiBmdW5jdGlvbiBmb3Ig aGFzaF9tYWtlIG1hY3Jvcy4gTm90IG1lYW50IHRvIGJlIGNhbGxlZAorICogZGlyZWN0bHkuCisg KgorICogSWYgc3RyaW5nX2tleSBpcyB0cnVlLCB0aGUga2V5IGlzIHRyZWF0ZWQgYXMgYSBudWxs LXRlcm1pbmF0ZWQgc3RyaW5nLgorICogUGFzcyBOVUxMIGZvciBvcHRzIHRvIHVzZSBhbGwgZGVm YXVsdHMuCisgKi8KK2V4dGVybiBIVEFCICpoYXNoX21ha2VfaW1wbChjb25zdCBjaGFyICp0YWJu YW1lLCBpbnQ2NCBuZWxlbSwKKwkJCQkJCQlTaXplIGtleXNpemUsIFNpemUgZW50cnlzaXplLAor CQkJCQkJCWJvb2wgc3RyaW5nX2tleSwKKwkJCQkJCQljb25zdCBIQVNIT1BUUyAqb3B0cywKKwkJ CQkJCQlNZW1vcnlDb250ZXh0IG1jeHQpOworCisvKgorICogSW1wbGVtZW50YXRpb24gZnVuY3Rp b24gZm9yIGhhc2hfbWFrZV9mbiBtYWNyb3MuCisgKi8KK2V4dGVybiBIVEFCICpoYXNoX21ha2Vf Zm5faW1wbChjb25zdCBjaGFyICp0YWJuYW1lLCBpbnQ2NCBuZWxlbSwKKwkJCQkJCQkgICBTaXpl IGtleXNpemUsIFNpemUgZW50cnlzaXplLCBib29sIHN0cmluZ19rZXksCisJCQkJCQkJICAgSGFz aFZhbHVlRnVuYyBoYXNoZm4sIEhhc2hDb21wYXJlRnVuYyBtYXRjaGZuLAorCQkJCQkJCSAgIE1l bW9yeUNvbnRleHQgbWN4dCk7CisKIC8qCiAgKiBIQVNIRUxFTUVOVCBpcyB0aGUgcHJpdmF0ZSBw YXJ0IG9mIGEgaGFzaHRhYmxlIGVudHJ5LiAgVGhlIGNhbGxlcidzIGRhdGEKICAqIGZvbGxvd3Mg dGhlIEhBU0hFTEVNRU5UIHN0cnVjdHVyZSAob24gYSBNQVhBTElHTidkIGJvdW5kYXJ5KS4gIFRo ZSBoYXNoIGtleQpAQCAtNTcsMTEgKzIxMCwxMSBAQCB0eXBlZGVmIHN0cnVjdCBIQVNIRUxFTUVO VAogLyogSGFzaCB0YWJsZSBoZWFkZXIgc3RydWN0IGlzIGFuIG9wYXF1ZSB0eXBlIGtub3duIG9u bHkgd2l0aGluIGR5bmFoYXNoLmMgKi8KIHR5cGVkZWYgc3RydWN0IEhBU0hIRFIgSEFTSEhEUjsK IAotLyogSGFzaCB0YWJsZSBjb250cm9sIHN0cnVjdCBpcyBhbiBvcGFxdWUgdHlwZSBrbm93biBv bmx5IHdpdGhpbiBkeW5haGFzaC5jICovCi10eXBlZGVmIHN0cnVjdCBIVEFCIEhUQUI7Ci0KLS8q IFBhcmFtZXRlciBkYXRhIHN0cnVjdHVyZSBmb3IgaGFzaF9jcmVhdGUgKi8KLS8qIE9ubHkgdGhv c2UgZmllbGRzIGluZGljYXRlZCBieSBoYXNoX2ZsYWdzIG5lZWQgYmUgc2V0ICovCisvKgorICog UGFyYW1ldGVyIGRhdGEgc3RydWN0dXJlIGZvciBoYXNoX2NyZWF0ZSAod2hpY2ggaXMgdGhlIGxv dy1sZXZlbCBtZXRob2Qgb2YKKyAqIGluaXRpYWxpemluZyBoYXNoIHRhYmxlcywgaGFzaF9tYWtl IG1hY3JvcyBhcmUgcHJlZmVycmVkKQorICogT25seSB0aG9zZSBmaWVsZHMgaW5kaWNhdGVkIGJ5 IGhhc2hfZmxhZ3MgbmVlZCBiZSBzZXQKKyAqLwogdHlwZWRlZiBzdHJ1Y3QgSEFTSENUTAogewog CS8qIFVzZWQgaWYgSEFTSF9QQVJUSVRJT04gZmxhZyBpcyBzZXQ6ICovCkBAIC0xMzEsNiArMjg0 LDkgQEAgdHlwZWRlZiBzdHJ1Y3QKICAqLwogZXh0ZXJuIEhUQUIgKmhhc2hfY3JlYXRlKGNvbnN0 IGNoYXIgKnRhYm5hbWUsIGludDY0IG5lbGVtLAogCQkJCQkJIGNvbnN0IEhBU0hDVEwgKmluZm8s IGludCBmbGFncyk7CitleHRlcm4gdm9pZCBoYXNoX29wdHNfaW5pdChIQVNIQ1RMICpjdGwsIGlu dCAqZmxhZ3MsCisJCQkJCQkgICBTaXplIGtleXNpemUsIFNpemUgZW50cnlzaXplLCBib29sIHN0 cmluZ19rZXksCisJCQkJCQkgICBjb25zdCBIQVNIT1BUUyAqb3B0cyk7CiBleHRlcm4gdm9pZCBo YXNoX2Rlc3Ryb3koSFRBQiAqaGFzaHApOwogZXh0ZXJuIHZvaWQgaGFzaF9zdGF0cyhjb25zdCBj aGFyICpjYWxsZXIsIEhUQUIgKmhhc2hwKTsKIGV4dGVybiB2b2lkICpoYXNoX3NlYXJjaChIVEFC ICpoYXNocCwgY29uc3Qgdm9pZCAqa2V5UHRyLCBIQVNIQUNUSU9OIGFjdGlvbiwKZGlmZiAtLWdp dCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50 L3R5cGVkZWZzLmxpc3QKaW5kZXggMWM4NjEwZmQ0NmMuLmYyNGI4NDk0MGNlIDEwMDY0NAotLS0g YS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRl bnQvdHlwZWRlZnMubGlzdApAQCAtMTE1OSw2ICsxMTU5LDcgQEAgSEFTSEJVQ0tFVAogSEFTSENU TAogSEFTSEVMRU1FTlQKIEhBU0hIRFIKK0hBU0hPUFRTCiBIQVNIU0VHTUVOVAogSEFTSF9TRVFf U1RBVFVTCiBIRQoKYmFzZS1jb21taXQ6IGE5YmRiNjNiYmE4YTYzMWNkNDc5NzM5MzMwN2VlY2Y1 ZmNkZTkxNjcKLS0gCjIuNTIuMAoK --558bd6e5e3266abf27d109104dd5d665478502ad57771e87f437cda96460 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v9-0002-Add-foreach_hash-macro.patch Content-Type: text/x-patch; charset=utf-8; name=v9-0002-Add-foreach_hash-macro.patch RnJvbSA4OTQzOWY0OTQ5YTIxMjA4YWNhMDlhYWY3MjAyZTdmYmYyYzNlM2FjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBUaHUsIDQgRGVjIDIwMjUgMTU6Mzk6MDAgKzAxMDAKU3ViamVjdDogW1BBVENIIHY5 IDIvNV0gQWRkIGZvcmVhY2hfaGFzaCBtYWNybwoKRm9yIGxpc3RzIHdlJ3ZlIGhhZCBhIG5ldyBm b3JlYWNoIHN0eWxlIG1hY3JvcyBzaW5jZSAxNGRkMGYyN2Q3LiBUaGlzCmFkZHMgYSBzaW1pbGFy IG1hY3JvIGZvciBoYXNoIHRhYmxlcy4gVGhpcyBuZXcgZm9yZWFjaF9oYXNoIG1hY3JvIG1ha2Vz Cml0ZXJhdGluZyBvdmVyIHRoZSBpdGVtcyBpbiBhbiBIVEFCIGFzIHNpbXBsZSBhcyBpdGVyYXRp bmcgb3ZlciB0aGUKaXRlbXMgaW4gYSBMaXN0LiBUaGUgb25seSBhZGRpdGlvbmFsIHRoaW5nIHRv IGtlZXAgaW4gbWluZCBpcyB0aGF0IHdoZW4KZXhpdGluZyB0aGUgbG9vcCBlYXJseSB5b3UgbmVl ZCB0byBjYWxsIGZvcmVhY2hfaGFzaF90ZXJtLgotLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2hhc2gv ZHluYWhhc2guYyB8IDE1ICsrKysrKysrLQogc3JjL2luY2x1ZGUvdXRpbHMvaHNlYXJjaC5oICAg ICAgIHwgNTYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2Vk LCA3MCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvaGFzaC9keW5haGFzaC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvaGFzaC9keW5haGFz aC5jCmluZGV4IGMwZmFhYWY2MWRhLi4yOWZjOGY0NjBiYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvaGFzaC9keW5haGFzaC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2hhc2gvZHlu YWhhc2guYwpAQCAtMTQ2Miw3ICsxNDYyLDcgQEAgaGFzaF9nZXRfbnVtX2VudHJpZXMoSFRBQiAq aGFzaHApCiB9CiAKIC8qCi0gKiBoYXNoX3NlcV9pbml0L19zZWFyY2gvX3Rlcm0KKyAqIGhhc2hf c2VxX2luaXQvX25ldy9fc2VhcmNoL190ZXJtCiAgKgkJCVNlcXVlbnRpYWxseSBzZWFyY2ggdGhy b3VnaCBoYXNoIHRhYmxlIGFuZCByZXR1cm4KICAqCQkJYWxsIHRoZSBlbGVtZW50cyBvbmUgYnkg b25lLCByZXR1cm4gTlVMTCB3aGVuIG5vIG1vcmUuCiAgKgpAQCAtMTQ5Niw2ICsxNDk2LDE5IEBA IGhhc2hfc2VxX2luaXQoSEFTSF9TRVFfU1RBVFVTICpzdGF0dXMsIEhUQUIgKmhhc2hwKQogCQly ZWdpc3Rlcl9zZXFfc2NhbihoYXNocCk7CiB9CiAKKy8qCisgKiBTYW1lIGFzIGhhc2hfc2VxX2lu aXQoKSwgYnV0IHJldHVybnMgdGhlIHN0YXR1cyBzdHJ1Y3QgaW5zdGVhZCBvZiB0YWtpbmcgYQor ICogcG9pbnRlci4KKyAqLworSEFTSF9TRVFfU1RBVFVTCitoYXNoX3NlcV9uZXcoSFRBQiAqaGFz aHApCit7CisJSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKKworCWhhc2hfc2VxX2luaXQoJnN0YXR1 cywgaGFzaHApOworCXJldHVybiBzdGF0dXM7Cit9CisKIC8qCiAgKiBTYW1lIGFzIGFib3ZlIGJ1 dCBzY2FuIGJ5IHRoZSBnaXZlbiBoYXNoIHZhbHVlLgogICogU2VlIGFsc28gaGFzaF9zZXFfc2Vh cmNoKCkuCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9oc2VhcmNoLmggYi9zcmMvaW5j bHVkZS91dGlscy9oc2VhcmNoLmgKaW5kZXggNzFjOTc4MDEzMmYuLjMzZTIyOGUzMmU1IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9oc2VhcmNoLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRp bHMvaHNlYXJjaC5oCkBAIC0yNzksNiArMjc5LDYxIEBAIHR5cGVkZWYgc3RydWN0CiAJdWludDMy CQloYXNodmFsdWU7CQkvKiBoYXNodmFsdWUgdG8gc3RhcnQgc2Vxc2NhbiBvdmVyIGhhc2ggKi8K IH0gSEFTSF9TRVFfU1RBVFVTOwogCisvKgorICogZm9yZWFjaF9oYXNoIC0gaXRlcmF0ZSBvdmVy IGFsbCBlbnRyaWVzIGluIGEgaGFzaCB0YWJsZQorICoKKyAqIFRoaXMgbWFjcm8gc2ltcGxpZmll cyBoYXNoIHRhYmxlIGl0ZXJhdGlvbiBieSBjb21iaW5pbmcgaGFzaF9zZXFfaW5pdAorICogYW5k IGhhc2hfc2VxX3NlYXJjaCBpbnRvIGEgc2luZ2xlIGZvci1sb29wIGNvbnN0cnVjdC4KKyAqCisg KiBVc2FnZToKKyAqICAgZm9yZWFjaF9oYXNoKE15RW50cnksIGVudHJ5LCBteV9oYXNodGFibGUp CisgKiAgIHsKKyAqICAgICAgIC8vIHVzZSBlbnRyeQorICogICB9CisgKgorICogVGhpcyByZXBs YWNlcyB0aGUgbW9yZSB2ZXJib3NlIHBhdHRlcm46CisgKiAgIEhBU0hfU0VRX1NUQVRVUyBzdGF0 dXM7CisgKiAgIE15RW50cnkgKmVudHJ5OworICogICBoYXNoX3NlcV9pbml0KCZzdGF0dXMsIG15 X2hhc2h0YWJsZSk7CisgKiAgIHdoaWxlICgoZW50cnkgPSAoTXlFbnRyeSAqKSBoYXNoX3NlcV9z ZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisgKiAgIHsKKyAqICAgICAgIC8vIHVzZSBlbnRyeQor ICogICB9CisgKgorICogRm9yIGVhcmx5IHRlcm1pbmF0aW9uLCB1c2UgZm9yZWFjaF9oYXNoX3Rl cm0oKSBiZWZvcmUgYnJlYWs6CisgKiAgIGZvcmVhY2hfaGFzaChNeUVudHJ5LCBlbnRyeSwgbXlf aGFzaHRhYmxlKQorICogICB7CisgKiAgICAgICBpZiAoZm91bmRfaXQpCisgKiAgICAgICB7Cisg KiAgICAgICAgICAgZm9yZWFjaF9oYXNoX3Rlcm0oZW50cnkpOworICogICAgICAgICAgIGJyZWFr OworICogICAgICAgfQorICogICB9CisgKi8KKyNkZWZpbmUgZm9yZWFjaF9oYXNoKHR5cGUsIHZh ciwgaHRhYikgXAorCWZvciAodHlwZSAqdmFyID0gTlVMTCwgKnZhciMjX19vdXRlcmxvb3AgPSAo dHlwZSAqKSAxOyBcCisJCSB2YXIjI19fb3V0ZXJsb29wOyBcCisJCSB2YXIjI19fb3V0ZXJsb29w ID0gMCkgXAorCQlmb3IgKEhBU0hfU0VRX1NUQVRVUyB2YXIjI19fc3RhdHVzID0gaGFzaF9zZXFf bmV3KGh0YWIpOyBcCisJCQkgKHZhciA9ICh0eXBlICopIGhhc2hfc2VxX3NlYXJjaCgmdmFyIyNf X3N0YXR1cykpICE9IE5VTEw7ICkKKworLyoKKyAqIGZvcmVhY2hfaGFzaF90ZXJtIC0gdGVybWlu YXRlIGEgZm9yZWFjaF9oYXNoIGxvb3AgZWFybHkKKyAqCisgKiBDYWxsIHRoaXMgYmVmb3JlICdi cmVhaycgdG8gcHJvcGVybHkgY2xlYW4gdXAgdGhlIGhhc2ggc2Nhbi4KKyAqLworI2RlZmluZSBm b3JlYWNoX2hhc2hfdGVybSh2YXIpIGhhc2hfc2VxX3Rlcm0oJnZhciMjX19zdGF0dXMpCisKKy8q CisgKiBmb3JlYWNoX2hhc2hfcmVzdGFydCAtIHJlc3RhcnQgaXRlcmF0aW9uIGZyb20gdGhlIGJl Z2lubmluZworICoKKyAqIFVzZSB3aGVuIG1vZGlmaWNhdGlvbnMgZHVyaW5nIGl0ZXJhdGlvbiBt YXkgaGF2ZSBpbnZhbGlkYXRlZCB0aGUgc2Nhbi4KKyAqIFRoZSBuZXh0IGl0ZXJhdGlvbiB3aWxs IHN0YXJ0IGZyb20gdGhlIGZpcnN0IGVudHJ5IGFnYWluLgorICovCisjZGVmaW5lIGZvcmVhY2hf aGFzaF9yZXN0YXJ0KHZhciwgaHRhYikgXAorCShoYXNoX3NlcV90ZXJtKCZ2YXIjI19fc3RhdHVz KSwgXAorCSBoYXNoX3NlcV9pbml0KCZ2YXIjI19fc3RhdHVzLCBodGFiKSkKKwogLyoKICAqIHBy b3RvdHlwZXMgZm9yIGZ1bmN0aW9ucyBpbiBkeW5haGFzaC5jCiAgKi8KQEAgLTI5OSw2ICszNTQs NyBAQCBleHRlcm4gYm9vbCBoYXNoX3VwZGF0ZV9oYXNoX2tleShIVEFCICpoYXNocCwgdm9pZCAq ZXhpc3RpbmdFbnRyeSwKIAkJCQkJCQkJIGNvbnN0IHZvaWQgKm5ld0tleVB0cik7CiBleHRlcm4g aW50NjQgaGFzaF9nZXRfbnVtX2VudHJpZXMoSFRBQiAqaGFzaHApOwogZXh0ZXJuIHZvaWQgaGFz aF9zZXFfaW5pdChIQVNIX1NFUV9TVEFUVVMgKnN0YXR1cywgSFRBQiAqaGFzaHApOworZXh0ZXJu IEhBU0hfU0VRX1NUQVRVUyBoYXNoX3NlcV9uZXcoSFRBQiAqaGFzaHApOwogZXh0ZXJuIHZvaWQg aGFzaF9zZXFfaW5pdF93aXRoX2hhc2hfdmFsdWUoSEFTSF9TRVFfU1RBVFVTICpzdGF0dXMsCiAJ CQkJCQkJCQkJICBIVEFCICpoYXNocCwKIAkJCQkJCQkJCQkgIHVpbnQzMiBoYXNodmFsdWUpOwot LSAKMi41Mi4wCgo= --558bd6e5e3266abf27d109104dd5d665478502ad57771e87f437cda96460 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v9-0003-Use-hash_make-macros-throughout-the-codebase.patch Content-Type: text/x-patch; charset=utf-8; name=v9-0003-Use-hash_make-macros-throughout-the-codebase.patch RnJvbSBkZGEwMjYxZmI2M2Y5M2VmOGFkMjAzOTdlZjQ0MTU2MGQyOTVmZWE1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBUaHUsIDQgRGVjIDIwMjUgMTU6MzY6MTkgKzAxMDAKU3ViamVjdDogW1BBVENIIHY5 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 L2NvbW1hbmRzL2FzeW5jLmMgICAgICAgICAgICAgICAgICB8IDQ5ICsrKystLS0tLS0tLS0tCiBz cmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgICAgICAgICAgICAgICAgfCAxMiArLS0tCiBz cmMvYmFja2VuZC9jb21tYW5kcy9zZXF1ZW5jZS5jICAgICAgICAgICAgICAgfCAxMCArLS0KIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgICAgICB8IDE2ICstLS0tCiBz cmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyAgICAgICAgfCAxMCArLS0KIHNy Yy9iYWNrZW5kL25vZGVzL2V4dGVuc2libGUuYyAgICAgICAgICAgICAgICB8IDEwICstLQogc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jICAgICAgICAgIHwgMTcgKystLS0KIHNy Yy9iYWNrZW5kL29wdGltaXplci91dGlsL3ByZWR0ZXN0LmMgICAgICAgICB8ICA5ICstLQogc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcmVsbm9kZS5jICAgICAgICAgIHwgMTMgKy0tLQogc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX29wZXIuYyAgICAgICAgICAgICAgIHwgMTAgKystCiBzcmMv YmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGRlc2MuYyAgICAgICAgICAgfCAgOSArLS0KIHNyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jICAgICAgICAgICB8IDIyICsrLS0tLS0KIHNy Yy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2twb2ludGVyLmMgICAgICAgICB8IDEyICstLS0KIC4u Li9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYyB8IDEzICstLS0KIHNy Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYyAgICB8IDIyICsrLS0tLS0K IC4uLi9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYyAgICAgICB8IDI5ICsrLS0t LS0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jICAgfCAxMCAr Ky0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgICB8IDExICst LS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zl90YWJsZS5jICAgICAgICB8IDE1ICsr LS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYyAgICAgICAgICAgfCAxMSAr Ky0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9sb2NhbGJ1Zi5jICAgICAgICAgfCAxMSAr LS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2ZpbGUvcmVpbml0LmMgICAgICAgICAgICAgfCAgOCAr LS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMgICAgICAgICAgICAgICB8IDMzICsr KysrKystLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYyAgICAgICAgICAgICB8 IDIwICsrLS0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xvY2suYyAgICAgICAgICAgICAg IHwgNTUgKysrKystLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2x3bG9jay5j ICAgICAgICAgICAgIHwgIDggKy0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRl LmMgICAgICAgICAgfCA2NiArKysrKysrKy0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdl L3NtZ3Ivc21nci5jICAgICAgICAgICAgICAgfCAxMCArKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2Uv c3luYy9zeW5jLmMgICAgICAgICAgICAgICB8IDExICstLS0KIHNyYy9iYWNrZW5kL3RzZWFyY2gv dHNfdHlwYW5hbHl6ZS5jICAgICAgICAgICB8IDEzICstLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2Fj dGl2aXR5L3dhaXRfZXZlbnQuYyAgICAgICB8IDIzICsrKy0tLS0KIHNyYy9iYWNrZW5kL3V0aWxz L2FkdC9hcnJheV90eXBhbmFseXplLmMgICAgICB8IDIzICsrLS0tLS0KIHNyYy9iYWNrZW5kL3V0 aWxzL2FkdC9qc29uLmMgICAgICAgICAgICAgICAgICB8IDE1ICstLS0tCiBzcmMvYmFja2VuZC91 dGlscy9hZHQvanNvbmZ1bmNzLmMgICAgICAgICAgICAgfCAyMCArKy0tLS0KIHNyYy9iYWNrZW5k L3V0aWxzL2FkdC9tY3h0ZnVuY3MuYyAgICAgICAgICAgICB8IDExICstLS0KIHNyYy9iYWNrZW5k L3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jICAgICAgICAgICB8IDI5ICsrKystLS0tCiBzcmMvYmFj a2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgICAgICAgICAgICAgfCAyMyArKy0tLS0tCiBzcmMv YmFja2VuZC91dGlscy9jYWNoZS9hdHRvcHRjYWNoZS5jICAgICAgICAgfCAxNiArKy0tLQogc3Jj L2JhY2tlbmQvdXRpbHMvY2FjaGUvZXZ0Y2FjaGUuYyAgICAgICAgICAgIHwgIDkgKy0tCiBzcmMv YmFja2VuZC91dGlscy9jYWNoZS9mdW5jY2FjaGUuYyAgICAgICAgICAgfCAxNCArKy0tCiBzcmMv YmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jICAgICAgICAgICAgfCAxOSArKy0tLS0KIHNy Yy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGZpbGVudW1iZXJtYXAuYyAgICB8ICA5ICstLQogc3Jj L2JhY2tlbmQvdXRpbHMvY2FjaGUvc3BjY2FjaGUuYyAgICAgICAgICAgIHwgIDkgKy0tCiBzcmMv YmFja2VuZC91dGlscy9jYWNoZS90c19jYWNoZS5jICAgICAgICAgICAgfCAyNyArKystLS0tLQog c3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHlwY2FjaGUuYyAgICAgICAgICAgIHwgMzMgKysrKy0t LS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvZm1nci9kZm1nci5jICAgICAgICAgICAgICAgIHwgMTIg KystLQogc3JjL2JhY2tlbmQvdXRpbHMvZm1nci9mbWdyLmMgICAgICAgICAgICAgICAgIHwgMTEg Ky0tLQogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYyAgICAgICAgICAgICAgICAgIHwgMTQg KystLQogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9pbmplY3Rpb25fcG9pbnQuYyAgICAgIHwgMTQg KystLQogc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYyAgICAgICAgICAgIHwgMTAg Ky0tCiBzcmMvYmFja2VuZC91dGlscy90aW1lL2NvbWJvY2lkLmMgICAgICAgICAgICAgfCAxMyAr LS0tCiBzcmMvcGwvcGxwZXJsL3BscGVybC5jICAgICAgICAgICAgICAgICAgICAgICAgfCAzMiAr KystLS0tLS0KIHNyYy9wbC9wbHBnc3FsL3NyYy9wbF9leGVjLmMgICAgICAgICAgICAgICAgICB8 IDMyICsrKystLS0tLQogc3JjL3BsL3BscHl0aG9uL3BscHlfcGxweW1vZHVsZS5jICAgICAgICAg ICAgIHwgIDkgKystCiBzcmMvcGwvcGxweXRob24vcGxweV9wcm9jZWR1cmUuYyAgICAgICAgICAg ICAgfCAgOSArLS0KIHNyYy9wbC90Y2wvcGx0Y2wuYyAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IDE5ICsrLS0tLQogc3JjL3RpbWV6b25lL3BndHouYyAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgMTIgKy0tLQogNzMgZmlsZXMgY2hhbmdlZCwgMzgwIGluc2VydGlvbnMoKyksIDg2MSBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb250cmliL2RibGluay9kYmxpbmsuYyBiL2NvbnRy aWIvZGJsaW5rL2RibGluay5jCmluZGV4IDhjYjMxNjY0OTVjLi4xOTI0MThkZjRhZiAxMDA2NDQK LS0tIGEvY29udHJpYi9kYmxpbmsvZGJsaW5rLmMKKysrIGIvY29udHJpYi9kYmxpbmsvZGJsaW5r LmMKQEAgLTI1NDAsMTMgKzI1NDAsOSBAQCBnZXRDb25uZWN0aW9uQnlOYW1lKGNvbnN0IGNoYXIg Km5hbWUpCiBzdGF0aWMgSFRBQiAqCiBjcmVhdGVDb25uSGFzaCh2b2lkKQogewotCUhBU0hDVEwJ CWN0bDsKLQotCWN0bC5rZXlzaXplID0gTkFNRURBVEFMRU47Ci0JY3RsLmVudHJ5c2l6ZSA9IHNp emVvZihyZW1vdGVDb25uSGFzaEVudCk7Ci0KLQlyZXR1cm4gaGFzaF9jcmVhdGUoIlJlbW90ZSBD b24gaGFzaCIsIE5VTUNPTk4sICZjdGwsCi0JCQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfU1RSSU5H Uyk7CisJcmV0dXJuIGhhc2hfbWFrZV9jeHQocmVtb3RlQ29ubkhhc2hFbnQsIG5hbWUsCisJCQkJ CQkgIlJlbW90ZSBDb24gaGFzaCIsIE5VTUNPTk4sCisJCQkJCQkgVG9wTWVtb3J5Q29udGV4dCk7 CiB9CiAKIHN0YXRpYyByZW1vdGVDb25uICoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3RhdF9z dGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVu dHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMKaW5kZXggNGE0Mjc1MzNiZDguLjhhNjczOTBlNTYxIDEw MDY0NAotLS0gYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMu YworKysgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYwpA QCAtNTE3LDcgKzUxNyw2IEBAIHN0YXRpYyB2b2lkCiBwZ3NzX3NobWVtX3N0YXJ0dXAodm9pZCkK IHsKIAlib29sCQlmb3VuZDsKLQlIQVNIQ1RMCQlpbmZvOwogCUZJTEUJICAgKmZpbGUgPSBOVUxM OwogCUZJTEUJICAgKnFmaWxlID0gTlVMTDsKIAl1aW50MzIJCWhlYWRlcjsKQEAgLTU1NywxMiAr NTU2LDkgQEAgcGdzc19zaG1lbV9zdGFydHVwKHZvaWQpCiAJCXBnc3MtPnN0YXRzLnN0YXRzX3Jl c2V0ID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOwogCX0KIAotCWluZm8ua2V5c2l6ZSA9IHNpemVv ZihwZ3NzSGFzaEtleSk7Ci0JaW5mby5lbnRyeXNpemUgPSBzaXplb2YocGdzc0VudHJ5KTsKLQlw Z3NzX2hhc2ggPSBTaG1lbUluaXRIYXNoKCJwZ19zdGF0X3N0YXRlbWVudHMgaGFzaCIsCi0JCQkJ CQkJICBwZ3NzX21heCwgcGdzc19tYXgsCi0JCQkJCQkJICAmaW5mbywKLQkJCQkJCQkgIEhBU0hf RUxFTSB8IEhBU0hfQkxPQlMpOworCXBnc3NfaGFzaCA9IHNobWVtX2hhc2hfbWFrZShwZ3NzRW50 cnksIGtleSwKKwkJCQkJCQkJInBnX3N0YXRfc3RhdGVtZW50cyBoYXNoIiwKKwkJCQkJCQkJcGdz c19tYXgsIHBnc3NfbWF4KTsKIAogCUxXTG9ja1JlbGVhc2UoQWRkaW5TaG1lbUluaXRMb2NrKTsK IApkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ190cmdtL3RyZ21fcmVnZXhwLmMgYi9jb250cmliL3Bn X3RyZ20vdHJnbV9yZWdleHAuYwppbmRleCAxZDFiNWZlMzA0ZC4uZWNkNGQ2Nzc5NDggMTAwNjQ0 Ci0tLSBhL2NvbnRyaWIvcGdfdHJnbS90cmdtX3JlZ2V4cC5jCisrKyBiL2NvbnRyaWIvcGdfdHJn bS90cmdtX3JlZ2V4cC5jCkBAIC04OTMsNyArODkzLDYgQEAgY29udmVydFBnV2NoYXIocGdfd2No YXIgYywgdHJnbV9tYl9jaGFyICpyZXN1bHQpCiBzdGF0aWMgdm9pZAogdHJhbnNmb3JtR3JhcGgo VHJnbU5GQSAqdHJnbU5GQSkKIHsKLQlIQVNIQ1RMCQloYXNoQ3RsOwogCVRyZ21TdGF0ZUtleSBp bml0a2V5OwogCVRyZ21TdGF0ZSAgKmluaXRzdGF0ZTsKIAlMaXN0Q2VsbCAgICpsYzsKQEAgLTkw NSwxMyArOTA0LDcgQEAgdHJhbnNmb3JtR3JhcGgoVHJnbU5GQSAqdHJnbU5GQSkKIAl0cmdtTkZB LT5vdmVyZmxvd2VkID0gZmFsc2U7CiAKIAkvKiBDcmVhdGUgaGFzaHRhYmxlIGZvciBzdGF0ZXMg Ki8KLQloYXNoQ3RsLmtleXNpemUgPSBzaXplb2YoVHJnbVN0YXRlS2V5KTsKLQloYXNoQ3RsLmVu dHJ5c2l6ZSA9IHNpemVvZihUcmdtU3RhdGUpOwotCWhhc2hDdGwuaGN4dCA9IEN1cnJlbnRNZW1v cnlDb250ZXh0OwotCXRyZ21ORkEtPnN0YXRlcyA9IGhhc2hfY3JlYXRlKCJUcmlncmFtIE5GQSIs Ci0JCQkJCQkJCSAgMTAyNCwKLQkJCQkJCQkJICAmaGFzaEN0bCwKLQkJCQkJCQkJICBIQVNIX0VM RU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwl0cmdtTkZBLT5zdGF0ZXMgPSBoYXNo X21ha2UoVHJnbVN0YXRlLCBzdGF0ZUtleSwgIlRyaWdyYW0gTkZBIiwgMTAyNCk7CiAJdHJnbU5G QS0+bnN0YXRlcyA9IDA7CiAKIAkvKiBDcmVhdGUgaW5pdGlhbCBzdGF0ZTogYW1iaWd1b3VzIHBy ZWZpeCwgTkZBJ3MgaW5pdGlhbCBzdGF0ZSAqLwpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jl c19mZHcvY29ubmVjdGlvbi5jIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvY29ubmVjdGlvbi5jCmlu ZGV4IDQ4N2ExYTIzMTcwLi41Yzc3YzllY2RlNSAxMDA2NDQKLS0tIGEvY29udHJpYi9wb3N0Z3Jl c19mZHcvY29ubmVjdGlvbi5jCisrKyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2Nvbm5lY3Rpb24u YwpAQCAtMjE0LDE3ICsyMTQsMTMgQEAgR2V0Q29ubmVjdGlvbihVc2VyTWFwcGluZyAqdXNlciwg Ym9vbCB3aWxsX3ByZXBfc3RtdCwgUGdGZHdDb25uU3RhdGUgKipzdGF0ZSkKIAkvKiBGaXJzdCB0 aW1lIHRocm91Z2gsIGluaXRpYWxpemUgY29ubmVjdGlvbiBjYWNoZSBoYXNodGFibGUgKi8KIAlp ZiAoQ29ubmVjdGlvbkhhc2ggPT0gTlVMTCkKIAl7Ci0JCUhBU0hDVEwJCWN0bDsKLQogCQlpZiAo cGdmZHdfd2VfZ2V0X3Jlc3VsdCA9PSAwKQogCQkJcGdmZHdfd2VfZ2V0X3Jlc3VsdCA9CiAJCQkJ V2FpdEV2ZW50RXh0ZW5zaW9uTmV3KCJQb3N0Z3Jlc0Zkd0dldFJlc3VsdCIpOwogCi0JCWN0bC5r ZXlzaXplID0gc2l6ZW9mKENvbm5DYWNoZUtleSk7Ci0JCWN0bC5lbnRyeXNpemUgPSBzaXplb2Yo Q29ubkNhY2hlRW50cnkpOwotCQlDb25uZWN0aW9uSGFzaCA9IGhhc2hfY3JlYXRlKCJwb3N0Z3Jl c19mZHcgY29ubmVjdGlvbnMiLCA4LAotCQkJCQkJCQkJICZjdGwsCi0JCQkJCQkJCQkgSEFTSF9F TEVNIHwgSEFTSF9CTE9CUyk7CisJCUNvbm5lY3Rpb25IYXNoID0gaGFzaF9tYWtlX2N4dChDb25u Q2FjaGVFbnRyeSwga2V5LAorCQkJCQkJCQkJICAgInBvc3RncmVzX2ZkdyBjb25uZWN0aW9ucyIs IDgsCisJCQkJCQkJCQkgICBUb3BNZW1vcnlDb250ZXh0KTsKIAogCQkvKgogCQkgKiBSZWdpc3Rl ciBzb21lIGNhbGxiYWNrIGZ1bmN0aW9ucyB0aGF0IG1hbmFnZSBjb25uZWN0aW9uIGNsZWFudXAu CmRpZmYgLS1naXQgYS9jb250cmliL3Bvc3RncmVzX2Zkdy9zaGlwcGFibGUuYyBiL2NvbnRyaWIv cG9zdGdyZXNfZmR3L3NoaXBwYWJsZS5jCmluZGV4IGQzMmQzZDBlNDYxLi5lYzE4NTI0OTBlMCAx MDA2NDQKLS0tIGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvc2hpcHBhYmxlLmMKKysrIGIvY29udHJp Yi9wb3N0Z3Jlc19mZHcvc2hpcHBhYmxlLmMKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJw b3N0Z3Jlc19mZHcuaCIKICNpbmNsdWRlICJ1dGlscy9oc2VhcmNoLmgiCiAjaW5jbHVkZSAidXRp bHMvaW52YWwuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1ZGUgInV0aWxz L3N5c2NhY2hlLmgiCiAKIC8qIEhhc2ggdGFibGUgZm9yIGNhY2hpbmcgdGhlIHJlc3VsdHMgb2Yg c2hpcHBhYmlsaXR5IGxvb2t1cHMgKi8KQEAgLTkwLDEzICs5MSwxMCBAQCBJbnZhbGlkYXRlU2hp cHBhYmxlQ2FjaGVDYWxsYmFjayhEYXR1bSBhcmcsIGludCBjYWNoZWlkLCB1aW50MzIgaGFzaHZh bHVlKQogc3RhdGljIHZvaWQKIEluaXRpYWxpemVTaGlwcGFibGVDYWNoZSh2b2lkKQogewotCUhB U0hDVEwJCWN0bDsKLQogCS8qIENyZWF0ZSB0aGUgaGFzaCB0YWJsZS4gKi8KLQljdGwua2V5c2l6 ZSA9IHNpemVvZihTaGlwcGFibGVDYWNoZUtleSk7Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihT aGlwcGFibGVDYWNoZUVudHJ5KTsKLQlTaGlwcGFibGVDYWNoZUhhc2ggPQotCQloYXNoX2NyZWF0 ZSgiU2hpcHBhYmlsaXR5IGNhY2hlIiwgMjU2LCAmY3RsLCBIQVNIX0VMRU0gfCBIQVNIX0JMT0JT KTsKKwlTaGlwcGFibGVDYWNoZUhhc2ggPSBoYXNoX21ha2VfY3h0KFNoaXBwYWJsZUNhY2hlRW50 cnksIGtleSwKKwkJCQkJCQkJCSAgICJTaGlwcGFiaWxpdHkgY2FjaGUiLCAyNTYsCisJCQkJCQkJ CQkgICBUb3BNZW1vcnlDb250ZXh0KTsKIAogCS8qIFNldCB1cCBpbnZhbGlkYXRpb24gY2FsbGJh Y2sgb24gcGdfZm9yZWlnbl9zZXJ2ZXIuICovCiAJQ2FjaGVSZWdpc3RlclN5c2NhY2hlQ2FsbGJh Y2soRk9SRUlHTlNFUlZFUk9JRCwKZGlmZiAtLWdpdCBhL2NvbnRyaWIvdGFibGVmdW5jL3RhYmxl ZnVuYy5jIGIvY29udHJpYi90YWJsZWZ1bmMvdGFibGVmdW5jLmMKaW5kZXggY2EyNDM0YzZlMTku LjQyNmY0YjIzNmEyIDEwMDY0NAotLS0gYS9jb250cmliL3RhYmxlZnVuYy90YWJsZWZ1bmMuYwor KysgYi9jb250cmliL3RhYmxlZnVuYy90YWJsZWZ1bmMuYwpAQCAtNzA1LDI0ICs3MDUsMTcgQEAg c3RhdGljIEhUQUIgKgogbG9hZF9jYXRlZ29yaWVzX2hhc2goY2hhciAqY2F0c19zcWwsIE1lbW9y eUNvbnRleHQgcGVyX3F1ZXJ5X2N0eCkKIHsKIAlIVEFCCSAgICpjcm9zc3RhYl9oYXNoOwotCUhB U0hDVEwJCWN0bDsKIAlpbnQJCQlyZXQ7CiAJdWludDY0CQlwcm9jOwogCU1lbW9yeUNvbnRleHQg U1BJY29udGV4dDsKIAotCS8qIGluaXRpYWxpemUgdGhlIGNhdGVnb3J5IGhhc2ggdGFibGUgKi8K LQljdGwua2V5c2l6ZSA9IE1BWF9DQVROQU1FX0xFTjsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9m KGNyb3NzdGFiX0hhc2hFbnQpOwotCWN0bC5oY3h0ID0gcGVyX3F1ZXJ5X2N0eDsKLQogCS8qCi0J ICogdXNlIElOSVRfQ0FUUywgZGVmaW5lZCBhYm92ZSBhcyBhIGd1ZXNzIG9mIGhvdyBtYW55IGhh c2ggdGFibGUgZW50cmllcwotCSAqIHRvIGNyZWF0ZSwgaW5pdGlhbGx5CisJICogSW5pdGlhbGl6 ZSB0aGUgY2F0ZWdvcnkgaGFzaCB0YWJsZS4gVXNlIElOSVRfQ0FUUywgZGVmaW5lZCBhYm92ZSBh cyBhCisJICogZ3Vlc3Mgb2YgaG93IG1hbnkgaGFzaCB0YWJsZSBlbnRyaWVzIHRvIGNyZWF0ZSwg aW5pdGlhbGx5LgogCSAqLwotCWNyb3NzdGFiX2hhc2ggPSBoYXNoX2NyZWF0ZSgiY3Jvc3N0YWIg aGFzaCIsCi0JCQkJCQkJCUlOSVRfQ0FUUywKLQkJCQkJCQkJJmN0bCwKLQkJCQkJCQkJSEFTSF9F TEVNIHwgSEFTSF9TVFJJTkdTIHwgSEFTSF9DT05URVhUKTsKKwljcm9zc3RhYl9oYXNoID0gaGFz aF9tYWtlX2N4dChjcm9zc3RhYl9IYXNoRW50LCBpbnRlcm5hbF9jYXRuYW1lLAorCQkJCQkJCQkg ICJjcm9zc3RhYiBoYXNoIiwgSU5JVF9DQVRTLAorCQkJCQkJCQkgIHBlcl9xdWVyeV9jdHgpOwog CiAJLyogQ29ubmVjdCB0byBTUEkgbWFuYWdlciAqLwogCVNQSV9jb25uZWN0KCk7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL2hlYXB0dXBsZS5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2NvbW1vbi9oZWFwdHVwbGUuYwppbmRleCAxMWJlYzIwZTgyZS4uZTY0ODAwMWYxMWIg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vaGVhcHR1cGxlLmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9oZWFwdHVwbGUuYwpAQCAtMTI1LDE4ICsxMjUsOSBA QCBtaXNzaW5nX21hdGNoKGNvbnN0IHZvaWQgKmtleTEsIGNvbnN0IHZvaWQgKmtleTIsIFNpemUg a2V5c2l6ZSkKIHN0YXRpYyB2b2lkCiBpbml0X21pc3NpbmdfY2FjaGUodm9pZCkKIHsKLQlIQVNI Q1RMCQloYXNoX2N0bDsKLQotCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YobWlzc2luZ19jYWNo ZV9rZXkpOwotCWhhc2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihtaXNzaW5nX2NhY2hlX2tleSk7 Ci0JaGFzaF9jdGwuaGN4dCA9IFRvcE1lbW9yeUNvbnRleHQ7Ci0JaGFzaF9jdGwuaGFzaCA9IG1p c3NpbmdfaGFzaDsKLQloYXNoX2N0bC5tYXRjaCA9IG1pc3NpbmdfbWF0Y2g7CiAJbWlzc2luZ19j YWNoZSA9Ci0JCWhhc2hfY3JlYXRlKCJNaXNzaW5nIFZhbHVlcyBDYWNoZSIsCi0JCQkJCTMyLAot CQkJCQkmaGFzaF9jdGwsCi0JCQkJCUhBU0hfRUxFTSB8IEhBU0hfQ09OVEVYVCB8IEhBU0hfRlVO Q1RJT04gfCBIQVNIX0NPTVBBUkUpOworCQloYXNoc2V0X21ha2VfZm5fY3h0KG1pc3NpbmdfY2Fj aGVfa2V5LCAiTWlzc2luZyBWYWx1ZXMgQ2FjaGUiLCAzMiwKKwkJCQkJCQltaXNzaW5nX2hhc2gs IG1pc3NpbmdfbWF0Y2gsIFRvcE1lbW9yeUNvbnRleHQpOwogfQogCiAvKiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQuYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jCmluZGV4IDdmNTdjNzg3ZjRjLi4wOWYxMWM0NTlkNyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkLmMKQEAgLTE1MTUsMTUgKzE1MTUsOCBAQCB0 eXBlZGVmIHN0cnVjdAogc3RhdGljIHZvaWQKIGdpc3RJbml0UGFyZW50TWFwKEdJU1RCdWlsZFN0 YXRlICpidWlsZHN0YXRlKQogewotCUhBU0hDVEwJCWhhc2hDdGw7Ci0KLQloYXNoQ3RsLmtleXNp emUgPSBzaXplb2YoQmxvY2tOdW1iZXIpOwotCWhhc2hDdGwuZW50cnlzaXplID0gc2l6ZW9mKFBh cmVudE1hcEVudHJ5KTsKLQloYXNoQ3RsLmhjeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKLQli dWlsZHN0YXRlLT5wYXJlbnRNYXAgPSBoYXNoX2NyZWF0ZSgiZ2lzdGJ1aWxkIHBhcmVudCBtYXAi LAotCQkJCQkJCQkJCTEwMjQsCi0JCQkJCQkJCQkJJmhhc2hDdGwsCi0JCQkJCQkJCQkJSEFTSF9F TEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJYnVpbGRzdGF0ZS0+cGFyZW50TWFw ID0gaGFzaF9tYWtlKFBhcmVudE1hcEVudHJ5LCBjaGlsZGJsa25vLAorCQkJCQkJCQkJICAiZ2lz dGJ1aWxkIHBhcmVudCBtYXAiLCAxMDI0KTsKIH0KIAogc3RhdGljIHZvaWQKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZGJ1ZmZlcnMuYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9naXN0L2dpc3RidWlsZGJ1ZmZlcnMuYwppbmRleCAzMjEzY2Y0NWFhNi4uMDI5YWY4 NTQyZjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZGJ1ZmZl cnMuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGRidWZmZXJzLmMKQEAg LTQ0LDcgKzQ0LDYgQEAgR0lTVEJ1aWxkQnVmZmVycyAqCiBnaXN0SW5pdEJ1aWxkQnVmZmVycyhp bnQgcGFnZXNQZXJCdWZmZXIsIGludCBsZXZlbFN0ZXAsIGludCBtYXhMZXZlbCkKIHsKIAlHSVNU QnVpbGRCdWZmZXJzICpnZmJiOwotCUhBU0hDVEwJCWhhc2hDdGw7CiAKIAlnZmJiID0gcGFsbG9j X29iamVjdChHSVNUQnVpbGRCdWZmZXJzKTsKIAlnZmJiLT5wYWdlc1BlckJ1ZmZlciA9IHBhZ2Vz UGVyQnVmZmVyOwpAQCAtNzIsMTMgKzcxLDggQEAgZ2lzdEluaXRCdWlsZEJ1ZmZlcnMoaW50IHBh Z2VzUGVyQnVmZmVyLCBpbnQgbGV2ZWxTdGVwLCBpbnQgbWF4TGV2ZWwpCiAJICogbm9kZUJ1ZmZl cnNUYWIgaGFzaCBpcyBhc3NvY2lhdGlvbiBiZXR3ZWVuIGluZGV4IGJsb2NrcyBhbmQgaXQncwog CSAqIGJ1ZmZlcnMuCiAJICovCi0JaGFzaEN0bC5rZXlzaXplID0gc2l6ZW9mKEJsb2NrTnVtYmVy KTsKLQloYXNoQ3RsLmVudHJ5c2l6ZSA9IHNpemVvZihHSVNUTm9kZUJ1ZmZlcik7Ci0JaGFzaEN0 bC5oY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7Ci0JZ2ZiYi0+bm9kZUJ1ZmZlcnNUYWIgPSBo YXNoX2NyZWF0ZSgiZ2lzdGJ1aWxkYnVmZmVycyIsCi0JCQkJCQkJCQkgICAxMDI0LAotCQkJCQkJ CQkJICAgJmhhc2hDdGwsCi0JCQkJCQkJCQkgICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFT SF9DT05URVhUKTsKKwlnZmJiLT5ub2RlQnVmZmVyc1RhYiA9IGhhc2hfbWFrZShHSVNUTm9kZUJ1 ZmZlciwgbm9kZUJsb2NrbnVtLAorCQkJCQkJCQkJICJnaXN0YnVpbGRidWZmZXJzIiwgMTAyNCk7 CiAKIAlnZmJiLT5idWZmZXJFbXB0eWluZ1F1ZXVlID0gTklMOwogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNocGFnZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gv aGFzaHBhZ2UuYwppbmRleCA4ZTIyMGEzYWUxNi4uOTllYjI5MWU4MzIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hwYWdlLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hhc2gvaGFzaHBhZ2UuYwpAQCAtMTM1Niw3ICsxMzU2LDYgQEAgdm9pZAogX2hhc2hfZmluaXNo X3NwbGl0KFJlbGF0aW9uIHJlbCwgQnVmZmVyIG1ldGFidWYsIEJ1ZmZlciBvYnVmLCBCdWNrZXQg b2J1Y2tldCwKIAkJCQkgICB1aW50MzIgbWF4YnVja2V0LCB1aW50MzIgaGlnaG1hc2ssIHVpbnQz MiBsb3dtYXNrKQogewotCUhBU0hDVEwJCWhhc2hfY3RsOwogCUhUQUIJICAgKnRpZGh0YWI7CiAJ QnVmZmVyCQlidWNrZXRfbmJ1ZiA9IEludmFsaWRCdWZmZXI7CiAJQnVmZmVyCQluYnVmOwpAQCAt MTM2NywxNiArMTM2Niw4IEBAIF9oYXNoX2ZpbmlzaF9zcGxpdChSZWxhdGlvbiByZWwsIEJ1ZmZl ciBtZXRhYnVmLCBCdWZmZXIgb2J1ZiwgQnVja2V0IG9idWNrZXQsCiAJQnVja2V0CQluYnVja2V0 OwogCWJvb2wJCWZvdW5kOwogCi0JLyogSW5pdGlhbGl6ZSBoYXNoIHRhYmxlcyB1c2VkIHRvIHRy YWNrIFRJRHMgKi8KLQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKEl0ZW1Qb2ludGVyRGF0YSk7 Ci0JaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKEl0ZW1Qb2ludGVyRGF0YSk7Ci0JaGFzaF9j dGwuaGN4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OwotCi0JdGlkaHRhYiA9Ci0JCWhhc2hfY3Jl YXRlKCJidWNrZXQgY3RpZHMiLAotCQkJCQkyNTYsCQkvKiBhcmJpdHJhcnkgaW5pdGlhbCBzaXpl ICovCi0JCQkJCSZoYXNoX2N0bCwKLQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hf Q09OVEVYVCk7CisJLyogSW5pdGlhbGl6ZSBoYXNoIHRhYmxlcyB1c2VkIHRvIHRyYWNrIFRJRHMg KHdpdGggYXJiaXRyYXJ5IGluaXRpYWwgc2l6ZSkgKi8KKwl0aWRodGFiID0gaGFzaHNldF9tYWtl KEl0ZW1Qb2ludGVyRGF0YSwgImJ1Y2tldCBjdGlkcyIsIDI1Nik7CiAKIAlidWNrZXRfbmJsa25v ID0gbmJsa25vID0gX2hhc2hfZ2V0X25ld2Jsb2NrX2Zyb21fb2xkYnVja2V0KHJlbCwgb2J1Y2tl dCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Jld3JpdGVoZWFwLmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9yZXdyaXRlaGVhcC5jCmluZGV4IDc3ZmQ0OGViNTll Li5mYmU0ZDZlNmU5OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcmV3cml0 ZWhlYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9yZXdyaXRlaGVhcC5jCkBAIC0y MzcsNyArMjM3LDYgQEAgYmVnaW5faGVhcF9yZXdyaXRlKFJlbGF0aW9uIG9sZF9oZWFwLCBSZWxh dGlvbiBuZXdfaGVhcCwgVHJhbnNhY3Rpb25JZCBvbGRlc3RfeG0KIAlSZXdyaXRlU3RhdGUgc3Rh dGU7CiAJTWVtb3J5Q29udGV4dCByd19jeHQ7CiAJTWVtb3J5Q29udGV4dCBvbGRfY3h0OwotCUhB U0hDVEwJCWhhc2hfY3RsOwogCiAJLyoKIAkgKiBUbyBlYXNlIGNsZWFudXAsIG1ha2UgYSBzZXBh cmF0ZSBjb250ZXh0IHRoYXQgd2lsbCBjb250YWluIHRoZQpAQCAtMjYyLDI0ICsyNjEsMTkgQEAg YmVnaW5faGVhcF9yZXdyaXRlKFJlbGF0aW9uIG9sZF9oZWFwLCBSZWxhdGlvbiBuZXdfaGVhcCwg VHJhbnNhY3Rpb25JZCBvbGRlc3RfeG0KIAlzdGF0ZS0+cnNfY3h0ID0gcndfY3h0OwogCXN0YXRl LT5yc19idWxrc3RhdGUgPSBzbWdyX2J1bGtfc3RhcnRfcmVsKG5ld19oZWFwLCBNQUlOX0ZPUktO VU0pOwogCi0JLyogSW5pdGlhbGl6ZSBoYXNoIHRhYmxlcyB1c2VkIHRvIHRyYWNrIHVwZGF0ZSBj aGFpbnMgKi8KLQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKFRpZEhhc2hLZXkpOwotCWhhc2hf Y3RsLmVudHJ5c2l6ZSA9IHNpemVvZihVbnJlc29sdmVkVHVwRGF0YSk7Ci0JaGFzaF9jdGwuaGN4 dCA9IHN0YXRlLT5yc19jeHQ7Ci0KKwkvKgorCSAqIEluaXRpYWxpemUgaGFzaCB0YWJsZXMgdXNl ZCB0byB0cmFjayB1cGRhdGUgY2hhaW5zICh3aXRoIGFyYml0cmFyeQorCSAqIGluaXRpYWwgc2l6 ZXMpCisJICovCiAJc3RhdGUtPnJzX3VucmVzb2x2ZWRfdHVwcyA9Ci0JCWhhc2hfY3JlYXRlKCJS ZXdyaXRlIC8gVW5yZXNvbHZlZCBjdGlkcyIsCi0JCQkJCTEyOCwJCS8qIGFyYml0cmFyeSBpbml0 aWFsIHNpemUgKi8KLQkJCQkJJmhhc2hfY3RsLAotCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0JMT0JT IHwgSEFTSF9DT05URVhUKTsKLQotCWhhc2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihPbGRUb05l d01hcHBpbmdEYXRhKTsKKwkJaGFzaF9tYWtlX2N4dChVbnJlc29sdmVkVHVwRGF0YSwga2V5LAor CQkJCQkgICJSZXdyaXRlIC8gVW5yZXNvbHZlZCBjdGlkcyIsIDEyOCwKKwkJCQkJICBzdGF0ZS0+ cnNfY3h0KTsKIAogCXN0YXRlLT5yc19vbGRfbmV3X3RpZF9tYXAgPQotCQloYXNoX2NyZWF0ZSgi UmV3cml0ZSAvIE9sZCB0byBuZXcgdGlkIG1hcCIsCi0JCQkJCTEyOCwJCS8qIGFyYml0cmFyeSBp bml0aWFsIHNpemUgKi8KLQkJCQkJJmhhc2hfY3RsLAotCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0JM T0JTIHwgSEFTSF9DT05URVhUKTsKKwkJaGFzaF9tYWtlX2N4dChPbGRUb05ld01hcHBpbmdEYXRh LCBrZXksCisJCQkJCSAgIlJld3JpdGUgLyBPbGQgdG8gbmV3IHRpZCBtYXAiLCAxMjgsCisJCQkJ CSAgc3RhdGUtPnJzX2N4dCk7CiAKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkX2N4dCk7CiAK QEAgLTc2MCw3ICs3NTQsNiBAQCByYXdfaGVhcF9pbnNlcnQoUmV3cml0ZVN0YXRlIHN0YXRlLCBI ZWFwVHVwbGUgdHVwKQogc3RhdGljIHZvaWQKIGxvZ2ljYWxfYmVnaW5faGVhcF9yZXdyaXRlKFJl d3JpdGVTdGF0ZSBzdGF0ZSkKIHsKLQlIQVNIQ1RMCQloYXNoX2N0bDsKIAlUcmFuc2FjdGlvbklk IGxvZ2ljYWxfeG1pbjsKIAogCS8qCkBAIC03OTEsMTUgKzc4NCwxMSBAQCBsb2dpY2FsX2JlZ2lu X2hlYXBfcmV3cml0ZShSZXdyaXRlU3RhdGUgc3RhdGUpCiAJc3RhdGUtPnJzX2JlZ2luX2xzbiA9 IEdldFhMb2dJbnNlcnRSZWNQdHIoKTsKIAlzdGF0ZS0+cnNfbnVtX3Jld3JpdGVfbWFwcGluZ3Mg PSAwOwogCi0JaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihUcmFuc2FjdGlvbklkKTsKLQloYXNo X2N0bC5lbnRyeXNpemUgPSBzaXplb2YoUmV3cml0ZU1hcHBpbmdGaWxlKTsKLQloYXNoX2N0bC5o Y3h0ID0gc3RhdGUtPnJzX2N4dDsKLQogCXN0YXRlLT5yc19sb2dpY2FsX21hcHBpbmdzID0KLQkJ aGFzaF9jcmVhdGUoIkxvZ2ljYWwgcmV3cml0ZSBtYXBwaW5nIiwKLQkJCQkJMTI4LAkJLyogYXJi aXRyYXJ5IGluaXRpYWwgc2l6ZSAqLwotCQkJCQkmaGFzaF9jdGwsCi0JCQkJCUhBU0hfRUxFTSB8 IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCQloYXNoX21ha2VfY3h0KFJld3JpdGVNYXBw aW5nRmlsZSwgeGlkLAorCQkJCQkgICJMb2dpY2FsIHJld3JpdGUgbWFwcGluZyIsCisJCQkJCSAg MTI4LAkJLyogYXJiaXRyYXJ5IGluaXRpYWwgc2l6ZSAqLworCQkJCQkgIHN0YXRlLT5yc19jeHQp OwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3By ZWZldGNoZXIuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dwcmVmZXRjaGVyLmMK aW5kZXggM2MzZjA2N2FhZmIuLjAyZTQxNzgwZGQ5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS94bG9ncHJlZmV0Y2hlci5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3hsb2dwcmVmZXRjaGVyLmMKQEAgLTM2MiwxNSArMzYyLDEzIEBAIFhMb2dQcmVmZXRj aGVyICoKIFhMb2dQcmVmZXRjaGVyQWxsb2NhdGUoWExvZ1JlYWRlclN0YXRlICpyZWFkZXIpCiB7 CiAJWExvZ1ByZWZldGNoZXIgKnByZWZldGNoZXI7Ci0JSEFTSENUTAkJY3RsOwogCiAJcHJlZmV0 Y2hlciA9IHBhbGxvYzBfb2JqZWN0KFhMb2dQcmVmZXRjaGVyKTsKIAlwcmVmZXRjaGVyLT5yZWFk ZXIgPSByZWFkZXI7CiAKLQljdGwua2V5c2l6ZSA9IHNpemVvZihSZWxGaWxlTG9jYXRvcik7Ci0J Y3RsLmVudHJ5c2l6ZSA9IHNpemVvZihYTG9nUHJlZmV0Y2hlckZpbHRlcik7Ci0JcHJlZmV0Y2hl ci0+ZmlsdGVyX3RhYmxlID0gaGFzaF9jcmVhdGUoIlhMb2dQcmVmZXRjaGVyRmlsdGVyVGFibGUi LCAxMDI0LAotCQkJCQkJCQkJCSAgICZjdGwsIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCXBy ZWZldGNoZXItPmZpbHRlcl90YWJsZSA9IGhhc2hfbWFrZV9jeHQoWExvZ1ByZWZldGNoZXJGaWx0 ZXIsIHJsb2NhdG9yLAorCQkJCQkJCQkJCQkgIlhMb2dQcmVmZXRjaGVyRmlsdGVyVGFibGUiLCAx MDI0LAorCQkJCQkJCQkJCQkgVG9wTWVtb3J5Q29udGV4dCk7CiAJZGxpc3RfaW5pdCgmcHJlZmV0 Y2hlci0+ZmlsdGVyX3F1ZXVlKTsKIAogCVNoYXJlZFN0YXRzLT53YWxfZGlzdGFuY2UgPSAwOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3V0aWxzLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ndXRpbHMuYwppbmRleCA1ZmJlMzkxMzNiOC4uZDEx ZTQyYzk0OTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d1dGls cy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d1dGlscy5jCkBAIC0yNyw2 ICsyNyw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc21n ci5oIgogI2luY2x1ZGUgInV0aWxzL2hzZWFyY2guaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGls cy5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogCiAKQEAgLTEzMSwxNSArMTMyLDkgQEAgbG9n X2ludmFsaWRfcGFnZShSZWxGaWxlTG9jYXRvciBsb2NhdG9yLCBGb3JrTnVtYmVyIGZvcmtubywg QmxvY2tOdW1iZXIgYmxrbm8sCiAJaWYgKGludmFsaWRfcGFnZV90YWIgPT0gTlVMTCkKIAl7CiAJ CS8qIGNyZWF0ZSBoYXNoIHRhYmxlIHdoZW4gZmlyc3QgbmVlZGVkICovCi0JCUhBU0hDVEwJCWN0 bDsKLQotCQljdGwua2V5c2l6ZSA9IHNpemVvZih4bF9pbnZhbGlkX3BhZ2Vfa2V5KTsKLQkJY3Rs LmVudHJ5c2l6ZSA9IHNpemVvZih4bF9pbnZhbGlkX3BhZ2UpOwotCi0JCWludmFsaWRfcGFnZV90 YWIgPSBoYXNoX2NyZWF0ZSgiWExPRyBpbnZhbGlkLXBhZ2UgdGFibGUiLAotCQkJCQkJCQkJICAg MTAwLAotCQkJCQkJCQkJICAgJmN0bCwKLQkJCQkJCQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfQkxP QlMpOworCQlpbnZhbGlkX3BhZ2VfdGFiID0gaGFzaF9tYWtlX2N4dCh4bF9pbnZhbGlkX3BhZ2Us IGtleSwKKwkJCQkJCQkJCQkgIlhMT0cgaW52YWxpZC1wYWdlIHRhYmxlIiwgMTAwLAorCQkJCQkJ CQkJCSBUb3BNZW1vcnlDb250ZXh0KTsKIAl9CiAKIAkvKiB3ZSBjdXJyZW50bHkgYXNzdW1lIHhs X2ludmFsaWRfcGFnZV9rZXkgY29udGFpbnMgbm8gcGFkZGluZyAqLwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY2F0YWxvZy9wZ19lbnVtLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2VudW0u YwppbmRleCAzM2E0NjE0ODRkNC4uODZjOGJhZGE1NTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NhdGFsb2cvcGdfZW51bS5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfZW51bS5jCkBA IC0yNjcsMTUgKzI2Nyw5IEBAIEVudW1WYWx1ZXNEZWxldGUoT2lkIGVudW1UeXBlT2lkKQogc3Rh dGljIHZvaWQKIGluaXRfdW5jb21taXR0ZWRfZW51bV90eXBlcyh2b2lkKQogewotCUhBU0hDVEwJ CWhhc2hfY3RsOwotCi0JaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihPaWQpOwotCWhhc2hfY3Rs LmVudHJ5c2l6ZSA9IHNpemVvZihPaWQpOwotCWhhc2hfY3RsLmhjeHQgPSBUb3BUcmFuc2FjdGlv bkNvbnRleHQ7Ci0JdW5jb21taXR0ZWRfZW51bV90eXBlcyA9IGhhc2hfY3JlYXRlKCJVbmNvbW1p dHRlZCBlbnVtIHR5cGVzIiwKLQkJCQkJCQkJCQkgMzIsCi0JCQkJCQkJCQkJICZoYXNoX2N0bCwK LQkJCQkJCQkJCQkgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJdW5j b21taXR0ZWRfZW51bV90eXBlcyA9IGhhc2hzZXRfbWFrZV9jeHQoT2lkLAorCQkJCQkJCQkJCQkg ICJVbmNvbW1pdHRlZCBlbnVtIHR5cGVzIiwgMzIsCisJCQkJCQkJCQkJCSAgVG9wVHJhbnNhY3Rp b25Db250ZXh0KTsKIH0KIAogLyoKQEAgLTI4NCwxNSArMjc4LDkgQEAgaW5pdF91bmNvbW1pdHRl ZF9lbnVtX3R5cGVzKHZvaWQpCiBzdGF0aWMgdm9pZAogaW5pdF91bmNvbW1pdHRlZF9lbnVtX3Zh bHVlcyh2b2lkKQogewotCUhBU0hDVEwJCWhhc2hfY3RsOwotCi0JaGFzaF9jdGwua2V5c2l6ZSA9 IHNpemVvZihPaWQpOwotCWhhc2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihPaWQpOwotCWhhc2hf Y3RsLmhjeHQgPSBUb3BUcmFuc2FjdGlvbkNvbnRleHQ7Ci0JdW5jb21taXR0ZWRfZW51bV92YWx1 ZXMgPSBoYXNoX2NyZWF0ZSgiVW5jb21taXR0ZWQgZW51bSB2YWx1ZXMiLAotCQkJCQkJCQkJCSAg MzIsCi0JCQkJCQkJCQkJICAmaGFzaF9jdGwsCi0JCQkJCQkJCQkJICBIQVNIX0VMRU0gfCBIQVNI X0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwl1bmNvbW1pdHRlZF9lbnVtX3ZhbHVlcyA9IGhhc2hz ZXRfbWFrZV9jeHQoT2lkLAorCQkJCQkJCQkJCQkgICAiVW5jb21taXR0ZWQgZW51bSB2YWx1ZXMi LCAzMiwKKwkJCQkJCQkJCQkJICAgVG9wVHJhbnNhY3Rpb25Db250ZXh0KTsKIH0KIAogLyoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfaW5oZXJpdHMuYyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvcGdfaW5oZXJpdHMuYwppbmRleCBjZWY4MDYzMzE1Ny4uNTM3NzY5YjM5YWUgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfaW5oZXJpdHMuYworKysgYi9zcmMvYmFj a2VuZC9jYXRhbG9nL3BnX2luaGVyaXRzLmMKQEAgLTI1NiwxOSArMjU2LDEyIEBAIGZpbmRfYWxs X2luaGVyaXRvcnMoT2lkIHBhcmVudHJlbElkLCBMT0NLTU9ERSBsb2NrbW9kZSwgTGlzdCAqKm51 bXBhcmVudHMpCiB7CiAJLyogaGFzaCB0YWJsZSBmb3IgTygxKSByZWxfb2lkIC0+IHJlbF9udW1w YXJlbnRzIGNlbGwgbG9va3VwICovCiAJSFRBQgkgICAqc2Vlbl9yZWxzOwotCUhBU0hDVEwJCWN0 bDsKIAlMaXN0CSAgICpyZWxzX2xpc3QsCiAJCQkgICAqcmVsX251bXBhcmVudHM7CiAJTGlzdENl bGwgICAqbDsKIAotCWN0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JY3RsLmVudHJ5c2l6ZSA9 IHNpemVvZihTZWVuUmVsc0VudHJ5KTsKLQljdGwuaGN4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0 OwotCi0Jc2Vlbl9yZWxzID0gaGFzaF9jcmVhdGUoImZpbmRfYWxsX2luaGVyaXRvcnMgdGVtcG9y YXJ5IHRhYmxlIiwKLQkJCQkJCQkzMiwgLyogc3RhcnQgc21hbGwgYW5kIGV4dGVuZCAqLwotCQkJ CQkJCSZjdGwsCi0JCQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7 CisJc2Vlbl9yZWxzID0gaGFzaF9tYWtlKFNlZW5SZWxzRW50cnksIHJlbF9pZCwKKwkJCQkJCSAg ImZpbmRfYWxsX2luaGVyaXRvcnMgdGVtcG9yYXJ5IHRhYmxlIiwgMzIpOwogCiAJLyoKIAkgKiBX ZSBidWlsZCBhIGxpc3Qgc3RhcnRpbmcgd2l0aCB0aGUgZ2l2ZW4gcmVsIGFuZCBhZGRpbmcgYWxs IGRpcmVjdCBhbmQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3RvcmFnZS5jIGIv c3JjL2JhY2tlbmQvY2F0YWxvZy9zdG9yYWdlLmMKaW5kZXggZTQ0M2E0OTkzYzUuLmRiM2UwODMx OWI1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N0b3JhZ2UuYworKysgYi9zcmMv YmFja2VuZC9jYXRhbG9nL3N0b3JhZ2UuYwpAQCAtOTAsMTUgKzkwLDkgQEAgQWRkUGVuZGluZ1N5 bmMoY29uc3QgUmVsRmlsZUxvY2F0b3IgKnJsb2NhdG9yKQogCiAJLyogY3JlYXRlIHRoZSBoYXNo IGlmIG5vdCB5ZXQgKi8KIAlpZiAoIXBlbmRpbmdTeW5jSGFzaCkKLQl7Ci0JCUhBU0hDVEwJCWN0 bDsKLQotCQljdGwua2V5c2l6ZSA9IHNpemVvZihSZWxGaWxlTG9jYXRvcik7Ci0JCWN0bC5lbnRy eXNpemUgPSBzaXplb2YoUGVuZGluZ1JlbFN5bmMpOwotCQljdGwuaGN4dCA9IFRvcFRyYW5zYWN0 aW9uQ29udGV4dDsKLQkJcGVuZGluZ1N5bmNIYXNoID0gaGFzaF9jcmVhdGUoInBlbmRpbmcgc3lu YyBoYXNoIiwgMTYsICZjdGwsCi0JCQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBI QVNIX0NPTlRFWFQpOwotCX0KKwkJcGVuZGluZ1N5bmNIYXNoID0gaGFzaF9tYWtlX2N4dChQZW5k aW5nUmVsU3luYywgcmxvY2F0b3IsCisJCQkJCQkJCQkJInBlbmRpbmcgc3luYyBoYXNoIiwgMTYs CisJCQkJCQkJCQkJVG9wVHJhbnNhY3Rpb25Db250ZXh0KTsKIAogCXBlbmRpbmcgPSBoYXNoX3Nl YXJjaChwZW5kaW5nU3luY0hhc2gsIHJsb2NhdG9yLCBIQVNIX0VOVEVSLCAmZm91bmQpOwogCUFz c2VydCghZm91bmQpOwpAQCAtNjAwLDcgKzU5NCw2IEBAIHZvaWQKIFNlcmlhbGl6ZVBlbmRpbmdT eW5jcyhTaXplIG1heFNpemUsIGNoYXIgKnN0YXJ0QWRkcmVzcykKIHsKIAlIVEFCCSAgICp0bXBo YXNoOwotCUhBU0hDVEwJCWN0bDsKIAlIQVNIX1NFUV9TVEFUVVMgc2NhbjsKIAlQZW5kaW5nUmVs U3luYyAqc3luYzsKIAlQZW5kaW5nUmVsRGVsZXRlICpkZWxldGU7CkBAIC02MTEsMTIgKzYwNCw4 IEBAIFNlcmlhbGl6ZVBlbmRpbmdTeW5jcyhTaXplIG1heFNpemUsIGNoYXIgKnN0YXJ0QWRkcmVz cykKIAkJZ290byB0ZXJtaW5hdGU7CiAKIAkvKiBDcmVhdGUgdGVtcG9yYXJ5IGhhc2ggdG8gY29s bGVjdCBhY3RpdmUgcmVsZmlsZWxvY2F0b3JzICovCi0JY3RsLmtleXNpemUgPSBzaXplb2YoUmVs RmlsZUxvY2F0b3IpOwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoUmVsRmlsZUxvY2F0b3IpOwot CWN0bC5oY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7Ci0JdG1waGFzaCA9IGhhc2hfY3JlYXRl KCJ0bXAgcmVsZmlsZWxvY2F0b3JzIiwKLQkJCQkJCSAgaGFzaF9nZXRfbnVtX2VudHJpZXMocGVu ZGluZ1N5bmNIYXNoKSwgJmN0bCwKLQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhB U0hfQ09OVEVYVCk7CisJdG1waGFzaCA9IGhhc2hzZXRfbWFrZShSZWxGaWxlTG9jYXRvciwgInRt cCByZWxmaWxlbG9jYXRvcnMiLAorCQkJCQkJICAgaGFzaF9nZXRfbnVtX2VudHJpZXMocGVuZGlu Z1N5bmNIYXNoKSk7CiAKIAkvKiBjb2xsZWN0IGFsbCBybG9jYXRvciBmcm9tIHBlbmRpbmcgc3lu Y3MgKi8KIAloYXNoX3NlcV9pbml0KCZzY2FuLCBwZW5kaW5nU3luY0hhc2gpOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYXN5bmMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Fz eW5jLmMKaW5kZXggNjU3YzU5MTYxOGQuLjBhMWU3YzcwOWM5IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9hc3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMK QEAgLTcyNiwyMSArNzI2LDE1IEBAIGluaXRHbG9iYWxDaGFubmVsVGFibGUodm9pZCkKIHN0YXRp YyB2b2lkCiBpbml0TG9jYWxDaGFubmVsVGFibGUodm9pZCkKIHsKLQlIQVNIQ1RMCQloYXNoX2N0 bDsKLQogCS8qIFF1aWNrIGV4aXQgaWYgd2UgYWxyZWFkeSBkaWQgdGhpcyAqLwogCWlmIChsb2Nh bENoYW5uZWxUYWJsZSAhPSBOVUxMKQogCQlyZXR1cm47CiAKIAkvKiBJbml0aWFsaXplIGxvY2Fs IGhhc2ggdGFibGUgZm9yIHRoaXMgYmFja2VuZCdzIGxpc3RlbmVkIGNoYW5uZWxzICovCi0JaGFz aF9jdGwua2V5c2l6ZSA9IE5BTUVEQVRBTEVOOwotCWhhc2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVv ZihDaGFubmVsTmFtZSk7Ci0KIAlsb2NhbENoYW5uZWxUYWJsZSA9Ci0JCWhhc2hfY3JlYXRlKCJM b2NhbCBMaXN0ZW4gQ2hhbm5lbHMiLAotCQkJCQk2NCwKLQkJCQkJJmhhc2hfY3RsLAotCQkJCQlI QVNIX0VMRU0gfCBIQVNIX1NUUklOR1MpOworCQloYXNoX21ha2VfY3h0KENoYW5uZWxOYW1lLCBj aGFubmVsLCAiTG9jYWwgTGlzdGVuIENoYW5uZWxzIiwKKwkJCQkJICA2NCwKKwkJCQkJICBUb3BN ZW1vcnlDb250ZXh0KTsKIH0KIAogLyoKQEAgLTc1MiwyMCArNzQ2LDEzIEBAIGluaXRMb2NhbENo YW5uZWxUYWJsZSh2b2lkKQogc3RhdGljIHZvaWQKIGluaXRQZW5kaW5nTGlzdGVuQWN0aW9ucyh2 b2lkKQogewotCUhBU0hDVEwJCWhhc2hfY3RsOwotCiAJaWYgKHBlbmRpbmdMaXN0ZW5BY3Rpb25z ICE9IE5VTEwpCiAJCXJldHVybjsKIAotCWhhc2hfY3RsLmtleXNpemUgPSBOQU1FREFUQUxFTjsK LQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoUGVuZGluZ0xpc3RlbkVudHJ5KTsKLQloYXNo X2N0bC5oY3h0ID0gQ3VyVHJhbnNhY3Rpb25Db250ZXh0OwotCiAJcGVuZGluZ0xpc3RlbkFjdGlv bnMgPQotCQloYXNoX2NyZWF0ZSgiUGVuZGluZyBMaXN0ZW4gQWN0aW9ucyIsCi0JCQkJCWxpc3Rf bGVuZ3RoKHBlbmRpbmdBY3Rpb25zLT5hY3Rpb25zKSwKLQkJCQkJJmhhc2hfY3RsLAotCQkJCQlI QVNIX0VMRU0gfCBIQVNIX1NUUklOR1MgfCBIQVNIX0NPTlRFWFQpOworCQloYXNoX21ha2VfY3h0 KFBlbmRpbmdMaXN0ZW5FbnRyeSwgY2hhbm5lbCwgIlBlbmRpbmcgTGlzdGVuIEFjdGlvbnMiLAor CQkJCQkgIGxpc3RfbGVuZ3RoKHBlbmRpbmdBY3Rpb25zLT5hY3Rpb25zKSwKKwkJCQkJICBDdXJU cmFuc2FjdGlvbkNvbnRleHQpOwogfQogCiAvKgpAQCAtMzE2MiwzMSArMzE0OSwyMSBAQCBBZGRF dmVudFRvUGVuZGluZ05vdGlmaWVzKE5vdGlmaWNhdGlvbiAqbikKIAlpZiAobGlzdF9sZW5ndGgo cGVuZGluZ05vdGlmaWVzLT5ldmVudHMpID49IE1JTl9IQVNIQUJMRV9OT1RJRklFUyAmJgogCQlw ZW5kaW5nTm90aWZpZXMtPmhhc2h0YWIgPT0gTlVMTCkKIAl7Ci0JCUhBU0hDVEwJCWhhc2hfY3Rs OwogCQlMaXN0Q2VsbCAgICpsOwogCiAJCS8qIENyZWF0ZSB0aGUgaGFzaCB0YWJsZSAqLwotCQlo YXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKE5vdGlmaWNhdGlvbiAqKTsKLQkJaGFzaF9jdGwuZW50 cnlzaXplID0gc2l6ZW9mKHN0cnVjdCBOb3RpZmljYXRpb25IYXNoKTsKLQkJaGFzaF9jdGwuaGFz aCA9IG5vdGlmaWNhdGlvbl9oYXNoOwotCQloYXNoX2N0bC5tYXRjaCA9IG5vdGlmaWNhdGlvbl9t YXRjaDsKLQkJaGFzaF9jdGwuaGN4dCA9IEN1clRyYW5zYWN0aW9uQ29udGV4dDsKIAkJcGVuZGlu Z05vdGlmaWVzLT5oYXNodGFiID0KLQkJCWhhc2hfY3JlYXRlKCJQZW5kaW5nIE5vdGlmaWVzIiwK LQkJCQkJCTI1NkwsCi0JCQkJCQkmaGFzaF9jdGwsCi0JCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0ZV TkNUSU9OIHwgSEFTSF9DT01QQVJFIHwgSEFTSF9DT05URVhUKTsKKwkJCWhhc2hfbWFrZV9mbl9j eHQoc3RydWN0IE5vdGlmaWNhdGlvbkhhc2gsIGV2ZW50LAorCQkJCQkJCSAiUGVuZGluZyBOb3Rp ZmllcyIsIDI1NiwKKwkJCQkJCQkgbm90aWZpY2F0aW9uX2hhc2gsIG5vdGlmaWNhdGlvbl9tYXRj aCwKKwkJCQkJCQkgQ3VyVHJhbnNhY3Rpb25Db250ZXh0KTsKIAogCQkvKiBDcmVhdGUgdGhlIHVu aXF1ZSBjaGFubmVsIG5hbWUgdGFibGUgKi8KIAkJQXNzZXJ0KHBlbmRpbmdOb3RpZmllcy0+dW5p cXVlQ2hhbm5lbEhhc2ggPT0gTlVMTCk7Ci0JCWhhc2hfY3RsLmtleXNpemUgPSBOQU1FREFUQUxF TjsKLQkJaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKENoYW5uZWxOYW1lKTsKLQkJaGFzaF9j dGwuaGN4dCA9IEN1clRyYW5zYWN0aW9uQ29udGV4dDsKIAkJcGVuZGluZ05vdGlmaWVzLT51bmlx dWVDaGFubmVsSGFzaCA9Ci0JCQloYXNoX2NyZWF0ZSgiUGVuZGluZyBOb3RpZnkgQ2hhbm5lbCBO YW1lcyIsCi0JCQkJCQk2NEwsCi0JCQkJCQkmaGFzaF9jdGwsCi0JCQkJCQlIQVNIX0VMRU0gfCBI QVNIX1NUUklOR1MgfCBIQVNIX0NPTlRFWFQpOworCQkJaGFzaF9tYWtlX2N4dChDaGFubmVsTmFt ZSwgY2hhbm5lbCwgIlBlbmRpbmcgTm90aWZ5IENoYW5uZWwgTmFtZXMiLAorCQkJCQkJICA2NEws CisJCQkJCQkgIEN1clRyYW5zYWN0aW9uQ29udGV4dCk7CiAKIAkJLyogSW5zZXJ0IGFsbCB0aGUg YWxyZWFkeS1leGlzdGluZyBldmVudHMgKi8KIAkJZm9yZWFjaChsLCBwZW5kaW5nTm90aWZpZXMt PmV2ZW50cykKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwppbmRleCA1Yjg2YTcyNzU4Ny4uZWIxYTdlY2Zl YmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYworKysgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKQEAgLTM3MSwxNSArMzcxLDkgQEAgRXZhbHVhdGVQ YXJhbXMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBQcmVwYXJlZFN0YXRlbWVudCAqcHN0bXQsIExpc3Qg KnBhcmFtcywKIHN0YXRpYyB2b2lkCiBJbml0UXVlcnlIYXNoVGFibGUodm9pZCkKIHsKLQlIQVNI Q1RMCQloYXNoX2N0bDsKLQotCWhhc2hfY3RsLmtleXNpemUgPSBOQU1FREFUQUxFTjsKLQloYXNo X2N0bC5lbnRyeXNpemUgPSBzaXplb2YoUHJlcGFyZWRTdGF0ZW1lbnQpOwotCi0JcHJlcGFyZWRf cXVlcmllcyA9IGhhc2hfY3JlYXRlKCJQcmVwYXJlZCBRdWVyaWVzIiwKLQkJCQkJCQkJICAgMzIs Ci0JCQkJCQkJCSAgICZoYXNoX2N0bCwKLQkJCQkJCQkJICAgSEFTSF9FTEVNIHwgSEFTSF9TVFJJ TkdTKTsKKwlwcmVwYXJlZF9xdWVyaWVzID0gaGFzaF9tYWtlX2N4dChQcmVwYXJlZFN0YXRlbWVu dCwgc3RtdF9uYW1lLAorCQkJCQkJCQkJICJQcmVwYXJlZCBRdWVyaWVzIiwgMzIsCisJCQkJCQkJ CQkgVG9wTWVtb3J5Q29udGV4dCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy9zZXF1ZW5jZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYwppbmRl eCBlMWI4MDhiYmI2MC4uNWEyNjgzYzA3MzUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3NlcXVlbmNlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYwpAQCAt MTExMywxMyArMTExMyw5IEBAIGxvY2tfYW5kX29wZW5fc2VxdWVuY2UoU2VxVGFibGUgc2VxKQog c3RhdGljIHZvaWQKIGNyZWF0ZV9zZXFfaGFzaHRhYmxlKHZvaWQpCiB7Ci0JSEFTSENUTAkJY3Rs OwotCi0JY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9m KFNlcVRhYmxlRGF0YSk7Ci0KLQlzZXFoYXNodGFiID0gaGFzaF9jcmVhdGUoIlNlcXVlbmNlIHZh bHVlcyIsIDE2LCAmY3RsLAotCQkJCQkJCSBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwlzZXFo YXNodGFiID0gaGFzaF9tYWtlX2N4dChTZXFUYWJsZURhdGEsIHJlbGlkLAorCQkJCQkJCSAgICJT ZXF1ZW5jZSB2YWx1ZXMiLCAxNiwKKwkJCQkJCQkgICBUb3BNZW1vcnlDb250ZXh0KTsKIH0KIAog LyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggZjk3NmMwZTVjN2UuLjQwYTM5OTg5ZWFh IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMv YmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtMjE2MCwxOSArMjE2MCw5IEBAIEV4ZWN1 dGVUcnVuY2F0ZUd1dHMoTGlzdCAqZXhwbGljaXRfcmVscywKIAogCQkJLyogRmlyc3QgdGltZSB0 aHJvdWdoLCBpbml0aWFsaXplIGhhc2h0YWJsZSBmb3IgZm9yZWlnbiB0YWJsZXMgKi8KIAkJCWlm ICghZnRfaHRhYikKLQkJCXsKLQkJCQlIQVNIQ1RMCQloY3RsOwotCi0JCQkJbWVtc2V0KCZoY3Rs LCAwLCBzaXplb2YoSEFTSENUTCkpOwotCQkJCWhjdGwua2V5c2l6ZSA9IHNpemVvZihPaWQpOwot CQkJCWhjdGwuZW50cnlzaXplID0gc2l6ZW9mKEZvcmVpZ25UcnVuY2F0ZUluZm8pOwotCQkJCWhj dGwuaGN4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OwotCi0JCQkJZnRfaHRhYiA9IGhhc2hfY3Jl YXRlKCJUUlVOQ0FURSBmb3IgRm9yZWlnbiBUYWJsZXMiLAotCQkJCQkJCQkJICAzMiwJLyogc3Rh cnQgc21hbGwgYW5kIGV4dGVuZCAqLwotCQkJCQkJCQkJICAmaGN0bCwKLQkJCQkJCQkJCSAgSEFT SF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7Ci0JCQl9CisJCQkJZnRfaHRhYiA9 IGhhc2hfbWFrZShGb3JlaWduVHJ1bmNhdGVJbmZvLCBzZXJ2ZXJpZCwKKwkJCQkJCQkJCSJUUlVO Q0FURSBmb3IgRm9yZWlnbiBUYWJsZXMiLAorCQkJCQkJCQkJMzIpOwkvKiBzdGFydCBzbWFsbCBh bmQgZXh0ZW5kICovCiAKIAkJCS8qIEZpbmQgb3IgY3JlYXRlIGNhY2hlZCBlbnRyeSBmb3IgdGhl IGZvcmVpZ24gdGFibGUgKi8KIAkJCWZ0X2luZm8gPSBoYXNoX3NlYXJjaChmdF9odGFiLCAmc2Vy dmVyaWQsIEhBU0hfRU5URVIsICZmb3VuZCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlTW9kaWZ5VGFibGUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlU YWJsZS5jCmluZGV4IGY1ZTlkMzY5OTQwLi43OWM0NzBlNzk3ZCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZU1vZGlmeVRhYmxlLmMKQEAgLTUxMzksMTUgKzUxMzksOSBAQCBFeGVjSW5pdE1vZGlm eVRhYmxlKE1vZGlmeVRhYmxlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKICNl bmRpZgogCWlmIChucmVscyA+PSBNVF9OUkVMU19IQVNIKQogCXsKLQkJSEFTSENUTAkJaGFzaF9j dGw7Ci0KLQkJaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihPaWQpOwotCQloYXNoX2N0bC5lbnRy eXNpemUgPSBzaXplb2YoTVRUYXJnZXRSZWxMb29rdXApOwotCQloYXNoX2N0bC5oY3h0ID0gQ3Vy cmVudE1lbW9yeUNvbnRleHQ7CiAJCW10c3RhdGUtPm10X3Jlc3VsdE9pZEhhc2ggPQotCQkJaGFz aF9jcmVhdGUoIk1vZGlmeVRhYmxlIHRhcmdldCBoYXNoIiwKLQkJCQkJCW5yZWxzLCAmaGFzaF9j dGwsCi0JCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwkJCWhh c2hfbWFrZShNVFRhcmdldFJlbExvb2t1cCwgcmVsYXRpb25PaWQsCisJCQkJCSAgIk1vZGlmeVRh YmxlIHRhcmdldCBoYXNoIiwgbnJlbHMpOwogCQlmb3IgKGkgPSAwOyBpIDwgbnJlbHM7IGkrKykK IAkJewogCQkJT2lkCQkJaGFzaGtleTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL2V4 dGVuc2libGUuYyBiL3NyYy9iYWNrZW5kL25vZGVzL2V4dGVuc2libGUuYwppbmRleCAwZDQzZDY2 YzFjZC4uYmYwYjk0ZDNjNzIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL2V4dGVuc2li bGUuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9leHRlbnNpYmxlLmMKQEAgLTIyLDYgKzIyLDcg QEAKIAogI2luY2x1ZGUgIm5vZGVzL2V4dGVuc2libGUuaCIKICNpbmNsdWRlICJ1dGlscy9oc2Vh cmNoLmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKIAogc3RhdGljIEhUQUIgKmV4dGVu c2libGVfbm9kZV9tZXRob2RzID0gTlVMTDsKIHN0YXRpYyBIVEFCICpjdXN0b21fc2Nhbl9tZXRo b2RzID0gTlVMTDsKQEAgLTQ1LDEzICs0Niw4IEBAIFJlZ2lzdGVyRXh0ZW5zaWJsZU5vZGVFbnRy eShIVEFCICoqcF9odGFibGUsIGNvbnN0IGNoYXIgKmh0YWJsZV9sYWJlbCwKIAogCWlmICgqcF9o dGFibGUgPT0gTlVMTCkKIAl7Ci0JCUhBU0hDVEwJCWN0bDsKLQotCQljdGwua2V5c2l6ZSA9IEVY VE5PREVOQU1FX01BWF9MRU47Ci0JCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoRXh0ZW5zaWJsZU5v ZGVFbnRyeSk7Ci0KLQkJKnBfaHRhYmxlID0gaGFzaF9jcmVhdGUoaHRhYmxlX2xhYmVsLCAxMDAs ICZjdGwsCi0JCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfU1RSSU5HUyk7CisJCSpwX2h0YWJsZSA9 IGhhc2hfbWFrZV9jeHQoRXh0ZW5zaWJsZU5vZGVFbnRyeSwgZXh0bm9kZW5hbWUsCisJCQkJCQkJ CSAgaHRhYmxlX2xhYmVsLCAxMDAsIFRvcE1lbW9yeUNvbnRleHQpOwogCX0KIAogCWlmIChzdHJs ZW4oZXh0bm9kZW5hbWUpID49IEVYVE5PREVOQU1FX01BWF9MRU4pCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv dXRpbC9wbGFuY2F0LmMKaW5kZXggYTkwZTFjOWVlNmIuLmZmYTg5Y2IzMzY0IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMKKysrIGIvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jCkBAIC03MTMsMTkgKzcxMywxMCBAQCBnZXRfcmVsYXRp b25fbm90bnVsbGF0dHMoUGxhbm5lckluZm8gKnJvb3QsIFJlbGF0aW9uIHJlbGF0aW9uKQogCS8q IGNyZWF0ZSB0aGUgaGFzaCB0YWJsZSBpZiBpdCBoYXNuJ3QgYmVlbiBjcmVhdGVkIHlldCAqLwog CWlmIChyb290LT5nbG9iLT5yZWxfbm90bnVsbGF0dHNfaGFzaCA9PSBOVUxMKQogCXsKLQkJSFRB QgkgICAqaGFzaHRhYjsKLQkJSEFTSENUTAkJaGFzaF9jdGw7Ci0KLQkJaGFzaF9jdGwua2V5c2l6 ZSA9IHNpemVvZihPaWQpOwotCQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoTm90bnVsbEhh c2hFbnRyeSk7Ci0JCWhhc2hfY3RsLmhjeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKLQotCQlo YXNodGFiID0gaGFzaF9jcmVhdGUoIlJlbGF0aW9uIE5PVCBOVUxMIGF0dG51bXMiLAotCQkJCQkJ CSAgNjRMLAkvKiBhcmJpdHJhcnkgaW5pdGlhbCBzaXplICovCi0JCQkJCQkJICAmaGFzaF9jdGws Ci0JCQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKLQotCQly b290LT5nbG9iLT5yZWxfbm90bnVsbGF0dHNfaGFzaCA9IGhhc2h0YWI7CisJCXJvb3QtPmdsb2It PnJlbF9ub3RudWxsYXR0c19oYXNoID0KKwkJCWhhc2hfbWFrZShOb3RudWxsSGFzaEVudHJ5LCBy ZWxpZCwKKwkJCQkJICAiUmVsYXRpb24gTk9UIE5VTEwgYXR0bnVtcyIsCisJCQkJCSAgNjRMKTsJ CS8qIGFyYml0cmFyeSBpbml0aWFsIHNpemUgKi8KIAl9CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcHJlZHRlc3QuYyBiL3NyYy9iYWNrZW5kL29wdGltaXpl ci91dGlsL3ByZWR0ZXN0LmMKaW5kZXggMjY4NThkMWQyYjAuLjNiZjVlN2FjOGJiIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wcmVkdGVzdC5jCisrKyBiL3NyYy9iYWNr ZW5kL29wdGltaXplci91dGlsL3ByZWR0ZXN0LmMKQEAgLTIxMTcsMTIgKzIxMTcsOSBAQCBsb29r dXBfcHJvb2ZfY2FjaGUoT2lkIHByZWRfb3AsIE9pZCBjbGF1c2Vfb3AsIGJvb2wgcmVmdXRlX2l0 KQogCWlmIChPcHJQcm9vZkNhY2hlSGFzaCA9PSBOVUxMKQogCXsKIAkJLyogRmlyc3QgdGltZSB0 aHJvdWdoOiBpbml0aWFsaXplIHRoZSBoYXNoIHRhYmxlICovCi0JCUhBU0hDVEwJCWN0bDsKLQot CQljdGwua2V5c2l6ZSA9IHNpemVvZihPcHJQcm9vZkNhY2hlS2V5KTsKLQkJY3RsLmVudHJ5c2l6 ZSA9IHNpemVvZihPcHJQcm9vZkNhY2hlRW50cnkpOwotCQlPcHJQcm9vZkNhY2hlSGFzaCA9IGhh c2hfY3JlYXRlKCJCdHJlZSBwcm9vZiBsb29rdXAgY2FjaGUiLCAyNTYsCi0JCQkJCQkJCQkJJmN0 bCwgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJCU9wclByb29mQ2FjaGVIYXNoID0gaGFzaF9t YWtlX2N4dChPcHJQcm9vZkNhY2hlRW50cnksIGtleSwKKwkJCQkJCQkJCQkgICJCdHJlZSBwcm9v ZiBsb29rdXAgY2FjaGUiLCAyNTYsCisJCQkJCQkJCQkJICBUb3BNZW1vcnlDb250ZXh0KTsKIAog CQkvKiBBcnJhbmdlIHRvIGZsdXNoIGNhY2hlIG9uIHBnX2Ftb3AgY2hhbmdlcyAqLwogCQlDYWNo ZVJlZ2lzdGVyU3lzY2FjaGVDYWxsYmFjayhBTU9QT1BJRCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL29wdGltaXplci91dGlsL3JlbG5vZGUuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGls L3JlbG5vZGUuYwppbmRleCBmNTc2MzFlODc2Zi4uYTkwN2YxZDAyOGUgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL29wdGltaXplci91dGlsL3JlbG5vZGUuYworKysgYi9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvdXRpbC9yZWxub2RlLmMKQEAgLTYwMSwxOSArNjAxLDEyIEBAIHN0YXRpYyB2b2lkCiBi dWlsZF9qb2luX3JlbF9oYXNoKFBsYW5uZXJJbmZvICpyb290KQogewogCUhUQUIJICAgKmhhc2h0 YWI7Ci0JSEFTSENUTAkJaGFzaF9jdGw7CiAJTGlzdENlbGwgICAqbDsKIAogCS8qIENyZWF0ZSB0 aGUgaGFzaCB0YWJsZSAqLwotCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoUmVsaWRzKTsKLQlo YXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoSm9pbkhhc2hFbnRyeSk7Ci0JaGFzaF9jdGwuaGFz aCA9IGJpdG1hcF9oYXNoOwotCWhhc2hfY3RsLm1hdGNoID0gYml0bWFwX21hdGNoOwotCWhhc2hf Y3RsLmhjeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKLQloYXNodGFiID0gaGFzaF9jcmVhdGUo IkpvaW5SZWxIYXNoVGFibGUiLAotCQkJCQkJICAyNTZMLAotCQkJCQkJICAmaGFzaF9jdGwsCi0J CQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfRlVOQ1RJT04gfCBIQVNIX0NPTVBBUkUgfCBIQVNIX0NP TlRFWFQpOworCWhhc2h0YWIgPSBoYXNoX21ha2VfZm4oSm9pbkhhc2hFbnRyeSwgam9pbl9yZWxp ZHMsCisJCQkJCQkgICAiSm9pblJlbEhhc2hUYWJsZSIsIDI1NiwKKwkJCQkJCSAgIGJpdG1hcF9o YXNoLCBiaXRtYXBfbWF0Y2gpOwogCiAJLyogSW5zZXJ0IGFsbCB0aGUgYWxyZWFkeS1leGlzdGlu ZyBqb2lucmVscyAqLwogCWZvcmVhY2gobCwgcm9vdC0+am9pbl9yZWxfbGlzdCkKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9vcGVyLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2Vfb3Blci5jCmluZGV4IDc2OGU0Y2ZmOWM1Li5kMzZlN2FkMzAzMCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX29wZXIuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2Vfb3Blci5jCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMu aCIKICNpbmNsdWRlICJ1dGlscy9pbnZhbC5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5o IgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUu aCIKICNpbmNsdWRlICJ1dGlscy90eXBjYWNoZS5oIgogCkBAIC0xMDI4LDEyICsxMDI5LDkgQEAg ZmluZF9vcGVyX2NhY2hlX2VudHJ5KE9wckNhY2hlS2V5ICprZXkpCiAJaWYgKE9wckNhY2hlSGFz aCA9PSBOVUxMKQogCXsKIAkJLyogRmlyc3QgdGltZSB0aHJvdWdoOiBpbml0aWFsaXplIHRoZSBo YXNoIHRhYmxlICovCi0JCUhBU0hDVEwJCWN0bDsKLQotCQljdGwua2V5c2l6ZSA9IHNpemVvZihP cHJDYWNoZUtleSk7Ci0JCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoT3ByQ2FjaGVFbnRyeSk7Ci0J CU9wckNhY2hlSGFzaCA9IGhhc2hfY3JlYXRlKCJPcGVyYXRvciBsb29rdXAgY2FjaGUiLCAyNTYs Ci0JCQkJCQkJCSAgICZjdGwsIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCQlPcHJDYWNoZUhh c2ggPSBoYXNoX21ha2VfY3h0KE9wckNhY2hlRW50cnksIGtleSwKKwkJCQkJCQkJCSAiT3BlcmF0 b3IgbG9va3VwIGNhY2hlIiwgMjU2LAorCQkJCQkJCQkJIFRvcE1lbW9yeUNvbnRleHQpOwogCiAJ CS8qIEFycmFuZ2UgdG8gZmx1c2ggY2FjaGUgb24gcGdfb3BlcmF0b3IgYW5kIHBnX2Nhc3QgY2hh bmdlcyAqLwogCQlDYWNoZVJlZ2lzdGVyU3lzY2FjaGVDYWxsYmFjayhPUEVSTkFNRU5TUCwKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0ZGVzYy5jIGIvc3JjL2JhY2tl bmQvcGFydGl0aW9uaW5nL3BhcnRkZXNjLmMKaW5kZXggYzNkMjc1Zjg3MjYuLmRiMjZlNGE4MmI2 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGRlc2MuYworKysgYi9z cmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGRlc2MuYwpAQCAtNDI0LDE3ICs0MjQsMTIgQEAg Q3JlYXRlUGFydGl0aW9uRGlyZWN0b3J5KE1lbW9yeUNvbnRleHQgbWN4dCwgYm9vbCBvbWl0X2Rl dGFjaGVkKQogewogCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhtY3h0KTsKIAlQYXJ0aXRpb25EaXJlY3RvcnkgcGRpcjsKLQlIQVNIQ1RMCQljdGw7CiAK IAlwZGlyID0gcGFsbG9jX29iamVjdChQYXJ0aXRpb25EaXJlY3RvcnlEYXRhKTsKIAlwZGlyLT5w ZGlyX21jeHQgPSBtY3h0OwogCi0JY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQljdGwuZW50 cnlzaXplID0gc2l6ZW9mKFBhcnRpdGlvbkRpcmVjdG9yeUVudHJ5KTsKLQljdGwuaGN4dCA9IG1j eHQ7Ci0KLQlwZGlyLT5wZGlyX2hhc2ggPSBoYXNoX2NyZWF0ZSgicGFydGl0aW9uIGRpcmVjdG9y eSIsIDI1NiwgJmN0bCwKLQkJCQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9D T05URVhUKTsKKwlwZGlyLT5wZGlyX2hhc2ggPSBoYXNoX21ha2VfY3h0KFBhcnRpdGlvbkRpcmVj dG9yeUVudHJ5LCByZWxvaWQsCisJCQkJCQkJCQkicGFydGl0aW9uIGRpcmVjdG9yeSIsIDI1Niwg bWN4dCk7CiAJcGRpci0+b21pdF9kZXRhY2hlZCA9IG9taXRfZGV0YWNoZWQ7CiAKIAlNZW1vcnlD b250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0 bWFzdGVyL2F1dG92YWN1dW0uYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5j CmluZGV4IDIyMzc5ZGUxZTMxLi5kNGEyOWJiZjg3YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRv dmFjdXVtLmMKQEAgLTkwNCw3ICs5MDQsNiBAQCByZWJ1aWxkX2RhdGFiYXNlX2xpc3QoT2lkIG5l d2RiKQogCU1lbW9yeUNvbnRleHQgbmV3Y3h0OwogCU1lbW9yeUNvbnRleHQgb2xkY3h0OwogCU1l bW9yeUNvbnRleHQgdG1wY3h0OwotCUhBU0hDVEwJCWhjdGw7CiAJaW50CQkJc2NvcmU7CiAJaW50 CQkJbmVsZW1zOwogCUhUQUIJICAgKmRiaGFzaDsKQEAgLTkzNCwxMiArOTMzLDEwIEBAIHJlYnVp bGRfZGF0YWJhc2VfbGlzdChPaWQgbmV3ZGIpCiAJICogc2NvcmUsIGFuZCBmaW5hbGx5IHB1dCB0 aGUgYXJyYXkgZWxlbWVudHMgaW50byB0aGUgbmV3IGRvdWJseSBsaW5rZWQKIAkgKiBsaXN0Lgog CSAqLwotCWhjdGwua2V5c2l6ZSA9IHNpemVvZihPaWQpOwotCWhjdGwuZW50cnlzaXplID0gc2l6 ZW9mKGF2bF9kYmFzZSk7Ci0JaGN0bC5oY3h0ID0gdG1wY3h0OwotCWRiaGFzaCA9IGhhc2hfY3Jl YXRlKCJhdXRvdmFjdXVtIGRiIGhhc2giLCAyMCwgJmhjdGwsCS8qIG1hZ2ljIG51bWJlciBoZXJl Ci0JCQkJCQkJCQkJCQkJCQkgKiBGSVhNRSAqLwotCQkJCQkJIEhBU0hfRUxFTSB8IEhBU0hfQkxP QlMgfCBIQVNIX0NPTlRFWFQpOworCWRiaGFzaCA9IGhhc2hfbWFrZV9jeHQoYXZsX2RiYXNlLCBh ZGxfZGF0aWQsCisJCQkJCQkgICAiYXV0b3ZhY3V1bSBkYiBoYXNoIiwKKwkJCQkJCSAgIDIwLAkv KiBtYWdpYyBudW1iZXIgaGVyZSBGSVhNRSAqLworCQkJCQkJICAgdG1wY3h0KTsKIAogCS8qIHN0 YXJ0IGJ5IGluc2VydGluZyB0aGUgbmV3IGRhdGFiYXNlICovCiAJc2NvcmUgPSAwOwpAQCAtMTg4 Miw3ICsxODc5LDYgQEAgZG9fYXV0b3ZhY3V1bSh2b2lkKQogCUZvcm1fcGdfZGF0YWJhc2UgZGJG b3JtOwogCUxpc3QJICAgKnRhYmxlX29pZHMgPSBOSUw7CiAJTGlzdAkgICAqb3JwaGFuX29pZHMg PSBOSUw7Ci0JSEFTSENUTAkJY3RsOwogCUhUQUIJICAgKnRhYmxlX3RvYXN0X21hcDsKIAlMaXN0 Q2VsbCAgICp2b2xhdGlsZSBjZWxsOwogCUJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJzdHJhdGVneTsK QEAgLTE5NTUsMTMgKzE5NTEsOSBAQCBkb19hdXRvdmFjdXVtKHZvaWQpCiAJcGdfY2xhc3NfZGVz YyA9IENyZWF0ZVR1cGxlRGVzY0NvcHkoUmVsYXRpb25HZXREZXNjcihjbGFzc1JlbCkpOwogCiAJ LyogY3JlYXRlIGhhc2ggdGFibGUgZm9yIHRvYXN0IDwtPiBtYWluIHJlbGlkIG1hcHBpbmcgKi8K LQljdGwua2V5c2l6ZSA9IHNpemVvZihPaWQpOwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoYXZf cmVsYXRpb24pOwotCi0JdGFibGVfdG9hc3RfbWFwID0gaGFzaF9jcmVhdGUoIlRPQVNUIHRvIG1h aW4gcmVsaWQgbWFwIiwKLQkJCQkJCQkJICAxMDAsCi0JCQkJCQkJCSAgJmN0bCwKLQkJCQkJCQkJ ICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwl0YWJsZV90b2FzdF9tYXAgPSBoYXNoX21ha2Vf Y3h0KGF2X3JlbGF0aW9uLCBhcl90b2FzdHJlbGlkLAorCQkJCQkJCQkJIlRPQVNUIHRvIG1haW4g cmVsaWQgbWFwIiwgMTAwLAorCQkJCQkJCQkJVG9wTWVtb3J5Q29udGV4dCk7CiAKIAkvKgogCSAq IFNjYW4gcGdfY2xhc3MgdG8gZGV0ZXJtaW5lIHdoaWNoIHRhYmxlcyB0byB2YWN1dW0uCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2NoZWNrcG9pbnRlci5jIGIvc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYwppbmRleCA2NDgyYzIxYjhmOS4uMjQyNTllZDVl NDIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2twb2ludGVyLmMKKysr IGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYwpAQCAtMTMwOSw3ICsxMzA5 LDYgQEAgQ29tcGFjdENoZWNrcG9pbnRlclJlcXVlc3RRdWV1ZSh2b2lkKQogCWludAkJCW51bV9y ZXF1ZXN0czsKIAlpbnQJCQlyZWFkX2lkeCwKIAkJCQl3cml0ZV9pZHg7Ci0JSEFTSENUTAkJY3Rs OwogCUhUQUIJICAgKmh0YWI7CiAJYm9vbAkgICAqc2tpcF9zbG90OwogCkBAIC0xMzI5LDE0ICsx MzI4LDkgQEAgQ29tcGFjdENoZWNrcG9pbnRlclJlcXVlc3RRdWV1ZSh2b2lkKQogCWhlYWQgPSBD aGVja3BvaW50ZXJTaG1lbS0+aGVhZDsKIAogCS8qIEluaXRpYWxpemUgdGVtcG9yYXJ5IGhhc2gg dGFibGUgKi8KLQljdGwua2V5c2l6ZSA9IHNpemVvZihDaGVja3BvaW50ZXJSZXF1ZXN0KTsKLQlj dGwuZW50cnlzaXplID0gc2l6ZW9mKHN0cnVjdCBDaGVja3BvaW50ZXJTbG90TWFwcGluZyk7Ci0J Y3RsLmhjeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKLQotCWh0YWIgPSBoYXNoX2NyZWF0ZSgi Q29tcGFjdENoZWNrcG9pbnRlclJlcXVlc3RRdWV1ZSIsCi0JCQkJCSAgIENoZWNrcG9pbnRlclNo bWVtLT5udW1fcmVxdWVzdHMsCi0JCQkJCSAgICZjdGwsCi0JCQkJCSAgIEhBU0hfRUxFTSB8IEhB U0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCWh0YWIgPSBoYXNoX21ha2Uoc3RydWN0IENoZWNr cG9pbnRlclNsb3RNYXBwaW5nLCByZXF1ZXN0LAorCQkJCQkgIkNvbXBhY3RDaGVja3BvaW50ZXJS ZXF1ZXN0UXVldWUiLAorCQkJCQkgQ2hlY2twb2ludGVyU2htZW0tPm51bV9yZXF1ZXN0cyk7CiAK IAkvKgogCSAqIFRoZSBiYXNpYyBpZGVhIGhlcmUgaXMgdGhhdCBhIHJlcXVlc3QgY2FuIGJlIHNr aXBwZWQgaWYgaXQncyBmb2xsb3dlZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwppbmRleCA1ZWJkMjM1M2ZlZC4uZTdlOTlh NmVjZWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlw YXJhbGxlbHdvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBw bHlwYXJhbGxlbHdvcmtlci5jCkBAIC00ODQsMTYgKzQ4NCw5IEBAIHBhX2FsbG9jYXRlX3dvcmtl cihUcmFuc2FjdGlvbklkIHhpZCkKIAkvKiBGaXJzdCB0aW1lIHRocm91Z2gsIGluaXRpYWxpemUg cGFyYWxsZWwgYXBwbHkgd29ya2VyIHN0YXRlIGhhc2h0YWJsZS4gKi8KIAlpZiAoIVBhcmFsbGVs QXBwbHlUeG5IYXNoKQogCXsKLQkJSEFTSENUTAkJY3RsOwotCi0JCU1lbVNldCgmY3RsLCAwLCBz aXplb2YoY3RsKSk7Ci0JCWN0bC5rZXlzaXplID0gc2l6ZW9mKFRyYW5zYWN0aW9uSWQpOwotCQlj dGwuZW50cnlzaXplID0gc2l6ZW9mKFBhcmFsbGVsQXBwbHlXb3JrZXJFbnRyeSk7Ci0JCWN0bC5o Y3h0ID0gQXBwbHlDb250ZXh0OwotCi0JCVBhcmFsbGVsQXBwbHlUeG5IYXNoID0gaGFzaF9jcmVh dGUoImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VycyBoYXNoIiwKLQkJ CQkJCQkJCQkgICAxNiwgJmN0bCwKLQkJCQkJCQkJCQkgICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JT IHwgSEFTSF9DT05URVhUKTsKKwkJUGFyYWxsZWxBcHBseVR4bkhhc2ggPSBoYXNoX21ha2VfY3h0 KFBhcmFsbGVsQXBwbHlXb3JrZXJFbnRyeSwgeGlkLAorCQkJCQkJCQkJCQkgImxvZ2ljYWwgcmVw bGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VycyBoYXNoIiwKKwkJCQkJCQkJCQkJIDE2LCBB cHBseUNvbnRleHQpOwogCX0KIAogCS8qIENyZWF0ZSBhbiBlbnRyeSBmb3IgdGhlIHJlcXVlc3Rl ZCB0cmFuc2FjdGlvbi4gKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvcmVsYXRpb24uYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRp b24uYwppbmRleCAwYjFkODBiNWIwZi4uZmNmMjk1ZjFkZjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMKQEAgLTEwNSw4ICsxMDUsNiBAQCBsb2dpY2FscmVw X3JlbG1hcF9pbnZhbGlkYXRlX2NiKERhdHVtIGFyZywgT2lkIHJlbG9pZCkKIHN0YXRpYyB2b2lk CiBsb2dpY2FscmVwX3JlbG1hcF9pbml0KHZvaWQpCiB7Ci0JSEFTSENUTAkJY3RsOwotCiAJaWYg KCFMb2dpY2FsUmVwUmVsTWFwQ29udGV4dCkKIAkJTG9naWNhbFJlcFJlbE1hcENvbnRleHQgPQog CQkJQWxsb2NTZXRDb250ZXh0Q3JlYXRlKENhY2hlTWVtb3J5Q29udGV4dCwKQEAgLTExNCwxMiAr MTEyLDkgQEAgbG9naWNhbHJlcF9yZWxtYXBfaW5pdCh2b2lkKQogCQkJCQkJCQkgIEFMTE9DU0VU X0RFRkFVTFRfU0laRVMpOwogCiAJLyogSW5pdGlhbGl6ZSB0aGUgcmVsYXRpb24gaGFzaCB0YWJs ZS4gKi8KLQljdGwua2V5c2l6ZSA9IHNpemVvZihMb2dpY2FsUmVwUmVsSWQpOwotCWN0bC5lbnRy eXNpemUgPSBzaXplb2YoTG9naWNhbFJlcFJlbE1hcEVudHJ5KTsKLQljdGwuaGN4dCA9IExvZ2lj YWxSZXBSZWxNYXBDb250ZXh0OwotCi0JTG9naWNhbFJlcFJlbE1hcCA9IGhhc2hfY3JlYXRlKCJs b2dpY2FscmVwIHJlbGF0aW9uIG1hcCBjYWNoZSIsIDEyOCwgJmN0bCwKLQkJCQkJCQkJICAgSEFT SF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJTG9naWNhbFJlcFJlbE1hcCA9 IGhhc2hfbWFrZV9jeHQoTG9naWNhbFJlcFJlbE1hcEVudHJ5LCByZW1vdGVyZWwucmVtb3RlaWQs CisJCQkJCQkJCQkgImxvZ2ljYWxyZXAgcmVsYXRpb24gbWFwIGNhY2hlIiwgMTI4LAorCQkJCQkJ CQkJIExvZ2ljYWxSZXBSZWxNYXBDb250ZXh0KTsKIAogCS8qIFdhdGNoIGZvciBpbnZhbGlkYXRp b24gZXZlbnRzLiAqLwogCUNhY2hlUmVnaXN0ZXJSZWxjYWNoZUNhbGxiYWNrKGxvZ2ljYWxyZXBf cmVsbWFwX2ludmFsaWRhdGVfY2IsCkBAIC02MTEsOCArNjA2LDYgQEAgbG9naWNhbHJlcF9wYXJ0 bWFwX3Jlc2V0X3JlbG1hcChMb2dpY2FsUmVwUmVsYXRpb24gKnJlbW90ZXJlbCkKIHN0YXRpYyB2 b2lkCiBsb2dpY2FscmVwX3BhcnRtYXBfaW5pdCh2b2lkKQogewotCUhBU0hDVEwJCWN0bDsKLQog CWlmICghTG9naWNhbFJlcFBhcnRNYXBDb250ZXh0KQogCQlMb2dpY2FsUmVwUGFydE1hcENvbnRl eHQgPQogCQkJQWxsb2NTZXRDb250ZXh0Q3JlYXRlKENhY2hlTWVtb3J5Q29udGV4dCwKQEAgLTYy MCwxMiArNjEzLDkgQEAgbG9naWNhbHJlcF9wYXJ0bWFwX2luaXQodm9pZCkKIAkJCQkJCQkJICBB TExPQ1NFVF9ERUZBVUxUX1NJWkVTKTsKIAogCS8qIEluaXRpYWxpemUgdGhlIHJlbGF0aW9uIGhh c2ggdGFibGUuICovCi0JY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsJLyogcGFydGl0aW9uIE9J RCAqLwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoTG9naWNhbFJlcFBhcnRNYXBFbnRyeSk7Ci0J Y3RsLmhjeHQgPSBMb2dpY2FsUmVwUGFydE1hcENvbnRleHQ7Ci0KLQlMb2dpY2FsUmVwUGFydE1h cCA9IGhhc2hfY3JlYXRlKCJsb2dpY2FscmVwIHBhcnRpdGlvbiBtYXAgY2FjaGUiLCA2NCwgJmN0 bCwKLQkJCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCUxv Z2ljYWxSZXBQYXJ0TWFwID0gaGFzaF9tYWtlX2N4dChMb2dpY2FsUmVwUGFydE1hcEVudHJ5LCBw YXJ0b2lkLAorCQkJCQkJCQkJICAibG9naWNhbHJlcCBwYXJ0aXRpb24gbWFwIGNhY2hlIiwgNjQs CisJCQkJCQkJCQkgIExvZ2ljYWxSZXBQYXJ0TWFwQ29udGV4dCk7CiAKIAkvKiBXYXRjaCBmb3Ig aW52YWxpZGF0aW9uIGV2ZW50cy4gKi8KIAlDYWNoZVJlZ2lzdGVyUmVsY2FjaGVDYWxsYmFjayhs b2dpY2FscmVwX3BhcnRtYXBfaW52YWxpZGF0ZV9jYiwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMKaW5kZXggYTAyOTNmNmVjN2MuLmZhOTNhMWJi ZGUxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJi dWZmZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZm ZXIuYwpAQCAtMzI0LDcgKzMyNCw2IEBAIFJlb3JkZXJCdWZmZXIgKgogUmVvcmRlckJ1ZmZlckFs bG9jYXRlKHZvaWQpCiB7CiAJUmVvcmRlckJ1ZmZlciAqYnVmZmVyOwotCUhBU0hDVEwJCWhhc2hf Y3RsOwogCU1lbW9yeUNvbnRleHQgbmV3X2N0eDsKIAogCUFzc2VydChNeVJlcGxpY2F0aW9uU2xv dCAhPSBOVUxMKTsKQEAgLTMzNyw4ICszMzYsNiBAQCBSZW9yZGVyQnVmZmVyQWxsb2NhdGUodm9p ZCkKIAlidWZmZXIgPQogCQkoUmVvcmRlckJ1ZmZlciAqKSBNZW1vcnlDb250ZXh0QWxsb2MobmV3 X2N0eCwgc2l6ZW9mKFJlb3JkZXJCdWZmZXIpKTsKIAotCW1lbXNldCgmaGFzaF9jdGwsIDAsIHNp emVvZihoYXNoX2N0bCkpOwotCiAJYnVmZmVyLT5jb250ZXh0ID0gbmV3X2N0eDsKIAogCWJ1ZmZl ci0+Y2hhbmdlX2NvbnRleHQgPSBTbGFiQ29udGV4dENyZWF0ZShuZXdfY3R4LApAQCAtMzY3LDEy ICszNjQsOCBAQCBSZW9yZGVyQnVmZmVyQWxsb2NhdGUodm9pZCkKIAkJCQkJCQkJCQkJCSAgU0xB Ql9ERUZBVUxUX0JMT0NLX1NJWkUsCiAJCQkJCQkJCQkJCQkgIFNMQUJfREVGQVVMVF9CTE9DS19T SVpFKTsKIAotCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoVHJhbnNhY3Rpb25JZCk7Ci0JaGFz aF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKFJlb3JkZXJCdWZmZXJUWE5CeUlkRW50KTsKLQloYXNo X2N0bC5oY3h0ID0gYnVmZmVyLT5jb250ZXh0OwotCi0JYnVmZmVyLT5ieV90eG4gPSBoYXNoX2Ny ZWF0ZSgiUmVvcmRlckJ1ZmZlckJ5WGlkIiwgMTAwMCwgJmhhc2hfY3RsLAotCQkJCQkJCQkgSEFT SF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJYnVmZmVyLT5ieV90eG4gPSBo YXNoX21ha2VfY3h0KFJlb3JkZXJCdWZmZXJUWE5CeUlkRW50LCB4aWQsCisJCQkJCQkJCSAgICJS ZW9yZGVyQnVmZmVyQnlYaWQiLCAxMDAwLCBidWZmZXItPmNvbnRleHQpOwogCiAJYnVmZmVyLT5i eV90eG5fbGFzdF94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAlidWZmZXItPmJ5X3R4bl9s YXN0X3R4biA9IE5VTEw7CkBAIC0xODM2LDIyICsxODI5LDE3IEBAIHN0YXRpYyB2b2lkCiBSZW9y ZGVyQnVmZmVyQnVpbGRUdXBsZUNpZEhhc2goUmVvcmRlckJ1ZmZlciAqcmIsIFJlb3JkZXJCdWZm ZXJUWE4gKnR4bikKIHsKIAlkbGlzdF9pdGVyCWl0ZXI7Ci0JSEFTSENUTAkJaGFzaF9jdGw7CiAK IAlpZiAoIXJidHhuX2hhc19jYXRhbG9nX2NoYW5nZXModHhuKSB8fCBkbGlzdF9pc19lbXB0eSgm dHhuLT50dXBsZWNpZHMpKQogCQlyZXR1cm47CiAKLQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9m KFJlb3JkZXJCdWZmZXJUdXBsZUNpZEtleSk7Ci0JaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9m KFJlb3JkZXJCdWZmZXJUdXBsZUNpZEVudCk7Ci0JaGFzaF9jdGwuaGN4dCA9IHJiLT5jb250ZXh0 OwotCiAJLyoKIAkgKiBjcmVhdGUgdGhlIGhhc2ggd2l0aCB0aGUgZXhhY3QgbnVtYmVyIG9mIHRv LWJlLXN0b3JlZCB0dXBsZWNpZHMgZnJvbQogCSAqIHRoZSBzdGFydAogCSAqLwogCXR4bi0+dHVw bGVjaWRfaGFzaCA9Ci0JCWhhc2hfY3JlYXRlKCJSZW9yZGVyQnVmZmVyVHVwbGVDaWQiLCB0eG4t Pm50dXBsZWNpZHMsICZoYXNoX2N0bCwKLQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhB U0hfQ09OVEVYVCk7CisJCWhhc2hfbWFrZV9jeHQoUmVvcmRlckJ1ZmZlclR1cGxlQ2lkRW50LCBr ZXksCisJCQkJCSAgIlJlb3JkZXJCdWZmZXJUdXBsZUNpZCIsIHR4bi0+bnR1cGxlY2lkcywgcmIt PmNvbnRleHQpOwogCiAJZGxpc3RfZm9yZWFjaChpdGVyLCAmdHhuLT50dXBsZWNpZHMpCiAJewpA QCAtNDk3NCwxNSArNDk2MiwxMCBAQCBTdGFydHVwUmVvcmRlckJ1ZmZlcih2b2lkKQogc3RhdGlj IHZvaWQKIFJlb3JkZXJCdWZmZXJUb2FzdEluaXRIYXNoKFJlb3JkZXJCdWZmZXIgKnJiLCBSZW9y ZGVyQnVmZmVyVFhOICp0eG4pCiB7Ci0JSEFTSENUTAkJaGFzaF9jdGw7Ci0KIAlBc3NlcnQodHhu LT50b2FzdF9oYXNoID09IE5VTEwpOwogCi0JaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihPaWQp OwotCWhhc2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihSZW9yZGVyQnVmZmVyVG9hc3RFbnQpOwot CWhhc2hfY3RsLmhjeHQgPSByYi0+Y29udGV4dDsKLQl0eG4tPnRvYXN0X2hhc2ggPSBoYXNoX2Ny ZWF0ZSgiUmVvcmRlckJ1ZmZlclRvYXN0SGFzaCIsIDUsICZoYXNoX2N0bCwKLQkJCQkJCQkJICBI QVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwl0eG4tPnRvYXN0X2hhc2gg PSBoYXNoX21ha2VfY3h0KFJlb3JkZXJCdWZmZXJUb2FzdEVudCwgY2h1bmtfaWQsCisJCQkJCQkJ CQkiUmVvcmRlckJ1ZmZlclRvYXN0SGFzaCIsIDUsIHJiLT5jb250ZXh0KTsKIH0KIAogLyoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCmluZGV4IDY3ZTU3NTIw Mzg2Li4zMTI3M2FkOWY1OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC90YWJsZXN5bmMuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Rh Ymxlc3luYy5jCkBAIC0xMTcsNiArMTE3LDcgQEAKICNpbmNsdWRlICJ1dGlscy9hcnJheS5oIgog I2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgi CisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9ybHMuaCIKICNp bmNsdWRlICJ1dGlscy9zbmFwbWdyLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKQEAg LTM5MCwxMiArMzkxLDkgQEAgUHJvY2Vzc1N5bmNpbmdUYWJsZXNGb3JBcHBseShYTG9nUmVjUHRy IGN1cnJlbnRfbHNuKQogCSAqLwogCWlmICh0YWJsZV9zdGF0ZXNfbm90X3JlYWR5ICE9IE5JTCAm JiAhbGFzdF9zdGFydF90aW1lcykKIAl7Ci0JCUhBU0hDVEwJCWN0bDsKLQotCQljdGwua2V5c2l6 ZSA9IHNpemVvZihPaWQpOwotCQljdGwuZW50cnlzaXplID0gc2l6ZW9mKHN0cnVjdCB0YWJsZXN5 bmNfc3RhcnRfdGltZV9tYXBwaW5nKTsKLQkJbGFzdF9zdGFydF90aW1lcyA9IGhhc2hfY3JlYXRl KCJMb2dpY2FsIHJlcGxpY2F0aW9uIHRhYmxlIHN5bmMgd29ya2VyIHN0YXJ0IHRpbWVzIiwKLQkJ CQkJCQkJCSAgIDI1NiwgJmN0bCwgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJCWxhc3Rfc3Rh cnRfdGltZXMgPSBoYXNoX21ha2VfY3h0KHN0cnVjdCB0YWJsZXN5bmNfc3RhcnRfdGltZV9tYXBw aW5nLCByZWxpZCwKKwkJCQkJCQkJCQkgIkxvZ2ljYWwgcmVwbGljYXRpb24gdGFibGUgc3luYyB3 b3JrZXIgc3RhcnQgdGltZXMiLAorCQkJCQkJCQkJCSAyNTYsIFRvcE1lbW9yeUNvbnRleHQpOwog CX0KIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9w Z291dHB1dC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwpp bmRleCA5ZWU4OTQ5ZTA0MC4uMGRjZmJmZGQ2MDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vcGdvdXRwdXQvcGdvdXRwdXQuYwpAQCAtMTk3Myw3ICsxOTczLDYgQEAgcGdvdXRwdXRfc3Ry ZWFtX3ByZXBhcmVfdHhuKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKIHN0YXRpYyB2b2lk CiBpbml0X3JlbF9zeW5jX2NhY2hlKE1lbW9yeUNvbnRleHQgY2FjaGVjdHgpCiB7Ci0JSEFTSENU TAkJY3RsOwogCXN0YXRpYyBib29sIHJlbGF0aW9uX2NhbGxiYWNrc19yZWdpc3RlcmVkID0gZmFs c2U7CiAKIAkvKiBOb3RoaW5nIHRvIGRvIGlmIGhhc2ggdGFibGUgYWxyZWFkeSBleGlzdHMgKi8K QEAgLTE5ODEsMTMgKzE5ODAsOSBAQCBpbml0X3JlbF9zeW5jX2NhY2hlKE1lbW9yeUNvbnRleHQg Y2FjaGVjdHgpCiAJCXJldHVybjsKIAogCS8qIE1ha2UgYSBuZXcgaGFzaCB0YWJsZSBmb3IgdGhl IGNhY2hlICovCi0JY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQljdGwuZW50cnlzaXplID0g c2l6ZW9mKFJlbGF0aW9uU3luY0VudHJ5KTsKLQljdGwuaGN4dCA9IGNhY2hlY3R4OwotCi0JUmVs YXRpb25TeW5jQ2FjaGUgPSBoYXNoX2NyZWF0ZSgibG9naWNhbCByZXBsaWNhdGlvbiBvdXRwdXQg cmVsYXRpb24gY2FjaGUiLAotCQkJCQkJCQkJMTI4LCAmY3RsLAotCQkJCQkJCQkJSEFTSF9FTEVN IHwgSEFTSF9DT05URVhUIHwgSEFTSF9CTE9CUyk7CisJUmVsYXRpb25TeW5jQ2FjaGUgPSBoYXNo X21ha2VfY3h0KFJlbGF0aW9uU3luY0VudHJ5LCByZWxpZCwKKwkJCQkJCQkJCSAgImxvZ2ljYWwg cmVwbGljYXRpb24gb3V0cHV0IHJlbGF0aW9uIGNhY2hlIiwKKwkJCQkJCQkJCSAgMTI4LCBjYWNo ZWN0eCk7CiAKIAlBc3NlcnQoUmVsYXRpb25TeW5jQ2FjaGUgIT0gTlVMTCk7CiAKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zl90YWJsZS5jIGIvc3JjL2JhY2tlbmQv c3RvcmFnZS9idWZmZXIvYnVmX3RhYmxlLmMKaW5kZXggMjNkODVmZDMyZTIuLjk1NjUzOTQ0YTlk IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZfdGFibGUuYworKysg Yi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZfdGFibGUuYwpAQCAtNTAsMTkgKzUwLDE2 IEBAIEJ1ZlRhYmxlU2htZW1TaXplKGludCBzaXplKQogdm9pZAogSW5pdEJ1ZlRhYmxlKGludCBz aXplKQogewotCUhBU0hDVEwJCWluZm87CisJSEFTSE9QVFMJb3B0cyA9IHswfTsKIAogCS8qIGFz c3VtZSBubyBsb2NraW5nIGlzIG5lZWRlZCB5ZXQgKi8KIAogCS8qIEJ1ZmZlclRhZyBtYXBzIHRv IEJ1ZmZlciAqLwotCWluZm8ua2V5c2l6ZSA9IHNpemVvZihCdWZmZXJUYWcpOwotCWluZm8uZW50 cnlzaXplID0gc2l6ZW9mKEJ1ZmZlckxvb2t1cEVudCk7Ci0JaW5mby5udW1fcGFydGl0aW9ucyA9 IE5VTV9CVUZGRVJfUEFSVElUSU9OUzsKLQotCVNoYXJlZEJ1Zkhhc2ggPSBTaG1lbUluaXRIYXNo KCJTaGFyZWQgQnVmZmVyIExvb2t1cCBUYWJsZSIsCi0JCQkJCQkJCSAgc2l6ZSwgc2l6ZSwKLQkJ CQkJCQkJICAmaW5mbywKLQkJCQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9Q QVJUSVRJT04gfCBIQVNIX0ZJWEVEX1NJWkUpOworCW9wdHMubnVtX3BhcnRpdGlvbnMgPSBOVU1f QlVGRkVSX1BBUlRJVElPTlM7CisJb3B0cy5maXhlZF9zaXplID0gdHJ1ZTsKKwlTaGFyZWRCdWZI YXNoID0gc2htZW1faGFzaF9tYWtlX2V4dChCdWZmZXJMb29rdXBFbnQsIGtleSwKKwkJCQkJCQkJ CQkiU2hhcmVkIEJ1ZmZlciBMb29rdXAgVGFibGUiLAorCQkJCQkJCQkJCXNpemUsIHNpemUsICZv cHRzKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1 Zm1nci5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMKaW5kZXggNmY5MzU2 NDhhZTkuLjJhOTdlY2RiYmE2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZl ci9idWZtZ3IuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYwpAQCAt NjMsNiArNjMsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2Uvc21nci5oIgogI2luY2x1ZGUgInN0b3Jh Z2Uvc3RhbmRieS5oIgogI2luY2x1ZGUgInV0aWxzL21lbWRlYnVnLmgiCisjaW5jbHVkZSAidXRp bHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9wc19zdGF0dXMuaCIKICNpbmNsdWRlICJ1 dGlscy9yZWwuaCIKICNpbmNsdWRlICJ1dGlscy9yZXNvd25lci5oIgpAQCAtNDExOSw4ICs0MTIw LDYgQEAgQXRFT1hhY3RfQnVmZmVycyhib29sIGlzQ29tbWl0KQogdm9pZAogSW5pdEJ1ZmZlck1h bmFnZXJBY2Nlc3Modm9pZCkKIHsKLQlIQVNIQ1RMCQloYXNoX2N0bDsKLQogCS8qCiAJICogQW4g YWR2aXNvcnkgbGltaXQgb24gdGhlIG51bWJlciBvZiBwaW5zIGVhY2ggYmFja2VuZCBzaG91bGQg aG9sZCwgYmFzZWQKIAkgKiBvbiBzaGFyZWRfYnVmZmVycyBhbmQgdGhlIG1heGltdW0gbnVtYmVy IG9mIGNvbm5lY3Rpb25zIHBvc3NpYmxlLgpAQCAtNDEzMywxMSArNDEzMiw5IEBAIEluaXRCdWZm ZXJNYW5hZ2VyQWNjZXNzKHZvaWQpCiAJbWVtc2V0KCZQcml2YXRlUmVmQ291bnRBcnJheSwgMCwg c2l6ZW9mKFByaXZhdGVSZWZDb3VudEFycmF5KSk7CiAJbWVtc2V0KCZQcml2YXRlUmVmQ291bnRB cnJheUtleXMsIDAsIHNpemVvZihQcml2YXRlUmVmQ291bnRBcnJheUtleXMpKTsKIAotCWhhc2hf Y3RsLmtleXNpemUgPSBzaXplb2YoQnVmZmVyKTsKLQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXpl b2YoUHJpdmF0ZVJlZkNvdW50RW50cnkpOwotCi0JUHJpdmF0ZVJlZkNvdW50SGFzaCA9IGhhc2hf Y3JlYXRlKCJQcml2YXRlUmVmQ291bnQiLCAxMDAsICZoYXNoX2N0bCwKLQkJCQkJCQkJCSAgSEFT SF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJUHJpdmF0ZVJlZkNvdW50SGFzaCA9IGhhc2hfbWFrZV9j eHQoUHJpdmF0ZVJlZkNvdW50RW50cnksIGJ1ZmZlciwKKwkJCQkJCQkJCQkiUHJpdmF0ZVJlZkNv dW50IiwgMTAwLAorCQkJCQkJCQkJCVRvcE1lbW9yeUNvbnRleHQpOwogCiAJLyoKIAkgKiBBdFBy b2NFeGl0X0J1ZmZlcnMgbmVlZHMgTFdMb2NrIGFjY2VzcywgYW5kIHRoZXJlYnkgaGFzIHRvIGJl IGNhbGxlZCBhdApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvbG9jYWxi dWYuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2xvY2FsYnVmLmMKaW5kZXggMDRhNTQw Mzc5YTIuLjVhNWY0NDJhNzgyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZl ci9sb2NhbGJ1Zi5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2xvY2FsYnVmLmMK QEAgLTcyOCw3ICs3MjgsNiBAQCBzdGF0aWMgdm9pZAogSW5pdExvY2FsQnVmZmVycyh2b2lkKQog ewogCWludAkJCW5idWZzID0gbnVtX3RlbXBfYnVmZmVyczsKLQlIQVNIQ1RMCQlpbmZvOwogCWlu dAkJCWk7CiAKIAkvKgpAQCAtNzc5LDEzICs3NzgsOSBAQCBJbml0TG9jYWxCdWZmZXJzKHZvaWQp CiAJfQogCiAJLyogQ3JlYXRlIHRoZSBsb29rdXAgaGFzaCB0YWJsZSAqLwotCWluZm8ua2V5c2l6 ZSA9IHNpemVvZihCdWZmZXJUYWcpOwotCWluZm8uZW50cnlzaXplID0gc2l6ZW9mKExvY2FsQnVm ZmVyTG9va3VwRW50KTsKLQotCUxvY2FsQnVmSGFzaCA9IGhhc2hfY3JlYXRlKCJMb2NhbCBCdWZm ZXIgTG9va3VwIFRhYmxlIiwKLQkJCQkJCQkgICBuYnVmcywKLQkJCQkJCQkgICAmaW5mbywKLQkJ CQkJCQkgICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwlMb2NhbEJ1Zkhhc2ggPSBoYXNoX21h a2VfY3h0KExvY2FsQnVmZmVyTG9va3VwRW50LCBrZXksCisJCQkJCQkJCSAiTG9jYWwgQnVmZmVy IExvb2t1cCBUYWJsZSIsIG5idWZzLAorCQkJCQkJCQkgVG9wTWVtb3J5Q29udGV4dCk7CiAKIAlp ZiAoIUxvY2FsQnVmSGFzaCkKIAkJZWxvZyhFUlJPUiwgImNvdWxkIG5vdCBpbml0aWFsaXplIGxv Y2FsIGJ1ZmZlciBoYXNoIHRhYmxlIik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdl L2ZpbGUvcmVpbml0LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2ZpbGUvcmVpbml0LmMKaW5kZXgg MjVmYTIxNTEzMDkuLjI2ZTgxMGU2YjUwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdl L2ZpbGUvcmVpbml0LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9maWxlL3JlaW5pdC5jCkBA IC0xNzUsNyArMTc1LDYgQEAgUmVzZXRVbmxvZ2dlZFJlbGF0aW9uc0luRGJzcGFjZURpcihjb25z dCBjaGFyICpkYnNwYWNlZGlybmFtZSwgaW50IG9wKQogCWlmICgob3AgJiBVTkxPR0dFRF9SRUxB VElPTl9DTEVBTlVQKSAhPSAwKQogCXsKIAkJSFRBQgkgICAqaGFzaDsKLQkJSEFTSENUTAkJY3Rs OwogCiAJCS8qCiAJCSAqIEl0J3MgcG9zc2libGUgdGhhdCBzb21lb25lIGNvdWxkIGNyZWF0ZSBh IHRvbiBvZiB1bmxvZ2dlZCByZWxhdGlvbnMKQEAgLTE4NCwxMSArMTgzLDggQEAgUmVzZXRVbmxv Z2dlZFJlbGF0aW9uc0luRGJzcGFjZURpcihjb25zdCBjaGFyICpkYnNwYWNlZGlybmFtZSwgaW50 IG9wKQogCQkgKiBuZWVkIHRvIGJlIHJlc2V0LiAgT3RoZXJ3aXNlLCB0aGlzIGNsZWFudXAgb3Bl cmF0aW9uIHdvdWxkIGJlCiAJCSAqIE8obl4yKS4KIAkJICovCi0JCWN0bC5rZXlzaXplID0gc2l6 ZW9mKE9pZCk7Ci0JCWN0bC5lbnRyeXNpemUgPSBzaXplb2YodW5sb2dnZWRfcmVsYXRpb25fZW50 cnkpOwotCQljdGwuaGN4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OwotCQloYXNoID0gaGFzaF9j cmVhdGUoInVubG9nZ2VkIHJlbGF0aW9uIE9JRHMiLCAzMiwgJmN0bCwKLQkJCQkJCSAgIEhBU0hf RUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCQloYXNoID0gaGFzaF9tYWtlKHVu bG9nZ2VkX3JlbGF0aW9uX2VudHJ5LCByZWxudW1iZXIsCisJCQkJCQkgInVubG9nZ2VkIHJlbGF0 aW9uIE9JRHMiLCAzMik7CiAKIAkJLyogU2NhbiB0aGUgZGlyZWN0b3J5LiAqLwogCQlkYnNwYWNl X2RpciA9IEFsbG9jYXRlRGlyKGRic3BhY2VkaXJuYW1lKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5j CmluZGV4IGQyZjQ3MTBmMTQxLi5iNmE4ZDFlYzc3NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv c3RvcmFnZS9pcGMvc2htZW0uYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5j CkBAIC0yODQsOCArMjg0LDYgQEAgU2htZW1BZGRySXNWYWxpZChjb25zdCB2b2lkICphZGRyKQog dm9pZAogSW5pdFNobWVtSW5kZXgodm9pZCkKIHsKLQlIQVNIQ1RMCQlpbmZvOwotCiAJLyoKIAkg KiBDcmVhdGUgdGhlIHNoYXJlZCBtZW1vcnkgc2htZW0gaW5kZXguCiAJICoKQEAgLTI5NCwxMyAr MjkyLDggQEAgSW5pdFNobWVtSW5kZXgodm9pZCkKIAkgKiBpbml0aWFsaXppbmcgdGhlIFNobWVt SW5kZXggaXRzZWxmLiAgVGhlIHNwZWNpYWwgIlNobWVtSW5kZXgiIGhhc2gKIAkgKiB0YWJsZSBu YW1lIHdpbGwgdGVsbCBTaG1lbUluaXRTdHJ1Y3QgdG8gZmFrZSBpdC4KIAkgKi8KLQlpbmZvLmtl eXNpemUgPSBTSE1FTV9JTkRFWF9LRVlTSVpFOwotCWluZm8uZW50cnlzaXplID0gc2l6ZW9mKFNo bWVtSW5kZXhFbnQpOwotCi0JU2htZW1JbmRleCA9IFNobWVtSW5pdEhhc2goIlNobWVtSW5kZXgi LAotCQkJCQkJCSAgIFNITUVNX0lOREVYX1NJWkUsIFNITUVNX0lOREVYX1NJWkUsCi0JCQkJCQkJ ICAgJmluZm8sCi0JCQkJCQkJICAgSEFTSF9FTEVNIHwgSEFTSF9TVFJJTkdTKTsKKwlTaG1lbUlu ZGV4ID0gc2htZW1faGFzaF9tYWtlKFNobWVtSW5kZXhFbnQsIGtleSwgIlNobWVtSW5kZXgiLAor CQkJCQkJCQkgU0hNRU1fSU5ERVhfU0laRSwgU0hNRU1fSU5ERVhfU0laRSk7CiB9CiAKIC8qCkBA IC0zNjksNiArMzYyLDI4IEBAIFNobWVtSW5pdEhhc2goY29uc3QgY2hhciAqbmFtZSwJCS8qIHRh YmxlIHN0cmluZyBuYW1lIGZvciBzaG1lbSBpbmRleCAqLwogCXJldHVybiBoYXNoX2NyZWF0ZShu YW1lLCBpbml0X3NpemUsIGluZm9QLCBoYXNoX2ZsYWdzKTsKIH0KIAorLyoKKyAqIEltcGxlbWVu dGF0aW9uIGZ1bmN0aW9uIGZvciBzaG1lbV9oYXNoX21ha2UgbWFjcm9zLgorICoKKyAqIENyZWF0 ZXMgYSBzaGFyZWQgbWVtb3J5IGhhc2ggdGFibGUgd2l0aCBzaW1wbGlmaWVkIHBhcmFtZXRlcnMu CisgKiBQYXNzIE5VTEwgZm9yIG9wdHMgdG8gdXNlIGFsbCBkZWZhdWx0cy4KKyAqLworSFRBQiAq CitzaG1lbV9oYXNoX21ha2VfaW1wbChjb25zdCBjaGFyICpuYW1lLCBpbnQ2NCBpbml0X3NpemUs IGludDY0IG1heF9zaXplLAorCQkJCQkgU2l6ZSBrZXlzaXplLCBTaXplIGVudHJ5c2l6ZSwgYm9v bCBzdHJpbmdfa2V5LAorCQkJCQkgY29uc3QgSEFTSE9QVFMgKm9wdHMpCit7CisJSEFTSENUTAkJ Y3RsOworCWludAkJCWZsYWdzOworCisJLyogU2hhcmVkIG1lbW9yeSBoYXNoIHRhYmxlcyB1c2Ug U2htZW1BbGxvY05vRXJyb3IsIG5vdCBhIGN1c3RvbSBhbGxvY2F0b3IgKi8KKwlBc3NlcnQob3B0 cyA9PSBOVUxMIHx8IG9wdHMtPmFsbG9jID09IE5VTEwpOworCisJaGFzaF9vcHRzX2luaXQoJmN0 bCwgJmZsYWdzLCBrZXlzaXplLCBlbnRyeXNpemUsIHN0cmluZ19rZXksIG9wdHMpOworCisJcmV0 dXJuIFNobWVtSW5pdEhhc2gobmFtZSwgaW5pdF9zaXplLCBtYXhfc2l6ZSwgJmN0bCwgZmxhZ3Mp OworfQorCiAvKgogICogU2htZW1Jbml0U3RydWN0IC0tIENyZWF0ZS9hdHRhY2ggdG8gYSBzdHJ1 Y3R1cmUgaW4gc2hhcmVkIG1lbW9yeS4KICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9y YWdlL2lwYy9zdGFuZGJ5LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMKaW5k ZXggYWZmZmFiNzcxMDYuLjdhOTZlM2UyMDM5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9y YWdlL2lwYy9zdGFuZGJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5j CkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9zdGFuZGJ5LmgiCiAjaW5jbHVk ZSAidXRpbHMvaHNlYXJjaC5oIgogI2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgor I2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcHNfc3RhdHVzLmgi CiAjaW5jbHVkZSAidXRpbHMvdGltZW91dC5oIgogI2luY2x1ZGUgInV0aWxzL3RpbWVzdGFtcC5o IgpAQCAtOTUsNyArOTYsNiBAQCB2b2lkCiBJbml0UmVjb3ZlcnlUcmFuc2FjdGlvbkVudmlyb25t ZW50KHZvaWQpCiB7CiAJVmlydHVhbFRyYW5zYWN0aW9uSWQgdnhpZDsKLQlIQVNIQ1RMCQloYXNo X2N0bDsKIAogCUFzc2VydChSZWNvdmVyeUxvY2tIYXNoID09IE5VTEwpOwkvKiBkb24ndCBydW4g dGhpcyB0d2ljZSAqLwogCkBAIC0xMDMsMTggKzEwMywxMiBAQCBJbml0UmVjb3ZlcnlUcmFuc2Fj dGlvbkVudmlyb25tZW50KHZvaWQpCiAJICogSW5pdGlhbGl6ZSB0aGUgaGFzaCB0YWJsZXMgZm9y IHRyYWNraW5nIHRoZSBsb2NrcyBoZWxkIGJ5IGVhY2gKIAkgKiB0cmFuc2FjdGlvbi4KIAkgKi8K LQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKHhsX3N0YW5kYnlfbG9jayk7Ci0JaGFzaF9jdGwu ZW50cnlzaXplID0gc2l6ZW9mKFJlY292ZXJ5TG9ja0VudHJ5KTsKLQlSZWNvdmVyeUxvY2tIYXNo ID0gaGFzaF9jcmVhdGUoIlJlY292ZXJ5TG9ja0hhc2giLAotCQkJCQkJCQkgICA2NCwKLQkJCQkJ CQkJICAgJmhhc2hfY3RsLAotCQkJCQkJCQkgICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKLQlo YXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKFRyYW5zYWN0aW9uSWQpOwotCWhhc2hfY3RsLmVudHJ5 c2l6ZSA9IHNpemVvZihSZWNvdmVyeUxvY2tYaWRFbnRyeSk7Ci0JUmVjb3ZlcnlMb2NrWGlkSGFz aCA9IGhhc2hfY3JlYXRlKCJSZWNvdmVyeUxvY2tYaWRIYXNoIiwKLQkJCQkJCQkJCSAgNjQsCi0J CQkJCQkJCQkgICZoYXNoX2N0bCwKLQkJCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7 CisJUmVjb3ZlcnlMb2NrSGFzaCA9IGhhc2hfbWFrZV9jeHQoUmVjb3ZlcnlMb2NrRW50cnksIGtl eSwKKwkJCQkJCQkJCSAiUmVjb3ZlcnlMb2NrSGFzaCIsIDY0LAorCQkJCQkJCQkJIFRvcE1lbW9y eUNvbnRleHQpOworCVJlY292ZXJ5TG9ja1hpZEhhc2ggPSBoYXNoX21ha2VfY3h0KFJlY292ZXJ5 TG9ja1hpZEVudHJ5LCB4aWQsCisJCQkJCQkJCQkJIlJlY292ZXJ5TG9ja1hpZEhhc2giLCA2NCwK KwkJCQkJCQkJCQlUb3BNZW1vcnlDb250ZXh0KTsKIAogCS8qCiAJICogSW5pdGlhbGl6ZSBzaGFy ZWQgaW52YWxpZGF0aW9uIG1hbmFnZW1lbnQgZm9yIFN0YXJ0dXAgcHJvY2VzcywgYmVpbmcKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMgYi9zcmMvYmFja2VuZC9z dG9yYWdlL2xtZ3IvbG9jay5jCmluZGV4IDdmMGNkNzg0Zjc5Li4zZjIwYzg1ODgxYSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xvY2suYworKysgYi9zcmMvYmFja2VuZC9z dG9yYWdlL2xtZ3IvbG9jay5jCkBAIC00NDMsNyArNDQzLDcgQEAgc3RhdGljIHZvaWQgR2V0U2lu Z2xlUHJvY0Jsb2NrZXJTdGF0dXNEYXRhKFBHUFJPQyAqYmxvY2tlZF9wcm9jLAogdm9pZAogTG9j a01hbmFnZXJTaG1lbUluaXQodm9pZCkKIHsKLQlIQVNIQ1RMCQlpbmZvOworCUhBU0hPUFRTCW9w dHM7CiAJaW50NjQJCWluaXRfdGFibGVfc2l6ZSwKIAkJCQltYXhfdGFibGVfc2l6ZTsKIAlib29s CQlmb3VuZDsKQEAgLTQ1OSwxNSArNDU5LDExIEBAIExvY2tNYW5hZ2VyU2htZW1Jbml0KHZvaWQp CiAJICogQWxsb2NhdGUgaGFzaCB0YWJsZSBmb3IgTE9DSyBzdHJ1Y3RzLiAgVGhpcyBzdG9yZXMg cGVyLWxvY2tlZC1vYmplY3QKIAkgKiBpbmZvcm1hdGlvbi4KIAkgKi8KLQlpbmZvLmtleXNpemUg PSBzaXplb2YoTE9DS1RBRyk7Ci0JaW5mby5lbnRyeXNpemUgPSBzaXplb2YoTE9DSyk7Ci0JaW5m by5udW1fcGFydGl0aW9ucyA9IE5VTV9MT0NLX1BBUlRJVElPTlM7Ci0KLQlMb2NrTWV0aG9kTG9j a0hhc2ggPSBTaG1lbUluaXRIYXNoKCJMT0NLIGhhc2giLAotCQkJCQkJCQkJICAgaW5pdF90YWJs ZV9zaXplLAotCQkJCQkJCQkJICAgbWF4X3RhYmxlX3NpemUsCi0JCQkJCQkJCQkgICAmaW5mbywK LQkJCQkJCQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX1BBUlRJVElPTik7CisJ TWVtU2V0KCZvcHRzLCAwLCBzaXplb2Yob3B0cykpOworCW9wdHMubnVtX3BhcnRpdGlvbnMgPSBO VU1fTE9DS19QQVJUSVRJT05TOworCUxvY2tNZXRob2RMb2NrSGFzaCA9IHNobWVtX2hhc2hfbWFr ZV9leHQoTE9DSywgdGFnLCAiTE9DSyBoYXNoIiwKKwkJCQkJCQkJCQkJIGluaXRfdGFibGVfc2l6 ZSwgbWF4X3RhYmxlX3NpemUsCisJCQkJCQkJCQkJCSAmb3B0cyk7CiAKIAkvKiBBc3N1bWUgYW4g YXZlcmFnZSBvZiAyIGhvbGRlcnMgcGVyIGxvY2sgKi8KIAltYXhfdGFibGVfc2l6ZSAqPSAyOwpA QCAtNDc3LDE2ICs0NzMsMTIgQEAgTG9ja01hbmFnZXJTaG1lbUluaXQodm9pZCkKIAkgKiBBbGxv Y2F0ZSBoYXNoIHRhYmxlIGZvciBQUk9DTE9DSyBzdHJ1Y3RzLiAgVGhpcyBzdG9yZXMKIAkgKiBw ZXItbG9jay1wZXItaG9sZGVyIGluZm9ybWF0aW9uLgogCSAqLwotCWluZm8ua2V5c2l6ZSA9IHNp emVvZihQUk9DTE9DS1RBRyk7Ci0JaW5mby5lbnRyeXNpemUgPSBzaXplb2YoUFJPQ0xPQ0spOwot CWluZm8uaGFzaCA9IHByb2Nsb2NrX2hhc2g7Ci0JaW5mby5udW1fcGFydGl0aW9ucyA9IE5VTV9M T0NLX1BBUlRJVElPTlM7Ci0KLQlMb2NrTWV0aG9kUHJvY0xvY2tIYXNoID0gU2htZW1Jbml0SGFz aCgiUFJPQ0xPQ0sgaGFzaCIsCi0JCQkJCQkJCQkJICAgaW5pdF90YWJsZV9zaXplLAotCQkJCQkJ CQkJCSAgIG1heF90YWJsZV9zaXplLAotCQkJCQkJCQkJCSAgICZpbmZvLAotCQkJCQkJCQkJCSAg IEhBU0hfRUxFTSB8IEhBU0hfRlVOQ1RJT04gfCBIQVNIX1BBUlRJVElPTik7CisJTWVtU2V0KCZv cHRzLCAwLCBzaXplb2Yob3B0cykpOworCW9wdHMuaGFzaCA9IHByb2Nsb2NrX2hhc2g7CisJb3B0 cy5udW1fcGFydGl0aW9ucyA9IE5VTV9MT0NLX1BBUlRJVElPTlM7CisJTG9ja01ldGhvZFByb2NM b2NrSGFzaCA9IHNobWVtX2hhc2hfbWFrZV9leHQoUFJPQ0xPQ0ssIHRhZywgIlBST0NMT0NLIGhh c2giLAorCQkJCQkJCQkJCQkJIGluaXRfdGFibGVfc2l6ZSwgbWF4X3RhYmxlX3NpemUsCisJCQkJ CQkJCQkJCQkgJm9wdHMpOwogCiAJLyoKIAkgKiBBbGxvY2F0ZSBmYXN0LXBhdGggc3RydWN0dXJl cy4KQEAgLTUwOCwxNSArNTAwLDkgQEAgSW5pdExvY2tNYW5hZ2VyQWNjZXNzKHZvaWQpCiAJICog QWxsb2NhdGUgbm9uLXNoYXJlZCBoYXNoIHRhYmxlIGZvciBMT0NBTExPQ0sgc3RydWN0cy4gIFRo aXMgc3RvcmVzIGxvY2sKIAkgKiBjb3VudHMgYW5kIHJlc291cmNlIG93bmVyIGluZm9ybWF0aW9u LgogCSAqLwotCUhBU0hDVEwJCWluZm87Ci0KLQlpbmZvLmtleXNpemUgPSBzaXplb2YoTE9DQUxM T0NLVEFHKTsKLQlpbmZvLmVudHJ5c2l6ZSA9IHNpemVvZihMT0NBTExPQ0spOwotCi0JTG9ja01l dGhvZExvY2FsSGFzaCA9IGhhc2hfY3JlYXRlKCJMT0NBTExPQ0sgaGFzaCIsCi0JCQkJCQkJCQkg IDE2LAotCQkJCQkJCQkJICAmaW5mbywKLQkJCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9CTE9C Uyk7CisJTG9ja01ldGhvZExvY2FsSGFzaCA9IGhhc2hfbWFrZV9jeHQoTE9DQUxMT0NLLCB0YWcs CisJCQkJCQkJCQkJIkxPQ0FMTE9DSyBoYXNoIiwgMTYsCisJCQkJCQkJCQkJVG9wTWVtb3J5Q29u dGV4dCk7CiB9CiAKIApAQCAtMzM5NCwyMCArMzM4MCwxMyBAQCBDaGVja0ZvclNlc3Npb25BbmRY YWN0TG9ja3Modm9pZCkKIAkJYm9vbAkJeGFjdExvY2s7CS8qIGlzIGFueSBsb2NrbW9kZSBoZWxk IGF0IHhhY3QgbGV2ZWw/ICovCiAJfSBQZXJMb2NrVGFnRW50cnk7CiAKLQlIQVNIQ1RMCQloYXNo X2N0bDsKIAlIVEFCCSAgICpsb2NraHRhYjsKIAlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwogCUxP Q0FMTE9DSyAgKmxvY2FsbG9jazsKIAogCS8qIENyZWF0ZSBhIGxvY2FsIGhhc2ggdGFibGUga2V5 ZWQgYnkgTE9DS1RBRyBvbmx5ICovCi0JaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihMT0NLVEFH KTsKLQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoUGVyTG9ja1RhZ0VudHJ5KTsKLQloYXNo X2N0bC5oY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7Ci0KLQlsb2NraHRhYiA9IGhhc2hfY3Jl YXRlKCJDaGVja0ZvclNlc3Npb25BbmRYYWN0TG9ja3MgdGFibGUiLAotCQkJCQkJICAgMjU2LCAv KiBhcmJpdHJhcnkgaW5pdGlhbCBzaXplICovCi0JCQkJCQkgICAmaGFzaF9jdGwsCi0JCQkJCQkg ICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwlsb2NraHRhYiA9IGhh c2hfbWFrZShQZXJMb2NrVGFnRW50cnksIGxvY2ssCisJCQkJCQkgIkNoZWNrRm9yU2Vzc2lvbkFu ZFhhY3RMb2NrcyB0YWJsZSIsIDI1Nik7CiAKIAkvKiBTY2FuIGxvY2FsIGxvY2sgdGFibGUgdG8g ZmluZCBlbnRyaWVzIGZvciBlYWNoIExPQ0tUQUcgKi8KIAloYXNoX3NlcV9pbml0KCZzdGF0dXMs IExvY2tNZXRob2RMb2NhbEhhc2gpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9s bWdyL2x3bG9jay5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2x3bG9jay5jCmluZGV4IDUx N2M1NTM3NWI0Li44M2M1Yjc3Zjk1MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9s bWdyL2x3bG9jay5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sd2xvY2suYwpAQCAt Mjg1LDcgKzI4NSw2IEBAIHN0YXRpYyBsd2xvY2tfc3RhdHMgKiBnZXRfbHdsb2NrX3N0YXRzX2Vu dHJ5KExXTG9jayAqbG9jayk7CiBzdGF0aWMgdm9pZAogaW5pdF9sd2xvY2tfc3RhdHModm9pZCkK IHsKLQlIQVNIQ1RMCQljdGw7CiAJc3RhdGljIE1lbW9yeUNvbnRleHQgbHdsb2NrX3N0YXRzX2N4 dCA9IE5VTEw7CiAJc3RhdGljIGJvb2wgZXhpdF9yZWdpc3RlcmVkID0gZmFsc2U7CiAKQEAgLTMw NSwxMSArMzA0LDggQEAgaW5pdF9sd2xvY2tfc3RhdHModm9pZCkKIAkJCQkJCQkJCQkJIEFMTE9D U0VUX0RFRkFVTFRfU0laRVMpOwogCU1lbW9yeUNvbnRleHRBbGxvd0luQ3JpdGljYWxTZWN0aW9u KGx3bG9ja19zdGF0c19jeHQsIHRydWUpOwogCi0JY3RsLmtleXNpemUgPSBzaXplb2YobHdsb2Nr X3N0YXRzX2tleSk7Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihsd2xvY2tfc3RhdHMpOwotCWN0 bC5oY3h0ID0gbHdsb2NrX3N0YXRzX2N4dDsKLQlsd2xvY2tfc3RhdHNfaHRhYiA9IGhhc2hfY3Jl YXRlKCJsd2xvY2sgc3RhdHMiLCAxNjM4NCwgJmN0bCwKLQkJCQkJCQkJCUhBU0hfRUxFTSB8IEhB U0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCWx3bG9ja19zdGF0c19odGFiID0gaGFzaF9tYWtl X2N4dChsd2xvY2tfc3RhdHMsIGtleSwKKwkJCQkJCQkJCSAgImx3bG9jayBzdGF0cyIsIDE2Mzg0 LCBsd2xvY2tfc3RhdHNfY3h0KTsKIAlpZiAoIWV4aXRfcmVnaXN0ZXJlZCkKIAl7CiAJCW9uX3No bWVtX2V4aXQocHJpbnRfbHdsb2NrX3N0YXRzLCAwKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVk aWNhdGUuYwppbmRleCBmZTc1ZWFkMzUwMS4uOWYzNzc5YjlhZWEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdl L2xtZ3IvcHJlZGljYXRlLmMKQEAgLTIxMiw2ICsyMTIsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2Uv cHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCiAjaW5jbHVkZSAidXRpbHMv Z3VjX2hvb2tzLmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGls cy9yZWwuaCIKICNpbmNsdWRlICJ1dGlscy9zbmFwbWdyLmgiCiAKQEAgLTExNDQsNyArMTE0NSw3 IEBAIENoZWNrUG9pbnRQcmVkaWNhdGUodm9pZCkKIHZvaWQKIFByZWRpY2F0ZUxvY2tTaG1lbUlu aXQodm9pZCkKIHsKLQlIQVNIQ1RMCQlpbmZvOworCUhBU0hPUFRTCW9wdHM7CiAJaW50NjQJCW1h eF90YWJsZV9zaXplOwogCVNpemUJCXJlcXVlc3RTaXplOwogCWJvb2wJCWZvdW5kOwpAQCAtMTE2 MywxNiArMTE2NCwxMyBAQCBQcmVkaWNhdGVMb2NrU2htZW1Jbml0KHZvaWQpCiAJICogQWxsb2Nh dGUgaGFzaCB0YWJsZSBmb3IgUFJFRElDQVRFTE9DS1RBUkdFVCBzdHJ1Y3RzLiAgVGhpcyBzdG9y ZXMKIAkgKiBwZXItcHJlZGljYXRlLWxvY2stdGFyZ2V0IGluZm9ybWF0aW9uLgogCSAqLwotCWlu Zm8ua2V5c2l6ZSA9IHNpemVvZihQUkVESUNBVEVMT0NLVEFSR0VUVEFHKTsKLQlpbmZvLmVudHJ5 c2l6ZSA9IHNpemVvZihQUkVESUNBVEVMT0NLVEFSR0VUKTsKLQlpbmZvLm51bV9wYXJ0aXRpb25z ID0gTlVNX1BSRURJQ0FURUxPQ0tfUEFSVElUSU9OUzsKLQotCVByZWRpY2F0ZUxvY2tUYXJnZXRI YXNoID0gU2htZW1Jbml0SGFzaCgiUFJFRElDQVRFTE9DS1RBUkdFVCBoYXNoIiwKLQkJCQkJCQkJ CQkJbWF4X3RhYmxlX3NpemUsCi0JCQkJCQkJCQkJCW1heF90YWJsZV9zaXplLAotCQkJCQkJCQkJ CQkmaW5mbywKLQkJCQkJCQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8Ci0JCQkJCQkJCQkJ CUhBU0hfUEFSVElUSU9OIHwgSEFTSF9GSVhFRF9TSVpFKTsKKwlNZW1TZXQoJm9wdHMsIDAsIHNp emVvZihvcHRzKSk7CisJb3B0cy5udW1fcGFydGl0aW9ucyA9IE5VTV9QUkVESUNBVEVMT0NLX1BB UlRJVElPTlM7CisJb3B0cy5maXhlZF9zaXplID0gdHJ1ZTsKKwlQcmVkaWNhdGVMb2NrVGFyZ2V0 SGFzaCA9IHNobWVtX2hhc2hfbWFrZV9leHQoUFJFRElDQVRFTE9DS1RBUkdFVCwgdGFnLAorCQkJ CQkJCQkJCQkJICAiUFJFRElDQVRFTE9DS1RBUkdFVCBoYXNoIiwKKwkJCQkJCQkJCQkJCSAgbWF4 X3RhYmxlX3NpemUsIG1heF90YWJsZV9zaXplLAorCQkJCQkJCQkJCQkJICAmb3B0cyk7CiAKIAkv KgogCSAqIFJlc2VydmUgYSBkdW1teSBlbnRyeSBpbiB0aGUgaGFzaCB0YWJsZTsgd2UgdXNlIGl0 IHRvIG1ha2Ugc3VyZSB0aGVyZSdzCkBAIC0xMTk1LDIwICsxMTkzLDE3IEBAIFByZWRpY2F0ZUxv Y2tTaG1lbUluaXQodm9pZCkKIAkgKiBBbGxvY2F0ZSBoYXNoIHRhYmxlIGZvciBQUkVESUNBVEVM T0NLIHN0cnVjdHMuICBUaGlzIHN0b3JlcyBwZXIKIAkgKiB4YWN0LWxvY2stb2YtYS10YXJnZXQg aW5mb3JtYXRpb24uCiAJICovCi0JaW5mby5rZXlzaXplID0gc2l6ZW9mKFBSRURJQ0FURUxPQ0tU QUcpOwotCWluZm8uZW50cnlzaXplID0gc2l6ZW9mKFBSRURJQ0FURUxPQ0spOwotCWluZm8uaGFz aCA9IHByZWRpY2F0ZWxvY2tfaGFzaDsKLQlpbmZvLm51bV9wYXJ0aXRpb25zID0gTlVNX1BSRURJ Q0FURUxPQ0tfUEFSVElUSU9OUzsKLQogCS8qIEFzc3VtZSBhbiBhdmVyYWdlIG9mIDIgeGFjdHMg cGVyIHRhcmdldCAqLwogCW1heF90YWJsZV9zaXplICo9IDI7CiAKLQlQcmVkaWNhdGVMb2NrSGFz aCA9IFNobWVtSW5pdEhhc2goIlBSRURJQ0FURUxPQ0sgaGFzaCIsCi0JCQkJCQkJCQkgIG1heF90 YWJsZV9zaXplLAotCQkJCQkJCQkJICBtYXhfdGFibGVfc2l6ZSwKLQkJCQkJCQkJCSAgJmluZm8s Ci0JCQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfRlVOQ1RJT04gfAotCQkJCQkJCQkJICBIQVNI X1BBUlRJVElPTiB8IEhBU0hfRklYRURfU0laRSk7CisJTWVtU2V0KCZvcHRzLCAwLCBzaXplb2Yo b3B0cykpOworCW9wdHMuaGFzaCA9IHByZWRpY2F0ZWxvY2tfaGFzaDsKKwlvcHRzLm51bV9wYXJ0 aXRpb25zID0gTlVNX1BSRURJQ0FURUxPQ0tfUEFSVElUSU9OUzsKKwlvcHRzLmZpeGVkX3NpemUg PSB0cnVlOworCVByZWRpY2F0ZUxvY2tIYXNoID0gc2htZW1faGFzaF9tYWtlX2V4dChQUkVESUNB VEVMT0NLLCB0YWcsCisJCQkJCQkJCQkJCSJQUkVESUNBVEVMT0NLIGhhc2giLAorCQkJCQkJCQkJ CQltYXhfdGFibGVfc2l6ZSwgbWF4X3RhYmxlX3NpemUsCisJCQkJCQkJCQkJCSZvcHRzKTsKIAog CS8qCiAJICogQ29tcHV0ZSBzaXplIGZvciBzZXJpYWxpemFibGUgdHJhbnNhY3Rpb24gaGFzaHRh YmxlLiBOb3RlIHRoZXNlCkBAIC0xMjgyLDE1ICsxMjc3LDEyIEBAIFByZWRpY2F0ZUxvY2tTaG1l bUluaXQodm9pZCkKIAkgKiBBbGxvY2F0ZSBoYXNoIHRhYmxlIGZvciBTRVJJQUxJWkFCTEVYSUQg c3RydWN0cy4gIFRoaXMgc3RvcmVzIHBlci14aWQKIAkgKiBpbmZvcm1hdGlvbiBmb3Igc2VyaWFs aXphYmxlIHRyYW5zYWN0aW9ucyB3aGljaCBoYXZlIGFjY2Vzc2VkIGRhdGEuCiAJICovCi0JaW5m by5rZXlzaXplID0gc2l6ZW9mKFNFUklBTElaQUJMRVhJRFRBRyk7Ci0JaW5mby5lbnRyeXNpemUg PSBzaXplb2YoU0VSSUFMSVpBQkxFWElEKTsKLQotCVNlcmlhbGl6YWJsZVhpZEhhc2ggPSBTaG1l bUluaXRIYXNoKCJTRVJJQUxJWkFCTEVYSUQgaGFzaCIsCi0JCQkJCQkJCQkJbWF4X3RhYmxlX3Np emUsCi0JCQkJCQkJCQkJbWF4X3RhYmxlX3NpemUsCi0JCQkJCQkJCQkJJmluZm8sCi0JCQkJCQkJ CQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8Ci0JCQkJCQkJCQkJSEFTSF9GSVhFRF9TSVpFKTsK KwlNZW1TZXQoJm9wdHMsIDAsIHNpemVvZihvcHRzKSk7CisJb3B0cy5maXhlZF9zaXplID0gdHJ1 ZTsKKwlTZXJpYWxpemFibGVYaWRIYXNoID0gc2htZW1faGFzaF9tYWtlX2V4dChTRVJJQUxJWkFC TEVYSUQsIHRhZywKKwkJCQkJCQkJCQkJICAiU0VSSUFMSVpBQkxFWElEIGhhc2giLAorCQkJCQkJ CQkJCQkgIG1heF90YWJsZV9zaXplLCBtYXhfdGFibGVfc2l6ZSwKKwkJCQkJCQkJCQkJICAmb3B0 cyk7CiAKIAkvKgogCSAqIEFsbG9jYXRlIHNwYWNlIGZvciB0cmFja2luZyBydy1jb25mbGljdHMg aW4gbGlzdHMgYXR0YWNoZWQgdG8gdGhlCkBAIC0xOTM3LDE2ICsxOTI5LDEyIEBAIEdldFNlcmlh bGl6YWJsZVRyYW5zYWN0aW9uU25hcHNob3RJbnQoU25hcHNob3Qgc25hcHNob3QsCiBzdGF0aWMg dm9pZAogQ3JlYXRlTG9jYWxQcmVkaWNhdGVMb2NrSGFzaCh2b2lkKQogewotCUhBU0hDVEwJCWhh c2hfY3RsOwotCiAJLyogSW5pdGlhbGl6ZSB0aGUgYmFja2VuZC1sb2NhbCBoYXNoIHRhYmxlIG9m IHBhcmVudCBsb2NrcyAqLwogCUFzc2VydChMb2NhbFByZWRpY2F0ZUxvY2tIYXNoID09IE5VTEwp OwotCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoUFJFRElDQVRFTE9DS1RBUkdFVFRBRyk7Ci0J aGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKExPQ0FMUFJFRElDQVRFTE9DSyk7Ci0JTG9jYWxQ cmVkaWNhdGVMb2NrSGFzaCA9IGhhc2hfY3JlYXRlKCJMb2NhbCBwcmVkaWNhdGUgbG9jayIsCi0J CQkJCQkJCQkJIG1heF9wcmVkaWNhdGVfbG9ja3NfcGVyX3hhY3QsCi0JCQkJCQkJCQkJICZoYXNo X2N0bCwKLQkJCQkJCQkJCQkgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJTG9jYWxQcmVkaWNh dGVMb2NrSGFzaCA9IGhhc2hfbWFrZV9jeHQoTE9DQUxQUkVESUNBVEVMT0NLLCB0YWcsCisJCQkJ CQkJCQkJICAgIkxvY2FsIHByZWRpY2F0ZSBsb2NrIiwKKwkJCQkJCQkJCQkgICBtYXhfcHJlZGlj YXRlX2xvY2tzX3Blcl94YWN0LAorCQkJCQkJCQkJCSAgIFRvcE1lbW9yeUNvbnRleHQpOwogfQog CiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9zbWdyL3NtZ3IuYyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2Uvc21nci9zbWdyLmMKaW5kZXggMzc4YzJhMDNmMzkuLmU3NWJjOWEyYTA4 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL3NtZ3Ivc21nci5jCisrKyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2Uvc21nci9zbWdyLmMKQEAgLTczLDYgKzczLDcgQEAKICNpbmNsdWRlICJz dG9yYWdlL3NtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9oc2VhcmNoLmgiCiAjaW5jbHVkZSAidXRp bHMvaW52YWwuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogCiAKIC8qCkBAIC0yNTAs MTIgKzI1MSw5IEBAIHNtZ3JvcGVuKFJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yLCBQcm9jTnVtYmVy IGJhY2tlbmQpCiAJaWYgKFNNZ3JSZWxhdGlvbkhhc2ggPT0gTlVMTCkKIAl7CiAJCS8qIEZpcnN0 IHRpbWUgdGhyb3VnaDogaW5pdGlhbGl6ZSB0aGUgaGFzaCB0YWJsZSAqLwotCQlIQVNIQ1RMCQlj dGw7Ci0KLQkJY3RsLmtleXNpemUgPSBzaXplb2YoUmVsRmlsZUxvY2F0b3JCYWNrZW5kKTsKLQkJ Y3RsLmVudHJ5c2l6ZSA9IHNpemVvZihTTWdyUmVsYXRpb25EYXRhKTsKLQkJU01nclJlbGF0aW9u SGFzaCA9IGhhc2hfY3JlYXRlKCJzbWdyIHJlbGF0aW9uIHRhYmxlIiwgNDAwLAotCQkJCQkJCQkJ ICAgJmN0bCwgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJCVNNZ3JSZWxhdGlvbkhhc2ggPSBo YXNoX21ha2VfY3h0KFNNZ3JSZWxhdGlvbkRhdGEsIHNtZ3JfcmxvY2F0b3IsCisJCQkJCQkJCQkJ ICJzbWdyIHJlbGF0aW9uIHRhYmxlIiwgNDAwLAorCQkJCQkJCQkJCSBUb3BNZW1vcnlDb250ZXh0 KTsKIAkJZGxpc3RfaW5pdCgmdW5waW5uZWRfcmVsbnMpOwogCX0KIApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvc3RvcmFnZS9zeW5jL3N5bmMuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc3luYy9z eW5jLmMKaW5kZXggYjFhY2NjNjhiOTUuLjAxYWNiMzBmMWJiIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9zdG9yYWdlL3N5bmMvc3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc3luYy9z eW5jLmMKQEAgLTEzMCw4ICsxMzAsNiBAQCBJbml0U3luYyh2b2lkKQogCSAqLwogCWlmICghSXNV bmRlclBvc3RtYXN0ZXIgfHwgQW1DaGVja3BvaW50ZXJQcm9jZXNzKCkpCiAJewotCQlIQVNIQ1RM CQloYXNoX2N0bDsKLQogCQkvKgogCQkgKiBYWFg6IFRoZSBjaGVja3BvaW50ZXIgbmVlZHMgdG8g YWRkIGVudHJpZXMgdG8gdGhlIHBlbmRpbmcgb3BzIHRhYmxlCiAJCSAqIHdoZW4gYWJzb3JiaW5n IGZzeW5jIHJlcXVlc3RzLiAgVGhhdCBpcyBkb25lIHdpdGhpbiBhIGNyaXRpY2FsCkBAIC0xNDYs MTMgKzE0NCw4IEBAIEluaXRTeW5jKHZvaWQpCiAJCQkJCQkJCQkJCSAgQUxMT0NTRVRfREVGQVVM VF9TSVpFUyk7CiAJCU1lbW9yeUNvbnRleHRBbGxvd0luQ3JpdGljYWxTZWN0aW9uKHBlbmRpbmdP cHNDeHQsIHRydWUpOwogCi0JCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoRmlsZVRhZyk7Ci0J CWhhc2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihQZW5kaW5nRnN5bmNFbnRyeSk7Ci0JCWhhc2hf Y3RsLmhjeHQgPSBwZW5kaW5nT3BzQ3h0OwotCQlwZW5kaW5nT3BzID0gaGFzaF9jcmVhdGUoIlBl bmRpbmcgT3BzIFRhYmxlIiwKLQkJCQkJCQkJIDEwMEwsCi0JCQkJCQkJCSAmaGFzaF9jdGwsCi0J CQkJCQkJCSBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwkJcGVuZGlu Z09wcyA9IGhhc2hfbWFrZV9jeHQoUGVuZGluZ0ZzeW5jRW50cnksIHRhZywKKwkJCQkJCQkJICAg IlBlbmRpbmcgT3BzIFRhYmxlIiwgMTAwTCwgcGVuZGluZ09wc0N4dCk7CiAJCXBlbmRpbmdVbmxp bmtzID0gTklMOwogCX0KIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3RzZWFyY2gvdHNfdHlw YW5hbHl6ZS5jIGIvc3JjL2JhY2tlbmQvdHNlYXJjaC90c190eXBhbmFseXplLmMKaW5kZXggMGM1 MTNkNjk0ZTcuLmMyZjNiNjMyNjVkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90c2VhcmNoL3Rz X3R5cGFuYWx5emUuYworKysgYi9zcmMvYmFja2VuZC90c2VhcmNoL3RzX3R5cGFuYWx5emUuYwpA QCAtMTQ5LDcgKzE0OSw2IEBAIGNvbXB1dGVfdHN2ZWN0b3Jfc3RhdHMoVmFjQXR0clN0YXRzICpz dGF0cywKIAogCS8qIFRoaXMgaXMgRCBmcm9tIHRoZSBMQyBhbGdvcml0aG0uICovCiAJSFRBQgkg ICAqbGV4ZW1lc190YWI7Ci0JSEFTSENUTAkJaGFzaF9jdGw7CiAJSEFTSF9TRVFfU1RBVFVTIHNj YW5fc3RhdHVzOwogCiAJLyogVGhpcyBpcyB0aGUgY3VycmVudCBidWNrZXQgbnVtYmVyIGZyb20g dGhlIExDIGFsZ29yaXRobSAqLwpAQCAtMTgwLDE1ICsxNzksOSBAQCBjb21wdXRlX3RzdmVjdG9y X3N0YXRzKFZhY0F0dHJTdGF0cyAqc3RhdHMsCiAJICogd29ycnkgYWJvdXQgb3ZlcmZsb3dpbmcg dGhlIGluaXRpYWwgc2l6ZS4gQWxzbyB3ZSBkb24ndCBuZWVkIHRvIHBheSBhbnkKIAkgKiBhdHRl bnRpb24gdG8gbG9ja2luZyBhbmQgbWVtb3J5IG1hbmFnZW1lbnQuCiAJICovCi0JaGFzaF9jdGwu a2V5c2l6ZSA9IHNpemVvZihMZXhlbWVIYXNoS2V5KTsKLQloYXNoX2N0bC5lbnRyeXNpemUgPSBz aXplb2YoVHJhY2tJdGVtKTsKLQloYXNoX2N0bC5oYXNoID0gbGV4ZW1lX2hhc2g7Ci0JaGFzaF9j dGwubWF0Y2ggPSBsZXhlbWVfbWF0Y2g7Ci0JaGFzaF9jdGwuaGN4dCA9IEN1cnJlbnRNZW1vcnlD b250ZXh0OwotCWxleGVtZXNfdGFiID0gaGFzaF9jcmVhdGUoIkFuYWx5emVkIGxleGVtZXMgdGFi bGUiLAotCQkJCQkJCSAgbnVtX21jZWxlbSwKLQkJCQkJCQkgICZoYXNoX2N0bCwKLQkJCQkJCQkg IEhBU0hfRUxFTSB8IEhBU0hfRlVOQ1RJT04gfCBIQVNIX0NPTVBBUkUgfCBIQVNIX0NPTlRFWFQp OworCWxleGVtZXNfdGFiID0gaGFzaF9tYWtlX2ZuKFRyYWNrSXRlbSwga2V5LAorCQkJCQkJCSAg ICJBbmFseXplZCBsZXhlbWVzIHRhYmxlIiwgbnVtX21jZWxlbSwKKwkJCQkJCQkgICBsZXhlbWVf aGFzaCwgbGV4ZW1lX21hdGNoKTsKIAogCS8qIEluaXRpYWxpemUgY291bnRlcnMuICovCiAJYl9j dXJyZW50ID0gMTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRf ZXZlbnQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYwppbmRleCBl NGYyYzQ0MDI1Ny4uZTVhYzk1NmRhZjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fj dGl2aXR5L3dhaXRfZXZlbnQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0 X2V2ZW50LmMKQEAgLTExOSw3ICsxMTksNiBAQCB2b2lkCiBXYWl0RXZlbnRDdXN0b21TaG1lbUlu aXQodm9pZCkKIHsKIAlib29sCQlmb3VuZDsKLQlIQVNIQ1RMCQlpbmZvOwogCiAJV2FpdEV2ZW50 Q3VzdG9tQ291bnRlciA9IChXYWl0RXZlbnRDdXN0b21Db3VudGVyRGF0YSAqKQogCQlTaG1lbUlu aXRTdHJ1Y3QoIldhaXRFdmVudEN1c3RvbUNvdW50ZXJEYXRhIiwKQEAgLTEzMywyNCArMTMyLDE4 IEBAIFdhaXRFdmVudEN1c3RvbVNobWVtSW5pdCh2b2lkKQogCX0KIAogCS8qIGluaXRpYWxpemUg b3IgYXR0YWNoIHRoZSBoYXNoIHRhYmxlcyB0byBzdG9yZSBjdXN0b20gd2FpdCBldmVudHMgKi8K LQlpbmZvLmtleXNpemUgPSBzaXplb2YodWludDMyKTsKLQlpbmZvLmVudHJ5c2l6ZSA9IHNpemVv ZihXYWl0RXZlbnRDdXN0b21FbnRyeUJ5SW5mbyk7CiAJV2FpdEV2ZW50Q3VzdG9tSGFzaEJ5SW5m byA9Ci0JCVNobWVtSW5pdEhhc2goIldhaXRFdmVudEN1c3RvbSBoYXNoIGJ5IHdhaXQgZXZlbnQg aW5mb3JtYXRpb24iLAotCQkJCQkgIFdBSVRfRVZFTlRfQ1VTVE9NX0hBU0hfSU5JVF9TSVpFLAot CQkJCQkgIFdBSVRfRVZFTlRfQ1VTVE9NX0hBU0hfTUFYX1NJWkUsCi0JCQkJCSAgJmluZm8sCi0J CQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJCXNobWVtX2hhc2hfbWFrZShXYWl0RXZl bnRDdXN0b21FbnRyeUJ5SW5mbywgd2FpdF9ldmVudF9pbmZvLAorCQkJCQkJIldhaXRFdmVudEN1 c3RvbSBoYXNoIGJ5IHdhaXQgZXZlbnQgaW5mb3JtYXRpb24iLAorCQkJCQkJV0FJVF9FVkVOVF9D VVNUT01fSEFTSF9JTklUX1NJWkUsCisJCQkJCQlXQUlUX0VWRU5UX0NVU1RPTV9IQVNIX01BWF9T SVpFKTsKIAogCS8qIGtleSBpcyBhIE5VTEwtdGVybWluYXRlZCBzdHJpbmcgKi8KLQlpbmZvLmtl eXNpemUgPSBzaXplb2YoY2hhcltOQU1FREFUQUxFTl0pOwotCWluZm8uZW50cnlzaXplID0gc2l6 ZW9mKFdhaXRFdmVudEN1c3RvbUVudHJ5QnlOYW1lKTsKIAlXYWl0RXZlbnRDdXN0b21IYXNoQnlO YW1lID0KLQkJU2htZW1Jbml0SGFzaCgiV2FpdEV2ZW50Q3VzdG9tIGhhc2ggYnkgbmFtZSIsCi0J CQkJCSAgV0FJVF9FVkVOVF9DVVNUT01fSEFTSF9JTklUX1NJWkUsCi0JCQkJCSAgV0FJVF9FVkVO VF9DVVNUT01fSEFTSF9NQVhfU0laRSwKLQkJCQkJICAmaW5mbywKLQkJCQkJICBIQVNIX0VMRU0g fCBIQVNIX1NUUklOR1MpOworCQlzaG1lbV9oYXNoX21ha2UoV2FpdEV2ZW50Q3VzdG9tRW50cnlC eU5hbWUsIHdhaXRfZXZlbnRfbmFtZSwKKwkJCQkJCSJXYWl0RXZlbnRDdXN0b20gaGFzaCBieSBu YW1lIiwKKwkJCQkJCVdBSVRfRVZFTlRfQ1VTVE9NX0hBU0hfSU5JVF9TSVpFLAorCQkJCQkJV0FJ VF9FVkVOVF9DVVNUT01fSEFTSF9NQVhfU0laRSk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9hZHQvYXJyYXlfdHlwYW5hbHl6ZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L2FycmF5X3R5cGFuYWx5emUuYwppbmRleCA3YmIwMDBkZGJkMy4uYmRjN2UyMjM3ZjYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheV90eXBhbmFseXplLmMKKysrIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5X3R5cGFuYWx5emUuYwpAQCAtMjIzLDcgKzIyMyw2 IEBAIGNvbXB1dGVfYXJyYXlfc3RhdHMoVmFjQXR0clN0YXRzICpzdGF0cywgQW5hbHl6ZUF0dHJG ZXRjaEZ1bmMgZmV0Y2hmdW5jLAogCiAJLyogVGhpcyBpcyBEIGZyb20gdGhlIExDIGFsZ29yaXRo bS4gKi8KIAlIVEFCCSAgICplbGVtZW50c190YWI7Ci0JSEFTSENUTAkJZWxlbV9oYXNoX2N0bDsK IAlIQVNIX1NFUV9TVEFUVVMgc2Nhbl9zdGF0dXM7CiAKIAkvKiBUaGlzIGlzIHRoZSBjdXJyZW50 IGJ1Y2tldCBudW1iZXIgZnJvbSB0aGUgTEMgYWxnb3JpdGhtICovCkBAIC0yMzYsNyArMjM1LDYg QEAgY29tcHV0ZV9hcnJheV9zdGF0cyhWYWNBdHRyU3RhdHMgKnN0YXRzLCBBbmFseXplQXR0ckZl dGNoRnVuYyBmZXRjaGZ1bmMsCiAJVHJhY2tJdGVtICAqaXRlbTsKIAlpbnQJCQlzbG90X2lkeDsK IAlIVEFCCSAgICpjb3VudF90YWI7Ci0JSEFTSENUTAkJY291bnRfaGFzaF9jdGw7CiAJREVDb3Vu dEl0ZW0gKmNvdW50X2l0ZW07CiAKIAlleHRyYV9kYXRhID0gKEFycmF5QW5hbHl6ZUV4dHJhRGF0 YSAqKSBzdGF0cy0+ZXh0cmFfZGF0YTsKQEAgLTI3NiwyNCArMjc0LDEzIEBAIGNvbXB1dGVfYXJy YXlfc3RhdHMoVmFjQXR0clN0YXRzICpzdGF0cywgQW5hbHl6ZUF0dHJGZXRjaEZ1bmMgZmV0Y2hm dW5jLAogCSAqIHdvcnJ5IGFib3V0IG92ZXJmbG93aW5nIHRoZSBpbml0aWFsIHNpemUuIEFsc28g d2UgZG9uJ3QgbmVlZCB0byBwYXkgYW55CiAJICogYXR0ZW50aW9uIHRvIGxvY2tpbmcgYW5kIG1l bW9yeSBtYW5hZ2VtZW50LgogCSAqLwotCWVsZW1faGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihE YXR1bSk7Ci0JZWxlbV9oYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoVHJhY2tJdGVtKTsKLQll bGVtX2hhc2hfY3RsLmhhc2ggPSBlbGVtZW50X2hhc2g7Ci0JZWxlbV9oYXNoX2N0bC5tYXRjaCA9 IGVsZW1lbnRfbWF0Y2g7Ci0JZWxlbV9oYXNoX2N0bC5oY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRl eHQ7Ci0JZWxlbWVudHNfdGFiID0gaGFzaF9jcmVhdGUoIkFuYWx5emVkIGVsZW1lbnRzIHRhYmxl IiwKLQkJCQkJCQkgICBudW1fbWNlbGVtLAotCQkJCQkJCSAgICZlbGVtX2hhc2hfY3RsLAotCQkJ CQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfRlVOQ1RJT04gfCBIQVNIX0NPTVBBUkUgfCBIQVNIX0NP TlRFWFQpOworCWVsZW1lbnRzX3RhYiA9IGhhc2hfbWFrZV9mbihUcmFja0l0ZW0sIGtleSwKKwkJ CQkJCQkJIkFuYWx5emVkIGVsZW1lbnRzIHRhYmxlIiwgbnVtX21jZWxlbSwKKwkJCQkJCQkJZWxl bWVudF9oYXNoLCBlbGVtZW50X21hdGNoKTsKIAogCS8qIGhhc2h0YWJsZSBmb3IgYXJyYXkgZGlz dGluY3QgZWxlbWVudHMgY291bnRzICovCi0JY291bnRfaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVv ZihpbnQpOwotCWNvdW50X2hhc2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihERUNvdW50SXRlbSk7 Ci0JY291bnRfaGFzaF9jdGwuaGN4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OwotCWNvdW50X3Rh YiA9IGhhc2hfY3JlYXRlKCJBcnJheSBkaXN0aW5jdCBlbGVtZW50IGNvdW50IHRhYmxlIiwKLQkJ CQkJCQk2NCwKLQkJCQkJCQkmY291bnRfaGFzaF9jdGwsCi0JCQkJCQkJSEFTSF9FTEVNIHwgSEFT SF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJY291bnRfdGFiID0gaGFzaF9tYWtlKERFQ291bnRJ dGVtLCBjb3VudCwKKwkJCQkJCSAgIkFycmF5IGRpc3RpbmN0IGVsZW1lbnQgY291bnQgdGFibGUi LCA2NCk7CiAKIAkvKiBJbml0aWFsaXplIGNvdW50ZXJzLiAqLwogCWJfY3VycmVudCA9IDE7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbi5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L2pzb24uYwppbmRleCA3OGU4NDcyN2ZkYy4uMDhiMDJjYzBmNTEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L2pzb24uYwpAQCAtOTMzLDE5ICs5MzMsOCBAQCBqc29uX3VuaXF1ZV9oYXNoX21hdGNoKGNvbnN0 IHZvaWQgKmtleTEsIGNvbnN0IHZvaWQgKmtleTIsIFNpemUga2V5c2l6ZSkKIHN0YXRpYyB2b2lk CiBqc29uX3VuaXF1ZV9jaGVja19pbml0KEpzb25VbmlxdWVDaGVja1N0YXRlICpjeHQpCiB7Ci0J SEFTSENUTAkJY3RsOwotCi0JbWVtc2V0KCZjdGwsIDAsIHNpemVvZihjdGwpKTsKLQljdGwua2V5 c2l6ZSA9IHNpemVvZihKc29uVW5pcXVlSGFzaEVudHJ5KTsKLQljdGwuZW50cnlzaXplID0gc2l6 ZW9mKEpzb25VbmlxdWVIYXNoRW50cnkpOwotCWN0bC5oY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRl eHQ7Ci0JY3RsLmhhc2ggPSBqc29uX3VuaXF1ZV9oYXNoOwotCWN0bC5tYXRjaCA9IGpzb25fdW5p cXVlX2hhc2hfbWF0Y2g7Ci0KLQkqY3h0ID0gaGFzaF9jcmVhdGUoImpzb24gb2JqZWN0IGhhc2h0 YWJsZSIsCi0JCQkJCSAgIDMyLAotCQkJCQkgICAmY3RsLAotCQkJCQkgICBIQVNIX0VMRU0gfCBI QVNIX0NPTlRFWFQgfCBIQVNIX0ZVTkNUSU9OIHwgSEFTSF9DT01QQVJFKTsKKwkqY3h0ID0gaGFz aHNldF9tYWtlX2ZuKEpzb25VbmlxdWVIYXNoRW50cnksICJqc29uIG9iamVjdCBoYXNodGFibGUi LCAzMiwKKwkJCQkJCSAgIGpzb25fdW5pcXVlX2hhc2gsIGpzb25fdW5pcXVlX2hhc2hfbWF0Y2gp OwogfQogCiBzdGF0aWMgdm9pZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pz b25mdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25mdW5jcy5jCmluZGV4IDFlNWI2 MDgwMWU0Li40MTU2NDUzZjhjMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pz b25mdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uZnVuY3MuYwpAQCAtMzgw OCwxOCArMzgwOCwxMiBAQCBzdGF0aWMgSFRBQiAqCiBnZXRfanNvbl9vYmplY3RfYXNfaGFzaChj b25zdCBjaGFyICpqc29uLCBpbnQgbGVuLCBjb25zdCBjaGFyICpmdW5jbmFtZSwKIAkJCQkJCU5v ZGUgKmVzY29udGV4dCkKIHsKLQlIQVNIQ1RMCQljdGw7CiAJSFRBQgkgICAqdGFiOwogCUpIYXNo U3RhdGUgKnN0YXRlOwogCUpzb25TZW1BY3Rpb24gKnNlbTsKIAotCWN0bC5rZXlzaXplID0gTkFN RURBVEFMRU47Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihKc29uSGFzaEVudHJ5KTsKLQljdGwu aGN4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OwotCXRhYiA9IGhhc2hfY3JlYXRlKCJqc29uIG9i amVjdCBoYXNodGFibGUiLAotCQkJCQkgIDEwMCwKLQkJCQkJICAmY3RsLAotCQkJCQkgIEhBU0hf RUxFTSB8IEhBU0hfU1RSSU5HUyB8IEhBU0hfQ09OVEVYVCk7CisJdGFiID0gaGFzaF9tYWtlKEpz b25IYXNoRW50cnksIGZuYW1lLAorCQkJCQkianNvbiBvYmplY3QgaGFzaHRhYmxlIiwgMTAwKTsK IAogCXN0YXRlID0gcGFsbG9jMF9vYmplY3QoSkhhc2hTdGF0ZSk7CiAJc2VtID0gcGFsbG9jMF9v YmplY3QoSnNvblNlbUFjdGlvbik7CkBAIC00MjEzLDcgKzQyMDcsNiBAQCBwb3B1bGF0ZV9yZWNv cmRzZXRfb2JqZWN0X3N0YXJ0KHZvaWQgKnN0YXRlKQogewogCVBvcHVsYXRlUmVjb3Jkc2V0U3Rh dGUgKl9zdGF0ZSA9IChQb3B1bGF0ZVJlY29yZHNldFN0YXRlICopIHN0YXRlOwogCWludAkJCWxl eF9sZXZlbCA9IF9zdGF0ZS0+bGV4LT5sZXhfbGV2ZWw7Ci0JSEFTSENUTAkJY3RsOwogCiAJLyog UmVqZWN0IG9iamVjdCBhdCB0b3AgbGV2ZWw6IHdlIG11c3QgaGF2ZSBhbiBhcnJheSBhdCBsZXZl bCAwICovCiAJaWYgKGxleF9sZXZlbCA9PSAwKQpAQCAtNDIyNywxMyArNDIyMCw4IEBAIHBvcHVs YXRlX3JlY29yZHNldF9vYmplY3Rfc3RhcnQodm9pZCAqc3RhdGUpCiAJCXJldHVybiBKU09OX1NV Q0NFU1M7CiAKIAkvKiBPYmplY3QgYXQgbGV2ZWwgMTogc2V0IHVwIGEgbmV3IGhhc2ggdGFibGUg Zm9yIHRoaXMgb2JqZWN0ICovCi0JY3RsLmtleXNpemUgPSBOQU1FREFUQUxFTjsKLQljdGwuZW50 cnlzaXplID0gc2l6ZW9mKEpzb25IYXNoRW50cnkpOwotCWN0bC5oY3h0ID0gQ3VycmVudE1lbW9y eUNvbnRleHQ7Ci0JX3N0YXRlLT5qc29uX2hhc2ggPSBoYXNoX2NyZWF0ZSgianNvbiBvYmplY3Qg aGFzaHRhYmxlIiwKLQkJCQkJCQkJCTEwMCwKLQkJCQkJCQkJCSZjdGwsCi0JCQkJCQkJCQlIQVNI X0VMRU0gfCBIQVNIX1NUUklOR1MgfCBIQVNIX0NPTlRFWFQpOworCV9zdGF0ZS0+anNvbl9oYXNo ID0gaGFzaF9tYWtlKEpzb25IYXNoRW50cnksIGZuYW1lLAorCQkJCQkJCQkgICJqc29uIG9iamVj dCBoYXNodGFibGUiLCAxMDApOwogCiAJcmV0dXJuIEpTT05fU1VDQ0VTUzsKIH0KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9tY3h0ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9tY3h0ZnVuY3MuYwppbmRleCAxMmI4ZDRjZWZhZi4uNjk0MjUyY2ZlZDUgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9tY3h0ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC91 dGlscy9hZHQvbWN4dGZ1bmNzLmMKQEAgLTE4NSwxNyArMTg1LDEwIEBAIHBnX2dldF9iYWNrZW5k X21lbW9yeV9jb250ZXh0cyhQR19GVU5DVElPTl9BUkdTKQogCVJldHVyblNldEluZm8gKnJzaW5m byA9IChSZXR1cm5TZXRJbmZvICopIGZjaW5mby0+cmVzdWx0aW5mbzsKIAlpbnQJCQljb250ZXh0 X2lkOwogCUxpc3QJICAgKmNvbnRleHRzOwotCUhBU0hDVEwJCWN0bDsKIAlIVEFCCSAgICpjb250 ZXh0X2lkX2xvb2t1cDsKIAotCWN0bC5rZXlzaXplID0gc2l6ZW9mKE1lbW9yeUNvbnRleHQpOwot CWN0bC5lbnRyeXNpemUgPSBzaXplb2YoTWVtb3J5Q29udGV4dElkKTsKLQljdGwuaGN4dCA9IEN1 cnJlbnRNZW1vcnlDb250ZXh0OwotCi0JY29udGV4dF9pZF9sb29rdXAgPSBoYXNoX2NyZWF0ZSgi cGdfZ2V0X2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzIiwKLQkJCQkJCQkJCTI1NiwKLQkJCQkJCQkJ CSZjdGwsCi0JCQkJCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsK Kwljb250ZXh0X2lkX2xvb2t1cCA9IGhhc2hfbWFrZShNZW1vcnlDb250ZXh0SWQsIGNvbnRleHQs CisJCQkJCQkJCSAgInBnX2dldF9iYWNrZW5kX21lbW9yeV9jb250ZXh0cyIsIDI1Nik7CiAKIAlJ bml0TWF0ZXJpYWxpemVkU1JGKGZjaW5mbywgMCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdn ZXJzLmMKaW5kZXggYmJhZGVjZWY1ZjkuLjUzMzRjOWRkNzUzIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQv cmlfdHJpZ2dlcnMuYwpAQCAtMjg1OSwzMCArMjg1OSwyNSBAQCByaV9OdWxsQ2hlY2soVHVwbGVE ZXNjIHR1cERlc2MsCiBzdGF0aWMgdm9pZAogcmlfSW5pdEhhc2hUYWJsZXModm9pZCkKIHsKLQlI QVNIQ1RMCQljdGw7Ci0KLQljdGwua2V5c2l6ZSA9IHNpemVvZihPaWQpOwotCWN0bC5lbnRyeXNp emUgPSBzaXplb2YoUklfQ29uc3RyYWludEluZm8pOwotCXJpX2NvbnN0cmFpbnRfY2FjaGUgPSBo YXNoX2NyZWF0ZSgiUkkgY29uc3RyYWludCBjYWNoZSIsCi0JCQkJCQkJCQkgIFJJX0lOSVRfQ09O U1RSQUlOVEhBU0hTSVpFLAotCQkJCQkJCQkJICAmY3RsLCBIQVNIX0VMRU0gfCBIQVNIX0JMT0JT KTsKKwlyaV9jb25zdHJhaW50X2NhY2hlID0gaGFzaF9tYWtlX2N4dChSSV9Db25zdHJhaW50SW5m bywgY29uc3RyYWludF9pZCwKKwkJCQkJCQkJCQkiUkkgY29uc3RyYWludCBjYWNoZSIsCisJCQkJ CQkJCQkJUklfSU5JVF9DT05TVFJBSU5USEFTSFNJWkUsCisJCQkJCQkJCQkJVG9wTWVtb3J5Q29u dGV4dCk7CiAKIAkvKiBBcnJhbmdlIHRvIGZsdXNoIGNhY2hlIG9uIHBnX2NvbnN0cmFpbnQgY2hh bmdlcyAqLwogCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxiYWNrKENPTlNUUk9JRCwKIAkJCQkJ CQkJICBJbnZhbGlkYXRlQ29uc3RyYWludENhY2hlQ2FsbEJhY2ssCiAJCQkJCQkJCSAgKERhdHVt KSAwKTsKIAotCWN0bC5rZXlzaXplID0gc2l6ZW9mKFJJX1F1ZXJ5S2V5KTsKLQljdGwuZW50cnlz aXplID0gc2l6ZW9mKFJJX1F1ZXJ5SGFzaEVudHJ5KTsKLQlyaV9xdWVyeV9jYWNoZSA9IGhhc2hf Y3JlYXRlKCJSSSBxdWVyeSBjYWNoZSIsCi0JCQkJCQkJCSBSSV9JTklUX1FVRVJZSEFTSFNJWkUs Ci0JCQkJCQkJCSAmY3RsLCBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKLQotCWN0bC5rZXlzaXpl ID0gc2l6ZW9mKFJJX0NvbXBhcmVLZXkpOwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoUklfQ29t cGFyZUhhc2hFbnRyeSk7Ci0JcmlfY29tcGFyZV9jYWNoZSA9IGhhc2hfY3JlYXRlKCJSSSBjb21w YXJlIGNhY2hlIiwKKwlyaV9xdWVyeV9jYWNoZSA9IGhhc2hfbWFrZV9jeHQoUklfUXVlcnlIYXNo RW50cnksIGtleSwKKwkJCQkJCQkJICAgIlJJIHF1ZXJ5IGNhY2hlIiwKIAkJCQkJCQkJICAgUklf SU5JVF9RVUVSWUhBU0hTSVpFLAotCQkJCQkJCQkgICAmY3RsLCBIQVNIX0VMRU0gfCBIQVNIX0JM T0JTKTsKKwkJCQkJCQkJICAgVG9wTWVtb3J5Q29udGV4dCk7CisKKwlyaV9jb21wYXJlX2NhY2hl ID0gaGFzaF9tYWtlX2N4dChSSV9Db21wYXJlSGFzaEVudHJ5LCBrZXksCisJCQkJCQkJCQkgIlJJ IGNvbXBhcmUgY2FjaGUiLAorCQkJCQkJCQkJIFJJX0lOSVRfUVVFUllIQVNIU0laRSwKKwkJCQkJ CQkJCSBUb3BNZW1vcnlDb250ZXh0KTsKIH0KIAogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9hZHQvcnVsZXV0aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMK aW5kZXggYjVhN2FkOTA2NmUuLjU0NjhlMDdkMGNmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9hZHQvcnVsZXV0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGls cy5jCkBAIC0zODg3LDcgKzM4ODcsNiBAQCBzdGF0aWMgdm9pZAogc2V0X3J0YWJsZV9uYW1lcyhk ZXBhcnNlX25hbWVzcGFjZSAqZHBucywgTGlzdCAqcGFyZW50X25hbWVzcGFjZXMsCiAJCQkJIEJp dG1hcHNldCAqcmVsc191c2VkKQogewotCUhBU0hDVEwJCWhhc2hfY3RsOwogCUhUQUIJICAgKm5h bWVzX2hhc2g7CiAJTmFtZUhhc2hFbnRyeSAqaGVudHJ5OwogCWJvb2wJCWZvdW5kOwpAQCAtMzkw MywxMyArMzkwMiw5IEBAIHNldF9ydGFibGVfbmFtZXMoZGVwYXJzZV9uYW1lc3BhY2UgKmRwbnMs IExpc3QgKnBhcmVudF9uYW1lc3BhY2VzLAogCSAqIFdlIHVzZSBhIGhhc2ggdGFibGUgdG8gaG9s ZCBrbm93biBuYW1lcywgc28gdGhhdCB0aGlzIHByb2Nlc3MgaXMgTyhOKQogCSAqIG5vdCBPKE5e MikgZm9yIE4gbmFtZXMuCiAJICovCi0JaGFzaF9jdGwua2V5c2l6ZSA9IE5BTUVEQVRBTEVOOwot CWhhc2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihOYW1lSGFzaEVudHJ5KTsKLQloYXNoX2N0bC5o Y3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7Ci0JbmFtZXNfaGFzaCA9IGhhc2hfY3JlYXRlKCJz ZXRfcnRhYmxlX25hbWVzIG5hbWVzIiwKLQkJCQkJCQkgbGlzdF9sZW5ndGgoZHBucy0+cnRhYmxl KSwKLQkJCQkJCQkgJmhhc2hfY3RsLAotCQkJCQkJCSBIQVNIX0VMRU0gfCBIQVNIX1NUUklOR1Mg fCBIQVNIX0NPTlRFWFQpOworCW5hbWVzX2hhc2ggPSBoYXNoX21ha2UoTmFtZUhhc2hFbnRyeSwg bmFtZSwKKwkJCQkJCSAgICJzZXRfcnRhYmxlX25hbWVzIG5hbWVzIiwKKwkJCQkJCSAgIGxpc3Rf bGVuZ3RoKGRwbnMtPnJ0YWJsZSkpOwogCiAJLyogUHJlbG9hZCB0aGUgaGFzaCB0YWJsZSB3aXRo IG5hbWVzIGFwcGVhcmluZyBpbiBwYXJlbnRfbmFtZXNwYWNlcyAqLwogCWZvcmVhY2gobGMsIHBh cmVudF9uYW1lc3BhY2VzKQpAQCAtNDk4MCw3ICs0OTc1LDYgQEAgZXhwYW5kX2NvbG5hbWVzX2Fy cmF5X3RvKGRlcGFyc2VfY29sdW1ucyAqY29saW5mbywgaW50IG4pCiBzdGF0aWMgdm9pZAogYnVp bGRfY29saW5mb19uYW1lc19oYXNoKGRlcGFyc2VfY29sdW1ucyAqY29saW5mbykKIHsKLQlIQVNI Q1RMCQloYXNoX2N0bDsKIAlpbnQJCQlpOwogCUxpc3RDZWxsICAgKmxjOwogCkBAIC00OTk2LDEz ICs0OTkwLDEwIEBAIGJ1aWxkX2NvbGluZm9fbmFtZXNfaGFzaChkZXBhcnNlX2NvbHVtbnMgKmNv bGluZm8pCiAJICogU2V0IHVwIHRoZSBoYXNoIHRhYmxlLiAgVGhlIGVudHJpZXMgYXJlIGp1c3Qg c3RyaW5ncyB3aXRoIG5vIG90aGVyCiAJICogcGF5bG9hZC4KIAkgKi8KLQloYXNoX2N0bC5rZXlz aXplID0gTkFNRURBVEFMRU47Ci0JaGFzaF9jdGwuZW50cnlzaXplID0gTkFNRURBVEFMRU47Ci0J aGFzaF9jdGwuaGN4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OwotCWNvbGluZm8tPm5hbWVzX2hh c2ggPSBoYXNoX2NyZWF0ZSgiZGVwYXJzZV9jb2x1bW5zIG5hbWVzIiwKLQkJCQkJCQkJCSAgY29s aW5mby0+bnVtX2NvbHMgKyBjb2xpbmZvLT5udW1fbmV3X2NvbHMsCi0JCQkJCQkJCQkgICZoYXNo X2N0bCwKLQkJCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9TVFJJTkdTIHwgSEFTSF9DT05URVhU KTsKKwljb2xpbmZvLT5uYW1lc19oYXNoID0KKwkJaGFzaHNldF9tYWtlX2N4dChOYW1lRGF0YSwg ImRlcGFyc2VfY29sdW1ucyBuYW1lcyIsCisJCQkJCQkgY29saW5mby0+bnVtX2NvbHMgKyBjb2xp bmZvLT5udW1fbmV3X2NvbHMsCisJCQkJCQkgQ3VycmVudE1lbW9yeUNvbnRleHQpOwogCiAJLyoK IAkgKiBQcmVsb2FkIHRoZSBoYXNoIHRhYmxlIHdpdGggYW55IG5hbWVzIGFscmVhZHkgcHJlc2Vu dCAodGhlc2Ugd291bGQgaGF2ZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUv YXR0b3B0Y2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2F0dG9wdGNhY2hlLmMKaW5k ZXggNzJlZGM4ZjY2NWIuLjc3MWJmNzdmYTc1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9jYWNoZS9hdHRvcHRjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2F0dG9w dGNhY2hlLmMKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJ1dGlscy9jYXRjYWNoZS5oIgog I2luY2x1ZGUgInV0aWxzL2hzZWFyY2guaCIKICNpbmNsdWRlICJ1dGlscy9pbnZhbC5oIgorI2lu Y2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKICNp bmNsdWRlICJ2YXJhdHQuaCIKIApAQCAtOTYsMjIgKzk3LDE1IEBAIHJlbGF0dF9jYWNoZV9zeXNo YXNoKGNvbnN0IHZvaWQgKmtleSwgU2l6ZSBrZXlzaXplKQogc3RhdGljIHZvaWQKIEluaXRpYWxp emVBdHRvcHRDYWNoZSh2b2lkKQogewotCUhBU0hDVEwJCWN0bDsKLQotCS8qIEluaXRpYWxpemUg dGhlIGhhc2ggdGFibGUuICovCi0JY3RsLmtleXNpemUgPSBzaXplb2YoQXR0b3B0Q2FjaGVLZXkp OwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoQXR0b3B0Q2FjaGVFbnRyeSk7Ci0KIAkvKgogCSAq IEF0dG9wdENhY2hlRW50cnkgdGFrZXMgaGFzaCB2YWx1ZSBmcm9tIHRoZSBzeXN0ZW0gY2FjaGUu IEZvcgogCSAqIEF0dG9wdENhY2hlSGFzaCB3ZSB1c2UgdGhlIHNhbWUgaGFzaCBpbiBvcmRlciB0 byBzcGVlZHVwIHNlYXJjaCBieSBoYXNoCiAJICogdmFsdWUuIFRoaXMgaXMgdXNlZCBieSBoYXNo X3NlcV9pbml0X3dpdGhfaGFzaF92YWx1ZSgpLgogCSAqLwotCWN0bC5oYXNoID0gcmVsYXR0X2Nh Y2hlX3N5c2hhc2g7Ci0KLQlBdHRvcHRDYWNoZUhhc2ggPQotCQloYXNoX2NyZWF0ZSgiQXR0b3B0 IGNhY2hlIiwgMjU2LCAmY3RsLAotCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0ZVTkNUSU9OKTsKKwlB dHRvcHRDYWNoZUhhc2ggPSBoYXNoX21ha2VfZm5fY3h0KEF0dG9wdENhY2hlRW50cnksIGtleSwK KwkJCQkJCQkJCSAgICJBdHRvcHQgY2FjaGUiLCAyNTYsCisJCQkJCQkJCQkgICByZWxhdHRfY2Fj aGVfc3lzaGFzaCwgTlVMTCwKKwkJCQkJCQkJCSAgIFRvcE1lbW9yeUNvbnRleHQpOwogCiAJLyog TWFrZSBzdXJlIHdlJ3ZlIGluaXRpYWxpemVkIENhY2hlTWVtb3J5Q29udGV4dC4gKi8KIAlpZiAo IUNhY2hlTWVtb3J5Q29udGV4dCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hl L2V2dGNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9ldnRjYWNoZS5jCmluZGV4IDJi NDQ1M2U1NGE3Li42NTJmNmYyNWJlMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvZXZ0Y2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9ldnRjYWNoZS5jCkBA IC03Niw3ICs3Niw2IEBAIEV2ZW50Q2FjaGVMb29rdXAoRXZlbnRUcmlnZ2VyRXZlbnQgZXZlbnQp CiBzdGF0aWMgdm9pZAogQnVpbGRFdmVudFRyaWdnZXJDYWNoZSh2b2lkKQogewotCUhBU0hDVEwJ CWN0bDsKIAlIVEFCCSAgICpjYWNoZTsKIAlSZWxhdGlvbglyZWw7CiAJUmVsYXRpb24JaXJlbDsK QEAgLTExMywxMSArMTEyLDkgQEAgQnVpbGRFdmVudFRyaWdnZXJDYWNoZSh2b2lkKQogCUV2ZW50 VHJpZ2dlckNhY2hlU3RhdGUgPSBFVENTX1JFQlVJTERfU1RBUlRFRDsKIAogCS8qIENyZWF0ZSBu ZXcgaGFzaCB0YWJsZS4gKi8KLQljdGwua2V5c2l6ZSA9IHNpemVvZihFdmVudFRyaWdnZXJFdmVu dCk7Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihFdmVudFRyaWdnZXJDYWNoZUVudHJ5KTsKLQlj dGwuaGN4dCA9IEV2ZW50VHJpZ2dlckNhY2hlQ29udGV4dDsKLQljYWNoZSA9IGhhc2hfY3JlYXRl KCJFdmVudFRyaWdnZXJDYWNoZUhhc2giLCAzMiwgJmN0bCwKLQkJCQkJCUhBU0hfRUxFTSB8IEhB U0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCWNhY2hlID0gaGFzaF9tYWtlX2N4dChFdmVudFRy aWdnZXJDYWNoZUVudHJ5LCBldmVudCwKKwkJCQkJCSAgIkV2ZW50VHJpZ2dlckNhY2hlSGFzaCIs IDMyLAorCQkJCQkJICBFdmVudFRyaWdnZXJDYWNoZUNvbnRleHQpOwogCiAJLyoKIAkgKiBQcmVw YXJlIHRvIHNjYW4gcGdfZXZlbnRfdHJpZ2dlciBpbiBuYW1lIG9yZGVyLgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvZnVuY2NhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9j YWNoZS9mdW5jY2FjaGUuYwppbmRleCA3MDFjMjk0Yjg4ZC4uYmVmOTM4YzM3YzAgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2Z1bmNjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL2NhY2hlL2Z1bmNjYWNoZS5jCkBAIC01OCwxOSArNTgsMTMgQEAgc3RhdGljIGludAlj ZnVuY19tYXRjaChjb25zdCB2b2lkICprZXkxLCBjb25zdCB2b2lkICprZXkyLCBTaXplIGtleXNp emUpOwogc3RhdGljIHZvaWQKIGNmdW5jX2hhc2h0YWJsZV9pbml0KHZvaWQpCiB7Ci0JSEFTSENU TAkJY3RsOwotCiAJLyogZG9uJ3QgYWxsb3cgZG91YmxlLWluaXRpYWxpemF0aW9uICovCiAJQXNz ZXJ0KGNmdW5jX2hhc2h0YWJsZSA9PSBOVUxMKTsKIAotCWN0bC5rZXlzaXplID0gc2l6ZW9mKENh Y2hlZEZ1bmN0aW9uSGFzaEtleSk7Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihDYWNoZWRGdW5j dGlvbkhhc2hFbnRyeSk7Ci0JY3RsLmhhc2ggPSBjZnVuY19oYXNoOwotCWN0bC5tYXRjaCA9IGNm dW5jX21hdGNoOwotCWNmdW5jX2hhc2h0YWJsZSA9IGhhc2hfY3JlYXRlKCJDYWNoZWQgZnVuY3Rp b24gaGFzaCIsCi0JCQkJCQkJCSAgRlVOQ1NfUEVSX1VTRVIsCi0JCQkJCQkJCSAgJmN0bCwKLQkJ CQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX0ZVTkNUSU9OIHwgSEFTSF9DT01QQVJFKTsKKwljZnVu Y19oYXNodGFibGUgPSBoYXNoX21ha2VfZm5fY3h0KENhY2hlZEZ1bmN0aW9uSGFzaEVudHJ5LCBr ZXksCisJCQkJCQkJCQkgICAiQ2FjaGVkIGZ1bmN0aW9uIGhhc2giLCBGVU5DU19QRVJfVVNFUiwK KwkJCQkJCQkJCSAgIGNmdW5jX2hhc2gsIGNmdW5jX21hdGNoLAorCQkJCQkJCQkJICAgVG9wTWVt b3J5Q29udGV4dCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9yZWxjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwppbmRleCA2 YjYzNGM5ZmZmMS4uYzE1YjEyN2JkYmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2Nh Y2hlL3JlbGNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwpA QCAtMTY3MiwxNyArMTY3MiwxNCBAQCBMb29rdXBPcGNsYXNzSW5mbyhPaWQgb3BlcmF0b3JDbGFz c09pZCwKIAogCWlmIChPcENsYXNzQ2FjaGUgPT0gTlVMTCkKIAl7Ci0JCS8qIEZpcnN0IHRpbWUg dGhyb3VnaDogaW5pdGlhbGl6ZSB0aGUgb3BjbGFzcyBjYWNoZSAqLwotCQlIQVNIQ1RMCQljdGw7 Ci0KIAkJLyogQWxzbyBtYWtlIHN1cmUgQ2FjaGVNZW1vcnlDb250ZXh0IGV4aXN0cyAqLwogCQlp ZiAoIUNhY2hlTWVtb3J5Q29udGV4dCkKIAkJCUNyZWF0ZUNhY2hlTWVtb3J5Q29udGV4dCgpOwog Ci0JCWN0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JCWN0bC5lbnRyeXNpemUgPSBzaXplb2Yo T3BDbGFzc0NhY2hlRW50KTsKLQkJT3BDbGFzc0NhY2hlID0gaGFzaF9jcmVhdGUoIk9wZXJhdG9y IGNsYXNzIGNhY2hlIiwgNjQsCi0JCQkJCQkJCSAgICZjdGwsIEhBU0hfRUxFTSB8IEhBU0hfQkxP QlMpOworCQkvKiBGaXJzdCB0aW1lIHRocm91Z2g6IGluaXRpYWxpemUgdGhlIG9wY2xhc3MgY2Fj aGUgKi8KKwkJT3BDbGFzc0NhY2hlID0gaGFzaF9tYWtlX2N4dChPcENsYXNzQ2FjaGVFbnQsIG9w Y2xhc3NvaWQsCisJCQkJCQkJCQkgIk9wZXJhdG9yIGNsYXNzIGNhY2hlIiwgNjQsCisJCQkJCQkJ CQkgVG9wTWVtb3J5Q29udGV4dCk7CiAJfQogCiAJb3BjZW50cnkgPSAoT3BDbGFzc0NhY2hlRW50 ICopIGhhc2hfc2VhcmNoKE9wQ2xhc3NDYWNoZSwKQEAgLTM5OTYsNyArMzk5Myw2IEBAIFJlbGF0 aW9uQXNzdW1lTmV3UmVsZmlsZWxvY2F0b3IoUmVsYXRpb24gcmVsYXRpb24pCiB2b2lkCiBSZWxh dGlvbkNhY2hlSW5pdGlhbGl6ZSh2b2lkKQogewotCUhBU0hDVEwJCWN0bDsKIAlpbnQJCQlhbGxv Y3NpemU7CiAKIAkvKgpAQCAtNDAwOCwxMCArNDAwNCw5IEBAIFJlbGF0aW9uQ2FjaGVJbml0aWFs aXplKHZvaWQpCiAJLyoKIAkgKiBjcmVhdGUgaGFzaHRhYmxlIHRoYXQgaW5kZXhlcyB0aGUgcmVs Y2FjaGUKIAkgKi8KLQljdGwua2V5c2l6ZSA9IHNpemVvZihPaWQpOwotCWN0bC5lbnRyeXNpemUg PSBzaXplb2YoUmVsSWRDYWNoZUVudCk7Ci0JUmVsYXRpb25JZENhY2hlID0gaGFzaF9jcmVhdGUo IlJlbGNhY2hlIGJ5IE9JRCIsIElOSVRSRUxDQUNIRVNJWkUsCi0JCQkJCQkJCSAgJmN0bCwgSEFT SF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJUmVsYXRpb25JZENhY2hlID0gaGFzaF9tYWtlX2N4dChS ZWxJZENhY2hlRW50LCByZWxvaWQsCisJCQkJCQkJCQkiUmVsY2FjaGUgYnkgT0lEIiwgSU5JVFJF TENBQ0hFU0laRSwKKwkJCQkJCQkJCVRvcE1lbW9yeUNvbnRleHQpOwogCiAJLyoKIAkgKiByZXNl cnZlIGVub3VnaCBpbl9wcm9ncmVzc19saXN0IHNsb3RzIGZvciBtYW55IGNhc2VzCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxmaWxlbnVtYmVybWFwLmMgYi9zcmMvYmFj a2VuZC91dGlscy9jYWNoZS9yZWxmaWxlbnVtYmVybWFwLmMKaW5kZXggNmY5NzBmYWZhMDUuLjA5 YjA1ZGVjOWQwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxmaWxlbnVt YmVybWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsZmlsZW51bWJlcm1hcC5j CkBAIC04NSw3ICs4NSw2IEBAIFJlbGZpbGVudW1iZXJNYXBJbnZhbGlkYXRlQ2FsbGJhY2soRGF0 dW0gYXJnLCBPaWQgcmVsaWQpCiBzdGF0aWMgdm9pZAogSW5pdGlhbGl6ZVJlbGZpbGVudW1iZXJN YXAodm9pZCkKIHsKLQlIQVNIQ1RMCQljdGw7CiAJaW50CQkJaTsKIAogCS8qIE1ha2Ugc3VyZSB3 ZSd2ZSBpbml0aWFsaXplZCBDYWNoZU1lbW9yeUNvbnRleHQuICovCkBAIC0xMTMsMTMgKzExMiw5 IEBAIEluaXRpYWxpemVSZWxmaWxlbnVtYmVyTWFwKHZvaWQpCiAJICogaW5pdGlhbGl6ZWQgd2hl biBmbWdyX2luZm9fY3h0KCkgYWJvdmUgRVJST1JzIG91dCB3aXRoIGFuIG91dCBvZiBtZW1vcnkK IAkgKiBlcnJvci4KIAkgKi8KLQljdGwua2V5c2l6ZSA9IHNpemVvZihSZWxmaWxlbnVtYmVyTWFw S2V5KTsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9mKFJlbGZpbGVudW1iZXJNYXBFbnRyeSk7Ci0J Y3RsLmhjeHQgPSBDYWNoZU1lbW9yeUNvbnRleHQ7Ci0KIAlSZWxmaWxlbnVtYmVyTWFwSGFzaCA9 Ci0JCWhhc2hfY3JlYXRlKCJSZWxmaWxlbnVtYmVyTWFwIGNhY2hlIiwgNjQsICZjdGwsCi0JCQkJ CUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCQloYXNoX21ha2VfY3h0 KFJlbGZpbGVudW1iZXJNYXBFbnRyeSwga2V5LAorCQkJCQkgICJSZWxmaWxlbnVtYmVyTWFwIGNh Y2hlIiwgNjQsIENhY2hlTWVtb3J5Q29udGV4dCk7CiAKIAkvKiBXYXRjaCBmb3IgaW52YWxpZGF0 aW9uIGV2ZW50cy4gKi8KIAlDYWNoZVJlZ2lzdGVyUmVsY2FjaGVDYWxsYmFjayhSZWxmaWxlbnVt YmVyTWFwSW52YWxpZGF0ZUNhbGxiYWNrLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvc3BjY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3NwY2NhY2hlLmMKaW5k ZXggOGYxYTVlNjk1OTUuLmJmMDA3ZDY5YWQ0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9jYWNoZS9zcGNjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3NwY2NhY2hl LmMKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJ1dGlscy9jYXRjYWNoZS5oIgogI2luY2x1 ZGUgInV0aWxzL2hzZWFyY2guaCIKICNpbmNsdWRlICJ1dGlscy9pbnZhbC5oIgorI2luY2x1ZGUg InV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvc3BjY2FjaGUuaCIKICNpbmNsdWRl ICJ1dGlscy9zeXNjYWNoZS5oIgogI2luY2x1ZGUgInZhcmF0dC5oIgpAQCAtNzcsMTQgKzc4LDEw IEBAIEludmFsaWRhdGVUYWJsZVNwYWNlQ2FjaGVDYWxsYmFjayhEYXR1bSBhcmcsIGludCBjYWNo ZWlkLCB1aW50MzIgaGFzaHZhbHVlKQogc3RhdGljIHZvaWQKIEluaXRpYWxpemVUYWJsZVNwYWNl Q2FjaGUodm9pZCkKIHsKLQlIQVNIQ1RMCQljdGw7Ci0KIAkvKiBJbml0aWFsaXplIHRoZSBoYXNo IHRhYmxlLiAqLwotCWN0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JY3RsLmVudHJ5c2l6ZSA9 IHNpemVvZihUYWJsZVNwYWNlQ2FjaGVFbnRyeSk7CiAJVGFibGVTcGFjZUNhY2hlSGFzaCA9Ci0J CWhhc2hfY3JlYXRlKCJUYWJsZVNwYWNlIGNhY2hlIiwgMTYsICZjdGwsCi0JCQkJCUhBU0hfRUxF TSB8IEhBU0hfQkxPQlMpOworCQloYXNoX21ha2VfY3h0KFRhYmxlU3BhY2VDYWNoZUVudHJ5LCBv aWQsCisJCQkJCSAgIlRhYmxlU3BhY2UgY2FjaGUiLCAxNiwgVG9wTWVtb3J5Q29udGV4dCk7CiAK IAkvKiBNYWtlIHN1cmUgd2UndmUgaW5pdGlhbGl6ZWQgQ2FjaGVNZW1vcnlDb250ZXh0LiAqLwog CWlmICghQ2FjaGVNZW1vcnlDb250ZXh0KQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvdHNfY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3RzX2NhY2hlLmMKaW5k ZXggNzFlNDliMmI5MTkuLmU5YWU0YTVmMDkzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9jYWNoZS90c19jYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3RzX2NhY2hl LmMKQEAgLTExNywxMiArMTE3LDkgQEAgbG9va3VwX3RzX3BhcnNlcl9jYWNoZShPaWQgcHJzSWQp CiAJaWYgKFRTUGFyc2VyQ2FjaGVIYXNoID09IE5VTEwpCiAJewogCQkvKiBGaXJzdCB0aW1lIHRo cm91Z2g6IGluaXRpYWxpemUgdGhlIGhhc2ggdGFibGUgKi8KLQkJSEFTSENUTAkJY3RsOwotCi0J CWN0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoVFNQ YXJzZXJDYWNoZUVudHJ5KTsKLQkJVFNQYXJzZXJDYWNoZUhhc2ggPSBoYXNoX2NyZWF0ZSgiVHNl YXJjaCBwYXJzZXIgY2FjaGUiLCA0LAotCQkJCQkJCQkJCSZjdGwsIEhBU0hfRUxFTSB8IEhBU0hf QkxPQlMpOworCQlUU1BhcnNlckNhY2hlSGFzaCA9IGhhc2hfbWFrZV9jeHQoVFNQYXJzZXJDYWNo ZUVudHJ5LCBwcnNJZCwKKwkJCQkJCQkJCQkgICJUc2VhcmNoIHBhcnNlciBjYWNoZSIsIDQsCisJ CQkJCQkJCQkJICBUb3BNZW1vcnlDb250ZXh0KTsKIAkJLyogRmx1c2ggY2FjaGUgb24gcGdfdHNf cGFyc2VyIGNoYW5nZXMgKi8KIAkJQ2FjaGVSZWdpc3RlclN5c2NhY2hlQ2FsbGJhY2soVFNQQVJT RVJPSUQsIEludmFsaWRhdGVUU0NhY2hlQ2FsbEJhY2ssCiAJCQkJCQkJCQkgIFBvaW50ZXJHZXRE YXR1bShUU1BhcnNlckNhY2hlSGFzaCkpOwpAQCAtMjEyLDEyICsyMDksOSBAQCBsb29rdXBfdHNf ZGljdGlvbmFyeV9jYWNoZShPaWQgZGljdElkKQogCWlmIChUU0RpY3Rpb25hcnlDYWNoZUhhc2gg PT0gTlVMTCkKIAl7CiAJCS8qIEZpcnN0IHRpbWUgdGhyb3VnaDogaW5pdGlhbGl6ZSB0aGUgaGFz aCB0YWJsZSAqLwotCQlIQVNIQ1RMCQljdGw7Ci0KLQkJY3RsLmtleXNpemUgPSBzaXplb2YoT2lk KTsKLQkJY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihUU0RpY3Rpb25hcnlDYWNoZUVudHJ5KTsKLQkJ VFNEaWN0aW9uYXJ5Q2FjaGVIYXNoID0gaGFzaF9jcmVhdGUoIlRzZWFyY2ggZGljdGlvbmFyeSBj YWNoZSIsIDgsCi0JCQkJCQkJCQkJCSZjdGwsIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCQlU U0RpY3Rpb25hcnlDYWNoZUhhc2ggPSBoYXNoX21ha2VfY3h0KFRTRGljdGlvbmFyeUNhY2hlRW50 cnksIGRpY3RJZCwKKwkJCQkJCQkJCQkJICAiVHNlYXJjaCBkaWN0aW9uYXJ5IGNhY2hlIiwgOCwK KwkJCQkJCQkJCQkJICBUb3BNZW1vcnlDb250ZXh0KTsKIAkJLyogRmx1c2ggY2FjaGUgb24gcGdf dHNfZGljdCBhbmQgcGdfdHNfdGVtcGxhdGUgY2hhbmdlcyAqLwogCQlDYWNoZVJlZ2lzdGVyU3lz Y2FjaGVDYWxsYmFjayhUU0RJQ1RPSUQsIEludmFsaWRhdGVUU0NhY2hlQ2FsbEJhY2ssCiAJCQkJ CQkJCQkgIFBvaW50ZXJHZXREYXR1bShUU0RpY3Rpb25hcnlDYWNoZUhhc2gpKTsKQEAgLTM2Mywx MiArMzU3LDkgQEAgbG9va3VwX3RzX2RpY3Rpb25hcnlfY2FjaGUoT2lkIGRpY3RJZCkKIHN0YXRp YyB2b2lkCiBpbml0X3RzX2NvbmZpZ19jYWNoZSh2b2lkKQogewotCUhBU0hDVEwJCWN0bDsKLQot CWN0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihUU0Nv bmZpZ0NhY2hlRW50cnkpOwotCVRTQ29uZmlnQ2FjaGVIYXNoID0gaGFzaF9jcmVhdGUoIlRzZWFy Y2ggY29uZmlndXJhdGlvbiBjYWNoZSIsIDE2LAotCQkJCQkJCQkJJmN0bCwgSEFTSF9FTEVNIHwg SEFTSF9CTE9CUyk7CisJVFNDb25maWdDYWNoZUhhc2ggPSBoYXNoX21ha2VfY3h0KFRTQ29uZmln Q2FjaGVFbnRyeSwgY2ZnSWQsCisJCQkJCQkJCQkgICJUc2VhcmNoIGNvbmZpZ3VyYXRpb24gY2Fj aGUiLCAxNiwKKwkJCQkJCQkJCSAgVG9wTWVtb3J5Q29udGV4dCk7CiAJLyogRmx1c2ggY2FjaGUg b24gcGdfdHNfY29uZmlnIGFuZCBwZ190c19jb25maWdfbWFwIGNoYW5nZXMgKi8KIAlDYWNoZVJl Z2lzdGVyU3lzY2FjaGVDYWxsYmFjayhUU0NPTkZJR09JRCwgSW52YWxpZGF0ZVRTQ2FjaGVDYWxs QmFjaywKIAkJCQkJCQkJICBQb2ludGVyR2V0RGF0dW0oVFNDb25maWdDYWNoZUhhc2gpKTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMgYi9zcmMvYmFja2Vu ZC91dGlscy9jYWNoZS90eXBjYWNoZS5jCmluZGV4IGRjNGIxYTU2NDE0Li43NGRhNDE4YTc3YyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHlwY2FjaGUuYworKysgYi9zcmMv YmFja2VuZC91dGlscy9jYWNoZS90eXBjYWNoZS5jCkBAIC0zOTIsMjggKzM5MiwyMyBAQCBsb29r dXBfdHlwZV9jYWNoZShPaWQgdHlwZV9pZCwgaW50IGZsYWdzKQogCWlmIChUeXBlQ2FjaGVIYXNo ID09IE5VTEwpCiAJewogCQkvKiBGaXJzdCB0aW1lIHRocm91Z2g6IGluaXRpYWxpemUgdGhlIGhh c2ggdGFibGUgKi8KLQkJSEFTSENUTAkJY3RsOwogCQlpbnQJCQlhbGxvY3NpemU7CiAKLQkJY3Rs LmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQkJY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihUeXBlQ2Fj aGVFbnRyeSk7Ci0KIAkJLyoKIAkJICogVHlwZUNhY2hlRW50cnkgdGFrZXMgaGFzaCB2YWx1ZSBm cm9tIHRoZSBzeXN0ZW0gY2FjaGUuIEZvcgogCQkgKiBUeXBlQ2FjaGVIYXNoIHdlIHVzZSB0aGUg c2FtZSBoYXNoIGluIG9yZGVyIHRvIHNwZWVkdXAgc2VhcmNoIGJ5CiAJCSAqIGhhc2ggdmFsdWUu IFRoaXMgaXMgdXNlZCBieSBoYXNoX3NlcV9pbml0X3dpdGhfaGFzaF92YWx1ZSgpLgogCQkgKi8K LQkJY3RsLmhhc2ggPSB0eXBlX2NhY2hlX3N5c2hhc2g7Ci0KLQkJVHlwZUNhY2hlSGFzaCA9IGhh c2hfY3JlYXRlKCJUeXBlIGluZm9ybWF0aW9uIGNhY2hlIiwgNjQsCi0JCQkJCQkJCQkmY3RsLCBI QVNIX0VMRU0gfCBIQVNIX0ZVTkNUSU9OKTsKKwkJVHlwZUNhY2hlSGFzaCA9IGhhc2hfbWFrZV9m bl9jeHQoVHlwZUNhY2hlRW50cnksIHR5cGVfaWQsCisJCQkJCQkJCQkJICJUeXBlIGluZm9ybWF0 aW9uIGNhY2hlIiwgNjQsCisJCQkJCQkJCQkJIHR5cGVfY2FjaGVfc3lzaGFzaCwgTlVMTCwKKwkJ CQkJCQkJCQkgVG9wTWVtb3J5Q29udGV4dCk7CiAKIAkJQXNzZXJ0KFJlbElkVG9UeXBlSWRDYWNo ZUhhc2ggPT0gTlVMTCk7CiAKLQkJY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQkJY3RsLmVu dHJ5c2l6ZSA9IHNpemVvZihSZWxJZFRvVHlwZUlkQ2FjaGVFbnRyeSk7Ci0JCVJlbElkVG9UeXBl SWRDYWNoZUhhc2ggPSBoYXNoX2NyZWF0ZSgiTWFwIGZyb20gcmVsaWQgdG8gT0lEIG9mIGNhY2hl ZCBjb21wb3NpdGUgdHlwZSIsIDY0LAotCQkJCQkJCQkJCQkgJmN0bCwgSEFTSF9FTEVNIHwgSEFT SF9CTE9CUyk7CisJCVJlbElkVG9UeXBlSWRDYWNoZUhhc2ggPSBoYXNoX21ha2VfY3h0KFJlbElk VG9UeXBlSWRDYWNoZUVudHJ5LCByZWxpZCwKKwkJCQkJCQkJCQkJICAgIk1hcCBmcm9tIHJlbGlk IHRvIE9JRCBvZiBjYWNoZWQgY29tcG9zaXRlIHR5cGUiLAorCQkJCQkJCQkJCQkgICA2NCwgVG9w TWVtb3J5Q29udGV4dCk7CiAKIAkJLyogQWxzbyBzZXQgdXAgY2FsbGJhY2tzIGZvciBTSSBpbnZh bGlkYXRpb25zICovCiAJCUNhY2hlUmVnaXN0ZXJSZWxjYWNoZUNhbGxiYWNrKFR5cGVDYWNoZVJl bENhbGxiYWNrLCAoRGF0dW0pIDApOwpAQCAtMjA1MCwxNSArMjA0NSwxMSBAQCBhc3NpZ25fcmVj b3JkX3R5cGVfdHlwbW9kKFR1cGxlRGVzYyB0dXBEZXNjKQogCWlmIChSZWNvcmRDYWNoZUhhc2gg PT0gTlVMTCkKIAl7CiAJCS8qIEZpcnN0IHRpbWUgdGhyb3VnaDogaW5pdGlhbGl6ZSB0aGUgaGFz aCB0YWJsZSAqLwotCQlIQVNIQ1RMCQljdGw7Ci0KLQkJY3RsLmtleXNpemUgPSBzaXplb2YoVHVw bGVEZXNjKTsJLyoganVzdCB0aGUgcG9pbnRlciAqLwotCQljdGwuZW50cnlzaXplID0gc2l6ZW9m KFJlY29yZENhY2hlRW50cnkpOwotCQljdGwuaGFzaCA9IHJlY29yZF90eXBlX3R5cG1vZF9oYXNo OwotCQljdGwubWF0Y2ggPSByZWNvcmRfdHlwZV90eXBtb2RfY29tcGFyZTsKLQkJUmVjb3JkQ2Fj aGVIYXNoID0gaGFzaF9jcmVhdGUoIlJlY29yZCBpbmZvcm1hdGlvbiBjYWNoZSIsIDY0LAotCQkJ CQkJCQkJICAmY3RsLAotCQkJCQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX0ZVTkNUSU9OIHwgSEFT SF9DT01QQVJFKTsKKwkJUmVjb3JkQ2FjaGVIYXNoID0gaGFzaF9tYWtlX2ZuX2N4dChSZWNvcmRD YWNoZUVudHJ5LCB0dXBkZXNjLAorCQkJCQkJCQkJCSAgICJSZWNvcmQgaW5mb3JtYXRpb24gY2Fj aGUiLCA2NCwKKwkJCQkJCQkJCQkgICByZWNvcmRfdHlwZV90eXBtb2RfaGFzaCwKKwkJCQkJCQkJ CQkgICByZWNvcmRfdHlwZV90eXBtb2RfY29tcGFyZSwKKwkJCQkJCQkJCQkgICBUb3BNZW1vcnlD b250ZXh0KTsKIAogCQkvKiBBbHNvIG1ha2Ugc3VyZSBDYWNoZU1lbW9yeUNvbnRleHQgZXhpc3Rz ICovCiAJCWlmICghQ2FjaGVNZW1vcnlDb250ZXh0KQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvZm1nci9kZm1nci5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvZm1nci9kZm1nci5jCmluZGV4 IGU2MzZjYzgxY2Y4Li41ZDk5NDY3ZTJiZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv Zm1nci9kZm1nci5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2ZtZ3IvZGZtZ3IuYwpAQCAtMjYs NiArMjYsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKICNpbmNsdWRlICJzdG9yYWdlL3No bWVtLmgiCiAjaW5jbHVkZSAidXRpbHMvaHNlYXJjaC5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0 aWxzLmgiCiAKIAogLyogc2lnbmF0dXJlIGZvciBQb3N0Z3JlU1FMLXNwZWNpZmljIGxpYnJhcnkg aW5pdCBmdW5jdGlvbiAqLwpAQCAtNjcxLDE0ICs2NzIsOSBAQCBmaW5kX3JlbmRlenZvdXNfdmFy aWFibGUoY29uc3QgY2hhciAqdmFyTmFtZSkKIAkvKiBDcmVhdGUgYSBoYXNodGFibGUgaWYgd2Ug aGF2ZW4ndCBhbHJlYWR5IGRvbmUgc28gaW4gdGhpcyBwcm9jZXNzICovCiAJaWYgKHJlbmRlenZv dXNIYXNoID09IE5VTEwpCiAJewotCQlIQVNIQ1RMCQljdGw7Ci0KLQkJY3RsLmtleXNpemUgPSBO QU1FREFUQUxFTjsKLQkJY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihyZW5kZXp2b3VzSGFzaEVudHJ5 KTsKLQkJcmVuZGV6dm91c0hhc2ggPSBoYXNoX2NyZWF0ZSgiUmVuZGV6dm91cyB2YXJpYWJsZSBo YXNoIiwKLQkJCQkJCQkJCSAxNiwKLQkJCQkJCQkJCSAmY3RsLAotCQkJCQkJCQkJIEhBU0hfRUxF TSB8IEhBU0hfU1RSSU5HUyk7CisJCXJlbmRlenZvdXNIYXNoID0gaGFzaF9tYWtlX2N4dChyZW5k ZXp2b3VzSGFzaEVudHJ5LCB2YXJOYW1lLAorCQkJCQkJCQkJICAgIlJlbmRlenZvdXMgdmFyaWFi bGUgaGFzaCIsIDE2LAorCQkJCQkJCQkJICAgVG9wTWVtb3J5Q29udGV4dCk7CiAJfQogCiAJLyog RmluZCBvciBjcmVhdGUgdGhlIGhhc2h0YWJsZSBlbnRyeSBmb3IgdGhpcyB2YXJOYW1lICovCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9mbWdyL2ZtZ3IuYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2ZtZ3IvZm1nci5jCmluZGV4IDA1OTg0ZTdlZjI2Li5kZWI4NTUxMWFkNSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvZm1nci9mbWdyLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv Zm1nci9mbWdyLmMKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJ1dGlscy9mbWdydGFiLmgi CiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisj aW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgog CiAvKgpAQCAtNTQ3LDE0ICs1NDgsOCBAQCByZWNvcmRfQ19mdW5jKEhlYXBUdXBsZSBwcm9jZWR1 cmVUdXBsZSwKIAkvKiBDcmVhdGUgdGhlIGhhc2ggdGFibGUgaWYgaXQgZG9lc24ndCBleGlzdCB5 ZXQgKi8KIAlpZiAoQ0Z1bmNIYXNoID09IE5VTEwpCiAJewotCQlIQVNIQ1RMCQloYXNoX2N0bDsK LQotCQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JCWhhc2hfY3RsLmVudHJ5c2l6 ZSA9IHNpemVvZihDRnVuY0hhc2hUYWJFbnRyeSk7Ci0JCUNGdW5jSGFzaCA9IGhhc2hfY3JlYXRl KCJDRnVuY0hhc2giLAotCQkJCQkJCQkxMDAsCi0JCQkJCQkJCSZoYXNoX2N0bCwKLQkJCQkJCQkJ SEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJCUNGdW5jSGFzaCA9IGhhc2hfbWFrZV9jeHQoQ0Z1 bmNIYXNoVGFiRW50cnksIGZuX29pZCwKKwkJCQkJCQkJICAiQ0Z1bmNIYXNoIiwgMTAwLCBUb3BN ZW1vcnlDb250ZXh0KTsKIAl9CiAKIAllbnRyeSA9IChDRnVuY0hhc2hUYWJFbnRyeSAqKQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYyBiL3NyYy9iYWNrZW5kL3V0aWxz L21pc2MvZ3VjLmMKaW5kZXggYWU5ZDVmM2ZiNzAuLjYxOGQwMTAwZDM4IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2Mv Z3VjLmMKQEAgLTg3MSw3ICs4NzEsNiBAQCBidWlsZF9ndWNfdmFyaWFibGVzKHZvaWQpCiB7CiAJ aW50CQkJc2l6ZV92YXJzOwogCWludAkJCW51bV92YXJzID0gMDsKLQlIQVNIQ1RMCQloYXNoX2N0 bDsKIAlHVUNIYXNoRW50cnkgKmhlbnRyeTsKIAlib29sCQlmb3VuZDsKIApAQCAtODk0LDE1ICs4 OTMsMTAgQEAgYnVpbGRfZ3VjX3ZhcmlhYmxlcyh2b2lkKQogCSAqLwogCXNpemVfdmFycyA9IG51 bV92YXJzICsgbnVtX3ZhcnMgLyA0OwogCi0JaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihjaGFy ICopOwotCWhhc2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihHVUNIYXNoRW50cnkpOwotCWhhc2hf Y3RsLmhhc2ggPSBndWNfbmFtZV9oYXNoOwotCWhhc2hfY3RsLm1hdGNoID0gZ3VjX25hbWVfbWF0 Y2g7Ci0JaGFzaF9jdGwuaGN4dCA9IEdVQ01lbW9yeUNvbnRleHQ7Ci0JZ3VjX2hhc2h0YWIgPSBo YXNoX2NyZWF0ZSgiR1VDIGhhc2ggdGFibGUiLAotCQkJCQkJCSAgc2l6ZV92YXJzLAotCQkJCQkJ CSAgJmhhc2hfY3RsLAotCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9GVU5DVElPTiB8IEhBU0hf Q09NUEFSRSB8IEhBU0hfQ09OVEVYVCk7CisJZ3VjX2hhc2h0YWIgPSBoYXNoX21ha2VfZm5fY3h0 KEdVQ0hhc2hFbnRyeSwgZ3VjbmFtZSwKKwkJCQkJCQkJICAgIkdVQyBoYXNoIHRhYmxlIiwgc2l6 ZV92YXJzLAorCQkJCQkJCQkgICBndWNfbmFtZV9oYXNoLCBndWNfbmFtZV9tYXRjaCwKKwkJCQkJ CQkJICAgR1VDTWVtb3J5Q29udGV4dCk7CiAKIAlmb3IgKGludCBpID0gMDsgQ29uZmlndXJlTmFt ZXNbaV0ubmFtZTsgaSsrKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2Mv aW5qZWN0aW9uX3BvaW50LmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2luamVjdGlvbl9wb2lu dC5jCmluZGV4IGMwNmIwZTliODAwLi5hNmNiNDY0MDJhYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9pbmplY3Rpb25fcG9pbnQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9t aXNjL2luamVjdGlvbl9wb2ludC5jCkBAIC0xMjcsMTYgKzEyNywxMCBAQCBpbmplY3Rpb25fcG9p bnRfY2FjaGVfYWRkKGNvbnN0IGNoYXIgKm5hbWUsCiAJLyogSWYgZmlyc3QgdGltZSwgaW5pdGlh bGl6ZSAqLwogCWlmIChJbmplY3Rpb25Qb2ludENhY2hlID09IE5VTEwpCiAJewotCQlIQVNIQ1RM CQloYXNoX2N0bDsKLQotCQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKGNoYXJbSU5KX05BTUVf TUFYTEVOXSk7Ci0JCWhhc2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihJbmplY3Rpb25Qb2ludENh Y2hlRW50cnkpOwotCQloYXNoX2N0bC5oY3h0ID0gVG9wTWVtb3J5Q29udGV4dDsKLQotCQlJbmpl Y3Rpb25Qb2ludENhY2hlID0gaGFzaF9jcmVhdGUoIkluamVjdGlvblBvaW50IGNhY2hlIGhhc2gi LAotCQkJCQkJCQkJCSAgTUFYX0lOSkVDVElPTl9QT0lOVFMsCi0JCQkJCQkJCQkJICAmaGFzaF9j dGwsCi0JCQkJCQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX1NUUklOR1MgfCBIQVNIX0NPTlRFWFQp OworCQlJbmplY3Rpb25Qb2ludENhY2hlID0gaGFzaF9tYWtlX2N4dChJbmplY3Rpb25Qb2ludENh Y2hlRW50cnksIG5hbWUsCisJCQkJCQkJCQkJCSJJbmplY3Rpb25Qb2ludCBjYWNoZSBoYXNoIiwK KwkJCQkJCQkJCQkJTUFYX0lOSkVDVElPTl9QT0lOVFMsCisJCQkJCQkJCQkJCVRvcE1lbW9yeUNv bnRleHQpOwogCX0KIAogCWVudHJ5ID0gKEluamVjdGlvblBvaW50Q2FjaGVFbnRyeSAqKQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYyBiL3NyYy9iYWNrZW5k L3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMKaW5kZXggNGZhNGQ0MzIwMjEuLjBhMTA4MmY0ODQ1IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jCisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMKQEAgLTEwMywyMyArMTAzLDE5IEBAIHN0YXRp YyBNZW1vcnlDb250ZXh0IFRvcFBvcnRhbENvbnRleHQgPSBOVUxMOwogdm9pZAogRW5hYmxlUG9y dGFsTWFuYWdlcih2b2lkKQogewotCUhBU0hDVEwJCWN0bDsKLQogCUFzc2VydChUb3BQb3J0YWxD b250ZXh0ID09IE5VTEwpOwogCiAJVG9wUG9ydGFsQ29udGV4dCA9IEFsbG9jU2V0Q29udGV4dENy ZWF0ZShUb3BNZW1vcnlDb250ZXh0LAogCQkJCQkJCQkJCQkgIlRvcFBvcnRhbENvbnRleHQiLAog CQkJCQkJCQkJCQkgQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7CiAKLQljdGwua2V5c2l6ZSA9IE1B WF9QT1JUQUxOQU1FX0xFTjsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9mKFBvcnRhbEhhc2hFbnQp OwotCiAJLyoKIAkgKiB1c2UgUE9SVEFMU19QRVJfVVNFUiBhcyBhIGd1ZXNzIG9mIGhvdyBtYW55 IGhhc2ggdGFibGUgZW50cmllcyB0bwogCSAqIGNyZWF0ZSwgaW5pdGlhbGx5CiAJICovCi0JUG9y dGFsSGFzaFRhYmxlID0gaGFzaF9jcmVhdGUoIlBvcnRhbCBoYXNoIiwgUE9SVEFMU19QRVJfVVNF UiwKLQkJCQkJCQkJICAmY3RsLCBIQVNIX0VMRU0gfCBIQVNIX1NUUklOR1MpOworCVBvcnRhbEhh c2hUYWJsZSA9IGhhc2hfbWFrZV9jeHQoUG9ydGFsSGFzaEVudCwgcG9ydGFsbmFtZSwKKwkJCQkJ CQkJCSJQb3J0YWwgaGFzaCIsIFBPUlRBTFNfUEVSX1VTRVIsCisJCQkJCQkJCQlUb3BNZW1vcnlD b250ZXh0KTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL3RpbWUvY29t Ym9jaWQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL3RpbWUvY29tYm9jaWQuYwppbmRleCA2MTRiN2Mx MDA2Yi4uNGMzMTY3NTUzNWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL3RpbWUvY29t Ym9jaWQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy90aW1lL2NvbWJvY2lkLmMKQEAgLTIxNCw4 ICsyMTQsNiBAQCBHZXRDb21ib0NvbW1hbmRJZChDb21tYW5kSWQgY21pbiwgQ29tbWFuZElkIGNt YXgpCiAJICovCiAJaWYgKGNvbWJvSGFzaCA9PSBOVUxMKQogCXsKLQkJSEFTSENUTAkJaGFzaF9j dGw7Ci0KIAkJLyogTWFrZSBhcnJheSBmaXJzdDsgZXhpc3RlbmNlIG9mIGhhc2ggdGFibGUgYXNz ZXJ0cyBhcnJheSBleGlzdHMgKi8KIAkJY29tYm9DaWRzID0gKENvbWJvQ2lkS2V5RGF0YSAqKQog CQkJTWVtb3J5Q29udGV4dEFsbG9jKFRvcFRyYW5zYWN0aW9uQ29udGV4dCwKQEAgLTIyMywxNCAr MjIxLDkgQEAgR2V0Q29tYm9Db21tYW5kSWQoQ29tbWFuZElkIGNtaW4sIENvbW1hbmRJZCBjbWF4 KQogCQlzaXplQ29tYm9DaWRzID0gQ0NJRF9BUlJBWV9TSVpFOwogCQl1c2VkQ29tYm9DaWRzID0g MDsKIAotCQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKENvbWJvQ2lkS2V5RGF0YSk7Ci0JCWhh c2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihDb21ib0NpZEVudHJ5RGF0YSk7Ci0JCWhhc2hfY3Rs LmhjeHQgPSBUb3BUcmFuc2FjdGlvbkNvbnRleHQ7Ci0KLQkJY29tYm9IYXNoID0gaGFzaF9jcmVh dGUoIkNvbWJvIENJRHMiLAotCQkJCQkJCQlDQ0lEX0hBU0hfU0laRSwKLQkJCQkJCQkJJmhhc2hf Y3RsLAotCQkJCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwkJ Y29tYm9IYXNoID0gaGFzaF9tYWtlX2N4dChDb21ib0NpZEVudHJ5RGF0YSwga2V5LAorCQkJCQkJ CQkgICJDb21ibyBDSURzIiwgQ0NJRF9IQVNIX1NJWkUsCisJCQkJCQkJCSAgVG9wVHJhbnNhY3Rp b25Db250ZXh0KTsKIAl9CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL3BsL3BscGVybC9wbHBlcmwu YyBiL3NyYy9wbC9wbHBlcmwvcGxwZXJsLmMKaW5kZXggMDJlY2VkM2IyYzUuLjQ5MDQ0YmM4MDhi IDEwMDY0NAotLS0gYS9zcmMvcGwvcGxwZXJsL3BscGVybC5jCisrKyBiL3NyYy9wbC9wbHBlcmwv cGxwZXJsLmMKQEAgLTM5MCw3ICszOTAsNiBAQCBfUEdfaW5pdCh2b2lkKQogCSAqICJwbHBlcmwu dXNlX3N0cmljdCIKIAkgKi8KIAlzdGF0aWMgYm9vbCBpbml0ZWQgPSBmYWxzZTsKLQlIQVNIQ1RM CQloYXNoX2N0bDsKIAogCWlmIChpbml0ZWQpCiAJCXJldHVybjsKQEAgLTQ2MCwxOSArNDU5LDEz IEBAIF9QR19pbml0KHZvaWQpCiAJLyoKIAkgKiBDcmVhdGUgaGFzaCB0YWJsZXMuCiAJICovCi0J aGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihPaWQpOwotCWhhc2hfY3RsLmVudHJ5c2l6ZSA9IHNp emVvZihwbHBlcmxfaW50ZXJwX2Rlc2MpOwotCXBscGVybF9pbnRlcnBfaGFzaCA9IGhhc2hfY3Jl YXRlKCJQTC9QZXJsIGludGVycHJldGVycyIsCi0JCQkJCQkJCQkgOCwKLQkJCQkJCQkJCSAmaGFz aF9jdGwsCi0JCQkJCQkJCQkgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7Ci0KLQloYXNoX2N0bC5r ZXlzaXplID0gc2l6ZW9mKHBscGVybF9wcm9jX2tleSk7Ci0JaGFzaF9jdGwuZW50cnlzaXplID0g c2l6ZW9mKHBscGVybF9wcm9jX3B0cik7Ci0JcGxwZXJsX3Byb2NfaGFzaCA9IGhhc2hfY3JlYXRl KCJQTC9QZXJsIHByb2NlZHVyZXMiLAotCQkJCQkJCQkgICAzMiwKLQkJCQkJCQkJICAgJmhhc2hf Y3RsLAotCQkJCQkJCQkgICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwlwbHBlcmxfaW50ZXJw X2hhc2ggPSBoYXNoX21ha2VfY3h0KHBscGVybF9pbnRlcnBfZGVzYywgdXNlcl9pZCwKKwkJCQkJ CQkJCSAgICJQTC9QZXJsIGludGVycHJldGVycyIsIDgsCisJCQkJCQkJCQkgICBUb3BNZW1vcnlD b250ZXh0KTsKKworCXBscGVybF9wcm9jX2hhc2ggPSBoYXNoX21ha2VfY3h0KHBscGVybF9wcm9j X3B0ciwgcHJvY19rZXksCisJCQkJCQkJCQkgIlBML1BlcmwgcHJvY2VkdXJlcyIsIDMyLAorCQkJ CQkJCQkJIFRvcE1lbW9yeUNvbnRleHQpOwogCiAJLyoKIAkgKiBTYXZlIHRoZSBkZWZhdWx0IG9w bWFzay4KQEAgLTU3OCwxNCArNTcxLDkgQEAgc2VsZWN0X3BlcmxfY29udGV4dChib29sIHRydXN0 ZWQpCiAJLyogTWFrZSBzdXJlIHdlIGhhdmUgYSBxdWVyeV9oYXNoIGZvciB0aGlzIGludGVycHJl dGVyICovCiAJaWYgKGludGVycF9kZXNjLT5xdWVyeV9oYXNoID09IE5VTEwpCiAJewotCQlIQVNI Q1RMCQloYXNoX2N0bDsKLQotCQloYXNoX2N0bC5rZXlzaXplID0gTkFNRURBVEFMRU47Ci0JCWhh c2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihwbHBlcmxfcXVlcnlfZW50cnkpOwotCQlpbnRlcnBf ZGVzYy0+cXVlcnlfaGFzaCA9IGhhc2hfY3JlYXRlKCJQTC9QZXJsIHF1ZXJpZXMiLAotCQkJCQkJ CQkJCQkgIDMyLAotCQkJCQkJCQkJCQkgICZoYXNoX2N0bCwKLQkJCQkJCQkJCQkJICBIQVNIX0VM RU0gfCBIQVNIX1NUUklOR1MpOworCQlpbnRlcnBfZGVzYy0+cXVlcnlfaGFzaCA9IGhhc2hfbWFr ZV9jeHQocGxwZXJsX3F1ZXJ5X2VudHJ5LCBxdWVyeV9uYW1lLAorCQkJCQkJCQkJCQkJIlBML1Bl cmwgcXVlcmllcyIsIDMyLAorCQkJCQkJCQkJCQkJVG9wTWVtb3J5Q29udGV4dCk7CiAJfQogCiAJ LyoKZGlmZiAtLWdpdCBhL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9leGVjLmMgYi9zcmMvcGwvcGxw Z3NxbC9zcmMvcGxfZXhlYy5jCmluZGV4IDc1MzI1MTE3ZWM5Li5mYmI4OGFmZmExNSAxMDA2NDQK LS0tIGEvc3JjL3BsL3BscGdzcWwvc3JjL3BsX2V4ZWMuYworKysgYi9zcmMvcGwvcGxwZ3NxbC9z cmMvcGxfZXhlYy5jCkBAIC0zOTk1LDggKzM5OTUsNiBAQCBwbHBnc3FsX2VzdGF0ZV9zZXR1cChQ THBnU1FMX2V4ZWNzdGF0ZSAqZXN0YXRlLAogCQkJCQkgRVN0YXRlICpzaW1wbGVfZXZhbF9lc3Rh dGUsCiAJCQkJCSBSZXNvdXJjZU93bmVyIHNpbXBsZV9ldmFsX3Jlc293bmVyKQogewotCUhBU0hD VEwJCWN0bDsKLQogCS8qIHRoaXMgbGluayB3aWxsIGJlIHJlc3RvcmVkIGF0IGV4aXQgZnJvbSBw bHBnc3FsX2NhbGxfaGFuZGxlciAqLwogCWZ1bmMtPmN1cl9lc3RhdGUgPSBlc3RhdGU7CiAKQEAg LTQwNTEsMTIgKzQwNDksMTAgQEAgcGxwZ3NxbF9lc3RhdGVfc2V0dXAoUExwZ1NRTF9leGVjc3Rh dGUgKmVzdGF0ZSwKIAkvKiBDcmVhdGUgdGhlIHNlc3Npb24td2lkZSBjYXN0LWV4cHJlc3Npb24g aGFzaCBpZiB3ZSBkaWRuJ3QgYWxyZWFkeSAqLwogCWlmIChjYXN0X2V4cHJfaGFzaCA9PSBOVUxM KQogCXsKLQkJY3RsLmtleXNpemUgPSBzaXplb2YocGxwZ3NxbF9DYXN0SGFzaEtleSk7Ci0JCWN0 bC5lbnRyeXNpemUgPSBzaXplb2YocGxwZ3NxbF9DYXN0RXhwckhhc2hFbnRyeSk7Ci0JCWNhc3Rf ZXhwcl9oYXNoID0gaGFzaF9jcmVhdGUoIlBMcGdTUUwgY2FzdCBleHByZXNzaW9ucyIsCi0JCQkJ CQkJCQkgMTYsCS8qIHN0YXJ0IHNtYWxsIGFuZCBleHRlbmQgKi8KLQkJCQkJCQkJCSAmY3RsLAot CQkJCQkJCQkJIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCQljYXN0X2V4cHJfaGFzaCA9IGhh c2hfbWFrZV9jeHQocGxwZ3NxbF9DYXN0RXhwckhhc2hFbnRyeSwga2V5LAorCQkJCQkJCQkJICAg IlBMcGdTUUwgY2FzdCBleHByZXNzaW9ucyIsCisJCQkJCQkJCQkgICAxNiwJLyogc3RhcnQgc21h bGwgYW5kIGV4dGVuZCAqLworCQkJCQkJCQkJICAgVG9wTWVtb3J5Q29udGV4dCk7CiAJfQogCiAJ Lyogc2V0IHVwIGZvciB1c2Ugb2YgYXBwcm9wcmlhdGUgc2ltcGxlLWV4cHJlc3Npb24gRVN0YXRl IGFuZCBjYXN0IGhhc2ggKi8KQEAgLTQwNjQsMTMgKzQwNjAsOSBAQCBwbHBnc3FsX2VzdGF0ZV9z ZXR1cChQTHBnU1FMX2V4ZWNzdGF0ZSAqZXN0YXRlLAogCXsKIAkJZXN0YXRlLT5zaW1wbGVfZXZh bF9lc3RhdGUgPSBzaW1wbGVfZXZhbF9lc3RhdGU7CiAJCS8qIFByaXZhdGUgY2FzdCBoYXNoIGp1 c3QgbGl2ZXMgaW4gZnVuY3Rpb24ncyBtYWluIGNvbnRleHQgKi8KLQkJY3RsLmtleXNpemUgPSBz aXplb2YocGxwZ3NxbF9DYXN0SGFzaEtleSk7Ci0JCWN0bC5lbnRyeXNpemUgPSBzaXplb2YocGxw Z3NxbF9DYXN0SGFzaEVudHJ5KTsKLQkJY3RsLmhjeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsK LQkJZXN0YXRlLT5jYXN0X2hhc2ggPSBoYXNoX2NyZWF0ZSgiUExwZ1NRTCBwcml2YXRlIGNhc3Qg Y2FjaGUiLAotCQkJCQkJCQkJCTE2LCAvKiBzdGFydCBzbWFsbCBhbmQgZXh0ZW5kICovCi0JCQkJ CQkJCQkJJmN0bCwKLQkJCQkJCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05U RVhUKTsKKwkJZXN0YXRlLT5jYXN0X2hhc2ggPSBoYXNoX21ha2UocGxwZ3NxbF9DYXN0SGFzaEVu dHJ5LCBrZXksCisJCQkJCQkJCQkgICJQTHBnU1FMIHByaXZhdGUgY2FzdCBjYWNoZSIsCisJCQkJ CQkJCQkgIDE2KTsJLyogc3RhcnQgc21hbGwgYW5kIGV4dGVuZCAqLwogCX0KIAllbHNlCiAJewpA QCAtNDA3OCwxMiArNDA3MCwxMCBAQCBwbHBnc3FsX2VzdGF0ZV9zZXR1cChQTHBnU1FMX2V4ZWNz dGF0ZSAqZXN0YXRlLAogCQkvKiBDcmVhdGUgdGhlIHNlc3Npb24td2lkZSBjYXN0LWluZm8gaGFz aCB0YWJsZSBpZiB3ZSBkaWRuJ3QgYWxyZWFkeSAqLwogCQlpZiAoc2hhcmVkX2Nhc3RfaGFzaCA9 PSBOVUxMKQogCQl7Ci0JCQljdGwua2V5c2l6ZSA9IHNpemVvZihwbHBnc3FsX0Nhc3RIYXNoS2V5 KTsKLQkJCWN0bC5lbnRyeXNpemUgPSBzaXplb2YocGxwZ3NxbF9DYXN0SGFzaEVudHJ5KTsKLQkJ CXNoYXJlZF9jYXN0X2hhc2ggPSBoYXNoX2NyZWF0ZSgiUExwZ1NRTCBjYXN0IGNhY2hlIiwKLQkJ CQkJCQkJCQkgICAxNiwJLyogc3RhcnQgc21hbGwgYW5kIGV4dGVuZCAqLwotCQkJCQkJCQkJCSAg ICZjdGwsCi0JCQkJCQkJCQkJICAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJCQlzaGFyZWRf Y2FzdF9oYXNoID0gaGFzaF9tYWtlX2N4dChwbHBnc3FsX0Nhc3RIYXNoRW50cnksIGtleSwKKwkJ CQkJCQkJCQkJICJQTHBnU1FMIGNhc3QgY2FjaGUiLAorCQkJCQkJCQkJCQkgMTYsCS8qIHN0YXJ0 IHNtYWxsIGFuZCBleHRlbmQgKi8KKwkJCQkJCQkJCQkJIFRvcE1lbW9yeUNvbnRleHQpOwogCQl9 CiAJCWVzdGF0ZS0+Y2FzdF9oYXNoID0gc2hhcmVkX2Nhc3RfaGFzaDsKIAl9CmRpZmYgLS1naXQg YS9zcmMvcGwvcGxweXRob24vcGxweV9wbHB5bW9kdWxlLmMgYi9zcmMvcGwvcGxweXRob24vcGxw eV9wbHB5bW9kdWxlLmMKaW5kZXggNzI4MDZjMTdlMTcuLjcxYTc2Yjg1ZWM4IDEwMDY0NAotLS0g YS9zcmMvcGwvcGxweXRob24vcGxweV9wbHB5bW9kdWxlLmMKKysrIGIvc3JjL3BsL3BscHl0aG9u L3BscHlfcGxweW1vZHVsZS5jCkBAIC0xNiw2ICsxNiw3IEBACiAjaW5jbHVkZSAicGxweV9zdWJ4 YWN0b2JqZWN0LmgiCiAjaW5jbHVkZSAicGxweV91dGlsLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVp bHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogCiBIVEFCCSAgICpQTHlfc3Bp X2V4Y2VwdGlvbnMgPSBOVUxMOwogCkBAIC0xNDUsNyArMTQ2LDYgQEAgc3RhdGljIHZvaWQKIFBM eV9hZGRfZXhjZXB0aW9ucyhQeU9iamVjdCAqcGxweSkKIHsKIAlQeU9iamVjdCAgICpleGNtb2Q7 Ci0JSEFTSENUTAkJaGFzaF9jdGw7CiAKIAlQTHlfZXhjX2Vycm9yID0gUEx5X2NyZWF0ZV9leGNl cHRpb24oInBscHkuRXJyb3IiLCBOVUxMLCBOVUxMLAogCQkJCQkJCQkJCSAiRXJyb3IiLCBwbHB5 KTsKQEAgLTE1OCwxMCArMTU4LDkgQEAgUEx5X2FkZF9leGNlcHRpb25zKFB5T2JqZWN0ICpwbHB5 KQogCWlmIChleGNtb2QgPT0gTlVMTCkKIAkJUEx5X2Vsb2coRVJST1IsICJjb3VsZCBub3QgY3Jl YXRlIHRoZSBzcGlleGNlcHRpb25zIG1vZHVsZSIpOwogCi0JaGFzaF9jdGwua2V5c2l6ZSA9IHNp emVvZihpbnQpOwotCWhhc2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihQTHlFeGNlcHRpb25FbnRy eSk7Ci0JUEx5X3NwaV9leGNlcHRpb25zID0gaGFzaF9jcmVhdGUoIlBML1B5dGhvbiBTUEkgZXhj ZXB0aW9ucyIsIDI1NiwKLQkJCQkJCQkJCSAmaGFzaF9jdGwsIEhBU0hfRUxFTSB8IEhBU0hfQkxP QlMpOworCVBMeV9zcGlfZXhjZXB0aW9ucyA9IGhhc2hfbWFrZV9jeHQoUEx5RXhjZXB0aW9uRW50 cnksIHNxbHN0YXRlLAorCQkJCQkJCQkJICAgIlBML1B5dGhvbiBTUEkgZXhjZXB0aW9ucyIsIDI1 NiwKKwkJCQkJCQkJCSAgIFRvcE1lbW9yeUNvbnRleHQpOwogCiAJUEx5X2dlbmVyYXRlX3NwaV9l eGNlcHRpb25zKGV4Y21vZCwgUEx5X2V4Y19zcGlfZXJyb3IpOwogCmRpZmYgLS1naXQgYS9zcmMv cGwvcGxweXRob24vcGxweV9wcm9jZWR1cmUuYyBiL3NyYy9wbC9wbHB5dGhvbi9wbHB5X3Byb2Nl ZHVyZS5jCmluZGV4IDc1MGJhNTg2ZTBjLi5mYzcyOGY3YWI4YSAxMDA2NDQKLS0tIGEvc3JjL3Bs L3BscHl0aG9uL3BscHlfcHJvY2VkdXJlLmMKKysrIGIvc3JjL3BsL3BscHl0aG9uL3BscHlfcHJv Y2VkdXJlLmMKQEAgLTI5LDEyICsyOSw5IEBAIHN0YXRpYyBjaGFyICpQTHlfcHJvY2VkdXJlX211 bmdlX3NvdXJjZShjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpzcmMpOwogdm9pZAogaW5p dF9wcm9jZWR1cmVfY2FjaGVzKHZvaWQpCiB7Ci0JSEFTSENUTAkJaGFzaF9jdGw7Ci0KLQloYXNo X2N0bC5rZXlzaXplID0gc2l6ZW9mKFBMeVByb2NlZHVyZUtleSk7Ci0JaGFzaF9jdGwuZW50cnlz aXplID0gc2l6ZW9mKFBMeVByb2NlZHVyZUVudHJ5KTsKLQlQTHlfcHJvY2VkdXJlX2NhY2hlID0g aGFzaF9jcmVhdGUoIlBML1B5dGhvbiBwcm9jZWR1cmVzIiwgMzIsICZoYXNoX2N0bCwKLQkJCQkJ CQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJUEx5X3Byb2NlZHVyZV9jYWNoZSA9IGhh c2hfbWFrZV9jeHQoUEx5UHJvY2VkdXJlRW50cnksIGtleSwKKwkJCQkJCQkJCQkiUEwvUHl0aG9u IHByb2NlZHVyZXMiLCAzMiwKKwkJCQkJCQkJCQlUb3BNZW1vcnlDb250ZXh0KTsKIH0KIAogLyoK ZGlmZiAtLWdpdCBhL3NyYy9wbC90Y2wvcGx0Y2wuYyBiL3NyYy9wbC90Y2wvcGx0Y2wuYwppbmRl eCAxODc2OThjY2RkMi4uNzA3MDA1MTQ2M2QgMTAwNjQ0Ci0tLSBhL3NyYy9wbC90Y2wvcGx0Y2wu YworKysgYi9zcmMvcGwvdGNsL3BsdGNsLmMKQEAgLTQwOCw3ICs0MDgsNiBAQCB2b2lkCiBfUEdf aW5pdCh2b2lkKQogewogCVRjbF9Ob3RpZmllclByb2NzIG5vdGlmaWVyOwotCUhBU0hDVEwJCWhh c2hfY3RsOwogCiAJLyogQmUgc3VyZSB3ZSBkbyBpbml0aWFsaXphdGlvbiBvbmx5IG9uY2UgKHNo b3VsZCBiZSByZWR1bmRhbnQgbm93KSAqLwogCWlmIChwbHRjbF9wbV9pbml0X2RvbmUpCkBAIC00 NDYsMjIgKzQ0NSwxNiBAQCBfUEdfaW5pdCh2b2lkKQogCS8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIAkgKiBDcmVhdGUgdGhlIGhh c2ggdGFibGUgZm9yIHdvcmtpbmcgaW50ZXJwcmV0ZXJzCiAJICoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQloYXNoX2N0bC5rZXlz aXplID0gc2l6ZW9mKE9pZCk7Ci0JaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKHBsdGNsX2lu dGVycF9kZXNjKTsKLQlwbHRjbF9pbnRlcnBfaHRhYiA9IGhhc2hfY3JlYXRlKCJQTC9UY2wgaW50 ZXJwcmV0ZXJzIiwKLQkJCQkJCQkJCTgsCi0JCQkJCQkJCQkmaGFzaF9jdGwsCi0JCQkJCQkJCQlI QVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwlwbHRjbF9pbnRlcnBfaHRhYiA9IGhhc2hfbWFrZV9j eHQocGx0Y2xfaW50ZXJwX2Rlc2MsIHVzZXJfaWQsCisJCQkJCQkJCQkgICJQTC9UY2wgaW50ZXJw cmV0ZXJzIiwgOCwKKwkJCQkJCQkJCSAgVG9wTWVtb3J5Q29udGV4dCk7CiAKIAkvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAJICog Q3JlYXRlIHRoZSBoYXNoIHRhYmxlIGZvciBmdW5jdGlvbiBsb29rdXAKIAkgKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCWhhc2hf Y3RsLmtleXNpemUgPSBzaXplb2YocGx0Y2xfcHJvY19rZXkpOwotCWhhc2hfY3RsLmVudHJ5c2l6 ZSA9IHNpemVvZihwbHRjbF9wcm9jX3B0cik7Ci0JcGx0Y2xfcHJvY19odGFiID0gaGFzaF9jcmVh dGUoIlBML1RjbCBmdW5jdGlvbnMiLAotCQkJCQkJCQkgIDEwMCwKLQkJCQkJCQkJICAmaGFzaF9j dGwsCi0JCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJcGx0Y2xfcHJvY19odGFi ID0gaGFzaF9tYWtlX2N4dChwbHRjbF9wcm9jX3B0ciwgcHJvY19rZXksCisJCQkJCQkJCQkiUEwv VGNsIGZ1bmN0aW9ucyIsIDEwMCwKKwkJCQkJCQkJCVRvcE1lbW9yeUNvbnRleHQpOwogCiAJLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgogCSAqIERlZmluZSBQTC9UY2wncyBjdXN0b20gR1VDcwpkaWZmIC0tZ2l0IGEvc3JjL3RpbWV6 b25lL3BndHouYyBiL3NyYy90aW1lem9uZS9wZ3R6LmMKaW5kZXggZWFjOTg4YzIxZTcuLmM2OGRl OTNiNTM1IDEwMDY0NAotLS0gYS9zcmMvdGltZXpvbmUvcGd0ei5jCisrKyBiL3NyYy90aW1lem9u ZS9wZ3R6LmMKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJwZ3R6LmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9mZC5oIgogI2luY2x1ZGUgInV0aWxzL2hzZWFyY2guaCIKKyNpbmNsdWRlICJ1dGls cy9tZW11dGlscy5oIgogCiAKIC8qIEN1cnJlbnQgc2Vzc2lvbiB0aW1lem9uZSAoY29udHJvbGxl ZCBieSBUaW1lWm9uZSBHVUMpICovCkBAIC0yMDEsMTUgKzIwMiw4IEBAIHN0YXRpYyBIVEFCICp0 aW1lem9uZV9jYWNoZSA9IE5VTEw7CiBzdGF0aWMgYm9vbAogaW5pdF90aW1lem9uZV9oYXNodGFi bGUodm9pZCkKIHsKLQlIQVNIQ1RMCQloYXNoX2N0bDsKLQotCWhhc2hfY3RsLmtleXNpemUgPSBU Wl9TVFJMRU5fTUFYICsgMTsKLQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YocGdfdHpfY2Fj aGUpOwotCi0JdGltZXpvbmVfY2FjaGUgPSBoYXNoX2NyZWF0ZSgiVGltZXpvbmVzIiwKLQkJCQkJ CQkJIDQsCi0JCQkJCQkJCSAmaGFzaF9jdGwsCi0JCQkJCQkJCSBIQVNIX0VMRU0gfCBIQVNIX1NU UklOR1MpOworCXRpbWV6b25lX2NhY2hlID0gaGFzaF9tYWtlX2N4dChwZ190el9jYWNoZSwgdHpu YW1ldXBwZXIsCisJCQkJCQkJCSAgICJUaW1lem9uZXMiLCA0LCBUb3BNZW1vcnlDb250ZXh0KTsK IAlpZiAoIXRpbWV6b25lX2NhY2hlKQogCQlyZXR1cm4gZmFsc2U7CiAKLS0gCjIuNTIuMAoK --558bd6e5e3266abf27d109104dd5d665478502ad57771e87f437cda96460 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v9-0004-Use-foreach_hash-macro-throughout-the-codebase.patch Content-Type: text/x-patch; charset=utf-8; name=v9-0004-Use-foreach_hash-macro-throughout-the-codebase.patch RnJvbSA2MWM2NjFiODczMjVkOGIxODQxNjFmYzkzMzg0MTI1MWVhMjFhNTc2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBUaHUsIDQgRGVjIDIwMjUgMTU6Mzk6MDkgKzAxMDAKU3ViamVjdDogW1BBVENIIHY5 IDQvNV0gVXNlIGZvcmVhY2hfaGFzaCBtYWNybyB0aHJvdWdob3V0IHRoZSBjb2RlYmFzZQoKVGhp cyBzdGFydHMgdXNpbmcgdGhlIG5ldyBmb3JlYWNoX2hhc2ggbWFjcm8gdGhyb3VnaG91dCB0aGUg Y29kZWJhc2UuClRoaXMgbWFrZXMgY29kZSBlYXNpZXIgdG8gcmVhZCwgYnV0IG9idmlvdXNseSBk b2VzIGludHJvZHVjZQpiYWNrcGF0Y2hpbmcgcHJvYmxlbXMuIFdlIGNhbiBjaG9vc2Ugbm90IHRv IGRvIHRoaXMgcmVmYWN0b3IgdG8gYXZvaWQKdGhhdC4gT3Igd2UgY291bGQgaW5zdGVhZCBjaG9v c2UgdG8gZG8gdGhlIHJlZmFjdG9yIGFuZCB0aGVuIGJhY2twYXRjaAp0aGVzZSBuZXcgbWFjcm9z IHNvIHRoZXkgY2FuIGJlIHVzZWQgaW4gYmFja3BhdGNoZWQgY29kZS4KCkF0IHRoZSB2ZXJ5IGxl YXN0IHdlIHNob3VsZCBjaG9vc2UgYSBmZXcgcGxhY2VzIHdoZXJlIHdlIHVzZSB0aGUgbmV3Cm1h Y3JvcyB0byBtYWtlIHN1cmUgdGhleSBoYXZlIGNvdmVyYWdlLgotLS0KIGNvbnRyaWIvZGJsaW5r L2RibGluay5jICAgICAgICAgICAgICAgICAgICAgICB8ICA1ICstCiAuLi4vcGdfc3RhdF9zdGF0 ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jICAgfCAzOSArKystLS0tLS0KIGNvbnRyaWIvcGdf dHJnbS90cmdtX3JlZ2V4cC5jICAgICAgICAgICAgICAgICB8IDE4ICstLS0KIGNvbnRyaWIvcG9z dGdyZXNfZmR3L2Nvbm5lY3Rpb24uYyAgICAgICAgICAgICB8IDI2ICsrLS0tLQogY29udHJpYi9w b3N0Z3Jlc19mZHcvc2hpcHBhYmxlLmMgICAgICAgICAgICAgIHwgIDYgKy0KIHNyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3Jld3JpdGVoZWFwLmMgICAgICAgICB8IDE4ICstLS0KIHNyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3hsb2d1dGlscy5jICAgICAgICB8IDIwICstLS0tCiBzcmMvYmFja2Vu ZC9jYXRhbG9nL3BnX2VudW0uYyAgICAgICAgICAgICAgICAgfCAxNiArKy0tCiBzcmMvYmFja2Vu ZC9jYXRhbG9nL3N0b3JhZ2UuYyAgICAgICAgICAgICAgICAgfCAxOCArKy0tCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy9wcmVwYXJlLmMgICAgICAgICAgICAgICAgfCAxMiArLS0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgICAgICB8ICA3ICstCiBzcmMvYmFja2VuZC9v cHRpbWl6ZXIvdXRpbC9wcmVkdGVzdC5jICAgICAgICAgfCAgNyArLQogc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX29wZXIuYyAgICAgICAgICAgICAgIHwgIDcgKy0KIHNyYy9iYWNrZW5kL3BhcnRp dGlvbmluZy9wYXJ0ZGVzYy5jICAgICAgICAgICB8ICA2ICstCiBzcmMvYmFja2VuZC9wb3N0bWFz dGVyL2F1dG92YWN1dW0uYyAgICAgICAgICAgfCAgNyArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9yZWxhdGlvbi5jICAgIHwgMzcgKystLS0tLS0KIC4uLi9yZXBsaWNhdGlvbi9s b2dpY2FsL3Jlb3JkZXJidWZmZXIuYyAgICAgICB8IDEyICstLQogc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyAgIHwgMjQgKystLS0tCiBzcmMvYmFja2VuZC9zdG9y YWdlL2J1ZmZlci9idWZtZ3IuYyAgICAgICAgICAgfCAxMCArLS0KIHNyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL3NobWVtLmMgICAgICAgICAgICAgICB8IDEyICstLQogc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvc3RhbmRieS5jICAgICAgICAgICAgIHwgMTIgKy0tCiBzcmMvYmFja2VuZC9zdG9yYWdl L2xtZ3IvbG9jay5jICAgICAgICAgICAgICAgfCA2NyArKystLS0tLS0tLS0tLS0KIHNyYy9iYWNr ZW5kL3N0b3JhZ2UvbG1nci9sd2xvY2suYyAgICAgICAgICAgICB8ICA3ICstCiBzcmMvYmFja2Vu ZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMgICAgICAgICAgfCAxOCArLS0tCiBzcmMvYmFja2Vu ZC9zdG9yYWdlL3NtZ3Ivc21nci5jICAgICAgICAgICAgICAgfCAgNyArLQogc3JjL2JhY2tlbmQv c3RvcmFnZS9zeW5jL3N5bmMuYyAgICAgICAgICAgICAgIHwgMTMgKy0tCiBzcmMvYmFja2VuZC90 c2VhcmNoL3RzX3R5cGFuYWx5emUuYyAgICAgICAgICAgfCAxMSArLS0KIHNyYy9iYWNrZW5kL3V0 aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYyAgICAgICB8ICA2ICstCiBzcmMvYmFja2VuZC91dGls cy9hZHQvYXJyYXlfdHlwYW5hbHl6ZS5jICAgICAgfCAxNyArKy0tCiBzcmMvYmFja2VuZC91dGls cy9jYWNoZS9yZWxjYWNoZS5jICAgICAgICAgICAgfCA1MyArKysrLS0tLS0tLS0KIHNyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL3JlbGZpbGVudW1iZXJtYXAuYyAgICB8ICA2ICstCiBzcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9zcGNjYWNoZS5jICAgICAgICAgICAgfCAgNiArLQogc3JjL2JhY2tlbmQv dXRpbHMvY2FjaGUvdHNfY2FjaGUuYyAgICAgICAgICAgIHwgIDUgKy0KIHNyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL3R5cGNhY2hlLmMgICAgICAgICAgICB8IDE0ICstLQogc3JjL2JhY2tlbmQvdXRp bHMvbWlzYy9ndWMuYyAgICAgICAgICAgICAgICAgIHwgMzAgKystLS0tLQogc3JjL2JhY2tlbmQv dXRpbHMvbW1nci9wb3J0YWxtZW0uYyAgICAgICAgICAgIHwgODUgKysrLS0tLS0tLS0tLS0tLS0t LQogc3JjL3BsL3BscGVybC9wbHBlcmwuYyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDYgKy0K IDM3IGZpbGVzIGNoYW5nZWQsIDE0MiBpbnNlcnRpb25zKCspLCA1MjggZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvY29udHJpYi9kYmxpbmsvZGJsaW5rLmMgYi9jb250cmliL2RibGluay9kYmxp bmsuYwppbmRleCAxOTI0MThkZjRhZi4uNDNkNjFjOWNmNjUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIv ZGJsaW5rL2RibGluay5jCisrKyBiL2NvbnRyaWIvZGJsaW5rL2RibGluay5jCkBAIC0xMjc1LDE0 ICsxMjc1LDExIEBAIFBHX0ZVTkNUSU9OX0lORk9fVjEoZGJsaW5rX2dldF9jb25uZWN0aW9ucyk7 CiBEYXR1bQogZGJsaW5rX2dldF9jb25uZWN0aW9ucyhQR19GVU5DVElPTl9BUkdTKQogewotCUhB U0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JcmVtb3RlQ29ubkhhc2hFbnQgKmhlbnRyeTsKIAlBcnJh eUJ1aWxkU3RhdGUgKmFzdGF0ZSA9IE5VTEw7CiAKIAlpZiAocmVtb3RlQ29ubkhhc2gpCiAJewot CQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIHJlbW90ZUNvbm5IYXNoKTsKLQkJd2hpbGUgKChoZW50 cnkgPSAocmVtb3RlQ29ubkhhc2hFbnQgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBO VUxMKQorCQlmb3JlYWNoX2hhc2gocmVtb3RlQ29ubkhhc2hFbnQsIGhlbnRyeSwgcmVtb3RlQ29u bkhhc2gpCiAJCXsKIAkJCS8qIGlnbm9yZSBpdCBpZiBpdCdzIG5vdCBhbiBvcGVuIGNvbm5lY3Rp b24gKi8KIAkJCWlmIChoZW50cnktPnJjb25uLmNvbm4gPT0gTlVMTCkKZGlmZiAtLWdpdCBhL2Nv bnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jIGIvY29udHJpYi9w Z19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMKaW5kZXggOGE2NzM5MGU1NjEu LjkxOTNkM2QxOGMzIDEwMDY0NAotLS0gYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19z dGF0X3N0YXRlbWVudHMuYworKysgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0 X3N0YXRlbWVudHMuYwpAQCAtNzQxLDkgKzc0MSw3IEBAIHBnc3Nfc2htZW1fc2h1dGRvd24oaW50 IGNvZGUsIERhdHVtIGFyZykKIAlGSUxFCSAgICpmaWxlOwogCWNoYXIJICAgKnFidWZmZXIgPSBO VUxMOwogCVNpemUJCXFidWZmZXJfc2l6ZSA9IDA7Ci0JSEFTSF9TRVFfU1RBVFVTIGhhc2hfc2Vx OwogCWludDMyCQludW1fZW50cmllczsKLQlwZ3NzRW50cnkgICplbnRyeTsKIAogCS8qIERvbid0 IHRyeSB0byBkdW1wIGR1cmluZyBhIGNyYXNoLiAqLwogCWlmIChjb2RlKQpAQCAtNzc3LDggKzc3 NSw3IEBAIHBnc3Nfc2htZW1fc2h1dGRvd24oaW50IGNvZGUsIERhdHVtIGFyZykKIAkgKiBXaGVu IHNlcmlhbGl6aW5nIHRvIGRpc2ssIHdlIHN0b3JlIHF1ZXJ5IHRleHRzIGltbWVkaWF0ZWx5IGFm dGVyIHRoZWlyCiAJICogZW50cnkgZGF0YS4gIEFueSBvcnBoYW5lZCBxdWVyeSB0ZXh0cyBhcmUg dGhlcmVieSBleGNsdWRlZC4KIAkgKi8KLQloYXNoX3NlcV9pbml0KCZoYXNoX3NlcSwgcGdzc19o YXNoKTsKLQl3aGlsZSAoKGVudHJ5ID0gaGFzaF9zZXFfc2VhcmNoKCZoYXNoX3NlcSkpICE9IE5V TEwpCisJZm9yZWFjaF9oYXNoKHBnc3NFbnRyeSwgZW50cnksIHBnc3NfaGFzaCkKIAl7CiAJCWlu dAkJCWxlbiA9IGVudHJ5LT5xdWVyeV9sZW47CiAJCWNoYXIJICAgKnFzdHIgPSBxdGV4dF9mZXRj aChlbnRyeS0+cXVlcnlfb2Zmc2V0LCBsZW4sCkBAIC03OTAsOCArNzg3LDggQEAgcGdzc19zaG1l bV9zaHV0ZG93bihpbnQgY29kZSwgRGF0dW0gYXJnKQogCQlpZiAoZndyaXRlKGVudHJ5LCBzaXpl b2YocGdzc0VudHJ5KSwgMSwgZmlsZSkgIT0gMSB8fAogCQkJZndyaXRlKHFzdHIsIDEsIGxlbiAr IDEsIGZpbGUpICE9IGxlbiArIDEpCiAJCXsKLQkJCS8qIG5vdGU6IHdlIGFzc3VtZSBoYXNoX3Nl cV90ZXJtIHdvbid0IGNoYW5nZSBlcnJubyAqLwotCQkJaGFzaF9zZXFfdGVybSgmaGFzaF9zZXEp OworCQkJLyogbm90ZTogd2UgYXNzdW1lIGZvcmVhY2hfaGFzaF90ZXJtIHdvbid0IGNoYW5nZSBl cnJubyAqLworCQkJZm9yZWFjaF9oYXNoX3Rlcm0oZW50cnkpOwogCQkJZ290byBlcnJvcjsKIAkJ fQogCX0KQEAgLTE2OTUsOCArMTY5Miw2IEBAIHBnX3N0YXRfc3RhdGVtZW50c19pbnRlcm5hbChG dW5jdGlvbkNhbGxJbmZvIGZjaW5mbywKIAlTaXplCQlxYnVmZmVyX3NpemUgPSAwOwogCVNpemUJ CWV4dGVudCA9IDA7CiAJaW50CQkJZ2NfY291bnQgPSAwOwotCUhBU0hfU0VRX1NUQVRVUyBoYXNo X3NlcTsKLQlwZ3NzRW50cnkgICplbnRyeTsKIAogCS8qCiAJICogU3VwZXJ1c2VycyBvciByb2xl cyB3aXRoIHRoZSBwcml2aWxlZ2VzIG9mIHBnX3JlYWRfYWxsX3N0YXRzIG1lbWJlcnMKQEAgLTE4 MjUsOCArMTgyMCw3IEBAIHBnX3N0YXRfc3RhdGVtZW50c19pbnRlcm5hbChGdW5jdGlvbkNhbGxJ bmZvIGZjaW5mbywKIAkJfQogCX0KIAotCWhhc2hfc2VxX2luaXQoJmhhc2hfc2VxLCBwZ3NzX2hh c2gpOwotCXdoaWxlICgoZW50cnkgPSBoYXNoX3NlcV9zZWFyY2goJmhhc2hfc2VxKSkgIT0gTlVM TCkKKwlmb3JlYWNoX2hhc2gocGdzc0VudHJ5LCBlbnRyeSwgcGdzc19oYXNoKQogCXsKIAkJRGF0 dW0JCXZhbHVlc1tQR19TVEFUX1NUQVRFTUVOVFNfQ09MU107CiAJCWJvb2wJCW51bGxzW1BHX1NU QVRfU1RBVEVNRU5UU19DT0xTXTsKQEAgLTIxNzAsOSArMjE2NCw3IEBAIGVudHJ5X2NtcChjb25z dCB2b2lkICpsaHMsIGNvbnN0IHZvaWQgKnJocykKIHN0YXRpYyB2b2lkCiBlbnRyeV9kZWFsbG9j KHZvaWQpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIGhhc2hfc2VxOwogCXBnc3NFbnRyeSAqKmVudHJp ZXM7Ci0JcGdzc0VudHJ5ICAqZW50cnk7CiAJaW50CQkJbnZpY3RpbXM7CiAJaW50CQkJaTsKIAlT aXplCQl0b3R0ZXh0bGVuOwpAQCAtMjE5Niw4ICsyMTg4LDcgQEAgZW50cnlfZGVhbGxvYyh2b2lk KQogCXRvdHRleHRsZW4gPSAwOwogCW52YWxpZHRleHRzID0gMDsKIAotCWhhc2hfc2VxX2luaXQo Jmhhc2hfc2VxLCBwZ3NzX2hhc2gpOwotCXdoaWxlICgoZW50cnkgPSBoYXNoX3NlcV9zZWFyY2go Jmhhc2hfc2VxKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2gocGdzc0VudHJ5LCBlbnRyeSwgcGdz c19oYXNoKQogCXsKIAkJZW50cmllc1tpKytdID0gZW50cnk7CiAJCS8qICJTdGlja3kiIGVudHJp ZXMgZ2V0IGEgZGlmZmVyZW50IHVzYWdlIGRlY2F5IHJhdGUuICovCkBAIC0yNTA5LDggKzI1MDAs NiBAQCBnY19xdGV4dHModm9pZCkKIAljaGFyCSAgICpxYnVmZmVyOwogCVNpemUJCXFidWZmZXJf c2l6ZTsKIAlGSUxFCSAgICpxZmlsZSA9IE5VTEw7Ci0JSEFTSF9TRVFfU1RBVFVTIGhhc2hfc2Vx OwotCXBnc3NFbnRyeSAgKmVudHJ5OwogCVNpemUJCWV4dGVudDsKIAlpbnQJCQluZW50cmllczsK IApAQCAtMjU1Miw4ICsyNTQxLDcgQEAgZ2NfcXRleHRzKHZvaWQpCiAJZXh0ZW50ID0gMDsKIAlu ZW50cmllcyA9IDA7CiAKLQloYXNoX3NlcV9pbml0KCZoYXNoX3NlcSwgcGdzc19oYXNoKTsKLQl3 aGlsZSAoKGVudHJ5ID0gaGFzaF9zZXFfc2VhcmNoKCZoYXNoX3NlcSkpICE9IE5VTEwpCisJZm9y ZWFjaF9oYXNoKHBnc3NFbnRyeSwgZW50cnksIHBnc3NfaGFzaCkKIAl7CiAJCWludAkJCXF1ZXJ5 X2xlbiA9IGVudHJ5LT5xdWVyeV9sZW47CiAJCWNoYXIJICAgKnFyeSA9IHF0ZXh0X2ZldGNoKGVu dHJ5LT5xdWVyeV9vZmZzZXQsCkBAIC0yNTc2LDcgKzI1NjQsNyBAQCBnY19xdGV4dHModm9pZCkK IAkJCQkJKGVycmNvZGVfZm9yX2ZpbGVfYWNjZXNzKCksCiAJCQkJCSBlcnJtc2coImNvdWxkIG5v dCB3cml0ZSBmaWxlIFwiJXNcIjogJW0iLAogCQkJCQkJCVBHU1NfVEVYVF9GSUxFKSkpOwotCQkJ aGFzaF9zZXFfdGVybSgmaGFzaF9zZXEpOworCQkJZm9yZWFjaF9oYXNoX3Rlcm0oZW50cnkpOwog CQkJZ290byBnY19mYWlsOwogCQl9CiAKQEAgLTI2NDMsOCArMjYzMSw3IEBAIGdjX2ZhaWw6CiAJ ICogU2luY2UgdGhlIGNvbnRlbnRzIG9mIHRoZSBleHRlcm5hbCBmaWxlIGFyZSBub3cgdW5jZXJ0 YWluLCBtYXJrIGFsbAogCSAqIGhhc2h0YWJsZSBlbnRyaWVzIGFzIGhhdmluZyBpbnZhbGlkIHRl eHRzLgogCSAqLwotCWhhc2hfc2VxX2luaXQoJmhhc2hfc2VxLCBwZ3NzX2hhc2gpOwotCXdoaWxl ICgoZW50cnkgPSBoYXNoX3NlcV9zZWFyY2goJmhhc2hfc2VxKSkgIT0gTlVMTCkKKwlmb3JlYWNo X2hhc2gocGdzc0VudHJ5LCBlbnRyeSwgcGdzc19oYXNoKQogCXsKIAkJZW50cnktPnF1ZXJ5X29m ZnNldCA9IDA7CiAJCWVudHJ5LT5xdWVyeV9sZW4gPSAtMTsKQEAgLTI3MDgsOCArMjY5NSw2IEBA IGlmIChlKSB7IFwKIHN0YXRpYyBUaW1lc3RhbXBUegogZW50cnlfcmVzZXQoT2lkIHVzZXJpZCwg T2lkIGRiaWQsIGludDY0IHF1ZXJ5aWQsIGJvb2wgbWlubWF4X29ubHkpCiB7Ci0JSEFTSF9TRVFf U1RBVFVTIGhhc2hfc2VxOwotCXBnc3NFbnRyeSAgKmVudHJ5OwogCUZJTEUJICAgKnFmaWxlOwog CWludDY0CQludW1fZW50cmllczsKIAlpbnQ2NAkJbnVtX3JlbW92ZSA9IDA7CkBAIC0yNzI5LDYg KzI3MTQsOCBAQCBlbnRyeV9yZXNldChPaWQgdXNlcmlkLCBPaWQgZGJpZCwgaW50NjQgcXVlcnlp ZCwgYm9vbCBtaW5tYXhfb25seSkKIAlpZiAodXNlcmlkICE9IDAgJiYgZGJpZCAhPSAwICYmIHF1 ZXJ5aWQgIT0gSU5UNjRDT05TVCgwKSkKIAl7CiAJCS8qIElmIGFsbCB0aGUgcGFyYW1ldGVycyBh cmUgYXZhaWxhYmxlLCB1c2UgdGhlIGZhc3QgcGF0aC4gKi8KKwkJcGdzc0VudHJ5ICAqZW50cnk7 CisKIAkJbWVtc2V0KCZrZXksIDAsIHNpemVvZihwZ3NzSGFzaEtleSkpOwogCQlrZXkudXNlcmlk ID0gdXNlcmlkOwogCQlrZXkuZGJpZCA9IGRiaWQ7CkBAIC0yNzUyLDggKzI3MzksNyBAQCBlbnRy eV9yZXNldChPaWQgdXNlcmlkLCBPaWQgZGJpZCwgaW50NjQgcXVlcnlpZCwgYm9vbCBtaW5tYXhf b25seSkKIAllbHNlIGlmICh1c2VyaWQgIT0gMCB8fCBkYmlkICE9IDAgfHwgcXVlcnlpZCAhPSBJ TlQ2NENPTlNUKDApKQogCXsKIAkJLyogUmVzZXQgZW50cmllcyBjb3JyZXNwb25kaW5nIHRvIHZh bGlkIHBhcmFtZXRlcnMuICovCi0JCWhhc2hfc2VxX2luaXQoJmhhc2hfc2VxLCBwZ3NzX2hhc2gp OwotCQl3aGlsZSAoKGVudHJ5ID0gaGFzaF9zZXFfc2VhcmNoKCZoYXNoX3NlcSkpICE9IE5VTEwp CisJCWZvcmVhY2hfaGFzaChwZ3NzRW50cnksIGVudHJ5LCBwZ3NzX2hhc2gpCiAJCXsKIAkJCWlm ICgoIXVzZXJpZCB8fCBlbnRyeS0+a2V5LnVzZXJpZCA9PSB1c2VyaWQpICYmCiAJCQkJKCFkYmlk IHx8IGVudHJ5LT5rZXkuZGJpZCA9PSBkYmlkKSAmJgpAQCAtMjc2Niw4ICsyNzUyLDcgQEAgZW50 cnlfcmVzZXQoT2lkIHVzZXJpZCwgT2lkIGRiaWQsIGludDY0IHF1ZXJ5aWQsIGJvb2wgbWlubWF4 X29ubHkpCiAJZWxzZQogCXsKIAkJLyogUmVzZXQgYWxsIGVudHJpZXMuICovCi0JCWhhc2hfc2Vx X2luaXQoJmhhc2hfc2VxLCBwZ3NzX2hhc2gpOwotCQl3aGlsZSAoKGVudHJ5ID0gaGFzaF9zZXFf c2VhcmNoKCZoYXNoX3NlcSkpICE9IE5VTEwpCisJCWZvcmVhY2hfaGFzaChwZ3NzRW50cnksIGVu dHJ5LCBwZ3NzX2hhc2gpCiAJCXsKIAkJCVNJTkdMRV9FTlRSWV9SRVNFVChlbnRyeSk7CiAJCX0K ZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfdHJnbS90cmdtX3JlZ2V4cC5jIGIvY29udHJpYi9wZ190 cmdtL3RyZ21fcmVnZXhwLmMKaW5kZXggZWNkNGQ2Nzc5NDguLjY3ZTg2OTgxNDc2IDEwMDY0NAot LS0gYS9jb250cmliL3BnX3RyZ20vdHJnbV9yZWdleHAuYworKysgYi9jb250cmliL3BnX3RyZ20v dHJnbV9yZWdleHAuYwpAQCAtMTQ0OSwxMCArMTQ0OSw4IEBAIHByZWZpeENvbnRhaW5zKFRyZ21Q cmVmaXggKnByZWZpeDEsIFRyZ21QcmVmaXggKnByZWZpeDIpCiBzdGF0aWMgYm9vbAogc2VsZWN0 Q29sb3JUcmlncmFtcyhUcmdtTkZBICp0cmdtTkZBKQogewotCUhBU0hfU0VRX1NUQVRVUyBzY2Fu X3N0YXR1czsKIAlpbnQJCQlhcmNzQ291bnQgPSB0cmdtTkZBLT5hcmNzQ291bnQsCiAJCQkJaTsK LQlUcmdtU3RhdGUgICpzdGF0ZTsKIAlDb2xvclRyZ21JbmZvICpjb2xvclRyZ21zOwogCWludDY0 CQl0b3RhbFRyZ21Db3VudDsKIAlmbG9hdDQJCXRvdGFsVHJnbVBlbmFsdHk7CkBAIC0xNDYzLDgg KzE0NjEsNyBAQCBzZWxlY3RDb2xvclRyaWdyYW1zKFRyZ21ORkEgKnRyZ21ORkEpCiAJdHJnbU5G QS0+Y29sb3JUcmdtcyA9IGNvbG9yVHJnbXM7CiAKIAlpID0gMDsKLQloYXNoX3NlcV9pbml0KCZz Y2FuX3N0YXR1cywgdHJnbU5GQS0+c3RhdGVzKTsKLQl3aGlsZSAoKHN0YXRlID0gKFRyZ21TdGF0 ZSAqKSBoYXNoX3NlcV9zZWFyY2goJnNjYW5fc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hh c2goVHJnbVN0YXRlLCBzdGF0ZSwgdHJnbU5GQS0+c3RhdGVzKQogCXsKIAkJTGlzdENlbGwgICAq Y2VsbDsKIApAQCAtMTkyNiw4ICsxOTIzLDYgQEAgcGFja0dyYXBoKFRyZ21ORkEgKnRyZ21ORkEs IE1lbW9yeUNvbnRleHQgcmNvbnRleHQpCiAJaW50CQkJc251bWJlciA9IDIsCiAJCQkJYXJjSW5k ZXgsCiAJCQkJYXJjc0NvdW50OwotCUhBU0hfU0VRX1NUQVRVUyBzY2FuX3N0YXR1czsKLQlUcmdt U3RhdGUgICpzdGF0ZTsKIAlUcmdtUGFja0FyY0luZm8gKmFyY3M7CiAJVHJnbVBhY2tlZEFyYyAq cGFja2VkQXJjczsKIAlUcmdtUGFja2VkR3JhcGggKnJlc3VsdDsKQEAgLTE5MzUsOCArMTkzMCw3 IEBAIHBhY2tHcmFwaChUcmdtTkZBICp0cmdtTkZBLCBNZW1vcnlDb250ZXh0IHJjb250ZXh0KQog CQkJCWo7CiAKIAkvKiBFbnVtZXJhdGUgc3Vydml2aW5nIHN0YXRlcywgZ2l2aW5nIGluaXQgYW5k IGZpbiByZXNlcnZlZCBudW1iZXJzICovCi0JaGFzaF9zZXFfaW5pdCgmc2Nhbl9zdGF0dXMsIHRy Z21ORkEtPnN0YXRlcyk7Ci0Jd2hpbGUgKChzdGF0ZSA9IChUcmdtU3RhdGUgKikgaGFzaF9zZXFf c2VhcmNoKCZzY2FuX3N0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFRyZ21TdGF0ZSwg c3RhdGUsIHRyZ21ORkEtPnN0YXRlcykKIAl7CiAJCXdoaWxlIChzdGF0ZS0+cGFyZW50KQogCQkJ c3RhdGUgPSBzdGF0ZS0+cGFyZW50OwpAQCAtMTk1OCw4ICsxOTUyLDcgQEAgcGFja0dyYXBoKFRy Z21ORkEgKnRyZ21ORkEsIE1lbW9yeUNvbnRleHQgcmNvbnRleHQpCiAJLyogQ29sbGVjdCBhcnJh eSBvZiBhbGwgYXJjcyAqLwogCWFyY3MgPSBwYWxsb2NfYXJyYXkoVHJnbVBhY2tBcmNJbmZvLCB0 cmdtTkZBLT5hcmNzQ291bnQpOwogCWFyY0luZGV4ID0gMDsKLQloYXNoX3NlcV9pbml0KCZzY2Fu X3N0YXR1cywgdHJnbU5GQS0+c3RhdGVzKTsKLQl3aGlsZSAoKHN0YXRlID0gKFRyZ21TdGF0ZSAq KSBoYXNoX3NlcV9zZWFyY2goJnNjYW5fc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2go VHJnbVN0YXRlLCBzdGF0ZSwgdHJnbU5GQS0+c3RhdGVzKQogCXsKIAkJVHJnbVN0YXRlICAqc291 cmNlID0gc3RhdGU7CiAJCUxpc3RDZWxsICAgKmNlbGw7CkBAIC0yMjAyLDE2ICsyMTk1LDEzIEBA IHN0YXRpYyB2b2lkCiBwcmludFRyZ21ORkEoVHJnbU5GQSAqdHJnbU5GQSkKIHsKIAlTdHJpbmdJ bmZvRGF0YSBidWY7Ci0JSEFTSF9TRVFfU1RBVFVTIHNjYW5fc3RhdHVzOwotCVRyZ21TdGF0ZSAg KnN0YXRlOwogCVRyZ21TdGF0ZSAgKmluaXRzdGF0ZSA9IE5VTEw7CiAKIAlpbml0U3RyaW5nSW5m bygmYnVmKTsKIAogCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZiwgIlxuZGlncmFwaCB0cmFu c2Zvcm1lZE5GQSB7XG4iKTsKIAotCWhhc2hfc2VxX2luaXQoJnNjYW5fc3RhdHVzLCB0cmdtTkZB LT5zdGF0ZXMpOwotCXdoaWxlICgoc3RhdGUgPSAoVHJnbVN0YXRlICopIGhhc2hfc2VxX3NlYXJj aCgmc2Nhbl9zdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChUcmdtU3RhdGUsIHN0YXRl LCB0cmdtTkZBLT5zdGF0ZXMpCiAJewogCQlMaXN0Q2VsbCAgICpjZWxsOwogCmRpZmYgLS1naXQg YS9jb250cmliL3Bvc3RncmVzX2Zkdy9jb25uZWN0aW9uLmMgYi9jb250cmliL3Bvc3RncmVzX2Zk dy9jb25uZWN0aW9uLmMKaW5kZXggNWM3N2M5ZWNkZTUuLjk5MDI1NjdmMWZiIDEwMDY0NAotLS0g YS9jb250cmliL3Bvc3RncmVzX2Zkdy9jb25uZWN0aW9uLmMKKysrIGIvY29udHJpYi9wb3N0Z3Jl c19mZHcvY29ubmVjdGlvbi5jCkBAIC0xMDQ0LDggKzEwNDQsNiBAQCBwZ2Zkd19yZXBvcnRfaW50 ZXJuYWwoaW50IGVsZXZlbCwgUEdyZXN1bHQgKnJlcywgUEdjb25uICpjb25uLAogc3RhdGljIHZv aWQKIHBnZmR3X3hhY3RfY2FsbGJhY2soWGFjdEV2ZW50IGV2ZW50LCB2b2lkICphcmcpCiB7Ci0J SEFTSF9TRVFfU1RBVFVTIHNjYW47Ci0JQ29ubkNhY2hlRW50cnkgKmVudHJ5OwogCUxpc3QJICAg KnBlbmRpbmdfZW50cmllcyA9IE5JTDsKIAlMaXN0CSAgICpjYW5jZWxfcmVxdWVzdGVkID0gTklM OwogCkBAIC0xMDU3LDggKzEwNTUsNyBAQCBwZ2Zkd194YWN0X2NhbGxiYWNrKFhhY3RFdmVudCBl dmVudCwgdm9pZCAqYXJnKQogCSAqIFNjYW4gYWxsIGNvbm5lY3Rpb24gY2FjaGUgZW50cmllcyB0 byBmaW5kIG9wZW4gcmVtb3RlIHRyYW5zYWN0aW9ucywgYW5kCiAJICogY2xvc2UgdGhlbS4KIAkg Ki8KLQloYXNoX3NlcV9pbml0KCZzY2FuLCBDb25uZWN0aW9uSGFzaCk7Ci0Jd2hpbGUgKChlbnRy eSA9IChDb25uQ2FjaGVFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJnNjYW4pKSkKKwlmb3JlYWNo X2hhc2goQ29ubkNhY2hlRW50cnksIGVudHJ5LCBDb25uZWN0aW9uSGFzaCkKIAl7CiAJCVBHcmVz dWx0ICAgKnJlczsKIApAQCAtMTE5NSw4ICsxMTkyLDYgQEAgc3RhdGljIHZvaWQKIHBnZmR3X3N1 YnhhY3RfY2FsbGJhY2soU3ViWGFjdEV2ZW50IGV2ZW50LCBTdWJUcmFuc2FjdGlvbklkIG15U3Vi aWQsCiAJCQkJCSAgIFN1YlRyYW5zYWN0aW9uSWQgcGFyZW50U3ViaWQsIHZvaWQgKmFyZykKIHsK LQlIQVNIX1NFUV9TVEFUVVMgc2NhbjsKLQlDb25uQ2FjaGVFbnRyeSAqZW50cnk7CiAJaW50CQkJ Y3VybGV2ZWw7CiAJTGlzdAkgICAqcGVuZGluZ19lbnRyaWVzID0gTklMOwogCUxpc3QJICAgKmNh bmNlbF9yZXF1ZXN0ZWQgPSBOSUw7CkBAIC0xMjE1LDggKzEyMTAsNyBAQCBwZ2Zkd19zdWJ4YWN0 X2NhbGxiYWNrKFN1YlhhY3RFdmVudCBldmVudCwgU3ViVHJhbnNhY3Rpb25JZCBteVN1YmlkLAog CSAqIG9mIHRoZSBjdXJyZW50IGxldmVsLCBhbmQgY2xvc2UgdGhlbS4KIAkgKi8KIAljdXJsZXZl bCA9IEdldEN1cnJlbnRUcmFuc2FjdGlvbk5lc3RMZXZlbCgpOwotCWhhc2hfc2VxX2luaXQoJnNj YW4sIENvbm5lY3Rpb25IYXNoKTsKLQl3aGlsZSAoKGVudHJ5ID0gKENvbm5DYWNoZUVudHJ5ICop IGhhc2hfc2VxX3NlYXJjaCgmc2NhbikpKQorCWZvcmVhY2hfaGFzaChDb25uQ2FjaGVFbnRyeSwg ZW50cnksIENvbm5lY3Rpb25IYXNoKQogCXsKIAkJY2hhcgkJc3FsWzEwMF07CiAKQEAgLTEzMDcs MTQgKzEzMDEsMTAgQEAgcGdmZHdfc3VieGFjdF9jYWxsYmFjayhTdWJYYWN0RXZlbnQgZXZlbnQs IFN1YlRyYW5zYWN0aW9uSWQgbXlTdWJpZCwKIHN0YXRpYyB2b2lkCiBwZ2Zkd19pbnZhbF9jYWxs YmFjayhEYXR1bSBhcmcsIGludCBjYWNoZWlkLCB1aW50MzIgaGFzaHZhbHVlKQogewotCUhBU0hf U0VRX1NUQVRVUyBzY2FuOwotCUNvbm5DYWNoZUVudHJ5ICplbnRyeTsKLQogCUFzc2VydChjYWNo ZWlkID09IEZPUkVJR05TRVJWRVJPSUQgfHwgY2FjaGVpZCA9PSBVU0VSTUFQUElOR09JRCk7CiAK IAkvKiBDb25uZWN0aW9uSGFzaCBtdXN0IGV4aXN0IGFscmVhZHksIGlmIHdlJ3JlIHJlZ2lzdGVy ZWQgKi8KLQloYXNoX3NlcV9pbml0KCZzY2FuLCBDb25uZWN0aW9uSGFzaCk7Ci0Jd2hpbGUgKChl bnRyeSA9IChDb25uQ2FjaGVFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJnNjYW4pKSkKKwlmb3Jl YWNoX2hhc2goQ29ubkNhY2hlRW50cnksIGVudHJ5LCBDb25uZWN0aW9uSGFzaCkKIAl7CiAJCS8q IElnbm9yZSBpbnZhbGlkIGVudHJpZXMgKi8KIAkJaWYgKGVudHJ5LT5jb25uID09IE5VTEwpCkBA IC0yMTY1LDggKzIxNTUsNiBAQCBwb3N0Z3Jlc19mZHdfZ2V0X2Nvbm5lY3Rpb25zX2ludGVybmFs KEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLAogCQkJCQkJCQkJICBlbnVtIHBnZmR3VmVyc2lvbiBh cGlfdmVyc2lvbikKIHsKIAlSZXR1cm5TZXRJbmZvICpyc2luZm8gPSAoUmV0dXJuU2V0SW5mbyAq KSBmY2luZm8tPnJlc3VsdGluZm87Ci0JSEFTSF9TRVFfU1RBVFVTIHNjYW47Ci0JQ29ubkNhY2hl RW50cnkgKmVudHJ5OwogCiAJSW5pdE1hdGVyaWFsaXplZFNSRihmY2luZm8sIDApOwogCkBAIC0y MTg5LDggKzIxNzcsNyBAQCBwb3N0Z3Jlc19mZHdfZ2V0X2Nvbm5lY3Rpb25zX2ludGVybmFsKEZ1 bmN0aW9uQ2FsbEluZm8gZmNpbmZvLAogCQkJZWxvZyhFUlJPUiwgImluY29ycmVjdCBudW1iZXIg b2Ygb3V0cHV0IGFyZ3VtZW50cyIpOwogCX0KIAotCWhhc2hfc2VxX2luaXQoJnNjYW4sIENvbm5l Y3Rpb25IYXNoKTsKLQl3aGlsZSAoKGVudHJ5ID0gKENvbm5DYWNoZUVudHJ5ICopIGhhc2hfc2Vx X3NlYXJjaCgmc2NhbikpKQorCWZvcmVhY2hfaGFzaChDb25uQ2FjaGVFbnRyeSwgZW50cnksIENv bm5lY3Rpb25IYXNoKQogCXsKIAkJRm9yZWlnblNlcnZlciAqc2VydmVyOwogCQlEYXR1bQkJdmFs dWVzW1BPU1RHUkVTX0ZEV19HRVRfQ09OTkVDVElPTlNfQ09MU10gPSB7MH07CkBAIC0yMzkyLDgg KzIzNzksNiBAQCBwb3N0Z3Jlc19mZHdfZGlzY29ubmVjdF9hbGwoUEdfRlVOQ1RJT05fQVJHUykK IHN0YXRpYyBib29sCiBkaXNjb25uZWN0X2NhY2hlZF9jb25uZWN0aW9ucyhPaWQgc2VydmVyaWQp CiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHNjYW47Ci0JQ29ubkNhY2hlRW50cnkgKmVudHJ5OwogCWJv b2wJCWFsbCA9ICFPaWRJc1ZhbGlkKHNlcnZlcmlkKTsKIAlib29sCQlyZXN1bHQgPSBmYWxzZTsK IApAQCAtMjQwNCw4ICsyMzg5LDcgQEAgZGlzY29ubmVjdF9jYWNoZWRfY29ubmVjdGlvbnMoT2lk IHNlcnZlcmlkKQogCWlmICghQ29ubmVjdGlvbkhhc2gpCiAJCXJldHVybiBmYWxzZTsKIAotCWhh c2hfc2VxX2luaXQoJnNjYW4sIENvbm5lY3Rpb25IYXNoKTsKLQl3aGlsZSAoKGVudHJ5ID0gKENv bm5DYWNoZUVudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmc2NhbikpKQorCWZvcmVhY2hfaGFzaChD b25uQ2FjaGVFbnRyeSwgZW50cnksIENvbm5lY3Rpb25IYXNoKQogCXsKIAkJLyogSWdub3JlIGNh Y2hlIGVudHJ5IGlmIG5vIG9wZW4gY29ubmVjdGlvbiByaWdodCBub3cuICovCiAJCWlmICghZW50 cnktPmNvbm4pCmRpZmYgLS1naXQgYS9jb250cmliL3Bvc3RncmVzX2Zkdy9zaGlwcGFibGUuYyBi L2NvbnRyaWIvcG9zdGdyZXNfZmR3L3NoaXBwYWJsZS5jCmluZGV4IGVjMTg1MjQ5MGUwLi5jMWQ2 MGU1ODJhNiAxMDA2NDQKLS0tIGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvc2hpcHBhYmxlLmMKKysr IGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvc2hpcHBhYmxlLmMKQEAgLTY1LDE3ICs2NSwxMyBAQCB0 eXBlZGVmIHN0cnVjdAogc3RhdGljIHZvaWQKIEludmFsaWRhdGVTaGlwcGFibGVDYWNoZUNhbGxi YWNrKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpCiB7Ci0JSEFTSF9T RVFfU1RBVFVTIHN0YXR1czsKLQlTaGlwcGFibGVDYWNoZUVudHJ5ICplbnRyeTsKLQogCS8qCiAJ ICogSW4gcHJpbmNpcGxlIHdlIGNvdWxkIGZsdXNoIG9ubHkgY2FjaGUgZW50cmllcyByZWxhdGlu ZyB0byB0aGUKIAkgKiBwZ19mb3JlaWduX3NlcnZlciBlbnRyeSBiZWluZyBvdXRkYXRlZDsgYnV0 IHRoYXQgd291bGQgYmUgbW9yZQogCSAqIGNvbXBsaWNhdGVkLCBhbmQgaXQncyBwcm9iYWJseSBu b3Qgd29ydGggdGhlIHRyb3VibGUuICBTbyBmb3Igbm93LCBqdXN0CiAJICogZmx1c2ggYWxsIGVu dHJpZXMuCiAJICovCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBTaGlwcGFibGVDYWNoZUhhc2gp OwotCXdoaWxlICgoZW50cnkgPSAoU2hpcHBhYmxlQ2FjaGVFbnRyeSAqKSBoYXNoX3NlcV9zZWFy Y2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFNoaXBwYWJsZUNhY2hlRW50cnks IGVudHJ5LCBTaGlwcGFibGVDYWNoZUhhc2gpCiAJewogCQlpZiAoaGFzaF9zZWFyY2goU2hpcHBh YmxlQ2FjaGVIYXNoLAogCQkJCQkJJmVudHJ5LT5rZXksCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9yZXdyaXRlaGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcmV3 cml0ZWhlYXAuYwppbmRleCBmYmU0ZDZlNmU5OC4uZDkwNDI3NjdkYTIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Jld3JpdGVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvcmV3cml0ZWhlYXAuYwpAQCAtMjkwLDE2ICsyOTAsMTEgQEAgYmVnaW5faGVhcF9y ZXdyaXRlKFJlbGF0aW9uIG9sZF9oZWFwLCBSZWxhdGlvbiBuZXdfaGVhcCwgVHJhbnNhY3Rpb25J ZCBvbGRlc3RfeG0KIHZvaWQKIGVuZF9oZWFwX3Jld3JpdGUoUmV3cml0ZVN0YXRlIHN0YXRlKQog ewotCUhBU0hfU0VRX1NUQVRVUyBzZXFfc3RhdHVzOwotCVVucmVzb2x2ZWRUdXAgdW5yZXNvbHZl ZDsKLQogCS8qCiAJICogV3JpdGUgYW55IHJlbWFpbmluZyB0dXBsZXMgaW4gdGhlIFVucmVzb2x2 ZWRUdXBzIHRhYmxlLiBJZiB3ZSBoYXZlIGFueQogCSAqIGxlZnQsIHRoZXkgc2hvdWxkIGluIGZh Y3QgYmUgZGVhZCwgYnV0IGxldCdzIGVyciBvbiB0aGUgc2FmZSBzaWRlLgogCSAqLwotCWhhc2hf c2VxX2luaXQoJnNlcV9zdGF0dXMsIHN0YXRlLT5yc191bnJlc29sdmVkX3R1cHMpOwotCi0Jd2hp bGUgKCh1bnJlc29sdmVkID0gaGFzaF9zZXFfc2VhcmNoKCZzZXFfc3RhdHVzKSkgIT0gTlVMTCkK Kwlmb3JlYWNoX2hhc2goVW5yZXNvbHZlZFR1cERhdGEsIHVucmVzb2x2ZWQsIHN0YXRlLT5yc191 bnJlc29sdmVkX3R1cHMpCiAJewogCQlJdGVtUG9pbnRlclNldEludmFsaWQoJnVucmVzb2x2ZWQt PnR1cGxlLT50X2RhdGEtPnRfY3RpZCk7CiAJCXJhd19oZWFwX2luc2VydChzdGF0ZSwgdW5yZXNv bHZlZC0+dHVwbGUpOwpAQCAtNzk3LDggKzc5Miw2IEBAIGxvZ2ljYWxfYmVnaW5faGVhcF9yZXdy aXRlKFJld3JpdGVTdGF0ZSBzdGF0ZSkKIHN0YXRpYyB2b2lkCiBsb2dpY2FsX2hlYXBfcmV3cml0 ZV9mbHVzaF9tYXBwaW5ncyhSZXdyaXRlU3RhdGUgc3RhdGUpCiB7Ci0JSEFTSF9TRVFfU1RBVFVT IHNlcV9zdGF0dXM7Ci0JUmV3cml0ZU1hcHBpbmdGaWxlICpzcmM7CiAJZGxpc3RfbXV0YWJsZV9p dGVyIGl0ZXI7CiAKIAlBc3NlcnQoc3RhdGUtPnJzX2xvZ2ljYWxfcmV3cml0ZSk7CkBAIC04MTAs OCArODAzLDcgQEAgbG9naWNhbF9oZWFwX3Jld3JpdGVfZmx1c2hfbWFwcGluZ3MoUmV3cml0ZVN0 YXRlIHN0YXRlKQogCWVsb2coREVCVUcxLCAiZmx1c2hpbmcgJXUgbG9naWNhbCByZXdyaXRlIG1h cHBpbmcgZW50cmllcyIsCiAJCSBzdGF0ZS0+cnNfbnVtX3Jld3JpdGVfbWFwcGluZ3MpOwogCi0J aGFzaF9zZXFfaW5pdCgmc2VxX3N0YXR1cywgc3RhdGUtPnJzX2xvZ2ljYWxfbWFwcGluZ3MpOwot CXdoaWxlICgoc3JjID0gKFJld3JpdGVNYXBwaW5nRmlsZSAqKSBoYXNoX3NlcV9zZWFyY2goJnNl cV9zdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChSZXdyaXRlTWFwcGluZ0ZpbGUsIHNy Yywgc3RhdGUtPnJzX2xvZ2ljYWxfbWFwcGluZ3MpCiAJewogCQljaGFyCSAgICp3YWxkYXRhOwog CQljaGFyCSAgICp3YWxkYXRhX3N0YXJ0OwpAQCAtODk1LDkgKzg4Nyw2IEBAIGxvZ2ljYWxfaGVh cF9yZXdyaXRlX2ZsdXNoX21hcHBpbmdzKFJld3JpdGVTdGF0ZSBzdGF0ZSkKIHN0YXRpYyB2b2lk CiBsb2dpY2FsX2VuZF9oZWFwX3Jld3JpdGUoUmV3cml0ZVN0YXRlIHN0YXRlKQogewotCUhBU0hf U0VRX1NUQVRVUyBzZXFfc3RhdHVzOwotCVJld3JpdGVNYXBwaW5nRmlsZSAqc3JjOwotCiAJLyog ZG9uZSwgbm8gbG9naWNhbCByZXdyaXRlIGluIHByb2dyZXNzICovCiAJaWYgKCFzdGF0ZS0+cnNf bG9naWNhbF9yZXdyaXRlKQogCQlyZXR1cm47CkBAIC05MDcsOCArODk2LDcgQEAgbG9naWNhbF9l bmRfaGVhcF9yZXdyaXRlKFJld3JpdGVTdGF0ZSBzdGF0ZSkKIAkJbG9naWNhbF9oZWFwX3Jld3Jp dGVfZmx1c2hfbWFwcGluZ3Moc3RhdGUpOwogCiAJLyogSXRlcmF0ZSBvdmVyIGFsbCBtYXBwaW5n cyB3ZSBoYXZlIHdyaXR0ZW4gYW5kIGZzeW5jIHRoZSBmaWxlcy4gKi8KLQloYXNoX3NlcV9pbml0 KCZzZXFfc3RhdHVzLCBzdGF0ZS0+cnNfbG9naWNhbF9tYXBwaW5ncyk7Ci0Jd2hpbGUgKChzcmMg PSAoUmV3cml0ZU1hcHBpbmdGaWxlICopIGhhc2hfc2VxX3NlYXJjaCgmc2VxX3N0YXR1cykpICE9 IE5VTEwpCisJZm9yZWFjaF9oYXNoKFJld3JpdGVNYXBwaW5nRmlsZSwgc3JjLCBzdGF0ZS0+cnNf bG9naWNhbF9tYXBwaW5ncykKIAl7CiAJCWlmIChGaWxlU3luYyhzcmMtPnZmZCwgV0FJVF9FVkVO VF9MT0dJQ0FMX1JFV1JJVEVfU1lOQykgIT0gMCkKIAkJCWVyZXBvcnQoZGF0YV9zeW5jX2VsZXZl bChFUlJPUiksCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ndXRp bHMuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d1dGlscy5jCmluZGV4IGQxMWU0 MmM5NDkwLi4zYzdmYzY1YjhkNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5z YW0veGxvZ3V0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3V0aWxz LmMKQEAgLTE2MCwxNSArMTYwLDEwIEBAIHN0YXRpYyB2b2lkCiBmb3JnZXRfaW52YWxpZF9wYWdl cyhSZWxGaWxlTG9jYXRvciBsb2NhdG9yLCBGb3JrTnVtYmVyIGZvcmtubywKIAkJCQkJIEJsb2Nr TnVtYmVyIG1pbmJsa25vKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JeGxfaW52YWxp ZF9wYWdlICpoZW50cnk7Ci0KIAlpZiAoaW52YWxpZF9wYWdlX3RhYiA9PSBOVUxMKQogCQlyZXR1 cm47CQkJCQkvKiBub3RoaW5nIHRvIGRvICovCiAKLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIGlu dmFsaWRfcGFnZV90YWIpOwotCi0Jd2hpbGUgKChoZW50cnkgPSAoeGxfaW52YWxpZF9wYWdlICop IGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goeGxfaW52 YWxpZF9wYWdlLCBoZW50cnksIGludmFsaWRfcGFnZV90YWIpCiAJewogCQlpZiAoUmVsRmlsZUxv Y2F0b3JFcXVhbHMoaGVudHJ5LT5rZXkubG9jYXRvciwgbG9jYXRvcikgJiYKIAkJCWhlbnRyeS0+ a2V5LmZvcmtubyA9PSBmb3Jrbm8gJiYKQEAgLTE5MCwxNSArMTg1LDEwIEBAIGZvcmdldF9pbnZh bGlkX3BhZ2VzKFJlbEZpbGVMb2NhdG9yIGxvY2F0b3IsIEZvcmtOdW1iZXIgZm9ya25vLAogc3Rh dGljIHZvaWQKIGZvcmdldF9pbnZhbGlkX3BhZ2VzX2RiKE9pZCBkYmlkKQogewotCUhBU0hfU0VR X1NUQVRVUyBzdGF0dXM7Ci0JeGxfaW52YWxpZF9wYWdlICpoZW50cnk7Ci0KIAlpZiAoaW52YWxp ZF9wYWdlX3RhYiA9PSBOVUxMKQogCQlyZXR1cm47CQkJCQkvKiBub3RoaW5nIHRvIGRvICovCiAK LQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIGludmFsaWRfcGFnZV90YWIpOwotCi0Jd2hpbGUgKCho ZW50cnkgPSAoeGxfaW52YWxpZF9wYWdlICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0g TlVMTCkKKwlmb3JlYWNoX2hhc2goeGxfaW52YWxpZF9wYWdlLCBoZW50cnksIGludmFsaWRfcGFn ZV90YWIpCiAJewogCQlpZiAoaGVudHJ5LT5rZXkubG9jYXRvci5kYk9pZCA9PSBkYmlkKQogCQl7 CkBAIC0yMjgsMjAgKzIxOCwxNiBAQCBYTG9nSGF2ZUludmFsaWRQYWdlcyh2b2lkKQogdm9pZAog WExvZ0NoZWNrSW52YWxpZFBhZ2VzKHZvaWQpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsK LQl4bF9pbnZhbGlkX3BhZ2UgKmhlbnRyeTsKIAlib29sCQlmb3VuZG9uZSA9IGZhbHNlOwogCiAJ aWYgKGludmFsaWRfcGFnZV90YWIgPT0gTlVMTCkKIAkJcmV0dXJuOwkJCQkJLyogbm90aGluZyB0 byBkbyAqLwogCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBpbnZhbGlkX3BhZ2VfdGFiKTsKLQog CS8qCiAJICogT3VyIHN0cmF0ZWd5IGlzIHRvIGVtaXQgV0FSTklORyBtZXNzYWdlcyBmb3IgYWxs IHJlbWFpbmluZyBlbnRyaWVzIGFuZAogCSAqIG9ubHkgUEFOSUMgYWZ0ZXIgd2UndmUgZHVtcGVk IGFsbCB0aGUgYXZhaWxhYmxlIGluZm8uCiAJICovCi0Jd2hpbGUgKChoZW50cnkgPSAoeGxfaW52 YWxpZF9wYWdlICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNo X2hhc2goeGxfaW52YWxpZF9wYWdlLCBoZW50cnksIGludmFsaWRfcGFnZV90YWIpCiAJewogCQly ZXBvcnRfaW52YWxpZF9wYWdlKFdBUk5JTkcsIGhlbnRyeS0+a2V5LmxvY2F0b3IsIGhlbnRyeS0+ a2V5LmZvcmtubywKIAkJCQkJCQloZW50cnktPmtleS5ibGtubywgaGVudHJ5LT5wcmVzZW50KTsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfZW51bS5jIGIvc3JjL2JhY2tlbmQv Y2F0YWxvZy9wZ19lbnVtLmMKaW5kZXggODZjOGJhZGE1NTcuLmJlNGE4ZWNkOWU2IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2VudW0uYworKysgYi9zcmMvYmFja2VuZC9jYXRh bG9nL3BnX2VudW0uYwpAQCAtODM4LDEyICs4MzgsMTAgQEAgU2VyaWFsaXplVW5jb21taXR0ZWRF bnVtcyh2b2lkICpzcGFjZSwgU2l6ZSBzaXplKQogCS8qIFdyaXRlIG91dCBhbGwgdGhlIE9JRHMg ZnJvbSB0aGUgdHlwZXMgaGFzaCB0YWJsZSwgaWYgdGhlcmUgaXMgb25lLiAqLwogCWlmICh1bmNv bW1pdHRlZF9lbnVtX3R5cGVzKQogCXsKLQkJSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQkJT2lk CQkgICAqdmFsdWU7Ci0KLQkJaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCB1bmNvbW1pdHRlZF9lbnVt X3R5cGVzKTsKLQkJd2hpbGUgKCh2YWx1ZSA9IChPaWQgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0 dXMpKSkKKwkJZm9yZWFjaF9oYXNoKE9pZCwgdmFsdWUsIHVuY29tbWl0dGVkX2VudW1fdHlwZXMp CisJCXsKIAkJCSpzZXJpYWxpemVkKysgPSAqdmFsdWU7CisJCX0KIAl9CiAKIAkvKiBXcml0ZSBv dXQgdGhlIHRlcm1pbmF0b3IuICovCkBAIC04NTIsMTIgKzg1MCwxMCBAQCBTZXJpYWxpemVVbmNv bW1pdHRlZEVudW1zKHZvaWQgKnNwYWNlLCBTaXplIHNpemUpCiAJLyogV3JpdGUgb3V0IGFsbCB0 aGUgT0lEcyBmcm9tIHRoZSB2YWx1ZXMgaGFzaCB0YWJsZSwgaWYgdGhlcmUgaXMgb25lLiAqLwog CWlmICh1bmNvbW1pdHRlZF9lbnVtX3ZhbHVlcykKIAl7Ci0JCUhBU0hfU0VRX1NUQVRVUyBzdGF0 dXM7Ci0JCU9pZAkJICAgKnZhbHVlOwotCi0JCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgdW5jb21t aXR0ZWRfZW51bV92YWx1ZXMpOwotCQl3aGlsZSAoKHZhbHVlID0gKE9pZCAqKSBoYXNoX3NlcV9z ZWFyY2goJnN0YXR1cykpKQorCQlmb3JlYWNoX2hhc2goT2lkLCB2YWx1ZSwgdW5jb21taXR0ZWRf ZW51bV92YWx1ZXMpCisJCXsKIAkJCSpzZXJpYWxpemVkKysgPSAqdmFsdWU7CisJCX0KIAl9CiAK IAkvKiBXcml0ZSBvdXQgdGhlIHRlcm1pbmF0b3IuICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jYXRhbG9nL3N0b3JhZ2UuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3RvcmFnZS5jCmluZGV4 IGRiM2UwODMxOWI1Li4yN2QyMWI1NTZiZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9zdG9yYWdlLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zdG9yYWdlLmMKQEAgLTU5NCwx MCArNTk0LDcgQEAgdm9pZAogU2VyaWFsaXplUGVuZGluZ1N5bmNzKFNpemUgbWF4U2l6ZSwgY2hh ciAqc3RhcnRBZGRyZXNzKQogewogCUhUQUIJICAgKnRtcGhhc2g7Ci0JSEFTSF9TRVFfU1RBVFVT IHNjYW47Ci0JUGVuZGluZ1JlbFN5bmMgKnN5bmM7CiAJUGVuZGluZ1JlbERlbGV0ZSAqZGVsZXRl OwotCVJlbEZpbGVMb2NhdG9yICpzcmM7CiAJUmVsRmlsZUxvY2F0b3IgKmRlc3QgPSAoUmVsRmls ZUxvY2F0b3IgKikgc3RhcnRBZGRyZXNzOwogCiAJaWYgKCFwZW5kaW5nU3luY0hhc2gpCkBAIC02 MDgsOSArNjA1LDEwIEBAIFNlcmlhbGl6ZVBlbmRpbmdTeW5jcyhTaXplIG1heFNpemUsIGNoYXIg KnN0YXJ0QWRkcmVzcykKIAkJCQkJCSAgIGhhc2hfZ2V0X251bV9lbnRyaWVzKHBlbmRpbmdTeW5j SGFzaCkpOwogCiAJLyogY29sbGVjdCBhbGwgcmxvY2F0b3IgZnJvbSBwZW5kaW5nIHN5bmNzICov Ci0JaGFzaF9zZXFfaW5pdCgmc2NhbiwgcGVuZGluZ1N5bmNIYXNoKTsKLQl3aGlsZSAoKHN5bmMg PSAoUGVuZGluZ1JlbFN5bmMgKikgaGFzaF9zZXFfc2VhcmNoKCZzY2FuKSkpCisJZm9yZWFjaF9o YXNoKFBlbmRpbmdSZWxTeW5jLCBzeW5jLCBwZW5kaW5nU3luY0hhc2gpCisJewogCQkodm9pZCkg aGFzaF9zZWFyY2godG1waGFzaCwgJnN5bmMtPnJsb2NhdG9yLCBIQVNIX0VOVEVSLCBOVUxMKTsK Kwl9CiAKIAkvKiByZW1vdmUgZGVsZXRlZCBybm9kZXMgKi8KIAlmb3IgKGRlbGV0ZSA9IHBlbmRp bmdEZWxldGVzOyBkZWxldGUgIT0gTlVMTDsgZGVsZXRlID0gZGVsZXRlLT5uZXh0KQpAQCAtNjE4 LDkgKzYxNiwxMCBAQCBTZXJpYWxpemVQZW5kaW5nU3luY3MoU2l6ZSBtYXhTaXplLCBjaGFyICpz dGFydEFkZHJlc3MpCiAJCQkodm9pZCkgaGFzaF9zZWFyY2godG1waGFzaCwgJmRlbGV0ZS0+cmxv Y2F0b3IsCiAJCQkJCQkJICAgSEFTSF9SRU1PVkUsIE5VTEwpOwogCi0JaGFzaF9zZXFfaW5pdCgm c2NhbiwgdG1waGFzaCk7Ci0Jd2hpbGUgKChzcmMgPSAoUmVsRmlsZUxvY2F0b3IgKikgaGFzaF9z ZXFfc2VhcmNoKCZzY2FuKSkpCisJZm9yZWFjaF9oYXNoKFJlbEZpbGVMb2NhdG9yLCBzcmMsIHRt cGhhc2gpCisJewogCQkqZGVzdCsrID0gKnNyYzsKKwl9CiAKIAloYXNoX2Rlc3Ryb3kodG1waGFz aCk7CiAKQEAgLTczMyw4ICs3MzIsNiBAQCBzbWdyRG9QZW5kaW5nU3luY3MoYm9vbCBpc0NvbW1p dCwgYm9vbCBpc1BhcmFsbGVsV29ya2VyKQogCWludAkJCW5yZWxzID0gMCwKIAkJCQltYXhyZWxz ID0gMDsKIAlTTWdyUmVsYXRpb24gKnNyZWxzID0gTlVMTDsKLQlIQVNIX1NFUV9TVEFUVVMgc2Nh bjsKLQlQZW5kaW5nUmVsU3luYyAqcGVuZGluZ3N5bmM7CiAKIAlBc3NlcnQoR2V0Q3VycmVudFRy YW5zYWN0aW9uTmVzdExldmVsKCkgPT0gMSk7CiAKQEAgLTc2Myw4ICs3NjAsNyBAQCBzbWdyRG9Q ZW5kaW5nU3luY3MoYm9vbCBpc0NvbW1pdCwgYm9vbCBpc1BhcmFsbGVsV29ya2VyKQogCQkJKHZv aWQpIGhhc2hfc2VhcmNoKHBlbmRpbmdTeW5jSGFzaCwgJnBlbmRpbmctPnJsb2NhdG9yLAogCQkJ CQkJCSAgIEhBU0hfUkVNT1ZFLCBOVUxMKTsKIAotCWhhc2hfc2VxX2luaXQoJnNjYW4sIHBlbmRp bmdTeW5jSGFzaCk7Ci0Jd2hpbGUgKChwZW5kaW5nc3luYyA9IChQZW5kaW5nUmVsU3luYyAqKSBo YXNoX3NlcV9zZWFyY2goJnNjYW4pKSkKKwlmb3JlYWNoX2hhc2goUGVuZGluZ1JlbFN5bmMsIHBl bmRpbmdzeW5jLCBwZW5kaW5nU3luY0hhc2gpCiAJewogCQlGb3JrTnVtYmVyCWZvcms7CiAJCUJs b2NrTnVtYmVyIG5ibG9ja3NbTUFYX0ZPUktOVU0gKyAxXTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwpp bmRleCBlYjFhN2VjZmViYy4uNGFkOWMxMGE3ZjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3ByZXBhcmUuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKQEAg LTUzMywxNiArNTMzLDEyIEBAIERyb3BQcmVwYXJlZFN0YXRlbWVudChjb25zdCBjaGFyICpzdG10 X25hbWUsIGJvb2wgc2hvd0Vycm9yKQogdm9pZAogRHJvcEFsbFByZXBhcmVkU3RhdGVtZW50cyh2 b2lkKQogewotCUhBU0hfU0VRX1NUQVRVUyBzZXE7Ci0JUHJlcGFyZWRTdGF0ZW1lbnQgKmVudHJ5 OwotCiAJLyogbm90aGluZyBjYWNoZWQgKi8KIAlpZiAoIXByZXBhcmVkX3F1ZXJpZXMpCiAJCXJl dHVybjsKIAogCS8qIHdhbGsgb3ZlciBjYWNoZSAqLwotCWhhc2hfc2VxX2luaXQoJnNlcSwgcHJl cGFyZWRfcXVlcmllcyk7Ci0Jd2hpbGUgKChlbnRyeSA9IGhhc2hfc2VxX3NlYXJjaCgmc2VxKSkg IT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUHJlcGFyZWRTdGF0ZW1lbnQsIGVudHJ5LCBwcmVwYXJl ZF9xdWVyaWVzKQogCXsKIAkJLyogUmVsZWFzZSB0aGUgcGxhbmNhY2hlIGVudHJ5ICovCiAJCURy b3BDYWNoZWRQbGFuKGVudHJ5LT5wbGFuc291cmNlKTsKQEAgLTY4OSwxMSArNjg1LDcgQEAgcGdf cHJlcGFyZWRfc3RhdGVtZW50KFBHX0ZVTkNUSU9OX0FSR1MpCiAJLyogaGFzaCB0YWJsZSBtaWdo dCBiZSB1bmluaXRpYWxpemVkICovCiAJaWYgKHByZXBhcmVkX3F1ZXJpZXMpCiAJewotCQlIQVNI X1NFUV9TVEFUVVMgaGFzaF9zZXE7Ci0JCVByZXBhcmVkU3RhdGVtZW50ICpwcmVwX3N0bXQ7Ci0K LQkJaGFzaF9zZXFfaW5pdCgmaGFzaF9zZXEsIHByZXBhcmVkX3F1ZXJpZXMpOwotCQl3aGlsZSAo KHByZXBfc3RtdCA9IGhhc2hfc2VxX3NlYXJjaCgmaGFzaF9zZXEpKSAhPSBOVUxMKQorCQlmb3Jl YWNoX2hhc2goUHJlcGFyZWRTdGF0ZW1lbnQsIHByZXBfc3RtdCwgcHJlcGFyZWRfcXVlcmllcykK IAkJewogCQkJVHVwbGVEZXNjCXJlc3VsdF9kZXNjOwogCQkJRGF0dW0JCXZhbHVlc1s4XTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggNDBhMzk5ODllYWEuLjc3MjI1MDdjODM4IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtMjI0MiwxNCArMjI0Miw5IEBAIEV4ZWN1dGVUcnVu Y2F0ZUd1dHMoTGlzdCAqZXhwbGljaXRfcmVscywKIAkvKiBOb3cgZ28gdGhyb3VnaCB0aGUgaGFz aCB0YWJsZSwgYW5kIHRydW5jYXRlIGZvcmVpZ24gdGFibGVzICovCiAJaWYgKGZ0X2h0YWIpCiAJ ewotCQlGb3JlaWduVHJ1bmNhdGVJbmZvICpmdF9pbmZvOwotCQlIQVNIX1NFUV9TVEFUVVMgc2Vx OwotCi0JCWhhc2hfc2VxX2luaXQoJnNlcSwgZnRfaHRhYik7Ci0KIAkJUEdfVFJZKCk7CiAJCXsK LQkJCXdoaWxlICgoZnRfaW5mbyA9IGhhc2hfc2VxX3NlYXJjaCgmc2VxKSkgIT0gTlVMTCkKKwkJ CWZvcmVhY2hfaGFzaChGb3JlaWduVHJ1bmNhdGVJbmZvLCBmdF9pbmZvLCBmdF9odGFiKQogCQkJ ewogCQkJCUZkd1JvdXRpbmUgKnJvdXRpbmUgPSBHZXRGZHdSb3V0aW5lQnlTZXJ2ZXJJZChmdF9p bmZvLT5zZXJ2ZXJpZCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGls L3ByZWR0ZXN0LmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wcmVkdGVzdC5jCmluZGV4 IDNiZjVlN2FjOGJiLi40YWUxNDU0ODk0YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3V0aWwvcHJlZHRlc3QuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wcmVk dGVzdC5jCkBAIC0yMzQyLDE1ICsyMzQyLDEwIEBAIGdldF9idHJlZV90ZXN0X29wKE9pZCBwcmVk X29wLCBPaWQgY2xhdXNlX29wLCBib29sIHJlZnV0ZV9pdCkKIHN0YXRpYyB2b2lkCiBJbnZhbGlk YXRlT3ByUHJvb2ZDYWNoZUNhbGxCYWNrKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBo YXNodmFsdWUpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlPcHJQcm9vZkNhY2hlRW50 cnkgKmhlbnRyeTsKLQogCUFzc2VydChPcHJQcm9vZkNhY2hlSGFzaCAhPSBOVUxMKTsKIAogCS8q IEN1cnJlbnRseSB3ZSBqdXN0IHJlc2V0IGFsbCBlbnRyaWVzOyBoYXJkIHRvIGJlIHNtYXJ0ZXIg Li4uICovCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBPcHJQcm9vZkNhY2hlSGFzaCk7Ci0KLQl3 aGlsZSAoKGhlbnRyeSA9IChPcHJQcm9vZkNhY2hlRW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZz dGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChPcHJQcm9vZkNhY2hlRW50cnksIGhlbnRy eSwgT3ByUHJvb2ZDYWNoZUhhc2gpCiAJewogCQloZW50cnktPmhhdmVfaW1wbGljID0gZmFsc2U7 CiAJCWhlbnRyeS0+aGF2ZV9yZWZ1dGUgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV9vcGVyLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vfb3Blci5jCmlu ZGV4IGQzNmU3YWQzMDMwLi5iMjVhYjBlNmI3YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX29wZXIuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vfb3Blci5jCkBA IC0xMDc2LDE1ICsxMDc2LDEwIEBAIG1ha2Vfb3Blcl9jYWNoZV9lbnRyeShPcHJDYWNoZUtleSAq a2V5LCBPaWQgb3ByX29pZCkKIHN0YXRpYyB2b2lkCiBJbnZhbGlkYXRlT3ByQ2FjaGVDYWxsQmFj ayhEYXR1bSBhcmcsIGludCBjYWNoZWlkLCB1aW50MzIgaGFzaHZhbHVlKQogewotCUhBU0hfU0VR X1NUQVRVUyBzdGF0dXM7Ci0JT3ByQ2FjaGVFbnRyeSAqaGVudHJ5OwotCiAJQXNzZXJ0KE9wckNh Y2hlSGFzaCAhPSBOVUxMKTsKIAogCS8qIEN1cnJlbnRseSB3ZSBqdXN0IGZsdXNoIGFsbCBlbnRy aWVzOyBoYXJkIHRvIGJlIHNtYXJ0ZXIgLi4uICovCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBP cHJDYWNoZUhhc2gpOwotCi0Jd2hpbGUgKChoZW50cnkgPSAoT3ByQ2FjaGVFbnRyeSAqKSBoYXNo X3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKE9wckNhY2hlRW50 cnksIGhlbnRyeSwgT3ByQ2FjaGVIYXNoKQogCXsKIAkJaWYgKGhhc2hfc2VhcmNoKE9wckNhY2hl SGFzaCwKIAkJCQkJCSZoZW50cnktPmtleSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnRp dGlvbmluZy9wYXJ0ZGVzYy5jIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRkZXNjLmMK aW5kZXggZGIyNmU0YTgyYjYuLjNlY2M5Mzg3MjNiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9w YXJ0aXRpb25pbmcvcGFydGRlc2MuYworKysgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFy dGRlc2MuYwpAQCAtNDc4LDExICs0NzgsNyBAQCBQYXJ0aXRpb25EaXJlY3RvcnlMb29rdXAoUGFy dGl0aW9uRGlyZWN0b3J5IHBkaXIsIFJlbGF0aW9uIHJlbCkKIHZvaWQKIERlc3Ryb3lQYXJ0aXRp b25EaXJlY3RvcnkoUGFydGl0aW9uRGlyZWN0b3J5IHBkaXIpCiB7Ci0JSEFTSF9TRVFfU1RBVFVT IHN0YXR1czsKLQlQYXJ0aXRpb25EaXJlY3RvcnlFbnRyeSAqcGRlOwotCi0JaGFzaF9zZXFfaW5p dCgmc3RhdHVzLCBwZGlyLT5wZGlyX2hhc2gpOwotCXdoaWxlICgocGRlID0gaGFzaF9zZXFfc2Vh cmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChQYXJ0aXRpb25EaXJlY3RvcnlF bnRyeSwgcGRlLCBwZGlyLT5wZGlyX2hhc2gpCiAJCVJlbGF0aW9uRGVjcmVtZW50UmVmZXJlbmNl Q291bnQocGRlLT5yZWwpOwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVy L2F1dG92YWN1dW0uYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCmluZGV4 IGQ0YTI5YmJmODdiLi4wNTQwYTRlMmQ3ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1h c3Rlci9hdXRvdmFjdXVtLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVt LmMKQEAgLTEwMTgsOCArMTAxOCw2IEBAIHJlYnVpbGRfZGF0YWJhc2VfbGlzdChPaWQgbmV3ZGIp CiAJCVRpbWVzdGFtcFR6IGN1cnJlbnRfdGltZTsKIAkJaW50CQkJbWlsbGlzX2luY3JlbWVudDsK IAkJYXZsX2RiYXNlICAqZGJhcnk7Ci0JCWF2bF9kYmFzZSAgKmRiOwotCQlIQVNIX1NFUV9TVEFU VVMgc2VxOwogCQlpbnQJCQlpOwogCiAJCS8qIHB1dCBhbGwgdGhlIGhhc2ggZWxlbWVudHMgaW50 byBhbiBhcnJheSAqLwpAQCAtMTAzMCw4ICsxMDI4LDcgQEAgcmVidWlsZF9kYXRhYmFzZV9saXN0 KE9pZCBuZXdkYikKICNlbmRpZgogCiAJCWkgPSAwOwotCQloYXNoX3NlcV9pbml0KCZzZXEsIGRi aGFzaCk7Ci0JCXdoaWxlICgoZGIgPSBoYXNoX3NlcV9zZWFyY2goJnNlcSkpICE9IE5VTEwpCisJ CWZvcmVhY2hfaGFzaChhdmxfZGJhc2UsIGRiLCBkYmhhc2gpCiAJCQltZW1jcHkoJihkYmFyeVtp KytdKSwgZGIsIHNpemVvZihhdmxfZGJhc2UpKTsKIAogCQkvKiBzb3J0IHRoZSBhcnJheSAqLwpA QCAtMTA1Niw3ICsxMDUzLDcgQEAgcmVidWlsZF9kYXRhYmFzZV9saXN0KE9pZCBuZXdkYikKIAkJ ICovCiAJCWZvciAoaSA9IDA7IGkgPCBuZWxlbXM7IGkrKykKIAkJewotCQkJZGIgPSAmKGRiYXJ5 W2ldKTsKKwkJCWF2bF9kYmFzZSAgKmRiID0gJihkYmFyeVtpXSk7CiAKIAkJCWN1cnJlbnRfdGlt ZSA9IFRpbWVzdGFtcFR6UGx1c01pbGxpc2Vjb25kcyhjdXJyZW50X3RpbWUsCiAJCQkJCQkJCQkJ CQkJICAgbWlsbGlzX2luY3JlbWVudCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L3JlbGF0aW9uLmMKaW5kZXggZmNmMjk1ZjFkZjEuLmZlZjljMzU3YTNmIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMKKysrIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jCkBAIC02NCwyNSArNjQsMTkgQEAgc3Rh dGljIE9pZAlGaW5kTG9naWNhbFJlcExvY2FsSW5kZXgoUmVsYXRpb24gbG9jYWxyZWwsIExvZ2lj YWxSZXBSZWxhdGlvbiAqcmVtb3QKIHN0YXRpYyB2b2lkCiBsb2dpY2FscmVwX3JlbG1hcF9pbnZh bGlkYXRlX2NiKERhdHVtIGFyZywgT2lkIHJlbG9pZCkKIHsKLQlMb2dpY2FsUmVwUmVsTWFwRW50 cnkgKmVudHJ5OwotCiAJLyogSnVzdCB0byBiZSBzdXJlLiAqLwogCWlmIChMb2dpY2FsUmVwUmVs TWFwID09IE5VTEwpCiAJCXJldHVybjsKIAogCWlmIChyZWxvaWQgIT0gSW52YWxpZE9pZCkKIAl7 Ci0JCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0KLQkJaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBM b2dpY2FsUmVwUmVsTWFwKTsKLQogCQkvKiBUT0RPLCB1c2UgaW52ZXJzZSBsb29rdXAgaGFzaHRh YmxlPyAqLwotCQl3aGlsZSAoKGVudHJ5ID0gKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqKSBoYXNo X3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJCWZvcmVhY2hfaGFzaChMb2dpY2FsUmVw UmVsTWFwRW50cnksIGVudHJ5LCBMb2dpY2FsUmVwUmVsTWFwKQogCQl7CiAJCQlpZiAoZW50cnkt PmxvY2FscmVsb2lkID09IHJlbG9pZCkKIAkJCXsKIAkJCQllbnRyeS0+bG9jYWxyZWx2YWxpZCA9 IGZhbHNlOwotCQkJCWhhc2hfc2VxX3Rlcm0oJnN0YXR1cyk7CisJCQkJZm9yZWFjaF9oYXNoX3Rl cm0oZW50cnkpOwogCQkJCWJyZWFrOwogCQkJfQogCQl9CkBAIC05MCwxMSArODQsNyBAQCBsb2dp Y2FscmVwX3JlbG1hcF9pbnZhbGlkYXRlX2NiKERhdHVtIGFyZywgT2lkIHJlbG9pZCkKIAllbHNl CiAJewogCQkvKiBpbnZhbGlkYXRlIGFsbCBjYWNoZSBlbnRyaWVzICovCi0JCUhBU0hfU0VRX1NU QVRVUyBzdGF0dXM7Ci0KLQkJaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBMb2dpY2FsUmVwUmVsTWFw KTsKLQotCQl3aGlsZSAoKGVudHJ5ID0gKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqKSBoYXNoX3Nl cV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJCWZvcmVhY2hfaGFzaChMb2dpY2FsUmVwUmVs TWFwRW50cnksIGVudHJ5LCBMb2dpY2FsUmVwUmVsTWFwKQogCQkJZW50cnktPmxvY2FscmVsdmFs aWQgPSBmYWxzZTsKIAl9CiB9CkBAIC01MzEsMjUgKzUyMSwxOSBAQCBsb2dpY2FscmVwX3JlbF9j bG9zZShMb2dpY2FsUmVwUmVsTWFwRW50cnkgKnJlbCwgTE9DS01PREUgbG9ja21vZGUpCiBzdGF0 aWMgdm9pZAogbG9naWNhbHJlcF9wYXJ0bWFwX2ludmFsaWRhdGVfY2IoRGF0dW0gYXJnLCBPaWQg cmVsb2lkKQogewotCUxvZ2ljYWxSZXBQYXJ0TWFwRW50cnkgKmVudHJ5OwotCiAJLyogSnVzdCB0 byBiZSBzdXJlLiAqLwogCWlmIChMb2dpY2FsUmVwUGFydE1hcCA9PSBOVUxMKQogCQlyZXR1cm47 CiAKIAlpZiAocmVsb2lkICE9IEludmFsaWRPaWQpCiAJewotCQlIQVNIX1NFUV9TVEFUVVMgc3Rh dHVzOwotCi0JCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgTG9naWNhbFJlcFBhcnRNYXApOwotCiAJ CS8qIFRPRE8sIHVzZSBpbnZlcnNlIGxvb2t1cCBoYXNodGFibGU/ICovCi0JCXdoaWxlICgoZW50 cnkgPSAoTG9naWNhbFJlcFBhcnRNYXBFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykp ICE9IE5VTEwpCisJCWZvcmVhY2hfaGFzaChMb2dpY2FsUmVwUGFydE1hcEVudHJ5LCBlbnRyeSwg TG9naWNhbFJlcFBhcnRNYXApCiAJCXsKIAkJCWlmIChlbnRyeS0+cmVsbWFwZW50cnkubG9jYWxy ZWxvaWQgPT0gcmVsb2lkKQogCQkJewogCQkJCWVudHJ5LT5yZWxtYXBlbnRyeS5sb2NhbHJlbHZh bGlkID0gZmFsc2U7Ci0JCQkJaGFzaF9zZXFfdGVybSgmc3RhdHVzKTsKKwkJCQlmb3JlYWNoX2hh c2hfdGVybShlbnRyeSk7CiAJCQkJYnJlYWs7CiAJCQl9CiAJCX0KQEAgLTU1NywxMSArNTQxLDcg QEAgbG9naWNhbHJlcF9wYXJ0bWFwX2ludmFsaWRhdGVfY2IoRGF0dW0gYXJnLCBPaWQgcmVsb2lk KQogCWVsc2UKIAl7CiAJCS8qIGludmFsaWRhdGUgYWxsIGNhY2hlIGVudHJpZXMgKi8KLQkJSEFT SF9TRVFfU1RBVFVTIHN0YXR1czsKLQotCQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIExvZ2ljYWxS ZXBQYXJ0TWFwKTsKLQotCQl3aGlsZSAoKGVudHJ5ID0gKExvZ2ljYWxSZXBQYXJ0TWFwRW50cnkg KikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCQlmb3JlYWNoX2hhc2goTG9n aWNhbFJlcFBhcnRNYXBFbnRyeSwgZW50cnksIExvZ2ljYWxSZXBQYXJ0TWFwKQogCQkJZW50cnkt PnJlbG1hcGVudHJ5LmxvY2FscmVsdmFsaWQgPSBmYWxzZTsKIAl9CiB9CkBAIC01NzksMTUgKzU1 OSwxMiBAQCBsb2dpY2FscmVwX3BhcnRtYXBfaW52YWxpZGF0ZV9jYihEYXR1bSBhcmcsIE9pZCBy ZWxvaWQpCiB2b2lkCiBsb2dpY2FscmVwX3BhcnRtYXBfcmVzZXRfcmVsbWFwKExvZ2ljYWxSZXBS ZWxhdGlvbiAqcmVtb3RlcmVsKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JTG9naWNh bFJlcFBhcnRNYXBFbnRyeSAqcGFydF9lbnRyeTsKIAlMb2dpY2FsUmVwUmVsTWFwRW50cnkgKmVu dHJ5OwogCiAJaWYgKExvZ2ljYWxSZXBQYXJ0TWFwID09IE5VTEwpCiAJCXJldHVybjsKIAotCWhh c2hfc2VxX2luaXQoJnN0YXR1cywgTG9naWNhbFJlcFBhcnRNYXApOwotCXdoaWxlICgocGFydF9l bnRyeSA9IChMb2dpY2FsUmVwUGFydE1hcEVudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVz KSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goTG9naWNhbFJlcFBhcnRNYXBFbnRyeSwgcGFydF9l bnRyeSwgTG9naWNhbFJlcFBhcnRNYXApCiAJewogCQllbnRyeSA9ICZwYXJ0X2VudHJ5LT5yZWxt YXBlbnRyeTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9y ZW9yZGVyYnVmZmVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJi dWZmZXIuYwppbmRleCBmYTkzYTFiYmRlMS4uYWRkMzE1MTQ0NDQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCisrKyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCkBAIC01MjQ3LDE1ICs1MjQ3 LDExIEBAIFJlb3JkZXJCdWZmZXJUb2FzdFJlcGxhY2UoUmVvcmRlckJ1ZmZlciAqcmIsIFJlb3Jk ZXJCdWZmZXJUWE4gKnR4biwKIHN0YXRpYyB2b2lkCiBSZW9yZGVyQnVmZmVyVG9hc3RSZXNldChS ZW9yZGVyQnVmZmVyICpyYiwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuKQogewotCUhBU0hfU0VRX1NU QVRVUyBoc3RhdDsKLQlSZW9yZGVyQnVmZmVyVG9hc3RFbnQgKmVudDsKLQogCWlmICh0eG4tPnRv YXN0X2hhc2ggPT0gTlVMTCkKIAkJcmV0dXJuOwogCiAJLyogc2VxdWVudGlhbGx5IHdhbGsgb3Zl ciB0aGUgaGFzaCBhbmQgZnJlZSBldmVyeXRoaW5nICovCi0JaGFzaF9zZXFfaW5pdCgmaHN0YXQs IHR4bi0+dG9hc3RfaGFzaCk7Ci0Jd2hpbGUgKChlbnQgPSAoUmVvcmRlckJ1ZmZlclRvYXN0RW50 ICopIGhhc2hfc2VxX3NlYXJjaCgmaHN0YXQpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChSZW9y ZGVyQnVmZmVyVG9hc3RFbnQsIGVudCwgdHhuLT50b2FzdF9oYXNoKQogCXsKIAkJZGxpc3RfbXV0 YWJsZV9pdGVyIGl0OwogCkBAIC01MzE4LDExICs1MzE0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUmV3 cml0ZU1hcHBpbmdGaWxlCiBzdGF0aWMgdm9pZAogRGlzcGxheU1hcHBpbmcoSFRBQiAqdHVwbGVj aWRfZGF0YSkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgaHN0YXQ7Ci0JUmVvcmRlckJ1ZmZlclR1cGxl Q2lkRW50ICplbnQ7Ci0KLQloYXNoX3NlcV9pbml0KCZoc3RhdCwgdHVwbGVjaWRfZGF0YSk7Ci0J d2hpbGUgKChlbnQgPSAoUmVvcmRlckJ1ZmZlclR1cGxlQ2lkRW50ICopIGhhc2hfc2VxX3NlYXJj aCgmaHN0YXQpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChSZW9yZGVyQnVmZmVyVHVwbGVDaWRF bnQsIGVudCwgdHVwbGVjaWRfZGF0YSkKIAl7CiAJCWVsb2coREVCVUczLCAibWFwcGluZzogbm9k ZTogJXUvJXUvJXUgdGlkOiAldS8ldSBjbWluOiAldSwgY21heDogJXUiLAogCQkJIGVudC0+a2V5 LnJsb2NhdG9yLmRiT2lkLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdv dXRwdXQvcGdvdXRwdXQuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0 cHV0LmMKaW5kZXggMGRjZmJmZGQ2MDkuLjUwN2E4NzNjYTFiIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCisrKyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKQEAgLTIzNDMsMTMgKzIzNDMsOSBAQCBnZXRf cmVsX3N5bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbikKIHN0 YXRpYyB2b2lkCiBjbGVhbnVwX3JlbF9zeW5jX2NhY2hlKFRyYW5zYWN0aW9uSWQgeGlkLCBib29s IGlzX2NvbW1pdCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgaGFzaF9zZXE7Ci0JUmVsYXRpb25TeW5j RW50cnkgKmVudHJ5OwotCiAJQXNzZXJ0KFJlbGF0aW9uU3luY0NhY2hlICE9IE5VTEwpOwogCi0J aGFzaF9zZXFfaW5pdCgmaGFzaF9zZXEsIFJlbGF0aW9uU3luY0NhY2hlKTsKLQl3aGlsZSAoKGVu dHJ5ID0gaGFzaF9zZXFfc2VhcmNoKCZoYXNoX3NlcSkpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNo KFJlbGF0aW9uU3luY0VudHJ5LCBlbnRyeSwgUmVsYXRpb25TeW5jQ2FjaGUpCiAJewogCQkvKgog CQkgKiBXZSBjYW4gc2V0IHRoZSBzY2hlbWFfc2VudCBmbGFnIGZvciBhbiBlbnRyeSB0aGF0IGhh cyBjb21taXR0ZWQgeGlkCkBAIC0yMzc4LDggKzIzNzQsNiBAQCBjbGVhbnVwX3JlbF9zeW5jX2Nh Y2hlKFRyYW5zYWN0aW9uSWQgeGlkLCBib29sIGlzX2NvbW1pdCkKIHN0YXRpYyB2b2lkCiByZWxf c3luY19jYWNoZV9yZWxhdGlvbl9jYihEYXR1bSBhcmcsIE9pZCByZWxpZCkKIHsKLQlSZWxhdGlv blN5bmNFbnRyeSAqZW50cnk7Ci0KIAkvKgogCSAqIFdlIGNhbiBnZXQgaGVyZSBpZiB0aGUgcGx1 Z2luIHdhcyB1c2VkIGluIFNRTCBpbnRlcmZhY2UgYXMgdGhlCiAJICogUmVsYXRpb25TeW5jQ2Fj aGUgaXMgZGVzdHJveWVkIHdoZW4gdGhlIGRlY29kaW5nIGZpbmlzaGVzLCBidXQgdGhlcmUgaXMK QEAgLTI0MDIsMTggKzIzOTYsMTYgQEAgcmVsX3N5bmNfY2FjaGVfcmVsYXRpb25fY2IoRGF0dW0g YXJnLCBPaWQgcmVsaWQpCiAJCSAqIEdldHRpbmcgaW52YWxpZGF0aW9ucyBmb3IgcmVsYXRpb25z IHRoYXQgYXJlbid0IGluIHRoZSB0YWJsZSBpcwogCQkgKiBlbnRpcmVseSBub3JtYWwuICBTbyB3 ZSBkb24ndCBjYXJlIGlmIGl0J3MgZm91bmQgb3Igbm90LgogCQkgKi8KLQkJZW50cnkgPSAoUmVs YXRpb25TeW5jRW50cnkgKikgaGFzaF9zZWFyY2goUmVsYXRpb25TeW5jQ2FjaGUsICZyZWxpZCwK LQkJCQkJCQkJCQkJCSAgSEFTSF9GSU5ELCBOVUxMKTsKKwkJUmVsYXRpb25TeW5jRW50cnkgKmVu dHJ5ID0gaGFzaF9zZWFyY2goUmVsYXRpb25TeW5jQ2FjaGUsICZyZWxpZCwKKwkJCQkJCQkJCQkJ ICAgSEFTSF9GSU5ELCBOVUxMKTsKKwogCQlpZiAoZW50cnkgIT0gTlVMTCkKIAkJCWVudHJ5LT5y ZXBsaWNhdGVfdmFsaWQgPSBmYWxzZTsKIAl9CiAJZWxzZQogCXsKIAkJLyogV2hvbGUgY2FjaGUg bXVzdCBiZSBmbHVzaGVkLiAqLwotCQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCi0JCWhhc2hf c2VxX2luaXQoJnN0YXR1cywgUmVsYXRpb25TeW5jQ2FjaGUpOwotCQl3aGlsZSAoKGVudHJ5ID0g KFJlbGF0aW9uU3luY0VudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkK KwkJZm9yZWFjaF9oYXNoKFJlbGF0aW9uU3luY0VudHJ5LCBlbnRyeSwgUmVsYXRpb25TeW5jQ2Fj aGUpCiAJCXsKIAkJCWVudHJ5LT5yZXBsaWNhdGVfdmFsaWQgPSBmYWxzZTsKIAkJfQpAQCAtMjQy OCw5ICsyNDIwLDYgQEAgcmVsX3N5bmNfY2FjaGVfcmVsYXRpb25fY2IoRGF0dW0gYXJnLCBPaWQg cmVsaWQpCiBzdGF0aWMgdm9pZAogcmVsX3N5bmNfY2FjaGVfcHVibGljYXRpb25fY2IoRGF0dW0g YXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKIHsKLQlIQVNIX1NFUV9TVEFUVVMg c3RhdHVzOwotCVJlbGF0aW9uU3luY0VudHJ5ICplbnRyeTsKLQogCS8qCiAJICogV2UgY2FuIGdl dCBoZXJlIGlmIHRoZSBwbHVnaW4gd2FzIHVzZWQgaW4gU1FMIGludGVyZmFjZSBhcyB0aGUKIAkg KiBSZWxhdGlvblN5bmNDYWNoZSBpcyBkZXN0cm95ZWQgd2hlbiB0aGUgZGVjb2RpbmcgZmluaXNo ZXMsIGJ1dCB0aGVyZSBpcwpAQCAtMjQ0Myw4ICsyNDMyLDcgQEAgcmVsX3N5bmNfY2FjaGVfcHVi bGljYXRpb25fY2IoRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKIAkg KiBXZSBoYXZlIG5vIGVhc3kgd2F5IHRvIGlkZW50aWZ5IHdoaWNoIGNhY2hlIGVudHJpZXMgdGhp cyBpbnZhbGlkYXRpb24KIAkgKiBldmVudCBtaWdodCBoYXZlIGFmZmVjdGVkLCBzbyBqdXN0IG1h cmsgdGhlbSBhbGwgaW52YWxpZC4KIAkgKi8KLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIFJlbGF0 aW9uU3luY0NhY2hlKTsKLQl3aGlsZSAoKGVudHJ5ID0gKFJlbGF0aW9uU3luY0VudHJ5ICopIGhh c2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUmVsYXRpb25T eW5jRW50cnksIGVudHJ5LCBSZWxhdGlvblN5bmNDYWNoZSkKIAl7CiAJCWVudHJ5LT5yZXBsaWNh dGVfdmFsaWQgPSBmYWxzZTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1 ZmZlci9idWZtZ3IuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCmluZGV4 IDJhOTdlY2RiYmE2Li41MmJjODhhMGI0ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFn ZS9idWZmZXIvYnVmbWdyLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdy LmMKQEAgLTQxNzEsNyArNDE3MSw2IEBAIENoZWNrRm9yQnVmZmVyTGVha3Modm9pZCkKIHsKICNp ZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCiAJaW50CQkJUmVmQ291bnRFcnJvcnMgPSAwOwotCVBy aXZhdGVSZWZDb3VudEVudHJ5ICpyZXM7CiAJaW50CQkJaTsKIAljaGFyCSAgICpzOwogCkBAIC00 MTgwLDcgKzQxNzksNyBAQCBDaGVja0ZvckJ1ZmZlckxlYWtzKHZvaWQpCiAJewogCQlpZiAoUHJp dmF0ZVJlZkNvdW50QXJyYXlLZXlzW2ldICE9IEludmFsaWRCdWZmZXIpCiAJCXsKLQkJCXJlcyA9 ICZQcml2YXRlUmVmQ291bnRBcnJheVtpXTsKKwkJCVByaXZhdGVSZWZDb3VudEVudHJ5ICpyZXMg PSAmUHJpdmF0ZVJlZkNvdW50QXJyYXlbaV07CiAKIAkJCXMgPSBEZWJ1Z1ByaW50QnVmZmVyUmVm Y291bnQocmVzLT5idWZmZXIpOwogCQkJZWxvZyhXQVJOSU5HLCAiYnVmZmVyIHJlZmNvdW50IGxl YWs6ICVzIiwgcyk7CkBAIC00MTkzLDEyICs0MTkyLDkgQEAgQ2hlY2tGb3JCdWZmZXJMZWFrcyh2 b2lkKQogCS8qIGlmIG5lY2Vzc2FyeSBzZWFyY2ggdGhlIGhhc2ggKi8KIAlpZiAoUHJpdmF0ZVJl ZkNvdW50T3ZlcmZsb3dlZCkKIAl7Ci0JCUhBU0hfU0VRX1NUQVRVUyBoc3RhdDsKLQotCQloYXNo X3NlcV9pbml0KCZoc3RhdCwgUHJpdmF0ZVJlZkNvdW50SGFzaCk7Ci0JCXdoaWxlICgocmVzID0g KFByaXZhdGVSZWZDb3VudEVudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmaHN0YXQpKSAhPSBOVUxM KQorCQlmb3JlYWNoX2hhc2goUHJpdmF0ZVJlZkNvdW50RW50cnksIGVudCwgUHJpdmF0ZVJlZkNv dW50SGFzaCkKIAkJewotCQkJcyA9IERlYnVnUHJpbnRCdWZmZXJSZWZjb3VudChyZXMtPmJ1ZmZl cik7CisJCQlzID0gRGVidWdQcmludEJ1ZmZlclJlZmNvdW50KGVudC0+YnVmZmVyKTsKIAkJCWVs b2coV0FSTklORywgImJ1ZmZlciByZWZjb3VudCBsZWFrOiAlcyIsIHMpOwogCQkJcGZyZWUocyk7 CiAJCQlSZWZDb3VudEVycm9ycysrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvc2htZW0uYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMKaW5kZXggYjZhOGQx ZWM3NzYuLjVmZDFlMzFmMzQ2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9z aG1lbS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMKQEAgLTUzOSw4ICs1 MzksNiBAQCBwZ19nZXRfc2htZW1fYWxsb2NhdGlvbnMoUEdfRlVOQ1RJT05fQVJHUykKIHsKICNk ZWZpbmUgUEdfR0VUX1NITUVNX1NJWkVTX0NPTFMgNAogCVJldHVyblNldEluZm8gKnJzaW5mbyA9 IChSZXR1cm5TZXRJbmZvICopIGZjaW5mby0+cmVzdWx0aW5mbzsKLQlIQVNIX1NFUV9TVEFUVVMg aHN0YXQ7Ci0JU2htZW1JbmRleEVudCAqZW50OwogCVNpemUJCW5hbWVkX2FsbG9jYXRlZCA9IDA7 CiAJRGF0dW0JCXZhbHVlc1tQR19HRVRfU0hNRU1fU0laRVNfQ09MU107CiAJYm9vbAkJbnVsbHNb UEdfR0VUX1NITUVNX1NJWkVTX0NPTFNdOwpAQCAtNTQ5LDExICs1NDcsOSBAQCBwZ19nZXRfc2ht ZW1fYWxsb2NhdGlvbnMoUEdfRlVOQ1RJT05fQVJHUykKIAogCUxXTG9ja0FjcXVpcmUoU2htZW1J bmRleExvY2ssIExXX1NIQVJFRCk7CiAKLQloYXNoX3NlcV9pbml0KCZoc3RhdCwgU2htZW1JbmRl eCk7Ci0KIAkvKiBvdXRwdXQgYWxsIGFsbG9jYXRlZCBlbnRyaWVzICovCiAJbWVtc2V0KG51bGxz LCAwLCBzaXplb2YobnVsbHMpKTsKLQl3aGlsZSAoKGVudCA9IChTaG1lbUluZGV4RW50ICopIGhh c2hfc2VxX3NlYXJjaCgmaHN0YXQpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChTaG1lbUluZGV4 RW50LCBlbnQsIFNobWVtSW5kZXgpCiAJewogCQl2YWx1ZXNbMF0gPSBDU3RyaW5nR2V0VGV4dERh dHVtKGVudC0+a2V5KTsKIAkJdmFsdWVzWzFdID0gSW50NjRHZXREYXR1bSgoY2hhciAqKSBlbnQt PmxvY2F0aW9uIC0gKGNoYXIgKikgU2htZW1TZWdIZHIpOwpAQCAtNTk2LDggKzU5Miw2IEBAIHBn X2dldF9zaG1lbV9hbGxvY2F0aW9uc19udW1hKFBHX0ZVTkNUSU9OX0FSR1MpCiB7CiAjZGVmaW5l IFBHX0dFVF9TSE1FTV9OVU1BX1NJWkVTX0NPTFMgMwogCVJldHVyblNldEluZm8gKnJzaW5mbyA9 IChSZXR1cm5TZXRJbmZvICopIGZjaW5mby0+cmVzdWx0aW5mbzsKLQlIQVNIX1NFUV9TVEFUVVMg aHN0YXQ7Ci0JU2htZW1JbmRleEVudCAqZW50OwogCURhdHVtCQl2YWx1ZXNbUEdfR0VUX1NITUVN X05VTUFfU0laRVNfQ09MU107CiAJYm9vbAkJbnVsbHNbUEdfR0VUX1NITUVNX05VTUFfU0laRVNf Q09MU107CiAJU2l6ZQkJb3NfcGFnZV9zaXplOwpAQCAtNjQ3LDExICs2NDEsOSBAQCBwZ19nZXRf c2htZW1fYWxsb2NhdGlvbnNfbnVtYShQR19GVU5DVElPTl9BUkdTKQogCiAJTFdMb2NrQWNxdWly ZShTaG1lbUluZGV4TG9jaywgTFdfU0hBUkVEKTsKIAotCWhhc2hfc2VxX2luaXQoJmhzdGF0LCBT aG1lbUluZGV4KTsKLQogCS8qIG91dHB1dCBhbGwgYWxsb2NhdGVkIGVudHJpZXMgKi8KIAltZW1z ZXQobnVsbHMsIDAsIHNpemVvZihudWxscykpOwotCXdoaWxlICgoZW50ID0gKFNobWVtSW5kZXhF bnQgKikgaGFzaF9zZXFfc2VhcmNoKCZoc3RhdCkpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFNo bWVtSW5kZXhFbnQsIGVudCwgU2htZW1JbmRleCkKIAl7CiAJCWludAkJCWk7CiAJCWNoYXIJICAg KnN0YXJ0cHRyLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5j IGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jCmluZGV4IDdhOTZlM2UyMDM5Li44 ZjAwYThlMWYwMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5j CisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYwpAQCAtMTA5OSwxMyArMTA5 OSw5IEBAIFN0YW5kYnlSZWxlYXNlTG9ja1RyZWUoVHJhbnNhY3Rpb25JZCB4aWQsIGludCBuc3Vi eGlkcywgVHJhbnNhY3Rpb25JZCAqc3VieGlkcykKIHZvaWQKIFN0YW5kYnlSZWxlYXNlQWxsTG9j a3Modm9pZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVJlY292ZXJ5TG9ja1hpZEVu dHJ5ICplbnRyeTsKLQogCWVsb2coREVCVUcyLCAicmVsZWFzZSBhbGwgc3RhbmRieSBsb2NrcyIp OwogCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBSZWNvdmVyeUxvY2tYaWRIYXNoKTsKLQl3aGls ZSAoKGVudHJ5ID0gaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSkKKwlmb3JlYWNoX2hhc2goUmVj b3ZlcnlMb2NrWGlkRW50cnksIGVudHJ5LCBSZWNvdmVyeUxvY2tYaWRIYXNoKQogCXsKIAkJU3Rh bmRieVJlbGVhc2VYaWRFbnRyeUxvY2tzKGVudHJ5KTsKIAkJaGFzaF9zZWFyY2goUmVjb3ZlcnlM b2NrWGlkSGFzaCwgZW50cnksIEhBU0hfUkVNT1ZFLCBOVUxMKTsKQEAgLTExMjMsMTEgKzExMTks NyBAQCBTdGFuZGJ5UmVsZWFzZUFsbExvY2tzKHZvaWQpCiB2b2lkCiBTdGFuZGJ5UmVsZWFzZU9s ZExvY2tzKFRyYW5zYWN0aW9uSWQgb2xkeGlkKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7 Ci0JUmVjb3ZlcnlMb2NrWGlkRW50cnkgKmVudHJ5OwotCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVz LCBSZWNvdmVyeUxvY2tYaWRIYXNoKTsKLQl3aGlsZSAoKGVudHJ5ID0gaGFzaF9zZXFfc2VhcmNo KCZzdGF0dXMpKSkKKwlmb3JlYWNoX2hhc2goUmVjb3ZlcnlMb2NrWGlkRW50cnksIGVudHJ5LCBS ZWNvdmVyeUxvY2tYaWRIYXNoKQogCXsKIAkJQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKGVu dHJ5LT54aWQpKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xvY2su YyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMKaW5kZXggM2YyMGM4NTg4MWEuLmVi ZmI3NmNjNDc2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG9jay5jCisr KyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMKQEAgLTIyOTIsMTEgKzIyOTIsOSBA QCBMb2NrUmVsZWFzZShjb25zdCBMT0NLVEFHICpsb2NrdGFnLCBMT0NLTU9ERSBsb2NrbW9kZSwg Ym9vbCBzZXNzaW9uTG9jaykKIHZvaWQKIExvY2tSZWxlYXNlQWxsKExPQ0tNRVRIT0RJRCBsb2Nr bWV0aG9kaWQsIGJvb2wgYWxsTG9ja3MpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKIAlM b2NrTWV0aG9kCWxvY2tNZXRob2RUYWJsZTsKIAlpbnQJCQlpLAogCQkJCW51bUxvY2tNb2RlczsK LQlMT0NBTExPQ0sgICpsb2NhbGxvY2s7CiAJTE9DSwkgICAqbG9jazsKIAlpbnQJCQlwYXJ0aXRp b247CiAJYm9vbAkJaGF2ZV9mYXN0X3BhdGhfbHdsb2NrID0gZmFsc2U7CkBAIC0yMzI5LDkgKzIz MjcsNyBAQCBMb2NrUmVsZWFzZUFsbChMT0NLTUVUSE9ESUQgbG9ja21ldGhvZGlkLCBib29sIGFs bExvY2tzKQogCSAqIHBvaW50ZXJzLiAgRmFzdC1wYXRoIGxvY2tzIGFyZSBjbGVhbmVkIHVwIGR1 cmluZyB0aGUgbG9jYWxsb2NrIHRhYmxlCiAJICogc2NhbiwgdGhvdWdoLgogCSAqLwotCWhhc2hf c2VxX2luaXQoJnN0YXR1cywgTG9ja01ldGhvZExvY2FsSGFzaCk7Ci0KLQl3aGlsZSAoKGxvY2Fs bG9jayA9IChMT0NBTExPQ0sgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQor CWZvcmVhY2hfaGFzaChMT0NBTExPQ0ssIGxvY2FsbG9jaywgTG9ja01ldGhvZExvY2FsSGFzaCkK IAl7CiAJCS8qCiAJCSAqIElmIHRoZSBMT0NBTExPQ0sgZW50cnkgaXMgdW51c2VkLCBzb21ldGhp bmcgbXVzdCd2ZSBnb25lIHdyb25nCkBAIC0yNTY2LDE1ICsyNTYyLDEwIEBAIExvY2tSZWxlYXNl QWxsKExPQ0tNRVRIT0RJRCBsb2NrbWV0aG9kaWQsIGJvb2wgYWxsTG9ja3MpCiB2b2lkCiBMb2Nr UmVsZWFzZVNlc3Npb24oTE9DS01FVEhPRElEIGxvY2ttZXRob2RpZCkKIHsKLQlIQVNIX1NFUV9T VEFUVVMgc3RhdHVzOwotCUxPQ0FMTE9DSyAgKmxvY2FsbG9jazsKLQogCWlmIChsb2NrbWV0aG9k aWQgPD0gMCB8fCBsb2NrbWV0aG9kaWQgPj0gbGVuZ3Rob2YoTG9ja01ldGhvZHMpKQogCQllbG9n KEVSUk9SLCAidW5yZWNvZ25pemVkIGxvY2sgbWV0aG9kOiAlZCIsIGxvY2ttZXRob2RpZCk7CiAK LQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIExvY2tNZXRob2RMb2NhbEhhc2gpOwotCi0Jd2hpbGUg KChsb2NhbGxvY2sgPSAoTE9DQUxMT0NLICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0g TlVMTCkKKwlmb3JlYWNoX2hhc2goTE9DQUxMT0NLLCBsb2NhbGxvY2ssIExvY2tNZXRob2RMb2Nh bEhhc2gpCiAJewogCQkvKiBJZ25vcmUgaXRlbXMgdGhhdCBhcmUgbm90IG9mIHRoZSBzcGVjaWZp ZWQgbG9jayBtZXRob2QgKi8KIAkJaWYgKExPQ0FMTE9DS19MT0NLTUVUSE9EKCpsb2NhbGxvY2sp ICE9IGxvY2ttZXRob2RpZCkKQEAgLTI1OTgsMTIgKzI1ODksNyBAQCBMb2NrUmVsZWFzZUN1cnJl bnRPd25lcihMT0NBTExPQ0sgKipsb2NhbGxvY2tzLCBpbnQgbmxvY2tzKQogewogCWlmIChsb2Nh bGxvY2tzID09IE5VTEwpCiAJewotCQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCQlMT0NBTExP Q0sgICpsb2NhbGxvY2s7Ci0KLQkJaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBMb2NrTWV0aG9kTG9j YWxIYXNoKTsKLQotCQl3aGlsZSAoKGxvY2FsbG9jayA9IChMT0NBTExPQ0sgKikgaGFzaF9zZXFf c2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCQlmb3JlYWNoX2hhc2goTE9DQUxMT0NLLCBsb2Nh bGxvY2ssIExvY2tNZXRob2RMb2NhbEhhc2gpCiAJCQlSZWxlYXNlTG9ja0lmSGVsZChsb2NhbGxv Y2ssIGZhbHNlKTsKIAl9CiAJZWxzZQpAQCAtMjY5NywxMiArMjY4Myw3IEBAIExvY2tSZWFzc2ln bkN1cnJlbnRPd25lcihMT0NBTExPQ0sgKipsb2NhbGxvY2tzLCBpbnQgbmxvY2tzKQogCiAJaWYg KGxvY2FsbG9ja3MgPT0gTlVMTCkKIAl7Ci0JCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JCUxP Q0FMTE9DSyAgKmxvY2FsbG9jazsKLQotCQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIExvY2tNZXRo b2RMb2NhbEhhc2gpOwotCi0JCXdoaWxlICgobG9jYWxsb2NrID0gKExPQ0FMTE9DSyAqKSBoYXNo X3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJCWZvcmVhY2hfaGFzaChMT0NBTExPQ0ss IGxvY2FsbG9jaywgTG9ja01ldGhvZExvY2FsSGFzaCkKIAkJCUxvY2tSZWFzc2lnbk93bmVyKGxv Y2FsbG9jaywgcGFyZW50KTsKIAl9CiAJZWxzZQpAQCAtMzM4MSwxNyArMzM2MiwxMyBAQCBDaGVj a0ZvclNlc3Npb25BbmRYYWN0TG9ja3Modm9pZCkKIAl9IFBlckxvY2tUYWdFbnRyeTsKIAogCUhU QUIJICAgKmxvY2todGFiOwotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JTE9DQUxMT0NLICAq bG9jYWxsb2NrOwogCiAJLyogQ3JlYXRlIGEgbG9jYWwgaGFzaCB0YWJsZSBrZXllZCBieSBMT0NL VEFHIG9ubHkgKi8KIAlsb2NraHRhYiA9IGhhc2hfbWFrZShQZXJMb2NrVGFnRW50cnksIGxvY2ss CiAJCQkJCQkgIkNoZWNrRm9yU2Vzc2lvbkFuZFhhY3RMb2NrcyB0YWJsZSIsIDI1Nik7CiAKIAkv KiBTY2FuIGxvY2FsIGxvY2sgdGFibGUgdG8gZmluZCBlbnRyaWVzIGZvciBlYWNoIExPQ0tUQUcg Ki8KLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIExvY2tNZXRob2RMb2NhbEhhc2gpOwotCi0Jd2hp bGUgKChsb2NhbGxvY2sgPSAoTE9DQUxMT0NLICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkg IT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goTE9DQUxMT0NLLCBsb2NhbGxvY2ssIExvY2tNZXRob2RM b2NhbEhhc2gpCiAJewogCQlMT0NBTExPQ0tPV05FUiAqbG9ja093bmVycyA9IGxvY2FsbG9jay0+ bG9ja093bmVyczsKIAkJUGVyTG9ja1RhZ0VudHJ5ICpoZW50cnk7CkBAIC0zNDU0LDE2ICszNDMx LDExIEBAIENoZWNrRm9yU2Vzc2lvbkFuZFhhY3RMb2Nrcyh2b2lkKQogdm9pZAogQXRQcmVwYXJl X0xvY2tzKHZvaWQpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlMT0NBTExPQ0sgICps b2NhbGxvY2s7Ci0KIAkvKiBGaXJzdCwgdmVyaWZ5IHRoZXJlIGFyZW4ndCBsb2NrcyBvZiBib3Ro IHhhY3QgYW5kIHNlc3Npb24gbGV2ZWwgKi8KIAlDaGVja0ZvclNlc3Npb25BbmRYYWN0TG9ja3Mo KTsKIAogCS8qIE5vdyBkbyB0aGUgcGVyLWxvY2FsbG9jayBjbGVhbnVwIHdvcmsgKi8KLQloYXNo X3NlcV9pbml0KCZzdGF0dXMsIExvY2tNZXRob2RMb2NhbEhhc2gpOwotCi0Jd2hpbGUgKChsb2Nh bGxvY2sgPSAoTE9DQUxMT0NLICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkK Kwlmb3JlYWNoX2hhc2goTE9DQUxMT0NLLCBsb2NhbGxvY2ssIExvY2tNZXRob2RMb2NhbEhhc2gp CiAJewogCQlUd29QaGFzZUxvY2tSZWNvcmQgcmVjb3JkOwogCQlMT0NBTExPQ0tPV05FUiAqbG9j a093bmVycyA9IGxvY2FsbG9jay0+bG9ja093bmVyczsKQEAgLTM1NTEsOCArMzUyMyw2IEBAIHZv aWQKIFBvc3RQcmVwYXJlX0xvY2tzKEZ1bGxUcmFuc2FjdGlvbklkIGZ4aWQpCiB7CiAJUEdQUk9D CSAgICpuZXdwcm9jID0gVHdvUGhhc2VHZXREdW1teVByb2MoZnhpZCwgZmFsc2UpOwotCUhBU0hf U0VRX1NUQVRVUyBzdGF0dXM7Ci0JTE9DQUxMT0NLICAqbG9jYWxsb2NrOwogCUxPQ0sJICAgKmxv Y2s7CiAJUFJPQ0xPQ0sgICAqcHJvY2xvY2s7CiAJUFJPQ0xPQ0tUQUcgcHJvY2xvY2t0YWc7CkBA IC0zNTc0LDkgKzM1NDQsNyBAQCBQb3N0UHJlcGFyZV9Mb2NrcyhGdWxsVHJhbnNhY3Rpb25JZCBm eGlkKQogCSAqIHBvaW50aW5nIHRvIHRoZSBzYW1lIHByb2Nsb2NrLCBhbmQgd2UgZGFyZW4ndCBl bmQgdXAgd2l0aCBhbnkgZGFuZ2xpbmcKIAkgKiBwb2ludGVycy4KIAkgKi8KLQloYXNoX3NlcV9p bml0KCZzdGF0dXMsIExvY2tNZXRob2RMb2NhbEhhc2gpOwotCi0Jd2hpbGUgKChsb2NhbGxvY2sg PSAoTE9DQUxMT0NLICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3Jl YWNoX2hhc2goTE9DQUxMT0NLLCBsb2NhbGxvY2ssIExvY2tNZXRob2RMb2NhbEhhc2gpCiAJewog CQlMT0NBTExPQ0tPV05FUiAqbG9ja093bmVycyA9IGxvY2FsbG9jay0+bG9ja093bmVyczsKIAkJ Ym9vbAkJaGF2ZVNlc3Npb25Mb2NrOwpAQCAtMzc3Miw4ICszNzQwLDYgQEAgTG9ja0RhdGEgKgog R2V0TG9ja1N0YXR1c0RhdGEodm9pZCkKIHsKIAlMb2NrRGF0YSAgICpkYXRhOwotCVBST0NMT0NL ICAgKnByb2Nsb2NrOwotCUhBU0hfU0VRX1NUQVRVUyBzZXFzdGF0OwogCWludAkJCWVsczsKIAlp bnQJCQllbDsKIAlpbnQJCQlpOwpAQCAtMzkwOSw5ICszODc1LDcgQEAgR2V0TG9ja1N0YXR1c0Rh dGEodm9pZCkKIAl9CiAKIAkvKiBOb3cgc2NhbiB0aGUgdGFibGVzIHRvIGNvcHkgdGhlIGRhdGEg Ki8KLQloYXNoX3NlcV9pbml0KCZzZXFzdGF0LCBMb2NrTWV0aG9kUHJvY0xvY2tIYXNoKTsKLQot CXdoaWxlICgocHJvY2xvY2sgPSAoUFJPQ0xPQ0sgKikgaGFzaF9zZXFfc2VhcmNoKCZzZXFzdGF0 KSkpCisJZm9yZWFjaF9oYXNoKFBST0NMT0NLLCBwcm9jbG9jaywgTG9ja01ldGhvZFByb2NMb2Nr SGFzaCkKIAl7CiAJCVBHUFJPQwkgICAqcHJvYyA9IHByb2Nsb2NrLT50YWcubXlQcm9jOwogCQlM T0NLCSAgICpsb2NrID0gcHJvY2xvY2stPnRhZy5teUxvY2s7CkBAIC00MTUwLDggKzQxMTQsNiBA QCB4bF9zdGFuZGJ5X2xvY2sgKgogR2V0UnVubmluZ1RyYW5zYWN0aW9uTG9ja3MoaW50ICpubG9j a3MpCiB7CiAJeGxfc3RhbmRieV9sb2NrICphY2Nlc3NFeGNsdXNpdmVMb2NrczsKLQlQUk9DTE9D SyAgICpwcm9jbG9jazsKLQlIQVNIX1NFUV9TVEFUVVMgc2Vxc3RhdDsKIAlpbnQJCQlpOwogCWlu dAkJCWluZGV4OwogCWludAkJCWVsczsKQEAgLTQxNzMsMTAgKzQxMzUsOSBAQCBHZXRSdW5uaW5n VHJhbnNhY3Rpb25Mb2NrcyhpbnQgKm5sb2NrcykKIAkgKi8KIAlhY2Nlc3NFeGNsdXNpdmVMb2Nr cyA9IHBhbGxvYyhlbHMgKiBzaXplb2YoeGxfc3RhbmRieV9sb2NrKSk7CiAKLQkvKiBOb3cgc2Nh biB0aGUgdGFibGVzIHRvIGNvcHkgdGhlIGRhdGEgKi8KLQloYXNoX3NlcV9pbml0KCZzZXFzdGF0 LCBMb2NrTWV0aG9kUHJvY0xvY2tIYXNoKTsKLQogCS8qCisJICogTm93IHNjYW4gdGhlIHRhYmxl cyB0byBjb3B5IHRoZSBkYXRhLgorCSAqCiAJICogSWYgbG9jayBpcyBhIGN1cnJlbnRseSBncmFu dGVkIEFjY2Vzc0V4Y2x1c2l2ZUxvY2sgdGhlbiBpdCB3aWxsIGhhdmUKIAkgKiBqdXN0IG9uZSBw cm9jbG9jayBob2xkZXIsIHNvIGxvY2tzIGFyZSBuZXZlciBhY2Nlc3NlZCB0d2ljZSBpbiB0aGlz CiAJICogcGFydGljdWxhciBjYXNlLiBEb24ndCBjb3B5IHRoaXMgY29kZSBmb3IgdXNlIGVsc2V3 aGVyZSBiZWNhdXNlIGluIHRoZQpAQCAtNDE4NCw3ICs0MTQ1LDcgQEAgR2V0UnVubmluZ1RyYW5z YWN0aW9uTG9ja3MoaW50ICpubG9ja3MpCiAJICogbm9uLWV4Y2x1c2l2ZSBsb2NrIHR5cGVzLgog CSAqLwogCWluZGV4ID0gMDsKLQl3aGlsZSAoKHByb2Nsb2NrID0gKFBST0NMT0NLICopIGhhc2hf c2VxX3NlYXJjaCgmc2Vxc3RhdCkpKQorCWZvcmVhY2hfaGFzaChQUk9DTE9DSywgcHJvY2xvY2ss IExvY2tNZXRob2RQcm9jTG9ja0hhc2gpCiAJewogCQkvKiBtYWtlIHN1cmUgdGhpcyBkZWZpbml0 aW9uIG1hdGNoZXMgdGhlIG9uZSB1c2VkIGluIExvY2tBY3F1aXJlICovCiAJCWlmICgocHJvY2xv Y2stPmhvbGRNYXNrICYgTE9DS0JJVF9PTihBY2Nlc3NFeGNsdXNpdmVMb2NrKSkgJiYKQEAgLTQy NzksMTggKzQyNDAsMTQgQEAgdm9pZAogRHVtcEFsbExvY2tzKHZvaWQpCiB7CiAJUEdQUk9DCSAg ICpwcm9jOwotCVBST0NMT0NLICAgKnByb2Nsb2NrOwogCUxPQ0sJICAgKmxvY2s7Ci0JSEFTSF9T RVFfU1RBVFVTIHN0YXR1czsKIAogCXByb2MgPSBNeVByb2M7CiAKIAlpZiAocHJvYyAmJiBwcm9j LT53YWl0TG9jaykKIAkJTE9DS19QUklOVCgiRHVtcEFsbExvY2tzOiB3YWl0aW5nIG9uIiwgcHJv Yy0+d2FpdExvY2ssIDApOwogCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBMb2NrTWV0aG9kUHJv Y0xvY2tIYXNoKTsKLQotCXdoaWxlICgocHJvY2xvY2sgPSAoUFJPQ0xPQ0sgKikgaGFzaF9zZXFf c2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChQUk9DTE9DSywgcHJvY2xv Y2ssIExvY2tNZXRob2RQcm9jTG9ja0hhc2gpCiAJewogCQlQUk9DTE9DS19QUklOVCgiRHVtcEFs bExvY2tzIiwgcHJvY2xvY2spOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xt Z3IvbHdsb2NrLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2NrLmMKaW5kZXggODNj NWI3N2Y5NTIuLmMyNmI4ZDY5OTZkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xt Z3IvbHdsb2NrLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2x3bG9jay5jCkBAIC0z MTYsMTUgKzMxNiwxMCBAQCBpbml0X2x3bG9ja19zdGF0cyh2b2lkKQogc3RhdGljIHZvaWQKIHBy aW50X2x3bG9ja19zdGF0cyhpbnQgY29kZSwgRGF0dW0gYXJnKQogewotCUhBU0hfU0VRX1NUQVRV UyBzY2FuOwotCWx3bG9ja19zdGF0cyAqbHdzdGF0czsKLQotCWhhc2hfc2VxX2luaXQoJnNjYW4s IGx3bG9ja19zdGF0c19odGFiKTsKLQogCS8qIEdyYWIgYW4gTFdMb2NrIHRvIGtlZXAgZGlmZmVy ZW50IGJhY2tlbmRzIGZyb20gbWl4aW5nIHJlcG9ydHMgKi8KIAlMV0xvY2tBY3F1aXJlKCZNYWlu TFdMb2NrQXJyYXlbMF0ubG9jaywgTFdfRVhDTFVTSVZFKTsKIAotCXdoaWxlICgobHdzdGF0cyA9 IChsd2xvY2tfc3RhdHMgKikgaGFzaF9zZXFfc2VhcmNoKCZzY2FuKSkgIT0gTlVMTCkKKwlmb3Jl YWNoX2hhc2gobHdsb2NrX3N0YXRzLCBsd3N0YXRzLCBsd2xvY2tfc3RhdHNfaHRhYikKIAl7CiAJ CWZwcmludGYoc3RkZXJyLAogCQkJCSJQSUQgJWQgbHdsb2NrICVzICVwOiBzaGFjcSAldSBleGFj cSAldSBibGsgJXUgc3BpbmRlbGF5ICV1IGRlcXVldWUgc2VsZiAldVxuIiwKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYyBiL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvbG1nci9wcmVkaWNhdGUuYwppbmRleCA5ZjM3NzliOWFlYS4uNjNlMjYwZGU0ZWIgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYworKysgYi9zcmMvYmFj a2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMKQEAgLTE0NDAsOCArMTQ0MCw2IEBAIEdldFBy ZWRpY2F0ZUxvY2tTdGF0dXNEYXRhKHZvaWQpCiAJaW50CQkJaTsKIAlpbnQJCQllbHMsCiAJCQkJ ZWw7Ci0JSEFTSF9TRVFfU1RBVFVTIHNlcXN0YXQ7Ci0JUFJFRElDQVRFTE9DSyAqcHJlZGxvY2s7 CiAKIAlkYXRhID0gcGFsbG9jX29iamVjdChQcmVkaWNhdGVMb2NrRGF0YSk7CiAKQEAgLTE0NjEs MTEgKzE0NTksOSBAQCBHZXRQcmVkaWNhdGVMb2NrU3RhdHVzRGF0YSh2b2lkKQogCiAKIAkvKiBT Y2FuIHRocm91Z2ggUHJlZGljYXRlTG9ja0hhc2ggYW5kIGNvcHkgY29udGVudHMgKi8KLQloYXNo X3NlcV9pbml0KCZzZXFzdGF0LCBQcmVkaWNhdGVMb2NrSGFzaCk7Ci0KIAllbCA9IDA7CiAKLQl3 aGlsZSAoKHByZWRsb2NrID0gKFBSRURJQ0FURUxPQ0sgKikgaGFzaF9zZXFfc2VhcmNoKCZzZXFz dGF0KSkpCisJZm9yZWFjaF9oYXNoKFBSRURJQ0FURUxPQ0ssIHByZWRsb2NrLCBQcmVkaWNhdGVM b2NrSGFzaCkKIAl7CiAJCWRhdGEtPmxvY2t0YWdzW2VsXSA9IHByZWRsb2NrLT50YWcubXlUYXJn ZXQtPnRhZzsKIAkJZGF0YS0+eGFjdHNbZWxdID0gKnByZWRsb2NrLT50YWcubXlYYWN0OwpAQCAt MjkyMiw4ICsyOTE4LDYgQEAgZXhpdDoKIHN0YXRpYyB2b2lkCiBEcm9wQWxsUHJlZGljYXRlTG9j a3NGcm9tVGFibGUoUmVsYXRpb24gcmVsYXRpb24sIGJvb2wgdHJhbnNmZXIpCiB7Ci0JSEFTSF9T RVFfU1RBVFVTIHNlcXN0YXQ7Ci0JUFJFRElDQVRFTE9DS1RBUkdFVCAqb2xkdGFyZ2V0OwogCVBS RURJQ0FURUxPQ0tUQVJHRVQgKmhlYXB0YXJnZXQ7CiAJT2lkCQkJZGJJZDsKIAlPaWQJCQlyZWxJ ZDsKQEAgLTI5NzksOSArMjk3Myw3IEBAIERyb3BBbGxQcmVkaWNhdGVMb2Nrc0Zyb21UYWJsZShS ZWxhdGlvbiByZWxhdGlvbiwgYm9vbCB0cmFuc2ZlcikKIAkJUmVtb3ZlU2NyYXRjaFRhcmdldCh0 cnVlKTsKIAogCS8qIFNjYW4gdGhyb3VnaCB0YXJnZXQgbWFwICovCi0JaGFzaF9zZXFfaW5pdCgm c2Vxc3RhdCwgUHJlZGljYXRlTG9ja1RhcmdldEhhc2gpOwotCi0Jd2hpbGUgKChvbGR0YXJnZXQg PSAoUFJFRElDQVRFTE9DS1RBUkdFVCAqKSBoYXNoX3NlcV9zZWFyY2goJnNlcXN0YXQpKSkKKwlm b3JlYWNoX2hhc2goUFJFRElDQVRFTE9DS1RBUkdFVCwgb2xkdGFyZ2V0LCBQcmVkaWNhdGVMb2Nr VGFyZ2V0SGFzaCkKIAl7CiAJCWRsaXN0X211dGFibGVfaXRlciBpdGVyOwogCkBAIC00NDA0LDgg KzQzOTYsNiBAQCBDaGVja0ZvclNlcmlhbGl6YWJsZUNvbmZsaWN0SW4oUmVsYXRpb24gcmVsYXRp b24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqdGlkLCBCbAogdm9pZAogQ2hlY2tUYWJsZUZvclNl cmlhbGl6YWJsZUNvbmZsaWN0SW4oUmVsYXRpb24gcmVsYXRpb24pCiB7Ci0JSEFTSF9TRVFfU1RB VFVTIHNlcXN0YXQ7Ci0JUFJFRElDQVRFTE9DS1RBUkdFVCAqdGFyZ2V0OwogCU9pZAkJCWRiSWQ7 CiAJT2lkCQkJaGVhcElkOwogCWludAkJCWk7CkBAIC00NDM5LDkgKzQ0MjksNyBAQCBDaGVja1Rh YmxlRm9yU2VyaWFsaXphYmxlQ29uZmxpY3RJbihSZWxhdGlvbiByZWxhdGlvbikKIAlMV0xvY2tB Y3F1aXJlKFNlcmlhbGl6YWJsZVhhY3RIYXNoTG9jaywgTFdfRVhDTFVTSVZFKTsKIAogCS8qIFNj YW4gdGhyb3VnaCB0YXJnZXQgbGlzdCAqLwotCWhhc2hfc2VxX2luaXQoJnNlcXN0YXQsIFByZWRp Y2F0ZUxvY2tUYXJnZXRIYXNoKTsKLQotCXdoaWxlICgodGFyZ2V0ID0gKFBSRURJQ0FURUxPQ0tU QVJHRVQgKikgaGFzaF9zZXFfc2VhcmNoKCZzZXFzdGF0KSkpCisJZm9yZWFjaF9oYXNoKFBSRURJ Q0FURUxPQ0tUQVJHRVQsIHRhcmdldCwgUHJlZGljYXRlTG9ja1RhcmdldEhhc2gpCiAJewogCQlk bGlzdF9tdXRhYmxlX2l0ZXIgaXRlcjsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFn ZS9zbWdyL3NtZ3IuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc21nci9zbWdyLmMKaW5kZXggZTc1 YmM5YTJhMDguLjZmZmZiNDIwOTA1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL3Nt Z3Ivc21nci5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc21nci9zbWdyLmMKQEAgLTQwOSw5 ICs0MDksNiBAQCBzbWdyZGVzdHJveWFsbCh2b2lkKQogdm9pZAogc21ncnJlbGVhc2VhbGwodm9p ZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVNNZ3JSZWxhdGlvbiByZWxuOwotCiAJ LyogTm90aGluZyB0byBkbyBpZiBoYXNodGFibGUgbm90IHNldCB1cCAqLwogCWlmIChTTWdyUmVs YXRpb25IYXNoID09IE5VTEwpCiAJCXJldHVybjsKQEAgLTQxOSw5ICs0MTYsNyBAQCBzbWdycmVs ZWFzZWFsbCh2b2lkKQogCS8qIHNlZW1zIHVuc2FmZSB0byBhY2NlcHQgaW50ZXJydXB0cyB3aGls ZSBpdGVyYXRpbmcgKi8KIAlIT0xEX0lOVEVSUlVQVFMoKTsKIAotCWhhc2hfc2VxX2luaXQoJnN0 YXR1cywgU01nclJlbGF0aW9uSGFzaCk7Ci0KLQl3aGlsZSAoKHJlbG4gPSAoU01nclJlbGF0aW9u KSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFNNZ3JS ZWxhdGlvbkRhdGEsIHJlbG4sIFNNZ3JSZWxhdGlvbkhhc2gpCiAJewogCQlzbWdycmVsZWFzZShy ZWxuKTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL3N5bmMvc3luYy5jIGIv c3JjL2JhY2tlbmQvc3RvcmFnZS9zeW5jL3N5bmMuYwppbmRleCAwMWFjYjMwZjFiYi4uYjJkNWM3 NmVmNzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc3luYy9zeW5jLmMKKysrIGIv c3JjL2JhY2tlbmQvc3RvcmFnZS9zeW5jL3N5bmMuYwpAQCAtMjgwLDggKzI4MCw2IEBAIFByb2Nl c3NTeW5jUmVxdWVzdHModm9pZCkKIHsKIAlzdGF0aWMgYm9vbCBzeW5jX2luX3Byb2dyZXNzID0g ZmFsc2U7CiAKLQlIQVNIX1NFUV9TVEFUVVMgaHN0YXQ7Ci0JUGVuZGluZ0ZzeW5jRW50cnkgKmVu dHJ5OwogCWludAkJCWFic29yYl9jb3VudGVyOwogCiAJLyogU3RhdGlzdGljcyBvbiBzeW5jIHRp bWVzICovCkBAIC0zMzgsOCArMzM2LDcgQEAgUHJvY2Vzc1N5bmNSZXF1ZXN0cyh2b2lkKQogCWlm IChzeW5jX2luX3Byb2dyZXNzKQogCXsKIAkJLyogcHJpb3IgdHJ5IGZhaWxlZCwgc28gdXBkYXRl IGFueSBzdGFsZSBjeWNsZV9jdHIgdmFsdWVzICovCi0JCWhhc2hfc2VxX2luaXQoJmhzdGF0LCBw ZW5kaW5nT3BzKTsKLQkJd2hpbGUgKChlbnRyeSA9IChQZW5kaW5nRnN5bmNFbnRyeSAqKSBoYXNo X3NlcV9zZWFyY2goJmhzdGF0KSkgIT0gTlVMTCkKKwkJZm9yZWFjaF9oYXNoKFBlbmRpbmdGc3lu Y0VudHJ5LCBlbnRyeSwgcGVuZGluZ09wcykKIAkJewogCQkJZW50cnktPmN5Y2xlX2N0ciA9IHN5 bmNfY3ljbGVfY3RyOwogCQl9CkBAIC0zNTMsOCArMzUwLDcgQEAgUHJvY2Vzc1N5bmNSZXF1ZXN0 cyh2b2lkKQogCiAJLyogTm93IHNjYW4gdGhlIGhhc2h0YWJsZSBmb3IgZnN5bmMgcmVxdWVzdHMg dG8gcHJvY2VzcyAqLwogCWFic29yYl9jb3VudGVyID0gRlNZTkNTX1BFUl9BQlNPUkI7Ci0JaGFz aF9zZXFfaW5pdCgmaHN0YXQsIHBlbmRpbmdPcHMpOwotCXdoaWxlICgoZW50cnkgPSAoUGVuZGlu Z0ZzeW5jRW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZoc3RhdCkpICE9IE5VTEwpCisJZm9yZWFj aF9oYXNoKFBlbmRpbmdGc3luY0VudHJ5LCBlbnRyeSwgcGVuZGluZ09wcykKIAl7CiAJCWludAkJ CWZhaWx1cmVzOwogCkBAIC00OTUsMTMgKzQ5MSwxMCBAQCBSZW1lbWJlclN5bmNSZXF1ZXN0KGNv bnN0IEZpbGVUYWcgKmZ0YWcsIFN5bmNSZXF1ZXN0VHlwZSB0eXBlKQogCX0KIAllbHNlIGlmICh0 eXBlID09IFNZTkNfRklMVEVSX1JFUVVFU1QpCiAJewotCQlIQVNIX1NFUV9TVEFUVVMgaHN0YXQ7 Ci0JCVBlbmRpbmdGc3luY0VudHJ5ICpwZmU7CiAJCUxpc3RDZWxsICAgKmNlbGw7CiAKIAkJLyog Q2FuY2VsIG1hdGNoaW5nIGZzeW5jIHJlcXVlc3RzICovCi0JCWhhc2hfc2VxX2luaXQoJmhzdGF0 LCBwZW5kaW5nT3BzKTsKLQkJd2hpbGUgKChwZmUgPSAoUGVuZGluZ0ZzeW5jRW50cnkgKikgaGFz aF9zZXFfc2VhcmNoKCZoc3RhdCkpICE9IE5VTEwpCisJCWZvcmVhY2hfaGFzaChQZW5kaW5nRnN5 bmNFbnRyeSwgcGZlLCBwZW5kaW5nT3BzKQogCQl7CiAJCQlpZiAocGZlLT50YWcuaGFuZGxlciA9 PSBmdGFnLT5oYW5kbGVyICYmCiAJCQkJc3luY3N3W2Z0YWctPmhhbmRsZXJdLnN5bmNfZmlsZXRh Z21hdGNoZXMoZnRhZywgJnBmZS0+dGFnKSkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3RzZWFy Y2gvdHNfdHlwYW5hbHl6ZS5jIGIvc3JjL2JhY2tlbmQvdHNlYXJjaC90c190eXBhbmFseXplLmMK aW5kZXggYzJmM2I2MzI2NWQuLjFhNGIzMjhjNGNkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90 c2VhcmNoL3RzX3R5cGFuYWx5emUuYworKysgYi9zcmMvYmFja2VuZC90c2VhcmNoL3RzX3R5cGFu YWx5emUuYwpAQCAtMTQ5LDcgKzE0OSw2IEBAIGNvbXB1dGVfdHN2ZWN0b3Jfc3RhdHMoVmFjQXR0 clN0YXRzICpzdGF0cywKIAogCS8qIFRoaXMgaXMgRCBmcm9tIHRoZSBMQyBhbGdvcml0aG0uICov CiAJSFRBQgkgICAqbGV4ZW1lc190YWI7Ci0JSEFTSF9TRVFfU1RBVFVTIHNjYW5fc3RhdHVzOwog CiAJLyogVGhpcyBpcyB0aGUgY3VycmVudCBidWNrZXQgbnVtYmVyIGZyb20gdGhlIExDIGFsZ29y aXRobSAqLwogCWludAkJCWJfY3VycmVudDsKQEAgLTI4OCw3ICsyODcsNiBAQCBjb21wdXRlX3Rz dmVjdG9yX3N0YXRzKFZhY0F0dHJTdGF0cyAqc3RhdHMsCiAJCWludAkJCW5vbm51bGxfY250ID0g c2FtcGxlcm93cyAtIG51bGxfY250OwogCQlpbnQJCQlpOwogCQlUcmFja0l0ZW0gKipzb3J0X3Rh YmxlOwotCQlUcmFja0l0ZW0gICppdGVtOwogCQlpbnQJCQl0cmFja19sZW47CiAJCWludAkJCWN1 dG9mZl9mcmVxOwogCQlpbnQJCQltaW5mcmVxLApAQCAtMzE1LDEwICszMTMsOSBAQCBjb21wdXRl X3RzdmVjdG9yX3N0YXRzKFZhY0F0dHJTdGF0cyAqc3RhdHMsCiAJCWkgPSBoYXNoX2dldF9udW1f ZW50cmllcyhsZXhlbWVzX3RhYik7CS8qIHN1cmVseSBlbm91Z2ggc3BhY2UgKi8KIAkJc29ydF90 YWJsZSA9IHBhbGxvY19hcnJheShUcmFja0l0ZW0gKiwgaSk7CiAKLQkJaGFzaF9zZXFfaW5pdCgm c2Nhbl9zdGF0dXMsIGxleGVtZXNfdGFiKTsKIAkJdHJhY2tfbGVuID0gMDsKIAkJbWF4ZnJlcSA9 IDA7Ci0JCXdoaWxlICgoaXRlbSA9IChUcmFja0l0ZW0gKikgaGFzaF9zZXFfc2VhcmNoKCZzY2Fu X3N0YXR1cykpICE9IE5VTEwpCisJCWZvcmVhY2hfaGFzaChUcmFja0l0ZW0sIGl0ZW0sIGxleGVt ZXNfdGFiKQogCQl7CiAJCQlpZiAoaXRlbS0+ZnJlcXVlbmN5ID4gY3V0b2ZmX2ZyZXEpCiAJCQl7 CkBAIC00NjIsMTEgKzQ1OSw3IEBAIGNvbXB1dGVfdHN2ZWN0b3Jfc3RhdHMoVmFjQXR0clN0YXRz ICpzdGF0cywKIHN0YXRpYyB2b2lkCiBwcnVuZV9sZXhlbWVzX2hhc2h0YWJsZShIVEFCICpsZXhl bWVzX3RhYiwgaW50IGJfY3VycmVudCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc2Nhbl9zdGF0dXM7 Ci0JVHJhY2tJdGVtICAqaXRlbTsKLQotCWhhc2hfc2VxX2luaXQoJnNjYW5fc3RhdHVzLCBsZXhl bWVzX3RhYik7Ci0Jd2hpbGUgKChpdGVtID0gKFRyYWNrSXRlbSAqKSBoYXNoX3NlcV9zZWFyY2go JnNjYW5fc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goVHJhY2tJdGVtLCBpdGVtLCBs ZXhlbWVzX3RhYikKIAl7CiAJCWlmIChpdGVtLT5mcmVxdWVuY3kgKyBpdGVtLT5kZWx0YSA8PSBi X2N1cnJlbnQpCiAJCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dh aXRfZXZlbnQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYwppbmRl eCBlNWFjOTU2ZGFmMC4uZTdiODM0YjI0MDggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxz L2FjdGl2aXR5L3dhaXRfZXZlbnQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93 YWl0X2V2ZW50LmMKQEAgLTI5OSw4ICsyOTksNiBAQCBjaGFyCSAgKioKIEdldFdhaXRFdmVudEN1 c3RvbU5hbWVzKHVpbnQzMiBjbGFzc0lkLCBpbnQgKm53YWl0ZXZlbnRzKQogewogCWNoYXIJICAq KndhaXRldmVudG5hbWVzOwotCVdhaXRFdmVudEN1c3RvbUVudHJ5QnlOYW1lICpoZW50cnk7Ci0J SEFTSF9TRVFfU1RBVFVTIGhhc2hfc2VxOwogCWludAkJCWluZGV4OwogCWludAkJCWVsczsKIApA QCAtMzEzLDEwICszMTEsOCBAQCBHZXRXYWl0RXZlbnRDdXN0b21OYW1lcyh1aW50MzIgY2xhc3NJ ZCwgaW50ICpud2FpdGV2ZW50cykKIAl3YWl0ZXZlbnRuYW1lcyA9IHBhbGxvY19hcnJheShjaGFy ICosIGVscyk7CiAKIAkvKiBOb3cgc2NhbiB0aGUgaGFzaCB0YWJsZSB0byBjb3B5IHRoZSBkYXRh ICovCi0JaGFzaF9zZXFfaW5pdCgmaGFzaF9zZXEsIFdhaXRFdmVudEN1c3RvbUhhc2hCeU5hbWUp OwotCiAJaW5kZXggPSAwOwotCXdoaWxlICgoaGVudHJ5ID0gKFdhaXRFdmVudEN1c3RvbUVudHJ5 QnlOYW1lICopIGhhc2hfc2VxX3NlYXJjaCgmaGFzaF9zZXEpKSAhPSBOVUxMKQorCWZvcmVhY2hf aGFzaChXYWl0RXZlbnRDdXN0b21FbnRyeUJ5TmFtZSwgaGVudHJ5LCBXYWl0RXZlbnRDdXN0b21I YXNoQnlOYW1lKQogCXsKIAkJaWYgKChoZW50cnktPndhaXRfZXZlbnRfaW5mbyAmIFdBSVRfRVZF TlRfQ0xBU1NfTUFTSykgIT0gY2xhc3NJZCkKIAkJCWNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5X3R5cGFuYWx5emUuYyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9hcnJheV90eXBhbmFseXplLmMKaW5kZXggYmRjN2UyMjM3ZjYuLjI4MWY2ODAwMzEwIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlfdHlwYW5hbHl6ZS5jCisrKyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheV90eXBhbmFseXplLmMKQEAgLTIyMyw3ICsyMjMs NiBAQCBjb21wdXRlX2FycmF5X3N0YXRzKFZhY0F0dHJTdGF0cyAqc3RhdHMsIEFuYWx5emVBdHRy RmV0Y2hGdW5jIGZldGNoZnVuYywKIAogCS8qIFRoaXMgaXMgRCBmcm9tIHRoZSBMQyBhbGdvcml0 aG0uICovCiAJSFRBQgkgICAqZWxlbWVudHNfdGFiOwotCUhBU0hfU0VRX1NUQVRVUyBzY2FuX3N0 YXR1czsKIAogCS8qIFRoaXMgaXMgdGhlIGN1cnJlbnQgYnVja2V0IG51bWJlciBmcm9tIHRoZSBM QyBhbGdvcml0aG0gKi8KIAlpbnQJCQliX2N1cnJlbnQ7CkBAIC0yMzIsMTAgKzIzMSw4IEBAIGNv bXB1dGVfYXJyYXlfc3RhdHMoVmFjQXR0clN0YXRzICpzdGF0cywgQW5hbHl6ZUF0dHJGZXRjaEZ1 bmMgZmV0Y2hmdW5jLAogCWludAkJCWJ1Y2tldF93aWR0aDsKIAlpbnQJCQlhcnJheV9ubzsKIAlp bnQ2NAkJZWxlbWVudF9ubzsKLQlUcmFja0l0ZW0gICppdGVtOwogCWludAkJCXNsb3RfaWR4Owog CUhUQUIJICAgKmNvdW50X3RhYjsKLQlERUNvdW50SXRlbSAqY291bnRfaXRlbTsKIAogCWV4dHJh X2RhdGEgPSAoQXJyYXlBbmFseXplRXh0cmFEYXRhICopIHN0YXRzLT5leHRyYV9kYXRhOwogCkBA IC0zMDAsNiArMjk3LDcgQEAgY29tcHV0ZV9hcnJheV9zdGF0cyhWYWNBdHRyU3RhdHMgKnN0YXRz LCBBbmFseXplQXR0ckZldGNoRnVuYyBmZXRjaGZ1bmMsCiAJCWludDY0CQlwcmV2X2VsZW1lbnRf bm8gPSBlbGVtZW50X25vOwogCQlpbnQJCQlkaXN0aW5jdF9jb3VudDsKIAkJYm9vbAkJY291bnRf aXRlbV9mb3VuZDsKKwkJREVDb3VudEl0ZW0gKmNvdW50X2l0ZW07CiAKIAkJdmFjdXVtX2RlbGF5 X3BvaW50KHRydWUpOwogCkBAIC0zMzgsNiArMzM2LDcgQEAgY29tcHV0ZV9hcnJheV9zdGF0cyhW YWNBdHRyU3RhdHMgKnN0YXRzLCBBbmFseXplQXR0ckZldGNoRnVuYyBmZXRjaGZ1bmMsCiAJCXsK IAkJCURhdHVtCQllbGVtX3ZhbHVlOwogCQkJYm9vbAkJZm91bmQ7CisJCQlUcmFja0l0ZW0gICpp dGVtOwogCiAJCQkvKiBObyBudWxsIGVsZW1lbnQgcHJvY2Vzc2luZyBvdGhlciB0aGFuIGZsYWcg c2V0dGluZyBoZXJlICovCiAJCQlpZiAoZWxlbV9udWxsc1tqXSkKQEAgLTQ1OCwxMCArNDU3LDkg QEAgY29tcHV0ZV9hcnJheV9zdGF0cyhWYWNBdHRyU3RhdHMgKnN0YXRzLCBBbmFseXplQXR0ckZl dGNoRnVuYyBmZXRjaGZ1bmMsCiAJCWkgPSBoYXNoX2dldF9udW1fZW50cmllcyhlbGVtZW50c190 YWIpOyAvKiBzdXJlbHkgZW5vdWdoIHNwYWNlICovCiAJCXNvcnRfdGFibGUgPSBwYWxsb2NfYXJy YXkoVHJhY2tJdGVtICosIGkpOwogCi0JCWhhc2hfc2VxX2luaXQoJnNjYW5fc3RhdHVzLCBlbGVt ZW50c190YWIpOwogCQl0cmFja19sZW4gPSAwOwogCQltYXhmcmVxID0gMDsKLQkJd2hpbGUgKChp dGVtID0gKFRyYWNrSXRlbSAqKSBoYXNoX3NlcV9zZWFyY2goJnNjYW5fc3RhdHVzKSkgIT0gTlVM TCkKKwkJZm9yZWFjaF9oYXNoKFRyYWNrSXRlbSwgaXRlbSwgZWxlbWVudHNfdGFiKQogCQl7CiAJ CQlpZiAoaXRlbS0+ZnJlcXVlbmN5ID4gY3V0b2ZmX2ZyZXEpCiAJCQl7CkBAIC01OTQsOSArNTky LDggQEAgY29tcHV0ZV9hcnJheV9zdGF0cyhWYWNBdHRyU3RhdHMgKnN0YXRzLCBBbmFseXplQXR0 ckZldGNoRnVuYyBmZXRjaGZ1bmMsCiAJCQkgKiBpbmNyZWFzaW5nIGNvdW50IG9yZGVyLgogCQkJ ICovCiAJCQlzb3J0ZWRfY291bnRfaXRlbXMgPSBwYWxsb2NfYXJyYXkoREVDb3VudEl0ZW0gKiwg Y291bnRfaXRlbXNfY291bnQpOwotCQkJaGFzaF9zZXFfaW5pdCgmc2Nhbl9zdGF0dXMsIGNvdW50 X3RhYik7CiAJCQlqID0gMDsKLQkJCXdoaWxlICgoY291bnRfaXRlbSA9IChERUNvdW50SXRlbSAq KSBoYXNoX3NlcV9zZWFyY2goJnNjYW5fc3RhdHVzKSkgIT0gTlVMTCkKKwkJCWZvcmVhY2hfaGFz aChERUNvdW50SXRlbSwgY291bnRfaXRlbSwgY291bnRfdGFiKQogCQkJewogCQkJCXNvcnRlZF9j b3VudF9pdGVtc1tqKytdID0gY291bnRfaXRlbTsKIAkJCX0KQEAgLTY4MywxMSArNjgwLDcgQEAg Y29tcHV0ZV9hcnJheV9zdGF0cyhWYWNBdHRyU3RhdHMgKnN0YXRzLCBBbmFseXplQXR0ckZldGNo RnVuYyBmZXRjaGZ1bmMsCiBzdGF0aWMgdm9pZAogcHJ1bmVfZWxlbWVudF9oYXNodGFibGUoSFRB QiAqZWxlbWVudHNfdGFiLCBpbnQgYl9jdXJyZW50KQogewotCUhBU0hfU0VRX1NUQVRVUyBzY2Fu X3N0YXR1czsKLQlUcmFja0l0ZW0gICppdGVtOwotCi0JaGFzaF9zZXFfaW5pdCgmc2Nhbl9zdGF0 dXMsIGVsZW1lbnRzX3RhYik7Ci0Jd2hpbGUgKChpdGVtID0gKFRyYWNrSXRlbSAqKSBoYXNoX3Nl cV9zZWFyY2goJnNjYW5fc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goVHJhY2tJdGVt LCBpdGVtLCBlbGVtZW50c190YWIpCiAJewogCQlpZiAoaXRlbS0+ZnJlcXVlbmN5ICsgaXRlbS0+ ZGVsdGEgPD0gYl9jdXJyZW50KQogCQl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9j YWNoZS9yZWxjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwppbmRl eCBjMTViMTI3YmRiZi4uZjc3M2VhZmZhNmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxz L2NhY2hlL3JlbGNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUu YwpAQCAtMjk4NSw4ICsyOTg1LDYgQEAgUmVsYXRpb25DYWNoZUludmFsaWRhdGVFbnRyeShPaWQg cmVsYXRpb25JZCkKIHZvaWQKIFJlbGF0aW9uQ2FjaGVJbnZhbGlkYXRlKGJvb2wgZGVidWdfZGlz Y2FyZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVJlbElkQ2FjaGVFbnQgKmlkaGVu dHJ5OwogCVJlbGF0aW9uCXJlbGF0aW9uOwogCUxpc3QJICAgKnJlYnVpbGRGaXJzdExpc3QgPSBO SUw7CiAJTGlzdAkgICAqcmVidWlsZExpc3QgPSBOSUw7CkBAIC0yOTk5LDkgKzI5OTcsNyBAQCBS ZWxhdGlvbkNhY2hlSW52YWxpZGF0ZShib29sIGRlYnVnX2Rpc2NhcmQpCiAJUmVsYXRpb25NYXBJ bnZhbGlkYXRlQWxsKCk7CiAKIAkvKiBQaGFzZSAxICovCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVz LCBSZWxhdGlvbklkQ2FjaGUpOwotCi0Jd2hpbGUgKChpZGhlbnRyeSA9IChSZWxJZENhY2hlRW50 ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUmVs SWRDYWNoZUVudCwgaWRoZW50cnksIFJlbGF0aW9uSWRDYWNoZSkKIAl7CiAJCXJlbGF0aW9uID0g aWRoZW50cnktPnJlbGRlc2M7CiAKQEAgLTMxNDYsMTIgKzMxNDIsOSBAQCBBc3NlcnRQZW5kaW5n U3luY0NvbnNpc3RlbmN5KFJlbGF0aW9uIHJlbGF0aW9uKQogdm9pZAogQXNzZXJ0UGVuZGluZ1N5 bmNzX1JlbGF0aW9uQ2FjaGUodm9pZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCUxP Q0FMTE9DSyAgKmxvY2FsbG9jazsKIAlSZWxhdGlvbiAgICpyZWxzOwogCWludAkJCW1heHJlbHM7 CiAJaW50CQkJbnJlbHM7Ci0JUmVsSWRDYWNoZUVudCAqaWRoZW50cnk7CiAJaW50CQkJaTsKIAog CS8qCkBAIC0zMTY1LDggKzMxNTgsNyBAQCBBc3NlcnRQZW5kaW5nU3luY3NfUmVsYXRpb25DYWNo ZSh2b2lkKQogCW1heHJlbHMgPSAxOwogCXJlbHMgPSBwYWxsb2MobWF4cmVscyAqIHNpemVvZigq cmVscykpOwogCW5yZWxzID0gMDsKLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIEdldExvY2tNZXRo b2RMb2NhbEhhc2goKSk7Ci0Jd2hpbGUgKChsb2NhbGxvY2sgPSAoTE9DQUxMT0NLICopIGhhc2hf c2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goTE9DQUxMT0NLLCBs b2NhbGxvY2ssIEdldExvY2tNZXRob2RMb2NhbEhhc2goKSkKIAl7CiAJCU9pZAkJCXJlbGlkOwog CQlSZWxhdGlvbglyOwpAQCAtMzE4OCw4ICszMTgwLDcgQEAgQXNzZXJ0UGVuZGluZ1N5bmNzX1Jl bGF0aW9uQ2FjaGUodm9pZCkKIAkJcmVsc1tucmVscysrXSA9IHI7CiAJfQogCi0JaGFzaF9zZXFf aW5pdCgmc3RhdHVzLCBSZWxhdGlvbklkQ2FjaGUpOwotCXdoaWxlICgoaWRoZW50cnkgPSAoUmVs SWRDYWNoZUVudCAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFj aF9oYXNoKFJlbElkQ2FjaGVFbnQsIGlkaGVudHJ5LCBSZWxhdGlvbklkQ2FjaGUpCiAJCUFzc2Vy dFBlbmRpbmdTeW5jQ29uc2lzdGVuY3koaWRoZW50cnktPnJlbGRlc2MpOwogCiAJZm9yIChpID0g MDsgaSA8IG5yZWxzOyBpKyspCkBAIC0zMjE3LDggKzMyMDgsNiBAQCBBc3NlcnRQZW5kaW5nU3lu Y3NfUmVsYXRpb25DYWNoZSh2b2lkKQogdm9pZAogQXRFT1hhY3RfUmVsYXRpb25DYWNoZShib29s IGlzQ29tbWl0KQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JUmVsSWRDYWNoZUVudCAq aWRoZW50cnk7CiAJaW50CQkJaTsKIAogCS8qCkBAIC0zMjQxLDggKzMyMzAsNyBAQCBBdEVPWGFj dF9SZWxhdGlvbkNhY2hlKGJvb2wgaXNDb21taXQpCiAJICovCiAJaWYgKGVveGFjdF9saXN0X292 ZXJmbG93ZWQpCiAJewotCQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIFJlbGF0aW9uSWRDYWNoZSk7 Ci0JCXdoaWxlICgoaWRoZW50cnkgPSAoUmVsSWRDYWNoZUVudCAqKSBoYXNoX3NlcV9zZWFyY2go JnN0YXR1cykpICE9IE5VTEwpCisJCWZvcmVhY2hfaGFzaChSZWxJZENhY2hlRW50LCBpZGhlbnRy eSwgUmVsYXRpb25JZENhY2hlKQogCQl7CiAJCQlBdEVPWGFjdF9jbGVhbnVwKGlkaGVudHJ5LT5y ZWxkZXNjLCBpc0NvbW1pdCk7CiAJCX0KQEAgLTMyNTEsMTAgKzMyMzksMTEgQEAgQXRFT1hhY3Rf UmVsYXRpb25DYWNoZShib29sIGlzQ29tbWl0KQogCXsKIAkJZm9yIChpID0gMDsgaSA8IGVveGFj dF9saXN0X2xlbjsgaSsrKQogCQl7Ci0JCQlpZGhlbnRyeSA9IChSZWxJZENhY2hlRW50ICopIGhh c2hfc2VhcmNoKFJlbGF0aW9uSWRDYWNoZSwKLQkJCQkJCQkJCQkJCQkgJmVveGFjdF9saXN0W2ld LAotCQkJCQkJCQkJCQkJCSBIQVNIX0ZJTkQsCi0JCQkJCQkJCQkJCQkJIE5VTEwpOworCQkJUmVs SWRDYWNoZUVudCAqaWRoZW50cnkgPSBoYXNoX3NlYXJjaChSZWxhdGlvbklkQ2FjaGUsCisJCQkJ CQkJCQkJCQkgICZlb3hhY3RfbGlzdFtpXSwKKwkJCQkJCQkJCQkJCSAgSEFTSF9GSU5ELAorCQkJ CQkJCQkJCQkJICBOVUxMKTsKKwogCQkJaWYgKGlkaGVudHJ5ICE9IE5VTEwpCiAJCQkJQXRFT1hh Y3RfY2xlYW51cChpZGhlbnRyeS0+cmVsZGVzYywgaXNDb21taXQpOwogCQl9CkBAIC0zMzcwLDgg KzMzNTksNiBAQCB2b2lkCiBBdEVPU3ViWGFjdF9SZWxhdGlvbkNhY2hlKGJvb2wgaXNDb21taXQs IFN1YlRyYW5zYWN0aW9uSWQgbXlTdWJpZCwKIAkJCQkJCSAgU3ViVHJhbnNhY3Rpb25JZCBwYXJl bnRTdWJpZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVJlbElkQ2FjaGVFbnQgKmlk aGVudHJ5OwogCWludAkJCWk7CiAKIAkvKgpAQCAtMzM4OSw4ICszMzc2LDcgQEAgQXRFT1N1Ylhh Y3RfUmVsYXRpb25DYWNoZShib29sIGlzQ29tbWl0LCBTdWJUcmFuc2FjdGlvbklkIG15U3ViaWQs CiAJICovCiAJaWYgKGVveGFjdF9saXN0X292ZXJmbG93ZWQpCiAJewotCQloYXNoX3NlcV9pbml0 KCZzdGF0dXMsIFJlbGF0aW9uSWRDYWNoZSk7Ci0JCXdoaWxlICgoaWRoZW50cnkgPSAoUmVsSWRD YWNoZUVudCAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJCWZvcmVhY2hf aGFzaChSZWxJZENhY2hlRW50LCBpZGhlbnRyeSwgUmVsYXRpb25JZENhY2hlKQogCQl7CiAJCQlB dEVPU3ViWGFjdF9jbGVhbnVwKGlkaGVudHJ5LT5yZWxkZXNjLCBpc0NvbW1pdCwKIAkJCQkJCQkJ bXlTdWJpZCwgcGFyZW50U3ViaWQpOwpAQCAtMzQwMCw2ICszMzg2LDggQEAgQXRFT1N1YlhhY3Rf UmVsYXRpb25DYWNoZShib29sIGlzQ29tbWl0LCBTdWJUcmFuc2FjdGlvbklkIG15U3ViaWQsCiAJ ewogCQlmb3IgKGkgPSAwOyBpIDwgZW94YWN0X2xpc3RfbGVuOyBpKyspCiAJCXsKKwkJCVJlbElk Q2FjaGVFbnQgKmlkaGVudHJ5OworCiAJCQlpZGhlbnRyeSA9IChSZWxJZENhY2hlRW50ICopIGhh c2hfc2VhcmNoKFJlbGF0aW9uSWRDYWNoZSwKIAkJCQkJCQkJCQkJCQkgJmVveGFjdF9saXN0W2ld LAogCQkJCQkJCQkJCQkJCSBIQVNIX0ZJTkQsCkBAIC00MDk2LDggKzQwODQsNiBAQCBSZWxhdGlv bkNhY2hlSW5pdGlhbGl6ZVBoYXNlMih2b2lkKQogdm9pZAogUmVsYXRpb25DYWNoZUluaXRpYWxp emVQaGFzZTModm9pZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVJlbElkQ2FjaGVF bnQgKmlkaGVudHJ5OwogCU1lbW9yeUNvbnRleHQgb2xkY3h0OwogCWJvb2wJCW5lZWROZXdDYWNo ZUZpbGUgPSAhY3JpdGljYWxTaGFyZWRSZWxjYWNoZXNCdWlsdDsKIApAQCAtNDIzNCw5ICs0MjIw LDcgQEAgUmVsYXRpb25DYWNoZUluaXRpYWxpemVQaGFzZTModm9pZCkKIAkgKiBUaGlzIGlzIHRo ZW9yZXRpY2FsbHkgTyhOXjIpLCBidXQgdGhlIG51bWJlciBvZiBlbnRyaWVzIHRoYXQgYWN0dWFs bHkKIAkgKiBuZWVkIHRvIGJlIGZpeGVkIGlzIHNtYWxsIGVub3VnaCB0aGF0IGl0IGRvZXNuJ3Qg bWF0dGVyLgogCSAqLwotCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgUmVsYXRpb25JZENhY2hlKTsK LQotCXdoaWxlICgoaWRoZW50cnkgPSAoUmVsSWRDYWNoZUVudCAqKSBoYXNoX3NlcV9zZWFyY2go JnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFJlbElkQ2FjaGVFbnQsIGlkaGVudHJ5 LCBSZWxhdGlvbklkQ2FjaGUpCiAJewogCQlSZWxhdGlvbglyZWxhdGlvbiA9IGlkaGVudHJ5LT5y ZWxkZXNjOwogCQlib29sCQlyZXN0YXJ0ID0gZmFsc2U7CkBAIC00MzQ2LDEwICs0MzMwLDcgQEAg UmVsYXRpb25DYWNoZUluaXRpYWxpemVQaGFzZTModm9pZCkKIAogCQkvKiBOb3csIHJlc3RhcnQg dGhlIGhhc2h0YWJsZSBzY2FuIGlmIG5lZWRlZCAqLwogCQlpZiAocmVzdGFydCkKLQkJewotCQkJ aGFzaF9zZXFfdGVybSgmc3RhdHVzKTsKLQkJCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgUmVsYXRp b25JZENhY2hlKTsKLQkJfQorCQkJZm9yZWFjaF9oYXNoX3Jlc3RhcnQoaWRoZW50cnksIFJlbGF0 aW9uSWRDYWNoZSk7CiAJfQogCiAJLyoKQEAgLTY1NzgsOCArNjU1OSw2IEBAIHdyaXRlX3JlbGNh Y2hlX2luaXRfZmlsZShib29sIHNoYXJlZCkKIAljaGFyCQl0ZW1wZmlsZW5hbWVbTUFYUEdQQVRI XTsKIAljaGFyCQlmaW5hbGZpbGVuYW1lW01BWFBHUEFUSF07CiAJaW50CQkJbWFnaWM7Ci0JSEFT SF9TRVFfU1RBVFVTIHN0YXR1czsKLQlSZWxJZENhY2hlRW50ICppZGhlbnRyeTsKIAlpbnQJCQlp OwogCiAJLyoKQEAgLTY2MzksOSArNjYxOCw3IEBAIHdyaXRlX3JlbGNhY2hlX2luaXRfZmlsZShi b29sIHNoYXJlZCkKIAkvKgogCSAqIFdyaXRlIGFsbCB0aGUgYXBwcm9wcmlhdGUgcmVsZGVzY3Mg KGluIG5vIHBhcnRpY3VsYXIgb3JkZXIpLgogCSAqLwotCWhhc2hfc2VxX2luaXQoJnN0YXR1cywg UmVsYXRpb25JZENhY2hlKTsKLQotCXdoaWxlICgoaWRoZW50cnkgPSAoUmVsSWRDYWNoZUVudCAq KSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFJlbElk Q2FjaGVFbnQsIGlkaGVudHJ5LCBSZWxhdGlvbklkQ2FjaGUpCiAJewogCQlSZWxhdGlvbglyZWwg PSBpZGhlbnRyeS0+cmVsZGVzYzsKIAkJRm9ybV9wZ19jbGFzcyByZWxmb3JtID0gcmVsLT5yZF9y ZWw7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxmaWxlbnVtYmVybWFw LmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxmaWxlbnVtYmVybWFwLmMKaW5kZXggMDli MDVkZWM5ZDAuLjAwZGY3ZGI0ODExIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9yZWxmaWxlbnVtYmVybWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsZmls ZW51bWJlcm1hcC5jCkBAIC01MSwxNCArNTEsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QKIHN0YXRpYyB2 b2lkCiBSZWxmaWxlbnVtYmVyTWFwSW52YWxpZGF0ZUNhbGxiYWNrKERhdHVtIGFyZywgT2lkIHJl bGlkKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JUmVsZmlsZW51bWJlck1hcEVudHJ5 ICplbnRyeTsKLQogCS8qIGNhbGxiYWNrIG9ubHkgZ2V0cyByZWdpc3RlcmVkIGFmdGVyIGNyZWF0 aW5nIHRoZSBoYXNoICovCiAJQXNzZXJ0KFJlbGZpbGVudW1iZXJNYXBIYXNoICE9IE5VTEwpOwog Ci0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBSZWxmaWxlbnVtYmVyTWFwSGFzaCk7Ci0Jd2hpbGUg KChlbnRyeSA9IChSZWxmaWxlbnVtYmVyTWFwRW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0 dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChSZWxmaWxlbnVtYmVyTWFwRW50cnksIGVudHJ5 LCBSZWxmaWxlbnVtYmVyTWFwSGFzaCkKIAl7CiAJCS8qCiAJCSAqIElmIHJlbGlkIGlzIEludmFs aWRPaWQsIHNpZ25hbGluZyBhIGNvbXBsZXRlIHJlc2V0LCB3ZSBtdXN0IHJlbW92ZQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvc3BjY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL3NwY2NhY2hlLmMKaW5kZXggYmYwMDdkNjlhZDQuLjQ0ZTE5NDc2YzE2IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9zcGNjYWNoZS5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL3NwY2NhY2hlLmMKQEAgLTU1LDExICs1NSw3IEBAIHR5cGVkZWYgc3Ry dWN0CiBzdGF0aWMgdm9pZAogSW52YWxpZGF0ZVRhYmxlU3BhY2VDYWNoZUNhbGxiYWNrKERhdHVt IGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpCiB7Ci0JSEFTSF9TRVFfU1RBVFVT IHN0YXR1czsKLQlUYWJsZVNwYWNlQ2FjaGVFbnRyeSAqc3BjOwotCi0JaGFzaF9zZXFfaW5pdCgm c3RhdHVzLCBUYWJsZVNwYWNlQ2FjaGVIYXNoKTsKLQl3aGlsZSAoKHNwYyA9IChUYWJsZVNwYWNl Q2FjaGVFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFj aF9oYXNoKFRhYmxlU3BhY2VDYWNoZUVudHJ5LCBzcGMsIFRhYmxlU3BhY2VDYWNoZUhhc2gpCiAJ ewogCQlpZiAoc3BjLT5vcHRzKQogCQkJcGZyZWUoc3BjLT5vcHRzKTsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2NhY2hlL3RzX2NhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS90c19jYWNoZS5jCmluZGV4IGU5YWU0YTVmMDkzLi4wMTAxYWFhNjQxMCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHNfY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGls cy9jYWNoZS90c19jYWNoZS5jCkBAIC05NCwxMSArOTQsOCBAQCBzdGF0aWMgdm9pZAogSW52YWxp ZGF0ZVRTQ2FjaGVDYWxsQmFjayhEYXR1bSBhcmcsIGludCBjYWNoZWlkLCB1aW50MzIgaGFzaHZh bHVlKQogewogCUhUQUIJICAgKmhhc2ggPSAoSFRBQiAqKSBEYXR1bUdldFBvaW50ZXIoYXJnKTsK LQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVRTQW55Q2FjaGVFbnRyeSAqZW50cnk7CiAKLQlo YXNoX3NlcV9pbml0KCZzdGF0dXMsIGhhc2gpOwotCXdoaWxlICgoZW50cnkgPSAoVFNBbnlDYWNo ZUVudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hh c2goVFNBbnlDYWNoZUVudHJ5LCBlbnRyeSwgaGFzaCkKIAkJZW50cnktPmlzdmFsaWQgPSBmYWxz ZTsKIAogCS8qIEFsc28gaW52YWxpZGF0ZSB0aGUgY3VycmVudC1jb25maWcgY2FjaGUgaWYgaXQn cyBwZ190c19jb25maWcgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5 cGNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS90eXBjYWNoZS5jCmluZGV4IDc0ZGE0 MThhNzdjLi5lMTAyYWRmOWY4MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUv dHlwY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS90eXBjYWNoZS5jCkBAIC0y NDA5LDE0ICsyNDA5LDEzIEBAIEludmFsaWRhdGVDb21wb3NpdGVUeXBlQ2FjaGVFbnRyeShUeXBl Q2FjaGVFbnRyeSAqdHlwZW50cnkpCiBzdGF0aWMgdm9pZAogVHlwZUNhY2hlUmVsQ2FsbGJhY2so RGF0dW0gYXJnLCBPaWQgcmVsaWQpCiB7Ci0JVHlwZUNhY2hlRW50cnkgKnR5cGVudHJ5OwotCiAJ LyoKIAkgKiBSZWxJZFRvVHlwZUlkQ2FjaGVIYXNoIGFuZCBUeXBlQ2FjaGVIYXNoIHNob3VsZCBl eGlzdCwgb3RoZXJ3aXNlIHRoaXMKIAkgKiBjYWxsYmFjayB3b3VsZG4ndCBiZSByZWdpc3RlcmVk CiAJICovCiAJaWYgKE9pZElzVmFsaWQocmVsaWQpKQogCXsKKwkJVHlwZUNhY2hlRW50cnkgKnR5 cGVudHJ5OwogCQlSZWxJZFRvVHlwZUlkQ2FjaGVFbnRyeSAqcmVsZW50cnk7CiAKIAkJLyoKQEAg LTI0NjQsMTUgKzI0NjMsMTIgQEAgVHlwZUNhY2hlUmVsQ2FsbGJhY2soRGF0dW0gYXJnLCBPaWQg cmVsaWQpCiAJfQogCWVsc2UKIAl7Ci0JCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0KIAkJLyoK IAkJICogUmVsaWQgaXMgaW52YWxpZC4gQnkgY29udmVudGlvbiwgd2UgbmVlZCB0byByZXNldCBh bGwgY29tcG9zaXRlCiAJCSAqIHR5cGVzIGluIGNhY2hlLiBBbHNvLCB3ZSBzaG91bGQgcmVzZXQg ZmxhZ3MgZm9yIGRvbWFpbiB0eXBlcywgYW5kCiAJCSAqIHdlIGxvb3Agb3ZlciBhbGwgZW50cmll cyBpbiBoYXNoLCBzbywgZG8gaXQgaW4gYSBzaW5nbGUgc2Nhbi4KIAkJICovCi0JCWhhc2hfc2Vx X2luaXQoJnN0YXR1cywgVHlwZUNhY2hlSGFzaCk7Ci0JCXdoaWxlICgodHlwZW50cnkgPSAoVHlw ZUNhY2hlRW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCQlmb3Jl YWNoX2hhc2goVHlwZUNhY2hlRW50cnksIHR5cGVudHJ5LCBUeXBlQ2FjaGVIYXNoKQogCQl7CiAJ CQlpZiAodHlwZW50cnktPnR5cHR5cGUgPT0gVFlQVFlQRV9DT01QT1NJVEUpCiAJCQl7CkBAIC0y NTYyLDEyICsyNTU4LDggQEAgVHlwZUNhY2hlVHlwQ2FsbGJhY2soRGF0dW0gYXJnLCBpbnQgY2Fj aGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKIHN0YXRpYyB2b2lkCiBUeXBlQ2FjaGVPcGNDYWxsYmFj ayhEYXR1bSBhcmcsIGludCBjYWNoZWlkLCB1aW50MzIgaGFzaHZhbHVlKQogewotCUhBU0hfU0VR X1NUQVRVUyBzdGF0dXM7Ci0JVHlwZUNhY2hlRW50cnkgKnR5cGVudHJ5OwotCiAJLyogVHlwZUNh Y2hlSGFzaCBtdXN0IGV4aXN0LCBlbHNlIHRoaXMgY2FsbGJhY2sgd291bGRuJ3QgYmUgcmVnaXN0 ZXJlZCAqLwotCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgVHlwZUNhY2hlSGFzaCk7Ci0Jd2hpbGUg KCh0eXBlbnRyeSA9IChUeXBlQ2FjaGVFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykp ICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFR5cGVDYWNoZUVudHJ5LCB0eXBlbnRyeSwgVHlwZUNh Y2hlSGFzaCkKIAl7CiAJCWJvb2wJCWhhZE9wY2xhc3MgPSAodHlwZW50cnktPmZsYWdzICYgVENG TEFHU19PUEVSQVRPUl9GTEFHUyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21p c2MvZ3VjLmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jCmluZGV4IDYxOGQwMTAwZDM4 Li42NmUzMTNkNTMxZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYwor KysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jCkBAIC0yODgsOCArMjg4LDYgQEAgUHJv Y2Vzc0NvbmZpZ0ZpbGVJbnRlcm5hbChHdWNDb250ZXh0IGNvbnRleHQsIGJvb2wgYXBwbHlTZXR0 aW5ncywgaW50IGVsZXZlbCkKIAljb25zdCBjaGFyICpDb25mRmlsZVdpdGhFcnJvcjsKIAlDb25m aWdWYXJpYWJsZSAqaGVhZCwKIAkJCSAgICp0YWlsOwotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7 Ci0JR1VDSGFzaEVudHJ5ICpoZW50cnk7CiAKIAkvKiBQYXJzZSB0aGUgbWFpbiBjb25maWcgZmls ZSBpbnRvIGEgbGlzdCBvZiBvcHRpb24gbmFtZXMgYW5kIHZhbHVlcyAqLwogCUNvbmZGaWxlV2l0 aEVycm9yID0gQ29uZmlnRmlsZU5hbWU7CkBAIC0zNjQsOCArMzYyLDcgQEAgUHJvY2Vzc0NvbmZp Z0ZpbGVJbnRlcm5hbChHdWNDb250ZXh0IGNvbnRleHQsIGJvb2wgYXBwbHlTZXR0aW5ncywgaW50 IGVsZXZlbCkKIAkgKiBuZWVkIHRoaXMgc28gdGhhdCB3ZSBjYW4gdGVsbCBiZWxvdyB3aGljaCBv bmVzIGhhdmUgYmVlbiByZW1vdmVkIGZyb20KIAkgKiB0aGUgZmlsZSBzaW5jZSB3ZSBsYXN0IHBy b2Nlc3NlZCBpdC4KIAkgKi8KLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIGd1Y19oYXNodGFiKTsK LQl3aGlsZSAoKGhlbnRyeSA9IChHVUNIYXNoRW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0 dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChHVUNIYXNoRW50cnksIGhlbnRyeSwgZ3VjX2hh c2h0YWIpCiAJewogCQlzdHJ1Y3QgY29uZmlnX2dlbmVyaWMgKmdjb25mID0gaGVudHJ5LT5ndWN2 YXI7CiAKQEAgLTQ0OSw4ICs0NDYsNyBAQCBQcm9jZXNzQ29uZmlnRmlsZUludGVybmFsKEd1Y0Nv bnRleHQgY29udGV4dCwgYm9vbCBhcHBseVNldHRpbmdzLCBpbnQgZWxldmVsKQogCSAqIGJvb3Qt dGltZSBkZWZhdWx0cy4gIElmIHN1Y2ggYSB2YXJpYWJsZSBjYW4ndCBiZSBjaGFuZ2VkIGFmdGVy IHN0YXJ0dXAsCiAJICogcmVwb3J0IHRoYXQgYW5kIGNvbnRpbnVlLgogCSAqLwotCWhhc2hfc2Vx X2luaXQoJnN0YXR1cywgZ3VjX2hhc2h0YWIpOwotCXdoaWxlICgoaGVudHJ5ID0gKEdVQ0hhc2hF bnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNo KEdVQ0hhc2hFbnRyeSwgaGVudHJ5LCBndWNfaGFzaHRhYikKIAl7CiAJCXN0cnVjdCBjb25maWdf Z2VuZXJpYyAqZ2NvbmYgPSBoZW50cnktPmd1Y3ZhcjsKIApAQCAtODM5LDggKzgzNSw2IEBAIHN0 cnVjdCBjb25maWdfZ2VuZXJpYyAqKgogZ2V0X2d1Y192YXJpYWJsZXMoaW50ICpudW1fdmFycykK IHsKIAlzdHJ1Y3QgY29uZmlnX2dlbmVyaWMgKipyZXN1bHQ7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0 YXR1czsKLQlHVUNIYXNoRW50cnkgKmhlbnRyeTsKIAlpbnQJCQlpOwogCiAJKm51bV92YXJzID0g aGFzaF9nZXRfbnVtX2VudHJpZXMoZ3VjX2hhc2h0YWIpOwpAQCAtODQ4LDggKzg0Miw3IEBAIGdl dF9ndWNfdmFyaWFibGVzKGludCAqbnVtX3ZhcnMpCiAKIAkvKiBFeHRyYWN0IHBvaW50ZXJzIGZy b20gdGhlIGhhc2ggdGFibGUgKi8KIAlpID0gMDsKLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIGd1 Y19oYXNodGFiKTsKLQl3aGlsZSAoKGhlbnRyeSA9IChHVUNIYXNoRW50cnkgKikgaGFzaF9zZXFf c2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChHVUNIYXNoRW50cnksIGhl bnRyeSwgZ3VjX2hhc2h0YWIpCiAJCXJlc3VsdFtpKytdID0gaGVudHJ5LT5ndWN2YXI7CiAJQXNz ZXJ0KGkgPT0gKm51bV92YXJzKTsKIApAQCAtMTQwMCw5ICsxMzkzLDYgQEAgY2hlY2tfR1VDX2lu aXQoY29uc3Qgc3RydWN0IGNvbmZpZ19nZW5lcmljICpnY29uZikKIHZvaWQKIEluaXRpYWxpemVH VUNPcHRpb25zKHZvaWQpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlHVUNIYXNoRW50 cnkgKmhlbnRyeTsKLQogCS8qCiAJICogQmVmb3JlIGxvZ19saW5lX3ByZWZpeCBjb3VsZCBwb3Nz aWJseSByZWNlaXZlIGEgbm9uZW1wdHkgc2V0dGluZywgbWFrZQogCSAqIHN1cmUgdGhhdCB0aW1l em9uZSBwcm9jZXNzaW5nIGlzIG1pbmltYWxseSBhbGl2ZSAoc2VlIGVsb2cuYykuCkBAIC0xNDE4 LDggKzE0MDgsNyBAQCBJbml0aWFsaXplR1VDT3B0aW9ucyh2b2lkKQogCSAqIExvYWQgYWxsIHZh cmlhYmxlcyB3aXRoIHRoZWlyIGNvbXBpbGVkLWluIGRlZmF1bHRzLCBhbmQgaW5pdGlhbGl6ZQog CSAqIHN0YXR1cyBmaWVsZHMgYXMgbmVlZGVkLgogCSAqLwotCWhhc2hfc2VxX2luaXQoJnN0YXR1 cywgZ3VjX2hhc2h0YWIpOwotCXdoaWxlICgoaGVudHJ5ID0gKEdVQ0hhc2hFbnRyeSAqKSBoYXNo X3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKEdVQ0hhc2hFbnRy eSwgaGVudHJ5LCBndWNfaGFzaHRhYikKIAl7CiAJCS8qIENoZWNrIG1hcHBpbmcgYmV0d2VlbiBp bml0aWFsIGFuZCBkZWZhdWx0IHZhbHVlICovCiAJCUFzc2VydChjaGVja19HVUNfaW5pdChoZW50 cnktPmd1Y3ZhcikpOwpAQCAtMjQxNCw5ICsyNDAzLDYgQEAgQXRFT1hhY3RfR1VDKGJvb2wgaXND b21taXQsIGludCBuZXN0TGV2ZWwpCiB2b2lkCiBCZWdpblJlcG9ydGluZ0dVQ09wdGlvbnModm9p ZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCUdVQ0hhc2hFbnRyeSAqaGVudHJ5Owot CiAJLyoKIAkgKiBEb24ndCBkbyBhbnl0aGluZyB1bmxlc3MgdGFsa2luZyB0byBhbiBpbnRlcmFj dGl2ZSBmcm9udGVuZC4KIAkgKi8KQEAgLTI0MzgsOCArMjQyNCw3IEBAIEJlZ2luUmVwb3J0aW5n R1VDT3B0aW9ucyh2b2lkKQogCQkJCQkJUEdDX0lOVEVSTkFMLCBQR0NfU19PVkVSUklERSk7CiAK IAkvKiBUcmFuc21pdCBpbml0aWFsIHZhbHVlcyBvZiBpbnRlcmVzdGluZyB2YXJpYWJsZXMgKi8K LQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIGd1Y19oYXNodGFiKTsKLQl3aGlsZSAoKGhlbnRyeSA9 IChHVUNIYXNoRW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZv cmVhY2hfaGFzaChHVUNIYXNoRW50cnksIGhlbnRyeSwgZ3VjX2hhc2h0YWIpCiAJewogCQlzdHJ1 Y3QgY29uZmlnX2dlbmVyaWMgKmNvbmYgPSBoZW50cnktPmd1Y3ZhcjsKIApAQCAtNTE0MiwxNiAr NTEyNywxMyBAQCB2b2lkCiBNYXJrR1VDUHJlZml4UmVzZXJ2ZWQoY29uc3QgY2hhciAqY2xhc3NO YW1lKQogewogCWludAkJCWNsYXNzTGVuID0gc3RybGVuKGNsYXNzTmFtZSk7Ci0JSEFTSF9TRVFf U1RBVFVTIHN0YXR1czsKLQlHVUNIYXNoRW50cnkgKmhlbnRyeTsKIAlNZW1vcnlDb250ZXh0IG9s ZGNvbnRleHQ7CiAKIAkvKgogCSAqIENoZWNrIGZvciBleGlzdGluZyBwbGFjZWhvbGRlcnMuICBX ZSBtdXN0IGFjdHVhbGx5IHJlbW92ZSBpbnZhbGlkCiAJICogcGxhY2Vob2xkZXJzLCBlbHNlIGZ1 dHVyZSBwYXJhbGxlbCB3b3JrZXIgc3RhcnR1cHMgd2lsbCBmYWlsLgogCSAqLwotCWhhc2hfc2Vx X2luaXQoJnN0YXR1cywgZ3VjX2hhc2h0YWIpOwotCXdoaWxlICgoaGVudHJ5ID0gKEdVQ0hhc2hF bnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNo KEdVQ0hhc2hFbnRyeSwgaGVudHJ5LCBndWNfaGFzaHRhYikKIAl7CiAJCXN0cnVjdCBjb25maWdf Z2VuZXJpYyAqdmFyID0gaGVudHJ5LT5ndWN2YXI7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMgYi9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1l bS5jCmluZGV4IDBhMTA4MmY0ODQ1Li5hMzFmNWUwZTZjYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYworKysgYi9zcmMvYmFja2VuZC91dGlscy9tbWdyL3Bv cnRhbG1lbS5jCkBAIC02MDIsMTQgKzYwMiwxMCBAQCBQb3J0YWxEcm9wKFBvcnRhbCBwb3J0YWws IGJvb2wgaXNUb3BDb21taXQpCiB2b2lkCiBQb3J0YWxIYXNoVGFibGVEZWxldGVBbGwodm9pZCkK IHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVBvcnRhbEhhc2hFbnQgKmhlbnRyeTsKLQog CWlmIChQb3J0YWxIYXNoVGFibGUgPT0gTlVMTCkKIAkJcmV0dXJuOwogCi0JaGFzaF9zZXFfaW5p dCgmc3RhdHVzLCBQb3J0YWxIYXNoVGFibGUpOwotCXdoaWxlICgoaGVudHJ5ID0gaGFzaF9zZXFf c2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChQb3J0YWxIYXNoRW50LCBo ZW50cnksIFBvcnRhbEhhc2hUYWJsZSkKIAl7CiAJCVBvcnRhbAkJcG9ydGFsID0gaGVudHJ5LT5w b3J0YWw7CiAKQEAgLTYyMCw4ICs2MTYsNyBAQCBQb3J0YWxIYXNoVGFibGVEZWxldGVBbGwodm9p ZCkKIAkJUG9ydGFsRHJvcChwb3J0YWwsIGZhbHNlKTsKIAogCQkvKiBSZXN0YXJ0IHRoZSBpdGVy YXRpb24gaW4gY2FzZSB0aGF0IGxlZCB0byBvdGhlciBkcm9wcyAqLwotCQloYXNoX3NlcV90ZXJt KCZzdGF0dXMpOwotCQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIFBvcnRhbEhhc2hUYWJsZSk7CisJ CWZvcmVhY2hfaGFzaF9yZXN0YXJ0KGhlbnRyeSwgUG9ydGFsSGFzaFRhYmxlKTsKIAl9CiB9CiAK QEAgLTY3MywxMiArNjY4LDggQEAgYm9vbAogUHJlQ29tbWl0X1BvcnRhbHMoYm9vbCBpc1ByZXBh cmUpCiB7CiAJYm9vbAkJcmVzdWx0ID0gZmFsc2U7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsK LQlQb3J0YWxIYXNoRW50ICpoZW50cnk7Ci0KLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIFBvcnRh bEhhc2hUYWJsZSk7CiAKLQl3aGlsZSAoKGhlbnRyeSA9IChQb3J0YWxIYXNoRW50ICopIGhhc2hf c2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUG9ydGFsSGFzaEVu dCwgaGVudHJ5LCBQb3J0YWxIYXNoVGFibGUpCiAJewogCQlQb3J0YWwJCXBvcnRhbCA9IGhlbnRy eS0+cG9ydGFsOwogCkBAIC03NjAsOCArNzUxLDcgQEAgUHJlQ29tbWl0X1BvcnRhbHMoYm9vbCBp c1ByZXBhcmUpCiAJCSAqIGl0ZXJhdGlvbiwgYmVjYXVzZSB3ZSBjb3VsZCBoYXZlIGludm9rZWQg dXNlci1kZWZpbmVkIGNvZGUgdGhhdAogCQkgKiBjYXVzZWQgYSBkcm9wIG9mIHRoZSBuZXh0IHBv cnRhbCBpbiB0aGUgaGFzaCBjaGFpbi4KIAkJICovCi0JCWhhc2hfc2VxX3Rlcm0oJnN0YXR1cyk7 Ci0JCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgUG9ydGFsSGFzaFRhYmxlKTsKKwkJZm9yZWFjaF9o YXNoX3Jlc3RhcnQoaGVudHJ5LCBQb3J0YWxIYXNoVGFibGUpOwogCX0KIAogCXJldHVybiByZXN1 bHQ7CkBAIC03NzYsMTIgKzc2Niw3IEBAIFByZUNvbW1pdF9Qb3J0YWxzKGJvb2wgaXNQcmVwYXJl KQogdm9pZAogQXRBYm9ydF9Qb3J0YWxzKHZvaWQpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1 czsKLQlQb3J0YWxIYXNoRW50ICpoZW50cnk7Ci0KLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIFBv cnRhbEhhc2hUYWJsZSk7Ci0KLQl3aGlsZSAoKGhlbnRyeSA9IChQb3J0YWxIYXNoRW50ICopIGhh c2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUG9ydGFsSGFz aEVudCwgaGVudHJ5LCBQb3J0YWxIYXNoVGFibGUpCiAJewogCQlQb3J0YWwJCXBvcnRhbCA9IGhl bnRyeS0+cG9ydGFsOwogCkBAIC04NTQsMTIgKzgzOSw3IEBAIEF0QWJvcnRfUG9ydGFscyh2b2lk KQogdm9pZAogQXRDbGVhbnVwX1BvcnRhbHModm9pZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3Rh dHVzOwotCVBvcnRhbEhhc2hFbnQgKmhlbnRyeTsKLQotCWhhc2hfc2VxX2luaXQoJnN0YXR1cywg UG9ydGFsSGFzaFRhYmxlKTsKLQotCXdoaWxlICgoaGVudHJ5ID0gKFBvcnRhbEhhc2hFbnQgKikg aGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChQb3J0YWxI YXNoRW50LCBoZW50cnksIFBvcnRhbEhhc2hUYWJsZSkKIAl7CiAJCVBvcnRhbAkJcG9ydGFsID0g aGVudHJ5LT5wb3J0YWw7CiAKQEAgLTkxMywxMiArODkzLDcgQEAgQXRDbGVhbnVwX1BvcnRhbHMo dm9pZCkKIHZvaWQKIFBvcnRhbEVycm9yQ2xlYW51cCh2b2lkKQogewotCUhBU0hfU0VRX1NUQVRV UyBzdGF0dXM7Ci0JUG9ydGFsSGFzaEVudCAqaGVudHJ5OwotCi0JaGFzaF9zZXFfaW5pdCgmc3Rh dHVzLCBQb3J0YWxIYXNoVGFibGUpOwotCi0Jd2hpbGUgKChoZW50cnkgPSAoUG9ydGFsSGFzaEVu dCAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFBv cnRhbEhhc2hFbnQsIGhlbnRyeSwgUG9ydGFsSGFzaFRhYmxlKQogCXsKIAkJUG9ydGFsCQlwb3J0 YWwgPSBoZW50cnktPnBvcnRhbDsKIApAQCAtOTQyLDEyICs5MTcsNyBAQCBBdFN1YkNvbW1pdF9Q b3J0YWxzKFN1YlRyYW5zYWN0aW9uSWQgbXlTdWJpZCwKIAkJCQkJaW50IHBhcmVudExldmVsLAog CQkJCQlSZXNvdXJjZU93bmVyIHBhcmVudFhhY3RPd25lcikKIHsKLQlIQVNIX1NFUV9TVEFUVVMg c3RhdHVzOwotCVBvcnRhbEhhc2hFbnQgKmhlbnRyeTsKLQotCWhhc2hfc2VxX2luaXQoJnN0YXR1 cywgUG9ydGFsSGFzaFRhYmxlKTsKLQotCXdoaWxlICgoaGVudHJ5ID0gKFBvcnRhbEhhc2hFbnQg KikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChQb3J0 YWxIYXNoRW50LCBoZW50cnksIFBvcnRhbEhhc2hUYWJsZSkKIAl7CiAJCVBvcnRhbAkJcG9ydGFs ID0gaGVudHJ5LT5wb3J0YWw7CiAKQEAgLTk3OCwxMiArOTQ4LDcgQEAgQXRTdWJBYm9ydF9Qb3J0 YWxzKFN1YlRyYW5zYWN0aW9uSWQgbXlTdWJpZCwKIAkJCQkgICBSZXNvdXJjZU93bmVyIG15WGFj dE93bmVyLAogCQkJCSAgIFJlc291cmNlT3duZXIgcGFyZW50WGFjdE93bmVyKQogewotCUhBU0hf U0VRX1NUQVRVUyBzdGF0dXM7Ci0JUG9ydGFsSGFzaEVudCAqaGVudHJ5OwotCi0JaGFzaF9zZXFf aW5pdCgmc3RhdHVzLCBQb3J0YWxIYXNoVGFibGUpOwotCi0Jd2hpbGUgKChoZW50cnkgPSAoUG9y dGFsSGFzaEVudCAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFj aF9oYXNoKFBvcnRhbEhhc2hFbnQsIGhlbnRyeSwgUG9ydGFsSGFzaFRhYmxlKQogCXsKIAkJUG9y dGFsCQlwb3J0YWwgPSBoZW50cnktPnBvcnRhbDsKIApAQCAtMTA4OCwxMiArMTA1Myw3IEBAIEF0 U3ViQWJvcnRfUG9ydGFscyhTdWJUcmFuc2FjdGlvbklkIG15U3ViaWQsCiB2b2lkCiBBdFN1YkNs ZWFudXBfUG9ydGFscyhTdWJUcmFuc2FjdGlvbklkIG15U3ViaWQpCiB7Ci0JSEFTSF9TRVFfU1RB VFVTIHN0YXR1czsKLQlQb3J0YWxIYXNoRW50ICpoZW50cnk7Ci0KLQloYXNoX3NlcV9pbml0KCZz dGF0dXMsIFBvcnRhbEhhc2hUYWJsZSk7Ci0KLQl3aGlsZSAoKGhlbnRyeSA9IChQb3J0YWxIYXNo RW50ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2go UG9ydGFsSGFzaEVudCwgaGVudHJ5LCBQb3J0YWxIYXNoVGFibGUpCiAJewogCQlQb3J0YWwJCXBv cnRhbCA9IGhlbnRyeS0+cG9ydGFsOwogCkBAIC0xMTI4LDggKzEwODgsNiBAQCBEYXR1bQogcGdf Y3Vyc29yKFBHX0ZVTkNUSU9OX0FSR1MpCiB7CiAJUmV0dXJuU2V0SW5mbyAqcnNpbmZvID0gKFJl dHVyblNldEluZm8gKikgZmNpbmZvLT5yZXN1bHRpbmZvOwotCUhBU0hfU0VRX1NUQVRVUyBoYXNo X3NlcTsKLQlQb3J0YWxIYXNoRW50ICpoZW50cnk7CiAKIAkvKgogCSAqIFdlIHB1dCBhbGwgdGhl IHR1cGxlcyBpbnRvIGEgdHVwbGVzdG9yZSBpbiBvbmUgc2NhbiBvZiB0aGUgaGFzaHRhYmxlLgpA QCAtMTEzNyw4ICsxMDk1LDcgQEAgcGdfY3Vyc29yKFBHX0ZVTkNUSU9OX0FSR1MpCiAJICovCiAJ SW5pdE1hdGVyaWFsaXplZFNSRihmY2luZm8sIDApOwogCi0JaGFzaF9zZXFfaW5pdCgmaGFzaF9z ZXEsIFBvcnRhbEhhc2hUYWJsZSk7Ci0Jd2hpbGUgKChoZW50cnkgPSBoYXNoX3NlcV9zZWFyY2go Jmhhc2hfc2VxKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUG9ydGFsSGFzaEVudCwgaGVudHJ5 LCBQb3J0YWxIYXNoVGFibGUpCiAJewogCQlQb3J0YWwJCXBvcnRhbCA9IGhlbnRyeS0+cG9ydGFs OwogCQlEYXR1bQkJdmFsdWVzWzZdOwpAQCAtMTE2NywxMiArMTEyNCw3IEBAIHBnX2N1cnNvcihQ R19GVU5DVElPTl9BUkdTKQogYm9vbAogVGhlcmVBcmVOb1JlYWR5UG9ydGFscyh2b2lkKQogewot CUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JUG9ydGFsSGFzaEVudCAqaGVudHJ5OwotCi0JaGFz aF9zZXFfaW5pdCgmc3RhdHVzLCBQb3J0YWxIYXNoVGFibGUpOwotCi0Jd2hpbGUgKChoZW50cnkg PSAoUG9ydGFsSGFzaEVudCAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJ Zm9yZWFjaF9oYXNoKFBvcnRhbEhhc2hFbnQsIGhlbnRyeSwgUG9ydGFsSGFzaFRhYmxlKQogCXsK IAkJUG9ydGFsCQlwb3J0YWwgPSBoZW50cnktPnBvcnRhbDsKIApAQCAtMTIwMywxMiArMTE1NSw3 IEBAIFRoZXJlQXJlTm9SZWFkeVBvcnRhbHModm9pZCkKIHZvaWQKIEhvbGRQaW5uZWRQb3J0YWxz KHZvaWQpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlQb3J0YWxIYXNoRW50ICpoZW50 cnk7Ci0KLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIFBvcnRhbEhhc2hUYWJsZSk7Ci0KLQl3aGls ZSAoKGhlbnRyeSA9IChQb3J0YWxIYXNoRW50ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkg IT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUG9ydGFsSGFzaEVudCwgaGVudHJ5LCBQb3J0YWxIYXNo VGFibGUpCiAJewogCQlQb3J0YWwJCXBvcnRhbCA9IGhlbnRyeS0+cG9ydGFsOwogCkBAIC0xMjUy LDE1ICsxMTk5LDExIEBAIEhvbGRQaW5uZWRQb3J0YWxzKHZvaWQpCiB2b2lkCiBGb3JnZXRQb3J0 YWxTbmFwc2hvdHModm9pZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVBvcnRhbEhh c2hFbnQgKmhlbnRyeTsKIAlpbnQJCQludW1Qb3J0YWxTbmFwcyA9IDA7CiAJaW50CQkJbnVtQWN0 aXZlU25hcHMgPSAwOwogCiAJLyogRmlyc3QsIHNjYW4gUG9ydGFsSGFzaFRhYmxlIGFuZCBjbGVh ciBwb3J0YWxTbmFwc2hvdCBmaWVsZHMgKi8KLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIFBvcnRh bEhhc2hUYWJsZSk7Ci0KLQl3aGlsZSAoKGhlbnRyeSA9IChQb3J0YWxIYXNoRW50ICopIGhhc2hf c2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUG9ydGFsSGFzaEVu dCwgaGVudHJ5LCBQb3J0YWxIYXNoVGFibGUpCiAJewogCQlQb3J0YWwJCXBvcnRhbCA9IGhlbnRy eS0+cG9ydGFsOwogCmRpZmYgLS1naXQgYS9zcmMvcGwvcGxwZXJsL3BscGVybC5jIGIvc3JjL3Bs L3BscGVybC9wbHBlcmwuYwppbmRleCA0OTA0NGJjODA4Yi4uMmNmZGYyMzllZTQgMTAwNjQ0Ci0t LSBhL3NyYy9wbC9wbHBlcmwvcGxwZXJsLmMKKysrIGIvc3JjL3BsL3BscGVybC9wbHBlcmwuYwpA QCAtNTAzLDkgKzUwMyw2IEBAIHNldF9pbnRlcnBfcmVxdWlyZShib29sIHRydXN0ZWQpCiBzdGF0 aWMgdm9pZAogcGxwZXJsX2ZpbmkoaW50IGNvZGUsIERhdHVtIGFyZykKIHsKLQlIQVNIX1NFUV9T VEFUVVMgaGFzaF9zZXE7Ci0JcGxwZXJsX2ludGVycF9kZXNjICppbnRlcnBfZGVzYzsKLQogCWVs b2coREVCVUczLCAicGxwZXJsX2ZpbmkiKTsKIAogCS8qCkBAIC01MjcsOCArNTI0LDcgQEAgcGxw ZXJsX2ZpbmkoaW50IGNvZGUsIERhdHVtIGFyZykKIAlwbHBlcmxfZGVzdHJveV9pbnRlcnAoJnBs cGVybF9oZWxkX2ludGVycCk7CiAKIAkvKiBaYXAgYW55IGZ1bGx5LWluaXRpYWxpemVkIGludGVy cHJldGVycyAqLwotCWhhc2hfc2VxX2luaXQoJmhhc2hfc2VxLCBwbHBlcmxfaW50ZXJwX2hhc2gp OwotCXdoaWxlICgoaW50ZXJwX2Rlc2MgPSBoYXNoX3NlcV9zZWFyY2goJmhhc2hfc2VxKSkgIT0g TlVMTCkKKwlmb3JlYWNoX2hhc2gocGxwZXJsX2ludGVycF9kZXNjLCBpbnRlcnBfZGVzYywgcGxw ZXJsX2ludGVycF9oYXNoKQogCXsKIAkJaWYgKGludGVycF9kZXNjLT5pbnRlcnApCiAJCXsKLS0g CjIuNTIuMAoK --558bd6e5e3266abf27d109104dd5d665478502ad57771e87f437cda96460 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v9-0005-Inline-functions-that-have-now-become-trivial.patch Content-Type: text/x-patch; charset=utf-8; name=v9-0005-Inline-functions-that-have-now-become-trivial.patch RnJvbSBmMDZiZTZiMmRjODhmY2M0Njc1MWUwZjgxYmUyZGVkODM0NmE1MmM3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBXZWQsIDMgRGVjIDIwMjUgMjM6MzM6MTggKzAxMDAKU3ViamVjdDogW1BBVENIIHY5 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= --558bd6e5e3266abf27d109104dd5d665478502ad57771e87f437cda96460--