Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1gwrsu-0008PA-HN for pgsql-hackers@arkaria.postgresql.org; Thu, 21 Feb 2019 17:11:45 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1gwrst-0004Ik-CO for pgsql-hackers@arkaria.postgresql.org; Thu, 21 Feb 2019 17:11:43 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1gwrsr-0004HU-OS for pgsql-hackers@lists.postgresql.org; Thu, 21 Feb 2019 17:11:43 +0000 Received: from out2-smtp.messagingengine.com ([66.111.4.26]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1gwrsi-0001tQ-Le for pgsql-hackers@postgresql.org; Thu, 21 Feb 2019 17:11:40 +0000 Received: from compute7.internal (compute7.nyi.internal [10.202.2.47]) by mailout.nyi.internal (Postfix) with ESMTP id 7566521BE0; Thu, 21 Feb 2019 12:11:31 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute7.internal (MEProxy); Thu, 21 Feb 2019 12:11:31 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; bh=hLSDRc qrJfHtzVN9r4MxyIe+107a1qAeAJ9u0Yhq1oc=; b=dE+a5StURzxV6deKNdjuLE T2yF6rQJR7jU94a4a/wrbqRgYDm+hK1mpc8UtEe8IdctYzsUuxXS4fEj4m7F6nWj I/K/R/3e7q8TGArL7yiv6SBvgKQfNwRPlM4tf3UuOBFcnTinIK+aF+jGMXVQflHp WNg4y3QLR3ByVk3V9CZRml2L7mMR9RFnGjQo2YR6ZpHPHREgqoWWm4ntBd+LwMZU EaV659bfiOPu3i6FWjZ4YEd0BSwv9S9HfGCATEW19+TeU65eg4zn8wwu+6AxL++y 1Hwjs0asA+iV3t7t/4JwY2jDpQZs7vF9ouyM4MbegOAXsetOJo/Va7Sv+1Dr5Uew == X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedutddrtdekgdelleculddtuddrgedtledrtddtmd cutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfhuthen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhepuffhvfhfohfkffgfgggjtgesmhdtreertdefjeenucfhrhhomheprfgvthgv rhcugfhishgvnhhtrhgruhhtuceophgvthgvrhdrvghishgvnhhtrhgruhhtsedvnhguqh hurggurhgrnhhtrdgtohhmqeenucffohhmrghinhepvdhnughquhgrughrrghnthdrtgho mhenucfkphepleefrddvgeefrdejvddrudduleenucfrrghrrghmpehmrghilhhfrhhomh epphgvthgvrhdrvghishgvnhhtrhgruhhtsedvnhguqhhurggurhgrnhhtrdgtohhmnecu vehluhhsthgvrhfuihiivgeptd X-ME-Proxy: Received: from april.pezone.net (p5df34877.dip0.t-ipconnect.de [93.243.72.119]) by mail.messagingengine.com (Postfix) with ESMTPA id EC22010338; Thu, 21 Feb 2019 12:11:28 -0500 (EST) Subject: Re: insensitive collations From: Peter Eisentraut To: Peter Geoghegan References: <693ad06d-db9a-4e59-8131-f823483c5893@manitou-mail.org> Cc: Daniel Verite , pgsql-hackers Openpgp: preference=signencrypt Autocrypt: addr=peter.eisentraut@2ndquadrant.com; prefer-encrypt=mutual; keydata= xsFNBFUUt6kBEADZd9NNTBJbHmAXXJgPGOdd6Q73l80oifIVgn2tRxP9dYkCfTlo/yLqbKTl JNqTcyM6XrJDnB2sMEUGYCewYZXl+9C4bBJWyNqcEI1ae9u71vEq/fknFLArJ+2wN+f7QuRx Q8d94ZJAiJQ5g3fNk2HVeedCQCKP5dCzU+ZLt2dbsx1PDZLjTO9gf+JswWuGFb5wY5PZVM5V hq66Xk7ZJzHuARacza2RT7J2fkMmQBY+kr7L98Perb0GhafnlhXB0PvUB+N3xpmggMfwuhTu BngS/G/r3GvemxJuFxouw8xsMqrsfdksJXA2gLXYtwRCssdPV3PO0rlD9twqDo8URfIJ5fb6 1g/MV8aTOKjg3Q8MpJPtkwJqN4o3PvbwYdedeFnOVkkYAJdu/aX1v1BeCBDu7Hy3sF52scD3 pQbyQSl9vUDpTLarASAxNbAV0NRJE8dp4vfW6AH1ccryGiFqw/czPK/iN0+MT8wsjAW6WW4w hvjm5UPA1KTwi3ZT8eT5uycuH7QpuNk7LnGGXQ6KaRALFywzkr0A0V0AvFNa+l4wstMaXaB6 dmMXyF0/hfryqyOeu1gAdq4q0/PNC2dPgb/6uoh4eMjN6A5GXcprilhz5DulmsilY21hfSoU S64ODed96pKhprsOxjZiDRsN1QM5MwB+uwVWUNfsX7fIxE0BrwARAQABzSdQZXRlciBFaXNl bnRyYXV0IDxwZXRlckBlaXNlbnRyYXV0Lm9yZz7CwXoEEwEIACQCGwMFCwkIBwMFFQoJCAsF FgIDAQACHgECF4AFAlUUuKQCGQEACgkQoZ8SQ+xBJp8llw//RbGoXnF72FZTlOFsnNyxnWbF vViPCfdAlZl1GGK9OYCvV1dp/956HuhB0wpaGQHiBmQfOPJf/jLOPjXFYm2iEChEycrBChuE j4TSYemMp5BSPILYk9Uwd16kVD/+U6fQfK6H5pOhfBvbM6asMnmpY2wQuvktxHvaGlytFw84 EzFWNZtAZfxkw28w3AhIQkKe9hJanfyDL750RcbyEr8AAHty5IErrvS7tM5vQwIeh5BF26ND CyKPRdZgOgMpcwFfROKBDpAt052CgWIpNdhBdfIKlkCs4/ILxmC3rT/Mb/qZiHcoMMwEu6k+ T7vRAFZZAk62Yrr/U8/vUGKlzRZQoo86fyojCfI0ibCIc0z8rwCVY9P40G9wD9BTCZS/z8Vh jjpBlNnIKw2hM6hbxavKndCJjFFJD08rXrTyrLF/of18xD37vNdYooP9VATB5QjOWFRrscSZ 4a89e+to3m7YVnd4xdXwGp47dYusoax84C8tg1gZrH38ol9dPmnKX6GZrXeS7tH9k8VeUpJ8 HQbRThQRWAT936QpYbLConBmOtmbLmjQOGtiXPo1oK57X/7U/WBja5vWmm2q+Yxtt+3uHGVg DdDU4CJpXo4lX0v2n3QV5EBSW9hjdF3bNfl6GFBb1pPEhqNcMDUc7zkx/2uENdAdk/BnqMgH umip7b0pVfvOwU0EVRS3qQEQAJf6p0P7D+hMYUgCPkvgrcz6OJYsAYdUMUmokfqmkKwK0oJM ew8TNGM53ocKAgQGma5f10rwbZNPlpVPNRX5hwUmwVlcwSut0oE+JfUBH7mpysWvpF05RKIy q9RCoJZrAbXS7Tig56A1QD8IcM00rERZMcCOlI1+q9m4u9AOI+0LyGGSH+VvoyDHD/Jew4R2 TmPEF8Pu7lYiNYK88Q6u0kBkc+Tz3BNlyc6fi3HxnFfp0b75HLXPSTu2SwA/0Q31wHZXwrEU BR9KgSn/qbgy8ydPc97i82fhiFE3cbGexfPrQSMYmDGi+dcQ0s+AMQwC3XyMC0JkHpYUuFkR QdlIvaIhgFUUN2Vr4xF2ADaNTNFc4DYaiPHFAgHZw+3pZWqS4uIiWgJynrEaHw4F3QWU8/JB iyEWDhNq4WBrRA0u914TCCAoFOOKMnRdl8eJrRQKM/5/lXbHFjjlI/LDKhLRFsuQsnJJ3331 RjCzpHPZG5/p5KR1RHiAXa0p/DW5lXyq21hS3kjDlleoHqOxCN/cy0Jgz7qLDq1vZoCl67Sy RAH60c2Xu4may9SVltmot0OzWVHdrfS+85FQGp9580DaeLio7YMFKy2bfEvwQJ/c9xD2QPB+ oSb3V8ueSznXBG5+dyfOsZFRPxceA0wA2rSWZSjxLdKxvyGTj9vsCjaDu13rABEBAAHCwV8E GAEIAAkFAlUUt6kCGwwACgkQoZ8SQ+xBJp+HJhAAxmSTsC5y7p9Zu+nnLpucv/h88oEx985e qWeXzQiwM3pfRZS+PdTH9TyzHK0KOgKoAiubk0vt+BrT91D9d0G5kVQaTctAErGBoMkTaZJT XVEcNphiPzysdSqvprjojMp1y7rG8AP+Xd6m0rE1LRnkRRm8HyI8vdXsuLQPITGWXDLMjaNq AOV3BUnzkgtjMuIYw7SCr+12ZOb5dEKvaG4kjC4kaJ/TLbuBhVANcXkC90yp0AOZLs/cB1Dj OAXno/RUUruJ3r27a+pFv768UAi9QWcdw58yPxreMNMLqAgsS9oTHwHfGNWcB2dJ4UW+GMLJ hTf9TjQ2f+N/sIx5XMQ9pYw6CAJMK29qPx6/ZayrPxf22EXf0D3zTwIEZgwfSkynFVwV25L7 awQq60fifdMYheSxq7GbhpsixmcD+e161cCmLIt75YDt5bQ0B1yf7EmxG8n7pGZAOM6LoNsU fkSldba5XVwh8LuN5mK0nQBELGW6Os4TDq4REggLpfcvFC215zpuo0iCGnmE/Bns4nowqUSP u4tkWL+nxW4qgv8wo8HJ52jd79EJ8iqfIBoidBfy9AIUiEUApGQzWPu6yWcI8fY0rN5D+tc+ Yw1Zt6Mm+huYJpgCRsTcfzEcahnBn521CWcWvhW1ff3KFileFMtNmnBBhMncmRKHphtTKEpN 3jI= Organization: 2ndQuadrant Message-ID: <3548cbab-2c29-be93-0c9c-ec24136626ae@2ndquadrant.com> Date: Thu, 21 Feb 2019 18:11:27 +0100 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/mixed; boundary="------------5D5C76A1BDFDC875F0EEE3F4" Content-Language: en-US List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk This is a multi-part message in MIME format. --------------5D5C76A1BDFDC875F0EEE3F4 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit On 2019-02-21 09:36, Peter Eisentraut wrote: >> * Why have you disable this optimization?: >> >>> /* Fast pre-check for equality, as discussed in varstr_cmp() */ >>> - if (len1 == len2 && memcmp(a1p, a2p, len1) == 0) >>> + if ((!sss->locale || sss->locale->deterministic) && >>> + len1 == len2 && memcmp(a1p, a2p, len1) == 0) >> I don't see why this is necessary. A non-deterministic collation >> cannot indicate that bitwise identical strings are non-equal. > Right, I went too far there. > >> * Perhaps you should add a "Tip" referencing the feature to the >> contrib/citext documentation. > Good idea. Here is another patch that fixes these two points. I have also worked on the tests hoping to appease the cfbot. Older ICU versions (<54) don't support all the locale customization options, so many of my new tests in collate.icu.utf8.sql will fail on older systems. What should we do about that? Have another extra test file? -- Peter Eisentraut http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services --------------5D5C76A1BDFDC875F0EEE3F4 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="v7-0001-Collations-with-nondeterministic-comparison.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="v7-0001-Collations-with-nondeterministic-comparison.patch" RnJvbSAwNGEyMTkyYzg4MGEyNTc3NzVlNGQzYzJhMDdlNDhmNDFmYjI4MTVkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogVGh1LCAyMSBGZWIgMjAxOSAxNzo1OTowMyArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggdjddIENvbGxhdGlvbnMgd2l0aCBub25kZXRlcm1pbmlzdGljIGNvbXBhcmlz b24KClRoaXMgYWRkcyBhIGZsYWcgImRldGVybWluaXN0aWMiIHRvIGNvbGxhdGlvbnMuICBJ ZiB0aGF0IGlzIGZhbHNlLApzdWNoIGEgY29sbGF0aW9uIGRpc2FibGVzIHZhcmlvdXMgb3B0 aW1pemF0aW9ucyB0aGF0IGFzc3VtZSB0aGF0CnN0cmluZ3MgYXJlIGVxdWFsIG9ubHkgaWYg dGhleSBhcmUgYnl0ZS13aXNlIGVxdWFsLiAgVGhhdCB0aGVuIGFsbG93cwp1c2UgY2FzZXMg c3VjaCBhcyBjYXNlLWluc2Vuc2l0aXZlIG9yIGFjY2VudC1pbnNlbnNpdGl2ZSBjb21wYXJp c29ucwpvciBoYW5kbGluZyBvZiBzdHJpbmdzIHdpdGggZGlmZmVyZW50IFVuaWNvZGUgbm9y bWFsIGZvcm1zLgoKVGhlIHRlcm0gImRldGVybWluaXN0aWMgY29tcGFyaXNvbiIgaW4gdGhp cyBjb250ZXh0IGlzIGZyb20gVW5pY29kZQpUZWNobmljYWwgU3RhbmRhcmQgIzEwCihodHRw czovL3VuaWNvZGUub3JnL3JlcG9ydHMvdHIxMC8jRGV0ZXJtaW5pc3RpY19Db21wYXJpc29u KS4KClRoaXMgcGF0Y2ggbWFrZXMgY2hhbmdlcyBpbiB0aHJlZSBhcmVhczoKCi0gQ1JFQVRF IENPTExBVElPTiBEREwgY2hhbmdlcyBhbmQgc3lzdGVtIGNhdGFsb2cgY2hhbmdlcyB0byBz dXBwb3J0CiAgdGhpcyBuZXcgZmxhZy4KCi0gTWFueSBleGVjdXRvciBub2RlcyBhbmQgYXV4 aWxpYXJ5IGNvZGUgYXJlIGV4dGVuZGVkIHRvIHRyYWNrCiAgY29sbGF0aW9ucy4gIFByZXZp b3VzbHksIHRoaXMgY29kZSB3b3VsZCBqdXN0IHRocm93IGF3YXkgY29sbGF0aW9uCiAgaW5m b3JtYXRpb24sIGJlY2F1c2UgdGhlIGV2ZW50dWFsbHktY2FsbGVkIHVzZXItZGVmaW5lZCBm dW5jdGlvbnMKICBkaWRuJ3QgdXNlIGl0IHNpbmNlIHRoZXkgb25seSBjYXJlZCBhYm91dCBl cXVhbGl0eSwgd2hpY2ggZGlkbid0CiAgbmVlZCBjb2xsYXRpb24gaW5mb3JtYXRpb24uCgot IFN0cmluZyBkYXRhIHR5cGUgZnVuY3Rpb25zIHRoYXQgZG8gZXF1YWxpdHkgY29tcGFyaXNv bnMgYW5kIGhhc2hpbmcKICBhcmUgY2hhbmdlZCB0byB0YWtlIHRoZSAobm9uLSlkZXRlcm1p bmlzdGljIGZsYWcgaW50byBhY2NvdW50LiAgRm9yCiAgY29tcGFyaXNvbiwgdGhpcyBqdXN0 IG1lYW5zIHNraXBwaW5nIHZhcmlvdXMgc2hvcnRjdXRzIGFuZCB0aWUKICBicmVha2VycyB0 aGF0IHVzZSBieXRlLXdpc2UgY29tcGFyaXNvbi4gIEZvciBoYXNoaW5nLCB3ZSBmaXJzdCBu ZWVkCiAgdG8gY29udmVydCB0aGUgaW5wdXQgc3RyaW5nIHRvIGEgY2Fub25pY2FsICJzb3J0 IGtleSIgdXNpbmcgdGhlIElDVQogIGFuYWxvZ3VlIG9mIHN0cnhmcm0oKS4KCkRpc2N1c3Np b246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvZmxhdC8xY2NjNjY4 Zi00Y2JjLTBiZWYtYWY2Ny00NTBiNDdjZGZlZTdAMm5kcXVhZHJhbnQuY29tLwotLS0KIGNv bnRyaWIvYmxvb20vYmxvb20uaCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBj b250cmliL2Jsb29tL2JsdXRpbHMuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMgKy0K IGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sICAgICAgICAgICAgICAgICAgICB8ICAgNyAr CiBkb2Mvc3JjL3NnbWwvY2hhcnNldC5zZ21sICAgICAgICAgICAgICAgICAgICAgfCAgNjEg Ky0KIGRvYy9zcmMvc2dtbC9jaXRleHQuc2dtbCAgICAgICAgICAgICAgICAgICAgICB8ICAy MSArCiBkb2Mvc3JjL3NnbWwvZnVuYy5zZ21sICAgICAgICAgICAgICAgICAgICAgICAgfCAg IDYgKwogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfY29sbGF0aW9uLnNnbWwgICAgICAgIHwg IDIyICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hmdW5jLmMgICAgICAgICAgICB8 IDEwMCArKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndGV4dHByb2MuYyAgICAg ICB8ICAgMyArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19jb2xsYXRpb24uYyAgICAgICAg ICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbGxhdGlvbmNtZHMuYyAgICAg ICAgICB8ICAyNSArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMgICAgICAg ICAgICAgIHwgICA2ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jICAgICAg ICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNHcm91cGluZy5j ICAgICAgICAgICB8ICAxNCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlv bi5jICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNh dGlvbi5jICAgICAgICB8ICAgNSArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5j ICAgICAgICAgICAgICAgIHwgICA5ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR3Jv dXAuYyAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhh c2guYyAgICAgICAgICAgICAgIHwgIDE0ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl SGFzaGpvaW4uYyAgICAgICAgICAgfCAgIDUgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZVJlY3Vyc2l2ZXVuaW9uLmMgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVTZXRPcC5jICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9leGVjdXRvci9u b2RlU3VicGxhbi5jICAgICAgICAgICAgfCAgMTQgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVVbmlxdWUuYyAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlV2luZG93QWdnLmMgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvbm9kZXMv Y29weWZ1bmNzLmMgICAgICAgICAgICAgICAgIHwgICA3ICsKIHNyYy9iYWNrZW5kL25vZGVz L291dGZ1bmNzLmMgICAgICAgICAgICAgICAgICB8ICAgNyArCiBzcmMvYmFja2VuZC9ub2Rl cy9yZWFkZnVuY3MuYyAgICAgICAgICAgICAgICAgfCAgIDcgKwogc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jICAgICAgIHwgIDU0ICstCiBzcmMvYmFja2VuZC9v cHRpbWl6ZXIvdXRpbC90bGlzdC5jICAgICAgICAgICAgfCAgMjUgKwogc3JjL2JhY2tlbmQv cGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYyAgICAgICAgIHwgICA0ICstCiBzcmMvYmFja2Vu ZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMgICAgICAgICAgfCAgIDMgKy0KIHNyYy9iYWNr ZW5kL3JlZ2V4L3JlZ2NfcGdfbG9jYWxlLmMgICAgICAgICAgICB8ICAgNSArCiBzcmMvYmFj a2VuZC91dGlscy9hZHQvYXJyYXlmdW5jcy5jICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9i YWNrZW5kL3V0aWxzL2FkdC9saWtlLmMgICAgICAgICAgICAgICAgICB8ICAyNyArLQogc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L25hbWUuYyAgICAgICAgICAgICAgICAgIHwgIDMyICstCiBz cmMvYmFja2VuZC91dGlscy9hZHQvb3JkZXJlZHNldGFnZ3MuYyAgICAgICAgfCAgIDMgKy0K IHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGUuYyAgICAgICAgICAgICB8ICAgMSAr CiBzcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYyAgICAgICAgICAgfCAgMzkg Ky0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC92YXJjaGFyLmMgICAgICAgICAgICAgICB8IDE2 MSArKysrLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3ZhcmxlbmEuYyAgICAgICAgICAgICAg IHwgMjkwICsrKysrLS0tCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9jYXRjYWNoZS5jICAg ICAgICAgICAgfCAgIDkgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5j ICAgICAgICAgICB8ICAxNiArCiBzcmMvYmluL2luaXRkYi9pbml0ZGIuYyAgICAgICAgICAg ICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAg ICAgICAgICAgICAgICB8ICAzOSArLQogc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgICAgICAg ICAgICAgICAgICAgICAgIHwgIDE3ICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbGxh dGlvbi5oICAgICAgICAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0 b3IuaCAgICAgICAgICAgICAgIHwgICA0ICsKIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2hhc2hq b2luLmggICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9leGVjdXRvci9ub2Rl SGFzaC5oICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNu b2Rlcy5oICAgICAgICAgICAgICAgICB8ICAgMyArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wbGFu bm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgIDcgKwogc3JjL2luY2x1ZGUvb3B0aW1pemVy L3BsYW5tYWluLmggICAgICAgICAgICAgIHwgICAyICstCiBzcmMvaW5jbHVkZS9vcHRpbWl6 ZXIvdGxpc3QuaCAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvcGFydGl0 aW9uaW5nL3BhcnRib3VuZHMuaCAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3V0aWxz L2xzeXNjYWNoZS5oICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS91dGls cy9wZ19sb2NhbGUuaCAgICAgICAgICAgICAgICAgfCAgIDEgKwogLi4uL3JlZ3Jlc3MvZXhw ZWN0ZWQvY29sbGF0ZS5pY3UudXRmOC5vdXQgICAgIHwgNjg0ICsrKysrKysrKysrKysrKysr KwogLi4uL3JlZ3Jlc3MvZXhwZWN0ZWQvY29sbGF0ZS5saW51eC51dGY4Lm91dCAgIHwgICA1 ICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29sbGF0ZS5vdXQgICAgICAgICB8ICAx NSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNlbGVjdC5vdXQgICAgICAgfCAg MTkgKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29sbGF0ZS5pY3UudXRmOC5zcWwgICAgIHwg MjM1ICsrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29sbGF0ZS5saW51eC51dGY4LnNx bCAgIHwgICA3ICsKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbGxhdGUuc3FsICAgICAgICAg ICAgICB8ICAgNSArCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9zdWJzZWxlY3Quc3FsICAgICAg ICAgICAgfCAgMTcgKwogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL01ha2VmaWxlICAgICAgICAg ICAgICAgIHwgICAyICsKIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxMl9jb2xsYXRpb24u cGwgICAgICB8IDEwMyArKysKIDY3IGZpbGVzIGNoYW5nZWQsIDE5NzIgaW5zZXJ0aW9ucygr KSwgMjI3IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3N1YnNj cmlwdGlvbi90LzAxMl9jb2xsYXRpb24ucGwKCmRpZmYgLS1naXQgYS9jb250cmliL2Jsb29t L2Jsb29tLmggYi9jb250cmliL2Jsb29tL2Jsb29tLmgKaW5kZXggZDY0MTM2MWFlZi4uN2Mx OGVhYTUwOCAxMDA2NDQKLS0tIGEvY29udHJpYi9ibG9vbS9ibG9vbS5oCisrKyBiL2NvbnRy aWIvYmxvb20vYmxvb20uaApAQCAtMTM3LDYgKzEzNyw3IEBAIHR5cGVkZWYgc3RydWN0IEJs b29tTWV0YVBhZ2VEYXRhCiB0eXBlZGVmIHN0cnVjdCBCbG9vbVN0YXRlCiB7CiAJRm1ncklu Zm8JaGFzaEZuW0lOREVYX01BWF9LRVlTXTsKKwlPaWQJCQljb2xsYXRpb25zW0lOREVYX01B WF9LRVlTXTsKIAlCbG9vbU9wdGlvbnMgb3B0czsJCQkvKiBjb3B5IG9mIG9wdGlvbnMgb24g aW5kZXgncyBtZXRhcGFnZSAqLwogCWludDMyCQluQ29sdW1uczsKIApkaWZmIC0tZ2l0IGEv Y29udHJpYi9ibG9vbS9ibHV0aWxzLmMgYi9jb250cmliL2Jsb29tL2JsdXRpbHMuYwppbmRl eCA2NDU4Mzc2NTc4Li5kMDc4ZGZiZDQ2IDEwMDY0NAotLS0gYS9jb250cmliL2Jsb29tL2Js dXRpbHMuYworKysgYi9jb250cmliL2Jsb29tL2JsdXRpbHMuYwpAQCAtMTYzLDYgKzE2Myw3 IEBAIGluaXRCbG9vbVN0YXRlKEJsb29tU3RhdGUgKnN0YXRlLCBSZWxhdGlvbiBpbmRleCkK IAkJZm1ncl9pbmZvX2NvcHkoJihzdGF0ZS0+aGFzaEZuW2ldKSwKIAkJCQkJICAgaW5kZXhf Z2V0cHJvY2luZm8oaW5kZXgsIGkgKyAxLCBCTE9PTV9IQVNIX1BST0MpLAogCQkJCQkgICBD dXJyZW50TWVtb3J5Q29udGV4dCk7CisJCXN0YXRlLT5jb2xsYXRpb25zW2ldID0gaW5kZXgt PnJkX2luZGNvbGxhdGlvbltpXTsKIAl9CiAKIAkvKiBJbml0aWFsaXplIGFtY2FjaGUgaWYg bmVlZGVkIHdpdGggb3B0aW9ucyBmcm9tIG1ldGFwYWdlICovCkBAIC0yNjcsNyArMjY4LDcg QEAgc2lnblZhbHVlKEJsb29tU3RhdGUgKnN0YXRlLCBCbG9vbVNpZ25hdHVyZVdvcmQgKnNp Z24sIERhdHVtIHZhbHVlLCBpbnQgYXR0bm8pCiAJICogZGlmZmVyZW50IGNvbHVtbnMgd2ls bCBiZSBtYXBwZWQgaW50byBkaWZmZXJlbnQgYml0cyBiZWNhdXNlIG9mIHN0ZXAKIAkgKiBh Ym92ZQogCSAqLwotCWhhc2hWYWwgPSBEYXR1bUdldEludDMyKEZ1bmN0aW9uQ2FsbDEoJnN0 YXRlLT5oYXNoRm5bYXR0bm9dLCB2YWx1ZSkpOworCWhhc2hWYWwgPSBEYXR1bUdldEludDMy KEZ1bmN0aW9uQ2FsbDFDb2xsKCZzdGF0ZS0+aGFzaEZuW2F0dG5vXSwgc3RhdGUtPmNvbGxh dGlvbnNbYXR0bm9dLCB2YWx1ZSkpOwogCW15U3JhbmQoaGFzaFZhbCBeIG15UmFuZCgpKTsK IAogCWZvciAoaiA9IDA7IGogPCBzdGF0ZS0+b3B0cy5iaXRTaXplW2F0dG5vXTsgaisrKQpk aWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgYi9kb2Mvc3JjL3NnbWwv Y2F0YWxvZ3Muc2dtbAppbmRleCAwZmQ3OTJmZjFhLi40NWVkMDc3NjU0IDEwMDY0NAotLS0g YS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY2F0YWxv Z3Muc2dtbApAQCAtMjA3Nyw2ICsyMDc3LDEzIEBAIDx0aXRsZT48c3RydWN0bmFtZT5wZ19j b2xsYXRpb248L3N0cnVjdG5hbWU+IENvbHVtbnM8L3RpdGxlPgogICAgICAgIGRlZmF1bHQs IDxsaXRlcmFsPmM8L2xpdGVyYWw+ID0gbGliYywgPGxpdGVyYWw+aTwvbGl0ZXJhbD4gPSBp Y3U8L2VudHJ5PgogICAgICA8L3Jvdz4KIAorICAgICA8cm93PgorICAgICAgPGVudHJ5Pjxz dHJ1Y3RmaWVsZD5jb2xsaXNkZXRlcm1pbmlzdGljPC9zdHJ1Y3RmaWVsZD48L2VudHJ5Pgor ICAgICAgPGVudHJ5Pjx0eXBlPmJvb2w8L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48 L2VudHJ5PgorICAgICAgPGVudHJ5PklzIHRoZSBjb2xsYXRpb24gZGV0ZXJtaW5pc3RpYz88 L2VudHJ5PgorICAgICA8L3Jvdz4KKwogICAgICA8cm93PgogICAgICAgPGVudHJ5PjxzdHJ1 Y3RmaWVsZD5jb2xsZW5jb2Rpbmc8L3N0cnVjdGZpZWxkPjwvZW50cnk+CiAgICAgICA8ZW50 cnk+PHR5cGU+aW50NDwvdHlwZT48L2VudHJ5PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L2NoYXJzZXQuc2dtbCBiL2RvYy9zcmMvc2dtbC9jaGFyc2V0LnNnbWwKaW5kZXggYTYxNDNl ZjhhNy4uNTU1ZDFiNGFjNiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NoYXJzZXQuc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvY2hhcnNldC5zZ21sCkBAIC04NDcsMTEgKzg0NywxMyBA QCA8dGl0bGU+SUNVIGNvbGxhdGlvbnM8L3RpdGxlPgogCiAgICA8cGFyYT4KICAgICBOb3Rl IHRoYXQgd2hpbGUgdGhpcyBzeXN0ZW0gYWxsb3dzIGNyZWF0aW5nIGNvbGxhdGlvbnMgdGhh dCA8cXVvdGU+aWdub3JlCi0gICAgY2FzZTwvcXVvdGU+IG9yIDxxdW90ZT5pZ25vcmUgYWNj ZW50czwvcXVvdGU+IG9yIHNpbWlsYXIgKHVzaW5nCi0gICAgdGhlIDxsaXRlcmFsPmtzPC9s aXRlcmFsPiBrZXkpLCBQb3N0Z3JlU1FMIGRvZXMgbm90IGF0IHRoZSBtb21lbnQgYWxsb3cK LSAgICBzdWNoIGNvbGxhdGlvbnMgdG8gYWN0IGluIGEgdHJ1bHkgY2FzZS0gb3IgYWNjZW50 LWluc2Vuc2l0aXZlIG1hbm5lci4gIEFueQotICAgIHN0cmluZ3MgdGhhdCBjb21wYXJlIGVx dWFsIGFjY29yZGluZyB0byB0aGUgY29sbGF0aW9uIGJ1dCBhcmUgbm90Ci0gICAgYnl0ZS13 aXNlIGVxdWFsIHdpbGwgYmUgc29ydGVkIGFjY29yZGluZyB0byB0aGVpciBieXRlIHZhbHVl cy4KKyAgICBjYXNlPC9xdW90ZT4gb3IgPHF1b3RlPmlnbm9yZSBhY2NlbnRzPC9xdW90ZT4g b3Igc2ltaWxhciAodXNpbmcgdGhlCisgICAgPGxpdGVyYWw+a3M8L2xpdGVyYWw+IGtleSks IGluIG9yZGVyIGZvciBzdWNoIGNvbGxhdGlvbnMgdG8gYWN0IGluIGEKKyAgICB0cnVseSBj YXNlLSBvciBhY2NlbnQtaW5zZW5zaXRpdmUgbWFubmVyLCB0aGV5IGFsc28gbmVlZCB0byBi ZSBkZWNsYXJlZCBhcyBub3QKKyAgICA8Zmlyc3R0ZXJtPmRldGVybWluaXN0aWM8L2ZpcnN0 dGVybT4gaW4gPGNvbW1hbmQ+Q1JFQVRFIENPTExBVElPTjwvY29tbWFuZD47CisgICAgc2Vl IDx4cmVmIGxpbmtlbmQ9ImNvbGxhdGlvbi1ub25kZXRlcm1pbmlzdGljIi8+LgorICAgIE90 aGVyd2lzZSwgYW55IHN0cmluZ3MgdGhhdCBjb21wYXJlIGVxdWFsIGFjY29yZGluZyB0byB0 aGUgY29sbGF0aW9uIGJ1dAorICAgIGFyZSBub3QgYnl0ZS13aXNlIGVxdWFsIHdpbGwgYmUg c29ydGVkIGFjY29yZGluZyB0byB0aGVpciBieXRlIHZhbHVlcy4KICAgIDwvcGFyYT4KIAog ICAgPG5vdGU+CkBAIC04ODMsNiArODg1LDU1IEBAIDx0aXRsZT5Db3B5aW5nIENvbGxhdGlv bnM8L3RpdGxlPgogICAgPC9wYXJhPgogICAgPC9zZWN0ND4KICAgIDwvc2VjdDM+CisKKyAg IDxzZWN0MyBpZD0iY29sbGF0aW9uLW5vbmRldGVybWluaXN0aWMiPgorICAgIDx0aXRsZT5O b25kZXRlcm1pbnN0aWMgQ29sbGF0aW9uczwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAg QSBjb2xsYXRpb24gaXMgZWl0aGVyIDxmaXJzdHRlcm0+ZGV0ZXJtaW5pc3RpYzwvZmlyc3R0 ZXJtPiBvcgorICAgICA8Zmlyc3R0ZXJtPm5vbmRldGVybWluaXN0aWM8L2ZpcnN0dGVybT4u ICBBIGRldGVybWluaXN0aWMgY29sbGF0aW9uIHVzZXMKKyAgICAgZGV0ZXJtaW5pc3RpYyBj b21wYXJpc29ucywgd2hpY2ggbWVhbnMgdGhhdCBpdCBjb25zaWRlcnMgc3RyaW5ncyB0byBi ZQorICAgICBlcXVhbCBvbmx5IGlmIHRoZXkgY29uc2lzdCBvZiB0aGUgc2FtZSBieXRlIHNl cXVlbmNlLiAgTm9uZGV0ZXJtaW5pc3RpYworICAgICBjb21wYXJpc29uIG1heSBkZXRlcm1p bmUgc3RyaW5ncyB0byBiZSBlcXVhbCBldmVuIGlmIHRoZXkgY29uc2lzdCBvZgorICAgICBk aWZmZXJlbnQgYnl0ZXMuICBUeXBpY2FsIHNpdHVhdGlvbnMgaW5jbHVkZSBjYXNlLWluc2Vu c2l0aXZlIGNvbXBhcmlzb24sCisgICAgIGFjY2VudC1pbnNlbnNpdGl2ZSBjb21wYXJpc29u LCBhcyB3ZWxsIGFzIGNvbXBhcmlvbiBvZiBzdHJpbmdzIGluCisgICAgIGRpZmZlcmVudCBV bmljb2RlIG5vcm1hbCBmb3Jtcy4gIEl0IGlzIHVwIHRvIHRoZSBjb2xsYXRpb24gcHJvdmlk ZXIgdG8KKyAgICAgYWN0dWFsbHkgaW1wbGVtZW50IHN1Y2ggaW5zZW5zaXRpdmUgY29tcGFy aXNvbnM7IHRoZSBkZXRlcm1pbmlzdGljIGZsYWcKKyAgICAgb25seSBkZXRlcm1pbmVzIHdo ZXRoZXIgdGllcyBhcmUgdG8gYmUgYnJva2VuIHVzaW5nIGJ5dGV3aXNlIGNvbXBhcmlzb24u CisgICAgIFNlZSBhbHNvIDx1bGluayB1cmw9Imh0dHBzOi8vdW5pY29kZS5vcmcvcmVwb3J0 cy90cjEwIj5Vbmljb2RlIFRlY2huaWNhbAorICAgICBTdGFuZGFyZCAxMDwvdWxpbms+IGZv ciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSB0ZXJtaW5vbG9neS4KKyAgICA8L3BhcmE+CisK KyAgICA8cGFyYT4KKyAgICAgVG8gY3JlYXRlIGEgbm9uZGV0ZXJtaW5pc3RpYyBjb2xsYXRp b24sIHNwZWNpZnkgdGhlIHByb3BlcnR5CisgICAgIDxsaXRlcmFsPmRldGVybWluaXN0aWMg PSBmYWxzZTwvbGl0ZXJhbD4gdG8gPGNvbW1hbmQ+Q1JFQVRFCisgICAgIENPTExBVElPTjwv Y29tbWFuZD4sIGZvciBleGFtcGxlOgorPHByb2dyYW1saXN0aW5nPgorQ1JFQVRFIENPTExB VElPTiBuZGNvbGwgKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAndW5kJywgZGV0ZXJtaW5p c3RpYyA9IGZhbHNlKTsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgIFRoaXMgZXhhbXBsZSB3 b3VsZCB1c2UgdGhlIHN0YW5kYXJkIFVuaWNvZGUgY29sbGF0aW9uIGluIGEKKyAgICAgbm9u ZGV0ZXJtaW5pc3RpYyB3YXkuICBJbiBwYXJ0aWN1bGFyLCB0aGlzIHdvdWxkIGFsbG93IHN0 cmluZ3MgaW4KKyAgICAgZGlmZmVyZW50IG5vcm1hbCBmb3JtcyB0byBiZSBjb21wYXJlZCBj b3JyZWN0bHkuICBNb3JlIGludGVyZXN0aW5nCisgICAgIGV4YW1wbGVzIG1ha2UgdXNlIG9m IHRoZSBJQ1UgY3VzdG9taXphdGlvbiBmYWNpbGl0aWVzIGV4cGxhaW5lZCBhYm92ZS4KKyAg ICAgRm9yIGV4YW1wbGU6Cis8cHJvZ3JhbWxpc3Rpbmc+CitDUkVBVEUgQ09MTEFUSU9OIGNh c2VfaW5zZW5zaXRpdmUgKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAndW5kLXUta3MtbGV2 ZWwyJywgZGV0ZXJtaW5pc3RpYyA9IGZhbHNlKTsKK0NSRUFURSBDT0xMQVRJT04gaWdub3Jl X2FjY2VudHMgKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAndW5kLXUta3MtbGV2ZWwxLWtj LXRydWUnLCBkZXRlcm1pbmlzdGljID0gZmFsc2UpOworPC9wcm9ncmFtbGlzdGluZz4KKyAg ICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgQWxsIHN0YW5kYXJkIGFuZCBwcmVkZWZp bmVkIGNvbGxhdGlvbnMgYXJlIGRldGVybWluaXN0aWMsIGFsbAorICAgICB1c2VyLWRlZmlu ZWQgY29sbGF0aW9ucyBhcmUgZGV0ZXJtaW5pc3RpYyBieSBkZWZhdWx0LiAgV2hpbGUKKyAg ICAgbm9uZGV0ZXJtaW5pc3RpYyBjb2xsYXRpb25zIGdpdmUgYSBtb3JlIDxxdW90ZT5jb3Jy ZWN0PC9xdW90ZT4gYmVoYXZpb3IsCisgICAgIGVzcGVjaWFsbHkgd2hlbiBjb25zaWRlcmlu ZyB0aGUgZnVsbCBwb3dlciBvZiBVbmljb2RlIGFuZCBpdHMgbWFueQorICAgICBzcGVjaWFs IGNhc2VzLCB0aGV5IGFsc28gaGF2ZSBzb21lIGRyYXdiYWNrcy4gIEZvcmVtb3N0LCB0aGVp ciB1c2UgbGVhZHMKKyAgICAgdG8gYSBwZXJmb3JtYW5jZSBwZW5hbHR5LiAgQWxzbywgY2Vy dGFpbiBvcGVyYXRpb25zIGFyZSBub3QgcG9zc2libGUgd2l0aAorICAgICBub25kZXRlcm1p bmlzdGljIGNvbGxhdGlvbnMsIHN1Y2ggYXMgcGF0dGVybiBtYXRjaGluZyBvcGVyYXRpb25z LgorICAgICBUaGVyZWZvcmUsIHRoZXkgc2hvdWxkIGJlIHVzZWQgb25seSBpbiBjYXNlcyB3 aGVyZSB0aGV5IGFyZSBzcGVjaWZpY2FsbHkKKyAgICAgd2FudGVkLgorICAgIDwvcGFyYT4K KyAgIDwvc2VjdDM+CiAgIDwvc2VjdDI+CiAgPC9zZWN0MT4KIApkaWZmIC0tZ2l0IGEvZG9j L3NyYy9zZ21sL2NpdGV4dC5zZ21sIGIvZG9jL3NyYy9zZ21sL2NpdGV4dC5zZ21sCmluZGV4 IGIxZmU3MTAxYjIuLjg1YWEzMzlkOGIgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jaXRl eHQuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY2l0ZXh0LnNnbWwKQEAgLTE0LDYgKzE0LDE2 IEBAIDx0aXRsZT5jaXRleHQ8L3RpdGxlPgogICBleGFjdGx5IGxpa2UgPHR5cGU+dGV4dDwv dHlwZT4uCiAgPC9wYXJhPgogCisgPHRpcD4KKyAgPHBhcmE+CisgICBDb25zaWRlciB1c2lu ZyA8Zmlyc3R0ZXJtPm5vbmRldGVybWluaXN0aWMgY29sbGF0aW9uczwvZmlyc3R0ZXJtPiAo c2VlCisgICA8eHJlZiBsaW5rZW5kPSJjb2xsYXRpb24tbm9uZGV0ZXJtaW5pc3RpYyIvPikg aW5zdGVhZCBvZiB0aGlzIG1vZHVsZS4gIFRoZXkKKyAgIGNhbiBiZSB1c2VkIGZvciBjYXNl LWluc2Vuc2l0aXZlIGNvbXBhcmlzb25zLCBhY2NlbnQtaW5zZW5zaXRpdmUKKyAgIGNvbXBh cmlzb25zLCBhbmQgb3RoZXIgY29tYmluYXRpb25zLCBhbmQgdGhleSBoYW5kbGUgbW9yZSBV bmljb2RlIHNwZWNpYWwKKyAgIGNhc2VzIGNvcnJlY3RseS4KKyAgPC9wYXJhPgorIDwvdGlw PgorCiAgPHNlY3QyPgogICA8dGl0bGU+UmF0aW9uYWxlPC90aXRsZT4KIApAQCAtMjQ2LDYg KzI1NiwxNyBAQCA8dGl0bGU+TGltaXRhdGlvbnM8L3RpdGxlPgogICAgICAgd2lsbCBiZSBp bnZva2VkIGluc3RlYWQuCiAgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CisKKyAgICA8 bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhlIGFwcHJvYWNoIG9mIGxvd2VyLWNh c2luZyBzdHJpbmdzIGZvciBjb21wYXJpc29uIGRvZXMgbm90IGhhbmRsZSBzb21lCisgICAg ICBVbmljb2RlIHNwZWNpYWwgY2FzZXMgY29ycmVjdGx5LCBmb3IgZXhhbXBsZSB3aGVuIG9u ZSB1cHBlci1jYXNlIGxldHRlcgorICAgICAgaGFzIHR3byBsb3dlci1jYXNlIGxldHRlciBl cXVpdmFsZW50cy4gIFVuaWNvZGUgZGlzdGluZ3Vpc2hlcyBiZXR3ZWVuCisgICAgICA8Zmly c3R0ZXJtPmNhc2UgbWFwcGluZzwvZmlyc3R0ZXJtPiBhbmQgPGZpcnN0dGVybT5jYXNlCisg ICAgICBmb2xkaW5nPC9maXJzdHRlcm0+IGZvciB0aGlzIHJlYXNvbi4gIFVzZSBub25kZXRl cm1pbmlzdGljIGNvbGxhdGlvbnMKKyAgICAgIGluc3RlYWQgb2YgPHR5cGU+Y2l0ZXh0PC90 eXBlPiB0byBoYW5kbGUgdGhhdCBjb3JyZWN0bHkuCisgICAgIDwvcGFyYT4KKyAgICA8L2xp c3RpdGVtPgogICAgPC9pdGVtaXplZGxpc3Q+CiAgPC9zZWN0Mj4KIApkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbCBiL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwKaW5kZXgg ODZmZjRlNWM5ZS4uNDhmN2E0OGUwZCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2Z1bmMu c2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21sCkBAIC0zOTYyLDYgKzM5NjIsMTIg QEAgPHRpdGxlPlBhdHRlcm4gTWF0Y2hpbmc8L3RpdGxlPgogICAgIDwvcGFyYT4KICAgIDwv Y2F1dGlvbj4KIAorICAgPHBhcmE+CisgICAgVGhlIHBhdHRlcm4gbWF0Y2hpbmcgb3BlcmF0 b3JzIG9mIGFsbCB0aHJlZSBraW5kcyBkbyBub3Qgc3VwcG9ydAorICAgIG5vbmRldGVybWlu aXN0aWMgY29sbGF0aW9ucy4gIElmIHJlcXVpcmVkLCBhcHBseSBhIGRpZmZlcmVudCBjb2xs YXRpb24gdG8KKyAgICB0aGUgZXhwcmVzc2lvbiB0byB3b3JrIGFyb3VuZCB0aGlzIGxpbWl0 YXRpb24uCisgICA8L3BhcmE+CisKICAgPHNlY3QyIGlkPSJmdW5jdGlvbnMtbGlrZSI+CiAg ICA8dGl0bGU+PGZ1bmN0aW9uPkxJS0U8L2Z1bmN0aW9uPjwvdGl0bGU+CiAKZGlmZiAtLWdp dCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2NvbGxhdGlvbi5zZ21sIGIvZG9jL3NyYy9z Z21sL3JlZi9jcmVhdGVfY29sbGF0aW9uLnNnbWwKaW5kZXggMDM4Nzk3ZmNlMS4uZGVmNGRk YTZlOCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfY29sbGF0aW9uLnNn bWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfY29sbGF0aW9uLnNnbWwKQEAgLTIz LDYgKzIzLDcgQEAKICAgICBbIExDX0NPTExBVEUgPSA8cmVwbGFjZWFibGU+bGNfY29sbGF0 ZTwvcmVwbGFjZWFibGU+LCBdCiAgICAgWyBMQ19DVFlQRSA9IDxyZXBsYWNlYWJsZT5sY19j dHlwZTwvcmVwbGFjZWFibGU+LCBdCiAgICAgWyBQUk9WSURFUiA9IDxyZXBsYWNlYWJsZT5w cm92aWRlcjwvcmVwbGFjZWFibGU+LCBdCisgICAgWyBERVRFUk1JTklTVElDID0gPHJlcGxh Y2VhYmxlPmJvb2xlYW48L3JlcGxhY2VhYmxlPiwgXQogICAgIFsgVkVSU0lPTiA9IDxyZXBs YWNlYWJsZT52ZXJzaW9uPC9yZXBsYWNlYWJsZT4gXQogKQogQ1JFQVRFIENPTExBVElPTiBb IElGIE5PVCBFWElTVFMgXSA8cmVwbGFjZWFibGU+bmFtZTwvcmVwbGFjZWFibGU+IEZST00g PHJlcGxhY2VhYmxlPmV4aXN0aW5nX2NvbGxhdGlvbjwvcmVwbGFjZWFibGU+CkBAIC0xMjQs NiArMTI1LDI3IEBAIDx0aXRsZT5QYXJhbWV0ZXJzPC90aXRsZT4KICAgICAgPC9saXN0aXRl bT4KICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgIDx2YXJsaXN0ZW50cnk+CisgICAgIDx0 ZXJtPjxsaXRlcmFsPkRFVEVSTUlOSVNUSUM8L2xpdGVyYWw+PC90ZXJtPgorCisgICAgIDxs aXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIFNwZWNpZmllcyB3aGV0aGVyIHRoZSBj b2xsYXRpb24gc2hvdWxkIHVzZSBkZXRlcm1pbmlzdGljIGNvbXBhcmlzb25zLgorICAgICAg IFRoZSBkZWZhdWx0IGlzIHRydWUuICBBIGRldGVybWluaXN0aWMgY29tcGFyaXNvbiBjb25z aWRlcnMgc3RyaW5ncyB0aGF0CisgICAgICAgYXJlIG5vdCBieXRlLXdpc2UgZXF1YWwgdG8g YmUgdW5lcXVhbCBldmVuIGlmIHRoZXkgYXJlIGNvbnNpZGVyZWQKKyAgICAgICBsb2dpY2Fs bHkgZXF1YWwgYnkgdGhlIGNvbXBhcmlzb24uICBQb3N0Z3JlU1FMIGJyZWFrcyB0aWVzIHVz aW5nIGEKKyAgICAgICBieXRlLXdpc2UgY29tcGFyaXNvbi4gIENvbXBhcmlzb24gdGhhdCBp cyBub3QgZGV0ZXJtaW5pc3RpYyBjYW4gbWFrZSB0aGUKKyAgICAgICBjb2xsYXRpb24gYmUs IHNheSwgY2FzZS0gb3IgYWNjZW50LWluc2Vuc2l0aXZlLiAgRm9yIHRoYXQsIHlvdSBuZWVk IHRvCisgICAgICAgY2hvb3NlIGFuIGFwcHJvcHJpYXRlIDxsaXRlcmFsPkxDX0NPTExBVEU8 L2xpdGVyYWw+IHNldHRpbmcKKyAgICAgICA8ZW1waGFzaXM+YW5kPC9lbXBoYXNpcz4gc2V0 IHRoZSBjb2xsYXRpb24gdG8gbm90IGRldGVybWluaXN0aWMgaGVyZS4KKyAgICAgIDwvcGFy YT4KKworICAgICAgPHBhcmE+CisgICAgICAgTm9uZGV0ZXJtaW5pc3RpYyBjb2xsYXRpb25z IGFyZSBvbmx5IHN1cHBvcnRlZCB3aXRoIHRoZSBJQ1UgcHJvdmlkZXIuCisgICAgICA8L3Bh cmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICA8dmFy bGlzdGVudHJ5PgogICAgICA8dGVybT48cmVwbGFjZWFibGU+dmVyc2lvbjwvcmVwbGFjZWFi bGU+PC90ZXJtPgogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNo ZnVuYy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaGZ1bmMuYwppbmRleCA2MzAw NWRkYzRkLi5jYzExNmY1ZWNlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFz aC9oYXNoZnVuYy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hmdW5jLmMK QEAgLTI3LDcgKzI3LDkgQEAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCiAjaW5jbHVkZSAi YWNjZXNzL2hhc2guaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbGxhdGlvbi5oIgogI2lu Y2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCisjaW5jbHVkZSAidXRpbHMvcGdfbG9jYWxlLmgi CiAKIC8qCiAgKiBEYXRhdHlwZS1zcGVjaWZpYyBoYXNoIGZ1bmN0aW9ucy4KQEAgLTI0Miwx NSArMjQ0LDUxIEBAIERhdHVtCiBoYXNodGV4dChQR19GVU5DVElPTl9BUkdTKQogewogCXRl eHQJICAgKmtleSA9IFBHX0dFVEFSR19URVhUX1BQKDApOworCU9pZAkJCWNvbGxpZCA9IFBH X0dFVF9DT0xMQVRJT04oKTsKKwlwZ19sb2NhbGVfdAlteWxvY2FsZSA9IDA7CiAJRGF0dW0J CXJlc3VsdDsKIAotCS8qCi0JICogTm90ZTogdGhpcyBpcyBjdXJyZW50bHkgaWRlbnRpY2Fs IGluIGJlaGF2aW9yIHRvIGhhc2h2YXJsZW5hLCBidXQga2VlcAotCSAqIGl0IGFzIGEgc2Vw YXJhdGUgZnVuY3Rpb24gaW4gY2FzZSB3ZSBzb21lZGF5IHdhbnQgdG8gZG8gc29tZXRoaW5n Ci0JICogZGlmZmVyZW50IGluIG5vbi1DIGxvY2FsZXMuICAoU2VlIGFsc28gaGFzaGJwY2hh ciwgaWYgc28uKQotCSAqLwotCXJlc3VsdCA9IGhhc2hfYW55KCh1bnNpZ25lZCBjaGFyICop IFZBUkRBVEFfQU5ZKGtleSksCi0JCQkJCSAgVkFSU0laRV9BTllfRVhIRFIoa2V5KSk7CisJ aWYgKCFjb2xsaWQpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9J TkRFVEVSTUlOQVRFX0NPTExBVElPTiksCisJCQkJIGVycm1zZygiY291bGQgbm90IGRldGVy bWluZSB3aGljaCBjb2xsYXRpb24gdG8gdXNlIGZvciBzdHJpbmcgaGFzaGluZyIpLAorCQkJ CSBlcnJoaW50KCJVc2UgdGhlIENPTExBVEUgY2xhdXNlIHRvIHNldCB0aGUgY29sbGF0aW9u IGV4cGxpY2l0bHkuIikpKTsKKworCWlmICghbGNfY29sbGF0ZV9pc19jKGNvbGxpZCkgJiYg Y29sbGlkICE9IERFRkFVTFRfQ09MTEFUSU9OX09JRCkKKwkJbXlsb2NhbGUgPSBwZ19uZXds b2NhbGVfZnJvbV9jb2xsYXRpb24oY29sbGlkKTsKKworCWlmICghbXlsb2NhbGUgfHwgbXls b2NhbGUtPmRldGVybWluaXN0aWMpCisJeworCQlyZXN1bHQgPSBoYXNoX2FueSgodW5zaWdu ZWQgY2hhciAqKSBWQVJEQVRBX0FOWShrZXkpLAorCQkJCQkJICBWQVJTSVpFX0FOWV9FWEhE UihrZXkpKTsKKwl9CisJZWxzZQorCXsKKyNpZmRlZiBVU0VfSUNVCisJCWlmIChteWxvY2Fs ZS0+cHJvdmlkZXIgPT0gQ09MTFBST1ZJREVSX0lDVSkKKwkJeworCQkJaW50MzJfdAkJdWxl biA9IC0xOworCQkJVUNoYXIJICAgKnVjaGFyID0gTlVMTDsKKwkJCVNpemUJCWJzaXplOwor CQkJdWludDhfdAkgICAqYnVmOworCisJCQl1bGVuID0gaWN1X3RvX3VjaGFyKCZ1Y2hhciwg VkFSREFUQV9BTlkoa2V5KSwgVkFSU0laRV9BTllfRVhIRFIoa2V5KSk7CisKKwkJCWJzaXpl ID0gdWNvbF9nZXRTb3J0S2V5KG15bG9jYWxlLT5pbmZvLmljdS51Y29sLAorCQkJCQkJCQkJ dWNoYXIsIHVsZW4sIE5VTEwsIDApOworCQkJYnVmID0gcGFsbG9jKGJzaXplKTsKKwkJCXVj b2xfZ2V0U29ydEtleShteWxvY2FsZS0+aW5mby5pY3UudWNvbCwKKwkJCQkJCQl1Y2hhciwg dWxlbiwgYnVmLCBic2l6ZSk7CisKKwkJCXJlc3VsdCA9IGhhc2hfYW55KGJ1ZiwgYnNpemUp OworCisJCQlwZnJlZShidWYpOworCQl9CisJCWVsc2UKKyNlbmRpZgorCQkJLyogc2hvdWxk bid0IGhhcHBlbiAqLworCQkJZWxvZyhFUlJPUiwgInVuc3VwcG9ydGVkIGNvbGxwcm92aWRl cjogJWMiLCBteWxvY2FsZS0+cHJvdmlkZXIpOworCX0KIAogCS8qIEF2b2lkIGxlYWtpbmcg bWVtb3J5IGZvciB0b2FzdGVkIGlucHV0cyAqLwogCVBHX0ZSRUVfSUZfQ09QWShrZXksIDAp OwpAQCAtMjYyLDEyICszMDAsNTIgQEAgRGF0dW0KIGhhc2h0ZXh0ZXh0ZW5kZWQoUEdfRlVO Q1RJT05fQVJHUykKIHsKIAl0ZXh0CSAgICprZXkgPSBQR19HRVRBUkdfVEVYVF9QUCgwKTsK KwlPaWQJCQljb2xsaWQgPSBQR19HRVRfQ09MTEFUSU9OKCk7CisJcGdfbG9jYWxlX3QJbXls b2NhbGUgPSAwOwogCURhdHVtCQlyZXN1bHQ7CiAKLQkvKiBTYW1lIGFwcHJvYWNoIGFzIGhh c2h0ZXh0ICovCi0JcmVzdWx0ID0gaGFzaF9hbnlfZXh0ZW5kZWQoKHVuc2lnbmVkIGNoYXIg KikgVkFSREFUQV9BTlkoa2V5KSwKLQkJCQkJCQkgICBWQVJTSVpFX0FOWV9FWEhEUihrZXkp LAotCQkJCQkJCSAgIFBHX0dFVEFSR19JTlQ2NCgxKSk7CisJaWYgKCFjb2xsaWQpCisJCWVy ZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTkRFVEVSTUlOQVRFX0NPTExB VElPTiksCisJCQkJIGVycm1zZygiY291bGQgbm90IGRldGVybWluZSB3aGljaCBjb2xsYXRp b24gdG8gdXNlIGZvciBzdHJpbmcgaGFzaGluZyIpLAorCQkJCSBlcnJoaW50KCJVc2UgdGhl IENPTExBVEUgY2xhdXNlIHRvIHNldCB0aGUgY29sbGF0aW9uIGV4cGxpY2l0bHkuIikpKTsK KworCWlmICghbGNfY29sbGF0ZV9pc19jKGNvbGxpZCkgJiYgY29sbGlkICE9IERFRkFVTFRf Q09MTEFUSU9OX09JRCkKKwkJbXlsb2NhbGUgPSBwZ19uZXdsb2NhbGVfZnJvbV9jb2xsYXRp b24oY29sbGlkKTsKKworCWlmICghbXlsb2NhbGUgfHwgbXlsb2NhbGUtPmRldGVybWluaXN0 aWMpCisJeworCQlyZXN1bHQgPSBoYXNoX2FueV9leHRlbmRlZCgodW5zaWduZWQgY2hhciAq KSBWQVJEQVRBX0FOWShrZXkpLAorCQkJCQkJCQkgICBWQVJTSVpFX0FOWV9FWEhEUihrZXkp LAorCQkJCQkJCQkgICBQR19HRVRBUkdfSU5UNjQoMSkpOworCX0KKwllbHNlCisJeworI2lm ZGVmIFVTRV9JQ1UKKwkJaWYgKG15bG9jYWxlLT5wcm92aWRlciA9PSBDT0xMUFJPVklERVJf SUNVKQorCQl7CisJCQlpbnQzMl90CQl1bGVuID0gLTE7CisJCQlVQ2hhcgkgICAqdWNoYXIg PSBOVUxMOworCQkJU2l6ZQkJYnNpemU7CisJCQl1aW50OF90CSAgICpidWY7CisKKwkJCXVs ZW4gPSBpY3VfdG9fdWNoYXIoJnVjaGFyLCBWQVJEQVRBX0FOWShrZXkpLCBWQVJTSVpFX0FO WV9FWEhEUihrZXkpKTsKKworCQkJYnNpemUgPSB1Y29sX2dldFNvcnRLZXkobXlsb2NhbGUt PmluZm8uaWN1LnVjb2wsCisJCQkJCQkJCQl1Y2hhciwgdWxlbiwgTlVMTCwgMCk7CisJCQli dWYgPSBwYWxsb2MoYnNpemUpOworCQkJdWNvbF9nZXRTb3J0S2V5KG15bG9jYWxlLT5pbmZv LmljdS51Y29sLAorCQkJCQkJCXVjaGFyLCB1bGVuLCBidWYsIGJzaXplKTsKKworCQkJcmVz dWx0ID0gaGFzaF9hbnlfZXh0ZW5kZWQoYnVmLCBic2l6ZSwgUEdfR0VUQVJHX0lOVDY0KDEp KTsKKworCQkJcGZyZWUoYnVmKTsKKwkJfQorCQllbHNlCisjZW5kaWYKKwkJCS8qIHNob3Vs ZG4ndCBoYXBwZW4gKi8KKwkJCWVsb2coRVJST1IsICJ1bnN1cHBvcnRlZCBjb2xscHJvdmlk ZXI6ICVjIiwgbXlsb2NhbGUtPnByb3ZpZGVyKTsKKwl9CiAKIAlQR19GUkVFX0lGX0NPUFko a2V5LCAwKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd0 ZXh0cHJvYy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd0ZXh0cHJvYy5jCmlu ZGV4IDM5Y2QzOTE1MjkuLmQyMjk5OGM1NGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9zcGdpc3Qvc3BndGV4dHByb2MuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3Bn aXN0L3NwZ3RleHRwcm9jLmMKQEAgLTYzMCw3ICs2MzAsOCBAQCBzcGdfdGV4dF9sZWFmX2Nv bnNpc3RlbnQoUEdfRlVOQ1RJT05fQVJHUykKIAkJCSAqIHF1ZXJ5IChwcmVmaXgpIHN0cmlu Zywgc28gd2UgZG9uJ3QgbmVlZCB0byBjaGVjayBpdCBhZ2Fpbi4KIAkJCSAqLwogCQkJcmVz ID0gKGxldmVsID49IHF1ZXJ5TGVuKSB8fAotCQkJCURhdHVtR2V0Qm9vbChEaXJlY3RGdW5j dGlvbkNhbGwyKHRleHRfc3RhcnRzX3dpdGgsCisJCQkJRGF0dW1HZXRCb29sKERpcmVjdEZ1 bmN0aW9uQ2FsbDJDb2xsKHRleHRfc3RhcnRzX3dpdGgsCisJCQkJCQkJCQkJCQkJIFBHX0dF VF9DT0xMQVRJT04oKSwKIAkJCQkJCQkJCQkJCSBvdXQtPmxlYWZWYWx1ZSwKIAkJCQkJCQkJ CQkJCSBQb2ludGVyR2V0RGF0dW0ocXVlcnkpKSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NhdGFsb2cvcGdfY29sbGF0aW9uLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2Nv bGxhdGlvbi5jCmluZGV4IDc0ZTFlODJjYjkuLmRkOTlkNTM1NDcgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvcGdfY29sbGF0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy9wZ19jb2xsYXRpb24uYwpAQCAtNDYsNiArNDYsNyBAQCBPaWQKIENvbGxhdGlvbkNy ZWF0ZShjb25zdCBjaGFyICpjb2xsbmFtZSwgT2lkIGNvbGxuYW1lc3BhY2UsCiAJCQkJT2lk IGNvbGxvd25lciwKIAkJCQljaGFyIGNvbGxwcm92aWRlciwKKwkJCQlib29sIGNvbGxpc2Rl dGVybWluaXN0aWMsCiAJCQkJaW50MzIgY29sbGVuY29kaW5nLAogCQkJCWNvbnN0IGNoYXIg KmNvbGxjb2xsYXRlLCBjb25zdCBjaGFyICpjb2xsY3R5cGUsCiAJCQkJY29uc3QgY2hhciAq Y29sbHZlcnNpb24sCkBAIC0xNjAsNiArMTYxLDcgQEAgQ29sbGF0aW9uQ3JlYXRlKGNvbnN0 IGNoYXIgKmNvbGxuYW1lLCBPaWQgY29sbG5hbWVzcGFjZSwKIAl2YWx1ZXNbQW51bV9wZ19j b2xsYXRpb25fY29sbG5hbWVzcGFjZSAtIDFdID0gT2JqZWN0SWRHZXREYXR1bShjb2xsbmFt ZXNwYWNlKTsKIAl2YWx1ZXNbQW51bV9wZ19jb2xsYXRpb25fY29sbG93bmVyIC0gMV0gPSBP YmplY3RJZEdldERhdHVtKGNvbGxvd25lcik7CiAJdmFsdWVzW0FudW1fcGdfY29sbGF0aW9u X2NvbGxwcm92aWRlciAtIDFdID0gQ2hhckdldERhdHVtKGNvbGxwcm92aWRlcik7CisJdmFs dWVzW0FudW1fcGdfY29sbGF0aW9uX2NvbGxpc2RldGVybWluaXN0aWMgLSAxXSA9IEJvb2xH ZXREYXR1bShjb2xsaXNkZXRlcm1pbmlzdGljKTsKIAl2YWx1ZXNbQW51bV9wZ19jb2xsYXRp b25fY29sbGVuY29kaW5nIC0gMV0gPSBJbnQzMkdldERhdHVtKGNvbGxlbmNvZGluZyk7CiAJ bmFtZXN0cmNweSgmbmFtZV9jb2xsYXRlLCBjb2xsY29sbGF0ZSk7CiAJdmFsdWVzW0FudW1f cGdfY29sbGF0aW9uX2NvbGxjb2xsYXRlIC0gMV0gPSBOYW1lR2V0RGF0dW0oJm5hbWVfY29s bGF0ZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb2xsYXRpb25jbWRz LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb2xsYXRpb25jbWRzLmMKaW5kZXggZWQzZjFj MTJlNS4uOTE5ZTA5MjQ4MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29s bGF0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbGxhdGlvbmNtZHMu YwpAQCAtNTksMTAgKzU5LDEyIEBAIERlZmluZUNvbGxhdGlvbihQYXJzZVN0YXRlICpwc3Rh dGUsIExpc3QgKm5hbWVzLCBMaXN0ICpwYXJhbWV0ZXJzLCBib29sIGlmX25vdF9lCiAJRGVm RWxlbSAgICAqbGNjb2xsYXRlRWwgPSBOVUxMOwogCURlZkVsZW0gICAgKmxjY3R5cGVFbCA9 IE5VTEw7CiAJRGVmRWxlbSAgICAqcHJvdmlkZXJFbCA9IE5VTEw7CisJRGVmRWxlbSAgICAq ZGV0ZXJtaW5pc3RpY0VsID0gTlVMTDsKIAlEZWZFbGVtICAgICp2ZXJzaW9uRWwgPSBOVUxM OwogCWNoYXIJICAgKmNvbGxjb2xsYXRlID0gTlVMTDsKIAljaGFyCSAgICpjb2xsY3R5cGUg PSBOVUxMOwogCWNoYXIJICAgKmNvbGxwcm92aWRlcnN0ciA9IE5VTEw7CisJYm9vbAkJY29s bGlzZGV0ZXJtaW5pc3RpYyA9IHRydWU7CiAJaW50CQkJY29sbGVuY29kaW5nID0gMDsKIAlj aGFyCQljb2xscHJvdmlkZXIgPSAwOwogCWNoYXIJICAgKmNvbGx2ZXJzaW9uID0gTlVMTDsK QEAgLTkxLDYgKzkzLDggQEAgRGVmaW5lQ29sbGF0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwg TGlzdCAqbmFtZXMsIExpc3QgKnBhcmFtZXRlcnMsIGJvb2wgaWZfbm90X2UKIAkJCWRlZmVs cCA9ICZsY2N0eXBlRWw7CiAJCWVsc2UgaWYgKHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwgInBy b3ZpZGVyIikgPT0gMCkKIAkJCWRlZmVscCA9ICZwcm92aWRlckVsOworCQllbHNlIGlmIChz dHJjbXAoZGVmZWwtPmRlZm5hbWUsICJkZXRlcm1pbmlzdGljIikgPT0gMCkKKwkJCWRlZmVs cCA9ICZkZXRlcm1pbmlzdGljRWw7CiAJCWVsc2UgaWYgKHN0cmNtcChkZWZlbC0+ZGVmbmFt ZSwgInZlcnNpb24iKSA9PSAwKQogCQkJZGVmZWxwID0gJnZlcnNpb25FbDsKIAkJZWxzZQpA QCAtMTI1LDYgKzEyOSw3IEBAIERlZmluZUNvbGxhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUs IExpc3QgKm5hbWVzLCBMaXN0ICpwYXJhbWV0ZXJzLCBib29sIGlmX25vdF9lCiAJCWNvbGxj b2xsYXRlID0gcHN0cmR1cChOYW1lU3RyKCgoRm9ybV9wZ19jb2xsYXRpb24pIEdFVFNUUlVD VCh0cCkpLT5jb2xsY29sbGF0ZSkpOwogCQljb2xsY3R5cGUgPSBwc3RyZHVwKE5hbWVTdHIo KChGb3JtX3BnX2NvbGxhdGlvbikgR0VUU1RSVUNUKHRwKSktPmNvbGxjdHlwZSkpOwogCQlj b2xscHJvdmlkZXIgPSAoKEZvcm1fcGdfY29sbGF0aW9uKSBHRVRTVFJVQ1QodHApKS0+Y29s bHByb3ZpZGVyOworCQljb2xsaXNkZXRlcm1pbmlzdGljID0gKChGb3JtX3BnX2NvbGxhdGlv bikgR0VUU1RSVUNUKHRwKSktPmNvbGxpc2RldGVybWluaXN0aWM7CiAJCWNvbGxlbmNvZGlu ZyA9ICgoRm9ybV9wZ19jb2xsYXRpb24pIEdFVFNUUlVDVCh0cCkpLT5jb2xsZW5jb2Rpbmc7 CiAKIAkJUmVsZWFzZVN5c0NhY2hlKHRwKTsKQEAgLTE1Nyw2ICsxNjIsOSBAQCBEZWZpbmVD b2xsYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpuYW1lcywgTGlzdCAqcGFyYW1l dGVycywgYm9vbCBpZl9ub3RfZQogCWlmIChwcm92aWRlckVsKQogCQljb2xscHJvdmlkZXJz dHIgPSBkZWZHZXRTdHJpbmcocHJvdmlkZXJFbCk7CiAKKwlpZiAoZGV0ZXJtaW5pc3RpY0Vs KQorCQljb2xsaXNkZXRlcm1pbmlzdGljID0gZGVmR2V0Qm9vbGVhbihkZXRlcm1pbmlzdGlj RWwpOworCiAJaWYgKHZlcnNpb25FbCkKIAkJY29sbHZlcnNpb24gPSBkZWZHZXRTdHJpbmco dmVyc2lvbkVsKTsKIApAQCAtMTg1LDYgKzE5MywxNiBAQCBEZWZpbmVDb2xsYXRpb24oUGFy c2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpuYW1lcywgTGlzdCAqcGFyYW1ldGVycywgYm9vbCBp Zl9ub3RfZQogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElP TiksCiAJCQkJIGVycm1zZygicGFyYW1ldGVyIFwibGNfY3R5cGVcIiBtdXN0IGJlIHNwZWNp ZmllZCIpKSk7CiAKKwkvKgorCSAqIE5vbmRldGVybWluaXN0aWMgY29sbGF0aW9ucyBhcmUg Y3VycmVudGx5IG9ubHkgc3VwcG9ydGVkIHdpdGggSUNVCisJICogYmVjYXVzZSB0aGF0J3Mg dGhlIG9ubHkgY2FzZSB3aGVyZSBpdCBjYW4gYWN0dWFsbHkgbWFrZSBhIGRpZmZlcmVuY2Uu CisJICogU28gd2UgY2FuIHNhdmUgd3JpdGluZyB0aGUgY29kZSBmb3IgdGhlIG90aGVyIHBy b3ZpZGVycy4KKwkgKi8KKwlpZiAoIWNvbGxpc2RldGVybWluaXN0aWMgJiYgY29sbHByb3Zp ZGVyICE9IENPTExQUk9WSURFUl9JQ1UpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNv ZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCSBlcnJtc2coIm5vbmRl dGVybWluaXN0aWMgY29sbGF0aW9ucyBub3Qgc3VwcG9ydGVkIHdpdGggdGhpcyBwcm92aWRl ciIpKSk7CisKIAlpZiAoIWZyb21FbCkKIAl7CiAJCWlmIChjb2xscHJvdmlkZXIgPT0gQ09M TFBST1ZJREVSX0lDVSkKQEAgLTIwMyw2ICsyMjEsNyBAQCBEZWZpbmVDb2xsYXRpb24oUGFy c2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpuYW1lcywgTGlzdCAqcGFyYW1ldGVycywgYm9vbCBp Zl9ub3RfZQogCQkJCQkJCSBjb2xsTmFtZXNwYWNlLAogCQkJCQkJCSBHZXRVc2VySWQoKSwK IAkJCQkJCQkgY29sbHByb3ZpZGVyLAorCQkJCQkJCSBjb2xsaXNkZXRlcm1pbmlzdGljLAog CQkJCQkJCSBjb2xsZW5jb2RpbmcsCiAJCQkJCQkJIGNvbGxjb2xsYXRlLAogCQkJCQkJCSBj b2xsY3R5cGUsCkBAIC01ODYsNyArNjA1LDcgQEAgcGdfaW1wb3J0X3N5c3RlbV9jb2xsYXRp b25zKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkgKiBhYm91dCBleGlzdGluZyBvbmVzLgogCQkJ ICovCiAJCQljb2xsaWQgPSBDb2xsYXRpb25DcmVhdGUobG9jYWxlYnVmLCBuc3BpZCwgR2V0 VXNlcklkKCksCi0JCQkJCQkJCQkgQ09MTFBST1ZJREVSX0xJQkMsIGVuYywKKwkJCQkJCQkJ CSBDT0xMUFJPVklERVJfTElCQywgdHJ1ZSwgZW5jLAogCQkJCQkJCQkJIGxvY2FsZWJ1Ziwg bG9jYWxlYnVmLAogCQkJCQkJCQkJIGdldF9jb2xsYXRpb25fYWN0dWFsX3ZlcnNpb24oQ09M TFBST1ZJREVSX0xJQkMsIGxvY2FsZWJ1ZiksCiAJCQkJCQkJCQkgdHJ1ZSwgdHJ1ZSk7CkBA IC02NDcsNyArNjY2LDcgQEAgcGdfaW1wb3J0X3N5c3RlbV9jb2xsYXRpb25zKFBHX0ZVTkNU SU9OX0FSR1MpCiAJCQlpbnQJCQllbmMgPSBhbGlhc2VzW2ldLmVuYzsKIAogCQkJY29sbGlk ID0gQ29sbGF0aW9uQ3JlYXRlKGFsaWFzLCBuc3BpZCwgR2V0VXNlcklkKCksCi0JCQkJCQkJ CQkgQ09MTFBST1ZJREVSX0xJQkMsIGVuYywKKwkJCQkJCQkJCSBDT0xMUFJPVklERVJfTElC QywgdHJ1ZSwgZW5jLAogCQkJCQkJCQkJIGxvY2FsZSwgbG9jYWxlLAogCQkJCQkJCQkJIGdl dF9jb2xsYXRpb25fYWN0dWFsX3ZlcnNpb24oQ09MTFBST1ZJREVSX0xJQkMsIGxvY2FsZSks CiAJCQkJCQkJCQkgdHJ1ZSwgdHJ1ZSk7CkBAIC03MDksNyArNzI4LDcgQEAgcGdfaW1wb3J0 X3N5c3RlbV9jb2xsYXRpb25zKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAkJCWNvbGxpZCA9IENv bGxhdGlvbkNyZWF0ZShwc3ByaW50ZigiJXMteC1pY3UiLCBsYW5ndGFnKSwKIAkJCQkJCQkJ CSBuc3BpZCwgR2V0VXNlcklkKCksCi0JCQkJCQkJCQkgQ09MTFBST1ZJREVSX0lDVSwgLTEs CisJCQkJCQkJCQkgQ09MTFBST1ZJREVSX0lDVSwgdHJ1ZSwgLTEsCiAJCQkJCQkJCQkgY29s bGNvbGxhdGUsIGNvbGxjb2xsYXRlLAogCQkJCQkJCQkJIGdldF9jb2xsYXRpb25fYWN0dWFs X3ZlcnNpb24oQ09MTFBST1ZJREVSX0lDVSwgY29sbGNvbGxhdGUpLAogCQkJCQkJCQkJIHRy dWUsIHRydWUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9u LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYwppbmRleCBkYWYzZjUxNjM2 Li5kNDcyM2ZjZWQ4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNp b24uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYwpAQCAtOTAxLDcg KzkwMSw4IEBAIGV4ZWN1dGVfZXh0ZW5zaW9uX3NjcmlwdChPaWQgZXh0ZW5zaW9uT2lkLCBF eHRlbnNpb25Db250cm9sRmlsZSAqY29udHJvbCwKIAkJewogCQkJY29uc3QgY2hhciAqcVNj aGVtYU5hbWUgPSBxdW90ZV9pZGVudGlmaWVyKHNjaGVtYU5hbWUpOwogCi0JCQl0X3NxbCA9 IERpcmVjdEZ1bmN0aW9uQ2FsbDMocmVwbGFjZV90ZXh0LAorCQkJdF9zcWwgPSBEaXJlY3RG dW5jdGlvbkNhbGwzQ29sbChyZXBsYWNlX3RleHQsCisJCQkJCQkJCQkJCUNfQ09MTEFUSU9O X09JRCwKIAkJCQkJCQkJCQl0X3NxbCwKIAkJCQkJCQkJCQlDU3RyaW5nR2V0VGV4dERhdHVt KCJAZXh0c2NoZW1hQCIpLAogCQkJCQkJCQkJCUNTdHJpbmdHZXRUZXh0RGF0dW0ocVNjaGVt YU5hbWUpKTsKQEAgLTkxMyw3ICs5MTQsOCBAQCBleGVjdXRlX2V4dGVuc2lvbl9zY3JpcHQo T2lkIGV4dGVuc2lvbk9pZCwgRXh0ZW5zaW9uQ29udHJvbEZpbGUgKmNvbnRyb2wsCiAJCSAq LwogCQlpZiAoY29udHJvbC0+bW9kdWxlX3BhdGhuYW1lKQogCQl7Ci0JCQl0X3NxbCA9IERp cmVjdEZ1bmN0aW9uQ2FsbDMocmVwbGFjZV90ZXh0LAorCQkJdF9zcWwgPSBEaXJlY3RGdW5j dGlvbkNhbGwzQ29sbChyZXBsYWNlX3RleHQsCisJCQkJCQkJCQkJCUNfQ09MTEFUSU9OX09J RCwKIAkJCQkJCQkJCQl0X3NxbCwKIAkJCQkJCQkJCQlDU3RyaW5nR2V0VGV4dERhdHVtKCJN T0RVTEVfUEFUSE5BTUUiKSwKIAkJCQkJCQkJCQlDU3RyaW5nR2V0VGV4dERhdHVtKGNvbnRy b2wtPm1vZHVsZV9wYXRobmFtZSkpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY0V4cHIuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMKaW5kZXgg ZGIzNzc3ZDE1ZS4uYmMzZTA1Y2QxYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY0V4cHIuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jCkBA IC0zMzI3LDYgKzMzMjcsNyBAQCBFeGVjQnVpbGRHcm91cGluZ0VxdWFsKFR1cGxlRGVzYyBs ZGVzYywgVHVwbGVEZXNjIHJkZXNjLAogCQkJCQkgICBpbnQgbnVtQ29scywKIAkJCQkJICAg Y29uc3QgQXR0ck51bWJlciAqa2V5Q29sSWR4LAogCQkJCQkgICBjb25zdCBPaWQgKmVxZnVu Y3Rpb25zLAorCQkJCQkgICBjb25zdCBPaWQgKmNvbGxhdGlvbnMsCiAJCQkJCSAgIFBsYW5T dGF0ZSAqcGFyZW50KQogewogCUV4cHJTdGF0ZSAgKnN0YXRlID0gbWFrZU5vZGUoRXhwclN0 YXRlKTsKQEAgLTMzODcsNiArMzM4OCw3IEBAIEV4ZWNCdWlsZEdyb3VwaW5nRXF1YWwoVHVw bGVEZXNjIGxkZXNjLCBUdXBsZURlc2MgcmRlc2MsCiAJCUZvcm1fcGdfYXR0cmlidXRlIGxh dHQgPSBUdXBsZURlc2NBdHRyKGxkZXNjLCBhdHRubyAtIDEpOwogCQlGb3JtX3BnX2F0dHJp YnV0ZSByYXR0ID0gVHVwbGVEZXNjQXR0cihyZGVzYywgYXR0bm8gLSAxKTsKIAkJT2lkCQkJ Zm9pZCA9IGVxZnVuY3Rpb25zW25hdHRdOworCQlPaWQJCQljb2xsaWQgPSBjb2xsYXRpb25z W25hdHRdOwogCQlGbWdySW5mbyAgICpmaW5mbzsKIAkJRnVuY3Rpb25DYWxsSW5mbyBmY2lu Zm87CiAJCUFjbFJlc3VsdAlhY2xyZXN1bHQ7CkBAIC0zNDA0LDcgKzM0MDYsNyBAQCBFeGVj QnVpbGRHcm91cGluZ0VxdWFsKFR1cGxlRGVzYyBsZGVzYywgVHVwbGVEZXNjIHJkZXNjLAog CQlmbWdyX2luZm8oZm9pZCwgZmluZm8pOwogCQlmbWdyX2luZm9fc2V0X2V4cHIoTlVMTCwg ZmluZm8pOwogCQlJbml0RnVuY3Rpb25DYWxsSW5mb0RhdGEoKmZjaW5mbywgZmluZm8sIDIs Ci0JCQkJCQkJCSBJbnZhbGlkT2lkLCBOVUxMLCBOVUxMKTsKKwkJCQkJCQkJIGNvbGxpZCwg TlVMTCwgTlVMTCk7CiAKIAkJLyogbGVmdCBhcmcgKi8KIAkJc2NyYXRjaC5vcGNvZGUgPSBF RU9QX0lOTkVSX1ZBUjsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNH cm91cGluZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0dyb3VwaW5nLmMKaW5kZXgg YTlkODBlNjkyYi4uODcwYTczMGE2NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY0dyb3VwaW5nLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0dyb3Vw aW5nLmMKQEAgLTYxLDYgKzYxLDcgQEAgZXhlY1R1cGxlc01hdGNoUHJlcGFyZShUdXBsZURl c2MgZGVzYywKIAkJCQkJICAgaW50IG51bUNvbHMsCiAJCQkJCSAgIGNvbnN0IEF0dHJOdW1i ZXIgKmtleUNvbElkeCwKIAkJCQkJICAgY29uc3QgT2lkICplcU9wZXJhdG9ycywKKwkJCQkJ ICAgY29uc3QgT2lkICpjb2xsYXRpb25zLAogCQkJCQkgICBQbGFuU3RhdGUgKnBhcmVudCkK IHsKIAlPaWQJCSAgICplcUZ1bmN0aW9ucyA9IChPaWQgKikgcGFsbG9jKG51bUNvbHMgKiBz aXplb2YoT2lkKSk7CkBAIC03Niw3ICs3Nyw3IEBAIGV4ZWNUdXBsZXNNYXRjaFByZXBhcmUo VHVwbGVEZXNjIGRlc2MsCiAKIAkvKiBidWlsZCBhY3R1YWwgZXhwcmVzc2lvbiAqLwogCWV4 cHIgPSBFeGVjQnVpbGRHcm91cGluZ0VxdWFsKGRlc2MsIGRlc2MsIE5VTEwsIE5VTEwsCi0J CQkJCQkJCSAgbnVtQ29scywga2V5Q29sSWR4LCBlcUZ1bmN0aW9ucywKKwkJCQkJCQkJICBu dW1Db2xzLCBrZXlDb2xJZHgsIGVxRnVuY3Rpb25zLCBjb2xsYXRpb25zLAogCQkJCQkJCQkg IHBhcmVudCk7CiAKIAlyZXR1cm4gZXhwcjsKQEAgLTE1Niw2ICsxNTcsNyBAQCBCdWlsZFR1 cGxlSGFzaFRhYmxlRXh0KFBsYW5TdGF0ZSAqcGFyZW50LAogCQkJCQkgICBpbnQgbnVtQ29s cywgQXR0ck51bWJlciAqa2V5Q29sSWR4LAogCQkJCQkgICBjb25zdCBPaWQgKmVxZnVuY29p ZHMsCiAJCQkJCSAgIEZtZ3JJbmZvICpoYXNoZnVuY3Rpb25zLAorCQkJCQkgICBPaWQgKmNv bGxhdGlvbnMsCiAJCQkJCSAgIGxvbmcgbmJ1Y2tldHMsIFNpemUgYWRkaXRpb25hbHNpemUs CiAJCQkJCSAgIE1lbW9yeUNvbnRleHQgbWV0YWN4dCwKIAkJCQkJICAgTWVtb3J5Q29udGV4 dCB0YWJsZWN4dCwKQEAgLTE3OCw2ICsxODAsNyBAQCBCdWlsZFR1cGxlSGFzaFRhYmxlRXh0 KFBsYW5TdGF0ZSAqcGFyZW50LAogCWhhc2h0YWJsZS0+bnVtQ29scyA9IG51bUNvbHM7CiAJ aGFzaHRhYmxlLT5rZXlDb2xJZHggPSBrZXlDb2xJZHg7CiAJaGFzaHRhYmxlLT50YWJfaGFz aF9mdW5jcyA9IGhhc2hmdW5jdGlvbnM7CisJaGFzaHRhYmxlLT50YWJfY29sbGF0aW9ucyA9 IGNvbGxhdGlvbnM7CiAJaGFzaHRhYmxlLT50YWJsZWN4dCA9IHRhYmxlY3h0OwogCWhhc2h0 YWJsZS0+dGVtcGN4dCA9IHRlbXBjeHQ7CiAJaGFzaHRhYmxlLT5lbnRyeXNpemUgPSBlbnRy eXNpemU7CkBAIC0yMTMsNyArMjE2LDcgQEAgQnVpbGRUdXBsZUhhc2hUYWJsZUV4dChQbGFu U3RhdGUgKnBhcmVudCwKIAloYXNodGFibGUtPnRhYl9lcV9mdW5jID0gRXhlY0J1aWxkR3Jv dXBpbmdFcXVhbChpbnB1dERlc2MsIGlucHV0RGVzYywKIAkJCQkJCQkJCQkJCQkmVFRTT3Bz TWluaW1hbFR1cGxlLCAmVFRTT3BzTWluaW1hbFR1cGxlLAogCQkJCQkJCQkJCQkJCW51bUNv bHMsCi0JCQkJCQkJCQkJCQkJa2V5Q29sSWR4LCBlcWZ1bmNvaWRzLAorCQkJCQkJCQkJCQkJ CWtleUNvbElkeCwgZXFmdW5jb2lkcywgY29sbGF0aW9ucywKIAkJCQkJCQkJCQkJCQlOVUxM KTsKIAogCS8qCkBAIC0yNDEsNiArMjQ0LDcgQEAgQnVpbGRUdXBsZUhhc2hUYWJsZShQbGFu U3RhdGUgKnBhcmVudCwKIAkJCQkJaW50IG51bUNvbHMsIEF0dHJOdW1iZXIgKmtleUNvbElk eCwKIAkJCQkJY29uc3QgT2lkICplcWZ1bmNvaWRzLAogCQkJCQlGbWdySW5mbyAqaGFzaGZ1 bmN0aW9ucywKKwkJCQkJT2lkICpjb2xsYXRpb25zLAogCQkJCQlsb25nIG5idWNrZXRzLCBT aXplIGFkZGl0aW9uYWxzaXplLAogCQkJCQlNZW1vcnlDb250ZXh0IHRhYmxlY3h0LAogCQkJ CQlNZW1vcnlDb250ZXh0IHRlbXBjeHQsCkBAIC0yNTEsNiArMjU1LDcgQEAgQnVpbGRUdXBs ZUhhc2hUYWJsZShQbGFuU3RhdGUgKnBhcmVudCwKIAkJCQkJCQkJICBudW1Db2xzLCBrZXlD b2xJZHgsCiAJCQkJCQkJCSAgZXFmdW5jb2lkcywKIAkJCQkJCQkJICBoYXNoZnVuY3Rpb25z LAorCQkJCQkJCQkgIGNvbGxhdGlvbnMsCiAJCQkJCQkJCSAgbmJ1Y2tldHMsIGFkZGl0aW9u YWxzaXplLAogCQkJCQkJCQkgIHRhYmxlY3h0LAogCQkJCQkJCQkgIHRhYmxlY3h0LApAQCAt NDIyLDggKzQyNyw5IEBAIFR1cGxlSGFzaFRhYmxlSGFzaChzdHJ1Y3QgdHVwbGVoYXNoX2hh c2ggKnRiLCBjb25zdCBNaW5pbWFsVHVwbGUgdHVwbGUpCiAJCXsKIAkJCXVpbnQzMgkJaGtl eTsKIAotCQkJaGtleSA9IERhdHVtR2V0VUludDMyKEZ1bmN0aW9uQ2FsbDEoJmhhc2hmdW5j dGlvbnNbaV0sCi0JCQkJCQkJCQkJCQlhdHRyKSk7CisJCQloa2V5ID0gRGF0dW1HZXRVSW50 MzIoRnVuY3Rpb25DYWxsMUNvbGwoJmhhc2hmdW5jdGlvbnNbaV0sCisJCQkJCQkJCQkJCQkJ aGFzaHRhYmxlLT50YWJfY29sbGF0aW9uc1tpXSwKKwkJCQkJCQkJCQkJCQlhdHRyKSk7CiAJ CQloYXNoa2V5IF49IGhrZXk7CiAJCX0KIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjUGFydGl0aW9uLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFy dGl0aW9uLmMKaW5kZXggMmE3YmMwMTU2My4uMDM0MTI1MGYxZCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwpAQCAtMTIxOCw2ICsxMjE4LDcgQEAgZ2V0X3BhcnRp dGlvbl9mb3JfdHVwbGUoUGFydGl0aW9uRGlzcGF0Y2ggcGQsIERhdHVtICp2YWx1ZXMsIGJv b2wgKmlzbnVsbCkKIAkJCQlncmVhdGVzdF9tb2R1bHVzID0gZ2V0X2hhc2hfcGFydGl0aW9u X2dyZWF0ZXN0X21vZHVsdXMoYm91bmRpbmZvKTsKIAkJCQlyb3dIYXNoID0gY29tcHV0ZV9w YXJ0aXRpb25faGFzaF92YWx1ZShrZXktPnBhcnRuYXR0cywKIAkJCQkJCQkJCQkJCQkgICBr ZXktPnBhcnRzdXBmdW5jLAorCQkJCQkJCQkJCQkJCSAgIGtleS0+cGFydGNvbGxhdGlvbiwK IAkJCQkJCQkJCQkJCQkgICB2YWx1ZXMsIGlzbnVsbCk7CiAKIAkJCQlwYXJ0X2luZGV4ID0g Ym91bmRpbmZvLT5pbmRleGVzW3Jvd0hhc2ggJSBncmVhdGVzdF9tb2R1bHVzXTsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMKaW5kZXggNTg5NTczYjg3OS4uZDlk NWE3Yjc4YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0 aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMKQEAg LTk1LDYgKzk1LDggQEAgYnVpbGRfcmVwbGluZGV4X3NjYW5fa2V5KFNjYW5LZXkgc2tleSwg UmVsYXRpb24gcmVsLCBSZWxhdGlvbiBpZHhyZWwsCiAJCQkJCXJlZ29wLAogCQkJCQlzZWFy Y2hzbG90LT50dHNfdmFsdWVzW21haW5hdHRubyAtIDFdKTsKIAorCQlza2V5W2F0dG9mZl0u c2tfY29sbGF0aW9uID0gaWR4cmVsLT5yZF9pbmRjb2xsYXRpb25bYXR0b2ZmXTsKKwogCQkv KiBDaGVjayBmb3IgbnVsbCB2YWx1ZS4gKi8KIAkJaWYgKHNlYXJjaHNsb3QtPnR0c19pc251 bGxbbWFpbmF0dG5vIC0gMV0pCiAJCXsKQEAgLTI2MSw3ICsyNjMsOCBAQCB0dXBsZV9lcXVh bHNfc2xvdChUdXBsZURlc2MgZGVzYywgSGVhcFR1cGxlIHR1cCwgVHVwbGVUYWJsZVNsb3Qg KnNsb3QpCiAJCQkJCSBlcnJtc2coImNvdWxkIG5vdCBpZGVudGlmeSBhbiBlcXVhbGl0eSBv cGVyYXRvciBmb3IgdHlwZSAlcyIsCiAJCQkJCQkJZm9ybWF0X3R5cGVfYmUoYXR0LT5hdHR0 eXBpZCkpKSk7CiAKLQkJaWYgKCFEYXR1bUdldEJvb2woRnVuY3Rpb25DYWxsMigmdHlwZW50 cnktPmVxX29wcl9maW5mbywKKwkJaWYgKCFEYXR1bUdldEJvb2woRnVuY3Rpb25DYWxsMkNv bGwoJnR5cGVudHJ5LT5lcV9vcHJfZmluZm8sCisJCQkJCQkJCQkJCWF0dC0+YXR0Y29sbGF0 aW9uLAogCQkJCQkJCQkJCXZhbHVlc1thdHRybnVtXSwKIAkJCQkJCQkJCQlzbG90LT50dHNf dmFsdWVzW2F0dHJudW1dKSkpCiAJCQlyZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlQWdnLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl QWdnLmMKaW5kZXggYmFlNzk4OWE0Mi4uNDcxNjFhZmJkNCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVBZ2cuYwpAQCAtNzQ2LDE1ICs3NDYsMTQgQEAgcHJvY2Vzc19vcmRlcmVkX2FnZ3JlZ2F0 ZV9zaW5nbGUoQWdnU3RhdGUgKmFnZ3N0YXRlLAogCiAJCS8qCiAJCSAqIElmIERJU1RJTkNU IG1vZGUsIGFuZCBub3QgZGlzdGluY3QgZnJvbSBwcmlvciwgc2tpcCBpdC4KLQkJICoKLQkJ ICogTm90ZTogd2UgYXNzdW1lIGVxdWFsaXR5IGZ1bmN0aW9ucyBkb24ndCBjYXJlIGFib3V0 IGNvbGxhdGlvbi4KIAkJICovCiAJCWlmIChpc0Rpc3RpbmN0ICYmCiAJCQloYXZlT2xkVmFs ICYmCiAJCQkoKG9sZElzTnVsbCAmJiAqaXNOdWxsKSB8fAogCQkJICghb2xkSXNOdWxsICYm ICEqaXNOdWxsICYmCiAJCQkgIG9sZEFiYnJldlZhbCA9PSBuZXdBYmJyZXZWYWwgJiYKLQkJ CSAgRGF0dW1HZXRCb29sKEZ1bmN0aW9uQ2FsbDIoJnBlcnRyYW5zLT5lcXVhbGZuT25lLAor CQkJICBEYXR1bUdldEJvb2woRnVuY3Rpb25DYWxsMkNvbGwoJnBlcnRyYW5zLT5lcXVhbGZu T25lLAorCQkJCQkJCQkJCQkgcGVydHJhbnMtPmFnZ0NvbGxhdGlvbiwKIAkJCQkJCQkJCQkg b2xkVmFsLCAqbmV3VmFsKSkpKSkKIAkJewogCQkJLyogZXF1YWwgdG8gcHJpb3IsIHNvIGZv cmdldCB0aGlzIG9uZSAqLwpAQCAtMTI4Nyw2ICsxMjg2LDcgQEAgYnVpbGRfaGFzaF90YWJs ZShBZ2dTdGF0ZSAqYWdnc3RhdGUpCiAJCQkJCQkJCQkJCQkJCXBlcmhhc2gtPmhhc2hHcnBD b2xJZHhIYXNoLAogCQkJCQkJCQkJCQkJCQlwZXJoYXNoLT5lcWZ1bmNvaWRzLAogCQkJCQkJ CQkJCQkJCQlwZXJoYXNoLT5oYXNoZnVuY3Rpb25zLAorCQkJCQkJCQkJCQkJCQlwZXJoYXNo LT5hZ2dub2RlLT5ncnBDb2xsYXRpb25zLAogCQkJCQkJCQkJCQkJCQlwZXJoYXNoLT5hZ2du b2RlLT5udW1Hcm91cHMsCiAJCQkJCQkJCQkJCQkJCWFkZGl0aW9uYWxzaXplLAogCQkJCQkJ CQkJCQkJCQlhZ2dzdGF0ZS0+c3MucHMuc3RhdGUtPmVzX3F1ZXJ5X2N4dCwKQEAgLTIzODEs NiArMjM4MSw3IEBAIEV4ZWNJbml0QWdnKEFnZyAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGlu dCBlZmxhZ3MpCiAJCQkJCQkJCQkJCSAgIGxlbmd0aCwKIAkJCQkJCQkJCQkJICAgYWdnbm9k ZS0+Z3JwQ29sSWR4LAogCQkJCQkJCQkJCQkgICBhZ2dub2RlLT5ncnBPcGVyYXRvcnMsCisJ CQkJCQkJCQkJCSAgIGFnZ25vZGUtPmdycENvbGxhdGlvbnMsCiAJCQkJCQkJCQkJCSAgIChQ bGFuU3RhdGUgKikgYWdnc3RhdGUpOwogCQkJCX0KIApAQCAtMjM5Miw2ICsyMzkzLDcgQEAg RXhlY0luaXRBZ2coQWdnICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJ CQkJCQkJCQkJICAgYWdnbm9kZS0+bnVtQ29scywKIAkJCQkJCQkJCQkJICAgYWdnbm9kZS0+ Z3JwQ29sSWR4LAogCQkJCQkJCQkJCQkgICBhZ2dub2RlLT5ncnBPcGVyYXRvcnMsCisJCQkJ CQkJCQkJCSAgIGFnZ25vZGUtPmdycENvbGxhdGlvbnMsCiAJCQkJCQkJCQkJCSAgIChQbGFu U3RhdGUgKikgYWdnc3RhdGUpOwogCQkJCX0KIAkJCX0KQEAgLTMxNTUsNiArMzE1Nyw3IEBA IGJ1aWxkX3BlcnRyYW5zX2Zvcl9hZ2dyZWYoQWdnU3RhdGVQZXJUcmFucyBwZXJ0cmFucywK IAkJCQkJCQkJCSAgIG51bURpc3RpbmN0Q29scywKIAkJCQkJCQkJCSAgIHBlcnRyYW5zLT5z b3J0Q29sSWR4LAogCQkJCQkJCQkJICAgb3BzLAorCQkJCQkJCQkJICAgcGVydHJhbnMtPnNv cnRDb2xsYXRpb25zLAogCQkJCQkJCQkJICAgJmFnZ3N0YXRlLT5zcy5wcyk7CiAJCXBmcmVl KG9wcyk7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdyb3Vw LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR3JvdXAuYwppbmRleCA2NTUwODRkN2I1 Li4wNWYxZDMzMTUwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR3Jv dXAuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR3JvdXAuYwpAQCAtMjEyLDYg KzIxMiw3IEBAIEV4ZWNJbml0R3JvdXAoR3JvdXAgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBp bnQgZWZsYWdzKQogCQkJCQkJCSAgIG5vZGUtPm51bUNvbHMsCiAJCQkJCQkJICAgbm9kZS0+ Z3JwQ29sSWR4LAogCQkJCQkJCSAgIG5vZGUtPmdycE9wZXJhdG9ycywKKwkJCQkJCQkgICBu b2RlLT5ncnBDb2xsYXRpb25zLAogCQkJCQkJCSAgICZncnBzdGF0ZS0+c3MucHMpOwogCiAJ cmV0dXJuIGdycHN0YXRlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUhhc2guYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoLmMKaW5kZXggODU2ZGFm NmE3Zi4uNjRlZWM5MWY4YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUhhc2guYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaC5jCkBAIC00MjUs NyArNDI1LDcgQEAgRXhlY0VuZEhhc2goSGFzaFN0YXRlICpub2RlKQogICogLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQogICovCiBIYXNoSm9pblRhYmxlCi1FeGVjSGFzaFRhYmxlQ3JlYXRlKEhhc2hTdGF0ZSAq c3RhdGUsIExpc3QgKmhhc2hPcGVyYXRvcnMsIGJvb2wga2VlcE51bGxzKQorRXhlY0hhc2hU YWJsZUNyZWF0ZShIYXNoU3RhdGUgKnN0YXRlLCBMaXN0ICpoYXNoT3BlcmF0b3JzLCBMaXN0 ICpoYXNoQ29sbGF0aW9ucywgYm9vbCBrZWVwTnVsbHMpCiB7CiAJSGFzaAkgICAqbm9kZTsK IAlIYXNoSm9pblRhYmxlIGhhc2h0YWJsZTsKQEAgLTQzOSw2ICs0MzksNyBAQCBFeGVjSGFz aFRhYmxlQ3JlYXRlKEhhc2hTdGF0ZSAqc3RhdGUsIExpc3QgKmhhc2hPcGVyYXRvcnMsIGJv b2wga2VlcE51bGxzKQogCWludAkJCW5rZXlzOwogCWludAkJCWk7CiAJTGlzdENlbGwgICAq aG87CisJTGlzdENlbGwgICAqaGM7CiAJTWVtb3J5Q29udGV4dCBvbGRjeHQ7CiAKIAkvKgpA QCAtNTQxLDggKzU0Miw5IEBAIEV4ZWNIYXNoVGFibGVDcmVhdGUoSGFzaFN0YXRlICpzdGF0 ZSwgTGlzdCAqaGFzaE9wZXJhdG9ycywgYm9vbCBrZWVwTnVsbHMpCiAJaGFzaHRhYmxlLT5p bm5lcl9oYXNoZnVuY3Rpb25zID0KIAkJKEZtZ3JJbmZvICopIHBhbGxvYyhua2V5cyAqIHNp emVvZihGbWdySW5mbykpOwogCWhhc2h0YWJsZS0+aGFzaFN0cmljdCA9IChib29sICopIHBh bGxvYyhua2V5cyAqIHNpemVvZihib29sKSk7CisJaGFzaHRhYmxlLT5jb2xsYXRpb25zID0g KE9pZCAqKSBwYWxsb2MobmtleXMgKiBzaXplb2YoT2lkKSk7CiAJaSA9IDA7Ci0JZm9yZWFj aChobywgaGFzaE9wZXJhdG9ycykKKwlmb3Jib3RoKGhvLCBoYXNoT3BlcmF0b3JzLCBoYywg aGFzaENvbGxhdGlvbnMpCiAJewogCQlPaWQJCQloYXNob3AgPSBsZmlyc3Rfb2lkKGhvKTsK IAkJT2lkCQkJbGVmdF9oYXNoZm47CkBAIC01NTQsNiArNTU2LDcgQEAgRXhlY0hhc2hUYWJs ZUNyZWF0ZShIYXNoU3RhdGUgKnN0YXRlLCBMaXN0ICpoYXNoT3BlcmF0b3JzLCBib29sIGtl ZXBOdWxscykKIAkJZm1ncl9pbmZvKGxlZnRfaGFzaGZuLCAmaGFzaHRhYmxlLT5vdXRlcl9o YXNoZnVuY3Rpb25zW2ldKTsKIAkJZm1ncl9pbmZvKHJpZ2h0X2hhc2hmbiwgJmhhc2h0YWJs ZS0+aW5uZXJfaGFzaGZ1bmN0aW9uc1tpXSk7CiAJCWhhc2h0YWJsZS0+aGFzaFN0cmljdFtp XSA9IG9wX3N0cmljdChoYXNob3ApOworCQloYXNodGFibGUtPmNvbGxhdGlvbnNbaV0gPSBs Zmlyc3Rfb2lkKGhjKTsKIAkJaSsrOwogCX0KIApAQCAtMTg0Nyw3ICsxODUwLDcgQEAgRXhl Y0hhc2hHZXRIYXNoVmFsdWUoSGFzaEpvaW5UYWJsZSBoYXNodGFibGUsCiAJCQkvKiBDb21w dXRlIHRoZSBoYXNoIGZ1bmN0aW9uICovCiAJCQl1aW50MzIJCWhrZXk7CiAKLQkJCWhrZXkg PSBEYXR1bUdldFVJbnQzMihGdW5jdGlvbkNhbGwxKCZoYXNoZnVuY3Rpb25zW2ldLCBrZXl2 YWwpKTsKKwkJCWhrZXkgPSBEYXR1bUdldFVJbnQzMihGdW5jdGlvbkNhbGwxQ29sbCgmaGFz aGZ1bmN0aW9uc1tpXSwgaGFzaHRhYmxlLT5jb2xsYXRpb25zW2ldLCBrZXl2YWwpKTsKIAkJ CWhhc2hrZXkgXj0gaGtleTsKIAkJfQogCkBAIC0yMzAzLDggKzIzMDYsOSBAQCBFeGVjSGFz aEJ1aWxkU2tld0hhc2goSGFzaEpvaW5UYWJsZSBoYXNodGFibGUsIEhhc2ggKm5vZGUsIGlu dCBtY3ZzVG9Vc2UpCiAJCQl1aW50MzIJCWhhc2h2YWx1ZTsKIAkJCWludAkJCWJ1Y2tldDsK IAotCQkJaGFzaHZhbHVlID0gRGF0dW1HZXRVSW50MzIoRnVuY3Rpb25DYWxsMSgmaGFzaGZ1 bmN0aW9uc1swXSwKLQkJCQkJCQkJCQkJCQkgc3Nsb3QudmFsdWVzW2ldKSk7CisJCQloYXNo dmFsdWUgPSBEYXR1bUdldFVJbnQzMihGdW5jdGlvbkNhbGwxQ29sbCgmaGFzaGZ1bmN0aW9u c1swXSwKKwkJCQkJCQkJCQkJCQkJIGhhc2h0YWJsZS0+Y29sbGF0aW9uc1swXSwKKwkJCQkJ CQkJCQkJCQkJIHNzbG90LnZhbHVlc1tpXSkpOwogCiAJCQkvKgogCQkJICogV2hpbGUgd2Ug aGF2ZSBub3QgaGl0IGEgaG9sZSBpbiB0aGUgaGFzaHRhYmxlIGFuZCBoYXZlIG5vdCBoaXQK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoam9pbi5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMKaW5kZXggMjA5ODcwODg2NC4uYWE0 MzI5NmUyNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2lu LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMKQEAgLTI3OCw2 ICsyNzgsNyBAQCBFeGVjSGFzaEpvaW5JbXBsKFBsYW5TdGF0ZSAqcHN0YXRlLCBib29sIHBh cmFsbGVsKQogCQkJCSAqLwogCQkJCWhhc2h0YWJsZSA9IEV4ZWNIYXNoVGFibGVDcmVhdGUo aGFzaE5vZGUsCiAJCQkJCQkJCQkJCQlub2RlLT5oal9IYXNoT3BlcmF0b3JzLAorCQkJCQkJ CQkJCQkJbm9kZS0+aGpfQ29sbGF0aW9ucywKIAkJCQkJCQkJCQkJCUhKX0ZJTExfSU5ORVIo bm9kZSkpOwogCQkJCW5vZGUtPmhqX0hhc2hUYWJsZSA9IGhhc2h0YWJsZTsKIApAQCAtNjAz LDYgKzYwNCw3IEBAIEV4ZWNJbml0SGFzaEpvaW4oSGFzaEpvaW4gKm5vZGUsIEVTdGF0ZSAq ZXN0YXRlLCBpbnQgZWZsYWdzKQogCUxpc3QJICAgKnJjbGF1c2VzOwogCUxpc3QJICAgKnJo Y2xhdXNlczsKIAlMaXN0CSAgICpob3BlcmF0b3JzOworCUxpc3QJICAgKmhjb2xsYXRpb25z OwogCVR1cGxlRGVzYwlvdXRlckRlc2MsCiAJCQkJaW5uZXJEZXNjOwogCUxpc3RDZWxsICAg Kmw7CkBAIC03MzgsNiArNzQwLDcgQEAgRXhlY0luaXRIYXNoSm9pbihIYXNoSm9pbiAqbm9k ZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJcmNsYXVzZXMgPSBOSUw7CiAJcmhj bGF1c2VzID0gTklMOwogCWhvcGVyYXRvcnMgPSBOSUw7CisJaGNvbGxhdGlvbnMgPSBOSUw7 CiAJZm9yZWFjaChsLCBub2RlLT5oYXNoY2xhdXNlcykKIAl7CiAJCU9wRXhwcgkgICAqaGNs YXVzZSA9IGxmaXJzdF9ub2RlKE9wRXhwciwgbCk7CkBAIC03NDksMTAgKzc1MiwxMiBAQCBF eGVjSW5pdEhhc2hKb2luKEhhc2hKb2luICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVm bGFncykKIAkJcmhjbGF1c2VzID0gbGFwcGVuZChyaGNsYXVzZXMsIEV4ZWNJbml0RXhwcihs c2Vjb25kKGhjbGF1c2UtPmFyZ3MpLAogCQkJCQkJCQkJCQkJICAgaW5uZXJQbGFuU3RhdGUo aGpzdGF0ZSkpKTsKIAkJaG9wZXJhdG9ycyA9IGxhcHBlbmRfb2lkKGhvcGVyYXRvcnMsIGhj bGF1c2UtPm9wbm8pOworCQloY29sbGF0aW9ucyA9IGxhcHBlbmRfb2lkKGhjb2xsYXRpb25z LCBoY2xhdXNlLT5pbnB1dGNvbGxpZCk7CiAJfQogCWhqc3RhdGUtPmhqX091dGVySGFzaEtl eXMgPSBsY2xhdXNlczsKIAloanN0YXRlLT5oal9Jbm5lckhhc2hLZXlzID0gcmNsYXVzZXM7 CiAJaGpzdGF0ZS0+aGpfSGFzaE9wZXJhdG9ycyA9IGhvcGVyYXRvcnM7CisJaGpzdGF0ZS0+ aGpfQ29sbGF0aW9ucyA9IGhjb2xsYXRpb25zOwogCS8qIGNoaWxkIEhhc2ggbm9kZSBuZWVk cyB0byBldmFsdWF0ZSBpbm5lciBoYXNoIGtleXMsIHRvbyAqLwogCSgoSGFzaFN0YXRlICop IGlubmVyUGxhblN0YXRlKGhqc3RhdGUpKS0+aGFzaGtleXMgPSByaGNsYXVzZXM7CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZWN1cnNpdmV1bmlvbi5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9uLmMKaW5kZXggOWI3NGVk MzIwOC4uOWM1ZWVkN2RlZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZVJlY3Vyc2l2ZXVuaW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlY3Vy c2l2ZXVuaW9uLmMKQEAgLTQzLDYgKzQzLDcgQEAgYnVpbGRfaGFzaF90YWJsZShSZWN1cnNp dmVVbmlvblN0YXRlICpydXN0YXRlKQogCQkJCQkJCQkJCQkJbm9kZS0+ZHVwQ29sSWR4LAog CQkJCQkJCQkJCQkJcnVzdGF0ZS0+ZXFmdW5jb2lkcywKIAkJCQkJCQkJCQkJCXJ1c3RhdGUt Pmhhc2hmdW5jdGlvbnMsCisJCQkJCQkJCQkJCQlub2RlLT5kdXBDb2xsYXRpb25zLAogCQkJ CQkJCQkJCQkJbm9kZS0+bnVtR3JvdXBzLAogCQkJCQkJCQkJCQkJMCwKIAkJCQkJCQkJCQkJ CXJ1c3RhdGUtPnBzLnN0YXRlLT5lc19xdWVyeV9jeHQsCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlU2V0T3AuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVT ZXRPcC5jCmluZGV4IDI2YWVhZWUwODMuLjA0NDI0NmFhMDkgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVTZXRPcC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVTZXRPcC5jCkBAIC0xMzIsNiArMTMyLDcgQEAgYnVpbGRfaGFzaF90YWJsZShTZXRP cFN0YXRlICpzZXRvcHN0YXRlKQogCQkJCQkJCQkJCQkJICAgbm9kZS0+ZHVwQ29sSWR4LAog CQkJCQkJCQkJCQkJICAgc2V0b3BzdGF0ZS0+ZXFmdW5jb2lkcywKIAkJCQkJCQkJCQkJCSAg IHNldG9wc3RhdGUtPmhhc2hmdW5jdGlvbnMsCisJCQkJCQkJCQkJCQkgICBub2RlLT5kdXBD b2xsYXRpb25zLAogCQkJCQkJCQkJCQkJICAgbm9kZS0+bnVtR3JvdXBzLAogCQkJCQkJCQkJ CQkJICAgMCwKIAkJCQkJCQkJCQkJCSAgIHNldG9wc3RhdGUtPnBzLnN0YXRlLT5lc19xdWVy eV9jeHQsCkBAIC01NTQsNiArNTU1LDcgQEAgRXhlY0luaXRTZXRPcChTZXRPcCAqbm9kZSwg RVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCQkJCQkJCSAgIG5vZGUtPm51bUNvbHMs CiAJCQkJCQkJCSAgIG5vZGUtPmR1cENvbElkeCwKIAkJCQkJCQkJICAgbm9kZS0+ZHVwT3Bl cmF0b3JzLAorCQkJCQkJCQkgICBub2RlLT5kdXBDb2xsYXRpb25zLAogCQkJCQkJCQkgICAm c2V0b3BzdGF0ZS0+cHMpOwogCiAJaWYgKG5vZGUtPnN0cmF0ZWd5ID09IFNFVE9QX0hBU0hF RCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJwbGFuLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlU3VicGxhbi5jCmluZGV4IGQ3ZDA3Njc1OGMuLjc0 OWI0ZWNlZDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJwbGFu LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVN1YnBsYW4uYwpAQCAtNTE0LDYg KzUxNCw3IEBAIGJ1aWxkU3ViUGxhbkhhc2goU3ViUGxhblN0YXRlICpub2RlLCBFeHByQ29u dGV4dCAqZWNvbnRleHQpCiAJCQkJCQkJCQkJCQkgbm9kZS0+a2V5Q29sSWR4LAogCQkJCQkJ CQkJCQkJIG5vZGUtPnRhYl9lcV9mdW5jb2lkcywKIAkJCQkJCQkJCQkJCSBub2RlLT50YWJf aGFzaF9mdW5jcywKKwkJCQkJCQkJCQkJCSBub2RlLT50YWJfY29sbGF0aW9ucywKIAkJCQkJ CQkJCQkJCSBuYnVja2V0cywKIAkJCQkJCQkJCQkJCSAwLAogCQkJCQkJCQkJCQkJIG5vZGUt PnBsYW5zdGF0ZS0+c3RhdGUtPmVzX3F1ZXJ5X2N4dCwKQEAgLTU0MSw2ICs1NDIsNyBAQCBi dWlsZFN1YlBsYW5IYXNoKFN1YlBsYW5TdGF0ZSAqbm9kZSwgRXhwckNvbnRleHQgKmVjb250 ZXh0KQogCQkJCQkJCQkJCQkJCSBub2RlLT5rZXlDb2xJZHgsCiAJCQkJCQkJCQkJCQkJIG5v ZGUtPnRhYl9lcV9mdW5jb2lkcywKIAkJCQkJCQkJCQkJCQkgbm9kZS0+dGFiX2hhc2hfZnVu Y3MsCisJCQkJCQkJCQkJCQkJIG5vZGUtPnRhYl9jb2xsYXRpb25zLAogCQkJCQkJCQkJCQkJ CSBuYnVja2V0cywKIAkJCQkJCQkJCQkJCQkgMCwKIAkJCQkJCQkJCQkJCQkgbm9kZS0+cGxh bnN0YXRlLT5zdGF0ZS0+ZXNfcXVlcnlfY3h0LApAQCAtNjQyLDYgKzY0NCw3IEBAIGV4ZWNU dXBsZXNVbmVxdWFsKFR1cGxlVGFibGVTbG90ICpzbG90MSwKIAkJCQkgIGludCBudW1Db2xz LAogCQkJCSAgQXR0ck51bWJlciAqbWF0Y2hDb2xJZHgsCiAJCQkJICBGbWdySW5mbyAqZXFm dW5jdGlvbnMsCisJCQkJICBjb25zdCBPaWQgKmNvbGxhdGlvbnMsCiAJCQkJICBNZW1vcnlD b250ZXh0IGV2YWxDb250ZXh0KQogewogCU1lbW9yeUNvbnRleHQgb2xkQ29udGV4dDsKQEAg LTY3OSw4ICs2ODIsOCBAQCBleGVjVHVwbGVzVW5lcXVhbChUdXBsZVRhYmxlU2xvdCAqc2xv dDEsCiAJCQljb250aW51ZTsJCQkvKiBjYW4ndCBwcm92ZSBhbnl0aGluZyBoZXJlICovCiAK IAkJLyogQXBwbHkgdGhlIHR5cGUtc3BlY2lmaWMgZXF1YWxpdHkgZnVuY3Rpb24gKi8KLQot CQlpZiAoIURhdHVtR2V0Qm9vbChGdW5jdGlvbkNhbGwyKCZlcWZ1bmN0aW9uc1tpXSwKKwkJ aWYgKCFEYXR1bUdldEJvb2woRnVuY3Rpb25DYWxsMkNvbGwoJmVxZnVuY3Rpb25zW2ldLAor CQkJCQkJCQkJCQljb2xsYXRpb25zW2ldLAogCQkJCQkJCQkJCWF0dHIxLCBhdHRyMikpKQog CQl7CiAJCQlyZXN1bHQgPSB0cnVlOwkJLyogdGhleSBhcmUgdW5lcXVhbCAqLwpAQCAtNzIy LDYgKzcyNSw3IEBAIGZpbmRQYXJ0aWFsTWF0Y2goVHVwbGVIYXNoVGFibGUgaGFzaHRhYmxl LCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIAkJaWYgKCFleGVjVHVwbGVzVW5lcXVhbChzbG90 LCBoYXNodGFibGUtPnRhYmxlc2xvdCwKIAkJCQkJCQkgICBudW1Db2xzLCBrZXlDb2xJZHgs CiAJCQkJCQkJICAgZXFmdW5jdGlvbnMsCisJCQkJCQkJICAgaGFzaHRhYmxlLT50YWJfY29s bGF0aW9ucywKIAkJCQkJCQkgICBoYXNodGFibGUtPnRlbXBjeHQpKQogCQl7CiAJCQlUZXJt VHVwbGVIYXNoSXRlcmF0b3IoJmhhc2hpdGVyKTsKQEAgLTgxNyw2ICs4MjEsNyBAQCBFeGVj SW5pdFN1YlBsYW4oU3ViUGxhbiAqc3VicGxhbiwgUGxhblN0YXRlICpwYXJlbnQpCiAJc3N0 YXRlLT50YWJfZXFfZnVuY29pZHMgPSBOVUxMOwogCXNzdGF0ZS0+dGFiX2hhc2hfZnVuY3Mg PSBOVUxMOwogCXNzdGF0ZS0+dGFiX2VxX2Z1bmNzID0gTlVMTDsKKwlzc3RhdGUtPnRhYl9j b2xsYXRpb25zID0gTlVMTDsKIAlzc3RhdGUtPmxoc19oYXNoX2Z1bmNzID0gTlVMTDsKIAlz c3RhdGUtPmN1cl9lcV9mdW5jcyA9IE5VTEw7CiAKQEAgLTkxNSw2ICs5MjAsNyBAQCBFeGVj SW5pdFN1YlBsYW4oU3ViUGxhbiAqc3VicGxhbiwgUGxhblN0YXRlICpwYXJlbnQpCiAJCXNz dGF0ZS0+dGFiX2VxX2Z1bmNvaWRzID0gKE9pZCAqKSBwYWxsb2MobmNvbHMgKiBzaXplb2Yo T2lkKSk7CiAJCXNzdGF0ZS0+dGFiX2hhc2hfZnVuY3MgPSAoRm1nckluZm8gKikgcGFsbG9j KG5jb2xzICogc2l6ZW9mKEZtZ3JJbmZvKSk7CiAJCXNzdGF0ZS0+dGFiX2VxX2Z1bmNzID0g KEZtZ3JJbmZvICopIHBhbGxvYyhuY29scyAqIHNpemVvZihGbWdySW5mbykpOworCQlzc3Rh dGUtPnRhYl9jb2xsYXRpb25zID0gKE9pZCAqKSBwYWxsb2MobmNvbHMgKiBzaXplb2YoT2lk KSk7CiAJCXNzdGF0ZS0+bGhzX2hhc2hfZnVuY3MgPSAoRm1nckluZm8gKikgcGFsbG9jKG5j b2xzICogc2l6ZW9mKEZtZ3JJbmZvKSk7CiAJCXNzdGF0ZS0+Y3VyX2VxX2Z1bmNzID0gKEZt Z3JJbmZvICopIHBhbGxvYyhuY29scyAqIHNpemVvZihGbWdySW5mbykpOwogCQlpID0gMTsK QEAgLTk2NSw2ICs5NzEsOSBAQCBFeGVjSW5pdFN1YlBsYW4oU3ViUGxhbiAqc3VicGxhbiwg UGxhblN0YXRlICpwYXJlbnQpCiAJCQlmbWdyX2luZm8obGVmdF9oYXNoZm4sICZzc3RhdGUt Pmxoc19oYXNoX2Z1bmNzW2kgLSAxXSk7CiAJCQlmbWdyX2luZm8ocmlnaHRfaGFzaGZuLCAm c3N0YXRlLT50YWJfaGFzaF9mdW5jc1tpIC0gMV0pOwogCisJCQkvKiBTZXQgY29sbGF0aW9u ICovCisJCQlzc3RhdGUtPnRhYl9jb2xsYXRpb25zW2kgLSAxXSA9IG9wZXhwci0+aW5wdXRj b2xsaWQ7CisKIAkJCWkrKzsKIAkJfQogCkBAIC0xMDAxLDYgKzEwMTAsNyBAQCBFeGVjSW5p dFN1YlBsYW4oU3ViUGxhbiAqc3VicGxhbiwgUGxhblN0YXRlICpwYXJlbnQpCiAJCQkJCQkJ CQkJCQkJIG5jb2xzLAogCQkJCQkJCQkJCQkJCSBzc3RhdGUtPmtleUNvbElkeCwKIAkJCQkJ CQkJCQkJCQkgc3N0YXRlLT50YWJfZXFfZnVuY29pZHMsCisJCQkJCQkJCQkJCQkJIHNzdGF0 ZS0+dGFiX2NvbGxhdGlvbnMsCiAJCQkJCQkJCQkJCQkJIHBhcmVudCk7CiAKIAl9CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVW5pcXVlLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlVW5pcXVlLmMKaW5kZXggYWQ3MDM5OTM3ZC4uYzU1M2YxNTBiOCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVVuaXF1ZS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVVbmlxdWUuYwpAQCAtMTUyLDYgKzE1Miw3IEBAIEV4 ZWNJbml0VW5pcXVlKFVuaXF1ZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3Mp CiAJCQkJCQkJICAgbm9kZS0+bnVtQ29scywKIAkJCQkJCQkgICBub2RlLT51bmlxQ29sSWR4 LAogCQkJCQkJCSAgIG5vZGUtPnVuaXFPcGVyYXRvcnMsCisJCQkJCQkJICAgbm9kZS0+dW5p cUNvbGxhdGlvbnMsCiAJCQkJCQkJICAgJnVuaXF1ZXN0YXRlLT5wcyk7CiAKIAlyZXR1cm4g dW5pcXVlc3RhdGU7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2lu ZG93QWdnLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMKaW5kZXgg MTU3YWMwNDJiOC4uYjA5MDgyOGMwMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVdpbmRvd0FnZy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5k b3dBZ2cuYwpAQCAtMjM3MCw2ICsyMzcwLDcgQEAgRXhlY0luaXRXaW5kb3dBZ2coV2luZG93 QWdnICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJCQkJCQkJICAgbm9k ZS0+cGFydE51bUNvbHMsCiAJCQkJCQkJCSAgIG5vZGUtPnBhcnRDb2xJZHgsCiAJCQkJCQkJ CSAgIG5vZGUtPnBhcnRPcGVyYXRvcnMsCisJCQkJCQkJCSAgIG5vZGUtPnBhcnRDb2xsYXRp b25zLAogCQkJCQkJCQkgICAmd2luc3RhdGUtPnNzLnBzKTsKIAogCWlmIChub2RlLT5vcmRO dW1Db2xzID4gMCkKQEAgLTIzNzgsNiArMjM3OSw3IEBAIEV4ZWNJbml0V2luZG93QWdnKFdp bmRvd0FnZyAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCQkJCQkJCSAg IG5vZGUtPm9yZE51bUNvbHMsCiAJCQkJCQkJCSAgIG5vZGUtPm9yZENvbElkeCwKIAkJCQkJ CQkJICAgbm9kZS0+b3JkT3BlcmF0b3JzLAorCQkJCQkJCQkgICBub2RlLT5vcmRDb2xsYXRp b25zLAogCQkJCQkJCQkgICAmd2luc3RhdGUtPnNzLnBzKTsKIAogCS8qCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL2Nv cHlmdW5jcy5jCmluZGV4IGUxNTcyNGJiMGUuLmVlNjJjZmM0ZGEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL2Nv cHlmdW5jcy5jCkBAIC0yOTcsNiArMjk3LDcgQEAgX2NvcHlSZWN1cnNpdmVVbmlvbihjb25z dCBSZWN1cnNpdmVVbmlvbiAqZnJvbSkKIAl7CiAJCUNPUFlfUE9JTlRFUl9GSUVMRChkdXBD b2xJZHgsIGZyb20tPm51bUNvbHMgKiBzaXplb2YoQXR0ck51bWJlcikpOwogCQlDT1BZX1BP SU5URVJfRklFTEQoZHVwT3BlcmF0b3JzLCBmcm9tLT5udW1Db2xzICogc2l6ZW9mKE9pZCkp OworCQlDT1BZX1BPSU5URVJfRklFTEQoZHVwQ29sbGF0aW9ucywgZnJvbS0+bnVtQ29scyAq IHNpemVvZihPaWQpKTsKIAl9CiAJQ09QWV9TQ0FMQVJfRklFTEQobnVtR3JvdXBzKTsKIApA QCAtOTU2LDYgKzk1Nyw3IEBAIF9jb3B5R3JvdXAoY29uc3QgR3JvdXAgKmZyb20pCiAJQ09Q WV9TQ0FMQVJfRklFTEQobnVtQ29scyk7CiAJQ09QWV9QT0lOVEVSX0ZJRUxEKGdycENvbElk eCwgZnJvbS0+bnVtQ29scyAqIHNpemVvZihBdHRyTnVtYmVyKSk7CiAJQ09QWV9QT0lOVEVS X0ZJRUxEKGdycE9wZXJhdG9ycywgZnJvbS0+bnVtQ29scyAqIHNpemVvZihPaWQpKTsKKwlD T1BZX1BPSU5URVJfRklFTEQoZ3JwQ29sbGF0aW9ucywgZnJvbS0+bnVtQ29scyAqIHNpemVv ZihPaWQpKTsKIAogCXJldHVybiBuZXdub2RlOwogfQpAQCAtOTc3LDYgKzk3OSw3IEBAIF9j b3B5QWdnKGNvbnN0IEFnZyAqZnJvbSkKIAl7CiAJCUNPUFlfUE9JTlRFUl9GSUVMRChncnBD b2xJZHgsIGZyb20tPm51bUNvbHMgKiBzaXplb2YoQXR0ck51bWJlcikpOwogCQlDT1BZX1BP SU5URVJfRklFTEQoZ3JwT3BlcmF0b3JzLCBmcm9tLT5udW1Db2xzICogc2l6ZW9mKE9pZCkp OworCQlDT1BZX1BPSU5URVJfRklFTEQoZ3JwQ29sbGF0aW9ucywgZnJvbS0+bnVtQ29scyAq IHNpemVvZihPaWQpKTsKIAl9CiAJQ09QWV9TQ0FMQVJfRklFTEQobnVtR3JvdXBzKTsKIAlD T1BZX0JJVE1BUFNFVF9GSUVMRChhZ2dQYXJhbXMpOwpAQCAtMTAwMiwxMiArMTAwNSwxNCBA QCBfY29weVdpbmRvd0FnZyhjb25zdCBXaW5kb3dBZ2cgKmZyb20pCiAJewogCQlDT1BZX1BP SU5URVJfRklFTEQocGFydENvbElkeCwgZnJvbS0+cGFydE51bUNvbHMgKiBzaXplb2YoQXR0 ck51bWJlcikpOwogCQlDT1BZX1BPSU5URVJfRklFTEQocGFydE9wZXJhdG9ycywgZnJvbS0+ cGFydE51bUNvbHMgKiBzaXplb2YoT2lkKSk7CisJCUNPUFlfUE9JTlRFUl9GSUVMRChwYXJ0 Q29sbGF0aW9ucywgZnJvbS0+cGFydE51bUNvbHMgKiBzaXplb2YoT2lkKSk7CiAJfQogCUNP UFlfU0NBTEFSX0ZJRUxEKG9yZE51bUNvbHMpOwogCWlmIChmcm9tLT5vcmROdW1Db2xzID4g MCkKIAl7CiAJCUNPUFlfUE9JTlRFUl9GSUVMRChvcmRDb2xJZHgsIGZyb20tPm9yZE51bUNv bHMgKiBzaXplb2YoQXR0ck51bWJlcikpOwogCQlDT1BZX1BPSU5URVJfRklFTEQob3JkT3Bl cmF0b3JzLCBmcm9tLT5vcmROdW1Db2xzICogc2l6ZW9mKE9pZCkpOworCQlDT1BZX1BPSU5U RVJfRklFTEQob3JkQ29sbGF0aW9ucywgZnJvbS0+b3JkTnVtQ29scyAqIHNpemVvZihPaWQp KTsKIAl9CiAJQ09QWV9TQ0FMQVJfRklFTEQoZnJhbWVPcHRpb25zKTsKIAlDT1BZX05PREVf RklFTEQoc3RhcnRPZmZzZXQpOwpAQCAtMTA0MCw2ICsxMDQ1LDcgQEAgX2NvcHlVbmlxdWUo Y29uc3QgVW5pcXVlICpmcm9tKQogCUNPUFlfU0NBTEFSX0ZJRUxEKG51bUNvbHMpOwogCUNP UFlfUE9JTlRFUl9GSUVMRCh1bmlxQ29sSWR4LCBmcm9tLT5udW1Db2xzICogc2l6ZW9mKEF0 dHJOdW1iZXIpKTsKIAlDT1BZX1BPSU5URVJfRklFTEQodW5pcU9wZXJhdG9ycywgZnJvbS0+ bnVtQ29scyAqIHNpemVvZihPaWQpKTsKKwlDT1BZX1BPSU5URVJfRklFTEQodW5pcUNvbGxh dGlvbnMsIGZyb20tPm51bUNvbHMgKiBzaXplb2YoT2lkKSk7CiAKIAlyZXR1cm4gbmV3bm9k ZTsKIH0KQEAgLTEwODksNiArMTA5NSw3IEBAIF9jb3B5U2V0T3AoY29uc3QgU2V0T3AgKmZy b20pCiAJQ09QWV9TQ0FMQVJfRklFTEQobnVtQ29scyk7CiAJQ09QWV9QT0lOVEVSX0ZJRUxE KGR1cENvbElkeCwgZnJvbS0+bnVtQ29scyAqIHNpemVvZihBdHRyTnVtYmVyKSk7CiAJQ09Q WV9QT0lOVEVSX0ZJRUxEKGR1cE9wZXJhdG9ycywgZnJvbS0+bnVtQ29scyAqIHNpemVvZihP aWQpKTsKKwlDT1BZX1BPSU5URVJfRklFTEQoZHVwQ29sbGF0aW9ucywgZnJvbS0+bnVtQ29s cyAqIHNpemVvZihPaWQpKTsKIAlDT1BZX1NDQUxBUl9GSUVMRChmbGFnQ29sSWR4KTsKIAlD T1BZX1NDQUxBUl9GSUVMRChmaXJzdEZsYWcpOwogCUNPUFlfU0NBTEFSX0ZJRUxEKG51bUdy b3Vwcyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jIGIvc3Jj L2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYwppbmRleCA2NTMwMmZlNjViLi42NGNlNjE1Yjkw IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCisrKyBiL3NyYy9i YWNrZW5kL25vZGVzL291dGZ1bmNzLmMKQEAgLTQ2Myw2ICs0NjMsNyBAQCBfb3V0UmVjdXJz aXZlVW5pb24oU3RyaW5nSW5mbyBzdHIsIGNvbnN0IFJlY3Vyc2l2ZVVuaW9uICpub2RlKQog CVdSSVRFX0lOVF9GSUVMRChudW1Db2xzKTsKIAlXUklURV9BVFRSTlVNQkVSX0FSUkFZKGR1 cENvbElkeCwgbm9kZS0+bnVtQ29scyk7CiAJV1JJVEVfT0lEX0FSUkFZKGR1cE9wZXJhdG9y cywgbm9kZS0+bnVtQ29scyk7CisJV1JJVEVfT0lEX0FSUkFZKGR1cENvbGxhdGlvbnMsIG5v ZGUtPm51bUNvbHMpOwogCVdSSVRFX0xPTkdfRklFTEQobnVtR3JvdXBzKTsKIH0KIApAQCAt Nzc0LDYgKzc3NSw3IEBAIF9vdXRBZ2coU3RyaW5nSW5mbyBzdHIsIGNvbnN0IEFnZyAqbm9k ZSkKIAlXUklURV9JTlRfRklFTEQobnVtQ29scyk7CiAJV1JJVEVfQVRUUk5VTUJFUl9BUlJB WShncnBDb2xJZHgsIG5vZGUtPm51bUNvbHMpOwogCVdSSVRFX09JRF9BUlJBWShncnBPcGVy YXRvcnMsIG5vZGUtPm51bUNvbHMpOworCVdSSVRFX09JRF9BUlJBWShncnBDb2xsYXRpb25z LCBub2RlLT5udW1Db2xzKTsKIAlXUklURV9MT05HX0ZJRUxEKG51bUdyb3Vwcyk7CiAJV1JJ VEVfQklUTUFQU0VUX0ZJRUxEKGFnZ1BhcmFtcyk7CiAJV1JJVEVfTk9ERV9GSUVMRChncm91 cGluZ1NldHMpOwpAQCAtNzkxLDkgKzc5MywxMSBAQCBfb3V0V2luZG93QWdnKFN0cmluZ0lu Zm8gc3RyLCBjb25zdCBXaW5kb3dBZ2cgKm5vZGUpCiAJV1JJVEVfSU5UX0ZJRUxEKHBhcnRO dW1Db2xzKTsKIAlXUklURV9BVFRSTlVNQkVSX0FSUkFZKHBhcnRDb2xJZHgsIG5vZGUtPnBh cnROdW1Db2xzKTsKIAlXUklURV9PSURfQVJSQVkocGFydE9wZXJhdG9ycywgbm9kZS0+cGFy dE51bUNvbHMpOworCVdSSVRFX09JRF9BUlJBWShwYXJ0Q29sbGF0aW9ucywgbm9kZS0+cGFy dE51bUNvbHMpOwogCVdSSVRFX0lOVF9GSUVMRChvcmROdW1Db2xzKTsKIAlXUklURV9BVFRS TlVNQkVSX0FSUkFZKG9yZENvbElkeCwgbm9kZS0+b3JkTnVtQ29scyk7CiAJV1JJVEVfT0lE X0FSUkFZKG9yZE9wZXJhdG9ycywgbm9kZS0+b3JkTnVtQ29scyk7CisJV1JJVEVfT0lEX0FS UkFZKG9yZENvbGxhdGlvbnMsIG5vZGUtPm9yZE51bUNvbHMpOwogCVdSSVRFX0lOVF9GSUVM RChmcmFtZU9wdGlvbnMpOwogCVdSSVRFX05PREVfRklFTEQoc3RhcnRPZmZzZXQpOwogCVdS SVRFX05PREVfRklFTEQoZW5kT2Zmc2V0KTsKQEAgLTgxNCw2ICs4MTgsNyBAQCBfb3V0R3Jv dXAoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IEdyb3VwICpub2RlKQogCVdSSVRFX0lOVF9GSUVM RChudW1Db2xzKTsKIAlXUklURV9BVFRSTlVNQkVSX0FSUkFZKGdycENvbElkeCwgbm9kZS0+ bnVtQ29scyk7CiAJV1JJVEVfT0lEX0FSUkFZKGdycE9wZXJhdG9ycywgbm9kZS0+bnVtQ29s cyk7CisJV1JJVEVfT0lEX0FSUkFZKGdycENvbGxhdGlvbnMsIG5vZGUtPm51bUNvbHMpOwog fQogCiBzdGF0aWMgdm9pZApAQCAtODQ4LDYgKzg1Myw3IEBAIF9vdXRVbmlxdWUoU3RyaW5n SW5mbyBzdHIsIGNvbnN0IFVuaXF1ZSAqbm9kZSkKIAlXUklURV9JTlRfRklFTEQobnVtQ29s cyk7CiAJV1JJVEVfQVRUUk5VTUJFUl9BUlJBWSh1bmlxQ29sSWR4LCBub2RlLT5udW1Db2xz KTsKIAlXUklURV9PSURfQVJSQVkodW5pcU9wZXJhdG9ycywgbm9kZS0+bnVtQ29scyk7CisJ V1JJVEVfT0lEX0FSUkFZKHVuaXFDb2xsYXRpb25zLCBub2RlLT5udW1Db2xzKTsKIH0KIAog c3RhdGljIHZvaWQKQEAgLTg3NSw2ICs4ODEsNyBAQCBfb3V0U2V0T3AoU3RyaW5nSW5mbyBz dHIsIGNvbnN0IFNldE9wICpub2RlKQogCVdSSVRFX0lOVF9GSUVMRChudW1Db2xzKTsKIAlX UklURV9BVFRSTlVNQkVSX0FSUkFZKGR1cENvbElkeCwgbm9kZS0+bnVtQ29scyk7CiAJV1JJ VEVfT0lEX0FSUkFZKGR1cE9wZXJhdG9ycywgbm9kZS0+bnVtQ29scyk7CisJV1JJVEVfT0lE X0FSUkFZKGR1cENvbGxhdGlvbnMsIG5vZGUtPm51bUNvbHMpOwogCVdSSVRFX0lOVF9GSUVM RChmbGFnQ29sSWR4KTsKIAlXUklURV9JTlRfRklFTEQoZmlyc3RGbGFnKTsKIAlXUklURV9M T05HX0ZJRUxEKG51bUdyb3Vwcyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9y ZWFkZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jCmluZGV4IDVhYTQy MjQyYTkuLmRmMzJlNDg2MmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL3JlYWRm dW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jCkBAIC0xNjc2LDYg KzE2NzYsNyBAQCBfcmVhZFJlY3Vyc2l2ZVVuaW9uKHZvaWQpCiAJUkVBRF9JTlRfRklFTEQo bnVtQ29scyk7CiAJUkVBRF9BVFRSTlVNQkVSX0FSUkFZKGR1cENvbElkeCwgbG9jYWxfbm9k ZS0+bnVtQ29scyk7CiAJUkVBRF9PSURfQVJSQVkoZHVwT3BlcmF0b3JzLCBsb2NhbF9ub2Rl LT5udW1Db2xzKTsKKwlSRUFEX09JRF9BUlJBWShkdXBDb2xsYXRpb25zLCBsb2NhbF9ub2Rl LT5udW1Db2xzKTsKIAlSRUFEX0xPTkdfRklFTEQobnVtR3JvdXBzKTsKIAogCVJFQURfRE9O RSgpOwpAQCAtMjE0Miw2ICsyMTQzLDcgQEAgX3JlYWRHcm91cCh2b2lkKQogCVJFQURfSU5U X0ZJRUxEKG51bUNvbHMpOwogCVJFQURfQVRUUk5VTUJFUl9BUlJBWShncnBDb2xJZHgsIGxv Y2FsX25vZGUtPm51bUNvbHMpOwogCVJFQURfT0lEX0FSUkFZKGdycE9wZXJhdG9ycywgbG9j YWxfbm9kZS0+bnVtQ29scyk7CisJUkVBRF9PSURfQVJSQVkoZ3JwQ29sbGF0aW9ucywgbG9j YWxfbm9kZS0+bnVtQ29scyk7CiAKIAlSRUFEX0RPTkUoKTsKIH0KQEAgLTIxNjEsNiArMjE2 Myw3IEBAIF9yZWFkQWdnKHZvaWQpCiAJUkVBRF9JTlRfRklFTEQobnVtQ29scyk7CiAJUkVB RF9BVFRSTlVNQkVSX0FSUkFZKGdycENvbElkeCwgbG9jYWxfbm9kZS0+bnVtQ29scyk7CiAJ UkVBRF9PSURfQVJSQVkoZ3JwT3BlcmF0b3JzLCBsb2NhbF9ub2RlLT5udW1Db2xzKTsKKwlS RUFEX09JRF9BUlJBWShncnBDb2xsYXRpb25zLCBsb2NhbF9ub2RlLT5udW1Db2xzKTsKIAlS RUFEX0xPTkdfRklFTEQobnVtR3JvdXBzKTsKIAlSRUFEX0JJVE1BUFNFVF9GSUVMRChhZ2dQ YXJhbXMpOwogCVJFQURfTk9ERV9GSUVMRChncm91cGluZ1NldHMpOwpAQCAtMjE4Myw5ICsy MTg2LDExIEBAIF9yZWFkV2luZG93QWdnKHZvaWQpCiAJUkVBRF9JTlRfRklFTEQocGFydE51 bUNvbHMpOwogCVJFQURfQVRUUk5VTUJFUl9BUlJBWShwYXJ0Q29sSWR4LCBsb2NhbF9ub2Rl LT5wYXJ0TnVtQ29scyk7CiAJUkVBRF9PSURfQVJSQVkocGFydE9wZXJhdG9ycywgbG9jYWxf bm9kZS0+cGFydE51bUNvbHMpOworCVJFQURfT0lEX0FSUkFZKHBhcnRDb2xsYXRpb25zLCBs b2NhbF9ub2RlLT5wYXJ0TnVtQ29scyk7CiAJUkVBRF9JTlRfRklFTEQob3JkTnVtQ29scyk7 CiAJUkVBRF9BVFRSTlVNQkVSX0FSUkFZKG9yZENvbElkeCwgbG9jYWxfbm9kZS0+b3JkTnVt Q29scyk7CiAJUkVBRF9PSURfQVJSQVkob3JkT3BlcmF0b3JzLCBsb2NhbF9ub2RlLT5vcmRO dW1Db2xzKTsKKwlSRUFEX09JRF9BUlJBWShvcmRDb2xsYXRpb25zLCBsb2NhbF9ub2RlLT5v cmROdW1Db2xzKTsKIAlSRUFEX0lOVF9GSUVMRChmcmFtZU9wdGlvbnMpOwogCVJFQURfTk9E RV9GSUVMRChzdGFydE9mZnNldCk7CiAJUkVBRF9OT0RFX0ZJRUxEKGVuZE9mZnNldCk7CkBA IC0yMjExLDYgKzIyMTYsNyBAQCBfcmVhZFVuaXF1ZSh2b2lkKQogCVJFQURfSU5UX0ZJRUxE KG51bUNvbHMpOwogCVJFQURfQVRUUk5VTUJFUl9BUlJBWSh1bmlxQ29sSWR4LCBsb2NhbF9u b2RlLT5udW1Db2xzKTsKIAlSRUFEX09JRF9BUlJBWSh1bmlxT3BlcmF0b3JzLCBsb2NhbF9u b2RlLT5udW1Db2xzKTsKKwlSRUFEX09JRF9BUlJBWSh1bmlxQ29sbGF0aW9ucywgbG9jYWxf bm9kZS0+bnVtQ29scyk7CiAKIAlSRUFEX0RPTkUoKTsKIH0KQEAgLTIyODksNiArMjI5NSw3 IEBAIF9yZWFkU2V0T3Aodm9pZCkKIAlSRUFEX0lOVF9GSUVMRChudW1Db2xzKTsKIAlSRUFE X0FUVFJOVU1CRVJfQVJSQVkoZHVwQ29sSWR4LCBsb2NhbF9ub2RlLT5udW1Db2xzKTsKIAlS RUFEX09JRF9BUlJBWShkdXBPcGVyYXRvcnMsIGxvY2FsX25vZGUtPm51bUNvbHMpOworCVJF QURfT0lEX0FSUkFZKGR1cENvbGxhdGlvbnMsIGxvY2FsX25vZGUtPm51bUNvbHMpOwogCVJF QURfSU5UX0ZJRUxEKGZsYWdDb2xJZHgpOwogCVJFQURfSU5UX0ZJRUxEKGZpcnN0RmxhZyk7 CiAJUkVBRF9MT05HX0ZJRUxEKG51bUdyb3Vwcyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv cGxhbi9jcmVhdGVwbGFuLmMKaW5kZXggMjM2ZjUwNmNmYi4uZWFmMTFkOWI4NyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCisrKyBiL3Ny Yy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYwpAQCAtMjYwLDE0ICsyNjAs MTQgQEAgc3RhdGljIFNvcnQgKm1ha2Vfc29ydF9mcm9tX2dyb3VwY29scyhMaXN0ICpncm91 cGNscywKIAkJCQkJCSBQbGFuICpsZWZ0dHJlZSk7CiBzdGF0aWMgTWF0ZXJpYWwgKm1ha2Vf bWF0ZXJpYWwoUGxhbiAqbGVmdHRyZWUpOwogc3RhdGljIFdpbmRvd0FnZyAqbWFrZV93aW5k b3dhZ2coTGlzdCAqdGxpc3QsIEluZGV4IHdpbnJlZiwKLQkJCSAgIGludCBwYXJ0TnVtQ29s cywgQXR0ck51bWJlciAqcGFydENvbElkeCwgT2lkICpwYXJ0T3BlcmF0b3JzLAotCQkJICAg aW50IG9yZE51bUNvbHMsIEF0dHJOdW1iZXIgKm9yZENvbElkeCwgT2lkICpvcmRPcGVyYXRv cnMsCisJCQkgICBpbnQgcGFydE51bUNvbHMsIEF0dHJOdW1iZXIgKnBhcnRDb2xJZHgsIE9p ZCAqcGFydE9wZXJhdG9ycywgT2lkICpwYXJ0Q29sbGF0aW9ucywKKwkJCSAgIGludCBvcmRO dW1Db2xzLCBBdHRyTnVtYmVyICpvcmRDb2xJZHgsIE9pZCAqb3JkT3BlcmF0b3JzLCBPaWQg Km9yZENvbGxhdGlvbnMsCiAJCQkgICBpbnQgZnJhbWVPcHRpb25zLCBOb2RlICpzdGFydE9m ZnNldCwgTm9kZSAqZW5kT2Zmc2V0LAogCQkJICAgT2lkIHN0YXJ0SW5SYW5nZUZ1bmMsIE9p ZCBlbmRJblJhbmdlRnVuYywKIAkJCSAgIE9pZCBpblJhbmdlQ29sbCwgYm9vbCBpblJhbmdl QXNjLCBib29sIGluUmFuZ2VOdWxsc0ZpcnN0LAogCQkJICAgUGxhbiAqbGVmdHRyZWUpOwog c3RhdGljIEdyb3VwICptYWtlX2dyb3VwKExpc3QgKnRsaXN0LCBMaXN0ICpxdWFsLCBpbnQg bnVtR3JvdXBDb2xzLAotCQkgICBBdHRyTnVtYmVyICpncnBDb2xJZHgsIE9pZCAqZ3JwT3Bl cmF0b3JzLAorCQkgICBBdHRyTnVtYmVyICpncnBDb2xJZHgsIE9pZCAqZ3JwT3BlcmF0b3Jz LCBPaWQgKmdycENvbGxhdGlvbnMsCiAJCSAgIFBsYW4gKmxlZnR0cmVlKTsKIHN0YXRpYyBV bmlxdWUgKm1ha2VfdW5pcXVlX2Zyb21fc29ydGNsYXVzZXMoUGxhbiAqbGVmdHRyZWUsIExp c3QgKmRpc3RpbmN0TGlzdCk7CiBzdGF0aWMgVW5pcXVlICptYWtlX3VuaXF1ZV9mcm9tX3Bh dGhrZXlzKFBsYW4gKmxlZnR0cmVlLApAQCAtMTM4Nyw2ICsxMzg3LDcgQEAgY3JlYXRlX3Vu aXF1ZV9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBVbmlxdWVQYXRoICpiZXN0X3BhdGgsIGlu dCBmbGFncykKIAlib29sCQluZXdpdGVtczsKIAlpbnQJCQludW1Hcm91cENvbHM7CiAJQXR0 ck51bWJlciAqZ3JvdXBDb2xJZHg7CisJT2lkCQkgICAqZ3JvdXBDb2xsYXRpb25zOwogCWlu dAkJCWdyb3VwQ29sUG9zOwogCUxpc3RDZWxsICAgKmw7CiAKQEAgLTE0NTMsNiArMTQ1NCw3 IEBAIGNyZWF0ZV91bmlxdWVfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgVW5pcXVlUGF0aCAq YmVzdF9wYXRoLCBpbnQgZmxhZ3MpCiAJbmV3dGxpc3QgPSBzdWJwbGFuLT50YXJnZXRsaXN0 OwogCW51bUdyb3VwQ29scyA9IGxpc3RfbGVuZ3RoKHVuaXFfZXhwcnMpOwogCWdyb3VwQ29s SWR4ID0gKEF0dHJOdW1iZXIgKikgcGFsbG9jKG51bUdyb3VwQ29scyAqIHNpemVvZihBdHRy TnVtYmVyKSk7CisJZ3JvdXBDb2xsYXRpb25zID0gKE9pZCAqKSBwYWxsb2MobnVtR3JvdXBD b2xzICogc2l6ZW9mKE9pZCkpOwogCiAJZ3JvdXBDb2xQb3MgPSAwOwogCWZvcmVhY2gobCwg dW5pcV9leHBycykKQEAgLTE0NjMsNyArMTQ2NSw5IEBAIGNyZWF0ZV91bmlxdWVfcGxhbihQ bGFubmVySW5mbyAqcm9vdCwgVW5pcXVlUGF0aCAqYmVzdF9wYXRoLCBpbnQgZmxhZ3MpCiAJ CXRsZSA9IHRsaXN0X21lbWJlcih1bmlxZXhwciwgbmV3dGxpc3QpOwogCQlpZiAoIXRsZSkJ CQkJLyogc2hvdWxkbid0IGhhcHBlbiAqLwogCQkJZWxvZyhFUlJPUiwgImZhaWxlZCB0byBm aW5kIHVuaXF1ZSBleHByZXNzaW9uIGluIHN1YnBsYW4gdGxpc3QiKTsKLQkJZ3JvdXBDb2xJ ZHhbZ3JvdXBDb2xQb3MrK10gPSB0bGUtPnJlc25vOworCQlncm91cENvbElkeFtncm91cENv bFBvc10gPSB0bGUtPnJlc25vOworCQlncm91cENvbGxhdGlvbnNbZ3JvdXBDb2xQb3NdID0g ZXhwckNvbGxhdGlvbigoTm9kZSAqKSB0bGUtPmV4cHIpOworCQlncm91cENvbFBvcysrOwog CX0KIAogCWlmIChiZXN0X3BhdGgtPnVtZXRob2QgPT0gVU5JUVVFX1BBVEhfSEFTSCkKQEAg LTE1MDEsNiArMTUwNSw3IEBAIGNyZWF0ZV91bmlxdWVfcGxhbihQbGFubmVySW5mbyAqcm9v dCwgVW5pcXVlUGF0aCAqYmVzdF9wYXRoLCBpbnQgZmxhZ3MpCiAJCQkJCQkJCSBudW1Hcm91 cENvbHMsCiAJCQkJCQkJCSBncm91cENvbElkeCwKIAkJCQkJCQkJIGdyb3VwT3BlcmF0b3Jz LAorCQkJCQkJCQkgZ3JvdXBDb2xsYXRpb25zLAogCQkJCQkJCQkgTklMLAogCQkJCQkJCQkg TklMLAogCQkJCQkJCQkgYmVzdF9wYXRoLT5wYXRoLnJvd3MsCkBAIC0xODgzLDYgKzE4ODgs OCBAQCBjcmVhdGVfZ3JvdXBfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgR3JvdXBQYXRoICpi ZXN0X3BhdGgpCiAJCQkJCSAgZXh0cmFjdF9ncm91cGluZ19jb2xzKGJlc3RfcGF0aC0+Z3Jv dXBDbGF1c2UsCiAJCQkJCQkJCQkJCXN1YnBsYW4tPnRhcmdldGxpc3QpLAogCQkJCQkgIGV4 dHJhY3RfZ3JvdXBpbmdfb3BzKGJlc3RfcGF0aC0+Z3JvdXBDbGF1c2UpLAorCQkJCQkgIGV4 dHJhY3RfZ3JvdXBpbmdfY29sbGF0aW9ucyhiZXN0X3BhdGgtPmdyb3VwQ2xhdXNlLAorCQkJ CQkJCQkJCQkJICBzdWJwbGFuLT50YXJnZXRsaXN0KSwKIAkJCQkJICBzdWJwbGFuKTsKIAog CWNvcHlfZ2VuZXJpY19wYXRoX2luZm8oJnBsYW4tPnBsYW4sIChQYXRoICopIGJlc3RfcGF0 aCk7CkBAIC0xOTQ5LDYgKzE5NTYsOCBAQCBjcmVhdGVfYWdnX3BsYW4oUGxhbm5lckluZm8g KnJvb3QsIEFnZ1BhdGggKmJlc3RfcGF0aCkKIAkJCQkJZXh0cmFjdF9ncm91cGluZ19jb2xz KGJlc3RfcGF0aC0+Z3JvdXBDbGF1c2UsCiAJCQkJCQkJCQkJICBzdWJwbGFuLT50YXJnZXRs aXN0KSwKIAkJCQkJZXh0cmFjdF9ncm91cGluZ19vcHMoYmVzdF9wYXRoLT5ncm91cENsYXVz ZSksCisJCQkJCWV4dHJhY3RfZ3JvdXBpbmdfY29sbGF0aW9ucyhiZXN0X3BhdGgtPmdyb3Vw Q2xhdXNlLAorCQkJCQkJCQkJCQkJc3VicGxhbi0+dGFyZ2V0bGlzdCksCiAJCQkJCU5JTCwK IAkJCQkJTklMLAogCQkJCQliZXN0X3BhdGgtPm51bUdyb3VwcywKQEAgLTIxMTAsNiArMjEx OSw3IEBAIGNyZWF0ZV9ncm91cGluZ3NldHNfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgR3Jv dXBpbmdTZXRzUGF0aCAqYmVzdF9wYXRoKQogCQkJCQkJCQkJCSBsaXN0X2xlbmd0aCgoTGlz dCAqKSBsaW5pdGlhbChyb2xsdXAtPmdzZXRzKSksCiAJCQkJCQkJCQkJIG5ld19ncnBDb2xJ ZHgsCiAJCQkJCQkJCQkJIGV4dHJhY3RfZ3JvdXBpbmdfb3BzKHJvbGx1cC0+Z3JvdXBDbGF1 c2UpLAorCQkJCQkJCQkJCSBleHRyYWN0X2dyb3VwaW5nX2NvbGxhdGlvbnMocm9sbHVwLT5n cm91cENsYXVzZSwgc3VicGxhbi0+dGFyZ2V0bGlzdCksCiAJCQkJCQkJCQkJIHJvbGx1cC0+ Z3NldHMsCiAJCQkJCQkJCQkJIE5JTCwKIAkJCQkJCQkJCQkgcm9sbHVwLT5udW1Hcm91cHMs CkBAIC0yMTQ3LDYgKzIxNTcsNyBAQCBjcmVhdGVfZ3JvdXBpbmdzZXRzX3BsYW4oUGxhbm5l ckluZm8gKnJvb3QsIEdyb3VwaW5nU2V0c1BhdGggKmJlc3RfcGF0aCkKIAkJCQkJCW51bUdy b3VwQ29scywKIAkJCQkJCXRvcF9ncnBDb2xJZHgsCiAJCQkJCQlleHRyYWN0X2dyb3VwaW5n X29wcyhyb2xsdXAtPmdyb3VwQ2xhdXNlKSwKKwkJCQkJCWV4dHJhY3RfZ3JvdXBpbmdfY29s bGF0aW9ucyhyb2xsdXAtPmdyb3VwQ2xhdXNlLCBzdWJwbGFuLT50YXJnZXRsaXN0KSwKIAkJ CQkJCXJvbGx1cC0+Z3NldHMsCiAJCQkJCQljaGFpbiwKIAkJCQkJCXJvbGx1cC0+bnVtR3Jv dXBzLApAQCAtMjI0Niw5ICsyMjU3LDExIEBAIGNyZWF0ZV93aW5kb3dhZ2dfcGxhbihQbGFu bmVySW5mbyAqcm9vdCwgV2luZG93QWdnUGF0aCAqYmVzdF9wYXRoKQogCWludAkJCXBhcnRO dW1Db2xzOwogCUF0dHJOdW1iZXIgKnBhcnRDb2xJZHg7CiAJT2lkCQkgICAqcGFydE9wZXJh dG9yczsKKwlPaWQJCSAgICpwYXJ0Q29sbGF0aW9uczsKIAlpbnQJCQlvcmROdW1Db2xzOwog CUF0dHJOdW1iZXIgKm9yZENvbElkeDsKIAlPaWQJCSAgICpvcmRPcGVyYXRvcnM7CisJT2lk CQkgICAqb3JkQ29sbGF0aW9uczsKIAlMaXN0Q2VsbCAgICpsYzsKIAogCS8qCkBAIC0yMjcw LDYgKzIyODMsNyBAQCBjcmVhdGVfd2luZG93YWdnX3BsYW4oUGxhbm5lckluZm8gKnJvb3Qs IFdpbmRvd0FnZ1BhdGggKmJlc3RfcGF0aCkKIAkgKi8KIAlwYXJ0Q29sSWR4ID0gKEF0dHJO dW1iZXIgKikgcGFsbG9jKHNpemVvZihBdHRyTnVtYmVyKSAqIG51bVBhcnQpOwogCXBhcnRP cGVyYXRvcnMgPSAoT2lkICopIHBhbGxvYyhzaXplb2YoT2lkKSAqIG51bVBhcnQpOworCXBh cnRDb2xsYXRpb25zID0gKE9pZCAqKSBwYWxsb2Moc2l6ZW9mKE9pZCkgKiBudW1QYXJ0KTsK IAogCXBhcnROdW1Db2xzID0gMDsKIAlmb3JlYWNoKGxjLCB3Yy0+cGFydGl0aW9uQ2xhdXNl KQpAQCAtMjI4MCwxMSArMjI5NCwxMyBAQCBjcmVhdGVfd2luZG93YWdnX3BsYW4oUGxhbm5l ckluZm8gKnJvb3QsIFdpbmRvd0FnZ1BhdGggKmJlc3RfcGF0aCkKIAkJQXNzZXJ0KE9pZElz VmFsaWQoc2djLT5lcW9wKSk7CiAJCXBhcnRDb2xJZHhbcGFydE51bUNvbHNdID0gdGxlLT5y ZXNubzsKIAkJcGFydE9wZXJhdG9yc1twYXJ0TnVtQ29sc10gPSBzZ2MtPmVxb3A7CisJCXBh cnRDb2xsYXRpb25zW3BhcnROdW1Db2xzXSA9IGV4cHJDb2xsYXRpb24oKE5vZGUgKikgdGxl LT5leHByKTsKIAkJcGFydE51bUNvbHMrKzsKIAl9CiAKIAlvcmRDb2xJZHggPSAoQXR0ck51 bWJlciAqKSBwYWxsb2Moc2l6ZW9mKEF0dHJOdW1iZXIpICogbnVtT3JkZXIpOwogCW9yZE9w ZXJhdG9ycyA9IChPaWQgKikgcGFsbG9jKHNpemVvZihPaWQpICogbnVtT3JkZXIpOworCW9y ZENvbGxhdGlvbnMgPSAoT2lkICopIHBhbGxvYyhzaXplb2YoT2lkKSAqIG51bU9yZGVyKTsK IAogCW9yZE51bUNvbHMgPSAwOwogCWZvcmVhY2gobGMsIHdjLT5vcmRlckNsYXVzZSkKQEAg LTIyOTUsNiArMjMxMSw3IEBAIGNyZWF0ZV93aW5kb3dhZ2dfcGxhbihQbGFubmVySW5mbyAq cm9vdCwgV2luZG93QWdnUGF0aCAqYmVzdF9wYXRoKQogCQlBc3NlcnQoT2lkSXNWYWxpZChz Z2MtPmVxb3ApKTsKIAkJb3JkQ29sSWR4W29yZE51bUNvbHNdID0gdGxlLT5yZXNubzsKIAkJ b3JkT3BlcmF0b3JzW29yZE51bUNvbHNdID0gc2djLT5lcW9wOworCQlvcmRDb2xsYXRpb25z W29yZE51bUNvbHNdID0gZXhwckNvbGxhdGlvbigoTm9kZSAqKSB0bGUtPmV4cHIpOwogCQlv cmROdW1Db2xzKys7CiAJfQogCkBAIC0yMzA0LDkgKzIzMjEsMTEgQEAgY3JlYXRlX3dpbmRv d2FnZ19wbGFuKFBsYW5uZXJJbmZvICpyb290LCBXaW5kb3dBZ2dQYXRoICpiZXN0X3BhdGgp CiAJCQkJCQkgIHBhcnROdW1Db2xzLAogCQkJCQkJICBwYXJ0Q29sSWR4LAogCQkJCQkJICBw YXJ0T3BlcmF0b3JzLAorCQkJCQkJICBwYXJ0Q29sbGF0aW9ucywKIAkJCQkJCSAgb3JkTnVt Q29scywKIAkJCQkJCSAgb3JkQ29sSWR4LAogCQkJCQkJICBvcmRPcGVyYXRvcnMsCisJCQkJ CQkgIG9yZENvbGxhdGlvbnMsCiAJCQkJCQkgIHdjLT5mcmFtZU9wdGlvbnMsCiAJCQkJCQkg IHdjLT5zdGFydE9mZnNldCwKIAkJCQkJCSAgd2MtPmVuZE9mZnNldCwKQEAgLTUzMjYsMTAg KzUzNDUsMTIgQEAgbWFrZV9yZWN1cnNpdmVfdW5pb24oTGlzdCAqdGxpc3QsCiAJCWludAkJ CWtleW5vID0gMDsKIAkJQXR0ck51bWJlciAqZHVwQ29sSWR4OwogCQlPaWQJCSAgICpkdXBP cGVyYXRvcnM7CisJCU9pZAkJICAgKmR1cENvbGxhdGlvbnM7CiAJCUxpc3RDZWxsICAgKnNs aXRlbTsKIAogCQlkdXBDb2xJZHggPSAoQXR0ck51bWJlciAqKSBwYWxsb2Moc2l6ZW9mKEF0 dHJOdW1iZXIpICogbnVtQ29scyk7CiAJCWR1cE9wZXJhdG9ycyA9IChPaWQgKikgcGFsbG9j KHNpemVvZihPaWQpICogbnVtQ29scyk7CisJCWR1cENvbGxhdGlvbnMgPSAoT2lkICopIHBh bGxvYyhzaXplb2YoT2lkKSAqIG51bUNvbHMpOwogCiAJCWZvcmVhY2goc2xpdGVtLCBkaXN0 aW5jdExpc3QpCiAJCXsKQEAgLTUzMzksMTEgKzUzNjAsMTMgQEAgbWFrZV9yZWN1cnNpdmVf dW5pb24oTGlzdCAqdGxpc3QsCiAKIAkJCWR1cENvbElkeFtrZXlub10gPSB0bGUtPnJlc25v OwogCQkJZHVwT3BlcmF0b3JzW2tleW5vXSA9IHNvcnRjbC0+ZXFvcDsKKwkJCWR1cENvbGxh dGlvbnNba2V5bm9dID0gZXhwckNvbGxhdGlvbigoTm9kZSAqKSB0bGUtPmV4cHIpOwogCQkJ QXNzZXJ0KE9pZElzVmFsaWQoZHVwT3BlcmF0b3JzW2tleW5vXSkpOwogCQkJa2V5bm8rKzsK IAkJfQogCQlub2RlLT5kdXBDb2xJZHggPSBkdXBDb2xJZHg7CiAJCW5vZGUtPmR1cE9wZXJh dG9ycyA9IGR1cE9wZXJhdG9yczsKKwkJbm9kZS0+ZHVwQ29sbGF0aW9ucyA9IGR1cENvbGxh dGlvbnM7CiAJfQogCW5vZGUtPm51bUdyb3VwcyA9IG51bUdyb3VwczsKIApAQCAtNjAxNSw3 ICs2MDM4LDcgQEAgbWF0ZXJpYWxpemVfZmluaXNoZWRfcGxhbihQbGFuICpzdWJwbGFuKQog QWdnICoKIG1ha2VfYWdnKExpc3QgKnRsaXN0LCBMaXN0ICpxdWFsLAogCQkgQWdnU3RyYXRl Z3kgYWdnc3RyYXRlZ3ksIEFnZ1NwbGl0IGFnZ3NwbGl0LAotCQkgaW50IG51bUdyb3VwQ29s cywgQXR0ck51bWJlciAqZ3JwQ29sSWR4LCBPaWQgKmdycE9wZXJhdG9ycywKKwkJIGludCBu dW1Hcm91cENvbHMsIEF0dHJOdW1iZXIgKmdycENvbElkeCwgT2lkICpncnBPcGVyYXRvcnMs IE9pZCAqZ3JwQ29sbGF0aW9ucywKIAkJIExpc3QgKmdyb3VwaW5nU2V0cywgTGlzdCAqY2hh aW4sCiAJCSBkb3VibGUgZE51bUdyb3VwcywgUGxhbiAqbGVmdHRyZWUpCiB7CkBAIC02MDMx LDYgKzYwNTQsNyBAQCBtYWtlX2FnZyhMaXN0ICp0bGlzdCwgTGlzdCAqcXVhbCwKIAlub2Rl LT5udW1Db2xzID0gbnVtR3JvdXBDb2xzOwogCW5vZGUtPmdycENvbElkeCA9IGdycENvbElk eDsKIAlub2RlLT5ncnBPcGVyYXRvcnMgPSBncnBPcGVyYXRvcnM7CisJbm9kZS0+Z3JwQ29s bGF0aW9ucyA9IGdycENvbGxhdGlvbnM7CiAJbm9kZS0+bnVtR3JvdXBzID0gbnVtR3JvdXBz OwogCW5vZGUtPmFnZ1BhcmFtcyA9IE5VTEw7CQkvKiBTU19maW5hbGl6ZV9wbGFuKCkgd2ls bCBmaWxsIHRoaXMgKi8KIAlub2RlLT5ncm91cGluZ1NldHMgPSBncm91cGluZ1NldHM7CkBA IC02MDQ2LDggKzYwNzAsOCBAQCBtYWtlX2FnZyhMaXN0ICp0bGlzdCwgTGlzdCAqcXVhbCwK IAogc3RhdGljIFdpbmRvd0FnZyAqCiBtYWtlX3dpbmRvd2FnZyhMaXN0ICp0bGlzdCwgSW5k ZXggd2lucmVmLAotCQkJICAgaW50IHBhcnROdW1Db2xzLCBBdHRyTnVtYmVyICpwYXJ0Q29s SWR4LCBPaWQgKnBhcnRPcGVyYXRvcnMsCi0JCQkgICBpbnQgb3JkTnVtQ29scywgQXR0ck51 bWJlciAqb3JkQ29sSWR4LCBPaWQgKm9yZE9wZXJhdG9ycywKKwkJCSAgIGludCBwYXJ0TnVt Q29scywgQXR0ck51bWJlciAqcGFydENvbElkeCwgT2lkICpwYXJ0T3BlcmF0b3JzLCBPaWQg KnBhcnRDb2xsYXRpb25zLAorCQkJICAgaW50IG9yZE51bUNvbHMsIEF0dHJOdW1iZXIgKm9y ZENvbElkeCwgT2lkICpvcmRPcGVyYXRvcnMsIE9pZCAqb3JkQ29sbGF0aW9ucywKIAkJCSAg IGludCBmcmFtZU9wdGlvbnMsIE5vZGUgKnN0YXJ0T2Zmc2V0LCBOb2RlICplbmRPZmZzZXQs CiAJCQkgICBPaWQgc3RhcnRJblJhbmdlRnVuYywgT2lkIGVuZEluUmFuZ2VGdW5jLAogCQkJ ICAgT2lkIGluUmFuZ2VDb2xsLCBib29sIGluUmFuZ2VBc2MsIGJvb2wgaW5SYW5nZU51bGxz Rmlyc3QsCkBAIC02MDYwLDkgKzYwODQsMTEgQEAgbWFrZV93aW5kb3dhZ2coTGlzdCAqdGxp c3QsIEluZGV4IHdpbnJlZiwKIAlub2RlLT5wYXJ0TnVtQ29scyA9IHBhcnROdW1Db2xzOwog CW5vZGUtPnBhcnRDb2xJZHggPSBwYXJ0Q29sSWR4OwogCW5vZGUtPnBhcnRPcGVyYXRvcnMg PSBwYXJ0T3BlcmF0b3JzOworCW5vZGUtPnBhcnRDb2xsYXRpb25zID0gcGFydENvbGxhdGlv bnM7CiAJbm9kZS0+b3JkTnVtQ29scyA9IG9yZE51bUNvbHM7CiAJbm9kZS0+b3JkQ29sSWR4 ID0gb3JkQ29sSWR4OwogCW5vZGUtPm9yZE9wZXJhdG9ycyA9IG9yZE9wZXJhdG9yczsKKwlu b2RlLT5vcmRDb2xsYXRpb25zID0gb3JkQ29sbGF0aW9uczsKIAlub2RlLT5mcmFtZU9wdGlv bnMgPSBmcmFtZU9wdGlvbnM7CiAJbm9kZS0+c3RhcnRPZmZzZXQgPSBzdGFydE9mZnNldDsK IAlub2RlLT5lbmRPZmZzZXQgPSBlbmRPZmZzZXQ7CkBAIC02MDg3LDYgKzYxMTMsNyBAQCBt YWtlX2dyb3VwKExpc3QgKnRsaXN0LAogCQkgICBpbnQgbnVtR3JvdXBDb2xzLAogCQkgICBB dHRyTnVtYmVyICpncnBDb2xJZHgsCiAJCSAgIE9pZCAqZ3JwT3BlcmF0b3JzLAorCQkgICBP aWQgKmdycENvbGxhdGlvbnMsCiAJCSAgIFBsYW4gKmxlZnR0cmVlKQogewogCUdyb3VwCSAg ICpub2RlID0gbWFrZU5vZGUoR3JvdXApOwpAQCAtNjA5NSw2ICs2MTIyLDcgQEAgbWFrZV9n cm91cChMaXN0ICp0bGlzdCwKIAlub2RlLT5udW1Db2xzID0gbnVtR3JvdXBDb2xzOwogCW5v ZGUtPmdycENvbElkeCA9IGdycENvbElkeDsKIAlub2RlLT5ncnBPcGVyYXRvcnMgPSBncnBP cGVyYXRvcnM7CisJbm9kZS0+Z3JwQ29sbGF0aW9ucyA9IGdycENvbGxhdGlvbnM7CiAKIAlw bGFuLT5xdWFsID0gcXVhbDsKIAlwbGFuLT50YXJnZXRsaXN0ID0gdGxpc3Q7CkBAIC02MTE4 LDYgKzYxNDYsNyBAQCBtYWtlX3VuaXF1ZV9mcm9tX3NvcnRjbGF1c2VzKFBsYW4gKmxlZnR0 cmVlLCBMaXN0ICpkaXN0aW5jdExpc3QpCiAJaW50CQkJa2V5bm8gPSAwOwogCUF0dHJOdW1i ZXIgKnVuaXFDb2xJZHg7CiAJT2lkCQkgICAqdW5pcU9wZXJhdG9yczsKKwlPaWQJCSAgICp1 bmlxQ29sbGF0aW9uczsKIAlMaXN0Q2VsbCAgICpzbGl0ZW07CiAKIAlwbGFuLT50YXJnZXRs aXN0ID0gbGVmdHRyZWUtPnRhcmdldGxpc3Q7CkBAIC02MTMyLDYgKzYxNjEsNyBAQCBtYWtl X3VuaXF1ZV9mcm9tX3NvcnRjbGF1c2VzKFBsYW4gKmxlZnR0cmVlLCBMaXN0ICpkaXN0aW5j dExpc3QpCiAJQXNzZXJ0KG51bUNvbHMgPiAwKTsKIAl1bmlxQ29sSWR4ID0gKEF0dHJOdW1i ZXIgKikgcGFsbG9jKHNpemVvZihBdHRyTnVtYmVyKSAqIG51bUNvbHMpOwogCXVuaXFPcGVy YXRvcnMgPSAoT2lkICopIHBhbGxvYyhzaXplb2YoT2lkKSAqIG51bUNvbHMpOworCXVuaXFD b2xsYXRpb25zID0gKE9pZCAqKSBwYWxsb2Moc2l6ZW9mKE9pZCkgKiBudW1Db2xzKTsKIAog CWZvcmVhY2goc2xpdGVtLCBkaXN0aW5jdExpc3QpCiAJewpAQCAtNjE0MCw2ICs2MTcwLDcg QEAgbWFrZV91bmlxdWVfZnJvbV9zb3J0Y2xhdXNlcyhQbGFuICpsZWZ0dHJlZSwgTGlzdCAq ZGlzdGluY3RMaXN0KQogCiAJCXVuaXFDb2xJZHhba2V5bm9dID0gdGxlLT5yZXNubzsKIAkJ dW5pcU9wZXJhdG9yc1trZXlub10gPSBzb3J0Y2wtPmVxb3A7CisJCXVuaXFDb2xsYXRpb25z W2tleW5vXSA9IGV4cHJDb2xsYXRpb24oKE5vZGUgKikgdGxlLT5leHByKTsKIAkJQXNzZXJ0 KE9pZElzVmFsaWQodW5pcU9wZXJhdG9yc1trZXlub10pKTsKIAkJa2V5bm8rKzsKIAl9CkBA IC02MTQ3LDYgKzYxNzgsNyBAQCBtYWtlX3VuaXF1ZV9mcm9tX3NvcnRjbGF1c2VzKFBsYW4g KmxlZnR0cmVlLCBMaXN0ICpkaXN0aW5jdExpc3QpCiAJbm9kZS0+bnVtQ29scyA9IG51bUNv bHM7CiAJbm9kZS0+dW5pcUNvbElkeCA9IHVuaXFDb2xJZHg7CiAJbm9kZS0+dW5pcU9wZXJh dG9ycyA9IHVuaXFPcGVyYXRvcnM7CisJbm9kZS0+dW5pcUNvbGxhdGlvbnMgPSB1bmlxQ29s bGF0aW9uczsKIAogCXJldHVybiBub2RlOwogfQpAQCAtNjE2Miw2ICs2MTk0LDcgQEAgbWFr ZV91bmlxdWVfZnJvbV9wYXRoa2V5cyhQbGFuICpsZWZ0dHJlZSwgTGlzdCAqcGF0aGtleXMs IGludCBudW1Db2xzKQogCWludAkJCWtleW5vID0gMDsKIAlBdHRyTnVtYmVyICp1bmlxQ29s SWR4OwogCU9pZAkJICAgKnVuaXFPcGVyYXRvcnM7CisJT2lkCQkgICAqdW5pcUNvbGxhdGlv bnM7CiAJTGlzdENlbGwgICAqbGM7CiAKIAlwbGFuLT50YXJnZXRsaXN0ID0gbGVmdHRyZWUt PnRhcmdldGxpc3Q7CkBAIC02MTc3LDYgKzYyMTAsNyBAQCBtYWtlX3VuaXF1ZV9mcm9tX3Bh dGhrZXlzKFBsYW4gKmxlZnR0cmVlLCBMaXN0ICpwYXRoa2V5cywgaW50IG51bUNvbHMpCiAJ QXNzZXJ0KG51bUNvbHMgPj0gMCAmJiBudW1Db2xzIDw9IGxpc3RfbGVuZ3RoKHBhdGhrZXlz KSk7CiAJdW5pcUNvbElkeCA9IChBdHRyTnVtYmVyICopIHBhbGxvYyhzaXplb2YoQXR0ck51 bWJlcikgKiBudW1Db2xzKTsKIAl1bmlxT3BlcmF0b3JzID0gKE9pZCAqKSBwYWxsb2Moc2l6 ZW9mKE9pZCkgKiBudW1Db2xzKTsKKwl1bmlxQ29sbGF0aW9ucyA9IChPaWQgKikgcGFsbG9j KHNpemVvZihPaWQpICogbnVtQ29scyk7CiAKIAlmb3JlYWNoKGxjLCBwYXRoa2V5cykKIAl7 CkBAIC02MjQ1LDYgKzYyNzksNyBAQCBtYWtlX3VuaXF1ZV9mcm9tX3BhdGhrZXlzKFBsYW4g KmxlZnR0cmVlLCBMaXN0ICpwYXRoa2V5cywgaW50IG51bUNvbHMpCiAKIAkJdW5pcUNvbElk eFtrZXlub10gPSB0bGUtPnJlc25vOwogCQl1bmlxT3BlcmF0b3JzW2tleW5vXSA9IGVxb3A7 CisJCXVuaXFDb2xsYXRpb25zW2tleW5vXSA9IGVjLT5lY19jb2xsYXRpb247CiAKIAkJa2V5 bm8rKzsKIAl9CkBAIC02MjUyLDYgKzYyODcsNyBAQCBtYWtlX3VuaXF1ZV9mcm9tX3BhdGhr ZXlzKFBsYW4gKmxlZnR0cmVlLCBMaXN0ICpwYXRoa2V5cywgaW50IG51bUNvbHMpCiAJbm9k ZS0+bnVtQ29scyA9IG51bUNvbHM7CiAJbm9kZS0+dW5pcUNvbElkeCA9IHVuaXFDb2xJZHg7 CiAJbm9kZS0+dW5pcU9wZXJhdG9ycyA9IHVuaXFPcGVyYXRvcnM7CisJbm9kZS0+dW5pcUNv bGxhdGlvbnMgPSB1bmlxQ29sbGF0aW9uczsKIAogCXJldHVybiBub2RlOwogfQpAQCAtNjI5 Niw2ICs2MzMyLDcgQEAgbWFrZV9zZXRvcChTZXRPcENtZCBjbWQsIFNldE9wU3RyYXRlZ3kg c3RyYXRlZ3ksIFBsYW4gKmxlZnR0cmVlLAogCWludAkJCWtleW5vID0gMDsKIAlBdHRyTnVt YmVyICpkdXBDb2xJZHg7CiAJT2lkCQkgICAqZHVwT3BlcmF0b3JzOworCU9pZAkJICAgKmR1 cENvbGxhdGlvbnM7CiAJTGlzdENlbGwgICAqc2xpdGVtOwogCiAJcGxhbi0+dGFyZ2V0bGlz dCA9IGxlZnR0cmVlLT50YXJnZXRsaXN0OwpAQCAtNjMwOSw2ICs2MzQ2LDcgQEAgbWFrZV9z ZXRvcChTZXRPcENtZCBjbWQsIFNldE9wU3RyYXRlZ3kgc3RyYXRlZ3ksIFBsYW4gKmxlZnR0 cmVlLAogCSAqLwogCWR1cENvbElkeCA9IChBdHRyTnVtYmVyICopIHBhbGxvYyhzaXplb2Yo QXR0ck51bWJlcikgKiBudW1Db2xzKTsKIAlkdXBPcGVyYXRvcnMgPSAoT2lkICopIHBhbGxv YyhzaXplb2YoT2lkKSAqIG51bUNvbHMpOworCWR1cENvbGxhdGlvbnMgPSAoT2lkICopIHBh bGxvYyhzaXplb2YoT2lkKSAqIG51bUNvbHMpOwogCiAJZm9yZWFjaChzbGl0ZW0sIGRpc3Rp bmN0TGlzdCkKIAl7CkBAIC02MzE3LDYgKzYzNTUsNyBAQCBtYWtlX3NldG9wKFNldE9wQ21k IGNtZCwgU2V0T3BTdHJhdGVneSBzdHJhdGVneSwgUGxhbiAqbGVmdHRyZWUsCiAKIAkJZHVw Q29sSWR4W2tleW5vXSA9IHRsZS0+cmVzbm87CiAJCWR1cE9wZXJhdG9yc1trZXlub10gPSBz b3J0Y2wtPmVxb3A7CisJCWR1cENvbGxhdGlvbnNba2V5bm9dID0gZXhwckNvbGxhdGlvbigo Tm9kZSAqKSB0bGUtPmV4cHIpOwogCQlBc3NlcnQoT2lkSXNWYWxpZChkdXBPcGVyYXRvcnNb a2V5bm9dKSk7CiAJCWtleW5vKys7CiAJfQpAQCAtNjMyNiw2ICs2MzY1LDcgQEAgbWFrZV9z ZXRvcChTZXRPcENtZCBjbWQsIFNldE9wU3RyYXRlZ3kgc3RyYXRlZ3ksIFBsYW4gKmxlZnR0 cmVlLAogCW5vZGUtPm51bUNvbHMgPSBudW1Db2xzOwogCW5vZGUtPmR1cENvbElkeCA9IGR1 cENvbElkeDsKIAlub2RlLT5kdXBPcGVyYXRvcnMgPSBkdXBPcGVyYXRvcnM7CisJbm9kZS0+ ZHVwQ29sbGF0aW9ucyA9IGR1cENvbGxhdGlvbnM7CiAJbm9kZS0+ZmxhZ0NvbElkeCA9IGZs YWdDb2xJZHg7CiAJbm9kZS0+Zmlyc3RGbGFnID0gZmlyc3RGbGFnOwogCW5vZGUtPm51bUdy b3VwcyA9IG51bUdyb3VwczsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91 dGlsL3RsaXN0LmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC90bGlzdC5jCmluZGV4 IDE0ZDFjNjdhOTQuLmJiM2I3OTY5ZjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGlt aXplci91dGlsL3RsaXN0LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvdGxp c3QuYwpAQCAtNTAzLDYgKzUwMywzMSBAQCBleHRyYWN0X2dyb3VwaW5nX29wcyhMaXN0ICpn cm91cENsYXVzZSkKIAlyZXR1cm4gZ3JvdXBPcGVyYXRvcnM7CiB9CiAKKy8qCisgKiBleHRy YWN0X2dyb3VwaW5nX2NvbGxhdGlvbnMgLSBtYWtlIGFuIGFycmF5IG9mIHRoZSBncm91cGlu ZyBjb2x1bW4gY29sbGF0aW9ucworICoJCWZvciBhIFNvcnRHcm91cENsYXVzZSBsaXN0Cisg Ki8KK09pZCAqCitleHRyYWN0X2dyb3VwaW5nX2NvbGxhdGlvbnMoTGlzdCAqZ3JvdXBDbGF1 c2UsIExpc3QgKnRsaXN0KQoreworCWludAkJCW51bUNvbHMgPSBsaXN0X2xlbmd0aChncm91 cENsYXVzZSk7CisJaW50CQkJY29sbm8gPSAwOworCU9pZAkJICAgKmdycENvbGxhdGlvbnM7 CisJTGlzdENlbGwgICAqZ2xpdGVtOworCisJZ3JwQ29sbGF0aW9ucyA9IChPaWQgKikgcGFs bG9jKHNpemVvZihPaWQpICogbnVtQ29scyk7CisKKwlmb3JlYWNoKGdsaXRlbSwgZ3JvdXBD bGF1c2UpCisJeworCQlTb3J0R3JvdXBDbGF1c2UgKmdyb3VwY2wgPSAoU29ydEdyb3VwQ2xh dXNlICopIGxmaXJzdChnbGl0ZW0pOworCQlUYXJnZXRFbnRyeSAqdGxlID0gZ2V0X3NvcnRn cm91cGNsYXVzZV90bGUoZ3JvdXBjbCwgdGxpc3QpOworCisJCWdycENvbGxhdGlvbnNbY29s bm8rK10gPSBleHByQ29sbGF0aW9uKChOb2RlICopIHRsZS0+ZXhwcik7CisJfQorCisJcmV0 dXJuIGdycENvbGxhdGlvbnM7Cit9CisKIC8qCiAgKiBleHRyYWN0X2dyb3VwaW5nX2NvbHMg LSBtYWtlIGFuIGFycmF5IG9mIHRoZSBncm91cGluZyBjb2x1bW4gcmVzbm9zCiAgKgkJZm9y IGEgU29ydEdyb3VwQ2xhdXNlIGxpc3QKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnRp dGlvbmluZy9wYXJ0Ym91bmRzLmMgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJv dW5kcy5jCmluZGV4IGQ0NzhhZTdlMTkuLmM2MjQ1MGY3OGQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFy dGl0aW9uaW5nL3BhcnRib3VuZHMuYwpAQCAtMjY1Nyw3ICsyNjU3LDcgQEAgZ2V0X3Jhbmdl X251bGx0ZXN0KFBhcnRpdGlvbktleSBrZXkpCiAgKiBDb21wdXRlIHRoZSBoYXNoIHZhbHVl IGZvciBnaXZlbiBwYXJ0aXRpb24ga2V5IHZhbHVlcy4KICAqLwogdWludDY0Ci1jb21wdXRl X3BhcnRpdGlvbl9oYXNoX3ZhbHVlKGludCBwYXJ0bmF0dHMsIEZtZ3JJbmZvICpwYXJ0c3Vw ZnVuYywKK2NvbXB1dGVfcGFydGl0aW9uX2hhc2hfdmFsdWUoaW50IHBhcnRuYXR0cywgRm1n ckluZm8gKnBhcnRzdXBmdW5jLCBPaWQgKnBhcnRjb2xsYXRpb24sCiAJCQkJCQkJIERhdHVt ICp2YWx1ZXMsIGJvb2wgKmlzbnVsbCkKIHsKIAlpbnQJCQlpOwpAQCAtMjY3OCw3ICsyNjc4 LDcgQEAgY29tcHV0ZV9wYXJ0aXRpb25faGFzaF92YWx1ZShpbnQgcGFydG5hdHRzLCBGbWdy SW5mbyAqcGFydHN1cGZ1bmMsCiAJCQkgKiBkYXRhdHlwZS1zcGVjaWZpYyBoYXNoIGZ1bmN0 aW9ucyBvZiBlYWNoIHBhcnRpdGlvbiBrZXkKIAkJCSAqIGF0dHJpYnV0ZS4KIAkJCSAqLwot CQkJaGFzaCA9IEZ1bmN0aW9uQ2FsbDIoJnBhcnRzdXBmdW5jW2ldLCB2YWx1ZXNbaV0sIHNl ZWQpOworCQkJaGFzaCA9IEZ1bmN0aW9uQ2FsbDJDb2xsKCZwYXJ0c3VwZnVuY1tpXSwgcGFy dGNvbGxhdGlvbltpXSwgdmFsdWVzW2ldLCBzZWVkKTsKIAogCQkJLyogRm9ybSBhIHNpbmds ZSA2NC1iaXQgaGFzaCB2YWx1ZSAqLwogCQkJcm93SGFzaCA9IGhhc2hfY29tYmluZTY0KHJv d0hhc2gsIERhdHVtR2V0VUludDY0KGhhc2gpKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9w YXJ0cHJ1bmUuYwppbmRleCA4Yzk3MjE5MzVkLi5iYzFmMDBkMzNlIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMKKysrIGIvc3JjL2JhY2tlbmQv cGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jCkBAIC0yMTU0LDYgKzIxNTQsNyBAQCBnZXRfbWF0 Y2hpbmdfaGFzaF9ib3VuZHMoUGFydGl0aW9uUHJ1bmVDb250ZXh0ICpjb250ZXh0LAogCWlu dAkJCWk7CiAJdWludDY0CQlyb3dIYXNoOwogCWludAkJCWdyZWF0ZXN0X21vZHVsdXM7CisJ T2lkCQkgICAqcGFydGNvbGxhdGlvbiA9IGNvbnRleHQtPnBhcnRjb2xsYXRpb247CiAKIAlB c3NlcnQoY29udGV4dC0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX0hBU0gpOwog CkBAIC0yMTc0LDcgKzIxNzUsNyBAQCBnZXRfbWF0Y2hpbmdfaGFzaF9ib3VuZHMoUGFydGl0 aW9uUHJ1bmVDb250ZXh0ICpjb250ZXh0LAogCQkJaXNudWxsW2ldID0gYm1zX2lzX21lbWJl cihpLCBudWxsa2V5cyk7CiAKIAkJZ3JlYXRlc3RfbW9kdWx1cyA9IGdldF9oYXNoX3BhcnRp dGlvbl9ncmVhdGVzdF9tb2R1bHVzKGJvdW5kaW5mbyk7Ci0JCXJvd0hhc2ggPSBjb21wdXRl X3BhcnRpdGlvbl9oYXNoX3ZhbHVlKHBhcnRuYXR0cywgcGFydHN1cGZ1bmMsCisJCXJvd0hh c2ggPSBjb21wdXRlX3BhcnRpdGlvbl9oYXNoX3ZhbHVlKHBhcnRuYXR0cywgcGFydHN1cGZ1 bmMsIHBhcnRjb2xsYXRpb24sCiAJCQkJCQkJCQkJCSAgIHZhbHVlcywgaXNudWxsKTsKIAog CQlpZiAocGFydGluZGljZXNbcm93SGFzaCAlIGdyZWF0ZXN0X21vZHVsdXNdID49IDApCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZWdleC9yZWdjX3BnX2xvY2FsZS5jIGIvc3JjL2Jh Y2tlbmQvcmVnZXgvcmVnY19wZ19sb2NhbGUuYwppbmRleCBhOGMwYjE1NmZhLi40YTgwOGI3 NjA2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZWdleC9yZWdjX3BnX2xvY2FsZS5jCisr KyBiL3NyYy9iYWNrZW5kL3JlZ2V4L3JlZ2NfcGdfbG9jYWxlLmMKQEAgLTI2Myw2ICsyNjMs MTEgQEAgcGdfc2V0X3JlZ2V4X2NvbGxhdGlvbihPaWQgY29sbGF0aW9uKQogCQkJCQkgZXJy aGludCgiVXNlIHRoZSBDT0xMQVRFIGNsYXVzZSB0byBzZXQgdGhlIGNvbGxhdGlvbiBleHBs aWNpdGx5LiIpKSk7CiAJCX0KIAorCQlpZiAocGdfcmVnZXhfbG9jYWxlICYmICFwZ19yZWdl eF9sb2NhbGUtPmRldGVybWluaXN0aWMpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJy Y29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCSBlcnJtc2coIm5v bmRldGVybWluaXN0aWMgY29sbGF0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCBmb3IgcmVndWxh ciBleHByZXNzaW9ucyIpKSk7CisKICNpZmRlZiBVU0VfSUNVCiAJCWlmIChwZ19yZWdleF9s b2NhbGUgJiYgcGdfcmVnZXhfbG9jYWxlLT5wcm92aWRlciA9PSBDT0xMUFJPVklERVJfSUNV KQogCQkJcGdfcmVnZXhfc3RyYXRlZ3kgPSBQR19SRUdFWF9MT0NBTEVfSUNVOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5ZnVuY3MuYyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9hcnJheWZ1bmNzLmMKaW5kZXggNWIyOTE3ZDE1OS4uNjFkZWVmYmJjOCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5ZnVuY3MuYworKysgYi9z cmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlmdW5jcy5jCkBAIC0zOTU4LDcgKzM5NTgsNyBA QCBoYXNoX2FycmF5KFBHX0ZVTkNUSU9OX0FSR1MpCiAJICogYXBwbHkgdGhlIGhhc2ggZnVu Y3Rpb24gdG8gZWFjaCBhcnJheSBlbGVtZW50LgogCSAqLwogCUluaXRGdW5jdGlvbkNhbGxJ bmZvRGF0YSgqbG9jZmNpbmZvLCAmdHlwZW50cnktPmhhc2hfcHJvY19maW5mbywgMSwKLQkJ CQkJCQkgSW52YWxpZE9pZCwgTlVMTCwgTlVMTCk7CisJCQkJCQkJIFBHX0dFVF9DT0xMQVRJ T04oKSwgTlVMTCwgTlVMTCk7CiAKIAkvKiBMb29wIG92ZXIgc291cmNlIGRhdGEgKi8KIAlu aXRlbXMgPSBBcnJheUdldE5JdGVtcyhuZGltcywgZGltcyk7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9hZHQvbGlrZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2xpa2Uu YwppbmRleCA4NTNjOWMwMWU5Li43MDRlNTcyMGNmIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC91dGlscy9hZHQvbGlrZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9saWtlLmMK QEAgLTQ1LDcgKzQ1LDcgQEAgc3RhdGljIGludCBVVEY4X01hdGNoVGV4dChjb25zdCBjaGFy ICp0LCBpbnQgdGxlbiwgY29uc3QgY2hhciAqcCwgaW50IHBsZW4sCiBzdGF0aWMgaW50IFNC X0lNYXRjaFRleHQoY29uc3QgY2hhciAqdCwgaW50IHRsZW4sIGNvbnN0IGNoYXIgKnAsIGlu dCBwbGVuLAogCQkJICBwZ19sb2NhbGVfdCBsb2NhbGUsIGJvb2wgbG9jYWxlX2lzX2MpOwog Ci1zdGF0aWMgaW50CUdlbmVyaWNNYXRjaFRleHQoY29uc3QgY2hhciAqcywgaW50IHNsZW4s IGNvbnN0IGNoYXIgKnAsIGludCBwbGVuKTsKK3N0YXRpYyBpbnQJR2VuZXJpY01hdGNoVGV4 dChjb25zdCBjaGFyICpzLCBpbnQgc2xlbiwgY29uc3QgY2hhciAqcCwgaW50IHBsZW4sIE9p ZCBjb2xsYXRpb24pOwogc3RhdGljIGludAlHZW5lcmljX1RleHRfSUNfbGlrZSh0ZXh0ICpz dHIsIHRleHQgKnBhdCwgT2lkIGNvbGxhdGlvbik7CiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0t LS0KQEAgLTE0OCw4ICsxNDgsMTggQEAgU0JfbG93ZXJfY2hhcih1bnNpZ25lZCBjaGFyIGMs IHBnX2xvY2FsZV90IGxvY2FsZSwgYm9vbCBsb2NhbGVfaXNfYykKIAogLyogR2VuZXJpYyBm b3IgYWxsIGNhc2VzIG5vdCByZXF1aXJpbmcgaW5saW5lIGNhc2UtZm9sZGluZyAqLwogc3Rh dGljIGlubGluZSBpbnQKLUdlbmVyaWNNYXRjaFRleHQoY29uc3QgY2hhciAqcywgaW50IHNs ZW4sIGNvbnN0IGNoYXIgKnAsIGludCBwbGVuKQorR2VuZXJpY01hdGNoVGV4dChjb25zdCBj aGFyICpzLCBpbnQgc2xlbiwgY29uc3QgY2hhciAqcCwgaW50IHBsZW4sIE9pZCBjb2xsYXRp b24pCiB7CisJaWYgKGNvbGxhdGlvbiAmJiAhbGNfY3R5cGVfaXNfYyhjb2xsYXRpb24pICYm IGNvbGxhdGlvbiAhPSBERUZBVUxUX0NPTExBVElPTl9PSUQpCisJeworCQlwZ19sb2NhbGVf dAkJbG9jYWxlID0gcGdfbmV3bG9jYWxlX2Zyb21fY29sbGF0aW9uKGNvbGxhdGlvbik7CisK KwkJaWYgKGxvY2FsZSAmJiAhbG9jYWxlLT5kZXRlcm1pbmlzdGljKQorCQkJZXJlcG9ydChF UlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAor CQkJCQkgZXJybXNnKCJub25kZXRlcm1pbmlzdGljIGNvbGxhdGlvbnMgYXJlIG5vdCBzdXBw b3J0ZWQgZm9yIExJS0UiKSkpOworCX0KKwogCWlmIChwZ19kYXRhYmFzZV9lbmNvZGluZ19t YXhfbGVuZ3RoKCkgPT0gMSkKIAkJcmV0dXJuIFNCX01hdGNoVGV4dChzLCBzbGVuLCBwLCBw bGVuLCAwLCB0cnVlKTsKIAllbHNlIGlmIChHZXREYXRhYmFzZUVuY29kaW5nKCkgPT0gUEdf VVRGOCkKQEAgLTE4NCw2ICsxOTQsMTEgQEAgR2VuZXJpY19UZXh0X0lDX2xpa2UodGV4dCAq c3RyLCB0ZXh0ICpwYXQsIE9pZCBjb2xsYXRpb24pCiAJCQkJCSBlcnJoaW50KCJVc2UgdGhl IENPTExBVEUgY2xhdXNlIHRvIHNldCB0aGUgY29sbGF0aW9uIGV4cGxpY2l0bHkuIikpKTsK IAkJfQogCQlsb2NhbGUgPSBwZ19uZXdsb2NhbGVfZnJvbV9jb2xsYXRpb24oY29sbGF0aW9u KTsKKworCQlpZiAobG9jYWxlICYmICFsb2NhbGUtPmRldGVybWluaXN0aWMpCisJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRF RCksCisJCQkJCSBlcnJtc2coIm5vbmRldGVybWluaXN0aWMgY29sbGF0aW9ucyBhcmUgbm90 IHN1cHBvcnRlZCBmb3IgSUxJS0UiKSkpOwogCX0KIAogCS8qCkBAIC0yNDAsNyArMjU1LDcg QEAgbmFtZWxpa2UoUEdfRlVOQ1RJT05fQVJHUykKIAlwID0gVkFSREFUQV9BTlkocGF0KTsK IAlwbGVuID0gVkFSU0laRV9BTllfRVhIRFIocGF0KTsKIAotCXJlc3VsdCA9IChHZW5lcmlj TWF0Y2hUZXh0KHMsIHNsZW4sIHAsIHBsZW4pID09IExJS0VfVFJVRSk7CisJcmVzdWx0ID0g KEdlbmVyaWNNYXRjaFRleHQocywgc2xlbiwgcCwgcGxlbiwgUEdfR0VUX0NPTExBVElPTigp KSA9PSBMSUtFX1RSVUUpOwogCiAJUEdfUkVUVVJOX0JPT0wocmVzdWx0KTsKIH0KQEAgLTI2 MSw3ICsyNzYsNyBAQCBuYW1lbmxpa2UoUEdfRlVOQ1RJT05fQVJHUykKIAlwID0gVkFSREFU QV9BTlkocGF0KTsKIAlwbGVuID0gVkFSU0laRV9BTllfRVhIRFIocGF0KTsKIAotCXJlc3Vs dCA9IChHZW5lcmljTWF0Y2hUZXh0KHMsIHNsZW4sIHAsIHBsZW4pICE9IExJS0VfVFJVRSk7 CisJcmVzdWx0ID0gKEdlbmVyaWNNYXRjaFRleHQocywgc2xlbiwgcCwgcGxlbiwgUEdfR0VU X0NPTExBVElPTigpKSAhPSBMSUtFX1RSVUUpOwogCiAJUEdfUkVUVVJOX0JPT0wocmVzdWx0 KTsKIH0KQEAgLTI4Miw3ICsyOTcsNyBAQCB0ZXh0bGlrZShQR19GVU5DVElPTl9BUkdTKQog CXAgPSBWQVJEQVRBX0FOWShwYXQpOwogCXBsZW4gPSBWQVJTSVpFX0FOWV9FWEhEUihwYXQp OwogCi0JcmVzdWx0ID0gKEdlbmVyaWNNYXRjaFRleHQocywgc2xlbiwgcCwgcGxlbikgPT0g TElLRV9UUlVFKTsKKwlyZXN1bHQgPSAoR2VuZXJpY01hdGNoVGV4dChzLCBzbGVuLCBwLCBw bGVuLCBQR19HRVRfQ09MTEFUSU9OKCkpID09IExJS0VfVFJVRSk7CiAKIAlQR19SRVRVUk5f Qk9PTChyZXN1bHQpOwogfQpAQCAtMzAzLDcgKzMxOCw3IEBAIHRleHRubGlrZShQR19GVU5D VElPTl9BUkdTKQogCXAgPSBWQVJEQVRBX0FOWShwYXQpOwogCXBsZW4gPSBWQVJTSVpFX0FO WV9FWEhEUihwYXQpOwogCi0JcmVzdWx0ID0gKEdlbmVyaWNNYXRjaFRleHQocywgc2xlbiwg cCwgcGxlbikgIT0gTElLRV9UUlVFKTsKKwlyZXN1bHQgPSAoR2VuZXJpY01hdGNoVGV4dChz LCBzbGVuLCBwLCBwbGVuLCBQR19HRVRfQ09MTEFUSU9OKCkpICE9IExJS0VfVFJVRSk7CiAK IAlQR19SRVRVUk5fQk9PTChyZXN1bHQpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L25hbWUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9uYW1lLmMKaW5kZXgg M2E3ODg3ZDQ1NS4uNTQ0MjU5MjVlZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L25hbWUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbmFtZS5jCkBAIC0xMzEs MTQgKzEzMSwyNiBAQCBuYW1lc2VuZChQR19GVU5DVElPTl9BUkdTKQogICogaGF2ZSBhICdc MCcgdGVybWluYXRvci4gIFdoYXRldmVyIG1pZ2h0IGJlIHBhc3QgdGhlIHRlcm1pbmF0b3Ig aXMgbm90CiAgKiBjb25zaWRlcmVkIHJlbGV2YW50IHRvIGNvbXBhcmlzb25zLgogICovCitz dGF0aWMgaW50CituYW1lY21wKE5hbWUgYXJnMSwgTmFtZSBhcmcyLCBPaWQgY29sbGlkKQor eworCS8qIEZhc3QgcGF0aCBmb3IgY29tbW9uIGNhc2UgdXNlZCBpbiBzeXN0ZW0gY2F0YWxv Z3MgKi8KKwlpZiAoY29sbGlkID09IENfQ09MTEFUSU9OX09JRCkKKwkJcmV0dXJuIHN0cm5j bXAoTmFtZVN0cigqYXJnMSksIE5hbWVTdHIoKmFyZzIpLCBOQU1FREFUQUxFTik7CisKKwkv KiBFbHNlIHJlbHkgb24gdGhlIHZhcnN0ciBpbmZyYXN0cnVjdHVyZSAqLworCXJldHVybiB2 YXJzdHJfY21wKE5hbWVTdHIoKmFyZzEpLCBzdHJsZW4oTmFtZVN0cigqYXJnMSkpLAorCQkJ CQkgIE5hbWVTdHIoKmFyZzIpLCBzdHJsZW4oTmFtZVN0cigqYXJnMikpLAorCQkJCQkgIGNv bGxpZCk7Cit9CisKIERhdHVtCiBuYW1lZXEoUEdfRlVOQ1RJT05fQVJHUykKIHsKIAlOYW1l CQlhcmcxID0gUEdfR0VUQVJHX05BTUUoMCk7CiAJTmFtZQkJYXJnMiA9IFBHX0dFVEFSR19O QU1FKDEpOwogCi0JLyogQ29sbGF0aW9uIGRvZXNuJ3QgbWF0dGVyOiBlcXVhbCBvbmx5IGlm IGJpdHdpc2UtZXF1YWwgKi8KLQlQR19SRVRVUk5fQk9PTChzdHJuY21wKE5hbWVTdHIoKmFy ZzEpLCBOYW1lU3RyKCphcmcyKSwgTkFNRURBVEFMRU4pID09IDApOworCVBHX1JFVFVSTl9C T09MKG5hbWVjbXAoYXJnMSwgYXJnMiwgUEdfR0VUX0NPTExBVElPTigpKSA9PSAwKTsKIH0K IAogRGF0dW0KQEAgLTE0NywyMSArMTU5LDcgQEAgbmFtZW5lKFBHX0ZVTkNUSU9OX0FSR1Mp CiAJTmFtZQkJYXJnMSA9IFBHX0dFVEFSR19OQU1FKDApOwogCU5hbWUJCWFyZzIgPSBQR19H RVRBUkdfTkFNRSgxKTsKIAotCS8qIENvbGxhdGlvbiBkb2Vzbid0IG1hdHRlcjogZXF1YWwg b25seSBpZiBiaXR3aXNlLWVxdWFsICovCi0JUEdfUkVUVVJOX0JPT0woc3RybmNtcChOYW1l U3RyKCphcmcxKSwgTmFtZVN0cigqYXJnMiksIE5BTUVEQVRBTEVOKSAhPSAwKTsKLX0KLQot c3RhdGljIGludAotbmFtZWNtcChOYW1lIGFyZzEsIE5hbWUgYXJnMiwgT2lkIGNvbGxpZCkK LXsKLQkvKiBGYXN0IHBhdGggZm9yIGNvbW1vbiBjYXNlIHVzZWQgaW4gc3lzdGVtIGNhdGFs b2dzICovCi0JaWYgKGNvbGxpZCA9PSBDX0NPTExBVElPTl9PSUQpCi0JCXJldHVybiBzdHJu Y21wKE5hbWVTdHIoKmFyZzEpLCBOYW1lU3RyKCphcmcyKSwgTkFNRURBVEFMRU4pOwotCi0J LyogRWxzZSByZWx5IG9uIHRoZSB2YXJzdHIgaW5mcmFzdHJ1Y3R1cmUgKi8KLQlyZXR1cm4g dmFyc3RyX2NtcChOYW1lU3RyKCphcmcxKSwgc3RybGVuKE5hbWVTdHIoKmFyZzEpKSwKLQkJ CQkJICBOYW1lU3RyKCphcmcyKSwgc3RybGVuKE5hbWVTdHIoKmFyZzIpKSwKLQkJCQkJICBj b2xsaWQpOworCVBHX1JFVFVSTl9CT09MKG5hbWVjbXAoYXJnMSwgYXJnMiwgUEdfR0VUX0NP TExBVElPTigpKSAhPSAwKTsKIH0KIAogRGF0dW0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9vcmRlcmVkc2V0YWdncy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L29y ZGVyZWRzZXRhZ2dzLmMKaW5kZXggMmQzODRhOTk0NC4uNGRiMmQwZDBlMSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L29yZGVyZWRzZXRhZ2dzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L29yZGVyZWRzZXRhZ2dzLmMKQEAgLTEwODQsNyArMTA4NCw3IEBA IG1vZGVfZmluYWwoUEdfRlVOQ1RJT05fQVJHUykKIAkJCWxhc3RfYWJicmV2X3ZhbCA9IGFi YnJldl92YWw7CiAJCX0KIAkJZWxzZSBpZiAoYWJicmV2X3ZhbCA9PSBsYXN0X2FiYnJldl92 YWwgJiYKLQkJCQkgRGF0dW1HZXRCb29sKEZ1bmN0aW9uQ2FsbDIoZXF1YWxmbiwgdmFsLCBs YXN0X3ZhbCkpKQorCQkJCSBEYXR1bUdldEJvb2woRnVuY3Rpb25DYWxsMkNvbGwoZXF1YWxm biwgUEdfR0VUX0NPTExBVElPTigpLCB2YWwsIGxhc3RfdmFsKSkpCiAJCXsKIAkJCS8qIHZh bHVlIGVxdWFsIHRvIHByZXZpb3VzIHZhbHVlLCBjb3VudCBpdCAqLwogCQkJaWYgKGxhc3Rf dmFsX2lzX21vZGUpCkBAIC0xMzQ1LDYgKzEzNDUsNyBAQCBoeXBvdGhldGljYWxfZGVuc2Vf cmFua19maW5hbChQR19GVU5DVElPTl9BUkdTKQogCQkJCQkJCQkJCQkgIG51bURpc3RpbmN0 Q29scywKIAkJCQkJCQkJCQkJICBzb3J0Q29sSWR4LAogCQkJCQkJCQkJCQkgIG9zYXN0YXRl LT5xc3RhdGUtPmVxT3BlcmF0b3JzLAorCQkJCQkJCQkJCQkgIG9zYXN0YXRlLT5xc3RhdGUt PnNvcnRDb2xsYXRpb25zLAogCQkJCQkJCQkJCQkgIE5VTEwpOwogCQlNZW1vcnlDb250ZXh0 U3dpdGNoVG8ob2xkQ29udGV4dCk7CiAJCW9zYXN0YXRlLT5xc3RhdGUtPmNvbXBhcmVUdXBs ZSA9IGNvbXBhcmVUdXBsZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9w Z19sb2NhbGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGUuYwppbmRleCA1 MGI4YjMxNjQ1Li4xZjdmZGMwNTkzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvcGdfbG9jYWxlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZS5j CkBAIC0xMzA4LDYgKzEzMDgsNyBAQCBwZ19uZXdsb2NhbGVfZnJvbV9jb2xsYXRpb24oT2lk IGNvbGxpZCkKIAkJLyogV2UnbGwgZmlsbCBpbiB0aGUgcmVzdWx0IHN0cnVjdCBsb2NhbGx5 IGJlZm9yZSBhbGxvY2F0aW5nIG1lbW9yeSAqLwogCQltZW1zZXQoJnJlc3VsdCwgMCwgc2l6 ZW9mKHJlc3VsdCkpOwogCQlyZXN1bHQucHJvdmlkZXIgPSBjb2xsZm9ybS0+Y29sbHByb3Zp ZGVyOworCQlyZXN1bHQuZGV0ZXJtaW5pc3RpYyA9IGNvbGxmb3JtLT5jb2xsaXNkZXRlcm1p bmlzdGljOwogCiAJCWlmIChjb2xsZm9ybS0+Y29sbHByb3ZpZGVyID09IENPTExQUk9WSURF Ul9MSUJDKQogCQl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJp Z2dlcnMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCmluZGV4IGUx YWEzZDAwNDQuLjU1NDg4ZjExOTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9yaV90cmlnZ2Vycy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vy cy5jCkBAIC03NzgsNiArNzc4LDggQEAgcmlfcmVzdHJpY3QoVHJpZ2dlckRhdGEgKnRyaWdk YXRhLCBib29sIGlzX25vX2FjdGlvbikKIAkJCQl7CiAJCQkJCU9pZAkJCXBrX3R5cGUgPSBS SUF0dFR5cGUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pOwogCQkJCQlPaWQJCQlm a190eXBlID0gUklBdHRUeXBlKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKKwkJ CQkJT2lkCQkJcGtfY29sbCA9IFJJQXR0Q29sbGF0aW9uKHBrX3JlbCwgcmlpbmZvLT5wa19h dHRudW1zW2ldKTsKKwkJCQkJT2lkCQkJZmtfY29sbCA9IFJJQXR0Q29sbGF0aW9uKGZrX3Jl bCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKIAogCQkJCQlxdW90ZU9uZU5hbWUoYXR0bmFt ZSwKIAkJCQkJCQkJIFJJQXR0TmFtZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSkp OwpAQCAtNzg2LDYgKzc4OCw4IEBAIHJpX3Jlc3RyaWN0KFRyaWdnZXJEYXRhICp0cmlnZGF0 YSwgYm9vbCBpc19ub19hY3Rpb24pCiAJCQkJCQkJCQlwYXJhbW5hbWUsIHBrX3R5cGUsCiAJ CQkJCQkJCQlyaWluZm8tPnBmX2VxX29wcnNbaV0sCiAJCQkJCQkJCQlhdHRuYW1lLCBma190 eXBlKTsKKwkJCQkJaWYgKHBrX2NvbGwgIT0gZmtfY29sbCAmJiAhZ2V0X2NvbGxhdGlvbl9p c2RldGVybWluaXN0aWMocGtfY29sbCkpCisJCQkJCQlyaV9HZW5lcmF0ZVF1YWxDb2xsYXRp b24oJnF1ZXJ5YnVmLCBwa19jb2xsKTsKIAkJCQkJcXVlcnlzZXAgPSAiQU5EIjsKIAkJCQkJ cXVlcnlvaWRzW2ldID0gcGtfdHlwZTsKIAkJCQl9CkBAIC05MTgsNiArOTIyLDggQEAgUklf RktleV9jYXNjYWRlX2RlbChQR19GVU5DVElPTl9BUkdTKQogCQkJCXsKIAkJCQkJT2lkCQkJ cGtfdHlwZSA9IFJJQXR0VHlwZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7CiAJ CQkJCU9pZAkJCWZrX3R5cGUgPSBSSUF0dFR5cGUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51 bXNbaV0pOworCQkJCQlPaWQJCQlwa19jb2xsID0gUklBdHRDb2xsYXRpb24ocGtfcmVsLCBy aWluZm8tPnBrX2F0dG51bXNbaV0pOworCQkJCQlPaWQJCQlma19jb2xsID0gUklBdHRDb2xs YXRpb24oZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pOwogCiAJCQkJCXF1b3RlT25l TmFtZShhdHRuYW1lLAogCQkJCQkJCQkgUklBdHROYW1lKGZrX3JlbCwgcmlpbmZvLT5ma19h dHRudW1zW2ldKSk7CkBAIC05MjYsNiArOTMyLDggQEAgUklfRktleV9jYXNjYWRlX2RlbChQ R19GVU5DVElPTl9BUkdTKQogCQkJCQkJCQkJcGFyYW1uYW1lLCBwa190eXBlLAogCQkJCQkJ CQkJcmlpbmZvLT5wZl9lcV9vcHJzW2ldLAogCQkJCQkJCQkJYXR0bmFtZSwgZmtfdHlwZSk7 CisJCQkJCWlmIChwa19jb2xsICE9IGZrX2NvbGwgJiYgIWdldF9jb2xsYXRpb25faXNkZXRl cm1pbmlzdGljKHBrX2NvbGwpKQorCQkJCQkJcmlfR2VuZXJhdGVRdWFsQ29sbGF0aW9uKCZx dWVyeWJ1ZiwgcGtfY29sbCk7CiAJCQkJCXF1ZXJ5c2VwID0gIkFORCI7CiAJCQkJCXF1ZXJ5 b2lkc1tpXSA9IHBrX3R5cGU7CiAJCQkJfQpAQCAtMTA2OSw2ICsxMDc3LDggQEAgUklfRktl eV9jYXNjYWRlX3VwZChQR19GVU5DVElPTl9BUkdTKQogCQkJCXsKIAkJCQkJT2lkCQkJcGtf dHlwZSA9IFJJQXR0VHlwZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7CiAJCQkJ CU9pZAkJCWZrX3R5cGUgPSBSSUF0dFR5cGUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNb aV0pOworCQkJCQlPaWQJCQlwa19jb2xsID0gUklBdHRDb2xsYXRpb24ocGtfcmVsLCByaWlu Zm8tPnBrX2F0dG51bXNbaV0pOworCQkJCQlPaWQJCQlma19jb2xsID0gUklBdHRDb2xsYXRp b24oZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pOwogCiAJCQkJCXF1b3RlT25lTmFt ZShhdHRuYW1lLAogCQkJCQkJCQkgUklBdHROYW1lKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRu dW1zW2ldKSk7CkBAIC0xMDgwLDYgKzEwOTAsOCBAQCBSSV9GS2V5X2Nhc2NhZGVfdXBkKFBH X0ZVTkNUSU9OX0FSR1MpCiAJCQkJCQkJCQlwYXJhbW5hbWUsIHBrX3R5cGUsCiAJCQkJCQkJ CQlyaWluZm8tPnBmX2VxX29wcnNbaV0sCiAJCQkJCQkJCQlhdHRuYW1lLCBma190eXBlKTsK KwkJCQkJaWYgKHBrX2NvbGwgIT0gZmtfY29sbCAmJiAhZ2V0X2NvbGxhdGlvbl9pc2RldGVy bWluaXN0aWMocGtfY29sbCkpCisJCQkJCQlyaV9HZW5lcmF0ZVF1YWxDb2xsYXRpb24oJnF1 ZXJ5YnVmLCBwa19jb2xsKTsKIAkJCQkJcXVlcnlzZXAgPSAiLCI7CiAJCQkJCXF1YWxzZXAg PSAiQU5EIjsKIAkJCQkJcXVlcnlvaWRzW2ldID0gcGtfdHlwZTsKQEAgLTEyNTcsNiArMTI2 OSw4IEBAIHJpX3NldG51bGwoVHJpZ2dlckRhdGEgKnRyaWdkYXRhKQogCQkJCXsKIAkJCQkJ T2lkCQkJcGtfdHlwZSA9IFJJQXR0VHlwZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tp XSk7CiAJCQkJCU9pZAkJCWZrX3R5cGUgPSBSSUF0dFR5cGUoZmtfcmVsLCByaWluZm8tPmZr X2F0dG51bXNbaV0pOworCQkJCQlPaWQJCQlwa19jb2xsID0gUklBdHRDb2xsYXRpb24ocGtf cmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pOworCQkJCQlPaWQJCQlma19jb2xsID0gUklB dHRDb2xsYXRpb24oZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pOwogCiAJCQkJCXF1 b3RlT25lTmFtZShhdHRuYW1lLAogCQkJCQkJCQkgUklBdHROYW1lKGZrX3JlbCwgcmlpbmZv LT5ma19hdHRudW1zW2ldKSk7CkBAIC0xMjY4LDYgKzEyODIsOCBAQCByaV9zZXRudWxsKFRy aWdnZXJEYXRhICp0cmlnZGF0YSkKIAkJCQkJCQkJCXBhcmFtbmFtZSwgcGtfdHlwZSwKIAkJ CQkJCQkJCXJpaW5mby0+cGZfZXFfb3Byc1tpXSwKIAkJCQkJCQkJCWF0dG5hbWUsIGZrX3R5 cGUpOworCQkJCQlpZiAocGtfY29sbCAhPSBma19jb2xsICYmICFnZXRfY29sbGF0aW9uX2lz ZGV0ZXJtaW5pc3RpYyhwa19jb2xsKSkKKwkJCQkJCXJpX0dlbmVyYXRlUXVhbENvbGxhdGlv bigmcXVlcnlidWYsIHBrX2NvbGwpOwogCQkJCQlxdWVyeXNlcCA9ICIsIjsKIAkJCQkJcXVh bHNlcCA9ICJBTkQiOwogCQkJCQlxdWVyeW9pZHNbaV0gPSBwa190eXBlOwpAQCAtMTQ0NCw2 ICsxNDYwLDggQEAgcmlfc2V0ZGVmYXVsdChUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEpCiAJCQkJ ewogCQkJCQlPaWQJCQlwa190eXBlID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19h dHRudW1zW2ldKTsKIAkJCQkJT2lkCQkJZmtfdHlwZSA9IFJJQXR0VHlwZShma19yZWwsIHJp aW5mby0+ZmtfYXR0bnVtc1tpXSk7CisJCQkJCU9pZAkJCXBrX2NvbGwgPSBSSUF0dENvbGxh dGlvbihwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7CisJCQkJCU9pZAkJCWZrX2Nv bGwgPSBSSUF0dENvbGxhdGlvbihma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CiAK IAkJCQkJcXVvdGVPbmVOYW1lKGF0dG5hbWUsCiAJCQkJCQkJCSBSSUF0dE5hbWUoZmtfcmVs LCByaWluZm8tPmZrX2F0dG51bXNbaV0pKTsKQEAgLTE0NTUsNiArMTQ3Myw4IEBAIHJpX3Nl dGRlZmF1bHQoVHJpZ2dlckRhdGEgKnRyaWdkYXRhKQogCQkJCQkJCQkJcGFyYW1uYW1lLCBw a190eXBlLAogCQkJCQkJCQkJcmlpbmZvLT5wZl9lcV9vcHJzW2ldLAogCQkJCQkJCQkJYXR0 bmFtZSwgZmtfdHlwZSk7CisJCQkJCWlmIChwa19jb2xsICE9IGZrX2NvbGwgJiYgIWdldF9j b2xsYXRpb25faXNkZXRlcm1pbmlzdGljKHBrX2NvbGwpKQorCQkJCQkJcmlfR2VuZXJhdGVR dWFsQ29sbGF0aW9uKCZxdWVyeWJ1ZiwgcGtfY29sbCk7CiAJCQkJCXF1ZXJ5c2VwID0gIiwi OwogCQkJCQlxdWFsc2VwID0gIkFORCI7CiAJCQkJCXF1ZXJ5b2lkc1tpXSA9IHBrX3R5cGU7 CkBAIC0yOTAxLDExICsyOTIxLDIwIEBAIHJpX0F0dHJpYnV0ZXNFcXVhbChPaWQgZXFfb3By LCBPaWQgdHlwZWlkLAogCX0KIAogCS8qCi0JICogQXBwbHkgdGhlIGNvbXBhcmlzb24gb3Bl cmF0b3IuICBXZSBhc3N1bWUgaXQgZG9lc24ndCBjYXJlIGFib3V0Ci0JICogY29sbGF0aW9u cy4KLQkgKi8KLQlyZXR1cm4gRGF0dW1HZXRCb29sKEZ1bmN0aW9uQ2FsbDIoJmVudHJ5LT5l cV9vcHJfZmluZm8sCi0JCQkJCQkJCQkgIG9sZHZhbHVlLCBuZXd2YWx1ZSkpOworCSAqIEFw cGx5IHRoZSBjb21wYXJpc29uIG9wZXJhdG9yLgorCSAqCisJICogTm90ZTogVGhpcyBmdW5j dGlvbiBpcyBwYXJ0IG9mIGEgY2FsbCBzdGFjayB0aGF0IGRldGVybWluZXMgd2hldGhlciBh bgorCSAqIHVwZGF0ZSB0byBhIHJvdyBpcyBzaWduaWZpY2FudCBlbm91Z2ggdGhhdCBpdCBu ZWVkcyBjaGVja2luZyBvciBhY3Rpb24KKwkgKiBvbiB0aGUgb3RoZXIgc2lkZSBvZiBhIGZv cmVpZ24ta2V5IGNvbnN0cmFpbnQuICBUaGVyZWZvcmUsIHRoZQorCSAqIGNvbXBhcmlzb24g aGVyZSB3b3VsZCBuZWVkIHRvIGJlIGRvbmUgd2l0aCB0aGUgY29sbGF0aW9uIG9mIHRoZSAq b3RoZXIqCisJICogdGFibGUuICBGb3Igc2ltcGxpY2l0eSAoZS5nLiwgd2UgbWlnaHQgbm90 IGV2ZW4gaGF2ZSB0aGUgb3RoZXIgdGFibGUKKwkgKiBvcGVuKSwgd2UnbGwganVzdCB1c2Ug dGhlIGRlZmF1bHQgY29sbGF0aW9uIGhlcmUsIHdoaWNoIGNvdWxkIGxlYWQgdG8KKwkgKiBz b21lIGZhbHNlIG5lZ2F0aXZlcy4gIEFsbCB0aGlzIHdvdWxkIGJyZWFrIGlmIHdlIGV2ZXIg YWxsb3cKKwkgKiBkYXRhYmFzZS13aWRlIGNvbGxhdGlvbnMgdG8gYmUgbm9uZGV0ZXJtaW5p c3RpYy4KKwkgKi8KKwlyZXR1cm4gRGF0dW1HZXRCb29sKEZ1bmN0aW9uQ2FsbDJDb2xsKCZl bnRyeS0+ZXFfb3ByX2ZpbmZvLAorCQkJCQkJCQkJCSAgREVGQVVMVF9DT0xMQVRJT05fT0lE LAorCQkJCQkJCQkJCSAgb2xkdmFsdWUsIG5ld3ZhbHVlKSk7CiB9CiAKIC8qIC0tLS0tLS0t LS0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC92YXJjaGFyLmMgYi9zcmMv YmFja2VuZC91dGlscy9hZHQvdmFyY2hhci5jCmluZGV4IGM4NjZhZjAyMmYuLjI2YzRiMDE3 OGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC92YXJjaGFyLmMKKysrIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3ZhcmNoYXIuYwpAQCAtMjQsNiArMjQsNyBAQAogI2lu Y2x1ZGUgIm5vZGVzL3N1cHBvcnRub2Rlcy5oIgogI2luY2x1ZGUgInV0aWxzL2FycmF5Lmgi CiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9wZ19sb2Nh bGUuaCIKICNpbmNsdWRlICJ1dGlscy92YXJsZW5hLmgiCiAjaW5jbHVkZSAibWIvcGdfd2No YXIuaCIKIApAQCAtNzE4LDYgKzcxOSwyMiBAQCBicGNoYXJvY3RldGxlbihQR19GVU5DVElP Tl9BUkdTKQogICogbmVlZCB0byBiZSBzbyBjYXJlZnVsLgogICoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLwogCitzdGF0aWMgdm9pZAorY2hlY2tfY29sbGF0aW9uX3NldChPaWQgY29sbGlk KQoreworCWlmICghT2lkSXNWYWxpZChjb2xsaWQpKQorCXsKKwkJLyoKKwkJICogVGhpcyB0 eXBpY2FsbHkgbWVhbnMgdGhhdCB0aGUgcGFyc2VyIGNvdWxkIG5vdCByZXNvbHZlIGEgY29u ZmxpY3QKKwkJICogb2YgaW1wbGljaXQgY29sbGF0aW9ucywgc28gcmVwb3J0IGl0IHRoYXQg d2F5LgorCQkgKi8KKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lO REVURVJNSU5BVEVfQ09MTEFUSU9OKSwKKwkJCQkgZXJybXNnKCJjb3VsZCBub3QgZGV0ZXJt aW5lIHdoaWNoIGNvbGxhdGlvbiB0byB1c2UgZm9yIHN0cmluZyBjb21wYXJpc29uIiksCisJ CQkJIGVycmhpbnQoIlVzZSB0aGUgQ09MTEFURSBjbGF1c2UgdG8gc2V0IHRoZSBjb2xsYXRp b24gZXhwbGljaXRseS4iKSkpOworCX0KK30KKwogRGF0dW0KIGJwY2hhcmVxKFBHX0ZVTkNU SU9OX0FSR1MpCiB7CkBAIC03MjYsMTggKzc0MywzMSBAQCBicGNoYXJlcShQR19GVU5DVElP Tl9BUkdTKQogCWludAkJCWxlbjEsCiAJCQkJbGVuMjsKIAlib29sCQlyZXN1bHQ7CisJT2lk CQkJY29sbGlkID0gUEdfR0VUX0NPTExBVElPTigpOworCisJY2hlY2tfY29sbGF0aW9uX3Nl dChjb2xsaWQpOwogCiAJbGVuMSA9IGJjVHJ1ZWxlbihhcmcxKTsKIAlsZW4yID0gYmNUcnVl bGVuKGFyZzIpOwogCi0JLyoKLQkgKiBTaW5jZSB3ZSBvbmx5IGNhcmUgYWJvdXQgZXF1YWxp dHkgb3Igbm90LWVxdWFsaXR5LCB3ZSBjYW4gYXZvaWQgYWxsIHRoZQotCSAqIGV4cGVuc2Ug b2Ygc3RyY29sbCgpIGhlcmUsIGFuZCBqdXN0IGRvIGJpdHdpc2UgY29tcGFyaXNvbi4KLQkg Ki8KLQlpZiAobGVuMSAhPSBsZW4yKQotCQlyZXN1bHQgPSBmYWxzZTsKKwlpZiAobGNfY29s bGF0ZV9pc19jKGNvbGxpZCkgfHwKKwkJY29sbGlkID09IERFRkFVTFRfQ09MTEFUSU9OX09J RCB8fAorCQlwZ19uZXdsb2NhbGVfZnJvbV9jb2xsYXRpb24oY29sbGlkKS0+ZGV0ZXJtaW5p c3RpYykKKwl7CisJCS8qCisJCSAqIFNpbmNlIHdlIG9ubHkgY2FyZSBhYm91dCBlcXVhbGl0 eSBvciBub3QtZXF1YWxpdHksIHdlIGNhbiBhdm9pZCBhbGwgdGhlCisJCSAqIGV4cGVuc2Ug b2Ygc3RyY29sbCgpIGhlcmUsIGFuZCBqdXN0IGRvIGJpdHdpc2UgY29tcGFyaXNvbi4KKwkJ ICovCisJCWlmIChsZW4xICE9IGxlbjIpCisJCQlyZXN1bHQgPSBmYWxzZTsKKwkJZWxzZQor CQkJcmVzdWx0ID0gKG1lbWNtcChWQVJEQVRBX0FOWShhcmcxKSwgVkFSREFUQV9BTlkoYXJn MiksIGxlbjEpID09IDApOworCX0KIAllbHNlCi0JCXJlc3VsdCA9IChtZW1jbXAoVkFSREFU QV9BTlkoYXJnMSksIFZBUkRBVEFfQU5ZKGFyZzIpLCBsZW4xKSA9PSAwKTsKKwl7CisJCXJl c3VsdCA9ICh2YXJzdHJfY21wKFZBUkRBVEFfQU5ZKGFyZzEpLCBsZW4xLCBWQVJEQVRBX0FO WShhcmcyKSwgbGVuMiwKKwkJCQkJCQkgY29sbGlkKSA9PSAwKTsKKwl9CiAKIAlQR19GUkVF X0lGX0NPUFkoYXJnMSwgMCk7CiAJUEdfRlJFRV9JRl9DT1BZKGFyZzIsIDEpOwpAQCAtNzUz LDE4ICs3ODMsMjkgQEAgYnBjaGFybmUoUEdfRlVOQ1RJT05fQVJHUykKIAlpbnQJCQlsZW4x LAogCQkJCWxlbjI7CiAJYm9vbAkJcmVzdWx0OworCU9pZAkJCWNvbGxpZCA9IFBHX0dFVF9D T0xMQVRJT04oKTsKIAogCWxlbjEgPSBiY1RydWVsZW4oYXJnMSk7CiAJbGVuMiA9IGJjVHJ1 ZWxlbihhcmcyKTsKIAotCS8qCi0JICogU2luY2Ugd2Ugb25seSBjYXJlIGFib3V0IGVxdWFs aXR5IG9yIG5vdC1lcXVhbGl0eSwgd2UgY2FuIGF2b2lkIGFsbCB0aGUKLQkgKiBleHBlbnNl IG9mIHN0cmNvbGwoKSBoZXJlLCBhbmQganVzdCBkbyBiaXR3aXNlIGNvbXBhcmlzb24uCi0J ICovCi0JaWYgKGxlbjEgIT0gbGVuMikKLQkJcmVzdWx0ID0gdHJ1ZTsKKwlpZiAobGNfY29s bGF0ZV9pc19jKGNvbGxpZCkgfHwKKwkJY29sbGlkID09IERFRkFVTFRfQ09MTEFUSU9OX09J RCB8fAorCQlwZ19uZXdsb2NhbGVfZnJvbV9jb2xsYXRpb24oY29sbGlkKS0+ZGV0ZXJtaW5p c3RpYykKKwl7CisJCS8qCisJCSAqIFNpbmNlIHdlIG9ubHkgY2FyZSBhYm91dCBlcXVhbGl0 eSBvciBub3QtZXF1YWxpdHksIHdlIGNhbiBhdm9pZCBhbGwgdGhlCisJCSAqIGV4cGVuc2Ug b2Ygc3RyY29sbCgpIGhlcmUsIGFuZCBqdXN0IGRvIGJpdHdpc2UgY29tcGFyaXNvbi4KKwkJ ICovCisJCWlmIChsZW4xICE9IGxlbjIpCisJCQlyZXN1bHQgPSB0cnVlOworCQllbHNlCisJ CQlyZXN1bHQgPSAobWVtY21wKFZBUkRBVEFfQU5ZKGFyZzEpLCBWQVJEQVRBX0FOWShhcmcy KSwgbGVuMSkgIT0gMCk7CisJfQogCWVsc2UKLQkJcmVzdWx0ID0gKG1lbWNtcChWQVJEQVRB X0FOWShhcmcxKSwgVkFSREFUQV9BTlkoYXJnMiksIGxlbjEpICE9IDApOworCXsKKwkJcmVz dWx0ID0gKHZhcnN0cl9jbXAoVkFSREFUQV9BTlkoYXJnMSksIGxlbjEsIFZBUkRBVEFfQU5Z KGFyZzIpLCBsZW4yLAorCQkJCQkJCSBjb2xsaWQpICE9IDApOworCX0KIAogCVBHX0ZSRUVf SUZfQ09QWShhcmcxLCAwKTsKIAlQR19GUkVFX0lGX0NPUFkoYXJnMiwgMSk7CkBAIC05MzQs MjMgKzk3NSw2MCBAQCBicGNoYXJfc21hbGxlcihQR19GVU5DVElPTl9BUkdTKQogLyoKICAq IGJwY2hhciBuZWVkcyBhIHNwZWNpYWxpemVkIGhhc2ggZnVuY3Rpb24gYmVjYXVzZSB3ZSB3 YW50IHRvIGlnbm9yZQogICogdHJhaWxpbmcgYmxhbmtzIGluIGNvbXBhcmlzb25zLgotICoK LSAqIE5vdGU6IGN1cnJlbnRseSB0aGVyZSBpcyBubyBuZWVkIGZvciBsb2NhbGUtc3BlY2lm aWMgYmVoYXZpb3IgaGVyZSwKLSAqIGJ1dCBpZiB3ZSBldmVyIGNoYW5nZSB0aGUgc2VtYW50 aWNzIG9mIGJwY2hhciBjb21wYXJpc29uIHRvIHRydXN0Ci0gKiBzdHJjb2xsKCkgY29tcGxl dGVseSwgd2UnZCBuZWVkIHRvIGRvIHNvbWV0aGluZyBkaWZmZXJlbnQgaW4gbm9uLUMgbG9j YWxlcy4KICAqLwogRGF0dW0KIGhhc2hicGNoYXIoUEdfRlVOQ1RJT05fQVJHUykKIHsKIAlC cENoYXIJICAgKmtleSA9IFBHX0dFVEFSR19CUENIQVJfUFAoMCk7CisJT2lkCQkJY29sbGlk ID0gUEdfR0VUX0NPTExBVElPTigpOwogCWNoYXIJICAgKmtleWRhdGE7CiAJaW50CQkJa2V5 bGVuOworCXBnX2xvY2FsZV90CW15bG9jYWxlID0gMDsKIAlEYXR1bQkJcmVzdWx0OwogCisJ aWYgKCFjb2xsaWQpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9J TkRFVEVSTUlOQVRFX0NPTExBVElPTiksCisJCQkJIGVycm1zZygiY291bGQgbm90IGRldGVy bWluZSB3aGljaCBjb2xsYXRpb24gdG8gdXNlIGZvciBzdHJpbmcgaGFzaGluZyIpLAorCQkJ CSBlcnJoaW50KCJVc2UgdGhlIENPTExBVEUgY2xhdXNlIHRvIHNldCB0aGUgY29sbGF0aW9u IGV4cGxpY2l0bHkuIikpKTsKKwogCWtleWRhdGEgPSBWQVJEQVRBX0FOWShrZXkpOwogCWtl eWxlbiA9IGJjVHJ1ZWxlbihrZXkpOwogCi0JcmVzdWx0ID0gaGFzaF9hbnkoKHVuc2lnbmVk IGNoYXIgKikga2V5ZGF0YSwga2V5bGVuKTsKKwlpZiAoIWxjX2NvbGxhdGVfaXNfYyhjb2xs aWQpICYmIGNvbGxpZCAhPSBERUZBVUxUX0NPTExBVElPTl9PSUQpCisJCW15bG9jYWxlID0g cGdfbmV3bG9jYWxlX2Zyb21fY29sbGF0aW9uKGNvbGxpZCk7CisKKwlpZiAoIW15bG9jYWxl IHx8IG15bG9jYWxlLT5kZXRlcm1pbmlzdGljKQorCXsKKwkJcmVzdWx0ID0gaGFzaF9hbnko KHVuc2lnbmVkIGNoYXIgKikga2V5ZGF0YSwga2V5bGVuKTsKKwl9CisJZWxzZQorCXsKKyNp ZmRlZiBVU0VfSUNVCisJCWlmIChteWxvY2FsZS0+cHJvdmlkZXIgPT0gQ09MTFBST1ZJREVS X0lDVSkKKwkJeworCQkJaW50MzJfdAkJdWxlbiA9IC0xOworCQkJVUNoYXIJICAgKnVjaGFy ID0gTlVMTDsKKwkJCVNpemUJCWJzaXplOworCQkJdWludDhfdAkgICAqYnVmOworCisJCQl1 bGVuID0gaWN1X3RvX3VjaGFyKCZ1Y2hhciwga2V5ZGF0YSwga2V5bGVuKTsKKworCQkJYnNp emUgPSB1Y29sX2dldFNvcnRLZXkobXlsb2NhbGUtPmluZm8uaWN1LnVjb2wsCisJCQkJCQkJ CQl1Y2hhciwgdWxlbiwgTlVMTCwgMCk7CisJCQlidWYgPSBwYWxsb2MoYnNpemUpOworCQkJ dWNvbF9nZXRTb3J0S2V5KG15bG9jYWxlLT5pbmZvLmljdS51Y29sLAorCQkJCQkJCXVjaGFy LCB1bGVuLCBidWYsIGJzaXplKTsKKworCQkJcmVzdWx0ID0gaGFzaF9hbnkoYnVmLCBic2l6 ZSk7CisKKwkJCXBmcmVlKGJ1Zik7CisJCX0KKwkJZWxzZQorI2VuZGlmCisJCQkvKiBzaG91 bGRuJ3QgaGFwcGVuICovCisJCQllbG9nKEVSUk9SLCAidW5zdXBwb3J0ZWQgY29sbHByb3Zp ZGVyOiAlYyIsIG15bG9jYWxlLT5wcm92aWRlcik7CisJfQogCiAJLyogQXZvaWQgbGVha2lu ZyBtZW1vcnkgZm9yIHRvYXN0ZWQgaW5wdXRzICovCiAJUEdfRlJFRV9JRl9DT1BZKGtleSwg MCk7CkBAIC05NjIsMTUgKzEwNDAsNTYgQEAgRGF0dW0KIGhhc2hicGNoYXJleHRlbmRlZChQ R19GVU5DVElPTl9BUkdTKQogewogCUJwQ2hhcgkgICAqa2V5ID0gUEdfR0VUQVJHX0JQQ0hB Ul9QUCgwKTsKKwlPaWQJCQljb2xsaWQgPSBQR19HRVRfQ09MTEFUSU9OKCk7CiAJY2hhcgkg ICAqa2V5ZGF0YTsKIAlpbnQJCQlrZXlsZW47CisJcGdfbG9jYWxlX3QJbXlsb2NhbGUgPSAw OwogCURhdHVtCQlyZXN1bHQ7CiAKKwlpZiAoIWNvbGxpZCkKKwkJZXJlcG9ydChFUlJPUiwK KwkJCQkoZXJyY29kZShFUlJDT0RFX0lOREVURVJNSU5BVEVfQ09MTEFUSU9OKSwKKwkJCQkg ZXJybXNnKCJjb3VsZCBub3QgZGV0ZXJtaW5lIHdoaWNoIGNvbGxhdGlvbiB0byB1c2UgZm9y IHN0cmluZyBoYXNoaW5nIiksCisJCQkJIGVycmhpbnQoIlVzZSB0aGUgQ09MTEFURSBjbGF1 c2UgdG8gc2V0IHRoZSBjb2xsYXRpb24gZXhwbGljaXRseS4iKSkpOworCiAJa2V5ZGF0YSA9 IFZBUkRBVEFfQU5ZKGtleSk7CiAJa2V5bGVuID0gYmNUcnVlbGVuKGtleSk7CiAKLQlyZXN1 bHQgPSBoYXNoX2FueV9leHRlbmRlZCgodW5zaWduZWQgY2hhciAqKSBrZXlkYXRhLCBrZXls ZW4sCi0JCQkJCQkJICAgUEdfR0VUQVJHX0lOVDY0KDEpKTsKKwlpZiAoIWxjX2NvbGxhdGVf aXNfYyhjb2xsaWQpICYmIGNvbGxpZCAhPSBERUZBVUxUX0NPTExBVElPTl9PSUQpCisJCW15 bG9jYWxlID0gcGdfbmV3bG9jYWxlX2Zyb21fY29sbGF0aW9uKGNvbGxpZCk7CisKKwlpZiAo IW15bG9jYWxlIHx8IG15bG9jYWxlLT5kZXRlcm1pbmlzdGljKQorCXsKKwkJcmVzdWx0ID0g aGFzaF9hbnlfZXh0ZW5kZWQoKHVuc2lnbmVkIGNoYXIgKikga2V5ZGF0YSwga2V5bGVuLAor CQkJCQkJCQkgICBQR19HRVRBUkdfSU5UNjQoMSkpOworCX0KKwllbHNlCisJeworI2lmZGVm IFVTRV9JQ1UKKwkJaWYgKG15bG9jYWxlLT5wcm92aWRlciA9PSBDT0xMUFJPVklERVJfSUNV KQorCQl7CisJCQlpbnQzMl90CQl1bGVuID0gLTE7CisJCQlVQ2hhcgkgICAqdWNoYXIgPSBO VUxMOworCQkJU2l6ZQkJYnNpemU7CisJCQl1aW50OF90CSAgICpidWY7CisKKwkJCXVsZW4g PSBpY3VfdG9fdWNoYXIoJnVjaGFyLCBWQVJEQVRBX0FOWShrZXkpLCBWQVJTSVpFX0FOWV9F WEhEUihrZXkpKTsKKworCQkJYnNpemUgPSB1Y29sX2dldFNvcnRLZXkobXlsb2NhbGUtPmlu Zm8uaWN1LnVjb2wsCisJCQkJCQkJCQl1Y2hhciwgdWxlbiwgTlVMTCwgMCk7CisJCQlidWYg PSBwYWxsb2MoYnNpemUpOworCQkJdWNvbF9nZXRTb3J0S2V5KG15bG9jYWxlLT5pbmZvLmlj dS51Y29sLAorCQkJCQkJCXVjaGFyLCB1bGVuLCBidWYsIGJzaXplKTsKKworCQkJcmVzdWx0 ID0gaGFzaF9hbnlfZXh0ZW5kZWQoYnVmLCBic2l6ZSwgUEdfR0VUQVJHX0lOVDY0KDEpKTsK KworCQkJcGZyZWUoYnVmKTsKKwkJfQorCQllbHNlCisjZW5kaWYKKwkJCS8qIHNob3VsZG4n dCBoYXBwZW4gKi8KKwkJCWVsb2coRVJST1IsICJ1bnN1cHBvcnRlZCBjb2xscHJvdmlkZXI6 ICVjIiwgbXlsb2NhbGUtPnByb3ZpZGVyKTsKKwl9CiAKIAlQR19GUkVFX0lGX0NPUFkoa2V5 LCAwKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3ZhcmxlbmEuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC92YXJsZW5hLmMKaW5kZXggNjkzY2NjNTE0OS4uMWU1 YjRkNWNjNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3ZhcmxlbmEuYwor KysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvdmFybGVuYS5jCkBAIC0xMjIsMTMgKzEyMiwx NCBAQCBzdGF0aWMgdGV4dCAqdGV4dF9zdWJzdHJpbmcoRGF0dW0gc3RyLAogCQkJICAgaW50 MzIgbGVuZ3RoLAogCQkJICAgYm9vbCBsZW5ndGhfbm90X3NwZWNpZmllZCk7CiBzdGF0aWMg dGV4dCAqdGV4dF9vdmVybGF5KHRleHQgKnQxLCB0ZXh0ICp0MiwgaW50IHNwLCBpbnQgc2wp Owotc3RhdGljIGludAl0ZXh0X3Bvc2l0aW9uKHRleHQgKnQxLCB0ZXh0ICp0Mik7Ci1zdGF0 aWMgdm9pZCB0ZXh0X3Bvc2l0aW9uX3NldHVwKHRleHQgKnQxLCB0ZXh0ICp0MiwgVGV4dFBv c2l0aW9uU3RhdGUgKnN0YXRlKTsKK3N0YXRpYyBpbnQJdGV4dF9wb3NpdGlvbih0ZXh0ICp0 MSwgdGV4dCAqdDIsIE9pZCBjb2xsaWQpOworc3RhdGljIHZvaWQgdGV4dF9wb3NpdGlvbl9z ZXR1cCh0ZXh0ICp0MSwgdGV4dCAqdDIsIE9pZCBjb2xsaWQsIFRleHRQb3NpdGlvblN0YXRl ICpzdGF0ZSk7CiBzdGF0aWMgYm9vbCB0ZXh0X3Bvc2l0aW9uX25leHQoVGV4dFBvc2l0aW9u U3RhdGUgKnN0YXRlKTsKIHN0YXRpYyBjaGFyICp0ZXh0X3Bvc2l0aW9uX25leHRfaW50ZXJu YWwoY2hhciAqc3RhcnRfcHRyLCBUZXh0UG9zaXRpb25TdGF0ZSAqc3RhdGUpOwogc3RhdGlj IGNoYXIgKnRleHRfcG9zaXRpb25fZ2V0X21hdGNoX3B0cihUZXh0UG9zaXRpb25TdGF0ZSAq c3RhdGUpOwogc3RhdGljIGludAl0ZXh0X3Bvc2l0aW9uX2dldF9tYXRjaF9wb3MoVGV4dFBv c2l0aW9uU3RhdGUgKnN0YXRlKTsKIHN0YXRpYyB2b2lkIHRleHRfcG9zaXRpb25fY2xlYW51 cChUZXh0UG9zaXRpb25TdGF0ZSAqc3RhdGUpOworc3RhdGljIHZvaWQgY2hlY2tfY29sbGF0 aW9uX3NldChPaWQgY29sbGlkKTsKIHN0YXRpYyBpbnQJdGV4dF9jbXAodGV4dCAqYXJnMSwg dGV4dCAqYXJnMiwgT2lkIGNvbGxpZCk7CiBzdGF0aWMgYnl0ZWEgKmJ5dGVhX2NhdGVuYXRl KGJ5dGVhICp0MSwgYnl0ZWEgKnQyKTsKIHN0YXRpYyBieXRlYSAqYnl0ZWFfc3Vic3RyaW5n KERhdHVtIHN0ciwKQEAgLTEwOTQsNyArMTA5NSw3IEBAIHRleHRwb3MoUEdfRlVOQ1RJT05f QVJHUykKIAl0ZXh0CSAgICpzdHIgPSBQR19HRVRBUkdfVEVYVF9QUCgwKTsKIAl0ZXh0CSAg ICpzZWFyY2hfc3RyID0gUEdfR0VUQVJHX1RFWFRfUFAoMSk7CiAKLQlQR19SRVRVUk5fSU5U MzIoKGludDMyKSB0ZXh0X3Bvc2l0aW9uKHN0ciwgc2VhcmNoX3N0cikpOworCVBHX1JFVFVS Tl9JTlQzMigoaW50MzIpIHRleHRfcG9zaXRpb24oc3RyLCBzZWFyY2hfc3RyLCBQR19HRVRf Q09MTEFUSU9OKCkpKTsKIH0KIAogLyoKQEAgLTExMTIsNyArMTExMyw3IEBAIHRleHRwb3Mo UEdfRlVOQ1RJT05fQVJHUykKICAqCWZ1bmN0aW9ucy4KICAqLwogc3RhdGljIGludAotdGV4 dF9wb3NpdGlvbih0ZXh0ICp0MSwgdGV4dCAqdDIpCit0ZXh0X3Bvc2l0aW9uKHRleHQgKnQx LCB0ZXh0ICp0MiwgT2lkIGNvbGxpZCkKIHsKIAlUZXh0UG9zaXRpb25TdGF0ZSBzdGF0ZTsK IAlpbnQJCQlyZXN1bHQ7CkBAIC0xMTIwLDcgKzExMjEsNyBAQCB0ZXh0X3Bvc2l0aW9uKHRl eHQgKnQxLCB0ZXh0ICp0MikKIAlpZiAoVkFSU0laRV9BTllfRVhIRFIodDEpIDwgMSB8fCBW QVJTSVpFX0FOWV9FWEhEUih0MikgPCAxKQogCQlyZXR1cm4gMDsKIAotCXRleHRfcG9zaXRp b25fc2V0dXAodDEsIHQyLCAmc3RhdGUpOworCXRleHRfcG9zaXRpb25fc2V0dXAodDEsIHQy LCBjb2xsaWQsICZzdGF0ZSk7CiAJaWYgKCF0ZXh0X3Bvc2l0aW9uX25leHQoJnN0YXRlKSkK IAkJcmVzdWx0ID0gMDsKIAllbHNlCkBAIC0xMTQ3LDEwICsxMTQ4LDIxIEBAIHRleHRfcG9z aXRpb24odGV4dCAqdDEsIHRleHQgKnQyKQogICovCiAKIHN0YXRpYyB2b2lkCi10ZXh0X3Bv c2l0aW9uX3NldHVwKHRleHQgKnQxLCB0ZXh0ICp0MiwgVGV4dFBvc2l0aW9uU3RhdGUgKnN0 YXRlKQordGV4dF9wb3NpdGlvbl9zZXR1cCh0ZXh0ICp0MSwgdGV4dCAqdDIsIE9pZCBjb2xs aWQsIFRleHRQb3NpdGlvblN0YXRlICpzdGF0ZSkKIHsKIAlpbnQJCQlsZW4xID0gVkFSU0la RV9BTllfRVhIRFIodDEpOwogCWludAkJCWxlbjIgPSBWQVJTSVpFX0FOWV9FWEhEUih0Mik7 CisJcGdfbG9jYWxlX3QJbXlsb2NhbGUgPSAwOworCisJY2hlY2tfY29sbGF0aW9uX3NldChj b2xsaWQpOworCisJaWYgKCFsY19jb2xsYXRlX2lzX2MoY29sbGlkKSAmJiBjb2xsaWQgIT0g REVGQVVMVF9DT0xMQVRJT05fT0lEKQorCQlteWxvY2FsZSA9IHBnX25ld2xvY2FsZV9mcm9t X2NvbGxhdGlvbihjb2xsaWQpOworCisJaWYgKG15bG9jYWxlICYmICFteWxvY2FsZS0+ZGV0 ZXJtaW5pc3RpYykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0ZF QVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygibm9uZGV0ZXJtaW5pc3RpYyBj b2xsYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkIGZvciBzdWJzdHJpbmcgc2VhcmNoZXMiKSkp OwogCiAJQXNzZXJ0KGxlbjEgPiAwKTsKIAlBc3NlcnQobGVuMiA+IDApOwpAQCAtMTQyOSw2 ICsxNDQxLDIyIEBAIHRleHRfcG9zaXRpb25fY2xlYW51cChUZXh0UG9zaXRpb25TdGF0ZSAq c3RhdGUpCiAJLyogbm8gY2xlYW51cCBuZWVkZWQgKi8KIH0KIAorc3RhdGljIHZvaWQKK2No ZWNrX2NvbGxhdGlvbl9zZXQoT2lkIGNvbGxpZCkKK3sKKwlpZiAoIU9pZElzVmFsaWQoY29s bGlkKSkKKwl7CisJCS8qCisJCSAqIFRoaXMgdHlwaWNhbGx5IG1lYW5zIHRoYXQgdGhlIHBh cnNlciBjb3VsZCBub3QgcmVzb2x2ZSBhIGNvbmZsaWN0CisJCSAqIG9mIGltcGxpY2l0IGNv bGxhdGlvbnMsIHNvIHJlcG9ydCBpdCB0aGF0IHdheS4KKwkJICovCisJCWVyZXBvcnQoRVJS T1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTkRFVEVSTUlOQVRFX0NPTExBVElPTiksCisJ CQkJIGVycm1zZygiY291bGQgbm90IGRldGVybWluZSB3aGljaCBjb2xsYXRpb24gdG8gdXNl IGZvciBzdHJpbmcgY29tcGFyaXNvbiIpLAorCQkJCSBlcnJoaW50KCJVc2UgdGhlIENPTExB VEUgY2xhdXNlIHRvIHNldCB0aGUgY29sbGF0aW9uIGV4cGxpY2l0bHkuIikpKTsKKwl9Cit9 CisKIC8qIHZhcnN0cl9jbXAoKQogICogQ29tcGFyaXNvbiBmdW5jdGlvbiBmb3IgdGV4dCBz dHJpbmdzIHdpdGggZ2l2ZW4gbGVuZ3Rocy4KICAqIEluY2x1ZGVzIGxvY2FsZSBzdXBwb3J0 LCBidXQgbXVzdCBjb3B5IHN0cmluZ3MgdG8gdGVtcG9yYXJ5IG1lbW9yeQpAQCAtMTQ0MSw2 ICsxNDY5LDggQEAgdmFyc3RyX2NtcChjb25zdCBjaGFyICphcmcxLCBpbnQgbGVuMSwgY29u c3QgY2hhciAqYXJnMiwgaW50IGxlbjIsIE9pZCBjb2xsaWQpCiB7CiAJaW50CQkJcmVzdWx0 OwogCisJY2hlY2tfY29sbGF0aW9uX3NldChjb2xsaWQpOworCiAJLyoKIAkgKiBVbmZvcnR1 bmF0ZWx5LCB0aGVyZSBpcyBubyBzdHJuY29sbCgpLCBzbyBpbiB0aGUgbm9uLUMgbG9jYWxl IGNhc2Ugd2UKIAkgKiBoYXZlIHRvIGRvIHNvbWUgbWVtb3J5IGNvcHlpbmcuICBUaGlzIHR1 cm5zIG91dCB0byBiZSBzaWduaWZpY2FudGx5CkBAIC0xNDYyLDIwICsxNDkyLDcgQEAgdmFy c3RyX2NtcChjb25zdCBjaGFyICphcmcxLCBpbnQgbGVuMSwgY29uc3QgY2hhciAqYXJnMiwg aW50IGxlbjIsIE9pZCBjb2xsaWQpCiAJCXBnX2xvY2FsZV90IG15bG9jYWxlID0gMDsKIAog CQlpZiAoY29sbGlkICE9IERFRkFVTFRfQ09MTEFUSU9OX09JRCkKLQkJewotCQkJaWYgKCFP aWRJc1ZhbGlkKGNvbGxpZCkpCi0JCQl7Ci0JCQkJLyoKLQkJCQkgKiBUaGlzIHR5cGljYWxs eSBtZWFucyB0aGF0IHRoZSBwYXJzZXIgY291bGQgbm90IHJlc29sdmUgYQotCQkJCSAqIGNv bmZsaWN0IG9mIGltcGxpY2l0IGNvbGxhdGlvbnMsIHNvIHJlcG9ydCBpdCB0aGF0IHdheS4K LQkJCQkgKi8KLQkJCQllcmVwb3J0KEVSUk9SLAotCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9J TkRFVEVSTUlOQVRFX0NPTExBVElPTiksCi0JCQkJCQkgZXJybXNnKCJjb3VsZCBub3QgZGV0 ZXJtaW5lIHdoaWNoIGNvbGxhdGlvbiB0byB1c2UgZm9yIHN0cmluZyBjb21wYXJpc29uIiks Ci0JCQkJCQkgZXJyaGludCgiVXNlIHRoZSBDT0xMQVRFIGNsYXVzZSB0byBzZXQgdGhlIGNv bGxhdGlvbiBleHBsaWNpdGx5LiIpKSk7Ci0JCQl9CiAJCQlteWxvY2FsZSA9IHBnX25ld2xv Y2FsZV9mcm9tX2NvbGxhdGlvbihjb2xsaWQpOwotCQl9CiAKIAkJLyoKIAkJICogbWVtY21w KCkgY2FuJ3QgdGVsbCB1cyB3aGljaCBvZiB0d28gdW5lcXVhbCBzdHJpbmdzIHNvcnRzIGZp cnN0LApAQCAtMTU1OCwxMyArMTU3NSw5IEBAIHZhcnN0cl9jbXAoY29uc3QgY2hhciAqYXJn MSwgaW50IGxlbjEsIGNvbnN0IGNoYXIgKmFyZzIsIGludCBsZW4yLCBPaWQgY29sbGlkKQog CQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQkoZXJybXNnKCJjb3VsZCBub3QgY29tcGFyZSBV bmljb2RlIHN0cmluZ3M6ICVtIikpKTsKIAotCQkJLyoKLQkJCSAqIEluIHNvbWUgbG9jYWxl cyB3Y3Njb2xsKCkgY2FuIGNsYWltIHRoYXQgbm9uaWRlbnRpY2FsIHN0cmluZ3MKLQkJCSAq IGFyZSBlcXVhbC4gIEJlbGlldmluZyB0aGF0IHdvdWxkIGJlIGJhZCBuZXdzIGZvciBhIG51 bWJlciBvZgotCQkJICogcmVhc29ucywgc28gd2UgZm9sbG93IFBlcmwncyBsZWFkIGFuZCBz b3J0ICJlcXVhbCIgc3RyaW5ncwotCQkJICogYWNjb3JkaW5nIHRvIHN0cmNtcCAob24gdGhl IFVURi04IHJlcHJlc2VudGF0aW9uKS4KLQkJCSAqLwotCQkJaWYgKHJlc3VsdCA9PSAwKQor CQkJLyogQnJlYWsgdGllIGlmIG5lY2Vzc2FyeS4gKi8KKwkJCWlmIChyZXN1bHQgPT0gMCAm JgorCQkJCSghbXlsb2NhbGUgfHwgbXlsb2NhbGUtPmRldGVybWluaXN0aWMpKQogCQkJewog CQkJCXJlc3VsdCA9IG1lbWNtcChhcmcxLCBhcmcyLCBNaW4obGVuMSwgbGVuMikpOwogCQkJ CWlmICgocmVzdWx0ID09IDApICYmIChsZW4xICE9IGxlbjIpKQpAQCAtMTY0OSwxMyArMTY2 Miw5IEBAIHZhcnN0cl9jbXAoY29uc3QgY2hhciAqYXJnMSwgaW50IGxlbjEsIGNvbnN0IGNo YXIgKmFyZzIsIGludCBsZW4yLCBPaWQgY29sbGlkKQogCQllbHNlCiAJCQlyZXN1bHQgPSBz dHJjb2xsKGExcCwgYTJwKTsKIAotCQkvKgotCQkgKiBJbiBzb21lIGxvY2FsZXMgc3RyY29s bCgpIGNhbiBjbGFpbSB0aGF0IG5vbmlkZW50aWNhbCBzdHJpbmdzIGFyZQotCQkgKiBlcXVh bC4gIEJlbGlldmluZyB0aGF0IHdvdWxkIGJlIGJhZCBuZXdzIGZvciBhIG51bWJlciBvZiBy ZWFzb25zLAotCQkgKiBzbyB3ZSBmb2xsb3cgUGVybCdzIGxlYWQgYW5kIHNvcnQgImVxdWFs IiBzdHJpbmdzIGFjY29yZGluZyB0bwotCQkgKiBzdHJjbXAoKS4KLQkJICovCi0JCWlmIChy ZXN1bHQgPT0gMCkKKwkJLyogQnJlYWsgdGllIGlmIG5lY2Vzc2FyeS4gKi8KKwkJaWYgKHJl c3VsdCA9PSAwICYmCisJCQkoIW15bG9jYWxlIHx8IG15bG9jYWxlLT5kZXRlcm1pbmlzdGlj KSkKIAkJCXJlc3VsdCA9IHN0cmNtcChhMXAsIGEycCk7CiAKIAkJaWYgKGExcCAhPSBhMWJ1 ZikKQEAgLTE2OTksMzMgKzE3MDgsNTIgQEAgdGV4dF9jbXAodGV4dCAqYXJnMSwgdGV4dCAq YXJnMiwgT2lkIGNvbGxpZCkKIERhdHVtCiB0ZXh0ZXEoUEdfRlVOQ1RJT05fQVJHUykKIHsK LQlEYXR1bQkJYXJnMSA9IFBHX0dFVEFSR19EQVRVTSgwKTsKLQlEYXR1bQkJYXJnMiA9IFBH X0dFVEFSR19EQVRVTSgxKTsKKwlPaWQJCQljb2xsaWQgPSBQR19HRVRfQ09MTEFUSU9OKCk7 CiAJYm9vbAkJcmVzdWx0OwotCVNpemUJCWxlbjEsCi0JCQkJbGVuMjsKIAotCS8qCi0JICog U2luY2Ugd2Ugb25seSBjYXJlIGFib3V0IGVxdWFsaXR5IG9yIG5vdC1lcXVhbGl0eSwgd2Ug Y2FuIGF2b2lkIGFsbCB0aGUKLQkgKiBleHBlbnNlIG9mIHN0cmNvbGwoKSBoZXJlLCBhbmQg anVzdCBkbyBiaXR3aXNlIGNvbXBhcmlzb24uICBJbiBmYWN0LCB3ZQotCSAqIGRvbid0IGV2 ZW4gaGF2ZSB0byBkbyBhIGJpdHdpc2UgY29tcGFyaXNvbiBpZiB3ZSBjYW4gc2hvdyB0aGUg bGVuZ3RocwotCSAqIG9mIHRoZSBzdHJpbmdzIGFyZSB1bmVxdWFsOyB3aGljaCBtaWdodCBz YXZlIHVzIGZyb20gaGF2aW5nIHRvIGRldG9hc3QKLQkgKiBvbmUgb3IgYm90aCB2YWx1ZXMu Ci0JICovCi0JbGVuMSA9IHRvYXN0X3Jhd19kYXR1bV9zaXplKGFyZzEpOwotCWxlbjIgPSB0 b2FzdF9yYXdfZGF0dW1fc2l6ZShhcmcyKTsKLQlpZiAobGVuMSAhPSBsZW4yKQotCQlyZXN1 bHQgPSBmYWxzZTsKKwljaGVja19jb2xsYXRpb25fc2V0KGNvbGxpZCk7CisKKwlpZiAobGNf Y29sbGF0ZV9pc19jKGNvbGxpZCkgfHwKKwkJY29sbGlkID09IERFRkFVTFRfQ09MTEFUSU9O X09JRCB8fAorCQlwZ19uZXdsb2NhbGVfZnJvbV9jb2xsYXRpb24oY29sbGlkKS0+ZGV0ZXJt aW5pc3RpYykKKwl7CisJCURhdHVtCQlhcmcxID0gUEdfR0VUQVJHX0RBVFVNKDApOworCQlE YXR1bQkJYXJnMiA9IFBHX0dFVEFSR19EQVRVTSgxKTsKKwkJU2l6ZQkJbGVuMSwKKwkJCQkJ bGVuMjsKKworCQkvKgorCQkgKiBTaW5jZSB3ZSBvbmx5IGNhcmUgYWJvdXQgZXF1YWxpdHkg b3Igbm90LWVxdWFsaXR5LCB3ZSBjYW4gYXZvaWQgYWxsIHRoZQorCQkgKiBleHBlbnNlIG9m IHN0cmNvbGwoKSBoZXJlLCBhbmQganVzdCBkbyBiaXR3aXNlIGNvbXBhcmlzb24uICBJbiBm YWN0LCB3ZQorCQkgKiBkb24ndCBldmVuIGhhdmUgdG8gZG8gYSBiaXR3aXNlIGNvbXBhcmlz b24gaWYgd2UgY2FuIHNob3cgdGhlIGxlbmd0aHMKKwkJICogb2YgdGhlIHN0cmluZ3MgYXJl IHVuZXF1YWw7IHdoaWNoIG1pZ2h0IHNhdmUgdXMgZnJvbSBoYXZpbmcgdG8gZGV0b2FzdAor CQkgKiBvbmUgb3IgYm90aCB2YWx1ZXMuCisJCSAqLworCQlsZW4xID0gdG9hc3RfcmF3X2Rh dHVtX3NpemUoYXJnMSk7CisJCWxlbjIgPSB0b2FzdF9yYXdfZGF0dW1fc2l6ZShhcmcyKTsK KwkJaWYgKGxlbjEgIT0gbGVuMikKKwkJCXJlc3VsdCA9IGZhbHNlOworCQllbHNlCisJCXsK KwkJCXRleHQJICAgKnRhcmcxID0gRGF0dW1HZXRUZXh0UFAoYXJnMSk7CisJCQl0ZXh0CSAg ICp0YXJnMiA9IERhdHVtR2V0VGV4dFBQKGFyZzIpOworCisJCQlyZXN1bHQgPSAobWVtY21w KFZBUkRBVEFfQU5ZKHRhcmcxKSwgVkFSREFUQV9BTlkodGFyZzIpLAorCQkJCQkJCSBsZW4x IC0gVkFSSERSU1opID09IDApOworCisJCQlQR19GUkVFX0lGX0NPUFkodGFyZzEsIDApOwor CQkJUEdfRlJFRV9JRl9DT1BZKHRhcmcyLCAxKTsKKwkJfQorCX0KIAllbHNlCiAJewotCQl0 ZXh0CSAgICp0YXJnMSA9IERhdHVtR2V0VGV4dFBQKGFyZzEpOwotCQl0ZXh0CSAgICp0YXJn MiA9IERhdHVtR2V0VGV4dFBQKGFyZzIpOworCQl0ZXh0CSAgICphcmcxID0gUEdfR0VUQVJH X1RFWFRfUFAoMCk7CisJCXRleHQJICAgKmFyZzIgPSBQR19HRVRBUkdfVEVYVF9QUCgxKTsK IAotCQlyZXN1bHQgPSAobWVtY21wKFZBUkRBVEFfQU5ZKHRhcmcxKSwgVkFSREFUQV9BTlko dGFyZzIpLAotCQkJCQkJIGxlbjEgLSBWQVJIRFJTWikgPT0gMCk7CisJCXJlc3VsdCA9ICh0 ZXh0X2NtcChhcmcxLCBhcmcyLCBjb2xsaWQpID09IDApOwogCi0JCVBHX0ZSRUVfSUZfQ09Q WSh0YXJnMSwgMCk7Ci0JCVBHX0ZSRUVfSUZfQ09QWSh0YXJnMiwgMSk7CisJCVBHX0ZSRUVf SUZfQ09QWShhcmcxLCAwKTsKKwkJUEdfRlJFRV9JRl9DT1BZKGFyZzIsIDEpOwogCX0KIAog CVBHX1JFVFVSTl9CT09MKHJlc3VsdCk7CkBAIC0xNzM0LDI3ICsxNzYyLDQ2IEBAIHRleHRl cShQR19GVU5DVElPTl9BUkdTKQogRGF0dW0KIHRleHRuZShQR19GVU5DVElPTl9BUkdTKQog ewotCURhdHVtCQlhcmcxID0gUEdfR0VUQVJHX0RBVFVNKDApOwotCURhdHVtCQlhcmcyID0g UEdfR0VUQVJHX0RBVFVNKDEpOworCU9pZAkJCWNvbGxpZCA9IFBHX0dFVF9DT0xMQVRJT04o KTsKIAlib29sCQlyZXN1bHQ7Ci0JU2l6ZQkJbGVuMSwKLQkJCQlsZW4yOwogCi0JLyogU2Vl IGNvbW1lbnQgaW4gdGV4dGVxKCkgKi8KLQlsZW4xID0gdG9hc3RfcmF3X2RhdHVtX3NpemUo YXJnMSk7Ci0JbGVuMiA9IHRvYXN0X3Jhd19kYXR1bV9zaXplKGFyZzIpOwotCWlmIChsZW4x ICE9IGxlbjIpCi0JCXJlc3VsdCA9IHRydWU7CisJY2hlY2tfY29sbGF0aW9uX3NldChjb2xs aWQpOworCisJaWYgKGxjX2NvbGxhdGVfaXNfYyhjb2xsaWQpIHx8CisJCWNvbGxpZCA9PSBE RUZBVUxUX0NPTExBVElPTl9PSUQgfHwKKwkJcGdfbmV3bG9jYWxlX2Zyb21fY29sbGF0aW9u KGNvbGxpZCktPmRldGVybWluaXN0aWMpCisJeworCQlEYXR1bQkJYXJnMSA9IFBHX0dFVEFS R19EQVRVTSgwKTsKKwkJRGF0dW0JCWFyZzIgPSBQR19HRVRBUkdfREFUVU0oMSk7CisJCVNp emUJCWxlbjEsCisJCQkJCWxlbjI7CisKKwkJLyogU2VlIGNvbW1lbnQgaW4gdGV4dGVxKCkg Ki8KKwkJbGVuMSA9IHRvYXN0X3Jhd19kYXR1bV9zaXplKGFyZzEpOworCQlsZW4yID0gdG9h c3RfcmF3X2RhdHVtX3NpemUoYXJnMik7CisJCWlmIChsZW4xICE9IGxlbjIpCisJCQlyZXN1 bHQgPSB0cnVlOworCQllbHNlCisJCXsKKwkJCXRleHQJICAgKnRhcmcxID0gRGF0dW1HZXRU ZXh0UFAoYXJnMSk7CisJCQl0ZXh0CSAgICp0YXJnMiA9IERhdHVtR2V0VGV4dFBQKGFyZzIp OworCisJCQlyZXN1bHQgPSAobWVtY21wKFZBUkRBVEFfQU5ZKHRhcmcxKSwgVkFSREFUQV9B TlkodGFyZzIpLAorCQkJCQkJCSBsZW4xIC0gVkFSSERSU1opICE9IDApOworCisJCQlQR19G UkVFX0lGX0NPUFkodGFyZzEsIDApOworCQkJUEdfRlJFRV9JRl9DT1BZKHRhcmcyLCAxKTsK KwkJfQorCX0KIAllbHNlCiAJewotCQl0ZXh0CSAgICp0YXJnMSA9IERhdHVtR2V0VGV4dFBQ KGFyZzEpOwotCQl0ZXh0CSAgICp0YXJnMiA9IERhdHVtR2V0VGV4dFBQKGFyZzIpOworCQl0 ZXh0CSAgICphcmcxID0gUEdfR0VUQVJHX1RFWFRfUFAoMCk7CisJCXRleHQJICAgKmFyZzIg PSBQR19HRVRBUkdfVEVYVF9QUCgxKTsKIAotCQlyZXN1bHQgPSAobWVtY21wKFZBUkRBVEFf QU5ZKHRhcmcxKSwgVkFSREFUQV9BTlkodGFyZzIpLAotCQkJCQkJIGxlbjEgLSBWQVJIRFJT WikgIT0gMCk7CisJCXJlc3VsdCA9ICh0ZXh0X2NtcChhcmcxLCBhcmcyLCBjb2xsaWQpICE9 IDApOwogCi0JCVBHX0ZSRUVfSUZfQ09QWSh0YXJnMSwgMCk7Ci0JCVBHX0ZSRUVfSUZfQ09Q WSh0YXJnMiwgMSk7CisJCVBHX0ZSRUVfSUZfQ09QWShhcmcxLCAwKTsKKwkJUEdfRlJFRV9J Rl9DT1BZKGFyZzIsIDEpOwogCX0KIAogCVBHX1JFVFVSTl9CT09MKHJlc3VsdCk7CkBAIC0x ODI1LDEwICsxODcyLDIyIEBAIHRleHRfc3RhcnRzX3dpdGgoUEdfRlVOQ1RJT05fQVJHUykK IHsKIAlEYXR1bQkJYXJnMSA9IFBHX0dFVEFSR19EQVRVTSgwKTsKIAlEYXR1bQkJYXJnMiA9 IFBHX0dFVEFSR19EQVRVTSgxKTsKKwlPaWQJCQljb2xsaWQgPSBQR19HRVRfQ09MTEFUSU9O KCk7CisJcGdfbG9jYWxlX3QJbXlsb2NhbGUgPSAwOwogCWJvb2wJCXJlc3VsdDsKIAlTaXpl CQlsZW4xLAogCQkJCWxlbjI7CiAKKwljaGVja19jb2xsYXRpb25fc2V0KGNvbGxpZCk7CisK KwlpZiAoIWxjX2NvbGxhdGVfaXNfYyhjb2xsaWQpICYmIGNvbGxpZCAhPSBERUZBVUxUX0NP TExBVElPTl9PSUQpCisJCW15bG9jYWxlID0gcGdfbmV3bG9jYWxlX2Zyb21fY29sbGF0aW9u KGNvbGxpZCk7CisKKwlpZiAobXlsb2NhbGUgJiYgIW15bG9jYWxlLT5kZXRlcm1pbmlzdGlj KQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1Rf U1VQUE9SVEVEKSwKKwkJCQkgZXJybXNnKCJub25kZXRlcm1pbmlzdGljIGNvbGxhdGlvbnMg YXJlIG5vdCBzdXBwb3J0ZWQgZm9yIHN1YnN0cmluZyBzZWFyY2hlcyIpKSk7CisKIAlsZW4x ID0gdG9hc3RfcmF3X2RhdHVtX3NpemUoYXJnMSk7CiAJbGVuMiA9IHRvYXN0X3Jhd19kYXR1 bV9zaXplKGFyZzIpOwogCWlmIChsZW4yID4gbGVuMSkKQEAgLTE4OTgsNiArMTk1Nyw4IEBA IHZhcnN0cl9zb3J0c3VwcG9ydChTb3J0U3VwcG9ydCBzc3VwLCBPaWQgdHlwaWQsIE9pZCBj b2xsaWQpCiAJVmFyU3RyaW5nU29ydFN1cHBvcnQgKnNzczsKIAlwZ19sb2NhbGVfdCBsb2Nh bGUgPSAwOwogCisJY2hlY2tfY29sbGF0aW9uX3NldChjb2xsaWQpOworCiAJLyoKIAkgKiBJ ZiBwb3NzaWJsZSwgc2V0IHNzdXAtPmNvbXBhcmF0b3IgdG8gYSBmdW5jdGlvbiB3aGljaCBj YW4gYmUgdXNlZCB0bwogCSAqIGRpcmVjdGx5IGNvbXBhcmUgdHdvIGRhdHVtcy4gIElmIHdl IGNhbiBkbyB0aGlzLCB3ZSdsbCBhdm9pZCB0aGUKQEAgLTE5MzQsMjAgKzE5OTUsNyBAQCB2 YXJzdHJfc29ydHN1cHBvcnQoU29ydFN1cHBvcnQgc3N1cCwgT2lkIHR5cGlkLCBPaWQgY29s bGlkKQogCQkgKiByZXN1bHQuCiAJCSAqLwogCQlpZiAoY29sbGlkICE9IERFRkFVTFRfQ09M TEFUSU9OX09JRCkKLQkJewotCQkJaWYgKCFPaWRJc1ZhbGlkKGNvbGxpZCkpCi0JCQl7Ci0J CQkJLyoKLQkJCQkgKiBUaGlzIHR5cGljYWxseSBtZWFucyB0aGF0IHRoZSBwYXJzZXIgY291 bGQgbm90IHJlc29sdmUgYQotCQkJCSAqIGNvbmZsaWN0IG9mIGltcGxpY2l0IGNvbGxhdGlv bnMsIHNvIHJlcG9ydCBpdCB0aGF0IHdheS4KLQkJCQkgKi8KLQkJCQllcmVwb3J0KEVSUk9S LAotCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTkRFVEVSTUlOQVRFX0NPTExBVElPTiksCi0J CQkJCQkgZXJybXNnKCJjb3VsZCBub3QgZGV0ZXJtaW5lIHdoaWNoIGNvbGxhdGlvbiB0byB1 c2UgZm9yIHN0cmluZyBjb21wYXJpc29uIiksCi0JCQkJCQkgZXJyaGludCgiVXNlIHRoZSBD T0xMQVRFIGNsYXVzZSB0byBzZXQgdGhlIGNvbGxhdGlvbiBleHBsaWNpdGx5LiIpKSk7Ci0J CQl9CiAJCQlsb2NhbGUgPSBwZ19uZXdsb2NhbGVfZnJvbV9jb2xsYXRpb24oY29sbGlkKTsK LQkJfQogCiAJCS8qCiAJCSAqIFRoZXJlIGlzIGEgZnVydGhlciBleGNlcHRpb24gb24gV2lu ZG93cy4gIFdoZW4gdGhlIGRhdGFiYXNlCkBAIC0yMzI4LDEyICsyMzc2LDkgQEAgdmFyc3Ry ZmFzdGNtcF9sb2NhbGUoY2hhciAqYTFwLCBpbnQgbGVuMSwgY2hhciAqYTJwLCBpbnQgbGVu MiwgU29ydFN1cHBvcnQgc3N1cCkKIAllbHNlCiAJCXJlc3VsdCA9IHN0cmNvbGwoc3NzLT5i dWYxLCBzc3MtPmJ1ZjIpOwogCi0JLyoKLQkgKiBJbiBzb21lIGxvY2FsZXMgc3RyY29sbCgp IGNhbiBjbGFpbSB0aGF0IG5vbmlkZW50aWNhbCBzdHJpbmdzIGFyZQotCSAqIGVxdWFsLiBC ZWxpZXZpbmcgdGhhdCB3b3VsZCBiZSBiYWQgbmV3cyBmb3IgYSBudW1iZXIgb2YgcmVhc29u cywgc28gd2UKLQkgKiBmb2xsb3cgUGVybCdzIGxlYWQgYW5kIHNvcnQgImVxdWFsIiBzdHJp bmdzIGFjY29yZGluZyB0byBzdHJjbXAoKS4KLQkgKi8KLQlpZiAocmVzdWx0ID09IDApCisJ LyogQnJlYWsgdGllIGlmIG5lY2Vzc2FyeS4gKi8KKwlpZiAocmVzdWx0ID09IDAgJiYKKwkJ KCFzc3MtPmxvY2FsZSB8fCBzc3MtPmxvY2FsZS0+ZGV0ZXJtaW5pc3RpYykpCiAJCXJlc3Vs dCA9IHN0cmNtcChzc3MtPmJ1ZjEsIHNzcy0+YnVmMik7CiAKIAkvKiBDYWNoZSByZXN1bHQs IHBlcmhhcHMgc2F2aW5nIGFuIGV4cGVuc2l2ZSBzdHJjb2xsKCkgY2FsbCBuZXh0IHRpbWUg Ki8KQEAgLTI3NjAsMTAgKzI4MDUsMTggQEAgbmFtZWVxdGV4dChQR19GVU5DVElPTl9BUkdT KQogCXRleHQJICAgKmFyZzIgPSBQR19HRVRBUkdfVEVYVF9QUCgxKTsKIAlzaXplX3QJCWxl bjEgPSBzdHJsZW4oTmFtZVN0cigqYXJnMSkpOwogCXNpemVfdAkJbGVuMiA9IFZBUlNJWkVf QU5ZX0VYSERSKGFyZzIpOworCU9pZAkJCWNvbGxpZCA9IFBHX0dFVF9DT0xMQVRJT04oKTsK IAlib29sCQlyZXN1bHQ7CiAKLQlyZXN1bHQgPSAobGVuMSA9PSBsZW4yICYmCi0JCQkgIG1l bWNtcChOYW1lU3RyKCphcmcxKSwgVkFSREFUQV9BTlkoYXJnMiksIGxlbjEpID09IDApOwor CWNoZWNrX2NvbGxhdGlvbl9zZXQoY29sbGlkKTsKKworCWlmIChjb2xsaWQgPT0gQ19DT0xM QVRJT05fT0lEKQorCQlyZXN1bHQgPSAobGVuMSA9PSBsZW4yICYmCisJCQkJICBtZW1jbXAo TmFtZVN0cigqYXJnMSksIFZBUkRBVEFfQU5ZKGFyZzIpLCBsZW4xKSA9PSAwKTsKKwllbHNl CisJCXJlc3VsdCA9ICh2YXJzdHJfY21wKE5hbWVTdHIoKmFyZzEpLCBsZW4xLAorCQkJCQkJ CSBWQVJEQVRBX0FOWShhcmcyKSwgbGVuMiwKKwkJCQkJCQkgY29sbGlkKSA9PSAwKTsKIAog CVBHX0ZSRUVfSUZfQ09QWShhcmcyLCAxKTsKIApAQCAtMjc3NywxMCArMjgzMCwxOCBAQCB0 ZXh0ZXFuYW1lKFBHX0ZVTkNUSU9OX0FSR1MpCiAJTmFtZQkJYXJnMiA9IFBHX0dFVEFSR19O QU1FKDEpOwogCXNpemVfdAkJbGVuMSA9IFZBUlNJWkVfQU5ZX0VYSERSKGFyZzEpOwogCXNp emVfdAkJbGVuMiA9IHN0cmxlbihOYW1lU3RyKCphcmcyKSk7CisJT2lkCQkJY29sbGlkID0g UEdfR0VUX0NPTExBVElPTigpOwogCWJvb2wJCXJlc3VsdDsKIAotCXJlc3VsdCA9IChsZW4x ID09IGxlbjIgJiYKLQkJCSAgbWVtY21wKFZBUkRBVEFfQU5ZKGFyZzEpLCBOYW1lU3RyKCph cmcyKSwgbGVuMSkgPT0gMCk7CisJY2hlY2tfY29sbGF0aW9uX3NldChjb2xsaWQpOworCisJ aWYgKGNvbGxpZCA9PSBDX0NPTExBVElPTl9PSUQpCisJCXJlc3VsdCA9IChsZW4xID09IGxl bjIgJiYKKwkJCQkgIG1lbWNtcChWQVJEQVRBX0FOWShhcmcxKSwgTmFtZVN0cigqYXJnMiks IGxlbjEpID09IDApOworCWVsc2UKKwkJcmVzdWx0ID0gKHZhcnN0cl9jbXAoVkFSREFUQV9B TlkoYXJnMSksIGxlbjEsCisJCQkJCQkJIE5hbWVTdHIoKmFyZzIpLCBsZW4yLAorCQkJCQkJ CSBjb2xsaWQpID09IDApOwogCiAJUEdfRlJFRV9JRl9DT1BZKGFyZzEsIDApOwogCkBAIC0y Nzk0LDEwICsyODU1LDE4IEBAIG5hbWVuZXRleHQoUEdfRlVOQ1RJT05fQVJHUykKIAl0ZXh0 CSAgICphcmcyID0gUEdfR0VUQVJHX1RFWFRfUFAoMSk7CiAJc2l6ZV90CQlsZW4xID0gc3Ry bGVuKE5hbWVTdHIoKmFyZzEpKTsKIAlzaXplX3QJCWxlbjIgPSBWQVJTSVpFX0FOWV9FWEhE UihhcmcyKTsKKwlPaWQJCQljb2xsaWQgPSBQR19HRVRfQ09MTEFUSU9OKCk7CiAJYm9vbAkJ cmVzdWx0OwogCi0JcmVzdWx0ID0gIShsZW4xID09IGxlbjIgJiYKLQkJCSAgIG1lbWNtcChO YW1lU3RyKCphcmcxKSwgVkFSREFUQV9BTlkoYXJnMiksIGxlbjEpID09IDApOworCWNoZWNr X2NvbGxhdGlvbl9zZXQoY29sbGlkKTsKKworCWlmIChjb2xsaWQgPT0gQ19DT0xMQVRJT05f T0lEKQorCQlyZXN1bHQgPSAhKGxlbjEgPT0gbGVuMiAmJgorCQkJCSAgIG1lbWNtcChOYW1l U3RyKCphcmcxKSwgVkFSREFUQV9BTlkoYXJnMiksIGxlbjEpID09IDApOworCWVsc2UKKwkJ cmVzdWx0ID0gISh2YXJzdHJfY21wKE5hbWVTdHIoKmFyZzEpLCBsZW4xLAorCQkJCQkJCSAg VkFSREFUQV9BTlkoYXJnMiksIGxlbjIsCisJCQkJCQkJICBjb2xsaWQpID09IDApOwogCiAJ UEdfRlJFRV9JRl9DT1BZKGFyZzIsIDEpOwogCkBAIC0yODExLDEwICsyODgwLDE4IEBAIHRl eHRuZW5hbWUoUEdfRlVOQ1RJT05fQVJHUykKIAlOYW1lCQlhcmcyID0gUEdfR0VUQVJHX05B TUUoMSk7CiAJc2l6ZV90CQlsZW4xID0gVkFSU0laRV9BTllfRVhIRFIoYXJnMSk7CiAJc2l6 ZV90CQlsZW4yID0gc3RybGVuKE5hbWVTdHIoKmFyZzIpKTsKKwlPaWQJCQljb2xsaWQgPSBQ R19HRVRfQ09MTEFUSU9OKCk7CiAJYm9vbAkJcmVzdWx0OwogCi0JcmVzdWx0ID0gIShsZW4x ID09IGxlbjIgJiYKLQkJCSAgIG1lbWNtcChWQVJEQVRBX0FOWShhcmcxKSwgTmFtZVN0cigq YXJnMiksIGxlbjEpID09IDApOworCWNoZWNrX2NvbGxhdGlvbl9zZXQoY29sbGlkKTsKKwor CWlmIChjb2xsaWQgPT0gQ19DT0xMQVRJT05fT0lEKQorCQlyZXN1bHQgPSAhKGxlbjEgPT0g bGVuMiAmJgorCQkJCSAgIG1lbWNtcChWQVJEQVRBX0FOWShhcmcxKSwgTmFtZVN0cigqYXJn MiksIGxlbjEpID09IDApOworCWVsc2UKKwkJcmVzdWx0ID0gISh2YXJzdHJfY21wKFZBUkRB VEFfQU5ZKGFyZzEpLCBsZW4xLAorCQkJCQkJCSAgTmFtZVN0cigqYXJnMiksIGxlbjIsCisJ CQkJCQkJICBjb2xsaWQpID09IDApOwogCiAJUEdfRlJFRV9JRl9DT1BZKGFyZzEsIDApOwog CkBAIC00MTIxLDcgKzQxOTgsNyBAQCByZXBsYWNlX3RleHQoUEdfRlVOQ1RJT05fQVJHUykK IAkJUEdfUkVUVVJOX1RFWFRfUChzcmNfdGV4dCk7CiAJfQogCi0JdGV4dF9wb3NpdGlvbl9z ZXR1cChzcmNfdGV4dCwgZnJvbV9zdWJfdGV4dCwgJnN0YXRlKTsKKwl0ZXh0X3Bvc2l0aW9u X3NldHVwKHNyY190ZXh0LCBmcm9tX3N1Yl90ZXh0LCBQR19HRVRfQ09MTEFUSU9OKCksICZz dGF0ZSk7CiAKIAlmb3VuZCA9IHRleHRfcG9zaXRpb25fbmV4dCgmc3RhdGUpOwogCkBAIC00 NDgyLDcgKzQ1NTksNyBAQCBzcGxpdF90ZXh0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQlQR19S RVRVUk5fVEVYVF9QKGNzdHJpbmdfdG9fdGV4dCgiIikpOwogCX0KIAotCXRleHRfcG9zaXRp b25fc2V0dXAoaW5wdXRzdHJpbmcsIGZsZHNlcCwgJnN0YXRlKTsKKwl0ZXh0X3Bvc2l0aW9u X3NldHVwKGlucHV0c3RyaW5nLCBmbGRzZXAsIFBHX0dFVF9DT0xMQVRJT04oKSwgJnN0YXRl KTsKIAogCS8qIGlkZW50aWZ5IGJvdW5kcyBvZiBmaXJzdCBmaWVsZCAqLwogCXN0YXJ0X3B0 ciA9IFZBUkRBVEFfQU5ZKGlucHV0c3RyaW5nKTsKQEAgLTQ1MzgsMTEgKzQ2MTUsMTIgQEAg c3BsaXRfdGV4dChQR19GVU5DVElPTl9BUkdTKQogICogQ29udmVuaWVuY2UgZnVuY3Rpb24g dG8gcmV0dXJuIHRydWUgd2hlbiB0d28gdGV4dCBwYXJhbXMgYXJlIGVxdWFsLgogICovCiBz dGF0aWMgYm9vbAotdGV4dF9pc2VxdWFsKHRleHQgKnR4dDEsIHRleHQgKnR4dDIpCit0ZXh0 X2lzZXF1YWwodGV4dCAqdHh0MSwgdGV4dCAqdHh0MiwgT2lkIGNvbGxpZCkKIHsKLQlyZXR1 cm4gRGF0dW1HZXRCb29sKERpcmVjdEZ1bmN0aW9uQ2FsbDIodGV4dGVxLAotCQkJCQkJCQkJ CQlQb2ludGVyR2V0RGF0dW0odHh0MSksCi0JCQkJCQkJCQkJCVBvaW50ZXJHZXREYXR1bSh0 eHQyKSkpOworCXJldHVybiBEYXR1bUdldEJvb2woRGlyZWN0RnVuY3Rpb25DYWxsMkNvbGwo dGV4dGVxLAorCQkJCQkJCQkJCQkJY29sbGlkLAorCQkJCQkJCQkJCQkJUG9pbnRlckdldERh dHVtKHR4dDEpLAorCQkJCQkJCQkJCQkJUG9pbnRlckdldERhdHVtKHR4dDIpKSk7CiB9CiAK IC8qCkBAIC00NjMzLDcgKzQ3MTEsNyBAQCB0ZXh0X3RvX2FycmF5X2ludGVybmFsKFBHX0ZV TkNUSU9OX0FSR1MpCiAJCQlpbnQJCQlsYnNbMV07CiAKIAkJCS8qIHNpbmdsZSBlbGVtZW50 IGNhbiBiZSBhIE5VTEwgdG9vICovCi0JCQlpc19udWxsID0gbnVsbF9zdHJpbmcgPyB0ZXh0 X2lzZXF1YWwoaW5wdXRzdHJpbmcsIG51bGxfc3RyaW5nKSA6IGZhbHNlOworCQkJaXNfbnVs bCA9IG51bGxfc3RyaW5nID8gdGV4dF9pc2VxdWFsKGlucHV0c3RyaW5nLCBudWxsX3N0cmlu ZywgUEdfR0VUX0NPTExBVElPTigpKSA6IGZhbHNlOwogCiAJCQllbGVtc1swXSA9IFBvaW50 ZXJHZXREYXR1bShpbnB1dHN0cmluZyk7CiAJCQludWxsc1swXSA9IGlzX251bGw7CkBAIC00 NjQ1LDcgKzQ3MjMsNyBAQCB0ZXh0X3RvX2FycmF5X2ludGVybmFsKFBHX0ZVTkNUSU9OX0FS R1MpCiAJCQkJCQkJCQkJCQkJIFRFWFRPSUQsIC0xLCBmYWxzZSwgJ2knKSk7CiAJCX0KIAot CQl0ZXh0X3Bvc2l0aW9uX3NldHVwKGlucHV0c3RyaW5nLCBmbGRzZXAsICZzdGF0ZSk7CisJ CXRleHRfcG9zaXRpb25fc2V0dXAoaW5wdXRzdHJpbmcsIGZsZHNlcCwgUEdfR0VUX0NPTExB VElPTigpLCAmc3RhdGUpOwogCiAJCXN0YXJ0X3B0ciA9IFZBUkRBVEFfQU5ZKGlucHV0c3Ry aW5nKTsKIApAQCAtNDY3Myw3ICs0NzUxLDcgQEAgdGV4dF90b19hcnJheV9pbnRlcm5hbChQ R19GVU5DVElPTl9BUkdTKQogCiAJCQkvKiBtdXN0IGJ1aWxkIGEgdGVtcCB0ZXh0IGRhdHVt IHRvIHBhc3MgdG8gYWNjdW1BcnJheVJlc3VsdCAqLwogCQkJcmVzdWx0X3RleHQgPSBjc3Ry aW5nX3RvX3RleHRfd2l0aF9sZW4oc3RhcnRfcHRyLCBjaHVua19sZW4pOwotCQkJaXNfbnVs bCA9IG51bGxfc3RyaW5nID8gdGV4dF9pc2VxdWFsKHJlc3VsdF90ZXh0LCBudWxsX3N0cmlu ZykgOiBmYWxzZTsKKwkJCWlzX251bGwgPSBudWxsX3N0cmluZyA/IHRleHRfaXNlcXVhbChy ZXN1bHRfdGV4dCwgbnVsbF9zdHJpbmcsIFBHX0dFVF9DT0xMQVRJT04oKSkgOiBmYWxzZTsK IAogCQkJLyogc3Rhc2ggYXdheSB0aGlzIGZpZWxkICovCiAJCQlhc3RhdGUgPSBhY2N1bUFy cmF5UmVzdWx0KGFzdGF0ZSwKQEAgLTQ3MTUsNyArNDc5Myw3IEBAIHRleHRfdG9fYXJyYXlf aW50ZXJuYWwoUEdfRlVOQ1RJT05fQVJHUykKIAogCQkJLyogbXVzdCBidWlsZCBhIHRlbXAg dGV4dCBkYXR1bSB0byBwYXNzIHRvIGFjY3VtQXJyYXlSZXN1bHQgKi8KIAkJCXJlc3VsdF90 ZXh0ID0gY3N0cmluZ190b190ZXh0X3dpdGhfbGVuKHN0YXJ0X3B0ciwgY2h1bmtfbGVuKTsK LQkJCWlzX251bGwgPSBudWxsX3N0cmluZyA/IHRleHRfaXNlcXVhbChyZXN1bHRfdGV4dCwg bnVsbF9zdHJpbmcpIDogZmFsc2U7CisJCQlpc19udWxsID0gbnVsbF9zdHJpbmcgPyB0ZXh0 X2lzZXF1YWwocmVzdWx0X3RleHQsIG51bGxfc3RyaW5nLCBQR19HRVRfQ09MTEFUSU9OKCkp IDogZmFsc2U7CiAKIAkJCS8qIHN0YXNoIGF3YXkgdGhpcyBmaWVsZCAqLwogCQkJYXN0YXRl ID0gYWNjdW1BcnJheVJlc3VsdChhc3RhdGUsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9jYWNoZS9jYXRjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvY2F0Y2Fj aGUuYwppbmRleCA3OGRkNTcxNGZhLi5iYjlhZThmZDBjIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9jYWNoZS9jYXRjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Nh Y2hlL2NhdGNhY2hlLmMKQEAgLTE3MSwxMyArMTcxLDE4IEBAIGludDRoYXNoZmFzdChEYXR1 bSBkYXR1bSkKIHN0YXRpYyBib29sCiB0ZXh0ZXFmYXN0KERhdHVtIGEsIERhdHVtIGIpCiB7 Ci0JcmV0dXJuIERhdHVtR2V0Qm9vbChEaXJlY3RGdW5jdGlvbkNhbGwyKHRleHRlcSwgYSwg YikpOworCS8qCisJICogVGhlIHVzZSBvZiBERUZBVUxUX0NPTExBVElPTl9PSUQgaXMgZmFp cmx5IGFyYml0cmFyeSBoZXJlLiAgV2UganVzdAorCSAqIHdhbnQgdG8gdGFrZSB0aGUgZmFz dCAiZGV0ZXJtaW5pc3RpYyIgcGF0aCBpbiB0ZXh0ZXEoKS4KKwkgKi8KKwlyZXR1cm4gRGF0 dW1HZXRCb29sKERpcmVjdEZ1bmN0aW9uQ2FsbDJDb2xsKHRleHRlcSwgREVGQVVMVF9DT0xM QVRJT05fT0lELCBhLCBiKSk7CiB9CiAKIHN0YXRpYyB1aW50MzIKIHRleHRoYXNoZmFzdChE YXR1bSBkYXR1bSkKIHsKLQlyZXR1cm4gRGF0dW1HZXRJbnQzMihEaXJlY3RGdW5jdGlvbkNh bGwxKGhhc2h0ZXh0LCBkYXR1bSkpOworCS8qIGFuYWxvZ291c2x5IGhlcmUgYXMgaW4gdGV4 dGVxZmFzdCgpICovCisJcmV0dXJuIERhdHVtR2V0SW50MzIoRGlyZWN0RnVuY3Rpb25DYWxs MUNvbGwoaGFzaHRleHQsIERFRkFVTFRfQ09MTEFUSU9OX09JRCwgZGF0dW0pKTsKIH0KIAog c3RhdGljIGJvb2wKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNj YWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMKaW5kZXggZTg4 YzQ1ZDI2OC4uNTllNmJjZDg1NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvbHN5c2NhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hl LmMKQEAgLTkwOCw2ICs5MDgsMjIgQEAgZ2V0X2NvbGxhdGlvbl9uYW1lKE9pZCBjb2xsb2lk KQogCQlyZXR1cm4gTlVMTDsKIH0KIAorYm9vbAorZ2V0X2NvbGxhdGlvbl9pc2RldGVybWlu aXN0aWMoT2lkIGNvbGxvaWQpCit7CisJSGVhcFR1cGxlCXRwOworCUZvcm1fcGdfY29sbGF0 aW9uIGNvbGx0dXA7CisJYm9vbAkJcmVzdWx0OworCisJdHAgPSBTZWFyY2hTeXNDYWNoZTEo Q09MTE9JRCwgT2JqZWN0SWRHZXREYXR1bShjb2xsb2lkKSk7CisJaWYgKCFIZWFwVHVwbGVJ c1ZhbGlkKHRwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGNv bGxhdGlvbiAldSIsIGNvbGxvaWQpOworCWNvbGx0dXAgPSAoRm9ybV9wZ19jb2xsYXRpb24p IEdFVFNUUlVDVCh0cCk7CisJcmVzdWx0ID0gY29sbHR1cC0+Y29sbGlzZGV0ZXJtaW5pc3Rp YzsKKwlSZWxlYXNlU3lzQ2FjaGUodHApOworCXJldHVybiByZXN1bHQ7Cit9CisKIC8qCQkJ CS0tLS0tLS0tLS0gQ09OU1RSQUlOVCBDQUNIRSAtLS0tLS0tLS0tCQkJCQkgKi8KIAogLyoK ZGlmZiAtLWdpdCBhL3NyYy9iaW4vaW5pdGRiL2luaXRkYi5jIGIvc3JjL2Jpbi9pbml0ZGIv aW5pdGRiLmMKaW5kZXggZmQ1MGE4MDllYS4uNDg4NjA5MDEzMiAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9pbml0ZGIvaW5pdGRiLmMKKysrIGIvc3JjL2Jpbi9pbml0ZGIvaW5pdGRiLmMKQEAg LTE3NjUsOCArMTc2NSw4IEBAIHNldHVwX2NvbGxhdGlvbihGSUxFICpjbWRmZCkKIAkgKiBp biBwZ19jb2xsYXRpb24uaC4gIEJ1dCBhZGQgaXQgYmVmb3JlIHJlYWRpbmcgc3lzdGVtIGNv bGxhdGlvbnMsIHNvCiAJICogdGhhdCBpdCB3aW5zIGlmIGxpYmMgZGVmaW5lcyBhIGxvY2Fs ZSBuYW1lZCB1Y3NfYmFzaWMuCiAJICovCi0JUEdfQ01EX1BSSU5URjMoIklOU0VSVCBJTlRP IHBnX2NvbGxhdGlvbiAob2lkLCBjb2xsbmFtZSwgY29sbG5hbWVzcGFjZSwgY29sbG93bmVy LCBjb2xscHJvdmlkZXIsIGNvbGxlbmNvZGluZywgY29sbGNvbGxhdGUsIGNvbGxjdHlwZSki Ci0JCQkJICAgIlZBTFVFUyAocGdfbmV4dG9pZCgncGdfY2F0YWxvZy5wZ19jb2xsYXRpb24n LCAnb2lkJywgJ3BnX2NhdGFsb2cucGdfY29sbGF0aW9uX29pZF9pbmRleCcpLCAndWNzX2Jh c2ljJywgJ3BnX2NhdGFsb2cnOjpyZWduYW1lc3BhY2UsICV1LCAnJWMnLCAlZCwgJ0MnLCAn QycpO1xuXG4iLAorCVBHX0NNRF9QUklOVEYzKCJJTlNFUlQgSU5UTyBwZ19jb2xsYXRpb24g KG9pZCwgY29sbG5hbWUsIGNvbGxuYW1lc3BhY2UsIGNvbGxvd25lciwgY29sbHByb3ZpZGVy LCBjb2xsaXNkZXRlcm1pbmlzdGljLCBjb2xsZW5jb2RpbmcsIGNvbGxjb2xsYXRlLCBjb2xs Y3R5cGUpIgorCQkJCSAgICJWQUxVRVMgKHBnX25leHRvaWQoJ3BnX2NhdGFsb2cucGdfY29s bGF0aW9uJywgJ29pZCcsICdwZ19jYXRhbG9nLnBnX2NvbGxhdGlvbl9vaWRfaW5kZXgnKSwg J3Vjc19iYXNpYycsICdwZ19jYXRhbG9nJzo6cmVnbmFtZXNwYWNlLCAldSwgJyVjJywgdHJ1 ZSwgJWQsICdDJywgJ0MnKTtcblxuIiwKIAkJCQkgICBCT09UU1RSQVBfU1VQRVJVU0VSSUQs IENPTExQUk9WSURFUl9MSUJDLCBQR19VVEY4KTsKIAogCS8qIE5vdyBpbXBvcnQgYWxsIGNv bGxhdGlvbnMgd2UgY2FuIGZpbmQgaW4gdGhlIG9wZXJhdGluZyBzeXN0ZW0gKi8KZGlmZiAt LWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdf ZHVtcC5jCmluZGV4IGEwOGJjNGVjYWUuLmYwYzc3NjVmNzQgMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpA QCAtMTMyOTAsNiArMTMyOTAsNyBAQCBkdW1wQ29sbGF0aW9uKEFyY2hpdmUgKmZvdXQsIENv bGxJbmZvICpjb2xsaW5mbykKIAljaGFyCSAgICpxY29sbG5hbWU7CiAJUEdyZXN1bHQgICAq cmVzOwogCWludAkJCWlfY29sbHByb3ZpZGVyOworCWludAkJCWlfY29sbGlzZGV0ZXJtaW5p c3RpYzsKIAlpbnQJCQlpX2NvbGxjb2xsYXRlOwogCWludAkJCWlfY29sbGN0eXBlOwogCWNv bnN0IGNoYXIgKmNvbGxwcm92aWRlcjsKQEAgLTEzMzA3LDI4ICsxMzMwOCwzNSBAQCBkdW1w Q29sbGF0aW9uKEFyY2hpdmUgKmZvdXQsIENvbGxJbmZvICpjb2xsaW5mbykKIAlxY29sbG5h bWUgPSBwZ19zdHJkdXAoZm10SWQoY29sbGluZm8tPmRvYmoubmFtZSkpOwogCiAJLyogR2V0 IGNvbGxhdGlvbi1zcGVjaWZpYyBkZXRhaWxzICovCisJYXBwZW5kUFFFeHBCdWZmZXIocXVl cnksICJTRUxFQ1QgIik7CisKIAlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxMDAwMDAp Ci0JCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiU0VMRUNUICIKKwkJYXBwZW5kUFFFeHBC dWZmZXIocXVlcnksCiAJCQkJCQkgICJjb2xscHJvdmlkZXIsICIKLQkJCQkJCSAgImNvbGxj b2xsYXRlLCAiCi0JCQkJCQkgICJjb2xsY3R5cGUsICIKLQkJCQkJCSAgImNvbGx2ZXJzaW9u ICIKLQkJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19jb2xsYXRpb24gYyAiCi0JCQkJCQkg ICJXSEVSRSBjLm9pZCA9ICcldSc6OnBnX2NhdGFsb2cub2lkIiwKLQkJCQkJCSAgY29sbGlu Zm8tPmRvYmouY2F0SWQub2lkKTsKKwkJCQkJCSAgImNvbGx2ZXJzaW9uLCAiKTsKIAllbHNl Ci0JCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiU0VMRUNUICIKKwkJYXBwZW5kUFFFeHBC dWZmZXIocXVlcnksCiAJCQkJCQkgICInYycgQVMgY29sbHByb3ZpZGVyLCAiCi0JCQkJCQkg ICJjb2xsY29sbGF0ZSwgIgotCQkJCQkJICAiY29sbGN0eXBlLCAiCi0JCQkJCQkgICJOVUxM IEFTIGNvbGx2ZXJzaW9uICIKLQkJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19jb2xsYXRp b24gYyAiCi0JCQkJCQkgICJXSEVSRSBjLm9pZCA9ICcldSc6OnBnX2NhdGFsb2cub2lkIiwK LQkJCQkJCSAgY29sbGluZm8tPmRvYmouY2F0SWQub2lkKTsKKwkJCQkJCSAgIk5VTEwgQVMg Y29sbHZlcnNpb24sICIpOworCisJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTIwMDAw KQorCQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwKKwkJCQkJCSAgImNvbGxpc2RldGVybWlu aXN0aWMsICIpOworCWVsc2UKKwkJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksCisJCQkJCQkg ICJ0cnVlIEFTIGNvbGxpc2RldGVybWluaXN0aWMsICIpOworCisJYXBwZW5kUFFFeHBCdWZm ZXIocXVlcnksCisJCQkJCSAgImNvbGxjb2xsYXRlLCAiCisJCQkJCSAgImNvbGxjdHlwZSAi CisJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19jb2xsYXRpb24gYyAiCisJCQkJCSAgIldI RVJFIGMub2lkID0gJyV1Jzo6cGdfY2F0YWxvZy5vaWQiLAorCQkJCQkgIGNvbGxpbmZvLT5k b2JqLmNhdElkLm9pZCk7CiAKIAlyZXMgPSBFeGVjdXRlU3FsUXVlcnlGb3JTaW5nbGVSb3co Zm91dCwgcXVlcnktPmRhdGEpOwogCiAJaV9jb2xscHJvdmlkZXIgPSBQUWZudW1iZXIocmVz LCAiY29sbHByb3ZpZGVyIik7CisJaV9jb2xsaXNkZXRlcm1pbmlzdGljID0gUFFmbnVtYmVy KHJlcywgImNvbGxpc2RldGVybWluaXN0aWMiKTsKIAlpX2NvbGxjb2xsYXRlID0gUFFmbnVt YmVyKHJlcywgImNvbGxjb2xsYXRlIik7CiAJaV9jb2xsY3R5cGUgPSBQUWZudW1iZXIocmVz LCAiY29sbGN0eXBlIik7CiAKQEAgLTEzMzU1LDYgKzEzMzYzLDkgQEAgZHVtcENvbGxhdGlv bihBcmNoaXZlICpmb3V0LCBDb2xsSW5mbyAqY29sbGluZm8pCiAJCQkJCSAgInVucmVjb2du aXplZCBjb2xsYXRpb24gcHJvdmlkZXI6ICVzXG4iLAogCQkJCQkgIGNvbGxwcm92aWRlcik7 CiAKKwlpZiAoc3RyY21wKFBRZ2V0dmFsdWUocmVzLCAwLCBpX2NvbGxpc2RldGVybWluaXN0 aWMpLCAiZiIpID09IDApCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHEsICIsIGRldGVybWlu aXN0aWMgPSBmYWxzZSIpOworCiAJaWYgKHN0cmNtcChjb2xsY29sbGF0ZSwgY29sbGN0eXBl KSA9PSAwKQogCXsKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocSwgIiwgbG9jYWxlID0gIik7 CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYyBiL3NyYy9iaW4vcHNxbC9k ZXNjcmliZS5jCmluZGV4IDRkYTY3MTljZTcuLmI0MzMwMGMyNjIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iaW4vcHNxbC9kZXNjcmliZS5jCisrKyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCkBA IC00MDkyLDcgKzQwOTIsNyBAQCBsaXN0Q29sbGF0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJu LCBib29sIHZlcmJvc2UsIGJvb2wgc2hvd1N5c3RlbSkKIAlQUUV4cEJ1ZmZlckRhdGEgYnVm OwogCVBHcmVzdWx0ICAgKnJlczsKIAlwcmludFF1ZXJ5T3B0IG15b3B0ID0gcHNldC5wb3B0 OwotCXN0YXRpYyBjb25zdCBib29sIHRyYW5zbGF0ZV9jb2x1bW5zW10gPSB7ZmFsc2UsIGZh bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZX07CisJc3RhdGljIGNvbnN0IGJvb2wg dHJhbnNsYXRlX2NvbHVtbnNbXSA9IHtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs c2UsIHRydWUsIGZhbHNlfTsKIAogCWlmIChwc2V0LnN2ZXJzaW9uIDwgOTAxMDApCiAJewpA QCAtNDEyMCw2ICs0MTIwLDIxIEBAIGxpc3RDb2xsYXRpb25zKGNvbnN0IGNoYXIgKnBhdHRl cm4sIGJvb2wgdmVyYm9zZSwgYm9vbCBzaG93U3lzdGVtKQogCQlhcHBlbmRQUUV4cEJ1ZmZl cigmYnVmLAogCQkJCQkJICAiLFxuICAgICAgIENBU0UgYy5jb2xscHJvdmlkZXIgV0hFTiAn ZCcgVEhFTiAnZGVmYXVsdCcgV0hFTiAnYycgVEhFTiAnbGliYycgV0hFTiAnaScgVEhFTiAn aWN1JyBFTkQgQVMgXCIlc1wiIiwKIAkJCQkJCSAgZ2V0dGV4dF9ub29wKCJQcm92aWRlciIp KTsKKwllbHNlCisJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCisJCQkJCQkgICIsXG4gICAg ICAgJ2xpYmMnIEFTIFwiJXNcIiIsCisJCQkJCQkgIGdldHRleHRfbm9vcCgiUHJvdmlkZXIi KSk7CisKKwlpZiAocHNldC5zdmVyc2lvbiA+PSAxMjAwMDApCisJCWFwcGVuZFBRRXhwQnVm ZmVyKCZidWYsCisJCQkJCQkgICIsXG4gICAgICAgQ0FTRSBXSEVOIGMuY29sbGlzZGV0ZXJt aW5pc3RpYyBUSEVOICclcycgRUxTRSAnJXMnIEVORCBBUyBcIiVzXCIiLAorCQkJCQkJICBn ZXR0ZXh0X25vb3AoInllcyIpLCBnZXR0ZXh0X25vb3AoIm5vIiksCisJCQkJCQkgIGdldHRl eHRfbm9vcCgiRGV0ZXJtaW5pc3RpYz8iKSk7CisJZWxzZQorCQlhcHBlbmRQUUV4cEJ1ZmZl cigmYnVmLAorCQkJCQkJICAiLFxuICAgICAgICclcycgQVMgXCIlc1wiIiwKKwkJCQkJCSAg Z2V0dGV4dF9ub29wKCJ5ZXMiKSwKKwkJCQkJCSAgZ2V0dGV4dF9ub29wKCJEZXRlcm1pbmlz dGljPyIpKTsKIAogCWlmICh2ZXJib3NlKQogCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLApk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb2xsYXRpb24uaCBiL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfY29sbGF0aW9uLmgKaW5kZXggMTBmZTcxMWE5MS4uNGQyZmNi Mzg1OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb2xsYXRpb24uaAor KysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbGxhdGlvbi5oCkBAIC0zMyw2ICszMyw3 IEBAIENBVEFMT0cocGdfY29sbGF0aW9uLDM0NTYsQ29sbGF0aW9uUmVsYXRpb25JZCkKIAlP aWQJCQljb2xsbmFtZXNwYWNlOwkvKiBPSUQgb2YgbmFtZXNwYWNlIGNvbnRhaW5pbmcgY29s bGF0aW9uICovCiAJT2lkCQkJY29sbG93bmVyOwkJLyogb3duZXIgb2YgY29sbGF0aW9uICov CiAJY2hhcgkJY29sbHByb3ZpZGVyOwkvKiBzZWUgY29uc3RhbnRzIGJlbG93ICovCisJYm9v bAkJY29sbGlzZGV0ZXJtaW5pc3RpYyBCS0lfREVGQVVMVCh0KTsKIAlpbnQzMgkJY29sbGVu Y29kaW5nOwkvKiBlbmNvZGluZyBmb3IgdGhpcyBjb2xsYXRpb247IC0xID0gImFsbCIgKi8K IAlOYW1lRGF0YQljb2xsY29sbGF0ZTsJLyogTENfQ09MTEFURSBzZXR0aW5nICovCiAJTmFt ZURhdGEJY29sbGN0eXBlOwkJLyogTENfQ1RZUEUgc2V0dGluZyAqLwpAQCAtNjEsNiArNjIs NyBAQCB0eXBlZGVmIEZvcm1EYXRhX3BnX2NvbGxhdGlvbiAqRm9ybV9wZ19jb2xsYXRpb247 CiBleHRlcm4gT2lkIENvbGxhdGlvbkNyZWF0ZShjb25zdCBjaGFyICpjb2xsbmFtZSwgT2lk IGNvbGxuYW1lc3BhY2UsCiAJCQkJT2lkIGNvbGxvd25lciwKIAkJCQljaGFyIGNvbGxwcm92 aWRlciwKKwkJCQlib29sIGNvbGxpc2RldGVybWluaXN0aWMsCiAJCQkJaW50MzIgY29sbGVu Y29kaW5nLAogCQkJCWNvbnN0IGNoYXIgKmNvbGxjb2xsYXRlLCBjb25zdCBjaGFyICpjb2xs Y3R5cGUsCiAJCQkJY29uc3QgY2hhciAqY29sbHZlcnNpb24sCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhl Y3V0b3IuaAppbmRleCA3YTYzZTlhN2NjLi5iY2ExMGU3NWU4IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9y L2V4ZWN1dG9yLmgKQEAgLTExMSw2ICsxMTEsNyBAQCBleHRlcm4gRXhwclN0YXRlICpleGVj VHVwbGVzTWF0Y2hQcmVwYXJlKFR1cGxlRGVzYyBkZXNjLAogCQkJCQkgICBpbnQgbnVtQ29s cywKIAkJCQkJICAgY29uc3QgQXR0ck51bWJlciAqa2V5Q29sSWR4LAogCQkJCQkgICBjb25z dCBPaWQgKmVxT3BlcmF0b3JzLAorCQkJCQkgICBjb25zdCBPaWQgKmNvbGxhdGlvbnMsCiAJ CQkJCSAgIFBsYW5TdGF0ZSAqcGFyZW50KTsKIGV4dGVybiB2b2lkIGV4ZWNUdXBsZXNIYXNo UHJlcGFyZShpbnQgbnVtQ29scywKIAkJCQkJICBjb25zdCBPaWQgKmVxT3BlcmF0b3JzLApA QCAtMTIxLDYgKzEyMiw3IEBAIGV4dGVybiBUdXBsZUhhc2hUYWJsZSBCdWlsZFR1cGxlSGFz aFRhYmxlKFBsYW5TdGF0ZSAqcGFyZW50LAogCQkJCQlpbnQgbnVtQ29scywgQXR0ck51bWJl ciAqa2V5Q29sSWR4LAogCQkJCQljb25zdCBPaWQgKmVxZnVuY29pZHMsCiAJCQkJCUZtZ3JJ bmZvICpoYXNoZnVuY3Rpb25zLAorCQkJCQlPaWQgKmNvbGxhdGlvbnMsCiAJCQkJCWxvbmcg bmJ1Y2tldHMsIFNpemUgYWRkaXRpb25hbHNpemUsCiAJCQkJCU1lbW9yeUNvbnRleHQgdGFi bGVjeHQsCiAJCQkJCU1lbW9yeUNvbnRleHQgdGVtcGN4dCwgYm9vbCB1c2VfdmFyaWFibGVf aGFzaF9pdik7CkBAIC0xMjksNiArMTMxLDcgQEAgZXh0ZXJuIFR1cGxlSGFzaFRhYmxlIEJ1 aWxkVHVwbGVIYXNoVGFibGVFeHQoUGxhblN0YXRlICpwYXJlbnQsCiAJCQkJCWludCBudW1D b2xzLCBBdHRyTnVtYmVyICprZXlDb2xJZHgsCiAJCQkJCWNvbnN0IE9pZCAqZXFmdW5jb2lk cywKIAkJCQkJRm1nckluZm8gKmhhc2hmdW5jdGlvbnMsCisJCQkJCU9pZCAqY29sbGF0aW9u cywKIAkJCQkJbG9uZyBuYnVja2V0cywgU2l6ZSBhZGRpdGlvbmFsc2l6ZSwKIAkJCQkJTWVt b3J5Q29udGV4dCBtZXRhY3h0LAogCQkJCQlNZW1vcnlDb250ZXh0IHRhYmxlY3h0LApAQCAt MjU3LDYgKzI2MCw3IEBAIGV4dGVybiBFeHByU3RhdGUgKkV4ZWNCdWlsZEdyb3VwaW5nRXF1 YWwoVHVwbGVEZXNjIGxkZXNjLCBUdXBsZURlc2MgcmRlc2MsCiAJCQkJCSAgIGludCBudW1D b2xzLAogCQkJCQkgICBjb25zdCBBdHRyTnVtYmVyICprZXlDb2xJZHgsCiAJCQkJCSAgIGNv bnN0IE9pZCAqZXFmdW5jdGlvbnMsCisJCQkJCSAgIGNvbnN0IE9pZCAqY29sbGF0aW9ucywK IAkJCQkJICAgUGxhblN0YXRlICpwYXJlbnQpOwogZXh0ZXJuIFByb2plY3Rpb25JbmZvICpF eGVjQnVpbGRQcm9qZWN0aW9uSW5mbyhMaXN0ICp0YXJnZXRMaXN0LAogCQkJCQkJRXhwckNv bnRleHQgKmVjb250ZXh0LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaGFz aGpvaW4uaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2hhc2hqb2luLmgKaW5kZXggZTdiZjE1 OGMxYi4uMmM5NGI5MjZkMyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaGFz aGpvaW4uaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9oYXNoam9pbi5oCkBAIC0zMzcs NiArMzM3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSGFzaEpvaW5UYWJsZURhdGEKIAlGbWdySW5m byAgICpvdXRlcl9oYXNoZnVuY3Rpb25zOwkvKiBsb29rdXAgZGF0YSBmb3IgaGFzaCBmdW5j dGlvbnMgKi8KIAlGbWdySW5mbyAgICppbm5lcl9oYXNoZnVuY3Rpb25zOwkvKiBsb29rdXAg ZGF0YSBmb3IgaGFzaCBmdW5jdGlvbnMgKi8KIAlib29sCSAgICpoYXNoU3RyaWN0OwkJLyog aXMgZWFjaCBoYXNoIGpvaW4gb3BlcmF0b3Igc3RyaWN0PyAqLworCU9pZAkJICAgKmNvbGxh dGlvbnM7CiAKIAlTaXplCQlzcGFjZVVzZWQ7CQkvKiBtZW1vcnkgc3BhY2UgY3VycmVudGx5 IHVzZWQgYnkgdHVwbGVzICovCiAJU2l6ZQkJc3BhY2VBbGxvd2VkOwkvKiB1cHBlciBsaW1p dCBmb3Igc3BhY2UgdXNlZCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3Iv bm9kZUhhc2guaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVIYXNoLmgKaW5kZXggMTMw OWIzMmI5MC4uMTIzMzc2NjAyMyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3Iv bm9kZUhhc2guaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlSGFzaC5oCkBAIC0y NCw3ICsyNCw3IEBAIGV4dGVybiBOb2RlICpNdWx0aUV4ZWNIYXNoKEhhc2hTdGF0ZSAqbm9k ZSk7CiBleHRlcm4gdm9pZCBFeGVjRW5kSGFzaChIYXNoU3RhdGUgKm5vZGUpOwogZXh0ZXJu IHZvaWQgRXhlY1JlU2Nhbkhhc2goSGFzaFN0YXRlICpub2RlKTsKIAotZXh0ZXJuIEhhc2hK b2luVGFibGUgRXhlY0hhc2hUYWJsZUNyZWF0ZShIYXNoU3RhdGUgKnN0YXRlLCBMaXN0ICpo YXNoT3BlcmF0b3JzLAorZXh0ZXJuIEhhc2hKb2luVGFibGUgRXhlY0hhc2hUYWJsZUNyZWF0 ZShIYXNoU3RhdGUgKnN0YXRlLCBMaXN0ICpoYXNoT3BlcmF0b3JzLCBMaXN0ICpoYXNoQ29s bGF0aW9ucywKIAkJCQkJYm9vbCBrZWVwTnVsbHMpOwogZXh0ZXJuIHZvaWQgRXhlY1BhcmFs bGVsSGFzaFRhYmxlQWxsb2MoSGFzaEpvaW5UYWJsZSBoYXNodGFibGUsCiAJCQkJCQkgICBp bnQgYmF0Y2hubyk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMu aCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IDNiNzg5ZWU3Y2YuLjVm OTY0NDM2ZTAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCisr KyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBAIC02ODgsNiArNjg4LDcgQEAg dHlwZWRlZiBzdHJ1Y3QgVHVwbGVIYXNoVGFibGVEYXRhCiAJQXR0ck51bWJlciAqa2V5Q29s SWR4OwkJLyogYXR0ciBudW1iZXJzIG9mIGtleSBjb2x1bW5zICovCiAJRm1nckluZm8gICAq dGFiX2hhc2hfZnVuY3M7IC8qIGhhc2ggZnVuY3Rpb25zIGZvciB0YWJsZSBkYXRhdHlwZShz KSAqLwogCUV4cHJTdGF0ZSAgKnRhYl9lcV9mdW5jOwkvKiBjb21wYXJhdG9yIGZvciB0YWJs ZSBkYXRhdHlwZShzKSAqLworCU9pZAkJICAgKnRhYl9jb2xsYXRpb25zOwkvKiBjb2xsYXRp b25zIGZvciBoYXNoIGFuZCBjb21wYXJpc29uICovCiAJTWVtb3J5Q29udGV4dCB0YWJsZWN4 dDsJCS8qIG1lbW9yeSBjb250ZXh0IGNvbnRhaW5pbmcgdGFibGUgKi8KIAlNZW1vcnlDb250 ZXh0IHRlbXBjeHQ7CQkvKiBjb250ZXh0IGZvciBmdW5jdGlvbiBldmFsdWF0aW9ucyAqLwog CVNpemUJCWVudHJ5c2l6ZTsJCS8qIGFjdHVhbCBzaXplIHRvIG1ha2UgZWFjaCBoYXNoIGVu dHJ5ICovCkBAIC04NTcsNiArODU4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgU3ViUGxhblN0YXRl CiAJQXR0ck51bWJlciAqa2V5Q29sSWR4OwkJLyogY29udHJvbCBkYXRhIGZvciBoYXNoIHRh YmxlcyAqLwogCU9pZAkJICAgKnRhYl9lcV9mdW5jb2lkczsJLyogZXF1YWxpdHkgZnVuYyBv aWRzIGZvciB0YWJsZQogCQkJCQkJCQkJICogZGF0YXR5cGUocykgKi8KKwlPaWQJCSAgICp0 YWJfY29sbGF0aW9uczsJLyogY29sbGF0aW9ucyBmb3IgaGFzaCBhbmQgY29tcGFyaXNvbiAq LwogCUZtZ3JJbmZvICAgKnRhYl9oYXNoX2Z1bmNzOyAvKiBoYXNoIGZ1bmN0aW9ucyBmb3Ig dGFibGUgZGF0YXR5cGUocykgKi8KIAlGbWdySW5mbyAgICp0YWJfZXFfZnVuY3M7CS8qIGVx dWFsaXR5IGZ1bmN0aW9ucyBmb3IgdGFibGUgZGF0YXR5cGUocykgKi8KIAlGbWdySW5mbyAg ICpsaHNfaGFzaF9mdW5jczsgLyogaGFzaCBmdW5jdGlvbnMgZm9yIGxlZnRoYW5kIGRhdGF0 eXBlKHMpICovCkBAIC0xODY5LDYgKzE4NzEsNyBAQCB0eXBlZGVmIHN0cnVjdCBIYXNoSm9p blN0YXRlCiAJTGlzdAkgICAqaGpfT3V0ZXJIYXNoS2V5czsJLyogbGlzdCBvZiBFeHByU3Rh dGUgbm9kZXMgKi8KIAlMaXN0CSAgICpoal9Jbm5lckhhc2hLZXlzOwkvKiBsaXN0IG9mIEV4 cHJTdGF0ZSBub2RlcyAqLwogCUxpc3QJICAgKmhqX0hhc2hPcGVyYXRvcnM7CS8qIGxpc3Qg b2Ygb3BlcmF0b3IgT0lEcyAqLworCUxpc3QJICAgKmhqX0NvbGxhdGlvbnM7CiAJSGFzaEpv aW5UYWJsZSBoal9IYXNoVGFibGU7CiAJdWludDMyCQloal9DdXJIYXNoVmFsdWU7CiAJaW50 CQkJaGpfQ3VyQnVja2V0Tm87CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFu bm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCmluZGV4IDZkMDg3YzI2 OGYuLjg0MGJhNDE2YTAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rl cy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCkBAIC0yOTcsNiArMjk3 LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVjdXJzaXZlVW5pb24KIAkJCQkJCQkJICogZHVwbGlj YXRlLW5lc3MgKi8KIAlBdHRyTnVtYmVyICpkdXBDb2xJZHg7CQkvKiB0aGVpciBpbmRleGVz IGluIHRoZSB0YXJnZXQgbGlzdCAqLwogCU9pZAkJICAgKmR1cE9wZXJhdG9yczsJLyogZXF1 YWxpdHkgb3BlcmF0b3JzIHRvIGNvbXBhcmUgd2l0aCAqLworCU9pZAkJICAgKmR1cENvbGxh dGlvbnM7CiAJbG9uZwkJbnVtR3JvdXBzOwkJLyogZXN0aW1hdGVkIG51bWJlciBvZiBncm91 cHMgaW4gaW5wdXQgKi8KIH0gUmVjdXJzaXZlVW5pb247CiAKQEAgLTc3Myw2ICs3NzQsNyBA QCB0eXBlZGVmIHN0cnVjdCBHcm91cAogCWludAkJCW51bUNvbHM7CQkvKiBudW1iZXIgb2Yg Z3JvdXBpbmcgY29sdW1ucyAqLwogCUF0dHJOdW1iZXIgKmdycENvbElkeDsJCS8qIHRoZWly IGluZGV4ZXMgaW4gdGhlIHRhcmdldCBsaXN0ICovCiAJT2lkCQkgICAqZ3JwT3BlcmF0b3Jz OwkvKiBlcXVhbGl0eSBvcGVyYXRvcnMgdG8gY29tcGFyZSB3aXRoICovCisJT2lkCQkgICAq Z3JwQ29sbGF0aW9uczsKIH0gR3JvdXA7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLQpAQCAtNzk3 LDYgKzc5OSw3IEBAIHR5cGVkZWYgc3RydWN0IEFnZwogCWludAkJCW51bUNvbHM7CQkvKiBu dW1iZXIgb2YgZ3JvdXBpbmcgY29sdW1ucyAqLwogCUF0dHJOdW1iZXIgKmdycENvbElkeDsJ CS8qIHRoZWlyIGluZGV4ZXMgaW4gdGhlIHRhcmdldCBsaXN0ICovCiAJT2lkCQkgICAqZ3Jw T3BlcmF0b3JzOwkvKiBlcXVhbGl0eSBvcGVyYXRvcnMgdG8gY29tcGFyZSB3aXRoICovCisJ T2lkCQkgICAqZ3JwQ29sbGF0aW9uczsKIAlsb25nCQludW1Hcm91cHM7CQkvKiBlc3RpbWF0 ZWQgbnVtYmVyIG9mIGdyb3VwcyBpbiBpbnB1dCAqLwogCUJpdG1hcHNldCAgKmFnZ1BhcmFt czsJCS8qIElEcyBvZiBQYXJhbXMgdXNlZCBpbiBBZ2dyZWYgaW5wdXRzICovCiAJLyogTm90 ZTogcGxhbm5lciBwcm92aWRlcyBudW1Hcm91cHMgJiBhZ2dQYXJhbXMgb25seSBpbiBIQVNI RUQvTUlYRUQgY2FzZSAqLwpAQCAtODE1LDkgKzgxOCwxMSBAQCB0eXBlZGVmIHN0cnVjdCBX aW5kb3dBZ2cKIAlpbnQJCQlwYXJ0TnVtQ29sczsJLyogbnVtYmVyIG9mIGNvbHVtbnMgaW4g cGFydGl0aW9uIGNsYXVzZSAqLwogCUF0dHJOdW1iZXIgKnBhcnRDb2xJZHg7CQkvKiB0aGVp ciBpbmRleGVzIGluIHRoZSB0YXJnZXQgbGlzdCAqLwogCU9pZAkJICAgKnBhcnRPcGVyYXRv cnM7CS8qIGVxdWFsaXR5IG9wZXJhdG9ycyBmb3IgcGFydGl0aW9uIGNvbHVtbnMgKi8KKwlP aWQJCSAgICpwYXJ0Q29sbGF0aW9uczsJLyogY29sbGF0aW9ucyBmb3IgcGFydGl0aW9uIGNv bHVtbnMgKi8KIAlpbnQJCQlvcmROdW1Db2xzOwkJLyogbnVtYmVyIG9mIGNvbHVtbnMgaW4g b3JkZXJpbmcgY2xhdXNlICovCiAJQXR0ck51bWJlciAqb3JkQ29sSWR4OwkJLyogdGhlaXIg aW5kZXhlcyBpbiB0aGUgdGFyZ2V0IGxpc3QgKi8KIAlPaWQJCSAgICpvcmRPcGVyYXRvcnM7 CS8qIGVxdWFsaXR5IG9wZXJhdG9ycyBmb3Igb3JkZXJpbmcgY29sdW1ucyAqLworCU9pZAkJ ICAgKm9yZENvbGxhdGlvbnM7CS8qIGNvbGxhdGlvbnMgZm9yIG9yZGVyaW5nIGNvbHVtbnMg Ki8KIAlpbnQJCQlmcmFtZU9wdGlvbnM7CS8qIGZyYW1lX2NsYXVzZSBvcHRpb25zLCBzZWUg V2luZG93RGVmICovCiAJTm9kZQkgICAqc3RhcnRPZmZzZXQ7CS8qIGV4cHJlc3Npb24gZm9y IHN0YXJ0aW5nIGJvdW5kLCBpZiBhbnkgKi8KIAlOb2RlCSAgICplbmRPZmZzZXQ7CQkvKiBl eHByZXNzaW9uIGZvciBlbmRpbmcgYm91bmQsIGlmIGFueSAqLwpAQCAtODM5LDYgKzg0NCw3 IEBAIHR5cGVkZWYgc3RydWN0IFVuaXF1ZQogCWludAkJCW51bUNvbHM7CQkvKiBudW1iZXIg b2YgY29sdW1ucyB0byBjaGVjayBmb3IgdW5pcXVlbmVzcyAqLwogCUF0dHJOdW1iZXIgKnVu aXFDb2xJZHg7CQkvKiB0aGVpciBpbmRleGVzIGluIHRoZSB0YXJnZXQgbGlzdCAqLwogCU9p ZAkJICAgKnVuaXFPcGVyYXRvcnM7CS8qIGVxdWFsaXR5IG9wZXJhdG9ycyB0byBjb21wYXJl IHdpdGggKi8KKwlPaWQJCSAgICp1bmlxQ29sbGF0aW9uczsJLyogY29sbGF0aW9ucyBmb3Ig ZXF1YWxpdHkgY29tcGFyaXNvbnMgKi8KIH0gVW5pcXVlOwogCiAvKiAtLS0tLS0tLS0tLS0K QEAgLTkxMyw2ICs5MTksNyBAQCB0eXBlZGVmIHN0cnVjdCBTZXRPcAogCQkJCQkJCQkgKiBk dXBsaWNhdGUtbmVzcyAqLwogCUF0dHJOdW1iZXIgKmR1cENvbElkeDsJCS8qIHRoZWlyIGlu ZGV4ZXMgaW4gdGhlIHRhcmdldCBsaXN0ICovCiAJT2lkCQkgICAqZHVwT3BlcmF0b3JzOwkv KiBlcXVhbGl0eSBvcGVyYXRvcnMgdG8gY29tcGFyZSB3aXRoICovCisJT2lkCQkgICAqZHVw Q29sbGF0aW9uczsKIAlBdHRyTnVtYmVyCWZsYWdDb2xJZHg7CQkvKiB3aGVyZSBpcyB0aGUg ZmxhZyBjb2x1bW4sIGlmIGFueSAqLwogCWludAkJCWZpcnN0RmxhZzsJCS8qIGZsYWcgdmFs dWUgZm9yIGZpcnN0IGlucHV0IHJlbGF0aW9uICovCiAJbG9uZwkJbnVtR3JvdXBzOwkJLyog ZXN0aW1hdGVkIG51bWJlciBvZiBncm91cHMgaW4gaW5wdXQgKi8KZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL29wdGltaXplci9wbGFubWFpbi5oIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVy L3BsYW5tYWluLmgKaW5kZXggM2JiZGI1ZTJmNy4uYjA5M2EzYzhhYyAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvb3B0aW1pemVyL3BsYW5tYWluLmgKKysrIGIvc3JjL2luY2x1ZGUvb3B0 aW1pemVyL3BsYW5tYWluLmgKQEAgLTUzLDcgKzUzLDcgQEAgZXh0ZXJuIGJvb2wgaXNfcHJv amVjdGlvbl9jYXBhYmxlX3BsYW4oUGxhbiAqcGxhbik7CiBleHRlcm4gU29ydCAqbWFrZV9z b3J0X2Zyb21fc29ydGNsYXVzZXMoTGlzdCAqc29ydGNscywgUGxhbiAqbGVmdHRyZWUpOwog ZXh0ZXJuIEFnZyAqbWFrZV9hZ2coTGlzdCAqdGxpc3QsIExpc3QgKnF1YWwsCiAJCSBBZ2dT dHJhdGVneSBhZ2dzdHJhdGVneSwgQWdnU3BsaXQgYWdnc3BsaXQsCi0JCSBpbnQgbnVtR3Jv dXBDb2xzLCBBdHRyTnVtYmVyICpncnBDb2xJZHgsIE9pZCAqZ3JwT3BlcmF0b3JzLAorCQkg aW50IG51bUdyb3VwQ29scywgQXR0ck51bWJlciAqZ3JwQ29sSWR4LCBPaWQgKmdycE9wZXJh dG9ycywgT2lkICpncnBDb2xsYXRpb25zLAogCQkgTGlzdCAqZ3JvdXBpbmdTZXRzLCBMaXN0 ICpjaGFpbiwKIAkJIGRvdWJsZSBkTnVtR3JvdXBzLCBQbGFuICpsZWZ0dHJlZSk7CiBleHRl cm4gTGltaXQgKm1ha2VfbGltaXQoUGxhbiAqbGVmdHRyZWUsIE5vZGUgKmxpbWl0T2Zmc2V0 LCBOb2RlICpsaW1pdENvdW50KTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL29wdGltaXpl ci90bGlzdC5oIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3RsaXN0LmgKaW5kZXggNThkYjc5 MjAzYi4uNDZkNjE0ZjRmYiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3Rs aXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3RsaXN0LmgKQEAgLTMyLDYgKzMy LDcgQEAgZXh0ZXJuIGJvb2wgdGxpc3Rfc2FtZV9jb2xsYXRpb25zKExpc3QgKnRsaXN0LCBM aXN0ICpjb2xDb2xsYXRpb25zLCBib29sIGp1bmtPSykKIGV4dGVybiB2b2lkIGFwcGx5X3Rs aXN0X2xhYmVsaW5nKExpc3QgKmRlc3RfdGxpc3QsIExpc3QgKnNyY190bGlzdCk7CiAKIGV4 dGVybiBPaWQgKmV4dHJhY3RfZ3JvdXBpbmdfb3BzKExpc3QgKmdyb3VwQ2xhdXNlKTsKK2V4 dGVybiBPaWQgKmV4dHJhY3RfZ3JvdXBpbmdfY29sbGF0aW9ucyhMaXN0ICpncm91cENsYXVz ZSwgTGlzdCAqdGxpc3QpOwogZXh0ZXJuIEF0dHJOdW1iZXIgKmV4dHJhY3RfZ3JvdXBpbmdf Y29scyhMaXN0ICpncm91cENsYXVzZSwgTGlzdCAqdGxpc3QpOwogZXh0ZXJuIGJvb2wgZ3Jv dXBpbmdfaXNfc29ydGFibGUoTGlzdCAqZ3JvdXBDbGF1c2UpOwogZXh0ZXJuIGJvb2wgZ3Jv dXBpbmdfaXNfaGFzaGFibGUoTGlzdCAqZ3JvdXBDbGF1c2UpOwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuaCBiL3NyYy9pbmNsdWRlL3BhcnRp dGlvbmluZy9wYXJ0Ym91bmRzLmgKaW5kZXggYjFhZTM5YWQ2My4uNjgzZTE1NzRlYSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuaAorKysgYi9z cmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5oCkBAIC03Nyw2ICs3Nyw3IEBA IHR5cGVkZWYgc3RydWN0IFBhcnRpdGlvbkJvdW5kSW5mb0RhdGEKIAogZXh0ZXJuIGludAln ZXRfaGFzaF9wYXJ0aXRpb25fZ3JlYXRlc3RfbW9kdWx1cyhQYXJ0aXRpb25Cb3VuZEluZm8g Yik7CiBleHRlcm4gdWludDY0IGNvbXB1dGVfcGFydGl0aW9uX2hhc2hfdmFsdWUoaW50IHBh cnRuYXR0cywgRm1nckluZm8gKnBhcnRzdXBmdW5jLAorCQkJCQkJCSBPaWQgKnBhcnRjb2xs YXRpb24sCiAJCQkJCQkJIERhdHVtICp2YWx1ZXMsIGJvb2wgKmlzbnVsbCk7CiBleHRlcm4g TGlzdCAqZ2V0X3F1YWxfZnJvbV9wYXJ0Ym91bmQoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBw YXJlbnQsCiAJCQkJCQlQYXJ0aXRpb25Cb3VuZFNwZWMgKnNwZWMpOwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmggYi9zcmMvaW5jbHVkZS91dGlscy9sc3lz Y2FjaGUuaAppbmRleCAxNmIwYjFkMmRjLi5iOWE5ZWNiN2NjIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9sc3lz Y2FjaGUuaApAQCAtOTAsNiArOTAsNyBAQCBleHRlcm4gT2lkCWdldF9hdHR0eXBlKE9pZCBy ZWxpZCwgQXR0ck51bWJlciBhdHRudW0pOwogZXh0ZXJuIHZvaWQgZ2V0X2F0dHR5cGV0eXBt b2Rjb2xsKE9pZCByZWxpZCwgQXR0ck51bWJlciBhdHRudW0sCiAJCQkJCSAgT2lkICp0eXBp ZCwgaW50MzIgKnR5cG1vZCwgT2lkICpjb2xsaWQpOwogZXh0ZXJuIGNoYXIgKmdldF9jb2xs YXRpb25fbmFtZShPaWQgY29sbG9pZCk7CitleHRlcm4gYm9vbCBnZXRfY29sbGF0aW9uX2lz ZGV0ZXJtaW5pc3RpYyhPaWQgY29sbG9pZCk7CiBleHRlcm4gY2hhciAqZ2V0X2NvbnN0cmFp bnRfbmFtZShPaWQgY29ub2lkKTsKIGV4dGVybiBjaGFyICpnZXRfbGFuZ3VhZ2VfbmFtZShP aWQgbGFuZ29pZCwgYm9vbCBtaXNzaW5nX29rKTsKIGV4dGVybiBPaWQJZ2V0X29wY2xhc3Nf ZmFtaWx5KE9pZCBvcGNsYXNzKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3Bn X2xvY2FsZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcGdfbG9jYWxlLmgKaW5kZXggNjA2OTUy YWZkNy4uYTM0MmE2MjU0OSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcGdfbG9j YWxlLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcGdfbG9jYWxlLmgKQEAgLTgyLDYgKzgy LDcgQEAgZXh0ZXJuIHZvaWQgY2FjaGVfbG9jYWxlX3RpbWUodm9pZCk7CiBzdHJ1Y3QgcGdf bG9jYWxlX3N0cnVjdAogewogCWNoYXIJCXByb3ZpZGVyOworCWJvb2wJCWRldGVybWluaXN0 aWM7CiAJdW5pb24KIAl7CiAjaWZkZWYgSEFWRV9MT0NBTEVfVApkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb2xsYXRlLmljdS51dGY4Lm91dCBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvY29sbGF0ZS5pY3UudXRmOC5vdXQKaW5kZXggZjk1ZDE2NTI4 OC4uZThkNWVmMzNkNCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9j b2xsYXRlLmljdS51dGY4Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Nv bGxhdGUuaWN1LnV0Zjgub3V0CkBAIC0xMTAwLDYgKzExMDAsNjkwIEBAIHNlbGVjdCB0ZXh0 cmFuZ2VfZW5fdXMoJ0EnLCdaJykgQD4gJ2InOjp0ZXh0OwogCiBkcm9wIHR5cGUgdGV4dHJh bmdlX2M7CiBkcm9wIHR5cGUgdGV4dHJhbmdlX2VuX3VzOworLS0gbm9uZGV0ZXJtaW5pc3Rp YyBjb2xsYXRpb25zCitDUkVBVEUgQ09MTEFUSU9OIGN0ZXN0X2RldCAocHJvdmlkZXIgPSBp Y3UsIGxvY2FsZSA9ICd1bmQnLCBkZXRlcm1pbmlzdGljID0gdHJ1ZSk7CitDUkVBVEUgQ09M TEFUSU9OIGN0ZXN0X25vbmRldCAocHJvdmlkZXIgPSBpY3UsIGxvY2FsZSA9ICd1bmQnLCBk ZXRlcm1pbmlzdGljID0gZmFsc2UpOworQ1JFQVRFIFRBQkxFIHRlc3Q2IChhIGludCwgYiB0 ZXh0KTsKKy0tIHNhbWUgc3RyaW5nIGluIGRpZmZlcmVudCBub3JtYWwgZm9ybXMKK0lOU0VS VCBJTlRPIHRlc3Q2IFZBTFVFUyAoMSwgVSYnXDAwRTRiYycpOworSU5TRVJUIElOVE8gdGVz dDYgVkFMVUVTICgyLCBVJidcMDA2MVwwMzA4YmMnKTsKK1NFTEVDVCAqIEZST00gdGVzdDY7 CisgYSB8ICBiICAKKy0tLSstLS0tLQorIDEgfCDDpGJjCisgMiB8IGHMiGJjCisoMiByb3dz KQorCitTRUxFQ1QgKiBGUk9NIHRlc3Q2IFdIRVJFIGIgPSAnw6RiYycgQ09MTEFURSBjdGVz dF9kZXQ7CisgYSB8ICBiICAKKy0tLSstLS0tLQorIDEgfCDDpGJjCisoMSByb3cpCisKK1NF TEVDVCAqIEZST00gdGVzdDYgV0hFUkUgYiA9ICfDpGJjJyBDT0xMQVRFIGN0ZXN0X25vbmRl dDsKKyBhIHwgIGIgIAorLS0tKy0tLS0tCisgMSB8IMOkYmMKKyAyIHwgYcyIYmMKKygyIHJv d3MpCisKK0NSRUFURSBDT0xMQVRJT04gY2FzZV9zZW5zaXRpdmUgKHByb3ZpZGVyID0gaWN1 LCBsb2NhbGUgPSAndW5kJyk7CitDUkVBVEUgQ09MTEFUSU9OIGNhc2VfaW5zZW5zaXRpdmUg KHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAndW5kLXUta3MtbGV2ZWwyJywgZGV0ZXJtaW5p c3RpYyA9IGZhbHNlKTsKK1NFTEVDVCAnYWJjJyA8PSAnQUJDJyBDT0xMQVRFIGNhc2Vfc2Vu c2l0aXZlLCAnYWJjJyA+PSAnQUJDJyBDT0xMQVRFIGNhc2Vfc2Vuc2l0aXZlOworID9jb2x1 bW4/IHwgP2NvbHVtbj8gCistLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyB0ICAgICAgICB8IGYK KygxIHJvdykKKworU0VMRUNUICdhYmMnIDw9ICdBQkMnIENPTExBVEUgY2FzZV9pbnNlbnNp dGl2ZSwgJ2FiYycgPj0gJ0FCQycgQ09MTEFURSBjYXNlX2luc2Vuc2l0aXZlOworID9jb2x1 bW4/IHwgP2NvbHVtbj8gCistLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyB0ICAgICAgICB8IHQK KygxIHJvdykKKworQ1JFQVRFIFRBQkxFIHRlc3QxY3MgKHggdGV4dCBDT0xMQVRFIGNhc2Vf c2Vuc2l0aXZlKTsKK0NSRUFURSBUQUJMRSB0ZXN0MmNzICh4IHRleHQgQ09MTEFURSBjYXNl X3NlbnNpdGl2ZSk7CitDUkVBVEUgVEFCTEUgdGVzdDNjcyAoeCB0ZXh0IENPTExBVEUgY2Fz ZV9zZW5zaXRpdmUpOworSU5TRVJUIElOVE8gdGVzdDFjcyBWQUxVRVMgKCdhYmMnKSwgKCdk ZWYnKSwgKCdnaGknKTsKK0lOU0VSVCBJTlRPIHRlc3QyY3MgVkFMVUVTICgnQUJDJyksICgn Z2hpJyk7CitJTlNFUlQgSU5UTyB0ZXN0M2NzIFZBTFVFUyAoJ2FiYycpLCAoJ0FCQycpLCAo J2RlZicpLCAoJ2doaScpOworU0VMRUNUIHggRlJPTSB0ZXN0M2NzIFdIRVJFIHggPSAnYWJj JzsKKyAgeCAgCistLS0tLQorIGFiYworKDEgcm93KQorCitTRUxFQ1QgeCBGUk9NIHRlc3Qz Y3MgV0hFUkUgeCA8PiAnYWJjJzsKKyAgeCAgCistLS0tLQorIEFCQworIGRlZgorIGdoaQor KDMgcm93cykKKworU0VMRUNUIHggRlJPTSB0ZXN0M2NzIFdIRVJFIHggTElLRSAnYSUnOwor ICB4ICAKKy0tLS0tCisgYWJjCisoMSByb3cpCisKK1NFTEVDVCB4IEZST00gdGVzdDNjcyBX SEVSRSB4IElMSUtFICdhJSc7CisgIHggIAorLS0tLS0KKyBhYmMKKyBBQkMKKygyIHJvd3Mp CisKK1NFTEVDVCB4IEZST00gdGVzdDNjcyBXSEVSRSB4IFNJTUlMQVIgVE8gJ2ElJzsKKyAg eCAgCistLS0tLQorIGFiYworKDEgcm93KQorCitTRUxFQ1QgeCBGUk9NIHRlc3QzY3MgV0hF UkUgeCB+ICdhJzsKKyAgeCAgCistLS0tLQorIGFiYworKDEgcm93KQorCitTRUxFQ1QgeCBG Uk9NIHRlc3QxY3MgVU5JT04gU0VMRUNUIHggRlJPTSB0ZXN0MmNzIE9SREVSIEJZIHg7Cisg IHggIAorLS0tLS0KKyBhYmMKKyBBQkMKKyBkZWYKKyBnaGkKKyg0IHJvd3MpCisKK1NFTEVD VCB4IEZST00gdGVzdDJjcyBVTklPTiBTRUxFQ1QgeCBGUk9NIHRlc3QxY3MgT1JERVIgQlkg eDsKKyAgeCAgCistLS0tLQorIGFiYworIEFCQworIGRlZgorIGdoaQorKDQgcm93cykKKwor U0VMRUNUIHggRlJPTSB0ZXN0MWNzIElOVEVSU0VDVCBTRUxFQ1QgeCBGUk9NIHRlc3QyY3M7 CisgIHggIAorLS0tLS0KKyBnaGkKKygxIHJvdykKKworU0VMRUNUIHggRlJPTSB0ZXN0MmNz IElOVEVSU0VDVCBTRUxFQ1QgeCBGUk9NIHRlc3QxY3M7CisgIHggIAorLS0tLS0KKyBnaGkK KygxIHJvdykKKworU0VMRUNUIHggRlJPTSB0ZXN0MWNzIEVYQ0VQVCBTRUxFQ1QgeCBGUk9N IHRlc3QyY3M7CisgIHggIAorLS0tLS0KKyBhYmMKKyBkZWYKKygyIHJvd3MpCisKK1NFTEVD VCB4IEZST00gdGVzdDJjcyBFWENFUFQgU0VMRUNUIHggRlJPTSB0ZXN0MWNzOworICB4ICAK Ky0tLS0tCisgQUJDCisoMSByb3cpCisKK1NFTEVDVCBESVNUSU5DVCB4IEZST00gdGVzdDNj cyBPUkRFUiBCWSB4OworICB4ICAKKy0tLS0tCisgYWJjCisgQUJDCisgZGVmCisgZ2hpCiso NCByb3dzKQorCitTRUxFQ1QgY291bnQoRElTVElOQ1QgeCkgRlJPTSB0ZXN0M2NzOworIGNv dW50IAorLS0tLS0tLQorICAgICA0CisoMSByb3cpCisKK1NFTEVDVCB4LCBjb3VudCgqKSBG Uk9NIHRlc3QzY3MgR1JPVVAgQlkgeCBPUkRFUiBCWSB4OworICB4ICB8IGNvdW50IAorLS0t LS0rLS0tLS0tLQorIGFiYyB8ICAgICAxCisgQUJDIHwgICAgIDEKKyBkZWYgfCAgICAgMQor IGdoaSB8ICAgICAxCisoNCByb3dzKQorCitTRUxFQ1QgeCwgcm93X251bWJlcigpIE9WRVIg KE9SREVSIEJZIHgpLCByYW5rKCkgT1ZFUiAoT1JERVIgQlkgeCkgRlJPTSB0ZXN0M2NzIE9S REVSIEJZIHg7CisgIHggIHwgcm93X251bWJlciB8IHJhbmsgCistLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tCisgYWJjIHwgICAgICAgICAgMSB8ICAgIDEKKyBBQkMgfCAgICAgICAgICAy IHwgICAgMgorIGRlZiB8ICAgICAgICAgIDMgfCAgICAzCisgZ2hpIHwgICAgICAgICAgNCB8 ICAgIDQKKyg0IHJvd3MpCisKK0NSRUFURSBVTklRVUUgSU5ERVggT04gdGVzdDFjcyAoeCk7 ICAtLSBvaworSU5TRVJUIElOVE8gdGVzdDFjcyBWQUxVRVMgKCdBQkMnKTsgIC0tIG9rCitD UkVBVEUgVU5JUVVFIElOREVYIE9OIHRlc3QzY3MgKHgpOyAgLS0gb2sKK1NFTEVDVCBzdHJp bmdfdG9fYXJyYXkoJ0FCQyxERUYsR0hJJyBDT0xMQVRFIGNhc2Vfc2Vuc2l0aXZlLCAnLCcs ICdhYmMnKTsKKyBzdHJpbmdfdG9fYXJyYXkgCistLS0tLS0tLS0tLS0tLS0tLQorIHtBQkMs REVGLEdISX0KKygxIHJvdykKKworU0VMRUNUIHN0cmluZ190b19hcnJheSgnQUJDREVGR0hJ JyBDT0xMQVRFIGNhc2Vfc2Vuc2l0aXZlLCBOVUxMLCAnYicpOworICAgc3RyaW5nX3RvX2Fy cmF5ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB7QSxCLEMsRCxFLEYsRyxILEl9Ciso MSByb3cpCisKK0NSRUFURSBUQUJMRSB0ZXN0MWNpICh4IHRleHQgQ09MTEFURSBjYXNlX2lu c2Vuc2l0aXZlKTsKK0NSRUFURSBUQUJMRSB0ZXN0MmNpICh4IHRleHQgQ09MTEFURSBjYXNl X2luc2Vuc2l0aXZlKTsKK0NSRUFURSBUQUJMRSB0ZXN0M2NpICh4IHRleHQgQ09MTEFURSBj YXNlX2luc2Vuc2l0aXZlKTsKK0lOU0VSVCBJTlRPIHRlc3QxY2kgVkFMVUVTICgnYWJjJyks ICgnZGVmJyksICgnZ2hpJyk7CitJTlNFUlQgSU5UTyB0ZXN0MmNpIFZBTFVFUyAoJ0FCQycp LCAoJ2doaScpOworSU5TRVJUIElOVE8gdGVzdDNjaSBWQUxVRVMgKCdhYmMnKSwgKCdBQkMn KSwgKCdkZWYnKSwgKCdnaGknKTsKK1NFTEVDVCB4IEZST00gdGVzdDNjaSBXSEVSRSB4ID0g J2FiYyc7CisgIHggIAorLS0tLS0KKyBhYmMKKyBBQkMKKygyIHJvd3MpCisKK1NFTEVDVCB4 IEZST00gdGVzdDNjaSBXSEVSRSB4IDw+ICdhYmMnOworICB4ICAKKy0tLS0tCisgZGVmCisg Z2hpCisoMiByb3dzKQorCitTRUxFQ1QgeCBGUk9NIHRlc3QzY2kgV0hFUkUgeCBMSUtFICdh JSc7CitFUlJPUjogIG5vbmRldGVybWluaXN0aWMgY29sbGF0aW9ucyBhcmUgbm90IHN1cHBv cnRlZCBmb3IgTElLRQorU0VMRUNUIHggRlJPTSB0ZXN0M2NpIFdIRVJFIHggSUxJS0UgJ2El JzsKK0VSUk9SOiAgbm9uZGV0ZXJtaW5pc3RpYyBjb2xsYXRpb25zIGFyZSBub3Qgc3VwcG9y dGVkIGZvciBJTElLRQorU0VMRUNUIHggRlJPTSB0ZXN0M2NpIFdIRVJFIHggU0lNSUxBUiBU TyAnYSUnOworRVJST1I6ICBub25kZXRlcm1pbmlzdGljIGNvbGxhdGlvbnMgYXJlIG5vdCBz dXBwb3J0ZWQgZm9yIHJlZ3VsYXIgZXhwcmVzc2lvbnMKK1NFTEVDVCB4IEZST00gdGVzdDNj aSBXSEVSRSB4IH4gJ2EnOworRVJST1I6ICBub25kZXRlcm1pbmlzdGljIGNvbGxhdGlvbnMg YXJlIG5vdCBzdXBwb3J0ZWQgZm9yIHJlZ3VsYXIgZXhwcmVzc2lvbnMKK1NFTEVDVCB4IEZS T00gdGVzdDFjaSBVTklPTiBTRUxFQ1QgeCBGUk9NIHRlc3QyY2kgT1JERVIgQlkgeDsKKyAg eCAgCistLS0tLQorIGFiYworIGRlZgorIGdoaQorKDMgcm93cykKKworU0VMRUNUIHggRlJP TSB0ZXN0MmNpIFVOSU9OIFNFTEVDVCB4IEZST00gdGVzdDFjaSBPUkRFUiBCWSB4OworICB4 ICAKKy0tLS0tCisgQUJDCisgZGVmCisgZ2hpCisoMyByb3dzKQorCitTRUxFQ1QgeCBGUk9N IHRlc3QxY2kgSU5URVJTRUNUIFNFTEVDVCB4IEZST00gdGVzdDJjaTsKKyAgeCAgCistLS0t LQorIGdoaQorIGFiYworKDIgcm93cykKKworU0VMRUNUIHggRlJPTSB0ZXN0MmNpIElOVEVS U0VDVCBTRUxFQ1QgeCBGUk9NIHRlc3QxY2k7CisgIHggIAorLS0tLS0KKyBnaGkKKyBBQkMK KygyIHJvd3MpCisKK1NFTEVDVCB4IEZST00gdGVzdDFjaSBFWENFUFQgU0VMRUNUIHggRlJP TSB0ZXN0MmNpOworICB4ICAKKy0tLS0tCisgZGVmCisoMSByb3cpCisKK1NFTEVDVCB4IEZS T00gdGVzdDJjaSBFWENFUFQgU0VMRUNUIHggRlJPTSB0ZXN0MWNpOworIHggCistLS0KKygw IHJvd3MpCisKK1NFTEVDVCBESVNUSU5DVCB4IEZST00gdGVzdDNjaSBPUkRFUiBCWSB4Owor ICB4ICAKKy0tLS0tCisgYWJjCisgZGVmCisgZ2hpCisoMyByb3dzKQorCitTRUxFQ1QgY291 bnQoRElTVElOQ1QgeCkgRlJPTSB0ZXN0M2NpOworIGNvdW50IAorLS0tLS0tLQorICAgICAz CisoMSByb3cpCisKK1NFTEVDVCB4LCBjb3VudCgqKSBGUk9NIHRlc3QzY2kgR1JPVVAgQlkg eCBPUkRFUiBCWSB4OworICB4ICB8IGNvdW50IAorLS0tLS0rLS0tLS0tLQorIGFiYyB8ICAg ICAyCisgZGVmIHwgICAgIDEKKyBnaGkgfCAgICAgMQorKDMgcm93cykKKworU0VMRUNUIHgs IHJvd19udW1iZXIoKSBPVkVSIChPUkRFUiBCWSB4KSwgcmFuaygpIE9WRVIgKE9SREVSIEJZ IHgpIEZST00gdGVzdDNjaSBPUkRFUiBCWSB4OworICB4ICB8IHJvd19udW1iZXIgfCByYW5r IAorLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLQorIGFiYyB8ICAgICAgICAgIDEgfCAgICAx CisgQUJDIHwgICAgICAgICAgMiB8ICAgIDEKKyBkZWYgfCAgICAgICAgICAzIHwgICAgMwor IGdoaSB8ICAgICAgICAgIDQgfCAgICA0CisoNCByb3dzKQorCitDUkVBVEUgVU5JUVVFIElO REVYIE9OIHRlc3QxY2kgKHgpOyAgLS0gb2sKK0lOU0VSVCBJTlRPIHRlc3QxY2kgVkFMVUVT ICgnQUJDJyk7ICAtLSBlcnJvcgorRVJST1I6ICBkdXBsaWNhdGUga2V5IHZhbHVlIHZpb2xh dGVzIHVuaXF1ZSBjb25zdHJhaW50ICJ0ZXN0MWNpX3hfaWR4IgorREVUQUlMOiAgS2V5ICh4 KT0oQUJDKSBhbHJlYWR5IGV4aXN0cy4KK0NSRUFURSBVTklRVUUgSU5ERVggT04gdGVzdDNj aSAoeCk7ICAtLSBlcnJvcgorRVJST1I6ICBjb3VsZCBub3QgY3JlYXRlIHVuaXF1ZSBpbmRl eCAidGVzdDNjaV94X2lkeCIKK0RFVEFJTDogIEtleSAoeCk9KGFiYykgaXMgZHVwbGljYXRl ZC4KK1NFTEVDVCBzdHJpbmdfdG9fYXJyYXkoJ0FCQyxERUYsR0hJJyBDT0xMQVRFIGNhc2Vf aW5zZW5zaXRpdmUsICcsJywgJ2FiYycpOworRVJST1I6ICBub25kZXRlcm1pbmlzdGljIGNv bGxhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgZm9yIHN1YnN0cmluZyBzZWFyY2hlcworU0VM RUNUIHN0cmluZ190b19hcnJheSgnQUJDREVGR0hJJyBDT0xMQVRFIGNhc2VfaW5zZW5zaXRp dmUsIE5VTEwsICdiJyk7CisgICAgc3RyaW5nX3RvX2FycmF5ICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIHtBLE5VTEwsQyxELEUsRixHLEgsSX0KKygxIHJvdykKKworLS0g YnBjaGFyCitDUkVBVEUgVEFCTEUgdGVzdDFicGNpICh4IGNoYXIoMykgQ09MTEFURSBjYXNl X2luc2Vuc2l0aXZlKTsKK0NSRUFURSBUQUJMRSB0ZXN0MmJwY2kgKHggY2hhcigzKSBDT0xM QVRFIGNhc2VfaW5zZW5zaXRpdmUpOworQ1JFQVRFIFRBQkxFIHRlc3QzYnBjaSAoeCBjaGFy KDMpIENPTExBVEUgY2FzZV9pbnNlbnNpdGl2ZSk7CitJTlNFUlQgSU5UTyB0ZXN0MWJwY2kg VkFMVUVTICgnYWJjJyksICgnZGVmJyksICgnZ2hpJyk7CitJTlNFUlQgSU5UTyB0ZXN0MmJw Y2kgVkFMVUVTICgnQUJDJyksICgnZ2hpJyk7CitJTlNFUlQgSU5UTyB0ZXN0M2JwY2kgVkFM VUVTICgnYWJjJyksICgnQUJDJyksICgnZGVmJyksICgnZ2hpJyk7CitTRUxFQ1QgeCBGUk9N IHRlc3QzYnBjaSBXSEVSRSB4ID0gJ2FiYyc7CisgIHggIAorLS0tLS0KKyBhYmMKKyBBQkMK KygyIHJvd3MpCisKK1NFTEVDVCB4IEZST00gdGVzdDNicGNpIFdIRVJFIHggPD4gJ2FiYyc7 CisgIHggIAorLS0tLS0KKyBkZWYKKyBnaGkKKygyIHJvd3MpCisKK1NFTEVDVCB4IEZST00g dGVzdDNicGNpIFdIRVJFIHggTElLRSAnYSUnOworRVJST1I6ICBub25kZXRlcm1pbmlzdGlj IGNvbGxhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgZm9yIExJS0UKK1NFTEVDVCB4IEZST00g dGVzdDNicGNpIFdIRVJFIHggSUxJS0UgJ2ElJzsKK0VSUk9SOiAgbm9uZGV0ZXJtaW5pc3Rp YyBjb2xsYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkIGZvciBJTElLRQorU0VMRUNUIHggRlJP TSB0ZXN0M2JwY2kgV0hFUkUgeCBTSU1JTEFSIFRPICdhJSc7CitFUlJPUjogIG5vbmRldGVy bWluaXN0aWMgY29sbGF0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCBmb3IgcmVndWxhciBleHBy ZXNzaW9ucworU0VMRUNUIHggRlJPTSB0ZXN0M2JwY2kgV0hFUkUgeCB+ICdhJzsKK0VSUk9S OiAgbm9uZGV0ZXJtaW5pc3RpYyBjb2xsYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkIGZvciBy ZWd1bGFyIGV4cHJlc3Npb25zCitTRUxFQ1QgeCBGUk9NIHRlc3QxYnBjaSBVTklPTiBTRUxF Q1QgeCBGUk9NIHRlc3QyYnBjaSBPUkRFUiBCWSB4OworICB4ICAKKy0tLS0tCisgYWJjCisg ZGVmCisgZ2hpCisoMyByb3dzKQorCitTRUxFQ1QgeCBGUk9NIHRlc3QyYnBjaSBVTklPTiBT RUxFQ1QgeCBGUk9NIHRlc3QxYnBjaSBPUkRFUiBCWSB4OworICB4ICAKKy0tLS0tCisgQUJD CisgZGVmCisgZ2hpCisoMyByb3dzKQorCitTRUxFQ1QgeCBGUk9NIHRlc3QxYnBjaSBJTlRF UlNFQ1QgU0VMRUNUIHggRlJPTSB0ZXN0MmJwY2k7CisgIHggIAorLS0tLS0KKyBnaGkKKyBh YmMKKygyIHJvd3MpCisKK1NFTEVDVCB4IEZST00gdGVzdDJicGNpIElOVEVSU0VDVCBTRUxF Q1QgeCBGUk9NIHRlc3QxYnBjaTsKKyAgeCAgCistLS0tLQorIGdoaQorIEFCQworKDIgcm93 cykKKworU0VMRUNUIHggRlJPTSB0ZXN0MWJwY2kgRVhDRVBUIFNFTEVDVCB4IEZST00gdGVz dDJicGNpOworICB4ICAKKy0tLS0tCisgZGVmCisoMSByb3cpCisKK1NFTEVDVCB4IEZST00g dGVzdDJicGNpIEVYQ0VQVCBTRUxFQ1QgeCBGUk9NIHRlc3QxYnBjaTsKKyB4IAorLS0tCiso MCByb3dzKQorCitTRUxFQ1QgRElTVElOQ1QgeCBGUk9NIHRlc3QzYnBjaSBPUkRFUiBCWSB4 OworICB4ICAKKy0tLS0tCisgYWJjCisgZGVmCisgZ2hpCisoMyByb3dzKQorCitTRUxFQ1Qg Y291bnQoRElTVElOQ1QgeCkgRlJPTSB0ZXN0M2JwY2k7CisgY291bnQgCistLS0tLS0tCisg ICAgIDMKKygxIHJvdykKKworU0VMRUNUIHgsIGNvdW50KCopIEZST00gdGVzdDNicGNpIEdS T1VQIEJZIHggT1JERVIgQlkgeDsKKyAgeCAgfCBjb3VudCAKKy0tLS0tKy0tLS0tLS0KKyBh YmMgfCAgICAgMgorIGRlZiB8ICAgICAxCisgZ2hpIHwgICAgIDEKKygzIHJvd3MpCisKK1NF TEVDVCB4LCByb3dfbnVtYmVyKCkgT1ZFUiAoT1JERVIgQlkgeCksIHJhbmsoKSBPVkVSIChP UkRFUiBCWSB4KSBGUk9NIHRlc3QzYnBjaSBPUkRFUiBCWSB4OworICB4ICB8IHJvd19udW1i ZXIgfCByYW5rIAorLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLQorIGFiYyB8ICAgICAgICAg IDEgfCAgICAxCisgQUJDIHwgICAgICAgICAgMiB8ICAgIDEKKyBkZWYgfCAgICAgICAgICAz IHwgICAgMworIGdoaSB8ICAgICAgICAgIDQgfCAgICA0CisoNCByb3dzKQorCitDUkVBVEUg VU5JUVVFIElOREVYIE9OIHRlc3QxYnBjaSAoeCk7ICAtLSBvaworSU5TRVJUIElOVE8gdGVz dDFicGNpIFZBTFVFUyAoJ0FCQycpOyAgLS0gZXJyb3IKK0VSUk9SOiAgZHVwbGljYXRlIGtl eSB2YWx1ZSB2aW9sYXRlcyB1bmlxdWUgY29uc3RyYWludCAidGVzdDFicGNpX3hfaWR4Igor REVUQUlMOiAgS2V5ICh4KT0oQUJDKSBhbHJlYWR5IGV4aXN0cy4KK0NSRUFURSBVTklRVUUg SU5ERVggT04gdGVzdDNicGNpICh4KTsgIC0tIGVycm9yCitFUlJPUjogIGNvdWxkIG5vdCBj cmVhdGUgdW5pcXVlIGluZGV4ICJ0ZXN0M2JwY2lfeF9pZHgiCitERVRBSUw6ICBLZXkgKHgp PShhYmMpIGlzIGR1cGxpY2F0ZWQuCitTRUxFQ1Qgc3RyaW5nX3RvX2FycmF5KCdBQkMsREVG LEdISSc6OmNoYXIoMTEpIENPTExBVEUgY2FzZV9pbnNlbnNpdGl2ZSwgJywnLCAnYWJjJyk7 CitFUlJPUjogIG5vbmRldGVybWluaXN0aWMgY29sbGF0aW9ucyBhcmUgbm90IHN1cHBvcnRl ZCBmb3Igc3Vic3RyaW5nIHNlYXJjaGVzCitTRUxFQ1Qgc3RyaW5nX3RvX2FycmF5KCdBQkNE RUZHSEknOjpjaGFyKDkpIENPTExBVEUgY2FzZV9pbnNlbnNpdGl2ZSwgTlVMTCwgJ2InKTsK KyAgICBzdHJpbmdfdG9fYXJyYXkgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg e0EsTlVMTCxDLEQsRSxGLEcsSCxJfQorKDEgcm93KQorCistLSBVbmljb2RlIHNwZWNpYWwg Y2FzZTogZGlmZmVyZW50IHZhcmlhbnRzIG9mIEdyZWVrIGxvd2VyIGNhc2Ugc2lnbWEuCist LSBBIG5haXZlIGltcGxlbWVudGF0aW9uIGxpa2UgY2l0ZXh0IHRoYXQganVzdCBkb2VzIGxv d2VyKHgpID0KKy0tIGxvd2VyKHkpIHdpbGwgZG8gdGhlIHdyb25nIHRoaW5nIGhlcmUsIGJl Y2F1c2UgbG93ZXIoJ86jJykgaXMgJ8+DJworLS0gYnV0IHVwcGVyKCfPgicpIGlzICfOoycu CitTRUxFQ1QgJ+G9gM60z4XPg8+DzrXPjc+CJyA9ICfhvYjOlM6lzqPOo86Vzo7OoycgQ09M TEFURSBjYXNlX3NlbnNpdGl2ZTsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyBmCisoMSBy b3cpCisKK1NFTEVDVCAn4b2AzrTPhc+Dz4POtc+Nz4InID0gJ+G9iM6UzqXOo86jzpXOjs6j JyBDT0xMQVRFIGNhc2VfaW5zZW5zaXRpdmU7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisg dAorKDEgcm93KQorCistLSBuYW1lIHZzLiB0ZXh0IGNvbXBhcmlzb24gb3BlcmF0b3JzCitT RUxFQ1QgcmVsbmFtZSBGUk9NIHBnX2NsYXNzIFdIRVJFIHJlbG5hbWUgPSAnUEdfQ0xBU1Mn Ojp0ZXh0IENPTExBVEUgY2FzZV9pbnNlbnNpdGl2ZTsKKyByZWxuYW1lICAKKy0tLS0tLS0t LS0KKyBwZ19jbGFzcworKDEgcm93KQorCitTRUxFQ1QgcmVsbmFtZSBGUk9NIHBnX2NsYXNz IFdIRVJFICdQR19DTEFTUyc6OnRleHQgPSByZWxuYW1lIENPTExBVEUgY2FzZV9pbnNlbnNp dGl2ZTsKKyByZWxuYW1lICAKKy0tLS0tLS0tLS0KKyBwZ19jbGFzcworKDEgcm93KQorCitT RUxFQ1QgdHlwbmFtZSBGUk9NIHBnX3R5cGUgV0hFUkUgdHlwbmFtZSBMSUtFICdpbnRfJyBB TkQgdHlwbmFtZSA8PiAnSU5UMic6OnRleHQgQ09MTEFURSBjYXNlX2luc2Vuc2l0aXZlOwor IHR5cG5hbWUgCistLS0tLS0tLS0KKyBpbnQ0CisgaW50OAorKDIgcm93cykKKworU0VMRUNU IHR5cG5hbWUgRlJPTSBwZ190eXBlIFdIRVJFIHR5cG5hbWUgTElLRSAnaW50XycgQU5EICdJ TlQyJzo6dGV4dCA8PiB0eXBuYW1lIENPTExBVEUgY2FzZV9pbnNlbnNpdGl2ZTs7CisgdHlw bmFtZSAKKy0tLS0tLS0tLQorIGludDQKKyBpbnQ4CisoMiByb3dzKQorCistLSB0ZXN0IGNh c2UgYWRhcHRlZCBmcm9tIHN1YnNlbGVjdC5zcWwKK0NSRUFURSBURU1QIFRBQkxFIG91dGVy X3RleHQgKGYxIHRleHQgQ09MTEFURSBjYXNlX2luc2Vuc2l0aXZlLCBmMiB0ZXh0KTsKK0lO U0VSVCBJTlRPIG91dGVyX3RleHQgVkFMVUVTICgnYScsICdhJyk7CitJTlNFUlQgSU5UTyBv dXRlcl90ZXh0IFZBTFVFUyAoJ2InLCAnYScpOworSU5TRVJUIElOVE8gb3V0ZXJfdGV4dCBW QUxVRVMgKCdBJywgTlVMTCk7CitJTlNFUlQgSU5UTyBvdXRlcl90ZXh0IFZBTFVFUyAoJ0In LCBOVUxMKTsKK0NSRUFURSBURU1QIFRBQkxFIGlubmVyX3RleHQgKGMxIHRleHQgQ09MTEFU RSBjYXNlX2luc2Vuc2l0aXZlLCBjMiB0ZXh0KTsKK0lOU0VSVCBJTlRPIGlubmVyX3RleHQg VkFMVUVTICgnYScsIE5VTEwpOworU0VMRUNUICogRlJPTSBvdXRlcl90ZXh0IFdIRVJFIChm MSwgZjIpIE5PVCBJTiAoU0VMRUNUICogRlJPTSBpbm5lcl90ZXh0KTsKKyBmMSB8IGYyIAor LS0tLSstLS0tCisgYiAgfCBhCisgQiAgfCAKKygyIHJvd3MpCisKKy0tIGFjY2VudHMKK0NS RUFURSBDT0xMQVRJT04gaWdub3JlX2FjY2VudHMgKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUg PSAndW5kLXUta3MtbGV2ZWwxLWtjLXRydWUnLCBkZXRlcm1pbmlzdGljID0gZmFsc2UpOwor Q1JFQVRFIFRBQkxFIHRlc3Q0IChhIGludCwgYiB0ZXh0KTsKK0lOU0VSVCBJTlRPIHRlc3Q0 IFZBTFVFUyAoMSwgJ2NvdGUnKSwgKDIsICdjw7R0ZScpLCAoMywgJ2NvdMOpJyksICg0LCAn Y8O0dMOpJyk7CitTRUxFQ1QgKiBGUk9NIHRlc3Q0IFdIRVJFIGIgPSAnY290ZSc7CisgYSB8 ICBiICAgCistLS0rLS0tLS0tCisgMSB8IGNvdGUKKygxIHJvdykKKworU0VMRUNUICogRlJP TSB0ZXN0NCBXSEVSRSBiID0gJ2NvdGUnIENPTExBVEUgaWdub3JlX2FjY2VudHM7CisgYSB8 ICBiICAgCistLS0rLS0tLS0tCisgMSB8IGNvdGUKKyAyIHwgY8O0dGUKKyAzIHwgY290w6kK KyA0IHwgY8O0dMOpCisoNCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHRlc3Q0IFdIRVJFIGIg PSAnQ290ZScgQ09MTEFURSBpZ25vcmVfYWNjZW50czsgIC0tIHN0aWxsIGNhc2Utc2Vuc2l0 aXZlCisgYSB8IGIgCistLS0rLS0tCisoMCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHRlc3Q0 IFdIRVJFIGIgPSAnQ290ZScgQ09MTEFURSBjYXNlX2luc2Vuc2l0aXZlOworIGEgfCAgYiAg IAorLS0tKy0tLS0tLQorIDEgfCBjb3RlCisoMSByb3cpCisKKy0tIGZvcmVpZ24ga2V5cyAo c2hvdWxkIHVzZSBjb2xsYXRpb24gb2YgcHJpbWFyeSBrZXkpCistLSBQSyBpcyBjYXNlLXNl bnNpdGl2ZSwgRksgaXMgY2FzZS1pbnNlbnNpdGl2ZQorQ1JFQVRFIFRBQkxFIHRlc3QxMHBr ICh4IHRleHQgQ09MTEFURSBjYXNlX3NlbnNpdGl2ZSBQUklNQVJZIEtFWSk7CitJTlNFUlQg SU5UTyB0ZXN0MTBwayBWQUxVRVMgKCdhYmMnKSwgKCdkZWYnKSwgKCdnaGknKTsKK0NSRUFU RSBUQUJMRSB0ZXN0MTBmayAoeCB0ZXh0IENPTExBVEUgY2FzZV9pbnNlbnNpdGl2ZSBSRUZF UkVOQ0VTIHRlc3QxMHBrICh4KSBPTiBVUERBVEUgQ0FTQ0FERSBPTiBERUxFVEUgQ0FTQ0FE RSk7CitJTlNFUlQgSU5UTyB0ZXN0MTBmayBWQUxVRVMgKCdhYmMnKTsgIC0tIG9rCitJTlNF UlQgSU5UTyB0ZXN0MTBmayBWQUxVRVMgKCdBQkMnKTsgIC0tIGVycm9yCitFUlJPUjogIGlu c2VydCBvciB1cGRhdGUgb24gdGFibGUgInRlc3QxMGZrIiB2aW9sYXRlcyBmb3JlaWduIGtl eSBjb25zdHJhaW50ICJ0ZXN0MTBma194X2ZrZXkiCitERVRBSUw6ICBLZXkgKHgpPShBQkMp IGlzIG5vdCBwcmVzZW50IGluIHRhYmxlICJ0ZXN0MTBwayIuCitJTlNFUlQgSU5UTyB0ZXN0 MTBmayBWQUxVRVMgKCd4eXonKTsgIC0tIGVycm9yCitFUlJPUjogIGluc2VydCBvciB1cGRh dGUgb24gdGFibGUgInRlc3QxMGZrIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50 ICJ0ZXN0MTBma194X2ZrZXkiCitERVRBSUw6ICBLZXkgKHgpPSh4eXopIGlzIG5vdCBwcmVz ZW50IGluIHRhYmxlICJ0ZXN0MTBwayIuCitTRUxFQ1QgKiBGUk9NIHRlc3QxMHBrOworICB4 ICAKKy0tLS0tCisgYWJjCisgZGVmCisgZ2hpCisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9N IHRlc3QxMGZrOworICB4ICAKKy0tLS0tCisgYWJjCisoMSByb3cpCisKKy0tIHJlc3RyaWN0 IHVwZGF0ZSBldmVuIHRob3VnaCB0aGUgdmFsdWVzIGFyZSAiZXF1YWwiIGluIHRoZSBGSyB0 YWJsZQorVVBEQVRFIHRlc3QxMGZrIFNFVCB4ID0gJ0FCQycgV0hFUkUgeCA9ICdhYmMnOyAg LS0gZXJyb3IKK0VSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAidGVzdDEwZmsi IHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlc3QxMGZrX3hfZmtleSIKK0RF VEFJTDogIEtleSAoeCk9KEFCQykgaXMgbm90IHByZXNlbnQgaW4gdGFibGUgInRlc3QxMHBr Ii4KK1NFTEVDVCAqIEZST00gdGVzdDEwZms7CisgIHggIAorLS0tLS0KKyBhYmMKKygxIHJv dykKKworREVMRVRFIEZST00gdGVzdDEwcGsgV0hFUkUgeCA9ICdhYmMnOworU0VMRUNUICog RlJPTSB0ZXN0MTBwazsKKyAgeCAgCistLS0tLQorIGRlZgorIGdoaQorKDIgcm93cykKKwor U0VMRUNUICogRlJPTSB0ZXN0MTBmazsKKyB4IAorLS0tCisoMCByb3dzKQorCistLSBQSyBp cyBjYXNlLWluc2Vuc2l0aXZlLCBGSyBpcyBjYXNlLXNlbnNpdGl2ZQorQ1JFQVRFIFRBQkxF IHRlc3QxMXBrICh4IHRleHQgQ09MTEFURSBjYXNlX2luc2Vuc2l0aXZlIFBSSU1BUlkgS0VZ KTsKK0lOU0VSVCBJTlRPIHRlc3QxMXBrIFZBTFVFUyAoJ2FiYycpLCAoJ2RlZicpLCAoJ2do aScpOworQ1JFQVRFIFRBQkxFIHRlc3QxMWZrICh4IHRleHQgQ09MTEFURSBjYXNlX3NlbnNp dGl2ZSBSRUZFUkVOQ0VTIHRlc3QxMXBrICh4KSBPTiBVUERBVEUgQ0FTQ0FERSBPTiBERUxF VEUgQ0FTQ0FERSk7CitJTlNFUlQgSU5UTyB0ZXN0MTFmayBWQUxVRVMgKCdhYmMnKTsgIC0t IG9rCitJTlNFUlQgSU5UTyB0ZXN0MTFmayBWQUxVRVMgKCdBQkMnKTsgIC0tIG9rCitJTlNF UlQgSU5UTyB0ZXN0MTFmayBWQUxVRVMgKCd4eXonKTsgIC0tIGVycm9yCitFUlJPUjogIGlu c2VydCBvciB1cGRhdGUgb24gdGFibGUgInRlc3QxMWZrIiB2aW9sYXRlcyBmb3JlaWduIGtl eSBjb25zdHJhaW50ICJ0ZXN0MTFma194X2ZrZXkiCitERVRBSUw6ICBLZXkgKHgpPSh4eXop IGlzIG5vdCBwcmVzZW50IGluIHRhYmxlICJ0ZXN0MTFwayIuCitTRUxFQ1QgKiBGUk9NIHRl c3QxMXBrOworICB4ICAKKy0tLS0tCisgYWJjCisgZGVmCisgZ2hpCisoMyByb3dzKQorCitT RUxFQ1QgKiBGUk9NIHRlc3QxMWZrOworICB4ICAKKy0tLS0tCisgYWJjCisgQUJDCisoMiBy b3dzKQorCistLSBjYXNjYWRlIHVwZGF0ZSBldmVuIHRob3VnaCB0aGUgdmFsdWVzIGFyZSAi ZXF1YWwiIGluIHRoZSBQSyB0YWJsZQorVVBEQVRFIHRlc3QxMXBrIFNFVCB4ID0gJ0FCQycg V0hFUkUgeCA9ICdhYmMnOworU0VMRUNUICogRlJPTSB0ZXN0MTFmazsKKyAgeCAgCistLS0t LQorIEFCQworIEFCQworKDIgcm93cykKKworREVMRVRFIEZST00gdGVzdDExcGsgV0hFUkUg eCA9ICdhYmMnOworU0VMRUNUICogRlJPTSB0ZXN0MTFwazsKKyAgeCAgCistLS0tLQorIGRl ZgorIGdoaQorKDIgcm93cykKKworU0VMRUNUICogRlJPTSB0ZXN0MTFmazsKKyB4IAorLS0t CisoMCByb3dzKQorCistLSBwYXJ0aXRpb25pbmcKK0NSRUFURSBUQUJMRSB0ZXN0MjAgKGEg aW50LCBiIHRleHQgQ09MTEFURSBjYXNlX2luc2Vuc2l0aXZlKSBQQVJUSVRJT04gQlkgTElT VCAoYik7CitDUkVBVEUgVEFCTEUgdGVzdDIwXzEgUEFSVElUSU9OIE9GIHRlc3QyMCBGT1Ig VkFMVUVTIElOICgnYWJjJyk7CitJTlNFUlQgSU5UTyB0ZXN0MjAgVkFMVUVTICgxLCAnYWJj Jyk7CitJTlNFUlQgSU5UTyB0ZXN0MjAgVkFMVUVTICgyLCAnQUJDJyk7CitTRUxFQ1QgKiBG Uk9NIHRlc3QyMF8xOworIGEgfCAgYiAgCistLS0rLS0tLS0KKyAxIHwgYWJjCisgMiB8IEFC QworKDIgcm93cykKKworQ1JFQVRFIFRBQkxFIHRlc3QyMSAoYSBpbnQsIGIgdGV4dCBDT0xM QVRFIGNhc2VfaW5zZW5zaXRpdmUpIFBBUlRJVElPTiBCWSBSQU5HRSAoYik7CitDUkVBVEUg VEFCTEUgdGVzdDIxXzEgUEFSVElUSU9OIE9GIHRlc3QyMSBGT1IgVkFMVUVTIEZST00gKCdB QkMnKSBUTyAoJ0RFRicpOworSU5TRVJUIElOVE8gdGVzdDIxIFZBTFVFUyAoMSwgJ2FiYycp OworSU5TRVJUIElOVE8gdGVzdDIxIFZBTFVFUyAoMiwgJ0FCQycpOworU0VMRUNUICogRlJP TSB0ZXN0MjFfMTsKKyBhIHwgIGIgIAorLS0tKy0tLS0tCisgMSB8IGFiYworIDIgfCBBQkMK KygyIHJvd3MpCisKK0NSRUFURSBUQUJMRSB0ZXN0MjIgKGEgaW50LCBiIHRleHQgQ09MTEFU RSBjYXNlX3NlbnNpdGl2ZSkgUEFSVElUSU9OIEJZIEhBU0ggKGIpOworQ1JFQVRFIFRBQkxF IHRlc3QyMl8wIFBBUlRJVElPTiBPRiB0ZXN0MjIgRk9SIFZBTFVFUyBXSVRIIChNT0RVTFVT IDIsIFJFTUFJTkRFUiAwKTsKK0NSRUFURSBUQUJMRSB0ZXN0MjJfMSBQQVJUSVRJT04gT0Yg dGVzdDIyIEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxVUyAyLCBSRU1BSU5ERVIgMSk7CitJTlNF UlQgSU5UTyB0ZXN0MjIgVkFMVUVTICgxLCAnZGVmJyk7CitJTlNFUlQgSU5UTyB0ZXN0MjIg VkFMVUVTICgyLCAnREVGJyk7CistLSB0aGV5IGVuZCB1cCBpbiBkaWZmZXJlbnQgcGFydGl0 aW9ucworU0VMRUNUIChTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0MjJfMCkgPSAoU0VMRUNU IGNvdW50KCopIEZST00gdGVzdDIyXzEpOworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIHQK KygxIHJvdykKKworQ1JFQVRFIFRBQkxFIHRlc3QyMyAoYSBpbnQsIGIgdGV4dCBDT0xMQVRF IGNhc2VfaW5zZW5zaXRpdmUpIFBBUlRJVElPTiBCWSBIQVNIIChiKTsKK0NSRUFURSBUQUJM RSB0ZXN0MjNfMCBQQVJUSVRJT04gT0YgdGVzdDIzIEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxV UyAyLCBSRU1BSU5ERVIgMCk7CitDUkVBVEUgVEFCTEUgdGVzdDIzXzEgUEFSVElUSU9OIE9G IHRlc3QyMyBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgMiwgUkVNQUlOREVSIDEpOworSU5T RVJUIElOVE8gdGVzdDIzIFZBTFVFUyAoMSwgJ2RlZicpOworSU5TRVJUIElOVE8gdGVzdDIz IFZBTFVFUyAoMiwgJ0RFRicpOworLS0gdGhleSBlbmQgdXAgaW4gdGhlIHNhbWUgcGFydGl0 aW9uIChidXQgaXQncyBwbGF0Zm9ybS1kZXBlbmRlbnQgd2hpY2ggb25lKQorU0VMRUNUIChT RUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0MjNfMCkgPD4gKFNFTEVDVCBjb3VudCgqKSBGUk9N IHRlc3QyM18xKTsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK0NS RUFURSBUQUJMRSB0ZXN0MzAgKGEgaW50LCBiIGNoYXIoMykgQ09MTEFURSBjYXNlX2luc2Vu c2l0aXZlKSBQQVJUSVRJT04gQlkgTElTVCAoYik7CitDUkVBVEUgVEFCTEUgdGVzdDMwXzEg UEFSVElUSU9OIE9GIHRlc3QzMCBGT1IgVkFMVUVTIElOICgnYWJjJyk7CitJTlNFUlQgSU5U TyB0ZXN0MzAgVkFMVUVTICgxLCAnYWJjJyk7CitJTlNFUlQgSU5UTyB0ZXN0MzAgVkFMVUVT ICgyLCAnQUJDJyk7CitTRUxFQ1QgKiBGUk9NIHRlc3QzMF8xOworIGEgfCAgYiAgCistLS0r LS0tLS0KKyAxIHwgYWJjCisgMiB8IEFCQworKDIgcm93cykKKworQ1JFQVRFIFRBQkxFIHRl c3QzMSAoYSBpbnQsIGIgY2hhcigzKSBDT0xMQVRFIGNhc2VfaW5zZW5zaXRpdmUpIFBBUlRJ VElPTiBCWSBSQU5HRSAoYik7CitDUkVBVEUgVEFCTEUgdGVzdDMxXzEgUEFSVElUSU9OIE9G IHRlc3QzMSBGT1IgVkFMVUVTIEZST00gKCdBQkMnKSBUTyAoJ0RFRicpOworSU5TRVJUIElO VE8gdGVzdDMxIFZBTFVFUyAoMSwgJ2FiYycpOworSU5TRVJUIElOVE8gdGVzdDMxIFZBTFVF UyAoMiwgJ0FCQycpOworU0VMRUNUICogRlJPTSB0ZXN0MzFfMTsKKyBhIHwgIGIgIAorLS0t Ky0tLS0tCisgMSB8IGFiYworIDIgfCBBQkMKKygyIHJvd3MpCisKK0NSRUFURSBUQUJMRSB0 ZXN0MzIgKGEgaW50LCBiIGNoYXIoMykgQ09MTEFURSBjYXNlX3NlbnNpdGl2ZSkgUEFSVElU SU9OIEJZIEhBU0ggKGIpOworQ1JFQVRFIFRBQkxFIHRlc3QzMl8wIFBBUlRJVElPTiBPRiB0 ZXN0MzIgRk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDIsIFJFTUFJTkRFUiAwKTsKK0NSRUFU RSBUQUJMRSB0ZXN0MzJfMSBQQVJUSVRJT04gT0YgdGVzdDMyIEZPUiBWQUxVRVMgV0lUSCAo TU9EVUxVUyAyLCBSRU1BSU5ERVIgMSk7CitJTlNFUlQgSU5UTyB0ZXN0MzIgVkFMVUVTICgx LCAnZGVmJyk7CitJTlNFUlQgSU5UTyB0ZXN0MzIgVkFMVUVTICgyLCAnREVGJyk7CistLSB0 aGV5IGVuZCB1cCBpbiBkaWZmZXJlbnQgcGFydGl0aW9ucworU0VMRUNUIChTRUxFQ1QgY291 bnQoKikgRlJPTSB0ZXN0MzJfMCkgPSAoU0VMRUNUIGNvdW50KCopIEZST00gdGVzdDMyXzEp OworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworQ1JFQVRFIFRBQkxF IHRlc3QzMyAoYSBpbnQsIGIgY2hhcigzKSBDT0xMQVRFIGNhc2VfaW5zZW5zaXRpdmUpIFBB UlRJVElPTiBCWSBIQVNIIChiKTsKK0NSRUFURSBUQUJMRSB0ZXN0MzNfMCBQQVJUSVRJT04g T0YgdGVzdDMzIEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxVUyAyLCBSRU1BSU5ERVIgMCk7CitD UkVBVEUgVEFCTEUgdGVzdDMzXzEgUEFSVElUSU9OIE9GIHRlc3QzMyBGT1IgVkFMVUVTIFdJ VEggKE1PRFVMVVMgMiwgUkVNQUlOREVSIDEpOworSU5TRVJUIElOVE8gdGVzdDMzIFZBTFVF UyAoMSwgJ2RlZicpOworSU5TRVJUIElOVE8gdGVzdDMzIFZBTFVFUyAoMiwgJ0RFRicpOwor LS0gdGhleSBlbmQgdXAgaW4gdGhlIHNhbWUgcGFydGl0aW9uIChidXQgaXQncyBwbGF0Zm9y bS1kZXBlbmRlbnQgd2hpY2ggb25lKQorU0VMRUNUIChTRUxFQ1QgY291bnQoKikgRlJPTSB0 ZXN0MzNfMCkgPD4gKFNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3QzM18xKTsKKyA/Y29sdW1u PyAKKy0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKIC0tIGNsZWFudXAKIFNFVCBjbGllbnRf bWluX21lc3NhZ2VzIFRPIHdhcm5pbmc7CiBEUk9QIFNDSEVNQSBjb2xsYXRlX3Rlc3RzIENB U0NBREU7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvbGxhdGUu bGludXgudXRmOC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvbGxhdGUubGlu dXgudXRmOC5vdXQKaW5kZXggZDMzZjA0YTNiNS4uNmIyNDVhN2YyOCAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb2xsYXRlLmxpbnV4LnV0Zjgub3V0CisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29sbGF0ZS5saW51eC51dGY4Lm91dApAQCAt MTExNyw2ICsxMTE3LDExIEBAIHNlbGVjdCB0ZXh0cmFuZ2VfZW5fdXMoJ0EnLCdaJykgQD4g J2InOjp0ZXh0OwogCiBkcm9wIHR5cGUgdGV4dHJhbmdlX2M7CiBkcm9wIHR5cGUgdGV4dHJh bmdlX2VuX3VzOworLS0gbm9uZGV0ZXJtaW5pc3RpYyBjb2xsYXRpb25zCistLSAobm90IHN1 cHBvcnRlZCB3aXRoIGxpYmMgcHJvdmlkZXIpCitDUkVBVEUgQ09MTEFUSU9OIGN0ZXN0X2Rl dCAobG9jYWxlID0gJ2VuX1VTLnV0ZjgnLCBkZXRlcm1pbmlzdGljID0gdHJ1ZSk7CitFUlJP UjogIG5vbmRldGVybWluaXN0aWMgY29sbGF0aW9ucyBub3Qgc3VwcG9ydGVkIHdpdGggdGhp cyBwcm92aWRlcgorQ1JFQVRFIENPTExBVElPTiBjdGVzdF9ub25kZXQgKGxvY2FsZSA9ICdl bl9VUy51dGY4JywgZGV0ZXJtaW5pc3RpYyA9IGZhbHNlKTsKIC0tIGNsZWFudXAKIFNFVCBj bGllbnRfbWluX21lc3NhZ2VzIFRPIHdhcm5pbmc7CiBEUk9QIFNDSEVNQSBjb2xsYXRlX3Rl c3RzIENBU0NBREU7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Nv bGxhdGUub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb2xsYXRlLm91dAppbmRl eCBmY2JlM2E1Y2M4Li5kYmZhNWM5MzQ4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2NvbGxhdGUub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv Y29sbGF0ZS5vdXQKQEAgLTQ5OCw2ICs0OTgsMjEgQEAgU0VMRUNUIGEsIGIsIGEgPCBiIGFz IGx0IEZST00KICBBIHwgYiB8IHQKICgyIHJvd3MpCiAKKy0tIGNvbGxhdGlvbiBtaXNtYXRj aCBpbiBzdWJzZWxlY3RzCitTRUxFQ1QgKiBGUk9NIGNvbGxhdGVfdGVzdDEwIFdIRVJFICh4 LCB5KSBOT1QgSU4gKFNFTEVDVCB5LCB4IEZST00gY29sbGF0ZV90ZXN0MTApOworRVJST1I6 ICBjb3VsZCBub3QgZGV0ZXJtaW5lIHdoaWNoIGNvbGxhdGlvbiB0byB1c2UgZm9yIHN0cmlu ZyBoYXNoaW5nCitISU5UOiAgVXNlIHRoZSBDT0xMQVRFIGNsYXVzZSB0byBzZXQgdGhlIGNv bGxhdGlvbiBleHBsaWNpdGx5LgorLS0gbm93IGl0IHdvcmtzIHdpdGggb3ZlcnJpZGVzCitT RUxFQ1QgKiBGUk9NIGNvbGxhdGVfdGVzdDEwIFdIRVJFICh4IENPTExBVEUgIlBPU0lYIiwg eSBDT0xMQVRFICJDIikgTk9UIElOIChTRUxFQ1QgeSwgeCBGUk9NIGNvbGxhdGVfdGVzdDEw KTsKKyBhIHwgeCB8IHkgCistLS0rLS0tKy0tLQorKDAgcm93cykKKworU0VMRUNUICogRlJP TSBjb2xsYXRlX3Rlc3QxMCBXSEVSRSAoeCwgeSkgTk9UIElOIChTRUxFQ1QgeSBDT0xMQVRF ICJDIiwgeCBDT0xMQVRFICJQT1NJWCIgRlJPTSBjb2xsYXRlX3Rlc3QxMCk7CisgYSB8IHgg fCB5IAorLS0tKy0tLSstLS0KKygwIHJvd3MpCisKIC0tIGNhc3RpbmcKIFNFTEVDVCBDQVNU KCc0MicgQVMgdGV4dCBDT0xMQVRFICJDIik7CiBFUlJPUjogIHN5bnRheCBlcnJvciBhdCBv ciBuZWFyICJDT0xMQVRFIgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9zdWJzZWxlY3Qub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzZWxlY3Qu b3V0CmluZGV4IGNjM2Y1ZjM3MzcuLmVkZDZkMWVmN2YgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2VsZWN0Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3N1YnNlbGVjdC5vdXQKQEAgLTc0NSw2ICs3NDUsMjUgQEAgc2VsZWN0ICog ZnJvbSBvdXRlcl83NTk3IHdoZXJlIChmMSwgZjIpIG5vdCBpbiAoc2VsZWN0ICogZnJvbSBp bm5lcl83NTk3KTsKICAgMSB8ICAgCiAoMiByb3dzKQogCistLQorLS0gU2ltaWxhciB0ZXN0 IGNhc2UgdXNpbmcgdGV4dCB0aGF0IHZlcmlmaWVzIHRoYXQgY29sbGF0aW9uCistLSBpbmZv cm1hdGlvbiBpcyBwYXNzZWQgdGhyb3VnaCBieSBleGVjVHVwbGVzRXF1YWwoKSBpbiBub2Rl U3VicGxhbi5jCistLSAob3RoZXJ3aXNlIGl0IHdvdWxkIGVycm9yIGluIHRleHRlcSgpKQor LS0KK2NyZWF0ZSB0ZW1wIHRhYmxlIG91dGVyX3RleHQgKGYxIHRleHQsIGYyIHRleHQpOwor aW5zZXJ0IGludG8gb3V0ZXJfdGV4dCB2YWx1ZXMgKCdhJywgJ2EnKTsKK2luc2VydCBpbnRv IG91dGVyX3RleHQgdmFsdWVzICgnYicsICdhJyk7CitpbnNlcnQgaW50byBvdXRlcl90ZXh0 IHZhbHVlcyAoJ2EnLCBudWxsKTsKK2luc2VydCBpbnRvIG91dGVyX3RleHQgdmFsdWVzICgn YicsIG51bGwpOworY3JlYXRlIHRlbXAgdGFibGUgaW5uZXJfdGV4dCAoYzEgdGV4dCwgYzIg dGV4dCk7CitpbnNlcnQgaW50byBpbm5lcl90ZXh0IHZhbHVlcyAoJ2EnLCBudWxsKTsKK3Nl bGVjdCAqIGZyb20gb3V0ZXJfdGV4dCB3aGVyZSAoZjEsIGYyKSBub3QgaW4gKHNlbGVjdCAq IGZyb20gaW5uZXJfdGV4dCk7CisgZjEgfCBmMiAKKy0tLS0rLS0tLQorIGIgIHwgYQorIGIg IHwgCisoMiByb3dzKQorCiAtLQogLS0gVGVzdCBjYXNlIGZvciBwcmVtYXR1cmUgbWVtb3J5 IHJlbGVhc2UgZHVyaW5nIGhhc2hpbmcgb2Ygc3VicGxhbiBvdXRwdXQKIC0tCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb2xsYXRlLmljdS51dGY4LnNxbCBiL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL2NvbGxhdGUuaWN1LnV0Zjguc3FsCmluZGV4IDBhZWJhM2UyMDIu LmIwZTBiMjFkMWUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbGxhdGUu aWN1LnV0Zjguc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbGxhdGUuaWN1LnV0 Zjguc3FsCkBAIC00MjUsNiArNDI1LDI0MSBAQCBDUkVBVEUgSU5ERVggY29sbGF0ZV9kZXBf dGVzdDRpIE9OIGNvbGxhdGVfZGVwX3Rlc3Q0dCAoYiBDT0xMQVRFIHRlc3QwKTsKIGRyb3Ag dHlwZSB0ZXh0cmFuZ2VfZW5fdXM7CiAKIAorLS0gbm9uZGV0ZXJtaW5pc3RpYyBjb2xsYXRp b25zCisKK0NSRUFURSBDT0xMQVRJT04gY3Rlc3RfZGV0IChwcm92aWRlciA9IGljdSwgbG9j YWxlID0gJ3VuZCcsIGRldGVybWluaXN0aWMgPSB0cnVlKTsKK0NSRUFURSBDT0xMQVRJT04g Y3Rlc3Rfbm9uZGV0IChwcm92aWRlciA9IGljdSwgbG9jYWxlID0gJ3VuZCcsIGRldGVybWlu aXN0aWMgPSBmYWxzZSk7CisKK0NSRUFURSBUQUJMRSB0ZXN0NiAoYSBpbnQsIGIgdGV4dCk7 CistLSBzYW1lIHN0cmluZyBpbiBkaWZmZXJlbnQgbm9ybWFsIGZvcm1zCitJTlNFUlQgSU5U TyB0ZXN0NiBWQUxVRVMgKDEsIFUmJ1wwMEU0YmMnKTsKK0lOU0VSVCBJTlRPIHRlc3Q2IFZB TFVFUyAoMiwgVSYnXDAwNjFcMDMwOGJjJyk7CitTRUxFQ1QgKiBGUk9NIHRlc3Q2OworU0VM RUNUICogRlJPTSB0ZXN0NiBXSEVSRSBiID0gJ8OkYmMnIENPTExBVEUgY3Rlc3RfZGV0Owor U0VMRUNUICogRlJPTSB0ZXN0NiBXSEVSRSBiID0gJ8OkYmMnIENPTExBVEUgY3Rlc3Rfbm9u ZGV0OworCitDUkVBVEUgQ09MTEFUSU9OIGNhc2Vfc2Vuc2l0aXZlIChwcm92aWRlciA9IGlj dSwgbG9jYWxlID0gJ3VuZCcpOworQ1JFQVRFIENPTExBVElPTiBjYXNlX2luc2Vuc2l0aXZl IChwcm92aWRlciA9IGljdSwgbG9jYWxlID0gJ3VuZC11LWtzLWxldmVsMicsIGRldGVybWlu aXN0aWMgPSBmYWxzZSk7CisKK1NFTEVDVCAnYWJjJyA8PSAnQUJDJyBDT0xMQVRFIGNhc2Vf c2Vuc2l0aXZlLCAnYWJjJyA+PSAnQUJDJyBDT0xMQVRFIGNhc2Vfc2Vuc2l0aXZlOworU0VM RUNUICdhYmMnIDw9ICdBQkMnIENPTExBVEUgY2FzZV9pbnNlbnNpdGl2ZSwgJ2FiYycgPj0g J0FCQycgQ09MTEFURSBjYXNlX2luc2Vuc2l0aXZlOworCitDUkVBVEUgVEFCTEUgdGVzdDFj cyAoeCB0ZXh0IENPTExBVEUgY2FzZV9zZW5zaXRpdmUpOworQ1JFQVRFIFRBQkxFIHRlc3Qy Y3MgKHggdGV4dCBDT0xMQVRFIGNhc2Vfc2Vuc2l0aXZlKTsKK0NSRUFURSBUQUJMRSB0ZXN0 M2NzICh4IHRleHQgQ09MTEFURSBjYXNlX3NlbnNpdGl2ZSk7CitJTlNFUlQgSU5UTyB0ZXN0 MWNzIFZBTFVFUyAoJ2FiYycpLCAoJ2RlZicpLCAoJ2doaScpOworSU5TRVJUIElOVE8gdGVz dDJjcyBWQUxVRVMgKCdBQkMnKSwgKCdnaGknKTsKK0lOU0VSVCBJTlRPIHRlc3QzY3MgVkFM VUVTICgnYWJjJyksICgnQUJDJyksICgnZGVmJyksICgnZ2hpJyk7CisKK1NFTEVDVCB4IEZS T00gdGVzdDNjcyBXSEVSRSB4ID0gJ2FiYyc7CitTRUxFQ1QgeCBGUk9NIHRlc3QzY3MgV0hF UkUgeCA8PiAnYWJjJzsKK1NFTEVDVCB4IEZST00gdGVzdDNjcyBXSEVSRSB4IExJS0UgJ2El JzsKK1NFTEVDVCB4IEZST00gdGVzdDNjcyBXSEVSRSB4IElMSUtFICdhJSc7CitTRUxFQ1Qg eCBGUk9NIHRlc3QzY3MgV0hFUkUgeCBTSU1JTEFSIFRPICdhJSc7CitTRUxFQ1QgeCBGUk9N IHRlc3QzY3MgV0hFUkUgeCB+ICdhJzsKK1NFTEVDVCB4IEZST00gdGVzdDFjcyBVTklPTiBT RUxFQ1QgeCBGUk9NIHRlc3QyY3MgT1JERVIgQlkgeDsKK1NFTEVDVCB4IEZST00gdGVzdDJj cyBVTklPTiBTRUxFQ1QgeCBGUk9NIHRlc3QxY3MgT1JERVIgQlkgeDsKK1NFTEVDVCB4IEZS T00gdGVzdDFjcyBJTlRFUlNFQ1QgU0VMRUNUIHggRlJPTSB0ZXN0MmNzOworU0VMRUNUIHgg RlJPTSB0ZXN0MmNzIElOVEVSU0VDVCBTRUxFQ1QgeCBGUk9NIHRlc3QxY3M7CitTRUxFQ1Qg eCBGUk9NIHRlc3QxY3MgRVhDRVBUIFNFTEVDVCB4IEZST00gdGVzdDJjczsKK1NFTEVDVCB4 IEZST00gdGVzdDJjcyBFWENFUFQgU0VMRUNUIHggRlJPTSB0ZXN0MWNzOworU0VMRUNUIERJ U1RJTkNUIHggRlJPTSB0ZXN0M2NzIE9SREVSIEJZIHg7CitTRUxFQ1QgY291bnQoRElTVElO Q1QgeCkgRlJPTSB0ZXN0M2NzOworU0VMRUNUIHgsIGNvdW50KCopIEZST00gdGVzdDNjcyBH Uk9VUCBCWSB4IE9SREVSIEJZIHg7CitTRUxFQ1QgeCwgcm93X251bWJlcigpIE9WRVIgKE9S REVSIEJZIHgpLCByYW5rKCkgT1ZFUiAoT1JERVIgQlkgeCkgRlJPTSB0ZXN0M2NzIE9SREVS IEJZIHg7CitDUkVBVEUgVU5JUVVFIElOREVYIE9OIHRlc3QxY3MgKHgpOyAgLS0gb2sKK0lO U0VSVCBJTlRPIHRlc3QxY3MgVkFMVUVTICgnQUJDJyk7ICAtLSBvaworQ1JFQVRFIFVOSVFV RSBJTkRFWCBPTiB0ZXN0M2NzICh4KTsgIC0tIG9rCitTRUxFQ1Qgc3RyaW5nX3RvX2FycmF5 KCdBQkMsREVGLEdISScgQ09MTEFURSBjYXNlX3NlbnNpdGl2ZSwgJywnLCAnYWJjJyk7CitT RUxFQ1Qgc3RyaW5nX3RvX2FycmF5KCdBQkNERUZHSEknIENPTExBVEUgY2FzZV9zZW5zaXRp dmUsIE5VTEwsICdiJyk7CisKK0NSRUFURSBUQUJMRSB0ZXN0MWNpICh4IHRleHQgQ09MTEFU RSBjYXNlX2luc2Vuc2l0aXZlKTsKK0NSRUFURSBUQUJMRSB0ZXN0MmNpICh4IHRleHQgQ09M TEFURSBjYXNlX2luc2Vuc2l0aXZlKTsKK0NSRUFURSBUQUJMRSB0ZXN0M2NpICh4IHRleHQg Q09MTEFURSBjYXNlX2luc2Vuc2l0aXZlKTsKK0lOU0VSVCBJTlRPIHRlc3QxY2kgVkFMVUVT ICgnYWJjJyksICgnZGVmJyksICgnZ2hpJyk7CitJTlNFUlQgSU5UTyB0ZXN0MmNpIFZBTFVF UyAoJ0FCQycpLCAoJ2doaScpOworSU5TRVJUIElOVE8gdGVzdDNjaSBWQUxVRVMgKCdhYmMn KSwgKCdBQkMnKSwgKCdkZWYnKSwgKCdnaGknKTsKKworU0VMRUNUIHggRlJPTSB0ZXN0M2Np IFdIRVJFIHggPSAnYWJjJzsKK1NFTEVDVCB4IEZST00gdGVzdDNjaSBXSEVSRSB4IDw+ICdh YmMnOworU0VMRUNUIHggRlJPTSB0ZXN0M2NpIFdIRVJFIHggTElLRSAnYSUnOworU0VMRUNU IHggRlJPTSB0ZXN0M2NpIFdIRVJFIHggSUxJS0UgJ2ElJzsKK1NFTEVDVCB4IEZST00gdGVz dDNjaSBXSEVSRSB4IFNJTUlMQVIgVE8gJ2ElJzsKK1NFTEVDVCB4IEZST00gdGVzdDNjaSBX SEVSRSB4IH4gJ2EnOworU0VMRUNUIHggRlJPTSB0ZXN0MWNpIFVOSU9OIFNFTEVDVCB4IEZS T00gdGVzdDJjaSBPUkRFUiBCWSB4OworU0VMRUNUIHggRlJPTSB0ZXN0MmNpIFVOSU9OIFNF TEVDVCB4IEZST00gdGVzdDFjaSBPUkRFUiBCWSB4OworU0VMRUNUIHggRlJPTSB0ZXN0MWNp IElOVEVSU0VDVCBTRUxFQ1QgeCBGUk9NIHRlc3QyY2k7CitTRUxFQ1QgeCBGUk9NIHRlc3Qy Y2kgSU5URVJTRUNUIFNFTEVDVCB4IEZST00gdGVzdDFjaTsKK1NFTEVDVCB4IEZST00gdGVz dDFjaSBFWENFUFQgU0VMRUNUIHggRlJPTSB0ZXN0MmNpOworU0VMRUNUIHggRlJPTSB0ZXN0 MmNpIEVYQ0VQVCBTRUxFQ1QgeCBGUk9NIHRlc3QxY2k7CitTRUxFQ1QgRElTVElOQ1QgeCBG Uk9NIHRlc3QzY2kgT1JERVIgQlkgeDsKK1NFTEVDVCBjb3VudChESVNUSU5DVCB4KSBGUk9N IHRlc3QzY2k7CitTRUxFQ1QgeCwgY291bnQoKikgRlJPTSB0ZXN0M2NpIEdST1VQIEJZIHgg T1JERVIgQlkgeDsKK1NFTEVDVCB4LCByb3dfbnVtYmVyKCkgT1ZFUiAoT1JERVIgQlkgeCks IHJhbmsoKSBPVkVSIChPUkRFUiBCWSB4KSBGUk9NIHRlc3QzY2kgT1JERVIgQlkgeDsKK0NS RUFURSBVTklRVUUgSU5ERVggT04gdGVzdDFjaSAoeCk7ICAtLSBvaworSU5TRVJUIElOVE8g dGVzdDFjaSBWQUxVRVMgKCdBQkMnKTsgIC0tIGVycm9yCitDUkVBVEUgVU5JUVVFIElOREVY IE9OIHRlc3QzY2kgKHgpOyAgLS0gZXJyb3IKK1NFTEVDVCBzdHJpbmdfdG9fYXJyYXkoJ0FC QyxERUYsR0hJJyBDT0xMQVRFIGNhc2VfaW5zZW5zaXRpdmUsICcsJywgJ2FiYycpOworU0VM RUNUIHN0cmluZ190b19hcnJheSgnQUJDREVGR0hJJyBDT0xMQVRFIGNhc2VfaW5zZW5zaXRp dmUsIE5VTEwsICdiJyk7CisKKy0tIGJwY2hhcgorQ1JFQVRFIFRBQkxFIHRlc3QxYnBjaSAo eCBjaGFyKDMpIENPTExBVEUgY2FzZV9pbnNlbnNpdGl2ZSk7CitDUkVBVEUgVEFCTEUgdGVz dDJicGNpICh4IGNoYXIoMykgQ09MTEFURSBjYXNlX2luc2Vuc2l0aXZlKTsKK0NSRUFURSBU QUJMRSB0ZXN0M2JwY2kgKHggY2hhcigzKSBDT0xMQVRFIGNhc2VfaW5zZW5zaXRpdmUpOwor SU5TRVJUIElOVE8gdGVzdDFicGNpIFZBTFVFUyAoJ2FiYycpLCAoJ2RlZicpLCAoJ2doaScp OworSU5TRVJUIElOVE8gdGVzdDJicGNpIFZBTFVFUyAoJ0FCQycpLCAoJ2doaScpOworSU5T RVJUIElOVE8gdGVzdDNicGNpIFZBTFVFUyAoJ2FiYycpLCAoJ0FCQycpLCAoJ2RlZicpLCAo J2doaScpOworCitTRUxFQ1QgeCBGUk9NIHRlc3QzYnBjaSBXSEVSRSB4ID0gJ2FiYyc7CitT RUxFQ1QgeCBGUk9NIHRlc3QzYnBjaSBXSEVSRSB4IDw+ICdhYmMnOworU0VMRUNUIHggRlJP TSB0ZXN0M2JwY2kgV0hFUkUgeCBMSUtFICdhJSc7CitTRUxFQ1QgeCBGUk9NIHRlc3QzYnBj aSBXSEVSRSB4IElMSUtFICdhJSc7CitTRUxFQ1QgeCBGUk9NIHRlc3QzYnBjaSBXSEVSRSB4 IFNJTUlMQVIgVE8gJ2ElJzsKK1NFTEVDVCB4IEZST00gdGVzdDNicGNpIFdIRVJFIHggfiAn YSc7CitTRUxFQ1QgeCBGUk9NIHRlc3QxYnBjaSBVTklPTiBTRUxFQ1QgeCBGUk9NIHRlc3Qy YnBjaSBPUkRFUiBCWSB4OworU0VMRUNUIHggRlJPTSB0ZXN0MmJwY2kgVU5JT04gU0VMRUNU IHggRlJPTSB0ZXN0MWJwY2kgT1JERVIgQlkgeDsKK1NFTEVDVCB4IEZST00gdGVzdDFicGNp IElOVEVSU0VDVCBTRUxFQ1QgeCBGUk9NIHRlc3QyYnBjaTsKK1NFTEVDVCB4IEZST00gdGVz dDJicGNpIElOVEVSU0VDVCBTRUxFQ1QgeCBGUk9NIHRlc3QxYnBjaTsKK1NFTEVDVCB4IEZS T00gdGVzdDFicGNpIEVYQ0VQVCBTRUxFQ1QgeCBGUk9NIHRlc3QyYnBjaTsKK1NFTEVDVCB4 IEZST00gdGVzdDJicGNpIEVYQ0VQVCBTRUxFQ1QgeCBGUk9NIHRlc3QxYnBjaTsKK1NFTEVD VCBESVNUSU5DVCB4IEZST00gdGVzdDNicGNpIE9SREVSIEJZIHg7CitTRUxFQ1QgY291bnQo RElTVElOQ1QgeCkgRlJPTSB0ZXN0M2JwY2k7CitTRUxFQ1QgeCwgY291bnQoKikgRlJPTSB0 ZXN0M2JwY2kgR1JPVVAgQlkgeCBPUkRFUiBCWSB4OworU0VMRUNUIHgsIHJvd19udW1iZXIo KSBPVkVSIChPUkRFUiBCWSB4KSwgcmFuaygpIE9WRVIgKE9SREVSIEJZIHgpIEZST00gdGVz dDNicGNpIE9SREVSIEJZIHg7CitDUkVBVEUgVU5JUVVFIElOREVYIE9OIHRlc3QxYnBjaSAo eCk7ICAtLSBvaworSU5TRVJUIElOVE8gdGVzdDFicGNpIFZBTFVFUyAoJ0FCQycpOyAgLS0g ZXJyb3IKK0NSRUFURSBVTklRVUUgSU5ERVggT04gdGVzdDNicGNpICh4KTsgIC0tIGVycm9y CitTRUxFQ1Qgc3RyaW5nX3RvX2FycmF5KCdBQkMsREVGLEdISSc6OmNoYXIoMTEpIENPTExB VEUgY2FzZV9pbnNlbnNpdGl2ZSwgJywnLCAnYWJjJyk7CitTRUxFQ1Qgc3RyaW5nX3RvX2Fy cmF5KCdBQkNERUZHSEknOjpjaGFyKDkpIENPTExBVEUgY2FzZV9pbnNlbnNpdGl2ZSwgTlVM TCwgJ2InKTsKKworLS0gVW5pY29kZSBzcGVjaWFsIGNhc2U6IGRpZmZlcmVudCB2YXJpYW50 cyBvZiBHcmVlayBsb3dlciBjYXNlIHNpZ21hLgorLS0gQSBuYWl2ZSBpbXBsZW1lbnRhdGlv biBsaWtlIGNpdGV4dCB0aGF0IGp1c3QgZG9lcyBsb3dlcih4KSA9CistLSBsb3dlcih5KSB3 aWxsIGRvIHRoZSB3cm9uZyB0aGluZyBoZXJlLCBiZWNhdXNlIGxvd2VyKCfOoycpIGlzICfP gycKKy0tIGJ1dCB1cHBlcignz4InKSBpcyAnzqMnLgorU0VMRUNUICfhvYDOtM+Fz4PPg861 z43PgicgPSAn4b2IzpTOpc6jzqPOlc6OzqMnIENPTExBVEUgY2FzZV9zZW5zaXRpdmU7CitT RUxFQ1QgJ+G9gM60z4XPg8+DzrXPjc+CJyA9ICfhvYjOlM6lzqPOo86Vzo7OoycgQ09MTEFU RSBjYXNlX2luc2Vuc2l0aXZlOworCistLSBuYW1lIHZzLiB0ZXh0IGNvbXBhcmlzb24gb3Bl cmF0b3JzCitTRUxFQ1QgcmVsbmFtZSBGUk9NIHBnX2NsYXNzIFdIRVJFIHJlbG5hbWUgPSAn UEdfQ0xBU1MnOjp0ZXh0IENPTExBVEUgY2FzZV9pbnNlbnNpdGl2ZTsKK1NFTEVDVCByZWxu YW1lIEZST00gcGdfY2xhc3MgV0hFUkUgJ1BHX0NMQVNTJzo6dGV4dCA9IHJlbG5hbWUgQ09M TEFURSBjYXNlX2luc2Vuc2l0aXZlOworCitTRUxFQ1QgdHlwbmFtZSBGUk9NIHBnX3R5cGUg V0hFUkUgdHlwbmFtZSBMSUtFICdpbnRfJyBBTkQgdHlwbmFtZSA8PiAnSU5UMic6OnRleHQg Q09MTEFURSBjYXNlX2luc2Vuc2l0aXZlOworU0VMRUNUIHR5cG5hbWUgRlJPTSBwZ190eXBl IFdIRVJFIHR5cG5hbWUgTElLRSAnaW50XycgQU5EICdJTlQyJzo6dGV4dCA8PiB0eXBuYW1l IENPTExBVEUgY2FzZV9pbnNlbnNpdGl2ZTs7CisKKy0tIHRlc3QgY2FzZSBhZGFwdGVkIGZy b20gc3Vic2VsZWN0LnNxbAorQ1JFQVRFIFRFTVAgVEFCTEUgb3V0ZXJfdGV4dCAoZjEgdGV4 dCBDT0xMQVRFIGNhc2VfaW5zZW5zaXRpdmUsIGYyIHRleHQpOworSU5TRVJUIElOVE8gb3V0 ZXJfdGV4dCBWQUxVRVMgKCdhJywgJ2EnKTsKK0lOU0VSVCBJTlRPIG91dGVyX3RleHQgVkFM VUVTICgnYicsICdhJyk7CitJTlNFUlQgSU5UTyBvdXRlcl90ZXh0IFZBTFVFUyAoJ0EnLCBO VUxMKTsKK0lOU0VSVCBJTlRPIG91dGVyX3RleHQgVkFMVUVTICgnQicsIE5VTEwpOworCitD UkVBVEUgVEVNUCBUQUJMRSBpbm5lcl90ZXh0IChjMSB0ZXh0IENPTExBVEUgY2FzZV9pbnNl bnNpdGl2ZSwgYzIgdGV4dCk7CitJTlNFUlQgSU5UTyBpbm5lcl90ZXh0IFZBTFVFUyAoJ2En LCBOVUxMKTsKKworU0VMRUNUICogRlJPTSBvdXRlcl90ZXh0IFdIRVJFIChmMSwgZjIpIE5P VCBJTiAoU0VMRUNUICogRlJPTSBpbm5lcl90ZXh0KTsKKworLS0gYWNjZW50cworQ1JFQVRF IENPTExBVElPTiBpZ25vcmVfYWNjZW50cyAocHJvdmlkZXIgPSBpY3UsIGxvY2FsZSA9ICd1 bmQtdS1rcy1sZXZlbDEta2MtdHJ1ZScsIGRldGVybWluaXN0aWMgPSBmYWxzZSk7CisKK0NS RUFURSBUQUJMRSB0ZXN0NCAoYSBpbnQsIGIgdGV4dCk7CitJTlNFUlQgSU5UTyB0ZXN0NCBW QUxVRVMgKDEsICdjb3RlJyksICgyLCAnY8O0dGUnKSwgKDMsICdjb3TDqScpLCAoNCwgJ2PD tHTDqScpOworU0VMRUNUICogRlJPTSB0ZXN0NCBXSEVSRSBiID0gJ2NvdGUnOworU0VMRUNU ICogRlJPTSB0ZXN0NCBXSEVSRSBiID0gJ2NvdGUnIENPTExBVEUgaWdub3JlX2FjY2VudHM7 CitTRUxFQ1QgKiBGUk9NIHRlc3Q0IFdIRVJFIGIgPSAnQ290ZScgQ09MTEFURSBpZ25vcmVf YWNjZW50czsgIC0tIHN0aWxsIGNhc2Utc2Vuc2l0aXZlCitTRUxFQ1QgKiBGUk9NIHRlc3Q0 IFdIRVJFIGIgPSAnQ290ZScgQ09MTEFURSBjYXNlX2luc2Vuc2l0aXZlOworCistLSBmb3Jl aWduIGtleXMgKHNob3VsZCB1c2UgY29sbGF0aW9uIG9mIHByaW1hcnkga2V5KQorCistLSBQ SyBpcyBjYXNlLXNlbnNpdGl2ZSwgRksgaXMgY2FzZS1pbnNlbnNpdGl2ZQorQ1JFQVRFIFRB QkxFIHRlc3QxMHBrICh4IHRleHQgQ09MTEFURSBjYXNlX3NlbnNpdGl2ZSBQUklNQVJZIEtF WSk7CitJTlNFUlQgSU5UTyB0ZXN0MTBwayBWQUxVRVMgKCdhYmMnKSwgKCdkZWYnKSwgKCdn aGknKTsKK0NSRUFURSBUQUJMRSB0ZXN0MTBmayAoeCB0ZXh0IENPTExBVEUgY2FzZV9pbnNl bnNpdGl2ZSBSRUZFUkVOQ0VTIHRlc3QxMHBrICh4KSBPTiBVUERBVEUgQ0FTQ0FERSBPTiBE RUxFVEUgQ0FTQ0FERSk7CitJTlNFUlQgSU5UTyB0ZXN0MTBmayBWQUxVRVMgKCdhYmMnKTsg IC0tIG9rCitJTlNFUlQgSU5UTyB0ZXN0MTBmayBWQUxVRVMgKCdBQkMnKTsgIC0tIGVycm9y CitJTlNFUlQgSU5UTyB0ZXN0MTBmayBWQUxVRVMgKCd4eXonKTsgIC0tIGVycm9yCitTRUxF Q1QgKiBGUk9NIHRlc3QxMHBrOworU0VMRUNUICogRlJPTSB0ZXN0MTBmazsKKy0tIHJlc3Ry aWN0IHVwZGF0ZSBldmVuIHRob3VnaCB0aGUgdmFsdWVzIGFyZSAiZXF1YWwiIGluIHRoZSBG SyB0YWJsZQorVVBEQVRFIHRlc3QxMGZrIFNFVCB4ID0gJ0FCQycgV0hFUkUgeCA9ICdhYmMn OyAgLS0gZXJyb3IKK1NFTEVDVCAqIEZST00gdGVzdDEwZms7CitERUxFVEUgRlJPTSB0ZXN0 MTBwayBXSEVSRSB4ID0gJ2FiYyc7CitTRUxFQ1QgKiBGUk9NIHRlc3QxMHBrOworU0VMRUNU ICogRlJPTSB0ZXN0MTBmazsKKworLS0gUEsgaXMgY2FzZS1pbnNlbnNpdGl2ZSwgRksgaXMg Y2FzZS1zZW5zaXRpdmUKK0NSRUFURSBUQUJMRSB0ZXN0MTFwayAoeCB0ZXh0IENPTExBVEUg Y2FzZV9pbnNlbnNpdGl2ZSBQUklNQVJZIEtFWSk7CitJTlNFUlQgSU5UTyB0ZXN0MTFwayBW QUxVRVMgKCdhYmMnKSwgKCdkZWYnKSwgKCdnaGknKTsKK0NSRUFURSBUQUJMRSB0ZXN0MTFm ayAoeCB0ZXh0IENPTExBVEUgY2FzZV9zZW5zaXRpdmUgUkVGRVJFTkNFUyB0ZXN0MTFwayAo eCkgT04gVVBEQVRFIENBU0NBREUgT04gREVMRVRFIENBU0NBREUpOworSU5TRVJUIElOVE8g dGVzdDExZmsgVkFMVUVTICgnYWJjJyk7ICAtLSBvaworSU5TRVJUIElOVE8gdGVzdDExZmsg VkFMVUVTICgnQUJDJyk7ICAtLSBvaworSU5TRVJUIElOVE8gdGVzdDExZmsgVkFMVUVTICgn eHl6Jyk7ICAtLSBlcnJvcgorU0VMRUNUICogRlJPTSB0ZXN0MTFwazsKK1NFTEVDVCAqIEZS T00gdGVzdDExZms7CistLSBjYXNjYWRlIHVwZGF0ZSBldmVuIHRob3VnaCB0aGUgdmFsdWVz IGFyZSAiZXF1YWwiIGluIHRoZSBQSyB0YWJsZQorVVBEQVRFIHRlc3QxMXBrIFNFVCB4ID0g J0FCQycgV0hFUkUgeCA9ICdhYmMnOworU0VMRUNUICogRlJPTSB0ZXN0MTFmazsKK0RFTEVU RSBGUk9NIHRlc3QxMXBrIFdIRVJFIHggPSAnYWJjJzsKK1NFTEVDVCAqIEZST00gdGVzdDEx cGs7CitTRUxFQ1QgKiBGUk9NIHRlc3QxMWZrOworCistLSBwYXJ0aXRpb25pbmcKK0NSRUFU RSBUQUJMRSB0ZXN0MjAgKGEgaW50LCBiIHRleHQgQ09MTEFURSBjYXNlX2luc2Vuc2l0aXZl KSBQQVJUSVRJT04gQlkgTElTVCAoYik7CitDUkVBVEUgVEFCTEUgdGVzdDIwXzEgUEFSVElU SU9OIE9GIHRlc3QyMCBGT1IgVkFMVUVTIElOICgnYWJjJyk7CitJTlNFUlQgSU5UTyB0ZXN0 MjAgVkFMVUVTICgxLCAnYWJjJyk7CitJTlNFUlQgSU5UTyB0ZXN0MjAgVkFMVUVTICgyLCAn QUJDJyk7CitTRUxFQ1QgKiBGUk9NIHRlc3QyMF8xOworCitDUkVBVEUgVEFCTEUgdGVzdDIx IChhIGludCwgYiB0ZXh0IENPTExBVEUgY2FzZV9pbnNlbnNpdGl2ZSkgUEFSVElUSU9OIEJZ IFJBTkdFIChiKTsKK0NSRUFURSBUQUJMRSB0ZXN0MjFfMSBQQVJUSVRJT04gT0YgdGVzdDIx IEZPUiBWQUxVRVMgRlJPTSAoJ0FCQycpIFRPICgnREVGJyk7CitJTlNFUlQgSU5UTyB0ZXN0 MjEgVkFMVUVTICgxLCAnYWJjJyk7CitJTlNFUlQgSU5UTyB0ZXN0MjEgVkFMVUVTICgyLCAn QUJDJyk7CitTRUxFQ1QgKiBGUk9NIHRlc3QyMV8xOworCitDUkVBVEUgVEFCTEUgdGVzdDIy IChhIGludCwgYiB0ZXh0IENPTExBVEUgY2FzZV9zZW5zaXRpdmUpIFBBUlRJVElPTiBCWSBI QVNIIChiKTsKK0NSRUFURSBUQUJMRSB0ZXN0MjJfMCBQQVJUSVRJT04gT0YgdGVzdDIyIEZP UiBWQUxVRVMgV0lUSCAoTU9EVUxVUyAyLCBSRU1BSU5ERVIgMCk7CitDUkVBVEUgVEFCTEUg dGVzdDIyXzEgUEFSVElUSU9OIE9GIHRlc3QyMiBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMg MiwgUkVNQUlOREVSIDEpOworSU5TRVJUIElOVE8gdGVzdDIyIFZBTFVFUyAoMSwgJ2RlZicp OworSU5TRVJUIElOVE8gdGVzdDIyIFZBTFVFUyAoMiwgJ0RFRicpOworLS0gdGhleSBlbmQg dXAgaW4gZGlmZmVyZW50IHBhcnRpdGlvbnMKK1NFTEVDVCAoU0VMRUNUIGNvdW50KCopIEZS T00gdGVzdDIyXzApID0gKFNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3QyMl8xKTsKKworQ1JF QVRFIFRBQkxFIHRlc3QyMyAoYSBpbnQsIGIgdGV4dCBDT0xMQVRFIGNhc2VfaW5zZW5zaXRp dmUpIFBBUlRJVElPTiBCWSBIQVNIIChiKTsKK0NSRUFURSBUQUJMRSB0ZXN0MjNfMCBQQVJU SVRJT04gT0YgdGVzdDIzIEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxVUyAyLCBSRU1BSU5ERVIg MCk7CitDUkVBVEUgVEFCTEUgdGVzdDIzXzEgUEFSVElUSU9OIE9GIHRlc3QyMyBGT1IgVkFM VUVTIFdJVEggKE1PRFVMVVMgMiwgUkVNQUlOREVSIDEpOworSU5TRVJUIElOVE8gdGVzdDIz IFZBTFVFUyAoMSwgJ2RlZicpOworSU5TRVJUIElOVE8gdGVzdDIzIFZBTFVFUyAoMiwgJ0RF RicpOworLS0gdGhleSBlbmQgdXAgaW4gdGhlIHNhbWUgcGFydGl0aW9uIChidXQgaXQncyBw bGF0Zm9ybS1kZXBlbmRlbnQgd2hpY2ggb25lKQorU0VMRUNUIChTRUxFQ1QgY291bnQoKikg RlJPTSB0ZXN0MjNfMCkgPD4gKFNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3QyM18xKTsKKwor Q1JFQVRFIFRBQkxFIHRlc3QzMCAoYSBpbnQsIGIgY2hhcigzKSBDT0xMQVRFIGNhc2VfaW5z ZW5zaXRpdmUpIFBBUlRJVElPTiBCWSBMSVNUIChiKTsKK0NSRUFURSBUQUJMRSB0ZXN0MzBf MSBQQVJUSVRJT04gT0YgdGVzdDMwIEZPUiBWQUxVRVMgSU4gKCdhYmMnKTsKK0lOU0VSVCBJ TlRPIHRlc3QzMCBWQUxVRVMgKDEsICdhYmMnKTsKK0lOU0VSVCBJTlRPIHRlc3QzMCBWQUxV RVMgKDIsICdBQkMnKTsKK1NFTEVDVCAqIEZST00gdGVzdDMwXzE7CisKK0NSRUFURSBUQUJM RSB0ZXN0MzEgKGEgaW50LCBiIGNoYXIoMykgQ09MTEFURSBjYXNlX2luc2Vuc2l0aXZlKSBQ QVJUSVRJT04gQlkgUkFOR0UgKGIpOworQ1JFQVRFIFRBQkxFIHRlc3QzMV8xIFBBUlRJVElP TiBPRiB0ZXN0MzEgRk9SIFZBTFVFUyBGUk9NICgnQUJDJykgVE8gKCdERUYnKTsKK0lOU0VS VCBJTlRPIHRlc3QzMSBWQUxVRVMgKDEsICdhYmMnKTsKK0lOU0VSVCBJTlRPIHRlc3QzMSBW QUxVRVMgKDIsICdBQkMnKTsKK1NFTEVDVCAqIEZST00gdGVzdDMxXzE7CisKK0NSRUFURSBU QUJMRSB0ZXN0MzIgKGEgaW50LCBiIGNoYXIoMykgQ09MTEFURSBjYXNlX3NlbnNpdGl2ZSkg UEFSVElUSU9OIEJZIEhBU0ggKGIpOworQ1JFQVRFIFRBQkxFIHRlc3QzMl8wIFBBUlRJVElP TiBPRiB0ZXN0MzIgRk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDIsIFJFTUFJTkRFUiAwKTsK K0NSRUFURSBUQUJMRSB0ZXN0MzJfMSBQQVJUSVRJT04gT0YgdGVzdDMyIEZPUiBWQUxVRVMg V0lUSCAoTU9EVUxVUyAyLCBSRU1BSU5ERVIgMSk7CitJTlNFUlQgSU5UTyB0ZXN0MzIgVkFM VUVTICgxLCAnZGVmJyk7CitJTlNFUlQgSU5UTyB0ZXN0MzIgVkFMVUVTICgyLCAnREVGJyk7 CistLSB0aGV5IGVuZCB1cCBpbiBkaWZmZXJlbnQgcGFydGl0aW9ucworU0VMRUNUIChTRUxF Q1QgY291bnQoKikgRlJPTSB0ZXN0MzJfMCkgPSAoU0VMRUNUIGNvdW50KCopIEZST00gdGVz dDMyXzEpOworCitDUkVBVEUgVEFCTEUgdGVzdDMzIChhIGludCwgYiBjaGFyKDMpIENPTExB VEUgY2FzZV9pbnNlbnNpdGl2ZSkgUEFSVElUSU9OIEJZIEhBU0ggKGIpOworQ1JFQVRFIFRB QkxFIHRlc3QzM18wIFBBUlRJVElPTiBPRiB0ZXN0MzMgRk9SIFZBTFVFUyBXSVRIIChNT0RV TFVTIDIsIFJFTUFJTkRFUiAwKTsKK0NSRUFURSBUQUJMRSB0ZXN0MzNfMSBQQVJUSVRJT04g T0YgdGVzdDMzIEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxVUyAyLCBSRU1BSU5ERVIgMSk7CitJ TlNFUlQgSU5UTyB0ZXN0MzMgVkFMVUVTICgxLCAnZGVmJyk7CitJTlNFUlQgSU5UTyB0ZXN0 MzMgVkFMVUVTICgyLCAnREVGJyk7CistLSB0aGV5IGVuZCB1cCBpbiB0aGUgc2FtZSBwYXJ0 aXRpb24gKGJ1dCBpdCdzIHBsYXRmb3JtLWRlcGVuZGVudCB3aGljaCBvbmUpCitTRUxFQ1Qg KFNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3QzM18wKSA8PiAoU0VMRUNUIGNvdW50KCopIEZS T00gdGVzdDMzXzEpOworCisKIC0tIGNsZWFudXAKIFNFVCBjbGllbnRfbWluX21lc3NhZ2Vz IFRPIHdhcm5pbmc7CiBEUk9QIFNDSEVNQSBjb2xsYXRlX3Rlc3RzIENBU0NBREU7CmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb2xsYXRlLmxpbnV4LnV0Zjguc3FsIGIv c3JjL3Rlc3QvcmVncmVzcy9zcWwvY29sbGF0ZS5saW51eC51dGY4LnNxbAppbmRleCBlODgy MTUzMjQ0Li40Y2EwMmI4MjFkIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9j b2xsYXRlLmxpbnV4LnV0Zjguc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbGxh dGUubGludXgudXRmOC5zcWwKQEAgLTQyOCw2ICs0MjgsMTMgQEAgQ1JFQVRFIElOREVYIGNv bGxhdGVfZGVwX3Rlc3Q0aSBPTiBjb2xsYXRlX2RlcF90ZXN0NHQgKGIgQ09MTEFURSB0ZXN0 MCk7CiBkcm9wIHR5cGUgdGV4dHJhbmdlX2VuX3VzOwogCiAKKy0tIG5vbmRldGVybWluaXN0 aWMgY29sbGF0aW9ucworLS0gKG5vdCBzdXBwb3J0ZWQgd2l0aCBsaWJjIHByb3ZpZGVyKQor CitDUkVBVEUgQ09MTEFUSU9OIGN0ZXN0X2RldCAobG9jYWxlID0gJ2VuX1VTLnV0ZjgnLCBk ZXRlcm1pbmlzdGljID0gdHJ1ZSk7CitDUkVBVEUgQ09MTEFUSU9OIGN0ZXN0X25vbmRldCAo bG9jYWxlID0gJ2VuX1VTLnV0ZjgnLCBkZXRlcm1pbmlzdGljID0gZmFsc2UpOworCisKIC0t IGNsZWFudXAKIFNFVCBjbGllbnRfbWluX21lc3NhZ2VzIFRPIHdhcm5pbmc7CiBEUk9QIFND SEVNQSBjb2xsYXRlX3Rlc3RzIENBU0NBREU7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9jb2xsYXRlLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbGxhdGUuc3Fs CmluZGV4IDRkZGRlOTVhNWUuLmNiMmJjMjIxNTUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL2NvbGxhdGUuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbGxh dGUuc3FsCkBAIC0xNjMsNiArMTYzLDExIEBAIENSRUFURSBUQUJMRSB0ZXN0X3UgQVMgU0VM RUNUIGEsIGIgRlJPTSBjb2xsYXRlX3Rlc3QxIFVOSU9OIEFMTCBTRUxFQ1QgYSwgYiBGUk9N CiBTRUxFQ1QgYSwgYiwgYSA8IGIgYXMgbHQgRlJPTQogICAoVkFMVUVTICgnYScsICdCJyks ICgnQScsICdiJyBDT0xMQVRFICJDIikpIHYoYSxiKTsKIAorLS0gY29sbGF0aW9uIG1pc21h dGNoIGluIHN1YnNlbGVjdHMKK1NFTEVDVCAqIEZST00gY29sbGF0ZV90ZXN0MTAgV0hFUkUg KHgsIHkpIE5PVCBJTiAoU0VMRUNUIHksIHggRlJPTSBjb2xsYXRlX3Rlc3QxMCk7CistLSBu b3cgaXQgd29ya3Mgd2l0aCBvdmVycmlkZXMKK1NFTEVDVCAqIEZST00gY29sbGF0ZV90ZXN0 MTAgV0hFUkUgKHggQ09MTEFURSAiUE9TSVgiLCB5IENPTExBVEUgIkMiKSBOT1QgSU4gKFNF TEVDVCB5LCB4IEZST00gY29sbGF0ZV90ZXN0MTApOworU0VMRUNUICogRlJPTSBjb2xsYXRl X3Rlc3QxMCBXSEVSRSAoeCwgeSkgTk9UIElOIChTRUxFQ1QgeSBDT0xMQVRFICJDIiwgeCBD T0xMQVRFICJQT1NJWCIgRlJPTSBjb2xsYXRlX3Rlc3QxMCk7CiAKIC0tIGNhc3RpbmcKIApk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Vic2VsZWN0LnNxbCBiL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3N1YnNlbGVjdC5zcWwKaW5kZXggOGJjYTFmNWQ1NS4uN2UwZWYw NTU0YSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Vic2VsZWN0LnNxbAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdWJzZWxlY3Quc3FsCkBAIC00MzUsNiArNDM1 LDIzIEBAIENSRUFURSBWSUVXIG9yZGVyc192aWV3IEFTCiAKIHNlbGVjdCAqIGZyb20gb3V0 ZXJfNzU5NyB3aGVyZSAoZjEsIGYyKSBub3QgaW4gKHNlbGVjdCAqIGZyb20gaW5uZXJfNzU5 Nyk7CiAKKy0tCistLSBTaW1pbGFyIHRlc3QgY2FzZSB1c2luZyB0ZXh0IHRoYXQgdmVyaWZp ZXMgdGhhdCBjb2xsYXRpb24KKy0tIGluZm9ybWF0aW9uIGlzIHBhc3NlZCB0aHJvdWdoIGJ5 IGV4ZWNUdXBsZXNFcXVhbCgpIGluIG5vZGVTdWJwbGFuLmMKKy0tIChvdGhlcndpc2UgaXQg d291bGQgZXJyb3IgaW4gdGV4dGVxKCkpCistLQorCitjcmVhdGUgdGVtcCB0YWJsZSBvdXRl cl90ZXh0IChmMSB0ZXh0LCBmMiB0ZXh0KTsKK2luc2VydCBpbnRvIG91dGVyX3RleHQgdmFs dWVzICgnYScsICdhJyk7CitpbnNlcnQgaW50byBvdXRlcl90ZXh0IHZhbHVlcyAoJ2InLCAn YScpOworaW5zZXJ0IGludG8gb3V0ZXJfdGV4dCB2YWx1ZXMgKCdhJywgbnVsbCk7CitpbnNl cnQgaW50byBvdXRlcl90ZXh0IHZhbHVlcyAoJ2InLCBudWxsKTsKKworY3JlYXRlIHRlbXAg dGFibGUgaW5uZXJfdGV4dCAoYzEgdGV4dCwgYzIgdGV4dCk7CitpbnNlcnQgaW50byBpbm5l cl90ZXh0IHZhbHVlcyAoJ2EnLCBudWxsKTsKKworc2VsZWN0ICogZnJvbSBvdXRlcl90ZXh0 IHdoZXJlIChmMSwgZjIpIG5vdCBpbiAoc2VsZWN0ICogZnJvbSBpbm5lcl90ZXh0KTsKKwog LS0KIC0tIFRlc3QgY2FzZSBmb3IgcHJlbWF0dXJlIG1lbW9yeSByZWxlYXNlIGR1cmluZyBo YXNoaW5nIG9mIHN1YnBsYW4gb3V0cHV0CiAtLQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL01ha2VmaWxlIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL01ha2VmaWxlCmlu ZGV4IGU3YmJiNDU0YzcuLjQzNzg4MTk1MzAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNj cmlwdGlvbi9NYWtlZmlsZQorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vTWFrZWZpbGUK QEAgLTE1LDYgKzE1LDggQEAgaW5jbHVkZSAkKHRvcF9idWlsZGRpcikvc3JjL01ha2VmaWxl Lmdsb2JhbAogCiBFWFRSQV9JTlNUQUxMID0gY29udHJpYi9oc3RvcmUKIAorZXhwb3J0IHdp dGhfaWN1CisKIGNoZWNrOgogCSQocHJvdmVfY2hlY2spCiAKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAxMl9jb2xsYXRpb24ucGwgYi9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMTJfY29sbGF0aW9uLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAuLjFjNWViY2QwZTYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMTJfY29sbGF0aW9uLnBsCkBAIC0wLDAgKzEsMTAzIEBACisjIFRlc3Qg Y29sbGF0aW9ucywgaW4gcGFydGljdWxhciBub25kZXRlcm1pbmlzdGljIG9uZXMKKyMgKG9u bHkgd29ya3Mgd2l0aCBJQ1UpCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOwordXNlIFBv c3RncmVzTm9kZTsKK3VzZSBUZXN0TGliOwordXNlIFRlc3Q6Ok1vcmU7CisKK2lmICgkRU5W e3dpdGhfaWN1fSBlcSAneWVzJykKK3sKKwlwbGFuIHRlc3RzID0+IDI7Cit9CitlbHNlCit7 CisJcGxhbiBza2lwX2FsbCA9PiAnSUNVIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBidWlsZCc7 Cit9CisKK215ICRub2RlX3B1Ymxpc2hlciA9IGdldF9uZXdfbm9kZSgncHVibGlzaGVyJyk7 Ciskbm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcp OworJG5vZGVfcHVibGlzaGVyLT5zdGFydDsKKworbXkgJG5vZGVfc3Vic2NyaWJlciA9IGdl dF9uZXdfbm9kZSgnc3Vic2NyaWJlcicpOworJG5vZGVfc3Vic2NyaWJlci0+aW5pdChhbGxv d3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zdGFydDsK KworbXkgJHB1Ymxpc2hlcl9jb25uc3RyID0gJG5vZGVfcHVibGlzaGVyLT5jb25uc3RyIC4g JyBkYm5hbWU9cG9zdGdyZXMnOworCisjIFRlc3QgcGxhbjogQ3JlYXRlIGEgdGFibGUgd2l0 aCBhIG5vbmRldGVybWluaXN0aWMgY29sbGF0aW9uIGluIHRoZQorIyBwcmltYXJ5IGtleSBj b2x1bW4uICBQcmUtaW5zZXJ0IHJvd3Mgb24gdGhlIHB1Ymxpc2hlciBhbmQgc3Vic2NyaWJl cgorIyB0aGF0IGFyZSBjb2xsYXRpb24td2lzZSBlcXVhbCBidXQgYnl0ZS13aXNlIGRpZmZl cmVudC4gIChXZSB1c2UgYQorIyBzdHJpbmcgaW4gZGlmZmVyZW50IG5vcm1hbCBmb3JtcyBm b3IgdGhhdC4pICBTZXQgdXAgcHVibGlzaGVyIGFuZAorIyBzdWJzY3JpYmVyLiAgVXBkYXRl IHRoZSByb3cgb24gdGhlIHB1Ymxpc2hlciwgYnV0IGRvbid0IGNoYW5nZSB0aGUKKyMgcHJp bWFyeSBrZXkgY29sdW1uLiAgVGhlIHN1YnNjcmliZXIgbmVlZHMgdG8gZmluZCB0aGUgcm93 IHRvIGJlCisjIHVwZGF0ZWQgdXNpbmcgdGhlIG5vbmRldGVybWluaXN0aWMgY29sbGF0aW9u IHNlbWFudGljcy4gIFdlIG5lZWQgdG8KKyMgdGVzdCBmb3IgYm90aCBhIHJlcGxpY2EgaWRl bnRpdHkgaW5kZXggYW5kIGZvciByZXBsaWNhIGlkZW50aXR5CisjIGZ1bGwsIHNpbmNlIHRo b3NlIGhhdmUgZGlmZmVyZW50IGNvZGUgcGF0aHMgaW50ZXJuYWxseS4KKworJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtDUkVBVEUgQ09MTEFUSU9OIGN0 ZXN0X25vbmRldCAocHJvdmlkZXIgPSBpY3UsIGxvY2FsZSA9ICd1bmQnLCBkZXRlcm1pbmlz dGljID0gZmFsc2UpfSk7CisKKyMgdGFibGUgd2l0aCByZXBsaWNhIGlkZW50aXR5IGluZGV4 CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtDUkVBVEUg VEFCTEUgdGFiMSAoYSB0ZXh0IFBSSU1BUlkgS0VZLCBiIHRleHQpfSk7CisKKyRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtJTlNFUlQgSU5UTyB0YWIxIFZB TFVFUyAoVSYnXDAwRTRiYycsICdmb28nKX0pOworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwlxe0NSRUFURSBUQUJMRSB0YWIxIChhIHRleHQgQ09MTEFU RSBjdGVzdF9ub25kZXQgUFJJTUFSWSBLRVksIGIgdGV4dCl9KTsKKworJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtJTlNFUlQgSU5UTyB0YWIxIFZBTFVF UyAoVSYnXDAwNjFcMDMwOGJjJywgJ2ZvbycpfSk7CisKKyMgdGFibGUgd2l0aCByZXBsaWNh IGlkZW50aXR5IGZ1bGwKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwlxe0NSRUFURSBUQUJMRSB0YWIyIChhIHRleHQsIGIgdGV4dCl9KTsKKyRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtBTFRFUiBUQUJMRSB0YWIyIFJF UExJQ0EgSURFTlRJVFkgRlVMTH0pOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCXF7SU5TRVJUIElOVE8gdGFiMiBWQUxVRVMgKFUmJ1wwMEU0YmMnLCAn Zm9vJyl9KTsKKworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ cXtDUkVBVEUgVEFCTEUgdGFiMiAoYSB0ZXh0IENPTExBVEUgY3Rlc3Rfbm9uZGV0LCBiIHRl eHQpfSk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxe0FM VEVSIFRBQkxFIHRhYjIgUkVQTElDQSBJREVOVElUWSBGVUxMfSk7CisKKyRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7SU5TRVJUIElOVE8gdGFiMiBWQUxV RVMgKFUmJ1wwMDYxXDAzMDhiYycsICdmb28nKX0pOworCisjIHNldCB1cCBwdWJsaWNhdGlv biwgc3Vic2NyaXB0aW9uCisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJcXtDUkVBVEUgUFVCTElDQVRJT04gcHViMSBGT1IgQUxMIFRBQkxFU30pOworCisk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxcXtDUkVBVEUgU1VC U0NSSVBUSU9OIHN1YjEgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxpY2F0 aW9uX25hbWU9c3ViMScgUFVCTElDQVRJT04gcHViMSBXSVRIIChjb3B5X2RhdGEgPSBmYWxz ZSl9KTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdzdWIxJyk7CisK KyMgdGVzdCB3aXRoIHJlcGxpY2EgaWRlbnRpdHkgaW5kZXgKKworJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxe1VQREFURSB0YWIxIFNFVCBiID0gJ2Jhcicg V0hFUkUgYiA9ICdmb28nfSk7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgnc3ViMScpOworCitpcygkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgcXtTRUxFQ1QgYiBGUk9NIHRhYjF9KSwKKyAgIHFxKGJhciksCisgICd1cGRhdGUgd2l0 aCBwcmltYXJ5IGtleSB3aXRoIG5vbmRldGVybWluaXN0aWMgY29sbGF0aW9uJyk7CisKKyMg dGVzdCB3aXRoIHJlcGxpY2EgaWRlbnRpdHkgZnVsbAorCiskbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7VVBEQVRFIHRhYjIgU0VUIGIgPSAnYmFyJyBXSEVS RSBiID0gJ2Zvbyd9KTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdz dWIxJyk7CisKK2lzKCRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBx e1NFTEVDVCBiIEZST00gdGFiMn0pLAorICAgcXEoYmFyKSwKKyAgJ3VwZGF0ZSB3aXRoIHJl cGxpY2EgaWRlbnRpdHkgZnVsbCB3aXRoIG5vbmRldGVybWluaXN0aWMgY29sbGF0aW9uJyk7 CgpiYXNlLWNvbW1pdDogZmE4NjIzOGYxZWFjNWIxYmZiMzg4N2QyZGViMTM4ZjUzZGE4MmM5 YgotLSAKMi4yMC4xCgo= --------------5D5C76A1BDFDC875F0EEE3F4--