Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tpAo9-001QmV-WD for pgsql-hackers@arkaria.postgresql.org; Mon, 03 Mar 2025 18:46:30 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tpAo8-00E7ZQ-P3 for pgsql-hackers@arkaria.postgresql.org; Mon, 03 Mar 2025 18:46:28 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tpAo8-00E7ZH-1A for pgsql-hackers@lists.postgresql.org; Mon, 03 Mar 2025 18:46:28 +0000 Received: from mail-ua1-x934.google.com ([2607:f8b0:4864:20::934]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tpAo6-000ll5-0M for pgsql-hackers@postgresql.org; Mon, 03 Mar 2025 18:46:27 +0000 Received: by mail-ua1-x934.google.com with SMTP id a1e0cc1a2514c-86b6135faa0so1923350241.3 for ; Mon, 03 Mar 2025 10:46:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741027585; x=1741632385; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=inKjl0iB6/AZ0zLLfD/gwk0f+aKBjB6BEan0m58VSJI=; b=YGktxa1pcu5DTi51uOB+Z3bd7ubFOTb/CdJ9oKpi0dvm7ecr41ErRuJC++JGdVjLvz u0l9Bk5ElzpAJDwUhuGpeIiBiPMjD7IdGR7Kuoycsh6EXVb2KTeZEugBRf+yvB32KtVV xvg4bkiCIkByLtLAfZx9qhKLvhOIPbBtoPHXC9DZ+JghDFDbwa7tu/Xubw8/g3+UBaaQ cTW2O3mRksGUA4SO+8nXkAffIYa3CG0TMOfN0PvCfdM+5mxZTwrolieL7cizAGKAYDPp xCGB6foPvmSKiVF2G9lugrM6dGLz2U2UQZNvw9V/VhsF2tFbyYu02jXcv1T8b0I4c9qm 1mhA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741027585; x=1741632385; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=inKjl0iB6/AZ0zLLfD/gwk0f+aKBjB6BEan0m58VSJI=; b=pU6628ewIriaplYeK2T/DSJJg551vuOXPvlkULlw8BwIOoWuesUPyfub7/DCdiD0+w 13058YeYlysQzap3XFIAiUOTmtVnQq8LIIcgrVPNAR4VU0krF5BTeE36O7KhBlbY6kuf f+YR7YUMcuebET2j++0lLHYxBIeq6vr0KtcjxgySWJ1WlLDOXSuzFPrfxMsXvlkm28VB TsuPj48fNQutwBwC1zPgSjyCSuj0NPM48LMw8R9AIb3O2P7Ug+dqgYxn1vKErCTiC1OC 9a8+4pxoVHSi+psNhJpDd06usnkCq0xFQPP4egslwgGzc4UCduFI8R4VCXpqmxzidkPk OALQ== X-Forwarded-Encrypted: i=1; AJvYcCVwkJijE3ZfnUfuQnjZnrxjmDaSBK+NKpR1ZgSlRGpw1df8yvxWRp91I1RrTiyOjNh1K9oxD2/7FN+GMyoY@postgresql.org X-Gm-Message-State: AOJu0YxiEdiTMmMJtusvi0PmGbZFQ2pMqaBSV+onLOFvI1RnG488Z7Qs MJyFM0ZNKOVr4LpzqblOyMir1BQf2Dse/9x//IeuGsaAixV0o7ubB+Uc516KPKQS1VzrVz9wF9B p2SCDQ/hthQs1F3KmSWwG/WBz88A= X-Gm-Gg: ASbGncu1mjzQoc6L1BWOiK0PPqSoXf7P97tSg/xN+tsbLqUF7sE5zOU17f77qwcc1xv Xpn1BG+YSkSYvXMg4bTmhRhCxOr0TobSRlpGZ+YyZxjToWSYGWIEN2RDjcsedTcJX1+y5bbfoxP 0Scimx2wHneRAWEg1y4qQbQ/Ekc+NVhGBPz2VUzgCEi+adOJdSEgKDcTJGsLc= X-Google-Smtp-Source: AGHT+IF4NY7ON4Tz7AmfKkREhWTxNjyesGUDzGfwcGUjNVA8qM5kXfTWUSz04TubmYVKrEMGUddc3uKWgAh9IWZj0t8= X-Received: by 2002:a05:6102:2d07:b0:4bb:9b46:3f6f with SMTP id ada2fe7eead31-4c044884692mr9133315137.1.1741027585304; Mon, 03 Mar 2025 10:46:25 -0800 (PST) MIME-Version: 1.0 References: <202406251012.brdp2dobkf7n@alvherre.pgsql> <0d384836-7e6e-4932-af3b-8dad1f6fee43@eisentraut.org> <4f7209ba-1ca2-475e-9a70-0f3fe0be6378@eisentraut.org> <12312928-5516-49b8-81c1-a7b56fd01bc8@dunslane.net> In-Reply-To: From: Matheus Alcantara Date: Mon, 3 Mar 2025 15:45:59 -0300 X-Gm-Features: AQ5f1JqoV5eQ-8uK9t_wT5i1BwJKHXJzml9j7_08MluqB7CHRmINlFrDbCl1Fsw Message-ID: Subject: Re: RFC: Additional Directory for Extensions To: Andrew Dunstan Cc: Peter Eisentraut , Gabriele Bartolini , Craig Ringer , "David E. Wheeler" , Robert Haas , Alvaro Herrera , PostgreSQL-development Content-Type: multipart/mixed; boundary="000000000000c591dc062f7492ca" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000c591dc062f7492ca Content-Type: text/plain; charset="UTF-8" Hi, attached a new v5 with some minor improvements on TAP tests: - Add a proper test name for all test cases - Add CREATE EXTENSION command execution - Change the assert on pg_available_extensions and pg_available_extension_versions to validate the row content Also rebased with master -- Matheus Alcantara --000000000000c591dc062f7492ca Content-Type: application/octet-stream; name="v5-0001-extension_control_path.patch" Content-Disposition: attachment; filename="v5-0001-extension_control_path.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m7teuqgx0 RnJvbSA5NmY3YmUzOTYyY2ViM2NhY2NmY2VjNTQ3M2JmNWZjZjljOWQ2NjZlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRyYXV0Lm9y Zz4KRGF0ZTogVGh1LCA1IERlYyAyMDI0IDExOjQ5OjA1ICswMTAwClN1YmplY3Q6IFtQQVRDSCB2 NV0gZXh0ZW5zaW9uX2NvbnRyb2xfcGF0aAoKVGhlIG5ldyBHVUMgZXh0ZW5zaW9uX2NvbnRyb2xf cGF0aCBzcGVjaWZpZXMgYSBwYXRoIHRvIGxvb2sgZm9yCmV4dGVuc2lvbiBjb250cm9sIGZpbGVz LiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgJHN5c3RlbSwgd2hpY2ggbG9va3MgaW4KdGhlIGNvbXBp bGVkLWluIGxvY2F0aW9uLCBhcyBiZWZvcmUuCgpUaGUgcGF0aCBzZWFyY2ggdXNlcyB0aGUgc2Ft ZSBjb2RlIGFuZCB3b3JrcyBpbiB0aGUgc2FtZSB3YXkgYXMKZHluYW1pY19saWJyYXJ5X3BhdGgu CgpEaXNjdXNzaW9uOiBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL2ZsYXQv RTdDN0JGRkItODg1Ny00OEQ0LUE3MUYtODhCMzU5RkFEQ0ZEQGp1c3RhdGhlb3J5LmNvbQotLS0K IGRvYy9zcmMvc2dtbC9jb25maWcuc2dtbCAgICAgICAgICAgICAgICAgICAgICB8ICA2OCArKysr CiBkb2Mvc3JjL3NnbWwvZXh0ZW5kLnNnbWwgICAgICAgICAgICAgICAgICAgICAgfCAgMTkgKy0K IGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2V4dGVuc2lvbi5zZ21sICAgICAgICB8ICAgNiArLQog c3JjL01ha2VmaWxlLmdsb2JhbC5pbiAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE5ICstCiBz cmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYyAgICAgICAgICAgICAgfCAzNDggKysrKysr KysrKystLS0tLS0tCiBzcmMvYmFja2VuZC91dGlscy9mbWdyL2RmbWdyLmMgICAgICAgICAgICAg ICAgfCAgNzYgKystLQogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgICAgICAg ICAgIHwgIDEzICsKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBs ZSB8ICAgMSArCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9leHRlbnNpb24uaCAgICAgICAgICAgICAg fCAgIDIgKwogc3JjL2luY2x1ZGUvZm1nci5oICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAyICsKIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL01ha2VmaWxlICAgICB8ICAg MSArCiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy9tZXNvbi5idWlsZCAgfCAgIDUg KwogLi4uL3QvMDAxX2V4dGVuc2lvbl9jb250cm9sX3BhdGgucGwgICAgICAgICAgIHwgIDY3ICsr KysKIDEzIGZpbGVzIGNoYW5nZWQsIDQ1MyBpbnNlcnRpb25zKCspLCAxNzQgZGVsZXRpb25zKC0p CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdC8w MDFfZXh0ZW5zaW9uX2NvbnRyb2xfcGF0aC5wbAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9j b25maWcuc2dtbCBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAppbmRleCBlNTU3MDBmMzViOC4u NjljMjNmMTdhZWYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAorKysgYi9k b2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKQEAgLTEwNzI2LDYgKzEwNzI2LDc0IEBAIGR5bmFtaWNf bGlicmFyeV9wYXRoID0gJ0M6XHRvb2xzXHBvc3RncmVzcWw7SDpcbXlfcHJvamVjdFxsaWI7JGxp YmRpcicKICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgIDx2 YXJsaXN0ZW50cnkgaWQ9Imd1Yy1leHRlbnNpb24tY29udHJvbC1wYXRoIiB4cmVmbGFiZWw9ImV4 dGVuc2lvbl9jb250cm9sX3BhdGgiPgorICAgICAgPHRlcm0+PHZhcm5hbWU+ZXh0ZW5zaW9uX2Nv bnRyb2xfcGF0aDwvdmFybmFtZT4gKDx0eXBlPnN0cmluZzwvdHlwZT4pCisgICAgICA8aW5kZXh0 ZXJtPgorICAgICAgIDxwcmltYXJ5Pjx2YXJuYW1lPmV4dGVuc2lvbl9jb250cm9sX3BhdGg8L3Zh cm5hbWU+IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9wcmltYXJ5PgorICAgICAgPC9pbmRleHRl cm0+CisgICAgICA8L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAg ICAgIEEgcGF0aCB0byBzZWFyY2ggZm9yIGV4dGVuc2lvbnMsIHNwZWNpZmljYWxseSBleHRlbnNp b24gY29udHJvbCBmaWxlcworICAgICAgICAoPGZpbGVuYW1lPjxyZXBsYWNlYWJsZT5uYW1lPC9y ZXBsYWNlYWJsZT4uY29udHJvbDwvZmlsZW5hbWU+KS4gIFRoZQorICAgICAgICByZW1haW5pbmcg ZXh0ZW5zaW9uIHNjcmlwdCBhbmQgc2Vjb25kYXJ5IGNvbnRyb2wgZmlsZXMgYXJlIHRoZW4gbG9h ZGVkCisgICAgICAgIGZyb20gdGhlIHNhbWUgZGlyZWN0b3J5IHdoZXJlIHRoZSBwcmltYXJ5IGNv bnRyb2wgZmlsZSB3YXMgZm91bmQuCisgICAgICAgIFNlZSA8eHJlZiBsaW5rZW5kPSJleHRlbmQt ZXh0ZW5zaW9ucy1maWxlcyIvPiBmb3IgZGV0YWlscy4KKyAgICAgICA8L3BhcmE+CisKKyAgICAg ICA8cGFyYT4KKyAgICAgICAgVGhlIHZhbHVlIGZvciA8dmFybmFtZT5leHRlbnNpb25fY29udHJv bF9wYXRoPC92YXJuYW1lPiBtdXN0IGJlIGEKKyAgICAgICAgbGlzdCBvZiBhYnNvbHV0ZSBkaXJl Y3RvcnkgcGF0aHMgc2VwYXJhdGVkIGJ5IGNvbG9ucyAob3Igc2VtaS1jb2xvbnMKKyAgICAgICAg b24gV2luZG93cykuICBJZiBhIGxpc3QgZWxlbWVudCBzdGFydHMKKyAgICAgICAgd2l0aCB0aGUg c3BlY2lhbCBzdHJpbmcgPGxpdGVyYWw+JHN5c3RlbTwvbGl0ZXJhbD4sIHRoZQorICAgICAgICBj b21waWxlZC1pbiA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IGV4dGVuc2lv bgorICAgICAgICBkaXJlY3RvcnkgaXMgc3Vic3RpdHV0ZWQgZm9yIDxsaXRlcmFsPiRzeXN0ZW08 L2xpdGVyYWw+OyB0aGlzCisgICAgICAgIGlzIHdoZXJlIHRoZSBleHRlbnNpb25zIHByb3ZpZGVk IGJ5IHRoZSBzdGFuZGFyZAorICAgICAgICA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVj dG5hbWU+IGRpc3RyaWJ1dGlvbiBhcmUgaW5zdGFsbGVkLgorICAgICAgICAoVXNlIDxsaXRlcmFs PnBnX2NvbmZpZyAtLXNoYXJlZGlyPC9saXRlcmFsPiB0byBmaW5kIG91dCB0aGUgbmFtZSBvZgor ICAgICAgICB0aGlzIGRpcmVjdG9yeS4pIEZvciBleGFtcGxlOgorPHByb2dyYW1saXN0aW5nPgor ZXh0ZW5zaW9uX2NvbnRyb2xfcGF0aCA9ICcvdXNyL2xvY2FsL3NoYXJlL3Bvc3RncmVzcWwvZXh0 ZW5zaW9uOi9ob21lL215X3Byb2plY3Qvc2hhcmUvZXh0ZW5zaW9uOiRzeXN0ZW0nCis8L3Byb2dy YW1saXN0aW5nPgorICAgICAgICBvciwgaW4gYSBXaW5kb3dzIGVudmlyb25tZW50OgorPHByb2dy YW1saXN0aW5nPgorZXh0ZW5zaW9uX2NvbnRyb2xfcGF0aCA9ICdDOlx0b29sc1xwb3N0Z3Jlc3Fs XGV4dGVuc2lvbjtIOlxteV9wcm9qZWN0XHNoYXJlXGV4dGVuc2lvbjskc3lzdGVtJworPC9wcm9n cmFtbGlzdGluZz4KKyAgICAgICAgTm90ZSB0aGF0IHRoZSBwYXRoIGVsZW1lbnRzIHNob3VsZCB0 eXBpY2FsbHkgZW5kIGluCisgICAgICAgIDxsaXRlcmFsPmV4dGVuc2lvbjwvbGl0ZXJhbD4gaWYg dGhlIG5vcm1hbCBpbnN0YWxsYXRpb24gbGF5b3V0cyBhcmUKKyAgICAgICAgZm9sbG93ZWQuICAo VGhlIHZhbHVlIGZvciA8bGl0ZXJhbD4kc3lzdGVtPC9saXRlcmFsPiBhbHJlYWR5IGluY2x1ZGVz CisgICAgICAgIHRoZSA8bGl0ZXJhbD5leHRlbnNpb248L2xpdGVyYWw+IHN1ZmZpeC4pCisgICAg ICAgPC9wYXJhPgorCisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGZv ciB0aGlzIHBhcmFtZXRlciBpcworICAgICAgICA8bGl0ZXJhbD4nJHN5c3RlbSc8L2xpdGVyYWw+ LiBJZiB0aGUgdmFsdWUgaXMgc2V0IHRvIGFuIGVtcHR5CisgICAgICAgIHN0cmluZywgdGhlIGRl ZmF1bHQgPGxpdGVyYWw+JyRzeXN0ZW0nPC9saXRlcmFsPiBpcyBhbHNvIGFzc3VtZWQuCisgICAg ICAgPC9wYXJhPgorCisgICAgICAgPHBhcmE+CisgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBi ZSBjaGFuZ2VkIGF0IHJ1biB0aW1lIGJ5IHN1cGVydXNlcnMgYW5kIHVzZXJzCisgICAgICAgIHdp dGggdGhlIGFwcHJvcHJpYXRlIDxsaXRlcmFsPlNFVDwvbGl0ZXJhbD4gcHJpdmlsZWdlLCBidXQg YQorICAgICAgICBzZXR0aW5nIGRvbmUgdGhhdCB3YXkgd2lsbCBvbmx5IHBlcnNpc3QgdW50aWwg dGhlIGVuZCBvZiB0aGUKKyAgICAgICAgY2xpZW50IGNvbm5lY3Rpb24sIHNvIHRoaXMgbWV0aG9k IHNob3VsZCBiZSByZXNlcnZlZCBmb3IKKyAgICAgICAgZGV2ZWxvcG1lbnQgcHVycG9zZXMuIFRo ZSByZWNvbW1lbmRlZCB3YXkgdG8gc2V0IHRoaXMgcGFyYW1ldGVyCisgICAgICAgIGlzIGluIHRo ZSA8ZmlsZW5hbWU+cG9zdGdyZXNxbC5jb25mPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbgorICAg ICAgICBmaWxlLgorICAgICAgIDwvcGFyYT4KKworICAgICAgIDxwYXJhPgorICAgICAgICBOb3Rl IHRoYXQgaWYgeW91IHNldCB0aGlzIHBhcmFtZXRlciB0byBiZSBhYmxlIHRvIGxvYWQgZXh0ZW5z aW9ucyBmcm9tCisgICAgICAgIG5vbnN0YW5kYXJkIGxvY2F0aW9ucywgeW91IHdpbGwgbW9zdCBs aWtlbHkgYWxzbyBuZWVkIHRvIHNldCA8eHJlZgorICAgICAgICBsaW5rZW5kPSJndWMtZHluYW1p Yy1saWJyYXJ5LXBhdGgiLz4gdG8gYSBjb3JyZXNwb25kZW50IGxvY2F0aW9uLCBmb3IKKyAgICAg ICAgZXhhbXBsZSwKKzxwcm9ncmFtbGlzdGluZz4KK2V4dGVuc2lvbl9jb250cm9sX3BhdGggPSAn L3Vzci9sb2NhbC9zaGFyZS9wb3N0Z3Jlc3FsL2V4dGVuc2lvbjokc3lzdGVtJworZHluYW1pY19s aWJyYXJ5X3BhdGggPSAnL3Vzci9sb2NhbC9saWIvcG9zdGdyZXNxbDokbGliZGlyJworPC9wcm9n cmFtbGlzdGluZz4KKyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zh cmxpc3RlbnRyeT4KKwogICAgICA8dmFybGlzdGVudHJ5IGlkPSJndWMtZ2luLWZ1enp5LXNlYXJj aC1saW1pdCIgeHJlZmxhYmVsPSJnaW5fZnV6enlfc2VhcmNoX2xpbWl0Ij4KICAgICAgIDx0ZXJt Pjx2YXJuYW1lPmdpbl9mdXp6eV9zZWFyY2hfbGltaXQ8L3Zhcm5hbWU+ICg8dHlwZT5pbnRlZ2Vy PC90eXBlPikKICAgICAgIDxpbmRleHRlcm0+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZXh0 ZW5kLnNnbWwgYi9kb2Mvc3JjL3NnbWwvZXh0ZW5kLnNnbWwKaW5kZXggYmE0OTJjYTI3YzAuLjY0 ZjhlMTMzY2FlIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZXh0ZW5kLnNnbWwKKysrIGIvZG9j L3NyYy9zZ21sL2V4dGVuZC5zZ21sCkBAIC02NDksNiArNjQ5LDExIEBAIFJFVFVSTlMgYW55Y29t cGF0aWJsZSBBUyAuLi4KICAgICAgY29udHJvbCBmaWxlIGNhbiBzcGVjaWZ5IGEgZGlmZmVyZW50 IGRpcmVjdG9yeSBmb3IgdGhlIHNjcmlwdCBmaWxlKHMpLgogICAgIDwvcGFyYT4KIAorICAgIDxw YXJhPgorICAgICBBZGRpdGlvbmFsIGxvY2F0aW9ucyBmb3IgZXh0ZW5zaW9uIGNvbnRyb2wgZmls ZXMgY2FuIGJlIGNvbmZpZ3VyZWQgdXNpbmcKKyAgICAgdGhlIHBhcmFtZXRlciA8eHJlZiBsaW5r ZW5kPSJndWMtZXh0ZW5zaW9uLWNvbnRyb2wtcGF0aCIvPi4KKyAgICA8L3BhcmE+CisKICAgICA8 cGFyYT4KICAgICAgVGhlIGZpbGUgZm9ybWF0IGZvciBhbiBleHRlbnNpb24gY29udHJvbCBmaWxl IGlzIHRoZSBzYW1lIGFzIGZvciB0aGUKICAgICAgPGZpbGVuYW1lPnBvc3RncmVzcWwuY29uZjwv ZmlsZW5hbWU+IGZpbGUsIG5hbWVseSBhIGxpc3Qgb2YKQEAgLTY2OSw5ICs2NzQsOSBAQCBSRVRV Uk5TIGFueWNvbXBhdGlibGUgQVMgLi4uCiAgICAgICAgPHBhcmE+CiAgICAgICAgIFRoZSBkaXJl Y3RvcnkgY29udGFpbmluZyB0aGUgZXh0ZW5zaW9uJ3MgPGFjcm9ueW0+U1FMPC9hY3JvbnltPiBz Y3JpcHQKICAgICAgICAgZmlsZShzKS4gIFVubGVzcyBhbiBhYnNvbHV0ZSBwYXRoIGlzIGdpdmVu LCB0aGUgbmFtZSBpcyByZWxhdGl2ZSB0bwotICAgICAgICB0aGUgaW5zdGFsbGF0aW9uJ3MgPGxp dGVyYWw+U0hBUkVESVI8L2xpdGVyYWw+IGRpcmVjdG9yeS4gIFRoZQotICAgICAgICBkZWZhdWx0 IGJlaGF2aW9yIGlzIGVxdWl2YWxlbnQgdG8gc3BlY2lmeWluZwotICAgICAgICA8bGl0ZXJhbD5k aXJlY3RvcnkgPSAnZXh0ZW5zaW9uJzwvbGl0ZXJhbD4uCisgICAgICAgIHRoZSBpbnN0YWxsYXRp b24ncyA8bGl0ZXJhbD5TSEFSRURJUjwvbGl0ZXJhbD4gZGlyZWN0b3J5LiAgQnkgZGVmYXVsdCwK KyAgICAgICAgdGhlIHNjcmlwdCBmaWxlcyBhcmUgbG9va2VkIGZvciBpbiB0aGUgc2FtZSBkaXJl Y3Rvcnkgd2hlcmUgdGhlCisgICAgICAgIGNvbnRyb2wgZmlsZSB3YXMgZm91bmQuCiAgICAgICAg PC9wYXJhPgogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CkBAIC03MTks OCArNzI0LDggQEAgUkVUVVJOUyBhbnljb21wYXRpYmxlIEFTIC4uLgogICAgICAgIDxwYXJhPgog ICAgICAgICBUaGUgdmFsdWUgb2YgdGhpcyBwYXJhbWV0ZXIgd2lsbCBiZSBzdWJzdGl0dXRlZCBm b3IgZWFjaCBvY2N1cnJlbmNlCiAgICAgICAgIG9mIDxsaXRlcmFsPk1PRFVMRV9QQVRITkFNRTwv bGl0ZXJhbD4gaW4gdGhlIHNjcmlwdCBmaWxlKHMpLiAgSWYgaXQgaXMgbm90Ci0gICAgICAgIHNl dCwgbm8gc3Vic3RpdHV0aW9uIGlzIG1hZGUuICBUeXBpY2FsbHksIHRoaXMgaXMgc2V0IHRvCi0g ICAgICAgIDxsaXRlcmFsPiRsaWJkaXIvPHJlcGxhY2VhYmxlPnNoYXJlZF9saWJyYXJ5X25hbWU8 L3JlcGxhY2VhYmxlPjwvbGl0ZXJhbD4gYW5kCisgICAgICAgIHNldCwgbm8gc3Vic3RpdHV0aW9u IGlzIG1hZGUuICBUeXBpY2FsbHksIHRoaXMgaXMgc2V0IHRvIGp1c3QKKyAgICAgICAgPGxpdGVy YWw+PHJlcGxhY2VhYmxlPnNoYXJlZF9saWJyYXJ5X25hbWU8L3JlcGxhY2VhYmxlPjwvbGl0ZXJh bD4gYW5kCiAgICAgICAgIHRoZW4gPGxpdGVyYWw+TU9EVUxFX1BBVEhOQU1FPC9saXRlcmFsPiBp cyB1c2VkIGluIDxjb21tYW5kPkNSRUFURQogICAgICAgICBGVU5DVElPTjwvY29tbWFuZD4gY29t bWFuZHMgZm9yIEMtbGFuZ3VhZ2UgZnVuY3Rpb25zLCBzbyB0aGF0IHRoZSBzY3JpcHQKICAgICAg ICAgZmlsZXMgZG8gbm90IG5lZWQgdG8gaGFyZC13aXJlIHRoZSBuYW1lIG9mIHRoZSBzaGFyZWQg bGlicmFyeS4KQEAgLTE4MDQsNiArMTgwOSwxMCBAQCBpbmNsdWRlICQoUEdYUykKICAgICBzZXR0 aW5nIDx2YXJuYW1lPlBHX0NPTkZJRzwvdmFybmFtZT4gdG8gcG9pbnQgdG8gaXRzCiAgICAgPGNv bW1hbmQ+cGdfY29uZmlnPC9jb21tYW5kPiBwcm9ncmFtLCBlaXRoZXIgd2l0aGluIHRoZSBtYWtl ZmlsZQogICAgIG9yIG9uIHRoZSA8bGl0ZXJhbD5tYWtlPC9saXRlcmFsPiBjb21tYW5kIGxpbmUu CisgICAgWW91IGNhbiBhbHNvIHNlbGVjdCBhIHNlcGFyYXRlIGluc3RhbGxhdGlvbiBkaXJlY3Rv cnkgZm9yIHlvdXIgZXh0ZW5zaW9uCisgICAgYnkgc2V0dGluZyB0aGUgPGxpdGVyYWw+bWFrZTwv bGl0ZXJhbD4gdmFyaWFibGUgPHZhcm5hbWU+cHJlZml4PC92YXJuYW1lPgorICAgIG9uIHRoZSA8 bGl0ZXJhbD5tYWtlPC9saXRlcmFsPiBjb21tYW5kIGxpbmUuICAoQnV0IHRoaXMgd2lsbCB0aGVu IHJlcXVpcmUKKyAgICBhZGRpdGlvbmFsIHNldHVwIHRvIGdldCB0aGUgc2VydmVyIHRvIGZpbmQg dGhlIGV4dGVuc2lvbiB0aGVyZS4pCiAgICA8L3BhcmE+CiAKICAgIDxwYXJhPgpkaWZmIC0tZ2l0 IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfZXh0ZW5zaW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwv cmVmL2NyZWF0ZV9leHRlbnNpb24uc2dtbAppbmRleCBjYTJiODBkNjY5Yy4uNzEzYWJkOWM0OTQg MTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2V4dGVuc2lvbi5zZ21sCisrKyBi L2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2V4dGVuc2lvbi5zZ21sCkBAIC05MCw4ICs5MCwxMCBA QCBDUkVBVEUgRVhURU5TSU9OIFsgSUYgTk9UIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5leHRlbnNpb25fbmFtZQogICAgICAgIDxwYXJhPgogICAgICAgICBUaGUgbmFt ZSBvZiB0aGUgZXh0ZW5zaW9uIHRvIGJlCiAgICAgICAgIGluc3RhbGxlZC4gPHByb2R1Y3RuYW1l PlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiB3aWxsIGNyZWF0ZSB0aGUKLSAgICAgICAgZXh0ZW5z aW9uIHVzaW5nIGRldGFpbHMgZnJvbSB0aGUgZmlsZQotICAgICAgICA8bGl0ZXJhbD5TSEFSRURJ Ui9leHRlbnNpb24vPC9saXRlcmFsPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leHRl bnNpb25fbmFtZTwvcmVwbGFjZWFibGU+PGxpdGVyYWw+LmNvbnRyb2w8L2xpdGVyYWw+LgorICAg ICAgICBleHRlbnNpb24gdXNpbmcgZGV0YWlscyBmcm9tIHRoZSBmaWxlIDxmaWxlbmFtZT48cmVw bGFjZWFibGUKKyAgICAgICAgY2xhc3M9InBhcmFtZXRlciI+ZXh0ZW5zaW9uX25hbWU8L3JlcGxh Y2VhYmxlPi5jb250cm9sPC9maWxlbmFtZT4sCisgICAgICAgIGZvdW5kIHZpYSB0aGUgc2VydmVy J3MgZXh0ZW5zaW9uIGNvbnRyb2wgcGF0aCAoc2V0IGJ5IDx4cmVmCisgICAgICAgIGxpbmtlbmQ9 Imd1Yy1leHRlbnNpb24tY29udHJvbC1wYXRoIi8+LikKICAgICAgICA8L3BhcmE+CiAgICAgICA8 L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmls ZS5nbG9iYWwuaW4gYi9zcmMvTWFrZWZpbGUuZ2xvYmFsLmluCmluZGV4IDNiNjIwYmFjNWFjLi44 ZmU5ZDYxZTgyYSAxMDA2NDQKLS0tIGEvc3JjL01ha2VmaWxlLmdsb2JhbC5pbgorKysgYi9zcmMv TWFrZWZpbGUuZ2xvYmFsLmluCkBAIC04Nyw5ICs4NywxOSBAQCBlbmRpZiAjIG5vdCBQR1hTCiAj CiAjIEluIGEgUEdYUyBidWlsZCwgd2UgY2Fubm90IHVzZSB0aGUgdmFsdWVzIGluc2VydGVkIGlu dG8gTWFrZWZpbGUuZ2xvYmFsCiAjIGJ5IGNvbmZpZ3VyZSwgc2luY2UgdGhlIGluc3RhbGxhdGlv biB0cmVlIG1heSBoYXZlIGJlZW4gcmVsb2NhdGVkLgotIyBJbnN0ZWFkIGdldCB0aGUgcGF0aCB2 YWx1ZXMgZnJvbSBwZ19jb25maWcuCisjIEluc3RlYWQgZ2V0IHRoZSBwYXRoIHZhbHVlcyBmcm9t IHBnX2NvbmZpZy4gIEJ1dCB1c2VycyBjYW4gc3BlY2lmeQorIyBwcmVmaXggZXhwbGljaXRseSwg aWYgdGhleSB3YW50IHRvIHNlbGVjdCB0aGVpciBvd24gaW5zdGFsbGF0aW9uCisjIGxvY2F0aW9u LgogCi1pZm5kZWYgUEdYUworaWZkZWYgUEdYUworIyBFeHRlbnNpb24gbWFrZWZpbGVzIHNob3Vs ZCBzZXQgUEdfQ09ORklHLCBidXQgb2xkZXIgb25lcyBtaWdodCBub3QKK2lmbmRlZiBQR19DT05G SUcKK1BHX0NPTkZJRyA9IHBnX2NvbmZpZworZW5kaWYKK2VuZGlmCisKKyMgVGhpcyBtZWFuczog aWYgKChub3QgUEdYUykgb3IgcHJlZml4KQoraWZuZXEgKCwkKGlmICQoUEdYUyksLDEpJChwcmVm aXgpKQogCiAjIE5vdGUgdGhhdCBwcmVmaXgsIGV4ZWNfcHJlZml4LCBhbmQgZGF0YXJvb3RkaXIg YXJlbid0IGRlZmluZWQgaW4gYSBQR1hTIGJ1aWxkOwogIyBtYWtlZmlsZXMgbWF5IG9ubHkgdXNl IHRoZSBkZXJpdmVkIHZhcmlhYmxlcyBzdWNoIGFzIGJpbmRpci4KQEAgLTE0NywxMSArMTU3LDYg QEAgbG9jYWxlZGlyIDo9IEBsb2NhbGVkaXJACiAKIGVsc2UgIyBQR1hTIGNhc2UKIAotIyBFeHRl bnNpb24gbWFrZWZpbGVzIHNob3VsZCBzZXQgUEdfQ09ORklHLCBidXQgb2xkZXIgb25lcyBtaWdo dCBub3QKLWlmbmRlZiBQR19DT05GSUcKLVBHX0NPTkZJRyA9IHBnX2NvbmZpZwotZW5kaWYKLQog YmluZGlyIDo9ICQoc2hlbGwgJChQR19DT05GSUcpIC0tYmluZGlyKQogZGF0YWRpciA6PSAkKHNo ZWxsICQoUEdfQ09ORklHKSAtLXNoYXJlZGlyKQogc3lzY29uZmRpciA6PSAkKHNoZWxsICQoUEdf Q09ORklHKSAtLXN5c2NvbmZkaXIpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9l eHRlbnNpb24uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jCmluZGV4IGQ5YmI0 Y2U1ZjFlLi43ZThhMjhlNDA2NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0 ZW5zaW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMKQEAgLTUxLDYg KzUxLDcgQEAKICNpbmNsdWRlICJjb21tYW5kcy9kZWZyZW0uaCIKICNpbmNsdWRlICJjb21tYW5k cy9leHRlbnNpb24uaCIKICNpbmNsdWRlICJjb21tYW5kcy9zY2hlbWFjbWRzLmgiCisjaW5jbHVk ZSAibm9kZXMvcGdfbGlzdC5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKICNpbmNsdWRlICJtYi9w Z193Y2hhci5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgpAQCAtNjksNiArNzAsOSBAQAogI2lu Y2x1ZGUgInV0aWxzL3ZhcmxlbmEuaCIKIAogCisvKiBHVUMgKi8KK2NoYXIJICAgKkV4dGVuc2lv bl9jb250cm9sX3BhdGg7CisKIC8qIEdsb2JhbGx5IHZpc2libGUgc3RhdGUgdmFyaWFibGVzICov CiBib29sCQljcmVhdGluZ19leHRlbnNpb24gPSBmYWxzZTsKIE9pZAkJCUN1cnJlbnRFeHRlbnNp b25PYmplY3QgPSBJbnZhbGlkT2lkOwpAQCAtNzksNiArODMsNyBAQCBPaWQJCQlDdXJyZW50RXh0 ZW5zaW9uT2JqZWN0ID0gSW52YWxpZE9pZDsKIHR5cGVkZWYgc3RydWN0IEV4dGVuc2lvbkNvbnRy b2xGaWxlCiB7CiAJY2hhcgkgICAqbmFtZTsJCQkvKiBuYW1lIG9mIHRoZSBleHRlbnNpb24gKi8K KwljaGFyCSAgICpjb250cm9sX2RpcjsJLyogZGlyZWN0b3J5IHdoZXJlIGNvbnRyb2wgZmlsZSB3 YXMgZm91bmQgKi8KIAljaGFyCSAgICpkaXJlY3Rvcnk7CQkvKiBkaXJlY3RvcnkgZm9yIHNjcmlw dCBmaWxlcyAqLwogCWNoYXIJICAgKmRlZmF1bHRfdmVyc2lvbjsJLyogZGVmYXVsdCBpbnN0YWxs IHRhcmdldCB2ZXJzaW9uLCBpZiBhbnkgKi8KIAljaGFyCSAgICptb2R1bGVfcGF0aG5hbWU7CS8q IHN0cmluZyB0byBzdWJzdGl0dXRlIGZvcgpAQCAtMzI4LDI5ICszMzMsODggQEAgaXNfZXh0ZW5z aW9uX3NjcmlwdF9maWxlbmFtZShjb25zdCBjaGFyICpmaWxlbmFtZSkKIAlyZXR1cm4gKGV4dGVu c2lvbiAhPSBOVUxMKSAmJiAoc3RyY21wKGV4dGVuc2lvbiwgIi5zcWwiKSA9PSAwKTsKIH0KIAot c3RhdGljIGNoYXIgKgotZ2V0X2V4dGVuc2lvbl9jb250cm9sX2RpcmVjdG9yeSh2b2lkKQorLyoK KyAqIFJldHVybiBhIGxpc3Qgb2YgZGlyZWN0b3JpZXMgZGVjbGFyZWQgb24gZXh0ZW5zaW9uX2Nv bnRyb2xfcGF0aCBHVUMuCisgKi8KK3N0YXRpYyBMaXN0ICoKK2dldF9leHRlbnNpb25fY29udHJv bF9kaXJlY3Rvcmllcyh2b2lkKQogewogCWNoYXIJCXNoYXJlcGF0aFtNQVhQR1BBVEhdOwotCWNo YXIJICAgKnJlc3VsdDsKKwljaGFyCSAgICpzeXN0ZW1fZGlyOworCWNoYXIJICAgKmVjcDsKKwlj aGFyCSAgICp0b2tlbjsKKwljaGFyCSAgICpwYXRoOworCUxpc3QJICAgKnBhdGhzID0gTklMOwog CiAJZ2V0X3NoYXJlX3BhdGgobXlfZXhlY19wYXRoLCBzaGFyZXBhdGgpOwotCXJlc3VsdCA9IChj aGFyICopIHBhbGxvYyhNQVhQR1BBVEgpOwotCXNucHJpbnRmKHJlc3VsdCwgTUFYUEdQQVRILCAi JXMvZXh0ZW5zaW9uIiwgc2hhcmVwYXRoKTsKIAotCXJldHVybiByZXN1bHQ7CisJc3lzdGVtX2Rp ciA9IHBzcHJpbnRmKCIlcy9leHRlbnNpb24iLCBzaGFyZXBhdGgpOworCisJaWYgKHN0cmxlbihF eHRlbnNpb25fY29udHJvbF9wYXRoKSA9PSAwKQorCXsKKwkJcGF0aHMgPSBsYXBwZW5kKHBhdGhz LCBzeXN0ZW1fZGlyKTsKKwl9CisJZWxzZQorCXsKKwkJLyogRHVwbGljYXRlIHRoZSBzdHJpbmcg c28gd2UgY2FuIG1vZGlmeSBpdCAqLworCQllY3AgPSBwc3RyZHVwKEV4dGVuc2lvbl9jb250cm9s X3BhdGgpOworCisJCS8qIENvbnN1bWUgZWFjaCBwYXRoIGJldHdlZW4gJzonICovCisJCWZvciAo dG9rZW4gPSBzdHJ0b2soZWNwLCAiOiIpOyB0b2tlbiAhPSBOVUxMOyB0b2tlbiA9IHN0cnRvayhO VUxMLCAiOiIpKQorCQl7CisJCQlpZiAoc3RyY21wKHRva2VuLCAiJHN5c3RlbSIpID09IDApCisJ CQkJcGF0aCA9IHN5c3RlbV9kaXI7CisJCQllbHNlCisJCQkJcGF0aCA9IHBzdHJkdXAodG9rZW4p OworCisJCQlwYXRocyA9IGxhcHBlbmQocGF0aHMsIHBhdGgpOworCQl9CisKKwkJcGZyZWUoZWNw KTsKKwl9CisKKwlyZXR1cm4gcGF0aHM7CiB9CiAKKy8qCisgKiBGaW5kIGNvbnRyb2wgZmlsZSBm b3IgZXh0ZW5zaW9uIHdpdGggbmFtZSBpbiBjb250cm9sLT5uYW1lLCBsb29raW5nIGluIHRoZQor ICogcGF0aC4gIFJldHVybiB0aGUgZnVsbCBmaWxlIG5hbWUsIG9yIE5VTEwgaWYgbm90IGZvdW5k LiAgSWYgZm91bmQsIHRoZQorICogZGlyZWN0b3J5IGlzIHJlY29yZGVkIGluIGNvbnRyb2wtPmNv bnRyb2xfZGlyLgorICovCiBzdGF0aWMgY2hhciAqCi1nZXRfZXh0ZW5zaW9uX2NvbnRyb2xfZmls ZW5hbWUoY29uc3QgY2hhciAqZXh0bmFtZSkKK2ZpbmRfZXh0ZW5zaW9uX2NvbnRyb2xfZmlsZW5h bWUoRXh0ZW5zaW9uQ29udHJvbEZpbGUgKmNvbnRyb2wpCiB7CiAJY2hhcgkJc2hhcmVwYXRoW01B WFBHUEFUSF07CisJY2hhcgkgICAqc3lzdGVtX2RpcjsKKwljaGFyCSAgICpiYXNlbmFtZTsKKwlj aGFyCSAgICplY3A7CiAJY2hhcgkgICAqcmVzdWx0OwogCisJQXNzZXJ0KGNvbnRyb2wtPm5hbWUp OworCiAJZ2V0X3NoYXJlX3BhdGgobXlfZXhlY19wYXRoLCBzaGFyZXBhdGgpOwotCXJlc3VsdCA9 IChjaGFyICopIHBhbGxvYyhNQVhQR1BBVEgpOwotCXNucHJpbnRmKHJlc3VsdCwgTUFYUEdQQVRI LCAiJXMvZXh0ZW5zaW9uLyVzLmNvbnRyb2wiLAotCQkJIHNoYXJlcGF0aCwgZXh0bmFtZSk7CisJ c3lzdGVtX2RpciA9IHBzcHJpbnRmKCIlcy9leHRlbnNpb24iLCBzaGFyZXBhdGgpOworCisJYmFz ZW5hbWUgPSBwc3ByaW50ZigiJXMuY29udHJvbCIsIGNvbnRyb2wtPm5hbWUpOworCisJLyoKKwkg KiBmaW5kX2luX3BhdGgoKSBkb2VzIG5vdGhpbmcgaWYgdGhlIHBhdGggdmFsdWUgaXMgZW1wdHku ICBUaGlzIGlzIHRoZQorCSAqIGhpc3RvcmljYWwgYmVoYXZpb3IgZm9yIGR5bmFtaWNfbGlicmFy eV9wYXRoLCBidXQgaXQgbWFrZXMgbm8gc2Vuc2UgZm9yCisJICogZXh0ZW5zaW9ucy4gIFNvIGlu IHRoYXQgY2FzZSwgc3Vic3RpdHV0ZSBhIGRlZmF1bHQgdmFsdWUuCisJICovCisJZWNwID0gRXh0 ZW5zaW9uX2NvbnRyb2xfcGF0aDsKKwlpZiAoc3RybGVuKGVjcCkgPT0gMCkKKwkJZWNwID0gIiRz eXN0ZW0iOworCXJlc3VsdCA9IGZpbmRfaW5fcGF0aChiYXNlbmFtZSwgRXh0ZW5zaW9uX2NvbnRy b2xfcGF0aCwgImV4dGVuc2lvbl9jb250cm9sX3BhdGgiLCAiJHN5c3RlbSIsIHN5c3RlbV9kaXIp OworCisJaWYgKHJlc3VsdCkKKwl7CisJCWNvbnN0IGNoYXIgKnA7CisKKwkJcCA9IHN0cnJjaHIo cmVzdWx0LCAnLycpOworCQlBc3NlcnQocCk7CisJCWNvbnRyb2wtPmNvbnRyb2xfZGlyID0gcG5z dHJkdXAocmVzdWx0LCBwIC0gcmVzdWx0KTsKKwl9CiAKIAlyZXR1cm4gcmVzdWx0OwogfQpAQCAt MzY2LDcgKzQzMCw3IEBAIGdldF9leHRlbnNpb25fc2NyaXB0X2RpcmVjdG9yeShFeHRlbnNpb25D b250cm9sRmlsZSAqY29udHJvbCkKIAkgKiBpbnN0YWxsYXRpb24ncyBzaGFyZSBkaXJlY3Rvcnku CiAJICovCiAJaWYgKCFjb250cm9sLT5kaXJlY3RvcnkpCi0JCXJldHVybiBnZXRfZXh0ZW5zaW9u X2NvbnRyb2xfZGlyZWN0b3J5KCk7CisJCXJldHVybiBwc3RyZHVwKGNvbnRyb2wtPmNvbnRyb2xf ZGlyKTsKIAogCWlmIChpc19hYnNvbHV0ZV9wYXRoKGNvbnRyb2wtPmRpcmVjdG9yeSkpCiAJCXJl dHVybiBwc3RyZHVwKGNvbnRyb2wtPmRpcmVjdG9yeSk7CkBAIC00NDQsMjcgKzUwOCwyNSBAQCBw YXJzZV9leHRlbnNpb25fY29udHJvbF9maWxlKEV4dGVuc2lvbkNvbnRyb2xGaWxlICpjb250cm9s LAogCWlmICh2ZXJzaW9uKQogCQlmaWxlbmFtZSA9IGdldF9leHRlbnNpb25fYXV4X2NvbnRyb2xf ZmlsZW5hbWUoY29udHJvbCwgdmVyc2lvbik7CiAJZWxzZQotCQlmaWxlbmFtZSA9IGdldF9leHRl bnNpb25fY29udHJvbF9maWxlbmFtZShjb250cm9sLT5uYW1lKTsKKwkJZmlsZW5hbWUgPSBmaW5k X2V4dGVuc2lvbl9jb250cm9sX2ZpbGVuYW1lKGNvbnRyb2wpOworCisJaWYgKCFmaWxlbmFtZSkK Kwl7CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9T VVBQT1JURUQpLAorCQkJCSBlcnJtc2coImV4dGVuc2lvbiBcIiVzXCIgaXMgbm90IGF2YWlsYWJs ZSIsIGNvbnRyb2wtPm5hbWUpLAorCQkJCSBlcnJoaW50KCJUaGUgZXh0ZW5zaW9uIG11c3QgZmly c3QgYmUgaW5zdGFsbGVkIG9uIHRoZSBzeXN0ZW0gd2hlcmUgUG9zdGdyZVNRTCBpcyBydW5uaW5n LiIpKSk7CisJfQogCiAJaWYgKChmaWxlID0gQWxsb2NhdGVGaWxlKGZpbGVuYW1lLCAiciIpKSA9 PSBOVUxMKQogCXsKLQkJaWYgKGVycm5vID09IEVOT0VOVCkKKwkJLyogbm8gY29tcGxhaW50IGZv ciBtaXNzaW5nIGF1eGlsaWFyeSBmaWxlICovCisJCWlmIChlcnJubyA9PSBFTk9FTlQgJiYgdmVy c2lvbikKIAkJewotCQkJLyogbm8gY29tcGxhaW50IGZvciBtaXNzaW5nIGF1eGlsaWFyeSBmaWxl ICovCi0JCQlpZiAodmVyc2lvbikKLQkJCXsKLQkJCQlwZnJlZShmaWxlbmFtZSk7Ci0JCQkJcmV0 dXJuOwotCQkJfQotCi0JCQkvKiBtaXNzaW5nIGNvbnRyb2wgZmlsZSBpbmRpY2F0ZXMgZXh0ZW5z aW9uIGlzIG5vdCBpbnN0YWxsZWQgKi8KLQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCShlcnJjb2Rl KEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKLQkJCQkJIGVycm1zZygiZXh0ZW5zaW9u IFwiJXNcIiBpcyBub3QgYXZhaWxhYmxlIiwgY29udHJvbC0+bmFtZSksCi0JCQkJCSBlcnJkZXRh aWwoIkNvdWxkIG5vdCBvcGVuIGV4dGVuc2lvbiBjb250cm9sIGZpbGUgXCIlc1wiOiAlbS4iLAot CQkJCQkJCSAgIGZpbGVuYW1lKSwKLQkJCQkJIGVycmhpbnQoIlRoZSBleHRlbnNpb24gbXVzdCBm aXJzdCBiZSBpbnN0YWxsZWQgb24gdGhlIHN5c3RlbSB3aGVyZSBQb3N0Z3JlU1FMIGlzIHJ1bm5p bmcuIikpKTsKKwkJCXBmcmVlKGZpbGVuYW1lKTsKKwkJCXJldHVybjsKIAkJfQorCiAJCWVyZXBv cnQoRVJST1IsCiAJCQkJKGVycmNvZGVfZm9yX2ZpbGVfYWNjZXNzKCksCiAJCQkJIGVycm1zZygi Y291bGQgbm90IG9wZW4gZXh0ZW5zaW9uIGNvbnRyb2wgZmlsZSBcIiVzXCI6ICVtIiwKQEAgLTIx MjEsNjggKzIxODMsNzUgQEAgRGF0dW0KIHBnX2F2YWlsYWJsZV9leHRlbnNpb25zKFBHX0ZVTkNU SU9OX0FSR1MpCiB7CiAJUmV0dXJuU2V0SW5mbyAqcnNpbmZvID0gKFJldHVyblNldEluZm8gKikg ZmNpbmZvLT5yZXN1bHRpbmZvOwotCWNoYXIJICAgKmxvY2F0aW9uOwogCURJUgkJICAgKmRpcjsK IAlzdHJ1Y3QgZGlyZW50ICpkZTsKKwlMaXN0CSAgICpsb2NhdGlvbnM7CisJTGlzdENlbGwgICAq Y2VsbDsKIAogCS8qIEJ1aWxkIHR1cGxlc3RvcmUgdG8gaG9sZCB0aGUgcmVzdWx0IHJvd3MgKi8K IAlJbml0TWF0ZXJpYWxpemVkU1JGKGZjaW5mbywgMCk7CiAKLQlsb2NhdGlvbiA9IGdldF9leHRl bnNpb25fY29udHJvbF9kaXJlY3RvcnkoKTsKLQlkaXIgPSBBbGxvY2F0ZURpcihsb2NhdGlvbik7 CisJbG9jYXRpb25zID0gZ2V0X2V4dGVuc2lvbl9jb250cm9sX2RpcmVjdG9yaWVzKCk7CiAKLQkv KgotCSAqIElmIHRoZSBjb250cm9sIGRpcmVjdG9yeSBkb2Vzbid0IGV4aXN0LCB3ZSB3YW50IHRv IHNpbGVudGx5IHJldHVybiBhbgotCSAqIGVtcHR5IHNldC4gIEFueSBvdGhlciBlcnJvciB3aWxs IGJlIHJlcG9ydGVkIGJ5IFJlYWREaXIuCi0JICovCi0JaWYgKGRpciA9PSBOVUxMICYmIGVycm5v ID09IEVOT0VOVCkKLQl7Ci0JCS8qIGRvIG5vdGhpbmcgKi8KLQl9Ci0JZWxzZQorCWZvcmVhY2go Y2VsbCwgbG9jYXRpb25zKQogCXsKLQkJd2hpbGUgKChkZSA9IFJlYWREaXIoZGlyLCBsb2NhdGlv bikpICE9IE5VTEwpCisJCWNoYXIJICAgKmxvY2F0aW9uID0gKGNoYXIgKikgbGZpcnN0KGNlbGwp OworCisJCWRpciA9IEFsbG9jYXRlRGlyKGxvY2F0aW9uKTsKKworCQkvKgorCQkgKiBJZiB0aGUg Y29udHJvbCBkaXJlY3RvcnkgZG9lc24ndCBleGlzdCwgd2Ugd2FudCB0byBzaWxlbnRseSByZXR1 cm4KKwkJICogYW4gZW1wdHkgc2V0LiAgQW55IG90aGVyIGVycm9yIHdpbGwgYmUgcmVwb3J0ZWQg YnkgUmVhZERpci4KKwkJICovCisJCWlmIChkaXIgPT0gTlVMTCAmJiBlcnJubyA9PSBFTk9FTlQp CiAJCXsKLQkJCUV4dGVuc2lvbkNvbnRyb2xGaWxlICpjb250cm9sOwotCQkJY2hhcgkgICAqZXh0 bmFtZTsKLQkJCURhdHVtCQl2YWx1ZXNbM107Ci0JCQlib29sCQludWxsc1szXTsKKwkJCS8qIGRv IG5vdGhpbmcgKi8KKwkJfQorCQllbHNlCisJCXsKKwkJCXdoaWxlICgoZGUgPSBSZWFkRGlyKGRp ciwgbG9jYXRpb24pKSAhPSBOVUxMKQorCQkJeworCQkJCUV4dGVuc2lvbkNvbnRyb2xGaWxlICpj b250cm9sOworCQkJCWNoYXIJICAgKmV4dG5hbWU7CisJCQkJRGF0dW0JCXZhbHVlc1szXTsKKwkJ CQlib29sCQludWxsc1szXTsKIAotCQkJaWYgKCFpc19leHRlbnNpb25fY29udHJvbF9maWxlbmFt ZShkZS0+ZF9uYW1lKSkKLQkJCQljb250aW51ZTsKKwkJCQlpZiAoIWlzX2V4dGVuc2lvbl9jb250 cm9sX2ZpbGVuYW1lKGRlLT5kX25hbWUpKQorCQkJCQljb250aW51ZTsKIAotCQkJLyogZXh0cmFj dCBleHRlbnNpb24gbmFtZSBmcm9tICduYW1lLmNvbnRyb2wnIGZpbGVuYW1lICovCi0JCQlleHRu YW1lID0gcHN0cmR1cChkZS0+ZF9uYW1lKTsKLQkJCSpzdHJyY2hyKGV4dG5hbWUsICcuJykgPSAn XDAnOworCQkJCS8qIGV4dHJhY3QgZXh0ZW5zaW9uIG5hbWUgZnJvbSAnbmFtZS5jb250cm9sJyBm aWxlbmFtZSAqLworCQkJCWV4dG5hbWUgPSBwc3RyZHVwKGRlLT5kX25hbWUpOworCQkJCSpzdHJy Y2hyKGV4dG5hbWUsICcuJykgPSAnXDAnOwogCi0JCQkvKiBpZ25vcmUgaXQgaWYgaXQncyBhbiBh dXhpbGlhcnkgY29udHJvbCBmaWxlICovCi0JCQlpZiAoc3Ryc3RyKGV4dG5hbWUsICItLSIpKQot CQkJCWNvbnRpbnVlOworCQkJCS8qIGlnbm9yZSBpdCBpZiBpdCdzIGFuIGF1eGlsaWFyeSBjb250 cm9sIGZpbGUgKi8KKwkJCQlpZiAoc3Ryc3RyKGV4dG5hbWUsICItLSIpKQorCQkJCQljb250aW51 ZTsKIAotCQkJY29udHJvbCA9IHJlYWRfZXh0ZW5zaW9uX2NvbnRyb2xfZmlsZShleHRuYW1lKTsK KwkJCQljb250cm9sID0gcmVhZF9leHRlbnNpb25fY29udHJvbF9maWxlKGV4dG5hbWUpOwogCi0J CQltZW1zZXQodmFsdWVzLCAwLCBzaXplb2YodmFsdWVzKSk7Ci0JCQltZW1zZXQobnVsbHMsIDAs IHNpemVvZihudWxscykpOworCQkJCW1lbXNldCh2YWx1ZXMsIDAsIHNpemVvZih2YWx1ZXMpKTsK KwkJCQltZW1zZXQobnVsbHMsIDAsIHNpemVvZihudWxscykpOwogCi0JCQkvKiBuYW1lICovCi0J CQl2YWx1ZXNbMF0gPSBEaXJlY3RGdW5jdGlvbkNhbGwxKG5hbWVpbiwKLQkJCQkJCQkJCQkJQ1N0 cmluZ0dldERhdHVtKGNvbnRyb2wtPm5hbWUpKTsKLQkJCS8qIGRlZmF1bHRfdmVyc2lvbiAqLwot CQkJaWYgKGNvbnRyb2wtPmRlZmF1bHRfdmVyc2lvbiA9PSBOVUxMKQotCQkJCW51bGxzWzFdID0g dHJ1ZTsKLQkJCWVsc2UKLQkJCQl2YWx1ZXNbMV0gPSBDU3RyaW5nR2V0VGV4dERhdHVtKGNvbnRy b2wtPmRlZmF1bHRfdmVyc2lvbik7Ci0JCQkvKiBjb21tZW50ICovCi0JCQlpZiAoY29udHJvbC0+ Y29tbWVudCA9PSBOVUxMKQotCQkJCW51bGxzWzJdID0gdHJ1ZTsKLQkJCWVsc2UKLQkJCQl2YWx1 ZXNbMl0gPSBDU3RyaW5nR2V0VGV4dERhdHVtKGNvbnRyb2wtPmNvbW1lbnQpOworCQkJCS8qIG5h bWUgKi8KKwkJCQl2YWx1ZXNbMF0gPSBEaXJlY3RGdW5jdGlvbkNhbGwxKG5hbWVpbiwKKwkJCQkJ CQkJCQkJCUNTdHJpbmdHZXREYXR1bShjb250cm9sLT5uYW1lKSk7CisJCQkJLyogZGVmYXVsdF92 ZXJzaW9uICovCisJCQkJaWYgKGNvbnRyb2wtPmRlZmF1bHRfdmVyc2lvbiA9PSBOVUxMKQorCQkJ CQludWxsc1sxXSA9IHRydWU7CisJCQkJZWxzZQorCQkJCQl2YWx1ZXNbMV0gPSBDU3RyaW5nR2V0 VGV4dERhdHVtKGNvbnRyb2wtPmRlZmF1bHRfdmVyc2lvbik7CisJCQkJLyogY29tbWVudCAqLwor CQkJCWlmIChjb250cm9sLT5jb21tZW50ID09IE5VTEwpCisJCQkJCW51bGxzWzJdID0gdHJ1ZTsK KwkJCQllbHNlCisJCQkJCXZhbHVlc1syXSA9IENTdHJpbmdHZXRUZXh0RGF0dW0oY29udHJvbC0+ Y29tbWVudCk7CiAKLQkJCXR1cGxlc3RvcmVfcHV0dmFsdWVzKHJzaW5mby0+c2V0UmVzdWx0LCBy c2luZm8tPnNldERlc2MsCi0JCQkJCQkJCSB2YWx1ZXMsIG51bGxzKTsKLQkJfQorCQkJCXR1cGxl c3RvcmVfcHV0dmFsdWVzKHJzaW5mby0+c2V0UmVzdWx0LCByc2luZm8tPnNldERlc2MsCisJCQkJ CQkJCQkgdmFsdWVzLCBudWxscyk7CisJCQl9CiAKLQkJRnJlZURpcihkaXIpOworCQkJRnJlZURp cihkaXIpOworCQl9CiAJfQogCiAJcmV0dXJuIChEYXR1bSkgMDsKQEAgLTIyMDEsNTEgKzIyNzAs NTcgQEAgRGF0dW0KIHBnX2F2YWlsYWJsZV9leHRlbnNpb25fdmVyc2lvbnMoUEdfRlVOQ1RJT05f QVJHUykKIHsKIAlSZXR1cm5TZXRJbmZvICpyc2luZm8gPSAoUmV0dXJuU2V0SW5mbyAqKSBmY2lu Zm8tPnJlc3VsdGluZm87Ci0JY2hhcgkgICAqbG9jYXRpb247CisJTGlzdAkgICAqbG9jYXRpb25z OworCUxpc3RDZWxsICAgKmNlbGw7CiAJRElSCQkgICAqZGlyOwogCXN0cnVjdCBkaXJlbnQgKmRl OwogCiAJLyogQnVpbGQgdHVwbGVzdG9yZSB0byBob2xkIHRoZSByZXN1bHQgcm93cyAqLwogCUlu aXRNYXRlcmlhbGl6ZWRTUkYoZmNpbmZvLCAwKTsKIAotCWxvY2F0aW9uID0gZ2V0X2V4dGVuc2lv bl9jb250cm9sX2RpcmVjdG9yeSgpOwotCWRpciA9IEFsbG9jYXRlRGlyKGxvY2F0aW9uKTsKLQot CS8qCi0JICogSWYgdGhlIGNvbnRyb2wgZGlyZWN0b3J5IGRvZXNuJ3QgZXhpc3QsIHdlIHdhbnQg dG8gc2lsZW50bHkgcmV0dXJuIGFuCi0JICogZW1wdHkgc2V0LiAgQW55IG90aGVyIGVycm9yIHdp bGwgYmUgcmVwb3J0ZWQgYnkgUmVhZERpci4KLQkgKi8KLQlpZiAoZGlyID09IE5VTEwgJiYgZXJy bm8gPT0gRU5PRU5UKQotCXsKLQkJLyogZG8gbm90aGluZyAqLwotCX0KLQllbHNlCisJbG9jYXRp b25zID0gZ2V0X2V4dGVuc2lvbl9jb250cm9sX2RpcmVjdG9yaWVzKCk7CisJZm9yZWFjaChjZWxs LCBsb2NhdGlvbnMpCiAJewotCQl3aGlsZSAoKGRlID0gUmVhZERpcihkaXIsIGxvY2F0aW9uKSkg IT0gTlVMTCkKKwkJY2hhcgkgICAqbG9jYXRpb24gPSAoY2hhciAqKSBsZmlyc3QoY2VsbCk7CisK KwkJZGlyID0gQWxsb2NhdGVEaXIobG9jYXRpb24pOworCisJCS8qCisJCSAqIElmIHRoZSBjb250 cm9sIGRpcmVjdG9yeSBkb2Vzbid0IGV4aXN0LCB3ZSB3YW50IHRvIHNpbGVudGx5IHJldHVybgor CQkgKiBhbiBlbXB0eSBzZXQuICBBbnkgb3RoZXIgZXJyb3Igd2lsbCBiZSByZXBvcnRlZCBieSBS ZWFkRGlyLgorCQkgKi8KKwkJaWYgKGRpciA9PSBOVUxMICYmIGVycm5vID09IEVOT0VOVCkKKwkJ eworCQkJLyogZG8gbm90aGluZyAqLworCQl9CisJCWVsc2UKIAkJewotCQkJRXh0ZW5zaW9uQ29u dHJvbEZpbGUgKmNvbnRyb2w7Ci0JCQljaGFyCSAgICpleHRuYW1lOworCQkJd2hpbGUgKChkZSA9 IFJlYWREaXIoZGlyLCBsb2NhdGlvbikpICE9IE5VTEwpCisJCQl7CisJCQkJRXh0ZW5zaW9uQ29u dHJvbEZpbGUgKmNvbnRyb2w7CisJCQkJY2hhcgkgICAqZXh0bmFtZTsKIAotCQkJaWYgKCFpc19l eHRlbnNpb25fY29udHJvbF9maWxlbmFtZShkZS0+ZF9uYW1lKSkKLQkJCQljb250aW51ZTsKKwkJ CQlpZiAoIWlzX2V4dGVuc2lvbl9jb250cm9sX2ZpbGVuYW1lKGRlLT5kX25hbWUpKQorCQkJCQlj b250aW51ZTsKIAotCQkJLyogZXh0cmFjdCBleHRlbnNpb24gbmFtZSBmcm9tICduYW1lLmNvbnRy b2wnIGZpbGVuYW1lICovCi0JCQlleHRuYW1lID0gcHN0cmR1cChkZS0+ZF9uYW1lKTsKLQkJCSpz dHJyY2hyKGV4dG5hbWUsICcuJykgPSAnXDAnOworCQkJCS8qIGV4dHJhY3QgZXh0ZW5zaW9uIG5h bWUgZnJvbSAnbmFtZS5jb250cm9sJyBmaWxlbmFtZSAqLworCQkJCWV4dG5hbWUgPSBwc3RyZHVw KGRlLT5kX25hbWUpOworCQkJCSpzdHJyY2hyKGV4dG5hbWUsICcuJykgPSAnXDAnOwogCi0JCQkv KiBpZ25vcmUgaXQgaWYgaXQncyBhbiBhdXhpbGlhcnkgY29udHJvbCBmaWxlICovCi0JCQlpZiAo c3Ryc3RyKGV4dG5hbWUsICItLSIpKQotCQkJCWNvbnRpbnVlOworCQkJCS8qIGlnbm9yZSBpdCBp ZiBpdCdzIGFuIGF1eGlsaWFyeSBjb250cm9sIGZpbGUgKi8KKwkJCQlpZiAoc3Ryc3RyKGV4dG5h bWUsICItLSIpKQorCQkJCQljb250aW51ZTsKIAotCQkJLyogcmVhZCB0aGUgY29udHJvbCBmaWxl ICovCi0JCQljb250cm9sID0gcmVhZF9leHRlbnNpb25fY29udHJvbF9maWxlKGV4dG5hbWUpOwor CQkJCS8qIHJlYWQgdGhlIGNvbnRyb2wgZmlsZSAqLworCQkJCWNvbnRyb2wgPSByZWFkX2V4dGVu c2lvbl9jb250cm9sX2ZpbGUoZXh0bmFtZSk7CiAKLQkJCS8qIHNjYW4gZXh0ZW5zaW9uJ3Mgc2Ny aXB0IGRpcmVjdG9yeSBmb3IgaW5zdGFsbCBzY3JpcHRzICovCi0JCQlnZXRfYXZhaWxhYmxlX3Zl cnNpb25zX2Zvcl9leHRlbnNpb24oY29udHJvbCwgcnNpbmZvLT5zZXRSZXN1bHQsCi0JCQkJCQkJ CQkJCQkgcnNpbmZvLT5zZXREZXNjKTsKLQkJfQorCQkJCS8qIHNjYW4gZXh0ZW5zaW9uJ3Mgc2Ny aXB0IGRpcmVjdG9yeSBmb3IgaW5zdGFsbCBzY3JpcHRzICovCisJCQkJZ2V0X2F2YWlsYWJsZV92 ZXJzaW9uc19mb3JfZXh0ZW5zaW9uKGNvbnRyb2wsIHJzaW5mby0+c2V0UmVzdWx0LAorCQkJCQkJ CQkJCQkJCSByc2luZm8tPnNldERlc2MpOworCQkJfQogCi0JCUZyZWVEaXIoZGlyKTsKKwkJCUZy ZWVEaXIoZGlyKTsKKwkJfQogCX0KIAogCXJldHVybiAoRGF0dW0pIDA7CkBAIC0yMzczLDQ3ICsy NDQ4LDU2IEBAIGJvb2wKIGV4dGVuc2lvbl9maWxlX2V4aXN0cyhjb25zdCBjaGFyICpleHRlbnNp b25OYW1lKQogewogCWJvb2wJCXJlc3VsdCA9IGZhbHNlOwotCWNoYXIJICAgKmxvY2F0aW9uOwor CUxpc3QJICAgKmxvY2F0aW9uczsKKwlMaXN0Q2VsbCAgICpjZWxsOwogCURJUgkJICAgKmRpcjsK IAlzdHJ1Y3QgZGlyZW50ICpkZTsKIAotCWxvY2F0aW9uID0gZ2V0X2V4dGVuc2lvbl9jb250cm9s X2RpcmVjdG9yeSgpOwotCWRpciA9IEFsbG9jYXRlRGlyKGxvY2F0aW9uKTsKKwlsb2NhdGlvbnMg PSBnZXRfZXh0ZW5zaW9uX2NvbnRyb2xfZGlyZWN0b3JpZXMoKTsKIAotCS8qCi0JICogSWYgdGhl IGNvbnRyb2wgZGlyZWN0b3J5IGRvZXNuJ3QgZXhpc3QsIHdlIHdhbnQgdG8gc2lsZW50bHkgcmV0 dXJuCi0JICogZmFsc2UuICBBbnkgb3RoZXIgZXJyb3Igd2lsbCBiZSByZXBvcnRlZCBieSBSZWFk RGlyLgotCSAqLwotCWlmIChkaXIgPT0gTlVMTCAmJiBlcnJubyA9PSBFTk9FTlQpCi0JewotCQkv KiBkbyBub3RoaW5nICovCi0JfQotCWVsc2UKKwlmb3JlYWNoKGNlbGwsIGxvY2F0aW9ucykKIAl7 Ci0JCXdoaWxlICgoZGUgPSBSZWFkRGlyKGRpciwgbG9jYXRpb24pKSAhPSBOVUxMKQorCQljaGFy CSAgICpsb2NhdGlvbiA9IChjaGFyICopIGxmaXJzdChjZWxsKTsKKworCQlkaXIgPSBBbGxvY2F0 ZURpcihsb2NhdGlvbik7CisKKwkJLyoKKwkJICogSWYgdGhlIGNvbnRyb2wgZGlyZWN0b3J5IGRv ZXNuJ3QgZXhpc3QsIHdlIHdhbnQgdG8gc2lsZW50bHkgcmV0dXJuCisJCSAqIGZhbHNlLiAgQW55 IG90aGVyIGVycm9yIHdpbGwgYmUgcmVwb3J0ZWQgYnkgUmVhZERpci4KKwkJICovCisJCWlmIChk aXIgPT0gTlVMTCAmJiBlcnJubyA9PSBFTk9FTlQpCiAJCXsKLQkJCWNoYXIJICAgKmV4dG5hbWU7 CisJCQkvKiBkbyBub3RoaW5nICovCisJCX0KKwkJZWxzZQorCQl7CisJCQl3aGlsZSAoKGRlID0g UmVhZERpcihkaXIsIGxvY2F0aW9uKSkgIT0gTlVMTCkKKwkJCXsKKwkJCQljaGFyCSAgICpleHRu YW1lOwogCi0JCQlpZiAoIWlzX2V4dGVuc2lvbl9jb250cm9sX2ZpbGVuYW1lKGRlLT5kX25hbWUp KQotCQkJCWNvbnRpbnVlOworCQkJCWlmICghaXNfZXh0ZW5zaW9uX2NvbnRyb2xfZmlsZW5hbWUo ZGUtPmRfbmFtZSkpCisJCQkJCWNvbnRpbnVlOwogCi0JCQkvKiBleHRyYWN0IGV4dGVuc2lvbiBu YW1lIGZyb20gJ25hbWUuY29udHJvbCcgZmlsZW5hbWUgKi8KLQkJCWV4dG5hbWUgPSBwc3RyZHVw KGRlLT5kX25hbWUpOwotCQkJKnN0cnJjaHIoZXh0bmFtZSwgJy4nKSA9ICdcMCc7CisJCQkJLyog ZXh0cmFjdCBleHRlbnNpb24gbmFtZSBmcm9tICduYW1lLmNvbnRyb2wnIGZpbGVuYW1lICovCisJ CQkJZXh0bmFtZSA9IHBzdHJkdXAoZGUtPmRfbmFtZSk7CisJCQkJKnN0cnJjaHIoZXh0bmFtZSwg Jy4nKSA9ICdcMCc7CiAKLQkJCS8qIGlnbm9yZSBpdCBpZiBpdCdzIGFuIGF1eGlsaWFyeSBjb250 cm9sIGZpbGUgKi8KLQkJCWlmIChzdHJzdHIoZXh0bmFtZSwgIi0tIikpCi0JCQkJY29udGludWU7 CisJCQkJLyogaWdub3JlIGl0IGlmIGl0J3MgYW4gYXV4aWxpYXJ5IGNvbnRyb2wgZmlsZSAqLwor CQkJCWlmIChzdHJzdHIoZXh0bmFtZSwgIi0tIikpCisJCQkJCWNvbnRpbnVlOwogCi0JCQkvKiBk b25lIGlmIGl0IG1hdGNoZXMgcmVxdWVzdCAqLwotCQkJaWYgKHN0cmNtcChleHRuYW1lLCBleHRl bnNpb25OYW1lKSA9PSAwKQotCQkJewotCQkJCXJlc3VsdCA9IHRydWU7Ci0JCQkJYnJlYWs7CisJ CQkJLyogZG9uZSBpZiBpdCBtYXRjaGVzIHJlcXVlc3QgKi8KKwkJCQlpZiAoc3RyY21wKGV4dG5h bWUsIGV4dGVuc2lvbk5hbWUpID09IDApCisJCQkJeworCQkJCQlyZXN1bHQgPSB0cnVlOworCQkJ CQlicmVhazsKKwkJCQl9CiAJCQl9Ci0JCX0KIAotCQlGcmVlRGlyKGRpcik7CisJCQlGcmVlRGly KGRpcik7CisJCX0KKwkJaWYgKHJlc3VsdCkKKwkJCWJyZWFrOwogCX0KIAogCXJldHVybiByZXN1 bHQ7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9mbWdyL2RmbWdyLmMgYi9zcmMvYmFj a2VuZC91dGlscy9mbWdyL2RmbWdyLmMKaW5kZXggODdiMjMzY2I4ODcuLjQ2YTQ2NzE1ZWM3IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9mbWdyL2RmbWdyLmMKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvZm1nci9kZm1nci5jCkBAIC03MSw4ICs3MSw3IEBAIHN0YXRpYyB2b2lkIGluY29t cGF0aWJsZV9tb2R1bGVfZXJyb3IoY29uc3QgY2hhciAqbGlibmFtZSwKIAkJCQkJCQkJCSAgY29u c3QgUGdfbWFnaWNfc3RydWN0ICptb2R1bGVfbWFnaWNfZGF0YSkgcGdfYXR0cmlidXRlX25vcmV0 dXJuKCk7CiBzdGF0aWMgY2hhciAqZXhwYW5kX2R5bmFtaWNfbGlicmFyeV9uYW1lKGNvbnN0IGNo YXIgKm5hbWUpOwogc3RhdGljIHZvaWQgY2hlY2tfcmVzdHJpY3RlZF9saWJyYXJ5X25hbWUoY29u c3QgY2hhciAqbmFtZSk7Ci1zdGF0aWMgY2hhciAqc3Vic3RpdHV0ZV9saWJwYXRoX21hY3JvKGNv bnN0IGNoYXIgKm5hbWUpOwotc3RhdGljIGNoYXIgKmZpbmRfaW5fZHluYW1pY19saWJwYXRoKGNv bnN0IGNoYXIgKmJhc2VuYW1lKTsKK3N0YXRpYyBjaGFyICpzdWJzdGl0dXRlX3BhdGhfbWFjcm8o Y29uc3QgY2hhciAqc3RyLCBjb25zdCBjaGFyICptYWNybywgY29uc3QgY2hhciAqdmFsdWUpOwog CiAvKiBNYWdpYyBzdHJ1Y3R1cmUgdGhhdCBtb2R1bGUgbmVlZHMgdG8gbWF0Y2ggdG8gYmUgYWNj ZXB0ZWQgKi8KIHN0YXRpYyBjb25zdCBQZ19tYWdpY19zdHJ1Y3QgbWFnaWNfZGF0YSA9IFBHX01P RFVMRV9NQUdJQ19EQVRBOwpAQCAtMzk4LDcgKzM5Nyw3IEBAIGluY29tcGF0aWJsZV9tb2R1bGVf ZXJyb3IoY29uc3QgY2hhciAqbGlibmFtZSwKIC8qCiAgKiBJZiBuYW1lIGNvbnRhaW5zIGEgc2xh c2gsIGNoZWNrIGlmIHRoZSBmaWxlIGV4aXN0cywgaWYgc28gcmV0dXJuCiAgKiB0aGUgbmFtZS4g IEVsc2UgKG5vIHNsYXNoKSB0cnkgdG8gZXhwYW5kIHVzaW5nIHNlYXJjaCBwYXRoIChzZWUKLSAq IGZpbmRfaW5fZHluYW1pY19saWJwYXRoIGJlbG93KTsgaWYgdGhhdCB3b3JrcywgcmV0dXJuIHRo ZSBmdWxseQorICogZmluZF9pbl9wYXRoIGJlbG93KTsgaWYgdGhhdCB3b3JrcywgcmV0dXJuIHRo ZSBmdWxseQogICogZXhwYW5kZWQgZmlsZSBuYW1lLiAgSWYgdGhlIHByZXZpb3VzIGZhaWxlZCwg YXBwZW5kIERMU1VGRklYIGFuZAogICogdHJ5IGFnYWluLiAgSWYgYWxsIGZhaWxzLCBqdXN0IHJl dHVybiB0aGUgb3JpZ2luYWwgbmFtZS4KICAqCkBAIC00MTMsMTcgKzQxMiwyNSBAQCBleHBhbmRf ZHluYW1pY19saWJyYXJ5X25hbWUoY29uc3QgY2hhciAqbmFtZSkKIAogCUFzc2VydChuYW1lKTsK IAorCS8qCisJICogSWYgdGhlIHZhbHVlIHN0YXJ0cyB3aXRoICIkbGliZGlyLyIsIHN0cmlwIHRo YXQuICBUaGlzIGlzIGJlY2F1c2UgbWFueQorCSAqIGV4dGVuc2lvbnMgaGF2ZSBoYXJkY29kZWQg JyRsaWJkaXIvZm9vJyBhcyB0aGVpciBsaWJyYXJ5IG5hbWUsIHdoaWNoCisJICogcHJldmVudHMg dXNpbmcgdGhlIHBhdGguCisJICovCisJaWYgKHN0cm5jbXAobmFtZSwgIiRsaWJkaXIvIiwgOCkg PT0gMCkKKwkJbmFtZSArPSA4OworCiAJaGF2ZV9zbGFzaCA9IChmaXJzdF9kaXJfc2VwYXJhdG9y KG5hbWUpICE9IE5VTEwpOwogCiAJaWYgKCFoYXZlX3NsYXNoKQogCXsKLQkJZnVsbCA9IGZpbmRf aW5fZHluYW1pY19saWJwYXRoKG5hbWUpOworCQlmdWxsID0gZmluZF9pbl9wYXRoKG5hbWUsIER5 bmFtaWNfbGlicmFyeV9wYXRoLCAiZHluYW1pY19saWJyYXJ5X3BhdGgiLCAiJGxpYmRpciIsIHBr Z2xpYl9wYXRoKTsKIAkJaWYgKGZ1bGwpCiAJCQlyZXR1cm4gZnVsbDsKIAl9CiAJZWxzZQogCXsK LQkJZnVsbCA9IHN1YnN0aXR1dGVfbGlicGF0aF9tYWNybyhuYW1lKTsKKwkJZnVsbCA9IHN1YnN0 aXR1dGVfcGF0aF9tYWNybyhuYW1lLCAiJGxpYmRpciIsIHBrZ2xpYl9wYXRoKTsKIAkJaWYgKHBn X2ZpbGVfZXhpc3RzKGZ1bGwpKQogCQkJcmV0dXJuIGZ1bGw7CiAJCXBmcmVlKGZ1bGwpOwpAQCAt NDMzLDE0ICs0NDAsMTQgQEAgZXhwYW5kX2R5bmFtaWNfbGlicmFyeV9uYW1lKGNvbnN0IGNoYXIg Km5hbWUpCiAKIAlpZiAoIWhhdmVfc2xhc2gpCiAJewotCQlmdWxsID0gZmluZF9pbl9keW5hbWlj X2xpYnBhdGgobmV3KTsKKwkJZnVsbCA9IGZpbmRfaW5fcGF0aChuZXcsIER5bmFtaWNfbGlicmFy eV9wYXRoLCAiZHluYW1pY19saWJyYXJ5X3BhdGgiLCAiJGxpYmRpciIsIHBrZ2xpYl9wYXRoKTsK IAkJcGZyZWUobmV3KTsKIAkJaWYgKGZ1bGwpCiAJCQlyZXR1cm4gZnVsbDsKIAl9CiAJZWxzZQog CXsKLQkJZnVsbCA9IHN1YnN0aXR1dGVfbGlicGF0aF9tYWNybyhuZXcpOworCQlmdWxsID0gc3Vi c3RpdHV0ZV9wYXRoX21hY3JvKG5ldywgIiRsaWJkaXIiLCBwa2dsaWJfcGF0aCk7CiAJCXBmcmVl KG5ldyk7CiAJCWlmIChwZ19maWxlX2V4aXN0cyhmdWxsKSkKIAkJCXJldHVybiBmdWxsOwpAQCAt NDc1LDQ3ICs0ODIsNjAgQEAgY2hlY2tfcmVzdHJpY3RlZF9saWJyYXJ5X25hbWUoY29uc3QgY2hh ciAqbmFtZSkKICAqIFJlc3VsdCBpcyBhbHdheXMgZnJlc2hseSBwYWxsb2MnZC4KICAqLwogc3Rh dGljIGNoYXIgKgotc3Vic3RpdHV0ZV9saWJwYXRoX21hY3JvKGNvbnN0IGNoYXIgKm5hbWUpCitz dWJzdGl0dXRlX3BhdGhfbWFjcm8oY29uc3QgY2hhciAqc3RyLCBjb25zdCBjaGFyICptYWNybywg Y29uc3QgY2hhciAqdmFsdWUpCiB7CiAJY29uc3QgY2hhciAqc2VwX3B0cjsKIAotCUFzc2VydChu YW1lICE9IE5VTEwpOworCUFzc2VydChzdHIgIT0gTlVMTCk7CisJQXNzZXJ0KG1hY3JvWzBdID09 ICckJyk7CiAKLQkvKiBDdXJyZW50bHksIHdlIG9ubHkgcmVjb2duaXplICRsaWJkaXIgYXQgdGhl IHN0YXJ0IG9mIHRoZSBzdHJpbmcgKi8KLQlpZiAobmFtZVswXSAhPSAnJCcpCi0JCXJldHVybiBw c3RyZHVwKG5hbWUpOworCS8qIEN1cnJlbnRseSwgd2Ugb25seSByZWNvZ25pemUgJG1hY3JvIGF0 IHRoZSBzdGFydCBvZiB0aGUgc3RyaW5nICovCisJaWYgKHN0clswXSAhPSAnJCcpCisJCXJldHVy biBwc3RyZHVwKHN0cik7CiAKLQlpZiAoKHNlcF9wdHIgPSBmaXJzdF9kaXJfc2VwYXJhdG9yKG5h bWUpKSA9PSBOVUxMKQotCQlzZXBfcHRyID0gbmFtZSArIHN0cmxlbihuYW1lKTsKKwlpZiAoKHNl cF9wdHIgPSBmaXJzdF9kaXJfc2VwYXJhdG9yKHN0cikpID09IE5VTEwpCisJCXNlcF9wdHIgPSBz dHIgKyBzdHJsZW4oc3RyKTsKIAotCWlmIChzdHJsZW4oIiRsaWJkaXIiKSAhPSBzZXBfcHRyIC0g bmFtZSB8fAotCQlzdHJuY21wKG5hbWUsICIkbGliZGlyIiwgc3RybGVuKCIkbGliZGlyIikpICE9 IDApCisJaWYgKHN0cmxlbihtYWNybykgIT0gc2VwX3B0ciAtIHN0ciB8fAorCQlzdHJuY21wKHN0 ciwgbWFjcm8sIHN0cmxlbihtYWNybykpICE9IDApCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVy cmNvZGUoRVJSQ09ERV9JTlZBTElEX05BTUUpLAotCQkJCSBlcnJtc2coImludmFsaWQgbWFjcm8g bmFtZSBpbiBkeW5hbWljIGxpYnJhcnkgcGF0aDogJXMiLAotCQkJCQkJbmFtZSkpKTsKKwkJCQkg ZXJybXNnKCJpbnZhbGlkIG1hY3JvIG5hbWUgaW4gcGF0aDogJXMiLAorCQkJCQkJc3RyKSkpOwog Ci0JcmV0dXJuIHBzcHJpbnRmKCIlcyVzIiwgcGtnbGliX3BhdGgsIHNlcF9wdHIpOworCXJldHVy biBwc3ByaW50ZigiJXMlcyIsIHZhbHVlLCBzZXBfcHRyKTsKIH0KIAogCiAvKgogICogU2VhcmNo IGZvciBhIGZpbGUgY2FsbGVkICdiYXNlbmFtZScgaW4gdGhlIGNvbG9uLXNlcGFyYXRlZCBzZWFy Y2gKLSAqIHBhdGggRHluYW1pY19saWJyYXJ5X3BhdGguICBJZiB0aGUgZmlsZSBpcyBmb3VuZCwg dGhlIGZ1bGwgZmlsZSBuYW1lCisgKiBwYXRoIGdpdmVuLiAgSWYgdGhlIGZpbGUgaXMgZm91bmQs IHRoZSBmdWxsIGZpbGUgbmFtZQogICogaXMgcmV0dXJuZWQgaW4gZnJlc2hseSBwYWxsb2MnZCBt ZW1vcnkuICBJZiB0aGUgZmlsZSBpcyBub3QgZm91bmQsCiAgKiByZXR1cm4gTlVMTC4KKyAqCisg KiBwYXRoX3BhcmFtIGlzIHRoZSBuYW1lIG9mIHRoZSBwYXJhbWV0ZXIgdGhhdCBwYXRoIGNhbWUg ZnJvbSwgZm9yIGVycm9yCisgKiBtZXNzYWdlcy4KKyAqCisgKiBtYWNybyBhbmQgbWFjcm9fdmFs IGFsbG93IHN1YnN0aXR1dGluZyBhIG1hY3JvOyBzZWUKKyAqIHN1YnN0aXR1dGVfcGF0aF9tYWNy bygpLgogICovCi1zdGF0aWMgY2hhciAqCi1maW5kX2luX2R5bmFtaWNfbGlicGF0aChjb25zdCBj aGFyICpiYXNlbmFtZSkKK2NoYXIgKgorZmluZF9pbl9wYXRoKGNvbnN0IGNoYXIgKmJhc2VuYW1l LCBjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICpwYXRoX3BhcmFtLAorCQkJIGNvbnN0IGNo YXIgKm1hY3JvLCBjb25zdCBjaGFyICptYWNyb192YWwpCiB7CiAJY29uc3QgY2hhciAqcDsKIAlz aXplX3QJCWJhc2VsZW47CiAKIAlBc3NlcnQoYmFzZW5hbWUgIT0gTlVMTCk7CiAJQXNzZXJ0KGZp cnN0X2Rpcl9zZXBhcmF0b3IoYmFzZW5hbWUpID09IE5VTEwpOwotCUFzc2VydChEeW5hbWljX2xp YnJhcnlfcGF0aCAhPSBOVUxMKTsKKwlBc3NlcnQocGF0aCAhPSBOVUxMKTsKKwlBc3NlcnQocGF0 aF9wYXJhbSAhPSBOVUxMKTsKKworCXAgPSBwYXRoOwogCi0JcCA9IER5bmFtaWNfbGlicmFyeV9w YXRoOworCS8qCisJICogSWYgdGhlIHBhdGggdmFyaWFibGUgaXMgZW1wdHksIGRvbid0IGRvIGEg cGF0aCBzZWFyY2guCisJICovCiAJaWYgKHN0cmxlbihwKSA9PSAwKQogCQlyZXR1cm4gTlVMTDsK IApAQCAtNTMyLDcgKzU1Miw3IEBAIGZpbmRfaW5fZHluYW1pY19saWJwYXRoKGNvbnN0IGNoYXIg KmJhc2VuYW1lKQogCQlpZiAocGllY2UgPT0gcCkKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShl cnJjb2RlKEVSUkNPREVfSU5WQUxJRF9OQU1FKSwKLQkJCQkJIGVycm1zZygiemVyby1sZW5ndGgg Y29tcG9uZW50IGluIHBhcmFtZXRlciBcImR5bmFtaWNfbGlicmFyeV9wYXRoXCIiKSkpOworCQkJ CQkgZXJybXNnKCJ6ZXJvLWxlbmd0aCBjb21wb25lbnQgaW4gcGFyYW1ldGVyIFwiJXNcIiIsIHBh dGhfcGFyYW0pKSk7CiAKIAkJaWYgKHBpZWNlID09IE5VTEwpCiAJCQlsZW4gPSBzdHJsZW4ocCk7 CkBAIC01NDIsNyArNTYyLDcgQEAgZmluZF9pbl9keW5hbWljX2xpYnBhdGgoY29uc3QgY2hhciAq YmFzZW5hbWUpCiAJCXBpZWNlID0gcGFsbG9jKGxlbiArIDEpOwogCQlzdHJsY3B5KHBpZWNlLCBw LCBsZW4gKyAxKTsKIAotCQltYW5nbGVkID0gc3Vic3RpdHV0ZV9saWJwYXRoX21hY3JvKHBpZWNl KTsKKwkJbWFuZ2xlZCA9IHN1YnN0aXR1dGVfcGF0aF9tYWNybyhwaWVjZSwgbWFjcm8sIG1hY3Jv X3ZhbCk7CiAJCXBmcmVlKHBpZWNlKTsKIAogCQljYW5vbmljYWxpemVfcGF0aChtYW5nbGVkKTsK QEAgLTU1MSwxMyArNTcxLDEzIEBAIGZpbmRfaW5fZHluYW1pY19saWJwYXRoKGNvbnN0IGNoYXIg KmJhc2VuYW1lKQogCQlpZiAoIWlzX2Fic29sdXRlX3BhdGgobWFuZ2xlZCkpCiAJCQllcmVwb3J0 KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfTkFNRSksCi0JCQkJCSBlcnJt c2coImNvbXBvbmVudCBpbiBwYXJhbWV0ZXIgXCJkeW5hbWljX2xpYnJhcnlfcGF0aFwiIGlzIG5v dCBhbiBhYnNvbHV0ZSBwYXRoIikpKTsKKwkJCQkJIGVycm1zZygiY29tcG9uZW50IGluIHBhcmFt ZXRlciBcIiVzXCIgaXMgbm90IGFuIGFic29sdXRlIHBhdGgiLCBwYXRoX3BhcmFtKSkpOwogCiAJ CWZ1bGwgPSBwYWxsb2Moc3RybGVuKG1hbmdsZWQpICsgMSArIGJhc2VsZW4gKyAxKTsKIAkJc3By aW50ZihmdWxsLCAiJXMvJXMiLCBtYW5nbGVkLCBiYXNlbmFtZSk7CiAJCXBmcmVlKG1hbmdsZWQp OwogCi0JCWVsb2coREVCVUczLCAiZmluZF9pbl9keW5hbWljX2xpYnBhdGg6IHRyeWluZyBcIiVz XCIiLCBmdWxsKTsKKwkJZWxvZyhERUJVRzMsICIlczogdHJ5aW5nIFwiJXNcIiIsIF9fZnVuY19f LCBmdWxsKTsKIAogCQlpZiAocGdfZmlsZV9leGlzdHMoZnVsbCkpCiAJCQlyZXR1cm4gZnVsbDsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKaW5kZXggYWQyNWNiYjM5YzUuLmMzNTdhNTMw NGFlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYworKysg Yi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwpAQCAtMzksNiArMzksNyBAQAog I2luY2x1ZGUgImNhdGFsb2cvbmFtZXNwYWNlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9zdG9yYWdl LmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvYXN5bmMuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9leHRl bnNpb24uaCIKICNpbmNsdWRlICJjb21tYW5kcy9ldmVudF90cmlnZ2VyLmgiCiAjaW5jbHVkZSAi Y29tbWFuZHMvdGFibGVzcGFjZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3RyaWdnZXIuaCIKQEAg LTQzMTQsNiArNDMxNSwxOCBAQCBzdHJ1Y3QgY29uZmlnX3N0cmluZyBDb25maWd1cmVOYW1lc1N0 cmluZ1tdID0KIAkJTlVMTCwgTlVMTCwgTlVMTAogCX0sCiAKKwl7CisJCXsiZXh0ZW5zaW9uX2Nv bnRyb2xfcGF0aCIsIFBHQ19TVVNFVCwgQ0xJRU5UX0NPTk5fT1RIRVIsCisJCQlnZXR0ZXh0X25v b3AoIlNldHMgdGhlIHBhdGggZm9yIGV4dGVuc2lvbiBjb250cm9sIGZpbGVzLiIpLAorCQkJZ2V0 dGV4dF9ub29wKCJUaGUgcmVtYWluaW5nIGV4dGVuc2lvbiBzY3JpcHQgYW5kIHNlY29uZGFyeSBj b250cm9sIGZpbGVzIGFyZSB0aGVuIGxvYWRlZCAiCisJCQkJCQkgImZyb20gdGhlIHNhbWUgZGly ZWN0b3J5IHdoZXJlIHRoZSBwcmltYXJ5IGNvbnRyb2wgZmlsZSB3YXMgZm91bmQuIiksCisJCQlH VUNfU1VQRVJVU0VSX09OTFkKKwkJfSwKKwkJJkV4dGVuc2lvbl9jb250cm9sX3BhdGgsCisJCSIk c3lzdGVtIiwKKwkJTlVMTCwgTlVMTCwgTlVMTAorCX0sCisKIAl7CiAJCXsia3JiX3NlcnZlcl9r ZXlmaWxlIiwgUEdDX1NJR0hVUCwgQ09OTl9BVVRIX0FVVEgsCiAJCQlnZXR0ZXh0X25vb3AoIlNl dHMgdGhlIGxvY2F0aW9uIG9mIHRoZSBLZXJiZXJvcyBzZXJ2ZXIga2V5IGZpbGUuIiksCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgYi9z cmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKaW5kZXggNTM2MmZm ODA1MTkuLjI0ZWFlYjNkYzZiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bv c3RncmVzcWwuY29uZi5zYW1wbGUKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jl c3FsLmNvbmYuc2FtcGxlCkBAIC03OTEsNiArNzkxLDcgQEAgYXV0b3ZhY3V1bV93b3JrZXJfc2xv dHMgPSAxNgkjIGF1dG92YWN1dW0gd29ya2VyIHNsb3RzIHRvIGFsbG9jYXRlCiAjIC0gT3RoZXIg RGVmYXVsdHMgLQogCiAjZHluYW1pY19saWJyYXJ5X3BhdGggPSAnJGxpYmRpcicKKyNleHRlbnNp b25fY29udHJvbF9wYXRoID0gJyRzeXN0ZW0nCiAjZ2luX2Z1enp5X3NlYXJjaF9saW1pdCA9IDAK IAogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHRlbnNpb24uaCBiL3NyYy9p bmNsdWRlL2NvbW1hbmRzL2V4dGVuc2lvbi5oCmluZGV4IDBiNjM2NDA1MTIwLi4yNDQxOWJmYjVj OSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXh0ZW5zaW9uLmgKKysrIGIvc3Jj L2luY2x1ZGUvY29tbWFuZHMvZXh0ZW5zaW9uLmgKQEAgLTE3LDYgKzE3LDggQEAKICNpbmNsdWRl ICJjYXRhbG9nL29iamVjdGFkZHJlc3MuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2Vfbm9kZS5o IgogCisvKiBHVUMgKi8KK2V4dGVybiBQR0RMTElNUE9SVCBjaGFyICpFeHRlbnNpb25fY29udHJv bF9wYXRoOwogCiAvKgogICogY3JlYXRpbmdfZXh0ZW5zaW9uIGlzIG9ubHkgdHJ1ZSB3aGlsZSBy dW5uaW5nIGEgQ1JFQVRFIEVYVEVOU0lPTiBvciBBTFRFUgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvZm1nci5oIGIvc3JjL2luY2x1ZGUvZm1nci5oCmluZGV4IGU2MDllYTg3NWE3Li41ODExMzA3 YTgyYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZm1nci5oCisrKyBiL3NyYy9pbmNsdWRlL2Zt Z3IuaApAQCAtNzQwLDYgKzc0MCw4IEBAIGV4dGVybiBib29sIENoZWNrRnVuY3Rpb25WYWxpZGF0 b3JBY2Nlc3MoT2lkIHZhbGlkYXRvck9pZCwgT2lkIGZ1bmN0aW9uT2lkKTsKICAqLwogZXh0ZXJu IFBHRExMSU1QT1JUIGNoYXIgKkR5bmFtaWNfbGlicmFyeV9wYXRoOwogCitleHRlcm4gY2hhciAq ZmluZF9pbl9wYXRoKGNvbnN0IGNoYXIgKmJhc2VuYW1lLCBjb25zdCBjaGFyICpwYXRoLCBjb25z dCBjaGFyICpwYXRoX3BhcmFtLAorCQkJCQkJICBjb25zdCBjaGFyICptYWNybywgY29uc3QgY2hh ciAqbWFjcm9fdmFsKTsKIGV4dGVybiB2b2lkICpsb2FkX2V4dGVybmFsX2Z1bmN0aW9uKGNvbnN0 IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBjaGFyICpmdW5jbmFtZSwKIAkJCQkJCQkJCWJvb2wgc2ln bmFsTm90Rm91bmQsIHZvaWQgKipmaWxlaGFuZGxlKTsKIGV4dGVybiB2b2lkICpsb29rdXBfZXh0 ZXJuYWxfZnVuY3Rpb24odm9pZCAqZmlsZWhhbmRsZSwgY29uc3QgY2hhciAqZnVuY25hbWUpOwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvTWFrZWZpbGUgYi9z cmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy9NYWtlZmlsZQppbmRleCAxZGJlYzE0Y2Jh My4uYTM1OTFiZjNkMmYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNp b25zL01ha2VmaWxlCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL01ha2Vm aWxlCkBAIC0yOCw2ICsyOCw3IEBAIERBVEEgPSB0ZXN0X2V4dDEtLTEuMC5zcWwgdGVzdF9leHQy LS0xLjAuc3FsIHRlc3RfZXh0My0tMS4wLnNxbCBcCiAgICAgICAgdGVzdF9leHRfcmVxX3NjaGVt YTMtLTEuMC5zcWwKIAogUkVHUkVTUyA9IHRlc3RfZXh0ZW5zaW9ucyB0ZXN0X2V4dGRlcGVuZAor VEFQX1RFU1RTID0gMQogCiAjIGZvcmNlIEMgbG9jYWxlIGZvciBvdXRwdXQgc3RhYmlsaXR5CiBO T19MT0NBTEUgPSAxCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9u cy9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL21lc29uLmJ1 aWxkCmluZGV4IGRkN2VjMGNlNTZiLi4zYzdlMzc4YmYzNSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X2V4dGVuc2lvbnMvbWVzb24uYnVpbGQKQEAgLTU3LDQgKzU3LDkgQEAgdGVzdHMgKz0g ewogICAgIF0sCiAgICAgJ3JlZ3Jlc3NfYXJncyc6IFsnLS1uby1sb2NhbGUnXSwKICAgfSwKKyAg J3RhcCc6IHsKKyAgICAndGVzdHMnOiBbCisgICAgICAndC8wMDFfZXh0ZW5zaW9uX2NvbnRyb2xf cGF0aC5wbCcsCisgICAgXSwKKyAgfSwKIH0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMv dGVzdF9leHRlbnNpb25zL3QvMDAxX2V4dGVuc2lvbl9jb250cm9sX3BhdGgucGwgYi9zcmMvdGVz dC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90LzAwMV9leHRlbnNpb25fY29udHJvbF9wYXRoLnBs Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mODU3ZTIxNDBkZgotLS0g L2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3QvMDAxX2V4 dGVuc2lvbl9jb250cm9sX3BhdGgucGwKQEAgLTAsMCArMSw2NyBAQAorIyBDb3B5cmlnaHQgKGMp IDIwMjQtMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKwordXNlIHN0 cmljdDsKK3VzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0 OjpVdGlsczsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFRlc3Q6Ok1vcmU7 CisKK215ICRub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdub2RlJyk7CisK KyRub2RlLT5pbml0OworCisjIENyZWF0ZSBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgZm9yIHRoZSBl eHRlbnNpb24gY29udHJvbCBmaWxlCitteSAkZXh0X2RpciA9IFBvc3RncmVTUUw6OlRlc3Q6OlV0 aWxzOjp0ZW1wZGlyKCk7CitteSAkZXh0X25hbWUgPSAidGVzdF9jdXN0b21fZXh0X3BhdGhzIjsK K215ICRjb250cm9sX2ZpbGUgPSAiJGV4dF9kaXIvJGV4dF9uYW1lLmNvbnRyb2wiOworbXkgJHNx bF9maWxlID0gIiRleHRfZGlyLyRleHRfbmFtZS0tMS4wLnNxbCI7CisKKyMgQ3JlYXRlIC5jb250 cm9sIC5zcWwgZmlsZQorb3BlbiBteSAkY2YsICc+JywgJGNvbnRyb2xfZmlsZSBvciBkaWUgIkNv dWxkIG5vdCBjcmVhdGUgY29udHJvbCBmaWxlOiAkISI7CitwcmludCAkY2YgImNvbW1lbnQgPSAn VGVzdCBleHRlbnNpb25fY29udHJvbF9wYXRoJ1xuIjsKK3ByaW50ICRjZiAiZGVmYXVsdF92ZXJz aW9uID0gJzEuMCdcbiI7CitwcmludCAkY2YgInJlbG9jYXRhYmxlID0gdHJ1ZVxuIjsKK2Nsb3Nl ICRjZjsKKworIyBDcmVhdGUgLS0xLjAuc3FsIGZpbGUKK29wZW4gbXkgJHNxbGYsICc+JywgJHNx bF9maWxlIG9yIGRpZSAiQ291bGQgbm90IGNyZWF0ZSBzcWwgZmlsZTogJCEiOworcHJpbnQgJHNx bGYgIi8qICRzcWxfZmlsZSAqL1xuIjsKK3ByaW50ICRzcWxmICItLSBjb21wbGFpbiBpZiBzY3Jp cHQgaXMgc291cmNlZCBpbiBwc3FsLCByYXRoZXIgdGhhbiB2aWEgQ1JFQVRFIEVYVEVOU0lPTlxu IjsKK3ByaW50ICRzcWxmIHFxJ1xcZWNobyBVc2UgIkNSRUFURSBFWFRFTlNJT04gJGV4dF9uYW1l IiB0byBsb2FkIHRoaXMgZmlsZS4gXFxxdWl0XG4nOworY2xvc2UgJHNxbGY7CisKKyMgVXNlIHRo ZSBjb3JyZWN0IHNlcGFyYXRvciBhbmQgZXNjYXBlIFwgd2hlbiBydW5uaW5nIG9uIFdpbmRvd3Mu CitteSAkc2VwID0gJHdpbmRvd3Nfb3MgPyAiOyIgOiAiOiI7Ciskbm9kZS0+YXBwZW5kX2NvbmYo CisgICAgJ3Bvc3RncmVzcWwuY29uZicsIHFxeworZXh0ZW5zaW9uX2NvbnRyb2xfcGF0aCA9ICdc JHN5c3RlbSRzZXBAe1sgJHdpbmRvd3Nfb3MgPyAoJGV4dF9kaXIgPX4gcy9cXC9cXFxcL2dyKSA6 ICRleHRfZGlyIF19JworfSk7CisKKyMgU3RhcnQgbm9kZQorJG5vZGUtPnN0YXJ0OworCitteSAk ZWNwID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnc2hvdyBleHRlbnNpb25fY29udHJv bF9wYXRoOycpOworCitpcygkZWNwLCAiXCRzeXN0ZW0kc2VwJGV4dF9kaXIiLCAiQ3VzdG9tIGV4 dGVuc2lvbiBjb250cm9sIGRpcmVjdG9yeSBwYXRoIGNvbmZpZ3VyZWQiKTsKKworJG5vZGUtPnNh ZmVfcHNxbCgKKwkncG9zdGdyZXMnLAorCSJDUkVBVEUgRVhURU5TSU9OICRleHRfbmFtZSIpOwor CitteSAkcmV0ID0gJG5vZGUtPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLAorCSJzZWxlY3QgKiBm cm9tIHBnX2F2YWlsYWJsZV9leHRlbnNpb25zIHdoZXJlIG5hbWUgPSAnJGV4dF9uYW1lJyIpOwor aXMoCisJJHJldCwKKwkidGVzdF9jdXN0b21fZXh0X3BhdGhzfDEuMHwxLjB8VGVzdCBleHRlbnNp b25fY29udHJvbF9wYXRoIiwKKwkiRXh0ZW5zaW9uIGlzIGluc3RhbGxlZCBjb3JyZWN0bHkgb24g cGdfYXZhaWxhYmxlX2V4dGVuc2lvbnMiKTsKKworbXkgJHJldDIgPSAkbm9kZS0+c2FmZV9wc3Fs KAorCSdwb3N0Z3JlcycsCisJInNlbGVjdCAqIGZyb20gcGdfYXZhaWxhYmxlX2V4dGVuc2lvbl92 ZXJzaW9ucyB3aGVyZSBuYW1lID0gJyRleHRfbmFtZSciKTsKK2lzKAorCSRyZXQyLAorCSJ0ZXN0 X2N1c3RvbV9leHRfcGF0aHN8MS4wfHR8dHxmfHR8fHxUZXN0IGV4dGVuc2lvbl9jb250cm9sX3Bh dGgiLAorCSJFeHRlbnNpb24gaXMgaW5zdGFsbGVkIGNvcnJlY3RseSBvbiBwZ19hdmFpbGFibGVf ZXh0ZW5zaW9uX3ZlcnNpb25zIik7CisKK2RvbmVfdGVzdGluZygpOwotLSAKMi4zOS41IChBcHBs ZSBHaXQtMTU0KQoK --000000000000c591dc062f7492ca--