Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vTlqW-00AS5m-1D for pgsql-hackers@arkaria.postgresql.org; Thu, 11 Dec 2025 18:57:02 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vTlqS-004xzA-39 for pgsql-hackers@arkaria.postgresql.org; Thu, 11 Dec 2025 18:56:57 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vTlqS-004xz1-0l for pgsql-hackers@lists.postgresql.org; Thu, 11 Dec 2025 18:56:57 +0000 Received: from mail-oa1-x29.google.com ([2001:4860:4864:20::29]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vTlqO-000DEu-34 for pgsql-hackers@lists.postgresql.org; Thu, 11 Dec 2025 18:56:56 +0000 Received: by mail-oa1-x29.google.com with SMTP id 586e51a60fabf-3f5c9275b31so259463fac.0 for ; Thu, 11 Dec 2025 10:56:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1765479410; x=1766084210; darn=lists.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=FokH6G9WzPcWl3Y/TDSKsuTwRW7YFK3iG2ewYPQgjIE=; b=Y8Py3dl2XK7CfLYKdOuSykH6XjNzmadruA9HQKuAz3CPodtGsa59lEUA+F25otkP8x LvOTaW0TGo+fE6Uhj65PnWxzU1lBcyiDE4RAdIEElvJNW7G7Sav2VBGnJd930AWXPfFu XxmDp3lILFsBwTUJ39UaVFYhj1+jJPwJe/CwqFs5C32Z9lVQnGeL0tZds4EY0+CJ2nfC ZwnssY2iwfKbaMTDqYT+kDYDJGXx7HLnZf1+vifX7gpReKwQqF+rCOeN87Y7Q6AAyMbq LU3b9nkLDDh+tKcorf2cAzlZMpNyWW3L55KCvsURVJuHYbQ6l7hdHPFQEyc+sfmFJbgb j0FQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765479410; x=1766084210; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=FokH6G9WzPcWl3Y/TDSKsuTwRW7YFK3iG2ewYPQgjIE=; b=Cggio6MbTTFdmP1YFQ+8CpPO5hdY0KfM/Bfw3LDROutDmqbOkZvjco+wWTu8zCmJeT CvQtS1mQCqeRKCDG1Sb9+pgio/MvA2nHyX3UiJePX87kN2IAEvISeIsV2Aqi+E7a/iFY 54GZvZwEHfGWlQs0wcj3Ro91LqRqAPsv5rjN9PSmimSVrngWQC7O1fwVa48oct4xCJIf OCwqSpSLCgO3KUtjY/anJB/TpDAKS4urI5TMhdJusjU4f4aQ+LgC8Nz+SaCwfjuf1I+s C61ZvdQXp2/k3pNFDC4+LMi1bbHdPdkFwl4fFvuIQiX3D1a2rKhuxHp+xLKH9+m3GmR7 voEw== X-Forwarded-Encrypted: i=1; AJvYcCWKyHBlM1INTv8288BAR22GOTr+MmN+Yr7ZwNUFTgUYVQl6th3jJKHBzMHGrDv56MuB1NneY+2ZS6EOr0IL@lists.postgresql.org X-Gm-Message-State: AOJu0YxUGCOksi9KXeoSnxkMlbuHJsSC+Or1Q+NTaxwXLBG5nM0R5VKc aq6CEUULvIeJ8UJWkQZD/Lg56OBptzpi9ZIOGW1HbR2mus4FDkJAhodxPAyw2hWfeiwA+xn0HS1 m7nVsbj4ku7+xy4Ugz029ZPo/OeXvkTI= X-Gm-Gg: AY/fxX5Y8ycelUkUwKfX0Ykl4vJRCx+2i+d+tGqWfGoCcOL9eN9Ae5HNvpcAoWSvcpd CLho1z1Nhaieh6juMDhHP6vAxSrYkCtBH8kUPNNyXIeS1K78XWMNqkljtp+sVhaObruosGARQ3R +Mw9yeN4ifMFB7o2xpylE4o7Y8icg4v4hw3kTlGvYynU3F+9YfOVjwQLQRhrOGE4kxgErM9hDBB D8NhxnejQbxwD2OHTVphatptEocUaOiutLjmj2LHA4UxbeX9hlk273jnkou/m5oEZtjzVTk9/Iu /NDxy0LH7t4W7ilvoTMG8Fzk6S32agWhsfERbN5cLhUR5eAmBZzMh8+6YK/EBwQ8WQEyTfQi382 St91c X-Google-Smtp-Source: AGHT+IExJe5d/4sLTbDbFDH5lyntXQ7S+YW8kUIIgSyrliZNdQCG823GuWGIzccnpF3H74BS08Q2/RVcSbwpgA0qqUs= X-Received: by 2002:a4a:e841:0:b0:659:9a49:8ead with SMTP id 006d021491bc7-65b2ad28909mr3870866eaf.49.1765479410366; Thu, 11 Dec 2025 10:56:50 -0800 (PST) MIME-Version: 1.0 References: <171085360143.2046436.7217841141682511557.pgcf@coridan.postgresql.org> <2643645f-2a02-43de-9321-c995ab1b7ef8@postgrespro.ru> <57a94d8a-d7b6-4c5e-9001-be1cd403b172@postgrespro.ru> <54414932-9E82-47AA-902B-2DED18F07F64@gmail.com> <3280c458-a886-4c58-8e2b-4d220b73161d@postgrespro.ru> <09414bf8-9326-431c-9422-b13bddf5f554@postgrespro.ru> <29ff27f5-d359-4479-b11c-ce28e525d806@postgrespro.ru> In-Reply-To: From: Alexander Korotkov Date: Thu, 11 Dec 2025 20:56:37 +0200 X-Gm-Features: AQt7F2qBXjTdkXj8uSz-uQPcnUlnO8O8u9IZOcJPBNOLApzdNE1mgBz_u6YePco Message-ID: Subject: Re: Add SPLIT PARTITION/MERGE PARTITIONS commands To: =?UTF-8?Q?St=C3=A9phane_Tachoires?= Cc: Dmitry Koval , pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="0000000000001d74a30645b1b5b7" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000001d74a30645b1b5b7 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Dec 10, 2025 at 10:04=E2=80=AFPM St=C3=A9phane Tachoires wrote: > Patches don't apply anymore. > Could you rebase it please ? > > Thank you so much to all of you for your persistence. Thank you for pointing this. Rebased. ------ Regards, Alexander Korotkov Supabase --0000000000001d74a30645b1b5b7 Content-Type: application/octet-stream; name="v67-0001-Implement-ALTER-TABLE-.-MERGE-PARTITIONS-.-comma.patch" Content-Disposition: attachment; filename="v67-0001-Implement-ALTER-TABLE-.-MERGE-PARTITIONS-.-comma.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj1sujqs0 RnJvbSA4MzVhNWQwYmE0MjIxY2U1NWIxZDBlMjZlMjY3NTZmODQ0M2QyYTEwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBwb3N0Z3Jl c3FsLm9yZz4KRGF0ZTogVHVlLCA5IERlYyAyMDI1IDE3OjA4OjM5ICswMjAwClN1YmplY3Q6IFtQ QVRDSCB2NjcgMS8yXSBJbXBsZW1lbnQgQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMg Li4uCiBjb21tYW5kCgpUaGlzIG5ldyBEREwgY29tbWFuZCBtZXJnZXMgc2V2ZXJhbCBwYXJ0aXRp b25zIGludG8gYSBzaW5nbGUgcGFydGl0aW9uIG9mIHRoZQp0YXJnZXQgdGFibGUuICBUaGUgdGFy Z2V0IHBhcnRpdGlvbiBpcyBjcmVhdGVkIHVzaW5nIHRoZSBuZXcKY3JlYXRlUGFydGl0aW9uVGFi bGUoKSBmdW5jdGlvbiB3aXRoIHRoZSBwYXJlbnQgcGFydGl0aW9uIGFzIHRoZSB0ZW1wbGF0ZS4K ClRoaXMgY29tbWl0IGNvbXByaXNlcyBhIHF1aXRlIG5haXZlIGltcGxlbWVudGF0aW9uIHdoaWNo IHdvcmtzIGluIGEgc2luZ2xlCnByb2Nlc3MgYW5kIGhvbGRzIHRoZSBBQ0NFU1MgRVhDTFVTSVZF IExPQ0sgb24gdGhlIHBhcmVudCB0YWJsZSBkdXJpbmcgYWxsCnRoZSBvcGVyYXRpb25zLCBpbmNs dWRpbmcgdGhlIHR1cGxlIHJvdXRpbmcuICBUaGlzIGlzIHdoeSB0aGlzIG5ldyBEREwKY29tbWFu ZCBjYW4ndCBiZSByZWNvbW1lbmRlZCBmb3IgbGFyZ2UgcGFydGl0aW9uZWQgdGFibGVzIHVuZGVy IGEgaGlnaCBsb2FkLgpIb3dldmVyLCB0aGlzIGltcGxlbWVudGF0aW9uIGNvbWVzIGluIGhhbmR5 IGluIGNlcnRhaW4gY2FzZXMsIGV2ZW4gYXMgaXQgaXMuCkFsc28sIGl0IGNvdWxkIHNlcnZlIGFz IGEgZm91bmRhdGlvbiBmb3IgZnV0dXJlIGltcGxlbWVudGF0aW9ucyB3aXRoIGxlc3MKbG9ja2lu ZyBhbmQgcG9zc2libHkgcGFyYWxsZWxpc20uCgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5l cy9tL2M3M2ExNzQ2LTBjZDAtNmJkZC02YjIzLTNhZTBiN2MwYzU4MiU0MHBvc3RncmVzcHJvLnJ1 CkF1dGhvcjogRG1pdHJ5IEtvdmFsIDxkLmtvdmFsQHBvc3RncmVzcHJvLnJ1PgpDby1hdXRob3Jl ZC1ieTogQWxleGFuZGVyIEtvcm90a292IDxhZWtvcm90a292QGdtYWlsLmNvbT4KQ28tYXV0aG9y ZWQtYnk6IFRlbmRlciBXYW5nIDx0bmRyd2FuZ0BnbWFpbC5jb20+CkNvLWF1dGhvcmVkLWJ5OiBS aWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4KQ28tYXV0aG9yZWQtYnk6IERhZ2Zp bm4gSWxtYXJpIE1hbm5zYWtlciA8aWxtYXJpQGlsbWFyaS5vcmc+CkNvLWF1dGhvcmVkLWJ5OiBG dWppaSBNYXNhbyA8bWFzYW8uZnVqaWlAZ21haWwuY29tPgpDby1hdXRob3JlZC1ieTogSmlhbiBI ZSA8amlhbi51bml2ZXJzYWxpdHlAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogTWF0dGhpYXMgdmFu IGRlIE1lZW50IDxib2VrZXd1cm0rcG9zdGdyZXNAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogTGF1 cmVueiBBbGJlIDxsYXVyZW56LmFsYmVAY3liZXJ0ZWMuYXQ+ClJldmlld2VkLWJ5OiBaaGlob25n IFl1IDx6eXVAeXVnYWJ5dGUuY29tPgpSZXZpZXdlZC1ieTogSnVzdGluIFByeXpieSA8cHJ5emJ5 QHRlbHNhc29mdC5jb20+ClJldmlld2VkLWJ5OiBBbHZhcm8gSGVycmVyYSA8YWx2aGVycmVAYWx2 aC5uby1pcC5vcmc+ClJldmlld2VkLWJ5OiBSb2JlcnQgSGFhcyA8cmhhYXNAcG9zdGdyZXNxbC5v cmc+ClJldmlld2VkLWJ5OiBTdGVwaGFuZSBUYWNob2lyZXMgPHN0ZXBoYW5lLnRhY2hvaXJlc0Bn bWFpbC5jb20+ClJldmlld2VkLWJ5OiBKaWFuIEhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5j b20+ClJldmlld2VkLWJ5OiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFla29yb3Rrb3ZAZ21haWwuY29t PgpSZXZpZXdlZC1ieTogUGF2ZWwgQm9yaXNvdiA8cGFzaGtpbi5lbGZlQGdtYWlsLmNvbT4KUmV2 aWV3ZWQtYnk6IE1hc2FoaWtvIFNhd2FkYSA8c2F3YWRhLm1zaGtAZ21haWwuY29tPgpSZXZpZXdl ZC1ieTogQWxleGFuZGVyIExha2hpbiA8ZXhjbHVzaW9uQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6 IEt5b3Rhcm8gSG9yaWd1Y2hpIDxob3Jpa3lvdGEubnR0QGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6 IERhbmllbCBHdXN0YWZzc29uIDxkZ3VzdGFmc3NvbkBwb3N0Z3Jlc3FsLm9yZz4KUmV2aWV3ZWQt Ynk6IFRvbSBMYW5lIDx0Z2xAc3NzLnBnaC5wYS51cz4KUmV2aWV3ZWQtYnk6IE5vYWggTWlzY2gg PG5vYWhAbGVhZGJvYXQuY29tPgotLS0KIGRvYy9zcmMvc2dtbC9kZGwuc2dtbCAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAgMTkgKwogZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21s ICAgICAgICAgICAgIHwgIDEyNyArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMg ICAgICAgICAgICAgIHwgICA1NCArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19jb25zdHJhaW50 LmMgICAgICAgICAgIHwgICAgMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMg ICAgICAgICAgICAgIHwgIDg5NCArKysrKysrKysrKysrLQogc3JjL2JhY2tlbmQvcGFyc2VyL2dy YW0ueSAgICAgICAgICAgICAgICAgICAgIHwgICAyMiArLQogc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX3V0aWxjbWQuYyAgICAgICAgICAgIHwgIDE1MiArKy0KIHNyYy9iYWNrZW5kL3BhcnRpdGlv bmluZy9wYXJ0Ym91bmRzLmMgICAgICAgICB8ICAxOTYgKysrCiBzcmMvYmluL3BzcWwvdGFiLWNv bXBsZXRlLmluLmMgICAgICAgICAgICAgICAgfCAgIDEwICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cv ZGVwZW5kZW5jeS5oICAgICAgICAgICAgICB8ICAgIDIgKwogc3JjL2luY2x1ZGUvbm9kZXMvcGFy c2Vub2Rlcy5oICAgICAgICAgICAgICAgIHwgICAgOCArLQogc3JjL2luY2x1ZGUvcGFyc2VyL2t3 bGlzdC5oICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBzcmMvaW5jbHVkZS9wYXJ0aXRpb25p bmcvcGFydGJvdW5kcy5oICAgICAgICAgfCAgICA2ICsKIC4uLi9pc29sYXRpb24vZXhwZWN0ZWQv cGFydGl0aW9uLW1lcmdlLm91dCAgICB8ICAyNDMgKysrKwogc3JjL3Rlc3QvaXNvbGF0aW9uL2lz b2xhdGlvbl9zY2hlZHVsZSAgICAgICAgIHwgICAgMSArCiBzcmMvdGVzdC9pc29sYXRpb24vc3Bl Y3MvcGFydGl0aW9uLW1lcmdlLnNwZWMgfCAgIDYyICsKIC4uLi90ZXN0X2RkbF9kZXBhcnNlL2V4 cGVjdGVkL2FsdGVyX3RhYmxlLm91dCB8ICAgMjQgKwogLi4uL3Rlc3RfZGRsX2RlcGFyc2Uvc3Fs L2FsdGVyX3RhYmxlLnNxbCAgICAgIHwgICAxOSArCiAuLi4vdGVzdF9kZGxfZGVwYXJzZS90ZXN0 X2RkbF9kZXBhcnNlLmMgICAgICAgfCAgICAzICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv cGFydGl0aW9uX21lcmdlLm91dCB8IDEwOTcgKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3Jl Z3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgICAgICAgICAgICB8ICAgIDIgKy0KIHNyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3BhcnRpdGlvbl9tZXJnZS5zcWwgICAgICB8ICA3OTEgKysrKysrKysrKysrCiAy MiBmaWxlcyBjaGFuZ2VkLCAzNzAzIGluc2VydGlvbnMoKyksIDMyIGRlbGV0aW9ucygtKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9wYXJ0aXRpb24tbWVy Z2Uub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3BhcnRp dGlvbi1tZXJnZS5zcGVjCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9wYXJ0aXRpb25fbWVyZ2Uub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVn cmVzcy9zcWwvcGFydGl0aW9uX21lcmdlLnNxbAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9k ZGwuc2dtbCBiL2RvYy9zcmMvc2dtbC9kZGwuc2dtbAppbmRleCAwOWFkODQwMGZkMC4uN2I5MDc4 OWY4N2MgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9kZGwuc2dtbAorKysgYi9kb2Mvc3JjL3Nn bWwvZGRsLnNnbWwKQEAgLTQ3NDMsNiArNDc0MywyNSBAQCBBTFRFUiBUQUJMRSBtZWFzdXJlbWVu dF95MjAwNm0wMiBBREQgVU5JUVVFIChjaXR5X2lkLCBsb2dkYXRlKTsKIEFMVEVSIElOREVYIG1l YXN1cmVtZW50X2NpdHlfaWRfbG9nZGF0ZV9rZXkKICAgICBBVFRBQ0ggUEFSVElUSU9OIG1lYXN1 cmVtZW50X3kyMDA2bTAyX2NpdHlfaWRfbG9nZGF0ZV9rZXk7CiAuLi4KKzwvcHJvZ3JhbWxpc3Rp bmc+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgIFRoZXJlIGlzIGFsc28gYW4gb3B0 aW9uIGZvciBtZXJnaW5nIG11bHRpcGxlIHRhYmxlIHBhcnRpdGlvbnMgaW50bworICAgICBhIHNp bmdsZSBwYXJ0aXRpb24gdXNpbmcgdGhlCisgICAgIDxsaW5rIGxpbmtlbmQ9InNxbC1hbHRlcnRh YmxlLW1lcmdlLXBhcnRpdGlvbnMiPjxjb21tYW5kPkFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJU SVRJT05TPC9jb21tYW5kPjwvbGluaz4uCisgICAgIFRoaXMgZmVhdHVyZSBzaW1wbGlmaWVzIHRo ZSBtYW5hZ2VtZW50IG9mIHBhcnRpdGlvbmVkIHRhYmxlcyBieSBhbGxvd2luZworICAgICB1c2Vy cyB0byBjb21iaW5lIHBhcnRpdGlvbnMgdGhhdCBhcmUgbm8gbG9uZ2VyIG5lZWRlZCBhcworICAg ICBzZXBhcmF0ZSBlbnRpdGllcy4gIEl0J3MgaW1wb3J0YW50IHRvIG5vdGUgdGhhdCB0aGlzIG9w ZXJhdGlvbiBpcyBub3QKKyAgICAgc3VwcG9ydGVkIGZvciBoYXNoLXBhcnRpdGlvbmVkIHRhYmxl cyBhbmQgYWNxdWlyZXMgYW4KKyAgICAgPGxpdGVyYWw+QUNDRVNTIEVYQ0xVU0lWRTwvbGl0ZXJh bD4gbG9jaywgd2hpY2ggY291bGQgaW1wYWN0IGhpZ2gtbG9hZAorICAgICBzeXN0ZW1zIGR1ZSB0 byB0aGUgbG9jaydzIHJlc3RyaWN0aXZlIG5hdHVyZS4gIEZvciBleGFtcGxlLCB3ZSBjYW4KKyAg ICAgbWVyZ2UgdGhyZWUgbW9udGhseSBwYXJ0aXRpb25zIGludG8gb25lIHF1YXJ0ZXIgcGFydGl0 aW9uOgorPHByb2dyYW1saXN0aW5nPgorQUxURVIgVEFCTEUgbWVhc3VyZW1lbnQKKyAgICBNRVJH RSBQQVJUSVRJT05TIChtZWFzdXJlbWVudF95MjAwNm0wMSwKKyAgICAgICAgICAgICAgICAgICAg ICBtZWFzdXJlbWVudF95MjAwNm0wMiwKKyAgICAgICAgICAgICAgICAgICAgICBtZWFzdXJlbWVu dF95MjAwNm0wMykgSU5UTyBtZWFzdXJlbWVudF95MjAwNnExOwogPC9wcm9ncmFtbGlzdGluZz4K ICAgICA8L3BhcmE+CiAgICA8L3NlY3QzPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9h bHRlcl90YWJsZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sCmluZGV4 IDlkMjNhZDVhMGZiLi41Y2RhMWM5NGFkYiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9h bHRlcl90YWJsZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbApA QCAtMzcsNiArMzcsOCBAQCBBTFRFUiBUQUJMRSBbIElGIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KICAgICBBVFRBQ0ggUEFSVElUSU9O IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFi bGU+IHsgRk9SIFZBTFVFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9u X2JvdW5kX3NwZWM8L3JlcGxhY2VhYmxlPiB8IERFRkFVTFQgfQogQUxURVIgVEFCTEUgWyBJRiBF WElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+ CiAgICAgREVUQUNIIFBBUlRJVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFy dGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPiBbIENPTkNVUlJFTlRMWSB8IEZJTkFMSVpFIF0KK0FM VEVSIFRBQkxFIFsgSUYgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5h bWU8L3JlcGxhY2VhYmxlPgorICAgIE1FUkdFIFBBUlRJVElPTlMgKDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxlPiwgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+IFssIC4uLl0p IElOVE8gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBs YWNlYWJsZT4KIAogPHBocmFzZT53aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ YWN0aW9uPC9yZXBsYWNlYWJsZT4gaXMgb25lIG9mOjwvcGhyYXNlPgogCkBAIC0xMTU3LDE4ICsx MTU5LDExNyBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgIDwvbGlzdGl0ZW0+CiAgICA8 L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWFsdGVydGFibGUtbWVy Z2UtcGFydGl0aW9ucyI+CisgICAgPHRlcm0+PGxpdGVyYWw+TUVSR0UgUEFSVElUSU9OUyAoPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwvcmVwbGFjZWFibGU+ LCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUyPC9yZXBsYWNl YWJsZT4gWywgLi4uXSkgSU5UTyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0 aW9uX25hbWU8L3JlcGxhY2VhYmxlPjwvbGl0ZXJhbD48L3Rlcm0+CisKKyAgICA8bGlzdGl0ZW0+ CisgICAgIDxwYXJhPgorICAgICAgVGhpcyBmb3JtIG1lcmdlcyBzZXZlcmFsIHBhcnRpdGlvbnMg b2YgdGhlIHRhcmdldCB0YWJsZSBpbnRvIGEgbmV3IHBhcnRpdGlvbi4KKyAgICAgIEhhc2gtcGFy dGl0aW9uZWQgdGFyZ2V0IHRhYmxlIGlzIG5vdCBzdXBwb3J0ZWQuCisgICAgICBPbmx5IHNpbXBs ZSwgbm9uLXBhcnRpdGlvbmVkIHBhcnRpdGlvbnMgY2FuIGJlIG1lcmdlZC4KKyAgICAgIFRoZSBu ZXcgcGFydGl0aW9uICg8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25h bWU8L3JlcGxhY2VhYmxlPikKKyAgICAgIGNhbiBoYXZlIHRoZSBzYW1lIG5hbWUgYXMgb25lIG9m IHRoZSBtZXJnZWQgcGFydGl0aW9ucworICAgICAgKDxsaXRlcmFsPjxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxlPiwKKyAgICAgIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPiBb LCAuLi5dPC9saXRlcmFsPikuCisgICAgIDwvcGFyYT4KKworICAgICA8cGFyYT4KKyAgICAgIElm IHRoZSA8bGl0ZXJhbD5ERUZBVUxUPC9saXRlcmFsPiBwYXJ0aXRpb24gaXMgbm90IGluIHRoZQor ICAgICAgbGlzdCBvZiBtZXJnZWQgcGFydGl0aW9uczoKKyAgICAgIDxpdGVtaXplZGxpc3Q+Cisg ICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIEZvciByYW5nZS1wYXJ0 aXRpb25lZCB0YWJsZXMsIHRoZSByYW5nZXMgb2YgbWVyZ2VkIHBhcnRpdGlvbnMKKyAgICAgICAg IG11c3QgYmUgYWRqYWNlbnQgaW4gb3JkZXIgdG8gYmUgbWVyZ2VkLgorICAgICAgICAgVGhlIHBh cnRpdGlvbiBib3VuZHMgb2YgbWVyZ2VkIHBhcnRpdGlvbnMgYXJlIGNvbWJpbmVkIHRvIGZvcm0g dGhlIG5ldyBwYXJ0aXRpb24gYm91bmQgZm9yCisgICAgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPi4KKyAgICAgICAgPC9wYXJh PgorICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4K KyAgICAgICAgIEZvciBsaXN0LXBhcnRpdGlvbmVkIHRhYmxlcywgdGhlIHBhcnRpdGlvbiBib3Vu ZHMgb2YKKyAgICAgICAgIG1lcmdlZCBwYXJ0aXRpb25zIGFyZSBjb21iaW5lZCB0byBmb3JtIHRo ZSBuZXcgcGFydGl0aW9uIGJvdW5kIGZvcgorICAgICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4uCisgICAgICAgIDwvcGFyYT4K KyAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICBJZiB0aGUg PGxpdGVyYWw+REVGQVVMVDwvbGl0ZXJhbD4gcGFydGl0aW9uIGlzIGluIHRoZSBsaXN0IG9mIG1l cmdlZCBwYXJ0aXRpb25zOgorICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICA8bGlzdGl0ZW0+ CisgICAgICAgIDxwYXJhPgorICAgICAgICAgVGhlIHBhcnRpdGlvbiA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgd2ls bCBiZSB0aGUgbmV3IDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+IHBhcnRpdGlvbiBvZiB0aGUg dGFyZ2V0IHRhYmxlLgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAg ICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgVGhlIHBhcnRpdGlvbiBib3Vu ZCBzcGVjaWZpY2F0aW9ucyBmb3IgbWVyZ2VkIHBhcnRpdGlvbnMgY2FuIGJlIGFyYml0cmFyeS4K KyAgICAgICAgPC9wYXJhPgorICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L2l0ZW1pemVkbGlz dD4KKyAgICAgPC9wYXJhPgorICAgICA8cGFyYT4KKyAgICAgIEFsbCBtZXJnZWQgcGFydGl0aW9u cyBtdXN0IGhhdmUgdGhlIHNhbWUgb3duZXIuCisgICAgICBUaGUgb3duZXIgb2YgbWVyZ2VkIHBh cnRpdGlvbnMgd2lsbCBiZSB0aGUgb3duZXIgb2YgdGhlIG5ldyBwYXJ0aXRpb24uCisgICAgICBJ dCBpcyB0aGUgdXNlcidzIHJlc3BvbnNpYmlsaXR5IHRvIHNldHVwIDxhY3JvbnltPkFDTDwvYWNy b255bT4gb24KKyAgICAgIHRoZSBuZXcgcGFydGl0aW9uLgorICAgICA8L3BhcmE+CisKKyAgICAg PHBhcmE+CisgICAgICAgPGNvbW1hbmQ+QUxURVIgVEFCTEUgTUVSR0UgUEFSVElUSU9OPC9jb21t YW5kPiB1c2VzIHRoZSBwYXJ0aXRpb25lZAorICAgICAgIHRhYmxlIGl0c2VsZiBhcyB0aGUgdGVt cGxhdGUgdG8gY29uc3RydWN0IHRoZSBuZXcgcGFydGl0aW9uLgorICAgICAgIFRoZSBuZXcgcGFy dGl0aW9uIHdpbGwgaW5oZXJpdCB0aGUgc2FtZSB0YWJsZSBhY2Nlc3MgbWV0aG9kLCBwZXJzaXN0 ZW5jZQorICAgICAgIHR5cGUsIGFuZCB0YWJsZXNwYWNlIGFzIHRoZSBwYXJ0aXRpb25lZCB0YWJs ZS4KKworICAgICAgIENvbnN0cmFpbnRzLCBjb2x1bW4gZGVmYXVsdHMsIGNvbHVtbiBnZW5lcmF0 aW9uIGV4cHJlc3Npb25zLCBpZGVudGl0eQorICAgICAgIGNvbHVtbnMsIGluZGV4ZXMsIGFuZCB0 cmlnZ2VycyBhcmUgY29waWVkIGZyb20gdGhlIHBhcnRpdGlvbmVkIHRhYmxlIHRvCisgICAgICAg dGhlIG5ldyBwYXJ0aXRpb24uICBCdXQgZXh0ZW5kZWQgc3RhdGlzdGljcywgc2VjdXJpdHkgcG9s aWNpZXMsIGV0YywKKyAgICAgICB3b24ndCBiZSBjb3BpZWQgZnJvbSB0aGUgcGFydGl0aW9uZWQg dGFibGUuCisgICAgICAgSW5kZXhlcyBhbmQgaWRlbnRpdHkgY29sdW1ucyBjb3BpZWQgZnJvbSB0 aGUgcGFydGl0aW9uZWQgdGFibGUgd2lsbCBiZQorICAgICAgIGNyZWF0ZWQgYWZ0ZXJ3YXJkLCBv bmNlIHRoZSBkYXRhIGhhcyBiZWVuIG1vdmVkIGludG8gdGhlIG5ldyBwYXJ0aXRpb24uCisgICAg IDwvcGFyYT4KKworICAgICA8cGFyYT4KKyAgICAgIFdoZW4gcGFydGl0aW9ucyBhcmUgbWVyZ2Vk LCBhbnkgb2JqZWN0cyBkZXBlbmRpbmcgb24gdGhpcyBwYXJ0aXRpb24sCisgICAgICBzdWNoIGFz IGNvbnN0cmFpbnRzLCB0cmlnZ2VycywgZXh0ZW5kZWQgc3RhdGlzdGljcywgZXRjLCB3aWxsIGJl CisgICAgICBkcm9wcGVkLgorICAgICAgRXZlbnR1YWxseSwgd2Ugd2lsbCBkcm9wIGFsbCB0aGUg bWVyZ2VkIHBhcnRpdGlvbnMKKyAgICAgICh1c2luZyA8bGl0ZXJhbD5SRVNUUklDVDwvbGl0ZXJh bD4gbW9kZSkgdG9vOyAgdGhlcmVmb3JlLCBpZiBhbnkgb2JqZWN0cworICAgICAgYXJlIHN0aWxs IGRlcGVuZGVudCBvbiB0aGVtLAorICAgICAgPGNvbW1hbmQ+QUxURVIgVEFCTEUgTUVSR0UgUEFS VElUSU9OPC9jb21tYW5kPiB3b3VsZCBmYWlsLgorICAgICAgKHNlZSA8eHJlZiBsaW5rZW5kPSJk ZGwtZGVwZW5kIi8+KS4KKyAgICAgPC9wYXJhPgorCisgICAgIDxub3RlPgorICAgICAgPHBhcmE+ CisgICAgICAgTWVyZ2luZyBwYXJ0aXRpb25zIGFjcXVpcmVzIGFuIDxsaXRlcmFsPkFDQ0VTUyBF WENMVVNJVkU8L2xpdGVyYWw+IGxvY2sgb24KKyAgICAgICB0aGUgcGFyZW50IHRhYmxlLCBpbiBh ZGRpdGlvbiB0byB0aGUgPGxpdGVyYWw+QUNDRVNTIEVYQ0xVU0lWRTwvbGl0ZXJhbD4KKyAgICAg ICBsb2NrcyBvbiB0aGUgdGFibGVzIGJlaW5nIG1lcmdlZCBhbmQgb24gdGhlIGRlZmF1bHQgcGFy dGl0aW9uIChpZiBhbnkpLgorICAgICAgPC9wYXJhPgorICAgICA8L25vdGU+CisgICAgIDxub3Rl PgorICAgICAgPHBhcmE+CisgICAgICAgPGNvbW1hbmQ+QUxURVIgVEFCTEUgTUVSR0UgUEFSVElU SU9OUzwvY29tbWFuZD4gY3JlYXRlcyBhIG5ldyBwYXJ0aXRpb24gYW5kCisgICAgICAgbW92ZXMg ZGF0YSBmcm9tIGFsbCBtZXJnaW5nIHBhcnRpdGlvbnMgaW50byBpdCwgd2hpY2ggY2FuIHRha2Ug YSBsb25nIHRpbWUuCisgICAgICAgU28gaXQgaXMgbm90IHJlY29tbWVuZGVkIHRvIHVzZSB0aGUg Y29tbWFuZCB0byBtZXJnZSB2ZXJ5IGJpZyBwYXJ0aXRpb25zCisgICAgICAgd2l0aCBzbWFsbCBv bmVzLgorICAgICAgPC9wYXJhPgorICAgICA8L25vdGU+CisgICAgPC9saXN0aXRlbT4KKyAgIDwv dmFybGlzdGVudHJ5PgorCiAgIDwvdmFyaWFibGVsaXN0PgogICA8L3BhcmE+CiAKICAgPHBhcmE+ CiAgICBBbGwgdGhlIGZvcm1zIG9mIDxjb21tYW5kPkFMVEVSIFRBQkxFPC9jb21tYW5kPiB0aGF0 IGFjdCBvbiBhIHNpbmdsZSB0YWJsZSwKICAgIGV4Y2VwdCA8bGl0ZXJhbD5SRU5BTUU8L2xpdGVy YWw+LCA8bGl0ZXJhbD5TRVQgU0NIRU1BPC9saXRlcmFsPiwKLSAgIDxsaXRlcmFsPkFUVEFDSCBQ QVJUSVRJT048L2xpdGVyYWw+LCBhbmQKLSAgIDxsaXRlcmFsPkRFVEFDSCBQQVJUSVRJT048L2xp dGVyYWw+IGNhbiBiZSBjb21iaW5lZCBpbnRvCisgICA8bGl0ZXJhbD5BVFRBQ0ggUEFSVElUSU9O PC9saXRlcmFsPiwgPGxpdGVyYWw+REVUQUNIIFBBUlRJVElPTjwvbGl0ZXJhbD4sCisgICBhbmQg PGxpdGVyYWw+TUVSR0UgUEFSVElUSU9OUzwvbGl0ZXJhbD4sIGNhbiBiZSBjb21iaW5lZCBpbnRv CiAgICBhIGxpc3Qgb2YgbXVsdGlwbGUgYWx0ZXJhdGlvbnMgdG8gYmUgYXBwbGllZCB0b2dldGhl ci4gIEZvciBleGFtcGxlLCBpdAogICAgaXMgcG9zc2libGUgdG8gYWRkIHNldmVyYWwgY29sdW1u cyBhbmQvb3IgYWx0ZXIgdGhlIHR5cGUgb2Ygc2V2ZXJhbAogICAgY29sdW1ucyBpbiBhIHNpbmds ZSBjb21tYW5kLiAgVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIHdpdGggbGFyZ2UKLSAgIHRh Ymxlcywgc2luY2Ugb25seSBvbmUgcGFzcyBvdmVyIHRoZSB0YWJsZSBuZWVkIGJlIG1hZGUuCisg ICB0YWJsZXMsIHNpbmNlIG9ubHkgb25lIHBhc3Mgb3ZlciB0aGUgdGFibGUgbmVlZHMgdG8gYmUg bWFkZS4KICAgPC9wYXJhPgogCiAgIDxwYXJhPgpAQCAtMTQwNyw3ICsxNTA4LDE4IEBAIFdJVEgg KCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8 L3JlcGxhY2VhYmxlPiwgUkVNCiAgICAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPjwvdGVybT4KICAgICAgIDxsaXN0aXRl bT4KICAgICAgICA8cGFyYT4KLSAgICAgICAgVGhlIG5hbWUgb2YgdGhlIHRhYmxlIHRvIGF0dGFj aCBhcyBhIG5ldyBwYXJ0aXRpb24gb3IgdG8gZGV0YWNoIGZyb20gdGhpcyB0YWJsZS4KKyAgICAg ICAgVGhlIG5hbWUgb2YgdGhlIHRhYmxlIHRvIGF0dGFjaCBhcyBhIG5ldyBwYXJ0aXRpb24gb3Ig dG8gZGV0YWNoIGZyb20gdGhpcyB0YWJsZSwKKyAgICAgICAgb3IgdGhlIG5hbWUgb2YgdGhlIG5l dyBtZXJnZWQgcGFydGl0aW9uLgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+Cisg ICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgIDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1hbHRlcnRh YmxlLXBhcm1zLXBhcnRpdGlvbi1uYW1lMSI+CisgICAgICA8dGVybT48cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUxPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAg ICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUyPC9y ZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAg ICAgIFRoZSBuYW1lcyBvZiB0aGUgdGFibGVzIGJlaW5nIG1lcmdlZCBpbnRvIHRoZSBuZXcgcGFy dGl0aW9uLgogICAgICAgIDwvcGFyYT4KICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlz dGVudHJ5PgpAQCAtMTg0MCw2ICsxOTUyLDEzIEBAIEFMVEVSIFRBQkxFIG1lYXN1cmVtZW50CiAg ICAgREVUQUNIIFBBUlRJVElPTiBtZWFzdXJlbWVudF95MjAxNW0xMjsKIDwvcHJvZ3JhbWxpc3Rp bmc+PC9wYXJhPgogCisgIDxwYXJhPgorICAgVG8gbWVyZ2Ugc2V2ZXJhbCBwYXJ0aXRpb25zIGlu dG8gb25lIHBhcnRpdGlvbiBvZiB0aGUgdGFyZ2V0IHRhYmxlOgorPHByb2dyYW1saXN0aW5nPgor QUxURVIgVEFCTEUgc2FsZXNfbGlzdCBNRVJHRSBQQVJUSVRJT05TIChzYWxlc193ZXN0LCBzYWxl c19lYXN0LCBzYWxlc19jZW50cmFsKQorICAgIElOVE8gc2FsZXNfYWxsOworPC9wcm9ncmFtbGlz dGluZz48L3BhcmE+CisKICA8L3JlZnNlY3QxPgogCiAgPHJlZnNlY3QxPgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2Rl cGVuZGVuY3kuYwppbmRleCA4MzhlZDI2ZDZiOS4uNzQ4OWJiZDVmYjMgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cv ZGVwZW5kZW5jeS5jCkBAIC0zMjEsMTMgKzMyMSw2MyBAQCBwZXJmb3JtRGVsZXRpb24oY29uc3Qg T2JqZWN0QWRkcmVzcyAqb2JqZWN0LAogfQogCiAvKgotICogcGVyZm9ybU11bHRpcGxlRGVsZXRp b25zOiBTaW1pbGFyIHRvIHBlcmZvcm1EZWxldGlvbiwgYnV0IGFjdCBvbiBtdWx0aXBsZQorICog cGVyZm9ybURlbGV0aW9uQ2hlY2s6IENoZWNrIHdoZXRoZXIgYSBzcGVjaWZpYyBvYmplY3QgY2Fu IGJlIHNhZmVseSBkZWxldGVkLgorICogVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBwZXJmb3JtIGFu eSBkZWxldGlvbjsgaW5zdGVhZCwgaXQgcmFpc2VzIGFuIGVycm9yCisgKiBpZiB0aGUgb2JqZWN0 IGNhbm5vdCBiZSBkZWxldGVkIGR1ZSB0byBleGlzdGluZyBkZXBlbmRlbmNpZXMuCisgKgorICog SXQgY2FuIGJlIHVzZWZ1bCB3aGVuIHlvdSBuZWVkIHRvIGRlbGV0ZSBzb21lIG9iamVjdHMgbGF0 ZXIuICBTZWUgY29tbWVudHMKKyAqIGluIHBlcmZvcm1EZWxldGlvbiB0b28uCisgKiBUaGUgYmVo YXZpb3IgbXVzdCBiZSBzcGVjaWZpZWQgYXMgRFJPUF9SRVNUUklDVC4KKyAqLwordm9pZAorcGVy Zm9ybURlbGV0aW9uQ2hlY2soY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LAorCQkJCQkgRHJv cEJlaGF2aW9yIGJlaGF2aW9yLCBpbnQgZmxhZ3MpCit7CisJUmVsYXRpb24JZGVwUmVsOworCU9i amVjdEFkZHJlc3NlcyAqdGFyZ2V0T2JqZWN0czsKKworCUFzc2VydChiZWhhdmlvciA9PSBEUk9Q X1JFU1RSSUNUKTsKKworCWRlcFJlbCA9IHRhYmxlX29wZW4oRGVwZW5kUmVsYXRpb25JZCwgUm93 RXhjbHVzaXZlTG9jayk7CisKKwlBY3F1aXJlRGVsZXRpb25Mb2NrKG9iamVjdCwgMCk7CisKKwkv KgorCSAqIENvbnN0cnVjdCBhIGxpc3Qgb2Ygb2JqZWN0cyB3ZSB3YW50IHRvIGRlbGV0ZSBsYXRl ciAoaWUsIHRoZSBnaXZlbgorCSAqIG9iamVjdCBwbHVzIGV2ZXJ5dGhpbmcgZGlyZWN0bHkgb3Ig aW5kaXJlY3RseSBkZXBlbmRlbnQgb24gaXQpLgorCSAqLworCXRhcmdldE9iamVjdHMgPSBuZXdf b2JqZWN0X2FkZHJlc3NlcygpOworCisJZmluZERlcGVuZGVudE9iamVjdHMob2JqZWN0LAorCQkJ CQkJIERFUEZMQUdfT1JJR0lOQUwsCisJCQkJCQkgZmxhZ3MsCisJCQkJCQkgTlVMTCwJLyogZW1w dHkgc3RhY2sgKi8KKwkJCQkJCSB0YXJnZXRPYmplY3RzLAorCQkJCQkJIE5VTEwsCS8qIG5vIHBl bmRpbmdPYmplY3RzICovCisJCQkJCQkgJmRlcFJlbCk7CisKKwkvKgorCSAqIENoZWNrIGlmIGRl bGV0aW9uIGlzIGFsbG93ZWQuCisJICovCisJcmVwb3J0RGVwZW5kZW50T2JqZWN0cyh0YXJnZXRP YmplY3RzLAorCQkJCQkJICAgYmVoYXZpb3IsCisJCQkJCQkgICBmbGFncywKKwkJCQkJCSAgIG9i amVjdCk7CisKKwkvKiBBbmQgY2xlYW4gdXAgKi8KKwlmcmVlX29iamVjdF9hZGRyZXNzZXModGFy Z2V0T2JqZWN0cyk7CisKKwl0YWJsZV9jbG9zZShkZXBSZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOwor fQorCisvKgorICogcGVyZm9ybU11bHRpcGxlRGVsZXRpb25zOiBTaW1pbGFyIHRvIHBlcmZvcm1E ZWxldGlvbiwgYnV0IGFjdHMgb24gbXVsdGlwbGUKICAqIG9iamVjdHMgYXQgb25jZS4KICAqCiAg KiBUaGUgbWFpbiBkaWZmZXJlbmNlIGZyb20gaXNzdWluZyBtdWx0aXBsZSBwZXJmb3JtRGVsZXRp b24gY2FsbHMgaXMgdGhhdCB0aGUKICAqIGxpc3Qgb2Ygb2JqZWN0cyB0aGF0IHdvdWxkIGJlIGlt cGxpY2l0bHkgZHJvcHBlZCwgZm9yIGVhY2ggb2JqZWN0IHRvIGJlCiAgKiBkcm9wcGVkLCBpcyB0 aGUgdW5pb24gb2YgdGhlIGltcGxpY2l0LW9iamVjdCBsaXN0IGZvciBhbGwgb2JqZWN0cy4gIFRo aXMKLSAqIG1ha2VzIGVhY2ggY2hlY2sgYmUgbW9yZSByZWxheGVkLgorICogbWFrZXMgZWFjaCBj aGVjayBtb3JlIHJlbGF4ZWQuCiAgKi8KIHZvaWQKIHBlcmZvcm1NdWx0aXBsZURlbGV0aW9ucyhj b25zdCBPYmplY3RBZGRyZXNzZXMgKm9iamVjdHMsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j YXRhbG9nL3BnX2NvbnN0cmFpbnQuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29uc3RyYWlu dC5jCmluZGV4IDQzYjQ1MDdkODZlLi42NzJiMTg4OTMwZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY2F0YWxvZy9wZ19jb25zdHJhaW50LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19j b25zdHJhaW50LmMKQEAgLTg3NSw3ICs4NzUsNyBAQCBSZWxhdGlvbkdldE5vdE51bGxDb25zdHJh aW50cyhPaWQgcmVsaWQsIGJvb2wgY29va2VkLCBib29sIGluY2x1ZGVfbm9pbmgpCiAJCQkJCQkJ CQkJCQkJCQkgZmFsc2UpKSk7CiAJCQljb25zdHItPmlzX2VuZm9yY2VkID0gdHJ1ZTsKIAkJCWNv bnN0ci0+c2tpcF92YWxpZGF0aW9uID0gIWNvbkZvcm0tPmNvbnZhbGlkYXRlZDsKLQkJCWNvbnN0 ci0+aW5pdGlhbGx5X3ZhbGlkID0gdHJ1ZTsKKwkJCWNvbnN0ci0+aW5pdGlhbGx5X3ZhbGlkID0g Y29uRm9ybS0+Y29udmFsaWRhdGVkOwogCQkJY29uc3RyLT5pc19ub19pbmhlcml0ID0gY29uRm9y bS0+Y29ubm9pbmhlcml0OwogCQkJbm90bnVsbHMgPSBsYXBwZW5kKG5vdG51bGxzLCBjb25zdHIp OwogCQl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IDFjOWVmNTNiZTIwLi5mNzAzMjkz ZGJjMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTc0MCw2ICs3NDAsOCBAQCBzdGF0 aWMgdm9pZCBBVERldGFjaENoZWNrTm9Gb3JlaWduS2V5UmVmcyhSZWxhdGlvbiBwYXJ0aXRpb24p Owogc3RhdGljIGNoYXIgR2V0QXR0cmlidXRlQ29tcHJlc3Npb24oT2lkIGF0dHR5cGlkLCBjb25z dCBjaGFyICpjb21wcmVzc2lvbik7CiBzdGF0aWMgY2hhciBHZXRBdHRyaWJ1dGVTdG9yYWdlKE9p ZCBhdHR0eXBpZCwgY29uc3QgY2hhciAqc3RvcmFnZW1vZGUpOwogCitzdGF0aWMgdm9pZCBBVEV4 ZWNNZXJnZVBhcnRpdGlvbnMoTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBS ZWxhdGlvbiByZWwsCisJCQkJCQkJCSAgUGFydGl0aW9uQ21kICpjbWQsIEFsdGVyVGFibGVVdGls aXR5Q29udGV4dCAqY29udGV4dCk7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlEZWZpbmVSZWxhdGlvbgpA QCAtNDgzNiw2ICs0ODM4LDEwIEBAIEFsdGVyVGFibGVHZXRMb2NrTGV2ZWwoTGlzdCAqY21kcykK IAkJCQljbWRfbG9ja21vZGUgPSBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2s7CiAJCQkJYnJlYWs7 CiAKKwkJCWNhc2UgQVRfTWVyZ2VQYXJ0aXRpb25zOgorCQkJCWNtZF9sb2NrbW9kZSA9IEFjY2Vz c0V4Y2x1c2l2ZUxvY2s7CisJCQkJYnJlYWs7CisKIAkJCWRlZmF1bHQ6CQkJLyogb29wcyAqLwog CQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgYWx0ZXIgdGFibGUgdHlwZTogJWQiLAogCQkJ CQkgKGludCkgY21kLT5zdWJ0eXBlKTsKQEAgLTUyNzEsNiArNTI3NywxMSBAQCBBVFByZXBDbWQo TGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBBbHRlclRhYmxlQ21kICpjbWQsCiAJCQkvKiBO byBjb21tYW5kLXNwZWNpZmljIHByZXAgbmVlZGVkICovCiAJCQlwYXNzID0gQVRfUEFTU19NSVND OwogCQkJYnJlYWs7CisJCWNhc2UgQVRfTWVyZ2VQYXJ0aXRpb25zOgorCQkJQVRTaW1wbGVQZXJt aXNzaW9ucyhjbWQtPnN1YnR5cGUsIHJlbCwgQVRUX1BBUlRJVElPTkVEX1RBQkxFKTsKKwkJCS8q IE5vIGNvbW1hbmQtc3BlY2lmaWMgcHJlcCBuZWVkZWQgKi8KKwkJCXBhc3MgPSBBVF9QQVNTX01J U0M7CisJCQlicmVhazsKIAkJZGVmYXVsdDoJCQkJLyogb29wcyAqLwogCQkJZWxvZyhFUlJPUiwg InVucmVjb2duaXplZCBhbHRlciB0YWJsZSB0eXBlOiAlZCIsCiAJCQkJIChpbnQpIGNtZC0+c3Vi dHlwZSk7CkBAIC01NjY3LDYgKzU2NzgsMTQgQEAgQVRFeGVjQ21kKExpc3QgKip3cXVldWUsIEFs dGVyZWRUYWJsZUluZm8gKnRhYiwKIAkJY2FzZSBBVF9EZXRhY2hQYXJ0aXRpb25GaW5hbGl6ZToK IAkJCWFkZHJlc3MgPSBBVEV4ZWNEZXRhY2hQYXJ0aXRpb25GaW5hbGl6ZShyZWwsICgoUGFydGl0 aW9uQ21kICopIGNtZC0+ZGVmKS0+bmFtZSk7CiAJCQlicmVhazsKKwkJY2FzZSBBVF9NZXJnZVBh cnRpdGlvbnM6CisJCQljbWQgPSBBVFBhcnNlVHJhbnNmb3JtQ21kKHdxdWV1ZSwgdGFiLCByZWws IGNtZCwgZmFsc2UsIGxvY2ttb2RlLAorCQkJCQkJCQkJICBjdXJfcGFzcywgY29udGV4dCk7CisJ CQlBc3NlcnQoY21kICE9IE5VTEwpOworCQkJQXNzZXJ0KHJlbC0+cmRfcmVsLT5yZWxraW5kID09 IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpOworCQkJQVRFeGVjTWVyZ2VQYXJ0aXRpb25zKHdx dWV1ZSwgdGFiLCByZWwsIChQYXJ0aXRpb25DbWQgKikgY21kLT5kZWYsCisJCQkJCQkJCSAgY29u dGV4dCk7CisJCQlicmVhazsKIAkJZGVmYXVsdDoJCQkJLyogb29wcyAqLwogCQkJZWxvZyhFUlJP UiwgInVucmVjb2duaXplZCBhbHRlciB0YWJsZSB0eXBlOiAlZCIsCiAJCQkJIChpbnQpIGNtZC0+ c3VidHlwZSk7CkBAIC02NzA3LDYgKzY3MjYsOCBAQCBhbHRlcl90YWJsZV90eXBlX3RvX3N0cmlu ZyhBbHRlclRhYmxlVHlwZSBjbWR0eXBlKQogCQkJcmV0dXJuICJERVRBQ0ggUEFSVElUSU9OIjsK IAkJY2FzZSBBVF9EZXRhY2hQYXJ0aXRpb25GaW5hbGl6ZToKIAkJCXJldHVybiAiREVUQUNIIFBB UlRJVElPTiAuLi4gRklOQUxJWkUiOworCQljYXNlIEFUX01lcmdlUGFydGl0aW9uczoKKwkJCXJl dHVybiAiTUVSR0UgUEFSVElUSU9OUyI7CiAJCWNhc2UgQVRfQWRkSWRlbnRpdHk6CiAJCQlyZXR1 cm4gIkFMVEVSIENPTFVNTiAuLi4gQUREIElERU5USVRZIjsKIAkJY2FzZSBBVF9TZXRJZGVudGl0 eToKQEAgLTIwMjMxLDYgKzIwMjUyLDQwIEBAIFF1ZXVlUGFydGl0aW9uQ29uc3RyYWludFZhbGlk YXRpb24oTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gc2NhbnJlbCwKIAl9CiB9CiAKKy8qCisgKiBh dHRhY2hQYXJ0aXRpb25UYWJsZTogYXR0YWNoIGEgbmV3IHBhcnRpdGlvbiB0byB0aGUgcGFydGl0 aW9uZWQgdGFibGUKKyAqCisgKiB3cXVldWU6IHRoZSBBTFRFUiBUQUJMRSB3b3JrIHF1ZXVlOyBj YW4gYmUgTlVMTCB3aGVuIG5vdCBydW5uaW5nIGFzIHBhcnQKKyAqICAgb2YgYW4gQUxURVIgVEFC TEUgc2VxdWVuY2UuCisgKiByZWw6IHBhcnRpdGlvbmVkIHJlbGF0aW9uOworICogYXR0YWNocmVs OiByZWxhdGlvbiBvZiBhdHRhY2hlZCBwYXJ0aXRpb247CisgKiBib3VuZDogYm91bmRzIG9mIGF0 dGFjaGVkIHJlbGF0aW9uLgorICovCitzdGF0aWMgdm9pZAorYXR0YWNoUGFydGl0aW9uVGFibGUo TGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBhdHRhY2hyZWwsIFBhcnRpdGlv bkJvdW5kU3BlYyAqYm91bmQpCit7CisJLyoKKwkgKiBDcmVhdGUgYW4gaW5oZXJpdGFuY2U7IHRo ZSByZWxldmFudCBjaGVja3MgYXJlIHBlcmZvcm1lZCBpbnNpZGUgdGhlCisJICogZnVuY3Rpb24u CisJICovCisJQ3JlYXRlSW5oZXJpdGFuY2UoYXR0YWNocmVsLCByZWwsIHRydWUpOworCisJLyog VXBkYXRlIHRoZSBwZ19jbGFzcyBlbnRyeS4gKi8KKwlTdG9yZVBhcnRpdGlvbkJvdW5kKGF0dGFj aHJlbCwgcmVsLCBib3VuZCk7CisKKwkvKiBFbnN1cmUgdGhlcmUgZXhpc3RzIGEgY29ycmVjdCBz ZXQgb2YgaW5kZXhlcyBpbiB0aGUgcGFydGl0aW9uLiAqLworCUF0dGFjaFBhcnRpdGlvbkVuc3Vy ZUluZGV4ZXMod3F1ZXVlLCByZWwsIGF0dGFjaHJlbCk7CisKKwkvKiBhbmQgdHJpZ2dlcnMgKi8K KwlDbG9uZVJvd1RyaWdnZXJzVG9QYXJ0aXRpb24ocmVsLCBhdHRhY2hyZWwpOworCisJLyoKKwkg KiBDbG9uZSBmb3JlaWduIGtleSBjb25zdHJhaW50cy4gIENhbGxlZSBpcyByZXNwb25zaWJsZSBm b3Igc2V0dGluZyB1cAorCSAqIGZvciBwaGFzZSAzIGNvbnN0cmFpbnQgdmVyaWZpY2F0aW9uLgor CSAqLworCUNsb25lRm9yZWlnbktleUNvbnN0cmFpbnRzKHdxdWV1ZSwgcmVsLCBhdHRhY2hyZWwp OworfQorCiAvKgogICogQUxURVIgVEFCTEUgPG5hbWU+IEFUVEFDSCBQQVJUSVRJT04gPHBhcnRp dGlvbi1uYW1lPiBGT1IgVkFMVUVTCiAgKgpAQCAtMjA0MzIsMjYgKzIwNDg3LDEwIEBAIEFURXhl Y0F0dGFjaFBhcnRpdGlvbihMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWwsIFBhcnRpdGlvbkNt ZCAqY21kLAogCWNoZWNrX25ld19wYXJ0aXRpb25fYm91bmQoUmVsYXRpb25HZXRSZWxhdGlvbk5h bWUoYXR0YWNocmVsKSwgcmVsLAogCQkJCQkJCSAgY21kLT5ib3VuZCwgcHN0YXRlKTsKIAotCS8q IE9LIHRvIGNyZWF0ZSBpbmhlcml0YW5jZS4gIFJlc3Qgb2YgdGhlIGNoZWNrcyBwZXJmb3JtZWQg dGhlcmUgKi8KLQlDcmVhdGVJbmhlcml0YW5jZShhdHRhY2hyZWwsIHJlbCwgdHJ1ZSk7Ci0KLQkv KiBVcGRhdGUgdGhlIHBnX2NsYXNzIGVudHJ5LiAqLwotCVN0b3JlUGFydGl0aW9uQm91bmQoYXR0 YWNocmVsLCByZWwsIGNtZC0+Ym91bmQpOwotCi0JLyogRW5zdXJlIHRoZXJlIGV4aXN0cyBhIGNv cnJlY3Qgc2V0IG9mIGluZGV4ZXMgaW4gdGhlIHBhcnRpdGlvbi4gKi8KLQlBdHRhY2hQYXJ0aXRp b25FbnN1cmVJbmRleGVzKHdxdWV1ZSwgcmVsLCBhdHRhY2hyZWwpOwotCi0JLyogYW5kIHRyaWdn ZXJzICovCi0JQ2xvbmVSb3dUcmlnZ2Vyc1RvUGFydGl0aW9uKHJlbCwgYXR0YWNocmVsKTsKKwlh dHRhY2hQYXJ0aXRpb25UYWJsZSh3cXVldWUsIHJlbCwgYXR0YWNocmVsLCBjbWQtPmJvdW5kKTsK IAogCS8qCi0JICogQ2xvbmUgZm9yZWlnbiBrZXkgY29uc3RyYWludHMuICBDYWxsZWUgaXMgcmVz cG9uc2libGUgZm9yIHNldHRpbmcgdXAKLQkgKiBmb3IgcGhhc2UgMyBjb25zdHJhaW50IHZlcmlm aWNhdGlvbi4KLQkgKi8KLQlDbG9uZUZvcmVpZ25LZXlDb25zdHJhaW50cyh3cXVldWUsIHJlbCwg YXR0YWNocmVsKTsKLQotCS8qCi0JICogR2VuZXJhdGUgcGFydGl0aW9uIGNvbnN0cmFpbnQgZnJv bSB0aGUgcGFydGl0aW9uIGJvdW5kIHNwZWNpZmljYXRpb24uCisJICogR2VuZXJhdGUgYSBwYXJ0 aXRpb24gY29uc3RyYWludCBmcm9tIHRoZSBwYXJ0aXRpb24gYm91bmQgc3BlY2lmaWNhdGlvbi4K IAkgKiBJZiB0aGUgcGFyZW50IGl0c2VsZiBpcyBhIHBhcnRpdGlvbiwgbWFrZSBzdXJlIHRvIGlu Y2x1ZGUgaXRzCiAJICogY29uc3RyYWludCBhcyB3ZWxsLgogCSAqLwpAQCAtMjIwNDcsMyArMjIw ODYsODIyIEBAIEdldEF0dHJpYnV0ZVN0b3JhZ2UoT2lkIGF0dHR5cGlkLCBjb25zdCBjaGFyICpz dG9yYWdlbW9kZSkKIAogCXJldHVybiBjc3RvcmFnZTsKIH0KKworLyoKKyAqIGJ1aWxkRXhwcmVz c2lvbkV4ZWN1dGlvblN0YXRlczogYnVpbGQgdGhlIG5lZWRlZCBleHByZXNzaW9uIGV4ZWN1dGlv biBzdGF0ZXMKKyAqIGZvciBuZXcgcGFydGl0aW9uIChuZXdQYXJ0UmVsKSBjaGVja3MgYW5kIGlu aXRpYWxpemUgZXhwcmVzc2lvbnMgZm9yCisgKiBnZW5lcmF0ZWQgY29sdW1ucy4gQWxsIGV4cHJl c3Npb25zIHNob3VsZCBiZSBjcmVhdGVkIGluICJ0YWIiCisgKiAoQWx0ZXJlZFRhYmxlSW5mbyBz dHJ1Y3R1cmUpLgorICovCitzdGF0aWMgdm9pZAorYnVpbGRFeHByZXNzaW9uRXhlY3V0aW9uU3Rh dGVzKEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gbmV3UGFydFJlbCwgRVN0YXRlICpl c3RhdGUpCit7CisJLyoKKwkgKiBCdWlsZCB0aGUgbmVlZGVkIGV4cHJlc3Npb24gZXhlY3V0aW9u IHN0YXRlcy4gSGVyZSwgd2UgZXhwZWN0IG9ubHkgTk9UCisJICogTlVMTCBhbmQgQ0hFQ0sgY29u c3RyYWludC4KKwkgKi8KKwlmb3JlYWNoX3B0cihOZXdDb25zdHJhaW50LCBjb24sIHRhYi0+Y29u c3RyYWludHMpCisJeworCQlzd2l0Y2ggKGNvbi0+Y29udHlwZSkKKwkJeworCQkJY2FzZSBDT05T VFJfQ0hFQ0s6CisKKwkJCQkvKgorCQkJCSAqIFdlIGFscmVhZHkgZXhwYW5kZWQgdmlydHVhbCBl eHByZXNzaW9uIGluCisJCQkJICogY3JlYXRlVGFibGVDb25zdHJhaW50cy4KKwkJCQkgKi8KKwkJ CQljb24tPnF1YWxzdGF0ZSA9IEV4ZWNQcmVwYXJlRXhwcigoRXhwciAqKSBjb24tPnF1YWwsIGVz dGF0ZSk7CisJCQkJYnJlYWs7CisJCQljYXNlIENPTlNUUl9OT1ROVUxMOgorCQkJCS8qIE5vdGhp bmcgdG8gZG8gaGVyZS4gKi8KKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJZWxvZyhFUlJP UiwgInVucmVjb2duaXplZCBjb25zdHJhaW50IHR5cGU6ICVkIiwKKwkJCQkJIChpbnQpIGNvbi0+ Y29udHlwZSk7CisJCX0KKwl9CisKKwkvKiBFeHByZXNzaW9uIGFscmVhZHkgcGxhbm5lZCBpbiBj cmVhdGVUYWJsZUNvbnN0cmFpbnRzICovCisJZm9yZWFjaF9wdHIoTmV3Q29sdW1uVmFsdWUsIGV4 LCB0YWItPm5ld3ZhbHMpCisJCWV4LT5leHByc3RhdGUgPSBFeGVjSW5pdEV4cHIoKEV4cHIgKikg ZXgtPmV4cHIsIE5VTEwpOworfQorCisvKgorICogZXZhbHVhdGVHZW5lcmF0ZWRFeHByZXNzaW9u c0FuZENoZWNrQ29uc3RyYWludHM6IGV2YWx1YXRlIGFueSBnZW5lcmF0ZWQKKyAqIGV4cHJlc3Np b25zIGZvciAidGFiIiAoQWx0ZXJlZFRhYmxlSW5mbyBzdHJ1Y3R1cmUpIHdob3NlIGlucHV0cyBj b21lIGZyb20KKyAqIHRoZSBuZXcgdHVwbGUgKGluc2VydHNsb3QpIG9mIHRoZSBuZXcgcGFydGl0 aW9uIChuZXdQYXJ0UmVsKS4KKyAqLworc3RhdGljIHZvaWQKK2V2YWx1YXRlR2VuZXJhdGVkRXhw cmVzc2lvbnNBbmRDaGVja0NvbnN0cmFpbnRzKEFsdGVyZWRUYWJsZUluZm8gKnRhYiwKKwkJCQkJ CQkJCQkJCVJlbGF0aW9uIG5ld1BhcnRSZWwsCisJCQkJCQkJCQkJCQlUdXBsZVRhYmxlU2xvdCAq aW5zZXJ0c2xvdCwKKwkJCQkJCQkJCQkJCUV4cHJDb250ZXh0ICplY29udGV4dCkKK3sKKwllY29u dGV4dC0+ZWN4dF9zY2FudHVwbGUgPSBpbnNlcnRzbG90OworCisJZm9yZWFjaF9wdHIoTmV3Q29s dW1uVmFsdWUsIGV4LCB0YWItPm5ld3ZhbHMpCisJeworCQlpZiAoIWV4LT5pc19nZW5lcmF0ZWQp CisJCQljb250aW51ZTsKKworCQlpbnNlcnRzbG90LT50dHNfdmFsdWVzW2V4LT5hdHRudW0gLSAx XQorCQkJPSBFeGVjRXZhbEV4cHIoZXgtPmV4cHJzdGF0ZSwKKwkJCQkJCSAgIGVjb250ZXh0LAor CQkJCQkJICAgJmluc2VydHNsb3QtPnR0c19pc251bGxbZXgtPmF0dG51bSAtIDFdKTsKKwl9CisK Kwlmb3JlYWNoX3B0cihOZXdDb25zdHJhaW50LCBjb24sIHRhYi0+Y29uc3RyYWludHMpCisJewor CQlzd2l0Y2ggKGNvbi0+Y29udHlwZSkKKwkJeworCQkJY2FzZSBDT05TVFJfQ0hFQ0s6CisJCQkJ aWYgKCFFeGVjQ2hlY2soY29uLT5xdWFsc3RhdGUsIGVjb250ZXh0KSkKKwkJCQkJZXJlcG9ydChF UlJPUiwKKwkJCQkJCQllcnJjb2RlKEVSUkNPREVfQ0hFQ0tfVklPTEFUSU9OKSwKKwkJCQkJCQll cnJtc2coImNoZWNrIGNvbnN0cmFpbnQgXCIlc1wiIG9mIHJlbGF0aW9uIFwiJXNcIiBpcyB2aW9s YXRlZCBieSBzb21lIHJvdyIsCisJCQkJCQkJCSAgIGNvbi0+bmFtZSwgUmVsYXRpb25HZXRSZWxh dGlvbk5hbWUobmV3UGFydFJlbCkpLAorCQkJCQkJCWVycnRhYmxlY29uc3RyYWludChuZXdQYXJ0 UmVsLCBjb24tPm5hbWUpKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgQ09OU1RSX05PVE5VTEw6CisJ CQljYXNlIENPTlNUUl9GT1JFSUdOOgorCQkJCS8qIE5vdGhpbmcgdG8gZG8gaGVyZSAqLworCQkJ CWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIGNvbnN0 cmFpbnQgdHlwZTogJWQiLAorCQkJCQkgKGludCkgY29uLT5jb250eXBlKTsKKwkJfQorCX0KK30K KworLyoKKyAqIGdldEF0dHJpYnV0ZXNMaXN0OiBidWlsZCBhIGxpc3Qgb2YgY29sdW1ucyAoQ29s dW1uRGVmKSBiYXNlZCBvbiBwYXJlbnRfcmVsCisgKi8KK3N0YXRpYyBMaXN0ICoKK2dldEF0dHJp YnV0ZXNMaXN0KFJlbGF0aW9uIHBhcmVudF9yZWwpCit7CisJQXR0ck51bWJlcglwYXJlbnRfYXR0 bm87CisJVHVwbGVEZXNjCW1vZGVsRGVzYzsKKwlMaXN0CSAgICpjb2xMaXN0ID0gTklMOworCisJ bW9kZWxEZXNjID0gUmVsYXRpb25HZXREZXNjcihwYXJlbnRfcmVsKTsKKworCWZvciAocGFyZW50 X2F0dG5vID0gMTsgcGFyZW50X2F0dG5vIDw9IG1vZGVsRGVzYy0+bmF0dHM7CisJCSBwYXJlbnRf YXR0bm8rKykKKwl7CisJCUZvcm1fcGdfYXR0cmlidXRlIGF0dHJpYnV0ZSA9IFR1cGxlRGVzY0F0 dHIobW9kZWxEZXNjLAorCQkJCQkJCQkJCQkJCXBhcmVudF9hdHRubyAtIDEpOworCQlDb2x1bW5E ZWYgICpkZWY7CisKKwkJLyogSWdub3JlIGRyb3BwZWQgY29sdW1ucyBpbiB0aGUgcGFyZW50LiAq LworCQlpZiAoYXR0cmlidXRlLT5hdHRpc2Ryb3BwZWQpCisJCQljb250aW51ZTsKKworCQlkZWYg PSBtYWtlQ29sdW1uRGVmKE5hbWVTdHIoYXR0cmlidXRlLT5hdHRuYW1lKSwgYXR0cmlidXRlLT5h dHR0eXBpZCwKKwkJCQkJCQlhdHRyaWJ1dGUtPmF0dHR5cG1vZCwgYXR0cmlidXRlLT5hdHRjb2xs YXRpb24pOworCisJCWRlZi0+aXNfbm90X251bGwgPSBhdHRyaWJ1dGUtPmF0dG5vdG51bGw7CisK KwkJLyogQ29weSBpZGVudGl0eS4gKi8KKwkJZGVmLT5pZGVudGl0eSA9IGF0dHJpYnV0ZS0+YXR0 aWRlbnRpdHk7CisKKwkJLyogQ29weSBhdHRnZW5lcmF0ZWQuICovCisJCWRlZi0+Z2VuZXJhdGVk ID0gYXR0cmlidXRlLT5hdHRnZW5lcmF0ZWQ7CisKKwkJZGVmLT5zdG9yYWdlID0gYXR0cmlidXRl LT5hdHRzdG9yYWdlOworCisJCS8qIExpa2V3aXNlLCBjb3B5IGNvbXByZXNzaW9uLiAqLworCQlp ZiAoQ29tcHJlc3Npb25NZXRob2RJc1ZhbGlkKGF0dHJpYnV0ZS0+YXR0Y29tcHJlc3Npb24pKQor CQkJZGVmLT5jb21wcmVzc2lvbiA9CisJCQkJcHN0cmR1cChHZXRDb21wcmVzc2lvbk1ldGhvZE5h bWUoYXR0cmlidXRlLT5hdHRjb21wcmVzc2lvbikpOworCQllbHNlCisJCQlkZWYtPmNvbXByZXNz aW9uID0gTlVMTDsKKworCQkvKiBBZGQgdG8gY29sdW1uIGxpc3QuICovCisJCWNvbExpc3QgPSBs YXBwZW5kKGNvbExpc3QsIGRlZik7CisJfQorCisJcmV0dXJuIGNvbExpc3Q7Cit9CisKKy8qCisg KiBjcmVhdGVUYWJsZUNvbnN0cmFpbnRzOgorICogY3JlYXRlIGNoZWNrIGNvbnN0cmFpbnRzLCBk ZWZhdWx0IHZhbHVlcywgYW5kIGdlbmVyYXRlZCB2YWx1ZXMgZm9yIG5ld1JlbAorICogYmFzZWQg b24gcGFyZW50X3JlbC4gIHRhYiBpcyBwZW5kaW5nLXdvcmsgcXVldWUgZm9yIG5ld1JlbCwgd2Ug bWF5IG5lZWQgaXQgaW4KKyAqIE1lcmdlUGFydGl0aW9uc01vdmVSb3dzLgorICovCitzdGF0aWMg dm9pZAorY3JlYXRlVGFibGVDb25zdHJhaW50cyhMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJ bmZvICp0YWIsCisJCQkJCSAgIFJlbGF0aW9uIHBhcmVudF9yZWwsIFJlbGF0aW9uIG5ld1JlbCkK K3sKKwlUdXBsZURlc2MJdHVwbGVEZXNjOworCVR1cGxlQ29uc3RyICpjb25zdHI7CisJQXR0ck1h cCAgICAqYXR0bWFwOworCUF0dHJOdW1iZXIJcGFyZW50X2F0dG5vOworCWludAkJCWNjbnVtOwor CUxpc3QJICAgKmNvbnN0cmFpbnRzID0gTklMOworCUxpc3QJICAgKmNvb2tlZENvbnN0cmFpbnRz ID0gTklMOworCisJdHVwbGVEZXNjID0gUmVsYXRpb25HZXREZXNjcihwYXJlbnRfcmVsKTsKKwlj b25zdHIgPSB0dXBsZURlc2MtPmNvbnN0cjsKKworCWlmICghY29uc3RyKQorCQlyZXR1cm47CisK KwkvKgorCSAqIENvbnN0cnVjdCBhIG1hcCBmcm9tIHRoZSBwYXJlbnQgcmVsYXRpb24ncyBhdHRu b3MgdG8gdGhlIGNoaWxkIHJlbCdzLgorCSAqIFRoaXMgcmUtY2hlY2tzIHR5cGUgbWF0Y2gsIGV0 YywgYWx0aG91Z2ggaXQgc2hvdWxkbid0IGJlIHBvc3NpYmxlIHRvCisJICogaGF2ZSBhIGZhaWx1 cmUgc2luY2UgYm90aCB0YWJsZXMgYXJlIGxvY2tlZC4KKwkgKi8KKwlhdHRtYXAgPSBidWlsZF9h dHRybWFwX2J5X25hbWUoUmVsYXRpb25HZXREZXNjcihuZXdSZWwpLAorCQkJCQkJCQkgICB0dXBs ZURlc2MsCisJCQkJCQkJCSAgIGZhbHNlKTsKKworCS8qIEN5Y2xlIGZvciBkZWZhdWx0IHZhbHVl cy4gKi8KKwlmb3IgKHBhcmVudF9hdHRubyA9IDE7IHBhcmVudF9hdHRubyA8PSB0dXBsZURlc2Mt Pm5hdHRzOyBwYXJlbnRfYXR0bm8rKykKKwl7CisJCUZvcm1fcGdfYXR0cmlidXRlIGF0dHJpYnV0 ZSA9IFR1cGxlRGVzY0F0dHIodHVwbGVEZXNjLAorCQkJCQkJCQkJCQkJCXBhcmVudF9hdHRubyAt IDEpOworCisJCS8qIElnbm9yZSBkcm9wcGVkIGNvbHVtbnMgaW4gdGhlIHBhcmVudC4gKi8KKwkJ aWYgKGF0dHJpYnV0ZS0+YXR0aXNkcm9wcGVkKQorCQkJY29udGludWU7CisKKwkJLyogQ29weSB0 aGUgZGVmYXVsdCwgaWYgcHJlc2VudCwgYW5kIGl0IHNob3VsZCBiZSBjb3BpZWQuICovCisJCWlm IChhdHRyaWJ1dGUtPmF0dGhhc2RlZikKKwkJeworCQkJTm9kZQkgICAqdGhpc19kZWZhdWx0ID0g TlVMTDsKKwkJCWJvb2wJCWZvdW5kX3dob2xlX3JvdzsKKwkJCUF0dHJOdW1iZXIJbnVtOworCQkJ Tm9kZQkgICAqZGVmOworCQkJTmV3Q29sdW1uVmFsdWUgKm5ld3ZhbDsKKworCQkJaWYgKGF0dHJp YnV0ZS0+YXR0Z2VuZXJhdGVkID09IEFUVFJJQlVURV9HRU5FUkFURURfVklSVFVBTCkKKwkJCQl0 aGlzX2RlZmF1bHQgPSBidWlsZF9nZW5lcmF0aW9uX2V4cHJlc3Npb24ocGFyZW50X3JlbCwgYXR0 cmlidXRlLT5hdHRudW0pOworCQkJZWxzZQorCQkJeworCQkJCXRoaXNfZGVmYXVsdCA9IFR1cGxl RGVzY0dldERlZmF1bHQodHVwbGVEZXNjLCBhdHRyaWJ1dGUtPmF0dG51bSk7CisJCQkJaWYgKHRo aXNfZGVmYXVsdCA9PSBOVUxMKQorCQkJCQllbG9nKEVSUk9SLCAiZGVmYXVsdCBleHByZXNzaW9u IG5vdCBmb3VuZCBmb3IgYXR0cmlidXRlICVkIG9mIHJlbGF0aW9uIFwiJXNcIiIsCisJCQkJCQkg YXR0cmlidXRlLT5hdHRudW0sIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHBhcmVudF9yZWwpKTsK KwkJCX0KKworCQkJbnVtID0gYXR0bWFwLT5hdHRudW1zW3BhcmVudF9hdHRubyAtIDFdOworCQkJ ZGVmID0gbWFwX3ZhcmlhYmxlX2F0dG5vcyh0aGlzX2RlZmF1bHQsIDEsIDAsIGF0dG1hcCwgSW52 YWxpZE9pZCwgJmZvdW5kX3dob2xlX3Jvdyk7CisKKwkJCWlmIChmb3VuZF93aG9sZV9yb3cgJiYg YXR0cmlidXRlLT5hdHRnZW5lcmF0ZWQgIT0gJ1wwJykKKwkJCQllbG9nKEVSUk9SLCAiY2Fubm90 IGNvbnZlcnQgd2hvbGUtcm93IHRhYmxlIHJlZmVyZW5jZSIpOworCisJCQkvKiBBZGQgYSBwcmUt Y29va2VkIGRlZmF1bHQgZXhwcmVzc2lvbi4gKi8KKwkJCVN0b3JlQXR0ckRlZmF1bHQobmV3UmVs LCBudW0sIGRlZiwgdHJ1ZSk7CisKKwkJCS8qCisJCQkgKiBTdG9yZWQgZ2VuZXJhdGVkIGNvbHVt biBleHByZXNzaW9ucyBpbiBwYXJlbnRfcmVsIG1pZ2h0CisJCQkgKiByZWZlcmVuY2UgdGhlIHRh Ymxlb2lkLiAgbmV3UmVsLCBwYXJlbnRfcmVsIHRhYmxlb2lkIGNsZWFyIGlzCisJCQkgKiBub3Qg dGhlIHNhbWUuIElmIHNvLCB0aGVzZSBzdG9yZWQgZ2VuZXJhdGVkIGNvbHVtbnMgcmVxdWlyZQor CQkJICogcmVjb21wdXRhdGlvbiBmb3IgbmV3UmVsIHdpdGhpbiBNZXJnZVBhcnRpdGlvbnNNb3Zl Um93cy4KKwkJCSAqLworCQkJaWYgKGF0dHJpYnV0ZS0+YXR0Z2VuZXJhdGVkID09IEFUVFJJQlVU RV9HRU5FUkFURURfU1RPUkVEKQorCQkJeworCQkJCW5ld3ZhbCA9IChOZXdDb2x1bW5WYWx1ZSAq KSBwYWxsb2MwKHNpemVvZihOZXdDb2x1bW5WYWx1ZSkpOworCQkJCW5ld3ZhbC0+YXR0bnVtID0g bnVtOworCQkJCW5ld3ZhbC0+ZXhwciA9IGV4cHJlc3Npb25fcGxhbm5lcigoRXhwciAqKSBkZWYp OworCQkJCW5ld3ZhbC0+aXNfZ2VuZXJhdGVkID0gKGF0dHJpYnV0ZS0+YXR0Z2VuZXJhdGVkICE9 ICdcMCcpOworCQkJCXRhYi0+bmV3dmFscyA9IGxhcHBlbmQodGFiLT5uZXd2YWxzLCBuZXd2YWwp OworCQkJfQorCQl9CisJfQorCisJLyogQ3ljbGUgZm9yIENIRUNLIGNvbnN0cmFpbnRzLiAqLwor CWZvciAoY2NudW0gPSAwOyBjY251bSA8IGNvbnN0ci0+bnVtX2NoZWNrOyBjY251bSsrKQorCXsK KwkJY2hhcgkgICAqY2NuYW1lID0gY29uc3RyLT5jaGVja1tjY251bV0uY2NuYW1lOworCQljaGFy CSAgICpjY2JpbiA9IGNvbnN0ci0+Y2hlY2tbY2NudW1dLmNjYmluOworCQlib29sCQljY2VuZm9y Y2VkID0gY29uc3RyLT5jaGVja1tjY251bV0uY2NlbmZvcmNlZDsKKwkJYm9vbAkJY2Nub2luaGVy aXQgPSBjb25zdHItPmNoZWNrW2NjbnVtXS5jY25vaW5oZXJpdDsKKwkJYm9vbAkJY2N2YWxpZCA9 IGNvbnN0ci0+Y2hlY2tbY2NudW1dLmNjdmFsaWQ7CisJCU5vZGUJICAgKmNjYmluX25vZGU7CisJ CWJvb2wJCWZvdW5kX3dob2xlX3JvdzsKKwkJQ29uc3RyYWludCAqY29uc3RyOworCisJCS8qCisJ CSAqIFRoZSBwYXJ0aXRpb25lZCB0YWJsZSBjYW4gbm90IGhhdmUgYSBOTyBJTkhFUklUIGNoZWNr IGNvbnN0cmFpbnQKKwkJICogKHNlZSBTdG9yZVJlbENoZWNrIGZ1bmN0aW9uIGZvciBkZXRhaWxz KS4KKwkJICovCisJCUFzc2VydCghY2Nub2luaGVyaXQpOworCisJCWNjYmluX25vZGUgPSBtYXBf dmFyaWFibGVfYXR0bm9zKHN0cmluZ1RvTm9kZShjY2JpbiksCisJCQkJCQkJCQkJIDEsIDAsCisJ CQkJCQkJCQkJIGF0dG1hcCwKKwkJCQkJCQkJCQkgSW52YWxpZE9pZCwgJmZvdW5kX3dob2xlX3Jv dyk7CisKKwkJLyoKKwkJICogRm9yIHRoZSBtb21lbnQgd2UgaGF2ZSB0byByZWplY3Qgd2hvbGUt cm93IHZhcmlhYmxlcyAoYXMgZm9yIENSRUFURQorCQkgKiBUQUJMRSBMSUtFIGFuZCBpbmhlcml0 YW5jZXMpLgorCQkgKi8KKwkJaWYgKGZvdW5kX3dob2xlX3JvdykKKwkJCWVsb2coRVJST1IsICJD b25zdHJhaW50IFwiJXNcIiBjb250YWlucyBhIHdob2xlLXJvdyByZWZlcmVuY2UgdG8gdGFibGUg XCIlc1wiLiIsCisJCQkJIGNjbmFtZSwKKwkJCQkgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocGFy ZW50X3JlbCkpOworCisJCWNvbnN0ciA9IG1ha2VOb2RlKENvbnN0cmFpbnQpOworCQljb25zdHIt PmNvbnR5cGUgPSBDT05TVFJfQ0hFQ0s7CisJCWNvbnN0ci0+Y29ubmFtZSA9IHBzdHJkdXAoY2Nu YW1lKTsKKwkJY29uc3RyLT5kZWZlcnJhYmxlID0gZmFsc2U7CisJCWNvbnN0ci0+aW5pdGRlZmVy cmVkID0gZmFsc2U7CisJCWNvbnN0ci0+aXNfZW5mb3JjZWQgPSBjY2VuZm9yY2VkOworCQljb25z dHItPnNraXBfdmFsaWRhdGlvbiA9ICFjY3ZhbGlkOworCQljb25zdHItPmluaXRpYWxseV92YWxp ZCA9IGNjdmFsaWQ7CisJCWNvbnN0ci0+aXNfbm9faW5oZXJpdCA9IGNjbm9pbmhlcml0OworCQlj b25zdHItPnJhd19leHByID0gTlVMTDsKKwkJY29uc3RyLT5jb29rZWRfZXhwciA9IG5vZGVUb1N0 cmluZyhjY2Jpbl9ub2RlKTsKKwkJY29uc3RyLT5sb2NhdGlvbiA9IC0xOworCQljb25zdHJhaW50 cyA9IGxhcHBlbmQoY29uc3RyYWludHMsIGNvbnN0cik7CisJfQorCisJLyogSW5zdGFsbCBhbGwg Q0hFQ0sgY29uc3RyYWludHMuICovCisJY29va2VkQ29uc3RyYWludHMgPSBBZGRSZWxhdGlvbk5l d0NvbnN0cmFpbnRzKG5ld1JlbCwgTklMLCBjb25zdHJhaW50cywKKwkJCQkJCQkJCQkJCSAgZmFs c2UsIHRydWUsIHRydWUsIE5VTEwpOworCisJLyogTWFrZSB0aGUgYWRkaXRpb25hbCBjYXRhbG9n IGNoYW5nZXMgdmlzaWJsZS4gKi8KKwlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOworCisJLyoK KwkgKiBwYXJlbnRfcmVsIGNoZWNrIGNvbnN0cmFpbnQgZXhwcmVzc2lvbiBtYXkgcmVmZXJlbmNl IHRhYmxlb2lkLCBzbyBsYXRlcgorCSAqIGluIE1lcmdlUGFydGl0aW9uc01vdmVSb3dzLCB3ZSBu ZWVkIHRvIGV2YWx1YXRlIHRoZSBjaGVjayBjb25zdHJhaW50CisJICogYWdhaW4gZm9yIHRoZSBu ZXdSZWwuIFdlIGNhbiBjaGVjayB3aGV0aGVyIHRoZSBjaGVjayBjb25zdHJhaW50CisJICogY29u dGFpbnMgYSB0YWJsZW9pZCByZWZlcmVuY2UgdmlhIHB1bGxfdmFyYXR0bm9zLgorCSAqLworCWZv cmVhY2hfcHRyKENvb2tlZENvbnN0cmFpbnQsIGNjb24sIGNvb2tlZENvbnN0cmFpbnRzKQorCXsK KwkJaWYgKCFjY29uLT5za2lwX3ZhbGlkYXRpb24pCisJCXsKKwkJCU5vZGUJICAgKnF1YWw7CisJ CQlCaXRtYXBzZXQgICphdHRudW1zID0gTlVMTDsKKworCQkJQXNzZXJ0KGNjb24tPmNvbnR5cGUg PT0gQ09OU1RSX0NIRUNLKTsKKwkJCXF1YWwgPSBleHBhbmRfZ2VuZXJhdGVkX2NvbHVtbnNfaW5f ZXhwcihjY29uLT5leHByLCBuZXdSZWwsIDEpOworCQkJcHVsbF92YXJhdHRub3MocXVhbCwgMSwg JmF0dG51bXMpOworCisJCQkvKgorCQkJICogQWRkIGEgY2hlY2sgb25seSBpZiBpdCBjb250YWlu cyBhIHRhYmxlb2lkCisJCQkgKiAoVGFibGVPaWRBdHRyaWJ1dGVOdW1iZXIpLgorCQkJICovCisJ CQlpZiAoYm1zX2lzX21lbWJlcihUYWJsZU9pZEF0dHJpYnV0ZU51bWJlciAtIEZpcnN0TG93SW52 YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIsCisJCQkJCQkJICBhdHRudW1zKSkKKwkJCXsKKwkJCQlO ZXdDb25zdHJhaW50ICpuZXdjb247CisKKwkJCQluZXdjb24gPSAoTmV3Q29uc3RyYWludCAqKSBw YWxsb2MwKHNpemVvZihOZXdDb25zdHJhaW50KSk7CisJCQkJbmV3Y29uLT5uYW1lID0gY2Nvbi0+ bmFtZTsKKwkJCQluZXdjb24tPmNvbnR5cGUgPSBDT05TVFJfQ0hFQ0s7CisJCQkJbmV3Y29uLT5x dWFsID0gcXVhbDsKKworCQkJCXRhYi0+Y29uc3RyYWludHMgPSBsYXBwZW5kKHRhYi0+Y29uc3Ry YWludHMsIG5ld2Nvbik7CisJCQl9CisJCX0KKwl9CisKKwkvKiBEb24ndCBuZWVkIHRoZSBjb29r ZWRDb25zdHJhaW50cyBhbnltb3JlLiAqLworCWxpc3RfZnJlZV9kZWVwKGNvb2tlZENvbnN0cmFp bnRzKTsKKworCS8qIFJlcHJvZHVjZSBub3QtbnVsbCBjb25zdHJhaW50cy4gKi8KKwlpZiAoY29u c3RyLT5oYXNfbm90X251bGwpCisJeworCQlMaXN0CSAgICpubmNvbnN0cmFpbnRzOworCisJCS8q CisJCSAqIFRoZSAiaW5jbHVkZV9ub2luaCIgYXJndW1lbnQgaXMgZmFsc2UgYmVjYXVzZSBhIHBh cnRpdGlvbmVkIHRhYmxlCisJCSAqIGNhbid0IGhhdmUgTk8gSU5IRVJJVCBjb25zdHJhaW50Lgor CQkgKi8KKwkJbm5jb25zdHJhaW50cyA9IFJlbGF0aW9uR2V0Tm90TnVsbENvbnN0cmFpbnRzKFJl bGF0aW9uR2V0UmVsaWQocGFyZW50X3JlbCksCisJCQkJCQkJCQkJCQkJICBmYWxzZSwgZmFsc2Up OworCisJCUFzc2VydChsaXN0X2xlbmd0aChubmNvbnN0cmFpbnRzKSA+IDApOworCisJCS8qCisJ CSAqIFdlIGFscmVhZHkgc2V0IHBnX2F0dHJpYnV0ZS5hdHRub3RudWxsIGluIGNyZWF0ZVBhcnRp dGlvblRhYmxlLiBObworCQkgKiBuZWVkIGNhbGwgc2V0X2F0dG5vdG51bGwgYWdhaW4uCisJCSAq LworCQlBZGRSZWxhdGlvbk5ld0NvbnN0cmFpbnRzKG5ld1JlbCwgTklMLCBubmNvbnN0cmFpbnRz LCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgTlVMTCk7CisJfQorfQorCisvKgorICogY3JlYXRlUGFydGl0 aW9uVGFibGU6CisgKgorICogQ3JlYXRlIGEgbmV3IHBhcnRpdGlvbiAobmV3UGFydE5hbWUpIGZv ciB0aGUgcGFydGl0aW9uZWQgdGFibGUgKHBhcmVudF9yZWwpLgorICogb3duZXJJZCBpcyBkZXRl cm1pbmVkIGJ5IHRoZSBwYXJ0aXRpb24gb24gd2hpY2ggdGhlIG9wZXJhdGlvbiBpcyBwZXJmb3Jt ZWQsCisgKiBzbyBpdCBpcyBwYXNzZWQgc2VwYXJhdGVseS4gIFRoZSBuZXcgcGFydGl0aW9uIHdp bGwgaW5oZXJpdCB0aGUgYWNjZXNzIG1ldGhvZAorICogYW5kIHBlcnNpc3RlbmNlIHR5cGUgZnJv bSB0aGUgcGFyZW50IHRhYmxlLgorICoKKyAqIFJldHVybnMgdGhlIGNyZWF0ZWQgcmVsYXRpb24g KGxvY2tlZCBpbiBBY2Nlc3NFeGNsdXNpdmVMb2NrIG1vZGUpLgorICovCitzdGF0aWMgUmVsYXRp b24KK2NyZWF0ZVBhcnRpdGlvblRhYmxlKExpc3QgKip3cXVldWUsIFJhbmdlVmFyICpuZXdQYXJ0 TmFtZSwKKwkJCQkJIFJlbGF0aW9uIHBhcmVudF9yZWwsIE9pZCBvd25lcklkKQoreworCVJlbGF0 aW9uCW5ld1JlbDsKKwlPaWQJCQluZXdSZWxJZDsKKwlPaWQJCQlleGlzdGluZ1JlbGlkOworCVR1 cGxlRGVzYwlkZXNjcmlwdG9yOworCUxpc3QJICAgKmNvbExpc3QgPSBOSUw7CisJT2lkCQkJcmVs YW1JZDsKKwlPaWQJCQluYW1lc3BhY2VJZDsKKwlBbHRlcmVkVGFibGVJbmZvICpuZXdfcGFydHJl bF90YWI7CisJRm9ybV9wZ19jbGFzcyBwYXJlbnRfcmVsZm9ybSA9IHBhcmVudF9yZWwtPnJkX3Jl bDsKKworCS8qIElmIHRoZSBleGlzdGluZyByZWwgaXMgdGVtcCwgaXQgbXVzdCBiZWxvbmcgdG8g dGhpcyBzZXNzaW9uLiAqLworCWlmIChSRUxBVElPTl9JU19PVEhFUl9URU1QKHBhcmVudF9yZWwp KQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQ RSksCisJCQkJZXJybXNnKCJjYW5ub3QgY3JlYXRlIGFzIHBhcnRpdGlvbiBvZiB0ZW1wb3Jhcnkg cmVsYXRpb24gb2YgYW5vdGhlciBzZXNzaW9uIikpOworCisJLyogTG9vayB1cCBpbmhlcml0YW5j ZSBhbmNlc3RvcnMgYW5kIGdlbmVyYXRlIHRoZSByZWxhdGlvbiBzY2hlbWEuICovCisJY29sTGlz dCA9IGdldEF0dHJpYnV0ZXNMaXN0KHBhcmVudF9yZWwpOworCisJLyogQ3JlYXRlIGEgdHVwbGUg ZGVzY3JpcHRvciBmcm9tIHRoZSByZWxhdGlvbiBzY2hlbWEuICovCisJZGVzY3JpcHRvciA9IEJ1 aWxkRGVzY0ZvclJlbGF0aW9uKGNvbExpc3QpOworCisJLyogTG9vayB1cCB0aGUgYWNjZXNzIG1l dGhvZCBmb3IgdGhlIG5ldyByZWxhdGlvbi4gKi8KKwlyZWxhbUlkID0gKHBhcmVudF9yZWxmb3Jt LT5yZWxhbSAhPSBJbnZhbGlkT2lkKSA/IHBhcmVudF9yZWxmb3JtLT5yZWxhbSA6IEhFQVBfVEFC TEVfQU1fT0lEOworCisJLyogTG9vayB1cCB0aGUgbmFtZXNwYWNlIGluIHdoaWNoIHdlIGFyZSBz dXBwb3NlZCB0byBjcmVhdGUgdGhlIHJlbGF0aW9uLiAqLworCW5hbWVzcGFjZUlkID0KKwkJUmFu Z2VWYXJHZXRBbmRDaGVja0NyZWF0aW9uTmFtZXNwYWNlKG5ld1BhcnROYW1lLCBOb0xvY2ssICZl eGlzdGluZ1JlbGlkKTsKKwlpZiAoT2lkSXNWYWxpZChleGlzdGluZ1JlbGlkKSkKKwkJZXJlcG9y dChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX1RBQkxFKSwKKwkJCQllcnJt c2coInJlbGF0aW9uIFwiJXNcIiBhbHJlYWR5IGV4aXN0cyIsIG5ld1BhcnROYW1lLT5yZWxuYW1l KSk7CisKKwkvKgorCSAqIFdlIGludGVuZGVkIHRvIGNyZWF0ZSB0aGUgcGFydGl0aW9uIHdpdGgg dGhlIHNhbWUgcGVyc2lzdGVuY2UgYXMgdGhlCisJICogcGFyZW50IHRhYmxlLCBidXQgd2Ugc3Rp bGwgbmVlZCB0byByZWNoZWNrIGJlY2F1c2UgdGhhdCBtaWdodCBiZQorCSAqIGFmZmVjdGVkIGJ5 IHRoZSBzZWFyY2hfcGF0aC4gIElmIHRoZSBwYXJlbnQgaXMgcGVybWFuZW50LCBzbyBtdXN0IGJl CisJICogYWxsIG9mIGl0cyBwYXJ0aXRpb25zLgorCSAqLworCWlmIChwYXJlbnRfcmVsZm9ybS0+ cmVscGVyc2lzdGVuY2UgIT0gUkVMUEVSU0lTVEVOQ0VfVEVNUCAmJgorCQluZXdQYXJ0TmFtZS0+ cmVscGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lTVEVOQ0VfVEVNUCkKKwkJZXJlcG9ydChFUlJPUiwK KwkJCQllcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJCWVycm1zZygiY2Fu bm90IGNyZWF0ZSBhIHRlbXBvcmFyeSByZWxhdGlvbiBhcyBwYXJ0aXRpb24gb2YgcGVybWFuZW50 IHJlbGF0aW9uIFwiJXNcIiIsCisJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHBhcmVu dF9yZWwpKSk7CisKKwkvKiBQZXJtYW5lbnQgcmVscyBjYW5ub3QgYmUgcGFydGl0aW9ucyBiZWxv bmdpbmcgdG8gYSB0ZW1wb3JhcnkgcGFyZW50LiAqLworCWlmIChuZXdQYXJ0TmFtZS0+cmVscGVy c2lzdGVuY2UgIT0gUkVMUEVSU0lTVEVOQ0VfVEVNUCAmJgorCQlwYXJlbnRfcmVsZm9ybS0+cmVs cGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lTVEVOQ0VfVEVNUCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJ CQllcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJCWVycm1zZygiY2Fubm90 IGNyZWF0ZSBhIHBlcm1hbmVudCByZWxhdGlvbiBhcyBwYXJ0aXRpb24gb2YgdGVtcG9yYXJ5IHJl bGF0aW9uIFwiJXNcIiIsCisJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHBhcmVudF9y ZWwpKSk7CisKKwkvKiBDcmVhdGUgdGhlIHJlbGF0aW9uLiAqLworCW5ld1JlbElkID0gaGVhcF9j cmVhdGVfd2l0aF9jYXRhbG9nKG5ld1BhcnROYW1lLT5yZWxuYW1lLAorCQkJCQkJCQkJCW5hbWVz cGFjZUlkLAorCQkJCQkJCQkJCXBhcmVudF9yZWxmb3JtLT5yZWx0YWJsZXNwYWNlLAorCQkJCQkJ CQkJCUludmFsaWRPaWQsCisJCQkJCQkJCQkJSW52YWxpZE9pZCwKKwkJCQkJCQkJCQlJbnZhbGlk T2lkLAorCQkJCQkJCQkJCW93bmVySWQsCisJCQkJCQkJCQkJcmVsYW1JZCwKKwkJCQkJCQkJCQlk ZXNjcmlwdG9yLAorCQkJCQkJCQkJCU5JTCwKKwkJCQkJCQkJCQlSRUxLSU5EX1JFTEFUSU9OLAor CQkJCQkJCQkJCW5ld1BhcnROYW1lLT5yZWxwZXJzaXN0ZW5jZSwKKwkJCQkJCQkJCQlmYWxzZSwK KwkJCQkJCQkJCQlmYWxzZSwKKwkJCQkJCQkJCQlPTkNPTU1JVF9OT09QLAorCQkJCQkJCQkJCShE YXR1bSkgMCwKKwkJCQkJCQkJCQl0cnVlLAorCQkJCQkJCQkJCWFsbG93U3lzdGVtVGFibGVNb2Rz LAorCQkJCQkJCQkJCXRydWUsCisJCQkJCQkJCQkJSW52YWxpZE9pZCwKKwkJCQkJCQkJCQlOVUxM KTsKKworCS8qCisJICogV2UgbXVzdCBidW1wIHRoZSBjb21tYW5kIGNvdW50ZXIgdG8gbWFrZSB0 aGUgbmV3bHktY3JlYXRlZCByZWxhdGlvbgorCSAqIHR1cGxlIHZpc2libGUgZm9yIG9wZW5pbmcu CisJICovCisJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKKworCS8qCisJICogT3BlbiB0aGUg bmV3IHBhcnRpdGlvbiB3aXRoIG5vIGxvY2ssIGJlY2F1c2Ugd2UgYWxyZWFkeSBoYXZlIGFuCisJ ICogQWNjZXNzRXhjbHVzaXZlTG9jayBwbGFjZWQgdGhlcmUgYWZ0ZXIgY3JlYXRpb24uCisJICov CisJbmV3UmVsID0gdGFibGVfb3BlbihuZXdSZWxJZCwgTm9Mb2NrKTsKKworCS8qIEZpbmQgb3Ig Y3JlYXRlIGEgd29yayBxdWV1ZSBlbnRyeSBmb3IgdGhlIG5ld2x5IGNyZWF0ZWQgdGFibGUuICov CisJbmV3X3BhcnRyZWxfdGFiID0gQVRHZXRRdWV1ZUVudHJ5KHdxdWV1ZSwgbmV3UmVsKTsKKwor CS8qIENyZWF0ZSBjb25zdHJhaW50cywgZGVmYXVsdCB2YWx1ZXMsIGFuZCBnZW5lcmF0ZWQgdmFs dWVzLiAqLworCWNyZWF0ZVRhYmxlQ29uc3RyYWludHMod3F1ZXVlLCBuZXdfcGFydHJlbF90YWIs IHBhcmVudF9yZWwsIG5ld1JlbCk7CisKKwkvKgorCSAqIE5lZWQgdG8gY2FsbCBDb21tYW5kQ291 bnRlckluY3JlbWVudCwgc28gYSBmcmVzaCByZWxjYWNoZSBlbnRyeSBoYXMKKwkgKiBuZXdseSBp bnN0YWxsZWQgY29uc3RyYWludCBpbmZvLgorCSAqLworCUNvbW1hbmRDb3VudGVySW5jcmVtZW50 KCk7CisKKwlyZXR1cm4gbmV3UmVsOworfQorCisvKgorICogTWVyZ2VQYXJ0aXRpb25zTW92ZVJv d3M6IHNjYW4gcGFydGl0aW9ucyB0byBiZSBtZXJnZWQgKG1lcmdpbmdQYXJ0aXRpb25zKQorICog b2YgdGhlIHBhcnRpdGlvbmVkIHRhYmxlIGFuZCBtb3ZlIHJvd3MgaW50byB0aGUgbmV3IHBhcnRp dGlvbgorICogKG5ld1BhcnRSZWwpLiBXZSBhbHNvIHZlcmlmeSBjaGVjayBjb25zdHJhaW50cyBh Z2FpbnN0IHRoZXNlIHJvd3MuCisgKi8KK3N0YXRpYyB2b2lkCitNZXJnZVBhcnRpdGlvbnNNb3Zl Um93cyhMaXN0ICoqd3F1ZXVlLCBMaXN0ICptZXJnaW5nUGFydGl0aW9ucywgUmVsYXRpb24gbmV3 UGFydFJlbCkKK3sKKwlDb21tYW5kSWQJbXljaWQ7CisJRVN0YXRlCSAgICplc3RhdGU7CisJQWx0 ZXJlZFRhYmxlSW5mbyAqdGFiOworCUxpc3RDZWxsICAgKmx0YWI7CisKKwkvKiBUaGUgRlNNIGlz IGVtcHR5LCBzbyBkb24ndCBib3RoZXIgdXNpbmcgaXQuICovCisJaW50CQkJdGlfb3B0aW9ucyA9 IFRBQkxFX0lOU0VSVF9TS0lQX0ZTTTsKKwlCdWxrSW5zZXJ0U3RhdGUgYmlzdGF0ZTsJLyogc3Rh dGUgb2YgYnVsayBpbnNlcnRzIGZvciBwYXJ0aXRpb24gKi8KKwlUdXBsZVRhYmxlU2xvdCAqZHN0 c2xvdDsKKworCS8qIEZpbmQgdGhlIHdvcmsgcXVldWUgZW50cnkgZm9yIHRoZSBuZXcgcGFydGl0 aW9uIHRhYmxlOiBuZXdQYXJ0UmVsLiAqLworCXRhYiA9IEFUR2V0UXVldWVFbnRyeSh3cXVldWUs IG5ld1BhcnRSZWwpOworCisJLyogR2VuZXJhdGUgdGhlIGNvbnN0cmFpbnQgYW5kIGRlZmF1bHQg ZXhlY3V0aW9uIHN0YXRlcy4gKi8KKwllc3RhdGUgPSBDcmVhdGVFeGVjdXRvclN0YXRlKCk7CisK KwlidWlsZEV4cHJlc3Npb25FeGVjdXRpb25TdGF0ZXModGFiLCBuZXdQYXJ0UmVsLCBlc3RhdGUp OworCisJbXljaWQgPSBHZXRDdXJyZW50Q29tbWFuZElkKHRydWUpOworCisJLyogUHJlcGFyZSBh IEJ1bGtJbnNlcnRTdGF0ZSBmb3IgdGFibGVfdHVwbGVfaW5zZXJ0LiAqLworCWJpc3RhdGUgPSBH ZXRCdWxrSW5zZXJ0U3RhdGUoKTsKKworCS8qIENyZWF0ZSB0aGUgbmVjZXNzYXJ5IHR1cGxlIHNs b3QuICovCisJZHN0c2xvdCA9IHRhYmxlX3Nsb3RfY3JlYXRlKG5ld1BhcnRSZWwsIE5VTEwpOwor CisJZm9yZWFjaF9vaWQobWVyZ2luZ19vaWQsIG1lcmdpbmdQYXJ0aXRpb25zKQorCXsKKwkJRXhw ckNvbnRleHQgKmVjb250ZXh0OworCQlUdXBsZVRhYmxlU2xvdCAqc3Jjc2xvdDsKKwkJVHVwbGVD b252ZXJzaW9uTWFwICp0dXBsZV9tYXA7CisJCVRhYmxlU2NhbkRlc2Mgc2NhbjsKKwkJTWVtb3J5 Q29udGV4dCBvbGRDeHQ7CisJCVNuYXBzaG90CXNuYXBzaG90OworCQlSZWxhdGlvbgltZXJnaW5n UGFydGl0aW9uOworCisJCWVjb250ZXh0ID0gR2V0UGVyVHVwbGVFeHByQ29udGV4dChlc3RhdGUp OworCisJCS8qCisJCSAqIFBhcnRpdGlvbiBpcyBhbHJlYWR5IGxvY2tlZCBpbiB0aGUgdHJhbnNm b3JtUGFydGl0aW9uQ21kRm9yTWVyZ2UKKwkJICogZnVuY3Rpb24uCisJCSAqLworCQltZXJnaW5n UGFydGl0aW9uID0gdGFibGVfb3BlbihtZXJnaW5nX29pZCwgTm9Mb2NrKTsKKworCQkvKiBDcmVh dGUgYSBzb3VyY2UgdHVwbGUgc2xvdCBmb3IgdGhlIHBhcnRpdGlvbiBiZWluZyBtZXJnZWQuICov CisJCXNyY3Nsb3QgPSB0YWJsZV9zbG90X2NyZWF0ZShtZXJnaW5nUGFydGl0aW9uLCBOVUxMKTsK KworCQkvKgorCQkgKiBNYXAgY29tcHV0aW5nIGZvciBtb3ZpbmcgYXR0cmlidXRlcyBvZiB0aGUg bWVyZ2VkIHBhcnRpdGlvbiB0byB0aGUKKwkJICogbmV3IHBhcnRpdGlvbi4KKwkJICovCisJCXR1 cGxlX21hcCA9IGNvbnZlcnRfdHVwbGVzX2J5X25hbWUoUmVsYXRpb25HZXREZXNjcihtZXJnaW5n UGFydGl0aW9uKSwKKwkJCQkJCQkJCQkgICBSZWxhdGlvbkdldERlc2NyKG5ld1BhcnRSZWwpKTsK KworCQkvKiBTY2FuIHRocm91Z2ggdGhlIHJvd3MuICovCisJCXNuYXBzaG90ID0gUmVnaXN0ZXJT bmFwc2hvdChHZXRMYXRlc3RTbmFwc2hvdCgpKTsKKwkJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbiht ZXJnaW5nUGFydGl0aW9uLCBzbmFwc2hvdCwgMCwgTlVMTCk7CisKKwkJLyoKKwkJICogU3dpdGNo IHRvIHBlci10dXBsZSBtZW1vcnkgY29udGV4dCBhbmQgcmVzZXQgaXQgZm9yIGVhY2ggdHVwbGUK KwkJICogcHJvZHVjZWQsIHNvIHdlIGRvbid0IGxlYWsgbWVtb3J5LgorCQkgKi8KKwkJb2xkQ3h0 ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEdldFBlclR1cGxlTWVtb3J5Q29udGV4dChlc3RhdGUp KTsKKworCQl3aGlsZSAodGFibGVfc2Nhbl9nZXRuZXh0c2xvdChzY2FuLCBGb3J3YXJkU2NhbkRp cmVjdGlvbiwgc3Jjc2xvdCkpCisJCXsKKwkJCVR1cGxlVGFibGVTbG90ICppbnNlcnRzbG90Owor CisJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCisJCQlpZiAodHVwbGVfbWFwKQorCQkJewor CQkJCS8qIE5lZWQgdG8gdXNlIGEgbWFwIHRvIGNvcHkgYXR0cmlidXRlcy4gKi8KKwkJCQlpbnNl cnRzbG90ID0gZXhlY3V0ZV9hdHRyX21hcF9zbG90KHR1cGxlX21hcC0+YXR0ck1hcCwgc3Jjc2xv dCwgZHN0c2xvdCk7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJc2xvdF9nZXRhbGxhdHRycyhz cmNzbG90KTsKKworCQkJCS8qIENvcHkgYXR0cmlidXRlcyBkaXJlY3RseS4gKi8KKwkJCQlpbnNl cnRzbG90ID0gZHN0c2xvdDsKKworCQkJCUV4ZWNDbGVhclR1cGxlKGluc2VydHNsb3QpOworCisJ CQkJbWVtY3B5KGluc2VydHNsb3QtPnR0c192YWx1ZXMsIHNyY3Nsb3QtPnR0c192YWx1ZXMsCisJ CQkJCSAgIHNpemVvZihEYXR1bSkgKiBzcmNzbG90LT50dHNfbnZhbGlkKTsKKwkJCQltZW1jcHko aW5zZXJ0c2xvdC0+dHRzX2lzbnVsbCwgc3Jjc2xvdC0+dHRzX2lzbnVsbCwKKwkJCQkJICAgc2l6 ZW9mKGJvb2wpICogc3Jjc2xvdC0+dHRzX252YWxpZCk7CisKKwkJCQlFeGVjU3RvcmVWaXJ0dWFs VHVwbGUoaW5zZXJ0c2xvdCk7CisJCQl9CisKKwkJCS8qCisJCQkgKiBDb25zdHJhaW50cyBhbmQg R0VORVJBVEVEIGV4cHJlc3Npb25zIG1pZ2h0IHJlZmVyZW5jZSB0aGUKKwkJCSAqIHRhYmxlb2lk IGNvbHVtbiwgc28gZmlsbCB0dHNfdGFibGVPaWQgd2l0aCB0aGUgZGVzaXJlZCB2YWx1ZS4KKwkJ CSAqIChXZSBtdXN0IGRvIHRoaXMgZWFjaCB0aW1lLCBiZWNhdXNlIGl0IGdldHMgb3ZlcndyaXR0 ZW4gd2l0aAorCQkJICogbmV3cmVsJ3MgT0lEIGR1cmluZyBzdG9yaW5nLikKKwkJCSAqLworCQkJ aW5zZXJ0c2xvdC0+dHRzX3RhYmxlT2lkID0gUmVsYXRpb25HZXRSZWxpZChuZXdQYXJ0UmVsKTsK KworCQkJLyoKKwkJCSAqIE5vdywgZXZhbHVhdGUgYW55IGdlbmVyYXRlZCBleHByZXNzaW9ucyB3 aG9zZSBpbnB1dHMgY29tZSBmcm9tCisJCQkgKiB0aGUgbmV3IHR1cGxlLiAgV2UgYXNzdW1lIHRo ZXNlIGNvbHVtbnMgd29uJ3QgcmVmZXJlbmNlIGVhY2gKKwkJCSAqIG90aGVyLCBzbyB0aGF0IHRo ZXJlJ3Mgbm8gb3JkZXJpbmcgZGVwZW5kZW5jeS4KKwkJCSAqLworCQkJZXZhbHVhdGVHZW5lcmF0 ZWRFeHByZXNzaW9uc0FuZENoZWNrQ29uc3RyYWludHModGFiLCBuZXdQYXJ0UmVsLAorCQkJCQkJ CQkJCQkJCQkJaW5zZXJ0c2xvdCwgZWNvbnRleHQpOworCisJCQkvKiBXcml0ZSB0aGUgdHVwbGUg b3V0IHRvIHRoZSBuZXcgcmVsYXRpb24uICovCisJCQl0YWJsZV90dXBsZV9pbnNlcnQobmV3UGFy dFJlbCwgaW5zZXJ0c2xvdCwgbXljaWQsCisJCQkJCQkJICAgdGlfb3B0aW9ucywgYmlzdGF0ZSk7 CisKKwkJCVJlc2V0RXhwckNvbnRleHQoZWNvbnRleHQpOworCQl9CisKKwkJTWVtb3J5Q29udGV4 dFN3aXRjaFRvKG9sZEN4dCk7CisJCXRhYmxlX2VuZHNjYW4oc2Nhbik7CisJCVVucmVnaXN0ZXJT bmFwc2hvdChzbmFwc2hvdCk7CisKKwkJaWYgKHR1cGxlX21hcCkKKwkJCWZyZWVfY29udmVyc2lv bl9tYXAodHVwbGVfbWFwKTsKKworCQlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHNyY3Ns b3QpOworCQl0YWJsZV9jbG9zZShtZXJnaW5nUGFydGl0aW9uLCBOb0xvY2spOworCX0KKworCUZy ZWVFeGVjdXRvclN0YXRlKGVzdGF0ZSk7CisJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChk c3RzbG90KTsKKwlGcmVlQnVsa0luc2VydFN0YXRlKGJpc3RhdGUpOworCisJdGFibGVfZmluaXNo X2J1bGtfaW5zZXJ0KG5ld1BhcnRSZWwsIHRpX29wdGlvbnMpOworCisJLyoKKwkgKiBXZSBkb24n dCBuZWVkIHRvIHByb2Nlc3MgdGhpcyBuZXdQYXJ0UmVsIHNpbmNlIHdlIGFscmVhZHkgcHJvY2Vz c2VkIGl0CisJICogaGVyZSwgc28gZGVsZXRlIHRoZSBBTFRFUiBUQUJMRSBxdWV1ZSBmb3IgaXQu CisJICovCisJZm9yZWFjaChsdGFiLCAqd3F1ZXVlKQorCXsKKwkJdGFiID0gKEFsdGVyZWRUYWJs ZUluZm8gKikgbGZpcnN0KGx0YWIpOworCQlpZiAodGFiLT5yZWxpZCA9PSBSZWxhdGlvbkdldFJl bGlkKG5ld1BhcnRSZWwpKQorCQl7CisJCQkqd3F1ZXVlID0gbGlzdF9kZWxldGVfY2VsbCgqd3F1 ZXVlLCBsdGFiKTsKKwkJCWJyZWFrOworCQl9CisJfQorfQorCisvKgorICogZGV0YWNoUGFydGl0 aW9uVGFibGU6IGRldGFjaCBwYXJ0aXRpb24gImNoaWxkX3JlbCIgZnJvbSBwYXJ0aXRpb25lZCB0 YWJsZQorICogInBhcmVudF9yZWwiIHdpdGggZGVmYXVsdCBwYXJ0aXRpb24gaWRlbnRpZmllciAi ZGVmYXVsdFBhcnRPaWQiCisgKi8KK3N0YXRpYyB2b2lkCitkZXRhY2hQYXJ0aXRpb25UYWJsZShS ZWxhdGlvbiBwYXJlbnRfcmVsLCBSZWxhdGlvbiBjaGlsZF9yZWwsIE9pZCBkZWZhdWx0UGFydE9p ZCkKK3sKKwkvKiBSZW1vdmUgdGhlIHBnX2luaGVyaXRzIHJvdyBmaXJzdC4gKi8KKwlSZW1vdmVJ bmhlcml0YW5jZShjaGlsZF9yZWwsIHBhcmVudF9yZWwsIGZhbHNlKTsKKworCS8qCisJICogRGV0 YWNoaW5nIHRoZSBwYXJ0aXRpb24gbWlnaHQgaW52b2x2ZSBUT0FTVCB0YWJsZSBhY2Nlc3MsIHNv IGVuc3VyZSB3ZQorCSAqIGhhdmUgYSB2YWxpZCBzbmFwc2hvdC4KKwkgKi8KKwlQdXNoQWN0aXZl U25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKworCS8qIERvIHRoZSBmaW5hbCBw YXJ0IG9mIGRldGFjaGluZy4gKi8KKwlEZXRhY2hQYXJ0aXRpb25GaW5hbGl6ZShwYXJlbnRfcmVs LCBjaGlsZF9yZWwsIGZhbHNlLCBkZWZhdWx0UGFydE9pZCk7CisKKwlQb3BBY3RpdmVTbmFwc2hv dCgpOworfQorCisvKgorICogQUxURVIgVEFCTEUgPG5hbWU+IE1FUkdFIFBBUlRJVElPTlMgPHBh cnRpdGlvbi1saXN0PiBJTlRPIDxwYXJ0aXRpb24tbmFtZT4KKyAqLworc3RhdGljIHZvaWQKK0FU RXhlY01lcmdlUGFydGl0aW9ucyhMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIs IFJlbGF0aW9uIHJlbCwKKwkJCQkJICBQYXJ0aXRpb25DbWQgKmNtZCwgQWx0ZXJUYWJsZVV0aWxp dHlDb250ZXh0ICpjb250ZXh0KQoreworCVJlbGF0aW9uCW5ld1BhcnRSZWw7CisJTGlzdAkgICAq bWVyZ2luZ1BhcnRpdGlvbnMgPSBOSUw7CisJT2lkCQkJZGVmYXVsdFBhcnRPaWQ7CisJT2lkCQkJ ZXhpc3RpbmdSZWxpZDsKKwlPaWQJCQlvd25lcklkID0gSW52YWxpZE9pZDsKKwlPaWQJCQlzYXZl X3VzZXJpZDsKKwlpbnQJCQlzYXZlX3NlY19jb250ZXh0OworCWludAkJCXNhdmVfbmVzdGxldmVs OworCisJLyoKKwkgKiBDaGVjayBvd25lcnNoaXAgb2YgbWVyZ2VkIHBhcnRpdGlvbnMgLSBwYXJ0 aXRpb25zIHdpdGggZGlmZmVyZW50IG93bmVycworCSAqIGNhbm5vdCBiZSBtZXJnZWQuIEFsc28s IGNvbGxlY3QgdGhlIE9JRHMgb2YgdGhlc2UgcGFydGl0aW9ucyBkdXJpbmcgdGhlCisJICogY2hl Y2suCisJICovCisJZm9yZWFjaF9ub2RlKFJhbmdlVmFyLCBuYW1lLCBjbWQtPnBhcnRsaXN0KQor CXsKKwkJUmVsYXRpb24JbWVyZ2luZ1BhcnRpdGlvbjsKKworCQkvKgorCQkgKiBXZSBhcmUgZ29p bmcgdG8gZGV0YWNoIGFuZCByZW1vdmUgdGhpcyBwYXJ0aXRpb24uICBXZSBhbHJlYWR5IHRvb2sK KwkJICogQWNjZXNzRXhjbHVzaXZlTG9jayBsb2NrIG9uIHRyYW5zZm9ybVBhcnRpdGlvbkNtZEZv ck1lcmdlLCBzbyBoZXJlLAorCQkgKiBOb0xvY2sgaXMgZmluZS4KKwkJICovCisJCW1lcmdpbmdQ YXJ0aXRpb24gPSB0YWJsZV9vcGVucnZfZXh0ZW5kZWQobmFtZSwgTm9Mb2NrLCBmYWxzZSk7CisJ CUFzc2VydChDaGVja1JlbGF0aW9uTG9ja2VkQnlNZShtZXJnaW5nUGFydGl0aW9uLCBBY2Nlc3NF eGNsdXNpdmVMb2NrLCBmYWxzZSkpOworCisJCWlmIChPaWRJc1ZhbGlkKG93bmVySWQpKQorCQl7 CisJCQkvKiBEbyB0aGUgcGFydGl0aW9ucyBiZWluZyBtZXJnZWQgaGF2ZSBkaWZmZXJlbnQgb3du ZXJzPyAqLworCQkJaWYgKG93bmVySWQgIT0gbWVyZ2luZ1BhcnRpdGlvbi0+cmRfcmVsLT5yZWxv d25lcikKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVf Tk9UX1NVUFBPUlRFRCksCisJCQkJCQllcnJtc2coInBhcnRpdGlvbnMgYmVpbmcgbWVyZ2VkIGhh dmUgZGlmZmVyZW50IG93bmVycyIpKTsKKwkJfQorCQllbHNlCisJCQlvd25lcklkID0gbWVyZ2lu Z1BhcnRpdGlvbi0+cmRfcmVsLT5yZWxvd25lcjsKKworCQkvKiBTdG9yZSB0aGUgbmV4dCBtZXJn aW5nIHBhcnRpdGlvbiBpbnRvIHRoZSBsaXN0LiAqLworCQltZXJnaW5nUGFydGl0aW9ucyA9IGxh cHBlbmRfb2lkKG1lcmdpbmdQYXJ0aXRpb25zLAorCQkJCQkJCQkJCVJlbGF0aW9uR2V0UmVsaWQo bWVyZ2luZ1BhcnRpdGlvbikpOworCisJCXRhYmxlX2Nsb3NlKG1lcmdpbmdQYXJ0aXRpb24sIE5v TG9jayk7CisJfQorCisJLyogTG9vayB1cCB0aGUgZXhpc3RpbmcgcmVsYXRpb24gYnkgdGhlIG5l dyBwYXJ0aXRpb24gbmFtZS4gKi8KKwlSYW5nZVZhckdldEFuZENoZWNrQ3JlYXRpb25OYW1lc3Bh Y2UoY21kLT5uYW1lLCBOb0xvY2ssICZleGlzdGluZ1JlbGlkKTsKKworCS8qCisJICogQ2hlY2sg aWYgdGhpcyBuYW1lIGlzIGFscmVhZHkgdGFrZW4uICBUaGlzIGhlbHBzIHVzIHRvIGRldGVjdCB0 aGUKKwkgKiBzaXR1YXRpb24gd2hlbiBvbmUgb2YgdGhlIG1lcmdpbmcgcGFydGl0aW9ucyBoYXMg dGhlIHNhbWUgbmFtZSBhcyB0aGUKKwkgKiBuZXcgcGFydGl0aW9uLiAgT3RoZXJ3aXNlLCB0aGlz IHdvdWxkIGZhaWwgbGF0ZXIgb24gYW55d2F5LCBidXQKKwkgKiBjYXRjaGluZyB0aGlzIGhlcmUg YWxsb3dzIHVzIHRvIGVtaXQgYSBuaWNlciBlcnJvciBtZXNzYWdlLgorCSAqLworCWlmIChPaWRJ c1ZhbGlkKGV4aXN0aW5nUmVsaWQpKQorCXsKKwkJaWYgKGxpc3RfbWVtYmVyX29pZChtZXJnaW5n UGFydGl0aW9ucywgZXhpc3RpbmdSZWxpZCkpCisJCXsKKwkJCS8qCisJCQkgKiBUaGUgbmV3IHBh cnRpdGlvbiBoYXMgdGhlIHNhbWUgbmFtZSBhcyBvbmUgb2YgdGhlIG1lcmdpbmcKKwkJCSAqIHBh cnRpdGlvbnMuCisJCQkgKi8KKwkJCWNoYXIJCXRtcFJlbE5hbWVbTkFNRURBVEFMRU5dOworCisJ CQkvKiBHZW5lcmF0ZSBhIHRlbXBvcmFyeSBuYW1lLiAqLworCQkJc3ByaW50Zih0bXBSZWxOYW1l LCAibWVyZ2UtJXUtJVgtdG1wIiwgUmVsYXRpb25HZXRSZWxpZChyZWwpLCBNeVByb2NQaWQpOwor CisJCQkvKgorCQkJICogUmVuYW1lIHRoZSBleGlzdGluZyBwYXJ0aXRpb24gd2l0aCBhIHRlbXBv cmFyeSBuYW1lLCBsZWF2aW5nIGl0CisJCQkgKiBmcmVlIGZvciB0aGUgbmV3IHBhcnRpdGlvbi4g IFdlIGRvbid0IG5lZWQgdG8gY2FyZSBhYm91dCB0aGlzCisJCQkgKiBpbiB0aGUgZnV0dXJlIGJl Y2F1c2Ugd2UncmUgZ29pbmcgdG8gZXZlbnR1YWxseSBkcm9wIHRoZQorCQkJICogZXhpc3Rpbmcg cGFydGl0aW9uIGFueXdheS4KKwkJCSAqLworCQkJUmVuYW1lUmVsYXRpb25JbnRlcm5hbChleGlz dGluZ1JlbGlkLCB0bXBSZWxOYW1lLCB0cnVlLCBmYWxzZSk7CisKKwkJCS8qCisJCQkgKiBXZSBt dXN0IGJ1bXAgdGhlIGNvbW1hbmQgY291bnRlciB0byBtYWtlIHRoZSBuZXcgcGFydGl0aW9uCisJ CQkgKiB0dXBsZSB2aXNpYmxlIGZvciByZW5hbWUuCisJCQkgKi8KKwkJCUNvbW1hbmRDb3VudGVy SW5jcmVtZW50KCk7CisJCX0KKwkJZWxzZQorCQl7CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQll cnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX1RBQkxFKSwKKwkJCQkJZXJybXNnKCJyZWxhdGlvbiBc IiVzXCIgYWxyZWFkeSBleGlzdHMiLCBjbWQtPm5hbWUtPnJlbG5hbWUpKTsKKwkJfQorCX0KKwor CWRlZmF1bHRQYXJ0T2lkID0KKwkJZ2V0X2RlZmF1bHRfb2lkX2Zyb21fcGFydGRlc2MoUmVsYXRp b25HZXRQYXJ0aXRpb25EZXNjKHJlbCwgdHJ1ZSkpOworCisJLyogRGV0YWNoIGFsbCBtZXJnaW5n IHBhcnRpdGlvbnMuICovCisJZm9yZWFjaF9vaWQobWVyZ2luZ1BhcnRpdGlvbk9pZCwgbWVyZ2lu Z1BhcnRpdGlvbnMpCisJeworCQlSZWxhdGlvbgljaGlsZF9yZWw7CisKKwkJY2hpbGRfcmVsID0g dGFibGVfb3BlbihtZXJnaW5nUGFydGl0aW9uT2lkLCBOb0xvY2spOworCisJCWRldGFjaFBhcnRp dGlvblRhYmxlKHJlbCwgY2hpbGRfcmVsLCBkZWZhdWx0UGFydE9pZCk7CisKKwkJdGFibGVfY2xv c2UoY2hpbGRfcmVsLCBOb0xvY2spOworCX0KKworCS8qCisJICogUGVyZm9ybSBhIHByZWxpbWlu YXJ5IGNoZWNrIHRvIGRldGVybWluZSB3aGV0aGVyIGl0J3Mgc2FmZSB0byBkcm9wIGFsbAorCSAq IG1lcmdpbmcgcGFydGl0aW9ucyBiZWZvcmUgd2UgYWN0dWFsbHkgZG8gc28gbGF0ZXIuIEFmdGVy IG1lcmdpbmcgcm93cworCSAqIGludG8gdGhlIG5ldyBwYXJ0aXRpb25zIHZpYSBNZXJnZVBhcnRp dGlvbnNNb3ZlUm93cywgYWxsIG9sZCBwYXJ0aXRpb25zCisJICogbmVlZCB0byBiZSBkcm9wcGVk LiBIb3dldmVyLCBzaW5jZSB0aGUgZHJvcCBiZWhhdmlvciBpcyBEUk9QX1JFU1RSSUNUCisJICog YW5kIHRoZSBtZXJnZSBwcm9jZXNzIChNZXJnZVBhcnRpdGlvbnNNb3ZlUm93cykgY2FuIGJlIHRp bWUtY29uc3VtaW5nLAorCSAqIHBlcmZvcm1pbmcgYW4gZWFybHkgY2hlY2sgb24gdGhlIGRyb3Ag ZWxpZ2liaWxpdHkgb2Ygb2xkIHBhcnRpdGlvbnMgaXMKKwkgKiBwcmVmZXJhYmxlLgorCSAqLwor CWZvcmVhY2hfb2lkKG1lcmdpbmdQYXJ0aXRpb25PaWQsIG1lcmdpbmdQYXJ0aXRpb25zKQorCXsK KwkJT2JqZWN0QWRkcmVzcyBvYmplY3Q7CisKKwkJLyogR2V0IG9pZCBvZiB0aGUgbGF0ZXIgdG8g YmUgZHJvcHBlZCByZWxhdGlvbi4gKi8KKwkJb2JqZWN0Lm9iamVjdElkID0gbWVyZ2luZ1BhcnRp dGlvbk9pZDsKKwkJb2JqZWN0LmNsYXNzSWQgPSBSZWxhdGlvblJlbGF0aW9uSWQ7CisJCW9iamVj dC5vYmplY3RTdWJJZCA9IDA7CisKKwkJcGVyZm9ybURlbGV0aW9uQ2hlY2soJm9iamVjdCwgRFJP UF9SRVNUUklDVCwgUEVSRk9STV9ERUxFVElPTl9JTlRFUk5BTCk7CisJfQorCisJLyoKKwkgKiBD cmVhdGUgYSB0YWJsZSBmb3IgdGhlIG5ldyBwYXJ0aXRpb24sIHVzaW5nIHRoZSBwYXJ0aXRpb25l ZCB0YWJsZSBhcyBhCisJICogbW9kZWwuCisJICovCisJQXNzZXJ0KE9pZElzVmFsaWQob3duZXJJ ZCkpOworCW5ld1BhcnRSZWwgPSBjcmVhdGVQYXJ0aXRpb25UYWJsZSh3cXVldWUsIGNtZC0+bmFt ZSwgcmVsLCBvd25lcklkKTsKKworCS8qCisJICogU3dpdGNoIHRvIHRoZSB0YWJsZSBvd25lcidz IHVzZXJpZCwgc28gdGhhdCBhbnkgaW5kZXggZnVuY3Rpb25zIGFyZSBydW4KKwkgKiBhcyB0aGF0 IHVzZXIuICBBbHNvLCBsb2NrZG93biBzZWN1cml0eS1yZXN0cmljdGVkIG9wZXJhdGlvbnMgYW5k CisJICogYXJyYW5nZSB0byBtYWtlIEdVQyB2YXJpYWJsZSBjaGFuZ2VzIGxvY2FsIHRvIHRoaXMg Y29tbWFuZC4KKwkgKgorCSAqIE5lZWQgdG8gZG8gaXQgYWZ0ZXIgZGV0ZXJtaW5pbmcgdGhlIG5h bWVzcGFjZSBpbiB0aGUKKwkgKiBjcmVhdGVQYXJ0aXRpb25UYWJsZSgpIGNhbGwuCisJICovCisJ R2V0VXNlcklkQW5kU2VjQ29udGV4dCgmc2F2ZV91c2VyaWQsICZzYXZlX3NlY19jb250ZXh0KTsK KwlTZXRVc2VySWRBbmRTZWNDb250ZXh0KG93bmVySWQsCisJCQkJCQkgICBzYXZlX3NlY19jb250 ZXh0IHwgU0VDVVJJVFlfUkVTVFJJQ1RFRF9PUEVSQVRJT04pOworCXNhdmVfbmVzdGxldmVsID0g TmV3R1VDTmVzdExldmVsKCk7CisJUmVzdHJpY3RTZWFyY2hQYXRoKCk7CisKKwkvKiBDb3B5IGRh dGEgZnJvbSBtZXJnZWQgcGFydGl0aW9ucyB0byB0aGUgbmV3IHBhcnRpdGlvbi4gKi8KKwlNZXJn ZVBhcnRpdGlvbnNNb3ZlUm93cyh3cXVldWUsIG1lcmdpbmdQYXJ0aXRpb25zLCBuZXdQYXJ0UmVs KTsKKworCS8qIERyb3AgdGhlIGN1cnJlbnQgcGFydGl0aW9ucyBiZWZvcmUgYXR0YWNoaW5nIHRo ZSBuZXcgb25lLiAqLworCWZvcmVhY2hfb2lkKG1lcmdpbmdQYXJ0aXRpb25PaWQsIG1lcmdpbmdQ YXJ0aXRpb25zKQorCXsKKwkJT2JqZWN0QWRkcmVzcyBvYmplY3Q7CisKKwkJb2JqZWN0Lm9iamVj dElkID0gbWVyZ2luZ1BhcnRpdGlvbk9pZDsKKwkJb2JqZWN0LmNsYXNzSWQgPSBSZWxhdGlvblJl bGF0aW9uSWQ7CisJCW9iamVjdC5vYmplY3RTdWJJZCA9IDA7CisKKwkJcGVyZm9ybURlbGV0aW9u KCZvYmplY3QsIERST1BfUkVTVFJJQ1QsIDApOworCX0KKworCWxpc3RfZnJlZShtZXJnaW5nUGFy dGl0aW9ucyk7CisKKwkvKgorCSAqIEF0dGFjaCBhIG5ldyBwYXJ0aXRpb24gdG8gdGhlIHBhcnRp dGlvbmVkIHRhYmxlLiB3cXVldWUgPSBOVUxMOgorCSAqIHZlcmlmaWNhdGlvbiBmb3IgZWFjaCBj bG9uZWQgY29uc3RyYWludCBpcyBub3QgbmVlZGVkLgorCSAqLworCWF0dGFjaFBhcnRpdGlvblRh YmxlKE5VTEwsIHJlbCwgbmV3UGFydFJlbCwgY21kLT5ib3VuZCk7CisKKwkvKiBLZWVwIHRoZSBs b2NrIHVudGlsIGNvbW1pdC4gKi8KKwl0YWJsZV9jbG9zZShuZXdQYXJ0UmVsLCBOb0xvY2spOwor CisJLyogUm9sbCBiYWNrIGFueSBHVUMgY2hhbmdlcyBleGVjdXRlZCBieSBpbmRleCBmdW5jdGlv bnMuICovCisJQXRFT1hhY3RfR1VDKGZhbHNlLCBzYXZlX25lc3RsZXZlbCk7CisKKwkvKiBSZXN0 b3JlIHRoZSB1c2VyaWQgYW5kIHNlY3VyaXR5IGNvbnRleHQuICovCisJU2V0VXNlcklkQW5kU2Vj Q29udGV4dChzYXZlX3VzZXJpZCwgc2F2ZV9zZWNfY29udGV4dCk7Cit9CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRl eCA3ODU2Y2U5ZDc4Zi4uNTYyZjExZDY2NzcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNl ci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtNzYyLDcgKzc2Miw3 IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBM aXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJT1JERVIgT1JESU5BTElUWSBPVEhFUlMgT1VU X1AgT1VURVJfUAogCU9WRVIgT1ZFUkxBUFMgT1ZFUkxBWSBPVkVSUklESU5HIE9XTkVEIE9XTkVS CiAKLQlQQVJBTExFTCBQQVJBTUVURVIgUEFSU0VSIFBBUlRJQUwgUEFSVElUSU9OIFBBU1NJTkcg UEFTU1dPUkQgUEFUSAorCVBBUkFMTEVMIFBBUkFNRVRFUiBQQVJTRVIgUEFSVElBTCBQQVJUSVRJ T04gUEFSVElUSU9OUyBQQVNTSU5HIFBBU1NXT1JEIFBBVEgKIAlQRVJJT0QgUExBQ0lORyBQTEFO IFBMQU5TIFBPTElDWQogCVBPU0lUSU9OIFBSRUNFRElORyBQUkVDSVNJT04gUFJFU0VSVkUgUFJF UEFSRSBQUkVQQVJFRCBQUklNQVJZCiAJUFJJT1IgUFJJVklMRUdFUyBQUk9DRURVUkFMIFBST0NF RFVSRSBQUk9DRURVUkVTIFBST0dSQU0gUFVCTElDQVRJT04KQEAgLTIzOTUsNiArMjM5NSw3IEBA IHBhcnRpdGlvbl9jbWQ6CiAJCQkJCW4tPnN1YnR5cGUgPSBBVF9BdHRhY2hQYXJ0aXRpb247CiAJ CQkJCWNtZC0+bmFtZSA9ICQzOwogCQkJCQljbWQtPmJvdW5kID0gJDQ7CisJCQkJCWNtZC0+cGFy dGxpc3QgPSBOSUw7CiAJCQkJCWNtZC0+Y29uY3VycmVudCA9IGZhbHNlOwogCQkJCQluLT5kZWYg PSAoTm9kZSAqKSBjbWQ7CiAKQEAgLTI0MDksNiArMjQxMCw3IEBAIHBhcnRpdGlvbl9jbWQ6CiAJ CQkJCW4tPnN1YnR5cGUgPSBBVF9EZXRhY2hQYXJ0aXRpb247CiAJCQkJCWNtZC0+bmFtZSA9ICQz OwogCQkJCQljbWQtPmJvdW5kID0gTlVMTDsKKwkJCQkJY21kLT5wYXJ0bGlzdCA9IE5JTDsKIAkJ CQkJY21kLT5jb25jdXJyZW50ID0gJDQ7CiAJCQkJCW4tPmRlZiA9IChOb2RlICopIGNtZDsKIApA QCAtMjQyMiw2ICsyNDI0LDIxIEBAIHBhcnRpdGlvbl9jbWQ6CiAJCQkJCW4tPnN1YnR5cGUgPSBB VF9EZXRhY2hQYXJ0aXRpb25GaW5hbGl6ZTsKIAkJCQkJY21kLT5uYW1lID0gJDM7CiAJCQkJCWNt ZC0+Ym91bmQgPSBOVUxMOworCQkJCQljbWQtPnBhcnRsaXN0ID0gTklMOworCQkJCQljbWQtPmNv bmN1cnJlbnQgPSBmYWxzZTsKKwkJCQkJbi0+ZGVmID0gKE5vZGUgKikgY21kOworCQkJCQkkJCA9 IChOb2RlICopIG47CisJCQkJfQorCQkJLyogQUxURVIgVEFCTEUgPG5hbWU+IE1FUkdFIFBBUlRJ VElPTlMgKCkgSU5UTyA8cGFydGl0aW9uX25hbWU+ICovCisJCQl8IE1FUkdFIFBBUlRJVElPTlMg JygnIHF1YWxpZmllZF9uYW1lX2xpc3QgJyknIElOVE8gcXVhbGlmaWVkX25hbWUKKwkJCQl7CisJ CQkJCUFsdGVyVGFibGVDbWQgKm4gPSBtYWtlTm9kZShBbHRlclRhYmxlQ21kKTsKKwkJCQkJUGFy dGl0aW9uQ21kICpjbWQgPSBtYWtlTm9kZShQYXJ0aXRpb25DbWQpOworCisJCQkJCW4tPnN1YnR5 cGUgPSBBVF9NZXJnZVBhcnRpdGlvbnM7CisJCQkJCWNtZC0+bmFtZSA9ICQ3OworCQkJCQljbWQt PmJvdW5kID0gTlVMTDsKKwkJCQkJY21kLT5wYXJ0bGlzdCA9ICQ0OwogCQkJCQljbWQtPmNvbmN1 cnJlbnQgPSBmYWxzZTsKIAkJCQkJbi0+ZGVmID0gKE5vZGUgKikgY21kOwogCQkJCQkkJCA9IChO b2RlICopIG47CkBAIC0yNDM4LDYgKzI0NTUsNyBAQCBpbmRleF9wYXJ0aXRpb25fY21kOgogCQkJ CQluLT5zdWJ0eXBlID0gQVRfQXR0YWNoUGFydGl0aW9uOwogCQkJCQljbWQtPm5hbWUgPSAkMzsK IAkJCQkJY21kLT5ib3VuZCA9IE5VTEw7CisJCQkJCWNtZC0+cGFydGxpc3QgPSBOSUw7CiAJCQkJ CWNtZC0+Y29uY3VycmVudCA9IGZhbHNlOwogCQkJCQluLT5kZWYgPSAoTm9kZSAqKSBjbWQ7CiAK QEAgLTE4MDM4LDYgKzE4MDU2LDcgQEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBQQVJTRVIK IAkJCXwgUEFSVElBTAogCQkJfCBQQVJUSVRJT04KKwkJCXwgUEFSVElUSU9OUwogCQkJfCBQQVNT SU5HCiAJCQl8IFBBU1NXT1JECiAJCQl8IFBBVEgKQEAgLTE4NjY4LDYgKzE4Njg3LDcgQEAgYmFy ZV9sYWJlbF9rZXl3b3JkOgogCQkJfCBQQVJTRVIKIAkJCXwgUEFSVElBTAogCQkJfCBQQVJUSVRJ T04KKwkJCXwgUEFSVElUSU9OUwogCQkJfCBQQVNTSU5HCiAJCQl8IFBBU1NXT1JECiAJCQl8IFBB VEgKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMgYi9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCmluZGV4IGU5NmIzOGE1OWQ1Li5iZjAyZTM4 Nzg1ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYworKysg Yi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCkBAIC0zMiw2ICszMiw3IEBACiAj aW5jbHVkZSAiY2F0YWxvZy9oZWFwLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9pbmRleC5oIgogI2lu Y2x1ZGUgImNhdGFsb2cvbmFtZXNwYWNlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wYXJ0aXRpb24u aCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2FtLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb2xs YXRpb24uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbnN0cmFpbnQuaCIKQEAgLTU4LDYgKzU5 LDggQEAKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfdHlwZS5oIgogI2luY2x1ZGUgInBhcnNlci9w YXJzZV91dGlsY21kLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlci5oIgorI2luY2x1ZGUgInBh cnRpdGlvbmluZy9wYXJ0Ym91bmRzLmgiCisjaW5jbHVkZSAicGFydGl0aW9uaW5nL3BhcnRkZXNj LmgiCiAjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlTWFuaXAuaCIKICNpbmNsdWRlICJ1dGlscy9h Y2wuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgpAQCAtMzUwOSw2ICszNTEyLDEzNSBA QCB0cmFuc2Zvcm1SdWxlU3RtdChSdWxlU3RtdCAqc3RtdCwgY29uc3QgY2hhciAqcXVlcnlTdHJp bmcsCiB9CiAKIAorLyoKKyAqIGNoZWNrUGFydGl0aW9uCisgKiBDaGVjayB3aGV0aGVyIHBhcnRS ZWxPaWQgaXMgYSBsZWFmIHBhcnRpdGlvbiBvZiB0aGUgcGFyZW50IHRhYmxlIChyZWwpLgorICov CitzdGF0aWMgdm9pZAorY2hlY2tQYXJ0aXRpb24oUmVsYXRpb24gcmVsLCBPaWQgcGFydFJlbE9p ZCkKK3sKKwlSZWxhdGlvbglwYXJ0UmVsOworCisJcGFydFJlbCA9IHRhYmxlX29wZW4ocGFydFJl bE9pZCwgTm9Mb2NrKTsKKworCWlmIChwYXJ0UmVsLT5yZF9yZWwtPnJlbGtpbmQgIT0gUkVMS0lO RF9SRUxBVElPTikKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfV1JPTkdf T0JKRUNUX1RZUEUpLAorCQkJCWVycm1zZygiXCIlc1wiIGlzIG5vdCBhIHRhYmxlIiwgUmVsYXRp b25HZXRSZWxhdGlvbk5hbWUocGFydFJlbCkpLAorCQkJCWVycmhpbnQoIkFMVEVSIFRBQkxFIC4u LiBNRVJHRSBQQVJUSVRJT05TIGNhbiBvbmx5IG1lcmdlIHBhcnRpdGlvbnMgZG9uJ3QgaGF2ZSBz dWItcGFydGl0aW9ucyIpKTsKKworCWlmICghcGFydFJlbC0+cmRfcmVsLT5yZWxpc3BhcnRpdGlv bikKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZ UEUpLAorCQkJCWVycm1zZygiXCIlc1wiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiBwYXJ0aXRpb25l ZCB0YWJsZSBcIiVzXCIiLAorCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShwYXJ0UmVs KSwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSksCisJCQkJZXJyaGludCgiQUxURVIgVEFC TEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgY2FuIG9ubHkgbWVyZ2UgcGFydGl0aW9ucyBkb24ndCBo YXZlIHN1Yi1wYXJ0aXRpb25zIikpOworCisJaWYgKGdldF9wYXJ0aXRpb25fcGFyZW50KHBhcnRS ZWxPaWQsIGZhbHNlKSAhPSBSZWxhdGlvbkdldFJlbGlkKHJlbCkpCisJCWVyZXBvcnQoRVJST1Is CisJCQkJZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9UQUJMRSksCisJCQkJZXJybXNnKCJyZWxh dGlvbiBcIiVzXCIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHJlbGF0aW9uIFwiJXNcIiIsCisJCQkJ CSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHBhcnRSZWwpLCBSZWxhdGlvbkdldFJlbGF0aW9u TmFtZShyZWwpKSwKKwkJCQllcnJoaW50KCJBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9O UyBjYW4gb25seSBtZXJnZSBwYXJ0aXRpb25zIGRvbid0IGhhdmUgc3ViLXBhcnRpdGlvbnMiKSk7 CisKKwl0YWJsZV9jbG9zZShwYXJ0UmVsLCBOb0xvY2spOworfQorCisvKgorICogdHJhbnNmb3Jt UGFydGl0aW9uQ21kRm9yTWVyZ2UgLQorICoJCWFuYWx5emUgdGhlIEFMVEVSIFRBQkxFIC4uLiBN RVJHRSBQQVJUSVRJT05TIGNvbW1hbmQKKyAqCisgKiBEb2VzIHNpbXBsZSBjaGVja3MgZm9yIG1l cmdlZCBwYXJ0aXRpb25zLiBDYWxjdWxhdGVzIGJvdW5kIG9mIHRoZSByZXN1bHRpbmcKKyAqIHBh cnRpdGlvbi4KKyAqLworc3RhdGljIHZvaWQKK3RyYW5zZm9ybVBhcnRpdGlvbkNtZEZvck1lcmdl KENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFBhcnRpdGlvbkNtZCAqcGFydGNtZCkKK3sKKwlPaWQJ CQlkZWZhdWx0UGFydE9pZDsKKwlPaWQJCQlwYXJ0T2lkOworCVJlbGF0aW9uCXBhcmVudCA9IGN4 dC0+cmVsOworCVBhcnRpdGlvbktleSBrZXk7CisJY2hhcgkJc3RyYXRlZ3k7CisJTGlzdENlbGwg ICAqbGlzdHB0ciwKKwkJCSAgICpsaXN0cHRyMjsKKwlib29sCQlpc0RlZmF1bHRQYXJ0ID0gZmFs c2U7CisJTGlzdAkgICAqcGFydE9pZHMgPSBOSUw7CisKKwlrZXkgPSBSZWxhdGlvbkdldFBhcnRp dGlvbktleShwYXJlbnQpOworCXN0cmF0ZWd5ID0gZ2V0X3BhcnRpdGlvbl9zdHJhdGVneShrZXkp OworCisJaWYgKHN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9IQVNIKQorCQllcmVwb3J0 KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJ CWVycm1zZygicGFydGl0aW9uIG9mIGhhc2gtcGFydGl0aW9uZWQgdGFibGUgY2Fubm90IGJlIG1l cmdlZCIpKTsKKworCS8qIERvZXMgdGhlIHBhcnRpdGlvbmVkIHRhYmxlIChwYXJlbnQpIGhhdmUg YSBkZWZhdWx0IHBhcnRpdGlvbj8gKi8KKwlkZWZhdWx0UGFydE9pZCA9IGdldF9kZWZhdWx0X29p ZF9mcm9tX3BhcnRkZXNjKFJlbGF0aW9uR2V0UGFydGl0aW9uRGVzYyhwYXJlbnQsIHRydWUpKTsK KworCWZvcmVhY2gobGlzdHB0ciwgcGFydGNtZC0+cGFydGxpc3QpCisJeworCQlSYW5nZVZhciAg ICpuYW1lID0gKFJhbmdlVmFyICopIGxmaXJzdChsaXN0cHRyKTsKKworCQkvKiBQYXJ0aXRpb25z IGluIHRoZSBsaXN0IHNob3VsZCBoYXZlIGRpZmZlcmVudCBuYW1lcy4gKi8KKwkJZm9yX2VhY2hf Y2VsbChsaXN0cHRyMiwgcGFydGNtZC0+cGFydGxpc3QsIGxuZXh0KHBhcnRjbWQtPnBhcnRsaXN0 LCBsaXN0cHRyKSkKKwkJeworCQkJUmFuZ2VWYXIgICAqbmFtZTIgPSAoUmFuZ2VWYXIgKikgbGZp cnN0KGxpc3RwdHIyKTsKKworCQkJaWYgKGVxdWFsKG5hbWUsIG5hbWUyKSkKKwkJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9UQUJMRSksCisJCQkJCQll cnJtc2coInBhcnRpdGlvbiB3aXRoIG5hbWUgXCIlc1wiIGlzIGFscmVhZHkgdXNlZCIsIG5hbWUt PnJlbG5hbWUpLAorCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0YXRlLCBuYW1lMi0+ bG9jYXRpb24pKTsKKwkJfQorCisJCS8qCisJCSAqIFNlYXJjaCB0aGUgREVGQVVMVCBwYXJ0aXRp b24gaW4gdGhlIGxpc3QuIE9wZW4gYW5kIGxvY2sgcGFydGl0aW9ucworCQkgKiBiZWZvcmUgY2Fs Y3VsYXRpbmcgdGhlIGJvdW5kYXJ5IGZvciByZXN1bHRpbmcgcGFydGl0aW9uLCB3ZSBhbHNvCisJ CSAqIGNoZWNrIGZvciBvd25lcnNoaXAgYWxvbmcgdGhlIHdheS4gIFdlIG5lZWQgdG8gdXNlCisJ CSAqIEFjY2Vzc0V4Y2x1c2l2ZUxvY2sgaGVyZSwgYmVjYXVzZSB0aGVzZSBtZXJnZWQgcGFydGl0 aW9ucyB3aWxsIGJlCisJCSAqIGRldGFjaGVkIGFuZCB0aGVuIGRyb3BwZWQgaW4gQVRFeGVjTWVy Z2VQYXJ0aXRpb25zLgorCQkgKi8KKwkJcGFydE9pZCA9IFJhbmdlVmFyR2V0UmVsaWRFeHRlbmRl ZChuYW1lLCBBY2Nlc3NFeGNsdXNpdmVMb2NrLCAwLAorCQkJCQkJCQkJCSAgIFJhbmdlVmFyQ2Fs bGJhY2tPd25zUmVsYXRpb24sCisJCQkJCQkJCQkJICAgTlVMTCk7CisJCS8qIElzIHRoZSBjdXJy ZW50IHBhcnRpdGlvbiBhIERFRkFVTFQgcGFydGl0aW9uPyAqLworCQlpZiAocGFydE9pZCA9PSBk ZWZhdWx0UGFydE9pZCkKKwkJCWlzRGVmYXVsdFBhcnQgPSB0cnVlOworCisJCS8qCisJCSAqIEV4 dGVuZGVkIGNoZWNrIGJlY2F1c2UgdGhlIHNhbWUgcGFydGl0aW9uIGNhbiBoYXZlIGRpZmZlcmVu dCBuYW1lcworCQkgKiAoZm9yIGV4YW1wbGUsICJwYXJ0X25hbWUiIGFuZCAicHVibGljLnBhcnRf bmFtZSIpLgorCQkgKi8KKwkJZm9yZWFjaChsaXN0cHRyMiwgcGFydE9pZHMpCisJCXsKKwkJCU9p ZAkJCWN1ck9pZCA9IGxmaXJzdF9vaWQobGlzdHB0cjIpOworCisJCQlpZiAoY3VyT2lkID09IHBh cnRPaWQpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9EVVBMSUNB VEVfVEFCTEUpLAorCQkJCQkJZXJybXNnKCJwYXJ0aXRpb24gd2l0aCBuYW1lIFwiJXNcIiBpcyBh bHJlYWR5IHVzZWQiLCBuYW1lLT5yZWxuYW1lKSwKKwkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihj eHQtPnBzdGF0ZSwgbmFtZS0+bG9jYXRpb24pKTsKKwkJfQorCisJCWNoZWNrUGFydGl0aW9uKHBh cmVudCwgcGFydE9pZCk7CisKKwkJcGFydE9pZHMgPSBsYXBwZW5kX29pZChwYXJ0T2lkcywgcGFy dE9pZCk7CisJfQorCisJLyogQWxsb2NhdGUgdGhlIGJvdW5kIG9mIHRoZSByZXN1bHRpbmcgcGFy dGl0aW9uLiAqLworCUFzc2VydChwYXJ0Y21kLT5ib3VuZCA9PSBOVUxMKTsKKwlwYXJ0Y21kLT5i b3VuZCA9IG1ha2VOb2RlKFBhcnRpdGlvbkJvdW5kU3BlYyk7CisKKwkvKiBGaWxsIHRoZSBwYXJ0 aXRpb24gYm91bmQuICovCisJcGFydGNtZC0+Ym91bmQtPnN0cmF0ZWd5ID0gc3RyYXRlZ3k7CisJ cGFydGNtZC0+Ym91bmQtPmxvY2F0aW9uID0gLTE7CisJcGFydGNtZC0+Ym91bmQtPmlzX2RlZmF1 bHQgPSBpc0RlZmF1bHRQYXJ0OworCWlmICghaXNEZWZhdWx0UGFydCkKKwkJY2FsY3VsYXRlX3Bh cnRpdGlvbl9ib3VuZF9mb3JfbWVyZ2UocGFyZW50LCBwYXJ0Y21kLT5wYXJ0bGlzdCwKKwkJCQkJ CQkJCQkJcGFydE9pZHMsIHBhcnRjbWQtPmJvdW5kLAorCQkJCQkJCQkJCQljeHQtPnBzdGF0ZSk7 Cit9CisKIC8qCiAgKiB0cmFuc2Zvcm1BbHRlclRhYmxlU3RtdCAtCiAgKgkJcGFyc2UgYW5hbHlz aXMgZm9yIEFMVEVSIFRBQkxFCkBAIC0zNzg2LDEyICszOTE4LDI2IEBAIHRyYW5zZm9ybUFsdGVy VGFibGVTdG10KE9pZCByZWxpZCwgQWx0ZXJUYWJsZVN0bXQgKnN0bXQsCiAJCQkJbmV3Y21kcyA9 IGxhcHBlbmQobmV3Y21kcywgY21kKTsKIAkJCQlicmVhazsKIAorCQkJY2FzZSBBVF9NZXJnZVBh cnRpdGlvbnM6CisJCQkJeworCQkJCQlQYXJ0aXRpb25DbWQgKnBhcnRjbWQgPSAoUGFydGl0aW9u Q21kICopIGNtZC0+ZGVmOworCisJCQkJCWlmIChsaXN0X2xlbmd0aChwYXJ0Y21kLT5wYXJ0bGlz dCkgPCAyKQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJZXJyY29kZShFUlJDT0RFX0lO VkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJCQllcnJtc2coImxpc3Qgb2YgcGFydGl0 aW9ucyB0byBiZSBtZXJnZWQgc2hvdWxkIGluY2x1ZGUgYXQgbGVhc3QgdHdvIHBhcnRpdGlvbnMi KSk7CisKKwkJCQkJdHJhbnNmb3JtUGFydGl0aW9uQ21kRm9yTWVyZ2UoJmN4dCwgcGFydGNtZCk7 CisJCQkJCW5ld2NtZHMgPSBsYXBwZW5kKG5ld2NtZHMsIGNtZCk7CisJCQkJCWJyZWFrOworCQkJ CX0KKwogCQkJZGVmYXVsdDoKIAogCQkJCS8qCi0JCQkJICogQ3VycmVudGx5LCB3ZSBzaG91bGRu J3QgYWN0dWFsbHkgZ2V0IGhlcmUgZm9yIHN1YmNvbW1hbmQKLQkJCQkgKiB0eXBlcyB0aGF0IGRv bid0IHJlcXVpcmUgdHJhbnNmb3JtYXRpb247IGJ1dCBpZiB3ZSBkbywganVzdAotCQkJCSAqIGVt aXQgdGhlbSB1bmNoYW5nZWQuCisJCQkJICogQ3VycmVudGx5LCB3ZSBzaG91bGRuJ3QgYWN0dWFs bHkgZ2V0IGhlcmUgZm9yIHRoZQorCQkJCSAqIHN1YmNvbW1hbmQgdHlwZXMgdGhhdCBkb24ndCBy ZXF1aXJlIHRyYW5zZm9ybWF0aW9uOyBidXQgaWYKKwkJCQkgKiB3ZSBkbywganVzdCBlbWl0IHRo ZW0gdW5jaGFuZ2VkLgogCQkJCSAqLwogCQkJCW5ld2NtZHMgPSBsYXBwZW5kKG5ld2NtZHMsIGNt ZCk7CiAJCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFy dGJvdW5kcy5jIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYwppbmRleCA0 MGFjNzAwZDUyOS4uYjgyYjI5ZGU4ZjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnRpdGlv bmluZy9wYXJ0Ym91bmRzLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3Vu ZHMuYwpAQCAtNDk2OCwzICs0OTY4LDE5OSBAQCBzYXRpc2ZpZXNfaGFzaF9wYXJ0aXRpb24oUEdf RlVOQ1RJT05fQVJHUykKIAogCVBHX1JFVFVSTl9CT09MKHJvd0hhc2ggJSBtb2R1bHVzID09IHJl bWFpbmRlcik7CiB9CisKKy8qCisgKiBjaGVja190d29fcGFydGl0aW9uc19ib3VuZHNfcmFuZ2UK KyAqCisgKiAoZnVuY3Rpb24gZm9yIEJZIFJBTkdFIHBhcnRpdGlvbmluZykKKyAqCisgKiBUaGlz IGlzIGEgaGVscGVyIGZ1bmN0aW9uIGZvciBjYWxjdWxhdGVfcGFydGl0aW9uX2JvdW5kX2Zvcl9t ZXJnZSgpLiBUaGlzCisgKiBmdW5jdGlvbiBjb21wYXJlcyB0aGUgdXBwZXIgYm91bmQgb2YgZmly c3RfYm91bmQgYW5kIHRoZSBsb3dlciBib3VuZCBvZgorICogc2Vjb25kX2JvdW5kLiBUaGVzZSBi b3VuZHMgc2hvdWxkIGJlIGVxdWFsLgorICoKKyAqIHBhcmVudDoJCQlwYXJ0aXRpb25lZCB0YWJs ZQorICogZmlyc3RfbmFtZToJCW5hbWUgb2YgdGhlIGZpcnN0IHBhcnRpdGlvbgorICogZmlyc3Rf Ym91bmQ6CQlib3VuZCBvZiB0aGUgZmlyc3QgcGFydGl0aW9uCisgKiBzZWNvbmRfbmFtZToJCW5h bWUgb2YgdGhlIHNlY29uZCBwYXJ0aXRpb24KKyAqIHNlY29uZF9ib3VuZDoJYm91bmQgb2YgdGhl IHNlY29uZCBwYXJ0aXRpb24KKyAqIHBzdGF0ZToJCQlwb2ludGVyIHRvIFBhcnNlU3RhdGUgc3Ry dWN0IGZvciBkZXRlcm1pbmluZyBlcnJvciBwb3NpdGlvbgorICovCitzdGF0aWMgdm9pZAorY2hl Y2tfdHdvX3BhcnRpdGlvbnNfYm91bmRzX3JhbmdlKFJlbGF0aW9uIHBhcmVudCwKKwkJCQkJCQkJ ICBSYW5nZVZhciAqZmlyc3RfbmFtZSwKKwkJCQkJCQkJICBQYXJ0aXRpb25Cb3VuZFNwZWMgKmZp cnN0X2JvdW5kLAorCQkJCQkJCQkgIFJhbmdlVmFyICpzZWNvbmRfbmFtZSwKKwkJCQkJCQkJICBQ YXJ0aXRpb25Cb3VuZFNwZWMgKnNlY29uZF9ib3VuZCwKKwkJCQkJCQkJICBQYXJzZVN0YXRlICpw c3RhdGUpCit7CisJUGFydGl0aW9uS2V5IGtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBh cmVudCk7CisJUGFydGl0aW9uUmFuZ2VCb3VuZCAqZmlyc3RfdXBwZXI7CisJUGFydGl0aW9uUmFu Z2VCb3VuZCAqc2Vjb25kX2xvd2VyOworCWludAkJCWNtcHZhbDsKKworCUFzc2VydChrZXktPnN0 cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9SQU5HRSk7CisKKwlmaXJzdF91cHBlciA9IG1h a2Vfb25lX3BhcnRpdGlvbl9yYm91bmQoa2V5LCAtMSwgZmlyc3RfYm91bmQtPnVwcGVyZGF0dW1z LCBmYWxzZSk7CisJc2Vjb25kX2xvd2VyID0gbWFrZV9vbmVfcGFydGl0aW9uX3Jib3VuZChrZXks IC0xLCBzZWNvbmRfYm91bmQtPmxvd2VyZGF0dW1zLCB0cnVlKTsKKworCS8qCisJICogbG93ZXIx IGFyZ3VtZW50IG9mIHBhcnRpdGlvbl9yYm91bmRfY21wKCkgaXMgc2V0IHRvIGZhbHNlIGZvciB0 aGUKKwkgKiBjb3JyZWN0IGNvbXBhcmlzb24gcmVzdWx0IG9mIHRoZSBsb3dlciBhbmQgdXBwZXIg Ym91bmRzLgorCSAqLworCWNtcHZhbCA9IHBhcnRpdGlvbl9yYm91bmRfY21wKGtleS0+cGFydG5h dHRzLAorCQkJCQkJCQkgIGtleS0+cGFydHN1cGZ1bmMsCisJCQkJCQkJCSAga2V5LT5wYXJ0Y29s bGF0aW9uLAorCQkJCQkJCQkgIHNlY29uZF9sb3dlci0+ZGF0dW1zLCBzZWNvbmRfbG93ZXItPmtp bmQsCisJCQkJCQkJCSAgZmFsc2UsIGZpcnN0X3VwcGVyKTsKKwlpZiAoY21wdmFsKQorCXsKKwkJ UGFydGl0aW9uUmFuZ2VEYXR1bSAqZGF0dW0gPSBsaW5pdGlhbChzZWNvbmRfYm91bmQtPmxvd2Vy ZGF0dW1zKTsKKworCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElE X09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQllcnJtc2coImNhbiBub3QgbWVyZ2UgcGFydGl0aW9u IFwiJXNcIiB0b2dldGhlciB3aXRoIHBhcnRpdGlvbiBcIiVzXCIiLAorCQkJCQkgICBzZWNvbmRf bmFtZS0+cmVsbmFtZSwgZmlyc3RfbmFtZS0+cmVsbmFtZSksCisJCQkJZXJyZGV0YWlsKCJsb3dl ciBib3VuZCBvZiBwYXJ0aXRpb24gXCIlc1wiIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBwZXIgYm91 bmQgb2YgcGFydGl0aW9uIFwiJXNcIiIsCisJCQkJCQkgIHNlY29uZF9uYW1lLT5yZWxuYW1lLCBm aXJzdF9uYW1lLT5yZWxuYW1lKSwKKwkJCQllcnJoaW50KCJBTFRFUiBUQUJMRSAuLi4gTUVSR0Ug UEFSVElUSU9OUyByZXF1aXJlcyB0aGUgcGFydGl0aW9uIGJvdW5kcyB0byBiZSBhZGphY2VudC4i KSwKKwkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBkYXR1bS0+bG9jYXRpb24pKTsKKwl9 Cit9CisKKy8qCisgKiBnZXRfcGFydGl0aW9uX2JvdW5kX3NwZWMKKyAqCisgKiBSZXR1cm5zIHRo ZSBQYXJ0aXRpb25Cb3VuZFNwZWMgZm9yIHRoZSBwYXJ0aXRpb24gd2l0aCB0aGUgZ2l2ZW4gT0lE IHBhcnRPaWQuCisgKi8KK3N0YXRpYyBQYXJ0aXRpb25Cb3VuZFNwZWMgKgorZ2V0X3BhcnRpdGlv bl9ib3VuZF9zcGVjKE9pZCBwYXJ0T2lkKQoreworCUhlYXBUdXBsZQl0dXBsZTsKKwlEYXR1bQkJ ZGF0dW07CisJYm9vbAkJaXNudWxsOworCVBhcnRpdGlvbkJvdW5kU3BlYyAqYm91bmRzcGVjID0g TlVMTDsKKworCS8qIFRyeSBmZXRjaGluZyB0aGUgdHVwbGUgZnJvbSB0aGUgY2F0Y2FjaGUsIGZv ciBzcGVlZC4gKi8KKwl0dXBsZSA9IFNlYXJjaFN5c0NhY2hlMShSRUxPSUQsIHBhcnRPaWQpOwor CWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29r dXAgZmFpbGVkIGZvciByZWxhdGlvbiAldSIsIHBhcnRPaWQpOworCisJZGF0dW0gPSBTeXNDYWNo ZUdldEF0dHIoUkVMT0lELCB0dXBsZSwKKwkJCQkJCQlBbnVtX3BnX2NsYXNzX3JlbHBhcnRib3Vu ZCwKKwkJCQkJCQkmaXNudWxsKTsKKwlpZiAoaXNudWxsKQorCQllbG9nKEVSUk9SLCAicGFydGl0 aW9uIGJvdW5kIGZvciByZWxhdGlvbiAldSBpcyBudWxsIiwKKwkJCSBwYXJ0T2lkKTsKKworCWJv dW5kc3BlYyA9IHN0cmluZ1RvTm9kZShUZXh0RGF0dW1HZXRDU3RyaW5nKGRhdHVtKSk7CisKKwlp ZiAoIUlzQShib3VuZHNwZWMsIFBhcnRpdGlvbkJvdW5kU3BlYykpCisJCWVsb2coRVJST1IsICJl eHBlY3RlZCBQYXJ0aXRpb25Cb3VuZFNwZWMgZm9yIHJlbGF0aW9uICV1IiwKKwkJCSBwYXJ0T2lk KTsKKworCVJlbGVhc2VTeXNDYWNoZSh0dXBsZSk7CisJcmV0dXJuIGJvdW5kc3BlYzsKK30KKwor LyoKKyAqIGNhbGN1bGF0ZV9wYXJ0aXRpb25fYm91bmRfZm9yX21lcmdlCisgKgorICogQ2FsY3Vs YXRlcyB0aGUgYm91bmQgb2YgdGhlIG1lcmdlZCBwYXJ0aXRpb24gInNwZWMiIGJ5IHVzaW5nIHRo ZSBib3VuZHMgb2YKKyAqIHRoZSBwYXJ0aXRpb25zIHRvIGJlIG1lcmdlZC4KKyAqCisgKiBwYXJl bnQ6CQkJcGFydGl0aW9uZWQgdGFibGUKKyAqIHBhcnROYW1lczoJCW5hbWVzIG9mIHBhcnRpdGlv bnMgdG8gYmUgbWVyZ2VkCisgKiBwYXJ0T2lkczoJCU9pZHMgb2YgcGFydGl0aW9ucyB0byBiZSBt ZXJnZWQKKyAqIHNwZWMgKG91dCk6CQlib3VuZHMgc3BlY2lmaWNhdGlvbiBvZiB0aGUgbWVyZ2Vk IHBhcnRpdGlvbgorICogcHN0YXRlOgkJCXBvaW50ZXIgdG8gUGFyc2VTdGF0ZSBzdHJ1Y3QgdG8g ZGV0ZXJtaW5lIGVycm9yIHBvc2l0aW9uCisgKi8KK3ZvaWQKK2NhbGN1bGF0ZV9wYXJ0aXRpb25f Ym91bmRfZm9yX21lcmdlKFJlbGF0aW9uIHBhcmVudCwKKwkJCQkJCQkJCUxpc3QgKnBhcnROYW1l cywKKwkJCQkJCQkJCUxpc3QgKnBhcnRPaWRzLAorCQkJCQkJCQkJUGFydGl0aW9uQm91bmRTcGVj ICpzcGVjLAorCQkJCQkJCQkJUGFyc2VTdGF0ZSAqcHN0YXRlKQoreworCVBhcnRpdGlvbktleSBr ZXkgPSBSZWxhdGlvbkdldFBhcnRpdGlvbktleShwYXJlbnQpOworCVBhcnRpdGlvbkJvdW5kU3Bl YyAqYm91bmQ7CisKKwlBc3NlcnQoIXNwZWMtPmlzX2RlZmF1bHQpOworCisJc3dpdGNoIChrZXkt PnN0cmF0ZWd5KQorCXsKKwkJY2FzZSBQQVJUSVRJT05fU1RSQVRFR1lfUkFOR0U6CisJCQl7CisJ CQkJaW50CQkJaTsKKwkJCQlQYXJ0aXRpb25SYW5nZUJvdW5kICoqbG93ZXJfYm91bmRzOworCQkJ CWludAkJCW5wYXJ0cyA9IGxpc3RfbGVuZ3RoKHBhcnRPaWRzKTsKKwkJCQlMaXN0CSAgICpib3Vu ZHMgPSBOSUw7CisKKwkJCQlsb3dlcl9ib3VuZHMgPSAoUGFydGl0aW9uUmFuZ2VCb3VuZCAqKikK KwkJCQkJcGFsbG9jMChucGFydHMgKiBzaXplb2YoUGFydGl0aW9uUmFuZ2VCb3VuZCAqKSk7CisK KwkJCQkvKgorCQkJCSAqIENyZWF0ZSBhbiBhcnJheSBvZiBsb3dlciBib3VuZHMgYW5kIGEgbGlz dCBvZgorCQkJCSAqIFBhcnRpdGlvbkJvdW5kU3BlYy4KKwkJCQkgKi8KKwkJCQlmb3JlYWNoX29p ZChwYXJ0b2lkLCBwYXJ0T2lkcykKKwkJCQl7CisJCQkJCWJvdW5kID0gZ2V0X3BhcnRpdGlvbl9i b3VuZF9zcGVjKHBhcnRvaWQpOworCQkJCQlpID0gZm9yZWFjaF9jdXJyZW50X2luZGV4KHBhcnRv aWQpOworCisJCQkJCWxvd2VyX2JvdW5kc1tpXSA9IG1ha2Vfb25lX3BhcnRpdGlvbl9yYm91bmQo a2V5LCBpLCBib3VuZC0+bG93ZXJkYXR1bXMsIHRydWUpOworCQkJCQlib3VuZHMgPSBsYXBwZW5k KGJvdW5kcywgYm91bmQpOworCQkJCX0KKworCQkJCS8qIFNvcnQgdGhlIGFycmF5IG9mIGxvd2Vy IGJvdW5kcy4gKi8KKwkJCQlxc29ydF9hcmcobG93ZXJfYm91bmRzLCBucGFydHMsIHNpemVvZihQ YXJ0aXRpb25SYW5nZUJvdW5kICopLAorCQkJCQkJICBxc29ydF9wYXJ0aXRpb25fcmJvdW5kX2Nt cCwga2V5KTsKKworCQkJCS8qIFJhbmdlcyBvZiBwYXJ0aXRpb25zIHNob3VsZCBiZSBhZGphY2Vu dC4gKi8KKwkJCQlmb3IgKGkgPSAxOyBpIDwgbnBhcnRzOyBpKyspCisJCQkJeworCQkJCQlpbnQJ CQlpbmRleCA9IGxvd2VyX2JvdW5kc1tpXS0+aW5kZXg7CisJCQkJCWludAkJCXByZXZfaW5kZXgg PSBsb3dlcl9ib3VuZHNbaSAtIDFdLT5pbmRleDsKKworCQkJCQljaGVja190d29fcGFydGl0aW9u c19ib3VuZHNfcmFuZ2UocGFyZW50LAorCQkJCQkJCQkJCQkJCSAgKFJhbmdlVmFyICopIGxpc3Rf bnRoKHBhcnROYW1lcywgcHJldl9pbmRleCksCisJCQkJCQkJCQkJCQkJICAoUGFydGl0aW9uQm91 bmRTcGVjICopIGxpc3RfbnRoKGJvdW5kcywgcHJldl9pbmRleCksCisJCQkJCQkJCQkJCQkJICAo UmFuZ2VWYXIgKikgbGlzdF9udGgocGFydE5hbWVzLCBpbmRleCksCisJCQkJCQkJCQkJCQkJICAo UGFydGl0aW9uQm91bmRTcGVjICopIGxpc3RfbnRoKGJvdW5kcywgaW5kZXgpLAorCQkJCQkJCQkJ CQkJCSAgcHN0YXRlKTsKKwkJCQl9CisKKwkJCQkvKgorCQkJCSAqIFRoZSBsb3dlciBib3VuZCBv ZiB0aGUgZmlyc3QgcGFydGl0aW9uIGlzIHRoZSBsb3dlciBib3VuZAorCQkJCSAqIG9mIHRoZSBt ZXJnZWQgcGFydGl0aW9uLgorCQkJCSAqLworCQkJCXNwZWMtPmxvd2VyZGF0dW1zID0KKwkJCQkJ KChQYXJ0aXRpb25Cb3VuZFNwZWMgKikgbGlzdF9udGgoYm91bmRzLCBsb3dlcl9ib3VuZHNbMF0t PmluZGV4KSktPmxvd2VyZGF0dW1zOworCisJCQkJLyoKKwkJCQkgKiBUaGUgdXBwZXIgYm91bmQg b2YgdGhlIGxhc3QgcGFydGl0aW9uIGlzIHRoZSB1cHBlciBib3VuZCBvZgorCQkJCSAqIHRoZSBt ZXJnZWQgcGFydGl0aW9uLgorCQkJCSAqLworCQkJCXNwZWMtPnVwcGVyZGF0dW1zID0KKwkJCQkJ KChQYXJ0aXRpb25Cb3VuZFNwZWMgKikgbGlzdF9udGgoYm91bmRzLCBsb3dlcl9ib3VuZHNbbnBh cnRzIC0gMV0tPmluZGV4KSktPnVwcGVyZGF0dW1zOworCisJCQkJcGZyZWUobG93ZXJfYm91bmRz KTsKKwkJCQlsaXN0X2ZyZWUoYm91bmRzKTsKKwkJCQlicmVhazsKKwkJCX0KKworCQljYXNlIFBB UlRJVElPTl9TVFJBVEVHWV9MSVNUOgorCQkJeworCQkJCS8qIENvbnNvbGlkYXRlIGJvdW5kcyBm b3IgYWxsIHBhcnRpdGlvbnMgaW4gdGhlIGxpc3QuICovCisJCQkJZm9yZWFjaF9vaWQocGFydG9p ZCwgcGFydE9pZHMpCisJCQkJeworCQkJCQlib3VuZCA9IGdldF9wYXJ0aXRpb25fYm91bmRfc3Bl YyhwYXJ0b2lkKTsKKwkJCQkJc3BlYy0+bGlzdGRhdHVtcyA9IGxpc3RfY29uY2F0KHNwZWMtPmxp c3RkYXR1bXMsIGJvdW5kLT5saXN0ZGF0dW1zKTsKKwkJCQl9CisJCQkJYnJlYWs7CisJCQl9CisK KwkJZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIHBhcnRpdGlvbiBzdHJhdGVn eTogJWQiLAorCQkJCSAoaW50KSBrZXktPnN0cmF0ZWd5KTsKKwl9Cit9CmRpZmYgLS1naXQgYS9z cmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRl LmluLmMKaW5kZXggMjBkN2E2NWM2MTQuLjMxNzZmZDkyYWQzIDEwMDY0NAotLS0gYS9zcmMvYmlu L3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5p bi5jCkBAIC0yNzczLDYgKzI3NzMsNyBAQCBtYXRjaF9wcmV2aW91c193b3JkcyhpbnQgcGF0dGVy bl9pZCwKIAkJCQkJICAiT1dORVIgVE8iLCAiU0VUIiwgIlZBTElEQVRFIENPTlNUUkFJTlQiLAog CQkJCQkgICJSRVBMSUNBIElERU5USVRZIiwgIkFUVEFDSCBQQVJUSVRJT04iLAogCQkJCQkgICJE RVRBQ0ggUEFSVElUSU9OIiwgIkZPUkNFIFJPVyBMRVZFTCBTRUNVUklUWSIsCisJCQkJCSAgIk1F UkdFIFBBUlRJVElPTlMgKCIsCiAJCQkJCSAgIk9GIiwgIk5PVCBPRiIpOwogCS8qIEFMVEVSIFRB QkxFIHh4eCBBREQgKi8KIAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJUQUJMRSIsIE1hdGNo QW55LCAiQUREIikpCkBAIC0zMDQ2LDYgKzMwNDcsMTUgQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMo aW50IHBhdHRlcm5faWQsCiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiVEFCTEUiLCBNYXRj aEFueSwgIkRFVEFDSCIsICJQQVJUSVRJT04iLCBNYXRjaEFueSkpCiAJCUNPTVBMRVRFX1dJVEgo IkNPTkNVUlJFTlRMWSIsICJGSU5BTElaRSIpOwogCisJLyogQUxURVIgVEFCTEUgPG5hbWU+IE1F UkdFIFBBUlRJVElPTlMgKCAqLworCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlRBQkxFIiwg TWF0Y2hBbnksICJNRVJHRSIsICJQQVJUSVRJT05TIiwgIigiKSkKKwl7CisJCXNldF9jb21wbGV0 aW9uX3JlZmVyZW5jZShwcmV2NF93ZCk7CisJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1 ZXJ5X2Zvcl9wYXJ0aXRpb25fb2ZfdGFibGUpOworCX0KKwllbHNlIGlmIChNYXRjaGVzKCJBTFRF UiIsICJUQUJMRSIsIE1hdGNoQW55LCAiTUVSR0UiLCAiUEFSVElUSU9OUyIsICIoKikiKSkKKwkJ Q09NUExFVEVfV0lUSCgiSU5UTyIpOworCiAJLyogQUxURVIgVEFCTEUgPG5hbWU+IE9GICovCiAJ ZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiVEFCTEUiLCBNYXRjaEFueSwgIk9GIikpCiAJCUNP TVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX2NvbXBvc2l0ZV9kYXRh dHlwZXMpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmggYi9z cmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaAppbmRleCAwNmE4NzYxZTNmZS4uMzVjYzM1 YTBhNzEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5kZW5jeS5oCisrKyBi L3NyYy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5kZW5jeS5oCkBAIC0xMDcsNiArMTA3LDggQEAgZXh0 ZXJuIHZvaWQgUmVsZWFzZURlbGV0aW9uTG9jayhjb25zdCBPYmplY3RBZGRyZXNzICpvYmplY3Qp OwogZXh0ZXJuIHZvaWQgcGVyZm9ybURlbGV0aW9uKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVj dCwKIAkJCQkJCQlEcm9wQmVoYXZpb3IgYmVoYXZpb3IsIGludCBmbGFncyk7CiAKK2V4dGVybiB2 b2lkIHBlcmZvcm1EZWxldGlvbkNoZWNrKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwKKwkJ CQkJCQkJIERyb3BCZWhhdmlvciBiZWhhdmlvciwgaW50IGZsYWdzKTsKIGV4dGVybiB2b2lkIHBl cmZvcm1NdWx0aXBsZURlbGV0aW9ucyhjb25zdCBPYmplY3RBZGRyZXNzZXMgKm9iamVjdHMsCiAJ CQkJCQkJCQkgRHJvcEJlaGF2aW9yIGJlaGF2aW9yLCBpbnQgZmxhZ3MpOwogCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJz ZW5vZGVzLmgKaW5kZXggZDE0Mjk0YTRlY2UuLmU0M2ExZjk0NmE5IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vu b2Rlcy5oCkBAIC05NjYsMTMgKzk2NiwxNiBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25SYW5n ZURhdHVtCiB9IFBhcnRpdGlvblJhbmdlRGF0dW07CiAKIC8qCi0gKiBQYXJ0aXRpb25DbWQgLSBp bmZvIGZvciBBTFRFUiBUQUJMRS9JTkRFWCBBVFRBQ0gvREVUQUNIIFBBUlRJVElPTiBjb21tYW5k cworICogUGFydGl0aW9uQ21kIC0gaW5mbyBmb3IgQUxURVIgVEFCTEUvSU5ERVggQVRUQUNIL0RF VEFDSCBQQVJUSVRJT04gYW5kIGZvcgorICoJICBBTFRFUiBUQUJMRSBNRVJHRSBQQVJUSVRJT05T IGNvbW1hbmRzCiAgKi8KIHR5cGVkZWYgc3RydWN0IFBhcnRpdGlvbkNtZAogewogCU5vZGVUYWcJ CXR5cGU7Ci0JUmFuZ2VWYXIgICAqbmFtZTsJCQkvKiBuYW1lIG9mIHBhcnRpdGlvbiB0byBhdHRh Y2gvZGV0YWNoICovCisJUmFuZ2VWYXIgICAqbmFtZTsJCQkvKiBuYW1lIG9mIHBhcnRpdGlvbiB0 byBhdHRhY2gvZGV0YWNoL21lcmdlICovCiAJUGFydGl0aW9uQm91bmRTcGVjICpib3VuZDsJLyog Rk9SIFZBTFVFUywgaWYgYXR0YWNoaW5nICovCisJTGlzdAkgICAqcGFydGxpc3Q7CQkvKiBsaXN0 IG9mIHBhcnRpdGlvbnMgdG8gYmUgbWVyZ2VkLCB1c2VkIGluCisJCQkJCQkJCSAqIEFMVEVSIFRB QkxFIE1FUkdFIFBBUlRJVElPTlMgKi8KIAlib29sCQljb25jdXJyZW50OwogfSBQYXJ0aXRpb25D bWQ7CiAKQEAgLTI0NzYsNiArMjQ3OSw3IEBAIHR5cGVkZWYgZW51bSBBbHRlclRhYmxlVHlwZQog CUFUX0F0dGFjaFBhcnRpdGlvbiwJCQkvKiBBVFRBQ0ggUEFSVElUSU9OICovCiAJQVRfRGV0YWNo UGFydGl0aW9uLAkJCS8qIERFVEFDSCBQQVJUSVRJT04gKi8KIAlBVF9EZXRhY2hQYXJ0aXRpb25G aW5hbGl6ZSwgLyogREVUQUNIIFBBUlRJVElPTiBGSU5BTElaRSAqLworCUFUX01lcmdlUGFydGl0 aW9ucywJCQkvKiBNRVJHRSBQQVJUSVRJT05TICovCiAJQVRfQWRkSWRlbnRpdHksCQkJCS8qIEFE RCBJREVOVElUWSAqLwogCUFUX1NldElkZW50aXR5LAkJCQkvKiBTRVQgaWRlbnRpdHkgY29sdW1u IG9wdGlvbnMgKi8KIAlBVF9Ecm9wSWRlbnRpdHksCQkJLyogRFJPUCBJREVOVElUWSAqLwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oIGIvc3JjL2luY2x1ZGUvcGFyc2Vy L2t3bGlzdC5oCmluZGV4IDVkNGZlMjdlZjk2Li5kNGNkYTI5YzJhMiAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3Qu aApAQCAtMzM5LDYgKzMzOSw3IEBAIFBHX0tFWVdPUkQoInBhcmFtZXRlciIsIFBBUkFNRVRFUiwg VU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGFyc2VyIiwgUEFS U0VSLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXJ0aWFs IiwgUEFSVElBTCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgi cGFydGl0aW9uIiwgUEFSVElUSU9OLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQ R19LRVlXT1JEKCJwYXJ0aXRpb25zIiwgUEFSVElUSU9OUywgVU5SRVNFUlZFRF9LRVlXT1JELCBC QVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGFzc2luZyIsIFBBU1NJTkcsIFVOUkVTRVJWRURfS0VZ V09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBhc3N3b3JkIiwgUEFTU1dPUkQsIFVOUkVT RVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBhdGgiLCBQQVRILCBVTlJF U0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJ0 aXRpb25pbmcvcGFydGJvdW5kcy5oIGIvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRib3Vu ZHMuaAppbmRleCBjZjkzZjllNWJlZi4uMjVjMzExZmY5YmQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFydGl0aW9u aW5nL3BhcnRib3VuZHMuaApAQCAtMTQzLDQgKzE0MywxMCBAQCBleHRlcm4gaW50CXBhcnRpdGlv bl9yYW5nZV9kYXR1bV9ic2VhcmNoKEZtZ3JJbmZvICpwYXJ0c3VwZnVuYywKIGV4dGVybiBpbnQJ cGFydGl0aW9uX2hhc2hfYnNlYXJjaChQYXJ0aXRpb25Cb3VuZEluZm8gYm91bmRpbmZvLAogCQkJ CQkJCQkgICBpbnQgbW9kdWx1cywgaW50IHJlbWFpbmRlcik7CiAKK2V4dGVybiB2b2lkIGNhbGN1 bGF0ZV9wYXJ0aXRpb25fYm91bmRfZm9yX21lcmdlKFJlbGF0aW9uIHBhcmVudCwKKwkJCQkJCQkJ CQkJCUxpc3QgKnBhcnROYW1lcywKKwkJCQkJCQkJCQkJCUxpc3QgKnBhcnRPaWRzLAorCQkJCQkJ CQkJCQkJUGFydGl0aW9uQm91bmRTcGVjICpzcGVjLAorCQkJCQkJCQkJCQkJUGFyc2VTdGF0ZSAq cHN0YXRlKTsKKwogI2VuZGlmCQkJCQkJCS8qIFBBUlRCT1VORFNfSCAqLwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL3BhcnRpdGlvbi1tZXJnZS5vdXQgYi9zcmMvdGVz dC9pc29sYXRpb24vZXhwZWN0ZWQvcGFydGl0aW9uLW1lcmdlLm91dApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNWY2NDcyNjcxYjkKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvcGFydGl0aW9uLW1lcmdlLm91dApAQCAtMCwwICsx LDI0MyBAQAorUGFyc2VkIHRlc3Qgc3BlYyB3aXRoIDIgc2Vzc2lvbnMKKworc3RhcnRpbmcgcGVy bXV0YXRpb246IHMyYiBzMmkgczJjIHMxYiBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycworc3Rl cCBzMmI6IEJFR0lOOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3Rl eHQwMScpOworc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczFiOiBCRUdJTjsKK3N0ZXAgczFtZXJn OiBBTFRFUiBUQUJMRSB0cGFydCBNRVJHRSBQQVJUSVRJT05TICh0cGFydF8wMF8xMCwgdHBhcnRf MTBfMjApIElOVE8gdHBhcnRfMDBfMjA7CitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMydTogVVBE QVRFIHRwYXJ0IFNFVCB0ID0gJ3RleHQwMW1vZGlmJyB3aGVyZSBpID0gMTsgPHdhaXRpbmcgLi4u Pgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJ1OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJj OiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHRw YXJ0IE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgaTsKK3Rh Ymxlb2lkICAgICB8IGl8dCAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0rLS0rLS0tLS0tLS0tLS0K K3RwYXJ0XzAwXzIwICB8IDF8dGV4dDAxbW9kaWYKK3RwYXJ0XzAwXzIwICB8IDV8dGV4dDA1ICAg ICAKK3RwYXJ0XzAwXzIwICB8MTV8dGV4dDE1ICAgICAKK3RwYXJ0XzIwXzMwICB8MjV8dGV4dDI1 ICAgICAKK3RwYXJ0X2RlZmF1bHR8MzV8dGV4dDM1ICAgICAKKyg1IHJvd3MpCisKKworc3RhcnRp bmcgcGVybXV0YXRpb246IHMyYiBzMmkgczJjIHMxYnJyIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMg czJzCitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVT ICgxLCAndGV4dDAxJyk7CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMWJycjogQkVHSU4gSVNP TEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczFtZXJnOiBBTFRFUiBUQUJMRSB0 cGFydCBNRVJHRSBQQVJUSVRJT05TICh0cGFydF8wMF8xMCwgdHBhcnRfMTBfMjApIElOVE8gdHBh cnRfMDBfMjA7CitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMydTogVVBEQVRFIHRwYXJ0IFNFVCB0 ID0gJ3RleHQwMW1vZGlmJyB3aGVyZSBpID0gMTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENP TU1JVDsKK3N0ZXAgczJ1OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVw IHMyczogU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHRwYXJ0IE9SREVSIEJZIHRh Ymxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgaTsKK3RhYmxlb2lkICAgICB8IGl8 dCAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0rLS0rLS0tLS0tLS0tLS0KK3RwYXJ0XzAwXzIwICB8 IDF8dGV4dDAxbW9kaWYKK3RwYXJ0XzAwXzIwICB8IDV8dGV4dDA1ICAgICAKK3RwYXJ0XzAwXzIw ICB8MTV8dGV4dDE1ICAgICAKK3RwYXJ0XzIwXzMwICB8MjV8dGV4dDI1ICAgICAKK3RwYXJ0X2Rl ZmF1bHR8MzV8dGV4dDM1ICAgICAKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246 IHMyYiBzMmkgczJjIHMxYnMgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3N0ZXAgczJiOiBC RUdJTjsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsK K3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMxYnM6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJ QUxJWkFCTEU7CitzdGVwIHMxbWVyZzogQUxURVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFSVElUSU9O UyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEwXzIwKSBJTlRPIHRwYXJ0XzAwXzIwOworc3RlcCBzMmI6 IEJFR0lOOworc3RlcCBzMnU6IFVQREFURSB0cGFydCBTRVQgdCA9ICd0ZXh0MDFtb2RpZicgd2hl cmUgaSA9IDE7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMydTogPC4u LiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCB0YWJsZW9p ZDo6cmVnY2xhc3MsICogRlJPTSB0cGFydCBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRl eHQgQ09MTEFURSAiQyIsIGk7Cit0YWJsZW9pZCAgICAgfCBpfHQgICAgICAgICAgCistLS0tLS0t LS0tLS0tKy0tKy0tLS0tLS0tLS0tCit0cGFydF8wMF8yMCAgfCAxfHRleHQwMW1vZGlmCit0cGFy dF8wMF8yMCAgfCA1fHRleHQwNSAgICAgCit0cGFydF8wMF8yMCAgfDE1fHRleHQxNSAgICAgCit0 cGFydF8yMF8zMCAgfDI1fHRleHQyNSAgICAgCit0cGFydF9kZWZhdWx0fDM1fHRleHQzNSAgICAg CisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMmJyciBzMmkgczJjIHMxYiBz MW1lcmcgczJiIHMydSBzMWMgczJjIHMycworc3RlcCBzMmJycjogQkVHSU4gSVNPTEFUSU9OIExF VkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMg KDEsICd0ZXh0MDEnKTsKK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMxYjogQkVHSU47CitzdGVw IHMxbWVyZzogQUxURVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFSVElUSU9OUyAodHBhcnRfMDBfMTAs IHRwYXJ0XzEwXzIwKSBJTlRPIHRwYXJ0XzAwXzIwOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBz MnU6IFVQREFURSB0cGFydCBTRVQgdCA9ICd0ZXh0MDFtb2RpZicgd2hlcmUgaSA9IDE7IDx3YWl0 aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMydTogPC4uLiBjb21wbGV0ZWQ+Citz dGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICog RlJPTSB0cGFydCBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIs IGk7Cit0YWJsZW9pZCAgICAgfCBpfHQgICAgICAgICAgCistLS0tLS0tLS0tLS0tKy0tKy0tLS0t LS0tLS0tCit0cGFydF8wMF8yMCAgfCAxfHRleHQwMW1vZGlmCit0cGFydF8wMF8yMCAgfCA1fHRl eHQwNSAgICAgCit0cGFydF8wMF8yMCAgfDE1fHRleHQxNSAgICAgCit0cGFydF8yMF8zMCAgfDI1 fHRleHQyNSAgICAgCit0cGFydF9kZWZhdWx0fDM1fHRleHQzNSAgICAgCisoNSByb3dzKQorCisK K3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMmJyciBzMmkgczJjIHMxYnJyIHMxbWVyZyBzMmIgczJ1 IHMxYyBzMmMgczJzCitzdGVwIHMyYnJyOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJM RSBSRUFEOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScp Oworc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczFicnI6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBS RVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMxbWVyZzogQUxURVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFS VElUSU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEwXzIwKSBJTlRPIHRwYXJ0XzAwXzIwOworc3Rl cCBzMmI6IEJFR0lOOworc3RlcCBzMnU6IFVQREFURSB0cGFydCBTRVQgdCA9ICd0ZXh0MDFtb2Rp Zicgd2hlcmUgaSA9IDE7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMy dTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCB0 YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSB0cGFydCBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xh c3M6OnRleHQgQ09MTEFURSAiQyIsIGk7Cit0YWJsZW9pZCAgICAgfCBpfHQgICAgICAgICAgCist LS0tLS0tLS0tLS0tKy0tKy0tLS0tLS0tLS0tCit0cGFydF8wMF8yMCAgfCAxfHRleHQwMW1vZGlm Cit0cGFydF8wMF8yMCAgfCA1fHRleHQwNSAgICAgCit0cGFydF8wMF8yMCAgfDE1fHRleHQxNSAg ICAgCit0cGFydF8yMF8zMCAgfDI1fHRleHQyNSAgICAgCit0cGFydF9kZWZhdWx0fDM1fHRleHQz NSAgICAgCisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMmJyciBzMmkgczJj IHMxYnMgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3N0ZXAgczJicnI6IEJFR0lOIElTT0xB VElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQg VkFMVUVTICgxLCAndGV4dDAxJyk7CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMWJzOiBCRUdJ TiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOworc3RlcCBzMW1lcmc6IEFMVEVSIFRBQkxF IHRwYXJ0IE1FUkdFIFBBUlRJVElPTlMgKHRwYXJ0XzAwXzEwLCB0cGFydF8xMF8yMCkgSU5UTyB0 cGFydF8wMF8yMDsKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJ1OiBVUERBVEUgdHBhcnQgU0VU IHQgPSAndGV4dDAxbW9kaWYnIHdoZXJlIGkgPSAxOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzog Q09NTUlUOworc3RlcCBzMnU6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0 ZXAgczJzOiBTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gdHBhcnQgT1JERVIgQlkg dGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBpOwordGFibGVvaWQgICAgIHwg aXx0ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLSstLSstLS0tLS0tLS0tLQordHBhcnRfMDBfMjAg IHwgMXx0ZXh0MDFtb2RpZgordHBhcnRfMDBfMjAgIHwgNXx0ZXh0MDUgICAgIAordHBhcnRfMDBf MjAgIHwxNXx0ZXh0MTUgICAgIAordHBhcnRfMjBfMzAgIHwyNXx0ZXh0MjUgICAgIAordHBhcnRf ZGVmYXVsdHwzNXx0ZXh0MzUgICAgIAorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlv bjogczJicyBzMmkgczJjIHMxYiBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycworc3RlcCBzMmJz OiBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOworc3RlcCBzMmk6IElOU0VSVCBJ TlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOworc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAg czFiOiBCRUdJTjsKK3N0ZXAgczFtZXJnOiBBTFRFUiBUQUJMRSB0cGFydCBNRVJHRSBQQVJUSVRJ T05TICh0cGFydF8wMF8xMCwgdHBhcnRfMTBfMjApIElOVE8gdHBhcnRfMDBfMjA7CitzdGVwIHMy YjogQkVHSU47CitzdGVwIHMydTogVVBEQVRFIHRwYXJ0IFNFVCB0ID0gJ3RleHQwMW1vZGlmJyB3 aGVyZSBpID0gMTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJ1OiA8 Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUIHRhYmxl b2lkOjpyZWdjbGFzcywgKiBGUk9NIHRwYXJ0IE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6 dGV4dCBDT0xMQVRFICJDIiwgaTsKK3RhYmxlb2lkICAgICB8IGl8dCAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0rLS0rLS0tLS0tLS0tLS0KK3RwYXJ0XzAwXzIwICB8IDF8dGV4dDAxbW9kaWYKK3Rw YXJ0XzAwXzIwICB8IDV8dGV4dDA1ICAgICAKK3RwYXJ0XzAwXzIwICB8MTV8dGV4dDE1ICAgICAK K3RwYXJ0XzIwXzMwICB8MjV8dGV4dDI1ICAgICAKK3RwYXJ0X2RlZmF1bHR8MzV8dGV4dDM1ICAg ICAKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMyYnMgczJpIHMyYyBzMWJy ciBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycworc3RlcCBzMmJzOiBCRUdJTiBJU09MQVRJT04g TEVWRUwgU0VSSUFMSVpBQkxFOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAo MSwgJ3RleHQwMScpOworc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczFicnI6IEJFR0lOIElTT0xB VElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMxbWVyZzogQUxURVIgVEFCTEUgdHBh cnQgTUVSR0UgUEFSVElUSU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEwXzIwKSBJTlRPIHRwYXJ0 XzAwXzIwOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMnU6IFVQREFURSB0cGFydCBTRVQgdCA9 ICd0ZXh0MDFtb2RpZicgd2hlcmUgaSA9IDE7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01N SVQ7CitzdGVwIHMydTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBz MnM6IFNFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSB0cGFydCBPUkRFUiBCWSB0YWJs ZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIGk7Cit0YWJsZW9pZCAgICAgfCBpfHQg ICAgICAgICAgCistLS0tLS0tLS0tLS0tKy0tKy0tLS0tLS0tLS0tCit0cGFydF8wMF8yMCAgfCAx fHRleHQwMW1vZGlmCit0cGFydF8wMF8yMCAgfCA1fHRleHQwNSAgICAgCit0cGFydF8wMF8yMCAg fDE1fHRleHQxNSAgICAgCit0cGFydF8yMF8zMCAgfDI1fHRleHQyNSAgICAgCit0cGFydF9kZWZh dWx0fDM1fHRleHQzNSAgICAgCisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBz MmJzIHMyaSBzMmMgczFicyBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycworc3RlcCBzMmJzOiBC RUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOworc3RlcCBzMmk6IElOU0VSVCBJTlRP IHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOworc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczFi czogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsKK3N0ZXAgczFtZXJnOiBBTFRF UiBUQUJMRSB0cGFydCBNRVJHRSBQQVJUSVRJT05TICh0cGFydF8wMF8xMCwgdHBhcnRfMTBfMjAp IElOVE8gdHBhcnRfMDBfMjA7CitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMydTogVVBEQVRFIHRw YXJ0IFNFVCB0ID0gJ3RleHQwMW1vZGlmJyB3aGVyZSBpID0gMTsgPHdhaXRpbmcgLi4uPgorc3Rl cCBzMWM6IENPTU1JVDsKK3N0ZXAgczJ1OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01N SVQ7CitzdGVwIHMyczogU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHRwYXJ0IE9S REVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgaTsKK3RhYmxlb2lk ICAgICB8IGl8dCAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0rLS0rLS0tLS0tLS0tLS0KK3RwYXJ0 XzAwXzIwICB8IDF8dGV4dDAxbW9kaWYKK3RwYXJ0XzAwXzIwICB8IDV8dGV4dDA1ICAgICAKK3Rw YXJ0XzAwXzIwICB8MTV8dGV4dDE1ICAgICAKK3RwYXJ0XzIwXzMwICB8MjV8dGV4dDI1ICAgICAK K3RwYXJ0X2RlZmF1bHR8MzV8dGV4dDM1ICAgICAKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVy bXV0YXRpb246IHMyYiBzMmkgczJjIHMxYiBzMW1lcmcgczJiIHMydTIgczFjIHMyYyBzMnMKK3N0 ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0 ZXh0MDEnKTsKK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMxYjogQkVHSU47CitzdGVwIHMxbWVy ZzogQUxURVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFSVElUSU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0 XzEwXzIwKSBJTlRPIHRwYXJ0XzAwXzIwOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMnUyOiBV UERBVEUgdHBhcnQgU0VUIGkgPSAyMSB3aGVyZSBpID0gMTsgPHdhaXRpbmcgLi4uPgorc3RlcCBz MWM6IENPTU1JVDsKK3N0ZXAgczJ1MjogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlU Oworc3RlcCBzMnM6IFNFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSB0cGFydCBPUkRF UiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIGk7Cit0YWJsZW9pZCAg ICAgfCBpfHQgICAgIAorLS0tLS0tLS0tLS0tLSstLSstLS0tLS0KK3RwYXJ0XzAwXzIwICB8IDV8 dGV4dDA1Cit0cGFydF8wMF8yMCAgfDE1fHRleHQxNQordHBhcnRfMjBfMzAgIHwyMXx0ZXh0MDEK K3RwYXJ0XzIwXzMwICB8MjV8dGV4dDI1Cit0cGFydF9kZWZhdWx0fDM1fHRleHQzNQorKDUgcm93 cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczJiIHMyaSBzMmMgczFiIHMxbWVyZyBzMmIg czJ1MyBzMWMgczJjIHMycworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMmk6IElOU0VSVCBJTlRP IHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOworc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczFi OiBCRUdJTjsKK3N0ZXAgczFtZXJnOiBBTFRFUiBUQUJMRSB0cGFydCBNRVJHRSBQQVJUSVRJT05T ICh0cGFydF8wMF8xMCwgdHBhcnRfMTBfMjApIElOVE8gdHBhcnRfMDBfMjA7CitzdGVwIHMyYjog QkVHSU47CitzdGVwIHMydTM6IFVQREFURSB0cGFydCBTRVQgaSA9IDExIHdoZXJlIGkgPSAxOyA8 d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMnUzOiA8Li4uIGNvbXBsZXRl ZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFz cywgKiBGUk9NIHRwYXJ0IE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRF ICJDIiwgaTsKK3RhYmxlb2lkICAgICB8IGl8dCAgICAgCistLS0tLS0tLS0tLS0tKy0tKy0tLS0t LQordHBhcnRfMDBfMjAgIHwgNXx0ZXh0MDUKK3RwYXJ0XzAwXzIwICB8MTF8dGV4dDAxCit0cGFy dF8wMF8yMCAgfDE1fHRleHQxNQordHBhcnRfMjBfMzAgIHwyNXx0ZXh0MjUKK3RwYXJ0X2RlZmF1 bHR8MzV8dGV4dDM1CisoNSByb3dzKQorCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24v aXNvbGF0aW9uX3NjaGVkdWxlIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVs ZQppbmRleCAxMTJmMDVhMzY3Ny4uZGI0MmM1MzViYTYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L2lz b2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xh dGlvbl9zY2hlZHVsZQpAQCAtMTA5LDYgKzEwOSw3IEBAIHRlc3Q6IHBhcnRpdGlvbi1rZXktdXBk YXRlLTEKIHRlc3Q6IHBhcnRpdGlvbi1rZXktdXBkYXRlLTIKIHRlc3Q6IHBhcnRpdGlvbi1rZXkt dXBkYXRlLTMKIHRlc3Q6IHBhcnRpdGlvbi1rZXktdXBkYXRlLTQKK3Rlc3Q6IHBhcnRpdGlvbi1t ZXJnZQogdGVzdDogcGxwZ3NxbC10b2FzdAogdGVzdDogY2x1c3Rlci1jb25mbGljdAogdGVzdDog Y2x1c3Rlci1jb25mbGljdC1wYXJ0aXRpb24KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlv bi9zcGVjcy9wYXJ0aXRpb24tbWVyZ2Uuc3BlYyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9w YXJ0aXRpb24tbWVyZ2Uuc3BlYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uZjNjNWNlMmZiZjEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vc3Bl Y3MvcGFydGl0aW9uLW1lcmdlLnNwZWMKQEAgLTAsMCArMSw2MiBAQAorIyBWZXJpZnkgdGhhdCBN RVJHRSBvcGVyYXRpb24gbG9ja3MgRE1MIG9wZXJhdGlvbnMgd2l0aCBwYXJ0aXRpb25lZCB0YWJs ZQorCitzZXR1cAoreworICBEUk9QIFRBQkxFIElGIEVYSVNUUyB0cGFydDsKKyAgQ1JFQVRFIFRB QkxFIHRwYXJ0KGkgaW50LCB0IHRleHQpIHBhcnRpdGlvbiBieSByYW5nZShpKTsKKyAgQ1JFQVRF IFRBQkxFIHRwYXJ0XzAwXzEwIFBBUlRJVElPTiBPRiB0cGFydCBGT1IgVkFMVUVTIEZST00gKDAp IFRPICgxMCk7CisgIENSRUFURSBUQUJMRSB0cGFydF8xMF8yMCBQQVJUSVRJT04gT0YgdHBhcnQg Rk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKTsKKyAgQ1JFQVRFIFRBQkxFIHRwYXJ0XzIwXzMw IFBBUlRJVElPTiBPRiB0cGFydCBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMzApOworICBDUkVB VEUgVEFCTEUgdHBhcnRfZGVmYXVsdCBQQVJUSVRJT04gT0YgdHBhcnQgREVGQVVMVDsKKyAgSU5T RVJUIElOVE8gdHBhcnQgVkFMVUVTICg1LCAndGV4dDA1Jyk7CisgIElOU0VSVCBJTlRPIHRwYXJ0 IFZBTFVFUyAoMTUsICd0ZXh0MTUnKTsKKyAgSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgyNSwg J3RleHQyNScpOworICBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDM1LCAndGV4dDM1Jyk7Cit9 CisKK3RlYXJkb3duCit7CisgIERST1AgVEFCTEUgdHBhcnQ7Cit9CisKK3Nlc3Npb24gczEKK3N0 ZXAgczFiCXsgQkVHSU47IH0KK3N0ZXAgczFicnIJeyBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQ RUFUQUJMRSBSRUFEOyB9CitzdGVwIHMxYnMJeyBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFM SVpBQkxFOyB9CitzdGVwIHMxbWVyZwl7IEFMVEVSIFRBQkxFIHRwYXJ0IE1FUkdFIFBBUlRJVElP TlMgKHRwYXJ0XzAwXzEwLCB0cGFydF8xMF8yMCkgSU5UTyB0cGFydF8wMF8yMDsgfQorc3RlcCBz MWMJeyBDT01NSVQ7IH0KKworCitzZXNzaW9uIHMyCitzdGVwIHMyYgl7IEJFR0lOOyB9CitzdGVw IHMyYnJyCXsgQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsgfQorc3RlcCBz MmJzCXsgQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsgfQorc3RlcCBzMmkJeyBJ TlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsgfQorc3RlcCBzMnUJeyBVUERB VEUgdHBhcnQgU0VUIHQgPSAndGV4dDAxbW9kaWYnIHdoZXJlIGkgPSAxOyB9CitzdGVwIHMydTIJ eyBVUERBVEUgdHBhcnQgU0VUIGkgPSAyMSB3aGVyZSBpID0gMTsgfQorc3RlcCBzMnUzCXsgVVBE QVRFIHRwYXJ0IFNFVCBpID0gMTEgd2hlcmUgaSA9IDE7IH0KK3N0ZXAgczJjCXsgQ09NTUlUOyB9 CitzdGVwIHMycwl7IFNFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSB0cGFydCBPUkRF UiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIGk7IH0KKworCisjIHMy IGluc2VydHMgcm93IGludG8gdGFibGUuIHMxIHN0YXJ0cyBNRVJHRSBQQVJUSVRJT05TIHRoZW4K KyMgczIgaXMgdHJ5aW5nIHRvIHVwZGF0ZSBpbnNlcnRlZCByb3cgYW5kIHdhaXRzIHVudGlsIHMx IGZpbmlzaGVzCisjIE1FUkdFIG9wZXJhdGlvbi4KKworcGVybXV0YXRpb24gczJiIHMyaSBzMmMg czFiIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCitwZXJtdXRhdGlvbiBzMmIgczJpIHMyYyBz MWJyciBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycworcGVybXV0YXRpb24gczJiIHMyaSBzMmMg czFicyBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycworCitwZXJtdXRhdGlvbiBzMmJyciBzMmkg czJjIHMxYiBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycworcGVybXV0YXRpb24gczJicnIgczJp IHMyYyBzMWJyciBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycworcGVybXV0YXRpb24gczJicnIg czJpIHMyYyBzMWJzIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCisKK3Blcm11dGF0aW9uIHMy YnMgczJpIHMyYyBzMWIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3Blcm11dGF0aW9uIHMy YnMgczJpIHMyYyBzMWJyciBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycworcGVybXV0YXRpb24g czJicyBzMmkgczJjIHMxYnMgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKKworIyBUdXBsZSBy b3V0aW5nIGJldHdlZW4gcGFydGl0aW9ucy4KK3Blcm11dGF0aW9uIHMyYiBzMmkgczJjIHMxYiBz MW1lcmcgczJiIHMydTIgczFjIHMyYyBzMnMKKworIyBUdXBsZSByb3V0aW5nIGJldHdlZW4gbWVy Z2luZyBwYXJ0aXRpb25zLgorcGVybXV0YXRpb24gczJiIHMyaSBzMmMgczFiIHMxbWVyZyBzMmIg czJ1MyBzMWMgczJjIHMycwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9k ZXBhcnNlL2V4cGVjdGVkL2FsdGVyX3RhYmxlLm91dCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9k ZGxfZGVwYXJzZS9leHBlY3RlZC9hbHRlcl90YWJsZS5vdXQKaW5kZXggZjFjNmYwNWZlMTcuLjY4 NmViZDMyNDJhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2Uv ZXhwZWN0ZWQvYWx0ZXJfdGFibGUub3V0CisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxf ZGVwYXJzZS9leHBlY3RlZC9hbHRlcl90YWJsZS5vdXQKQEAgLTQxLDYgKzQxLDMwIEBAIEFMVEVS IFRBQkxFIHBhcmVudCBBREQgQ09OU1RSQUlOVCBhX3BvcyBDSEVDSyAoYSA+IDApOwogTk9USUNF OiAgbWVyZ2luZyBjb25zdHJhaW50ICJhX3BvcyIgd2l0aCBpbmhlcml0ZWQgZGVmaW5pdGlvbgog Tk9USUNFOiAgRERMIHRlc3Q6IHR5cGUgYWx0ZXIgdGFibGUsIHRhZyBBTFRFUiBUQUJMRQogTk9U SUNFOiAgICBzdWJjb21tYW5kOiB0eXBlIEFERCBDT05TVFJBSU5UIChhbmQgcmVjdXJzZSkgZGVz YyBjb25zdHJhaW50IGFfcG9zIG9uIHRhYmxlIHBhcmVudAorQ1JFQVRFIFRBQkxFIHBhcnQgKAor CWEgaW50CispIFBBUlRJVElPTiBCWSBSQU5HRSAoYSk7CitOT1RJQ0U6ICBEREwgdGVzdDogdHlw ZSBzaW1wbGUsIHRhZyBDUkVBVEUgVEFCTEUKK0NSRUFURSBUQUJMRSBwYXJ0MSBQQVJUSVRJT04g T0YgcGFydCBGT1IgVkFMVUVTIEZST00gKDEpIHRvICgxMDApOworTk9USUNFOiAgRERMIHRlc3Q6 IHR5cGUgc2ltcGxlLCB0YWcgQ1JFQVRFIFRBQkxFCitDUkVBVEUgVEFCTEUgcGFydDIgKGEgaW50 KTsKK05PVElDRTogIERETCB0ZXN0OiB0eXBlIHNpbXBsZSwgdGFnIENSRUFURSBUQUJMRQorQUxU RVIgVEFCTEUgcGFydCBBVFRBQ0ggUEFSVElUSU9OIHBhcnQyIEZPUiBWQUxVRVMgRlJPTSAoMTAx KSB0byAoMjAwKTsKK05PVElDRTogIERETCB0ZXN0OiB0eXBlIGFsdGVyIHRhYmxlLCB0YWcgQUxU RVIgVEFCTEUKK05PVElDRTogICAgc3ViY29tbWFuZDogdHlwZSBBVFRBQ0ggUEFSVElUSU9OIGRl c2MgdGFibGUgcGFydDIKK0FMVEVSIFRBQkxFIHBhcnQgREVUQUNIIFBBUlRJVElPTiBwYXJ0MjsK K05PVElDRTogIERETCB0ZXN0OiB0eXBlIGFsdGVyIHRhYmxlLCB0YWcgQUxURVIgVEFCTEUKK05P VElDRTogICAgc3ViY29tbWFuZDogdHlwZSBERVRBQ0ggUEFSVElUSU9OIGRlc2MgdGFibGUgcGFy dDIKK0RST1AgVEFCTEUgcGFydDI7CitDUkVBVEUgVEFCTEUgcGFydDIgUEFSVElUSU9OIE9GIHBh cnQgRk9SIFZBTFVFUyBGUk9NICgxMDApIHRvICgyMDApOworTk9USUNFOiAgRERMIHRlc3Q6IHR5 cGUgc2ltcGxlLCB0YWcgQ1JFQVRFIFRBQkxFCitBTFRFUiBUQUJMRSBwYXJ0IE1FUkdFIFBBUlRJ VElPTlMgKHBhcnQxLCBwYXJ0MikgSU5UTyBwYXJ0MTsKK05PVElDRTogIERETCB0ZXN0OiB0eXBl IGFsdGVyIHRhYmxlLCB0YWcgQUxURVIgVEFCTEUKK05PVElDRTogICAgc3ViY29tbWFuZDogdHlw ZSBNRVJHRSBQQVJUSVRJT05TIGRlc2MgPE5VTEw+CitBTFRFUiBUQUJMRSBwYXJ0IEFERCBQUklN QVJZIEtFWSAoYSk7CitOT1RJQ0U6ICBEREwgdGVzdDogdHlwZSBhbHRlciB0YWJsZSwgdGFnIEFM VEVSIFRBQkxFCitOT1RJQ0U6ICAgIHN1YmNvbW1hbmQ6IHR5cGUgQUREIENPTlNUUkFJTlQgKGFu ZCByZWN1cnNlKSBkZXNjIGNvbnN0cmFpbnQgcGFydF9hX25vdF9udWxsIG9uIHRhYmxlIHBhcnQK K05PVElDRTogICAgc3ViY29tbWFuZDogdHlwZSBBREQgSU5ERVggZGVzYyBpbmRleCBwYXJ0X3Br ZXkKIEFMVEVSIFRBQkxFIHBhcmVudCBBTFRFUiBDT0xVTU4gYSBTRVQgTk9UIE5VTEw7CiBOT1RJ Q0U6ICBEREwgdGVzdDogdHlwZSBhbHRlciB0YWJsZSwgdGFnIEFMVEVSIFRBQkxFCiBOT1RJQ0U6 ICAgIHN1YmNvbW1hbmQ6IHR5cGUgU0VUIE5PVCBOVUxMIChhbmQgcmVjdXJzZSkgZGVzYyBjb25z dHJhaW50IHBhcmVudF9hX25vdF9udWxsIG9uIHRhYmxlIHBhcmVudApkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3NxbC9hbHRlcl90YWJsZS5zcWwgYi9zcmMv dGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2Uvc3FsL2FsdGVyX3RhYmxlLnNxbAppbmRleCAz ODBiYTI2NjA3NS4uNjZjYjA5YjQ4NDAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9kZGxfZGVwYXJzZS9zcWwvYWx0ZXJfdGFibGUuc3FsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMv dGVzdF9kZGxfZGVwYXJzZS9zcWwvYWx0ZXJfdGFibGUuc3FsCkBAIC0yNCw2ICsyNCwyNSBAQCBB TFRFUiBUQUJMRSBPTkxZIGdyYW5kY2hpbGQgQUREIENPTlNUUkFJTlQgYV9wb3MgQ0hFQ0sgKGEg PiAwKTsKIC0tIENvbnN0cmFpbnQsIHdpdGggcmVjdXJzaW9uCiBBTFRFUiBUQUJMRSBwYXJlbnQg QUREIENPTlNUUkFJTlQgYV9wb3MgQ0hFQ0sgKGEgPiAwKTsKIAorPDw8PDw8PCBIRUFECis9PT09 PT09CitDUkVBVEUgVEFCTEUgcGFydCAoCisJYSBpbnQKKykgUEFSVElUSU9OIEJZIFJBTkdFIChh KTsKKworQ1JFQVRFIFRBQkxFIHBhcnQxIFBBUlRJVElPTiBPRiBwYXJ0IEZPUiBWQUxVRVMgRlJP TSAoMSkgdG8gKDEwMCk7CisKK0NSRUFURSBUQUJMRSBwYXJ0MiAoYSBpbnQpOworQUxURVIgVEFC TEUgcGFydCBBVFRBQ0ggUEFSVElUSU9OIHBhcnQyIEZPUiBWQUxVRVMgRlJPTSAoMTAxKSB0byAo MjAwKTsKK0FMVEVSIFRBQkxFIHBhcnQgREVUQUNIIFBBUlRJVElPTiBwYXJ0MjsKK0RST1AgVEFC TEUgcGFydDI7CisKK0NSRUFURSBUQUJMRSBwYXJ0MiBQQVJUSVRJT04gT0YgcGFydCBGT1IgVkFM VUVTIEZST00gKDEwMCkgdG8gKDIwMCk7CitBTFRFUiBUQUJMRSBwYXJ0IE1FUkdFIFBBUlRJVElP TlMgKHBhcnQxLCBwYXJ0MikgSU5UTyBwYXJ0MTsKKworQUxURVIgVEFCTEUgcGFydCBBREQgUFJJ TUFSWSBLRVkgKGEpOworCis+Pj4+Pj4+IGQ5MjdlOWI2ODNmIChJbXBsZW1lbnQgQUxURVIgVEFC TEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgLi4uIGNvbW1hbmQpCiBBTFRFUiBUQUJMRSBwYXJlbnQg QUxURVIgQ09MVU1OIGEgU0VUIE5PVCBOVUxMOwogQUxURVIgVEFCTEUgcGFyZW50IEFMVEVSIENP TFVNTiBhIERST1AgTk9UIE5VTEw7CiBBTFRFUiBUQUJMRSBwYXJlbnQgQUxURVIgQ09MVU1OIGEg U0VUIE5PVCBOVUxMOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBh cnNlL3Rlc3RfZGRsX2RlcGFyc2UuYyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJz ZS90ZXN0X2RkbF9kZXBhcnNlLmMKaW5kZXggMTkzNjY5ZjJiYzEuLjdkZTVkZGI4Nzg1IDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2UvdGVzdF9kZGxfZGVwYXJz ZS5jCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBh cnNlLmMKQEAgLTI5Niw2ICsyOTYsOSBAQCBnZXRfYWx0ZXJ0YWJsZV9zdWJjbWRpbmZvKFBHX0ZV TkNUSU9OX0FSR1MpCiAJCQljYXNlIEFUX0RldGFjaFBhcnRpdGlvbkZpbmFsaXplOgogCQkJCXN0 cnR5cGUgPSAiREVUQUNIIFBBUlRJVElPTiAuLi4gRklOQUxJWkUiOwogCQkJCWJyZWFrOworCQkJ Y2FzZSBBVF9NZXJnZVBhcnRpdGlvbnM6CisJCQkJc3RydHlwZSA9ICJNRVJHRSBQQVJUSVRJT05T IjsKKwkJCQlicmVhazsKIAkJCWNhc2UgQVRfQWRkSWRlbnRpdHk6CiAJCQkJc3RydHlwZSA9ICJB REQgSURFTlRJVFkiOwogCQkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9wYXJ0aXRpb25fbWVyZ2Uub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9w YXJ0aXRpb25fbWVyZ2Uub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li4zZTQwYWJmMzhhMAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvcGFydGl0aW9uX21lcmdlLm91dApAQCAtMCwwICsxLDEwOTcgQEAKKy0tCistLSBQQVJUSVRJ T05TX01FUkdFCistLSBUZXN0cyBmb3IgIkFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05T IC4uLiIgY29tbWFuZAorLS0KK0NSRUFURSBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWE7 CitDUkVBVEUgU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMjsKK1NFVCBzZWFyY2hfcGF0 aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwdWJsaWM7CistLQorLS0gQlkgUkFOR0UgcGFy dGl0aW9uaW5nCistLQorLS0KKy0tIFRlc3QgZm9yIGVycm9yIGNvZGVzCistLQorQ1JFQVRFIFRB QkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFS Q0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZ IFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19kZWMyMDIxIFBBUlRJVElP TiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIxLTEyLTAxJykgVE8gKCcyMDIx LTEyLTMxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNf cmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKTsKK0NSRUFURSBUQUJM RSBzYWxlc19tYXIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXBy MjAyMiAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBz YWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2Fs ZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByXzEgUEFSVElUSU9OIE9GIHNhbGVzX2Fw cjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNC0xNScpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX2Fwcl8yIFBBUlRJVElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDQtMTUnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0FMVEVSIFRBQkxF IHNhbGVzX3JhbmdlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf b3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworLS0gRVJST1I6ICBwYXJ0 aXRpb24gd2l0aCBuYW1lICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0FMVEVSIFRB QkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21h cjIwMjIsIHNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfZmViX21hcl9hcHIyMDIyOworRVJST1I6 ICBwYXJ0aXRpb24gd2l0aCBuYW1lICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0xJ TkUgMTogLi4uZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIy LCBzYWxlc19mZWIyLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6ICAic2FsZXNfYXByMjAyMiIgaXMgbm90 IGEgdGFibGUKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVz X2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIsIHNhbGVzX2FwcjIwMjIpIElOVE8gc2FsZXNfZmViX21h cl9hcHIyMDIyOworRVJST1I6ICAic2FsZXNfYXByMjAyMiIgaXMgbm90IGEgdGFibGUKK0hJTlQ6 ICBBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyBjYW4gb25seSBtZXJnZSBwYXJ0aXRp b25zIGRvbid0IGhhdmUgc3ViLXBhcnRpdGlvbnMKKy0tIEVSUk9SOiAgY2FuIG5vdCBtZXJnZSBw YXJ0aXRpb24gInNhbGVzX21hcjIwMjIiIHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uICJzYWxlc19q YW4yMDIyIgorLS0gREVUQUlMOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19tYXIy MDIyIiBpcyBub3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNf amFuMjAyMiIKKy0tIChzcGFjZSBiZXR3ZWVuIHNlY3Rpb25zIHNhbGVzX2phbjIwMjIgYW5kIHNh bGVzX21hcjIwMjIpCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChz YWxlc19qYW4yMDIyLCBzYWxlc19tYXIyMDIyKSBJTlRPIHNhbGVzX2phbl9tYXIyMDIyOworRVJS T1I6ICBjYW4gbm90IG1lcmdlIHBhcnRpdGlvbiAic2FsZXNfbWFyMjAyMiIgdG9nZXRoZXIgd2l0 aCBwYXJ0aXRpb24gInNhbGVzX2phbjIwMjIiCitERVRBSUw6ICBsb3dlciBib3VuZCBvZiBwYXJ0 aXRpb24gInNhbGVzX21hcjIwMjIiIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBwZXIgYm91bmQgb2Yg cGFydGl0aW9uICJzYWxlc19qYW4yMDIyIgorSElOVDogIEFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQ QVJUSVRJT05TIHJlcXVpcmVzIHRoZSBwYXJ0aXRpb24gYm91bmRzIHRvIGJlIGFkamFjZW50Lgor LS0gRVJST1I6ICBjYW4gbm90IG1lcmdlIHBhcnRpdGlvbiAic2FsZXNfamFuMjAyMiIgdG9nZXRo ZXIgd2l0aCBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjEiCistLSBERVRBSUw6ICBsb3dlciBib3Vu ZCBvZiBwYXJ0aXRpb24gInNhbGVzX2phbjIwMjIiIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBwZXIg Ym91bmQgb2YgcGFydGl0aW9uICJzYWxlc19kZWMyMDIxIgorLS0gKHNwYWNlIGJldHdlZW4gc2Vj dGlvbnMgc2FsZXNfZGVjMjAyMSBhbmQgc2FsZXNfamFuMjAyMikKK0FMVEVSIFRBQkxFIHNhbGVz X3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2RlYzIwMjEsIHNhbGVzX2phbjIwMjIsIHNh bGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfZGVjX2phbl9mZWIyMDIyOworRVJST1I6ICBjYW4gbm90 IG1lcmdlIHBhcnRpdGlvbiAic2FsZXNfamFuMjAyMiIgdG9nZXRoZXIgd2l0aCBwYXJ0aXRpb24g InNhbGVzX2RlYzIwMjEiCitERVRBSUw6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVz X2phbjIwMjIiIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJz YWxlc19kZWMyMDIxIgorSElOVDogIEFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIHJl cXVpcmVzIHRoZSBwYXJ0aXRpb24gYm91bmRzIHRvIGJlIGFkamFjZW50LgorLS0gRVJST1I6ICBw YXJ0aXRpb24gd2l0aCBuYW1lICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0FMVEVS IFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVz X21hcjIwMjIsIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX2ZlYjIwMjIpIElOVE8gc2Fs ZXNfZmViX21hcl9hcHIyMDIyOworRVJST1I6ICBwYXJ0aXRpb24gd2l0aCBuYW1lICJzYWxlc19m ZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0xJTkUgMTogLi4uZSBNRVJHRSBQQVJUSVRJT05TIChz YWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBwYXJ0aXRpb25zLi4uCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS1FUlJP Uiwgc2FsZXNfYXByXzIgYWxyZWFkeSBleGlzdHMKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1F UkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIsIHNhbGVzX2phbjIw MjIpIElOVE8gc2FsZXNfYXByXzI7CitFUlJPUjogIHJlbGF0aW9uICJzYWxlc19hcHJfMiIgYWxy ZWFkeSBleGlzdHMKK0NSRUFURSBWSUVXIGphbjIwMjJ2IGFzIFNFTEVDVCAqIEZST00gc2FsZXNf amFuMjAyMjsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVz X2phbjIwMjIsIHNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfZGVjX2phbl9mZWIyMDIyOworRVJS T1I6ICBjYW5ub3QgZHJvcCB0YWJsZSBzYWxlc19qYW4yMDIyIGJlY2F1c2Ugb3RoZXIgb2JqZWN0 cyBkZXBlbmQgb24gaXQKK0RFVEFJTDogIHZpZXcgamFuMjAyMnYgZGVwZW5kcyBvbiB0YWJsZSBz YWxlc19qYW4yMDIyCitISU5UOiAgVXNlIERST1AgLi4uIENBU0NBREUgdG8gZHJvcCB0aGUgZGVw ZW5kZW50IG9iamVjdHMgdG9vLgorRFJPUCBWSUVXIGphbjIwMjJ2OworLS0gTk8gRVJST1I6IHRl c3QgZm9yIGN1c3RvbSBwYXJ0aXRpb25zIG9yZGVyLCBzb3VyY2UgcGFydGl0aW9ucyBub3QgaW4g dGhlIHNlYXJjaF9wYXRoCitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVt YTIsIHB1YmxpYzsKK0FMVEVSIFRBQkxFIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX3Jh bmdlIE1FUkdFIFBBUlRJVElPTlMgKAorICBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYS5zYWxlc19m ZWIyMDIyLAorICBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYS5zYWxlc19tYXIyMDIyLAorICBwYXJ0 aXRpb25zX21lcmdlX3NjaGVtYS5zYWxlc19qYW4yMDIyKSBJTlRPIHNhbGVzX2phbl9mZWJfbWFy MjAyMjsKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwdWJsaWM7 CitQUkVQQVJFIGdldF9wYXJ0aXRpb25faW5mbyhyZWdjbGFzc1tdKSBBUworU0VMRUNUICBjLm9p ZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywKKyAgICAgICAgYy5yZWxwZXJzaXN0ZW5jZSwKKyAgICAg ICAgYy5yZWxraW5kLAorICAgICAgICBpLmluaGRldGFjaHBlbmRpbmcsCisgICAgICAgIHBnX2Nh dGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKQorRlJPTSAgICBwZ19jYXRh bG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQorV0hFUkUgICBjLm9pZCA9 IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gQU5ZKCQxKQorT1JERVIgQlkgcGdfY2F0YWxv Zy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQnLAorICAgICAg ICAgYy5vaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiOworRVhFQ1VURSBnZXRfcGFydGl0 aW9uX2luZm8oJ3tzYWxlc19yYW5nZX0nKTsKKyAgICAgICAgICAgICAgICAgICAgICBvaWQgICAg ICAgICAgICAgICAgICAgICAgIHwgcmVscGVyc2lzdGVuY2UgfCByZWxraW5kIHwgaW5oZGV0YWNo cGVuZGluZyB8ICAgICAgICAgICAgICAgICAgIHBnX2dldF9leHByICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25zX21lcmdlX3Nj aGVtYTIuc2FsZXNfamFuX2ZlYl9tYXIyMDIyIHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwg ZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoJzAxLTAxLTIwMjInKSBUTyAoJzA0 LTAxLTIwMjInKQorIHNhbGVzX2FwcjIwMjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCBwICAgICAgICAgICAgICB8IHAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZB TFVFUyBGUk9NICgnMDQtMDEtMjAyMicpIFRPICgnMDUtMDEtMjAyMicpCisgc2FsZXNfZGVjMjAy MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHAgICAgICAgICAgICAgIHwgciAg ICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcxMi0wMS0yMDIxJykg VE8gKCcxMi0zMS0yMDIxJykKKyBzYWxlc19vdGhlcnMgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8 IERFRkFVTFQKKyg0IHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CistLQorLS0gQWRk IHJvd3MgaW50byBwYXJ0aXRpb25lZCB0YWJsZSwgdGhlbiBtZXJnZSBwYXJ0aXRpb25zCistLQor Q1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29u X25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFS VElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIy IFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykg VE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04g T0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0w My0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX21hcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3Jh bmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKTsKK0NS RUFURSBUQUJMRSBzYWxlc19hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUg c2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworQ1JFQVRFIElO REVYIHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVl IChzYWxlc19kYXRlKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdN YXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAg JzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAor ICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAg ICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0w Mi0xMScpLAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAg J0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAs ICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4Jyks CisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8n LCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIy LTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKK1NFTEVD VCBwZ19jYXRhbG9nLnBnX2dldF9wYXJ0a2V5ZGVmKCdzYWxlc19yYW5nZSc6OnJlZ2NsYXNzKTsK KyBwZ19nZXRfcGFydGtleWRlZiAgCistLS0tLS0tLS0tLS0tLS0tLS0tLQorIFJBTkdFIChzYWxl c19kYXRlKQorKDEgcm93KQorCistLSBzaG93IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRpb25zOgor RVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3tzYWxlc19yYW5nZX0nKTsKKyAgICAgIG9pZCAg ICAgIHwgcmVscGVyc2lzdGVuY2UgfCByZWxraW5kIHwgaW5oZGV0YWNocGVuZGluZyB8ICAgICAg ICAgICAgICAgICAgIHBnX2dldF9leHByICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBzYWxlc19hcHIy MDIyIHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBW QUxVRVMgRlJPTSAoJzA0LTAxLTIwMjInKSBUTyAoJzA1LTAxLTIwMjInKQorIHNhbGVzX2ZlYjIw MjIgfCBwICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZB TFVFUyBGUk9NICgnMDItMDEtMjAyMicpIFRPICgnMDMtMDEtMjAyMicpCisgc2FsZXNfamFuMjAy MiB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFM VUVTIEZST00gKCcwMS0wMS0yMDIyJykgVE8gKCcwMi0wMS0yMDIyJykKKyBzYWxlc19tYXIyMDIy IHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxV RVMgRlJPTSAoJzAzLTAxLTIwMjInKSBUTyAoJzA0LTAxLTIwMjInKQorIHNhbGVzX290aGVycyAg fCBwICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgREVGQVVMVAor KDUgcm93cykKKworLS0gY2hlY2sgc2NoZW1hLXF1YWxpZmllZCBuYW1lIG9mIHRoZSBuZXcgcGFy dGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19m ZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBzYWxlc19hcHIyMDIyKSBJTlRPIHBhcnRpdGlvbnNfbWVy Z2Vfc2NoZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIwMjI7CistLSBzaG93IHBhcnRpdGlvbnMgd2l0 aCBjb25kaXRpb25zOgorRVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3tzYWxlc19yYW5nZX0n KTsKKyAgICAgICAgICAgICAgICAgICAgICBvaWQgICAgICAgICAgICAgICAgICAgICAgIHwgcmVs cGVyc2lzdGVuY2UgfCByZWxraW5kIHwgaW5oZGV0YWNocGVuZGluZyB8ICAgICAgICAgICAgICAg ICAgIHBnX2dldF9leHByICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2FsZXNfZmViX21hcl9hcHIy MDIyIHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBW QUxVRVMgRlJPTSAoJzAyLTAxLTIwMjInKSBUTyAoJzA1LTAxLTIwMjInKQorIHNhbGVzX2phbjIw MjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwICAgICAgICAgICAgICB8IHIg ICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgnMDEtMDEtMjAyMicp IFRPICgnMDItMDEtMjAyMicpCisgc2FsZXNfb3RoZXJzICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAg fCBERUZBVUxUCisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFi bGVuYW1lID0gJ3NhbGVzX2ZlYl9tYXJfYXByMjAyMicgYW5kIHNjaGVtYW5hbWUgPSAncGFydGl0 aW9uc19tZXJnZV9zY2hlbWEyJzsKKyAgICAgICAgc2NoZW1hbmFtZSAgICAgICAgfCAgICAgICB0 YWJsZW5hbWUgICAgICAgfCAgICAgICAgICAgICAgaW5kZXhuYW1lICAgICAgICAgICAgICAgfCB0 YWJsZXNwYWNlIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGluZGV4ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIgfCBz YWxlc19mZWJfbWFyX2FwcjIwMjIgfCBzYWxlc19mZWJfbWFyX2FwcjIwMjJfc2FsZXNfZGF0ZV9p ZHggfCAgICAgICAgICAgIHwgQ1JFQVRFIElOREVYIHNhbGVzX2ZlYl9tYXJfYXByMjAyMl9zYWxl c19kYXRlX2lkeCBPTiBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2FsZXNfZmViX21hcl9hcHIy MDIyIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKQorKDEgcm93KQorCitTRUxFQ1QgdGFibGVvaWQ6 OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfcmFuZ2UgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNz Ojp0ZXh0IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsKKyAgICAgICAgICAgICAgICAgICAg dGFibGVvaWQgICAgICAgICAgICAgICAgICAgIHwgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNv bl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25zX21lcmdlX3Nj aGVtYTIuc2FsZXNfZmViX21hcl9hcHIyMDIyIHwgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAg ICAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAyMgorIHBhcnRpdGlvbnNfbWVyZ2Vfc2No ZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIwMjIgfCAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAg ICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgcGFydGl0aW9uc19tZXJnZV9zY2hl bWEyLnNhbGVzX2ZlYl9tYXJfYXByMjAyMiB8ICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAg ICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyBwYXJ0aXRpb25zX21lcmdlX3NjaGVt YTIuc2FsZXNfZmViX21hcl9hcHIyMDIyIHwgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAg ICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1h Mi5zYWxlc19mZWJfbWFyX2FwcjIwMjIgfCAgICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAg ICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEy LnNhbGVzX2ZlYl9tYXJfYXByMjAyMiB8ICAgICAgICAgICAgICA3IHwgTGkgICAgICAgICAgICAg ICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIu c2FsZXNfZmViX21hcl9hcHIyMDIyIHwgICAgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgICAg IHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgorIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMi5z YWxlc19mZWJfbWFyX2FwcjIwMjIgfCAgICAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgICAg fCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLnNh bGVzX2ZlYl9tYXJfYXByMjAyMiB8ICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8 ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2Fs ZXNfZmViX21hcl9hcHIyMDIyIHwgICAgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAgICAgIHwg ICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorIHNhbGVzX2phbjIwMjIgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAgICAgfCAg ICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgc2FsZXNfamFuMjAyMiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICAgICB8ICAg ICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKKyBzYWxlc19qYW4yMDIyICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgICAg ICAgICAgMzc3IHwgMDEtMDktMjAyMgorIHNhbGVzX290aGVycyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgICAgfCAgICAg ICAgICA1MTAgfCAwNS0wNC0yMDIyCisoMTQgcm93cykKKworLS0gVXNlIGluZGV4c2NhbiBmb3Ig dGVzdGluZyBpbmRleGVzCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBPRkY7CitFWFBMQUlOIChDT1NU UyBPRkYpIFNFTEVDVCAqIEZST00gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9t YXJfYXByMjAyMiB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgSW5kZXggU2NhbiB1c2luZyBz YWxlc19mZWJfbWFyX2FwcjIwMjJfc2FsZXNfZGF0ZV9pZHggb24gc2FsZXNfZmViX21hcl9hcHIy MDIyCisgICBJbmRleCBDb25kOiAoc2FsZXNfZGF0ZSA+ICcwMS0wMS0yMDIyJzo6ZGF0ZSkKKygy IHJvd3MpCisKK1NFTEVDVCAqIEZST00gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLnNhbGVzX2Zl Yl9tYXJfYXByMjAyMiB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOworIHNhbGVzcGVy c29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCist LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0KKyAgICAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCAgICAgICAgICA1MDAg fCAwMi0xMC0yMDIyCisgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgICAgIHwgICAgICAg ICAgMTUwIHwgMDItMTEtMjAyMgorICAgICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8 ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyAgICAgICAgICAgICAgNyB8IExpICAgICAgICAg ICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgICAgICAgICAgICAgIDkgfCBNdWxs ZXIgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAgICAgIDEy IHwgUGxhdG8gICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyAgICAgICAg ICAgICAxMSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisg ICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDct MjAyMgorICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8 IDA0LTEzLTIwMjIKKyAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAg IDIwMDAgfCAwNC0zMC0yMDIyCisoMTAgcm93cykKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitE Uk9QIFRBQkxFIHNhbGVzX3JhbmdlOworLS0KKy0tIE1lcmdlIHNvbWUgcGFydGl0aW9ucyBpbnRv IERFRkFVTFQgcGFydGl0aW9uCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3Bl cnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJ TlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NS RUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUg c2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX21hcjIw MjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEn KSBUTyAoJzIwMjItMDQtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyIFBBUlRJVElP TiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIy LTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19y YW5nZSBERUZBVUxUOworQ1JFQVRFIElOREVYIHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4IE9O IHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKTsKK0lOU0VSVCBJTlRPIHNhbGVz X3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisg ICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAg ICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0 LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAn UG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAoNywgICdMaScsICAgICAgIDE3NSwg ICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwK KyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXIn LCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjIt MDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMs ICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEw LCAgJzIwMjItMDUtMDQnKTsKKy0tIE1lcmdlIHBhcnRpdGlvbnMgKGluY2x1ZGUgREVGQVVMVCBw YXJ0aXRpb24pIGludG8gcGFydGl0aW9uIHdpdGggdGhlIHNhbWUKKy0tIG5hbWUKK0FMVEVSIFRB QkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMKKyAgKHNhbGVzX2phbjIwMjIsIHNhbGVz X21hcjIwMjIsIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX290aGVycykgSU5UTyBzYWxl c19vdGhlcnM7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVycyBPUkRFUiBCWSBzYWxlc3BlcnNv bl9pZDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQg fCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgICAg IHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgorICAgICAgICAgICAgICA3IHwgTGkgICAgICAg ICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyAgICAgICAgICAgICAgOSB8IE11 bGxlciAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgICAgICAgICAgICAg MTAgfCBIYWxkZXIgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgorICAgICAg ICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIK KyAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0w OS0yMDIyCisgICAgICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgICAgIHwgICAgICAgICAgNTEw IHwgMDUtMDQtMjAyMgorKDcgcm93cykKKworLS0gc2hvdyBwYXJ0aXRpb25zIHdpdGggY29uZGl0 aW9uczoKK0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9pbmZvKCd7c2FsZXNfcmFuZ2V9Jyk7CisgICAg ICBvaWQgICAgICB8IHJlbHBlcnNpc3RlbmNlIHwgcmVsa2luZCB8IGluaGRldGFjaHBlbmRpbmcg fCAgICAgICAgICAgICAgICAgICBwZ19nZXRfZXhwciAgICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgc2Fs ZXNfYXByMjAyMiB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAg fCBGT1IgVkFMVUVTIEZST00gKCcwNC0wMS0yMDIyJykgVE8gKCcwNS0wMS0yMDIyJykKKyBzYWxl c19mZWIyMDIyIHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8 IEZPUiBWQUxVRVMgRlJPTSAoJzAyLTAxLTIwMjInKSBUTyAoJzAzLTAxLTIwMjInKQorIHNhbGVz X290aGVycyAgfCBwICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwg REVGQVVMVAorKDMgcm93cykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKy0tCistLSBUZXN0 IGZvcjoKKy0tICAgKiBjb21wb3NpdGUgcGFydGl0aW9uIGtleTsKKy0tICAgKiBHRU5FUkFURUQg Y29sdW1uOworLS0gICAqIGNvbHVtbiB3aXRoIERFRkFVTFQgdmFsdWUuCistLQorQ1JFQVRFIFRB QkxFIHNhbGVzX2RhdGUgKHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX3llYXIg SU5ULCBzYWxlc19tb250aCBJTlQsIHNhbGVzX2RheSBJTlQsCisgIHNhbGVzX2RhdGUgVkFSQ0hB UigxMCkgR0VORVJBVEVEIEFMV0FZUyBBUworICAgIChMUEFEKHNhbGVzX3llYXI6OnRleHQsIDQs ICcwJykgfHwgJy4nIHx8IExQQUQoc2FsZXNfbW9udGg6OnRleHQsIDIsICcwJykgfHwgJy4nIHx8 IExQQUQoc2FsZXNfZGF5Ojp0ZXh0LCAyLCAnMCcpKSBTVE9SRUQsCisgIHNhbGVzX2RlcGFydG1l bnQgVkFSQ0hBUigzMCkgREVGQVVMVCAnU2FsZXMgZGVwYXJ0bWVudCcpCisgIFBBUlRJVElPTiBC WSBSQU5HRSAoc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSk7CitDUkVBVEUgVEFC TEUgc2FsZXNfZGVjMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00g KDIwMjEsIDEyLCAxKSBUTyAoMjAyMiwgMSwgMSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAy MiBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDEsIDEpIFRP ICgyMDIyLCAyLCAxKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWIyMDIyIFBBUlRJVElPTiBPRiBz YWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMiwgMSkgVE8gKDIwMjIsIDMsIDEpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX290aGVyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRlIEZPUiBWQUxV RVMgRlJPTSAoMjAyMiwgMywgMSkgVE8gKE1BWFZBTFVFLCBNQVhWQUxVRSwgTUFYVkFMVUUpOwor SU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxl c19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMKKyAgKCdNYW5hZ2VyMScsIDIwMjEsIDEyLCA3KSwK KyAgKCdNYW5hZ2VyMicsIDIwMjEsIDEyLCA4KSwKKyAgKCdNYW5hZ2VyMycsIDIwMjIsIDEsIDEp LAorICAoJ01hbmFnZXIxJywgMjAyMiwgMiwgNCksCisgICgnTWFuYWdlcjInLCAyMDIyLCAxLCAy KSwKKyAgKCdNYW5hZ2VyMycsIDIwMjIsIDIsIDEpLAorICAoJ01hbmFnZXIxJywgMjAyMiwgMywg MyksCisgICgnTWFuYWdlcjInLCAyMDIyLCAzLCA0KSwKKyAgKCdNYW5hZ2VyMycsIDIwMjIsIDUs IDEpOworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX2RhdGU7CisgICB0 YWJsZW9pZCAgICB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGgg fCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIHNhbGVzX2RlYzIwMjIgfCBN YW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAgICA3IHwg MjAyMS4xMi4wNyB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19kZWMyMDIyIHwgTWFuYWdlcjIg ICAgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgOCB8IDIwMjEuMTIu MDggfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfamFuMjAyMiB8IE1hbmFnZXIzICAgICAgICAg fCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDEgfCAyMDIyLjAxLjAxIHwgU2Fs ZXMgZGVwYXJ0bWVudAorIHNhbGVzX2phbjIwMjIgfCBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAg MjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgICAyIHwgMjAyMi4wMS4wMiB8IFNhbGVzIGRlcGFy dG1lbnQKKyBzYWxlc19mZWIyMDIyIHwgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAg ICAgICAgICAgMiB8ICAgICAgICAgNCB8IDIwMjIuMDIuMDQgfCBTYWxlcyBkZXBhcnRtZW50Cisg c2FsZXNfZmViMjAyMiB8IE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAg IDIgfCAgICAgICAgIDEgfCAyMDIyLjAyLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX290 aGVyICAgfCBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAzIHwgICAg ICAgICAzIHwgMjAyMi4wMy4wMyB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19vdGhlciAgIHwg TWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgNCB8 IDIwMjIuMDMuMDQgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfb3RoZXIgICB8IE1hbmFnZXIz ICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDUgfCAgICAgICAgIDEgfCAyMDIyLjA1 LjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorKDkgcm93cykKKworQUxURVIgVEFCTEUgc2FsZXNfZGF0 ZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19qYW4yMDIyLCBzYWxlc19mZWIyMDIyKSBJTlRPIHNh bGVzX2phbl9mZWIyMDIyOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc3BlcnNvbl9uYW1l LCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMKKyAgKCdNYW5hZ2Vy MScsIDIwMjIsIDEsIDEwKSwKKyAgKCdNYW5hZ2VyMicsIDIwMjIsIDIsIDEwKTsKK1NFTEVDVCB0 YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19kYXRlOworICAgICB0YWJsZW9pZCAgICAg IHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3llYXIgfCBzYWxlc19tb250aCB8IHNhbGVzX2Rh eSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRtZW50IAorLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIHNhbGVzX2RlYzIwMjIgICAgIHwgTWFu YWdlcjEgICAgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgNyB8IDIw MjEuMTIuMDcgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfZGVjMjAyMiAgICAgfCBNYW5hZ2Vy MiAgICAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAgICA4IHwgMjAyMS4x Mi4wOCB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19qYW5fZmViMjAyMiB8IE1hbmFnZXIzICAg ICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDEgfCAyMDIyLjAxLjAx IHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX2phbl9mZWIyMDIyIHwgTWFuYWdlcjIgICAgICAg ICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMiB8IDIwMjIuMDEuMDIgfCBT YWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfamFuX2ZlYjIwMjIgfCBNYW5hZ2VyMSAgICAgICAgIHwg ICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgICA0IHwgMjAyMi4wMi4wNCB8IFNhbGVz IGRlcGFydG1lbnQKKyBzYWxlc19qYW5fZmViMjAyMiB8IE1hbmFnZXIzICAgICAgICAgfCAgICAg ICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgIDEgfCAyMDIyLjAyLjAxIHwgU2FsZXMgZGVw YXJ0bWVudAorIHNhbGVzX2phbl9mZWIyMDIyIHwgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIw MjIgfCAgICAgICAgICAgMSB8ICAgICAgICAxMCB8IDIwMjIuMDEuMTAgfCBTYWxlcyBkZXBhcnRt ZW50Cisgc2FsZXNfamFuX2ZlYjIwMjIgfCBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMiB8 ICAgICAgICAgICAyIHwgICAgICAgIDEwIHwgMjAyMi4wMi4xMCB8IFNhbGVzIGRlcGFydG1lbnQK KyBzYWxlc19vdGhlciAgICAgICB8IE1hbmFnZXIxICAgICAgICAgfCAgICAgICAyMDIyIHwgICAg ICAgICAgIDMgfCAgICAgICAgIDMgfCAyMDIyLjAzLjAzIHwgU2FsZXMgZGVwYXJ0bWVudAorIHNh bGVzX290aGVyICAgICAgIHwgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAg ICAgMyB8ICAgICAgICAgNCB8IDIwMjIuMDMuMDQgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNf b3RoZXIgICAgICAgfCBNYW5hZ2VyMyAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICA1 IHwgICAgICAgICAxIHwgMjAyMi4wNS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKygxMSByb3dzKQor CitEUk9QIFRBQkxFIHNhbGVzX2RhdGU7CistLQorLS0gVGVzdDogbWVyZ2UgcGFydGl0aW9ucyBv ZiBwYXJ0aXRpb25lZCB0YWJsZSB3aXRoIHRyaWdnZXJzCistLQorQ1JFQVRFIFRBQkxFIHNhbGVz cGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBW QVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc3BlcnNvbl9pZCk7CitDUkVBVEUg VEFCTEUgc2FsZXNwZW9wbGUwMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVF UyBGUk9NICgxKSBUTyAoMTApOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMTBfMjAgUEFSVElU SU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCk7CitDUkVBVEUg VEFCTEUgc2FsZXNwZW9wbGUyMF8zMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVF UyBGUk9NICgyMCkgVE8gKDMwKTsKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTMwXzQwIFBBUlRJ VElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDMwKSBUTyAoNDApOworSU5TRVJU IElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTICgxLCAgJ1BvaXJvdCcpOworQ1JFQVRFIE9SIFJFUExB Q0UgRlVOQ1RJT04gYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCkgUkVUVVJOUyB0cmlnZ2VyIExB TkdVQUdFICdwbHBnc3FsJyBBUyAkQk9EWSQKK0JFR0lOCisgICAgUkFJU0UgTk9USUNFICd0cmln Z2VyKCUpIGNhbGxlZDogYWN0aW9uID0gJSwgd2hlbiA9ICUsIGxldmVsID0gJScsIFRHX0FSR1Zb MF0sIFRHX09QLCBUR19XSEVOLCBUR19MRVZFTDsKKyAgICBSRVRVUk4gTlVMTDsKK0VORDsKKyRC T0RZJDsKK0NSRUFURSBUUklHR0VSIHNhbGVzcGVvcGxlX2FmdGVyX2luc2VydF9zdGF0ZW1lbnRf dHJpZ2dlcgorICAgIEFGVEVSIElOU0VSVAorICAgIE9OIHNhbGVzcGVvcGxlCisgICAgRk9SIEVB Q0ggU1RBVEVNRU5UCisgICAgRVhFQ1VURSBQUk9DRURVUkUgYWZ0ZXJfaW5zZXJ0X3Jvd190cmln Z2VyKCdzYWxlc3Blb3BsZScpOworQ1JFQVRFIFRSSUdHRVIgc2FsZXNwZW9wbGVfYWZ0ZXJfaW5z ZXJ0X3Jvd190cmlnZ2VyCisgICAgQUZURVIgSU5TRVJUCisgICAgT04gc2FsZXNwZW9wbGUKKyAg ICBGT1IgRUFDSCBST1cKKyAgICBFWEVDVVRFIFBST0NFRFVSRSBhZnRlcl9pbnNlcnRfcm93X3Ry aWdnZXIoJ3NhbGVzcGVvcGxlJyk7CistLSAyIHRyaWdnZXJzIHNob3VsZCBmaXJlIGhlcmUgKHJv dyArIHN0YXRlbWVudCk6CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMgKDEwLCAnTWF5 Jyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzcGVvcGxlKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VS VCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFJPVworTk9USUNFOiAgdHJpZ2dlcihzYWxlc3Blb3Bs ZSkgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBTVEFURU1F TlQKKy0tIDEgdHJpZ2dlciBzaG91bGQgZmlyZSBoZXJlIChyb3cpOgorSU5TRVJUIElOVE8gc2Fs ZXNwZW9wbGUxMF8yMCBWQUxVRVMgKDE5LCAnSXZhbm92Jyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHNh bGVzcGVvcGxlKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9 IFJPVworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNwZW9w bGUxMF8yMCwgc2FsZXNwZW9wbGUyMF8zMCwgc2FsZXNwZW9wbGUzMF80MCkgSU5UTyBzYWxlc3Bl b3BsZTEwXzQwOworLS0gMiB0cmlnZ2VycyBzaG91bGQgZmlyZSBoZXJlIChyb3cgKyBzdGF0ZW1l bnQpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTICgyMCwgJ1NtaXJub2ZmJyk7CitO T1RJQ0U6ICB0cmlnZ2VyKHNhbGVzcGVvcGxlKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hl biA9IEFGVEVSLCBsZXZlbCA9IFJPVworTk9USUNFOiAgdHJpZ2dlcihzYWxlc3Blb3BsZSkgY2Fs bGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBTVEFURU1FTlQKKy0t IDEgdHJpZ2dlciBzaG91bGQgZmlyZSBoZXJlIChyb3cpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9w bGUxMF80MCBWQUxVRVMgKDMwLCAnRm9yZCcpOworTk9USUNFOiAgdHJpZ2dlcihzYWxlc3Blb3Bs ZSkgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBST1cKK1NF TEVDVCAqIEZST00gc2FsZXNwZW9wbGUwMV8xMDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVy c29uX25hbWUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAg ICAgICAxIHwgUG9pcm90CisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gc2FsZXNwZW9wbGUxMF80 MDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgCistLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgIDEwIHwgTWF5CisgICAgICAgICAgICAg MTkgfCBJdmFub3YKKyAgICAgICAgICAgICAyMCB8IFNtaXJub2ZmCisgICAgICAgICAgICAgMzAg fCBGb3JkCisoNCByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlOworRFJPUCBGVU5DVElP TiBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoKTsKKy0tCistLSBUZXN0OiBtZXJnZSBwYXJ0aXRp b25zIHdpdGggZGVsZXRlZCBjb2x1bW5zCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNh bGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMw KSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc3BlcnNvbl9pZCk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNwZW9wbGUwMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgx KSBUTyAoMTApOworLS0gQ3JlYXRlIHBhcnRpdGlvbnMgd2l0aCBzb21lIGRlbGV0ZWQgY29sdW1u czoKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTEwXzIwKGQxIFZBUkNIQVIoMzApLCBzYWxlc3Bl cnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpOwor Q1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMjBfMzAoc2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkg S0VZLCBkMiBJTlQsICBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKTsKK0NSRUFURSBUQUJM RSBzYWxlc3Blb3BsZTMwXzQwKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwgZDMgREFU RSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7CitJTlNFUlQgSU5UTyBzYWxlc3Blb3Bs ZTEwXzIwIFZBTFVFUyAoJ2R1bW15IHZhbHVlIDEnLCAxOSwgJ0l2YW5vdicpOworSU5TRVJUIElO VE8gc2FsZXNwZW9wbGUyMF8zMCBWQUxVRVMgKDIwLCAxMDEsICdTbWlybm9mZicpOworSU5TRVJU IElOVE8gc2FsZXNwZW9wbGUzMF80MCBWQUxVRVMgKDMxLCBub3coKSwgJ1BvcG92Jyk7CitBTFRF UiBUQUJMRSBzYWxlc3Blb3BsZTEwXzIwIERST1AgQ09MVU1OIGQxOworQUxURVIgVEFCTEUgc2Fs ZXNwZW9wbGUyMF8zMCBEUk9QIENPTFVNTiBkMjsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlMzBf NDAgRFJPUCBDT0xVTU4gZDM7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBBVFRBQ0ggUEFSVElU SU9OIHNhbGVzcGVvcGxlMTBfMjAgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKTsKK0FMVEVS IFRBQkxFIHNhbGVzcGVvcGxlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNwZW9wbGUyMF8zMCBGT1Ig VkFMVUVTIEZST00gKDIwKSBUTyAoMzApOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgQVRUQUNI IFBBUlRJVElPTiBzYWxlc3Blb3BsZTMwXzQwIEZPUiBWQUxVRVMgRlJPTSAoMzApIFRPICg0MCk7 CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMKKyAgKDEsICdQb2lyb3QnKSwKKyAgKDEw LCAnTWF5JyksCisgICgzMCwgJ0ZvcmQnKTsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIE1FUkdF IFBBUlRJVElPTlMgKHNhbGVzcGVvcGxlMTBfMjAsIHNhbGVzcGVvcGxlMjBfMzAsIHNhbGVzcGVv cGxlMzBfNDApIElOVE8gc2FsZXNwZW9wbGUxMF80MDsKK3NlbGVjdCAqIGZyb20gc2FsZXNwZW9w bGU7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIAorLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMSB8IFBvaXJvdAorICAgICAgICAg ICAgIDE5IHwgSXZhbm92CisgICAgICAgICAgICAgMTAgfCBNYXkKKyAgICAgICAgICAgICAyMCB8 IFNtaXJub2ZmCisgICAgICAgICAgICAgMzEgfCBQb3BvdgorICAgICAgICAgICAgIDMwIHwgRm9y ZAorKDYgcm93cykKKworc2VsZWN0ICogZnJvbSBzYWxlc3Blb3BsZTAxXzEwOworIHNhbGVzcGVy c29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tCisgICAgICAgICAgICAgIDEgfCBQb2lyb3QKKygxIHJvdykKKworc2VsZWN0ICogZnJv bSBzYWxlc3Blb3BsZTEwXzQwOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSAK Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgMTkgfCBJ dmFub3YKKyAgICAgICAgICAgICAxMCB8IE1heQorICAgICAgICAgICAgIDIwIHwgU21pcm5vZmYK KyAgICAgICAgICAgICAzMSB8IFBvcG92CisgICAgICAgICAgICAgMzAgfCBGb3JkCisoNSByb3dz KQorCitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlOworLS0KKy0tIFRlc3Q6IG1lcmdlIHN1Yi1wYXJ0 aXRpb25zCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQs IHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2Rh dGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBz YWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAy MiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScp IFRPICgnMjAyMi0wMy0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX21hcjIwMjIgUEFSVElUSU9O IE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjIt MDQtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyIChzYWxlc3BlcnNvbl9pZCBJTlQs IHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2Rh dGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBz YWxlc19hcHIyMDIyXzAxXzEwIFBBUlRJVElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDQtMTAnKTsKK0NSRUFURSBUQUJMRSBzYWxl c19hcHIyMDIyXzEwXzIwIFBBUlRJVElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDQtMTAnKSBUTyAoJzIwMjItMDQtMjAnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19h cHIyMDIyXzIwXzMwIFBBUlRJVElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDQtMjAnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3Jhbmdl IEFUVEFDSCBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0 LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJ VElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworQ1JFQVRFIElOREVYIHNhbGVzX3JhbmdlX3Nh bGVzX2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKTsKK0lO U0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcy MDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAg KDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAg IDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQt MDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAoNywgICdM aScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAg JzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpLAor ICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywg ICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0w My0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5JyksCisgICgxNCwg J1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xh c3MsICogRlJPTSBzYWxlc19hcHIyMDIyIE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4 dCBDT0xMQVRFICJDIiwgc2FsZXNwZXJzb25faWQ7CisgICAgICB0YWJsZW9pZCAgICAgICB8IHNh bGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2Rh dGUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgc2FsZXNfYXByMjAyMl8wMV8xMCB8 ICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3 LTIwMjIKKyBzYWxlc19hcHIyMDIyXzAxXzEwIHwgICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAg ICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorIHNhbGVzX2FwcjIwMjJfMTBfMjAg fCAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0x My0yMDIyCisgc2FsZXNfYXByMjAyMl8yMF8zMCB8ICAgICAgICAgICAgICAzIHwgRm9yZCAgICAg ICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyg0IHJvd3MpCisKK0FMVEVSIFRB QkxFIHNhbGVzX2FwcjIwMjIgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfYXByMjAyMl8wMV8xMCwg c2FsZXNfYXByMjAyMl8xMF8yMCwgc2FsZXNfYXByMjAyMl8yMF8zMCkgSU5UTyBzYWxlc19hcHJf YWxsOworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX2FwcjIwMjIgT1JE RVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9p ZDsKKyAgIHRhYmxlb2lkICAgIHwgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwg c2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBzYWxl c19hcHJfYWxsIHwgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAy MDAwIHwgMDQtMzAtMjAyMgorIHNhbGVzX2Fwcl9hbGwgfCAgICAgICAgICAgICAgNCB8IEl2YW5v diAgICAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgc2FsZXNfYXByX2FsbCB8 ICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3 LTIwMjIKKyBzYWxlc19hcHJfYWxsIHwgICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAg IHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorKDQgcm93cykKKworRFJPUCBUQUJMRSBzYWxl c19yYW5nZTsKKy0tCistLSBCWSBMSVNUIHBhcnRpdGlvbmluZworLS0KKy0tCistLSBUZXN0OiBz cGVjaWZpYyBlcnJvcnMgZm9yIEJZIExJU1QgcGFydGl0aW9uaW5nCistLQorQ1JFQVRFIFRBQkxF IHNhbGVzX2xpc3QKKyhzYWxlc3BlcnNvbl9pZCBJTlQgR0VORVJBVEVEIEFMV0FZUyBBUyBJREVO VElUWSwKKyBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLAorIHNhbGVzX3N0YXRlIFZBUkNI QVIoMjApLAorIHNhbGVzX2Ftb3VudCBJTlQsCisgc2FsZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9O IEJZIExJU1QgKHNhbGVzX3N0YXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19ub3JkIFBBUlRJVElP TiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdPc2xvJywgJ1N0LiBQZXRlcnNidXJnJywg J0hlbHNpbmtpJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfd2VzdCBQQVJUSVRJT04gT0Ygc2FsZXNf bGlzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpOworQ1JF QVRFIFRBQkxFIHNhbGVzX2Vhc3QgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJ TiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpOworQ1JFQVRFIFRBQkxFIHNhbGVz X2NlbnRyYWwgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycs ICdCZXJsaW4nLCAnS3lpdicpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04g T0Ygc2FsZXNfbGlzdCBERUZBVUxUOworQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QyIChMSUtFIHNh bGVzX2xpc3QpIFBBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CitDUkVBVEUgVEFCTEUg c2FsZXNfbm9yZDIgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QyIEZPUiBWQUxVRVMgSU4gKCdPc2xv JywgJ1N0LiBQZXRlcnNidXJnJywgJ0hlbHNpbmtpJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3Ro ZXJzMiBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdDIgREVGQVVMVDsKK0NSRUFURSBUQUJMRSBzYWxl c19leHRlcm5hbCAoTElLRSBzYWxlc19saXN0KTsKK0NSRUFURSBUQUJMRSBzYWxlc19leHRlcm5h bDIgKHZjaCBWQVJDSEFSKDUpKTsKKy0tIEVSUk9SOiAgInNhbGVzX2V4dGVybmFsIiBpcyBub3Qg YSBwYXJ0aXRpb24gb2YgcGFydGl0aW9uZWQgdGFibGUgInNhbGVzX2xpc3QiCitBTFRFUiBUQUJM RSBzYWxlc19saXN0IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX3dlc3QsIHNhbGVzX2Vhc3QsIHNh bGVzX2V4dGVybmFsKSBJTlRPIHNhbGVzX2FsbDsKK0VSUk9SOiAgInNhbGVzX2V4dGVybmFsIiBp cyBub3QgYSBwYXJ0aXRpb24gb2YgcGFydGl0aW9uZWQgdGFibGUgInNhbGVzX2xpc3QiCitISU5U OiAgQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgY2FuIG9ubHkgbWVyZ2UgcGFydGl0 aW9ucyBkb24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25zCistLSBFUlJPUjogICJzYWxlc19leHRlcm5h bDIiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiBwYXJ0aXRpb25lZCB0YWJsZSAic2FsZXNfbGlzdCIK K0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfd2VzdCwgc2Fs ZXNfZWFzdCwgc2FsZXNfZXh0ZXJuYWwyKSBJTlRPIHNhbGVzX2FsbDsKK0VSUk9SOiAgInNhbGVz X2V4dGVybmFsMiIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHBhcnRpdGlvbmVkIHRhYmxlICJzYWxl c19saXN0IgorSElOVDogIEFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIGNhbiBvbmx5 IG1lcmdlIHBhcnRpdGlvbnMgZG9uJ3QgaGF2ZSBzdWItcGFydGl0aW9ucworLS0gRVJST1I6ICBy ZWxhdGlvbiAic2FsZXNfbm9yZDIiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiByZWxhdGlvbiAic2Fs ZXNfbGlzdCIKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNf d2VzdCwgc2FsZXNfbm9yZDIsIHNhbGVzX2Vhc3QpIElOVE8gc2FsZXNfYWxsOworRVJST1I6ICBy ZWxhdGlvbiAic2FsZXNfbm9yZDIiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiByZWxhdGlvbiAic2Fs ZXNfbGlzdCIKK0hJTlQ6ICBBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyBjYW4gb25s eSBtZXJnZSBwYXJ0aXRpb25zIGRvbid0IGhhdmUgc3ViLXBhcnRpdGlvbnMKK0RST1AgVEFCTEUg c2FsZXNfZXh0ZXJuYWwyOworRFJPUCBUQUJMRSBzYWxlc19leHRlcm5hbDsKK0RST1AgVEFCTEUg c2FsZXNfbGlzdDI7CitEUk9QIFRBQkxFIHNhbGVzX2xpc3Q7CistLQorLS0gVGVzdDogQlkgTElT VCBwYXJ0aXRpb25pbmcsIE1FUkdFIFBBUlRJVElPTlMgd2l0aCBkYXRhCistLQorQ1JFQVRFIFRB QkxFIHNhbGVzX2xpc3QKKyhzYWxlc3BlcnNvbl9pZCBJTlQgR0VORVJBVEVEIEFMV0FZUyBBUyBJ REVOVElUWSwKKyBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLAorIHNhbGVzX3N0YXRlIFZB UkNIQVIoMjApLAorIHNhbGVzX2Ftb3VudCBJTlQsCisgc2FsZXNfZGF0ZSBEQVRFKQorUEFSVElU SU9OIEJZIExJU1QgKHNhbGVzX3N0YXRlKTsKK0NSRUFURSBJTkRFWCBzYWxlc19saXN0X3NhbGVz cGVyc29uX25hbWVfaWR4IE9OIHNhbGVzX2xpc3QgVVNJTkcgYnRyZWUgKHNhbGVzcGVyc29uX25h bWUpOworQ1JFQVRFIElOREVYIHNhbGVzX2xpc3Rfc2FsZXNfc3RhdGVfaWR4IE9OIHNhbGVzX2xp c3QgVVNJTkcgYnRyZWUgKHNhbGVzX3N0YXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19ub3JkIFBB UlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdPc2xvJywgJ1N0LiBQZXRlcnNi dXJnJywgJ0hlbHNpbmtpJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfd2VzdCBQQVJUSVRJT04gT0Yg c2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcp OworQ1JFQVRFIFRBQkxFIHNhbGVzX2Vhc3QgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZB TFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpOworQ1JFQVRFIFRBQkxF IHNhbGVzX2NlbnRyYWwgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ1dh cnNhdycsICdCZXJsaW4nLCAnS3lpdicpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJU SVRJT04gT0Ygc2FsZXNfbGlzdCBERUZBVUxUOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2Fs ZXNwZXJzb25fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFM VUVTCisgICgnVHJ1bXAnLCAgICAnQmVqaW5nJywgICAgICAgICAxMDAwLCAnMjAyMi0wMy0wMScp LAorICAoJ1NtaXJub2ZmJywgJ05ldyBZb3JrJywgICAgICAgIDUwMCwgJzIwMjItMDMtMDMnKSwK KyAgKCdGb3JkJywgICAgICdTdC4gUGV0ZXJzYnVyZycsIDIwMDAsICcyMDIyLTAzLTA1JyksCisg ICgnSXZhbm92JywgICAnV2Fyc2F3JywgICAgICAgICAgNzUwLCAnMjAyMi0wMy0wNCcpLAorICAo J0RlZXYnLCAgICAgJ0xpc2JvbicsICAgICAgICAgIDI1MCwgJzIwMjItMDMtMDcnKSwKKyAgKCdQ b2lyb3QnLCAgICdCZXJsaW4nLCAgICAgICAgIDEwMDAsICcyMDIyLTAzLTAxJyksCisgICgnTWF5 JywgICAgICAnSGVsc2lua2knLCAgICAgICAxMjAwLCAnMjAyMi0wMy0wNicpLAorICAoJ0xpJywg ICAgICAgJ1ZsYWRpdm9zdG9rJywgICAgMTE1MCwgJzIwMjItMDMtMDknKSwKKyAgKCdNYXknLCAg ICAgICdIZWxzaW5raScsICAgICAgIDEyMDAsICcyMDIyLTAzLTExJyksCisgICgnSGFsZGVyJywg ICAnT3NsbycsICAgICAgICAgICAgODAwLCAnMjAyMi0wMy0wMicpLAorICAoJ011bGxlcicsICAg J01hZHJpZCcsICAgICAgICAgIDY1MCwgJzIwMjItMDMtMDUnKSwKKyAgKCdTbWl0aCcsICAgICdL eWl2JywgICAgICAgICAgICAzNTAsICcyMDIyLTAzLTEwJyksCisgICgnR2FuZGknLCAgICAnV2Fy c2F3JywgICAgICAgICAgMTUwLCAnMjAyMi0wMy0wOCcpLAorICAoJ1BsYXRvJywgICAgJ0xpc2Jv bicsICAgICAgICAgIDk1MCwgJzIwMjItMDMtMDUnKTsKKy0tIHNob3cgcGFydGl0aW9ucyB3aXRo IGNvbmRpdGlvbnM6CitFWEVDVVRFIGdldF9wYXJ0aXRpb25faW5mbygne3NhbGVzX2xpc3R9Jyk7 CisgICAgICBvaWQgICAgICB8IHJlbHBlcnNpc3RlbmNlIHwgcmVsa2luZCB8IGluaGRldGFjaHBl bmRpbmcgfCAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9leHByICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBzYWxlc19jZW50cmFsIHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAg ICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYn KQorIHNhbGVzX2Vhc3QgICAgfCBwICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAg ICAgICAgIHwgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3Rvaycp Cisgc2FsZXNfbm9yZCAgICB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAg ICAgICAgfCBGT1IgVkFMVUVTIElOICgnT3NsbycsICdTdC4gUGV0ZXJzYnVyZycsICdIZWxzaW5r aScpCisgc2FsZXNfd2VzdCAgICB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAg ICAgICAgICAgfCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcp Cisgc2FsZXNfb3RoZXJzICB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAg ICAgICAgfCBERUZBVUxUCisoNSByb3dzKQorCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IE1FUkdF IFBBUlRJVElPTlMgKHNhbGVzX3dlc3QsIHNhbGVzX2Vhc3QsIHNhbGVzX2NlbnRyYWwpIElOVE8g c2FsZXNfYWxsOworLS0gc2hvdyBwYXJ0aXRpb25zIHdpdGggY29uZGl0aW9uczoKK0VYRUNVVEUg Z2V0X3BhcnRpdGlvbl9pbmZvKCd7c2FsZXNfbGlzdH0nKTsKKyAgICAgb2lkICAgICAgfCByZWxw ZXJzaXN0ZW5jZSB8IHJlbGtpbmQgfCBpbmhkZXRhY2hwZW5kaW5nIHwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2V4cHIgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgc2FsZXNfYWxsICAgIHwg cCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMg SU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJywgJ0JlamluZycsICdEZWxoaScsICdW bGFkaXZvc3RvaycsICdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKQorIHNhbGVzX25vcmQgICB8 IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVT IElOICgnT3NsbycsICdTdC4gUGV0ZXJzYnVyZycsICdIZWxzaW5raScpCisgc2FsZXNfb3RoZXJz IHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IERFRkFVTFQK KygzIHJvd3MpCisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19saXN0 IE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNwZXJz b25faWQ7CisgIHRhYmxlb2lkICB8IHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8 ICBzYWxlc19zdGF0ZSAgIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIHNhbGVzX2FsbCAgfCAgICAgICAgICAgICAgMSB8 IFRydW1wICAgICAgICAgICAgfCBCZWppbmcgICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAzLTAx LTIwMjIKKyBzYWxlc19hbGwgIHwgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAgIHwg TmV3IFlvcmsgICAgICAgfCAgICAgICAgICA1MDAgfCAwMy0wMy0yMDIyCisgc2FsZXNfYWxsICB8 ICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8IFdhcnNhdyAgICAgICAgIHwgICAg ICAgICAgNzUwIHwgMDMtMDQtMjAyMgorIHNhbGVzX2FsbCAgfCAgICAgICAgICAgICAgNSB8IERl ZXYgICAgICAgICAgICAgfCBMaXNib24gICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTA3LTIw MjIKKyBzYWxlc19hbGwgIHwgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgICAgIHwgQmVy bGluICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMy0wMS0yMDIyCisgc2FsZXNfYWxsICB8ICAg ICAgICAgICAgICA4IHwgTGkgICAgICAgICAgICAgICB8IFZsYWRpdm9zdG9rICAgIHwgICAgICAg ICAxMTUwIHwgMDMtMDktMjAyMgorIHNhbGVzX2FsbCAgfCAgICAgICAgICAgICAxMSB8IE11bGxl ciAgICAgICAgICAgfCBNYWRyaWQgICAgICAgICB8ICAgICAgICAgIDY1MCB8IDAzLTA1LTIwMjIK KyBzYWxlc19hbGwgIHwgICAgICAgICAgICAgMTIgfCBTbWl0aCAgICAgICAgICAgIHwgS3lpdiAg ICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xMC0yMDIyCisgc2FsZXNfYWxsICB8ICAgICAg ICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8IFdhcnNhdyAgICAgICAgIHwgICAgICAgICAg MTUwIHwgMDMtMDgtMjAyMgorIHNhbGVzX2FsbCAgfCAgICAgICAgICAgICAxNCB8IFBsYXRvICAg ICAgICAgICAgfCBMaXNib24gICAgICAgICB8ICAgICAgICAgIDk1MCB8IDAzLTA1LTIwMjIKKyBz YWxlc19ub3JkIHwgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgU3QuIFBldGVy c2J1cmcgfCAgICAgICAgIDIwMDAgfCAwMy0wNS0yMDIyCisgc2FsZXNfbm9yZCB8ICAgICAgICAg ICAgICA3IHwgTWF5ICAgICAgICAgICAgICB8IEhlbHNpbmtpICAgICAgIHwgICAgICAgICAxMjAw IHwgMDMtMDYtMjAyMgorIHNhbGVzX25vcmQgfCAgICAgICAgICAgICAgOSB8IE1heSAgICAgICAg ICAgICAgfCBIZWxzaW5raSAgICAgICB8ICAgICAgICAgMTIwMCB8IDAzLTExLTIwMjIKKyBzYWxl c19ub3JkIHwgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwgT3NsbyAgICAgICAg ICAgfCAgICAgICAgICA4MDAgfCAwMy0wMi0yMDIyCisoMTQgcm93cykKKworLS0gVXNlIGluZGV4 c2NhbiBmb3IgdGVzdGluZyBpbmRleGVzIGFmdGVyIG1lcmdpbmcgcGFydGl0aW9ucworU0VUIGVu YWJsZV9zZXFzY2FuID0gT0ZGOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHNh bGVzX2FsbCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdXYXJzYXcnOworICAgICAgICAgICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBJbmRleCBTY2FuIHVz aW5nIHNhbGVzX2FsbF9zYWxlc19zdGF0ZV9pZHggb24gc2FsZXNfYWxsCisgICBJbmRleCBDb25k OiAoKHNhbGVzX3N0YXRlKTo6dGV4dCA9ICdXYXJzYXcnOjp0ZXh0KQorKDIgcm93cykKKworU0VM RUNUICogRlJPTSBzYWxlc19hbGwgV0hFUkUgc2FsZXNfc3RhdGUgPSAnV2Fyc2F3JzsKKyBzYWxl c3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19zdGF0ZSB8IHNhbGVzX2Ftb3Vu dCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICA0IHwg SXZhbm92ICAgICAgICAgICB8IFdhcnNhdyAgICAgIHwgICAgICAgICAgNzUwIHwgMDMtMDQtMjAy MgorICAgICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8IFdhcnNhdyAgICAgIHwgICAg ICAgICAgMTUwIHwgMDMtMDgtMjAyMgorKDIgcm93cykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKSBT RUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3QgV0hFUkUgc2FsZXNfc3RhdGUgPSAnV2Fyc2F3JzsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEluZGV4IFNjYW4gdXNpbmcgc2FsZXNfYWxsX3NhbGVz X3N0YXRlX2lkeCBvbiBzYWxlc19hbGwgc2FsZXNfbGlzdAorICAgSW5kZXggQ29uZDogKChzYWxl c19zdGF0ZSk6OnRleHQgPSAnV2Fyc2F3Jzo6dGV4dCkKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZS T00gc2FsZXNfbGlzdCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdXYXJzYXcnOworIHNhbGVzcGVyc29u X2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3N0YXRlIHwgc2FsZXNfYW1vdW50IHwgc2Fs ZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDQgfCBJdmFub3Yg ICAgICAgICAgIHwgV2Fyc2F3ICAgICAgfCAgICAgICAgICA3NTAgfCAwMy0wNC0yMDIyCisgICAg ICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgV2Fyc2F3ICAgICAgfCAgICAgICAgICAx NTAgfCAwMy0wOC0yMDIyCisoMiByb3dzKQorCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAq IEZST00gc2FsZXNfbGlzdCBXSEVSRSBzYWxlc3BlcnNvbl9uYW1lID0gJ0l2YW5vdic7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFwcGVuZAor ICAgLT4gIEluZGV4IFNjYW4gdXNpbmcgc2FsZXNfYWxsX3NhbGVzcGVyc29uX25hbWVfaWR4IG9u IHNhbGVzX2FsbCBzYWxlc19saXN0XzEKKyAgICAgICAgIEluZGV4IENvbmQ6ICgoc2FsZXNwZXJz b25fbmFtZSk6OnRleHQgPSAnSXZhbm92Jzo6dGV4dCkKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2Fu IG9uIHNhbGVzX25vcmQgc2FsZXNfbGlzdF8yCisgICAgICAgICBSZWNoZWNrIENvbmQ6ICgoc2Fs ZXNwZXJzb25fbmFtZSk6OnRleHQgPSAnSXZhbm92Jzo6dGV4dCkKKyAgICAgICAgIC0+ICBCaXRt YXAgSW5kZXggU2NhbiBvbiBzYWxlc19ub3JkX3NhbGVzcGVyc29uX25hbWVfaWR4CisgICAgICAg ICAgICAgICBJbmRleCBDb25kOiAoKHNhbGVzcGVyc29uX25hbWUpOjp0ZXh0ID0gJ0l2YW5vdic6 OnRleHQpCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBzYWxlc19vdGhlcnMgc2FsZXNfbGlz dF8zCisgICAgICAgICBSZWNoZWNrIENvbmQ6ICgoc2FsZXNwZXJzb25fbmFtZSk6OnRleHQgPSAn SXZhbm92Jzo6dGV4dCkKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBzYWxlc19v dGhlcnNfc2FsZXNwZXJzb25fbmFtZV9pZHgKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICgo c2FsZXNwZXJzb25fbmFtZSk6OnRleHQgPSAnSXZhbm92Jzo6dGV4dCkKKygxMSByb3dzKQorCitT RUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3QgV0hFUkUgc2FsZXNwZXJzb25fbmFtZSA9ICdJdmFub3Yn OworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3N0YXRlIHwgc2Fs ZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAg ICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgV2Fyc2F3ICAgICAgfCAgICAgICAgICA3NTAgfCAw My0wNC0yMDIyCisoMSByb3cpCisKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworRFJPUCBUQUJMRSBz YWxlc19saXN0OworLS0KKy0tIFRyeSB0byBNRVJHRSBwYXJ0aXRpb25zIG9mIGFub3RoZXIgdGFi bGUuCistLQorQ1JFQVRFIFRBQkxFIHQxIChpIGludCwgYSBpbnQsIGIgaW50LCBjIGludCkgUEFS VElUSU9OIEJZIFJBTkdFIChhLCBiKTsKK0NSRUFURSBUQUJMRSB0MXAxIFBBUlRJVElPTiBPRiB0 MSBGT1IgVkFMVUVTIEZST00gKDEsIDEpIFRPICgxLCAyKTsKK0NSRUFURSBUQUJMRSB0MiAoaSBp bnQsIHQgdGV4dCkgUEFSVElUSU9OIEJZIFJBTkdFICh0KTsKK0NSRUFURSBUQUJMRSB0MnBhIFBB UlRJVElPTiBPRiB0MiBGT1IgVkFMVUVTIEZST00gKCdBJykgVE8gKCdDJyk7CitDUkVBVEUgVEFC TEUgdDMgKGkgaW50LCB0IHRleHQpOworLS0gRVJST1I6ICByZWxhdGlvbiAidDFwMSIgaXMgbm90 IGEgcGFydGl0aW9uIG9mIHJlbGF0aW9uICJ0MiIKK0FMVEVSIFRBQkxFIHQyIE1FUkdFIFBBUlRJ VElPTlMgKHQxcDEsIHQycGEpIElOVE8gdDJwOworRVJST1I6ICByZWxhdGlvbiAidDFwMSIgaXMg bm90IGEgcGFydGl0aW9uIG9mIHJlbGF0aW9uICJ0MiIKK0hJTlQ6ICBBTFRFUiBUQUJMRSAuLi4g TUVSR0UgUEFSVElUSU9OUyBjYW4gb25seSBtZXJnZSBwYXJ0aXRpb25zIGRvbid0IGhhdmUgc3Vi LXBhcnRpdGlvbnMKKy0tIEVSUk9SOiAgInQzIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcGFydGl0 aW9uZWQgdGFibGUgInQyIgorQUxURVIgVEFCTEUgdDIgTUVSR0UgUEFSVElUSU9OUyAodDJwYSwg dDMpIElOVE8gdDJwOworRVJST1I6ICAidDMiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiBwYXJ0aXRp b25lZCB0YWJsZSAidDIiCitISU5UOiAgQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMg Y2FuIG9ubHkgbWVyZ2UgcGFydGl0aW9ucyBkb24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25zCitEUk9Q IFRBQkxFIHQzOworRFJPUCBUQUJMRSB0MjsKK0RST1AgVEFCTEUgdDE7CistLQorLS0gQ2hlY2sg dGhlIHBhcnRpdGlvbiBpbmRleCBuYW1lIGlmIHRoZSBwYXJ0aXRpb24gbmFtZSBpcyB0aGUgc2Ft ZSBhcyBvbmUKKy0tIG9mIHRoZSBtZXJnZWQgcGFydGl0aW9ucy4KKy0tCitDUkVBVEUgVEFCTEUg dCAoaSBpbnQsIFBSSU1BUlkgS0VZKGkpKSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRF IFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsK K0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxKSBU TyAoMik7CitDUkVBVEUgSU5ERVggdGlkeCBPTiB0KGkpOworQUxURVIgVEFCTEUgdCBNRVJHRSBQ QVJUSVRJT05TICh0cF8xXzIsIHRwXzBfMSkgSU5UTyB0cF8xXzI7CistLSBJbmRleG5hbWUgdmFs dWVzIHNob3VsZCBiZSAndHBfMV8yX3BrZXknIGFuZCAndHBfMV8yX2lfaWR4Jy4KK1xkKyB0cF8x XzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgVGFibGUgInBhcnRpdGlvbnNfbWVyZ2Vfc2No ZW1hLnRwXzFfMiIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBE ZWZhdWx0IHwgU3RvcmFnZSB8IFN0YXRzIHRhcmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgaSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8 IG5vdCBudWxsIHwgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKK1BhcnRpdGlv biBvZjogdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKQorUGFydGl0aW9uIGNvbnN0cmFpbnQ6 ICgoaSBJUyBOT1QgTlVMTCkgQU5EIChpID49IDApIEFORCAoaSA8IDIpKQorSW5kZXhlczoKKyAg ICAidHBfMV8yX3BrZXkiIFBSSU1BUlkgS0VZLCBidHJlZSAoaSkKKyAgICAidHBfMV8yX2lfaWR4 IiBidHJlZSAoaSkKK05vdC1udWxsIGNvbnN0cmFpbnRzOgorICAgICJ0X2lfbm90X251bGwiIE5P VCBOVUxMICJpIiAoaW5oZXJpdGVkKQorCitEUk9QIFRBQkxFIHQ7CistLQorLS0gVHJ5IHRvIE1F UkdFIHBhcnRpdGlvbnMgb2YgdGVtcG9yYXJ5IHRhYmxlLgorLS0KK0JFR0lOOworU0hPVyBzZWFy Y2hfcGF0aDsKKyAgICAgICAgICAgc2VhcmNoX3BhdGggICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYwor KDEgcm93KQorCitDUkVBVEUgVEVNUCBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdF IChpKSBPTiBDT01NSVQgRFJPUDsKK0NSRUFURSBURU1QIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04g T0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFURSBURU1QIFRBQkxFIHRwXzFf MiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKK0NSRUFURSBURU1Q IFRBQkxFIHRwXzJfMyBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDIpIFRPICgzKTsK K0NSRUFURSBURU1QIFRBQkxFIHRwXzNfNCBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00g KDMpIFRPICg0KTsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8x XzIpIElOVE8gcGdfdGVtcC50cF8wXzI7CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMg KHRwXzBfMiwgdHBfMl8zKSBJTlRPIHBnX3RlbXAudHBfMF8zOworLS0gUGFydGl0aW9uIHNob3Vs ZCBiZSB0ZW1wb3JhcnkuCitFWEVDVVRFIGdldF9wYXJ0aXRpb25faW5mbygne3R9Jyk7CisgIG9p ZCAgIHwgcmVscGVyc2lzdGVuY2UgfCByZWxraW5kIHwgaW5oZGV0YWNocGVuZGluZyB8ICAgICAg ICBwZ19nZXRfZXhwciAgICAgICAgIAorLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0cF8w XzMgfCB0ICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZB TFVFUyBGUk9NICgwKSBUTyAoMykKKyB0cF8zXzQgfCB0ICAgICAgICAgICAgICB8IHIgICAgICAg fCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgzKSBUTyAoNCkKKygyIHJvd3Mp CisKKy0tIEVSUk9SOiAgY2Fubm90IGNyZWF0ZSBhIHBlcm1hbmVudCByZWxhdGlvbiBhcyBwYXJ0 aXRpb24gb2YgdGVtcG9yYXJ5IHJlbGF0aW9uICJ0IgorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJU SVRJT05TICh0cF8wXzMsIHRwXzNfNCkgSU5UTyB0cF8wXzQ7CitFUlJPUjogIGNhbm5vdCBjcmVh dGUgYSBwZXJtYW5lbnQgcmVsYXRpb24gYXMgcGFydGl0aW9uIG9mIHRlbXBvcmFyeSByZWxhdGlv biAidCIKK1JPTExCQUNLOworLS0KKy0tIFRyeSBtaXhpbmcgcGVybWFuZW50IGFuZCB0ZW1wb3Jh cnkgcGFydGl0aW9ucy4KKy0tCitCRUdJTjsKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNf bWVyZ2Vfc2NoZW1hLCBwZ190ZW1wLCBwdWJsaWM7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBB UlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0 IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJ T04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKK1NFTEVDVCBjLm9pZDo6cGdfY2F0 YWxvZy5yZWdjbGFzcywgYy5yZWxwZXJzaXN0ZW5jZSBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3Mg YyBXSEVSRSBjLm9pZCA9ICd0Jzo6cmVnY2xhc3M7Cisgb2lkIHwgcmVscGVyc2lzdGVuY2UgCist LS0tLSstLS0tLS0tLS0tLS0tLS0tCisgdCAgIHwgcAorKDEgcm93KQorCitFWEVDVVRFIGdldF9w YXJ0aXRpb25faW5mbygne3R9Jyk7CisgIG9pZCAgIHwgcmVscGVyc2lzdGVuY2UgfCByZWxraW5k IHwgaW5oZGV0YWNocGVuZGluZyB8ICAgICAgICBwZ19nZXRfZXhwciAgICAgICAgIAorLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0cF8wXzEgfCBwICAgICAgICAgICAgICB8IHIgICAgICAg fCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSkKKyB0cF8xXzIg fCBwICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVF UyBGUk9NICgxKSBUTyAoMikKKygyIHJvd3MpCisKK1NBVkVQT0lOVCBzOworU0VUIHNlYXJjaF9w YXRoID0gcGdfdGVtcCwgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKKy0tIENhbid0 IG1lcmdlIHBlcnNpc3RlbnQgcGFydGl0aW9ucyBpbnRvIGEgdGVtcG9yYXJ5IHBhcnRpdGlvbgor QUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8w XzI7CitFUlJPUjogIGNhbm5vdCBjcmVhdGUgYSB0ZW1wb3JhcnkgcmVsYXRpb24gYXMgcGFydGl0 aW9uIG9mIHBlcm1hbmVudCByZWxhdGlvbiAidCIKK1JPTExCQUNLIFRPIFNBVkVQT0lOVCBzOwor U0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKKy0tIENh bid0IG1lcmdlIHBlcnNpc3RlbnQgcGFydGl0aW9ucyBpbnRvIGEgdGVtcG9yYXJ5IHBhcnRpdGlv bgorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyBw Z190ZW1wLnRwXzBfMjsKK0VSUk9SOiAgY2Fubm90IGNyZWF0ZSBhIHRlbXBvcmFyeSByZWxhdGlv biBhcyBwYXJ0aXRpb24gb2YgcGVybWFuZW50IHJlbGF0aW9uICJ0IgorUk9MTEJBQ0s7CitCRUdJ TjsKK1NFVCBzZWFyY2hfcGF0aCA9IHBnX3RlbXAsIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBw dWJsaWM7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitD UkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8g KDEpOworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00g KDEpIFRPICgyKTsKK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgYy5yZWxwZXJz aXN0ZW5jZSBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYyBXSEVSRSBjLm9pZCA9ICd0Jzo6cmVn Y2xhc3M7Cisgb2lkIHwgcmVscGVyc2lzdGVuY2UgCistLS0tLSstLS0tLS0tLS0tLS0tLS0tCisg dCAgIHwgdAorKDEgcm93KQorCitFWEVDVVRFIGdldF9wYXJ0aXRpb25faW5mbygne3R9Jyk7Cisg IG9pZCAgIHwgcmVscGVyc2lzdGVuY2UgfCByZWxraW5kIHwgaW5oZGV0YWNocGVuZGluZyB8ICAg ICAgICBwZ19nZXRfZXhwciAgICAgICAgIAorLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0 cF8wXzEgfCB0ICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9S IFZBTFVFUyBGUk9NICgwKSBUTyAoMSkKKyB0cF8xXzIgfCB0ICAgICAgICAgICAgICB8IHIgICAg ICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikKKygyIHJv d3MpCisKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwZ190ZW1w LCBwdWJsaWM7CistLSBDYW4ndCBtZXJnZSB0ZW1wb3JhcnkgcGFydGl0aW9ucyBpbnRvIGEgcGVy c2lzdGVudCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8x LCB0cF8xXzIpIElOVE8gdHBfMF8yOworRVJST1I6ICBjYW5ub3QgY3JlYXRlIGEgcGVybWFuZW50 IHJlbGF0aW9uIGFzIHBhcnRpdGlvbiBvZiB0ZW1wb3JhcnkgcmVsYXRpb24gInQiCitST0xMQkFD SzsKK0RFQUxMT0NBVEUgZ2V0X3BhcnRpdGlvbl9pbmZvOworLS0gQ2hlY2sgdGhlIG5ldyBwYXJ0 aXRpb24gaW5oZXJpdHMgcGFyZW50J3MgdGFibGVzcGFjZQorU0VUIHNlYXJjaF9wYXRoID0gcGFy dGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKK0NSRUFURSBUQUJMRSB0IChpIGludCBQUklN QVJZIEtFWSBVU0lORyBJTkRFWCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UpCisgIFBBUlRJ VElPTiBCWSBSQU5HRSAoaSkgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlOworQ1JFQVRFIFRB QkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NS RUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAo Mik7CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRP IHRwXzBfMjsKK1NFTEVDVCB0YWJsZW5hbWUsIHRhYmxlc3BhY2UgRlJPTSBwZ190YWJsZXMKKyAg V0hFUkUgdGFibGVuYW1lIElOICgndCcsICd0cF8wXzInKSBBTkQgc2NoZW1hbmFtZSA9ICdwYXJ0 aXRpb25zX21lcmdlX3NjaGVtYScKKyAgT1JERVIgQlkgdGFibGVuYW1lIENPTExBVEUgIkMiLCB0 YWJsZXNwYWNlIENPTExBVEUgIkMiOworIHRhYmxlbmFtZSB8ICAgIHRhYmxlc3BhY2UgICAgCist LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAgICAgfCByZWdyZXNzX3RibHNw YWNlCisgdHBfMF8yICAgIHwgcmVncmVzc190YmxzcGFjZQorKDIgcm93cykKKworU0VMRUNUIHRh YmxlbmFtZSwgaW5kZXhuYW1lLCB0YWJsZXNwYWNlIEZST00gcGdfaW5kZXhlcworICBXSEVSRSB0 YWJsZW5hbWUgSU4gKCd0JywgJ3RwXzBfMicpIEFORCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbnNf bWVyZ2Vfc2NoZW1hJworICBPUkRFUiBCWSB0YWJsZW5hbWUgQ09MTEFURSAiQyIsIGluZGV4bmFt ZSBDT0xMQVRFICJDIiwgdGFibGVzcGFjZSBDT0xMQVRFICJDIjsKKyB0YWJsZW5hbWUgfCAgaW5k ZXhuYW1lICB8ICAgIHRhYmxlc3BhY2UgICAgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLQorIHQgICAgICAgICB8IHRfcGtleSAgICAgIHwgcmVncmVzc190Ymxz cGFjZQorIHRwXzBfMiAgICB8IHRwXzBfMl9wa2V5IHwgcmVncmVzc190YmxzcGFjZQorKDIgcm93 cykKKworRFJPUCBUQUJMRSB0OworLS0gQ2hlY2sgdGhlIG5ldyBwYXJ0aXRpb24gaW5oZXJpdHMg cGFyZW50J3MgdGFibGUgYWNjZXNzIG1ldGhvZAorU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9u c19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKK0NSRUFURSBBQ0NFU1MgTUVUSE9EIHBhcnRpdGlvbnNf bWVyZ2VfaGVhcCBUWVBFIFRBQkxFIEhBTkRMRVIgaGVhcF90YWJsZWFtX2hhbmRsZXI7CitDUkVB VEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSkgVVNJTkcgcGFydGl0aW9u c19tZXJnZV9oZWFwOworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFM VUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQg Rk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElP TlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKK1NFTEVDVCBjLnJlbG5hbWUsIGEuYW1u YW1lCitGUk9NIHBnX2NsYXNzIGMgSk9JTiBwZ19hbSBhIE9OIGMucmVsYW0gPSBhLm9pZAorV0hF UkUgYy5vaWQgSU4gKCd0Jzo6cmVnY2xhc3MsICd0cF8wXzInOjpyZWdjbGFzcykKK09SREVSIEJZ IGMucmVsbmFtZSBDT0xMQVRFICJDIjsKKyByZWxuYW1lIHwgICAgICAgIGFtbmFtZSAgICAgICAg IAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdCAgICAgICB8IHBhcnRpdGlv bnNfbWVyZ2VfaGVhcAorIHRwXzBfMiAgfCBwYXJ0aXRpb25zX21lcmdlX2hlYXAKKygyIHJvd3Mp CisKK0RST1AgVEFCTEUgdDsKK0RST1AgQUNDRVNTIE1FVEhPRCBwYXJ0aXRpb25zX21lcmdlX2hl YXA7CistLSBUZXN0IHBlcm1pc3Npb24gY2hlY2tzLiAgVGhlIHVzZXIgbmVlZHMgdG8gb3duIHRo ZSBwYXJlbnQgdGFibGUgYW5kIGFsbAorLS0gdGhlIG1lcmdpbmcgcGFydGl0aW9ucyB0byBkbyB0 aGUgbWVyZ2UuCitDUkVBVEUgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9hbGljZTsKK0NS RUFURSBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK0dSQU5UIEFMTCBPTiBTQ0hF TUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEgVE8gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYWxp Y2U7CitHUkFOVCBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIFRPIHJlZ3Jl c3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVz c19wYXJ0aXRpb25fbWVyZ2VfYWxpY2U7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElP TiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBW QUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0Yg dCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04g cmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworLS0gRVJST1I6ICBtdXN0IGJlIG93bmVyIG9m IHRhYmxlIHQKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIp IElOVE8gdHBfMF8yOworRVJST1I6ICBtdXN0IGJlIG93bmVyIG9mIHRhYmxlIHQKK1JFU0VUIFNF U1NJT04gQVVUSE9SSVpBVElPTjsKK0FMVEVSIFRBQkxFIHQgT1dORVIgVE8gcmVncmVzc19wYXJ0 aXRpb25fbWVyZ2VfYm9iOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRp dGlvbl9tZXJnZV9ib2I7CistLSBFUlJPUjogIG11c3QgYmUgb3duZXIgb2YgdGFibGUgdHBfMF8x CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRw XzBfMjsKK0VSUk9SOiAgbXVzdCBiZSBvd25lciBvZiB0YWJsZSB0cF8wXzEKK1JFU0VUIFNFU1NJ T04gQVVUSE9SSVpBVElPTjsKK0FMVEVSIFRBQkxFIHRwXzBfMSBPV05FUiBUTyByZWdyZXNzX3Bh cnRpdGlvbl9tZXJnZV9ib2I7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFy dGl0aW9uX21lcmdlX2JvYjsKKy0tIEVSUk9SOiAgbXVzdCBiZSBvd25lciBvZiB0YWJsZSB0cF8x XzIKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8g dHBfMF8yOworRVJST1I6ICBtdXN0IGJlIG93bmVyIG9mIHRhYmxlIHRwXzFfMgorUkVTRVQgU0VT U0lPTiBBVVRIT1JJWkFUSU9OOworQUxURVIgVEFCTEUgdHBfMV8yIE9XTkVSIFRPIHJlZ3Jlc3Nf cGFydGl0aW9uX21lcmdlX2JvYjsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19w YXJ0aXRpb25fbWVyZ2VfYm9iOworLS0gT2s6CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElP TlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpB VElPTjsKK0RST1AgVEFCTEUgdDsKKy0tIFRlc3Q6IHdlIGNhbid0IG1lcmdlIHBhcnRpdGlvbnMg d2l0aCBkaWZmZXJlbnQgb3duZXJzCitDUkVBVEUgVEFCTEUgdHBfMF8xKGkgaW50KTsKK0FMVEVS IFRBQkxFIHRwXzBfMSBPV05FUiBUTyByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9hbGljZTsKK0NS RUFURSBUQUJMRSB0cF8xXzIoaSBpbnQpOworQUxURVIgVEFCTEUgdHBfMV8yIE9XTkVSIFRPIHJl Z3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElU SU9OIEJZIFJBTkdFIChpKTsKK0FMVEVSIFRBQkxFIHQgQVRUQUNIIFBBUlRJVElPTiB0cF8wXzEg Rk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitBTFRFUiBUQUJMRSB0IEFUVEFDSCBQQVJUSVRJ T04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworLS0gT3duZXIgaXMgJ3JlZ3Jl c3NfcGFydGl0aW9uX21lcmdlX2FsaWNlJzoKK1xkdCB0cF8wXzEKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIExpc3Qgb2YgdGFibGVzCisgICAgICAgICBTY2hlbWEgICAgICAgICAgfCAg TmFtZSAgfCBUeXBlICB8ICAgICAgICAgICAgIE93bmVyICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSB8IHRwXzBfMSB8IHRhYmxlIHwgcmVn cmVzc19wYXJ0aXRpb25fbWVyZ2VfYWxpY2UKKygxIHJvdykKKworLS0gT3duZXIgaXMgJ3JlZ3Jl c3NfcGFydGl0aW9uX21lcmdlX2JvYic6CitcZHQgdHBfMV8yCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIExpc3Qgb2YgdGFibGVzCisgICAgICAgICBTY2hlbWEgICAgICAgICAgfCAgTmFt ZSAgfCBUeXBlICB8ICAgICAgICAgICAgT3duZXIgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIHwgdHBfMV8yIHwgdGFibGUgfCByZWdyZXNzX3Bh cnRpdGlvbl9tZXJnZV9ib2IKKygxIHJvdykKKworLS0gRVJST1I6ICBwYXJ0aXRpb25zIGJlaW5n IG1lcmdlZCBoYXZlIGRpZmZlcmVudCBvd25lcnMKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElU SU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworRVJST1I6ICBwYXJ0aXRpb25zIGJl aW5nIG1lcmdlZCBoYXZlIGRpZmZlcmVudCBvd25lcnMKK0RST1AgVEFCTEUgdDsKK1JFVk9LRSBB TEwgT04gU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIEZST00gcmVncmVzc19wYXJ0aXRp b25fbWVyZ2VfYWxpY2U7CitSRVZPS0UgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3Nj aGVtYSBGUk9NIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK0RST1AgUk9MRSByZWdyZXNz X3BhcnRpdGlvbl9tZXJnZV9hbGljZTsKK0RST1AgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9tZXJn ZV9ib2I7CistLSBUZXN0IGZvciBoYXNoIHBhcnRpdGlvbmVkIHRhYmxlCitDUkVBVEUgVEFCTEUg dCAoaSBpbnQpIFBBUlRJVElPTiBCWSBIQVNIKGkpOworQ1JFQVRFIFRBQkxFIHRwMSBQQVJUSVRJ T04gT0YgdCBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgMiwgUkVNQUlOREVSIDApOworQ1JFQVRF IFRBQkxFIHRwMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgMiwgUkVN QUlOREVSIDEpOworLS0gRVJST1I6ICBwYXJ0aXRpb24gb2YgaGFzaC1wYXJ0aXRpb25lZCB0YWJs ZSBjYW5ub3QgYmUgbWVyZ2VkCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwMSwg dHAyKSBJTlRPIHRwMzsKK0VSUk9SOiAgcGFydGl0aW9uIG9mIGhhc2gtcGFydGl0aW9uZWQgdGFi bGUgY2Fubm90IGJlIG1lcmdlZAorLS0gRVJST1I6ICBsaXN0IG9mIHBhcnRpdGlvbnMgdG8gYmUg bWVyZ2VkIHNob3VsZCBpbmNsdWRlIGF0IGxlYXN0IHR3byBwYXJ0aXRpb25zCitBTFRFUiBUQUJM RSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwMSkgSU5UTyB0cDM7CitFUlJPUjogIGxpc3Qgb2YgcGFy dGl0aW9ucyB0byBiZSBtZXJnZWQgc2hvdWxkIGluY2x1ZGUgYXQgbGVhc3QgdHdvIHBhcnRpdGlv bnMKK0RST1AgVEFCTEUgdDsKKy0tIFRlc3QgZm9yIG1lcmdlZCBwYXJ0aXRpb24gcHJvcGVydGll czoKKy0tICogU1RBVElTVElDUyBpcyBlbXB0eQorLS0gKiBDT01NRU5UIGlzIGVtcHR5CistLSAq IERFRkFVTFRTIGFyZSB0aGUgc2FtZSBhcyBERUZBVUxUUyBmb3IgcGFydGl0aW9uZWQgdGFibGUK Ky0tICogU1RPUkFHRSBpcyB0aGUgc2FtZSBhcyBTVE9SQUdFIGZvciBwYXJ0aXRpb25lZCB0YWJs ZQorLS0gKiBHRU5FUkFURUQgYW5kIENPTlNUUkFJTlRTIGFyZSB0aGUgc2FtZSBhcyBHRU5FUkFU RUQgYW5kIENPTlNUUkFJTlRTIGZvciBwYXJ0aXRpb25lZCB0YWJsZQorLS0gKiBUUklHR0VSUyBh cmUgdGhlIHNhbWUgYXMgVFJJR0dFUlMgZm9yIHBhcnRpdGlvbmVkIHRhYmxlCitcc2V0IEhJREVf VE9BU1RfQ09NUFJFU1NJT04gZmFsc2UKK0NSRUFURSBUQUJMRSB0CisoaSBpbnQgTk9UIE5VTEws CisgdCB0ZXh0IFNUT1JBR0UgRVhURU5ERUQgQ09NUFJFU1NJT04gcGdseiBERUZBVUxUICdkZWZh dWx0X3QnLAorIGIgYmlnaW50LAorIGQgZGF0ZSBHRU5FUkFURUQgQUxXQVlTIGFzICgnMjAyMi0w MS0wMScpIFNUT1JFRCkgUEFSVElUSU9OIEJZIFJBTkdFIChhYnMoaSkpOworQ09NTUVOVCBPTiBD T0xVTU4gdC5pIElTICd0MS5pJzsKK0NSRUFURSBUQUJMRSB0cF8wXzEKKyhpIGludCBOT1QgTlVM TCwKKyB0IHRleHQgU1RPUkFHRSBNQUlOIERFRkFVTFQgJ2RlZmF1bHRfdHBfMF8xJywKKyBiIGJp Z2ludCwKKyBkIGRhdGUgR0VORVJBVEVEIEFMV0FZUyBhcyAoJzIwMjItMDItMDInKSBTVE9SRUQp OworQUxURVIgVEFCTEUgdCBBVFRBQ0ggUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00g KDApIFRPICgxKTsKK0NPTU1FTlQgT04gQ09MVU1OIHRwXzBfMS5pIElTICd0cF8wXzEuaSc7CitD UkVBVEUgVEFCTEUgdHBfMV8yCisoaSBpbnQgTk9UIE5VTEwsCisgdCB0ZXh0IFNUT1JBR0UgTUFJ TiBERUZBVUxUICdkZWZhdWx0X3RwXzFfMicsCisgYiBiaWdpbnQsCisgZCBkYXRlIEdFTkVSQVRF RCBBTFdBWVMgYXMgKCcyMDIyLTAzLTAzJykgU1RPUkVEKTsKK0FMVEVSIFRBQkxFIHQgQVRUQUNI IFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitDT01NRU5UIE9O IENPTFVNTiB0cF8xXzIuaSBJUyAndHBfMV8yLmknOworQ1JFQVRFIFNUQVRJU1RJQ1MgdF9zdGF0 IChERVBFTkRFTkNJRVMpIG9uIGksIGIgZnJvbSB0OworQ1JFQVRFIFNUQVRJU1RJQ1MgdHBfMF8x X3N0YXQgKERFUEVOREVOQ0lFUykgb24gaSwgYiBmcm9tIHRwXzBfMTsKK0NSRUFURSBTVEFUSVNU SUNTIHRwXzFfMl9zdGF0IChERVBFTkRFTkNJRVMpIG9uIGksIGIgZnJvbSB0cF8xXzI7CitBTFRF UiBUQUJMRSB0IEFERCBDT05TVFJBSU5UIHRfYl9jaGVjayBDSEVDSyAoYiA+IDApOworQUxURVIg VEFCTEUgdCBBREQgQ09OU1RSQUlOVCB0X2JfY2hlY2sxIENIRUNLIChiID4gMCkgTk9UIEVORk9S Q0VEOworQUxURVIgVEFCTEUgdCBBREQgQ09OU1RSQUlOVCB0X2JfY2hlY2syIENIRUNLIChiID4g MCkgTk9UIFZBTElEOworQUxURVIgVEFCTEUgdCBBREQgQ09OU1RSQUlOVCB0X2Jfbm4gTk9UIE5V TEwgYiBOT1QgVkFMSUQ7CitJTlNFUlQgSU5UTyB0cF8wXzEoaSwgdCwgYikgVkFMVUVTKDAsIERF RkFVTFQsIDEpOworSU5TRVJUIElOVE8gdHBfMV8yKGksIHQsIGIpIFZBTFVFUygxLCBERUZBVUxU LCAyKTsKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oKSBSRVRV Uk5TIHRyaWdnZXIgTEFOR1VBR0UgJ3BscGdzcWwnIEFTCiskQk9EWSQKK0JFR0lOCisgIFJBSVNF IE5PVElDRSAndHJpZ2dlciglKSBjYWxsZWQ6IGFjdGlvbiA9ICUsIHdoZW4gPSAlLCBsZXZlbCA9 ICUnLCBUR19BUkdWWzBdLCBUR19PUCwgVEdfV0hFTiwgVEdfTEVWRUw7CisgIFJFVFVSTiBuZXc7 CitFTkQ7CiskQk9EWSQ7CitDUkVBVEUgVFJJR0dFUiB0X2JlZm9yZV9pbnNlcnRfcm93X3RyaWdn ZXIgQkVGT1JFIElOU0VSVCBPTiB0IEZPUiBFQUNIIFJPVworICBFWEVDVVRFIFBST0NFRFVSRSB0 cmlnZ2VyX2Z1bmN0aW9uKCd0Jyk7CitDUkVBVEUgVFJJR0dFUiB0cF8wXzFfYmVmb3JlX2luc2Vy dF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5TRVJUIE9OIHRwXzBfMSBGT1IgRUFDSCBST1cKKyAgRVhF Q1VURSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5jdGlvbigndHBfMF8xJyk7CitDUkVBVEUgVFJJR0dF UiB0cF8xXzJfYmVmb3JlX2luc2VydF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5TRVJUIE9OIHRwXzFf MiBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5jdGlvbigndHBf MV8yJyk7CitcZCsgdHBfMF8xCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFRhYmxlICJwYXJ0aXRpb25zX21lcmdlX3NjaGVtYS50cF8wXzEiCisg Q29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgICAgICAgICAgICAgICAg ICAgICBEZWZhdWx0ICAgICAgICAgICAgICAgICAgICAgfCBTdG9yYWdlIHwgQ29tcHJlc3Npb24g fCBTdGF0cyB0YXJnZXQgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLQorIGkgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCBub3QgbnVsbCB8ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICB8ICAgICAg ICAgICAgIHwgICAgICAgICAgICAgIHwgdHBfMF8xLmkKKyB0ICAgICAgfCB0ZXh0ICAgIHwgICAg ICAgICAgIHwgICAgICAgICAgfCAnZGVmYXVsdF90cF8wXzEnOjp0ZXh0ICAgICAgICAgICAgICAg ICAgICAgICAgICB8IG1haW4gICAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8IAorIGIg ICAgICB8IGJpZ2ludCAgfCAgICAgICAgICAgfCBub3QgbnVsbCB8ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgIHwg ICAgICAgICAgICAgIHwgCisgZCAgICAgIHwgZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAgICAg IHwgZ2VuZXJhdGVkIGFsd2F5cyBhcyAoJzAyLTAyLTIwMjInOjpkYXRlKSBzdG9yZWQgfCBwbGFp biAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAKK1BhcnRpdGlvbiBvZjogdCBGT1Ig VkFMVUVTIEZST00gKDApIFRPICgxKQorUGFydGl0aW9uIGNvbnN0cmFpbnQ6ICgoYWJzKGkpIElT IE5PVCBOVUxMKSBBTkQgKGFicyhpKSA+PSAwKSBBTkQgKGFicyhpKSA8IDEpKQorQ2hlY2sgY29u c3RyYWludHM6CisgICAgInRfYl9jaGVjayIgQ0hFQ0sgKGIgPiAwKQorICAgICJ0X2JfY2hlY2sx IiBDSEVDSyAoYiA+IDApIE5PVCBFTkZPUkNFRAorICAgICJ0X2JfY2hlY2syIiBDSEVDSyAoYiA+ IDApIE5PVCBWQUxJRAorU3RhdGlzdGljcyBvYmplY3RzOgorICAgICJwYXJ0aXRpb25zX21lcmdl X3NjaGVtYS50cF8wXzFfc3RhdCIgKGRlcGVuZGVuY2llcykgT04gaSwgYiBGUk9NIHRwXzBfMQor Tm90LW51bGwgY29uc3RyYWludHM6CisgICAgInRwXzBfMV9pX25vdF9udWxsIiBOT1QgTlVMTCAi aSIgKGluaGVyaXRlZCkKKyAgICAidF9iX25uIiBOT1QgTlVMTCAiYiIgKGluaGVyaXRlZCkgTk9U IFZBTElECitUcmlnZ2VyczoKKyAgICB0X2JlZm9yZV9pbnNlcnRfcm93X3RyaWdnZXIgQkVGT1JF IElOU0VSVCBPTiB0cF8wXzEgRk9SIEVBQ0ggUk9XIEVYRUNVVEUgRlVOQ1RJT04gdHJpZ2dlcl9m dW5jdGlvbigndCcpLCBPTiBUQUJMRSB0CisgICAgdHBfMF8xX2JlZm9yZV9pbnNlcnRfcm93X3Ry aWdnZXIgQkVGT1JFIElOU0VSVCBPTiB0cF8wXzEgRk9SIEVBQ0ggUk9XIEVYRUNVVEUgRlVOQ1RJ T04gdHJpZ2dlcl9mdW5jdGlvbigndHBfMF8xJykKKworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJU SVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzE7CitcZCsgdHBfMF8xCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxlICJwYXJ0 aXRpb25zX21lcmdlX3NjaGVtYS50cF8wXzEiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlv biB8IE51bGxhYmxlIHwgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0ICAgICAgICAgICAgICAg ICAgICAgfCBTdG9yYWdlICB8IENvbXByZXNzaW9uIHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRp b24gCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgaSAgICAgIHwgaW50ZWdlciB8 ICAgICAgICAgICB8IG5vdCBudWxsIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCBwbGFpbiAgICB8ICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwg CisgdCAgICAgIHwgdGV4dCAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgJ2RlZmF1bHRfdCc6 OnRleHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBleHRlbmRlZCB8IHBnbHogICAg ICAgIHwgICAgICAgICAgICAgIHwgCisgYiAgICAgIHwgYmlnaW50ICB8ICAgICAgICAgICB8IG5v dCBudWxsIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCBwbGFpbiAgICB8ICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgCisgZCAgICAgIHwgZGF0 ZSAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgZ2VuZXJhdGVkIGFsd2F5cyBhcyAoJzAxLTAx LTIwMjInOjpkYXRlKSBzdG9yZWQgfCBwbGFpbiAgICB8ICAgICAgICAgICAgIHwgICAgICAgICAg ICAgIHwgCitQYXJ0aXRpb24gb2Y6IHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMikKK1BhcnRp dGlvbiBjb25zdHJhaW50OiAoKGFicyhpKSBJUyBOT1QgTlVMTCkgQU5EIChhYnMoaSkgPj0gMCkg QU5EIChhYnMoaSkgPCAyKSkKK0NoZWNrIGNvbnN0cmFpbnRzOgorICAgICJ0X2JfY2hlY2siIENI RUNLIChiID4gMCkKKyAgICAidF9iX2NoZWNrMSIgQ0hFQ0sgKGIgPiAwKSBOT1QgRU5GT1JDRUQK KyAgICAidF9iX2NoZWNrMiIgQ0hFQ0sgKGIgPiAwKSBOT1QgVkFMSUQKK05vdC1udWxsIGNvbnN0 cmFpbnRzOgorICAgICJ0X2lfbm90X251bGwiIE5PVCBOVUxMICJpIiAoaW5oZXJpdGVkKQorICAg ICJ0X2Jfbm4iIE5PVCBOVUxMICJiIiAoaW5oZXJpdGVkKSBOT1QgVkFMSUQKK1RyaWdnZXJzOgor ICAgIHRfYmVmb3JlX2luc2VydF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5TRVJUIE9OIHRwXzBfMSBG T1IgRUFDSCBST1cgRVhFQ1VURSBGVU5DVElPTiB0cmlnZ2VyX2Z1bmN0aW9uKCd0JyksIE9OIFRB QkxFIHQKKworSU5TRVJUIElOVE8gdChpLCB0LCBiKSBWQUxVRVMoMSwgREVGQVVMVCwgMyk7CitO T1RJQ0U6ICB0cmlnZ2VyKHQpIGNhbGxlZDogYWN0aW9uID0gSU5TRVJULCB3aGVuID0gQkVGT1JF LCBsZXZlbCA9IFJPVworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHQgT1JERVIg QlkgYjsKKyB0YWJsZW9pZCB8IGkgfCAgICAgICB0ICAgICAgICB8IGIgfCAgICAgZCAgICAgIAor LS0tLS0tLS0tLSstLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0rLS0tLS0tLS0tLS0tCisgdHBfMF8x ICAgfCAwIHwgZGVmYXVsdF90cF8wXzEgfCAxIHwgMDEtMDEtMjAyMgorIHRwXzBfMSAgIHwgMSB8 IGRlZmF1bHRfdHBfMV8yIHwgMiB8IDAxLTAxLTIwMjIKKyB0cF8wXzEgICB8IDEgfCBkZWZhdWx0 X3QgICAgICB8IDMgfCAwMS0wMS0yMDIyCisoMyByb3dzKQorCitEUk9QIFRBQkxFIHQ7CitEUk9Q IEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oKTsKK1xzZXQgSElERV9UT0FTVF9DT01QUkVTU0lP TiB0cnVlCistLSBUZXN0IE1FUkdFIFBBUlRJVElPTlMgd2l0aCBub3QgdmFsaWQgZm9yZWlnbiBr ZXkgY29uc3RyYWludAorQ1JFQVRFIFRBQkxFIHQgKGkgSU5UIFBSSU1BUlkgS0VZKSBQQVJUSVRJ T04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1Ig VkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9G IHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoMCks ICgxKTsKK0NSRUFURSBUQUJMRSB0X2ZrIChpIElOVCk7CitJTlNFUlQgSU5UTyB0X2ZrIFZBTFVF UyAoMSksICgyKTsKK0FMVEVSIFRBQkxFIHRfZmsgQUREIENPTlNUUkFJTlQgdF9ma19pX2ZrZXkg Rk9SRUlHTiBLRVkgKGkpIFJFRkVSRU5DRVMgdCBOT1QgVkFMSUQ7CitBTFRFUiBUQUJMRSB0IE1F UkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKKy0tIFNob3VsZCBi ZSBOT1QgVkFMSUQgRk9SRUlHTiBLRVkKK1xkIHRwXzBfMgorICAgICAgVGFibGUgInBhcnRpdGlv bnNfbWVyZ2Vfc2NoZW1hLnRwXzBfMiIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwg TnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0rLS0tLS0tLS0tCisgaSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8IG5vdCBudWxs IHwgCitQYXJ0aXRpb24gb2Y6IHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMikKK0luZGV4ZXM6 CisgICAgInRwXzBfMl9wa2V5IiBQUklNQVJZIEtFWSwgYnRyZWUgKGkpCitSZWZlcmVuY2VkIGJ5 OgorICAgIFRBQkxFICJ0X2ZrIiBDT05TVFJBSU5UICJ0X2ZrX2lfZmtleSIgRk9SRUlHTiBLRVkg KGkpIFJFRkVSRU5DRVMgdChpKSBOT1QgVkFMSUQKKworLS0gRVJST1I6ICBpbnNlcnQgb3IgdXBk YXRlIG9uIHRhYmxlICJ0X2ZrIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0X2Zr X2lfZmtleSIKK0FMVEVSIFRBQkxFIHRfZmsgVkFMSURBVEUgQ09OU1RSQUlOVCB0X2ZrX2lfZmtl eTsKK0VSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAidF9mayIgdmlvbGF0ZXMgZm9y ZWlnbiBrZXkgY29uc3RyYWludCAidF9ma19pX2ZrZXkiCitERVRBSUw6ICBLZXkgKGkpPSgyKSBp cyBub3QgcHJlc2VudCBpbiB0YWJsZSAidCIuCitEUk9QIFRBQkxFIHRfZms7CitEUk9QIFRBQkxF IHQ7CistLSBUZXN0IE1FUkdFIFBBUlRJVElPTlMgd2l0aCBub3QgZW5mb3JjZWQgZm9yZWlnbiBr ZXkgY29uc3RyYWludAorQ1JFQVRFIFRBQkxFIHQgKGkgSU5UIFBSSU1BUlkgS0VZKSBQQVJUSVRJ T04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1Ig VkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9G IHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoMCks ICgxKTsKK0NSRUFURSBUQUJMRSB0X2ZrIChpIElOVCk7CitJTlNFUlQgSU5UTyB0X2ZrIFZBTFVF UyAoMSksICgyKTsKK0FMVEVSIFRBQkxFIHRfZmsgQUREIENPTlNUUkFJTlQgdF9ma19pX2ZrZXkg Rk9SRUlHTiBLRVkgKGkpIFJFRkVSRU5DRVMgdCBOT1QgRU5GT1JDRUQ7CitBTFRFUiBUQUJMRSB0 IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKKy0tIFNob3Vs ZCBiZSBOT1QgRU5GT1JDRUQgRk9SRUlHTiBLRVkKK1xkIHRwXzBfMgorICAgICAgVGFibGUgInBh cnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnRwXzBfMiIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0 aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0rLS0tLS0tLS0tCisgaSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8IG5v dCBudWxsIHwgCitQYXJ0aXRpb24gb2Y6IHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMikKK0lu ZGV4ZXM6CisgICAgInRwXzBfMl9wa2V5IiBQUklNQVJZIEtFWSwgYnRyZWUgKGkpCitSZWZlcmVu Y2VkIGJ5OgorICAgIFRBQkxFICJ0X2ZrIiBDT05TVFJBSU5UICJ0X2ZrX2lfZmtleSIgRk9SRUlH TiBLRVkgKGkpIFJFRkVSRU5DRVMgdChpKSBOT1QgRU5GT1JDRUQKKworLS0gRVJST1I6ICBpbnNl cnQgb3IgdXBkYXRlIG9uIHRhYmxlICJ0X2ZrIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJh aW50ICJ0X2ZrX2lfZmtleSIKK0FMVEVSIFRBQkxFIHRfZmsgQUxURVIgQ09OU1RSQUlOVCB0X2Zr X2lfZmtleSBFTkZPUkNFRDsKK0VSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAidF9m ayIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidF9ma19pX2ZrZXkiCitERVRBSUw6 ICBLZXkgKGkpPSgyKSBpcyBub3QgcHJlc2VudCBpbiB0YWJsZSAidCIuCitEUk9QIFRBQkxFIHRf Zms7CitEUk9QIFRBQkxFIHQ7CistLSBUZXN0IGZvciByZWNvbXB1dGF0aW9uIG9mIHN0b3JlZCBn ZW5lcmF0ZWQgY29sdW1ucy4KK0NSRUFURSBUQUJMRSB0IChpIGludCwgdGFiX2lkIGludCBnZW5l cmF0ZWQgYWx3YXlzIGFzICh0YWJsZW9pZCkgc3RvcmVkKSBQQVJUSVRJT04gQlkgUkFOR0UgKGkp OworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDAp IFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBG Uk9NICgxKSBUTyAoMik7CitBTFRFUiBUQUJMRSB0IEFERCBDT05TVFJBSU5UIGNjIENIRUNLKHRh Ymxlb2lkIDw+IDEyMzQ1Njc4OSk7CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoMCksICgxKTsKKy0t IFNob3VsZCBiZSAwIGJlY2F1c2UgcGFydGl0aW9uIGlkZW50aWZpZXIgZm9yIHJvdyB3aXRoIGk9 MCBpcyBkaWZmZXJlbnQgZnJvbQorLS0gcGFydGl0aW9uIGlkZW50aWZpZXIgZm9yIHJvdyB3aXRo IGk9MS4KK1NFTEVDVCBjb3VudCgqKSBGUk9NIHQgV0hFUkUgaSA9IDAgQU5EIHRhYl9pZCBJTiAo U0VMRUNUIHRhYl9pZCBGUk9NIHQgV0hFUkUgaSA9IDEpOworIGNvdW50IAorLS0tLS0tLQorICAg ICAwCisoMSByb3cpCisKKy0tICJ0YWJfaWQiIGNvbHVtbiAoc3RvcmVkIGdlbmVyYXRlZCBjb2x1 bW4pIHdpdGggInRhYmxlb2lkIiBhdHRyaWJ1dGUgcmVxdWlyZXMKKy0tIHJlY29tcHV0YXRpb24g aGVyZS4KK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElO VE8gdHBfMF8yOworLS0gU2hvdWxkIGJlIDEgYmVjYXVzZSBwYXJ0aXRpb24gaWRlbnRpZmllciBm b3Igcm93IHdpdGggaT0wIGlzIHRoZSBzYW1lIGFzCistLSBwYXJ0aXRpb24gaWRlbnRpZmllciBm b3Igcm93IHdpdGggaT0xLgorU0VMRUNUIGNvdW50KCopIEZST00gdCBXSEVSRSBpID0gMCBBTkQg dGFiX2lkIElOIChTRUxFQ1QgdGFiX2lkIEZST00gdCBXSEVSRSBpID0gMSk7CisgY291bnQgCist LS0tLS0tCisgICAgIDEKKygxIHJvdykKKworRFJPUCBUQUJMRSB0OworLS0gVGVzdCBmb3IgZ2Vu ZXJhdGVkIGNvbHVtbnMgKGRpZmZlcmVudCBvcmRlciBvZiBjb2x1bW5zIGluIHBhcnRpdGlvbmVk IHRhYmxlCistLSBhbmQgcGFydGl0aW9ucykuCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQsIGcgaW50 IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGkgKyB0YWJsZW9pZDo6aW50KSkgUEFSVElUSU9OIEJZIFJB TkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8xIChnIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChp ICsgdGFibGVvaWQ6OmludCksIGkgaW50KTsKK0NSRUFURSBUQUJMRSB0cF8yIChnIGludCBHRU5F UkFURUQgQUxXQVlTIEFTIChpICsgdGFibGVvaWQ6OmludCksIGkgaW50KTsKK0FMVEVSIFRBQkxF IHQgQVRUQUNIIFBBUlRJVElPTiB0cF8xIEZPUiBWQUxVRVMgRlJPTSAoLTEpIFRPICgxMCk7CitB TFRFUiBUQUJMRSB0IEFUVEFDSCBQQVJUSVRJT04gdHBfMiBGT1IgVkFMVUVTIEZST00gKDEwKSBU TyAoMjApOworQUxURVIgVEFCTEUgdCBBREQgQ0hFQ0sgKGcgPiAwKTsKK0FMVEVSIFRBQkxFIHQg QUREIENIRUNLIChpID4gMCk7CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoNSksICgxNSk7CitBTFRF UiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzEsIHRwXzIpIElOVE8gdHBfMTI7CitJTlNF UlQgSU5UTyB0IFZBTFVFUyAoMTYpOworLS0gRVJST1I6ICBuZXcgcm93IGZvciByZWxhdGlvbiAi dHBfMTIiIHZpb2xhdGVzIGNoZWNrIGNvbnN0cmFpbnQgInRfaV9jaGVjayIKK0lOU0VSVCBJTlRP IHQgVkFMVUVTICgwKTsKK0VSUk9SOiAgbmV3IHJvdyBmb3IgcmVsYXRpb24gInRwXzEyIiB2aW9s YXRlcyBjaGVjayBjb25zdHJhaW50ICJ0X2lfY2hlY2siCitERVRBSUw6ICBGYWlsaW5nIHJvdyBj b250YWlucyAoMCwgdmlydHVhbCkuCistLSBTaG91bGQgYmUgMyByb3dzOiAoNSksICgxNSksICgx Nik6CitTRUxFQ1QgaSBGUk9NIHQgT1JERVIgQlkgaTsKKyBpICAKKy0tLS0KKyAgNQorIDE1Cisg MTYKKygzIHJvd3MpCisKKy0tIFNob3VsZCBiZSAxIGJlY2F1c2UgZm9yIHRoZSBzYW1lIHRhYmxl b2lkICgxNSArIHRhYmxlb2lkKSA9ICg1ICsgdGFibGVvaWQpICsgMTA6CitTRUxFQ1QgY291bnQo KikgRlJPTSB0IFdIRVJFIGkgPSAxNSBBTkQgZyBJTiAoU0VMRUNUIGcgKyAxMCBGUk9NIHQgV0hF UkUgaSA9IDUpOworIGNvdW50IAorLS0tLS0tLQorICAgICAxCisoMSByb3cpCisKK0RST1AgVEFC TEUgdDsKK1JFU0VUIHNlYXJjaF9wYXRoOworLS0KK0RST1AgU0NIRU1BIHBhcnRpdGlvbnNfbWVy Z2Vfc2NoZW1hOworRFJPUCBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyOwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSBiL3NyYy90ZXN0L3JlZ3Jl c3MvcGFyYWxsZWxfc2NoZWR1bGUKaW5kZXggY2M2ZDc5OWJjZWEuLjYzM2NmMjBlMGE2IDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKQEAgLTEyMyw3ICsxMjMsNyBAQCB0ZXN0OiBwbGFu Y2FjaGUgbGltaXQgcGxwZ3NxbCBjb3B5MiB0ZW1wIGRvbWFpbiByYW5nZWZ1bmNzIHByZXBhcmUg Y29udmVyc2lvbiB0cgogIyBUaGUgc3RhdHMgdGVzdCByZXNldHMgc3RhdHMsIHNvIG5vdGhpbmcg ZWxzZSBuZWVkaW5nIHN0YXRzIGFjY2VzcyBjYW4gYmUgaW4KICMgdGhpcyBncm91cC4KICMgLS0t LS0tLS0tLQotdGVzdDogcGFydGl0aW9uX2pvaW4gcGFydGl0aW9uX3BydW5lIHJlbG9wdGlvbnMg aGFzaF9wYXJ0IGluZGV4aW5nIHBhcnRpdGlvbl9hZ2dyZWdhdGUgcGFydGl0aW9uX2luZm8gdHVw bGVzb3J0IGV4cGxhaW4gY29tcHJlc3Npb24gY29tcHJlc3Npb25fbHo0IG1lbW9pemUgc3RhdHMg cHJlZGljYXRlIG51bWEgZWFnZXJfYWdncmVnYXRlCit0ZXN0OiBwYXJ0aXRpb25fbWVyZ2UgcGFy dGl0aW9uX2pvaW4gcGFydGl0aW9uX3BydW5lIHJlbG9wdGlvbnMgaGFzaF9wYXJ0IGluZGV4aW5n IHBhcnRpdGlvbl9hZ2dyZWdhdGUgcGFydGl0aW9uX2luZm8gdHVwbGVzb3J0IGV4cGxhaW4gY29t cHJlc3Npb24gY29tcHJlc3Npb25fbHo0IG1lbW9pemUgc3RhdHMgcHJlZGljYXRlIG51bWEgZWFn ZXJfYWdncmVnYXRlCiAKICMgZXZlbnRfdHJpZ2dlciBkZXBlbmRzIG9uIGNyZWF0ZV9hbSBhbmQg Y2Fubm90IHJ1biBjb25jdXJyZW50bHkgd2l0aAogIyBhbnkgdGVzdCB0aGF0IHJ1bnMgRERMCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fbWVyZ2Uuc3FsIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX21lcmdlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uZmZiNDk4NjEyYTYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fbWVyZ2Uuc3FsCkBAIC0wLDAgKzEsNzkxIEBACist LQorLS0gUEFSVElUSU9OU19NRVJHRQorLS0gVGVzdHMgZm9yICJBTFRFUiBUQUJMRSAuLi4gTUVS R0UgUEFSVElUSU9OUyAuLi4iIGNvbW1hbmQKKy0tCisKK0NSRUFURSBTQ0hFTUEgcGFydGl0aW9u c19tZXJnZV9zY2hlbWE7CitDUkVBVEUgU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMjsK K1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwdWJsaWM7CisKKy0t CistLSBCWSBSQU5HRSBwYXJ0aXRpb25pbmcKKy0tCisKKy0tCistLSBUZXN0IGZvciBlcnJvciBj b2RlcworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBz YWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRl IERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfZGVjMjAyMSBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAy MS0xMi0wMScpIFRPICgnMjAyMS0xMi0zMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIg UEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBU TyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWIyMDIyIFBBUlRJVElPTiBP RiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAz LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbWFyMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFu Z2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpOworCitD UkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMiAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNv bl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBB UlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByXzEg UEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScp IFRPICgnMjAyMi0wNC0xNScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Fwcl8yIFBBUlRJVElPTiBP RiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMTUnKSBUTyAoJzIwMjIt MDUtMDEnKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNf YXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7 CisKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERF RkFVTFQ7CisKKy0tIEVSUk9SOiAgcGFydGl0aW9uIHdpdGggbmFtZSAic2FsZXNfZmViMjAyMiIg aXMgYWxyZWFkeSB1c2VkCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05T IChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBzYWxlc19mZWIyMDIyKSBJTlRPIHNhbGVz X2ZlYl9tYXJfYXByMjAyMjsKKy0tIEVSUk9SOiAgInNhbGVzX2FwcjIwMjIiIGlzIG5vdCBhIHRh YmxlCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19mZWIy MDIyLCBzYWxlc19tYXIyMDIyLCBzYWxlc19hcHIyMDIyKSBJTlRPIHNhbGVzX2ZlYl9tYXJfYXBy MjAyMjsKKy0tIEVSUk9SOiAgY2FuIG5vdCBtZXJnZSBwYXJ0aXRpb24gInNhbGVzX21hcjIwMjIi IHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uICJzYWxlc19qYW4yMDIyIgorLS0gREVUQUlMOiAgbG93 ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19tYXIyMDIyIiBpcyBub3QgZXF1YWwgdG8gdGhl IHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfamFuMjAyMiIKKy0tIChzcGFjZSBiZXR3 ZWVuIHNlY3Rpb25zIHNhbGVzX2phbjIwMjIgYW5kIHNhbGVzX21hcjIwMjIpCitBTFRFUiBUQUJM RSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19qYW4yMDIyLCBzYWxlc19tYXIy MDIyKSBJTlRPIHNhbGVzX2phbl9tYXIyMDIyOworLS0gRVJST1I6ICBjYW4gbm90IG1lcmdlIHBh cnRpdGlvbiAic2FsZXNfamFuMjAyMiIgdG9nZXRoZXIgd2l0aCBwYXJ0aXRpb24gInNhbGVzX2Rl YzIwMjEiCistLSBERVRBSUw6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2phbjIw MjIiIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19k ZWMyMDIxIgorLS0gKHNwYWNlIGJldHdlZW4gc2VjdGlvbnMgc2FsZXNfZGVjMjAyMSBhbmQgc2Fs ZXNfamFuMjAyMikKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNh bGVzX2RlYzIwMjEsIHNhbGVzX2phbjIwMjIsIHNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfZGVj X2phbl9mZWIyMDIyOworLS0gRVJST1I6ICBwYXJ0aXRpb24gd2l0aCBuYW1lICJzYWxlc19mZWIy MDIyIiBpcyBhbHJlYWR5IHVzZWQKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJ VElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIsIHBhcnRpdGlvbnNfbWVyZ2Vfc2No ZW1hLnNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfZmViX21hcl9hcHIyMDIyOworLS1FUlJPUiwg c2FsZXNfYXByXzIgYWxyZWFkeSBleGlzdHMKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdF IFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIsIHNhbGVzX2phbjIwMjIp IElOVE8gc2FsZXNfYXByXzI7CisKK0NSRUFURSBWSUVXIGphbjIwMjJ2IGFzIFNFTEVDVCAqIEZS T00gc2FsZXNfamFuMjAyMjsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElP TlMgKHNhbGVzX2phbjIwMjIsIHNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfZGVjX2phbl9mZWIy MDIyOworRFJPUCBWSUVXIGphbjIwMjJ2OworCistLSBOTyBFUlJPUjogdGVzdCBmb3IgY3VzdG9t IHBhcnRpdGlvbnMgb3JkZXIsIHNvdXJjZSBwYXJ0aXRpb25zIG5vdCBpbiB0aGUgc2VhcmNoX3Bh dGgKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMiwgcHVibGljOwor QUxURVIgVEFCTEUgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEuc2FsZXNfcmFuZ2UgTUVSR0UgUEFS VElUSU9OUyAoCisgIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX2ZlYjIwMjIsCisgIHBh cnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX21hcjIwMjIsCisgIHBhcnRpdGlvbnNfbWVyZ2Vf c2NoZW1hLnNhbGVzX2phbjIwMjIpIElOVE8gc2FsZXNfamFuX2ZlYl9tYXIyMDIyOworU0VUIHNl YXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKKworUFJFUEFSRSBn ZXRfcGFydGl0aW9uX2luZm8ocmVnY2xhc3NbXSkgQVMKK1NFTEVDVCAgYy5vaWQ6OnBnX2NhdGFs b2cucmVnY2xhc3MsCisgICAgICAgIGMucmVscGVyc2lzdGVuY2UsCisgICAgICAgIGMucmVsa2lu ZCwKKyAgICAgICAgaS5pbmhkZXRhY2hwZW5kaW5nLAorICAgICAgICBwZ19jYXRhbG9nLnBnX2dl dF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkKK0ZST00gICAgcGdfY2F0YWxvZy5wZ19jbGFz cyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKK1dIRVJFICAgYy5vaWQgPSBpLmluaHJlbGlk IEFORCBpLmluaHBhcmVudCA9IEFOWSgkMSkKK09SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4 cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywKKyAgICAgICAgIGMub2lkOjpy ZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIjsKKworRVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8o J3tzYWxlc19yYW5nZX0nKTsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKworLS0KKy0tIEFk ZCByb3dzIGludG8gcGFydGl0aW9uZWQgdGFibGUsIHRoZW4gbWVyZ2UgcGFydGl0aW9ucworLS0K K0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNv bl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBB UlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAy MiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScp IFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9O IE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjIt MDMtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19tYXIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19y YW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyk7CitD UkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxF IHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKK0NSRUFURSBJ TkRFWCBzYWxlc19yYW5nZV9zYWxlc19kYXRlX2lkeCBPTiBzYWxlc19yYW5nZSBVU0lORyBidHJl ZSAoc2FsZXNfZGF0ZSk7CisKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwg ICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAw LCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcp LAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYn LCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAy Mi0wMi0xMScpLAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4 LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAy NTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4 JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxh dG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcy MDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKwor U0VMRUNUIHBnX2NhdGFsb2cucGdfZ2V0X3BhcnRrZXlkZWYoJ3NhbGVzX3JhbmdlJzo6cmVnY2xh c3MpOworCistLSBzaG93IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRpb25zOgorRVhFQ1VURSBnZXRf cGFydGl0aW9uX2luZm8oJ3tzYWxlc19yYW5nZX0nKTsKKworLS0gY2hlY2sgc2NoZW1hLXF1YWxp ZmllZCBuYW1lIG9mIHRoZSBuZXcgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBN RVJHRSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBzYWxlc19hcHIy MDIyKSBJTlRPIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIwMjI7 CisKKy0tIHNob3cgcGFydGl0aW9ucyB3aXRoIGNvbmRpdGlvbnM6CitFWEVDVVRFIGdldF9wYXJ0 aXRpb25faW5mbygne3NhbGVzX3JhbmdlfScpOworCitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMg V0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX2ZlYl9tYXJfYXByMjAyMicgYW5kIHNjaGVtYW5hbWUg PSAncGFydGl0aW9uc19tZXJnZV9zY2hlbWEyJzsKKworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFz cywgKiBGUk9NIHNhbGVzX3JhbmdlIE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBD T0xMQVRFICJDIiwgc2FsZXNwZXJzb25faWQ7CisKKy0tIFVzZSBpbmRleHNjYW4gZm9yIHRlc3Rp bmcgaW5kZXhlcworU0VUIGVuYWJsZV9zZXFzY2FuID0gT0ZGOworCitFWFBMQUlOIChDT1NUUyBP RkYpIFNFTEVDVCAqIEZST00gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9tYXJf YXByMjAyMiB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOworU0VMRUNUICogRlJPTSBw YXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2FsZXNfZmViX21hcl9hcHIyMDIyIHdoZXJlIHNhbGVz X2RhdGUgPiAnMjAyMi0wMS0wMSc7CisKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworCitEUk9QIFRB QkxFIHNhbGVzX3JhbmdlOworCistLQorLS0gTWVyZ2Ugc29tZSBwYXJ0aXRpb25zIGludG8gREVG QVVMVCBwYXJ0aXRpb24KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29u X2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwg c2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRF IFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxl c19mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbWFyMjAyMiBQ QVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRP ICgnMjAyMi0wNC0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjIgUEFSVElUSU9OIE9G IHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUt MDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3Jhbmdl IERFRkFVTFQ7CitDUkVBVEUgSU5ERVggc2FsZXNfcmFuZ2Vfc2FsZXNfZGF0ZV9pZHggT04gc2Fs ZXNfcmFuZ2UgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpOworCitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpLAorICAo MiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyksCisgICgzLCAgJ0ZvcmQnLCAgICAg MjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0x MycpLAorICAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3JyksCisgICg2LCAgJ1Bv aXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKSwKKyAgKDcsICAnTGknLCAgICAgICAxNzUsICAn MjAyMi0wMy0wOCcpLAorICAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyksCisg ICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVyJywg ICAzNTAsICAnMjAyMi0wMS0yOCcpLAorICAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0 LTA2JyksCisgICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKSwKKyAgKDEzLCAn R2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpLAorICAoMTQsICdTbWl0aCcsICAgIDUxMCwg ICcyMDIyLTA1LTA0Jyk7CisKKy0tIE1lcmdlIHBhcnRpdGlvbnMgKGluY2x1ZGUgREVGQVVMVCBw YXJ0aXRpb24pIGludG8gcGFydGl0aW9uIHdpdGggdGhlIHNhbWUKKy0tIG5hbWUKK0FMVEVSIFRB QkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMKKyAgKHNhbGVzX2phbjIwMjIsIHNhbGVz X21hcjIwMjIsIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX290aGVycykgSU5UTyBzYWxl c19vdGhlcnM7CisKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzIE9SREVSIEJZIHNhbGVzcGVy c29uX2lkOworCistLSBzaG93IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRpb25zOgorRVhFQ1VURSBn ZXRfcGFydGl0aW9uX2luZm8oJ3tzYWxlc19yYW5nZX0nKTsKKworRFJPUCBUQUJMRSBzYWxlc19y YW5nZTsKKworLS0KKy0tIFRlc3QgZm9yOgorLS0gICAqIGNvbXBvc2l0ZSBwYXJ0aXRpb24ga2V5 OworLS0gICAqIEdFTkVSQVRFRCBjb2x1bW47CistLSAgICogY29sdW1uIHdpdGggREVGQVVMVCB2 YWx1ZS4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfZGF0ZSAoc2FsZXNwZXJzb25fbmFtZSBWQVJD SEFSKDMwKSwgc2FsZXNfeWVhciBJTlQsIHNhbGVzX21vbnRoIElOVCwgc2FsZXNfZGF5IElOVCwK KyAgc2FsZXNfZGF0ZSBWQVJDSEFSKDEwKSBHRU5FUkFURUQgQUxXQVlTIEFTCisgICAgKExQQUQo c2FsZXNfeWVhcjo6dGV4dCwgNCwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxlc19tb250aDo6dGV4 dCwgMiwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxlc19kYXk6OnRleHQsIDIsICcwJykpIFNUT1JF RCwKKyAgc2FsZXNfZGVwYXJ0bWVudCBWQVJDSEFSKDMwKSBERUZBVUxUICdTYWxlcyBkZXBhcnRt ZW50JykKKyAgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2Fs ZXNfZGF5KTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX2RlYzIwMjIgUEFSVElUSU9OIE9GIHNhbGVz X2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIxLCAxMiwgMSkgVE8gKDIwMjIsIDEsIDEpOworQ1JF QVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVF UyBGUk9NICgyMDIyLCAxLCAxKSBUTyAoMjAyMiwgMiwgMSk7CitDUkVBVEUgVEFCTEUgc2FsZXNf ZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDIs IDEpIFRPICgyMDIyLCAzLCAxKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlciBQQVJUSVRJT04g T0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDMsIDEpIFRPIChNQVhWQUxVRSwg TUFYVkFMVUUsIE1BWFZBTFVFKTsKKworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc3BlcnNv bl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMKKyAgKCdN YW5hZ2VyMScsIDIwMjEsIDEyLCA3KSwKKyAgKCdNYW5hZ2VyMicsIDIwMjEsIDEyLCA4KSwKKyAg KCdNYW5hZ2VyMycsIDIwMjIsIDEsIDEpLAorICAoJ01hbmFnZXIxJywgMjAyMiwgMiwgNCksCisg ICgnTWFuYWdlcjInLCAyMDIyLCAxLCAyKSwKKyAgKCdNYW5hZ2VyMycsIDIwMjIsIDIsIDEpLAor ICAoJ01hbmFnZXIxJywgMjAyMiwgMywgMyksCisgICgnTWFuYWdlcjInLCAyMDIyLCAzLCA0KSwK KyAgKCdNYW5hZ2VyMycsIDIwMjIsIDUsIDEpOworCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNz LCAqIEZST00gc2FsZXNfZGF0ZTsKKworQUxURVIgVEFCTEUgc2FsZXNfZGF0ZSBNRVJHRSBQQVJU SVRJT05TIChzYWxlc19qYW4yMDIyLCBzYWxlc19mZWIyMDIyKSBJTlRPIHNhbGVzX2phbl9mZWIy MDIyOworCitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3ll YXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUworICAoJ01hbmFnZXIxJywgMjAyMiwg MSwgMTApLAorICAoJ01hbmFnZXIyJywgMjAyMiwgMiwgMTApOworCitTRUxFQ1QgdGFibGVvaWQ6 OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfZGF0ZTsKK0RST1AgVEFCTEUgc2FsZXNfZGF0ZTsKKwor LS0KKy0tIFRlc3Q6IG1lcmdlIHBhcnRpdGlvbnMgb2YgcGFydGl0aW9uZWQgdGFibGUgd2l0aCB0 cmlnZ2VycworLS0KK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQg UFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJVElPTiBCWSBS QU5HRSAoc2FsZXNwZXJzb25faWQpOworCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUwMV8xMCBQ QVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworQ1JF QVRFIFRBQkxFIHNhbGVzcGVvcGxlMTBfMjAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBW QUxVRVMgRlJPTSAoMTApIFRPICgyMCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUyMF8zMCBQ QVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKTsKK0NS RUFURSBUQUJMRSBzYWxlc3Blb3BsZTMwXzQwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1Ig VkFMVUVTIEZST00gKDMwKSBUTyAoNDApOworCitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxV RVMgKDEsICAnUG9pcm90Jyk7CisKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIGFmdGVyX2lu c2VydF9yb3dfdHJpZ2dlcigpIFJFVFVSTlMgdHJpZ2dlciBMQU5HVUFHRSAncGxwZ3NxbCcgQVMg JEJPRFkkCitCRUdJTgorICAgIFJBSVNFIE5PVElDRSAndHJpZ2dlciglKSBjYWxsZWQ6IGFjdGlv biA9ICUsIHdoZW4gPSAlLCBsZXZlbCA9ICUnLCBUR19BUkdWWzBdLCBUR19PUCwgVEdfV0hFTiwg VEdfTEVWRUw7CisgICAgUkVUVVJOIE5VTEw7CitFTkQ7CiskQk9EWSQ7CisKK0NSRUFURSBUUklH R0VSIHNhbGVzcGVvcGxlX2FmdGVyX2luc2VydF9zdGF0ZW1lbnRfdHJpZ2dlcgorICAgIEFGVEVS IElOU0VSVAorICAgIE9OIHNhbGVzcGVvcGxlCisgICAgRk9SIEVBQ0ggU1RBVEVNRU5UCisgICAg RVhFQ1VURSBQUk9DRURVUkUgYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCdzYWxlc3Blb3BsZScp OworCitDUkVBVEUgVFJJR0dFUiBzYWxlc3Blb3BsZV9hZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIK KyAgICBBRlRFUiBJTlNFUlQKKyAgICBPTiBzYWxlc3Blb3BsZQorICAgIEZPUiBFQUNIIFJPVwor ICAgIEVYRUNVVEUgUFJPQ0VEVVJFIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcignc2FsZXNwZW9w bGUnKTsKKworLS0gMiB0cmlnZ2VycyBzaG91bGQgZmlyZSBoZXJlIChyb3cgKyBzdGF0ZW1lbnQp OgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTICgxMCwgJ01heScpOworLS0gMSB0cmln Z2VyIHNob3VsZCBmaXJlIGhlcmUgKHJvdyk6CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZTEwXzIw IFZBTFVFUyAoMTksICdJdmFub3YnKTsKKworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgTUVSR0Ug UEFSVElUSU9OUyAoc2FsZXNwZW9wbGUxMF8yMCwgc2FsZXNwZW9wbGUyMF8zMCwgc2FsZXNwZW9w bGUzMF80MCkgSU5UTyBzYWxlc3Blb3BsZTEwXzQwOworCistLSAyIHRyaWdnZXJzIHNob3VsZCBm aXJlIGhlcmUgKHJvdyArIHN0YXRlbWVudCk6CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxV RVMgKDIwLCAnU21pcm5vZmYnKTsKKy0tIDEgdHJpZ2dlciBzaG91bGQgZmlyZSBoZXJlIChyb3cp OgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUxMF80MCBWQUxVRVMgKDMwLCAnRm9yZCcpOworCitT RUxFQ1QgKiBGUk9NIHNhbGVzcGVvcGxlMDFfMTA7CitTRUxFQ1QgKiBGUk9NIHNhbGVzcGVvcGxl MTBfNDA7CisKK0RST1AgVEFCTEUgc2FsZXNwZW9wbGU7CitEUk9QIEZVTkNUSU9OIGFmdGVyX2lu c2VydF9yb3dfdHJpZ2dlcigpOworCistLQorLS0gVGVzdDogbWVyZ2UgcGFydGl0aW9ucyB3aXRo IGRlbGV0ZWQgY29sdW1ucworLS0KK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZShzYWxlc3BlcnNv bl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJ VElPTiBCWSBSQU5HRSAoc2FsZXNwZXJzb25faWQpOworCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9w bGUwMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAo MTApOworLS0gQ3JlYXRlIHBhcnRpdGlvbnMgd2l0aCBzb21lIGRlbGV0ZWQgY29sdW1uczoKK0NS RUFURSBUQUJMRSBzYWxlc3Blb3BsZTEwXzIwKGQxIFZBUkNIQVIoMzApLCBzYWxlc3BlcnNvbl9p ZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpOworQ1JFQVRF IFRBQkxFIHNhbGVzcGVvcGxlMjBfMzAoc2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBk MiBJTlQsICBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKTsKK0NSRUFURSBUQUJMRSBzYWxl c3Blb3BsZTMwXzQwKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwgZDMgREFURSwgc2Fs ZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7CisKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlMTBf MjAgVkFMVUVTICgnZHVtbXkgdmFsdWUgMScsIDE5LCAnSXZhbm92Jyk7CitJTlNFUlQgSU5UTyBz YWxlc3Blb3BsZTIwXzMwIFZBTFVFUyAoMjAsIDEwMSwgJ1NtaXJub2ZmJyk7CitJTlNFUlQgSU5U TyBzYWxlc3Blb3BsZTMwXzQwIFZBTFVFUyAoMzEsIG5vdygpLCAnUG9wb3YnKTsKKworQUxURVIg VEFCTEUgc2FsZXNwZW9wbGUxMF8yMCBEUk9QIENPTFVNTiBkMTsKK0FMVEVSIFRBQkxFIHNhbGVz cGVvcGxlMjBfMzAgRFJPUCBDT0xVTU4gZDI7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZTMwXzQw IERST1AgQ09MVU1OIGQzOworCitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBBVFRBQ0ggUEFSVElU SU9OIHNhbGVzcGVvcGxlMTBfMjAgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKTsKK0FMVEVS IFRBQkxFIHNhbGVzcGVvcGxlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNwZW9wbGUyMF8zMCBGT1Ig VkFMVUVTIEZST00gKDIwKSBUTyAoMzApOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgQVRUQUNI IFBBUlRJVElPTiBzYWxlc3Blb3BsZTMwXzQwIEZPUiBWQUxVRVMgRlJPTSAoMzApIFRPICg0MCk7 CisKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUworICAoMSwgJ1BvaXJvdCcpLAorICAo MTAsICdNYXknKSwKKyAgKDMwLCAnRm9yZCcpOworCitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBN RVJHRSBQQVJUSVRJT05TIChzYWxlc3Blb3BsZTEwXzIwLCBzYWxlc3Blb3BsZTIwXzMwLCBzYWxl c3Blb3BsZTMwXzQwKSBJTlRPIHNhbGVzcGVvcGxlMTBfNDA7CisKK3NlbGVjdCAqIGZyb20gc2Fs ZXNwZW9wbGU7CitzZWxlY3QgKiBmcm9tIHNhbGVzcGVvcGxlMDFfMTA7CitzZWxlY3QgKiBmcm9t IHNhbGVzcGVvcGxlMTBfNDA7CisKK0RST1AgVEFCTEUgc2FsZXNwZW9wbGU7CisKKy0tCistLSBU ZXN0OiBtZXJnZSBzdWItcGFydGl0aW9ucworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAo c2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19h bW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0 ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2Ug Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRF IFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxl c19tYXIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyk7CisKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIy IChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVz X2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19k YXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyXzAxXzEwIFBBUlRJVElPTiBPRiBzYWxl c19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDQtMTAn KTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyXzEwXzIwIFBBUlRJVElPTiBPRiBzYWxlc19h cHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMTAnKSBUTyAoJzIwMjItMDQtMjAnKTsK K0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyXzIwXzMwIFBBUlRJVElPTiBPRiBzYWxlc19hcHIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMjAnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0FM VEVSIFRBQkxFIHNhbGVzX3JhbmdlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CisKK0NSRUFURSBU QUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CisKK0NS RUFURSBJTkRFWCBzYWxlc19yYW5nZV9zYWxlc19kYXRlX2lkeCBPTiBzYWxlc19yYW5nZSBVU0lO RyBidHJlZSAoc2FsZXNfZGF0ZSk7CisKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUwor ICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2Zm JywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0w NC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAg J0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAs ICAnMjAyMi0wMi0xMScpLAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4Jyks CisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVy JywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIy LTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEy LCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3 NywgICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQn KTsKKworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX2FwcjIwMjIgT1JE RVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9p ZDsKKworQUxURVIgVEFCTEUgc2FsZXNfYXByMjAyMiBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19h cHIyMDIyXzAxXzEwLCBzYWxlc19hcHIyMDIyXzEwXzIwLCBzYWxlc19hcHIyMDIyXzIwXzMwKSBJ TlRPIHNhbGVzX2Fwcl9hbGw7CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBz YWxlc19hcHIyMDIyIE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJD Iiwgc2FsZXNwZXJzb25faWQ7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CisKKy0tCistLSBC WSBMSVNUIHBhcnRpdGlvbmluZworLS0KKworLS0KKy0tIFRlc3Q6IHNwZWNpZmljIGVycm9ycyBm b3IgQlkgTElTVCBwYXJ0aXRpb25pbmcKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfbGlzdAorKHNh bGVzcGVyc29uX2lkIElOVCBHRU5FUkFURUQgQUxXQVlTIEFTIElERU5USVRZLAorIHNhbGVzcGVy c29uX25hbWUgVkFSQ0hBUigzMCksCisgc2FsZXNfc3RhdGUgVkFSQ0hBUigyMCksCisgc2FsZXNf YW1vdW50IElOVCwKKyBzYWxlc19kYXRlIERBVEUpCitQQVJUSVRJT04gQlkgTElTVCAoc2FsZXNf c3RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX25vcmQgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3Qg Rk9SIFZBTFVFUyBJTiAoJ09zbG8nLCAnU3QuIFBldGVyc2J1cmcnLCAnSGVsc2lua2knKTsKK0NS RUFURSBUQUJMRSBzYWxlc193ZXN0IFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMg SU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf ZWFzdCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0Rl bGhpJywgJ1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfY2VudHJhbCBQQVJUSVRJ T04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2 Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IERF RkFVTFQ7CisKKworQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QyIChMSUtFIHNhbGVzX2xpc3QpIFBB UlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZDIg UEFSVElUSU9OIE9GIHNhbGVzX2xpc3QyIEZPUiBWQUxVRVMgSU4gKCdPc2xvJywgJ1N0LiBQZXRl cnNidXJnJywgJ0hlbHNpbmtpJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzMiBQQVJUSVRJ T04gT0Ygc2FsZXNfbGlzdDIgREVGQVVMVDsKKworCitDUkVBVEUgVEFCTEUgc2FsZXNfZXh0ZXJu YWwgKExJS0Ugc2FsZXNfbGlzdCk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZXh0ZXJuYWwyICh2Y2gg VkFSQ0hBUig1KSk7CisKKy0tIEVSUk9SOiAgInNhbGVzX2V4dGVybmFsIiBpcyBub3QgYSBwYXJ0 aXRpb24gb2YgcGFydGl0aW9uZWQgdGFibGUgInNhbGVzX2xpc3QiCitBTFRFUiBUQUJMRSBzYWxl c19saXN0IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX3dlc3QsIHNhbGVzX2Vhc3QsIHNhbGVzX2V4 dGVybmFsKSBJTlRPIHNhbGVzX2FsbDsKKy0tIEVSUk9SOiAgInNhbGVzX2V4dGVybmFsMiIgaXMg bm90IGEgcGFydGl0aW9uIG9mIHBhcnRpdGlvbmVkIHRhYmxlICJzYWxlc19saXN0IgorQUxURVIg VEFCTEUgc2FsZXNfbGlzdCBNRVJHRSBQQVJUSVRJT05TIChzYWxlc193ZXN0LCBzYWxlc19lYXN0 LCBzYWxlc19leHRlcm5hbDIpIElOVE8gc2FsZXNfYWxsOworLS0gRVJST1I6ICByZWxhdGlvbiAi c2FsZXNfbm9yZDIiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiByZWxhdGlvbiAic2FsZXNfbGlzdCIK K0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfd2VzdCwgc2Fs ZXNfbm9yZDIsIHNhbGVzX2Vhc3QpIElOVE8gc2FsZXNfYWxsOworCitEUk9QIFRBQkxFIHNhbGVz X2V4dGVybmFsMjsKK0RST1AgVEFCTEUgc2FsZXNfZXh0ZXJuYWw7CitEUk9QIFRBQkxFIHNhbGVz X2xpc3QyOworRFJPUCBUQUJMRSBzYWxlc19saXN0OworCistLQorLS0gVGVzdDogQlkgTElTVCBw YXJ0aXRpb25pbmcsIE1FUkdFIFBBUlRJVElPTlMgd2l0aCBkYXRhCistLQorQ1JFQVRFIFRBQkxF IHNhbGVzX2xpc3QKKyhzYWxlc3BlcnNvbl9pZCBJTlQgR0VORVJBVEVEIEFMV0FZUyBBUyBJREVO VElUWSwKKyBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLAorIHNhbGVzX3N0YXRlIFZBUkNI QVIoMjApLAorIHNhbGVzX2Ftb3VudCBJTlQsCisgc2FsZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9O IEJZIExJU1QgKHNhbGVzX3N0YXRlKTsKKworQ1JFQVRFIElOREVYIHNhbGVzX2xpc3Rfc2FsZXNw ZXJzb25fbmFtZV9pZHggT04gc2FsZXNfbGlzdCBVU0lORyBidHJlZSAoc2FsZXNwZXJzb25fbmFt ZSk7CitDUkVBVEUgSU5ERVggc2FsZXNfbGlzdF9zYWxlc19zdGF0ZV9pZHggT04gc2FsZXNfbGlz dCBVU0lORyBidHJlZSAoc2FsZXNfc3RhdGUpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZCBQ QVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnT3NsbycsICdTdC4gUGV0ZXJz YnVyZycsICdIZWxzaW5raScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX3dlc3QgUEFSVElUSU9OIE9G IHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQn KTsKK0NSRUFURSBUQUJMRSBzYWxlc19lYXN0IFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBW QUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKTsKK0NSRUFURSBUQUJM RSBzYWxlc19jZW50cmFsIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdX YXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFS VElUSU9OIE9GIHNhbGVzX2xpc3QgREVGQVVMVDsKKworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAo c2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkg VkFMVUVTCisgICgnVHJ1bXAnLCAgICAnQmVqaW5nJywgICAgICAgICAxMDAwLCAnMjAyMi0wMy0w MScpLAorICAoJ1NtaXJub2ZmJywgJ05ldyBZb3JrJywgICAgICAgIDUwMCwgJzIwMjItMDMtMDMn KSwKKyAgKCdGb3JkJywgICAgICdTdC4gUGV0ZXJzYnVyZycsIDIwMDAsICcyMDIyLTAzLTA1Jyks CisgICgnSXZhbm92JywgICAnV2Fyc2F3JywgICAgICAgICAgNzUwLCAnMjAyMi0wMy0wNCcpLAor ICAoJ0RlZXYnLCAgICAgJ0xpc2JvbicsICAgICAgICAgIDI1MCwgJzIwMjItMDMtMDcnKSwKKyAg KCdQb2lyb3QnLCAgICdCZXJsaW4nLCAgICAgICAgIDEwMDAsICcyMDIyLTAzLTAxJyksCisgICgn TWF5JywgICAgICAnSGVsc2lua2knLCAgICAgICAxMjAwLCAnMjAyMi0wMy0wNicpLAorICAoJ0xp JywgICAgICAgJ1ZsYWRpdm9zdG9rJywgICAgMTE1MCwgJzIwMjItMDMtMDknKSwKKyAgKCdNYXkn LCAgICAgICdIZWxzaW5raScsICAgICAgIDEyMDAsICcyMDIyLTAzLTExJyksCisgICgnSGFsZGVy JywgICAnT3NsbycsICAgICAgICAgICAgODAwLCAnMjAyMi0wMy0wMicpLAorICAoJ011bGxlcics ICAgJ01hZHJpZCcsICAgICAgICAgIDY1MCwgJzIwMjItMDMtMDUnKSwKKyAgKCdTbWl0aCcsICAg ICdLeWl2JywgICAgICAgICAgICAzNTAsICcyMDIyLTAzLTEwJyksCisgICgnR2FuZGknLCAgICAn V2Fyc2F3JywgICAgICAgICAgMTUwLCAnMjAyMi0wMy0wOCcpLAorICAoJ1BsYXRvJywgICAgJ0xp c2JvbicsICAgICAgICAgIDk1MCwgJzIwMjItMDMtMDUnKTsKKworLS0gc2hvdyBwYXJ0aXRpb25z IHdpdGggY29uZGl0aW9uczoKK0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9pbmZvKCd7c2FsZXNfbGlz dH0nKTsKKworQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBNRVJHRSBQQVJUSVRJT05TIChzYWxlc193 ZXN0LCBzYWxlc19lYXN0LCBzYWxlc19jZW50cmFsKSBJTlRPIHNhbGVzX2FsbDsKKworLS0gc2hv dyBwYXJ0aXRpb25zIHdpdGggY29uZGl0aW9uczoKK0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9pbmZv KCd7c2FsZXNfbGlzdH0nKTsKKworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNh bGVzX2xpc3QgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBz YWxlc3BlcnNvbl9pZDsKKworLS0gVXNlIGluZGV4c2NhbiBmb3IgdGVzdGluZyBpbmRleGVzIGFm dGVyIG1lcmdpbmcgcGFydGl0aW9ucworU0VUIGVuYWJsZV9zZXFzY2FuID0gT0ZGOworCitFWFBM QUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gc2FsZXNfYWxsIFdIRVJFIHNhbGVzX3N0YXRl ID0gJ1dhcnNhdyc7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FsbCBXSEVSRSBzYWxlc19zdGF0ZSA9 ICdXYXJzYXcnOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3Qg V0hFUkUgc2FsZXNfc3RhdGUgPSAnV2Fyc2F3JzsKK1NFTEVDVCAqIEZST00gc2FsZXNfbGlzdCBX SEVSRSBzYWxlc19zdGF0ZSA9ICdXYXJzYXcnOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1Qg KiBGUk9NIHNhbGVzX2xpc3QgV0hFUkUgc2FsZXNwZXJzb25fbmFtZSA9ICdJdmFub3YnOworU0VM RUNUICogRlJPTSBzYWxlc19saXN0IFdIRVJFIHNhbGVzcGVyc29uX25hbWUgPSAnSXZhbm92JzsK KworUkVTRVQgZW5hYmxlX3NlcXNjYW47CisKK0RST1AgVEFCTEUgc2FsZXNfbGlzdDsKKworLS0K Ky0tIFRyeSB0byBNRVJHRSBwYXJ0aXRpb25zIG9mIGFub3RoZXIgdGFibGUuCistLQorQ1JFQVRF IFRBQkxFIHQxIChpIGludCwgYSBpbnQsIGIgaW50LCBjIGludCkgUEFSVElUSU9OIEJZIFJBTkdF IChhLCBiKTsKK0NSRUFURSBUQUJMRSB0MXAxIFBBUlRJVElPTiBPRiB0MSBGT1IgVkFMVUVTIEZS T00gKDEsIDEpIFRPICgxLCAyKTsKK0NSRUFURSBUQUJMRSB0MiAoaSBpbnQsIHQgdGV4dCkgUEFS VElUSU9OIEJZIFJBTkdFICh0KTsKK0NSRUFURSBUQUJMRSB0MnBhIFBBUlRJVElPTiBPRiB0MiBG T1IgVkFMVUVTIEZST00gKCdBJykgVE8gKCdDJyk7CitDUkVBVEUgVEFCTEUgdDMgKGkgaW50LCB0 IHRleHQpOworCistLSBFUlJPUjogIHJlbGF0aW9uICJ0MXAxIiBpcyBub3QgYSBwYXJ0aXRpb24g b2YgcmVsYXRpb24gInQyIgorQUxURVIgVEFCTEUgdDIgTUVSR0UgUEFSVElUSU9OUyAodDFwMSwg dDJwYSkgSU5UTyB0MnA7CistLSBFUlJPUjogICJ0MyIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHBh cnRpdGlvbmVkIHRhYmxlICJ0MiIKK0FMVEVSIFRBQkxFIHQyIE1FUkdFIFBBUlRJVElPTlMgKHQy cGEsIHQzKSBJTlRPIHQycDsKKworRFJPUCBUQUJMRSB0MzsKK0RST1AgVEFCTEUgdDI7CitEUk9Q IFRBQkxFIHQxOworCisKKy0tCistLSBDaGVjayB0aGUgcGFydGl0aW9uIGluZGV4IG5hbWUgaWYg dGhlIHBhcnRpdGlvbiBuYW1lIGlzIHRoZSBzYW1lIGFzIG9uZQorLS0gb2YgdGhlIG1lcmdlZCBw YXJ0aXRpb25zLgorLS0KK0NSRUFURSBUQUJMRSB0IChpIGludCwgUFJJTUFSWSBLRVkoaSkpIFBB UlRJVElPTiBCWSBSQU5HRSAoaSk7CisKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9G IHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJ VElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworCitDUkVBVEUgSU5ERVggdGlk eCBPTiB0KGkpOworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8xXzIsIHRwXzBf MSkgSU5UTyB0cF8xXzI7CisKKy0tIEluZGV4bmFtZSB2YWx1ZXMgc2hvdWxkIGJlICd0cF8xXzJf cGtleScgYW5kICd0cF8xXzJfaV9pZHgnLgorXGQrIHRwXzFfMgorCitEUk9QIFRBQkxFIHQ7CisK Ky0tCistLSBUcnkgdG8gTUVSR0UgcGFydGl0aW9ucyBvZiB0ZW1wb3JhcnkgdGFibGUuCistLQor QkVHSU47CitTSE9XIHNlYXJjaF9wYXRoOworQ1JFQVRFIFRFTVAgVEFCTEUgdCAoaSBpbnQpIFBB UlRJVElPTiBCWSBSQU5HRSAoaSkgT04gQ09NTUlUIERST1A7CitDUkVBVEUgVEVNUCBUQUJMRSB0 cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUg VEVNUCBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAo Mik7CitDUkVBVEUgVEVNUCBUQUJMRSB0cF8yXzMgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBG Uk9NICgyKSBUTyAoMyk7CitDUkVBVEUgVEVNUCBUQUJMRSB0cF8zXzQgUEFSVElUSU9OIE9GIHQg Rk9SIFZBTFVFUyBGUk9NICgzKSBUTyAoNCk7CisKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElU SU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gcGdfdGVtcC50cF8wXzI7CitBTFRFUiBUQUJMRSB0 IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMiwgdHBfMl8zKSBJTlRPIHBnX3RlbXAudHBfMF8zOwor CistLSBQYXJ0aXRpb24gc2hvdWxkIGJlIHRlbXBvcmFyeS4KK0VYRUNVVEUgZ2V0X3BhcnRpdGlv bl9pbmZvKCd7dH0nKTsKKy0tIEVSUk9SOiAgY2Fubm90IGNyZWF0ZSBhIHBlcm1hbmVudCByZWxh dGlvbiBhcyBwYXJ0aXRpb24gb2YgdGVtcG9yYXJ5IHJlbGF0aW9uICJ0IgorQUxURVIgVEFCTEUg dCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzMsIHRwXzNfNCkgSU5UTyB0cF8wXzQ7CitST0xMQkFD SzsKKworLS0KKy0tIFRyeSBtaXhpbmcgcGVybWFuZW50IGFuZCB0ZW1wb3JhcnkgcGFydGl0aW9u cy4KKy0tCitCRUdJTjsKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1h LCBwZ190ZW1wLCBwdWJsaWM7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBS QU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMg RlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1Ig VkFMVUVTIEZST00gKDEpIFRPICgyKTsKKworU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2Ns YXNzLCBjLnJlbHBlcnNpc3RlbmNlIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjIFdIRVJFIGMu b2lkID0gJ3QnOjpyZWdjbGFzczsKK0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9pbmZvKCd7dH0nKTsK K1NBVkVQT0lOVCBzOworCitTRVQgc2VhcmNoX3BhdGggPSBwZ190ZW1wLCBwYXJ0aXRpb25zX21l cmdlX3NjaGVtYSwgcHVibGljOworLS0gQ2FuJ3QgbWVyZ2UgcGVyc2lzdGVudCBwYXJ0aXRpb25z IGludG8gYSB0ZW1wb3JhcnkgcGFydGl0aW9uCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElP TlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKKworUk9MTEJBQ0sgVE8gU0FWRVBPSU5U IHM7CitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcHVibGljOwor LS0gQ2FuJ3QgbWVyZ2UgcGVyc2lzdGVudCBwYXJ0aXRpb25zIGludG8gYSB0ZW1wb3JhcnkgcGFy dGl0aW9uCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJ TlRPIHBnX3RlbXAudHBfMF8yOworUk9MTEJBQ0s7CisKK0JFR0lOOworU0VUIHNlYXJjaF9wYXRo ID0gcGdfdGVtcCwgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKK0NSRUFURSBUQUJM RSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzEg UEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUg dHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworCitTRUxF Q1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIGMucmVscGVyc2lzdGVuY2UgRlJPTSBwZ19j YXRhbG9nLnBnX2NsYXNzIGMgV0hFUkUgYy5vaWQgPSAndCc6OnJlZ2NsYXNzOworRVhFQ1VURSBn ZXRfcGFydGl0aW9uX2luZm8oJ3t0fScpOworCitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25z X21lcmdlX3NjaGVtYSwgcGdfdGVtcCwgcHVibGljOworCistLSBDYW4ndCBtZXJnZSB0ZW1wb3Jh cnkgcGFydGl0aW9ucyBpbnRvIGEgcGVyc2lzdGVudCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHQg TUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworUk9MTEJBQ0s7 CisKK0RFQUxMT0NBVEUgZ2V0X3BhcnRpdGlvbl9pbmZvOworCistLSBDaGVjayB0aGUgbmV3IHBh cnRpdGlvbiBpbmhlcml0cyBwYXJlbnQncyB0YWJsZXNwYWNlCitTRVQgc2VhcmNoX3BhdGggPSBw YXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcHVibGljOworQ1JFQVRFIFRBQkxFIHQgKGkgaW50IFBS SU1BUlkgS0VZIFVTSU5HIElOREVYIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkKKyAgUEFS VElUSU9OIEJZIFJBTkdFIChpKSBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2U7CitDUkVBVEUg VEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOwor Q1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRP ICgyKTsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElO VE8gdHBfMF8yOworU0VMRUNUIHRhYmxlbmFtZSwgdGFibGVzcGFjZSBGUk9NIHBnX3RhYmxlcwor ICBXSEVSRSB0YWJsZW5hbWUgSU4gKCd0JywgJ3RwXzBfMicpIEFORCBzY2hlbWFuYW1lID0gJ3Bh cnRpdGlvbnNfbWVyZ2Vfc2NoZW1hJworICBPUkRFUiBCWSB0YWJsZW5hbWUgQ09MTEFURSAiQyIs IHRhYmxlc3BhY2UgQ09MTEFURSAiQyI7CitTRUxFQ1QgdGFibGVuYW1lLCBpbmRleG5hbWUsIHRh Ymxlc3BhY2UgRlJPTSBwZ19pbmRleGVzCisgIFdIRVJFIHRhYmxlbmFtZSBJTiAoJ3QnLCAndHBf MF8yJykgQU5EIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uc19tZXJnZV9zY2hlbWEnCisgIE9SREVS IEJZIHRhYmxlbmFtZSBDT0xMQVRFICJDIiwgaW5kZXhuYW1lIENPTExBVEUgIkMiLCB0YWJsZXNw YWNlIENPTExBVEUgIkMiOworRFJPUCBUQUJMRSB0OworCistLSBDaGVjayB0aGUgbmV3IHBhcnRp dGlvbiBpbmhlcml0cyBwYXJlbnQncyB0YWJsZSBhY2Nlc3MgbWV0aG9kCitTRVQgc2VhcmNoX3Bh dGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcHVibGljOworQ1JFQVRFIEFDQ0VTUyBNRVRI T0QgcGFydGl0aW9uc19tZXJnZV9oZWFwIFRZUEUgVEFCTEUgSEFORExFUiBoZWFwX3RhYmxlYW1f aGFuZGxlcjsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKSBV U0lORyBwYXJ0aXRpb25zX21lcmdlX2hlYXA7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElP TiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQ QVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKK0FMVEVSIFRBQkxFIHQg TUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworU0VMRUNUIGMu cmVsbmFtZSwgYS5hbW5hbWUKK0ZST00gcGdfY2xhc3MgYyBKT0lOIHBnX2FtIGEgT04gYy5yZWxh bSA9IGEub2lkCitXSEVSRSBjLm9pZCBJTiAoJ3QnOjpyZWdjbGFzcywgJ3RwXzBfMic6OnJlZ2Ns YXNzKQorT1JERVIgQlkgYy5yZWxuYW1lIENPTExBVEUgIkMiOworRFJPUCBUQUJMRSB0OworRFJP UCBBQ0NFU1MgTUVUSE9EIHBhcnRpdGlvbnNfbWVyZ2VfaGVhcDsKKworLS0gVGVzdCBwZXJtaXNz aW9uIGNoZWNrcy4gIFRoZSB1c2VyIG5lZWRzIHRvIG93biB0aGUgcGFyZW50IHRhYmxlIGFuZCBh bGwKKy0tIHRoZSBtZXJnaW5nIHBhcnRpdGlvbnMgdG8gZG8gdGhlIG1lcmdlLgorQ1JFQVRFIFJP TEUgcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYWxpY2U7CitDUkVBVEUgUk9MRSByZWdyZXNzX3Bh cnRpdGlvbl9tZXJnZV9ib2I7CitHUkFOVCBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vf c2NoZW1hIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2FsaWNlOworR1JBTlQgQUxMIE9OIFND SEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSBUTyByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9i b2I7CisKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2Vf YWxpY2U7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitD UkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8g KDEpOworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00g KDEpIFRPICgyKTsKKworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlv bl9tZXJnZV9ib2I7CistLSBFUlJPUjogIG11c3QgYmUgb3duZXIgb2YgdGFibGUgdAorQUxURVIg VEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CitS RVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CisKK0FMVEVSIFRBQkxFIHQgT1dORVIgVE8gcmVn cmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdy ZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CistLSBFUlJPUjogIG11c3QgYmUgb3duZXIgb2YgdGFi bGUgdHBfMF8xCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8y KSBJTlRPIHRwXzBfMjsKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKKworQUxURVIgVEFC TEUgdHBfMF8xIE9XTkVSIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK1NFVCBTRVNT SU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworLS0gRVJST1I6 ICBtdXN0IGJlIG93bmVyIG9mIHRhYmxlIHRwXzFfMgorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJU SVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CitSRVNFVCBTRVNTSU9OIEFVVEhP UklaQVRJT047CisKK0FMVEVSIFRBQkxFIHRwXzFfMiBPV05FUiBUTyByZWdyZXNzX3BhcnRpdGlv bl9tZXJnZV9ib2I7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9u X21lcmdlX2JvYjsKKy0tIE9rOgorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8w XzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CisK K0RST1AgVEFCTEUgdDsKKworLS0gVGVzdDogd2UgY2FuJ3QgbWVyZ2UgcGFydGl0aW9ucyB3aXRo IGRpZmZlcmVudCBvd25lcnMKK0NSRUFURSBUQUJMRSB0cF8wXzEoaSBpbnQpOworQUxURVIgVEFC TEUgdHBfMF8xIE9XTkVSIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2FsaWNlOworQ1JFQVRF IFRBQkxFIHRwXzFfMihpIGludCk7CitBTFRFUiBUQUJMRSB0cF8xXzIgT1dORVIgVE8gcmVncmVz c19wYXJ0aXRpb25fbWVyZ2VfYm9iOworCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElP TiBCWSBSQU5HRSAoaSk7CisKK0FMVEVSIFRBQkxFIHQgQVRUQUNIIFBBUlRJVElPTiB0cF8wXzEg Rk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitBTFRFUiBUQUJMRSB0IEFUVEFDSCBQQVJUSVRJ T04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworCistLSBPd25lciBpcyAncmVn cmVzc19wYXJ0aXRpb25fbWVyZ2VfYWxpY2UnOgorXGR0IHRwXzBfMQorLS0gT3duZXIgaXMgJ3Jl Z3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYic6CitcZHQgdHBfMV8yCisKKy0tIEVSUk9SOiAgcGFy dGl0aW9ucyBiZWluZyBtZXJnZWQgaGF2ZSBkaWZmZXJlbnQgb3duZXJzCitBTFRFUiBUQUJMRSB0 IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKKworRFJPUCBU QUJMRSB0OworUkVWT0tFIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEgRlJP TSByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9hbGljZTsKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBh cnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIEZST00gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOwor RFJPUCBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2FsaWNlOworRFJPUCBST0xFIHJlZ3Jl c3NfcGFydGl0aW9uX21lcmdlX2JvYjsKKworCistLSBUZXN0IGZvciBoYXNoIHBhcnRpdGlvbmVk IHRhYmxlCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBIQVNIKGkpOworQ1JF QVRFIFRBQkxFIHRwMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgMiwg UkVNQUlOREVSIDApOworQ1JFQVRFIFRBQkxFIHRwMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVT IFdJVEggKE1PRFVMVVMgMiwgUkVNQUlOREVSIDEpOworCistLSBFUlJPUjogIHBhcnRpdGlvbiBv ZiBoYXNoLXBhcnRpdGlvbmVkIHRhYmxlIGNhbm5vdCBiZSBtZXJnZWQKK0FMVEVSIFRBQkxFIHQg TUVSR0UgUEFSVElUSU9OUyAodHAxLCB0cDIpIElOVE8gdHAzOworCistLSBFUlJPUjogIGxpc3Qg b2YgcGFydGl0aW9ucyB0byBiZSBtZXJnZWQgc2hvdWxkIGluY2x1ZGUgYXQgbGVhc3QgdHdvIHBh cnRpdGlvbnMKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHAxKSBJTlRPIHRwMzsK KworRFJPUCBUQUJMRSB0OworCisKKy0tIFRlc3QgZm9yIG1lcmdlZCBwYXJ0aXRpb24gcHJvcGVy dGllczoKKy0tICogU1RBVElTVElDUyBpcyBlbXB0eQorLS0gKiBDT01NRU5UIGlzIGVtcHR5Cist LSAqIERFRkFVTFRTIGFyZSB0aGUgc2FtZSBhcyBERUZBVUxUUyBmb3IgcGFydGl0aW9uZWQgdGFi bGUKKy0tICogU1RPUkFHRSBpcyB0aGUgc2FtZSBhcyBTVE9SQUdFIGZvciBwYXJ0aXRpb25lZCB0 YWJsZQorLS0gKiBHRU5FUkFURUQgYW5kIENPTlNUUkFJTlRTIGFyZSB0aGUgc2FtZSBhcyBHRU5F UkFURUQgYW5kIENPTlNUUkFJTlRTIGZvciBwYXJ0aXRpb25lZCB0YWJsZQorLS0gKiBUUklHR0VS UyBhcmUgdGhlIHNhbWUgYXMgVFJJR0dFUlMgZm9yIHBhcnRpdGlvbmVkIHRhYmxlCitcc2V0IEhJ REVfVE9BU1RfQ09NUFJFU1NJT04gZmFsc2UKKworQ1JFQVRFIFRBQkxFIHQKKyhpIGludCBOT1Qg TlVMTCwKKyB0IHRleHQgU1RPUkFHRSBFWFRFTkRFRCBDT01QUkVTU0lPTiBwZ2x6IERFRkFVTFQg J2RlZmF1bHRfdCcsCisgYiBiaWdpbnQsCisgZCBkYXRlIEdFTkVSQVRFRCBBTFdBWVMgYXMgKCcy MDIyLTAxLTAxJykgU1RPUkVEKSBQQVJUSVRJT04gQlkgUkFOR0UgKGFicyhpKSk7CitDT01NRU5U IE9OIENPTFVNTiB0LmkgSVMgJ3QxLmknOworCitDUkVBVEUgVEFCTEUgdHBfMF8xCisoaSBpbnQg Tk9UIE5VTEwsCisgdCB0ZXh0IFNUT1JBR0UgTUFJTiBERUZBVUxUICdkZWZhdWx0X3RwXzBfMScs CisgYiBiaWdpbnQsCisgZCBkYXRlIEdFTkVSQVRFRCBBTFdBWVMgYXMgKCcyMDIyLTAyLTAyJykg U1RPUkVEKTsKK0FMVEVSIFRBQkxFIHQgQVRUQUNIIFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVF UyBGUk9NICgwKSBUTyAoMSk7CitDT01NRU5UIE9OIENPTFVNTiB0cF8wXzEuaSBJUyAndHBfMF8x LmknOworCitDUkVBVEUgVEFCTEUgdHBfMV8yCisoaSBpbnQgTk9UIE5VTEwsCisgdCB0ZXh0IFNU T1JBR0UgTUFJTiBERUZBVUxUICdkZWZhdWx0X3RwXzFfMicsCisgYiBiaWdpbnQsCisgZCBkYXRl IEdFTkVSQVRFRCBBTFdBWVMgYXMgKCcyMDIyLTAzLTAzJykgU1RPUkVEKTsKK0FMVEVSIFRBQkxF IHQgQVRUQUNIIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitD T01NRU5UIE9OIENPTFVNTiB0cF8xXzIuaSBJUyAndHBfMV8yLmknOworCitDUkVBVEUgU1RBVElT VElDUyB0X3N0YXQgKERFUEVOREVOQ0lFUykgb24gaSwgYiBmcm9tIHQ7CitDUkVBVEUgU1RBVElT VElDUyB0cF8wXzFfc3RhdCAoREVQRU5ERU5DSUVTKSBvbiBpLCBiIGZyb20gdHBfMF8xOworQ1JF QVRFIFNUQVRJU1RJQ1MgdHBfMV8yX3N0YXQgKERFUEVOREVOQ0lFUykgb24gaSwgYiBmcm9tIHRw XzFfMjsKKworQUxURVIgVEFCTEUgdCBBREQgQ09OU1RSQUlOVCB0X2JfY2hlY2sgQ0hFQ0sgKGIg PiAwKTsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgdF9iX2NoZWNrMSBDSEVDSyAoYiA+ IDApIE5PVCBFTkZPUkNFRDsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgdF9iX2NoZWNr MiBDSEVDSyAoYiA+IDApIE5PVCBWQUxJRDsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQg dF9iX25uIE5PVCBOVUxMIGIgTk9UIFZBTElEOworCitJTlNFUlQgSU5UTyB0cF8wXzEoaSwgdCwg YikgVkFMVUVTKDAsIERFRkFVTFQsIDEpOworSU5TRVJUIElOVE8gdHBfMV8yKGksIHQsIGIpIFZB TFVFUygxLCBERUZBVUxULCAyKTsKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIHRyaWdnZXJf ZnVuY3Rpb24oKSBSRVRVUk5TIHRyaWdnZXIgTEFOR1VBR0UgJ3BscGdzcWwnIEFTCiskQk9EWSQK K0JFR0lOCisgIFJBSVNFIE5PVElDRSAndHJpZ2dlciglKSBjYWxsZWQ6IGFjdGlvbiA9ICUsIHdo ZW4gPSAlLCBsZXZlbCA9ICUnLCBUR19BUkdWWzBdLCBUR19PUCwgVEdfV0hFTiwgVEdfTEVWRUw7 CisgIFJFVFVSTiBuZXc7CitFTkQ7CiskQk9EWSQ7CisKK0NSRUFURSBUUklHR0VSIHRfYmVmb3Jl X2luc2VydF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5TRVJUIE9OIHQgRk9SIEVBQ0ggUk9XCisgIEVY RUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVuY3Rpb24oJ3QnKTsKK0NSRUFURSBUUklHR0VSIHRw XzBfMV9iZWZvcmVfaW5zZXJ0X3Jvd190cmlnZ2VyIEJFRk9SRSBJTlNFUlQgT04gdHBfMF8xIEZP UiBFQUNIIFJPVworICBFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmN0aW9uKCd0cF8wXzEn KTsKK0NSRUFURSBUUklHR0VSIHRwXzFfMl9iZWZvcmVfaW5zZXJ0X3Jvd190cmlnZ2VyIEJFRk9S RSBJTlNFUlQgT04gdHBfMV8yIEZPUiBFQUNIIFJPVworICBFWEVDVVRFIFBST0NFRFVSRSB0cmln Z2VyX2Z1bmN0aW9uKCd0cF8xXzInKTsKKworXGQrIHRwXzBfMQorQUxURVIgVEFCTEUgdCBNRVJH RSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzE7CitcZCsgdHBfMF8xCisK K0lOU0VSVCBJTlRPIHQoaSwgdCwgYikgVkFMVUVTKDEsIERFRkFVTFQsIDMpOworU0VMRUNUIHRh Ymxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHQgT1JERVIgQlkgYjsKK0RST1AgVEFCTEUgdDsKK0RS T1AgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jdGlvbigpOworXHNldCBISURFX1RPQVNUX0NPTVBSRVNT SU9OIHRydWUKKworCistLSBUZXN0IE1FUkdFIFBBUlRJVElPTlMgd2l0aCBub3QgdmFsaWQgZm9y ZWlnbiBrZXkgY29uc3RyYWludAorQ1JFQVRFIFRBQkxFIHQgKGkgSU5UIFBSSU1BUlkgS0VZKSBQ QVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0Yg dCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElU SU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitJTlNFUlQgSU5UTyB0IFZBTFVF UyAoMCksICgxKTsKK0NSRUFURSBUQUJMRSB0X2ZrIChpIElOVCk7CitJTlNFUlQgSU5UTyB0X2Zr IFZBTFVFUyAoMSksICgyKTsKK0FMVEVSIFRBQkxFIHRfZmsgQUREIENPTlNUUkFJTlQgdF9ma19p X2ZrZXkgRk9SRUlHTiBLRVkgKGkpIFJFRkVSRU5DRVMgdCBOT1QgVkFMSUQ7CitBTFRFUiBUQUJM RSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKKworLS0g U2hvdWxkIGJlIE5PVCBWQUxJRCBGT1JFSUdOIEtFWQorXGQgdHBfMF8yCistLSBFUlJPUjogIGlu c2VydCBvciB1cGRhdGUgb24gdGFibGUgInRfZmsiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0 cmFpbnQgInRfZmtfaV9ma2V5IgorQUxURVIgVEFCTEUgdF9mayBWQUxJREFURSBDT05TVFJBSU5U IHRfZmtfaV9ma2V5OworCitEUk9QIFRBQkxFIHRfZms7CitEUk9QIFRBQkxFIHQ7CisKKy0tIFRl c3QgTUVSR0UgUEFSVElUSU9OUyB3aXRoIG5vdCBlbmZvcmNlZCBmb3JlaWduIGtleSBjb25zdHJh aW50CitDUkVBVEUgVEFCTEUgdCAoaSBJTlQgUFJJTUFSWSBLRVkpIFBBUlRJVElPTiBCWSBSQU5H RSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJP TSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFM VUVTIEZST00gKDEpIFRPICgyKTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgwKSwgKDEpOworQ1JF QVRFIFRBQkxFIHRfZmsgKGkgSU5UKTsKK0lOU0VSVCBJTlRPIHRfZmsgVkFMVUVTICgxKSwgKDIp OworCitBTFRFUiBUQUJMRSB0X2ZrIEFERCBDT05TVFJBSU5UIHRfZmtfaV9ma2V5IEZPUkVJR04g S0VZIChpKSBSRUZFUkVOQ0VTIHQgTk9UIEVORk9SQ0VEOworQUxURVIgVEFCTEUgdCBNRVJHRSBQ QVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CisKKy0tIFNob3VsZCBiZSBO T1QgRU5GT1JDRUQgRk9SRUlHTiBLRVkKK1xkIHRwXzBfMgorLS0gRVJST1I6ICBpbnNlcnQgb3Ig dXBkYXRlIG9uIHRhYmxlICJ0X2ZrIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0 X2ZrX2lfZmtleSIKK0FMVEVSIFRBQkxFIHRfZmsgQUxURVIgQ09OU1RSQUlOVCB0X2ZrX2lfZmtl eSBFTkZPUkNFRDsKKworRFJPUCBUQUJMRSB0X2ZrOworRFJPUCBUQUJMRSB0OworCisKKy0tIFRl c3QgZm9yIHJlY29tcHV0YXRpb24gb2Ygc3RvcmVkIGdlbmVyYXRlZCBjb2x1bW5zLgorQ1JFQVRF IFRBQkxFIHQgKGkgaW50LCB0YWJfaWQgaW50IGdlbmVyYXRlZCBhbHdheXMgYXMgKHRhYmxlb2lk KSBzdG9yZWQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBB UlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRw XzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKK0FMVEVSIFRB QkxFIHQgQUREIENPTlNUUkFJTlQgY2MgQ0hFQ0sodGFibGVvaWQgPD4gMTIzNDU2Nzg5KTsKK0lO U0VSVCBJTlRPIHQgVkFMVUVTICgwKSwgKDEpOworCistLSBTaG91bGQgYmUgMCBiZWNhdXNlIHBh cnRpdGlvbiBpZGVudGlmaWVyIGZvciByb3cgd2l0aCBpPTAgaXMgZGlmZmVyZW50IGZyb20KKy0t IHBhcnRpdGlvbiBpZGVudGlmaWVyIGZvciByb3cgd2l0aCBpPTEuCitTRUxFQ1QgY291bnQoKikg RlJPTSB0IFdIRVJFIGkgPSAwIEFORCB0YWJfaWQgSU4gKFNFTEVDVCB0YWJfaWQgRlJPTSB0IFdI RVJFIGkgPSAxKTsKKworLS0gInRhYl9pZCIgY29sdW1uIChzdG9yZWQgZ2VuZXJhdGVkIGNvbHVt bikgd2l0aCAidGFibGVvaWQiIGF0dHJpYnV0ZSByZXF1aXJlcworLS0gcmVjb21wdXRhdGlvbiBo ZXJlLgorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5U TyB0cF8wXzI7CisKKy0tIFNob3VsZCBiZSAxIGJlY2F1c2UgcGFydGl0aW9uIGlkZW50aWZpZXIg Zm9yIHJvdyB3aXRoIGk9MCBpcyB0aGUgc2FtZSBhcworLS0gcGFydGl0aW9uIGlkZW50aWZpZXIg Zm9yIHJvdyB3aXRoIGk9MS4KK1NFTEVDVCBjb3VudCgqKSBGUk9NIHQgV0hFUkUgaSA9IDAgQU5E IHRhYl9pZCBJTiAoU0VMRUNUIHRhYl9pZCBGUk9NIHQgV0hFUkUgaSA9IDEpOworCitEUk9QIFRB QkxFIHQ7CisKKworLS0gVGVzdCBmb3IgZ2VuZXJhdGVkIGNvbHVtbnMgKGRpZmZlcmVudCBvcmRl ciBvZiBjb2x1bW5zIGluIHBhcnRpdGlvbmVkIHRhYmxlCistLSBhbmQgcGFydGl0aW9ucykuCitD UkVBVEUgVEFCTEUgdCAoaSBpbnQsIGcgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGkgKyB0YWJs ZW9pZDo6aW50KSkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8xIChn IGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChpICsgdGFibGVvaWQ6OmludCksIGkgaW50KTsKK0NS RUFURSBUQUJMRSB0cF8yIChnIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChpICsgdGFibGVvaWQ6 OmludCksIGkgaW50KTsKK0FMVEVSIFRBQkxFIHQgQVRUQUNIIFBBUlRJVElPTiB0cF8xIEZPUiBW QUxVRVMgRlJPTSAoLTEpIFRPICgxMCk7CitBTFRFUiBUQUJMRSB0IEFUVEFDSCBQQVJUSVRJT04g dHBfMiBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApOworQUxURVIgVEFCTEUgdCBBREQgQ0hF Q0sgKGcgPiAwKTsKK0FMVEVSIFRBQkxFIHQgQUREIENIRUNLIChpID4gMCk7CitJTlNFUlQgSU5U TyB0IFZBTFVFUyAoNSksICgxNSk7CisKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAo dHBfMSwgdHBfMikgSU5UTyB0cF8xMjsKKworSU5TRVJUIElOVE8gdCBWQUxVRVMgKDE2KTsKKy0t IEVSUk9SOiAgbmV3IHJvdyBmb3IgcmVsYXRpb24gInRwXzEyIiB2aW9sYXRlcyBjaGVjayBjb25z dHJhaW50ICJ0X2lfY2hlY2siCitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoMCk7CistLSBTaG91bGQg YmUgMyByb3dzOiAoNSksICgxNSksICgxNik6CitTRUxFQ1QgaSBGUk9NIHQgT1JERVIgQlkgaTsK Ky0tIFNob3VsZCBiZSAxIGJlY2F1c2UgZm9yIHRoZSBzYW1lIHRhYmxlb2lkICgxNSArIHRhYmxl b2lkKSA9ICg1ICsgdGFibGVvaWQpICsgMTA6CitTRUxFQ1QgY291bnQoKikgRlJPTSB0IFdIRVJF IGkgPSAxNSBBTkQgZyBJTiAoU0VMRUNUIGcgKyAxMCBGUk9NIHQgV0hFUkUgaSA9IDUpOworCitE Uk9QIFRBQkxFIHQ7CisKKworUkVTRVQgc2VhcmNoX3BhdGg7CisKKy0tCitEUk9QIFNDSEVNQSBw YXJ0aXRpb25zX21lcmdlX3NjaGVtYTsKK0RST1AgU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2No ZW1hMjsKLS0gCjIuMzkuNSAoQXBwbGUgR2l0LTE1NCkKCg== --0000000000001d74a30645b1b5b7 Content-Type: application/octet-stream; name="v67-0002-Implement-ALTER-TABLE-.-SPLIT-PARTITION-.-comman.patch" Content-Disposition: attachment; filename="v67-0002-Implement-ALTER-TABLE-.-SPLIT-PARTITION-.-comman.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj1sujqx1 RnJvbSBjY2U5M2NjMmJkNzZjZTI0NDQ5YzUyNjRjYTg0M2ZlYTVjN2JlNGMzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBwb3N0Z3Jl c3FsLm9yZz4KRGF0ZTogVHVlLCA5IERlYyAyMDI1IDE3OjAzOjMwICswMjAwClN1YmplY3Q6IFtQ QVRDSCB2NjcgMi8yXSBJbXBsZW1lbnQgQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTiAu Li4gY29tbWFuZAoKVGhpcyBuZXcgRERMIGNvbW1hbmQgc3BsaXRzIGEgc2luZ2xlIHBhcnRpdGlv biBpbnRvIHNldmVyYWwgcGFydGl0aW9ucy4gIEp1c3QKbGlrZSB0aGUgQUxURVIgVEFCTEUgLi4u IE1FUkdFIFBBUlRJVElPTlMgLi4uIGNvbW1hbmQsIG5ldyBwYXJ0aXRpb25zIGFyZQpjcmVhdGVk IHVzaW5nIHRoZSBjcmVhdGVQYXJ0aXRpb25UYWJsZSgpIGZ1bmN0aW9uIHdpdGggdGhlIHBhcmVu dCBwYXJ0aXRpb24KYXMgdGhlIHRlbXBsYXRlLgoKVGhpcyBjb21taXQgY29tcHJpc2VzIGEgcXVp dGUgbmFpdmUgaW1wbGVtZW50YXRpb24gd2hpY2ggd29ya3MgaW4gYSBzaW5nbGUKcHJvY2VzcyBh bmQgaG9sZHMgdGhlIEFDQ0VTUyBFWENMVVNJVkUgTE9DSyBvbiB0aGUgcGFyZW50IHRhYmxlIGR1 cmluZyBhbGwKdGhlIG9wZXJhdGlvbnMsIGluY2x1ZGluZyB0aGUgdHVwbGUgcm91dGluZy4gIFRo aXMgaXMgd2h5IHRoZSBuZXcgRERMIGNvbW1hbmQKY2FuJ3QgYmUgcmVjb21tZW5kZWQgZm9yIGxh cmdlLCBwYXJ0aXRpb25lZCB0YWJsZXMgdW5kZXIgaGlnaCBsb2FkLiAgSG93ZXZlciwKdGhpcyBp bXBsZW1lbnRhdGlvbiBjb21lcyBpbiBoYW5keSBpbiBjZXJ0YWluIGNhc2VzLCBldmVuIGFzIGl0 IGlzLiAgQWxzbywgaXQKY291bGQgc2VydmUgYXMgYSBmb3VuZGF0aW9uIGZvciBmdXR1cmUgaW1w bGVtZW50YXRpb25zIHdpdGggbGVzcyBsb2NraW5nIGFuZApwb3NzaWJseSBwYXJhbGxlbGlzbS4K CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vYzczYTE3NDYtMGNkMC02YmRkLTZiMjMt M2FlMGI3YzBjNTgyJTQwcG9zdGdyZXNwcm8ucnUKQXV0aG9yOiBEbWl0cnkgS292YWwgPGQua292 YWxAcG9zdGdyZXNwcm8ucnU+CkNvLWF1dGhvcmVkLWJ5OiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFl a29yb3Rrb3ZAZ21haWwuY29tPgpDby1hdXRob3JlZC1ieTogVGVuZGVyIFdhbmcgPHRuZHJ3YW5n QGdtYWlsLmNvbT4KQ28tYXV0aG9yZWQtYnk6IFJpY2hhcmQgR3VvIDxndW9mZW5nbGludXhAZ21h aWwuY29tPgpDby1hdXRob3JlZC1ieTogRGFnZmlubiBJbG1hcmkgTWFubnNha2VyIDxpbG1hcmlA aWxtYXJpLm9yZz4KQ28tYXV0aG9yZWQtYnk6IEZ1amlpIE1hc2FvIDxtYXNhby5mdWppaUBnbWFp bC5jb20+CkNvLWF1dGhvcmVkLWJ5OiBKaWFuIEhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5j b20+ClJldmlld2VkLWJ5OiBNYXR0aGlhcyB2YW4gZGUgTWVlbnQgPGJvZWtld3VybStwb3N0Z3Jl c0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBMYXVyZW56IEFsYmUgPGxhdXJlbnouYWxiZUBjeWJl cnRlYy5hdD4KUmV2aWV3ZWQtYnk6IFpoaWhvbmcgWXUgPHp5dUB5dWdhYnl0ZS5jb20+ClJldmll d2VkLWJ5OiBKdXN0aW4gUHJ5emJ5IDxwcnl6YnlAdGVsc2Fzb2Z0LmNvbT4KUmV2aWV3ZWQtYnk6 IEFsdmFybyBIZXJyZXJhIDxhbHZoZXJyZUBhbHZoLm5vLWlwLm9yZz4KUmV2aWV3ZWQtYnk6IFJv YmVydCBIYWFzIDxyaGFhc0Bwb3N0Z3Jlc3FsLm9yZz4KUmV2aWV3ZWQtYnk6IFN0ZXBoYW5lIFRh Y2hvaXJlcyA8c3RlcGhhbmUudGFjaG9pcmVzQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEppYW4g SGUgPGppYW4udW5pdmVyc2FsaXR5QGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEFsZXhhbmRlciBL b3JvdGtvdiA8YWVrb3JvdGtvdkBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBQYXZlbCBCb3Jpc292 IDxwYXNoa2luLmVsZmVAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogTWFzYWhpa28gU2F3YWRhIDxz YXdhZGEubXNoa0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBBbGV4YW5kZXIgTGFraGluIDxleGNs dXNpb25AZ21haWwuY29tPgpSZXZpZXdlZC1ieTogS3lvdGFybyBIb3JpZ3VjaGkgPGhvcmlreW90 YS5udHRAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogRGFuaWVsIEd1c3RhZnNzb24gPGRndXN0YWZz c29uQHBvc3RncmVzcWwub3JnPgpSZXZpZXdlZC1ieTogVG9tIExhbmUgPHRnbEBzc3MucGdoLnBh LnVzPgpSZXZpZXdlZC1ieTogTm9haCBNaXNjaCA8bm9haEBsZWFkYm9hdC5jb20+Ci0tLQogZG9j L3NyYy9zZ21sL2RkbC5zZ21sICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxOSArCiBkb2Mv c3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwgICAgICAgICAgICAgfCAgMTE4ICstCiBzcmMv YmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgICAgfCAgNDMyICsrKysrCiBz cmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgICAgICAgfCAgIDM4ICstCiBz cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jICAgICAgICAgICAgfCAgMTk3ICstCiBz cmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jICAgICAgICAgfCAgNzM3ICsrKysr KystCiBzcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgICAgICAgICAgICAgICAgfCAgIDEw ICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAgICAgICAgICAgICAgfCAgIDM0 ICstCiBzcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmggICAgICAgICAgICAgICAgICAgfCAgICAx ICsKIHNyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmggICAgICAgICB8ICAgIDQg KwogLi4uL2lzb2xhdGlvbi9leHBlY3RlZC9wYXJ0aXRpb24tc3BsaXQub3V0ICAgIHwgIDIzMCAr KysKIHNyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUgICAgICAgICB8ICAgIDEg Kwogc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3BhcnRpdGlvbi1zcGxpdC5zcGVjIHwgICA2MiAr CiAuLi4vdGVzdF9kZGxfZGVwYXJzZS9leHBlY3RlZC9hbHRlcl90YWJsZS5vdXQgfCAgICA1ICsK IC4uLi90ZXN0X2RkbF9kZXBhcnNlL3NxbC9hbHRlcl90YWJsZS5zcWwgICAgICB8ICAgIDQgKwog Li4uL3Rlc3RfZGRsX2RlcGFyc2UvdGVzdF9kZGxfZGVwYXJzZS5jICAgICAgIHwgICAgMyArCiBz cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9zcGxpdC5vdXQgfCAxNTkyICsrKysr KysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlICAgICAgICAg ICAgfCAgICAyICstCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fc3BsaXQuc3FsICAg ICAgfCAxMTM0ICsrKysrKysrKysrKwogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3Qg ICAgICAgICAgICAgIHwgICAgMiArCiAyMCBmaWxlcyBjaGFuZ2VkLCA0NTg1IGluc2VydGlvbnMo KyksIDQwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2lzb2xhdGlv bi9leHBlY3RlZC9wYXJ0aXRpb24tc3BsaXQub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rl c3QvaXNvbGF0aW9uL3NwZWNzL3BhcnRpdGlvbi1zcGxpdC5zcGVjCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fc3BsaXQub3V0CiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3NwbGl0LnNxbAoKZGlm ZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9kZGwuc2dtbCBiL2RvYy9zcmMvc2dtbC9kZGwuc2dtbApp bmRleCA3YjkwNzg5Zjg3Yy4uY2VhMjhjMDBmOGEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9k ZGwuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwKQEAgLTQ3NjQsNiArNDc2NCwyNSBA QCBBTFRFUiBUQUJMRSBtZWFzdXJlbWVudAogICAgICAgICAgICAgICAgICAgICAgIG1lYXN1cmVt ZW50X3kyMDA2bTAzKSBJTlRPIG1lYXN1cmVtZW50X3kyMDA2cTE7CiA8L3Byb2dyYW1saXN0aW5n PgogICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICBTaW1pbGFybHkgdG8gbWVyZ2luZyBt dWx0aXBsZSB0YWJsZSBwYXJ0aXRpb25zLCB0aGVyZSBpcyBhbiBvcHRpb24gZm9yCisgICAgIHNw bGl0dGluZyBhIHNpbmdsZSBwYXJ0aXRpb24gaW50byBtdWx0aXBsZSB1c2luZyB0aGUKKyAgICAg PGxpbmsgbGlua2VuZD0ic3FsLWFsdGVydGFibGUtc3BsaXQtcGFydGl0aW9uIj48Y29tbWFuZD5B TFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFSVElUSU9OPC9jb21tYW5kPjwvbGluaz4uCisgICAgIFRo aXMgZmVhdHVyZSBjb3VsZCBjb21lIGluIGhhbmR5IHdoZW4gb25lIHBhcnRpdGlvbiBncm93cyB0 b28gYmlnCisgICAgIGFuZCBuZWVkcyB0byBiZSBzcGxpdCBpbnRvIG11bHRpcGxlLiAgSXQncyBp bXBvcnRhbnQgdG8gbm90ZSB0aGF0CisgICAgIHRoaXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0 ZWQgZm9yIGhhc2gtcGFydGl0aW9uZWQgdGFibGVzIGFuZCBhY3F1aXJlcworICAgICBhbiA8bGl0 ZXJhbD5BQ0NFU1MgRVhDTFVTSVZFPC9saXRlcmFsPiBsb2NrLCB3aGljaCBjb3VsZCBpbXBhY3Qg aGlnaC1sb2FkCisgICAgIHN5c3RlbXMgZHVlIHRvIHRoZSBsb2NrJ3MgcmVzdHJpY3RpdmUgbmF0 dXJlLiAgRm9yIGV4YW1wbGUsIHdlIGNhbiBzcGxpdAorICAgICB0aGUgcXVhcnRlciBwYXJ0aXRp b24gYmFjayB0byBtb250aGx5IHBhcnRpdGlvbnM6Cis8cHJvZ3JhbWxpc3Rpbmc+CitBTFRFUiBU QUJMRSBtZWFzdXJlbWVudCBTUExJVCBQQVJUSVRJT04gbWVhc3VyZW1lbnRfeTIwMDZxMSBJTlRP CisgICAoUEFSVElUSU9OIG1lYXN1cmVtZW50X3kyMDA2bTAxIEZPUiBWQUxVRVMgRlJPTSAoJzIw MDYtMDEtMDEnKSBUTyAoJzIwMDYtMDItMDEnKSwKKyAgICBQQVJUSVRJT04gbWVhc3VyZW1lbnRf eTIwMDZtMDIgRk9SIFZBTFVFUyBGUk9NICgnMjAwNi0wMi0wMScpIFRPICgnMjAwNi0wMy0wMScp LAorICAgIFBBUlRJVElPTiBtZWFzdXJlbWVudF95MjAwNm0wMyBGT1IgVkFMVUVTIEZST00gKCcy MDA2LTAzLTAxJykgVE8gKCcyMDA2LTA0LTAxJykpOworPC9wcm9ncmFtbGlzdGluZz4KKyAgICA8 L3BhcmE+CisKICAgIDwvc2VjdDM+CiAKICAgIDxzZWN0MyBpZD0iZGRsLXBhcnRpdGlvbmluZy1k ZWNsYXJhdGl2ZS1saW1pdGF0aW9ucyI+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2Fs dGVyX3RhYmxlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwKaW5kZXgg NWNkYTFjOTRhZGIuLjlhYmQ4MDM3ZjI4IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2Fs dGVyX3RhYmxlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sCkBA IC0zOSw2ICszOSwxMCBAQCBBTFRFUiBUQUJMRSBbIElGIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KICAgICBERVRBQ0ggUEFSVElUSU9O IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFi bGU+IFsgQ09OQ1VSUkVOVExZIHwgRklOQUxJWkUgXQogQUxURVIgVEFCTEUgWyBJRiBFWElTVFMg XSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+CiAgICAg TUVSR0UgUEFSVElUSU9OUyAoPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlv bl9uYW1lMTwvcmVwbGFjZWFibGU+LCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFy dGl0aW9uX25hbWUyPC9yZXBsYWNlYWJsZT4gWywgLi4uXSkgSU5UTyA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPgorQUxURVIgVEFCTEUg WyBJRiBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFj ZWFibGU+CisgICAgU1BMSVQgUEFSVElUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+IElOVE8KKyAgICAgICAgKFBBUlRJVElPTiA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUxPC9yZXBsYWNlYWJs ZT4geyBGT1IgVkFMVUVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25f Ym91bmRfc3BlYzwvcmVwbGFjZWFibGU+IHwgREVGQVVMVCB9LAorICAgICAgICAgUEFSVElUSU9O IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTI8L3JlcGxhY2Vh YmxlPiB7IEZPUiBWQUxVRVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlv bl9ib3VuZF9zcGVjPC9yZXBsYWNlYWJsZT4gfCBERUZBVUxUIH0gWywgLi4uXSkKIAogPHBocmFz ZT53aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+YWN0aW9uPC9yZXBsYWNlYWJs ZT4gaXMgb25lIG9mOjwvcGhyYXNlPgogCkBAIC0xMjU4LDYgKzEyNjIsOTQgQEAgV0lUSCAoIE1P RFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVw bGFjZWFibGU+LCBSRU0KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAg IDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1hbHRlcnRhYmxlLXNwbGl0LXBhcnRpdGlvbiI+CisgICAg PHRlcm0+CisgICAgPGxpdGVyYWw+U1BMSVQgUEFSVElUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+IElOVE8gKAorICAgICAgUEFS VElUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTE8L3Jl cGxhY2VhYmxlPiB7IEZPUiBWQUxVRVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBh cnRpdGlvbl9ib3VuZF9zcGVjPC9yZXBsYWNlYWJsZT4gfCBERUZBVUxUIH0sCisgICAgICBQQVJU SVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVw bGFjZWFibGU+IHsgRk9SIFZBTFVFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFy dGl0aW9uX2JvdW5kX3NwZWM8L3JlcGxhY2VhYmxlPiB8IERFRkFVTFQgfQorICAgICAgWywgLi4u XSk8L2xpdGVyYWw+CisgICAgPC90ZXJtPgorCisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4K KyAgICAgIFRoaXMgZm9ybSBzcGxpdHMgYSBzaW5nbGUgcGFydGl0aW9uIG9mIHRoZSB0YXJnZXQg dGFibGUgaW50byBuZXcKKyAgICAgIHBhcnRpdGlvbnMuIEhhc2gtcGFydGl0aW9uZWQgdGFyZ2V0 IHRhYmxlIGlzIG5vdCBzdXBwb3J0ZWQuCisgICAgICBPbmx5IGEgc2ltcGxlLCBub24tcGFydGl0 aW9uZWQgcGFydGl0aW9uIGNhbiBiZSBzcGxpdC4KKyAgICAgIElmIHRoZSBzcGxpdCBwYXJ0aXRp b24gaXMgdGhlIDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+IHBhcnRpdGlvbiwKKyAgICAgIG9u ZSBvZiB0aGUgbmV3IHBhcnRpdGlvbnMgbXVzdCBiZSA8bGl0ZXJhbD5ERUZBVUxUPC9saXRlcmFs Pi4KKyAgICAgIElmIHRoZSBwYXJ0aXRpb25lZCB0YWJsZSBkb2VzIG5vdCBoYXZlIGEgPGxpdGVy YWw+REVGQVVMVDwvbGl0ZXJhbD4KKyAgICAgIHBhcnRpdGlvbiwgYSA8bGl0ZXJhbD5ERUZBVUxU PC9saXRlcmFsPiBwYXJ0aXRpb24gY2FuIGJlIGRlZmluZWQgYXMgb25lCisgICAgICBvZiB0aGUg bmV3IHBhcnRpdGlvbnMuCisgICAgIDwvcGFyYT4KKworICAgICA8cGFyYT4KKyAgICAgIFRoZSBi b3VuZHMgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIG5vdCBvdmVybGFwIHdpdGggdGhvc2Ugb2Yg bmV3IG9yCisgICAgICBleGlzdGluZyBwYXJ0aXRpb25zIChleGNlcHQgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4pLgorICAgICAgVGhl IGNvbWJpbmVkIGJvdW5kcyBvZiBuZXcgcGFydGl0aW9ucyA8bGl0ZXJhbD4KKyAgICAgIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxlPiwK KyAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTI8L3Jl cGxhY2VhYmxlPlssIC4uLl0KKyAgICAgIDwvbGl0ZXJhbD4gc2hvdWxkIGJlIGVxdWFsIHRvIHRo ZSBib3VuZHMgb2YgdGhlIHNwbGl0IHBhcnRpdGlvbgorICAgICAgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4uCisgICAgICBPbmUgb2Yg dGhlIG5ldyBwYXJ0aXRpb25zIGNhbiBoYXZlIHRoZSBzYW1lIG5hbWUgYXMgdGhlIHNwbGl0IHBh cnRpdGlvbgorICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9u YW1lPC9yZXBsYWNlYWJsZT4KKyAgICAgICh0aGlzIGlzIHN1aXRhYmxlIGluIGNhc2Ugb2Ygc3Bs aXR0aW5nIHRoZSA8bGl0ZXJhbD5ERUZBVUxUPC9saXRlcmFsPgorICAgICAgcGFydGl0aW9uOiBh ZnRlciB0aGUgc3BsaXQsIHRoZSA8bGl0ZXJhbD5ERUZBVUxUPC9saXRlcmFsPiBwYXJ0aXRpb24K KyAgICAgIHJlbWFpbnMgd2l0aCB0aGUgc2FtZSBuYW1lLCBidXQgaXRzIHBhcnRpdGlvbiBib3Vu ZCBjaGFuZ2VzKS4KKyAgICAgPC9wYXJhPgorCisgICAgIDxwYXJhPgorICAgICAgTmV3IHBhcnRp dGlvbnMgd2lsbCBoYXZlIHRoZSBzYW1lIG93bmVyIGFzIHRoZSBwYXJlbnQgcGFydGl0aW9uLgor ICAgICAgSXQgaXMgdGhlIHVzZXIncyByZXNwb25zaWJpbGl0eSB0byBzZXR1cCA8YWNyb255bT5B Q0w8L2Fjcm9ueW0+IG9uIG5ldworICAgICAgcGFydGl0aW9ucy4KKyAgICAgPC9wYXJhPgorCisg ICAgIDxwYXJhPgorICAgICAgIDxjb21tYW5kPkFMVEVSIFRBQkxFIFNQTElUIFBBUlRJVElPTjwv Y29tbWFuZD4gdXNlcyB0aGUgcGFydGl0aW9uZWQKKyAgICAgICB0YWJsZSBpdHNlbGYgYXMgdGhl IHRlbXBsYXRlIHRvIGNvbnN0cnVjdCBuZXcgcGFydGl0aW9ucy4KKyAgICAgICBOZXcgcGFydGl0 aW9ucyB3aWxsIGluaGVyaXQgdGhlIHNhbWUgdGFibGUgYWNjZXNzIG1ldGhvZCwgcGVyc2lzdGVu Y2UKKyAgICAgICB0eXBlLCBhbmQgdGFibGVzcGFjZSBhcyB0aGUgcGFydGl0aW9uZWQgdGFibGUu CisgICAgIDwvcGFyYT4KKworICAgICA8cGFyYT4KKyAgICAgICBDb25zdHJhaW50cywgY29sdW1u IGRlZmF1bHRzLCBjb2x1bW4gZ2VuZXJhdGlvbiBleHByZXNzaW9ucywKKyAgICAgICBpZGVudGl0 eSBjb2x1bW5zLCBpbmRleGVzLCBhbmQgdHJpZ2dlcnMgYXJlIGNvcGllZCBmcm9tIHRoZSBwYXJ0 aXRpb25lZAorICAgICAgIHRhYmxlIHRvIHRoZSBuZXcgcGFydGl0aW9ucy4gIEJ1dCBleHRlbmRl ZCBzdGF0aXN0aWNzLCBzZWN1cml0eQorICAgICAgIHBvbGljaWVzLCBldGMsIHdvbid0IGJlIGNv cGllZCBmcm9tIHRoZSBwYXJ0aXRpb25lZCB0YWJsZS4KKyAgICAgICBJbmRleGVzIGFuZCBpZGVu dGl0eSBjb2x1bW5zIGNvcGllZCBmcm9tIHRoZSBwYXJ0aXRpb25lZCB0YWJsZSB3aWxsIGJlCisg ICAgICAgY3JlYXRlZCBhZnRlcndhcmQsIG9uY2UgdGhlIGRhdGEgaGFzIGJlZW4gbW92ZWQgaW50 byB0aGUgbmV3IHBhcnRpdGlvbnMuCisgICAgIDwvcGFyYT4KKworICAgICA8cGFyYT4KKyAgICAg IFdoZW4gYSBwYXJ0aXRpb24gaXMgc3BsaXQsIGFueSBvYmplY3RzIHRoYXQgZGVwZW5kIG9uIHRo aXMgcGFydGl0aW9uLAorICAgICAgc3VjaCBhcyBjb25zdHJhaW50cywgdHJpZ2dlcnMsIGV4dGVu ZGVkIHN0YXRpc3RpY3MsIGV0Yywgd2lsbCBiZSBkcm9wcGVkLgorICAgICAgVGhpcyBvY2N1cnMg YmVjYXVzZSA8Y29tbWFuZD5BTFRFUiBUQUJMRSBTUExJVCBQQVJUSVRJT048L2NvbW1hbmQ+IHVz ZXMKKyAgICAgIHRoZSBwYXJ0aXRpb25lZCB0YWJsZSBpdHNlbGYgYXMgdGhlIHRlbXBsYXRlIHRv IHJlY29uc3RydWN0IHRoZXNlCisgICAgICBvYmplY3RzIGxhdGVyLgorICAgICAgRXZlbnR1YWxs eSwgd2Ugd2lsbCBkcm9wIHRoZSBzcGxpdCBwYXJ0aXRpb24KKyAgICAgICh1c2luZyA8bGl0ZXJh bD5SRVNUUklDVDwvbGl0ZXJhbD4gbW9kZSkgdG9vOyAgdGhlcmVmb3JlLCBpZiBhbnkgb2JqZWN0 cworICAgICAgYXJlIHN0aWxsIGRlcGVuZGVudCBvbiBpdCwgPGNvbW1hbmQ+QUxURVIgVEFCTEUg U1BMSVQgUEFSVElUSU9OPC9jb21tYW5kPgorICAgICAgd291bGQgZmFpbCAoc2VlIDx4cmVmIGxp bmtlbmQ9ImRkbC1kZXBlbmQiLz4pLgorICAgICA8L3BhcmE+CisKKyAgICAgPG5vdGU+CisgICAg ICA8cGFyYT4KKyAgICAgICBTcGxpdCBwYXJ0aXRpb24gYWNxdWlyZXMgYW4gPGxpdGVyYWw+QUND RVNTIEVYQ0xVU0lWRTwvbGl0ZXJhbD4gbG9jayBvbgorICAgICAgIHRoZSBwYXJlbnQgdGFibGUs IGluIGFkZGl0aW9uIHRvIHRoZSA8bGl0ZXJhbD5BQ0NFU1MgRVhDTFVTSVZFPC9saXRlcmFsPgor ICAgICAgIGxvY2sgb24gdGhlIHRhYmxlIGJlaW5nIHNwbGl0LgorICAgICAgPC9wYXJhPgorICAg ICA8L25vdGU+CisgICAgIDxub3RlPgorCisgICAgICA8cGFyYT4KKyAgICAgICA8Y29tbWFuZD5B TFRFUiBUQUJMRSBTUExJVCBQQVJUSVRJT048L2NvbW1hbmQ+IGNyZWF0ZXMgbmV3IHBhcnRpdGlv bnMgYW5kCisgICAgICAgbW92ZXMgZGF0YSBmcm9tIHRoZSBzcGxpdCBwYXJ0aXRpb24gaW50byB0 aGVtLCB3aGljaCBjYW4gdGFrZSBhIGxvbmcKKyAgICAgICB0aW1lLiAgU28gaXQgaXMgbm90IHJl Y29tbWVuZGVkIHRvIHVzZSB0aGUgY29tbWFuZCBmb3Igc3BsaXR0aW5nIGEKKyAgICAgICBzbWFs bCBmcmFjdGlvbiBvZiByb3dzIG91dCBvZiBhIHZlcnkgYmlnIHBhcnRpdGlvbi4KKyAgICAgIDwv cGFyYT4KKyAgICAgPC9ub3RlPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4K KwogICA8L3ZhcmlhYmxlbGlzdD4KICAgPC9wYXJhPgogCkBAIC0xMjY1LDcgKzEzNTcsOCBAQCBX SVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRl cmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgQWxsIHRoZSBmb3JtcyBvZiA8Y29tbWFuZD5BTFRF UiBUQUJMRTwvY29tbWFuZD4gdGhhdCBhY3Qgb24gYSBzaW5nbGUgdGFibGUsCiAgICBleGNlcHQg PGxpdGVyYWw+UkVOQU1FPC9saXRlcmFsPiwgPGxpdGVyYWw+U0VUIFNDSEVNQTwvbGl0ZXJhbD4s CiAgICA8bGl0ZXJhbD5BVFRBQ0ggUEFSVElUSU9OPC9saXRlcmFsPiwgPGxpdGVyYWw+REVUQUNI IFBBUlRJVElPTjwvbGl0ZXJhbD4sCi0gICBhbmQgPGxpdGVyYWw+TUVSR0UgUEFSVElUSU9OUzwv bGl0ZXJhbD4sIGNhbiBiZSBjb21iaW5lZCBpbnRvCisgICA8bGl0ZXJhbD5NRVJHRSBQQVJUSVRJ T05TPC9saXRlcmFsPiwgYW5kIDxsaXRlcmFsPlNQTElUIFBBUlRJVElPTjwvbGl0ZXJhbD4KKyAg IGNhbiBiZSBjb21iaW5lZCBpbnRvCiAgICBhIGxpc3Qgb2YgbXVsdGlwbGUgYWx0ZXJhdGlvbnMg dG8gYmUgYXBwbGllZCB0b2dldGhlci4gIEZvciBleGFtcGxlLCBpdAogICAgaXMgcG9zc2libGUg dG8gYWRkIHNldmVyYWwgY29sdW1ucyBhbmQvb3IgYWx0ZXIgdGhlIHR5cGUgb2Ygc2V2ZXJhbAog ICAgY29sdW1ucyBpbiBhIHNpbmdsZSBjb21tYW5kLiAgVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNl ZnVsIHdpdGggbGFyZ2UKQEAgLTE1MDksNyArMTYwMiw3IEBAIFdJVEggKCBNT0RVTFVTIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwg UkVNCiAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgPHBhcmE+CiAgICAgICAgIFRoZSBuYW1lIG9m IHRoZSB0YWJsZSB0byBhdHRhY2ggYXMgYSBuZXcgcGFydGl0aW9uIG9yIHRvIGRldGFjaCBmcm9t IHRoaXMgdGFibGUsCi0gICAgICAgIG9yIHRoZSBuYW1lIG9mIHRoZSBuZXcgbWVyZ2VkIHBhcnRp dGlvbi4KKyAgICAgICAgb3IgdGhlIG5hbWUgb2Ygc3BsaXQgcGFydGl0aW9uLCBvciB0aGUgbmFt ZSBvZiB0aGUgbmV3IG1lcmdlZCBwYXJ0aXRpb24uCiAgICAgICAgPC9wYXJhPgogICAgICAgPC9s aXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CkBAIC0xNTE5LDcgKzE2MTIsOCBAQCBXSVRI ICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFs PC9yZXBsYWNlYWJsZT4sIFJFTQogICAgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+PC90ZXJtPgogICAgICAgPGxpc3Rp dGVtPgogICAgICAgIDxwYXJhPgotICAgICAgICBUaGUgbmFtZXMgb2YgdGhlIHRhYmxlcyBiZWlu ZyBtZXJnZWQgaW50byB0aGUgbmV3IHBhcnRpdGlvbi4KKyAgICAgICAgVGhlIG5hbWVzIG9mIHRo ZSB0YWJsZXMgYmVpbmcgbWVyZ2VkIGludG8gdGhlIG5ldyBwYXJ0aXRpb24gb3Igc3BsaXQgaW50 bworICAgICAgICBuZXcgcGFydGl0aW9ucy4KICAgICAgICA8L3BhcmE+CiAgICAgICA8L2xpc3Rp dGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KQEAgLTE5NTIsNiArMjA0NiwyNCBAQCBBTFRFUiBU QUJMRSBtZWFzdXJlbWVudAogICAgIERFVEFDSCBQQVJUSVRJT04gbWVhc3VyZW1lbnRfeTIwMTVt MTI7CiA8L3Byb2dyYW1saXN0aW5nPjwvcGFyYT4KIAorICA8cGFyYT4KKyAgIFRvIHNwbGl0IGEg c2luZ2xlIHBhcnRpdGlvbiBvZiB0aGUgcmFuZ2UtcGFydGl0aW9uZWQgdGFibGU6Cis8cHJvZ3Jh bWxpc3Rpbmc+CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNf ZmViX21hcl9hcHIyMDIzIElOVE8KKyAgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMyBGT1IgVkFM VUVTIEZST00gKCcyMDIzLTAyLTAxJykgVE8gKCcyMDIzLTAzLTAxJyksCisgICAgUEFSVElUSU9O IHNhbGVzX21hcjIwMjMgRk9SIFZBTFVFUyBGUk9NICgnMjAyMy0wMy0wMScpIFRPICgnMjAyMy0w NC0wMScpLAorICAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIzIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjMtMDQtMDEnKSBUTyAoJzIwMjMtMDUtMDEnKSk7Cis8L3Byb2dyYW1saXN0aW5nPjwvcGFyYT4K KworICA8cGFyYT4KKyAgIFRvIHNwbGl0IGEgc2luZ2xlIHBhcnRpdGlvbiBvZiB0aGUgbGlzdC1w YXJ0aXRpb25lZCB0YWJsZToKKzxwcm9ncmFtbGlzdGluZz4KK0FMVEVSIFRBQkxFIHNhbGVzX2xp c3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgICAoUEFSVElUSU9OIHNhbGVzX3dl c3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKSwKKyAgICBQ QVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1Zs YWRpdm9zdG9rJyksCisgICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAo J1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpKTsKKzwvcHJvZ3JhbWxpc3Rpbmc+PC9wYXJhPgor CiAgIDxwYXJhPgogICAgVG8gbWVyZ2Ugc2V2ZXJhbCBwYXJ0aXRpb25zIGludG8gb25lIHBhcnRp dGlvbiBvZiB0aGUgdGFyZ2V0IHRhYmxlOgogPHByb2dyYW1saXN0aW5nPgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90 YWJsZWNtZHMuYwppbmRleCBmNzAzMjkzZGJjMy4uOTUzZmFkYjljNmIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3RhYmxlY21kcy5jCkBAIC03NDIsNiArNzQyLDkgQEAgc3RhdGljIGNoYXIgR2V0QXR0cmlidXRl U3RvcmFnZShPaWQgYXR0dHlwaWQsIGNvbnN0IGNoYXIgKnN0b3JhZ2Vtb2RlKTsKIAogc3RhdGlj IHZvaWQgQVRFeGVjTWVyZ2VQYXJ0aXRpb25zKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUlu Zm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCQkJCQkJCQkgIFBhcnRpdGlvbkNtZCAqY21kLCBBbHRl clRhYmxlVXRpbGl0eUNvbnRleHQgKmNvbnRleHQpOworc3RhdGljIHZvaWQgQVRFeGVjU3BsaXRQ YXJ0aXRpb24oTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLAorCQkJCQkJCQkg UmVsYXRpb24gcmVsLCBQYXJ0aXRpb25DbWQgKmNtZCwKKwkJCQkJCQkJIEFsdGVyVGFibGVVdGls aXR5Q29udGV4dCAqY29udGV4dCk7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlEZWZpbmVSZWxhdGlvbgpA QCAtNDgzOSw2ICs0ODQyLDcgQEAgQWx0ZXJUYWJsZUdldExvY2tMZXZlbChMaXN0ICpjbWRzKQog CQkJCWJyZWFrOwogCiAJCQljYXNlIEFUX01lcmdlUGFydGl0aW9uczoKKwkJCWNhc2UgQVRfU3Bs aXRQYXJ0aXRpb246CiAJCQkJY21kX2xvY2ttb2RlID0gQWNjZXNzRXhjbHVzaXZlTG9jazsKIAkJ CQlicmVhazsKIApAQCAtNTI3OCw2ICs1MjgyLDcgQEAgQVRQcmVwQ21kKExpc3QgKip3cXVldWUs IFJlbGF0aW9uIHJlbCwgQWx0ZXJUYWJsZUNtZCAqY21kLAogCQkJcGFzcyA9IEFUX1BBU1NfTUlT QzsKIAkJCWJyZWFrOwogCQljYXNlIEFUX01lcmdlUGFydGl0aW9uczoKKwkJY2FzZSBBVF9TcGxp dFBhcnRpdGlvbjoKIAkJCUFUU2ltcGxlUGVybWlzc2lvbnMoY21kLT5zdWJ0eXBlLCByZWwsIEFU VF9QQVJUSVRJT05FRF9UQUJMRSk7CiAJCQkvKiBObyBjb21tYW5kLXNwZWNpZmljIHByZXAgbmVl ZGVkICovCiAJCQlwYXNzID0gQVRfUEFTU19NSVNDOwpAQCAtNTY4Niw2ICs1NjkxLDE0IEBAIEFU RXhlY0NtZChMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsCiAJCQlBVEV4ZWNN ZXJnZVBhcnRpdGlvbnMod3F1ZXVlLCB0YWIsIHJlbCwgKFBhcnRpdGlvbkNtZCAqKSBjbWQtPmRl ZiwKIAkJCQkJCQkJICBjb250ZXh0KTsKIAkJCWJyZWFrOworCQljYXNlIEFUX1NwbGl0UGFydGl0 aW9uOgorCQkJY21kID0gQVRQYXJzZVRyYW5zZm9ybUNtZCh3cXVldWUsIHRhYiwgcmVsLCBjbWQs IGZhbHNlLCBsb2NrbW9kZSwKKwkJCQkJCQkJCSAgY3VyX3Bhc3MsIGNvbnRleHQpOworCQkJQXNz ZXJ0KGNtZCAhPSBOVUxMKTsKKwkJCUFzc2VydChyZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxL SU5EX1BBUlRJVElPTkVEX1RBQkxFKTsKKwkJCUFURXhlY1NwbGl0UGFydGl0aW9uKHdxdWV1ZSwg dGFiLCByZWwsIChQYXJ0aXRpb25DbWQgKikgY21kLT5kZWYsCisJCQkJCQkJCSBjb250ZXh0KTsK KwkJCWJyZWFrOwogCQlkZWZhdWx0OgkJCQkvKiBvb3BzICovCiAJCQllbG9nKEVSUk9SLCAidW5y ZWNvZ25pemVkIGFsdGVyIHRhYmxlIHR5cGU6ICVkIiwKIAkJCQkgKGludCkgY21kLT5zdWJ0eXBl KTsKQEAgLTY3MjgsNiArNjc0MSw4IEBAIGFsdGVyX3RhYmxlX3R5cGVfdG9fc3RyaW5nKEFsdGVy VGFibGVUeXBlIGNtZHR5cGUpCiAJCQlyZXR1cm4gIkRFVEFDSCBQQVJUSVRJT04gLi4uIEZJTkFM SVpFIjsKIAkJY2FzZSBBVF9NZXJnZVBhcnRpdGlvbnM6CiAJCQlyZXR1cm4gIk1FUkdFIFBBUlRJ VElPTlMiOworCQljYXNlIEFUX1NwbGl0UGFydGl0aW9uOgorCQkJcmV0dXJuICJTUExJVCBQQVJU SVRJT04iOwogCQljYXNlIEFUX0FkZElkZW50aXR5OgogCQkJcmV0dXJuICJBTFRFUiBDT0xVTU4g Li4uIEFERCBJREVOVElUWSI7CiAJCWNhc2UgQVRfU2V0SWRlbnRpdHk6CkBAIC0yMjkwNSwzICsy MjkyMCw0MjAgQEAgQVRFeGVjTWVyZ2VQYXJ0aXRpb25zKExpc3QgKip3cXVldWUsIEFsdGVyZWRU YWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCS8qIFJlc3RvcmUgdGhlIHVzZXJpZCBhbmQg c2VjdXJpdHkgY29udGV4dC4gKi8KIAlTZXRVc2VySWRBbmRTZWNDb250ZXh0KHNhdmVfdXNlcmlk LCBzYXZlX3NlY19jb250ZXh0KTsKIH0KKworLyoKKyAqIFN0cnVjdCB3aXRoIHRoZSBjb250ZXh0 IG9mIHRoZSBuZXcgcGFydGl0aW9uIGZvciBpbnNlcnRpbmcgcm93cyBmcm9tIHRoZQorICogc3Bs aXQgcGFydGl0aW9uLgorICovCit0eXBlZGVmIHN0cnVjdCBTcGxpdFBhcnRpdGlvbkNvbnRleHQK K3sKKwlFeHByU3RhdGUgICpwYXJ0cXVhbHN0YXRlOwkvKiBleHByZXNzaW9uIGZvciBjaGVja2lu ZyBhIHNsb3QgZm9yIGEKKwkJCQkJCQkJICogcGFydGl0aW9uIChOVUxMIGZvciBERUZBVUxUIHBh cnRpdGlvbikgKi8KKwlCdWxrSW5zZXJ0U3RhdGUgYmlzdGF0ZTsJLyogc3RhdGUgb2YgYnVsayBp bnNlcnRzIGZvciBwYXJ0aXRpb24gKi8KKwlUdXBsZVRhYmxlU2xvdCAqZHN0c2xvdDsJLyogc2xv dCBmb3IgaW5zZXJ0aW5nIHJvdyBpbnRvIHBhcnRpdGlvbiAqLworCUFsdGVyZWRUYWJsZUluZm8g KnRhYjsJCS8qIHN0cnVjdHVyZSB3aXRoIGdlbmVyYXRlZCBjb2x1bW4gZXhwcmVzc2lvbnMKKwkJ CQkJCQkJICogYW5kIGNoZWNrIGNvbnN0cmFpbnQgZXhwcmVzc2lvbnMuICovCisJUmVsYXRpb24J cGFydFJlbDsJCS8qIHJlbGF0aW9uIGZvciBwYXJ0aXRpb24gKi8KK30gU3BsaXRQYXJ0aXRpb25D b250ZXh0OworCisvKgorICogY3JlYXRlU3BsaXRQYXJ0aXRpb25Db250ZXh0OiBjcmVhdGUgY29u dGV4dCBmb3IgcGFydGl0aW9uIGFuZCBmaWxsIGl0CisgKi8KK3N0YXRpYyBTcGxpdFBhcnRpdGlv bkNvbnRleHQgKgorY3JlYXRlU3BsaXRQYXJ0aXRpb25Db250ZXh0KFJlbGF0aW9uIHBhcnRSZWwp Cit7CisJU3BsaXRQYXJ0aXRpb25Db250ZXh0ICpwYzsKKworCXBjID0gKFNwbGl0UGFydGl0aW9u Q29udGV4dCAqKSBwYWxsb2MwKHNpemVvZihTcGxpdFBhcnRpdGlvbkNvbnRleHQpKTsKKwlwYy0+ cGFydFJlbCA9IHBhcnRSZWw7CisKKwkvKgorCSAqIFByZXBhcmUgYSBCdWxrSW5zZXJ0U3RhdGUg Zm9yIHRhYmxlX3R1cGxlX2luc2VydC4gVGhlIEZTTSBpcyBlbXB0eSwgc28KKwkgKiBkb24ndCBi b3RoZXIgdXNpbmcgaXQuCisJICovCisJcGMtPmJpc3RhdGUgPSBHZXRCdWxrSW5zZXJ0U3RhdGUo KTsKKworCS8qIENyZWF0ZSBhIGRlc3RpbmF0aW9uIHR1cGxlIHNsb3QgZm9yIHRoZSBuZXcgcGFy dGl0aW9uLiAqLworCXBjLT5kc3RzbG90ID0gdGFibGVfc2xvdF9jcmVhdGUocGMtPnBhcnRSZWws IE5VTEwpOworCisJcmV0dXJuIHBjOworfQorCisvKgorICogZGVsZXRlU3BsaXRQYXJ0aXRpb25D b250ZXh0OiBkZWxldGUgY29udGV4dCBmb3IgcGFydGl0aW9uCisgKi8KK3N0YXRpYyB2b2lkCitk ZWxldGVTcGxpdFBhcnRpdGlvbkNvbnRleHQoU3BsaXRQYXJ0aXRpb25Db250ZXh0ICpwYywgTGlz dCAqKndxdWV1ZSwgaW50IHRpX29wdGlvbnMpCit7CisJTGlzdENlbGwgICAqbHRhYjsKKworCUV4 ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3QocGMtPmRzdHNsb3QpOworCUZyZWVCdWxrSW5zZXJ0 U3RhdGUocGMtPmJpc3RhdGUpOworCisJdGFibGVfZmluaXNoX2J1bGtfaW5zZXJ0KHBjLT5wYXJ0 UmVsLCB0aV9vcHRpb25zKTsKKworCS8qCisJICogV2UgZG9uJ3QgbmVlZCB0byBwcm9jZXNzIHRo aXMgcGMtPnBhcnRSZWwgc28gZGVsZXRlIHRoZSBBTFRFUiBUQUJMRQorCSAqIHF1ZXVlIG9mIGl0 LgorCSAqLworCWZvcmVhY2gobHRhYiwgKndxdWV1ZSkKKwl7CisJCUFsdGVyZWRUYWJsZUluZm8g KnRhYiA9IChBbHRlcmVkVGFibGVJbmZvICopIGxmaXJzdChsdGFiKTsKKworCQlpZiAodGFiLT5y ZWxpZCA9PSBSZWxhdGlvbkdldFJlbGlkKHBjLT5wYXJ0UmVsKSkKKwkJeworCQkJKndxdWV1ZSA9 IGxpc3RfZGVsZXRlX2NlbGwoKndxdWV1ZSwgbHRhYik7CisJCQlicmVhazsKKwkJfQorCX0KKwor CXBmcmVlKHBjKTsKK30KKworLyoKKyAqIFNwbGl0UGFydGl0aW9uTW92ZVJvd3M6IHNjYW4gc3Bs aXQgcGFydGl0aW9uIChzcGxpdFJlbCkgb2YgcGFydGl0aW9uZWQgdGFibGUKKyAqIChyZWwpIGFu ZCBtb3ZlIHJvd3MgaW50byBuZXcgcGFydGl0aW9ucy4KKyAqCisgKiBOZXcgcGFydGl0aW9ucyBk ZXNjcmlwdGlvbjoKKyAqIHBhcnRsaXN0OiBsaXN0IG9mIHBvaW50ZXJzIHRvIFNpbmdsZVBhcnRp dGlvblNwZWMgc3RydWN0dXJlcy4gIEl0IGNvbnRhaW5zCisgKiB0aGUgcGFydGl0aW9uIHNwZWNp ZmljYXRpb24gZGV0YWlscyBmb3IgYWxsIG5ldyBwYXJ0aXRpb25zLgorICogbmV3UGFydFJlbHM6 IGxpc3Qgb2YgUmVsYXRpb25zLCBuZXcgcGFydGl0aW9ucyBjcmVhdGVkIGluCisgKiBBVEV4ZWNT cGxpdFBhcnRpdGlvbi4KKyAqLworc3RhdGljIHZvaWQKK1NwbGl0UGFydGl0aW9uTW92ZVJvd3Mo TGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBzcGxpdFJlbCwKKwkJCQkJICAg TGlzdCAqcGFydGxpc3QsIExpc3QgKm5ld1BhcnRSZWxzKQoreworCS8qIFRoZSBGU00gaXMgZW1w dHksIHNvIGRvbid0IGJvdGhlciB1c2luZyBpdC4gKi8KKwlpbnQJCQl0aV9vcHRpb25zID0gVEFC TEVfSU5TRVJUX1NLSVBfRlNNOworCUNvbW1hbmRJZAlteWNpZDsKKwlFU3RhdGUJICAgKmVzdGF0 ZTsKKwlMaXN0Q2VsbCAgICpsaXN0cHRyLAorCQkJICAgKmxpc3RwdHIyOworCVR1cGxlVGFibGVT bG90ICpzcmNzbG90OworCUV4cHJDb250ZXh0ICplY29udGV4dDsKKwlUYWJsZVNjYW5EZXNjIHNj YW47CisJU25hcHNob3QJc25hcHNob3Q7CisJTWVtb3J5Q29udGV4dCBvbGRDeHQ7CisJTGlzdAkg ICAqcGFydENvbnRleHRzID0gTklMOworCVR1cGxlQ29udmVyc2lvbk1hcCAqdHVwbGVfbWFwOwor CVNwbGl0UGFydGl0aW9uQ29udGV4dCAqZGVmYXVsdFBhcnRDdHggPSBOVUxMLAorCQkJICAgKnBj OworCisJbXljaWQgPSBHZXRDdXJyZW50Q29tbWFuZElkKHRydWUpOworCisJZXN0YXRlID0gQ3Jl YXRlRXhlY3V0b3JTdGF0ZSgpOworCisJZm9yYm90aChsaXN0cHRyLCBwYXJ0bGlzdCwgbGlzdHB0 cjIsIG5ld1BhcnRSZWxzKQorCXsKKwkJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzID0gKFNpbmds ZVBhcnRpdGlvblNwZWMgKikgbGZpcnN0KGxpc3RwdHIpOworCisJCXBjID0gY3JlYXRlU3BsaXRQ YXJ0aXRpb25Db250ZXh0KChSZWxhdGlvbikgbGZpcnN0KGxpc3RwdHIyKSk7CisKKwkJLyogRmlu ZCB0aGUgd29yayBxdWV1ZSBlbnRyeSBmb3IgdGhlIG5ldyBwYXJ0aXRpb24gdGFibGU6IG5ld1Bh cnRSZWwuICovCisJCXBjLT50YWIgPSBBVEdldFF1ZXVlRW50cnkod3F1ZXVlLCBwYy0+cGFydFJl bCk7CisKKwkJYnVpbGRFeHByZXNzaW9uRXhlY3V0aW9uU3RhdGVzKHBjLT50YWIsIHBjLT5wYXJ0 UmVsLCBlc3RhdGUpOworCisJCWlmIChzcHMtPmJvdW5kLT5pc19kZWZhdWx0KQorCQl7CisJCQkv KgorCQkJICogV2Ugc2hvdWxkIG5vdCBjcmVhdGUgYSBzdHJ1Y3R1cmUgdG8gY2hlY2sgdGhlIHBh cnRpdGlvbgorCQkJICogY29uc3RyYWludCBmb3IgdGhlIG5ldyBERUZBVUxUIHBhcnRpdGlvbi4K KwkJCSAqLworCQkJZGVmYXVsdFBhcnRDdHggPSBwYzsKKwkJfQorCQllbHNlCisJCXsKKwkJCUxp c3QJICAgKnBhcnRDb25zdHJhaW50OworCisJCQkvKiBCdWlsZCBleHByZXNzaW9uIGV4ZWN1dGlv biBzdGF0ZXMgZm9yIHBhcnRpdGlvbiBjaGVjayBxdWFscy4gKi8KKwkJCXBhcnRDb25zdHJhaW50 ID0gZ2V0X3F1YWxfZnJvbV9wYXJ0Ym91bmQocmVsLCBzcHMtPmJvdW5kKTsKKwkJCXBhcnRDb25z dHJhaW50ID0KKwkJCQkoTGlzdCAqKSBldmFsX2NvbnN0X2V4cHJlc3Npb25zKE5VTEwsCisJCQkJ CQkJCQkJCQkoTm9kZSAqKSBwYXJ0Q29uc3RyYWludCk7CisJCQkvKiBNYWtlIGEgYm9vbGVhbiBl eHByZXNzaW9uIGZvciBFeGVjQ2hlY2soKS4gKi8KKwkJCXBhcnRDb25zdHJhaW50ID0gbGlzdF9t YWtlMShtYWtlX2FuZHNfZXhwbGljaXQocGFydENvbnN0cmFpbnQpKTsKKworCQkJLyoKKwkJCSAq IE1hcCB0aGUgdmFycyBpbiB0aGUgY29uc3RyYWludCBleHByZXNzaW9uIGZyb20gcmVsJ3MgYXR0 bm9zIHRvCisJCQkgKiBzcGxpdFJlbCdzLgorCQkJICovCisJCQlwYXJ0Q29uc3RyYWludCA9IG1h cF9wYXJ0aXRpb25fdmFyYXR0bm9zKHBhcnRDb25zdHJhaW50LAorCQkJCQkJCQkJCQkJCSAxLCBz cGxpdFJlbCwgcmVsKTsKKworCQkJcGMtPnBhcnRxdWFsc3RhdGUgPQorCQkJCUV4ZWNQcmVwYXJl RXhwcigoRXhwciAqKSBsaW5pdGlhbChwYXJ0Q29uc3RyYWludCksIGVzdGF0ZSk7CisJCQlBc3Nl cnQocGMtPnBhcnRxdWFsc3RhdGUgIT0gTlVMTCk7CisJCX0KKworCQkvKiBTdG9yZSBwYXJ0aXRp b24gY29udGV4dCBpbnRvIGEgbGlzdC4gKi8KKwkJcGFydENvbnRleHRzID0gbGFwcGVuZChwYXJ0 Q29udGV4dHMsIHBjKTsKKwl9CisKKwllY29udGV4dCA9IEdldFBlclR1cGxlRXhwckNvbnRleHQo ZXN0YXRlKTsKKworCS8qIENyZWF0ZSB0aGUgbmVjZXNzYXJ5IHR1cGxlIHNsb3QuICovCisJc3Jj c2xvdCA9IHRhYmxlX3Nsb3RfY3JlYXRlKHNwbGl0UmVsLCBOVUxMKTsKKworCS8qCisJICogTWFw IGNvbXB1dGluZyBmb3IgbW92aW5nIGF0dHJpYnV0ZXMgb2YgdGhlIHNwbGl0IHBhcnRpdGlvbiB0 byB0aGUgbmV3CisJICogcGFydGl0aW9uIChmb3IgdGhlIGZpcnN0IG5ldyBwYXJ0aXRpb24sIGJ1 dCBvdGhlciBuZXcgcGFydGl0aW9ucyBjYW4KKwkgKiB1c2UgdGhlIHNhbWUgbWFwKS4KKwkgKi8K KwlwYyA9IChTcGxpdFBhcnRpdGlvbkNvbnRleHQgKikgbGZpcnN0KGxpc3RfaGVhZChwYXJ0Q29u dGV4dHMpKTsKKwl0dXBsZV9tYXAgPSBjb252ZXJ0X3R1cGxlc19ieV9uYW1lKFJlbGF0aW9uR2V0 RGVzY3Ioc3BsaXRSZWwpLAorCQkJCQkJCQkJICAgUmVsYXRpb25HZXREZXNjcihwYy0+cGFydFJl bCkpOworCisJLyogU2NhbiB0aHJvdWdoIHRoZSByb3dzLiAqLworCXNuYXBzaG90ID0gUmVnaXN0 ZXJTbmFwc2hvdChHZXRMYXRlc3RTbmFwc2hvdCgpKTsKKwlzY2FuID0gdGFibGVfYmVnaW5zY2Fu KHNwbGl0UmVsLCBzbmFwc2hvdCwgMCwgTlVMTCk7CisKKwkvKgorCSAqIFN3aXRjaCB0byBwZXIt dHVwbGUgbWVtb3J5IGNvbnRleHQgYW5kIHJlc2V0IGl0IGZvciBlYWNoIHR1cGxlCisJICogcHJv ZHVjZWQsIHNvIHdlIGRvbid0IGxlYWsgbWVtb3J5LgorCSAqLworCW9sZEN4dCA9IE1lbW9yeUNv bnRleHRTd2l0Y2hUbyhHZXRQZXJUdXBsZU1lbW9yeUNvbnRleHQoZXN0YXRlKSk7CisKKwl3aGls ZSAodGFibGVfc2Nhbl9nZXRuZXh0c2xvdChzY2FuLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgc3Jj c2xvdCkpCisJeworCQlib29sCQlmb3VuZCA9IGZhbHNlOworCQlUdXBsZVRhYmxlU2xvdCAqaW5z ZXJ0c2xvdDsKKworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCisJCWVjb250ZXh0LT5lY3h0 X3NjYW50dXBsZSA9IHNyY3Nsb3Q7CisKKwkJLyogU2VhcmNoIHBhcnRpdGlvbiBmb3IgdGhlIGN1 cnJlbnQgc2xvdCwgc3Jjc2xvdC4gKi8KKwkJZm9yZWFjaChsaXN0cHRyLCBwYXJ0Q29udGV4dHMp CisJCXsKKwkJCXBjID0gKFNwbGl0UGFydGl0aW9uQ29udGV4dCAqKSBsZmlyc3QobGlzdHB0cik7 CisKKwkJCS8qIHNraXAgREVGQVVMVCBwYXJ0aXRpb24gKi8KKwkJCWlmIChwYy0+cGFydHF1YWxz dGF0ZSAmJiBFeGVjQ2hlY2socGMtPnBhcnRxdWFsc3RhdGUsIGVjb250ZXh0KSkKKwkJCXsKKwkJ CQlmb3VuZCA9IHRydWU7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKwkJaWYgKCFmb3VuZCkKKwkJ eworCQkJLyogVXNlIHRoZSBERUZBVUxUIHBhcnRpdGlvbiBpZiBpdCBleGlzdHMuICovCisJCQlp ZiAoZGVmYXVsdFBhcnRDdHgpCisJCQkJcGMgPSBkZWZhdWx0UGFydEN0eDsKKwkJCWVsc2UKKwkJ CQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0NIRUNLX1ZJT0xBVElPTiks CisJCQkJCQllcnJtc2coImNhbiBub3QgZmluZCBwYXJ0aXRpb24gZm9yIHNwbGl0IHBhcnRpdGlv biByb3ciKSwKKwkJCQkJCWVycnRhYmxlKHNwbGl0UmVsKSk7CisJCX0KKworCQlpZiAodHVwbGVf bWFwKQorCQl7CisJCQkvKiBOZWVkIHRvIHVzZSBhIG1hcCB0byBjb3B5IGF0dHJpYnV0ZXMuICov CisJCQlpbnNlcnRzbG90ID0gZXhlY3V0ZV9hdHRyX21hcF9zbG90KHR1cGxlX21hcC0+YXR0ck1h cCwgc3Jjc2xvdCwgcGMtPmRzdHNsb3QpOworCQl9CisJCWVsc2UKKwkJeworCQkJLyogRXh0cmFj dCBkYXRhIGZyb20gdGhlIG9sZCB0dXBsZS4gKi8KKwkJCXNsb3RfZ2V0YWxsYXR0cnMoc3Jjc2xv dCk7CisKKwkJCS8qIENvcHkgYXR0cmlidXRlcyBkaXJlY3RseS4gKi8KKwkJCWluc2VydHNsb3Qg PSBwYy0+ZHN0c2xvdDsKKworCQkJRXhlY0NsZWFyVHVwbGUoaW5zZXJ0c2xvdCk7CisKKwkJCW1l bWNweShpbnNlcnRzbG90LT50dHNfdmFsdWVzLCBzcmNzbG90LT50dHNfdmFsdWVzLAorCQkJCSAg IHNpemVvZihEYXR1bSkgKiBzcmNzbG90LT50dHNfbnZhbGlkKTsKKwkJCW1lbWNweShpbnNlcnRz bG90LT50dHNfaXNudWxsLCBzcmNzbG90LT50dHNfaXNudWxsLAorCQkJCSAgIHNpemVvZihib29s KSAqIHNyY3Nsb3QtPnR0c19udmFsaWQpOworCisJCQlFeGVjU3RvcmVWaXJ0dWFsVHVwbGUoaW5z ZXJ0c2xvdCk7CisJCX0KKworCQkvKgorCQkgKiBDb25zdHJhaW50cyBhbmQgR0VORVJBVEVEIGV4 cHJlc3Npb25zIG1pZ2h0IHJlZmVyZW5jZSB0aGUgdGFibGVvaWQKKwkJICogY29sdW1uLCBzbyBm aWxsIHR0c190YWJsZU9pZCB3aXRoIHRoZSBkZXNpcmVkIHZhbHVlLiAoV2UgbXVzdCBkbworCQkg KiB0aGlzIGVhY2ggdGltZSwgYmVjYXVzZSBpdCBnZXRzIG92ZXJ3cml0dGVuIHdpdGggbmV3cmVs J3MgT0lECisJCSAqIGR1cmluZyBzdG9yaW5nLikKKwkJICovCisJCWluc2VydHNsb3QtPnR0c190 YWJsZU9pZCA9IFJlbGF0aW9uR2V0UmVsaWQocGMtPnBhcnRSZWwpOworCisJCS8qCisJCSAqIE5v dywgZXZhbHVhdGUgYW55IGdlbmVyYXRlZCBleHByZXNzaW9ucyB3aG9zZSBpbnB1dHMgY29tZSBm cm9tIHRoZQorCQkgKiBuZXcgdHVwbGUuICBXZSBhc3N1bWUgdGhlc2UgY29sdW1ucyB3b24ndCBy ZWZlcmVuY2UgZWFjaCBvdGhlciwgc28KKwkJICogdGhhdCB0aGVyZSdzIG5vIG9yZGVyaW5nIGRl cGVuZGVuY3kuCisJCSAqLworCQlldmFsdWF0ZUdlbmVyYXRlZEV4cHJlc3Npb25zQW5kQ2hlY2tD b25zdHJhaW50cyhwYy0+dGFiLCBwYy0+cGFydFJlbCwKKwkJCQkJCQkJCQkJCQkJaW5zZXJ0c2xv dCwgZWNvbnRleHQpOworCisJCS8qIFdyaXRlIHRoZSB0dXBsZSBvdXQgdG8gdGhlIG5ldyByZWxh dGlvbi4gKi8KKwkJdGFibGVfdHVwbGVfaW5zZXJ0KHBjLT5wYXJ0UmVsLCBpbnNlcnRzbG90LCBt eWNpZCwKKwkJCQkJCSAgIHRpX29wdGlvbnMsIHBjLT5iaXN0YXRlKTsKKworCQlSZXNldEV4cHJD b250ZXh0KGVjb250ZXh0KTsKKwl9CisKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkQ3h0KTsK KworCXRhYmxlX2VuZHNjYW4oc2Nhbik7CisJVW5yZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsK KworCWlmICh0dXBsZV9tYXApCisJCWZyZWVfY29udmVyc2lvbl9tYXAodHVwbGVfbWFwKTsKKwor CUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc3Jjc2xvdCk7CisKKwlGcmVlRXhlY3V0b3JT dGF0ZShlc3RhdGUpOworCisJZm9yZWFjaF9wdHIoU3BsaXRQYXJ0aXRpb25Db250ZXh0LCBzcGMs IHBhcnRDb250ZXh0cykKKwkJZGVsZXRlU3BsaXRQYXJ0aXRpb25Db250ZXh0KHNwYywgd3F1ZXVl LCB0aV9vcHRpb25zKTsKK30KKworLyoKKyAqIEFMVEVSIFRBQkxFIDxuYW1lPiBTUExJVCBQQVJU SVRJT04gPHBhcnRpdGlvbi1uYW1lPiBJTlRPIDxwYXJ0aXRpb24tbGlzdD4KKyAqLworc3RhdGlj IHZvaWQKK0FURXhlY1NwbGl0UGFydGl0aW9uKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUlu Zm8gKnRhYiwgUmVsYXRpb24gcmVsLAorCQkJCQkgUGFydGl0aW9uQ21kICpjbWQsIEFsdGVyVGFi bGVVdGlsaXR5Q29udGV4dCAqY29udGV4dCkKK3sKKwlSZWxhdGlvbglzcGxpdFJlbDsKKwlPaWQJ CQlzcGxpdFJlbE9pZDsKKwlMaXN0Q2VsbCAgICpsaXN0cHRyLAorCQkJICAgKmxpc3RwdHIyOwor CWJvb2wJCWlzU2FtZU5hbWUgPSBmYWxzZTsKKwljaGFyCQl0bXBSZWxOYW1lW05BTUVEQVRBTEVO XTsKKwlMaXN0CSAgICpuZXdQYXJ0UmVscyA9IE5JTDsKKwlPYmplY3RBZGRyZXNzIG9iamVjdDsK KwlPaWQJCQlkZWZhdWx0UGFydE9pZDsKKwlPaWQJCQlzYXZlX3VzZXJpZDsKKwlpbnQJCQlzYXZl X3NlY19jb250ZXh0OworCWludAkJCXNhdmVfbmVzdGxldmVsOworCisJZGVmYXVsdFBhcnRPaWQg PSBnZXRfZGVmYXVsdF9vaWRfZnJvbV9wYXJ0ZGVzYyhSZWxhdGlvbkdldFBhcnRpdGlvbkRlc2Mo cmVsLCB0cnVlKSk7CisKKwkvKgorCSAqIFBhcnRpdGlvbiBpcyBhbHJlYWR5IGxvY2tlZCBpbiB0 aGUgdHJhbnNmb3JtUGFydGl0aW9uQ21kRm9yU3BsaXQKKwkgKiBmdW5jdGlvbi4KKwkgKi8KKwlz cGxpdFJlbCA9IHRhYmxlX29wZW5ydihjbWQtPm5hbWUsIE5vTG9jayk7CisKKwlzcGxpdFJlbE9p ZCA9IFJlbGF0aW9uR2V0UmVsaWQoc3BsaXRSZWwpOworCisJLyogQ2hlY2sgZGVzY3JpcHRpb25z IG9mIG5ldyBwYXJ0aXRpb25zLiAqLworCWZvcmVhY2hfbm9kZShTaW5nbGVQYXJ0aXRpb25TcGVj LCBzcHMsIGNtZC0+cGFydGxpc3QpCisJeworCQlPaWQJCQlleGlzdGluZ1JlbGlkOworCisJCS8q IExvb2sgdXAgdGhlIGV4aXN0aW5nIHJlbGF0aW9uIGJ5IHRoZSBuZXcgcGFydGl0aW9uIG5hbWUu ICovCisJCVJhbmdlVmFyR2V0QW5kQ2hlY2tDcmVhdGlvbk5hbWVzcGFjZShzcHMtPm5hbWUsIE5v TG9jaywgJmV4aXN0aW5nUmVsaWQpOworCisJCS8qCisJCSAqIFRoaXMgd291bGQgZmFpbCBsYXRl ciBvbiBhbnl3YXkgaWYgdGhlIHJlbGF0aW9uIGFscmVhZHkgZXhpc3RzLiBCdXQKKwkJICogYnkg Y2F0Y2hpbmcgaXQgaGVyZSwgd2UgY2FuIGVtaXQgYSBuaWNlciBlcnJvciBtZXNzYWdlLgorCQkg Ki8KKwkJaWYgKGV4aXN0aW5nUmVsaWQgPT0gc3BsaXRSZWxPaWQgJiYgIWlzU2FtZU5hbWUpCisJ CQkvKiBPbmUgbmV3IHBhcnRpdGlvbiBjYW4gaGF2ZSB0aGUgc2FtZSBuYW1lIGFzIGEgc3BsaXQg cGFydGl0aW9uLiAqLworCQkJaXNTYW1lTmFtZSA9IHRydWU7CisJCWVsc2UgaWYgKE9pZElzVmFs aWQoZXhpc3RpbmdSZWxpZCkpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNP REVfRFVQTElDQVRFX1RBQkxFKSwKKwkJCQkJZXJybXNnKCJyZWxhdGlvbiBcIiVzXCIgYWxyZWFk eSBleGlzdHMiLCBzcHMtPm5hbWUtPnJlbG5hbWUpKTsKKwl9CisKKwkvKiBEZXRhY2ggdGhlIHNw bGl0IHBhcnRpdGlvbi4gKi8KKwlkZXRhY2hQYXJ0aXRpb25UYWJsZShyZWwsIHNwbGl0UmVsLCBk ZWZhdWx0UGFydE9pZCk7CisKKwkvKgorCSAqIFBlcmZvcm0gYSBwcmVsaW1pbmFyeSBjaGVjayB0 byBkZXRlcm1pbmUgd2hldGhlciBpdCdzIHNhZmUgdG8gZHJvcCB0aGUKKwkgKiBzcGxpdCBwYXJ0 aXRpb24gYmVmb3JlIHdlIGFjdHVhbGx5IGRvIHNvIGxhdGVyLiBBZnRlciBtZXJnaW5nIHJvd3Mg aW50bworCSAqIHRoZSBuZXcgcGFydGl0aW9ucyB2aWEgU3BsaXRQYXJ0aXRpb25Nb3ZlUm93cywg YWxsIG9sZCBwYXJ0aXRpb25zIG5lZWQKKwkgKiB0byBiZSBkcm9wcGVkLiBIb3dldmVyLCBzaW5j ZSB0aGUgZHJvcCBiZWhhdmlvciBpcyBEUk9QX1JFU1RSSUNUIGFuZAorCSAqIHRoZSBtZXJnZSBw cm9jZXNzIChTcGxpdFBhcnRpdGlvbk1vdmVSb3dzKSBjYW4gYmUgdGltZS1jb25zdW1pbmcsCisJ ICogcGVyZm9ybWluZyBhbiBlYXJseSBjaGVjayBvbiB0aGUgZHJvcCBlbGlnaWJpbGl0eSBvZiBv bGQgcGFydGl0aW9ucyBpcworCSAqIHByZWZlcmFibGUuCisJICovCisJb2JqZWN0Lm9iamVjdElk ID0gc3BsaXRSZWxPaWQ7CisJb2JqZWN0LmNsYXNzSWQgPSBSZWxhdGlvblJlbGF0aW9uSWQ7CisJ b2JqZWN0Lm9iamVjdFN1YklkID0gMDsKKwlwZXJmb3JtRGVsZXRpb25DaGVjaygmb2JqZWN0LCBE Uk9QX1JFU1RSSUNULCBQRVJGT1JNX0RFTEVUSU9OX0lOVEVSTkFMKTsKKworCS8qCisJICogSWYg YSBuZXcgcGFydGl0aW9uIGhhcyB0aGUgc2FtZSBuYW1lIGFzIHRoZSBzcGxpdCBwYXJ0aXRpb24s IHRoZW4gd2UKKwkgKiBzaG91bGQgcmVuYW1lIHRoZSBzcGxpdCBwYXJ0aXRpb24gdG8gcmV1c2Ug aXRzIG5hbWUuCisJICovCisJaWYgKGlzU2FtZU5hbWUpCisJeworCQkvKgorCQkgKiBXZSBtdXN0 IGJ1bXAgdGhlIGNvbW1hbmQgY291bnRlciB0byBtYWtlIHRoZSBzcGxpdCBwYXJ0aXRpb24gdHVw bGUKKwkJICogdmlzaWJsZSBmb3IgcmVuYW1pbmcuCisJCSAqLworCQlDb21tYW5kQ291bnRlcklu Y3JlbWVudCgpOworCQkvKiBSZW5hbWUgcGFydGl0aW9uLiAqLworCQlzcHJpbnRmKHRtcFJlbE5h bWUsICJzcGxpdC0ldS0lWC10bXAiLCBSZWxhdGlvbkdldFJlbGlkKHJlbCksIE15UHJvY1BpZCk7 CisJCVJlbmFtZVJlbGF0aW9uSW50ZXJuYWwoc3BsaXRSZWxPaWQsIHRtcFJlbE5hbWUsIHRydWUs IGZhbHNlKTsKKworCQkvKgorCQkgKiBXZSBtdXN0IGJ1bXAgdGhlIGNvbW1hbmQgY291bnRlciB0 byBtYWtlIHRoZSBzcGxpdCBwYXJ0aXRpb24gdHVwbGUKKwkJICogdmlzaWJsZSBhZnRlciByZW5h bWluZy4KKwkJICovCisJCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CisJfQorCisJLyogQ3Jl YXRlIG5ldyBwYXJ0aXRpb25zIChsaWtlIGEgc3BsaXQgcGFydGl0aW9uKSwgd2l0aG91dCBpbmRl eGVzLiAqLworCWZvcmVhY2hfbm9kZShTaW5nbGVQYXJ0aXRpb25TcGVjLCBzcHMsIGNtZC0+cGFy dGxpc3QpCisJeworCQlSZWxhdGlvbgluZXdQYXJ0UmVsOworCisJCW5ld1BhcnRSZWwgPSBjcmVh dGVQYXJ0aXRpb25UYWJsZSh3cXVldWUsIHNwcy0+bmFtZSwgcmVsLAorCQkJCQkJCQkJCSAgc3Bs aXRSZWwtPnJkX3JlbC0+cmVsb3duZXIpOworCQluZXdQYXJ0UmVscyA9IGxhcHBlbmQobmV3UGFy dFJlbHMsIG5ld1BhcnRSZWwpOworCX0KKworCS8qCisJICogU3dpdGNoIHRvIHRoZSB0YWJsZSBv d25lcidzIHVzZXJpZCwgc28gdGhhdCBhbnkgaW5kZXggZnVuY3Rpb25zIGFyZSBydW4KKwkgKiBh cyB0aGF0IHVzZXIuICBBbHNvLCBsb2NrZG93biBzZWN1cml0eS1yZXN0cmljdGVkIG9wZXJhdGlv bnMgYW5kCisJICogYXJyYW5nZSB0byBtYWtlIEdVQyB2YXJpYWJsZSBjaGFuZ2VzIGxvY2FsIHRv IHRoaXMgY29tbWFuZC4KKwkgKgorCSAqIE5lZWQgdG8gZG8gaXQgYWZ0ZXIgZGV0ZXJtaW5pbmcg dGhlIG5hbWVzcGFjZSBpbiB0aGUKKwkgKiBjcmVhdGVQYXJ0aXRpb25UYWJsZSgpIGNhbGwuCisJ ICovCisJR2V0VXNlcklkQW5kU2VjQ29udGV4dCgmc2F2ZV91c2VyaWQsICZzYXZlX3NlY19jb250 ZXh0KTsKKwlTZXRVc2VySWRBbmRTZWNDb250ZXh0KHNwbGl0UmVsLT5yZF9yZWwtPnJlbG93bmVy LAorCQkJCQkJICAgc2F2ZV9zZWNfY29udGV4dCB8IFNFQ1VSSVRZX1JFU1RSSUNURURfT1BFUkFU SU9OKTsKKwlzYXZlX25lc3RsZXZlbCA9IE5ld0dVQ05lc3RMZXZlbCgpOworCVJlc3RyaWN0U2Vh cmNoUGF0aCgpOworCisJLyogQ29weSBkYXRhIGZyb20gdGhlIHNwbGl0IHBhcnRpdGlvbiB0byB0 aGUgbmV3IHBhcnRpdGlvbnMuICovCisJU3BsaXRQYXJ0aXRpb25Nb3ZlUm93cyh3cXVldWUsIHJl bCwgc3BsaXRSZWwsIGNtZC0+cGFydGxpc3QsIG5ld1BhcnRSZWxzKTsKKwkvKiBLZWVwIHRoZSBs b2NrIHVudGlsIGNvbW1pdC4gKi8KKwl0YWJsZV9jbG9zZShzcGxpdFJlbCwgTm9Mb2NrKTsKKwor CS8qIEF0dGFjaCBuZXcgcGFydGl0aW9ucyB0byB0aGUgcGFydGl0aW9uZWQgdGFibGUuICovCisJ Zm9yYm90aChsaXN0cHRyLCBjbWQtPnBhcnRsaXN0LCBsaXN0cHRyMiwgbmV3UGFydFJlbHMpCisJ eworCQlTaW5nbGVQYXJ0aXRpb25TcGVjICpzcHMgPSAoU2luZ2xlUGFydGl0aW9uU3BlYyAqKSBs Zmlyc3QobGlzdHB0cik7CisJCVJlbGF0aW9uCW5ld1BhcnRSZWwgPSAoUmVsYXRpb24pIGxmaXJz dChsaXN0cHRyMik7CisKKwkJLyoKKwkJICogd3F1ZXVlID0gTlVMTDogdmVyaWZpY2F0aW9uIGZv ciBlYWNoIGNsb25lZCBjb25zdHJhaW50IGlzIG5vdAorCQkgKiBuZWVkZWQuCisJCSAqLworCQlh dHRhY2hQYXJ0aXRpb25UYWJsZShOVUxMLCByZWwsIG5ld1BhcnRSZWwsIHNwcy0+Ym91bmQpOwor CQkvKiBLZWVwIHRoZSBsb2NrIHVudGlsIGNvbW1pdC4gKi8KKwkJdGFibGVfY2xvc2UobmV3UGFy dFJlbCwgTm9Mb2NrKTsKKwl9CisKKwkvKiBEcm9wIHRoZSBzcGxpdCBwYXJ0aXRpb24uICovCisJ b2JqZWN0LmNsYXNzSWQgPSBSZWxhdGlvblJlbGF0aW9uSWQ7CisJb2JqZWN0Lm9iamVjdElkID0g c3BsaXRSZWxPaWQ7CisJb2JqZWN0Lm9iamVjdFN1YklkID0gMDsKKwkvKiBQcm9iYWJseSBEUk9Q X0NBU0NBREUgaXMgbm90IG5lZWRlZC4gKi8KKwlwZXJmb3JtRGVsZXRpb24oJm9iamVjdCwgRFJP UF9SRVNUUklDVCwgMCk7CisKKwkvKiBSb2xsIGJhY2sgYW55IEdVQyBjaGFuZ2VzIGV4ZWN1dGVk IGJ5IGluZGV4IGZ1bmN0aW9ucy4gKi8KKwlBdEVPWGFjdF9HVUMoZmFsc2UsIHNhdmVfbmVzdGxl dmVsKTsKKworCS8qIFJlc3RvcmUgdGhlIHVzZXJpZCBhbmQgc2VjdXJpdHkgY29udGV4dC4gKi8K KwlTZXRVc2VySWRBbmRTZWNDb250ZXh0KHNhdmVfdXNlcmlkLCBzYXZlX3NlY19jb250ZXh0KTsK K30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9w YXJzZXIvZ3JhbS55CmluZGV4IDU2MmYxMWQ2Njc3Li4yOGY0ZTExZTMwZiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55 CkBAIC0yNjIsNiArMjYyLDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0 KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlQYXJ0aXRpb25F bGVtICpwYXJ0ZWxlbTsKIAlQYXJ0aXRpb25TcGVjICpwYXJ0c3BlYzsKIAlQYXJ0aXRpb25Cb3Vu ZFNwZWMgKnBhcnRib3VuZHNwZWM7CisJU2luZ2xlUGFydGl0aW9uU3BlYyAqc2luZ2xlcGFydHNw ZWM7CiAJUm9sZVNwZWMgICAqcm9sZXNwZWM7CiAJUHVibGljYXRpb25PYmpTcGVjICpwdWJsaWNh dGlvbm9iamVjdHNwZWM7CiAJUHVibGljYXRpb25BbGxPYmpTcGVjICpwdWJsaWNhdGlvbmFsbG9i amVjdHNwZWM7CkBAIC02NDgsNiArNjQ5LDggQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVW aWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKICV0 eXBlIDxwYXJ0ZWxlbT4JcGFydF9lbGVtCiAldHlwZSA8bGlzdD4JCXBhcnRfcGFyYW1zCiAldHlw ZSA8cGFydGJvdW5kc3BlYz4gUGFydGl0aW9uQm91bmRTcGVjCisldHlwZSA8c2luZ2xlcGFydHNw ZWM+CVNpbmdsZVBhcnRpdGlvblNwZWMKKyV0eXBlIDxsaXN0PgkJcGFydGl0aW9uc19saXN0CiAl dHlwZSA8bGlzdD4JCWhhc2hfcGFydGJvdW5kCiAldHlwZSA8ZGVmZWx0PgkJaGFzaF9wYXJ0Ym91 bmRfZWxlbQogCkBAIC03NzcsNyArNzgwLDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVW aWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlT QVZFUE9JTlQgU0NBTEFSIFNDSEVNQSBTQ0hFTUFTIFNDUk9MTCBTRUFSQ0ggU0VDT05EX1AgU0VD VVJJVFkgU0VMRUNUCiAJU0VRVUVOQ0UgU0VRVUVOQ0VTCiAJU0VSSUFMSVpBQkxFIFNFUlZFUiBT RVNTSU9OIFNFU1NJT05fVVNFUiBTRVQgU0VUUyBTRVRPRiBTSEFSRSBTSE9XCi0JU0lNSUxBUiBT SU1QTEUgU0tJUCBTTUFMTElOVCBTTkFQU0hPVCBTT01FIFNPVVJDRSBTUUxfUCBTVEFCTEUgU1RB TkRBTE9ORV9QCisJU0lNSUxBUiBTSU1QTEUgU0tJUCBTTUFMTElOVCBTTkFQU0hPVCBTT01FIFNQ TElUIFNPVVJDRSBTUUxfUCBTVEFCTEUgU1RBTkRBTE9ORV9QCiAJU1RBUlQgU1RBVEVNRU5UIFNU QVRJU1RJQ1MgU1RESU4gU1RET1VUIFNUT1JBR0UgU1RPUkVEIFNUUklDVF9QIFNUUklOR19QIFNU UklQX1AKIAlTVUJTQ1JJUFRJT04gU1VCU1RSSU5HIFNVUFBPUlQgU1lNTUVUUklDIFNZU0lEIFNZ U1RFTV9QIFNZU1RFTV9VU0VSCiAKQEAgLTIzODUsNiArMjM4OCwyMyBAQCBhbHRlcl90YWJsZV9j bWRzOgogCQkJfCBhbHRlcl90YWJsZV9jbWRzICcsJyBhbHRlcl90YWJsZV9jbWQJeyAkJCA9IGxh cHBlbmQoJDEsICQzKTsgfQogCQk7CiAKK3BhcnRpdGlvbnNfbGlzdDoKKwkJCVNpbmdsZVBhcnRp dGlvblNwZWMJCQkJCQkJeyAkJCA9IGxpc3RfbWFrZTEoJDEpOyB9CisJCQl8IHBhcnRpdGlvbnNf bGlzdCAnLCcgU2luZ2xlUGFydGl0aW9uU3BlYwl7ICQkID0gbGFwcGVuZCgkMSwgJDMpOyB9CisJ CTsKKworU2luZ2xlUGFydGl0aW9uU3BlYzoKKwkJCVBBUlRJVElPTiBxdWFsaWZpZWRfbmFtZSBQ YXJ0aXRpb25Cb3VuZFNwZWMKKwkJCQl7CisJCQkJCVNpbmdsZVBhcnRpdGlvblNwZWMgKm4gPSBt YWtlTm9kZShTaW5nbGVQYXJ0aXRpb25TcGVjKTsKKworCQkJCQluLT5uYW1lID0gJDI7CisJCQkJ CW4tPmJvdW5kID0gJDM7CisKKwkJCQkJJCQgPSBuOworCQkJCX0KKwkJOworCiBwYXJ0aXRpb25f Y21kOgogCQkJLyogQUxURVIgVEFCTEUgPG5hbWU+IEFUVEFDSCBQQVJUSVRJT04gPHRhYmxlX25h bWU+IEZPUiBWQUxVRVMgKi8KIAkJCUFUVEFDSCBQQVJUSVRJT04gcXVhbGlmaWVkX25hbWUgUGFy dGl0aW9uQm91bmRTcGVjCkBAIC0yNDI5LDYgKzI0NDksMjAgQEAgcGFydGl0aW9uX2NtZDoKIAkJ CQkJbi0+ZGVmID0gKE5vZGUgKikgY21kOwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJCQkJfQor CQkJLyogQUxURVIgVEFCTEUgPG5hbWU+IFNQTElUIFBBUlRJVElPTiA8cGFydGl0aW9uX25hbWU+ IElOVE8gKCkgKi8KKwkJCXwgU1BMSVQgUEFSVElUSU9OIHF1YWxpZmllZF9uYW1lIElOVE8gJygn IHBhcnRpdGlvbnNfbGlzdCAnKScKKwkJCQl7CisJCQkJCUFsdGVyVGFibGVDbWQgKm4gPSBtYWtl Tm9kZShBbHRlclRhYmxlQ21kKTsKKwkJCQkJUGFydGl0aW9uQ21kICpjbWQgPSBtYWtlTm9kZShQ YXJ0aXRpb25DbWQpOworCisJCQkJCW4tPnN1YnR5cGUgPSBBVF9TcGxpdFBhcnRpdGlvbjsKKwkJ CQkJY21kLT5uYW1lID0gJDM7CisJCQkJCWNtZC0+Ym91bmQgPSBOVUxMOworCQkJCQljbWQtPnBh cnRsaXN0ID0gJDY7CisJCQkJCWNtZC0+Y29uY3VycmVudCA9IGZhbHNlOworCQkJCQluLT5kZWYg PSAoTm9kZSAqKSBjbWQ7CisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9CiAJCQkvKiBBTFRF UiBUQUJMRSA8bmFtZT4gTUVSR0UgUEFSVElUSU9OUyAoKSBJTlRPIDxwYXJ0aXRpb25fbmFtZT4g Ki8KIAkJCXwgTUVSR0UgUEFSVElUSU9OUyAnKCcgcXVhbGlmaWVkX25hbWVfbGlzdCAnKScgSU5U TyBxdWFsaWZpZWRfbmFtZQogCQkJCXsKQEAgLTE4MTI2LDYgKzE4MTYwLDcgQEAgdW5yZXNlcnZl ZF9rZXl3b3JkOgogCQkJfCBTS0lQCiAJCQl8IFNOQVBTSE9UCiAJCQl8IFNPVVJDRQorCQkJfCBT UExJVAogCQkJfCBTUUxfUAogCQkJfCBTVEFCTEUKIAkJCXwgU1RBTkRBTE9ORV9QCkBAIC0xODc2 OCw2ICsxODgwMyw3IEBAIGJhcmVfbGFiZWxfa2V5d29yZDoKIAkJCXwgU05BUFNIT1QKIAkJCXwg U09NRQogCQkJfCBTT1VSQ0UKKwkJCXwgU1BMSVQKIAkJCXwgU1FMX1AKIAkJCXwgU1RBQkxFCiAJ CQl8IFNUQU5EQUxPTkVfUApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0 aWxjbWQuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKaW5kZXggYmYwMmUz ODc4NWQuLjM3NWI0MGIyOWFmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf dXRpbGNtZC5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKQEAgLTEz Nyw3ICsxMzcsNyBAQCBzdGF0aWMgdm9pZCB0cmFuc2Zvcm1Db25zdHJhaW50QXR0cnMoQ3JlYXRl U3RtdENvbnRleHQgKmN4dCwKIAkJCQkJCQkJCSBMaXN0ICpjb25zdHJhaW50TGlzdCk7CiBzdGF0 aWMgdm9pZCB0cmFuc2Zvcm1Db2x1bW5UeXBlKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIENvbHVt bkRlZiAqY29sdW1uKTsKIHN0YXRpYyB2b2lkIHNldFNjaGVtYU5hbWUoY29uc3QgY2hhciAqY29u dGV4dF9zY2hlbWEsIGNoYXIgKipzdG10X3NjaGVtYV9uYW1lKTsKLXN0YXRpYyB2b2lkIHRyYW5z Zm9ybVBhcnRpdGlvbkNtZChDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBQYXJ0aXRpb25DbWQgKmNt ZCk7CitzdGF0aWMgdm9pZCB0cmFuc2Zvcm1QYXJ0aXRpb25DbWQoQ3JlYXRlU3RtdENvbnRleHQg KmN4dCwgUGFydGl0aW9uQm91bmRTcGVjICpib3VuZCk7CiBzdGF0aWMgTGlzdCAqdHJhbnNmb3Jt UGFydGl0aW9uUmFuZ2VCb3VuZHMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpibGlzdCwKIAkJ CQkJCQkJCQkgICBSZWxhdGlvbiBwYXJlbnQpOwogc3RhdGljIHZvaWQgdmFsaWRhdGVJbmZpbml0 ZUJvdW5kcyhQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKmJsaXN0KTsKQEAgLTM1MTUsOSArMzUx NSwxMSBAQCB0cmFuc2Zvcm1SdWxlU3RtdChSdWxlU3RtdCAqc3RtdCwgY29uc3QgY2hhciAqcXVl cnlTdHJpbmcsCiAvKgogICogY2hlY2tQYXJ0aXRpb24KICAqIENoZWNrIHdoZXRoZXIgcGFydFJl bE9pZCBpcyBhIGxlYWYgcGFydGl0aW9uIG9mIHRoZSBwYXJlbnQgdGFibGUgKHJlbCkuCisgKiBp c01lcmdlOiB0cnVlIGluZGljYXRlcyB0aGUgb3BlcmF0aW9uIGlzICJBTFRFUiBUQUJMRSAuLi4g TUVSR0UgUEFSVElUSU9OUyI7CisgKiBmYWxzZSBpbmRpY2F0ZXMgdGhlIG9wZXJhdGlvbiBpcyAi QUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTiIuCiAgKi8KIHN0YXRpYyB2b2lkCi1jaGVj a1BhcnRpdGlvbihSZWxhdGlvbiByZWwsIE9pZCBwYXJ0UmVsT2lkKQorY2hlY2tQYXJ0aXRpb24o UmVsYXRpb24gcmVsLCBPaWQgcGFydFJlbE9pZCwgYm9vbCBpc01lcmdlKQogewogCVJlbGF0aW9u CXBhcnRSZWw7CiAKQEAgLTM1MjcsMjUgKzM1MjksMTc2IEBAIGNoZWNrUGFydGl0aW9uKFJlbGF0 aW9uIHJlbCwgT2lkIHBhcnRSZWxPaWQpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJZXJyY29kZShF UlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKIAkJCQllcnJtc2coIlwiJXNcIiBpcyBub3QgYSB0 YWJsZSIsIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHBhcnRSZWwpKSwKLQkJCQllcnJoaW50KCJB TFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyBjYW4gb25seSBtZXJnZSBwYXJ0aXRpb25z IGRvbid0IGhhdmUgc3ViLXBhcnRpdGlvbnMiKSk7CisJCQkJaXNNZXJnZQorCQkJCT8gZXJyaGlu dCgiQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgY2FuIG9ubHkgbWVyZ2UgcGFydGl0 aW9ucyBkb24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25zIikKKwkJCQk6IGVycmhpbnQoIkFMVEVSIFRB QkxFIC4uLiBTUExJVCBQQVJUSVRJT04gY2FuIG9ubHkgc3BsaXQgcGFydGl0aW9ucyBkb24ndCBo YXZlIHN1Yi1wYXJ0aXRpb25zIikpOwogCiAJaWYgKCFwYXJ0UmVsLT5yZF9yZWwtPnJlbGlzcGFy dGl0aW9uKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCWVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpF Q1RfVFlQRSksCiAJCQkJZXJybXNnKCJcIiVzXCIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHBhcnRp dGlvbmVkIHRhYmxlIFwiJXNcIiIsCiAJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHBh cnRSZWwpLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSwKLQkJCQllcnJoaW50KCJBTFRF UiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyBjYW4gb25seSBtZXJnZSBwYXJ0aXRpb25zIGRv bid0IGhhdmUgc3ViLXBhcnRpdGlvbnMiKSk7CisJCQkJaXNNZXJnZQorCQkJCT8gZXJyaGludCgi QUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgY2FuIG9ubHkgbWVyZ2UgcGFydGl0aW9u cyBkb24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25zIikKKwkJCQk6IGVycmhpbnQoIkFMVEVSIFRBQkxF IC4uLiBTUExJVCBQQVJUSVRJT04gY2FuIG9ubHkgc3BsaXQgcGFydGl0aW9ucyBkb24ndCBoYXZl IHN1Yi1wYXJ0aXRpb25zIikpOwogCiAJaWYgKGdldF9wYXJ0aXRpb25fcGFyZW50KHBhcnRSZWxP aWQsIGZhbHNlKSAhPSBSZWxhdGlvbkdldFJlbGlkKHJlbCkpCiAJCWVyZXBvcnQoRVJST1IsCiAJ CQkJZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9UQUJMRSksCiAJCQkJZXJybXNnKCJyZWxhdGlv biBcIiVzXCIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHJlbGF0aW9uIFwiJXNcIiIsCiAJCQkJCSAg IFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHBhcnRSZWwpLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFt ZShyZWwpKSwKLQkJCQllcnJoaW50KCJBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyBj YW4gb25seSBtZXJnZSBwYXJ0aXRpb25zIGRvbid0IGhhdmUgc3ViLXBhcnRpdGlvbnMiKSk7CisJ CQkJaXNNZXJnZQorCQkJCT8gZXJyaGludCgiQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElP TlMgY2FuIG9ubHkgbWVyZ2UgcGFydGl0aW9ucyBkb24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25zIikK KwkJCQk6IGVycmhpbnQoIkFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT04gY2FuIG9ubHkg c3BsaXQgcGFydGl0aW9ucyBkb24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25zIikpOwogCiAJdGFibGVf Y2xvc2UocGFydFJlbCwgTm9Mb2NrKTsKIH0KIAorLyoKKyAqIHRyYW5zZm9ybVBhcnRpdGlvbkNt ZEZvclNwbGl0IC0KKyAqCQlhbmFseXplIHRoZSBBTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFSVElU SU9OIGNvbW1hbmQKKyAqCisgKiBGb3IgZWFjaCBuZXcgcGFydGl0aW9uLCBzcHMtPmJvdW5kIGlz IHNldCB0byB0aGUgdHJhbnNmb3JtZWQgdmFsdWUgb2YgYm91bmQuCisgKiBEb2VzIGNoZWNrcyBm b3IgYm91bmRzIG9mIG5ldyBwYXJ0aXRpb25zLgorICovCitzdGF0aWMgdm9pZAordHJhbnNmb3Jt UGFydGl0aW9uQ21kRm9yU3BsaXQoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgUGFydGl0aW9uQ21k ICpwYXJ0Y21kKQoreworCVJlbGF0aW9uCXBhcmVudCA9IGN4dC0+cmVsOworCVBhcnRpdGlvbktl eSBrZXk7CisJY2hhcgkJc3RyYXRlZ3k7CisJT2lkCQkJc3BsaXRQYXJ0T2lkOworCU9pZAkJCWRl ZmF1bHRQYXJ0T2lkOworCWludAkJCWRlZmF1bHRfaW5kZXggPSAtMTsKKwlib29sCQlpc1NwbGl0 UGFydERlZmF1bHQ7CisJTGlzdENlbGwgICAqbGlzdHB0ciwKKwkJCSAgICpsaXN0cHRyMjsKKwlM aXN0CSAgICpzcGxpdGxpc3Q7CisKKwlzcGxpdGxpc3QgPSBwYXJ0Y21kLT5wYXJ0bGlzdDsKKwlr ZXkgPSBSZWxhdGlvbkdldFBhcnRpdGlvbktleShwYXJlbnQpOworCXN0cmF0ZWd5ID0gZ2V0X3Bh cnRpdGlvbl9zdHJhdGVneShrZXkpOworCWRlZmF1bHRQYXJ0T2lkID0gZ2V0X2RlZmF1bHRfb2lk X2Zyb21fcGFydGRlc2MoUmVsYXRpb25HZXRQYXJ0aXRpb25EZXNjKHBhcmVudCwgdHJ1ZSkpOwor CisJLyogVHJhbnNmb3JtIHBhcnRpdGlvbiBib3VuZHMgZm9yIGFsbCBwYXJ0aXRpb25zIGluIHRo ZSBsaXN0OiAqLworCWZvcmVhY2hfbm9kZShTaW5nbGVQYXJ0aXRpb25TcGVjLCBzcHMsIHNwbGl0 bGlzdCkKKwl7CisJCWN4dC0+cGFydGJvdW5kID0gTlVMTDsKKwkJdHJhbnNmb3JtUGFydGl0aW9u Q21kKGN4dCwgc3BzLT5ib3VuZCk7CisJCS8qIEFzc2lnbiB0aGUgdHJhbnNmb3JtZWQgdmFsdWUg b2YgdGhlIHBhcnRpdGlvbiBib3VuZC4gKi8KKwkJc3BzLT5ib3VuZCA9IGN4dC0+cGFydGJvdW5k OworCX0KKworCS8qCisJICogT3BlbiBhbmQgbG9jayB0aGUgcGFydGl0aW9uLCBjaGVjayBvd25l cnNoaXAgYWxvbmcgdGhlIHdheS4gV2UgbmVlZCB0bworCSAqIHVzZSBBY2Nlc3NFeGNsdXNpdmVM b2NrIGhlcmUgYmVjYXVzZSB0aGlzIHNwbGl0IHBhcnRpdGlvbiB3aWxsIGJlCisJICogZGV0YWNo ZWQsIHRoZW4gZHJvcHBlZCBpbiBBVEV4ZWNTcGxpdFBhcnRpdGlvbi4KKwkgKi8KKwlzcGxpdFBh cnRPaWQgPSBSYW5nZVZhckdldFJlbGlkRXh0ZW5kZWQocGFydGNtZC0+bmFtZSwgQWNjZXNzRXhj bHVzaXZlTG9jaywKKwkJCQkJCQkJCQkJMCwgUmFuZ2VWYXJDYWxsYmFja093bnNSZWxhdGlvbiwK KwkJCQkJCQkJCQkJTlVMTCk7CisKKwljaGVja1BhcnRpdGlvbihwYXJlbnQsIHNwbGl0UGFydE9p ZCwgZmFsc2UpOworCisJc3dpdGNoIChzdHJhdGVneSkKKwl7CisJCWNhc2UgUEFSVElUSU9OX1NU UkFURUdZX0xJU1Q6CisJCWNhc2UgUEFSVElUSU9OX1NUUkFURUdZX1JBTkdFOgorCQkJeworCQkJ CWZvcmVhY2hfbm9kZShTaW5nbGVQYXJ0aXRpb25TcGVjLCBzcHMsIHNwbGl0bGlzdCkKKwkJCQl7 CisJCQkJCWlmIChzcHMtPmJvdW5kLT5pc19kZWZhdWx0KQorCQkJCQl7CisJCQkJCQlpZiAoZGVm YXVsdF9pbmRleCAhPSAtMSkKKwkJCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCQkJZXJyY29k ZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJCQkJZXJybXNnKCJE RUZBVUxUIHBhcnRpdGlvbiBzaG91bGQgYmUgb25lIiksCisJCQkJCQkJCQlwYXJzZXJfZXJycG9z aXRpb24oY3h0LT5wc3RhdGUsIHNwcy0+bmFtZS0+bG9jYXRpb24pKTsKKworCQkJCQkJZGVmYXVs dF9pbmRleCA9IGZvcmVhY2hfY3VycmVudF9pbmRleChzcHMpOworCQkJCQl9CisJCQkJfQorCQkJ fQorCQkJYnJlYWs7CisKKwkJY2FzZSBQQVJUSVRJT05fU1RSQVRFR1lfSEFTSDoKKwkJCWVyZXBv cnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAor CQkJCQllcnJtc2coInBhcnRpdGlvbiBvZiBoYXNoLXBhcnRpdGlvbmVkIHRhYmxlIGNhbm5vdCBi ZSBzcGxpdCIpKTsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAidW5l eHBlY3RlZCBwYXJ0aXRpb24gc3RyYXRlZ3k6ICVkIiwKKwkJCQkgKGludCkga2V5LT5zdHJhdGVn eSk7CisJCQlicmVhazsKKwl9CisKKwkvKiBpc1NwbGl0UGFydERlZmF1bHQ6IGlzIHRoZSBiZWlu ZyBzcGxpdCBwYXJ0aXRpb24gYSBERUZBVUxUIHBhcnRpdGlvbj8gKi8KKwlpc1NwbGl0UGFydERl ZmF1bHQgPSAoZGVmYXVsdFBhcnRPaWQgPT0gc3BsaXRQYXJ0T2lkKTsKKworCWlmIChpc1NwbGl0 UGFydERlZmF1bHQgJiYgZGVmYXVsdF9pbmRleCA9PSAtMSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJ CQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJZXJybXNn KCJjYW4gbm90IHNwbGl0IERFRkFVTFQgcGFydGl0aW9uIFwiJXNcIiIsCisJCQkJCSAgIGdldF9y ZWxfbmFtZShzcGxpdFBhcnRPaWQpKSwKKwkJCQllcnJoaW50KCJUbyBzcGxpdCBERUZBVUxUIHBh cnRpdGlvbiBvbmUgb2YgdGhlIG5ldyBwYXJ0aXRpb24gbXN1dCBiZSBERUZBVUxUIiksCisJCQkJ cGFyc2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0YXRlLCAoKFNpbmdsZVBhcnRpdGlvblNwZWMgKikg bGluaXRpYWwoc3BsaXRsaXN0KSktPm5hbWUtPmxvY2F0aW9uKSk7CisKKwkvKgorCSAqIElmIHRo ZSBwYXJ0aXRpb24gYmVpbmcgc3BsaXQgaXMgbm90IHRoZSBERUZBVUxUIHBhcnRpdGlvbiwgYnV0 IHRoZQorCSAqIERFRkFVTFQgcGFydGl0aW9uIGV4aXN0cywgdGhlbiBub25lIG9mIHRoZSByZXN1 bHRpbmcgc3BsaXQgcGFydGl0aW9ucworCSAqIGNhbiBiZSB0aGUgREVGQVVMVC4KKwkgKi8KKwlp ZiAoIWlzU3BsaXRQYXJ0RGVmYXVsdCAmJiAoZGVmYXVsdF9pbmRleCAhPSAtMSkgJiYgT2lkSXNW YWxpZChkZWZhdWx0UGFydE9pZCkpCisJeworCQlTaW5nbGVQYXJ0aXRpb25TcGVjICpzcHNEZWYg PQorCQkJKFNpbmdsZVBhcnRpdGlvblNwZWMgKikgbGlzdF9udGgoc3BsaXRsaXN0LCBkZWZhdWx0 X2luZGV4KTsKKworCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElE X09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQllcnJtc2coImNhbiBub3Qgc3BsaXQgbm9uLURFRkFV TFQgcGFydGl0aW9uIFwiJXNcIiIsCisJCQkJCSAgIGdldF9yZWxfbmFtZShzcGxpdFBhcnRPaWQp KSwKKwkJCQllcnJtc2coIm5ldyBwYXJ0aXRpb24gY2Fubm90IGJlIERFRkFVTFQgYmVjYXVzZSBE RUZBVUxUIHBhcnRpdGlvbiBcIiVzXCIgYWxyZWFkeSBleGlzdHMiLAorCQkJCQkgICBnZXRfcmVs X25hbWUoZGVmYXVsdFBhcnRPaWQpKSwKKwkJCQlwYXJzZXJfZXJycG9zaXRpb24oY3h0LT5wc3Rh dGUsIHNwc0RlZi0+bmFtZS0+bG9jYXRpb24pKTsKKwl9CisKKwlmb3JlYWNoKGxpc3RwdHIsIHNw bGl0bGlzdCkKKwl7CisJCU9pZAkJCW5zcGlkOworCQlTaW5nbGVQYXJ0aXRpb25TcGVjICpzcHMg PSAoU2luZ2xlUGFydGl0aW9uU3BlYyAqKSBsZmlyc3QobGlzdHB0cik7CisJCVJhbmdlVmFyICAg Km5hbWUgPSBzcHMtPm5hbWU7CisKKwkJbnNwaWQgPSBSYW5nZVZhckdldENyZWF0aW9uTmFtZXNw YWNlKHNwcy0+bmFtZSk7CisKKwkJLyogUGFydGl0aW9ucyBpbiB0aGUgbGlzdCBzaG91bGQgaGF2 ZSBkaWZmZXJlbnQgbmFtZXMuICovCisJCWZvcl9lYWNoX2NlbGwobGlzdHB0cjIsIHNwbGl0bGlz dCwgbG5leHQoc3BsaXRsaXN0LCBsaXN0cHRyKSkKKwkJeworCQkJT2lkCQkJbnNwaWQyOworCQkJ U2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzMiA9IChTaW5nbGVQYXJ0aXRpb25TcGVjICopIGxmaXJz dChsaXN0cHRyMik7CisJCQlSYW5nZVZhciAgICpuYW1lMiA9IHNwczItPm5hbWU7CisKKwkJCWlm IChlcXVhbChuYW1lLCBuYW1lMikpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUo RVJSQ09ERV9EVVBMSUNBVEVfVEFCTEUpLAorCQkJCQkJZXJybXNnKCJwYXJ0aXRpb24gd2l0aCBu YW1lIFwiJXNcIiBpcyBhbHJlYWR5IHVzZWQiLCBuYW1lLT5yZWxuYW1lKSwKKwkJCQkJCXBhcnNl cl9lcnJwb3NpdGlvbihjeHQtPnBzdGF0ZSwgbmFtZTItPmxvY2F0aW9uKSk7CisKKwkJCW5zcGlk MiA9IFJhbmdlVmFyR2V0Q3JlYXRpb25OYW1lc3BhY2Uoc3BzMi0+bmFtZSk7CisKKwkJCWlmIChu c3BpZDIgPT0gbnNwaWQgJiYgc3RyY21wKG5hbWUtPnJlbG5hbWUsIG5hbWUyLT5yZWxuYW1lKSA9 PSAwKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfRFVQTElDQVRF X1RBQkxFKSwKKwkJCQkJCWVycm1zZygicGFydGl0aW9uIHdpdGggbmFtZSBcIiVzXCIgaXMgYWxy ZWFkeSB1c2VkIiwgbmFtZS0+cmVsbmFtZSksCisJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24oY3h0 LT5wc3RhdGUsIG5hbWUyLT5sb2NhdGlvbikpOworCQl9CisJfQorCisJLyogVGhlbiB3ZSBzaG91 bGQgY2hlY2sgcGFydGl0aW9ucyB3aXRoIHRyYW5zZm9ybWVkIGJvdW5kcy4gKi8KKwljaGVja19w YXJ0aXRpb25zX2Zvcl9zcGxpdChwYXJlbnQsIHNwbGl0UGFydE9pZCwgc3BsaXRsaXN0LCBjeHQt PnBzdGF0ZSk7Cit9CisKKwogLyoKICAqIHRyYW5zZm9ybVBhcnRpdGlvbkNtZEZvck1lcmdlIC0K ICAqCQlhbmFseXplIHRoZSBBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyBjb21tYW5k CkBAIC0zNjIyLDcgKzM3NzUsNyBAQCB0cmFuc2Zvcm1QYXJ0aXRpb25DbWRGb3JNZXJnZShDcmVh dGVTdG10Q29udGV4dCAqY3h0LCBQYXJ0aXRpb25DbWQgKnBhcnRjbWQpCiAJCQkJCQlwYXJzZXJf ZXJycG9zaXRpb24oY3h0LT5wc3RhdGUsIG5hbWUtPmxvY2F0aW9uKSk7CiAJCX0KIAotCQljaGVj a1BhcnRpdGlvbihwYXJlbnQsIHBhcnRPaWQpOworCQljaGVja1BhcnRpdGlvbihwYXJlbnQsIHBh cnRPaWQsIHRydWUpOwogCiAJCXBhcnRPaWRzID0gbGFwcGVuZF9vaWQocGFydE9pZHMsIHBhcnRP aWQpOwogCX0KQEAgLTM5MTAsOCArNDA2Myw4IEBAIHRyYW5zZm9ybUFsdGVyVGFibGVTdG10KE9p ZCByZWxpZCwgQWx0ZXJUYWJsZVN0bXQgKnN0bXQsCiAJCQkJewogCQkJCQlQYXJ0aXRpb25DbWQg KnBhcnRjbWQgPSAoUGFydGl0aW9uQ21kICopIGNtZC0+ZGVmOwogCi0JCQkJCXRyYW5zZm9ybVBh cnRpdGlvbkNtZCgmY3h0LCBwYXJ0Y21kKTsKLQkJCQkJLyogYXNzaWduIHRyYW5zZm9ybWVkIHZh bHVlIG9mIHRoZSBwYXJ0aXRpb24gYm91bmQgKi8KKwkJCQkJdHJhbnNmb3JtUGFydGl0aW9uQ21k KCZjeHQsIHBhcnRjbWQtPmJvdW5kKTsKKwkJCQkJLyogYXNzaWduIHRoZSB0cmFuc2Zvcm1lZCB2 YWx1ZSBvZiB0aGUgcGFydGl0aW9uIGJvdW5kICovCiAJCQkJCXBhcnRjbWQtPmJvdW5kID0gY3h0 LnBhcnRib3VuZDsKIAkJCQl9CiAKQEAgLTM5MzIsNiArNDA4NSwyMCBAQCB0cmFuc2Zvcm1BbHRl clRhYmxlU3RtdChPaWQgcmVsaWQsIEFsdGVyVGFibGVTdG10ICpzdG10LAogCQkJCQlicmVhazsK IAkJCQl9CiAKKwkJCWNhc2UgQVRfU3BsaXRQYXJ0aXRpb246CisJCQkJeworCQkJCQlQYXJ0aXRp b25DbWQgKnBhcnRjbWQgPSAoUGFydGl0aW9uQ21kICopIGNtZC0+ZGVmOworCisJCQkJCWlmIChs aXN0X2xlbmd0aChwYXJ0Y21kLT5wYXJ0bGlzdCkgPCAyKQorCQkJCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJ CQkJCQllcnJtc2coImxpc3Qgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIGNvbnRhaW4gYXQgbGVh c3QgdHdvIHBhcnRpdGlvbnMiKSk7CisKKwkJCQkJdHJhbnNmb3JtUGFydGl0aW9uQ21kRm9yU3Bs aXQoJmN4dCwgcGFydGNtZCk7CisJCQkJCW5ld2NtZHMgPSBsYXBwZW5kKG5ld2NtZHMsIGNtZCk7 CisJCQkJCWJyZWFrOworCQkJCX0KKwogCQkJZGVmYXVsdDoKIAogCQkJCS8qCkBAIC00MzYyLDEz ICs0NTI5LDEzIEBAIHNldFNjaGVtYU5hbWUoY29uc3QgY2hhciAqY29udGV4dF9zY2hlbWEsIGNo YXIgKipzdG10X3NjaGVtYV9uYW1lKQogCiAvKgogICogdHJhbnNmb3JtUGFydGl0aW9uQ21kCi0g KgkJQW5hbHl6ZSB0aGUgQVRUQUNIL0RFVEFDSCBQQVJUSVRJT04gY29tbWFuZAorICoJCUFuYWx5 emUgdGhlIEFUVEFDSC9ERVRBQ0gvU1BMSVQgUEFSVElUSU9OIGNvbW1hbmQKICAqCi0gKiBJbiBj YXNlIG9mIHRoZSBBVFRBQ0ggUEFSVElUSU9OIGNvbW1hbmQsIGN4dC0+cGFydGJvdW5kIGlzIHNl dCB0byB0aGUKLSAqIHRyYW5zZm9ybWVkIHZhbHVlIG9mIGNtZC0+Ym91bmQuCisgKiBJbiBjYXNl IG9mIHRoZSBBVFRBQ0gvU1BMSVQgUEFSVElUSU9OIGNvbW1hbmQsIGN4dC0+cGFydGJvdW5kIGlz IHNldCB0byB0aGUKKyAqIHRyYW5zZm9ybWVkIHZhbHVlIG9mIGJvdW5kLgogICovCiBzdGF0aWMg dm9pZAotdHJhbnNmb3JtUGFydGl0aW9uQ21kKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFBhcnRp dGlvbkNtZCAqY21kKQordHJhbnNmb3JtUGFydGl0aW9uQ21kKENyZWF0ZVN0bXRDb250ZXh0ICpj eHQsIFBhcnRpdGlvbkJvdW5kU3BlYyAqYm91bmQpCiB7CiAJUmVsYXRpb24JcGFyZW50UmVsID0g Y3h0LT5yZWw7CiAKQEAgLTQzNzcsOSArNDU0NCw5IEBAIHRyYW5zZm9ybVBhcnRpdGlvbkNtZChD cmVhdGVTdG10Q29udGV4dCAqY3h0LCBQYXJ0aXRpb25DbWQgKmNtZCkKIAkJY2FzZSBSRUxLSU5E X1BBUlRJVElPTkVEX1RBQkxFOgogCQkJLyogdHJhbnNmb3JtIHRoZSBwYXJ0aXRpb24gYm91bmQs IGlmIGFueSAqLwogCQkJQXNzZXJ0KFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudFJlbCkg IT0gTlVMTCk7Ci0JCQlpZiAoY21kLT5ib3VuZCAhPSBOVUxMKQorCQkJaWYgKGJvdW5kICE9IE5V TEwpCiAJCQkJY3h0LT5wYXJ0Ym91bmQgPSB0cmFuc2Zvcm1QYXJ0aXRpb25Cb3VuZChjeHQtPnBz dGF0ZSwgcGFyZW50UmVsLAotCQkJCQkJCQkJCQkJCQkgY21kLT5ib3VuZCk7CisJCQkJCQkJCQkJ CQkJCSBib3VuZCk7CiAJCQlicmVhazsKIAkJY2FzZSBSRUxLSU5EX1BBUlRJVElPTkVEX0lOREVY OgogCkBAIC00Mzg3LDcgKzQ1NTQsNyBAQCB0cmFuc2Zvcm1QYXJ0aXRpb25DbWQoQ3JlYXRlU3Rt dENvbnRleHQgKmN4dCwgUGFydGl0aW9uQ21kICpjbWQpCiAJCQkgKiBBIHBhcnRpdGlvbmVkIGlu ZGV4IGNhbm5vdCBoYXZlIGEgcGFydGl0aW9uIGJvdW5kIHNldC4gIEFMVEVSCiAJCQkgKiBJTkRF WCBwcmV2ZW50cyB0aGF0IHdpdGggaXRzIGdyYW1tYXIsIGJ1dCBub3QgQUxURVIgVEFCTEUuCiAJ CQkgKi8KLQkJCWlmIChjbWQtPmJvdW5kICE9IE5VTEwpCisJCQlpZiAoYm91bmQgIT0gTlVMTCkK IAkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVD VF9ERUZJTklUSU9OKSwKIAkJCQkJCSBlcnJtc2coIlwiJXNcIiBpcyBub3QgYSBwYXJ0aXRpb25l ZCB0YWJsZSIsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5k cy5jIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYwppbmRleCBiODJiMjlk ZThmNy4uYjdmOTBhZTEwOWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9w YXJ0Ym91bmRzLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYwpA QCAtMTcsNiArMTcsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy9yZWxhdGlvbi5oIgogI2luY2x1ZGUg ImFjY2Vzcy90YWJsZS5oIgogI2luY2x1ZGUgImFjY2Vzcy90YWJsZWFtLmgiCisjaW5jbHVkZSAi Y2F0YWxvZy9uYW1lc3BhY2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BhcnRpdGlvbi5oIgogI2lu Y2x1ZGUgImNhdGFsb2cvcGdfaW5oZXJpdHMuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUu aCIKQEAgLTQ5NzQsMTUgKzQ5NzUsMjIgQEAgc2F0aXNmaWVzX2hhc2hfcGFydGl0aW9uKFBHX0ZV TkNUSU9OX0FSR1MpCiAgKgogICogKGZ1bmN0aW9uIGZvciBCWSBSQU5HRSBwYXJ0aXRpb25pbmcp CiAgKgotICogVGhpcyBpcyBhIGhlbHBlciBmdW5jdGlvbiBmb3IgY2FsY3VsYXRlX3BhcnRpdGlv bl9ib3VuZF9mb3JfbWVyZ2UoKS4gVGhpcwotICogZnVuY3Rpb24gY29tcGFyZXMgdGhlIHVwcGVy IGJvdW5kIG9mIGZpcnN0X2JvdW5kIGFuZCB0aGUgbG93ZXIgYm91bmQgb2YKLSAqIHNlY29uZF9i b3VuZC4gVGhlc2UgYm91bmRzIHNob3VsZCBiZSBlcXVhbC4KKyAqIFRoaXMgaXMgYSBoZWxwZXIg ZnVuY3Rpb24gZm9yIGNoZWNrX3BhcnRpdGlvbnNfZm9yX3NwbGl0KCkgYW5kCisgKiBjYWxjdWxh dGVfcGFydGl0aW9uX2JvdW5kX2Zvcl9tZXJnZSgpLiAgVGhpcyBmdW5jdGlvbiBjb21wYXJlcyB0 aGUgdXBwZXIKKyAqIGJvdW5kIG9mIGZpcnN0X2JvdW5kIGFuZCB0aGUgbG93ZXIgYm91bmQgb2Yg c2Vjb25kX2JvdW5kLiAgVGhlc2UgYm91bmRzCisgKiBzaG91bGQgYmUgZXF1YWwgZXhjZXB0IHdo ZW4gImRlZmF1bHRQYXJ0ID09IHRydWUiICh0aGlzIG1lYW5zIHRoYXQgb25lIG9mCisgKiB0aGUg c3BsaXQgcGFydGl0aW9ucyBpcyBERUZBVUxUKS4gIEluIHRoaXMgY2FzZSwgdGhlIHVwcGVyIGJv dW5kIG9mCisgKiBmaXJzdF9ib3VuZCBjYW4gYmUgbGVzcyB0aGFuIHRoZSBsb3dlciBib3VuZCBv ZiBzZWNvbmRfYm91bmQgYmVjYXVzZQorICogdGhlIHNwYWNlIGJldHdlZW4gdGhlc2UgYm91bmRz IHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIERFRkFVTFQgcGFydGl0aW9uLgogICoKICAqIHBhcmVu dDoJCQlwYXJ0aXRpb25lZCB0YWJsZQogICogZmlyc3RfbmFtZToJCW5hbWUgb2YgdGhlIGZpcnN0 IHBhcnRpdGlvbgogICogZmlyc3RfYm91bmQ6CQlib3VuZCBvZiB0aGUgZmlyc3QgcGFydGl0aW9u CiAgKiBzZWNvbmRfbmFtZToJCW5hbWUgb2YgdGhlIHNlY29uZCBwYXJ0aXRpb24KICAqIHNlY29u ZF9ib3VuZDoJYm91bmQgb2YgdGhlIHNlY29uZCBwYXJ0aXRpb24KKyAqIGRlZmF1bHRQYXJ0OgkJ dHJ1ZSBpZiBvbmUgb2YgdGhlIG5ldyBwYXJ0aXRpb25zIGlzIERFRkFVTFQKKyAqIGlzX21lcmdl OgkJdHJ1ZSBuZGljYXRlcyB0aGUgb3BlcmF0aW9uIGlzIE1FUkdFIFBBUlRJVElPTlM7CisgKiAJ CQkJCWZhbHNlIGluZGljYXRlcyB0aGUgb3BlcmF0aW9uIGlzIFNQTElUIFBBUlRJVElPTi4KICAq IHBzdGF0ZToJCQlwb2ludGVyIHRvIFBhcnNlU3RhdGUgc3RydWN0IGZvciBkZXRlcm1pbmluZyBl cnJvciBwb3NpdGlvbgogICovCiBzdGF0aWMgdm9pZApAQCAtNDk5MSw2ICs0OTk5LDggQEAgY2hl Y2tfdHdvX3BhcnRpdGlvbnNfYm91bmRzX3JhbmdlKFJlbGF0aW9uIHBhcmVudCwKIAkJCQkJCQkJ ICBQYXJ0aXRpb25Cb3VuZFNwZWMgKmZpcnN0X2JvdW5kLAogCQkJCQkJCQkgIFJhbmdlVmFyICpz ZWNvbmRfbmFtZSwKIAkJCQkJCQkJICBQYXJ0aXRpb25Cb3VuZFNwZWMgKnNlY29uZF9ib3VuZCwK KwkJCQkJCQkJICBib29sIGRlZmF1bHRQYXJ0LAorCQkJCQkJCQkgIGJvb2wgaXNfbWVyZ2UsCiAJ CQkJCQkJCSAgUGFyc2VTdGF0ZSAqcHN0YXRlKQogewogCVBhcnRpdGlvbktleSBrZXkgPSBSZWxh dGlvbkdldFBhcnRpdGlvbktleShwYXJlbnQpOwpAQCAtNTAxMiwxOCArNTAyMiwyOCBAQCBjaGVj a190d29fcGFydGl0aW9uc19ib3VuZHNfcmFuZ2UoUmVsYXRpb24gcGFyZW50LAogCQkJCQkJCQkg IGtleS0+cGFydGNvbGxhdGlvbiwKIAkJCQkJCQkJICBzZWNvbmRfbG93ZXItPmRhdHVtcywgc2Vj b25kX2xvd2VyLT5raW5kLAogCQkJCQkJCQkgIGZhbHNlLCBmaXJzdF91cHBlcik7Ci0JaWYgKGNt cHZhbCkKKwlpZiAoKCFkZWZhdWx0UGFydCAmJiBjbXB2YWwpIHx8IChkZWZhdWx0UGFydCAmJiBj bXB2YWwgPCAwKSkKIAl7CiAJCVBhcnRpdGlvblJhbmdlRGF0dW0gKmRhdHVtID0gbGluaXRpYWwo c2Vjb25kX2JvdW5kLT5sb3dlcmRhdHVtcyk7CiAKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQllcnJj b2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCi0JCQkJZXJybXNnKCJjYW4g bm90IG1lcmdlIHBhcnRpdGlvbiBcIiVzXCIgdG9nZXRoZXIgd2l0aCBwYXJ0aXRpb24gXCIlc1wi IiwKLQkJCQkJICAgc2Vjb25kX25hbWUtPnJlbG5hbWUsIGZpcnN0X25hbWUtPnJlbG5hbWUpLAot CQkJCWVycmRldGFpbCgibG93ZXIgYm91bmQgb2YgcGFydGl0aW9uIFwiJXNcIiBpcyBub3QgZXF1 YWwgdG8gdGhlIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiBcIiVzXCIiLAotCQkJCQkJICBzZWNv bmRfbmFtZS0+cmVsbmFtZSwgZmlyc3RfbmFtZS0+cmVsbmFtZSksCi0JCQkJZXJyaGludCgiQUxU RVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgcmVxdWlyZXMgdGhlIHBhcnRpdGlvbiBib3Vu ZHMgdG8gYmUgYWRqYWNlbnQuIiksCi0JCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZGF0 dW0tPmxvY2F0aW9uKSk7CisJCWlmIChpc19tZXJnZSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJZXJybXNn KCJjYW4gbm90IG1lcmdlIHBhcnRpdGlvbiBcIiVzXCIgdG9nZXRoZXIgd2l0aCBwYXJ0aXRpb24g XCIlc1wiIiwKKwkJCQkJCSAgIHNlY29uZF9uYW1lLT5yZWxuYW1lLCBmaXJzdF9uYW1lLT5yZWxu YW1lKSwKKwkJCQkJZXJyZGV0YWlsKCJsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gXCIlc1wiIGlz IG5vdCBlcXVhbCB0byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uIFwiJXNcIiIsCisJCQkJ CQkJICBzZWNvbmRfbmFtZS0+cmVsbmFtZSwgZmlyc3RfbmFtZS0+cmVsbmFtZSksCisJCQkJCWVy cmhpbnQoIkFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIHJlcXVpcmVzIHRoZSBwYXJ0 aXRpb24gYm91bmRzIHRvIGJlIGFkamFjZW50LiIpLAorCQkJCQlwYXJzZXJfZXJycG9zaXRpb24o cHN0YXRlLCBkYXR1bS0+bG9jYXRpb24pKTsKKwkJZWxzZQorCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQllcnJt c2coImNhbiBub3Qgc3BsaXQgdG8gcGFydGl0aW9uIFwiJXNcIiB0b2dldGhlciB3aXRoIHBhcnRp dGlvbiBcIiVzXCIiLAorCQkJCQkJICAgc2Vjb25kX25hbWUtPnJlbG5hbWUsIGZpcnN0X25hbWUt PnJlbG5hbWUpLAorCQkJCQllcnJkZXRhaWwoImxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiBcIiVz XCIgaXMgbm90IGVxdWFsIHRvIHRoZSB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gXCIlc1wiIiwK KwkJCQkJCQkgIHNlY29uZF9uYW1lLT5yZWxuYW1lLCBmaXJzdF9uYW1lLT5yZWxuYW1lKSwKKwkJ CQkJZXJyaGludCgiQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTiByZXF1aXJlcyB0aGUg cGFydGl0aW9uIGJvdW5kcyB0byBiZSBhZGphY2VudC4iKSwKKwkJCQkJcGFyc2VyX2VycnBvc2l0 aW9uKHBzdGF0ZSwgZGF0dW0tPmxvY2F0aW9uKSk7CiAJfQogfQogCkBAIC01MTI2LDYgKzUxNDYs OCBAQCBjYWxjdWxhdGVfcGFydGl0aW9uX2JvdW5kX2Zvcl9tZXJnZShSZWxhdGlvbiBwYXJlbnQs CiAJCQkJCQkJCQkJCQkJICAoUGFydGl0aW9uQm91bmRTcGVjICopIGxpc3RfbnRoKGJvdW5kcywg cHJldl9pbmRleCksCiAJCQkJCQkJCQkJCQkJICAoUmFuZ2VWYXIgKikgbGlzdF9udGgocGFydE5h bWVzLCBpbmRleCksCiAJCQkJCQkJCQkJCQkJICAoUGFydGl0aW9uQm91bmRTcGVjICopIGxpc3Rf bnRoKGJvdW5kcywgaW5kZXgpLAorCQkJCQkJCQkJCQkJCSAgZmFsc2UsCisJCQkJCQkJCQkJCQkJ ICB0cnVlLAogCQkJCQkJCQkJCQkJCSAgcHN0YXRlKTsKIAkJCQl9CiAKQEAgLTUxNjQsMyArNTE4 Niw2OTQgQEAgY2FsY3VsYXRlX3BhcnRpdGlvbl9ib3VuZF9mb3JfbWVyZ2UoUmVsYXRpb24gcGFy ZW50LAogCQkJCSAoaW50KSBrZXktPnN0cmF0ZWd5KTsKIAl9CiB9CisKKy8qCisgKiBwYXJ0aXRp b25zX2xpc3RkYXR1bV9pbnRlcnNlY3Rpb24KKyAqCisgKiAoZnVuY3Rpb24gZm9yIEJZIExJU1Qg cGFydGl0aW9uaW5nKQorICoKKyAqIEZ1bmN0aW9uIGNvbXBhcmVzIGxpc3RzIG9mIHZhbHVlcyBm b3IgZGlmZmVyZW50IHBhcnRpdGlvbnMuCisgKiBSZXR1cm4gYSBsaXN0IHRoYXQgY29udGFpbnMg Km9uZSogY2VsbCB0aGF0IGlzIHByZXNlbnQgaW4gYm90aCBsaXN0MSBhbmQKKyAqIGxpc3QyLiAg VGhlIHJldHVybmVkIGxpc3QgaXMgZnJlc2hseSBhbGxvY2F0ZWQgdmlhIHBhbGxvYygpLCBidXQg dGhlCisgKiBjZWxscyB0aGVtc2VsdmVzIHBvaW50IHRvIHRoZSBzYW1lIG9iamVjdHMgYXMgdGhl IGNlbGxzIG9mIHRoZQorICogaW5wdXQgbGlzdHMuCisgKgorICogQ3VycmVudGx5LCB0aGVyZSBp cyBubyBuZWVkIHRvIGNvbGxlY3QgYWxsIGNvbW1vbiBwYXJ0aXRpb24gZGF0dW1zIGZyb20gdGhl CisgKiB0d28gbGlzdHMuCisgKi8KK3N0YXRpYyBMaXN0ICoKK3BhcnRpdGlvbnNfbGlzdGRhdHVt X2ludGVyc2VjdGlvbihGbWdySW5mbyAqcGFydHN1cGZ1bmMsIE9pZCAqcGFydGNvbGxhdGlvbiwK KwkJCQkJCQkJICBjb25zdCBMaXN0ICpsaXN0MSwgY29uc3QgTGlzdCAqbGlzdDIpCit7CisJTGlz dAkgICAqcmVzdWx0ID0gTklMOworCisJaWYgKGxpc3QxID09IE5JTCB8fCBsaXN0MiA9PSBOSUwp CisJCXJldHVybiByZXN1bHQ7CisKKwlmb3JlYWNoX25vZGUoQ29uc3QsIHZhbDEsIGxpc3QxKQor CXsKKwkJYm9vbAkJaXNudWxsMSA9IHZhbDEtPmNvbnN0aXNudWxsOworCisJCWZvcmVhY2hfbm9k ZShDb25zdCwgdmFsMiwgbGlzdDIpCisJCXsKKwkJCWlmICh2YWwyLT5jb25zdGlzbnVsbCkKKwkJ CXsKKwkJCQlpZiAoaXNudWxsMSkKKwkJCQl7CisJCQkJCXJlc3VsdCA9IGxhcHBlbmQocmVzdWx0 LCB2YWwxKTsKKwkJCQkJcmV0dXJuIHJlc3VsdDsKKwkJCQl9CisJCQkJY29udGludWU7CisJCQl9 CisJCQllbHNlIGlmIChpc251bGwxKQorCQkJCWNvbnRpbnVlOworCisJCQkvKiBDb21wYXJlIHR3 byBkYXR1bSB2YWx1ZXMuICovCisJCQlpZiAoRGF0dW1HZXRJbnQzMihGdW5jdGlvbkNhbGwyQ29s bCgmcGFydHN1cGZ1bmNbMF0sCisJCQkJCQkJCQkJCQlwYXJ0Y29sbGF0aW9uWzBdLAorCQkJCQkJ CQkJCQkJdmFsMS0+Y29uc3R2YWx1ZSwKKwkJCQkJCQkJCQkJCXZhbDItPmNvbnN0dmFsdWUpKSA9 PSAwKQorCQkJeworCQkJCXJlc3VsdCA9IGxhcHBlbmQocmVzdWx0LCB2YWwxKTsKKwkJCQlyZXR1 cm4gcmVzdWx0OworCQkJfQorCQl9CisJfQorCisJcmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAq IGNoZWNrX3BhcnRpdGlvbnNfbm90X292ZXJsYXBfbGlzdAorICoKKyAqIChmdW5jdGlvbiBmb3Ig QlkgTElTVCBwYXJ0aXRpb25pbmcpCisgKgorICogVGhpcyBpcyBhIGhlbHBlciBmdW5jdGlvbiBm b3IgY2hlY2tfcGFydGl0aW9uc19mb3Jfc3BsaXQoKS4KKyAqIENoZWNrcyB0aGF0IHRoZSB2YWx1 ZXMgb2YgdGhlIG5ldyBwYXJ0aXRpb25zIGRvIG5vdCBvdmVybGFwLgorICoKKyAqIHBhcmVudDoJ cGFydGl0aW9uZWQgdGFibGUKKyAqIHBhcnRzOglhcnJheSBvZiBTaW5nbGVQYXJ0aXRpb25TcGVj IHN0cnVjdHMgd2l0aCBpbmZvIGFib3V0IHNwbGl0IHBhcnRpdGlvbnMKKyAqIG5wYXJ0czoJc2l6 ZSBvZiBhcnJheSAicGFydHMiCisgKi8KK3N0YXRpYyB2b2lkCitjaGVja19wYXJ0aXRpb25zX25v dF9vdmVybGFwX2xpc3QoUmVsYXRpb24gcGFyZW50LAorCQkJCQkJCQkgIFNpbmdsZVBhcnRpdGlv blNwZWMgKipwYXJ0cywKKwkJCQkJCQkJICBpbnQgbnBhcnRzLAorCQkJCQkJCQkgIFBhcnNlU3Rh dGUgKnBzdGF0ZSkKK3sKKwlQYXJ0aXRpb25LZXkga2V5IFBHX1VTRURfRk9SX0FTU0VSVFNfT05M WSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudCk7CisJaW50CQkJaSwKKwkJCQlqOwor CVNpbmdsZVBhcnRpdGlvblNwZWMgKnNwczEsCisJCQkgICAqc3BzMjsKKwlMaXN0CSAgICpvdmVy bGFwOworCisJQXNzZXJ0KGtleS0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX0xJU1Qp OworCisJZm9yIChpID0gMDsgaSA8IG5wYXJ0czsgaSsrKQorCXsKKwkJc3BzMSA9IHBhcnRzW2ld OworCisJCWZvciAoaiA9IGkgKyAxOyBqIDwgbnBhcnRzOyBqKyspCisJCXsKKwkJCXNwczIgPSBw YXJ0c1tqXTsKKworCQkJb3ZlcmxhcCA9IHBhcnRpdGlvbnNfbGlzdGRhdHVtX2ludGVyc2VjdGlv bigma2V5LT5wYXJ0c3VwZnVuY1swXSwKKwkJCQkJCQkJCQkJCQkJa2V5LT5wYXJ0Y29sbGF0aW9u LAorCQkJCQkJCQkJCQkJCQlzcHMxLT5ib3VuZC0+bGlzdGRhdHVtcywKKwkJCQkJCQkJCQkJCQkJ c3BzMi0+Ym91bmQtPmxpc3RkYXR1bXMpOworCQkJaWYgKGxpc3RfbGVuZ3RoKG92ZXJsYXApID4g MCkKKwkJCXsKKwkJCQlDb25zdAkgICAqdmFsID0gKENvbnN0ICopIGxpbml0aWFsX25vZGUoQ29u c3QsIG92ZXJsYXApOworCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09E RV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJCWVycm1zZygibmV3IHBhcnRpdGlv biBcIiVzXCIgd291bGQgb3ZlcmxhcCB3aXRoIGFub3RoZXIgbmV3IHBhcnRpdGlvbiBcIiVzXCIi LAorCQkJCQkJCSAgIHNwczEtPm5hbWUtPnJlbG5hbWUsIHNwczItPm5hbWUtPnJlbG5hbWUpLAor CQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0aW9uKChOb2RlICopIHZh bCkpKTsKKwkJCX0KKwkJfQorCX0KK30KKworLyoKKyAqIGNoZWNrX3BhcnRpdGlvbl9ib3VuZHNf Zm9yX3NwbGl0X3JhbmdlCisgKgorICogKGZ1bmN0aW9uIGZvciBCWSBSQU5HRSBwYXJ0aXRpb25p bmcpCisgKgorICogQ2hlY2tzIHRoYXQgYm91bmRzIG9mIG5ldyBwYXJ0aXRpb24gInNwZWMiIGFy ZSBpbnNpZGUgYm91bmRzIG9mIHNwbGl0CisgKiBwYXJ0aXRpb24gKHdpdGggT2lkIHNwbGl0UGFy dE9pZCkuIElmIGZpcnN0PXRydWUgKHRoaXMgbWVhbnMgdGhhdCAic3BlYyIgaXMKKyAqIHRoZSBm aXJzdCBvZiB0aGUgbmV3IHBhcnRpdGlvbnMpLCB0aGVuIHRoZSBsb3dlciBib3VuZCBvZiAic3Bl YyIgc2hvdWxkIGJlCisgKiBlcXVhbCAob3IgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIGluIGNhc2Ug ZGVmYXVsdFBhcnQ9dHJ1ZSkgdG8gdGhlIGxvd2VyCisgKiBib3VuZCBvZiB0aGUgc3BsaXQgcGFy dGl0aW9uLiBJZiBsYXN0PXRydWUgKHRoaXMgbWVhbnMgdGhhdCAic3BlYyIgaXMgdGhlCisgKiBs YXN0IG9mIHRoZSBuZXcgcGFydGl0aW9ucyksIHRoZW4gdGhlIHVwcGVyIGJvdW5kIG9mICJzcGVj IiBzaG91bGQgYmUKKyAqIGVxdWFsIChvciBsZXNzIHRoYW4gb3IgZXF1YWwgaW4gY2FzZSBkZWZh dWx0UGFydD10cnVlKSB0byB0aGUgdXBwZXIgYm91bmQKKyAqIG9mIHRoZSBzcGxpdCBwYXJ0aXRp b24uCisgKgorICogcGFyZW50OgkJCXBhcnRpdGlvbmVkIHRhYmxlCisgKiByZWxuYW1lOgkJCW5h bWUgb2YgdGhlIG5ldyBwYXJ0aXRpb24KKyAqIHNwZWM6CQkJYm91bmRzIHNwZWNpZmljYXRpb24g b2YgdGhlIG5ldyBwYXJ0aXRpb24KKyAqIHNwbGl0UGFydE9pZDoJc3BsaXQgcGFydGl0aW9uIE9p ZAorICogZmlyc3Q6CQkJdHJ1ZSBpZmYgdGhlIG5ldyBwYXJ0aXRpb24gInNwZWMiIGlzIHRoZSBm aXJzdCBvZiB0aGUKKyAqCQkJCQluZXcgcGFydGl0aW9ucworICogbGFzdDoJCQl0cnVlIGlmZiB0 aGUgbmV3IHBhcnRpdGlvbiAic3BlYyIgaXMgdGhlIGxhc3Qgb2YgdGhlCisgKgkJCQkJbmV3IHBh cnRpdGlvbnMKKyAqIGRlZmF1bHRQYXJ0OgkJdHJ1ZSBpZmYgbmV3IHBhcnRpdGlvbnMgY29udGFp biB0aGUgREVGQVVMVCBwYXJ0aXRpb24KKyAqIHBzdGF0ZToJCQlwb2ludGVyIHRvIFBhcnNlU3Rh dGUgc3RydWN0IHRvIGRldGVybWluZSBlcnJvciBwb3NpdGlvbgorICovCitzdGF0aWMgdm9pZAor Y2hlY2tfcGFydGl0aW9uX2JvdW5kc19mb3Jfc3BsaXRfcmFuZ2UoUmVsYXRpb24gcGFyZW50LAor CQkJCQkJCQkJICAgY2hhciAqcmVsbmFtZSwKKwkJCQkJCQkJCSAgIFBhcnRpdGlvbkJvdW5kU3Bl YyAqc3BlYywKKwkJCQkJCQkJCSAgIE9pZCBzcGxpdFBhcnRPaWQsCisJCQkJCQkJCQkgICBib29s IGZpcnN0LAorCQkJCQkJCQkJICAgYm9vbCBsYXN0LAorCQkJCQkJCQkJICAgYm9vbCBkZWZhdWx0 UGFydCwKKwkJCQkJCQkJCSAgIFBhcnNlU3RhdGUgKnBzdGF0ZSkKK3sKKwlQYXJ0aXRpb25LZXkg a2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFyZW50KTsKKwlQYXJ0aXRpb25SYW5nZUJv dW5kICpsb3dlciwKKwkJCSAgICp1cHBlcjsKKwlpbnQJCQljbXB2YWw7CisKKwlBc3NlcnQoa2V5 LT5zdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfUkFOR0UpOworCUFzc2VydChzcGVjLT5z dHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfUkFOR0UpOworCisJbG93ZXIgPSBtYWtlX29u ZV9wYXJ0aXRpb25fcmJvdW5kKGtleSwgLTEsIHNwZWMtPmxvd2VyZGF0dW1zLCB0cnVlKTsKKwl1 cHBlciA9IG1ha2Vfb25lX3BhcnRpdGlvbl9yYm91bmQoa2V5LCAtMSwgc3BlYy0+dXBwZXJkYXR1 bXMsIGZhbHNlKTsKKworCS8qCisJICogRmlyc3QsIGNoZWNrIGlmIHRoZSByZXN1bHRpbmcgcmFu Z2Ugd291bGQgYmUgZW1wdHkgd2l0aCB0aGUgc3BlY2lmaWVkCisJICogbG93ZXIgYW5kIHVwcGVy IGJvdW5kcy4gIHBhcnRpdGlvbl9yYm91bmRfY21wIGNhbm5vdCByZXR1cm4gemVybyBoZXJlLAor CSAqIHNpbmNlIHRoZSBsb3dlci1ib3VuZCBmbGFncyBhcmUgZGlmZmVyZW50LgorCSAqLworCWNt cHZhbCA9IHBhcnRpdGlvbl9yYm91bmRfY21wKGtleS0+cGFydG5hdHRzLAorCQkJCQkJCQkgIGtl eS0+cGFydHN1cGZ1bmMsCisJCQkJCQkJCSAga2V5LT5wYXJ0Y29sbGF0aW9uLAorCQkJCQkJCQkg IGxvd2VyLT5kYXR1bXMsIGxvd2VyLT5raW5kLAorCQkJCQkJCQkgIHRydWUsIHVwcGVyKTsKKwlB c3NlcnQoY21wdmFsICE9IDApOworCWlmIChjbXB2YWwgPiAwKQorCXsKKwkJLyogUG9pbnQgdG8g dGhlIHByb2JsZW1hdGljIGtleSBpbiB0aGUgbG93ZXIgZGF0dW1zIGxpc3QuICovCisJCVBhcnRp dGlvblJhbmdlRGF0dW0gKmRhdHVtID0gbGlzdF9udGgoc3BlYy0+bG93ZXJkYXR1bXMsIGNtcHZh bCAtIDEpOworCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURf T0JKRUNUX0RFRklOSVRJT04pLAorCQkJCWVycm1zZygiZW1wdHkgcmFuZ2UgYm91bmQgc3BlY2lm aWVkIGZvciBwYXJ0aXRpb24gXCIlc1wiIiwKKwkJCQkJICAgcmVsbmFtZSksCisJCQkJZXJyZGV0 YWlsKCJTcGVjaWZpZWQgbG93ZXIgYm91bmQgJXMgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRv IHVwcGVyIGJvdW5kICVzLiIsCisJCQkJCQkgIGdldF9yYW5nZV9wYXJ0Ym91bmRfc3RyaW5nKHNw ZWMtPmxvd2VyZGF0dW1zKSwKKwkJCQkJCSAgZ2V0X3JhbmdlX3BhcnRib3VuZF9zdHJpbmcoc3Bl Yy0+dXBwZXJkYXR1bXMpKSwKKwkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBleHByTG9j YXRpb24oKE5vZGUgKikgZGF0dW0pKSk7CisJfQorCisJLyoKKwkgKiBOZWVkIHRvIGNoZWNrIGZp cnN0IGFuZCBsYXN0IHBhcnRpdGlvbnMgKGZyb20gdGhlIHNldCBvZiBuZXcKKwkgKiBwYXJ0aXRp b25zKQorCSAqLworCWlmIChmaXJzdCB8fCBsYXN0KQorCXsKKwkJUGFydGl0aW9uQm91bmRTcGVj ICpzcGxpdF9zcGVjID0gZ2V0X3BhcnRpdGlvbl9ib3VuZF9zcGVjKHNwbGl0UGFydE9pZCk7CisJ CVBhcnRpdGlvblJhbmdlRGF0dW0gKmRhdHVtOworCisJCWlmIChmaXJzdCkKKwkJeworCQkJUGFy dGl0aW9uUmFuZ2VCb3VuZCAqc3BsaXRfbG93ZXI7CisKKwkJCXNwbGl0X2xvd2VyID0gbWFrZV9v bmVfcGFydGl0aW9uX3Jib3VuZChrZXksIC0xLCBzcGxpdF9zcGVjLT5sb3dlcmRhdHVtcywgdHJ1 ZSk7CisKKwkJCWNtcHZhbCA9IHBhcnRpdGlvbl9yYm91bmRfY21wKGtleS0+cGFydG5hdHRzLAor CQkJCQkJCQkJCSAga2V5LT5wYXJ0c3VwZnVuYywKKwkJCQkJCQkJCQkgIGtleS0+cGFydGNvbGxh dGlvbiwKKwkJCQkJCQkJCQkgIGxvd2VyLT5kYXR1bXMsIGxvd2VyLT5raW5kLAorCQkJCQkJCQkJ CSAgdHJ1ZSwgc3BsaXRfbG93ZXIpOworCQkJaWYgKGNtcHZhbCAhPSAwKQorCQkJCWRhdHVtID0g bGlzdF9udGgoc3BlYy0+bG93ZXJkYXR1bXMsIGFicyhjbXB2YWwpIC0gMSk7CisKKwkJCS8qCisJ CQkgKiBUaGUgbG93ZXIgYm91bmQgb2YgInNwZWMiIG11c3QgZXF1YWwgdGhlIGxvd2VyIGJvdW5k IG9mIHRoZQorCQkJICogc3BsaXQgcGFydGl0aW9uLiAgSG93ZXZlciwgaWYgb25lIG9mIHRoZSBu ZXcgcGFydGl0aW9ucyBpcworCQkJICogREVGQVVMVCwgdGhlbiBpdCBpcyBvayBmb3IgdGhlIG5l dyBwYXJ0aXRpb24ncyBsb3dlciBib3VuZCB0bworCQkJICogYmUgZ3JlYXRlciB0aGFuIHRoYXQg b2YgdGhlIHNwbGl0IHBhcnRpdGlvbi4KKwkJCSAqLworCQkJaWYgKCFkZWZhdWx0UGFydCkKKwkJ CXsKKwkJCQlpZiAoY21wdmFsICE9IDApCisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJZXJy Y29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJCWVycm1zZygi bG93ZXIgYm91bmQgb2YgcGFydGl0aW9uIFwiJXNcIiBpcyBub3QgZXF1YWwgdG8gbG93ZXIgYm91 bmQgb2Ygc3BsaXQgcGFydGl0aW9uIFwiJXNcIiIsCisJCQkJCQkJCSAgIHJlbG5hbWUsCisJCQkJ CQkJCSAgIGdldF9yZWxfbmFtZShzcGxpdFBhcnRPaWQpKSwKKwkJCQkJCQllcnJoaW50KCIlcyBy ZXF1aXJlIGNvbWJpbmVkIGJvdW5kcyBvZiBuZXcgcGFydGl0aW9ucyBtdXN0IGV4YWN0bHkgbWF0 Y2ggdGhlIGJvdW5kIG9mIHRoZSBzcGxpdCBwYXJ0aXRpb24iLAorCQkJCQkJCQkJIkFMVEVSIFRB QkxFIC4uLiBTUExJVCBQQVJUSVRJT04iKSwKKwkJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0 YXRlLCBleHByTG9jYXRpb24oKE5vZGUgKikgZGF0dW0pKSk7CisJCQl9CisJCQllbHNlIGlmIChj bXB2YWwgPCAwKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5W QUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJCQllcnJtc2coImxvd2VyIGJvdW5kIG9mIHBh cnRpdGlvbiBcIiVzXCIgaXMgbGVzcyB0aGFuIGxvd2VyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlv biBcIiVzXCIiLAorCQkJCQkJCSAgIHJlbG5hbWUsCisJCQkJCQkJICAgZ2V0X3JlbF9uYW1lKHNw bGl0UGFydE9pZCkpLAorCQkJCQkJZXJyaGludCgiJXMgcmVxdWlyZSBjb21iaW5lZCBib3VuZHMg b2YgbmV3IHBhcnRpdGlvbnMgbXVzdCBleGFjdGx5IG1hdGNoIHRoZSBib3VuZCBvZiB0aGUgc3Bs aXQgcGFydGl0aW9uIiwKKwkJCQkJCQkJIkFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT04i KSwKKwkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2NhdGlvbigoTm9kZSAq KSBkYXR1bSkpKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCVBhcnRpdGlvblJhbmdlQm91bmQgKnNw bGl0X3VwcGVyOworCisJCQlzcGxpdF91cHBlciA9IG1ha2Vfb25lX3BhcnRpdGlvbl9yYm91bmQo a2V5LCAtMSwgc3BsaXRfc3BlYy0+dXBwZXJkYXR1bXMsIGZhbHNlKTsKKworCQkJY21wdmFsID0g cGFydGl0aW9uX3Jib3VuZF9jbXAoa2V5LT5wYXJ0bmF0dHMsCisJCQkJCQkJCQkJICBrZXktPnBh cnRzdXBmdW5jLAorCQkJCQkJCQkJCSAga2V5LT5wYXJ0Y29sbGF0aW9uLAorCQkJCQkJCQkJCSAg dXBwZXItPmRhdHVtcywgdXBwZXItPmtpbmQsCisJCQkJCQkJCQkJICBmYWxzZSwgc3BsaXRfdXBw ZXIpOworCQkJaWYgKGNtcHZhbCAhPSAwKQorCQkJCWRhdHVtID0gbGlzdF9udGgoc3BlYy0+dXBw ZXJkYXR1bXMsIGFicyhjbXB2YWwpIC0gMSk7CisKKwkJCS8qCisJCQkgKiBUaGUgdXBwZXIgYm91 bmQgb2YgInNwZWMiIG11c3QgZXF1YWwgdGhlIHVwcGVyIGJvdW5kIG9mIHRoZQorCQkJICogc3Bs aXQgcGFydGl0aW9uLiAgSG93ZXZlciwgaWYgb25lIG9mIHRoZSBuZXcgcGFydGl0aW9ucyBpcwor CQkJICogREVGQVVMVCwgdGhlbiBpdCBpcyBvayBmb3IgdGhlIG5ldyBwYXJ0aXRpb24ncyB1cHBl ciBib3VuZCB0bworCQkJICogYmUgbGVzcyB0aGFuIHRoYXQgb2YgdGhlIHNwbGl0IHBhcnRpdGlv bi4KKwkJCSAqLworCQkJaWYgKCFkZWZhdWx0UGFydCkKKwkJCXsKKwkJCQlpZiAoY21wdmFsICE9 IDApCisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURf T0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJCWVycm1zZygidXBwZXIgYm91bmQgb2YgcGFydGl0 aW9uIFwiJXNcIiBpcyBub3QgZXF1YWwgdG8gdXBwZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9u IFwiJXNcIiIsCisJCQkJCQkJCSAgIHJlbG5hbWUsCisJCQkJCQkJCSAgIGdldF9yZWxfbmFtZShz cGxpdFBhcnRPaWQpKSwKKwkJCQkJCQllcnJoaW50KCIlcyByZXF1aXJlIGNvbWJpbmVkIGJvdW5k cyBvZiBuZXcgcGFydGl0aW9ucyBtdXN0IGV4YWN0bHkgbWF0Y2ggdGhlIGJvdW5kIG9mIHRoZSBz cGxpdCBwYXJ0aXRpb24iLAorCQkJCQkJCQkJIkFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJ T04iKSwKKwkJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBleHByTG9jYXRpb24oKE5v ZGUgKikgZGF0dW0pKSk7CisJCQl9CisJCQllbHNlIGlmIChjbXB2YWwgPiAwKQorCQkJCWVyZXBv cnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElP TiksCisJCQkJCQllcnJtc2coInVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiBcIiVzXCIgaXMgZ3Jl YXRlciB0aGFuIHVwcGVyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbiBcIiVzXCIiLAorCQkJCQkJ CSAgIHJlbG5hbWUsCisJCQkJCQkJICAgZ2V0X3JlbF9uYW1lKHNwbGl0UGFydE9pZCkpLAorCQkJ CQkJZXJyaGludCgiJXMgcmVxdWlyZSBjb21iaW5lZCBib3VuZHMgb2YgbmV3IHBhcnRpdGlvbnMg bXVzdCBleGFjdGx5IG1hdGNoIHRoZSBib3VuZCBvZiB0aGUgc3BsaXQgcGFydGl0aW9uIiwKKwkJ CQkJCQkJIkFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT04iKSwKKwkJCQkJCXBhcnNlcl9l cnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2NhdGlvbigoTm9kZSAqKSBkYXR1bSkpKTsKKwkJfQor CX0KK30KKworLyoKKyAqIGNoZWNrX3BhcnRpdGlvbl9ib3VuZHNfZm9yX3NwbGl0X2xpc3QKKyAq CisgKiAoZnVuY3Rpb24gZm9yIEJZIExJU1QgcGFydGl0aW9uaW5nKQorICoKKyAqIENoZWNrcyB0 aGF0IHRoZSBib3VuZHMgb2YgdGhlIG5ldyBwYXJ0aXRpb24gYXJlIGluc2lkZSB0aGUgYm91bmRz IG9mIHRoZQorICogc3BsaXQgcGFydGl0aW9uICh3aXRoIE9pZCBzcGxpdFBhcnRPaWQpLgorICoK KyAqIHBhcmVudDoJCQlwYXJ0aXRpb25lZCB0YWJsZQorICogcmVsbmFtZToJCQluYW1lIG9mIHRo ZSBuZXcgcGFydGl0aW9uCisgKiBzcGVjOgkJCWJvdW5kcyBzcGVjaWZpY2F0aW9uIG9mIHRoZSBu ZXcgcGFydGl0aW9uCisgKiBzcGxpdFBhcnRPaWQ6CXNwbGl0IHBhcnRpdGlvbiBPaWQKKyAqIHBz dGF0ZToJCQlwb2ludGVyIHRvIFBhcnNlU3RhdGUgc3RydWN0IHRvIGRldGVybWluZSBlcnJvciBw b3NpdGlvbgorICovCitzdGF0aWMgdm9pZAorY2hlY2tfcGFydGl0aW9uX2JvdW5kc19mb3Jfc3Bs aXRfbGlzdChSZWxhdGlvbiBwYXJlbnQsIGNoYXIgKnJlbG5hbWUsCisJCQkJCQkJCQkgIFBhcnRp dGlvbkJvdW5kU3BlYyAqc3BlYywKKwkJCQkJCQkJCSAgT2lkIHNwbGl0UGFydE9pZCwKKwkJCQkJ CQkJCSAgUGFyc2VTdGF0ZSAqcHN0YXRlKQoreworCVBhcnRpdGlvbktleSBrZXkgPSBSZWxhdGlv bkdldFBhcnRpdGlvbktleShwYXJlbnQpOworCVBhcnRpdGlvbkRlc2MgcGFydGRlc2MgPSBSZWxh dGlvbkdldFBhcnRpdGlvbkRlc2MocGFyZW50LCBmYWxzZSk7CisJUGFydGl0aW9uQm91bmRJbmZv IGJvdW5kaW5mbyA9IHBhcnRkZXNjLT5ib3VuZGluZm87CisJaW50CQkJd2l0aCA9IC0xOworCWJv b2wJCW92ZXJsYXAgPSBmYWxzZTsKKwlpbnQJCQlvdmVybGFwX2xvY2F0aW9uID0gLTE7CisKKwlB c3NlcnQoa2V5LT5zdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfTElTVCk7CisJQXNzZXJ0 KHNwZWMtPnN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9MSVNUKTsKKwlBc3NlcnQoYm91 bmRpbmZvICYmIGJvdW5kaW5mby0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX0xJU1Qp OworCisJLyoKKwkgKiBTZWFyY2ggZWFjaCB2YWx1ZSBvZiB0aGUgbmV3IHBhcnRpdGlvbiAic3Bl YyIgaW4gdGhlIGV4aXN0aW5nCisJICogcGFydGl0aW9ucy4gIEFsbCBvZiB0aGVtIHNob3VsZCBi ZSBpbiB0aGUgc3BsaXQgcGFydGl0aW9uICh3aXRoIE9pZAorCSAqIHNwbGl0UGFydE9pZCkuCisJ ICovCisJZm9yZWFjaF9ub2RlKENvbnN0LCB2YWwsIHNwZWMtPmxpc3RkYXR1bXMpCisJeworCQlv dmVybGFwX2xvY2F0aW9uID0gZXhwckxvY2F0aW9uKChOb2RlICopIHZhbCk7CisJCWlmICghdmFs LT5jb25zdGlzbnVsbCkKKwkJeworCQkJaW50CQkJb2Zmc2V0OworCQkJYm9vbAkJZXF1YWw7CisK KwkJCW9mZnNldCA9IHBhcnRpdGlvbl9saXN0X2JzZWFyY2goJmtleS0+cGFydHN1cGZ1bmNbMF0s CisJCQkJCQkJCQkJCWtleS0+cGFydGNvbGxhdGlvbiwKKwkJCQkJCQkJCQkJYm91bmRpbmZvLAor CQkJCQkJCQkJCQl2YWwtPmNvbnN0dmFsdWUsCisJCQkJCQkJCQkJCSZlcXVhbCk7CisJCQlpZiAo b2Zmc2V0ID49IDAgJiYgZXF1YWwpCisJCQl7CisJCQkJd2l0aCA9IGJvdW5kaW5mby0+aW5kZXhl c1tvZmZzZXRdOworCQkJCWlmIChwYXJ0ZGVzYy0+b2lkc1t3aXRoXSAhPSBzcGxpdFBhcnRPaWQp CisJCQkJeworCQkJCQlvdmVybGFwID0gdHJ1ZTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCQkJfQor CQkJZWxzZQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJ RF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJCQllcnJtc2coIm5ldyBwYXJ0aXRpb24gXCIlc1wi IGNhbm5vdCBoYXZlIHRoaXMgdmFsdWUgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gXCIlc1wiIGRv ZXMgbm90IGhhdmUiLAorCQkJCQkJCSAgIHJlbG5hbWUsCisJCQkJCQkJICAgZ2V0X3JlbF9uYW1l KHNwbGl0UGFydE9pZCkpLAorCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgb3Zlcmxh cF9sb2NhdGlvbikpOworCQl9CisJCWVsc2UgaWYgKHBhcnRpdGlvbl9ib3VuZF9hY2NlcHRzX251 bGxzKGJvdW5kaW5mbykpCisJCXsKKwkJCXdpdGggPSBib3VuZGluZm8tPm51bGxfaW5kZXg7CisJ CQlpZiAocGFydGRlc2MtPm9pZHNbd2l0aF0gIT0gc3BsaXRQYXJ0T2lkKQorCQkJeworCQkJCW92 ZXJsYXAgPSB0cnVlOworCQkJCWJyZWFrOworCQkJfQorCQl9CisJCWVsc2UKKwkJCWVyZXBvcnQo RVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwK KwkJCQkJZXJybXNnKCJuZXcgcGFydGl0aW9uIFwiJXNcIiBjYW5ub3QgaGF2ZSBOVUxMIHZhbHVl IGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uIFwiJXNcIiBkb2VzIG5vdCBoYXZlIiwKKwkJCQkJCSAg IHJlbG5hbWUsCisJCQkJCQkgICBnZXRfcmVsX25hbWUoc3BsaXRQYXJ0T2lkKSksCisJCQkJCXBh cnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIG92ZXJsYXBfbG9jYXRpb24pKTsKKwl9CisKKwlpZiAo b3ZlcmxhcCkKKwl7CisJCUFzc2VydCh3aXRoID49IDApOworCQllcmVwb3J0KEVSUk9SLAorCQkJ CWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQllcnJtc2co Im5ldyBwYXJ0aXRpb24gXCIlc1wiIHdvdWxkIG92ZXJsYXAgd2l0aCBhbm90aGVyIChub3Qgc3Bs aXQpIHBhcnRpdGlvbiBcIiVzXCIiLAorCQkJCQkgICByZWxuYW1lLCBnZXRfcmVsX25hbWUocGFy dGRlc2MtPm9pZHNbd2l0aF0pKSwKKwkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBvdmVy bGFwX2xvY2F0aW9uKSk7CisJfQorfQorCisvKgorICogZmluZF92YWx1ZV9pbl9uZXdfcGFydGl0 aW9uc19saXN0CisgKgorICogKGZ1bmN0aW9uIGZvciBCWSBMSVNUIHBhcnRpdGlvbmluZykKKyAq CisgKiBGdW5jdGlvbiByZXR1cm5zIHRydWUgaWZmIGFueSBvZiB0aGUgbmV3IHBhcnRpdGlvbnMg Y29udGFpbnMgdGhlIHZhbHVlCisgKiAidmFsdWUiLgorICoKKyAqIHBhcnRzdXBmdW5jOgkJaW5m b3JtYXRpb24gYWJvdXQgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb24gYXNzb2NpYXRlZCB3aXRoCisg KgkJCQkJdGhlIHBhcnRpdGlvbiBrZXkKKyAqIHBhcnRjb2xsYXRpb246CXBhcnRpdGlvbmluZyBj b2xsYXRpb24KKyAqIHBhcnRzOgkJCXBvaW50ZXIgdG8gYW4gYXJyYXkgd2l0aCBuZXcgcGFydGl0 aW9uIGRlc2NyaXB0aW9ucworICogbnBhcnRzOgkJCW51bWJlciBvZiBuZXcgcGFydGl0aW9ucwor ICogdmFsdWU6CQkJdGhlIHZhbHVlIHRoYXQgd2UgYXJlIGxvb2tpbmcgZm9yCisgKiBpc251bGw6 CQkJdHJ1ZSBpZiB0aGUgdmFsdWUgdGhhdCB3ZSBhcmUgbG9va2luZyBmb3IgaXMgTlVMTAorICov CitzdGF0aWMgYm9vbAorZmluZF92YWx1ZV9pbl9uZXdfcGFydGl0aW9uc19saXN0KEZtZ3JJbmZv ICpwYXJ0c3VwZnVuYywKKwkJCQkJCQkJICBPaWQgKnBhcnRjb2xsYXRpb24sCisJCQkJCQkJCSAg U2luZ2xlUGFydGl0aW9uU3BlYyAqKnBhcnRzLAorCQkJCQkJCQkgIGludCBucGFydHMsCisJCQkJ CQkJCSAgRGF0dW0gdmFsdWUsCisJCQkJCQkJCSAgYm9vbCBpc251bGwpCit7CisJZm9yIChpbnQg aSA9IDA7IGkgPCBucGFydHM7IGkrKykKKwl7CisJCVNpbmdsZVBhcnRpdGlvblNwZWMgKnNwcyA9 IHBhcnRzW2ldOworCisJCWZvcmVhY2hfbm9kZShDb25zdCwgdmFsLCBzcHMtPmJvdW5kLT5saXN0 ZGF0dW1zKQorCQl7CisJCQlpZiAoaXNudWxsICYmIHZhbC0+Y29uc3Rpc251bGwpCisJCQkJcmV0 dXJuIHRydWU7CisKKwkJCWlmICghaXNudWxsICYmICF2YWwtPmNvbnN0aXNudWxsKQorCQkJewor CQkJCWlmIChEYXR1bUdldEludDMyKEZ1bmN0aW9uQ2FsbDJDb2xsKCZwYXJ0c3VwZnVuY1swXSwK KwkJCQkJCQkJCQkJCQlwYXJ0Y29sbGF0aW9uWzBdLAorCQkJCQkJCQkJCQkJCXZhbC0+Y29uc3R2 YWx1ZSwKKwkJCQkJCQkJCQkJCQl2YWx1ZSkpID09IDApCisJCQkJCXJldHVybiB0cnVlOworCQkJ fQorCQl9CisJfQorCXJldHVybiBmYWxzZTsKK30KKworLyoKKyAqIGNoZWNrX3BhcmVudF92YWx1 ZXNfaW5fbmV3X3BhcnRpdGlvbnMKKyAqCisgKiAoZnVuY3Rpb24gZm9yIEJZIExJU1QgcGFydGl0 aW9uaW5nKQorICoKKyAqIENoZWNrcyB0aGF0IGFsbCB2YWx1ZXMgb2Ygc3BsaXQgcGFydGl0aW9u ICh3aXRoIE9pZCBwYXJ0T2lkKSBhcmUgY29udGFpbmVkCisgKiBpbiBuZXcgcGFydGl0aW9ucy4K KyAqCisgKiBwYXJlbnQ6CXBhcnRpdGlvbmVkIHRhYmxlCisgKiBwYXJ0T2lkOglzcGxpdCBwYXJ0 aXRpb24gT2lkCisgKiBwYXJ0czoJcG9pbnRlciB0byBhbiBhcnJheSB3aXRoIG5ldyBwYXJ0aXRp b24gZGVzY3JpcHRpb25zCisgKiBucGFydHM6CW51bWJlciBvZiBuZXcgcGFydGl0aW9ucworICog cHN0YXRlOglwb2ludGVyIHRvIFBhcnNlU3RhdGUgc3RydWN0IHRvIGRldGVybWluZSBlcnJvciBw b3NpdGlvbgorICovCitzdGF0aWMgdm9pZAorY2hlY2tfcGFyZW50X3ZhbHVlc19pbl9uZXdfcGFy dGl0aW9ucyhSZWxhdGlvbiBwYXJlbnQsCisJCQkJCQkJCQkgIE9pZCBwYXJ0T2lkLAorCQkJCQkJ CQkJICBTaW5nbGVQYXJ0aXRpb25TcGVjICoqcGFydHMsCisJCQkJCQkJCQkgIGludCBucGFydHMs CisJCQkJCQkJCQkgIFBhcnNlU3RhdGUgKnBzdGF0ZSkKK3sKKwlQYXJ0aXRpb25LZXkga2V5ID0g UmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFyZW50KTsKKwlQYXJ0aXRpb25EZXNjIHBhcnRkZXNj ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25EZXNjKHBhcmVudCwgZmFsc2UpOworCVBhcnRpdGlvbkJv dW5kSW5mbyBib3VuZGluZm8gPSBwYXJ0ZGVzYy0+Ym91bmRpbmZvOworCWludAkJCWk7CisJYm9v bAkJZm91bmQgPSB0cnVlOworCURhdHVtCQlkYXR1bSA9IFBvaW50ZXJHZXREYXR1bShOVUxMKTsK KworCUFzc2VydChrZXktPnN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9MSVNUKTsKKwor CS8qCisJICogU3BlY2lhbCBwcm9jZXNzaW5nIGZvciBOVUxMIHZhbHVlLiBTZWFyY2ggZm9yIGEg TlVMTCB2YWx1ZSBpZiB0aGUgc3BsaXQKKwkgKiBwYXJ0aXRpb24gKHBhcnRPaWQpIGNvbnRhaW5z IGl0LgorCSAqLworCWlmIChwYXJ0aXRpb25fYm91bmRfYWNjZXB0c19udWxscyhib3VuZGluZm8p ICYmCisJCXBhcnRkZXNjLT5vaWRzW2JvdW5kaW5mby0+bnVsbF9pbmRleF0gPT0gcGFydE9pZCkK Kwl7CisJCWlmICghZmluZF92YWx1ZV9pbl9uZXdfcGFydGl0aW9uc19saXN0KCZrZXktPnBhcnRz dXBmdW5jWzBdLAorCQkJCQkJCQkJCQkgICBrZXktPnBhcnRjb2xsYXRpb24sIHBhcnRzLCBucGFy dHMsIGRhdHVtLCB0cnVlKSkKKwkJCWZvdW5kID0gZmFsc2U7CisJfQorCisJaWYgKCFmb3VuZCkK KwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVG SU5JVElPTiksCisJCQkJZXJybXNnKCJuZXcgcGFydGl0aW9ucyBjb21iaW5lZCBwYXJ0aXRpb24g Ym91bmRzIGRvIG5vdCBjb250YWluIHZhbHVlICglcykgYnV0IHNwbGl0IHBhcnRpdGlvbiBcIiVz XCIgZG9lcyIsCisJCQkJCSAgICJOVUxMIiwKKwkJCQkJICAgZ2V0X3JlbF9uYW1lKHBhcnRPaWQp KSwKKwkJCQllcnJoaW50KCIlcyByZXF1aXJlIGNvbWJpbmVkIGJvdW5kcyBvZiBuZXcgcGFydGl0 aW9ucyBtdXN0IGV4YWN0bHkgbWF0Y2ggdGhlIGJvdW5kIG9mIHRoZSBzcGxpdCBwYXJ0aXRpb24i LAorCQkJCQkJIkFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT04iKSk7CisKKwkvKgorCSAq IFNlYXJjaCBhbGwgdmFsdWVzIG9mIHNwbGl0IHBhcnRpdGlvbiB3aXRoIHBhcnRPaWQgaW4gdGhl IFBhcnRpdGlvbkRlc2MKKwkgKiBvZiBwYXJ0aXRpb25lZCB0YWJsZS4KKwkgKi8KKwlmb3IgKGkg PSAwOyBpIDwgYm91bmRpbmZvLT5uZGF0dW1zOyBpKyspCisJeworCQlpZiAocGFydGRlc2MtPm9p ZHNbYm91bmRpbmZvLT5pbmRleGVzW2ldXSA9PSBwYXJ0T2lkKQorCQl7CisJCQkvKiBXZSBmb3Vu ZCB0aGUgdmFsdWUgdGhhdCB0aGUgc3BsaXQgcGFydGl0aW9uIGNvbnRhaW5zLiAqLworCQkJZGF0 dW0gPSBib3VuZGluZm8tPmRhdHVtc1tpXVswXTsKKwkJCWlmICghZmluZF92YWx1ZV9pbl9uZXdf cGFydGl0aW9uc19saXN0KCZrZXktPnBhcnRzdXBmdW5jWzBdLAorCQkJCQkJCQkJCQkJICAga2V5 LT5wYXJ0Y29sbGF0aW9uLCBwYXJ0cywgbnBhcnRzLCBkYXR1bSwgZmFsc2UpKQorCQkJeworCQkJ CWZvdW5kID0gZmFsc2U7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKwl9CisKKwlpZiAoIWZvdW5k KQorCXsKKwkJQ29uc3QJICAgKm5vdEZvdW5kVmFsOworCisJCS8qCisJCSAqIE1ha2UgYSBDb25z dCBmb3IgZ2V0dGluZyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtaXNzaW5nCisJ CSAqIHZhbHVlLgorCQkgKi8KKwkJbm90Rm91bmRWYWwgPSBtYWtlQ29uc3Qoa2V5LT5wYXJ0dHlw aWRbMF0sCisJCQkJCQkJCWtleS0+cGFydHR5cG1vZFswXSwKKwkJCQkJCQkJa2V5LT5wYXJ0dHlw Y29sbFswXSwKKwkJCQkJCQkJa2V5LT5wYXJ0dHlwbGVuWzBdLAorCQkJCQkJCQlkYXR1bSwKKwkJ CQkJCQkJZmFsc2UsCS8qIGlzbnVsbCAqLworCQkJCQkJCQlrZXktPnBhcnR0eXBieXZhbFswXSk7 CisKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1Rf REVGSU5JVElPTiksCisJCQkJZXJybXNnKCJuZXcgcGFydGl0aW9ucyBjb21iaW5lZCBwYXJ0aXRp b24gYm91bmRzIGRvIG5vdCBjb250YWluIHZhbHVlICglcykgYnV0IHNwbGl0IHBhcnRpdGlvbiBc IiVzXCIgZG9lcyIsCisJCQkJCSAgIGRlcGFyc2VfZXhwcmVzc2lvbigoTm9kZSAqKSBub3RGb3Vu ZFZhbCwgTklMLCBmYWxzZSwgZmFsc2UpLAorCQkJCQkgICBnZXRfcmVsX25hbWUocGFydE9pZCkp LAorCQkJCWVycmhpbnQoIiVzIHJlcXVpcmUgY29tYmluZWQgYm91bmRzIG9mIG5ldyBwYXJ0aXRp b25zIG11c3QgZXhhY3RseSBtYXRjaCB0aGUgYm91bmQgb2YgdGhlIHNwbGl0IHBhcnRpdGlvbiIs CisJCQkJCQkiQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTiIpKTsKKwl9Cit9CisKKy8q CisgKiBjaGVja19wYXJ0aXRpb25zX2Zvcl9zcGxpdAorICoKKyAqIENoZWNrcyBuZXcgcGFydGl0 aW9ucyBmb3IgdGhlIFNQTElUIFBBUlRJVElPTiBjb21tYW5kOgorICogMS4gQm91bmRzIG9mIG5l dyBwYXJ0aXRpb25zIHNob3VsZCBub3Qgb3ZlcmxhcCB3aXRoIG5ldyBhbmQgZXhpc3RpbmcKKyAq CSAgcGFydGl0aW9ucy4KKyAqIDIuIEluIHRoZSBjYXNlIHdoZW4gbmV3IG9yIGV4aXN0aW5nIHBh cnRpdGlvbnMgY29udGFpbiB0aGUgREVGQVVMVAorICoJICBwYXJ0aXRpb24sIG5ldyBwYXJ0aXRp b25zIGNhbiBoYXZlIGFueSBib3VuZHMgaW5zaWRlIHRoZSBzcGxpdCBwYXJ0aXRpb24KKyAqCSAg Ym91bmQgKGNhbiBiZSBzcGFjZXMgYmV0d2VlbiBwYXJ0aXRpb24gYm91bmRzKS4KKyAqIDMuIElu IGNhc2UgbmV3IHBhcnRpdGlvbnMgZG9uJ3QgY29udGFpbiB0aGUgREVGQVVMVCBwYXJ0aXRpb24g YW5kIHRoZQorICoJICBwYXJ0aXRpb25lZCB0YWJsZSBkb2VzIG5vdCBoYXZlIHRoZSBERUZBVUxU IHBhcnRpdGlvbiwgdGhlIGZvbGxvd2luZworICoJICBzaG91bGQgYmUgdHJ1ZTogdGhlIHN1bSBv ZiB0aGUgYm91bmRzIG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBiZSBlcXVhbAorICYJICB0byB0 aGUgYm91bmQgb2YgdGhlIHNwbGl0IHBhcnRpdGlvbi4KKyAqCisgKiBwYXJlbnQ6CQkJcGFydGl0 aW9uZWQgdGFibGUKKyAqIHNwbGl0UGFydE9pZDoJc3BsaXQgcGFydGl0aW9uIE9pZAorICogcGFy dGxpc3Q6CQlsaXN0IG9mIG5ldyBwYXJ0aXRpb25zIGFmdGVyIHBhcnRpdGlvbiBzcGxpdAorICog cHN0YXRlOgkJCXBvaW50ZXIgdG8gUGFyc2VTdGF0ZSBzdHJ1Y3QgZm9yIGRldGVybWluZSBlcnJv ciBwb3NpdGlvbgorICovCit2b2lkCitjaGVja19wYXJ0aXRpb25zX2Zvcl9zcGxpdChSZWxhdGlv biBwYXJlbnQsCisJCQkJCQkgICBPaWQgc3BsaXRQYXJ0T2lkLAorCQkJCQkJICAgTGlzdCAqcGFy dGxpc3QsCisJCQkJCQkgICBQYXJzZVN0YXRlICpwc3RhdGUpCit7CisJUGFydGl0aW9uS2V5IGtl eTsKKwljaGFyCQlzdHJhdGVneTsKKwlPaWQJCQlkZWZhdWx0UGFydE9pZDsKKwlib29sCQlpc1Nw bGl0UGFydERlZmF1bHQ7CisJYm9vbAkJY3JlYXRlRGVmYXVsdFBhcnQgPSBmYWxzZTsKKwlpbnQJ CQlkZWZhdWx0X2luZGV4ID0gLTE7CisJaW50CQkJaTsKKwlTaW5nbGVQYXJ0aXRpb25TcGVjICoq bmV3X3BhcnRzOworCVNpbmdsZVBhcnRpdGlvblNwZWMgKnNwc1ByZXYgPSBOVUxMOworCisJLyoK KwkgKiBucGFydHMgY291bnRzIHRoZSBudW1iZXIgb2Ygc3BsaXQgcGFydGl0aW9ucywgYnV0IGl0 IGV4Y2x1ZGUgdGhlCisJICogZGVmYXVsdCBwYXJ0aXRpb24uCisJICovCisJaW50CQkJbnBhcnRz ID0gMDsKKworCWtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudCk7CisJc3RyYXRl Z3kgPSBnZXRfcGFydGl0aW9uX3N0cmF0ZWd5KGtleSk7CisKKwlkZWZhdWx0UGFydE9pZCA9CisJ CWdldF9kZWZhdWx0X29pZF9mcm9tX3BhcnRkZXNjKFJlbGF0aW9uR2V0UGFydGl0aW9uRGVzYyhw YXJlbnQsIHRydWUpKTsKKworCUFzc2VydChzdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lf UkFOR0UgfHwKKwkJICAgc3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX0xJU1QpOworCisJ LyoKKwkgKiBNYWtlIGFuIGFycmF5IG5ld19wYXJ0cyB3aXRoIG5ldyBwYXJ0aXRpb25zIGV4Y2Vw dCB0aGUgREVGQVVMVAorCSAqIHBhcnRpdGlvbi4KKwkgKi8KKwluZXdfcGFydHMgPSAoU2luZ2xl UGFydGl0aW9uU3BlYyAqKikKKwkJcGFsbG9jMChsaXN0X2xlbmd0aChwYXJ0bGlzdCkgKiBzaXpl b2YoU2luZ2xlUGFydGl0aW9uU3BlYyAqKSk7CisKKwkvKiBpc1NwbGl0UGFydERlZmF1bHQgZmxh ZzogaXMgc3BsaXQgcGFydGl0aW9uIGEgREVGQVVMVCBwYXJ0aXRpb24/ICovCisJaXNTcGxpdFBh cnREZWZhdWx0ID0gKGRlZmF1bHRQYXJ0T2lkID09IHNwbGl0UGFydE9pZCk7CisKKwlmb3JlYWNo X25vZGUoU2luZ2xlUGFydGl0aW9uU3BlYywgc3BzLCBwYXJ0bGlzdCkKKwl7CisJCWlmIChzcHMt PmJvdW5kLT5pc19kZWZhdWx0KQorCQkJZGVmYXVsdF9pbmRleCA9IGZvcmVhY2hfY3VycmVudF9p bmRleChzcHMpOworCQllbHNlCisJCQluZXdfcGFydHNbbnBhcnRzKytdID0gc3BzOworCX0KKwor CS8qIEFuIGluZGljYXRvciB0aGF0IHRoZSBERUZBVUxUIHBhcnRpdGlvbiB3aWxsIGJlIGNyZWF0 ZWQuICovCisJaWYgKGRlZmF1bHRfaW5kZXggIT0gLTEpCisJeworCQljcmVhdGVEZWZhdWx0UGFy dCA9IHRydWU7CisJCUFzc2VydChucGFydHMgPT0gbGlzdF9sZW5ndGgocGFydGxpc3QpIC0gMSk7 CisJfQorCisJaWYgKHN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9SQU5HRSkKKwl7CisJ CVBhcnRpdGlvblJhbmdlQm91bmQgKipsb3dlcl9ib3VuZHM7CisJCVNpbmdsZVBhcnRpdGlvblNw ZWMgKip0bXBfbmV3X3BhcnRzOworCisJCS8qCisJCSAqIFRvIHNpbXBsaWZ5IHRoZSBjaGVjayBm b3IgcmFuZ2VzIG9mIG5ldyBwYXJ0aXRpb25zLCB3ZSBuZWVkIHRvIHNvcnQKKwkJICogYWxsIHBh cnRpdGlvbnMgaW4gYXNjZW5kaW5nIG9yZGVyIG9mIHRoZWlyIGJvdW5kcyAod2UgY29tcGFyZSB0 aGUKKwkJICogbG93ZXIgYm91bmQgb25seSkuCisJCSAqLworCQlsb3dlcl9ib3VuZHMgPSAoUGFy dGl0aW9uUmFuZ2VCb3VuZCAqKikKKwkJCXBhbGxvYzAobnBhcnRzICogc2l6ZW9mKFBhcnRpdGlv blJhbmdlQm91bmQgKikpOworCisJCS8qIENyZWF0ZSBhbiBhcnJheSBvZiBsb3dlciBib3VuZHMu ICovCisJCWZvciAoaSA9IDA7IGkgPCBucGFydHM7IGkrKykKKwkJeworCQkJbG93ZXJfYm91bmRz W2ldID0gbWFrZV9vbmVfcGFydGl0aW9uX3Jib3VuZChrZXksIGksCisJCQkJCQkJCQkJCQkJCW5l d19wYXJ0c1tpXS0+Ym91bmQtPmxvd2VyZGF0dW1zLCB0cnVlKTsKKwkJfQorCisJCS8qIFNvcnQg dGhlIGFycmF5IG9mIGxvd2VyIGJvdW5kcy4gKi8KKwkJcXNvcnRfYXJnKGxvd2VyX2JvdW5kcywg bnBhcnRzLCBzaXplb2YoUGFydGl0aW9uUmFuZ2VCb3VuZCAqKSwKKwkJCQkgIHFzb3J0X3BhcnRp dGlvbl9yYm91bmRfY21wLCAodm9pZCAqKSBrZXkpOworCisJCS8qIFJlb3JkZXIgdGhlIGFycmF5 IG9mIHBhcnRpdGlvbnMuICovCisJCXRtcF9uZXdfcGFydHMgPSBuZXdfcGFydHM7CisJCW5ld19w YXJ0cyA9IChTaW5nbGVQYXJ0aXRpb25TcGVjICoqKQorCQkJcGFsbG9jMChucGFydHMgKiBzaXpl b2YoU2luZ2xlUGFydGl0aW9uU3BlYyAqKSk7CisJCWZvciAoaSA9IDA7IGkgPCBucGFydHM7IGkr KykKKwkJCW5ld19wYXJ0c1tpXSA9IHRtcF9uZXdfcGFydHNbbG93ZXJfYm91bmRzW2ldLT5pbmRl eF07CisKKwkJcGZyZWUodG1wX25ld19wYXJ0cyk7CisJCXBmcmVlKGxvd2VyX2JvdW5kcyk7CisJ fQorCisJZm9yIChpID0gMDsgaSA8IG5wYXJ0czsgaSsrKQorCXsKKwkJU2luZ2xlUGFydGl0aW9u U3BlYyAqc3BzID0gbmV3X3BhcnRzW2ldOworCisJCWlmIChpc1NwbGl0UGFydERlZmF1bHQpCisJ CXsKKwkJCS8qCisJCQkgKiBXaGVuIHRoZSBzcGxpdCBwYXJ0aXRpb24gaXMgdGhlIERFRkFVTFQg cGFydGl0aW9uLCB3ZSBjYW4gdXNlCisJCQkgKiBhbnkgZnJlZSByYW5nZXMgLSBhcyB3aGVuIGNy ZWF0aW5nIGEgbmV3IHBhcnRpdGlvbi4KKwkJCSAqLworCQkJY2hlY2tfbmV3X3BhcnRpdGlvbl9i b3VuZChzcHMtPm5hbWUtPnJlbG5hbWUsIHBhcmVudCwgc3BzLT5ib3VuZCwKKwkJCQkJCQkJCSAg cHN0YXRlKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8qCisJCQkgKiBDaGVja3MgdGhhdCB0aGUg Ym91bmRzIG9mIHRoZSBjdXJyZW50IHBhcnRpdGlvbiBhcmUgaW5zaWRlIHRoZQorCQkJICogYm91 bmRzIG9mIHRoZSBzcGxpdCBwYXJ0aXRpb24uIEZvciByYW5nZSBwYXJ0aXRpb25pbmc6IGNoZWNr cworCQkJICogdGhhdCB0aGUgdXBwZXIgYm91bmQgb2YgdGhlIHByZXZpb3VzIHBhcnRpdGlvbiBp cyBlcXVhbCB0byB0aGUKKwkJCSAqIGxvd2VyIGJvdW5kIG9mIHRoZSBjdXJyZW50IHBhcnRpdGlv bi4gRm9yIGxpc3QgcGFydGl0aW9uaW5nOgorCQkJICogY2hlY2tzIHRoYXQgdGhlIHNwbGl0IHBh cnRpdGlvbiBjb250YWlucyBhbGwgdmFsdWVzIG9mIHRoZQorCQkJICogY3VycmVudCBwYXJ0aXRp b24uCisJCQkgKi8KKwkJCWlmIChzdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfUkFOR0Up CisJCQl7CisJCQkJYm9vbAkJZmlyc3QgPSAoaSA9PSAwKTsKKwkJCQlib29sCQlsYXN0ID0gKGkg PT0gKG5wYXJ0cyAtIDEpKTsKKworCQkJCWNoZWNrX3BhcnRpdGlvbl9ib3VuZHNfZm9yX3NwbGl0 X3JhbmdlKHBhcmVudCwgc3BzLT5uYW1lLT5yZWxuYW1lLCBzcHMtPmJvdW5kLAorCQkJCQkJCQkJ CQkJCSAgIHNwbGl0UGFydE9pZCwgZmlyc3QsIGxhc3QsCisJCQkJCQkJCQkJCQkJICAgY3JlYXRl RGVmYXVsdFBhcnQsIHBzdGF0ZSk7CisJCQl9CisJCQllbHNlCisJCQkJY2hlY2tfcGFydGl0aW9u X2JvdW5kc19mb3Jfc3BsaXRfbGlzdChwYXJlbnQsIHNwcy0+bmFtZS0+cmVsbmFtZSwKKwkJCQkJ CQkJCQkJCQkgIHNwcy0+Ym91bmQsIHNwbGl0UGFydE9pZCwgcHN0YXRlKTsKKwkJfQorCisJCS8q IFJhbmdlcyBvZiBuZXcgcGFydGl0aW9ucyBzaG91bGQgbm90IG92ZXJsYXAuICovCisJCWlmIChz dHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfUkFOR0UgJiYgc3BzUHJldikKKwkJCWNoZWNr X3R3b19wYXJ0aXRpb25zX2JvdW5kc19yYW5nZShwYXJlbnQsIHNwc1ByZXYtPm5hbWUsIHNwc1By ZXYtPmJvdW5kLAorCQkJCQkJCQkJCQkgIHNwcy0+bmFtZSwgc3BzLT5ib3VuZCwKKwkJCQkJCQkJ CQkJICBjcmVhdGVEZWZhdWx0UGFydCwKKwkJCQkJCQkJCQkJICBmYWxzZSwKKwkJCQkJCQkJCQkJ ICBwc3RhdGUpOworCisJCXNwc1ByZXYgPSBzcHM7CisJfQorCisJaWYgKHN0cmF0ZWd5ID09IFBB UlRJVElPTl9TVFJBVEVHWV9MSVNUKQorCXsKKwkJLyogVmFsdWVzIG9mIG5ldyBwYXJ0aXRpb25z IHNob3VsZCBub3Qgb3ZlcmxhcC4gKi8KKwkJY2hlY2tfcGFydGl0aW9uc19ub3Rfb3ZlcmxhcF9s aXN0KHBhcmVudCwgbmV3X3BhcnRzLCBucGFydHMsCisJCQkJCQkJCQkJICBwc3RhdGUpOworCisJ CS8qCisJCSAqIE5lZWQgdG8gY2hlY2sgdGhhdCBhbGwgdmFsdWVzIG9mIHRoZSBzcGxpdCBwYXJ0 aXRpb24gYXJlIGNvbnRhaW5lZAorCQkgKiBpbiB0aGUgbmV3IHBhcnRpdGlvbnMuIFNraXAgdGhp cyBjaGVjayBpZiB0aGUgREVGQVVMVCBwYXJ0aXRpb24KKwkJICogZXhpc3RzLgorCQkgKi8KKwkJ aWYgKCFjcmVhdGVEZWZhdWx0UGFydCkKKwkJCWNoZWNrX3BhcmVudF92YWx1ZXNfaW5fbmV3X3Bh cnRpdGlvbnMocGFyZW50LCBzcGxpdFBhcnRPaWQsCisJCQkJCQkJCQkJCQkgIG5ld19wYXJ0cywg bnBhcnRzLCBwc3RhdGUpOworCX0KKworCXBmcmVlKG5ld19wYXJ0cyk7Cit9CmRpZmYgLS1naXQg YS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBs ZXRlLmluLmMKaW5kZXggMzE3NmZkOTJhZDMuLmIxZmY2ZjZjZDk0IDEwMDY0NAotLS0gYS9zcmMv YmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0 ZS5pbi5jCkBAIC0yNzczLDcgKzI3NzMsNyBAQCBtYXRjaF9wcmV2aW91c193b3JkcyhpbnQgcGF0 dGVybl9pZCwKIAkJCQkJICAiT1dORVIgVE8iLCAiU0VUIiwgIlZBTElEQVRFIENPTlNUUkFJTlQi LAogCQkJCQkgICJSRVBMSUNBIElERU5USVRZIiwgIkFUVEFDSCBQQVJUSVRJT04iLAogCQkJCQkg ICJERVRBQ0ggUEFSVElUSU9OIiwgIkZPUkNFIFJPVyBMRVZFTCBTRUNVUklUWSIsCi0JCQkJCSAg Ik1FUkdFIFBBUlRJVElPTlMgKCIsCisJCQkJCSAgIlNQTElUIFBBUlRJVElPTiIsICJNRVJHRSBQ QVJUSVRJT05TICgiLAogCQkJCQkgICJPRiIsICJOT1QgT0YiKTsKIAkvKiBBTFRFUiBUQUJMRSB4 eHggQUREICovCiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiVEFCTEUiLCBNYXRjaEFueSwg IkFERCIpKQpAQCAtMzAzNiwxMCArMzAzNiwxMCBAQCBtYXRjaF9wcmV2aW91c193b3JkcyhpbnQg cGF0dGVybl9pZCwKIAkJQ09NUExFVEVfV0lUSCgiRlJPTSAoIiwgIklOICgiLCAiV0lUSCAoIik7 CiAKIAkvKgotCSAqIElmIHdlIGhhdmUgQUxURVIgVEFCTEUgPGZvbz4gREVUQUNIIFBBUlRJVElP TiwgcHJvdmlkZSBhIGxpc3Qgb2YKKwkgKiBJZiB3ZSBoYXZlIEFMVEVSIFRBQkxFIDxmb28+IERF VEFDSHxTUExJVCBQQVJUSVRJT04sIHByb3ZpZGUgYSBsaXN0IG9mCiAJICogcGFydGl0aW9ucyBv ZiA8Zm9vPi4KIAkgKi8KLQllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJUQUJMRSIsIE1hdGNo QW55LCAiREVUQUNIIiwgIlBBUlRJVElPTiIpKQorCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwg IlRBQkxFIiwgTWF0Y2hBbnksICJERVRBQ0h8U1BMSVQiLCAiUEFSVElUSU9OIikpCiAJewogCQlz ZXRfY29tcGxldGlvbl9yZWZlcmVuY2UocHJldjNfd2QpOwogCQlDT01QTEVURV9XSVRIX1NDSEVN QV9RVUVSWShRdWVyeV9mb3JfcGFydGl0aW9uX29mX3RhYmxlKTsKQEAgLTMwNDcsNiArMzA0Nywx MCBAQCBtYXRjaF9wcmV2aW91c193b3JkcyhpbnQgcGF0dGVybl9pZCwKIAllbHNlIGlmIChNYXRj aGVzKCJBTFRFUiIsICJUQUJMRSIsIE1hdGNoQW55LCAiREVUQUNIIiwgIlBBUlRJVElPTiIsIE1h dGNoQW55KSkKIAkJQ09NUExFVEVfV0lUSCgiQ09OQ1VSUkVOVExZIiwgIkZJTkFMSVpFIik7CiAK KwkvKiBBTFRFUiBUQUJMRSA8bmFtZT4gU1BMSVQgUEFSVElUSU9OIDxuYW1lPiAqLworCWVsc2Ug aWYgKE1hdGNoZXMoIkFMVEVSIiwgIlRBQkxFIiwgTWF0Y2hBbnksICJTUExJVCIsICJQQVJUSVRJ T04iLCBNYXRjaEFueSkpCisJCUNPTVBMRVRFX1dJVEgoIklOVE8gKCBQQVJUSVRJT04iKTsKKwog CS8qIEFMVEVSIFRBQkxFIDxuYW1lPiBNRVJHRSBQQVJUSVRJT05TICggKi8KIAllbHNlIGlmIChN YXRjaGVzKCJBTFRFUiIsICJUQUJMRSIsIE1hdGNoQW55LCAiTUVSR0UiLCAiUEFSVElUSU9OUyIs ICIoIikpCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIv c3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IGU0M2ExZjk0NmE5Li5iYzdhZGJh NGEwZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3Ny Yy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtOTY1LDE3ICs5NjUsNDAgQEAgdHlwZWRl ZiBzdHJ1Y3QgUGFydGl0aW9uUmFuZ2VEYXR1bQogCVBhcnNlTG9jCWxvY2F0aW9uOwkJLyogdG9r ZW4gbG9jYXRpb24sIG9yIC0xIGlmIHVua25vd24gKi8KIH0gUGFydGl0aW9uUmFuZ2VEYXR1bTsK IAorLyoKKyAqIFBhcnRpdGlvbkRlc2MgLSBpbmZvIGFib3V0IGEgc2luZ2xlIHBhcnRpdGlvbiBm b3IgdGhlIEFMVEVSIFRBQkxFIFNQTElUCisgKgkgIFBBUlRJVElPTiBjb21tYW5kCisgKi8KK3R5 cGVkZWYgc3RydWN0IFNpbmdsZVBhcnRpdGlvblNwZWMKK3sKKwlOb2RlVGFnCQl0eXBlOworCisJ UmFuZ2VWYXIgICAqbmFtZTsJCQkvKiBuYW1lIG9mIHBhcnRpdGlvbiAqLworCVBhcnRpdGlvbkJv dW5kU3BlYyAqYm91bmQ7CS8qIEZPUiBWQUxVRVMsIGlmIGF0dGFjaGluZyAqLworfSBTaW5nbGVQ YXJ0aXRpb25TcGVjOworCiAvKgogICogUGFydGl0aW9uQ21kIC0gaW5mbyBmb3IgQUxURVIgVEFC TEUvSU5ERVggQVRUQUNIL0RFVEFDSCBQQVJUSVRJT04gYW5kIGZvcgotICoJICBBTFRFUiBUQUJM RSBNRVJHRSBQQVJUSVRJT05TIGNvbW1hbmRzCisgKgkgIEFMVEVSIFRBQkxFIFNQTElUL01FUkdF IFBBUlRJVElPTihTKSBjb21tYW5kcwogICovCiB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25DbWQK IHsKIAlOb2RlVGFnCQl0eXBlOwotCVJhbmdlVmFyICAgKm5hbWU7CQkJLyogbmFtZSBvZiBwYXJ0 aXRpb24gdG8gYXR0YWNoL2RldGFjaC9tZXJnZSAqLwotCVBhcnRpdGlvbkJvdW5kU3BlYyAqYm91 bmQ7CS8qIEZPUiBWQUxVRVMsIGlmIGF0dGFjaGluZyAqLwotCUxpc3QJICAgKnBhcnRsaXN0OwkJ LyogbGlzdCBvZiBwYXJ0aXRpb25zIHRvIGJlIG1lcmdlZCwgdXNlZCBpbgotCQkJCQkJCQkgKiBB TFRFUiBUQUJMRSBNRVJHRSBQQVJUSVRJT05TICovCisKKwkvKiBuYW1lIG9mIHBhcnRpdGlvbiB0 byBhdHRhY2gvZGV0YWNoL21lcmdlL3NwbGl0ICovCisJUmFuZ2VWYXIgICAqbmFtZTsKKworCS8q IEZPUiBWQUxVRVMsIGlmIGF0dGFjaGluZyAqLworCVBhcnRpdGlvbkJvdW5kU3BlYyAqYm91bmQ7 CisKKwkvKgorCSAqIGxpc3Qgb2YgcGFydGl0aW9ucyB0byBiZSBzcGxpdC9tZXJnZWQsIHVzZWQg aW4gQUxURVIgVEFCTEUgTUVSR0UKKwkgKiBQQVJUSVRJT05TIGFuZCBBTFRFUiBUQUJMRSBTUExJ VCBQQVJUSVRJT05TLiBGb3IgbWVyZ2UgcGFydGl0aW9ucywKKwkgKiBwYXJ0bGlzdCBpcyBhIGxp c3Qgb2YgUmFuZ2VWYXI7IEZvciBzcGxpdCBwYXJ0aXRpb24sIGl0IGlzIGEgbGlzdCBvZgorCSAq IFNpbmdsZVBhcnRpdGlvblNwZWMuCisJICovCisJTGlzdAkgICAqcGFydGxpc3Q7CisKIAlib29s CQljb25jdXJyZW50OwogfSBQYXJ0aXRpb25DbWQ7CiAKQEAgLTI0NzksNiArMjUwMiw3IEBAIHR5 cGVkZWYgZW51bSBBbHRlclRhYmxlVHlwZQogCUFUX0F0dGFjaFBhcnRpdGlvbiwJCQkvKiBBVFRB Q0ggUEFSVElUSU9OICovCiAJQVRfRGV0YWNoUGFydGl0aW9uLAkJCS8qIERFVEFDSCBQQVJUSVRJ T04gKi8KIAlBVF9EZXRhY2hQYXJ0aXRpb25GaW5hbGl6ZSwgLyogREVUQUNIIFBBUlRJVElPTiBG SU5BTElaRSAqLworCUFUX1NwbGl0UGFydGl0aW9uLAkJCS8qIFNQTElUIFBBUlRJVElPTiAqLwog CUFUX01lcmdlUGFydGl0aW9ucywJCQkvKiBNRVJHRSBQQVJUSVRJT05TICovCiAJQVRfQWRkSWRl bnRpdHksCQkJCS8qIEFERCBJREVOVElUWSAqLwogCUFUX1NldElkZW50aXR5LAkJCQkvKiBTRVQg aWRlbnRpdHkgY29sdW1uIG9wdGlvbnMgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNl ci9rd2xpc3QuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAppbmRleCBkNGNkYTI5YzJh Mi4uOWZkZTU4ZjU0MWMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAor KysgYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKQEAgLTQyNCw2ICs0MjQsNyBAQCBQR19L RVlXT1JEKCJzbWFsbGludCIsIFNNQUxMSU5ULCBDT0xfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVM KQogUEdfS0VZV09SRCgic25hcHNob3QiLCBTTkFQU0hPVCwgVU5SRVNFUlZFRF9LRVlXT1JELCBC QVJFX0xBQkVMKQogUEdfS0VZV09SRCgic29tZSIsIFNPTUUsIFJFU0VSVkVEX0tFWVdPUkQsIEJB UkVfTEFCRUwpCiBQR19LRVlXT1JEKCJzb3VyY2UiLCBTT1VSQ0UsIFVOUkVTRVJWRURfS0VZV09S RCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoInNwbGl0IiwgU1BMSVQsIFVOUkVTRVJWRURfS0VZ V09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInNxbCIsIFNRTF9QLCBVTlJFU0VSVkVEX0tF WVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJzdGFibGUiLCBTVEFCTEUsIFVOUkVTRVJW RURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInN0YW5kYWxvbmUiLCBTVEFOREFM T05FX1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmggYi9zcmMvaW5jbHVkZS9wYXJ0aXRpb25p bmcvcGFydGJvdW5kcy5oCmluZGV4IDI1YzMxMWZmOWJkLi5lNTdjNWMyMDQ5NiAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuaAorKysgYi9zcmMvaW5jbHVk ZS9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5oCkBAIC0xNDMsNiArMTQzLDEwIEBAIGV4dGVybiBp bnQJcGFydGl0aW9uX3JhbmdlX2RhdHVtX2JzZWFyY2goRm1nckluZm8gKnBhcnRzdXBmdW5jLAog ZXh0ZXJuIGludAlwYXJ0aXRpb25faGFzaF9ic2VhcmNoKFBhcnRpdGlvbkJvdW5kSW5mbyBib3Vu ZGluZm8sCiAJCQkJCQkJCSAgIGludCBtb2R1bHVzLCBpbnQgcmVtYWluZGVyKTsKIAorZXh0ZXJu IHZvaWQgY2hlY2tfcGFydGl0aW9uc19mb3Jfc3BsaXQoUmVsYXRpb24gcGFyZW50LAorCQkJCQkJ CQkJICAgT2lkIHNwbGl0UGFydE9pZCwKKwkJCQkJCQkJCSAgIExpc3QgKnBhcnRsaXN0LAorCQkJ CQkJCQkJICAgUGFyc2VTdGF0ZSAqcHN0YXRlKTsKIGV4dGVybiB2b2lkIGNhbGN1bGF0ZV9wYXJ0 aXRpb25fYm91bmRfZm9yX21lcmdlKFJlbGF0aW9uIHBhcmVudCwKIAkJCQkJCQkJCQkJCUxpc3Qg KnBhcnROYW1lcywKIAkJCQkJCQkJCQkJCUxpc3QgKnBhcnRPaWRzLApkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL3BhcnRpdGlvbi1zcGxpdC5vdXQgYi9zcmMvdGVzdC9p c29sYXRpb24vZXhwZWN0ZWQvcGFydGl0aW9uLXNwbGl0Lm91dApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uMDJhNWJiNGYxZjUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMv dGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvcGFydGl0aW9uLXNwbGl0Lm91dApAQCAtMCwwICsxLDIz MCBAQAorUGFyc2VkIHRlc3Qgc3BlYyB3aXRoIDIgc2Vzc2lvbnMKKworc3RhcnRpbmcgcGVybXV0 YXRpb246IHMxYiBzMXNwbHQgczJiIHMyaSBzMWMgczJjIHMycworc3RlcCBzMWI6IEJFR0lOOwor c3RlcCBzMXNwbHQ6IEFMVEVSIFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0cGFydF8xMF8y MCBJTlRPCisJCQkgICAoUEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTAp IFRPICgxNSksCisJCQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAo MTUpIFRPICgyMCkpOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRw YXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlU Oworc3RlcCBzMmk6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJz OiBTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gdHBhcnQgT1JERVIgQlkgdGFibGVv aWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBpOwordGFibGVvaWQgICAgIHwgaXx0ICAg ICAKKy0tLS0tLS0tLS0tLS0rLS0rLS0tLS0tCit0cGFydF8wMF8xMCAgfCAxfHRleHQwMQordHBh cnRfMDBfMTAgIHwgNXx0ZXh0MDUKK3RwYXJ0XzE1XzIwICB8MTV8dGV4dDE1Cit0cGFydF8yMF8z MCAgfDI1fHRleHQyNQordHBhcnRfZGVmYXVsdHwzNXx0ZXh0MzUKKyg1IHJvd3MpCisKKworc3Rh cnRpbmcgcGVybXV0YXRpb246IHMxYiBzMXNwbHQgczJicnIgczJpIHMxYyBzMmMgczJzCitzdGVw IHMxYjogQkVHSU47CitzdGVwIHMxc3BsdDogQUxURVIgVEFCTEUgdHBhcnQgU1BMSVQgUEFSVElU SU9OIHRwYXJ0XzEwXzIwIElOVE8KKwkJCSAgIChQQVJUSVRJT04gdHBhcnRfMTBfMTUgRk9SIFZB TFVFUyBGUk9NICgxMCkgVE8gKDE1KSwKKwkJCSAgICBQQVJUSVRJT04gdHBhcnRfMTVfMjAgRk9S IFZBTFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7CitzdGVwIHMyYnJyOiBCRUdJTiBJU09MQVRJT04g TEVWRUwgUkVQRUFUQUJMRSBSRUFEOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVF UyAoMSwgJ3RleHQwMScpOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBz Mmk6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1Qg dGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gdHBhcnQgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2Ns YXNzOjp0ZXh0IENPTExBVEUgIkMiLCBpOwordGFibGVvaWQgICAgIHwgaXx0ICAgICAKKy0tLS0t LS0tLS0tLS0rLS0rLS0tLS0tCit0cGFydF8wMF8xMCAgfCAxfHRleHQwMQordHBhcnRfMDBfMTAg IHwgNXx0ZXh0MDUKK3RwYXJ0XzE1XzIwICB8MTV8dGV4dDE1Cit0cGFydF8yMF8zMCAgfDI1fHRl eHQyNQordHBhcnRfZGVmYXVsdHwzNXx0ZXh0MzUKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVy bXV0YXRpb246IHMxYiBzMXNwbHQgczJicyBzMmkgczFjIHMyYyBzMnMKK3N0ZXAgczFiOiBCRUdJ TjsKK3N0ZXAgczFzcGx0OiBBTFRFUiBUQUJMRSB0cGFydCBTUExJVCBQQVJUSVRJT04gdHBhcnRf MTBfMjAgSU5UTworCQkJICAgKFBBUlRJVElPTiB0cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZST00g KDEwKSBUTyAoMTUpLAorCQkJICAgIFBBUlRJVElPTiB0cGFydF8xNV8yMCBGT1IgVkFMVUVTIEZS T00gKDE1KSBUTyAoMjApKTsKK3N0ZXAgczJiczogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklB TElaQUJMRTsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEn KTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJpOiA8Li4uIGNvbXBs ZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUIHRhYmxlb2lkOjpyZWdj bGFzcywgKiBGUk9NIHRwYXJ0IE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xM QVRFICJDIiwgaTsKK3RhYmxlb2lkICAgICB8IGl8dCAgICAgCistLS0tLS0tLS0tLS0tKy0tKy0t LS0tLQordHBhcnRfMDBfMTAgIHwgMXx0ZXh0MDEKK3RwYXJ0XzAwXzEwICB8IDV8dGV4dDA1Cit0 cGFydF8xNV8yMCAgfDE1fHRleHQxNQordHBhcnRfMjBfMzAgIHwyNXx0ZXh0MjUKK3RwYXJ0X2Rl ZmF1bHR8MzV8dGV4dDM1CisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMWJy ciBzMXNwbHQgczJiIHMyaSBzMWMgczJjIHMycworc3RlcCBzMWJycjogQkVHSU4gSVNPTEFUSU9O IExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczFzcGx0OiBBTFRFUiBUQUJMRSB0cGFydCBT UExJVCBQQVJUSVRJT04gdHBhcnRfMTBfMjAgSU5UTworCQkJICAgKFBBUlRJVElPTiB0cGFydF8x MF8xNSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUpLAorCQkJICAgIFBBUlRJVElPTiB0cGFy dF8xNV8yMCBGT1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjApKTsKK3N0ZXAgczJiOiBCRUdJTjsK K3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsgPHdhaXRp bmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJpOiA8Li4uIGNvbXBsZXRlZD4KK3N0 ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBG Uk9NIHRwYXJ0IE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwg aTsKK3RhYmxlb2lkICAgICB8IGl8dCAgICAgCistLS0tLS0tLS0tLS0tKy0tKy0tLS0tLQordHBh cnRfMDBfMTAgIHwgMXx0ZXh0MDEKK3RwYXJ0XzAwXzEwICB8IDV8dGV4dDA1Cit0cGFydF8xNV8y MCAgfDE1fHRleHQxNQordHBhcnRfMjBfMzAgIHwyNXx0ZXh0MjUKK3RwYXJ0X2RlZmF1bHR8MzV8 dGV4dDM1CisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMWJyciBzMXNwbHQg czJicnIgczJpIHMxYyBzMmMgczJzCitzdGVwIHMxYnJyOiBCRUdJTiBJU09MQVRJT04gTEVWRUwg UkVQRUFUQUJMRSBSRUFEOworc3RlcCBzMXNwbHQ6IEFMVEVSIFRBQkxFIHRwYXJ0IFNQTElUIFBB UlRJVElPTiB0cGFydF8xMF8yMCBJTlRPCisJCQkgICAoUEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZP UiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSksCisJCQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1XzIw IEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCkpOworc3RlcCBzMmJycjogQkVHSU4gSVNPTEFU SU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBW QUxVRVMgKDEsICd0ZXh0MDEnKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0 ZXAgczJpOiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VM RUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHRwYXJ0IE9SREVSIEJZIHRhYmxlb2lkOjpy ZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgaTsKK3RhYmxlb2lkICAgICB8IGl8dCAgICAgCist LS0tLS0tLS0tLS0tKy0tKy0tLS0tLQordHBhcnRfMDBfMTAgIHwgMXx0ZXh0MDEKK3RwYXJ0XzAw XzEwICB8IDV8dGV4dDA1Cit0cGFydF8xNV8yMCAgfDE1fHRleHQxNQordHBhcnRfMjBfMzAgIHwy NXx0ZXh0MjUKK3RwYXJ0X2RlZmF1bHR8MzV8dGV4dDM1CisoNSByb3dzKQorCisKK3N0YXJ0aW5n IHBlcm11dGF0aW9uOiBzMWJyciBzMXNwbHQgczJicyBzMmkgczFjIHMyYyBzMnMKK3N0ZXAgczFi cnI6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMxc3BsdDog QUxURVIgVEFCTEUgdHBhcnQgU1BMSVQgUEFSVElUSU9OIHRwYXJ0XzEwXzIwIElOVE8KKwkJCSAg IChQQVJUSVRJT04gdHBhcnRfMTBfMTUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KSwKKwkJ CSAgICBQQVJUSVRJT04gdHBhcnRfMTVfMjAgRk9SIFZBTFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7 CitzdGVwIHMyYnM6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7CitzdGVwIHMy aTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7IDx3YWl0aW5nIC4uLj4K K3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMyaTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzog Q09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSB0cGFy dCBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIGk7Cit0YWJs ZW9pZCAgICAgfCBpfHQgICAgIAorLS0tLS0tLS0tLS0tLSstLSstLS0tLS0KK3RwYXJ0XzAwXzEw ICB8IDF8dGV4dDAxCit0cGFydF8wMF8xMCAgfCA1fHRleHQwNQordHBhcnRfMTVfMjAgIHwxNXx0 ZXh0MTUKK3RwYXJ0XzIwXzMwICB8MjV8dGV4dDI1Cit0cGFydF9kZWZhdWx0fDM1fHRleHQzNQor KDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFicyBzMXNwbHQgczJiIHMyaSBz MWMgczJjIHMycworc3RlcCBzMWJzOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxF Oworc3RlcCBzMXNwbHQ6IEFMVEVSIFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0cGFydF8x MF8yMCBJTlRPCisJCQkgICAoUEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAo MTApIFRPICgxNSksCisJCQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMgRlJP TSAoMTUpIFRPICgyMCkpOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMmk6IElOU0VSVCBJTlRP IHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09N TUlUOworc3RlcCBzMmk6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAg czJzOiBTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gdHBhcnQgT1JERVIgQlkgdGFi bGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBpOwordGFibGVvaWQgICAgIHwgaXx0 ICAgICAKKy0tLS0tLS0tLS0tLS0rLS0rLS0tLS0tCit0cGFydF8wMF8xMCAgfCAxfHRleHQwMQor dHBhcnRfMDBfMTAgIHwgNXx0ZXh0MDUKK3RwYXJ0XzE1XzIwICB8MTV8dGV4dDE1Cit0cGFydF8y MF8zMCAgfDI1fHRleHQyNQordHBhcnRfZGVmYXVsdHwzNXx0ZXh0MzUKKyg1IHJvd3MpCisKKwor c3RhcnRpbmcgcGVybXV0YXRpb246IHMxYnMgczFzcGx0IHMyYnJyIHMyaSBzMWMgczJjIHMycwor c3RlcCBzMWJzOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOworc3RlcCBzMXNw bHQ6IEFMVEVSIFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0cGFydF8xMF8yMCBJTlRPCisJ CQkgICAoUEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSks CisJCQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgy MCkpOworc3RlcCBzMmJycjogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsK K3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsgPHdhaXRp bmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJpOiA8Li4uIGNvbXBsZXRlZD4KK3N0 ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBG Uk9NIHRwYXJ0IE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwg aTsKK3RhYmxlb2lkICAgICB8IGl8dCAgICAgCistLS0tLS0tLS0tLS0tKy0tKy0tLS0tLQordHBh cnRfMDBfMTAgIHwgMXx0ZXh0MDEKK3RwYXJ0XzAwXzEwICB8IDV8dGV4dDA1Cit0cGFydF8xNV8y MCAgfDE1fHRleHQxNQordHBhcnRfMjBfMzAgIHwyNXx0ZXh0MjUKK3RwYXJ0X2RlZmF1bHR8MzV8 dGV4dDM1CisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMWJzIHMxc3BsdCBz MmJzIHMyaSBzMWMgczJjIHMycworc3RlcCBzMWJzOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VS SUFMSVpBQkxFOworc3RlcCBzMXNwbHQ6IEFMVEVSIFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJVElP TiB0cGFydF8xMF8yMCBJTlRPCisJCQkgICAoUEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxV RVMgRlJPTSAoMTApIFRPICgxNSksCisJCQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBW QUxVRVMgRlJPTSAoMTUpIFRPICgyMCkpOworc3RlcCBzMmJzOiBCRUdJTiBJU09MQVRJT04gTEVW RUwgU0VSSUFMSVpBQkxFOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwg J3RleHQwMScpOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMmk6IDwu Li4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgdGFibGVv aWQ6OnJlZ2NsYXNzLCAqIEZST00gdHBhcnQgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0 ZXh0IENPTExBVEUgIkMiLCBpOwordGFibGVvaWQgICAgIHwgaXx0ICAgICAKKy0tLS0tLS0tLS0t LS0rLS0rLS0tLS0tCit0cGFydF8wMF8xMCAgfCAxfHRleHQwMQordHBhcnRfMDBfMTAgIHwgNXx0 ZXh0MDUKK3RwYXJ0XzE1XzIwICB8MTV8dGV4dDE1Cit0cGFydF8yMF8zMCAgfDI1fHRleHQyNQor dHBhcnRfZGVmYXVsdHwzNXx0ZXh0MzUKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRp b246IHMxYiBzMXNwbHQgczJiIHMydSBzMWMgczJjIHMycworc3RlcCBzMWI6IEJFR0lOOworc3Rl cCBzMXNwbHQ6IEFMVEVSIFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0cGFydF8xMF8yMCBJ TlRPCisJCQkgICAoUEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRP ICgxNSksCisJCQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUp IFRPICgyMCkpOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMnU6IFVQREFURSB0cGFydCBTRVQg aSA9IDE2IHdoZXJlIGkgPSA1OyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3Rl cCBzMnU6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxF Q1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gdHBhcnQgT1JERVIgQlkgdGFibGVvaWQ6OnJl Z2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBpOwordGFibGVvaWQgICAgIHwgaXx0ICAgICAKKy0t LS0tLS0tLS0tLS0rLS0rLS0tLS0tCit0cGFydF8xNV8yMCAgfDE1fHRleHQxNQordHBhcnRfMTVf MjAgIHwxNnx0ZXh0MDUKK3RwYXJ0XzIwXzMwICB8MjV8dGV4dDI1Cit0cGFydF9kZWZhdWx0fDM1 fHRleHQzNQorKDQgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFiIHMxc3BsdCBz MmIgczJ1MiBzMWMgczJjIHMycworc3RlcCBzMWI6IEJFR0lOOworc3RlcCBzMXNwbHQ6IEFMVEVS IFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0cGFydF8xMF8yMCBJTlRPCisJCQkgICAoUEFS VElUSU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSksCisJCQkgICAg UEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCkpOworc3Rl cCBzMmI6IEJFR0lOOworc3RlcCBzMnUyOiBVUERBVEUgdHBhcnQgU0VUIGkgPSAxMSB3aGVyZSBp ID0gMTU7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMydTI6IDwuLi4g Y29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgdGFibGVvaWQ6 OnJlZ2NsYXNzLCAqIEZST00gdHBhcnQgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0 IENPTExBVEUgIkMiLCBpOwordGFibGVvaWQgICAgIHwgaXx0ICAgICAKKy0tLS0tLS0tLS0tLS0r LS0rLS0tLS0tCit0cGFydF8wMF8xMCAgfCA1fHRleHQwNQordHBhcnRfMTBfMTUgIHwxMXx0ZXh0 MTUKK3RwYXJ0XzIwXzMwICB8MjV8dGV4dDI1Cit0cGFydF9kZWZhdWx0fDM1fHRleHQzNQorKDQg cm93cykKKwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVs ZSBiL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUKaW5kZXggZGI0MmM1MzVi YTYuLmYyZTA2N2IxZmJjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9u X3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUKQEAg LTExMCw2ICsxMTAsNyBAQCB0ZXN0OiBwYXJ0aXRpb24ta2V5LXVwZGF0ZS0yCiB0ZXN0OiBwYXJ0 aXRpb24ta2V5LXVwZGF0ZS0zCiB0ZXN0OiBwYXJ0aXRpb24ta2V5LXVwZGF0ZS00CiB0ZXN0OiBw YXJ0aXRpb24tbWVyZ2UKK3Rlc3Q6IHBhcnRpdGlvbi1zcGxpdAogdGVzdDogcGxwZ3NxbC10b2Fz dAogdGVzdDogY2x1c3Rlci1jb25mbGljdAogdGVzdDogY2x1c3Rlci1jb25mbGljdC1wYXJ0aXRp b24KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9wYXJ0aXRpb24tc3BsaXQu c3BlYyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9wYXJ0aXRpb24tc3BsaXQuc3BlYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYWY5NTRiZTVkYzAKLS0tIC9kZXYv bnVsbAorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvcGFydGl0aW9uLXNwbGl0LnNwZWMK QEAgLTAsMCArMSw2MiBAQAorIyBWZXJpZnkgdGhhdCBTUExJVCBvcGVyYXRpb24gbG9ja3MgRE1M IG9wZXJhdGlvbnMgd2l0aCBwYXJ0aXRpb25lZCB0YWJsZQorCitzZXR1cAoreworICBEUk9QIFRB QkxFIElGIEVYSVNUUyB0cGFydDsKKyAgQ1JFQVRFIFRBQkxFIHRwYXJ0KGkgaW50LCB0IHRleHQp IHBhcnRpdGlvbiBieSByYW5nZShpKTsKKyAgQ1JFQVRFIFRBQkxFIHRwYXJ0XzAwXzEwIFBBUlRJ VElPTiBPRiB0cGFydCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxMCk7CisgIENSRUFURSBUQUJM RSB0cGFydF8xMF8yMCBQQVJUSVRJT04gT0YgdHBhcnQgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8g KDIwKTsKKyAgQ1JFQVRFIFRBQkxFIHRwYXJ0XzIwXzMwIFBBUlRJVElPTiBPRiB0cGFydCBGT1Ig VkFMVUVTIEZST00gKDIwKSBUTyAoMzApOworICBDUkVBVEUgVEFCTEUgdHBhcnRfZGVmYXVsdCBQ QVJUSVRJT04gT0YgdHBhcnQgREVGQVVMVDsKKyAgSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICg1 LCAndGV4dDA1Jyk7CisgIElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMTUsICd0ZXh0MTUnKTsK KyAgSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgyNSwgJ3RleHQyNScpOworICBJTlNFUlQgSU5U TyB0cGFydCBWQUxVRVMgKDM1LCAndGV4dDM1Jyk7Cit9CisKK3RlYXJkb3duCit7CisgIERST1Ag VEFCTEUgdHBhcnQ7Cit9CisKK3Nlc3Npb24gczEKK3N0ZXAgczFiCXsgQkVHSU47IH0KK3N0ZXAg czFicnIJeyBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOyB9CitzdGVwIHMx YnMJeyBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOyB9CitzdGVwIHMxc3BsdAl7 IEFMVEVSIFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0cGFydF8xMF8yMCBJTlRPCisJCQkg ICAoUEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSksCisJ CQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCkp OyB9CitzdGVwIHMxYwl7IENPTU1JVDsgfQorCisKK3Nlc3Npb24gczIKK3N0ZXAgczJiCXsgQkVH SU47IH0KK3N0ZXAgczJicnIJeyBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFE OyB9CitzdGVwIHMyYnMJeyBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOyB9Citz dGVwIHMyaQl7IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOyB9CitzdGVw IHMyYwl7IENPTU1JVDsgfQorc3RlcCBzMnMJeyBTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAq IEZST00gdHBhcnQgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMi LCBpOyB9CitzdGVwIHMydQl7IFVQREFURSB0cGFydCBTRVQgaSA9IDE2IHdoZXJlIGkgPSA1OyB9 CitzdGVwIHMydTIJeyBVUERBVEUgdHBhcnQgU0VUIGkgPSAxMSB3aGVyZSBpID0gMTU7IH0KKwor CisjIHMxIHN0YXJ0cyBTUExJVCBQQVJUSVRJT04gdGhlbiBzMiB0cnlpbmcgdG8gaW5zZXJ0IHJv dyBhbmQKKyMgd2FpdHMgdW50aWwgczEgZmluaXNoZWQgU1BMSVQgb3BlcmF0aW9uLgorCitwZXJt dXRhdGlvbiBzMWIgczFzcGx0IHMyYiBzMmkgczFjIHMyYyBzMnMKK3Blcm11dGF0aW9uIHMxYiBz MXNwbHQgczJicnIgczJpIHMxYyBzMmMgczJzCitwZXJtdXRhdGlvbiBzMWIgczFzcGx0IHMyYnMg czJpIHMxYyBzMmMgczJzCisKK3Blcm11dGF0aW9uIHMxYnJyIHMxc3BsdCBzMmIgczJpIHMxYyBz MmMgczJzCitwZXJtdXRhdGlvbiBzMWJyciBzMXNwbHQgczJicnIgczJpIHMxYyBzMmMgczJzCitw ZXJtdXRhdGlvbiBzMWJyciBzMXNwbHQgczJicyBzMmkgczFjIHMyYyBzMnMKKworcGVybXV0YXRp b24gczFicyBzMXNwbHQgczJiIHMyaSBzMWMgczJjIHMycworcGVybXV0YXRpb24gczFicyBzMXNw bHQgczJicnIgczJpIHMxYyBzMmMgczJzCitwZXJtdXRhdGlvbiBzMWJzIHMxc3BsdCBzMmJzIHMy aSBzMWMgczJjIHMycworCisjIFR1cGxlIHJvdXRpbmcgYmV0d2VlbiBwYXJ0aXRpb25zLgorcGVy bXV0YXRpb24gczFiIHMxc3BsdCBzMmIgczJ1IHMxYyBzMmMgczJzCisKKyMgVHVwbGUgcm91dGlu ZyBpbnNpZGUgc3BsaXR0aW5nIHBhcnRpdGlvbi4KK3Blcm11dGF0aW9uIHMxYiBzMXNwbHQgczJi IHMydTIgczFjIHMyYyBzMnMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxf ZGVwYXJzZS9leHBlY3RlZC9hbHRlcl90YWJsZS5vdXQgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf ZGRsX2RlcGFyc2UvZXhwZWN0ZWQvYWx0ZXJfdGFibGUub3V0CmluZGV4IDY4NmViZDMyNDJhLi4y MDVjNGUxMDZlMiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNl L2V4cGVjdGVkL2FsdGVyX3RhYmxlLm91dAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRs X2RlcGFyc2UvZXhwZWN0ZWQvYWx0ZXJfdGFibGUub3V0CkBAIC02MSw2ICs2MSwxMSBAQCBOT1RJ Q0U6ICBEREwgdGVzdDogdHlwZSBzaW1wbGUsIHRhZyBDUkVBVEUgVEFCTEUKIEFMVEVSIFRBQkxF IHBhcnQgTUVSR0UgUEFSVElUSU9OUyAocGFydDEsIHBhcnQyKSBJTlRPIHBhcnQxOwogTk9USUNF OiAgRERMIHRlc3Q6IHR5cGUgYWx0ZXIgdGFibGUsIHRhZyBBTFRFUiBUQUJMRQogTk9USUNFOiAg ICBzdWJjb21tYW5kOiB0eXBlIE1FUkdFIFBBUlRJVElPTlMgZGVzYyA8TlVMTD4KK0FMVEVSIFRB QkxFIHBhcnQgU1BMSVQgUEFSVElUSU9OIHBhcnQxIElOVE8KKwkoUEFSVElUSU9OIHBhcnQxIEZP UiBWQUxVRVMgRlJPTSAoMSkgdG8gKDEwMCksCisJIFBBUlRJVElPTiBwYXJ0MiBGT1IgVkFMVUVT IEZST00gKDEwMCkgdG8gKDIwMCkpOworTk9USUNFOiAgRERMIHRlc3Q6IHR5cGUgYWx0ZXIgdGFi bGUsIHRhZyBBTFRFUiBUQUJMRQorTk9USUNFOiAgICBzdWJjb21tYW5kOiB0eXBlIFNQTElUIFBB UlRJVElPTiBkZXNjIDxOVUxMPgogQUxURVIgVEFCTEUgcGFydCBBREQgUFJJTUFSWSBLRVkgKGEp OwogTk9USUNFOiAgRERMIHRlc3Q6IHR5cGUgYWx0ZXIgdGFibGUsIHRhZyBBTFRFUiBUQUJMRQog Tk9USUNFOiAgICBzdWJjb21tYW5kOiB0eXBlIEFERCBDT05TVFJBSU5UIChhbmQgcmVjdXJzZSkg ZGVzYyBjb25zdHJhaW50IHBhcnRfYV9ub3RfbnVsbCBvbiB0YWJsZSBwYXJ0CmRpZmYgLS1naXQg YS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2Uvc3FsL2FsdGVyX3RhYmxlLnNxbCBi L3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS9zcWwvYWx0ZXJfdGFibGUuc3FsCmlu ZGV4IDY2Y2IwOWI0ODQwLi4yNzI4MmI2NDM0ZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X2RkbF9kZXBhcnNlL3NxbC9hbHRlcl90YWJsZS5zcWwKKysrIGIvc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X2RkbF9kZXBhcnNlL3NxbC9hbHRlcl90YWJsZS5zcWwKQEAgLTQwLDYgKzQwLDEw IEBAIERST1AgVEFCTEUgcGFydDI7CiBDUkVBVEUgVEFCTEUgcGFydDIgUEFSVElUSU9OIE9GIHBh cnQgRk9SIFZBTFVFUyBGUk9NICgxMDApIHRvICgyMDApOwogQUxURVIgVEFCTEUgcGFydCBNRVJH RSBQQVJUSVRJT05TIChwYXJ0MSwgcGFydDIpIElOVE8gcGFydDE7CiAKK0FMVEVSIFRBQkxFIHBh cnQgU1BMSVQgUEFSVElUSU9OIHBhcnQxIElOVE8KKwkoUEFSVElUSU9OIHBhcnQxIEZPUiBWQUxV RVMgRlJPTSAoMSkgdG8gKDEwMCksCisJIFBBUlRJVElPTiBwYXJ0MiBGT1IgVkFMVUVTIEZST00g KDEwMCkgdG8gKDIwMCkpOworCiBBTFRFUiBUQUJMRSBwYXJ0IEFERCBQUklNQVJZIEtFWSAoYSk7 CiAKID4+Pj4+Pj4gZDkyN2U5YjY4M2YgKEltcGxlbWVudCBBTFRFUiBUQUJMRSAuLi4gTUVSR0Ug UEFSVElUSU9OUyAuLi4gY29tbWFuZCkKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9kZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNlLmMgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf ZGRsX2RlcGFyc2UvdGVzdF9kZGxfZGVwYXJzZS5jCmluZGV4IDdkZTVkZGI4Nzg1Li4xN2Q3MmU0 MTJmZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3Rlc3Rf ZGRsX2RlcGFyc2UuYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2UvdGVz dF9kZGxfZGVwYXJzZS5jCkBAIC0yOTYsNiArMjk2LDkgQEAgZ2V0X2FsdGVydGFibGVfc3ViY21k aW5mbyhQR19GVU5DVElPTl9BUkdTKQogCQkJY2FzZSBBVF9EZXRhY2hQYXJ0aXRpb25GaW5hbGl6 ZToKIAkJCQlzdHJ0eXBlID0gIkRFVEFDSCBQQVJUSVRJT04gLi4uIEZJTkFMSVpFIjsKIAkJCQli cmVhazsKKwkJCWNhc2UgQVRfU3BsaXRQYXJ0aXRpb246CisJCQkJc3RydHlwZSA9ICJTUExJVCBQ QVJUSVRJT04iOworCQkJCWJyZWFrOwogCQkJY2FzZSBBVF9NZXJnZVBhcnRpdGlvbnM6CiAJCQkJ c3RydHlwZSA9ICJNRVJHRSBQQVJUSVRJT05TIjsKIAkJCQlicmVhazsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3NwbGl0Lm91dCBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3NwbGl0Lm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMC4uZTY4YmFmNzFkYWYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9zcGxpdC5vdXQKQEAgLTAsMCArMSwxNTkyIEBA CistLQorLS0gUEFSVElUSU9OX1NQTElUCistLSBUZXN0cyBmb3IgIkFMVEVSIFRBQkxFIC4uLiBT UExJVCBQQVJUSVRJT04gLi4uIiBjb21tYW5kCistLQorQ1JFQVRFIFNDSEVNQSBwYXJ0aXRpb25f c3BsaXRfc2NoZW1hOworQ1JFQVRFIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMjsKK1NF VCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEsIHB1YmxpYzsKKy0tCistLSBC WSBSQU5HRSBwYXJ0aXRpb25pbmcKKy0tCistLQorLS0gVGVzdCBmb3IgZXJyb3IgY29kZXMKKy0t CitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIGludCwgc2FsZXNfZGF0 ZSBkYXRlKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNh bGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWJfbWFy X2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFS VElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CistLSBFUlJPUjogIHJlbGF0aW9uICJzYWxl c194eHgiIGRvZXMgbm90IGV4aXN0CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJU SVRJT04gc2FsZXNfeHh4IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBz YWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQt MDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitFUlJPUjogIHJlbGF0aW9uICJzYWxlc194eHgi IGRvZXMgbm90IGV4aXN0CistLSBFUlJPUjogIHJlbGF0aW9uICJzYWxlc19qYW4yMDIyIiBhbHJl YWR5IGV4aXN0cworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVz X2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04g c2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0 LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworRVJST1I6ICByZWxhdGlvbiAic2FsZXNfamFu MjAyMiIgYWxyZWFkeSBleGlzdHMKKy0tIEVSUk9SOiAgaW52YWxpZCBib3VuZCBzcGVjaWZpY2F0 aW9uIGZvciBhIHJhbmdlIHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQg UEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNf amFuMjAyMiBGT1IgVkFMVUVTIElOICgnMjAyMi0wNS0wMScsICcyMDIyLTA2LTAxJyksCisgICBQ QVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8g KCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworRVJST1I6ICBpbnZhbGlkIGJv dW5kIHNwZWNpZmljYXRpb24gZm9yIGEgcmFuZ2UgcGFydGl0aW9uCitMSU5FIDI6ICAgKFBBUlRJ VElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgSU4gKCcyMDIyLTA1LTAxJywgJzIwMi4uLgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEVSUk9S OiAgZW1wdHkgcmFuZ2UgYm91bmQgc3BlY2lmaWVkIGZvciBwYXJ0aXRpb24gInNhbGVzX21hcjIw MjIiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21h cl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19t YXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDItMDEnKSwK KyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEn KSBUTyAoJzIwMjItMDUtMDEnKSk7CitFUlJPUjogIGVtcHR5IHJhbmdlIGJvdW5kIHNwZWNpZmll ZCBmb3IgcGFydGl0aW9uICJzYWxlc19tYXIyMDIyIgorTElORSAzOiAgICBQQVJUSVRJT04gc2Fs ZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8uLi4KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitERVRBSUw6ICBT cGVjaWZpZWQgbG93ZXIgYm91bmQgKCcwMy0wMS0yMDIyJykgaXMgZ3JlYXRlciB0aGFuIG9yIGVx dWFsIHRvIHVwcGVyIGJvdW5kICgnMDItMDEtMjAyMicpLgorLS1FUlJPUjogIGxpc3Qgb2Ygc3Bs aXQgcGFydGl0aW9ucyBzaG91bGQgY29udGFpbiBhdCBsZWFzdCB0d28gaXRlbXMKK0FMVEVSIFRB QkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5U TworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0w MScpIFRPICgnMjAyMi0xMC0wMScpKTsKK0VSUk9SOiAgbGlzdCBvZiBuZXcgcGFydGl0aW9ucyBz aG91bGQgY29udGFpbiBhdCBsZWFzdCB0d28gcGFydGl0aW9ucworLS0gRVJST1I6ICBsb3dlciBi b3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiIGlzIG5vdCBlcXVhbCB0byBsb3dlciBi b3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24gInNhbGVzX2ZlYl9tYXJfYXByMjAyMiIKKy0tIEhJTlQ6 ICBBTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFSVElUSU9OIHJlcXVpcmUgY29tYmluZWQgYm91bmRz IG9mIG5ldyBwYXJ0aXRpb25zIG11c3QgZXhhY3RseSBtYXRjaCB0aGUgYm91bmQgb2YgdGhlIHNw bGl0IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNh bGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJ T04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIy LTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworRVJST1I6ICBsb3dlciBib3VuZCBvZiBw YXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiIGlzIG5vdCBlcXVhbCB0byBsb3dlciBib3VuZCBvZiBz cGxpdCBwYXJ0aXRpb24gInNhbGVzX2ZlYl9tYXJfYXByMjAyMiIKK0xJTkUgMjogICAoUEFSVElU SU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPLi4uCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorSElO VDogIEFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT04gcmVxdWlyZSBjb21iaW5lZCBib3Vu ZHMgb2YgbmV3IHBhcnRpdGlvbnMgbXVzdCBleGFjdGx5IG1hdGNoIHRoZSBib3VuZCBvZiB0aGUg c3BsaXQgcGFydGl0aW9uCistLSBFUlJPUjogIHBhcnRpdGlvbiB3aXRoIG5hbWUgInNhbGVzX2Zl Yl9tYXJfYXByMjAyMiIgaXMgYWxyZWFkeSB1c2VkCistLSAoV2UgY2FuIGNyZWF0ZSBwYXJ0aXRp b24gd2l0aCB0aGUgc2FtZSBuYW1lIGFzIHNwbGl0IHBhcnRpdGlvbiwgYnV0IGNhbid0IGNyZWF0 ZSB0d28gcGFydGl0aW9ucyB3aXRoIHRoZSBzYW1lIG5hbWUpCitBTFRFUiBUQUJMRSBzYWxlc19y YW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJ VElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScp IFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJU SVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcy MDIyLTA1LTAxJykpOworRVJST1I6ICBwYXJ0aXRpb24gd2l0aCBuYW1lICJzYWxlc19mZWJfbWFy X2FwcjIwMjIiIGlzIGFscmVhZHkgdXNlZAorTElORSAzOiAgICBQQVJUSVRJT04gc2FsZXNfZmVi X21hcl9hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMuLi4KKyAgICAgICAgICAgICAg ICAgICAgIF4KKy0tIEVSUk9SOiAgcGFydGl0aW9uIHdpdGggbmFtZSAic2FsZXNfZmViMjAyMiIg aXMgYWxyZWFkeSB1c2VkCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04g c2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIw MjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitFUlJPUjogIHBhcnRpdGlvbiB3aXRo IG5hbWUgInNhbGVzX2ZlYjIwMjIiIGlzIGFscmVhZHkgdXNlZAorTElORSAzOiAgICBQQVJUSVRJ T04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8uLi4KKyAg ICAgICAgICAgICAgICAgICAgIF4KKy0tIEVSUk9SOiAgcGFydGl0aW9uIHdpdGggbmFtZSAic2Fs ZXNfZmViMjAyMiIgaXMgYWxyZWFkeSB1c2VkCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJ VCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxl c19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEn KSwKKyAgIFBBUlRJVElPTiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVzX2ZlYjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElU SU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAy Mi0wNS0wMScpKTsKK0VSUk9SOiAgcGFydGl0aW9uIHdpdGggbmFtZSAic2FsZXNfZmViMjAyMiIg aXMgYWxyZWFkeSB1c2VkCitMSU5FIDM6ICAgIFBBUlRJVElPTiBwYXJ0aXRpb25fc3BsaXRfc2No ZW1hLnNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUy4uLgorICAgICAgICAgICAgICAgICAgICAgXgor LS0gRVJST1I6ICBBTFRFUiBhY3Rpb24gU1BMSVQgUEFSVElUSU9OIGNhbm5vdCBiZSBwZXJmb3Jt ZWQgb24gcmVsYXRpb24gInNhbGVzX2ZlYl9tYXJfYXByMjAyMiIKKy0tIERFVEFJTDogIFRoaXMg b3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRhYmxlcy4KK0FMVEVSIFRBQkxFIHNhbGVz X2ZlYl9tYXJfYXByMjAyMiBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElO VE8KKyAgKFBBUlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDIt MDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElP TiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjIt MDUtMDEnKSk7CitFUlJPUjogIEFMVEVSIGFjdGlvbiBTUExJVCBQQVJUSVRJT04gY2Fubm90IGJl IHBlcmZvcm1lZCBvbiByZWxhdGlvbiAic2FsZXNfZmViX21hcl9hcHIyMDIyIgorREVUQUlMOiAg VGhpcyBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBmb3IgdGFibGVzLgorLS0gRVJST1I6ICB1 cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2FwcjIwMjIiIGlzIG5vdCBlcXVhbCB0byB1 cHBlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24gInNhbGVzX2ZlYl9tYXJfYXByMjAyMiIKKy0t IEhJTlQ6ICBBTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFSVElUSU9OIHJlcXVpcmUgY29tYmluZWQg Ym91bmRzIG9mIG5ldyBwYXJ0aXRpb25zIG11c3QgZXhhY3RseSBtYXRjaCB0aGUgYm91bmQgb2Yg dGhlIHNwbGl0IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElU SU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQ QVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8g KCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA2LTAxJykpOworRVJST1I6ICB1cHBlciBib3Vu ZCBvZiBwYXJ0aXRpb24gInNhbGVzX2FwcjIwMjIiIGlzIG5vdCBlcXVhbCB0byB1cHBlciBib3Vu ZCBvZiBzcGxpdCBwYXJ0aXRpb24gInNhbGVzX2ZlYl9tYXJfYXByMjAyMiIKK0xJTkUgNDogLi4u IHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0w Ni0wLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXgorSElOVDogIEFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT04gcmVx dWlyZSBjb21iaW5lZCBib3VuZHMgb2YgbmV3IHBhcnRpdGlvbnMgbXVzdCBleGFjdGx5IG1hdGNo IHRoZSBib3VuZCBvZiB0aGUgc3BsaXQgcGFydGl0aW9uCistLSBFUlJPUjogIGNhbiBub3Qgc3Bs aXQgdG8gcGFydGl0aW9uICJzYWxlc19tYXIyMDIyIiB0b2dldGhlciB3aXRoIHBhcnRpdGlvbiAi c2FsZXNfZmViMjAyMiIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBz YWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElU SU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAy Mi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgY2FuIG5vdCBzcGxpdCB0 byBwYXJ0aXRpb24gInNhbGVzX21hcjIwMjIiIHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uICJzYWxl c19mZWIyMDIyIgorTElORSAzOiAgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAyLTAxJykgVE8uLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBeCitERVRBSUw6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRp b24gInNhbGVzX21hcjIwMjIiIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBwZXIgYm91bmQgb2YgcGFy dGl0aW9uICJzYWxlc19mZWIyMDIyIgorSElOVDogIEFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJU SVRJT04gcmVxdWlyZXMgdGhlIHBhcnRpdGlvbiBib3VuZHMgdG8gYmUgYWRqYWNlbnQuCistLSBU ZXN0cyBmb3Igc3BhY2VzIGJldHdlZW4gcGFydGl0aW9ucywgdGhlbSBzaG91bGQgYmUgZXhlY3V0 ZWQgd2l0aG91dCBERUZBVUxUIHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgREVU QUNIIFBBUlRJVElPTiBzYWxlc19vdGhlcnM7CistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBh cnRpdGlvbiAic2FsZXNfZmViMjAyMiIgaXMgbm90IGVxdWFsIHRvIGxvd2VyIGJvdW5kIG9mIHNw bGl0IHBhcnRpdGlvbiAic2FsZXNfZmViX21hcl9hcHIyMDIyIgorLS0gSElOVDogIEFMVEVSIFRB QkxFIC4uLiBTUExJVCBQQVJUSVRJT04gcmVxdWlyZSBjb21iaW5lZCBib3VuZHMgb2YgbmV3IHBh cnRpdGlvbnMgbXVzdCBleGFjdGx5IG1hdGNoIHRoZSBib3VuZCBvZiB0aGUgc3BsaXQgcGFydGl0 aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21h cl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDItMDInKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19t YXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwK KyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEn KSBUTyAoJzIwMjItMDUtMDEnKSk7CitFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAi c2FsZXNfZmViMjAyMiIgaXMgbm90IGVxdWFsIHRvIGxvd2VyIGJvdW5kIG9mIHNwbGl0IHBhcnRp dGlvbiAic2FsZXNfZmViX21hcl9hcHIyMDIyIgorTElORSAyOiAgIChQQVJUSVRJT04gc2FsZXNf ZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAyJykgVE8uLi4KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitISU5UOiAgQUxURVIg VEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTiByZXF1aXJlIGNvbWJpbmVkIGJvdW5kcyBvZiBuZXcg cGFydGl0aW9ucyBtdXN0IGV4YWN0bHkgbWF0Y2ggdGhlIGJvdW5kIG9mIHRoZSBzcGxpdCBwYXJ0 aXRpb24KKy0tIENoZWNrIHRoZSBzb3VyY2UgcGFydGl0aW9uIG5vdCBpbiB0aGUgc2VhcmNoIHBh dGgKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEyLCBwdWJsaWM7CitB TFRFUiBUQUJMRSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVzX3JhbmdlCitTUExJVCBQQVJU SVRJT04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTwor ICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScp IFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNh bGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0w MScpKTsKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEsIHB1YmxpYzsK K1xkKyBzYWxlc19yYW5nZQorICAgICAgICAgICAgICAgICAgICAgIFBhcnRpdGlvbmVkIHRhYmxl ICJwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVzX3JhbmdlIgorICAgICBDb2x1bW4gICAgIHwg IFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCB8IFN0b3JhZ2UgfCBTdGF0 cyB0YXJnZXQgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tCisgc2FsZXNwZXJzb25faWQgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAg ICAgfCAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorIHNhbGVzX2RhdGUgICAg IHwgZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICB8IHBsYWluICAgfCAg ICAgICAgICAgICAgfCAKK1BhcnRpdGlvbiBrZXk6IFJBTkdFIChzYWxlc19kYXRlKQorUGFydGl0 aW9uczogcGFydGl0aW9uX3NwbGl0X3NjaGVtYTIuc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcwNC0wMS0yMDIyJykgVE8gKCcwNS0wMS0yMDIyJyksCisgICAgICAgICAgICBwYXJ0aXRp b25fc3BsaXRfc2NoZW1hMi5zYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzAyLTAxLTIw MjInKSBUTyAoJzAzLTAxLTIwMjInKSwKKyAgICAgICAgICAgIHBhcnRpdGlvbl9zcGxpdF9zY2hl bWEyLnNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMDMtMDEtMjAyMicpIFRPICgnMDQt MDEtMjAyMicpLAorICAgICAgICAgICAgc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIEZST00gKCcw MS0wMS0yMDIyJykgVE8gKCcwMi0wMS0yMDIyJykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsK K0RST1AgVEFCTEUgc2FsZXNfb3RoZXJzOworLS0gQWRkaXRpb25hbCB0ZXN0cyBmb3IgZXJyb3Ig bWVzc2FnZXMsIG5vIGRlZmF1bHQgcGFydGl0aW9uCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2Ug KHNhbGVzX2RhdGUgZGF0ZSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CistLSBFUlJPUjogIHVwcGVyIGJv dW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfYXByMjAyMiIgaXMgbm90IGVxdWFsIHRvIHVwcGVyIGJv dW5kIG9mIHNwbGl0IHBhcnRpdGlvbiAic2FsZXNfZmViX21hcl9hcHIyMDIyIgorLS0gSElOVDog IEFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT04gcmVxdWlyZSBjb21iaW5lZCBib3VuZHMg b2YgbmV3IHBhcnRpdGlvbnMgbXVzdCBleGFjdGx5IG1hdGNoIHRoZSBib3VuZCBvZiB0aGUgc3Bs aXQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2Fs ZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElP TiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjIt MDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDQtMDEnKSBUTyAoJzIwMjItMDYtMDEnKSk7CitFUlJPUjogIHVwcGVyIGJvdW5kIG9mIHBh cnRpdGlvbiAic2FsZXNfYXByMjAyMiIgaXMgbm90IGVxdWFsIHRvIHVwcGVyIGJvdW5kIG9mIHNw bGl0IHBhcnRpdGlvbiAic2FsZXNfZmViX21hcl9hcHIyMDIyIgorTElORSA0OiAuLi4gc2FsZXNf YXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA2LTAuLi4K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBeCitISU5UOiAgQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTiByZXF1aXJlIGNv bWJpbmVkIGJvdW5kcyBvZiBuZXcgcGFydGl0aW9ucyBtdXN0IGV4YWN0bHkgbWF0Y2ggdGhlIGJv dW5kIG9mIHRoZSBzcGxpdCBwYXJ0aXRpb24KK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CistLQor LS0gQWRkIHJvd3MgaW50byBwYXJ0aXRpb25lZCB0YWJsZSB0aGVuIHNwbGl0IHBhcnRpdGlvbgor LS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3Bl cnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUp IFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFu MjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0w MScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYl9tYXJfYXByMjAy MiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScp IFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04g T0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUwor ICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2Zm JywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0w NC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAg J0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAs ICAnMjAyMi0wMi0xMScpLAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4Jyks CisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVy JywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIy LTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEy LCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3 NywgICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQn KTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFy X2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21h cjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAor ICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScp IFRPICgnMjAyMi0wNS0wMScpKTsKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBz YWxlc19yYW5nZSBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIs IHNhbGVzcGVyc29uX2lkOworICAgdGFibGVvaWQgICAgfCBzYWxlc3BlcnNvbl9pZCB8IHNhbGVz cGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLQorIHNhbGVzX2FwcjIwMjIgfCAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAg ICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgc2FsZXNfYXByMjAyMiB8ICAgICAgICAg ICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyBz YWxlc19hcHIyMDIyIHwgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAgICAg ICAgMjUwIHwgMDQtMDctMjAyMgorIHNhbGVzX2FwcjIwMjIgfCAgICAgICAgICAgICAxMSB8IFRy dW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgc2FsZXNfZmViMjAy MiB8ICAgICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICAgICB8ICAgICAgICAgIDUwMCB8IDAy LTEwLTIwMjIKKyBzYWxlc19mZWIyMDIyIHwgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAg ICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorIHNhbGVzX2ZlYjIwMjIgfCAgICAgICAg ICAgICAgOCB8IEVyaWNzc29uICAgICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisg c2FsZXNfamFuMjAyMiB8ICAgICAgICAgICAgICAxIHwgTWF5ICAgICAgICAgICAgICB8ICAgICAg ICAgMTAwMCB8IDAxLTMxLTIwMjIKKyBzYWxlc19qYW4yMDIyIHwgICAgICAgICAgICAgMTAgfCBI YWxkZXIgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgorIHNhbGVzX2phbjIw MjIgfCAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCAgICAgICAgICAzNzcgfCAw MS0wOS0yMDIyCisgc2FsZXNfbWFyMjAyMiB8ICAgICAgICAgICAgICA3IHwgTGkgICAgICAgICAg ICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyBzYWxlc19tYXIyMDIyIHwgICAgICAg ICAgICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgor IHNhbGVzX21hcjIwMjIgfCAgICAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgICAgfCAgICAg ICAgICAzNTAgfCAwMy0xOS0yMDIyCisgc2FsZXNfb3RoZXJzICB8ICAgICAgICAgICAgIDE0IHwg U21pdGggICAgICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKygxNCByb3dzKQor CitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlIENBU0NBREU7CistLQorLS0gQWRkIHNwbGl0IHBhcnRp dGlvbiwgdGhlbiBhZGQgcm93cyBpbnRvIHBhcnRpdGlvbmVkIHRhYmxlCistLQorQ1JFQVRFIFRB QkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFS Q0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZ IFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElP TiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIy LTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBP RiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1 LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5n ZSBERUZBVUxUOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScs ICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAy Mi0wMi0xMCcpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0 LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAy NTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTEx JyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJp Y3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcy MDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAg KDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAg IDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEt MDknKSwKKyAgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworLS0gU3BsaXQg cGFydGl0aW9uLCBhbHNvIGNoZWNrIHNjaGVtYSBxdWFsaWZpY2F0aW9uIG9mIG5ldyBwYXJ0aXRp b25zCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21h cl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVz X2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScp LAorICAgUEFSVElUSU9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEyLnNhbGVzX21hcjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElU SU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAy Mi0wNS0wMScpKTsKK1xkKyBzYWxlc19yYW5nZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUGFydGl0aW9uZWQgdGFibGUgInBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfcmFuZ2Ui CisgICAgICBDb2x1bW4gICAgICB8ICAgICAgICAgVHlwZSAgICAgICAgICB8IENvbGxhdGlvbiB8 IE51bGxhYmxlIHwgRGVmYXVsdCB8IFN0b3JhZ2UgIHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRp b24gCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tCisgc2FsZXNwZXJzb25faWQgICB8IGludGVnZXIgICAgICAgICAgICAgICB8ICAgICAg ICAgICB8ICAgICAgICAgIHwgICAgICAgICB8IHBsYWluICAgIHwgICAgICAgICAgICAgIHwgCisg c2FsZXNwZXJzb25fbmFtZSB8IGNoYXJhY3RlciB2YXJ5aW5nKDMwKSB8ICAgICAgICAgICB8ICAg ICAgICAgIHwgICAgICAgICB8IGV4dGVuZGVkIHwgICAgICAgICAgICAgIHwgCisgc2FsZXNfYW1v dW50ICAgICB8IGludGVnZXIgICAgICAgICAgICAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwg ICAgICAgICB8IHBsYWluICAgIHwgICAgICAgICAgICAgIHwgCisgc2FsZXNfZGF0ZSAgICAgICB8 IGRhdGUgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICB8 IHBsYWluICAgIHwgICAgICAgICAgICAgIHwgCitQYXJ0aXRpb24ga2V5OiBSQU5HRSAoc2FsZXNf ZGF0ZSkKK1BhcnRpdGlvbnM6IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEyLnNhbGVzX21hcjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgnMDMtMDEtMjAyMicpIFRPICgnMDQtMDEtMjAyMicpLAorICAgICAg ICAgICAgc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcwNC0wMS0yMDIyJykgVE8gKCcw NS0wMS0yMDIyJyksCisgICAgICAgICAgICBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzAyLTAxLTIwMjInKSBUTyAoJzAzLTAxLTIwMjInKSwKKyAgICAgICAgICAgIHNhbGVzX2phbjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMDEtMDEtMjAyMicpIFRPICgnMDItMDEtMjAyMicpLAorICAg ICAgICAgICAgc2FsZXNfb3RoZXJzIERFRkFVTFQKKworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFz cywgKiBGUk9NIHNhbGVzX3JhbmdlIE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBD T0xMQVRFICJDIiwgc2FsZXNwZXJzb25faWQ7CisgICAgICAgICAgICAgICB0YWJsZW9pZCAgICAg ICAgICAgICAgICB8IHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ft b3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tCisgcGFydGl0aW9uX3NwbGl0X3NjaGVtYTIuc2FsZXNfbWFyMjAyMiB8ICAgICAg ICAgICAgICA3IHwgTGkgICAgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIK KyBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMi5zYWxlc19tYXIyMDIyIHwgICAgICAgICAgICAgIDkg fCBNdWxsZXIgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorIHBhcnRpdGlv bl9zcGxpdF9zY2hlbWEyLnNhbGVzX21hcjIwMjIgfCAgICAgICAgICAgICAxMiB8IFBsYXRvICAg ICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisgc2FsZXNfYXByMjAyMiAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8 ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyBzYWxlc19hcHIyMDIyICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAg NzUwIHwgMDQtMTMtMjAyMgorIHNhbGVzX2FwcjIwMjIgICAgICAgICAgICAgICAgICAgICAgICAg fCAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0w Ny0yMDIyCisgc2FsZXNfYXByMjAyMiAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAg ICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyBz YWxlc19mZWIyMDIyICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIDIgfCBT bWlybm9mZiAgICAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAyMgorIHNhbGVzX2ZlYjIw MjIgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAg ICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisgc2FsZXNfZmViMjAyMiAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAg ICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyBzYWxlc19qYW4yMDIyICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgICAgIHwgICAgICAgICAxMDAw IHwgMDEtMzEtMjAyMgorIHNhbGVzX2phbjIwMjIgICAgICAgICAgICAgICAgICAgICAgICAgfCAg ICAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMS0yOC0y MDIyCisgc2FsZXNfamFuMjAyMiAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAg IDEzIHwgR2FuZGkgICAgICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIwMjIKKyBzYWxl c19vdGhlcnMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgMTQgfCBTbWl0 aCAgICAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDE0IHJvd3MpCisKK0RS T1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FERTsKKy0tCistLSBUZXN0IGZvcjoKKy0tICAgKiBj b21wb3NpdGUgcGFydGl0aW9uIGtleTsKKy0tICAgKiBHRU5FUkFURUQgY29sdW1uOworLS0gICAq IGNvbHVtbiB3aXRoIERFRkFVTFQgdmFsdWUuCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2RhdGUg KHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX3llYXIgSU5ULCBzYWxlc19tb250 aCBJTlQsIHNhbGVzX2RheSBJTlQsCisgIHNhbGVzX2RhdGUgVkFSQ0hBUigxMCkgR0VORVJBVEVE IEFMV0FZUyBBUworICAgIChMUEFEKHNhbGVzX3llYXI6OnRleHQsIDQsICcwJykgfHwgJy4nIHx8 IExQQUQoc2FsZXNfbW9udGg6OnRleHQsIDIsICcwJykgfHwgJy4nIHx8IExQQUQoc2FsZXNfZGF5 Ojp0ZXh0LCAyLCAnMCcpKSBTVE9SRUQsCisgIHNhbGVzX2RlcGFydG1lbnQgVkFSQ0hBUigzMCkg REVGQVVMVCAnU2FsZXMgZGVwYXJ0bWVudCcpCisgIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNf eWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZGVjMjAy MSBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjEsIDEyLCAxKSBU TyAoMjAyMiwgMSwgMSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuX2ZlYjIwMjIgUEFSVElUSU9O IE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIyLCAxLCAxKSBUTyAoMjAyMiwgMywg MSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXIgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9S IFZBTFVFUyBGUk9NICgyMDIyLCAzLCAxKSBUTyAoTUFYVkFMVUUsIE1BWFZBTFVFLCBNQVhWQUxV RSk7CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3llYXIs IHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUworICAoJ01hbmFnZXIxJywgMjAyMSwgMTIs IDcpLAorICAoJ01hbmFnZXIyJywgMjAyMSwgMTIsIDgpLAorICAoJ01hbmFnZXIzJywgMjAyMiwg MSwgMSksCisgICgnTWFuYWdlcjEnLCAyMDIyLCAyLCA0KSwKKyAgKCdNYW5hZ2VyMicsIDIwMjIs IDEsIDIpLAorICAoJ01hbmFnZXIzJywgMjAyMiwgMiwgMSksCisgICgnTWFuYWdlcjEnLCAyMDIy LCAzLCAzKSwKKyAgKCdNYW5hZ2VyMicsIDIwMjIsIDMsIDQpLAorICAoJ01hbmFnZXIzJywgMjAy MiwgNSwgMSk7CitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfZGF0ZSBP UkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIHNhbGVzX3llYXIs IHNhbGVzX21vbnRoLCBzYWxlc19kYXk7CisgICAgIHRhYmxlb2lkICAgICAgfCBzYWxlc3BlcnNv bl9uYW1lIHwgc2FsZXNfeWVhciB8IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0 ZSB8IHNhbGVzX2RlcGFydG1lbnQgCistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tCisgc2FsZXNfZGVjMjAyMSAgICAgfCBNYW5hZ2VyMSAgICAgICAg IHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAgICA3IHwgMjAyMS4xMi4wNyB8IFNh bGVzIGRlcGFydG1lbnQKKyBzYWxlc19kZWMyMDIxICAgICB8IE1hbmFnZXIyICAgICAgICAgfCAg ICAgICAyMDIxIHwgICAgICAgICAgMTIgfCAgICAgICAgIDggfCAyMDIxLjEyLjA4IHwgU2FsZXMg ZGVwYXJ0bWVudAorIHNhbGVzX2phbl9mZWIyMDIyIHwgTWFuYWdlcjMgICAgICAgICB8ICAgICAg IDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMSB8IDIwMjIuMDEuMDEgfCBTYWxlcyBkZXBh cnRtZW50Cisgc2FsZXNfamFuX2ZlYjIwMjIgfCBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAy MiB8ICAgICAgICAgICAxIHwgICAgICAgICAyIHwgMjAyMi4wMS4wMiB8IFNhbGVzIGRlcGFydG1l bnQKKyBzYWxlc19qYW5fZmViMjAyMiB8IE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwg ICAgICAgICAgIDIgfCAgICAgICAgIDEgfCAyMDIyLjAyLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAor IHNhbGVzX2phbl9mZWIyMDIyIHwgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAg ICAgICAgMiB8ICAgICAgICAgNCB8IDIwMjIuMDIuMDQgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2Fs ZXNfb3RoZXIgICAgICAgfCBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAg ICAzIHwgICAgICAgICAzIHwgMjAyMi4wMy4wMyB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19v dGhlciAgICAgICB8IE1hbmFnZXIyICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDMg fCAgICAgICAgIDQgfCAyMDIyLjAzLjA0IHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX290aGVy ICAgICAgIHwgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgNSB8ICAg ICAgICAgMSB8IDIwMjIuMDUuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisoOSByb3dzKQorCitBTFRF UiBUQUJMRSBzYWxlc19kYXRlIFNQTElUIFBBUlRJVElPTiBzYWxlc19qYW5fZmViMjAyMiBJTlRP CisgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDEsIDEp IFRPICgyMDIyLCAyLCAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoMjAyMiwgMiwgMSkgVE8gKDIwMjIsIDMsIDEpKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2Rh dGUoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkg VkFMVUVTCisgICgnTWFuYWdlcjEnLCAyMDIyLCAxLCAxMCksCisgICgnTWFuYWdlcjInLCAyMDIy LCAyLCAxMCk7CitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfZGF0ZSBP UkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIHNhbGVzX3llYXIs IHNhbGVzX21vbnRoLCBzYWxlc19kYXk7CisgICB0YWJsZW9pZCAgICB8IHNhbGVzcGVyc29uX25h bWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwg c2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLQorIHNhbGVzX2RlYzIwMjEgfCBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAy MSB8ICAgICAgICAgIDEyIHwgICAgICAgICA3IHwgMjAyMS4xMi4wNyB8IFNhbGVzIGRlcGFydG1l bnQKKyBzYWxlc19kZWMyMDIxIHwgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjEgfCAgICAg ICAgICAxMiB8ICAgICAgICAgOCB8IDIwMjEuMTIuMDggfCBTYWxlcyBkZXBhcnRtZW50Cisgc2Fs ZXNfZmViMjAyMiB8IE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIg fCAgICAgICAgIDEgfCAyMDIyLjAyLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX2ZlYjIw MjIgfCBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAg ICA0IHwgMjAyMi4wMi4wNCB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19mZWIyMDIyIHwgTWFu YWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAxMCB8IDIw MjIuMDIuMTAgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfamFuMjAyMiB8IE1hbmFnZXIzICAg ICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDEgfCAyMDIyLjAxLjAx IHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX2phbjIwMjIgfCBNYW5hZ2VyMiAgICAgICAgIHwg ICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgICAyIHwgMjAyMi4wMS4wMiB8IFNhbGVz IGRlcGFydG1lbnQKKyBzYWxlc19qYW4yMDIyIHwgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIw MjIgfCAgICAgICAgICAgMSB8ICAgICAgICAxMCB8IDIwMjIuMDEuMTAgfCBTYWxlcyBkZXBhcnRt ZW50Cisgc2FsZXNfb3RoZXIgICB8IE1hbmFnZXIxICAgICAgICAgfCAgICAgICAyMDIyIHwgICAg ICAgICAgIDMgfCAgICAgICAgIDMgfCAyMDIyLjAzLjAzIHwgU2FsZXMgZGVwYXJ0bWVudAorIHNh bGVzX290aGVyICAgfCBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAz IHwgICAgICAgICA0IHwgMjAyMi4wMy4wNCB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19vdGhl ciAgIHwgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgNSB8ICAgICAg ICAgMSB8IDIwMjIuMDUuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisoMTEgcm93cykKKworRFJPUCBU QUJMRSBzYWxlc19kYXRlIENBU0NBREU7CistLQorLS0gVGVzdDogc3BsaXQgREVGQVVMVCBwYXJ0 aXRpb247IHVzZSBhbiBpbmRleCBvbiBwYXJ0aXRpb24ga2V5OyBjaGVjayBpbmRleCBhZnRlciBz cGxpdAorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBz YWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRl IERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQ QVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKK0NSRUFURSBJTkRFWCBzYWxlc19yYW5n ZV9zYWxlc19kYXRlX2lkeCBPTiBzYWxlc19yYW5nZSBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSk7 CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAgICAxMDAw LCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyks CisgICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAnSXZhbm92 JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIy LTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKSwKKyAgKDcs ICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwgICdFcmljc3NvbicsIDE4 NSwgICcyMDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEn KSwKKyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpLAorICAoMTEsICdUcnVt cCcsICAgIDM4MCwgICcyMDIyLTA0LTA2JyksCisgICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIw MjItMDMtMTknKSwKKyAgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpLAorICAo MTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CitTRUxFQ1QgKiBGUk9NIHNhbGVz X290aGVyczsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91 bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAg ICAgIHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAyMgorICAgICAgICAgICAgICAzIHwgRm9yZCAg ICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyAgICAgICAgICAgICAgNCB8 IEl2YW5vdiAgICAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgICAgICAgICAg ICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAg ICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIw MjIKKyAgICAgICAgICAgICAgNyB8IExpICAgICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAw My0wOC0yMDIyCisgICAgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgICAgIHwgICAgICAgICAg MTg1IHwgMDItMjMtMjAyMgorICAgICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICAgICB8ICAg ICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAg ICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgICAgICAgICAgICAgMTIgfCBQbGF0byAg ICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorICAgICAgICAgICAgIDE0IHwg U21pdGggICAgICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKygxMSByb3dzKQor CitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX290aGVy cycgYW5kIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYScgT1JERVIgQlkgaW5k ZXhuYW1lIENPTExBVEUgIkMiOworICAgICAgIHNjaGVtYW5hbWUgICAgICAgfCAgdGFibGVuYW1l ICAgfCAgICAgICAgICBpbmRleG5hbWUgICAgICAgICAgfCB0YWJsZXNwYWNlIHwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhkZWYgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIHwgc2FsZXNfb3RoZXJzIHwgc2FsZXNfb3RoZXJz X3NhbGVzX2RhdGVfaWR4IHwgICAgICAgICAgICB8IENSRUFURSBJTkRFWCBzYWxlc19vdGhlcnNf c2FsZXNfZGF0ZV9pZHggT04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19vdGhlcnMgVVNJ TkcgYnRyZWUgKHNhbGVzX2RhdGUpCisoMSByb3cpCisKK0FMVEVSIFRBQkxFIHNhbGVzX3Jhbmdl IFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2Zl YjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAor ICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScp IFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpLAorICAgUEFSVElUSU9OIHNh bGVzX290aGVycyBERUZBVUxUKTsKKy0tIFVzZSBpbmRleHNjYW4gZm9yIHRlc3RpbmcgaW5kZXhl cworU0VUIGVuYWJsZV9zZXFzY2FuID0gT0ZGOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1Qg KiBGUk9NIHNhbGVzX2ZlYjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBJbmRleCBTY2FuIHVzaW5nIHNhbGVzX2ZlYjIwMjJfc2FsZXNfZGF0 ZV9pZHggb24gc2FsZXNfZmViMjAyMgorICAgSW5kZXggQ29uZDogKHNhbGVzX2RhdGUgPiAnMDEt MDEtMjAyMic6OmRhdGUpCisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYjIwMjIg d2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVz cGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAg ICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAyMgor ICAgICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTEx LTIwMjIKKyAgICAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgICAgfCAgICAgICAgICAxODUg fCAwMi0yMy0yMDIyCisoMyByb3dzKQorCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZS T00gc2FsZXNfbWFyMjAyMiB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIEluZGV4IFNjYW4gdXNpbmcgc2FsZXNfbWFyMjAyMl9zYWxlc19kYXRlX2lk eCBvbiBzYWxlc19tYXIyMDIyCisgICBJbmRleCBDb25kOiAoc2FsZXNfZGF0ZSA+ICcwMS0wMS0y MDIyJzo6ZGF0ZSkKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfbWFyMjAyMiB3aGVy ZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJz b25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAg ICAgNyB8IExpICAgICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgICAg ICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAy MgorICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAz LTE5LTIwMjIKKygzIHJvd3MpCisKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBz YWxlc19hcHIyMDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgSW5kZXggU2NhbiB1c2luZyBzYWxlc19hcHIyMDIyX3NhbGVzX2RhdGVfaWR4IG9u IHNhbGVzX2FwcjIwMjIKKyAgIEluZGV4IENvbmQ6IChzYWxlc19kYXRlID4gJzAxLTAxLTIwMjIn OjpkYXRlKQorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyIHdoZXJlIHNh bGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9u YW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgIDEx IHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyAgICAgICAg ICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisg ICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMt MjAyMgorICAgICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8 IDA0LTMwLTIwMjIKKyg0IHJvd3MpCisKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJP TSBzYWxlc19vdGhlcnMgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgSW5kZXggU2NhbiB1c2luZyBzYWxlc19vdGhlcnNfc2FsZXNfZGF0ZV9pZHgxIG9u IHNhbGVzX290aGVycworICAgSW5kZXggQ29uZDogKHNhbGVzX2RhdGUgPiAnMDEtMDEtMjAyMic6 OmRhdGUpCisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVycyB3aGVyZSBzYWxl c19kYXRlID4gJzIwMjItMDEtMDEnOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFt ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAxNCB8 IFNtaXRoICAgICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoMSByb3cpCisK K1JFU0VUIGVuYWJsZV9zZXFzY2FuOworU0VMRUNUICogRlJPTSBwZ19pbmRleGVzCitXSEVSRSB0 YWJsZW5hbWUgaW4gKCdzYWxlc19mZWIyMDIyJywgJ3NhbGVzX21hcjIwMjInLCAnc2FsZXNfYXBy MjAyMicsICdzYWxlc19vdGhlcnMnKQorQU5EIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0 X3NjaGVtYScKK09SREVSIEJZIGluZGV4bmFtZSBDT0xMQVRFICJDIjsKKyAgICAgICBzY2hlbWFu YW1lICAgICAgIHwgICB0YWJsZW5hbWUgICB8ICAgICAgICAgIGluZGV4bmFtZSAgICAgICAgICAg fCB0YWJsZXNwYWNlIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGluZGV4ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25fc3BsaXRfc2NoZW1h IHwgc2FsZXNfYXByMjAyMiB8IHNhbGVzX2FwcjIwMjJfc2FsZXNfZGF0ZV9pZHggfCAgICAgICAg ICAgIHwgQ1JFQVRFIElOREVYIHNhbGVzX2FwcjIwMjJfc2FsZXNfZGF0ZV9pZHggT04gcGFydGl0 aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19hcHIyMDIyIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKQor IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgfCBzYWxlc19mZWIyMDIyIHwgc2FsZXNfZmViMjAyMl9z YWxlc19kYXRlX2lkeCB8ICAgICAgICAgICAgfCBDUkVBVEUgSU5ERVggc2FsZXNfZmViMjAyMl9z YWxlc19kYXRlX2lkeCBPTiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVzX2ZlYjIwMjIgVVNJ TkcgYnRyZWUgKHNhbGVzX2RhdGUpCisgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSB8IHNhbGVzX21h cjIwMjIgfCBzYWxlc19tYXIyMDIyX3NhbGVzX2RhdGVfaWR4IHwgICAgICAgICAgICB8IENSRUFU RSBJTkRFWCBzYWxlc19tYXIyMDIyX3NhbGVzX2RhdGVfaWR4IE9OIHBhcnRpdGlvbl9zcGxpdF9z Y2hlbWEuc2FsZXNfbWFyMjAyMiBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSkKKyBwYXJ0aXRpb25f c3BsaXRfc2NoZW1hIHwgc2FsZXNfb3RoZXJzICB8IHNhbGVzX290aGVyc19zYWxlc19kYXRlX2lk eDEgfCAgICAgICAgICAgIHwgQ1JFQVRFIElOREVYIHNhbGVzX290aGVyc19zYWxlc19kYXRlX2lk eDEgT04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19vdGhlcnMgVVNJTkcgYnRyZWUgKHNh bGVzX2RhdGUpCisoNCByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlIENBU0NBREU7Cist LQorLS0gVGVzdDogc29tZSBjYXNlcyBmb3Igc3BsaXR0aW5nIERFRkFVTFQgcGFydGl0aW9uIChk aWZmZXJlbnQgYm91bmRzKQorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJz b25faWQgSU5ULCBzYWxlc19kYXRlIGRhdGUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0 ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBE RUZBVUxUOworLS0gc2FsZXNfZXJyb3IgaW50ZXJzZWN0cyB3aXRoIHNhbGVzX2RlYzIwMjEgKGxv d2VyIGJvdW5kKQorLS0gRVJST1I6ICBjYW4gbm90IHNwbGl0IHRvIHBhcnRpdGlvbiAic2FsZXNf ZXJyb3IiIHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uICJzYWxlc19kZWMyMDIxIgorQUxURVIgVEFC TEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJU SVRJT04gc2FsZXNfZGVjMjAyMSBGT1IgVkFMVUVTIEZST00gKCcyMDIxLTEyLTAxJykgVE8gKCcy MDIyLTAxLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgn MjAyMS0xMi0zMCcpIFRPICgnMjAyMi0wMi0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAg UEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKK0VSUk9SOiAgY2FuIG5vdCBzcGxpdCB0 byBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIiB0b2dldGhlciB3aXRoIHBhcnRpdGlvbiAic2FsZXNf ZGVjMjAyMSIKK0xJTkUgMzogICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjEtMTItMzAnKSBUTyAoLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIF4KK0RFVEFJTDogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAi c2FsZXNfZXJyb3IiIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9u ICJzYWxlc19kZWMyMDIxIgorSElOVDogIEFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT04g cmVxdWlyZXMgdGhlIHBhcnRpdGlvbiBib3VuZHMgdG8gYmUgYWRqYWNlbnQuCistLSBzYWxlc19l cnJvciBpbnRlcnNlY3RzIHdpdGggc2FsZXNfZmViMjAyMiAodXBwZXIgYm91bmQpCistLSBFUlJP UjogIGNhbiBub3Qgc3BsaXQgdG8gcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiB0b2dldGhlciB3 aXRoIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJ VCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIx IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjEtMTItMDEnKSBUTyAoJzIwMjItMDEtMDEnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcy MDIyLTAyLTAyJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfb3Ro ZXJzIERFRkFVTFQpOworRVJST1I6ICBjYW4gbm90IHNwbGl0IHRvIHBhcnRpdGlvbiAic2FsZXNf ZmViMjAyMiIgdG9nZXRoZXIgd2l0aCBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIgorTElORSA0OiAg ICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykg VE8uLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBeCitERVRBSUw6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiIGlz IG5vdCBlcXVhbCB0byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19lcnJvciIK K0hJTlQ6ICBBTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFSVElUSU9OIHJlcXVpcmVzIHRoZSBwYXJ0 aXRpb24gYm91bmRzIHRvIGJlIGFkamFjZW50LgorLS0gc2FsZXNfZXJyb3IgaW50ZXJzZWN0cyB3 aXRoIHNhbGVzX2RlYzIwMjEgKGluc2lkZSBib3VuZCkKKy0tIEVSUk9SOiAgY2FuIG5vdCBzcGxp dCB0byBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIiB0b2dldGhlciB3aXRoIHBhcnRpdGlvbiAic2Fs ZXNfZGVjMjAyMSIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxl c19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjEgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMS0xMi0wMScpIFRPICgnMjAyMi0wMS0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vy cm9yIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjEtMTItMTAnKSBUTyAoJzIwMjEtMTItMjAnKSwKKyAg IFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBU TyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CitF UlJPUjogIGNhbiBub3Qgc3BsaXQgdG8gcGFydGl0aW9uICJzYWxlc19lcnJvciIgdG9nZXRoZXIg d2l0aCBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjEiCitMSU5FIDM6ICAgIFBBUlRJVElPTiBzYWxl c19lcnJvciBGT1IgVkFMVUVTIEZST00gKCcyMDIxLTEyLTEwJykgVE8gKC4uLgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitERVRBSUw6ICBsb3dl ciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIiBpcyBub3QgZXF1YWwgdG8gdGhlIHVw cGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMSIKK0hJTlQ6ICBBTFRFUiBUQUJM RSAuLi4gU1BMSVQgUEFSVElUSU9OIHJlcXVpcmVzIHRoZSBwYXJ0aXRpb24gYm91bmRzIHRvIGJl IGFkamFjZW50LgorLS0gc2FsZXNfZXJyb3IgaW50ZXJzZWN0cyB3aXRoIHNhbGVzX2RlYzIwMjEg KGV4YWN0bHkgdGhlIHNhbWUgYm91bmRzKQorLS0gRVJST1I6ICBjYW4gbm90IHNwbGl0IHRvIHBh cnRpdGlvbiAic2FsZXNfZXJyb3IiIHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uICJzYWxlc19kZWMy MDIxIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVy cyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMSBGT1IgVkFMVUVTIEZST00gKCcyMDIx LTEyLTAxJykgVE8gKCcyMDIyLTAxLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfZXJyb3IgRk9S IFZBTFVFUyBGUk9NICgnMjAyMS0xMi0wMScpIFRPICgnMjAyMi0wMS0wMScpLAorICAgUEFSVElU SU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAy Mi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKK0VSUk9SOiAg Y2FuIG5vdCBzcGxpdCB0byBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIiB0b2dldGhlciB3aXRoIHBh cnRpdGlvbiAic2FsZXNfZGVjMjAyMSIKK0xJTkUgMzogICAgUEFSVElUSU9OIHNhbGVzX2Vycm9y IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjEtMTItMDEnKSBUTyAoLi4uCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0RFVEFJTDogIGxvd2VyIGJvdW5k IG9mIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBwZXIgYm91 bmQgb2YgcGFydGl0aW9uICJzYWxlc19kZWMyMDIxIgorSElOVDogIEFMVEVSIFRBQkxFIC4uLiBT UExJVCBQQVJUSVRJT04gcmVxdWlyZXMgdGhlIHBhcnRpdGlvbiBib3VuZHMgdG8gYmUgYWRqYWNl bnQuCistLSBFUlJPUjogIGNhbiBub3Qgc3BsaXQgREVGQVVMVCBwYXJ0aXRpb24gInNhbGVzX290 aGVycyIKKy0tIEhJTlQ6ICBUbyBzcGxpdCBERUZBVUxUIHBhcnRpdGlvbiBvbmUgb2YgdGhlIG5l dyBwYXJ0aXRpb24gbXN1dCBiZSBERUZBVUxUCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJ VCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIx IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjEtMTItMDEnKSBUTyAoJzIwMjItMDEtMDEnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAo JzIwMjItMDItMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSk7CitFUlJPUjogIGNhbiBub3Qgc3Bs aXQgREVGQVVMVCBwYXJ0aXRpb24gInNhbGVzX290aGVycyIKK0xJTkUgMjogICAoUEFSVElUSU9O IHNhbGVzX2RlYzIwMjEgRk9SIFZBTFVFUyBGUk9NICgnMjAyMS0xMi0wMScpIFRPLi4uCisgICAg ICAgICAgICAgICAgICAgICBeCitISU5UOiAgVG8gc3BsaXQgREVGQVVMVCBwYXJ0aXRpb24gb25l IG9mIHRoZSBuZXcgcGFydGl0aW9uIG1zdXQgYmUgREVGQVVMVAorLS0gbm8gZXJyb3I6IGJvdW5k cyBvZiBzYWxlc19ub2Vycm9yIGFyZSBiZXR3ZWVuIHNhbGVzX2RlYzIwMjEgYW5kIHNhbGVzX2Zl YjIwMjIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhl cnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjEgRk9SIFZBTFVFUyBGUk9NICgnMjAy MS0xMi0wMScpIFRPICgnMjAyMi0wMS0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX25vZXJyb3Ig Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0xMCcpIFRPICgnMjAyMi0wMS0yMCcpLAorICAgUEFS VElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgn MjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKK0RST1Ag VEFCTEUgc2FsZXNfcmFuZ2U7CitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzX2RhdGUg ZGF0ZSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxl c19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CistLSBubyBlcnJvcjog Ym91bmRzIG9mIHNhbGVzX25vZXJyb3IgYXJlIGVxdWFsIHRvIGxvd2VyIGFuZCB1cHBlciBib3Vu ZHMgb2Ygc2FsZXNfZGVjMjAyMSBhbmQgc2FsZXNfZmViMjAyMgorQUxURVIgVEFCTEUgc2FsZXNf cmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2Fs ZXNfZGVjMjAyMSBGT1IgVkFMVUVTIEZST00gKCcyMDIxLTEyLTAxJykgVE8gKCcyMDIyLTAxLTAx JyksCisgICBQQVJUSVRJT04gc2FsZXNfbm9lcnJvciBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAx LTAxJykgVE8gKCcyMDIyLTAyLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJ T04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKy0tCist LSBUZXN0OiBzcGxpdCBwYXJ0aXRpb24gd2l0aCBDSEVDSyBhbmQgRk9SRUlHTiBLRVkgQ09OU1RS QUlOVHMgb24gcGFydGl0aW9uZWQgdGFibGUKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUo c2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIo MzApKTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUyAoMSwgICdQb2lyb3QnKTsKK0NS RUFURSBUQUJMRSBzYWxlc19yYW5nZSAoCitzYWxlc3BlcnNvbl9pZCBJTlQgUkVGRVJFTkNFUyBz YWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCksCitzYWxlc19hbW91bnQgSU5UIENIRUNLIChzYWxl c19hbW91bnQgPiAxKSwKK3NhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxl c19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19y YW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitD UkVBVEUgVEFCTEUgc2FsZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5n ZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVB VEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOwor U0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCksIGNvbm5hbWUsIGNvbmtleSBGUk9NIHBn X2NvbnN0cmFpbnQgV0hFUkUgY29ucmVsaWQgPSAnc2FsZXNfZmViX21hcl9hcHIyMDIyJzo6cmVn Y2xhc3M6Om9pZCBPUkRFUiBCWSBjb25uYW1lIENPTExBVEUgIkMiOworICAgICAgICAgICAgICAg ICAgICAgICAgcGdfZ2V0X2NvbnN0cmFpbnRkZWYgICAgICAgICAgICAgICAgICAgICAgICAgfCAg ICAgICAgICAgICBjb25uYW1lICAgICAgICAgICAgIHwgY29ua2V5IAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLQorIENIRUNLICgoc2FsZXNf YW1vdW50ID4gMSkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBz YWxlc19yYW5nZV9zYWxlc19hbW91bnRfY2hlY2sgIHwgezJ9CisgRk9SRUlHTiBLRVkgKHNhbGVz cGVyc29uX2lkKSBSRUZFUkVOQ0VTIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkKSB8IHNhbGVz X3JhbmdlX3NhbGVzcGVyc29uX2lkX2ZrZXkgfCB7MX0KKygyIHJvd3MpCisKK0FMVEVSIFRBQkxF IHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTwor ICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScp IFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNh bGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0w MScpKTsKKy0tIFdlIHNob3VsZCBzZWUgdGhlIHNhbWUgQ09OU1RSQUlOVHMgYXMgb24gc2FsZXNf ZmViX21hcl9hcHIyMDIyIHBhcnRpdGlvbgorU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9p ZCksIGNvbm5hbWUsIGNvbmtleSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ucmVsaWQgPSAn c2FsZXNfZmViMjAyMic6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgY29ubmFtZSBDT0xMQVRFICJD IjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9jb25zdHJhaW50ZGVmICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgY29ubmFtZSAgICAgICAgICAgICB8IGNvbmtl eSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0KKyBDSEVDSyAoKHNhbGVzX2Ftb3VudCA+IDEpKSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgc2FsZXNfcmFuZ2Vfc2FsZXNfYW1vdW50X2NoZWNrICB8IHsyfQor IEZPUkVJR04gS0VZIChzYWxlc3BlcnNvbl9pZCkgUkVGRVJFTkNFUyBzYWxlc3Blb3BsZShzYWxl c3BlcnNvbl9pZCkgfCBzYWxlc19yYW5nZV9zYWxlc3BlcnNvbl9pZF9ma2V5IHwgezF9CisoMiBy b3dzKQorCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSwgY29ubmFtZSwgY29ua2V5 IEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25yZWxpZCA9ICdzYWxlc19tYXIyMDIyJzo6cmVn Y2xhc3M6Om9pZCBPUkRFUiBCWSBjb25uYW1lIENPTExBVEUgIkMiOworICAgICAgICAgICAgICAg ICAgICAgICAgcGdfZ2V0X2NvbnN0cmFpbnRkZWYgICAgICAgICAgICAgICAgICAgICAgICAgfCAg ICAgICAgICAgICBjb25uYW1lICAgICAgICAgICAgIHwgY29ua2V5IAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLQorIENIRUNLICgoc2FsZXNf YW1vdW50ID4gMSkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBz YWxlc19yYW5nZV9zYWxlc19hbW91bnRfY2hlY2sgIHwgezJ9CisgRk9SRUlHTiBLRVkgKHNhbGVz cGVyc29uX2lkKSBSRUZFUkVOQ0VTIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkKSB8IHNhbGVz X3JhbmdlX3NhbGVzcGVyc29uX2lkX2ZrZXkgfCB7MX0KKygyIHJvd3MpCisKK1NFTEVDVCBwZ19n ZXRfY29uc3RyYWludGRlZihvaWQpLCBjb25uYW1lLCBjb25rZXkgRlJPTSBwZ19jb25zdHJhaW50 IFdIRVJFIGNvbnJlbGlkID0gJ3NhbGVzX2FwcjIwMjInOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZ IGNvbm5hbWUgQ09MTEFURSAiQyI7CisgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfY29u c3RyYWludGRlZiAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIGNvbm5hbWUg ICAgICAgICAgICAgfCBjb25rZXkgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tCisgQ0hFQ0sgKChzYWxlc19hbW91bnQgPiAxKSkgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNhbGVzX3JhbmdlX3NhbGVzX2Ft b3VudF9jaGVjayAgfCB7Mn0KKyBGT1JFSUdOIEtFWSAoc2FsZXNwZXJzb25faWQpIFJFRkVSRU5D RVMgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQpIHwgc2FsZXNfcmFuZ2Vfc2FsZXNwZXJzb25f aWRfZmtleSB8IHsxfQorKDIgcm93cykKKworLS0gRVJST1I6ICBuZXcgcm93IGZvciByZWxhdGlv biAic2FsZXNfbWFyMjAyMiIgdmlvbGF0ZXMgY2hlY2sgY29uc3RyYWludCAic2FsZXNfcmFuZ2Vf c2FsZXNfYW1vdW50X2NoZWNrIgorSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAw LCAnMjAyMi0wMy0xMScpOworRVJST1I6ICBuZXcgcm93IGZvciByZWxhdGlvbiAic2FsZXNfbWFy MjAyMiIgdmlvbGF0ZXMgY2hlY2sgY29uc3RyYWludCAic2FsZXNfcmFuZ2Vfc2FsZXNfYW1vdW50 X2NoZWNrIgorREVUQUlMOiAgRmFpbGluZyByb3cgY29udGFpbnMgKDEsIDAsIDAzLTExLTIwMjIp LgorLS0gRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJzYWxlc19tYXIyMDIyIiB2 aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJzYWxlc19yYW5nZV9zYWxlc3BlcnNvbl9p ZF9ma2V5IgorSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgtMSwgMTAsICcyMDIyLTAz LTExJyk7CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInNhbGVzX21hcjIwMjIi IHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInNhbGVzX3JhbmdlX3NhbGVzcGVyc29u X2lkX2ZrZXkiCitERVRBSUw6ICBLZXkgKHNhbGVzcGVyc29uX2lkKT0oLTEpIGlzIG5vdCBwcmVz ZW50IGluIHRhYmxlICJzYWxlc3Blb3BsZSIuCistLSBvaworSU5TRVJUIElOVE8gc2FsZXNfcmFu Z2UgVkFMVUVTICgxLCAxMCwgJzIwMjItMDMtMTEnKTsKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2Ug Q0FTQ0FERTsKK0RST1AgVEFCTEUgc2FsZXNwZW9wbGUgQ0FTQ0FERTsKKy0tCistLSBUZXN0OiBz cGxpdCBwYXJ0aXRpb24gb24gcGFydGl0aW9uZWQgdGFibGUgaW4gY2FzZSBvZiBleGlzdGluZyBG T1JFSUdOIEtFWSByZWZlcmVuY2UgZnJvbSBhbm90aGVyIHRhYmxlCistLQorQ1JFQVRFIFRBQkxF IHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwgc2FsZXNwZXJzb25f bmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc3BlcnNvbl9pZCk7CitD UkVBVEUgVEFCTEUgc2FsZXMgKHNhbGVzcGVyc29uX2lkIElOVCBSRUZFUkVOQ0VTIHNhbGVzcGVv cGxlKHNhbGVzcGVyc29uX2lkKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKTsK K0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTAxXzEwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBG T1IgVkFMVUVTIEZST00gKDEpIFRPICgxMCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUxMF80 MCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDQwKTsK K0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUworICAoMSwgICdQb2lyb3QnKSwKKyAgKDEw LCAnTWF5JyksCisgICgxOSwgJ0l2YW5vdicpLAorICAoMjAsICdTbWlybm9mZicpLAorICAoMzAs ICdGb3JkJyk7CitJTlNFUlQgSU5UTyBzYWxlcyBWQUxVRVMKKyAgKDEsICAxMDAsICcyMDIyLTAz LTAxJyksCisgICgxLCAgMTEwLCAnMjAyMi0wMy0wMicpLAorICAoMTAsIDE1MCwgJzIwMjItMDMt MDEnKSwKKyAgKDEwLCA5MCwgICcyMDIyLTAzLTAzJyksCisgICgxOSwgMjAwLCAnMjAyMi0wMy0w NCcpLAorICAoMjAsIDUwLCAgJzIwMjItMDMtMTInKSwKKyAgKDIwLCAxNzAsICcyMDIyLTAzLTAy JyksCisgICgzMCwgMzAsICAnMjAyMi0wMy0wNCcpOworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFz cywgKiBGUk9NIHNhbGVzcGVvcGxlIE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBD T0xMQVRFICJDIiwgc2FsZXNwZXJzb25faWQ7CisgICAgIHRhYmxlb2lkICAgICB8IHNhbGVzcGVy c29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIHNhbGVzcGVvcGxlMDFfMTAgfCAgICAgICAgICAg ICAgMSB8IFBvaXJvdAorIHNhbGVzcGVvcGxlMTBfNDAgfCAgICAgICAgICAgICAxMCB8IE1heQor IHNhbGVzcGVvcGxlMTBfNDAgfCAgICAgICAgICAgICAxOSB8IEl2YW5vdgorIHNhbGVzcGVvcGxl MTBfNDAgfCAgICAgICAgICAgICAyMCB8IFNtaXJub2ZmCisgc2FsZXNwZW9wbGUxMF80MCB8ICAg ICAgICAgICAgIDMwIHwgRm9yZAorKDUgcm93cykKKworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUg U1BMSVQgUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfNDAgSU5UTworICAoUEFSVElUSU9OIHNhbGVz cGVvcGxlMTBfMjAgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKSwKKyAgIFBBUlRJVElPTiBz YWxlc3Blb3BsZTIwXzMwIEZPUiBWQUxVRVMgRlJPTSAoMjApIFRPICgzMCksCisgICBQQVJUSVRJ T04gc2FsZXNwZW9wbGUzMF80MCBGT1IgVkFMVUVTIEZST00gKDMwKSBUTyAoNDApKTsKK1NFTEVD VCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc3Blb3BsZSBPUkRFUiBCWSB0YWJsZW9p ZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIHNhbGVzcGVyc29uX2lkOworICAgICB0YWJs ZW9pZCAgICAgfCBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgCistLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBzYWxlc3Blb3Bs ZTAxXzEwIHwgICAgICAgICAgICAgIDEgfCBQb2lyb3QKKyBzYWxlc3Blb3BsZTEwXzIwIHwgICAg ICAgICAgICAgMTAgfCBNYXkKKyBzYWxlc3Blb3BsZTEwXzIwIHwgICAgICAgICAgICAgMTkgfCBJ dmFub3YKKyBzYWxlc3Blb3BsZTIwXzMwIHwgICAgICAgICAgICAgMjAgfCBTbWlybm9mZgorIHNh bGVzcGVvcGxlMzBfNDAgfCAgICAgICAgICAgICAzMCB8IEZvcmQKKyg1IHJvd3MpCisKKy0tIEVS Uk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAic2FsZXMiIHZpb2xhdGVzIGZvcmVpZ24g a2V5IGNvbnN0cmFpbnQgInNhbGVzX3NhbGVzcGVyc29uX2lkX2ZrZXkiCitJTlNFUlQgSU5UTyBz YWxlcyBWQUxVRVMgKDQwLCA1MCwgICcyMDIyLTAzLTA0Jyk7CitFUlJPUjogIGluc2VydCBvciB1 cGRhdGUgb24gdGFibGUgInNhbGVzIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJz YWxlc19zYWxlc3BlcnNvbl9pZF9ma2V5IgorREVUQUlMOiAgS2V5IChzYWxlc3BlcnNvbl9pZCk9 KDQwKSBpcyBub3QgcHJlc2VudCBpbiB0YWJsZSAic2FsZXNwZW9wbGUiLgorLS0gb2sKK0lOU0VS VCBJTlRPIHNhbGVzIFZBTFVFUyAoMzAsIDUwLCAgJzIwMjItMDMtMDQnKTsKK0RST1AgVEFCTEUg c2FsZXMgQ0FTQ0FERTsKK0RST1AgVEFCTEUgc2FsZXNwZW9wbGUgQ0FTQ0FERTsKKy0tCistLSBU ZXN0OiBzcGxpdCBwYXJ0aXRpb24gb2YgcGFydGl0aW9uZWQgdGFibGUgd2l0aCB0cmlnZ2Vycwor LS0KK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBL RVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2Fs ZXNwZXJzb25faWQpOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMDFfMTAgUEFSVElUSU9OIE9G IHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEwKTsKK0NSRUFURSBUQUJMRSBz YWxlc3Blb3BsZTEwXzQwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00g KDEwKSBUTyAoNDApOworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTICgxLCAgJ1BvaXJv dCcpOworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2Vy KCkgUkVUVVJOUyB0cmlnZ2VyIExBTkdVQUdFICdwbHBnc3FsJyBBUyAkQk9EWSQKK0JFR0lOCisg ICAgUkFJU0UgTk9USUNFICd0cmlnZ2VyKCUpIGNhbGxlZDogYWN0aW9uID0gJSwgd2hlbiA9ICUs IGxldmVsID0gJScsIFRHX0FSR1ZbMF0sIFRHX09QLCBUR19XSEVOLCBUR19MRVZFTDsKKyAgICBS RVRVUk4gTlVMTDsKK0VORDsKKyRCT0RZJDsKK0NSRUFURSBUUklHR0VSIHNhbGVzcGVvcGxlX2Fm dGVyX2luc2VydF9zdGF0ZW1lbnRfdHJpZ2dlcgorICAgIEFGVEVSIElOU0VSVAorICAgIE9OIHNh bGVzcGVvcGxlCisgICAgRk9SIEVBQ0ggU1RBVEVNRU5UCisgICAgRVhFQ1VURSBQUk9DRURVUkUg YWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCdzYWxlc3Blb3BsZScpOworQ1JFQVRFIFRSSUdHRVIg c2FsZXNwZW9wbGVfYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyCisgICAgQUZURVIgSU5TRVJUCisg ICAgT04gc2FsZXNwZW9wbGUKKyAgICBGT1IgRUFDSCBST1cKKyAgICBFWEVDVVRFIFBST0NFRFVS RSBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoJ3NhbGVzcGVvcGxlJyk7CistLSAyIHRyaWdnZXJz IHNob3VsZCBmaXJlIGhlcmUgKHJvdyArIHN0YXRlbWVudCk6CitJTlNFUlQgSU5UTyBzYWxlc3Bl b3BsZSBWQUxVRVMgKDEwLCAnTWF5Jyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzcGVvcGxlKSBj YWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFJPVworTk9USUNF OiAgdHJpZ2dlcihzYWxlc3Blb3BsZSkgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBB RlRFUiwgbGV2ZWwgPSBTVEFURU1FTlQKKy0tIDEgdHJpZ2dlciBzaG91bGQgZmlyZSBoZXJlIChy b3cpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUxMF80MCBWQUxVRVMgKDE5LCAnSXZhbm92Jyk7 CitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzcGVvcGxlKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwg d2hlbiA9IEFGVEVSLCBsZXZlbCA9IFJPVworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgU1BMSVQg UEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfNDAgSU5UTworICAoUEFSVElUSU9OIHNhbGVzcGVvcGxl MTBfMjAgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKSwKKyAgIFBBUlRJVElPTiBzYWxlc3Bl b3BsZTIwXzMwIEZPUiBWQUxVRVMgRlJPTSAoMjApIFRPICgzMCksCisgICBQQVJUSVRJT04gc2Fs ZXNwZW9wbGUzMF80MCBGT1IgVkFMVUVTIEZST00gKDMwKSBUTyAoNDApKTsKKy0tIDIgdHJpZ2dl cnMgc2hvdWxkIGZpcmUgaGVyZSAocm93ICsgc3RhdGVtZW50KToKK0lOU0VSVCBJTlRPIHNhbGVz cGVvcGxlIFZBTFVFUyAoMjAsICdTbWlybm9mZicpOworTk9USUNFOiAgdHJpZ2dlcihzYWxlc3Bl b3BsZSkgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBST1cK K05PVElDRTogIHRyaWdnZXIoc2FsZXNwZW9wbGUpIGNhbGxlZDogYWN0aW9uID0gSU5TRVJULCB3 aGVuID0gQUZURVIsIGxldmVsID0gU1RBVEVNRU5UCistLSAxIHRyaWdnZXIgc2hvdWxkIGZpcmUg aGVyZSAocm93KToKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlMzBfNDAgVkFMVUVTICgzMCwgJ0Zv cmQnKTsKK05PVElDRTogIHRyaWdnZXIoc2FsZXNwZW9wbGUpIGNhbGxlZDogYWN0aW9uID0gSU5T RVJULCB3aGVuID0gQUZURVIsIGxldmVsID0gUk9XCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNz LCAqIEZST00gc2FsZXNwZW9wbGUgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENP TExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsKKyAgICAgdGFibGVvaWQgICAgIHwgc2FsZXNwZXJz b25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIAorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgc2FsZXNwZW9wbGUwMV8xMCB8ICAgICAgICAgICAg ICAxIHwgUG9pcm90Cisgc2FsZXNwZW9wbGUxMF8yMCB8ICAgICAgICAgICAgIDEwIHwgTWF5Cisg c2FsZXNwZW9wbGUxMF8yMCB8ICAgICAgICAgICAgIDE5IHwgSXZhbm92Cisgc2FsZXNwZW9wbGUy MF8zMCB8ICAgICAgICAgICAgIDIwIHwgU21pcm5vZmYKKyBzYWxlc3Blb3BsZTMwXzQwIHwgICAg ICAgICAgICAgMzAgfCBGb3JkCisoNSByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlIENB U0NBREU7CitEUk9QIEZVTkNUSU9OIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcigpOworLS0KKy0t IFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiB3aXRjaCBpZGVudGl0eSBjb2x1bW4KKy0tIElmIHNwbGl0 IHBhcnRpdGlvbiBjb2x1bW4gaXMgaWRlbnRpdHkgY29sdW1uLCBjb2x1bW5zIG9mIG5ldyBwYXJ0 aXRpb25zIGFyZSBpZGVudGl0eSBjb2x1bW5zIHRvby4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNw ZW9wbGUoc2FsZXNwZXJzb25faWQgSU5UIEdFTkVSQVRFRCBBTFdBWVMgQVMgSURFTlRJVFkgUFJJ TUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJVElPTiBCWSBSQU5H RSAoc2FsZXNwZXJzb25faWQpOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMV8yIFBBUlRJVElP TiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKKy0tIENyZWF0ZSBu ZXcgcGFydGl0aW9uIHdpdGggaWRlbnRpdHkgY29sdW1uOgorQ1JFQVRFIFRBQkxFIHNhbGVzcGVv cGxlMl81KHNhbGVzcGVyc29uX2lkIElOVCBOT1QgTlVMTCwgc2FsZXNwZXJzb25fbmFtZSBWQVJD SEFSKDMwKSk7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVz cGVvcGxlMl81IEZPUiBWQUxVRVMgRlJPTSAoMikgVE8gKDUpOworSU5TRVJUIElOVE8gc2FsZXNw ZW9wbGUgKHNhbGVzcGVyc29uX25hbWUpIFZBTFVFUyAoJ1BvaXJvdCcpLCAoJ0l2YW5vdicpOwor QUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgU1BMSVQgUEFSVElUSU9OIHNhbGVzcGVvcGxlMl81IElO VE8KKyAgKFBBUlRJVElPTiBzYWxlc3Blb3BsZTJfMyBGT1IgVkFMVUVTIEZST00gKDIpIFRPICgz KSwKKyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTNfNCBGT1IgVkFMVUVTIEZST00gKDMpIFRPICg0 KSwKKyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTRfNSBGT1IgVkFMVUVTIEZST00gKDQpIFRPICg1 KSk7CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSAoc2FsZXNwZXJzb25fbmFtZSkgVkFMVUVTICgn TWF5JyksICgnRm9yZCcpOworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVz cGVvcGxlIE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2Fs ZXNwZXJzb25faWQ7CisgICAgdGFibGVvaWQgICAgfCBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVy c29uX25hbWUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tCisgc2FsZXNwZW9wbGUxXzIgfCAgICAgICAgICAgICAgMSB8IFBvaXJvdAorIHNhbGVz cGVvcGxlMl8zIHwgICAgICAgICAgICAgIDIgfCBJdmFub3YKKyBzYWxlc3Blb3BsZTNfNCB8ICAg ICAgICAgICAgICAzIHwgTWF5Cisgc2FsZXNwZW9wbGU0XzUgfCAgICAgICAgICAgICAgNCB8IEZv cmQKKyg0IHJvd3MpCisKKy0tIGNoZWNrIG5ldyBwYXJ0aXRpb25zIGhhdmUgaWRlbnRpdHkgb3Ig bm90IGFmdGVyIHNwbGl0IHBhcnRpdGlvbgorU0VMRUNUIGF0dHJlbGlkOjpyZWdjbGFzcywgYXR0 bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZQorV0hFUkUg YXR0bnVtID4gMAorQU5EIGF0dHJlbGlkOjpyZWdjbGFzcyBJTiAoCisgICdzYWxlc3Blb3BsZTJf Myc6OnJlZ2NsYXNzLCAnc2FsZXNwZW9wbGUnLCAnc2FsZXNwZW9wbGUyXzMnLAorICAnc2FsZXNw ZW9wbGUxXzInLCAnc2FsZXNwZW9wbGUzXzQnLCAnc2FsZXNwZW9wbGU0XzUnKQorT1JERVIgQlkg YXR0cmVsaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBhdHRudW07CisgICAgYXR0cmVs aWQgICAgfCAgICAgYXR0bmFtZSAgICAgIHwgYXR0aWRlbnRpdHkgfCBhdHRnZW5lcmF0ZWQgCist LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tCisgc2FsZXNwZW9wbGUgICAgfCBzYWxlc3BlcnNvbl9pZCAgIHwgYSAgICAgICAgICAg fCAKKyBzYWxlc3Blb3BsZSAgICB8IHNhbGVzcGVyc29uX25hbWUgfCAgICAgICAgICAgICB8IAor IHNhbGVzcGVvcGxlMV8yIHwgc2FsZXNwZXJzb25faWQgICB8IGEgICAgICAgICAgIHwgCisgc2Fs ZXNwZW9wbGUxXzIgfCBzYWxlc3BlcnNvbl9uYW1lIHwgICAgICAgICAgICAgfCAKKyBzYWxlc3Bl b3BsZTJfMyB8IHNhbGVzcGVyc29uX2lkICAgfCBhICAgICAgICAgICB8IAorIHNhbGVzcGVvcGxl Ml8zIHwgc2FsZXNwZXJzb25fbmFtZSB8ICAgICAgICAgICAgIHwgCisgc2FsZXNwZW9wbGUzXzQg fCBzYWxlc3BlcnNvbl9pZCAgIHwgYSAgICAgICAgICAgfCAKKyBzYWxlc3Blb3BsZTNfNCB8IHNh bGVzcGVyc29uX25hbWUgfCAgICAgICAgICAgICB8IAorIHNhbGVzcGVvcGxlNF81IHwgc2FsZXNw ZXJzb25faWQgICB8IGEgICAgICAgICAgIHwgCisgc2FsZXNwZW9wbGU0XzUgfCBzYWxlc3BlcnNv bl9uYW1lIHwgICAgICAgICAgICAgfCAKKygxMCByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzcGVv cGxlIENBU0NBREU7CistLQorLS0gVGVzdDogc3BsaXQgcGFydGl0aW9uIHdpdGggZGVsZXRlZCBj b2x1bW5zCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBQ UklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJB TkdFIChzYWxlc3BlcnNvbl9pZCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUwMV8xMCBQQVJU SVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworLS0gQ3Jl YXRlIG5ldyBwYXJ0aXRpb24gd2l0aCBzb21lIGRlbGV0ZWQgY29sdW1uczoKK0NSRUFURSBUQUJM RSBzYWxlc3Blb3BsZTEwXzQwKGQxIFZBUkNIQVIoMzApLCBzYWxlc3BlcnNvbl9pZCBJTlQgUFJJ TUFSWSBLRVksIGQyIElOVCwgZDMgREFURSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7 CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZTEwXzQwIFZBTFVFUworICAoJ2R1bW15IHZhbHVlIDEn LCAxOSwgMTAwLCBub3coKSwgJ0l2YW5vdicpLAorICAoJ2R1bW15IHZhbHVlIDInLCAyMCwgMTAx LCBub3coKSwgJ1NtaXJub2ZmJyk7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZTEwXzQwIERST1Ag Q09MVU1OIGQxOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUxMF80MCBEUk9QIENPTFVNTiBkMjsK K0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlMTBfNDAgRFJPUCBDT0xVTU4gZDM7CitBTFRFUiBUQUJM RSBzYWxlc3Blb3BsZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfNDAgRk9SIFZBTFVF UyBGUk9NICgxMCkgVE8gKDQwKTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUworICAo MSwgJ1BvaXJvdCcpLAorICAoMTAsICdNYXknKSwKKyAgKDMwLCAnRm9yZCcpOworQUxURVIgVEFC TEUgc2FsZXNwZW9wbGUgU1BMSVQgUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfNDAgSU5UTworICAo UEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfMjAgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKSwK KyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTIwXzMwIEZPUiBWQUxVRVMgRlJPTSAoMjApIFRPICgz MCksCisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUzMF80MCBGT1IgVkFMVUVTIEZST00gKDMwKSBU TyAoNDApKTsKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc3Blb3BsZSBP UkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIHNhbGVzcGVyc29u X2lkOworICAgICB0YWJsZW9pZCAgICAgfCBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25h bWUgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0KKyBzYWxlc3Blb3BsZTAxXzEwIHwgICAgICAgICAgICAgIDEgfCBQb2lyb3QKKyBzYWxlc3Bl b3BsZTEwXzIwIHwgICAgICAgICAgICAgMTAgfCBNYXkKKyBzYWxlc3Blb3BsZTEwXzIwIHwgICAg ICAgICAgICAgMTkgfCBJdmFub3YKKyBzYWxlc3Blb3BsZTIwXzMwIHwgICAgICAgICAgICAgMjAg fCBTbWlybm9mZgorIHNhbGVzcGVvcGxlMzBfNDAgfCAgICAgICAgICAgICAzMCB8IEZvcmQKKyg1 IHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNwZW9wbGUgQ0FTQ0FERTsKKy0tCistLSBUZXN0OiBz cGxpdCBzdWItcGFydGl0aW9uCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3Bl cnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJ TlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NS RUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUg c2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX21hcjIw MjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEn KSBUTyAoJzIwMjItMDQtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyIChzYWxlc3Bl cnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJ TlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NS RUFURSBUQUJMRSBzYWxlc19hcHJfYWxsIFBBUlRJVElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0FMVEVSIFRBQkxF IHNhbGVzX3JhbmdlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf b3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworQ1JFQVRFIElOREVYIHNh bGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVlIChzYWxl c19kYXRlKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAg ICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjIt MDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwg ICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUw LCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScp LAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNz c29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAy Mi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgx MSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAz NTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5 JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKK1NFTEVDVCB0YWJs ZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19yYW5nZSBPUkRFUiBCWSB0YWJsZW9pZDo6cmVn Y2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIHNhbGVzcGVyc29uX2lkOworICAgdGFibGVvaWQgICAg fCBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxl c19kYXRlIAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIHNhbGVzX2Fwcl9hbGwgfCAgICAgICAg ICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisg c2FsZXNfYXByX2FsbCB8ICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAg ICAgIDc1MCB8IDA0LTEzLTIwMjIKKyBzYWxlc19hcHJfYWxsIHwgICAgICAgICAgICAgIDUgfCBE ZWV2ICAgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorIHNhbGVzX2Fwcl9h bGwgfCAgICAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAw NC0wNi0yMDIyCisgc2FsZXNfZmViMjAyMiB8ICAgICAgICAgICAgICAyIHwgU21pcm5vZmYgICAg ICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEwLTIwMjIKKyBzYWxlc19mZWIyMDIyIHwgICAgICAg ICAgICAgIDYgfCBQb2lyb3QgICAgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgor IHNhbGVzX2ZlYjIwMjIgfCAgICAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgICAgfCAgICAg ICAgICAxODUgfCAwMi0yMy0yMDIyCisgc2FsZXNfamFuMjAyMiB8ICAgICAgICAgICAgICAxIHwg TWF5ICAgICAgICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAxLTMxLTIwMjIKKyBzYWxlc19qYW4y MDIyIHwgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwg MDEtMjgtMjAyMgorIHNhbGVzX2phbjIwMjIgfCAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAg ICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisgc2FsZXNfbWFyMjAyMiB8ICAgICAg ICAgICAgICA3IHwgTGkgICAgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIK KyBzYWxlc19tYXIyMDIyIHwgICAgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwgICAg ICAgICAgMjUwIHwgMDMtMTEtMjAyMgorIHNhbGVzX21hcjIwMjIgfCAgICAgICAgICAgICAxMiB8 IFBsYXRvICAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisgc2FsZXNfb3Ro ZXJzICB8ICAgICAgICAgICAgIDE0IHwgU21pdGggICAgICAgICAgICB8ICAgICAgICAgIDUxMCB8 IDA1LTA0LTIwMjIKKygxNCByb3dzKQorCitBTFRFUiBUQUJMRSBzYWxlc19hcHIyMDIyIFNQTElU IFBBUlRJVElPTiBzYWxlc19hcHJfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19hcHIyMDIy XzAxXzEwIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDQtMTAnKSwK KyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyXzEwXzIwIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDQtMTAnKSBUTyAoJzIwMjItMDQtMjAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyXzIw XzMwIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMjAnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitT RUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfcmFuZ2UgT1JERVIgQlkgdGFi bGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsKKyAgICAg IHRhYmxlb2lkICAgICAgIHwgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2Fs ZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBz YWxlc19hcHIyMDIyXzAxXzEwIHwgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwg ICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorIHNhbGVzX2FwcjIwMjJfMDFfMTAgfCAgICAgICAg ICAgICAxMSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisg c2FsZXNfYXByMjAyMl8xMF8yMCB8ICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8 ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyBzYWxlc19hcHIyMDIyXzIwXzMwIHwgICAgICAg ICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgor IHNhbGVzX2ZlYjIwMjIgICAgICAgfCAgICAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAg fCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisgc2FsZXNfZmViMjAyMiAgICAgICB8ICAgICAg ICAgICAgICA2IHwgUG9pcm90ICAgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIK KyBzYWxlc19mZWIyMDIyICAgICAgIHwgICAgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgICAg IHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgorIHNhbGVzX2phbjIwMjIgICAgICAgfCAgICAg ICAgICAgICAgMSB8IE1heSAgICAgICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIy Cisgc2FsZXNfamFuMjAyMiAgICAgICB8ICAgICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICAg ICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKKyBzYWxlc19qYW4yMDIyICAgICAgIHwgICAg ICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgICAgICAgICAgMzc3IHwgMDEtMDktMjAy MgorIHNhbGVzX21hcjIwMjIgICAgICAgfCAgICAgICAgICAgICAgNyB8IExpICAgICAgICAgICAg ICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgc2FsZXNfbWFyMjAyMiAgICAgICB8ICAg ICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIw MjIKKyBzYWxlc19tYXIyMDIyICAgICAgIHwgICAgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAg ICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorIHNhbGVzX290aGVycyAgICAgICAgfCAg ICAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0y MDIyCisoMTQgcm93cykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKy0tCistLSBCWSBMSVNU IHBhcnRpdGlvbmluZworLS0KKy0tCistLSBUZXN0OiBzcGVjaWZpYyBlcnJvcnMgZm9yIEJZIExJ U1QgcGFydGl0aW9uaW5nCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QgKHNhbGVzX3N0YXRl IFZBUkNIQVIoMjApKSBQQVJUSVRJT04gQlkgTElTVCAoc2FsZXNfc3RhdGUpOworQ1JFQVRFIFRB QkxFIHNhbGVzX25vcmQgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ09z bG8nLCAnU3QuIFBldGVyc2J1cmcnLCAnSGVsc2lua2knKTsKK0NSRUFURSBUQUJMRSBzYWxlc19h bGwgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdMaXNi b24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJywgJ0JlamluZycsICdCZXJsaW4nLCAnRGVsaGknLCAn S3lpdicsICdWbGFkaXZvc3RvaycpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJ T04gT0Ygc2FsZXNfbGlzdCBERUZBVUxUOworLS0gRVJST1I6ICBuZXcgcGFydGl0aW9uICJzYWxl c19lYXN0IiB3b3VsZCBvdmVybGFwIHdpdGggYW5vdGhlciAobm90IHNwbGl0KSBwYXJ0aXRpb24g InNhbGVzX25vcmQiCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxl c19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2Jv bicsICdOZXcgWW9yaycsICdNYWRyaWQnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBW QUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snLCAnSGVsc2lua2knKSwK KyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVy bGluJywgJ0t5aXYnKSk7CitFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX2Vhc3QiIHdvdWxk IG92ZXJsYXAgd2l0aCBhbm90aGVyIChub3Qgc3BsaXQpIHBhcnRpdGlvbiAic2FsZXNfbm9yZCIK K0xJTkUgMzogLi4uIEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0 b2snLCAnSGVsc2lua2knLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6ICBuZXcgcGFydGl0aW9uICJzYWxl c193ZXN0IiB3b3VsZCBvdmVybGFwIHdpdGggYW5vdGhlciBuZXcgcGFydGl0aW9uICJzYWxlc19j ZW50cmFsIgorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxs IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAn TmV3IFlvcmsnLCAnTWFkcmlkJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVT IElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2Fs ZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdMaXNib24nLCAn S3lpdicpKTsKK0VSUk9SOiAgbmV3IHBhcnRpdGlvbiAic2FsZXNfd2VzdCIgd291bGQgb3Zlcmxh cCB3aXRoIGFub3RoZXIgbmV3IHBhcnRpdGlvbiAic2FsZXNfY2VudHJhbCIKK0xJTkUgMjogICAo UEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycs Li4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0t IEVSUk9SOiAgbmV3IHBhcnRpdGlvbiAic2FsZXNfd2VzdCIgY2Fubm90IGhhdmUgTlVMTCB2YWx1 ZSBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiAic2FsZXNfYWxsIiBkb2VzIG5vdCBoYXZlCitBTFRF UiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFS VElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdN YWRyaWQnLCBOVUxMKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdC ZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50 cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKSk7CitFUlJPUjog IG5ldyBwYXJ0aXRpb24gInNhbGVzX3dlc3QiIGNhbm5vdCBoYXZlIE5VTEwgdmFsdWUgYmVjYXVz ZSBzcGxpdCBwYXJ0aXRpb24gInNhbGVzX2FsbCIgZG9lcyBub3QgaGF2ZQorTElORSAyOiAuLi5z X3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnLCBOVUxM KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXgorLS0gRVJST1I6ICBuZXcgcGFydGl0aW9uICJzYWxlc193ZXN0IiBjYW5u b3QgaGF2ZSB0aGlzIHZhbHVlIGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uICJzYWxlc19hbGwiIGRv ZXMgbm90IGhhdmUKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVz X2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9u JywgJ05ldyBZb3JrJywgJ01hZHJpZCcsICdNZWxib3VybmUnKSwKKyAgIFBBUlRJVElPTiBzYWxl c19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwK KyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVy bGluJywgJ0t5aXYnKSk7CitFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX3dlc3QiIGNhbm5v dCBoYXZlIHRoaXMgdmFsdWUgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gInNhbGVzX2FsbCIgZG9l cyBub3QgaGF2ZQorTElORSAyOiAuLi5zdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZ b3JrJywgJ01hZHJpZCcsICdNZWxib3VybmUuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBFUlJPUjogIG5ldyBwYXJ0 aXRpb24gY2Fubm90IGJlIERFRkFVTFQgYmVjYXVzZSBERUZBVUxUIHBhcnRpdGlvbiAic2FsZXNf b3RoZXJzIiBhbHJlYWR5IGV4aXN0cworQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJU SVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMg SU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJywgJ01lbGJvdXJuZScpLAorICAgUEFS VElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFk aXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dh cnNhdycsICdCZXJsaW4nLCAnS3lpdicpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVyczIgREVG QVVMVCk7CitFUlJPUjogIG5ldyBwYXJ0aXRpb24gY2Fubm90IGJlIERFRkFVTFQgYmVjYXVzZSBE RUZBVUxUIHBhcnRpdGlvbiAic2FsZXNfb3RoZXJzIiBhbHJlYWR5IGV4aXN0cworTElORSA1OiAg ICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzMiBERUZBVUxUKTsKKyAgICAgICAgICAgICAgICAgICAg IF4KK0RST1AgVEFCTEUgc2FsZXNfbGlzdDsKKy0tIFRlc3QgZm9yIG5vbi1zeW1ib2xpYyBjb21w YXJpc29uIG9mIHZhbHVlcyAobnVtZXJpYyB2YWx1ZXMgJzAnIGFuZCAnMC4wJyBhcmUgZXF1YWwp LgorQ1JFQVRFIFRBQkxFIHQgKGEgbnVtZXJpYykgUEFSVElUSU9OIEJZIExJU1QgKGEpOworQ1JF QVRFIFRBQkxFIHQxIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgaW4gICgnMCcsICcxJyk7Cist LSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gIngiIHdvdWxkIG92ZXJsYXAgd2l0aCBhbm90aGVyIG5l dyBwYXJ0aXRpb24gIngxIgorQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdDEgSU5UTwor ICAoUEFSVElUSU9OIHggRk9SIFZBTFVFUyBJTiAoJzAnKSwKKyAgIFBBUlRJVElPTiB4MSBGT1Ig VkFMVUVTIElOICgnMC4wJywgJzEnKSk7CitFUlJPUjogIG5ldyBwYXJ0aXRpb24gIngiIHdvdWxk IG92ZXJsYXAgd2l0aCBhbm90aGVyIG5ldyBwYXJ0aXRpb24gIngxIgorTElORSAyOiAgIChQQVJU SVRJT04geCBGT1IgVkFMVUVTIElOICgnMCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBeCitEUk9QIFRBQkxFIHQ7CistLQorLS0gVGVzdDogdHdvIHNwZWNpZmljIGVy cm9ycyBmb3IgQlkgTElTVCBwYXJ0aXRpb25pbmc6CistLSAgICogbmV3IHBhcnRpdGlvbnMgZG8g bm90IGhhdmUgTlVMTCB2YWx1ZSwgd2hpY2ggc3BsaXQgcGFydGl0aW9uIGhhcy4KKy0tICAgKiBu ZXcgcGFydGl0aW9ucyBkbyBub3QgaGF2ZSBhIHZhbHVlIHRoYXQgc3BsaXQgcGFydGl0aW9uIGhh cy4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfbGlzdChzYWxlc19zdGF0ZSBWQVJDSEFSKDIwKSkg UEFSVElUSU9OIEJZIExJU1QgKHNhbGVzX3N0YXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19ub3Jk IFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdIZWxzaW5raScsICdTdC4g UGV0ZXJzYnVyZycsICdPc2xvJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBBUlRJVElPTiBP RiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnTGlzYm9uJywgJ05ldyBZb3Jr JywgJ01hZHJpZCcsICdCZWppbmcnLCAnQmVybGluJywgJ0RlbGhpJywgJ0t5aXYnLCAnVmxhZGl2 b3N0b2snLCBOVUxMKTsKKy0tIEVSUk9SOiAgbmV3IHBhcnRpdGlvbnMgY29tYmluZWQgcGFydGl0 aW9uIGJvdW5kcyBkbyBub3QgY29udGFpbiB2YWx1ZSAoTlVMTCkgYnV0IHNwbGl0IHBhcnRpdGlv biAic2FsZXNfYWxsIiBkb2VzCistLSBISU5UOiAgQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJ VElPTiByZXF1aXJlIGNvbWJpbmVkIGJvdW5kcyBvZiBuZXcgcGFydGl0aW9ucyBtdXN0IGV4YWN0 bHkgbWF0Y2ggdGhlIGJvdW5kIG9mIHRoZSBzcGxpdCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNh bGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2Fs ZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpLAor ICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScs ICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJ TiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpKTsKK0VSUk9SOiAgbmV3IHBhcnRpdGlvbnMg Y29tYmluZWQgcGFydGl0aW9uIGJvdW5kcyBkbyBub3QgY29udGFpbiB2YWx1ZSAoTlVMTCkgYnV0 IHNwbGl0IHBhcnRpdGlvbiAic2FsZXNfYWxsIiBkb2VzCitISU5UOiAgQUxURVIgVEFCTEUgLi4u IFNQTElUIFBBUlRJVElPTiByZXF1aXJlIGNvbWJpbmVkIGJvdW5kcyBvZiBuZXcgcGFydGl0aW9u cyBtdXN0IGV4YWN0bHkgbWF0Y2ggdGhlIGJvdW5kIG9mIHRoZSBzcGxpdCBwYXJ0aXRpb24KKy0t IEVSUk9SOiAgbmV3IHBhcnRpdGlvbnMgY29tYmluZWQgcGFydGl0aW9uIGJvdW5kcyBkbyBub3Qg Y29udGFpbiB2YWx1ZSAoJ0t5aXYnOjpjaGFyYWN0ZXIgdmFyeWluZygyMCkpIGJ1dCBzcGxpdCBw YXJ0aXRpb24gInNhbGVzX2FsbCIgZG9lcworLS0gSElOVDogIEFMVEVSIFRBQkxFIC4uLiBTUExJ VCBQQVJUSVRJT04gcmVxdWlyZSBjb21iaW5lZCBib3VuZHMgb2YgbmV3IHBhcnRpdGlvbnMgbXVz dCBleGFjdGx5IG1hdGNoIHRoZSBib3VuZCBvZiB0aGUgc3BsaXQgcGFydGl0aW9uCitBTFRFUiBU QUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElU SU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRy aWQnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAn RGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBW QUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgTlVMTCkpOworRVJST1I6ICBuZXcgcGFydGl0 aW9ucyBjb21iaW5lZCBwYXJ0aXRpb24gYm91bmRzIGRvIG5vdCBjb250YWluIHZhbHVlICgnS3lp dic6OmNoYXJhY3RlciB2YXJ5aW5nKDIwKSkgYnV0IHNwbGl0IHBhcnRpdGlvbiAic2FsZXNfYWxs IiBkb2VzCitISU5UOiAgQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTiByZXF1aXJlIGNv bWJpbmVkIGJvdW5kcyBvZiBuZXcgcGFydGl0aW9ucyBtdXN0IGV4YWN0bHkgbWF0Y2ggdGhlIGJv dW5kIG9mIHRoZSBzcGxpdCBwYXJ0aXRpb24KKy0tIEVSUk9SICBERUZBVUxUIHBhcnRpdGlvbiBz aG91bGQgYmUgb25lCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxl c19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2Jv bicsICdOZXcgWW9yaycsICdNYWRyaWQnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBW QUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElP TiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCwKKyAgIFBBUlRJVElPTiBzYWxl c19vdGhlcnMyIERFRkFVTFQpOworRVJST1I6ICBERUZBVUxUIHBhcnRpdGlvbiBzaG91bGQgYmUg b25lCitMSU5FIDY6ICAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMyIERFRkFVTFQpOworICAgICAg ICAgICAgICAgICAgICAgXgorRFJPUCBUQUJMRSBzYWxlc19saXN0OworLS0KKy0tIFRlc3Q6IEJZ IExJU1QgcGFydGl0aW9uaW5nLCBTUExJVCBQQVJUSVRJT04gd2l0aCBkYXRhCistLQorQ1JFQVRF IFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxlc3BlcnNvbl9pZCBTRVJJQUwsCisgc2FsZXNwZXJzb25f bmFtZSBWQVJDSEFSKDMwKSwKKyBzYWxlc19zdGF0ZSBWQVJDSEFSKDIwKSwKKyBzYWxlc19hbW91 bnQgSU5ULAorIHNhbGVzX2RhdGUgREFURSkKK1BBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0 ZSk7CitDUkVBVEUgSU5ERVggc2FsZXNfbGlzdF9zYWxlc3BlcnNvbl9uYW1lX2lkeCBPTiBzYWxl c19saXN0IFVTSU5HIGJ0cmVlIChzYWxlc3BlcnNvbl9uYW1lKTsKK0NSRUFURSBJTkRFWCBzYWxl c19saXN0X3NhbGVzX3N0YXRlX2lkeCBPTiBzYWxlc19saXN0IFVTSU5HIGJ0cmVlIChzYWxlc19z dGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBG T1IgVkFMVUVTIElOICgnSGVsc2lua2knLCAnU3QuIFBldGVyc2J1cmcnLCAnT3NsbycpOworQ1JF QVRFIFRBQkxFIHNhbGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElO ICgnV2Fyc2F3JywgJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAnQmVqaW5nJywgJ0Jl cmxpbicsICdEZWxoaScsICdLeWl2JywgJ1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IERFRkFVTFQ7CitJTlNFUlQgSU5UTyBz YWxlc19saXN0IChzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBz YWxlc19kYXRlKSBWQUxVRVMKKyAgKCdUcnVtcCcsICAgICdCZWppbmcnLCAgICAgICAgIDEwMDAs ICcyMDIyLTAzLTAxJyksCisgICgnU21pcm5vZmYnLCAnTmV3IFlvcmsnLCAgICAgICAgNTAwLCAn MjAyMi0wMy0wMycpLAorICAoJ0ZvcmQnLCAgICAgJ1N0LiBQZXRlcnNidXJnJywgMjAwMCwgJzIw MjItMDMtMDUnKSwKKyAgKCdJdmFub3YnLCAgICdXYXJzYXcnLCAgICAgICAgICA3NTAsICcyMDIy LTAzLTA0JyksCisgICgnRGVldicsICAgICAnTGlzYm9uJywgICAgICAgICAgMjUwLCAnMjAyMi0w My0wNycpLAorICAoJ1BvaXJvdCcsICAgJ0JlcmxpbicsICAgICAgICAgMTAwMCwgJzIwMjItMDMt MDEnKSwKKyAgKCdNYXknLCAgICAgICdPc2xvJywgICAgICAgICAgIDEyMDAsICcyMDIyLTAzLTA2 JyksCisgICgnTGknLCAgICAgICAnVmxhZGl2b3N0b2snLCAgICAxMTUwLCAnMjAyMi0wMy0wOScp LAorICAoJ01heScsICAgICAgJ09zbG8nLCAgICAgICAgICAgMTIwMCwgJzIwMjItMDMtMTEnKSwK KyAgKCdIYWxkZXInLCAgICdIZWxzaW5raScsICAgICAgICA4MDAsICcyMDIyLTAzLTAyJyksCisg ICgnTXVsbGVyJywgICAnTWFkcmlkJywgICAgICAgICAgNjUwLCAnMjAyMi0wMy0wNScpLAorICAo J1NtaXRoJywgICAgJ0t5aXYnLCAgICAgICAgICAgIDM1MCwgJzIwMjItMDMtMTAnKSwKKyAgKCdH YW5kaScsICAgICdXYXJzYXcnLCAgICAgICAgICAxNTAsICcyMDIyLTAzLTA4JyksCisgICgnUGxh dG8nLCAgICAnTGlzYm9uJywgICAgICAgICAgOTUwLCAnMjAyMi0wMy0wNScpOworQUxURVIgVEFC TEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElP TiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlk JyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0Rl bGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFM VUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JykpOworU0VMRUNUIHRhYmxlb2lkOjpy ZWdjbGFzcywgKiBGUk9NIHNhbGVzX2xpc3QgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0 ZXh0IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsKKyAgIHRhYmxlb2lkICAgIHwgc2FsZXNw ZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgIHNhbGVzX3N0YXRlICAgfCBzYWxlc19hbW91 bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Cisgc2FsZXNfY2VudHJhbCB8ICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8IFdh cnNhdyAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDMtMDQtMjAyMgorIHNhbGVzX2NlbnRyYWwg fCAgICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCBCZXJsaW4gICAgICAgICB8ICAg ICAgICAgMTAwMCB8IDAzLTAxLTIwMjIKKyBzYWxlc19jZW50cmFsIHwgICAgICAgICAgICAgMTIg fCBTbWl0aCAgICAgICAgICAgIHwgS3lpdiAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0x MC0yMDIyCisgc2FsZXNfY2VudHJhbCB8ICAgICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAg ICB8IFdhcnNhdyAgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDMtMDgtMjAyMgorIHNhbGVzX2Vh c3QgICAgfCAgICAgICAgICAgICAgMSB8IFRydW1wICAgICAgICAgICAgfCBCZWppbmcgICAgICAg ICB8ICAgICAgICAgMTAwMCB8IDAzLTAxLTIwMjIKKyBzYWxlc19lYXN0ICAgIHwgICAgICAgICAg ICAgIDggfCBMaSAgICAgICAgICAgICAgIHwgVmxhZGl2b3N0b2sgICAgfCAgICAgICAgIDExNTAg fCAwMy0wOS0yMDIyCisgc2FsZXNfbm9yZCAgICB8ICAgICAgICAgICAgICAzIHwgRm9yZCAgICAg ICAgICAgICB8IFN0LiBQZXRlcnNidXJnIHwgICAgICAgICAyMDAwIHwgMDMtMDUtMjAyMgorIHNh bGVzX25vcmQgICAgfCAgICAgICAgICAgICAgNyB8IE1heSAgICAgICAgICAgICAgfCBPc2xvICAg ICAgICAgICB8ICAgICAgICAgMTIwMCB8IDAzLTA2LTIwMjIKKyBzYWxlc19ub3JkICAgIHwgICAg ICAgICAgICAgIDkgfCBNYXkgICAgICAgICAgICAgIHwgT3NsbyAgICAgICAgICAgfCAgICAgICAg IDEyMDAgfCAwMy0xMS0yMDIyCisgc2FsZXNfbm9yZCAgICB8ICAgICAgICAgICAgIDEwIHwgSGFs ZGVyICAgICAgICAgICB8IEhlbHNpbmtpICAgICAgIHwgICAgICAgICAgODAwIHwgMDMtMDItMjAy MgorIHNhbGVzX3dlc3QgICAgfCAgICAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCBO ZXcgWW9yayAgICAgICB8ICAgICAgICAgIDUwMCB8IDAzLTAzLTIwMjIKKyBzYWxlc193ZXN0ICAg IHwgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgTGlzYm9uICAgICAgICAgfCAg ICAgICAgICAyNTAgfCAwMy0wNy0yMDIyCisgc2FsZXNfd2VzdCAgICB8ICAgICAgICAgICAgIDEx IHwgTXVsbGVyICAgICAgICAgICB8IE1hZHJpZCAgICAgICAgIHwgICAgICAgICAgNjUwIHwgMDMt MDUtMjAyMgorIHNhbGVzX3dlc3QgICAgfCAgICAgICAgICAgICAxNCB8IFBsYXRvICAgICAgICAg ICAgfCBMaXNib24gICAgICAgICB8ICAgICAgICAgIDk1MCB8IDAzLTA1LTIwMjIKKygxNCByb3dz KQorCistLSBVc2UgaW5kZXhzY2FuIGZvciB0ZXN0aW5nIGluZGV4ZXMgYWZ0ZXIgc3BsaXR0aW5n IHBhcnRpdGlvbgorU0VUIGVuYWJsZV9zZXFzY2FuID0gT0ZGOworRVhQTEFJTiAoQ09TVFMgT0ZG KSBTRUxFQ1QgKiBGUk9NIHNhbGVzX2NlbnRyYWwgV0hFUkUgc2FsZXNfc3RhdGUgPSAnV2Fyc2F3 JzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEluZGV4IFNjYW4gdXNpbmcgc2FsZXNfY2VudHJhbF9z YWxlc19zdGF0ZV9pZHggb24gc2FsZXNfY2VudHJhbAorICAgSW5kZXggQ29uZDogKChzYWxlc19z dGF0ZSk6OnRleHQgPSAnV2Fyc2F3Jzo6dGV4dCkKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00g c2FsZXNfY2VudHJhbCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdXYXJzYXcnOworIHNhbGVzcGVyc29u X2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3N0YXRlIHwgc2FsZXNfYW1vdW50IHwgc2Fs ZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDQgfCBJdmFub3Yg ICAgICAgICAgIHwgV2Fyc2F3ICAgICAgfCAgICAgICAgICA3NTAgfCAwMy0wNC0yMDIyCisgICAg ICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgV2Fyc2F3ICAgICAgfCAgICAgICAgICAx NTAgfCAwMy0wOC0yMDIyCisoMiByb3dzKQorCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAq IEZST00gc2FsZXNfbGlzdCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdXYXJzYXcnOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEluZGV4IFNjYW4gdXNpbmcgc2FsZXNf Y2VudHJhbF9zYWxlc19zdGF0ZV9pZHggb24gc2FsZXNfY2VudHJhbCBzYWxlc19saXN0CisgICBJ bmRleCBDb25kOiAoKHNhbGVzX3N0YXRlKTo6dGV4dCA9ICdXYXJzYXcnOjp0ZXh0KQorKDIgcm93 cykKKworU0VMRUNUICogRlJPTSBzYWxlc19saXN0IFdIRVJFIHNhbGVzX3N0YXRlID0gJ1dhcnNh dyc7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfc3RhdGUgfCBz YWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAg ICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCBXYXJzYXcgICAgICB8ICAgICAgICAgIDc1MCB8 IDAzLTA0LTIwMjIKKyAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCBXYXJzYXcg ICAgICB8ICAgICAgICAgIDE1MCB8IDAzLTA4LTIwMjIKKygyIHJvd3MpCisKK0VYUExBSU4gKENP U1RTIE9GRikgU0VMRUNUICogRlJPTSBzYWxlc19saXN0IFdIRVJFIHNhbGVzcGVyc29uX25hbWUg PSAnSXZhbm92JzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFwcGVuZAorICAgLT4gIEluZGV4IFNjYW4gdXNpbmcg c2FsZXNfZWFzdF9zYWxlc3BlcnNvbl9uYW1lX2lkeCBvbiBzYWxlc19lYXN0IHNhbGVzX2xpc3Rf MQorICAgICAgICAgSW5kZXggQ29uZDogKChzYWxlc3BlcnNvbl9uYW1lKTo6dGV4dCA9ICdJdmFu b3YnOjp0ZXh0KQorICAgLT4gIEluZGV4IFNjYW4gdXNpbmcgc2FsZXNfY2VudHJhbF9zYWxlc3Bl cnNvbl9uYW1lX2lkeCBvbiBzYWxlc19jZW50cmFsIHNhbGVzX2xpc3RfMgorICAgICAgICAgSW5k ZXggQ29uZDogKChzYWxlc3BlcnNvbl9uYW1lKTo6dGV4dCA9ICdJdmFub3YnOjp0ZXh0KQorICAg LT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gc2FsZXNfbm9yZCBzYWxlc19saXN0XzMKKyAgICAgICAg IFJlY2hlY2sgQ29uZDogKChzYWxlc3BlcnNvbl9uYW1lKTo6dGV4dCA9ICdJdmFub3YnOjp0ZXh0 KQorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHNhbGVzX25vcmRfc2FsZXNwZXJz b25fbmFtZV9pZHgKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICgoc2FsZXNwZXJzb25fbmFt ZSk6OnRleHQgPSAnSXZhbm92Jzo6dGV4dCkKKyAgIC0+ICBJbmRleCBTY2FuIHVzaW5nIHNhbGVz X3dlc3Rfc2FsZXNwZXJzb25fbmFtZV9pZHggb24gc2FsZXNfd2VzdCBzYWxlc19saXN0XzQKKyAg ICAgICAgIEluZGV4IENvbmQ6ICgoc2FsZXNwZXJzb25fbmFtZSk6OnRleHQgPSAnSXZhbm92Jzo6 dGV4dCkKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHNhbGVzX290aGVycyBzYWxlc19saXN0 XzUKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKChzYWxlc3BlcnNvbl9uYW1lKTo6dGV4dCA9ICdJ dmFub3YnOjp0ZXh0KQorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHNhbGVzX290 aGVyc19zYWxlc3BlcnNvbl9uYW1lX2lkeAorICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKChz YWxlc3BlcnNvbl9uYW1lKTo6dGV4dCA9ICdJdmFub3YnOjp0ZXh0KQorKDE1IHJvd3MpCisKK1NF TEVDVCAqIEZST00gc2FsZXNfbGlzdCBXSEVSRSBzYWxlc3BlcnNvbl9uYW1lID0gJ0l2YW5vdic7 Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfc3RhdGUgfCBzYWxl c19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAg ICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCBXYXJzYXcgICAgICB8ICAgICAgICAgIDc1MCB8IDAz LTA0LTIwMjIKKygxIHJvdykKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitEUk9QIFRBQkxFIHNh bGVzX2xpc3Q7CistLQorLS0gVGVzdCBmb3I6CistLSAgICogc3BsaXQgREVGQVVMVCBwYXJ0aXRp b24gdG8gcGFydGl0aW9ucyB3aXRoIHNwYWNlcyBiZXR3ZWVuIGJvdW5kczsKKy0tICAgKiByYW5k b20gb3JkZXIgb2YgcGFydGl0aW9ucyBpbiBTUExJVCBQQVJUSVRJT04gY29tbWFuZC4KKy0tCitD UkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25f bmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJU SVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQ QVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jhbmdl IFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAg J1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMDknKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAw LCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyks CisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90 JywgICAxNTAsICAnMjAyMi0wMi0wNycpLAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIy LTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDks ICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1 MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYn KSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5k aScsICAgIDM3NywgICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIw MjItMDUtMDQnKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxl c19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxULAorICAgUEFS VElUSU9OIHNhbGVzX21hcjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAx JykgVE8gKCcyMDIyLTAzLTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNfamFuMjAyMl8xZGVjYWRl IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDEtMTAnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19mZWIyMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0w MScpIFRPICgnMjAyMi0wMi0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjJfMWRlY2Fk ZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0LTEwJykpOworU0VM RUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX3JhbmdlIE9SREVSIEJZIHRhYmxl b2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNwZXJzb25faWQ7CisgICAgICAg dGFibGVvaWQgICAgICAgIHwgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2Fs ZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQor IHNhbGVzX2FwcjIwMjJfMWRlY2FkZSB8ICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAg ICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyBzYWxlc19hcHIyMDIyXzFkZWNhZGUgfCAg ICAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0y MDIyCisgc2FsZXNfZmViMjAyMl8xZGVjYWRlIHwgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAg ICAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMDktMjAyMgorIHNhbGVzX2ZlYjIwMjJfMWRlY2Fk ZSB8ICAgICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAy LTA3LTIwMjIKKyBzYWxlc19qYW4yMDIyXzFkZWNhZGUgfCAgICAgICAgICAgICAxMyB8IEdhbmRp ICAgICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisgc2FsZXNfbWFyMjAyMl8x ZGVjYWRlIHwgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwgICAgICAgICAgMTc1 IHwgMDMtMDgtMjAyMgorIHNhbGVzX290aGVycyAgICAgICAgICB8ICAgICAgICAgICAgICAxIHwg TWF5ICAgICAgICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAxLTMxLTIwMjIKKyBzYWxlc19vdGhl cnMgICAgICAgICAgfCAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAg IDIwMDAgfCAwNC0zMC0yMDIyCisgc2FsZXNfb3RoZXJzICAgICAgICAgIHwgICAgICAgICAgICAg IDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorIHNhbGVz X290aGVycyAgICAgICAgICB8ICAgICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAg ICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyBzYWxlc19vdGhlcnMgICAgICAgICAgfCAgICAgICAg ICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisg c2FsZXNfb3RoZXJzICAgICAgICAgIHwgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAg IHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgorIHNhbGVzX290aGVycyAgICAgICAgICB8ICAg ICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIw MjIKKyBzYWxlc19vdGhlcnMgICAgICAgICAgfCAgICAgICAgICAgICAxNCB8IFNtaXRoICAgICAg ICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoMTQgcm93cykKKworRFJPUCBUQUJM RSBzYWxlc19yYW5nZTsKKy0tCistLSBUZXN0IGZvcjoKKy0tICAgKiBzcGxpdCBub24tREVGQVVM VCBwYXJ0aXRpb24gdG8gcGFydGl0aW9ucyB3aXRoIHNwYWNlcyBiZXR3ZWVuIGJvdW5kczsKKy0t ICAgKiByYW5kb20gb3JkZXIgb2YgcGFydGl0aW9ucyBpbiBTUExJVCBQQVJUSVRJT04gY29tbWFu ZC4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2Fs ZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBE QVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVz X2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0w MScpIFRPICgnMjAyMi0wNS0wMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisg ICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYn LCA1MDAsICAnMjAyMi0wMi0wOScpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0 LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAn RGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwg ICcyMDIyLTAyLTA3JyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwK KyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXIn LCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjIt MDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIs ICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3 LCAgJzIwMjItMDEtMDknKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElP TiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX21hcjIwMjJfMWRlY2FkZSBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTAzLTEwJyksCisgICBQQVJUSVRJ T04gc2FsZXNfamFuMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBU TyAoJzIwMjItMDEtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyXzFkZWNhZGUgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMi0xMCcpLAorICAgUEFSVElU SU9OIHNhbGVzX2FwcjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykg VE8gKCcyMDIyLTA0LTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOwor U0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX3JhbmdlIE9SREVSIEJZIHRh Ymxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNwZXJzb25faWQ7CisgICAg ICAgdGFibGVvaWQgICAgICAgIHwgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwg c2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LQorIHNhbGVzX2FwcjIwMjJfMWRlY2FkZSB8ICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAg ICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyBzYWxlc19hcHIyMDIyXzFkZWNhZGUg fCAgICAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0w Ni0yMDIyCisgc2FsZXNfZmViMjAyMl8xZGVjYWRlIHwgICAgICAgICAgICAgIDIgfCBTbWlybm9m ZiAgICAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMDktMjAyMgorIHNhbGVzX2ZlYjIwMjJfMWRl Y2FkZSB8ICAgICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICAgICB8ICAgICAgICAgIDE1MCB8 IDAyLTA3LTIwMjIKKyBzYWxlc19qYW4yMDIyXzFkZWNhZGUgfCAgICAgICAgICAgICAxMyB8IEdh bmRpICAgICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisgc2FsZXNfbWFyMjAy Ml8xZGVjYWRlIHwgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwgICAgICAgICAg MTc1IHwgMDMtMDgtMjAyMgorIHNhbGVzX290aGVycyAgICAgICAgICB8ICAgICAgICAgICAgICAx IHwgTWF5ICAgICAgICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAxLTMxLTIwMjIKKyBzYWxlc19v dGhlcnMgICAgICAgICAgfCAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAg ICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgc2FsZXNfb3RoZXJzICAgICAgICAgIHwgICAgICAgICAg ICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorIHNh bGVzX290aGVycyAgICAgICAgICB8ICAgICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8 ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyBzYWxlc19vdGhlcnMgICAgICAgICAgfCAgICAg ICAgICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIy Cisgc2FsZXNfb3RoZXJzICAgICAgICAgIHwgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAg ICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgorIHNhbGVzX290aGVycyAgICAgICAgICB8 ICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5 LTIwMjIKKygxMyByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworLS0KKy0tIFRlc3Qg Zm9yIHNwbGl0IG5vbi1ERUZBVUxUIHBhcnRpdGlvbiB0byBERUZBVUxUIHBhcnRpdGlvbiArIHBh cnRpdGlvbnMKKy0tIHdpdGggc3BhY2VzIGJldHdlZW4gYm91bmRzLgorLS0KK0NSRUFURSBUQUJM RSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNI QVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBS QU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04g T0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0w Mi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2Ug Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wNS0wMScpOworSU5TRVJU IElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjIt MDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpLAorICAoMywg ICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUw LCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycp LAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyksCisgICg3LCAgJ0xpJywg ICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAy Mi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgx MCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAz ODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5 JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKTsKK0FMVEVSIFRBQkxF IHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9O IHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0w NS0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBE RUZBVUxUKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTQsICdTbWl0aCcsICAg IDUxMCwgICcyMDIyLTA1LTA0Jyk7CitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00g c2FsZXNfcmFuZ2UgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMi LCBzYWxlc3BlcnNvbl9pZDsKKyAgIHRhYmxlb2lkICAgIHwgc2FsZXNwZXJzb25faWQgfCBzYWxl c3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0KKyBzYWxlc19hcHIyMDIyIHwgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAg ICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorIHNhbGVzX2FwcjIwMjIgfCAgICAgICAg ICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisg c2FsZXNfYXByMjAyMiB8ICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAgICB8ICAgICAg ICAgIDI1MCB8IDA0LTA3LTIwMjIKKyBzYWxlc19hcHIyMDIyIHwgICAgICAgICAgICAgMTEgfCBU cnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorIHNhbGVzX2ZlYjIw MjIgfCAgICAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCAgICAgICAgICA1MDAgfCAw Mi0xMC0yMDIyCisgc2FsZXNfZmViMjAyMiB8ICAgICAgICAgICAgICA2IHwgUG9pcm90ICAgICAg ICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIKKyBzYWxlc19mZWIyMDIyIHwgICAgICAg ICAgICAgIDggfCBFcmljc3NvbiAgICAgICAgIHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgor IHNhbGVzX2phbjIwMjIgfCAgICAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAgICAgfCAgICAg ICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgc2FsZXNfamFuMjAyMiB8ICAgICAgICAgICAgIDEwIHwg SGFsZGVyICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKKyBzYWxlc19qYW4y MDIyIHwgICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgICAgICAgICAgMzc3IHwg MDEtMDktMjAyMgorIHNhbGVzX290aGVycyAgfCAgICAgICAgICAgICAgNyB8IExpICAgICAgICAg ICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgc2FsZXNfb3RoZXJzICB8ICAgICAg ICAgICAgICA5IHwgTXVsbGVyICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIK KyBzYWxlc19vdGhlcnMgIHwgICAgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAgICAgIHwgICAg ICAgICAgMzUwIHwgMDMtMTktMjAyMgorIHNhbGVzX290aGVycyAgfCAgICAgICAgICAgICAxNCB8 IFNtaXRoICAgICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoMTQgcm93cykK KworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKy0tCistLSBUcnkgdG8gU1BMSVQgcGFydGl0aW9u IG9mIGFub3RoZXIgdGFibGUuCistLQorQ1JFQVRFIFRBQkxFIHQxKGkgaW50LCB0IHRleHQpIFBB UlRJVElPTiBCWSBMSVNUICh0KTsKK0NSRUFURSBUQUJMRSB0MXBhIFBBUlRJVElPTiBPRiB0MSBG T1IgVkFMVUVTIElOICgnQScpOworQ1JFQVRFIFRBQkxFIHQyIChpIGludCwgdCB0ZXh0KSBQQVJU SVRJT04gQlkgUkFOR0UgKHQpOworLS0gRVJST1I6ICByZWxhdGlvbiAidDFwYSIgaXMgbm90IGEg cGFydGl0aW9uIG9mIHJlbGF0aW9uICJ0MiIKK0FMVEVSIFRBQkxFIHQyIFNQTElUIFBBUlRJVElP TiB0MXBhIElOVE8KKyAgIChQQVJUSVRJT04gdDJhIEZPUiBWQUxVRVMgRlJPTSAoJ0EnKSBUTyAo J0InKSwKKyAgICBQQVJUSVRJT04gdDJiIEZPUiBWQUxVRVMgRlJPTSAoJ0InKSBUTyAoJ0MnKSk7 CitFUlJPUjogIHJlbGF0aW9uICJ0MXBhIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcmVsYXRpb24g InQyIgorSElOVDogIEFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT04gY2FuIG9ubHkgc3Bs aXQgcGFydGl0aW9ucyBkb24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25zCitEUk9QIFRBQkxFIHQyOwor RFJPUCBUQUJMRSB0MTsKKy0tCistLSBUcnkgdG8gU1BMSVQgcGFydGl0aW9uIG9mIHRlbXBvcmFy eSB0YWJsZS4KKy0tCitDUkVBVEUgVEVNUCBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJB TkdFIChpKTsKK0NSRUFURSBURU1QIFRBQkxFIHRwXzBfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFM VUVTIEZST00gKDApIFRPICgyKTsKK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywg cGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpLCBjLnJlbHBlcnNp c3RlbmNlCisgIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVy aXRzIGkKKyAgV0hFUkUgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICd0Jzo6 cmVnY2xhc3MKKyAgT1JERVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3Vu ZCwgYy5vaWQpID0gJ0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0 YWxvZy50ZXh0IENPTExBVEUgIkMiOworICBvaWQgICB8ICAgICAgICBwZ19nZXRfZXhwciAgICAg ICAgIHwgcmVscGVyc2lzdGVuY2UgCistLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0KKyB0cF8wXzIgfCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgy KSB8IHQKKygxIHJvdykKKworLS0gRVJST1I6ICBjYW5ub3QgY3JlYXRlIGEgcGVybWFuZW50IHJl bGF0aW9uIGFzIHBhcnRpdGlvbiBvZiB0ZW1wb3JhcnkgcmVsYXRpb24gInQiCitBTFRFUiBUQUJM RSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBGT1Ig VkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBG Uk9NICgxKSBUTyAoMikpOworRVJST1I6ICBjYW5ub3QgY3JlYXRlIGEgcGVybWFuZW50IHJlbGF0 aW9uIGFzIHBhcnRpdGlvbiBvZiB0ZW1wb3JhcnkgcmVsYXRpb24gInQiCitBTFRFUiBUQUJMRSB0 IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHBnX3RlbXAudHBfMF8x IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHBnX3RlbXAudHBfMV8y IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsKKy0tIFBhcnRpdGlvbnMgc2hvdWxkIGJlIHRl bXBvcmFyeS4KK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgcGdfY2F0YWxvZy5w Z19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpLCBjLnJlbHBlcnNpc3RlbmNlCisgIEZS T00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKKyAgV0hF UkUgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICd0Jzo6cmVnY2xhc3MKKyAg T1JERVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0g J0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0IENP TExBVEUgIkMiOworICBvaWQgICB8ICAgICAgICBwZ19nZXRfZXhwciAgICAgICAgIHwgcmVscGVy c2lzdGVuY2UgCistLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0KKyB0cF8wXzEgfCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSB8IHQKKyB0cF8x XzIgfCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSB8IHQKKygyIHJvd3MpCisKK0RST1AgVEFC TEUgdDsKKy0tIENoZWNrIHRoZSBuZXcgcGFydGl0aW9ucyBpbmhlcml0IHBhcmVudCdzIHRhYmxl c3BhY2UKK0NSRUFURSBUQUJMRSB0IChpIGludCBQUklNQVJZIEtFWSBVU0lORyBJTkRFWCBUQUJM RVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UpCisgIFBBUlRJVElPTiBCWSBSQU5HRSAoaSkgVEFCTEVT UEFDRSByZWdyZXNzX3RibHNwYWNlOworQ1JFQVRFIFRBQkxFIHRwXzBfMiBQQVJUSVRJT04gT0Yg dCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElU SU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkg VE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7 CitTRUxFQ1QgdGFibGVuYW1lLCB0YWJsZXNwYWNlIEZST00gcGdfdGFibGVzCisgIFdIRVJFIHRh YmxlbmFtZSBJTiAoJ3QnLCAndHBfMF8xJywgJ3RwXzFfMicpIEFORCBzY2hlbWFuYW1lID0gJ3Bh cnRpdGlvbl9zcGxpdF9zY2hlbWEnCisgIE9SREVSIEJZIHRhYmxlbmFtZSBDT0xMQVRFICJDIiwg dGFibGVzcGFjZSBDT0xMQVRFICJDIjsKKyB0YWJsZW5hbWUgfCAgICB0YWJsZXNwYWNlICAgIAor LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgdCAgICAgICAgIHwgcmVncmVzc190Ymxz cGFjZQorIHRwXzBfMSAgICB8IHJlZ3Jlc3NfdGJsc3BhY2UKKyB0cF8xXzIgICAgfCByZWdyZXNz X3RibHNwYWNlCisoMyByb3dzKQorCitTRUxFQ1QgdGFibGVuYW1lLCBpbmRleG5hbWUsIHRhYmxl c3BhY2UgRlJPTSBwZ19pbmRleGVzCisgIFdIRVJFIHRhYmxlbmFtZSBJTiAoJ3QnLCAndHBfMF8x JywgJ3RwXzFfMicpIEFORCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnCisg IE9SREVSIEJZIHRhYmxlbmFtZSBDT0xMQVRFICJDIiwgaW5kZXhuYW1lIENPTExBVEUgIkMiLCB0 YWJsZXNwYWNlIENPTExBVEUgIkMiOworIHRhYmxlbmFtZSB8ICBpbmRleG5hbWUgIHwgICAgdGFi bGVzcGFjZSAgICAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t CisgdCAgICAgICAgIHwgdF9wa2V5ICAgICAgfCByZWdyZXNzX3RibHNwYWNlCisgdHBfMF8xICAg IHwgdHBfMF8xX3BrZXkgfCByZWdyZXNzX3RibHNwYWNlCisgdHBfMV8yICAgIHwgdHBfMV8yX3Br ZXkgfCByZWdyZXNzX3RibHNwYWNlCisoMyByb3dzKQorCitEUk9QIFRBQkxFIHQ7CistLSBDaGVj ayBuZXcgcGFydGl0aW9ucyBpbmhlcml0cyBwYXJlbnQncyB0YWJsZSBhY2Nlc3MgbWV0aG9kCitD UkVBVEUgQUNDRVNTIE1FVEhPRCBwYXJ0aXRpb25fc3BsaXRfaGVhcCBUWVBFIFRBQkxFIEhBTkRM RVIgaGVhcF90YWJsZWFtX2hhbmRsZXI7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElP TiBCWSBSQU5HRSAoaSkgVVNJTkcgcGFydGl0aW9uX3NwbGl0X2hlYXA7CitDUkVBVEUgVEFCTEUg dHBfMF8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworQUxURVIg VEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEg Rk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxV RVMgRlJPTSAoMSkgVE8gKDIpKTsKK1NFTEVDVCBjLnJlbG5hbWUsIGEuYW1uYW1lCitGUk9NIHBn X2NsYXNzIGMgSk9JTiBwZ19hbSBhIE9OIGMucmVsYW0gPSBhLm9pZAorV0hFUkUgYy5vaWQgSU4g KCd0Jzo6cmVnY2xhc3MsICd0cF8wXzEnOjpyZWdjbGFzcywgJ3RwXzFfMic6OnJlZ2NsYXNzKQor T1JERVIgQlkgYy5yZWxuYW1lIENPTExBVEUgIkMiOworIHJlbG5hbWUgfCAgICAgICAgYW1uYW1l ICAgICAgICAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdCAgICAgICB8IHBh cnRpdGlvbl9zcGxpdF9oZWFwCisgdHBfMF8xICB8IHBhcnRpdGlvbl9zcGxpdF9oZWFwCisgdHBf MV8yICB8IHBhcnRpdGlvbl9zcGxpdF9oZWFwCisoMyByb3dzKQorCitEUk9QIFRBQkxFIHQ7CitE Uk9QIEFDQ0VTUyBNRVRIT0QgcGFydGl0aW9uX3NwbGl0X2hlYXA7CistLSBTcGxpdCBwYXJ0aXRp b24gb2YgYSB0ZW1wb3JhcnkgdGFibGUgd2hlbiBvbmUgb2YgdGhlIHBhcnRpdGlvbnMgYWZ0ZXIK Ky0tIHNwbGl0IGhhcyB0aGUgc2FtZSBuYW1lIGFzIHRoZSBwYXJ0aXRpb24gYmVpbmcgc3BsaXQK K0NSRUFURSBURU1QIFRBQkxFIHQgKGEgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGEpOworQ1JF QVRFIFRFTVAgVEFCTEUgdHBfMCBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRP ICgyKTsKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzAgSU5UTworICAoUEFSVElU SU9OIHBnX3RlbXAudHBfMCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElP TiBwZ190ZW1wLnRwXzEgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworRFJPUCBUQUJMRSB0 OworLS0gQ2hlY2sgZGVmYXVsdHMgYW5kIGNvbnN0cmFpbnRzIG9mIG5ldyBwYXJ0aXRpb25zCitD UkVBVEUgVEFCTEUgdF9iaWdpbnQgKAorICBiIGJpZ2ludCwKKyAgaSBpbnQgREVGQVVMVCAoMysx MCksCisgIGogaW50IERFRkFVTFQgMTAxLAorICBrIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChi KzEwKSBTVE9SRUQKKykKK1BBUlRJVElPTiBCWSBSQU5HRSAoYik7CitDUkVBVEUgVEFCTEUgdF9i aWdpbnRfZGVmYXVsdCBQQVJUSVRJT04gT0YgdF9iaWdpbnQgREVGQVVMVDsKKy0tIFNob3cgZGVm YXVsdHMvY29uc3RyYWludHMgYmVmb3JlIFNQTElUIFBBUlRJVElPTgorXGQrIHRfYmlnaW50Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFydGl0aW9uZWQgdGFibGUgInBhcnRp dGlvbl9zcGxpdF9zY2hlbWEudF9iaWdpbnQiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlv biB8IE51bGxhYmxlIHwgICAgICAgICAgICAgICAgRGVmYXVsdCAgICAgICAgICAgICAgICB8IFN0 b3JhZ2UgfCBTdGF0cyB0YXJnZXQgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIGIgICAgICB8IGJp Z2ludCAgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCisgaSAgICAgIHwgaW50ZWdl ciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgMyArIDEwICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBqICAgICAgfCBpbnRlZ2VyIHwg ICAgICAgICAgIHwgICAgICAgICAgfCAxMDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorIGsgICAgICB8IGludGVnZXIgfCAgICAg ICAgICAgfCAgICAgICAgICB8IGdlbmVyYXRlZCBhbHdheXMgYXMgKChiICsgMTApKSBzdG9yZWQg fCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCitQYXJ0aXRpb24ga2V5OiBSQU5HRSAoYikKK1Bh cnRpdGlvbnM6IHRfYmlnaW50X2RlZmF1bHQgREVGQVVMVAorCitcZCsgdF9iaWdpbnRfZGVmYXVs dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFibGUgInBhcnRpdGlvbl9z cGxpdF9zY2hlbWEudF9iaWdpbnRfZGVmYXVsdCIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0 aW9uIHwgTnVsbGFibGUgfCAgICAgICAgICAgICAgICBEZWZhdWx0ICAgICAgICAgICAgICAgIHwg U3RvcmFnZSB8IFN0YXRzIHRhcmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgYiAgICAgIHwg YmlnaW50ICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBpICAgICAgfCBpbnRl Z2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAzICsgMTAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorIGogICAgICB8IGludGVnZXIg fCAgICAgICAgICAgfCAgICAgICAgICB8IDEwMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCisgayAgICAgIHwgaW50ZWdlciB8ICAg ICAgICAgICB8ICAgICAgICAgIHwgZ2VuZXJhdGVkIGFsd2F5cyBhcyAoKGIgKyAxMCkpIHN0b3Jl ZCB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKK1BhcnRpdGlvbiBvZjogdF9iaWdpbnQgREVG QVVMVAorTm8gcGFydGl0aW9uIGNvbnN0cmFpbnQKKworQUxURVIgVEFCTEUgdF9iaWdpbnQgU1BM SVQgUEFSVElUSU9OIHRfYmlnaW50X2RlZmF1bHQgSU5UTworICAoUEFSVElUSU9OIHRfYmlnaW50 XzAxXzEwIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEwKSwKKyAgIFBBUlRJVElPTiB0X2JpZ2lu dF9kZWZhdWx0IERFRkFVTFQpOworLS0gU2hvdyBkZWZhdWx0cy9jb25zdHJhaW50cyBhZnRlciBT UExJVCBQQVJUSVRJT04KK1xkKyB0X2JpZ2ludF9kZWZhdWx0CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBUYWJsZSAicGFydGl0aW9uX3NwbGl0X3NjaGVtYS50X2JpZ2ludF9k ZWZhdWx0IgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8ICAgICAg ICAgICAgICAgIERlZmF1bHQgICAgICAgICAgICAgICAgfCBTdG9yYWdlIHwgU3RhdHMgdGFyZ2V0 IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBiICAgICAgfCBiaWdpbnQgIHwgICAgICAgICAgIHwg ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4g ICB8ICAgICAgICAgICAgICB8IAorIGkgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAg ICAgICB8IDMgKyAxMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgIHwg ICAgICAgICAgICAgIHwgCisgaiAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAg IHwgMTAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWluICAgfCAgICAg ICAgICAgICAgfCAKKyBrICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCBn ZW5lcmF0ZWQgYWx3YXlzIGFzICgoYiArIDEwKSkgc3RvcmVkIHwgcGxhaW4gICB8ICAgICAgICAg ICAgICB8IAorUGFydGl0aW9uIG9mOiB0X2JpZ2ludCBERUZBVUxUCitQYXJ0aXRpb24gY29uc3Ry YWludDogKE5PVCAoKGIgSVMgTk9UIE5VTEwpIEFORCAoKGIgPj0gJzAnOjpiaWdpbnQpIEFORCAo YiA8ICcxMCc6OmJpZ2ludCkpKSkKKworXGQrIHRfYmlnaW50XzAxXzEwCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgVGFibGUgInBhcnRpdGlvbl9zcGxpdF9zY2hlbWEudF9i aWdpbnRfMDFfMTAiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwg ICAgICAgICAgICAgICAgRGVmYXVsdCAgICAgICAgICAgICAgICB8IFN0b3JhZ2UgfCBTdGF0cyB0 YXJnZXQgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIGIgICAgICB8IGJpZ2ludCAgfCAgICAgICAg ICAgfCAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBw bGFpbiAgIHwgICAgICAgICAgICAgIHwgCisgaSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8 ICAgICAgICAgIHwgMyArIDEwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWlu ICAgfCAgICAgICAgICAgICAgfCAKKyBqICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAg ICAgICAgfCAxMDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICB8 ICAgICAgICAgICAgICB8IAorIGsgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAg ICB8IGdlbmVyYXRlZCBhbHdheXMgYXMgKChiICsgMTApKSBzdG9yZWQgfCBwbGFpbiAgIHwgICAg ICAgICAgICAgIHwgCitQYXJ0aXRpb24gb2Y6IHRfYmlnaW50IEZPUiBWQUxVRVMgRlJPTSAoJzAn KSBUTyAoJzEwJykKK1BhcnRpdGlvbiBjb25zdHJhaW50OiAoKGIgSVMgTk9UIE5VTEwpIEFORCAo YiA+PSAnMCc6OmJpZ2ludCkgQU5EIChiIDwgJzEwJzo6YmlnaW50KSkKKworRFJPUCBUQUJMRSB0 X2JpZ2ludDsKKy0tIFRlc3QgcGVybWlzc2lvbiBjaGVja3MuICBUaGUgdXNlciBuZWVkcyB0byBv d24gdGhlIHBhcmVudCB0YWJsZSBhbmQgdGhlCistLSB0aGUgcGFydGl0aW9uIHRvIHNwbGl0IHRv IGRvIHRoZSBzcGxpdC4KK0NSRUFURSBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNl OworQ1JFQVRFIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOworR1JBTlQgQUxMIE9O IFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0 X2FsaWNlOworR1JBTlQgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIFRPIHJl Z3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVn cmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJ VElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8yIFBBUlRJVElPTiBPRiB0IEZP UiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdy ZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0 cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgx KSwKKyAgIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOyAtLWVy cm9yCitFUlJPUjogIG11c3QgYmUgb3duZXIgb2YgdGFibGUgdAorUkVTRVQgU0VTU0lPTiBBVVRI T1JJWkFUSU9OOworQUxURVIgVEFCTEUgdCBPV05FUiBUTyByZWdyZXNzX3BhcnRpdGlvbl9zcGxp dF9ib2I7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0 X2JvYjsKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJU SVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRw XzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7IC0tZXJyb3IKK0VSUk9SOiAgbXVzdCBi ZSBvd25lciBvZiB0YWJsZSB0cF8wXzIKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKK0FM VEVSIFRBQkxFIHRwXzBfMiBPV05FUiBUTyByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CitT RVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK0FM VEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBf MF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1Ig VkFMVUVTIEZST00gKDEpIFRPICgyKSk7IC0tb2sKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElP TjsKK0RST1AgVEFCTEUgdDsKKy0tIFRlc3Q6IG93bmVyIG9mIG5ldyBwYXJ0aXRpb25zIHNob3Vs ZCBiZSB0aGUgc2FtZSBhcyBvd25lciBvZiBzcGxpdCBwYXJ0aXRpb24KK0NSRUFURSBUQUJMRSB0 IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJ T04gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitDUkVBVEUgVEFCTEUgdHBfMF8yKGkg aW50KTsKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKK0FMVEVSIFRBQkxFIHQgQVRUQUNI IFBBUlRJVElPTiB0cF8wXzIgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMik7CistLSBPd25lciBp cyAncmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2UnOgorXGR0IHRwXzBfMgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHRhYmxlcworICAgICAgICAgU2NoZW1hICAgICAg ICAgfCAgTmFtZSAgfCBUeXBlICB8ICAgICAgICAgICAgIE93bmVyICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgfCB0cF8wXzIgfCB0YWJsZSB8 IHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlCisoMSByb3cpCisKK0FMVEVSIFRBQkxFIHQg U1BMSVQgUEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxV RVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00g KDEpIFRPICgyKSk7CistLSBPd25lciBzaG91bGQgYmUgJ3JlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0 X2FsaWNlJzoKK1xkdCB0cF8wXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBv ZiB0YWJsZXMKKyAgICAgICAgIFNjaGVtYSAgICAgICAgIHwgIE5hbWUgIHwgVHlwZSAgfCAgICAg ICAgICAgICBPd25lciAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25f c3BsaXRfc2NoZW1hIHwgdHBfMF8xIHwgdGFibGUgfCByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9h bGljZQorKDEgcm93KQorCitcZHQgdHBfMV8yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg IExpc3Qgb2YgdGFibGVzCisgICAgICAgICBTY2hlbWEgICAgICAgICB8ICBOYW1lICB8IFR5cGUg IHwgICAgICAgICAgICAgT3duZXIgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGFy dGl0aW9uX3NwbGl0X3NjaGVtYSB8IHRwXzFfMiB8IHRhYmxlIHwgcmVncmVzc19wYXJ0aXRpb25f c3BsaXRfYWxpY2UKKygxIHJvdykKKworRFJPUCBUQUJMRSB0OworLS0gVGVzdDogaW5kZXggb2Yg bmV3IHBhcnRpdGlvbnMgc2hvdWxkIGJlIGNyZWF0ZWQgd2l0aCBzYW1lIG93bmVyIGFzIHNwbGl0 CistLSBwYXJ0aXRpb24KK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRp b25fc3BsaXRfYWxpY2U7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5H RSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMTBfMjAgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBG Uk9NICgxMCkgVE8gKDIwKTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgxMSksICgxNik7CitDUkVB VEUgT1IgUkVQTEFDRSBGVU5DVElPTiBydW5fbWUoaW50ZWdlcikgUkVUVVJOUyBpbnRlZ2VyIEFT ICQkCitCRUdJTgorICBSQUlTRSBOT1RJQ0UgJ3lvdSBhcmUgcnVubmluZyBtZSBhcyAlJywgQ1VS UkVOVF9VU0VSOworICBSRVRVUk4gJDE7CitFTkQKKyQkIExBTkdVQUdFIFBMUEdTUUwgSU1NVVRB QkxFOworLS0gT3duZXIgaXMgJ3JlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlJzoKK0NSRUFU RSBJTkRFWCBPTiB0IChydW5fbWUoaSkpOworTk9USUNFOiAgeW91IGFyZSBydW5uaW5nIG1lIGFz IHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlCitOT1RJQ0U6ICB5b3UgYXJlIHJ1bm5pbmcg bWUgYXMgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2UKK1JFU0VUIFNFU1NJT04gQVVUSE9S SVpBVElPTjsKKy0tIE93bmVyIHNob3VsZCBiZSAncmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxp Y2UnOgorQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMTBfMjAgSU5UTworICAoUEFS VElUSU9OIHRwXzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSksCisgICBQQVJUSVRJ T04gdHBfMTVfMjAgRk9SIFZBTFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7CitOT1RJQ0U6ICB5b3Ug YXJlIHJ1bm5pbmcgbWUgYXMgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2UKK05PVElDRTog IHlvdSBhcmUgcnVubmluZyBtZSBhcyByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZQorRFJP UCBUQUJMRSB0OworRFJPUCBGVU5DVElPTiBydW5fbWUoaW50ZWdlcik7CitSRVZPS0UgQUxMIE9O IFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIEZST00gcmVncmVzc19wYXJ0aXRpb25fc3Bs aXRfYWxpY2U7CitSRVZPS0UgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIEZS T00gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOworRFJPUCBST0xFIHJlZ3Jlc3NfcGFydGl0 aW9uX3NwbGl0X2FsaWNlOworRFJPUCBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsK Ky0tIFRlc3QgZm9yIGhhc2ggcGFydGl0aW9uZWQgdGFibGUKK0NSRUFURSBUQUJMRSB0IChpIGlu dCkgUEFSVElUSU9OIEJZIEhBU0goaSk7CitDUkVBVEUgVEFCTEUgdHAxIFBBUlRJVElPTiBPRiB0 IEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxVUyAyLCBSRU1BSU5ERVIgMCk7CitDUkVBVEUgVEFCTEUg dHAyIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxVUyAyLCBSRU1BSU5ERVIg MSk7CistLSBFUlJPUjogIHBhcnRpdGlvbiBvZiBoYXNoLXBhcnRpdGlvbmVkIHRhYmxlIGNhbm5v dCBiZSBzcGxpdAorQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHAxIElOVE8KKyAgKFBB UlRJVElPTiB0cDFfMSBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgNCwgUkVNQUlOREVSIDApLAor ICAgUEFSVElUSU9OIHRwMV8yIEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxVUyA0LCBSRU1BSU5ERVIg MikpOworRVJST1I6ICBwYXJ0aXRpb24gb2YgaGFzaC1wYXJ0aXRpb25lZCB0YWJsZSBjYW5ub3Qg YmUgc3BsaXQKKy0tIEVSUk9SOiAgbGlzdCBvZiBuZXcgcGFydGl0aW9ucyBzaG91bGQgY29udGFp biBhdCBsZWFzdCB0d28gcGFydGl0aW9ucworQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04g dHAxIElOVE8KKyAgKFBBUlRJVElPTiB0cDFfMSBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgNCwg UkVNQUlOREVSIDApKTsKK0VSUk9SOiAgbGlzdCBvZiBuZXcgcGFydGl0aW9ucyBzaG91bGQgY29u dGFpbiBhdCBsZWFzdCB0d28gcGFydGl0aW9ucworRFJPUCBUQUJMRSB0OworLS0gVGVzdCBmb3Ig c3BsaXQgcGFydGl0aW9uIHByb3BlcnRpZXM6CistLSAqIFNUQVRJU1RJQ1MgaXMgZW1wdHkKKy0t ICogQ09NTUVOVCBpcyBlbXB0eQorLS0gKiBERUZBVUxUUyBhcmUgdGhlIHNhbWUgYXMgREVGQVVM VFMgZm9yIHBhcnRpdGlvbmVkIHRhYmxlCistLSAqIFNUT1JBR0UgaXMgdGhlIHNhbWUgYXMgU1RP UkFHRSBmb3IgcGFydGl0aW9uZWQgdGFibGUKKy0tICogR0VORVJBVEVEIGFuZCBDT05TVFJBSU5U UyBhcmUgdGhlIHNhbWUgYXMgR0VORVJBVEVEIGFuZCBDT05TVFJBSU5UUyBmb3IgcGFydGl0aW9u ZWQgdGFibGUKKy0tICogVFJJR0dFUlMgYXJlIHRoZSBzYW1lIGFzIFRSSUdHRVJTIGZvciBwYXJ0 aXRpb25lZCB0YWJsZQorQ1JFQVRFIFRBQkxFIHQKKyhpIGludCBOT1QgTlVMTCwKKyB0IHRleHQg U1RPUkFHRSBFWFRFTkRFRCBDT01QUkVTU0lPTiBwZ2x6IERFRkFVTFQgJ2RlZmF1bHRfdCcsCisg YiBiaWdpbnQsCisgZCBkYXRlIEdFTkVSQVRFRCBBTFdBWVMgYXMgKCcyMDIyLTAxLTAxJykgU1RP UkVEKSBQQVJUSVRJT04gQlkgUkFOR0UgKGFicyhpKSk7CitDT01NRU5UIE9OIENPTFVNTiB0Lmkg SVMgJ3QxLmknOworQ1JFQVRFIFRBQkxFIHRwX3gKKyhpIGludCBOT1QgTlVMTCwKKyB0IHRleHQg U1RPUkFHRSBNQUlOIERFRkFVTFQgJ2RlZmF1bHRfdHBfeCcsCisgYiBiaWdpbnQsCisgZCBkYXRl IEdFTkVSQVRFRCBBTFdBWVMgYXMgKCcyMDIyLTAyLTAyJykgU1RPUkVEKTsKK0FMVEVSIFRBQkxF IHQgQVRUQUNIIFBBUlRJVElPTiB0cF94IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworQ09N TUVOVCBPTiBDT0xVTU4gdHBfeC5pIElTICd0cF94LmknOworQ1JFQVRFIFNUQVRJU1RJQ1MgdF9z dGF0IChERVBFTkRFTkNJRVMpIG9uIGksIGIgZnJvbSB0OworQ1JFQVRFIFNUQVRJU1RJQ1MgdHBf eF9zdGF0IChERVBFTkRFTkNJRVMpIG9uIGksIGIgZnJvbSB0cF94OworQUxURVIgVEFCTEUgdCBB REQgQ09OU1RSQUlOVCB0X2JfY2hlY2sgQ0hFQ0sgKGIgPiAwKTsKK0FMVEVSIFRBQkxFIHQgQURE IENPTlNUUkFJTlQgdF9iX2NoZWNrMSBDSEVDSyAoYiA+IDApIE5PVCBFTkZPUkNFRDsKK0FMVEVS IFRBQkxFIHQgQUREIENPTlNUUkFJTlQgdF9iX2NoZWNrMiBDSEVDSyAoYiA+IDApIE5PVCBWQUxJ RDsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgdF9iX25uIE5PVCBOVUxMIGIgTk9UIFZB TElEOworSU5TRVJUIElOVE8gdHBfeChpLCB0LCBiKSBWQUxVRVMoMCwgREVGQVVMVCwgMSk7CitJ TlNFUlQgSU5UTyB0cF94KGksIHQsIGIpIFZBTFVFUygxLCBERUZBVUxULCAyKTsKK0NSRUFURSBP UiBSRVBMQUNFIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oKSBSRVRVUk5TIHRyaWdnZXIgTEFO R1VBR0UgJ3BscGdzcWwnIEFTCiskQk9EWSQKK0JFR0lOCisgIFJBSVNFIE5PVElDRSAndHJpZ2dl ciglKSBjYWxsZWQ6IGFjdGlvbiA9ICUsIHdoZW4gPSAlLCBsZXZlbCA9ICUnLCBUR19BUkdWWzBd LCBUR19PUCwgVEdfV0hFTiwgVEdfTEVWRUw7CisgIFJFVFVSTiBuZXc7CitFTkQ7CiskQk9EWSQ7 CitDUkVBVEUgVFJJR0dFUiB0X2JlZm9yZV9pbnNlcnRfcm93X3RyaWdnZXIgQkVGT1JFIElOU0VS VCBPTiB0IEZPUiBFQUNIIFJPVworICBFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmN0aW9u KCd0Jyk7CitDUkVBVEUgVFJJR0dFUiB0cF94X2JlZm9yZV9pbnNlcnRfcm93X3RyaWdnZXIgQkVG T1JFIElOU0VSVCBPTiB0cF94IEZPUiBFQUNIIFJPVworICBFWEVDVVRFIFBST0NFRFVSRSB0cmln Z2VyX2Z1bmN0aW9uKCd0cF94Jyk7CitcZCsgdHBfeAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSAicGFydGl0aW9uX3NwbGl0X3NjaGVtYS50cF94 IgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8ICAgICAgICAgICAg ICAgICAgICAgRGVmYXVsdCAgICAgICAgICAgICAgICAgICAgIHwgU3RvcmFnZSB8IFN0YXRzIHRh cmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIGkgICAgICB8IGludGVnZXIg fCAgICAgICAgICAgfCBub3QgbnVsbCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IHRwX3guaQorIHQgICAg ICB8IHRleHQgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8ICdkZWZhdWx0X3RwX3gnOjp0ZXh0 ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgbWFpbiAgICB8ICAgICAgICAgICAgICB8IAor IGIgICAgICB8IGJpZ2ludCAgfCAgICAgICAgICAgfCBub3QgbnVsbCB8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAg ICB8IAorIGQgICAgICB8IGRhdGUgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8IGdlbmVyYXRl ZCBhbHdheXMgYXMgKCcwMi0wMi0yMDIyJzo6ZGF0ZSkgc3RvcmVkIHwgcGxhaW4gICB8ICAgICAg ICAgICAgICB8IAorUGFydGl0aW9uIG9mOiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpCitQ YXJ0aXRpb24gY29uc3RyYWludDogKChhYnMoaSkgSVMgTk9UIE5VTEwpIEFORCAoYWJzKGkpID49 IDApIEFORCAoYWJzKGkpIDwgMikpCitDaGVjayBjb25zdHJhaW50czoKKyAgICAidF9iX2NoZWNr IiBDSEVDSyAoYiA+IDApCisgICAgInRfYl9jaGVjazEiIENIRUNLIChiID4gMCkgTk9UIEVORk9S Q0VECisgICAgInRfYl9jaGVjazIiIENIRUNLIChiID4gMCkgTk9UIFZBTElECitTdGF0aXN0aWNz IG9iamVjdHM6CisgICAgInBhcnRpdGlvbl9zcGxpdF9zY2hlbWEudHBfeF9zdGF0IiAoZGVwZW5k ZW5jaWVzKSBPTiBpLCBiIEZST00gdHBfeAorTm90LW51bGwgY29uc3RyYWludHM6CisgICAgInRw X3hfaV9ub3RfbnVsbCIgTk9UIE5VTEwgImkiIChpbmhlcml0ZWQpCisgICAgInRfYl9ubiIgTk9U IE5VTEwgImIiIChpbmhlcml0ZWQpIE5PVCBWQUxJRAorVHJpZ2dlcnM6CisgICAgdF9iZWZvcmVf aW5zZXJ0X3Jvd190cmlnZ2VyIEJFRk9SRSBJTlNFUlQgT04gdHBfeCBGT1IgRUFDSCBST1cgRVhF Q1VURSBGVU5DVElPTiB0cmlnZ2VyX2Z1bmN0aW9uKCd0JyksIE9OIFRBQkxFIHQKKyAgICB0cF94 X2JlZm9yZV9pbnNlcnRfcm93X3RyaWdnZXIgQkVGT1JFIElOU0VSVCBPTiB0cF94IEZPUiBFQUNI IFJPVyBFWEVDVVRFIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oJ3RwX3gnKQorCitBTFRFUiBU QUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF94IElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9S IFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfeCBGT1IgVkFMVUVTIEZS T00gKDEpIFRPICgyKSk7CitcZCsgdHBfeAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgVGFibGUgInBhcnRpdGlvbl9zcGxpdF9zY2hlbWEudHBfeCIKKyBD b2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCAgICAgICAgICAgICAgICAg ICAgIERlZmF1bHQgICAgICAgICAgICAgICAgICAgICB8IFN0b3JhZ2UgIHwgU3RhdHMgdGFyZ2V0 IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIGkgICAgICB8IGludGVnZXIgfCAg ICAgICAgICAgfCBub3QgbnVsbCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgcGxhaW4gICAgfCAgICAgICAgICAgICAgfCAKKyB0ICAgICAgfCB0ZXh0 ICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAnZGVmYXVsdF90Jzo6dGV4dCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IGV4dGVuZGVkIHwgICAgICAgICAgICAgIHwgCisgYiAgICAg IHwgYmlnaW50ICB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgICB8ICAgICAgICAgICAgICB8IAor IGQgICAgICB8IGRhdGUgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8IGdlbmVyYXRlZCBhbHdh eXMgYXMgKCcwMS0wMS0yMDIyJzo6ZGF0ZSkgc3RvcmVkIHwgcGxhaW4gICAgfCAgICAgICAgICAg ICAgfCAKK1BhcnRpdGlvbiBvZjogdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKQorUGFydGl0 aW9uIGNvbnN0cmFpbnQ6ICgoYWJzKGkpIElTIE5PVCBOVUxMKSBBTkQgKGFicyhpKSA+PSAxKSBB TkQgKGFicyhpKSA8IDIpKQorQ2hlY2sgY29uc3RyYWludHM6CisgICAgInRfYl9jaGVjayIgQ0hF Q0sgKGIgPiAwKQorICAgICJ0X2JfY2hlY2sxIiBDSEVDSyAoYiA+IDApIE5PVCBFTkZPUkNFRAor ICAgICJ0X2JfY2hlY2syIiBDSEVDSyAoYiA+IDApIE5PVCBWQUxJRAorTm90LW51bGwgY29uc3Ry YWludHM6CisgICAgInRfaV9ub3RfbnVsbCIgTk9UIE5VTEwgImkiIChpbmhlcml0ZWQpCisgICAg InRfYl9ubiIgTk9UIE5VTEwgImIiIChpbmhlcml0ZWQpIE5PVCBWQUxJRAorVHJpZ2dlcnM6Cisg ICAgdF9iZWZvcmVfaW5zZXJ0X3Jvd190cmlnZ2VyIEJFRk9SRSBJTlNFUlQgT04gdHBfeCBGT1Ig RUFDSCBST1cgRVhFQ1VURSBGVU5DVElPTiB0cmlnZ2VyX2Z1bmN0aW9uKCd0JyksIE9OIFRBQkxF IHQKKworSU5TRVJUIElOVE8gdChpLCB0LCBiKSBWQUxVRVMoMSwgREVGQVVMVCwgMyk7CitOT1RJ Q0U6ICB0cmlnZ2VyKHQpIGNhbGxlZDogYWN0aW9uID0gSU5TRVJULCB3aGVuID0gQkVGT1JFLCBs ZXZlbCA9IFJPVworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHQgT1JERVIgQlkg dGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBiOworIHRhYmxlb2lkIHwgaSB8 ICAgICAgdCAgICAgICB8IGIgfCAgICAgZCAgICAgIAorLS0tLS0tLS0tLSstLS0rLS0tLS0tLS0t LS0tLS0rLS0tKy0tLS0tLS0tLS0tLQorIHRwXzBfMSAgIHwgMCB8IGRlZmF1bHRfdHBfeCB8IDEg fCAwMS0wMS0yMDIyCisgdHBfeCAgICAgfCAxIHwgZGVmYXVsdF90cF94IHwgMiB8IDAxLTAxLTIw MjIKKyB0cF94ICAgICB8IDEgfCBkZWZhdWx0X3QgICAgfCAzIHwgMDEtMDEtMjAyMgorKDMgcm93 cykKKworRFJPUCBUQUJMRSB0OworRFJPUCBGVU5DVElPTiB0cmlnZ2VyX2Z1bmN0aW9uKCk7Cist LSBUZXN0IGZvciByZWNvbXB1dGF0aW9uIG9mIHN0b3JlZCBnZW5lcmF0ZWQgY29sdW1ucy4KK0NS RUFURSBUQUJMRSB0IChpIGludCwgdGFiX2lkIGludCBnZW5lcmF0ZWQgYWx3YXlzIGFzICh0YWJs ZW9pZCkgc3RvcmVkKSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHRwXzBf MiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKK0FMVEVSIFRBQkxF IHQgQUREIENPTlNUUkFJTlQgY2MgQ0hFQ0sodGFibGVvaWQgPD4gMTIzNDU2Nzg5KTsKK0lOU0VS VCBJTlRPIHQgVkFMVUVTICgwKSwgKDEpOworLS0gU2hvdWxkIGJlIDEgYmVjYXVzZSBwYXJ0aXRp b24gaWRlbnRpZmllciBmb3Igcm93IHdpdGggaT0wIGlzIHRoZSBzYW1lIGFzCistLSBwYXJ0aXRp b24gaWRlbnRpZmllciBmb3Igcm93IHdpdGggaT0xLgorU0VMRUNUIGNvdW50KCopIEZST00gdCBX SEVSRSBpID0gMCBBTkQgdGFiX2lkIElOIChTRUxFQ1QgdGFiX2lkIEZST00gdCBXSEVSRSBpID0g MSk7CisgY291bnQgCistLS0tLS0tCisgICAgIDEKKygxIHJvdykKKworLS0gInRhYl9pZCIgY29s dW1uIChzdG9yZWQgZ2VuZXJhdGVkIGNvbHVtbikgd2l0aCAidGFibGVvaWQiIGF0dHJpYnV0ZSBy ZXF1aXJlcworLS0gcmVjb21wdXRhdGlvbiBoZXJlLgorQUxURVIgVEFCTEUgdCBTUExJVCBQQVJU SVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgw KSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIp KTsKKy0tIFNob3VsZCBiZSAwIGJlY2F1c2UgcGFydGl0aW9uIGlkZW50aWZpZXIgZm9yIHJvdyB3 aXRoIGk9MCBpcyBkaWZmZXJlbnQgZnJvbQorLS0gcGFydGl0aW9uIGlkZW50aWZpZXIgZm9yIHJv dyB3aXRoIGk9MS4KK1NFTEVDVCBjb3VudCgqKSBGUk9NIHQgV0hFUkUgaSA9IDAgQU5EIHRhYl9p ZCBJTiAoU0VMRUNUIHRhYl9pZCBGUk9NIHQgV0hFUkUgaSA9IDEpOworIGNvdW50IAorLS0tLS0t LQorICAgICAwCisoMSByb3cpCisKK0RST1AgVEFCTEUgdDsKK1JFU0VUIHNlYXJjaF9wYXRoOwor LS0KK0RST1AgU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWE7CitEUk9QIFNDSEVNQSBwYXJ0 aXRpb25fc3BsaXRfc2NoZW1hMjsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxs ZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCmluZGV4IDYz M2NmMjBlMGE2Li44OWJkZTlhMjg1MCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJh bGxlbF9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCkBA IC0xMjMsNyArMTIzLDcgQEAgdGVzdDogcGxhbmNhY2hlIGxpbWl0IHBscGdzcWwgY29weTIgdGVt cCBkb21haW4gcmFuZ2VmdW5jcyBwcmVwYXJlIGNvbnZlcnNpb24gdHIKICMgVGhlIHN0YXRzIHRl c3QgcmVzZXRzIHN0YXRzLCBzbyBub3RoaW5nIGVsc2UgbmVlZGluZyBzdGF0cyBhY2Nlc3MgY2Fu IGJlIGluCiAjIHRoaXMgZ3JvdXAuCiAjIC0tLS0tLS0tLS0KLXRlc3Q6IHBhcnRpdGlvbl9tZXJn ZSBwYXJ0aXRpb25fam9pbiBwYXJ0aXRpb25fcHJ1bmUgcmVsb3B0aW9ucyBoYXNoX3BhcnQgaW5k ZXhpbmcgcGFydGl0aW9uX2FnZ3JlZ2F0ZSBwYXJ0aXRpb25faW5mbyB0dXBsZXNvcnQgZXhwbGFp biBjb21wcmVzc2lvbiBjb21wcmVzc2lvbl9sejQgbWVtb2l6ZSBzdGF0cyBwcmVkaWNhdGUgbnVt YSBlYWdlcl9hZ2dyZWdhdGUKK3Rlc3Q6IHBhcnRpdGlvbl9tZXJnZSBwYXJ0aXRpb25fc3BsaXQg cGFydGl0aW9uX2pvaW4gcGFydGl0aW9uX3BydW5lIHJlbG9wdGlvbnMgaGFzaF9wYXJ0IGluZGV4 aW5nIHBhcnRpdGlvbl9hZ2dyZWdhdGUgcGFydGl0aW9uX2luZm8gdHVwbGVzb3J0IGV4cGxhaW4g Y29tcHJlc3Npb24gY29tcHJlc3Npb25fbHo0IG1lbW9pemUgc3RhdHMgcHJlZGljYXRlIG51bWEg ZWFnZXJfYWdncmVnYXRlCiAKICMgZXZlbnRfdHJpZ2dlciBkZXBlbmRzIG9uIGNyZWF0ZV9hbSBh bmQgY2Fubm90IHJ1biBjb25jdXJyZW50bHkgd2l0aAogIyBhbnkgdGVzdCB0aGF0IHJ1bnMgRERM CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fc3BsaXQuc3FsIGIv c3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3NwbGl0LnNxbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMGU3OWMwMzZlYTkKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fc3BsaXQuc3FsCkBAIC0wLDAgKzEsMTEzNCBA QAorLS0KKy0tIFBBUlRJVElPTl9TUExJVAorLS0gVGVzdHMgZm9yICJBTFRFUiBUQUJMRSAuLi4g U1BMSVQgUEFSVElUSU9OIC4uLiIgY29tbWFuZAorLS0KKworQ1JFQVRFIFNDSEVNQSBwYXJ0aXRp b25fc3BsaXRfc2NoZW1hOworQ1JFQVRFIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMjsK K1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEsIHB1YmxpYzsKKworLS0K Ky0tIEJZIFJBTkdFIHBhcnRpdGlvbmluZworLS0KKworLS0KKy0tIFRlc3QgZm9yIGVycm9yIGNv ZGVzCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBpbnQsIHNh bGVzX2RhdGUgZGF0ZSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBU QUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf ZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3Ro ZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworCistLSBFUlJPUjogIHJlbGF0 aW9uICJzYWxlc194eHgiIGRvZXMgbm90IGV4aXN0CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBT UExJVCBQQVJUSVRJT04gc2FsZXNfeHh4IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAo JzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisKKy0tIEVSUk9SOiAgcmVsYXRp b24gInNhbGVzX2phbjIwMjIiIGFscmVhZHkgZXhpc3RzCitBTFRFUiBUQUJMRSBzYWxlc19yYW5n ZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElP TiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjIt MDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisKKy0t IEVSUk9SOiAgaW52YWxpZCBib3VuZCBzcGVjaWZpY2F0aW9uIGZvciBhIHJhbmdlIHBhcnRpdGlv bgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJf YXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIElOICgn MjAyMi0wNS0wMScsICcyMDIyLTA2LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJU SVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcy MDIyLTA1LTAxJykpOworCistLSBFUlJPUjogIGVtcHR5IHJhbmdlIGJvdW5kIHNwZWNpZmllZCBm b3IgcGFydGl0aW9uICJzYWxlc19tYXIyMDIyIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BM SVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2Fs ZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAx JyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAz LTAxJykgVE8gKCcyMDIyLTAyLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCistLUVSUk9S OiAgbGlzdCBvZiBzcGxpdCBwYXJ0aXRpb25zIHNob3VsZCBjb250YWluIGF0IGxlYXN0IHR3byBp dGVtcworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9t YXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTEwLTAxJykpOworCistLSBFUlJPUjogIGxvd2Vy IGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIgaXMgbm90IGVxdWFsIHRvIGxvd2Vy IGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbiAic2FsZXNfZmViX21hcl9hcHIyMDIyIgorLS0gSElO VDogIEFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT04gcmVxdWlyZSBjb21iaW5lZCBib3Vu ZHMgb2YgbmV3IHBhcnRpdGlvbnMgbXVzdCBleGFjdGx5IG1hdGNoIHRoZSBib3VuZCBvZiB0aGUg c3BsaXQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04g c2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIw MjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisKKy0tIEVSUk9SOiAgcGFydGl0aW9u IHdpdGggbmFtZSAic2FsZXNfZmViX21hcl9hcHIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKKy0tIChX ZSBjYW4gY3JlYXRlIHBhcnRpdGlvbiB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgc3BsaXQgcGFydGl0 aW9uLCBidXQgY2FuJ3QgY3JlYXRlIHR3byBwYXJ0aXRpb25zIHdpdGggdGhlIHNhbWUgbmFtZSkK K0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2Fw cjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2Fs ZXNfZmViX21hcl9hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIw MjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisKKy0tIEVSUk9SOiAgcGFydGl0aW9u IHdpdGggbmFtZSAic2FsZXNfZmViMjAyMiIgaXMgYWxyZWFkeSB1c2VkCitBTFRFUiBUQUJMRSBz YWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAg KFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBU TyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxl c19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEn KSk7CisKKy0tIEVSUk9SOiAgcGFydGl0aW9uIHdpdGggbmFtZSAic2FsZXNfZmViMjAyMiIgaXMg YWxyZWFkeSB1c2VkCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2Fs ZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElP TiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKwor LS0gRVJST1I6ICBBTFRFUiBhY3Rpb24gU1BMSVQgUEFSVElUSU9OIGNhbm5vdCBiZSBwZXJmb3Jt ZWQgb24gcmVsYXRpb24gInNhbGVzX2ZlYl9tYXJfYXByMjAyMiIKKy0tIERFVEFJTDogIFRoaXMg b3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRhYmxlcy4KK0FMVEVSIFRBQkxFIHNhbGVz X2ZlYl9tYXJfYXByMjAyMiBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElO VE8KKyAgKFBBUlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDIt MDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElP TiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjIt MDUtMDEnKSk7CisKKy0tIEVSUk9SOiAgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19h cHIyMDIyIiBpcyBub3QgZXF1YWwgdG8gdXBwZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uICJz YWxlc19mZWJfbWFyX2FwcjIwMjIiCistLSBISU5UOiAgQUxURVIgVEFCTEUgLi4uIFNQTElUIFBB UlRJVElPTiByZXF1aXJlIGNvbWJpbmVkIGJvdW5kcyBvZiBuZXcgcGFydGl0aW9ucyBtdXN0IGV4 YWN0bHkgbWF0Y2ggdGhlIGJvdW5kIG9mIHRoZSBzcGxpdCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxF IHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTwor ICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScp IFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNh bGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNi0w MScpKTsKKworLS0gRVJST1I6ICBjYW4gbm90IHNwbGl0IHRvIHBhcnRpdGlvbiAic2FsZXNfbWFy MjAyMiIgdG9nZXRoZXIgd2l0aCBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiCitBTFRFUiBUQUJM RSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8K KyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEn KSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBz YWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUt MDEnKSk7CisKKy0tIFRlc3RzIGZvciBzcGFjZXMgYmV0d2VlbiBwYXJ0aXRpb25zLCB0aGVtIHNo b3VsZCBiZSBleGVjdXRlZCB3aXRob3V0IERFRkFVTFQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBz YWxlc19yYW5nZSBERVRBQ0ggUEFSVElUSU9OIHNhbGVzX290aGVyczsKKworLS0gRVJST1I6ICBs b3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiIGlzIG5vdCBlcXVhbCB0byBs b3dlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24gInNhbGVzX2ZlYl9tYXJfYXByMjAyMiIKKy0t IEhJTlQ6ICBBTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFSVElUSU9OIHJlcXVpcmUgY29tYmluZWQg Ym91bmRzIG9mIG5ldyBwYXJ0aXRpb25zIG11c3QgZXhhY3RseSBtYXRjaCB0aGUgYm91bmQgb2Yg dGhlIHNwbGl0IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElU SU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAyJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQ QVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8g KCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCistLSBDaGVjayB0aGUgc291 cmNlIHBhcnRpdGlvbiBub3QgaW4gdGhlIHNlYXJjaCBwYXRoCitTRVQgc2VhcmNoX3BhdGggPSBw YXJ0aXRpb25fc3BsaXRfc2NoZW1hMiwgcHVibGljOworQUxURVIgVEFCTEUgcGFydGl0aW9uX3Nw bGl0X3NjaGVtYS5zYWxlc19yYW5nZQorU1BMSVQgUEFSVElUSU9OIHBhcnRpdGlvbl9zcGxpdF9z Y2hlbWEuc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAg IFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBU TyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitTRVQgc2VhcmNoX3BhdGgg PSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLCBwdWJsaWM7CitcZCsgc2FsZXNfcmFuZ2UKKworRFJP UCBUQUJMRSBzYWxlc19yYW5nZTsKK0RST1AgVEFCTEUgc2FsZXNfb3RoZXJzOworCistLSBBZGRp dGlvbmFsIHRlc3RzIGZvciBlcnJvciBtZXNzYWdlcywgbm8gZGVmYXVsdCBwYXJ0aXRpb24KK0NS RUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNfZGF0ZSBkYXRlKSBQQVJUSVRJT04gQlkgUkFO R0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9G IHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDIt MDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWJfbWFyX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNh bGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEn KTsKKworLS0gRVJST1I6ICB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2FwcjIwMjIi IGlzIG5vdCBlcXVhbCB0byB1cHBlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24gInNhbGVzX2Zl Yl9tYXJfYXByMjAyMiIKKy0tIEhJTlQ6ICBBTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFSVElUSU9O IHJlcXVpcmUgY29tYmluZWQgYm91bmRzIG9mIG5ldyBwYXJ0aXRpb25zIG11c3QgZXhhY3RseSBt YXRjaCB0aGUgYm91bmQgb2YgdGhlIHNwbGl0IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNf cmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJU SVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcy MDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXBy MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA2LTAxJykpOwor CitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworCistLQorLS0gQWRkIHJvd3MgaW50byBwYXJ0aXRp b25lZCB0YWJsZSB0aGVuIHNwbGl0IHBhcnRpdGlvbgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19y YW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBz YWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2Fs ZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNf cmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFu Z2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JF QVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsK KworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAgMTAw MCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcp LAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5v dicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAy Mi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyksCisgICg3 LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAx ODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTEx JyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1 bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcy MDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAg KDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworCitBTFRFUiBUQUJMRSBzYWxl c19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBB UlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAo JzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19h cHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7 CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19yYW5nZSBPUkRFUiBC WSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIHNhbGVzcGVyc29uX2lkOwor RFJPUCBUQUJMRSBzYWxlc19yYW5nZSBDQVNDQURFOworCistLQorLS0gQWRkIHNwbGl0IHBhcnRp dGlvbiwgdGhlbiBhZGQgcm93cyBpbnRvIHBhcnRpdGlvbmVkIHRhYmxlCistLQorQ1JFQVRFIFRB QkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFS Q0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZ IFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElP TiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIy LTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBP RiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1 LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5n ZSBERUZBVUxUOworCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5 JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcy MDIyLTAyLTEwJyksCisgICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAg KDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2JywgICAg IDI1MCwgICcyMDIyLTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDIt MTEnKSwKKyAgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwgICdF cmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxlcicsICAgMjUwLCAg JzIwMjItMDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpLAor ICAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2JyksCisgICgxMiwgJ1BsYXRvJywg ICAgMzUwLCAgJzIwMjItMDMtMTknKSwKKyAgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0w MS0wOScpLAorICAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CisKKy0tIFNw bGl0IHBhcnRpdGlvbiwgYWxzbyBjaGVjayBzY2hlbWEgcXVhbGlmaWNhdGlvbiBvZiBuZXcgcGFy dGl0aW9ucworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2Zl Yl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5z YWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMt MDEnKSwKKyAgIFBBUlRJVElPTiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMi5zYWxlc19tYXIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAo JzIwMjItMDUtMDEnKSk7CitcZCsgc2FsZXNfcmFuZ2UKKworU0VMRUNUIHRhYmxlb2lkOjpyZWdj bGFzcywgKiBGUk9NIHNhbGVzX3JhbmdlIE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4 dCBDT0xMQVRFICJDIiwgc2FsZXNwZXJzb25faWQ7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2Ug Q0FTQ0FERTsKKworLS0KKy0tIFRlc3QgZm9yOgorLS0gICAqIGNvbXBvc2l0ZSBwYXJ0aXRpb24g a2V5OworLS0gICAqIEdFTkVSQVRFRCBjb2x1bW47CistLSAgICogY29sdW1uIHdpdGggREVGQVVM VCB2YWx1ZS4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfZGF0ZSAoc2FsZXNwZXJzb25fbmFtZSBW QVJDSEFSKDMwKSwgc2FsZXNfeWVhciBJTlQsIHNhbGVzX21vbnRoIElOVCwgc2FsZXNfZGF5IElO VCwKKyAgc2FsZXNfZGF0ZSBWQVJDSEFSKDEwKSBHRU5FUkFURUQgQUxXQVlTIEFTCisgICAgKExQ QUQoc2FsZXNfeWVhcjo6dGV4dCwgNCwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxlc19tb250aDo6 dGV4dCwgMiwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxlc19kYXk6OnRleHQsIDIsICcwJykpIFNU T1JFRCwKKyAgc2FsZXNfZGVwYXJ0bWVudCBWQVJDSEFSKDMwKSBERUZBVUxUICdTYWxlcyBkZXBh cnRtZW50JykKKyAgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc195ZWFyLCBzYWxlc19tb250aCwg c2FsZXNfZGF5KTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX2RlYzIwMjEgUEFSVElUSU9OIE9GIHNh bGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIxLCAxMiwgMSkgVE8gKDIwMjIsIDEsIDEpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX2phbl9mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRlIEZP UiBWQUxVRVMgRlJPTSAoMjAyMiwgMSwgMSkgVE8gKDIwMjIsIDMsIDEpOworQ1JFQVRFIFRBQkxF IHNhbGVzX290aGVyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAy MiwgMywgMSkgVE8gKE1BWFZBTFVFLCBNQVhWQUxVRSwgTUFYVkFMVUUpOworCitJTlNFUlQgSU5U TyBzYWxlc19kYXRlKHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBz YWxlc19kYXkpIFZBTFVFUworICAoJ01hbmFnZXIxJywgMjAyMSwgMTIsIDcpLAorICAoJ01hbmFn ZXIyJywgMjAyMSwgMTIsIDgpLAorICAoJ01hbmFnZXIzJywgMjAyMiwgMSwgMSksCisgICgnTWFu YWdlcjEnLCAyMDIyLCAyLCA0KSwKKyAgKCdNYW5hZ2VyMicsIDIwMjIsIDEsIDIpLAorICAoJ01h bmFnZXIzJywgMjAyMiwgMiwgMSksCisgICgnTWFuYWdlcjEnLCAyMDIyLCAzLCAzKSwKKyAgKCdN YW5hZ2VyMicsIDIwMjIsIDMsIDQpLAorICAoJ01hbmFnZXIzJywgMjAyMiwgNSwgMSk7CisKK1NF TEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19kYXRlIE9SREVSIEJZIHRhYmxl b2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgs IHNhbGVzX2RheTsKKworQUxURVIgVEFCTEUgc2FsZXNfZGF0ZSBTUExJVCBQQVJUSVRJT04gc2Fs ZXNfamFuX2ZlYjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVF UyBGUk9NICgyMDIyLCAxLCAxKSBUTyAoMjAyMiwgMiwgMSksCisgICBQQVJUSVRJT04gc2FsZXNf ZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDIsIDEpIFRPICgyMDIyLCAzLCAxKSk7CisK K0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfeWVhciwgc2Fs ZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTCisgICgnTWFuYWdlcjEnLCAyMDIyLCAxLCAxMCks CisgICgnTWFuYWdlcjInLCAyMDIyLCAyLCAxMCk7CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xh c3MsICogRlJPTSBzYWxlc19kYXRlIE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBD T0xMQVRFICJDIiwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheTsKKworRFJPUCBU QUJMRSBzYWxlc19kYXRlIENBU0NBREU7CisKKy0tCistLSBUZXN0OiBzcGxpdCBERUZBVUxUIHBh cnRpdGlvbjsgdXNlIGFuIGluZGV4IG9uIHBhcnRpdGlvbiBrZXk7IGNoZWNrIGluZGV4IGFmdGVy IHNwbGl0CistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQs IHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2Rh dGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBz YWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJz IFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworQ1JFQVRFIElOREVYIHNhbGVzX3Jh bmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRl KTsKKworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAg MTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0x MCcpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2 YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAn MjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyksCisg ICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24n LCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAz LTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAn VHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwg ICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwK KyAgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworCitTRUxFQ1QgKiBGUk9N IHNhbGVzX290aGVyczsKK1NFTEVDVCAqIEZST00gcGdfaW5kZXhlcyBXSEVSRSB0YWJsZW5hbWUg PSAnc2FsZXNfb3RoZXJzJyBhbmQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1h JyBPUkRFUiBCWSBpbmRleG5hbWUgQ09MTEFURSAiQyI7CisKK0FMVEVSIFRBQkxFIHNhbGVzX3Jh bmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVz X2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScp LAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0w MScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpLAorICAgUEFSVElUSU9O IHNhbGVzX290aGVycyBERUZBVUxUKTsKKworLS0gVXNlIGluZGV4c2NhbiBmb3IgdGVzdGluZyBp bmRleGVzCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBPRkY7CisKK0VYUExBSU4gKENPU1RTIE9GRikg U0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0w MSc7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIy LTAxLTAxJzsKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBzYWxlc19tYXIyMDIy IHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX21h cjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKK0VYUExBSU4gKENPU1RTIE9G RikgU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0w MS0wMSc7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcy MDIyLTAxLTAxJzsKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBzYWxlc19vdGhl cnMgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKK1NFTEVDVCAqIEZST00gc2FsZXNf b3RoZXJzIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7CisKK1JFU0VUIGVuYWJsZV9z ZXFzY2FuOworCitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMKK1dIRVJFIHRhYmxlbmFtZSBpbiAo J3NhbGVzX2ZlYjIwMjInLCAnc2FsZXNfbWFyMjAyMicsICdzYWxlc19hcHIyMDIyJywgJ3NhbGVz X290aGVycycpCitBTkQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJworT1JE RVIgQlkgaW5kZXhuYW1lIENPTExBVEUgIkMiOworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlIENB U0NBREU7CisKKy0tCistLSBUZXN0OiBzb21lIGNhc2VzIGZvciBzcGxpdHRpbmcgREVGQVVMVCBw YXJ0aXRpb24gKGRpZmZlcmVudCBib3VuZHMpCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3Jhbmdl IChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzX2RhdGUgZGF0ZSkgUEFSVElUSU9OIEJZIFJBTkdF IChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNh bGVzX3JhbmdlIERFRkFVTFQ7CisKKy0tIHNhbGVzX2Vycm9yIGludGVyc2VjdHMgd2l0aCBzYWxl c19kZWMyMDIxIChsb3dlciBib3VuZCkKKy0tIEVSUk9SOiAgY2FuIG5vdCBzcGxpdCB0byBwYXJ0 aXRpb24gInNhbGVzX2Vycm9yIiB0b2dldGhlciB3aXRoIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAy MSIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMg SU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjEgRk9SIFZBTFVFUyBGUk9NICgnMjAyMS0x Mi0wMScpIFRPICgnMjAyMi0wMS0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjEtMTItMzAnKSBUTyAoJzIwMjItMDItMDEnKSwKKyAgIFBBUlRJVElP TiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjIt MDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CisKKy0tIHNhbGVz X2Vycm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19mZWIyMDIyICh1cHBlciBib3VuZCkKKy0tIEVS Uk9SOiAgY2FuIG5vdCBzcGxpdCB0byBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiIHRvZ2V0aGVy IHdpdGggcGFydGl0aW9uICJzYWxlc19lcnJvciIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQ TElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIw MjEgRk9SIFZBTFVFUyBGUk9NICgnMjAyMS0xMi0wMScpIFRPICgnMjAyMi0wMS0wMScpLAorICAg UEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAo JzIwMjItMDItMDInKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19v dGhlcnMgREVGQVVMVCk7CisKKy0tIHNhbGVzX2Vycm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19k ZWMyMDIxIChpbnNpZGUgYm91bmQpCistLSBFUlJPUjogIGNhbiBub3Qgc3BsaXQgdG8gcGFydGl0 aW9uICJzYWxlc19lcnJvciIgdG9nZXRoZXIgd2l0aCBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjEi CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElO VE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIxIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjEtMTIt MDEnKSBUTyAoJzIwMjItMDEtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lcnJvciBGT1IgVkFM VUVTIEZST00gKCcyMDIxLTEyLTEwJykgVE8gKCcyMDIxLTEyLTIwJyksCisgICBQQVJUSVRJT04g c2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAz LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworCistLSBzYWxlc19l cnJvciBpbnRlcnNlY3RzIHdpdGggc2FsZXNfZGVjMjAyMSAoZXhhY3RseSB0aGUgc2FtZSBib3Vu ZHMpCistLSBFUlJPUjogIGNhbiBub3Qgc3BsaXQgdG8gcGFydGl0aW9uICJzYWxlc19lcnJvciIg dG9nZXRoZXIgd2l0aCBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjEiCitBTFRFUiBUQUJMRSBzYWxl c19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBz YWxlc19kZWMyMDIxIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjEtMTItMDEnKSBUTyAoJzIwMjItMDEt MDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00gKCcyMDIxLTEy LTAxJykgVE8gKCcyMDIyLTAxLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJ T04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworCistLSBFUlJPUjogIGNhbiBub3Qgc3BsaXQgREVG QVVMVCBwYXJ0aXRpb24gInNhbGVzX290aGVycyIKKy0tIEhJTlQ6ICBUbyBzcGxpdCBERUZBVUxU IHBhcnRpdGlvbiBvbmUgb2YgdGhlIG5ldyBwYXJ0aXRpb24gbXN1dCBiZSBERUZBVUxUCitBTFRF UiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAg KFBBUlRJVElPTiBzYWxlc19kZWMyMDIxIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjEtMTItMDEnKSBU TyAoJzIwMjItMDEtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxl c19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEn KSk7CisKKy0tIG5vIGVycm9yOiBib3VuZHMgb2Ygc2FsZXNfbm9lcnJvciBhcmUgYmV0d2VlbiBz YWxlc19kZWMyMDIxIGFuZCBzYWxlc19mZWIyMDIyCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBT UExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMy MDIxIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjEtMTItMDEnKSBUTyAoJzIwMjItMDEtMDEnKSwKKyAg IFBBUlRJVElPTiBzYWxlc19ub2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMTAnKSBU TyAoJzIwMjItMDEtMjAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxl c19vdGhlcnMgREVGQVVMVCk7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CisKK0NSRUFURSBU QUJMRSBzYWxlc19yYW5nZSAoc2FsZXNfZGF0ZSBkYXRlKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNh bGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNf cmFuZ2UgREVGQVVMVDsKKworLS0gbm8gZXJyb3I6IGJvdW5kcyBvZiBzYWxlc19ub2Vycm9yIGFy ZSBlcXVhbCB0byBsb3dlciBhbmQgdXBwZXIgYm91bmRzIG9mIHNhbGVzX2RlYzIwMjEgYW5kIHNh bGVzX2ZlYjIwMjIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxl c19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjEgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMS0xMi0wMScpIFRPICgnMjAyMi0wMS0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX25v ZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpLAor ICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScp IFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsK KworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKworLS0KKy0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlv biB3aXRoIENIRUNLIGFuZCBGT1JFSUdOIEtFWSBDT05TVFJBSU5UcyBvbiBwYXJ0aXRpb25lZCB0 YWJsZQorLS0KK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQgUFJJ TUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpOworSU5TRVJUIElOVE8gc2Fs ZXNwZW9wbGUgVkFMVUVTICgxLCAgJ1BvaXJvdCcpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFu Z2UgKAorc2FsZXNwZXJzb25faWQgSU5UIFJFRkVSRU5DRVMgc2FsZXNwZW9wbGUoc2FsZXNwZXJz b25faWQpLAorc2FsZXNfYW1vdW50IElOVCBDSEVDSyAoc2FsZXNfYW1vdW50ID4gMSksCitzYWxl c19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CisKK0NSRUFURSBU QUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf ZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3Ro ZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworCitTRUxFQ1QgcGdfZ2V0X2Nv bnN0cmFpbnRkZWYob2lkKSwgY29ubmFtZSwgY29ua2V5IEZST00gcGdfY29uc3RyYWludCBXSEVS RSBjb25yZWxpZCA9ICdzYWxlc19mZWJfbWFyX2FwcjIwMjInOjpyZWdjbGFzczo6b2lkIE9SREVS IEJZIGNvbm5hbWUgQ09MTEFURSAiQyI7CisKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElU IFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVz X2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScp LAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0w MScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKworLS0gV2Ugc2hv dWxkIHNlZSB0aGUgc2FtZSBDT05TVFJBSU5UcyBhcyBvbiBzYWxlc19mZWJfbWFyX2FwcjIwMjIg cGFydGl0aW9uCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSwgY29ubmFtZSwgY29u a2V5IEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25yZWxpZCA9ICdzYWxlc19mZWIyMDIyJzo6 cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBjb25uYW1lIENPTExBVEUgIkMiOworU0VMRUNUIHBnX2dl dF9jb25zdHJhaW50ZGVmKG9pZCksIGNvbm5hbWUsIGNvbmtleSBGUk9NIHBnX2NvbnN0cmFpbnQg V0hFUkUgY29ucmVsaWQgPSAnc2FsZXNfbWFyMjAyMic6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkg Y29ubmFtZSBDT0xMQVRFICJDIjsKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpLCBj b25uYW1lLCBjb25rZXkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbnJlbGlkID0gJ3NhbGVz X2FwcjIwMjInOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGNvbm5hbWUgQ09MTEFURSAiQyI7CisK Ky0tIEVSUk9SOiAgbmV3IHJvdyBmb3IgcmVsYXRpb24gInNhbGVzX21hcjIwMjIiIHZpb2xhdGVz IGNoZWNrIGNvbnN0cmFpbnQgInNhbGVzX3JhbmdlX3NhbGVzX2Ftb3VudF9jaGVjayIKK0lOU0VS VCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMSwgMCwgJzIwMjItMDMtMTEnKTsKKy0tIEVSUk9S OiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAic2FsZXNfbWFyMjAyMiIgdmlvbGF0ZXMgZm9y ZWlnbiBrZXkgY29uc3RyYWludCAic2FsZXNfcmFuZ2Vfc2FsZXNwZXJzb25faWRfZmtleSIKK0lO U0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoLTEsIDEwLCAnMjAyMi0wMy0xMScpOworLS0g b2sKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMSwgMTAsICcyMDIyLTAzLTExJyk7 CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FERTsKK0RST1AgVEFCTEUgc2FsZXNwZW9w bGUgQ0FTQ0FERTsKKworLS0KKy0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiBvbiBwYXJ0aXRpb25l ZCB0YWJsZSBpbiBjYXNlIG9mIGV4aXN0aW5nIEZPUkVJR04gS0VZIHJlZmVyZW5jZSBmcm9tIGFu b3RoZXIgdGFibGUKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQg SU5UIFBSSU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKSBQQVJUSVRJT04g QlkgUkFOR0UgKHNhbGVzcGVyc29uX2lkKTsKK0NSRUFURSBUQUJMRSBzYWxlcyAoc2FsZXNwZXJz b25faWQgSU5UIFJFRkVSRU5DRVMgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQpLCBzYWxlc19h bW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpOworCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUw MV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTAp OworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMTBfNDAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxl IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICg0MCk7CisKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxl IFZBTFVFUworICAoMSwgICdQb2lyb3QnKSwKKyAgKDEwLCAnTWF5JyksCisgICgxOSwgJ0l2YW5v dicpLAorICAoMjAsICdTbWlybm9mZicpLAorICAoMzAsICdGb3JkJyk7CisKK0lOU0VSVCBJTlRP IHNhbGVzIFZBTFVFUworICAoMSwgIDEwMCwgJzIwMjItMDMtMDEnKSwKKyAgKDEsICAxMTAsICcy MDIyLTAzLTAyJyksCisgICgxMCwgMTUwLCAnMjAyMi0wMy0wMScpLAorICAoMTAsIDkwLCAgJzIw MjItMDMtMDMnKSwKKyAgKDE5LCAyMDAsICcyMDIyLTAzLTA0JyksCisgICgyMCwgNTAsICAnMjAy Mi0wMy0xMicpLAorICAoMjAsIDE3MCwgJzIwMjItMDMtMDInKSwKKyAgKDMwLCAzMCwgICcyMDIy LTAzLTA0Jyk7CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc3Blb3Bs ZSBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIHNhbGVzcGVy c29uX2lkOworCitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBTUExJVCBQQVJUSVRJT04gc2FsZXNw ZW9wbGUxMF80MCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF8yMCBGT1IgVkFMVUVT IEZST00gKDEwKSBUTyAoMjApLAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlMjBfMzAgRk9SIFZB TFVFUyBGUk9NICgyMCkgVE8gKDMwKSwKKyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTMwXzQwIEZP UiBWQUxVRVMgRlJPTSAoMzApIFRPICg0MCkpOworCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNz LCAqIEZST00gc2FsZXNwZW9wbGUgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENP TExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsKKworLS0gRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRl IG9uIHRhYmxlICJzYWxlcyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAic2FsZXNf c2FsZXNwZXJzb25faWRfZmtleSIKK0lOU0VSVCBJTlRPIHNhbGVzIFZBTFVFUyAoNDAsIDUwLCAg JzIwMjItMDMtMDQnKTsKKy0tIG9rCitJTlNFUlQgSU5UTyBzYWxlcyBWQUxVRVMgKDMwLCA1MCwg ICcyMDIyLTAzLTA0Jyk7CisKK0RST1AgVEFCTEUgc2FsZXMgQ0FTQ0FERTsKK0RST1AgVEFCTEUg c2FsZXNwZW9wbGUgQ0FTQ0FERTsKKworLS0KKy0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiBvZiBw YXJ0aXRpb25lZCB0YWJsZSB3aXRoIHRyaWdnZXJzCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzcGVv cGxlKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJD SEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc3BlcnNvbl9pZCk7CisKK0NSRUFURSBU QUJMRSBzYWxlc3Blb3BsZTAxXzEwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVT IEZST00gKDEpIFRPICgxMCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUxMF80MCBQQVJUSVRJ T04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDQwKTsKKworSU5TRVJU IElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTICgxLCAgJ1BvaXJvdCcpOworCitDUkVBVEUgT1IgUkVQ TEFDRSBGVU5DVElPTiBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoKSBSRVRVUk5TIHRyaWdnZXIg TEFOR1VBR0UgJ3BscGdzcWwnIEFTICRCT0RZJAorQkVHSU4KKyAgICBSQUlTRSBOT1RJQ0UgJ3Ry aWdnZXIoJSkgY2FsbGVkOiBhY3Rpb24gPSAlLCB3aGVuID0gJSwgbGV2ZWwgPSAlJywgVEdfQVJH VlswXSwgVEdfT1AsIFRHX1dIRU4sIFRHX0xFVkVMOworICAgIFJFVFVSTiBOVUxMOworRU5EOwor JEJPRFkkOworCitDUkVBVEUgVFJJR0dFUiBzYWxlc3Blb3BsZV9hZnRlcl9pbnNlcnRfc3RhdGVt ZW50X3RyaWdnZXIKKyAgICBBRlRFUiBJTlNFUlQKKyAgICBPTiBzYWxlc3Blb3BsZQorICAgIEZP UiBFQUNIIFNUQVRFTUVOVAorICAgIEVYRUNVVEUgUFJPQ0VEVVJFIGFmdGVyX2luc2VydF9yb3df dHJpZ2dlcignc2FsZXNwZW9wbGUnKTsKKworQ1JFQVRFIFRSSUdHRVIgc2FsZXNwZW9wbGVfYWZ0 ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyCisgICAgQUZURVIgSU5TRVJUCisgICAgT04gc2FsZXNwZW9w bGUKKyAgICBGT1IgRUFDSCBST1cKKyAgICBFWEVDVVRFIFBST0NFRFVSRSBhZnRlcl9pbnNlcnRf cm93X3RyaWdnZXIoJ3NhbGVzcGVvcGxlJyk7CisKKy0tIDIgdHJpZ2dlcnMgc2hvdWxkIGZpcmUg aGVyZSAocm93ICsgc3RhdGVtZW50KToKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUyAo MTAsICdNYXknKTsKKy0tIDEgdHJpZ2dlciBzaG91bGQgZmlyZSBoZXJlIChyb3cpOgorSU5TRVJU IElOVE8gc2FsZXNwZW9wbGUxMF80MCBWQUxVRVMgKDE5LCAnSXZhbm92Jyk7CisKK0FMVEVSIFRB QkxFIHNhbGVzcGVvcGxlIFNQTElUIFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzQwIElOVE8KKyAg KFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzIwIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCks CisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUyMF8zMCBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAo MzApLAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlMzBfNDAgRk9SIFZBTFVFUyBGUk9NICgzMCkg VE8gKDQwKSk7CisKKy0tIDIgdHJpZ2dlcnMgc2hvdWxkIGZpcmUgaGVyZSAocm93ICsgc3RhdGVt ZW50KToKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUyAoMjAsICdTbWlybm9mZicpOwor LS0gMSB0cmlnZ2VyIHNob3VsZCBmaXJlIGhlcmUgKHJvdyk6CitJTlNFUlQgSU5UTyBzYWxlc3Bl b3BsZTMwXzQwIFZBTFVFUyAoMzAsICdGb3JkJyk7CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xh c3MsICogRlJPTSBzYWxlc3Blb3BsZSBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQg Q09MTEFURSAiQyIsIHNhbGVzcGVyc29uX2lkOworCitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlIENB U0NBREU7CitEUk9QIEZVTkNUSU9OIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcigpOworCistLQor LS0gVGVzdDogc3BsaXQgcGFydGl0aW9uIHdpdGNoIGlkZW50aXR5IGNvbHVtbgorLS0gSWYgc3Bs aXQgcGFydGl0aW9uIGNvbHVtbiBpcyBpZGVudGl0eSBjb2x1bW4sIGNvbHVtbnMgb2YgbmV3IHBh cnRpdGlvbnMgYXJlIGlkZW50aXR5IGNvbHVtbnMgdG9vLgorLS0KK0NSRUFURSBUQUJMRSBzYWxl c3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQgR0VORVJBVEVEIEFMV0FZUyBBUyBJREVOVElUWSBQ UklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJB TkdFIChzYWxlc3BlcnNvbl9pZCk7CisKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTFfMiBQQVJU SVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CistLSBDcmVh dGUgbmV3IHBhcnRpdGlvbiB3aXRoIGlkZW50aXR5IGNvbHVtbjoKK0NSRUFURSBUQUJMRSBzYWxl c3Blb3BsZTJfNShzYWxlc3BlcnNvbl9pZCBJTlQgTk9UIE5VTEwsIHNhbGVzcGVyc29uX25hbWUg VkFSQ0hBUigzMCkpOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgQVRUQUNIIFBBUlRJVElPTiBz YWxlc3Blb3BsZTJfNSBGT1IgVkFMVUVTIEZST00gKDIpIFRPICg1KTsKKworSU5TRVJUIElOVE8g c2FsZXNwZW9wbGUgKHNhbGVzcGVyc29uX25hbWUpIFZBTFVFUyAoJ1BvaXJvdCcpLCAoJ0l2YW5v dicpOworCitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBTUExJVCBQQVJUSVRJT04gc2FsZXNwZW9w bGUyXzUgSU5UTworICAoUEFSVElUSU9OIHNhbGVzcGVvcGxlMl8zIEZPUiBWQUxVRVMgRlJPTSAo MikgVE8gKDMpLAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlM180IEZPUiBWQUxVRVMgRlJPTSAo MykgVE8gKDQpLAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlNF81IEZPUiBWQUxVRVMgRlJPTSAo NCkgVE8gKDUpKTsKKworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgKHNhbGVzcGVyc29uX25hbWUp IFZBTFVFUyAoJ01heScpLCAoJ0ZvcmQnKTsKKworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywg KiBGUk9NIHNhbGVzcGVvcGxlIE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xM QVRFICJDIiwgc2FsZXNwZXJzb25faWQ7CisKKy0tIGNoZWNrIG5ldyBwYXJ0aXRpb25zIGhhdmUg aWRlbnRpdHkgb3Igbm90IGFmdGVyIHNwbGl0IHBhcnRpdGlvbgorU0VMRUNUIGF0dHJlbGlkOjpy ZWdjbGFzcywgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJp YnV0ZQorV0hFUkUgYXR0bnVtID4gMAorQU5EIGF0dHJlbGlkOjpyZWdjbGFzcyBJTiAoCisgICdz YWxlc3Blb3BsZTJfMyc6OnJlZ2NsYXNzLCAnc2FsZXNwZW9wbGUnLCAnc2FsZXNwZW9wbGUyXzMn LAorICAnc2FsZXNwZW9wbGUxXzInLCAnc2FsZXNwZW9wbGUzXzQnLCAnc2FsZXNwZW9wbGU0XzUn KQorT1JERVIgQlkgYXR0cmVsaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBhdHRudW07 CisKK0RST1AgVEFCTEUgc2FsZXNwZW9wbGUgQ0FTQ0FERTsKKworLS0KKy0tIFRlc3Q6IHNwbGl0 IHBhcnRpdGlvbiB3aXRoIGRlbGV0ZWQgY29sdW1ucworLS0KK0NSRUFURSBUQUJMRSBzYWxlc3Bl b3BsZShzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUgVkFS Q0hBUigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNwZXJzb25faWQpOworCitDUkVBVEUg VEFCTEUgc2FsZXNwZW9wbGUwMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVF UyBGUk9NICgxKSBUTyAoMTApOworLS0gQ3JlYXRlIG5ldyBwYXJ0aXRpb24gd2l0aCBzb21lIGRl bGV0ZWQgY29sdW1uczoKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTEwXzQwKGQxIFZBUkNIQVIo MzApLCBzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIGQyIElOVCwgZDMgREFURSwgc2Fs ZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7CisKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlMTBf NDAgVkFMVUVTCisgICgnZHVtbXkgdmFsdWUgMScsIDE5LCAxMDAsIG5vdygpLCAnSXZhbm92Jyks CisgICgnZHVtbXkgdmFsdWUgMicsIDIwLCAxMDEsIG5vdygpLCAnU21pcm5vZmYnKTsKKworQUxU RVIgVEFCTEUgc2FsZXNwZW9wbGUxMF80MCBEUk9QIENPTFVNTiBkMTsKK0FMVEVSIFRBQkxFIHNh bGVzcGVvcGxlMTBfNDAgRFJPUCBDT0xVTU4gZDI7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZTEw XzQwIERST1AgQ09MVU1OIGQzOworCitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBBVFRBQ0ggUEFS VElUSU9OIHNhbGVzcGVvcGxlMTBfNDAgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDQwKTsKKwor SU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTCisgICgxLCAnUG9pcm90JyksCisgICgxMCwg J01heScpLAorICAoMzAsICdGb3JkJyk7CisKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIFNQTElU IFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzQwIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc3Blb3Bs ZTEwXzIwIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCksCisgICBQQVJUSVRJT04gc2FsZXNw ZW9wbGUyMF8zMCBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMzApLAorICAgUEFSVElUSU9OIHNh bGVzcGVvcGxlMzBfNDAgRk9SIFZBTFVFUyBGUk9NICgzMCkgVE8gKDQwKSk7CisKK1NFTEVDVCB0 YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc3Blb3BsZSBPUkRFUiBCWSB0YWJsZW9pZDo6 cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIHNhbGVzcGVyc29uX2lkOworCitEUk9QIFRBQkxF IHNhbGVzcGVvcGxlIENBU0NBREU7CisKKy0tCistLSBUZXN0OiBzcGxpdCBzdWItcGFydGl0aW9u CistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVz cGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFU RSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19q YW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAx LTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJU SVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgn MjAyMi0wMy0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX21hcjIwMjIgUEFSVElUSU9OIE9GIHNh bGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEn KTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjIgKHNhbGVzcGVyc29uX2lkIElOVCwgc2Fs ZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBE QVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVz X2Fwcl9hbGwgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgQVRU QUNIIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEn KSBUTyAoJzIwMjItMDUtMDEnKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJ T04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKworQ1JFQVRFIElOREVYIHNhbGVzX3JhbmdlX3Nh bGVzX2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKTsKKwor SU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAgMTAwMCwg JzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpLAor ICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdics ICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0w NC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyksCisgICg3LCAg J0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUs ICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyks CisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAn LCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIy LTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0 LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworCitTRUxFQ1QgdGFibGVvaWQ6OnJl Z2NsYXNzLCAqIEZST00gc2FsZXNfcmFuZ2UgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0 ZXh0IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsKKworQUxURVIgVEFCTEUgc2FsZXNfYXBy MjAyMiBTUExJVCBQQVJUSVRJT04gc2FsZXNfYXByX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2Fs ZXNfYXByMjAyMl8wMV8xMCBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIy LTA0LTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8xMF8yMCBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTA0LTEwJykgVE8gKCcyMDIyLTA0LTIwJyksCisgICBQQVJUSVRJT04gc2FsZXNf YXByMjAyMl8yMF8zMCBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTIwJykgVE8gKCcyMDIyLTA1 LTAxJykpOworCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfcmFuZ2Ug T1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBzYWxlc3BlcnNv bl9pZDsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKworLS0KKy0tIEJZIExJU1QgcGFydGl0 aW9uaW5nCistLQorCistLQorLS0gVGVzdDogc3BlY2lmaWMgZXJyb3JzIGZvciBCWSBMSVNUIHBh cnRpdGlvbmluZworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19saXN0IChzYWxlc19zdGF0ZSBWQVJD SEFSKDIwKSkgUEFSVElUSU9OIEJZIExJU1QgKHNhbGVzX3N0YXRlKTsKKworQ1JFQVRFIFRBQkxF IHNhbGVzX25vcmQgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ09zbG8n LCAnU3QuIFBldGVyc2J1cmcnLCAnSGVsc2lua2knKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hbGwg UEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdMaXNib24n LCAnTmV3IFlvcmsnLCAnTWFkcmlkJywgJ0JlamluZycsICdCZXJsaW4nLCAnRGVsaGknLCAnS3lp dicsICdWbGFkaXZvc3RvaycpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04g T0Ygc2FsZXNfbGlzdCBERUZBVUxUOworCistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVz X2Vhc3QiIHdvdWxkIG92ZXJsYXAgd2l0aCBhbm90aGVyIChub3Qgc3BsaXQpIHBhcnRpdGlvbiAi c2FsZXNfbm9yZCIKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVz X2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9u JywgJ05ldyBZb3JrJywgJ01hZHJpZCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZB TFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycsICdIZWxzaW5raScpLAor ICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJs aW4nLCAnS3lpdicpKTsKKworLS0gRVJST1I6ICBuZXcgcGFydGl0aW9uICJzYWxlc193ZXN0IiB3 b3VsZCBvdmVybGFwIHdpdGggYW5vdGhlciBuZXcgcGFydGl0aW9uICJzYWxlc19jZW50cmFsIgor QUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAg KFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsn LCAnTWFkcmlkJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVq aW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJh bCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdMaXNib24nLCAnS3lpdicpKTsK KworLS0gRVJST1I6ICBuZXcgcGFydGl0aW9uICJzYWxlc193ZXN0IiBjYW5ub3QgaGF2ZSBOVUxM IHZhbHVlIGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uICJzYWxlc19hbGwiIGRvZXMgbm90IGhhdmUK K0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisg IChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3Jr JywgJ01hZHJpZCcsIE5VTEwpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJ TiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVz X2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpKTsKKwor LS0gRVJST1I6ICBuZXcgcGFydGl0aW9uICJzYWxlc193ZXN0IiBjYW5ub3QgaGF2ZSB0aGlzIHZh bHVlIGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uICJzYWxlc19hbGwiIGRvZXMgbm90IGhhdmUKK0FM VEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQ QVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywg J01hZHJpZCcsICdNZWxib3VybmUnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxV RVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBz YWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKSk7 CisKKy0tIEVSUk9SOiAgbmV3IHBhcnRpdGlvbiBjYW5ub3QgYmUgREVGQVVMVCBiZWNhdXNlIERF RkFVTFQgcGFydGl0aW9uICJzYWxlc19vdGhlcnMiIGFscmVhZHkgZXhpc3RzCitBTFRFUiBUQUJM RSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9O IHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQn LCAnTWVsYm91cm5lJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgn QmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2Vu dHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JyksCisgICBQQVJU SVRJT04gc2FsZXNfb3RoZXJzMiBERUZBVUxUKTsKKworRFJPUCBUQUJMRSBzYWxlc19saXN0Owor CistLSBUZXN0IGZvciBub24tc3ltYm9saWMgY29tcGFyaXNvbiBvZiB2YWx1ZXMgKG51bWVyaWMg dmFsdWVzICcwJyBhbmQgJzAuMCcgYXJlIGVxdWFsKS4KK0NSRUFURSBUQUJMRSB0IChhIG51bWVy aWMpIFBBUlRJVElPTiBCWSBMSVNUIChhKTsKK0NSRUFURSBUQUJMRSB0MSBQQVJUSVRJT04gT0Yg dCBGT1IgVkFMVUVTIGluICAoJzAnLCAnMScpOworLS0gRVJST1I6ICBuZXcgcGFydGl0aW9uICJ4 IiB3b3VsZCBvdmVybGFwIHdpdGggYW5vdGhlciBuZXcgcGFydGl0aW9uICJ4MSIKK0FMVEVSIFRB QkxFIHQgU1BMSVQgUEFSVElUSU9OIHQxIElOVE8KKyAgKFBBUlRJVElPTiB4IEZPUiBWQUxVRVMg SU4gKCcwJyksCisgICBQQVJUSVRJT04geDEgRk9SIFZBTFVFUyBJTiAoJzAuMCcsICcxJykpOwor RFJPUCBUQUJMRSB0OworCistLQorLS0gVGVzdDogdHdvIHNwZWNpZmljIGVycm9ycyBmb3IgQlkg TElTVCBwYXJ0aXRpb25pbmc6CistLSAgICogbmV3IHBhcnRpdGlvbnMgZG8gbm90IGhhdmUgTlVM TCB2YWx1ZSwgd2hpY2ggc3BsaXQgcGFydGl0aW9uIGhhcy4KKy0tICAgKiBuZXcgcGFydGl0aW9u cyBkbyBub3QgaGF2ZSBhIHZhbHVlIHRoYXQgc3BsaXQgcGFydGl0aW9uIGhhcy4KKy0tCitDUkVB VEUgVEFCTEUgc2FsZXNfbGlzdChzYWxlc19zdGF0ZSBWQVJDSEFSKDIwKSkgUEFSVElUSU9OIEJZ IExJU1QgKHNhbGVzX3N0YXRlKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX25vcmQgUEFSVElUSU9O IE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ0hlbHNpbmtpJywgJ1N0LiBQZXRlcnNidXJn JywgJ09zbG8nKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hbGwgUEFSVElUSU9OIE9GIHNhbGVzX2xp c3QgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlk JywgJ0JlamluZycsICdCZXJsaW4nLCAnRGVsaGknLCAnS3lpdicsICdWbGFkaXZvc3RvaycsIE5V TEwpOworCistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb25zIGNvbWJpbmVkIHBhcnRpdGlvbiBib3Vu ZHMgZG8gbm90IGNvbnRhaW4gdmFsdWUgKE5VTEwpIGJ1dCBzcGxpdCBwYXJ0aXRpb24gInNhbGVz X2FsbCIgZG9lcworLS0gSElOVDogIEFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT04gcmVx dWlyZSBjb21iaW5lZCBib3VuZHMgb2YgbmV3IHBhcnRpdGlvbnMgbXVzdCBleGFjdGx5IG1hdGNo IHRoZSBib3VuZCBvZiB0aGUgc3BsaXQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19saXN0 IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3Qg Rk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2 b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJz YXcnLCAnQmVybGluJywgJ0t5aXYnKSk7CisKKy0tIEVSUk9SOiAgbmV3IHBhcnRpdGlvbnMgY29t YmluZWQgcGFydGl0aW9uIGJvdW5kcyBkbyBub3QgY29udGFpbiB2YWx1ZSAoJ0t5aXYnOjpjaGFy YWN0ZXIgdmFyeWluZygyMCkpIGJ1dCBzcGxpdCBwYXJ0aXRpb24gInNhbGVzX2FsbCIgZG9lcwor LS0gSElOVDogIEFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT04gcmVxdWlyZSBjb21iaW5l ZCBib3VuZHMgb2YgbmV3IHBhcnRpdGlvbnMgbXVzdCBleGFjdGx5IG1hdGNoIHRoZSBib3VuZCBv ZiB0aGUgc3BsaXQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJ VElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJ TiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19l YXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAg IFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGlu JywgTlVMTCkpOworCistLSBFUlJPUiAgREVGQVVMVCBwYXJ0aXRpb24gc2hvdWxkIGJlIG9uZQor QUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAg KFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsn LCAnTWFkcmlkJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVq aW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJh bCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JyksCisgICBQQVJUSVRJ T04gc2FsZXNfb3RoZXJzIERFRkFVTFQsCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzMiBERUZB VUxUKTsKKworRFJPUCBUQUJMRSBzYWxlc19saXN0OworCistLQorLS0gVGVzdDogQlkgTElTVCBw YXJ0aXRpb25pbmcsIFNQTElUIFBBUlRJVElPTiB3aXRoIGRhdGEKKy0tCitDUkVBVEUgVEFCTEUg c2FsZXNfbGlzdAorKHNhbGVzcGVyc29uX2lkIFNFUklBTCwKKyBzYWxlc3BlcnNvbl9uYW1lIFZB UkNIQVIoMzApLAorIHNhbGVzX3N0YXRlIFZBUkNIQVIoMjApLAorIHNhbGVzX2Ftb3VudCBJTlQs Cisgc2FsZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9OIEJZIExJU1QgKHNhbGVzX3N0YXRlKTsKKwor Q1JFQVRFIElOREVYIHNhbGVzX2xpc3Rfc2FsZXNwZXJzb25fbmFtZV9pZHggT04gc2FsZXNfbGlz dCBVU0lORyBidHJlZSAoc2FsZXNwZXJzb25fbmFtZSk7CitDUkVBVEUgSU5ERVggc2FsZXNfbGlz dF9zYWxlc19zdGF0ZV9pZHggT04gc2FsZXNfbGlzdCBVU0lORyBidHJlZSAoc2FsZXNfc3RhdGUp OworCitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1Ig VkFMVUVTIElOICgnSGVsc2lua2knLCAnU3QuIFBldGVyc2J1cmcnLCAnT3NsbycpOworQ1JFQVRF IFRBQkxFIHNhbGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgn V2Fyc2F3JywgJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAnQmVqaW5nJywgJ0Jlcmxp bicsICdEZWxoaScsICdLeWl2JywgJ1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf b3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IERFRkFVTFQ7CisKK0lOU0VSVCBJTlRPIHNh bGVzX2xpc3QgKHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNh bGVzX2RhdGUpIFZBTFVFUworICAoJ1RydW1wJywgICAgJ0JlamluZycsICAgICAgICAgMTAwMCwg JzIwMjItMDMtMDEnKSwKKyAgKCdTbWlybm9mZicsICdOZXcgWW9yaycsICAgICAgICA1MDAsICcy MDIyLTAzLTAzJyksCisgICgnRm9yZCcsICAgICAnU3QuIFBldGVyc2J1cmcnLCAyMDAwLCAnMjAy Mi0wMy0wNScpLAorICAoJ0l2YW5vdicsICAgJ1dhcnNhdycsICAgICAgICAgIDc1MCwgJzIwMjIt MDMtMDQnKSwKKyAgKCdEZWV2JywgICAgICdMaXNib24nLCAgICAgICAgICAyNTAsICcyMDIyLTAz LTA3JyksCisgICgnUG9pcm90JywgICAnQmVybGluJywgICAgICAgICAxMDAwLCAnMjAyMi0wMy0w MScpLAorICAoJ01heScsICAgICAgJ09zbG8nLCAgICAgICAgICAgMTIwMCwgJzIwMjItMDMtMDYn KSwKKyAgKCdMaScsICAgICAgICdWbGFkaXZvc3RvaycsICAgIDExNTAsICcyMDIyLTAzLTA5Jyks CisgICgnTWF5JywgICAgICAnT3NsbycsICAgICAgICAgICAxMjAwLCAnMjAyMi0wMy0xMScpLAor ICAoJ0hhbGRlcicsICAgJ0hlbHNpbmtpJywgICAgICAgIDgwMCwgJzIwMjItMDMtMDInKSwKKyAg KCdNdWxsZXInLCAgICdNYWRyaWQnLCAgICAgICAgICA2NTAsICcyMDIyLTAzLTA1JyksCisgICgn U21pdGgnLCAgICAnS3lpdicsICAgICAgICAgICAgMzUwLCAnMjAyMi0wMy0xMCcpLAorICAoJ0dh bmRpJywgICAgJ1dhcnNhdycsICAgICAgICAgIDE1MCwgJzIwMjItMDMtMDgnKSwKKyAgKCdQbGF0 bycsICAgICdMaXNib24nLCAgICAgICAgICA5NTAsICcyMDIyLTAzLTA1Jyk7CisKK0FMVEVSIFRB QkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJ T04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJp ZCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdE ZWxoaScsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZB TFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpKTsKKworU0VMRUNUIHRhYmxlb2lk OjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX2xpc3QgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNz Ojp0ZXh0IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsKKworLS0gVXNlIGluZGV4c2NhbiBm b3IgdGVzdGluZyBpbmRleGVzIGFmdGVyIHNwbGl0dGluZyBwYXJ0aXRpb24KK1NFVCBlbmFibGVf c2Vxc2NhbiA9IE9GRjsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHNhbGVz X2NlbnRyYWwgV0hFUkUgc2FsZXNfc3RhdGUgPSAnV2Fyc2F3JzsKK1NFTEVDVCAqIEZST00gc2Fs ZXNfY2VudHJhbCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdXYXJzYXcnOworRVhQTEFJTiAoQ09TVFMg T0ZGKSBTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3QgV0hFUkUgc2FsZXNfc3RhdGUgPSAnV2Fyc2F3 JzsKK1NFTEVDVCAqIEZST00gc2FsZXNfbGlzdCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdXYXJzYXcn OworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3QgV0hFUkUgc2Fs ZXNwZXJzb25fbmFtZSA9ICdJdmFub3YnOworU0VMRUNUICogRlJPTSBzYWxlc19saXN0IFdIRVJF IHNhbGVzcGVyc29uX25hbWUgPSAnSXZhbm92JzsKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CisK K0RST1AgVEFCTEUgc2FsZXNfbGlzdDsKKworLS0KKy0tIFRlc3QgZm9yOgorLS0gICAqIHNwbGl0 IERFRkFVTFQgcGFydGl0aW9uIHRvIHBhcnRpdGlvbnMgd2l0aCBzcGFjZXMgYmV0d2VlbiBib3Vu ZHM7CistLSAgICogcmFuZG9tIG9yZGVyIG9mIHBhcnRpdGlvbnMgaW4gU1BMSVQgUEFSVElUSU9O IGNvbW1hbmQuCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJ TlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVz X2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJM RSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CisKK0lOU0VS VCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIy LTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMDknKSwKKyAgKDMs ICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1 MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcn KSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0wNycpLAorICAoNywgICdMaScs ICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIw MjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAo MTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAg MzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0x OScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1Nt aXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2Ug U1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfb3Ro ZXJzIERFRkFVTFQsCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMl8xZGVjYWRlIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDMtMTAnKSwKKyAgIFBBUlRJVElPTiBz YWxlc19qYW4yMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgn MjAyMi0wMS0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjJfMWRlY2FkZSBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAyLTEwJyksCisgICBQQVJUSVRJT04g c2FsZXNfYXByMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAo JzIwMjItMDQtMTAnKSk7CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxl c19yYW5nZSBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIHNh bGVzcGVyc29uX2lkOworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworCistLQorLS0gVGVzdCBm b3I6CistLSAgICogc3BsaXQgbm9uLURFRkFVTFQgcGFydGl0aW9uIHRvIHBhcnRpdGlvbnMgd2l0 aCBzcGFjZXMgYmV0d2VlbiBib3VuZHM7CistLSAgICogcmFuZG9tIG9yZGVyIG9mIHBhcnRpdGlv bnMgaW4gU1BMSVQgUEFSVElUSU9OIGNvbW1hbmQuCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3Jh bmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNh bGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxl c19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hbGwgUEFSVElUSU9OIE9GIHNhbGVzX3Jhbmdl IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKKworSU5T RVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIw MjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0wOScpLAorICAo MywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAg NzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0w NycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTA3JyksCisgICg3LCAgJ0xp JywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAn MjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisg ICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAg ICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAz LTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKTsKKworQUxURVIg VEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJU SVRJT04gc2FsZXNfbWFyMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEn KSBUTyAoJzIwMjItMDMtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19qYW4yMDIyXzFkZWNhZGUg Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMS0xMCcpLAorICAgUEFS VElUSU9OIHNhbGVzX2ZlYjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAx JykgVE8gKCcyMDIyLTAyLTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8xZGVjYWRl IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDQtMTAnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xh c3MsICogRlJPTSBzYWxlc19yYW5nZSBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQg Q09MTEFURSAiQyIsIHNhbGVzcGVyc29uX2lkOworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOwor CistLQorLS0gVGVzdCBmb3Igc3BsaXQgbm9uLURFRkFVTFQgcGFydGl0aW9uIHRvIERFRkFVTFQg cGFydGl0aW9uICsgcGFydGl0aW9ucworLS0gd2l0aCBzcGFjZXMgYmV0d2VlbiBib3VuZHMuCist LQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVy c29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkg UEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4y MDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAx JykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBBUlRJVElPTiBP RiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1 LTAxJyk7CisKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAg ICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjIt MDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwg ICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUw LCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScp LAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNz c29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAy Mi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgx MSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAz NTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5 Jyk7CisKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwg SU5UTworICAoUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w NC0wMScpIFRPICgnMjAyMi0wNS0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElU SU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKKworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFM VUVTICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKworU0VMRUNUIHRhYmxl b2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX3JhbmdlIE9SREVSIEJZIHRhYmxlb2lkOjpyZWdj bGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNwZXJzb25faWQ7CisKK0RST1AgVEFCTEUgc2Fs ZXNfcmFuZ2U7CisKKy0tCistLSBUcnkgdG8gU1BMSVQgcGFydGl0aW9uIG9mIGFub3RoZXIgdGFi bGUuCistLQorQ1JFQVRFIFRBQkxFIHQxKGkgaW50LCB0IHRleHQpIFBBUlRJVElPTiBCWSBMSVNU ICh0KTsKK0NSRUFURSBUQUJMRSB0MXBhIFBBUlRJVElPTiBPRiB0MSBGT1IgVkFMVUVTIElOICgn QScpOworQ1JFQVRFIFRBQkxFIHQyIChpIGludCwgdCB0ZXh0KSBQQVJUSVRJT04gQlkgUkFOR0Ug KHQpOworCistLSBFUlJPUjogIHJlbGF0aW9uICJ0MXBhIiBpcyBub3QgYSBwYXJ0aXRpb24gb2Yg cmVsYXRpb24gInQyIgorQUxURVIgVEFCTEUgdDIgU1BMSVQgUEFSVElUSU9OIHQxcGEgSU5UTwor ICAgKFBBUlRJVElPTiB0MmEgRk9SIFZBTFVFUyBGUk9NICgnQScpIFRPICgnQicpLAorICAgIFBB UlRJVElPTiB0MmIgRk9SIFZBTFVFUyBGUk9NICgnQicpIFRPICgnQycpKTsKKworRFJPUCBUQUJM RSB0MjsKK0RST1AgVEFCTEUgdDE7CisKKy0tCistLSBUcnkgdG8gU1BMSVQgcGFydGl0aW9uIG9m IHRlbXBvcmFyeSB0YWJsZS4KKy0tCitDUkVBVEUgVEVNUCBUQUJMRSB0IChpIGludCkgUEFSVElU SU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBURU1QIFRBQkxFIHRwXzBfMiBQQVJUSVRJT04gT0Yg dCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKKworU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9n LnJlZ2NsYXNzLCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCks IGMucmVscGVyc2lzdGVuY2UKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFs b2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFy ZW50ID0gJ3QnOjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMu cmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2Ns YXNzOjpwZ19jYXRhbG9nLnRleHQgQ09MTEFURSAiQyI7CisKKy0tIEVSUk9SOiAgY2Fubm90IGNy ZWF0ZSBhIHBlcm1hbmVudCByZWxhdGlvbiBhcyBwYXJ0aXRpb24gb2YgdGVtcG9yYXJ5IHJlbGF0 aW9uICJ0IgorQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBB UlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04g dHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsKKworQUxURVIgVEFCTEUgdCBTUExJ VCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiBwZ190ZW1wLnRwXzBfMSBGT1Ig VkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiBwZ190ZW1wLnRwXzFfMiBGT1Ig VkFMVUVTIEZST00gKDEpIFRPICgyKSk7CisKKy0tIFBhcnRpdGlvbnMgc2hvdWxkIGJlIHRlbXBv cmFyeS4KK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgcGdfY2F0YWxvZy5wZ19n ZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpLCBjLnJlbHBlcnNpc3RlbmNlCisgIEZST00g cGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKKyAgV0hFUkUg Yy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICd0Jzo6cmVnY2xhc3MKKyAgT1JE RVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0gJ0RF RkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0IENPTExB VEUgIkMiOworCitEUk9QIFRBQkxFIHQ7CisKKy0tIENoZWNrIHRoZSBuZXcgcGFydGl0aW9ucyBp bmhlcml0IHBhcmVudCdzIHRhYmxlc3BhY2UKK0NSRUFURSBUQUJMRSB0IChpIGludCBQUklNQVJZ IEtFWSBVU0lORyBJTkRFWCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UpCisgIFBBUlRJVElP TiBCWSBSQU5HRSAoaSkgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlOworQ1JFQVRFIFRBQkxF IHRwXzBfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKK0FMVEVS IFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8x IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFM VUVTIEZST00gKDEpIFRPICgyKSk7CitTRUxFQ1QgdGFibGVuYW1lLCB0YWJsZXNwYWNlIEZST00g cGdfdGFibGVzCisgIFdIRVJFIHRhYmxlbmFtZSBJTiAoJ3QnLCAndHBfMF8xJywgJ3RwXzFfMicp IEFORCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnCisgIE9SREVSIEJZIHRh YmxlbmFtZSBDT0xMQVRFICJDIiwgdGFibGVzcGFjZSBDT0xMQVRFICJDIjsKK1NFTEVDVCB0YWJs ZW5hbWUsIGluZGV4bmFtZSwgdGFibGVzcGFjZSBGUk9NIHBnX2luZGV4ZXMKKyAgV0hFUkUgdGFi bGVuYW1lIElOICgndCcsICd0cF8wXzEnLCAndHBfMV8yJykgQU5EIHNjaGVtYW5hbWUgPSAncGFy dGl0aW9uX3NwbGl0X3NjaGVtYScKKyAgT1JERVIgQlkgdGFibGVuYW1lIENPTExBVEUgIkMiLCBp bmRleG5hbWUgQ09MTEFURSAiQyIsIHRhYmxlc3BhY2UgQ09MTEFURSAiQyI7CitEUk9QIFRBQkxF IHQ7CisKKy0tIENoZWNrIG5ldyBwYXJ0aXRpb25zIGluaGVyaXRzIHBhcmVudCdzIHRhYmxlIGFj Y2VzcyBtZXRob2QKK0NSRUFURSBBQ0NFU1MgTUVUSE9EIHBhcnRpdGlvbl9zcGxpdF9oZWFwIFRZ UEUgVEFCTEUgSEFORExFUiBoZWFwX3RhYmxlYW1faGFuZGxlcjsKK0NSRUFURSBUQUJMRSB0IChp IGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKSBVU0lORyBwYXJ0aXRpb25fc3BsaXRfaGVhcDsK K0NSRUFURSBUQUJMRSB0cF8wXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBU TyAoMik7CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFS VElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0 cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworU0VMRUNUIGMucmVsbmFtZSwgYS5h bW5hbWUKK0ZST00gcGdfY2xhc3MgYyBKT0lOIHBnX2FtIGEgT04gYy5yZWxhbSA9IGEub2lkCitX SEVSRSBjLm9pZCBJTiAoJ3QnOjpyZWdjbGFzcywgJ3RwXzBfMSc6OnJlZ2NsYXNzLCAndHBfMV8y Jzo6cmVnY2xhc3MpCitPUkRFUiBCWSBjLnJlbG5hbWUgQ09MTEFURSAiQyI7CitEUk9QIFRBQkxF IHQ7CitEUk9QIEFDQ0VTUyBNRVRIT0QgcGFydGl0aW9uX3NwbGl0X2hlYXA7CisKKy0tIFNwbGl0 IHBhcnRpdGlvbiBvZiBhIHRlbXBvcmFyeSB0YWJsZSB3aGVuIG9uZSBvZiB0aGUgcGFydGl0aW9u cyBhZnRlcgorLS0gc3BsaXQgaGFzIHRoZSBzYW1lIG5hbWUgYXMgdGhlIHBhcnRpdGlvbiBiZWlu ZyBzcGxpdAorQ1JFQVRFIFRFTVAgVEFCTEUgdCAoYSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAo YSk7CitDUkVBVEUgVEVNUCBUQUJMRSB0cF8wIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJP TSAoMCkgVE8gKDIpOworQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMCBJTlRPCisg IChQQVJUSVRJT04gcGdfdGVtcC50cF8wIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAg UEFSVElUSU9OIHBnX3RlbXAudHBfMSBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7CitEUk9Q IFRBQkxFIHQ7CisKKy0tIENoZWNrIGRlZmF1bHRzIGFuZCBjb25zdHJhaW50cyBvZiBuZXcgcGFy dGl0aW9ucworQ1JFQVRFIFRBQkxFIHRfYmlnaW50ICgKKyAgYiBiaWdpbnQsCisgIGkgaW50IERF RkFVTFQgKDMrMTApLAorICBqIGludCBERUZBVUxUIDEwMSwKKyAgayBpbnQgR0VORVJBVEVEIEFM V0FZUyBBUyAoYisxMCkgU1RPUkVECispCitQQVJUSVRJT04gQlkgUkFOR0UgKGIpOworQ1JFQVRF IFRBQkxFIHRfYmlnaW50X2RlZmF1bHQgUEFSVElUSU9OIE9GIHRfYmlnaW50IERFRkFVTFQ7Cist LSBTaG93IGRlZmF1bHRzL2NvbnN0cmFpbnRzIGJlZm9yZSBTUExJVCBQQVJUSVRJT04KK1xkKyB0 X2JpZ2ludAorXGQrIHRfYmlnaW50X2RlZmF1bHQKK0FMVEVSIFRBQkxFIHRfYmlnaW50IFNQTElU IFBBUlRJVElPTiB0X2JpZ2ludF9kZWZhdWx0IElOVE8KKyAgKFBBUlRJVElPTiB0X2JpZ2ludF8w MV8xMCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxMCksCisgICBQQVJUSVRJT04gdF9iaWdpbnRf ZGVmYXVsdCBERUZBVUxUKTsKKy0tIFNob3cgZGVmYXVsdHMvY29uc3RyYWludHMgYWZ0ZXIgU1BM SVQgUEFSVElUSU9OCitcZCsgdF9iaWdpbnRfZGVmYXVsdAorXGQrIHRfYmlnaW50XzAxXzEwCitE Uk9QIFRBQkxFIHRfYmlnaW50OworCistLSBUZXN0IHBlcm1pc3Npb24gY2hlY2tzLiAgVGhlIHVz ZXIgbmVlZHMgdG8gb3duIHRoZSBwYXJlbnQgdGFibGUgYW5kIHRoZQorLS0gdGhlIHBhcnRpdGlv biB0byBzcGxpdCB0byBkbyB0aGUgc3BsaXQuCitDUkVBVEUgUk9MRSByZWdyZXNzX3BhcnRpdGlv bl9zcGxpdF9hbGljZTsKK0NSRUFURSBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsK K0dSQU5UIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSBUTyByZWdyZXNzX3Bh cnRpdGlvbl9zcGxpdF9hbGljZTsKK0dSQU5UIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0 X3NjaGVtYSBUTyByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CisKK1NFVCBTRVNTSU9OIEFV VEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitDUkVBVEUgVEFCTEUg dCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8yIFBB UlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworCitTRVQgU0VTU0lPTiBB VVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK0FMVEVSIFRBQkxFIHQg U1BMSVQgUEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxV RVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00g KDEpIFRPICgyKSk7IC0tZXJyb3IKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKKworQUxU RVIgVEFCTEUgdCBPV05FUiBUTyByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CitTRVQgU0VT U0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK0FMVEVSIFRB QkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZP UiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVT IEZST00gKDEpIFRPICgyKSk7IC0tZXJyb3IKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsK KworQUxURVIgVEFCTEUgdHBfMF8yIE9XTkVSIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2Jv YjsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYm9i OworQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElP TiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfMV8y IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsgLS1vaworUkVTRVQgU0VTU0lPTiBBVVRIT1JJ WkFUSU9OOworCitEUk9QIFRBQkxFIHQ7CisKKy0tIFRlc3Q6IG93bmVyIG9mIG5ldyBwYXJ0aXRp b25zIHNob3VsZCBiZSB0aGUgc2FtZSBhcyBvd25lciBvZiBzcGxpdCBwYXJ0aXRpb24KK0NSRUFU RSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKKworU0VUIFNFU1NJT04g QVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK0NSRUFURSBUQUJM RSB0cF8wXzIoaSBpbnQpOworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworCitBTFRFUiBU QUJMRSB0IEFUVEFDSCBQQVJUSVRJT04gdHBfMF8yIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIp OworCistLSBPd25lciBpcyAncmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2UnOgorXGR0IHRw XzBfMgorCitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFS VElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0 cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworCistLSBPd25lciBzaG91bGQgYmUg J3JlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlJzoKK1xkdCB0cF8wXzEKK1xkdCB0cF8xXzIK KworRFJPUCBUQUJMRSB0OworCistLSBUZXN0OiBpbmRleCBvZiBuZXcgcGFydGl0aW9ucyBzaG91 bGQgYmUgY3JlYXRlZCB3aXRoIHNhbWUgb3duZXIgYXMgc3BsaXQKKy0tIHBhcnRpdGlvbgorU0VU IFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK0NS RUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJM RSB0cF8xMF8yMCBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApOwor SU5TRVJUIElOVE8gdCBWQUxVRVMgKDExKSwgKDE2KTsKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNU SU9OIHJ1bl9tZShpbnRlZ2VyKSBSRVRVUk5TIGludGVnZXIgQVMgJCQKK0JFR0lOCisgIFJBSVNF IE5PVElDRSAneW91IGFyZSBydW5uaW5nIG1lIGFzICUnLCBDVVJSRU5UX1VTRVI7CisgIFJFVFVS TiAkMTsKK0VORAorJCQgTEFOR1VBR0UgUExQR1NRTCBJTU1VVEFCTEU7CisKKy0tIE93bmVyIGlz ICdyZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZSc6CitDUkVBVEUgSU5ERVggT04gdCAocnVu X21lKGkpKTsKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKKworLS0gT3duZXIgc2hvdWxk IGJlICdyZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZSc6CitBTFRFUiBUQUJMRSB0IFNQTElU IFBBUlRJVElPTiB0cF8xMF8yMCBJTlRPCisgIChQQVJUSVRJT04gdHBfMTBfMTUgRk9SIFZBTFVF UyBGUk9NICgxMCkgVE8gKDE1KSwKKyAgIFBBUlRJVElPTiB0cF8xNV8yMCBGT1IgVkFMVUVTIEZS T00gKDE1KSBUTyAoMjApKTsKKworRFJPUCBUQUJMRSB0OworRFJPUCBGVU5DVElPTiBydW5fbWUo aW50ZWdlcik7CisKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEg RlJPTSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK1JFVk9LRSBBTEwgT04gU0NIRU1B IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgRlJPTSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7 CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitEUk9QIFJPTEUgcmVn cmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOworCistLSBUZXN0IGZvciBoYXNoIHBhcnRpdGlvbmVk IHRhYmxlCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBIQVNIKGkpOworQ1JF QVRFIFRBQkxFIHRwMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgMiwg UkVNQUlOREVSIDApOworQ1JFQVRFIFRBQkxFIHRwMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVT IFdJVEggKE1PRFVMVVMgMiwgUkVNQUlOREVSIDEpOworCistLSBFUlJPUjogIHBhcnRpdGlvbiBv ZiBoYXNoLXBhcnRpdGlvbmVkIHRhYmxlIGNhbm5vdCBiZSBzcGxpdAorQUxURVIgVEFCTEUgdCBT UExJVCBQQVJUSVRJT04gdHAxIElOVE8KKyAgKFBBUlRJVElPTiB0cDFfMSBGT1IgVkFMVUVTIFdJ VEggKE1PRFVMVVMgNCwgUkVNQUlOREVSIDApLAorICAgUEFSVElUSU9OIHRwMV8yIEZPUiBWQUxV RVMgV0lUSCAoTU9EVUxVUyA0LCBSRU1BSU5ERVIgMikpOworCistLSBFUlJPUjogIGxpc3Qgb2Yg bmV3IHBhcnRpdGlvbnMgc2hvdWxkIGNvbnRhaW4gYXQgbGVhc3QgdHdvIHBhcnRpdGlvbnMKK0FM VEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwMSBJTlRPCisgIChQQVJUSVRJT04gdHAxXzEg Rk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDQsIFJFTUFJTkRFUiAwKSk7CisKK0RST1AgVEFCTEUg dDsKKworCistLSBUZXN0IGZvciBzcGxpdCBwYXJ0aXRpb24gcHJvcGVydGllczoKKy0tICogU1RB VElTVElDUyBpcyBlbXB0eQorLS0gKiBDT01NRU5UIGlzIGVtcHR5CistLSAqIERFRkFVTFRTIGFy ZSB0aGUgc2FtZSBhcyBERUZBVUxUUyBmb3IgcGFydGl0aW9uZWQgdGFibGUKKy0tICogU1RPUkFH RSBpcyB0aGUgc2FtZSBhcyBTVE9SQUdFIGZvciBwYXJ0aXRpb25lZCB0YWJsZQorLS0gKiBHRU5F UkFURUQgYW5kIENPTlNUUkFJTlRTIGFyZSB0aGUgc2FtZSBhcyBHRU5FUkFURUQgYW5kIENPTlNU UkFJTlRTIGZvciBwYXJ0aXRpb25lZCB0YWJsZQorLS0gKiBUUklHR0VSUyBhcmUgdGhlIHNhbWUg YXMgVFJJR0dFUlMgZm9yIHBhcnRpdGlvbmVkIHRhYmxlCisKK0NSRUFURSBUQUJMRSB0CisoaSBp bnQgTk9UIE5VTEwsCisgdCB0ZXh0IFNUT1JBR0UgRVhURU5ERUQgQ09NUFJFU1NJT04gcGdseiBE RUZBVUxUICdkZWZhdWx0X3QnLAorIGIgYmlnaW50LAorIGQgZGF0ZSBHRU5FUkFURUQgQUxXQVlT IGFzICgnMjAyMi0wMS0wMScpIFNUT1JFRCkgUEFSVElUSU9OIEJZIFJBTkdFIChhYnMoaSkpOwor Q09NTUVOVCBPTiBDT0xVTU4gdC5pIElTICd0MS5pJzsKKworQ1JFQVRFIFRBQkxFIHRwX3gKKyhp IGludCBOT1QgTlVMTCwKKyB0IHRleHQgU1RPUkFHRSBNQUlOIERFRkFVTFQgJ2RlZmF1bHRfdHBf eCcsCisgYiBiaWdpbnQsCisgZCBkYXRlIEdFTkVSQVRFRCBBTFdBWVMgYXMgKCcyMDIyLTAyLTAy JykgU1RPUkVEKTsKK0FMVEVSIFRBQkxFIHQgQVRUQUNIIFBBUlRJVElPTiB0cF94IEZPUiBWQUxV RVMgRlJPTSAoMCkgVE8gKDIpOworQ09NTUVOVCBPTiBDT0xVTU4gdHBfeC5pIElTICd0cF94Lmkn OworCitDUkVBVEUgU1RBVElTVElDUyB0X3N0YXQgKERFUEVOREVOQ0lFUykgb24gaSwgYiBmcm9t IHQ7CitDUkVBVEUgU1RBVElTVElDUyB0cF94X3N0YXQgKERFUEVOREVOQ0lFUykgb24gaSwgYiBm cm9tIHRwX3g7CisKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgdF9iX2NoZWNrIENIRUNL IChiID4gMCk7CitBTFRFUiBUQUJMRSB0IEFERCBDT05TVFJBSU5UIHRfYl9jaGVjazEgQ0hFQ0sg KGIgPiAwKSBOT1QgRU5GT1JDRUQ7CitBTFRFUiBUQUJMRSB0IEFERCBDT05TVFJBSU5UIHRfYl9j aGVjazIgQ0hFQ0sgKGIgPiAwKSBOT1QgVkFMSUQ7CitBTFRFUiBUQUJMRSB0IEFERCBDT05TVFJB SU5UIHRfYl9ubiBOT1QgTlVMTCBiIE5PVCBWQUxJRDsKKworSU5TRVJUIElOVE8gdHBfeChpLCB0 LCBiKSBWQUxVRVMoMCwgREVGQVVMVCwgMSk7CitJTlNFUlQgSU5UTyB0cF94KGksIHQsIGIpIFZB TFVFUygxLCBERUZBVUxULCAyKTsKKworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gdHJpZ2dl cl9mdW5jdGlvbigpIFJFVFVSTlMgdHJpZ2dlciBMQU5HVUFHRSAncGxwZ3NxbCcgQVMKKyRCT0RZ JAorQkVHSU4KKyAgUkFJU0UgTk9USUNFICd0cmlnZ2VyKCUpIGNhbGxlZDogYWN0aW9uID0gJSwg d2hlbiA9ICUsIGxldmVsID0gJScsIFRHX0FSR1ZbMF0sIFRHX09QLCBUR19XSEVOLCBUR19MRVZF TDsKKyAgUkVUVVJOIG5ldzsKK0VORDsKKyRCT0RZJDsKKworQ1JFQVRFIFRSSUdHRVIgdF9iZWZv cmVfaW5zZXJ0X3Jvd190cmlnZ2VyIEJFRk9SRSBJTlNFUlQgT04gdCBGT1IgRUFDSCBST1cKKyAg RVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5jdGlvbigndCcpOworQ1JFQVRFIFRSSUdHRVIg dHBfeF9iZWZvcmVfaW5zZXJ0X3Jvd190cmlnZ2VyIEJFRk9SRSBJTlNFUlQgT04gdHBfeCBGT1Ig RUFDSCBST1cKKyAgRVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5jdGlvbigndHBfeCcpOwor CitcZCsgdHBfeAorQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfeCBJTlRPCisgIChQ QVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9O IHRwX3ggRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworXGQrIHRwX3gKKworSU5TRVJUIElO VE8gdChpLCB0LCBiKSBWQUxVRVMoMSwgREVGQVVMVCwgMyk7CitTRUxFQ1QgdGFibGVvaWQ6OnJl Z2NsYXNzLCAqIEZST00gdCBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFU RSAiQyIsIGI7CitEUk9QIFRBQkxFIHQ7CitEUk9QIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24o KTsKKworCistLSBUZXN0IGZvciByZWNvbXB1dGF0aW9uIG9mIHN0b3JlZCBnZW5lcmF0ZWQgY29s dW1ucy4KK0NSRUFURSBUQUJMRSB0IChpIGludCwgdGFiX2lkIGludCBnZW5lcmF0ZWQgYWx3YXlz IGFzICh0YWJsZW9pZCkgc3RvcmVkKSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRB QkxFIHRwXzBfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKK0FM VEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgY2MgQ0hFQ0sodGFibGVvaWQgPD4gMTIzNDU2Nzg5 KTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgwKSwgKDEpOworCistLSBTaG91bGQgYmUgMSBiZWNh dXNlIHBhcnRpdGlvbiBpZGVudGlmaWVyIGZvciByb3cgd2l0aCBpPTAgaXMgdGhlIHNhbWUgYXMK Ky0tIHBhcnRpdGlvbiBpZGVudGlmaWVyIGZvciByb3cgd2l0aCBpPTEuCitTRUxFQ1QgY291bnQo KikgRlJPTSB0IFdIRVJFIGkgPSAwIEFORCB0YWJfaWQgSU4gKFNFTEVDVCB0YWJfaWQgRlJPTSB0 IFdIRVJFIGkgPSAxKTsKKworLS0gInRhYl9pZCIgY29sdW1uIChzdG9yZWQgZ2VuZXJhdGVkIGNv bHVtbikgd2l0aCAidGFibGVvaWQiIGF0dHJpYnV0ZSByZXF1aXJlcworLS0gcmVjb21wdXRhdGlv biBoZXJlLgorQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBB UlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04g dHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsKKworLS0gU2hvdWxkIGJlIDAgYmVj YXVzZSBwYXJ0aXRpb24gaWRlbnRpZmllciBmb3Igcm93IHdpdGggaT0wIGlzIGRpZmZlcmVudCBm cm9tCistLSBwYXJ0aXRpb24gaWRlbnRpZmllciBmb3Igcm93IHdpdGggaT0xLgorU0VMRUNUIGNv dW50KCopIEZST00gdCBXSEVSRSBpID0gMCBBTkQgdGFiX2lkIElOIChTRUxFQ1QgdGFiX2lkIEZS T00gdCBXSEVSRSBpID0gMSk7CisKK0RST1AgVEFCTEUgdDsKKworCitSRVNFVCBzZWFyY2hfcGF0 aDsKKworLS0KK0RST1AgU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWE7CitEUk9QIFNDSEVN QSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMjsKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVu dC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXgg OWRkNjViMTAyNTQuLjE2MWNiZWM0NmFmIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQv dHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAt MjgwMCw2ICsyODAwLDcgQEAgU2ltcGxlU3RhdHMKIFNpbXBsZVN0cmluZ0xpc3QKIFNpbXBsZVN0 cmluZ0xpc3RDZWxsCiBTaW5nbGVCb3VuZFNvcnRJdGVtCitTaW5nbGVQYXJ0aXRpb25TcGVjCiBT aXplCiBTa2lwUGFnZXMKIFNraXBTdXBwb3J0CkBAIC0yODY4LDYgKzI4NjksNyBAQCBTcGVjaWFs Sm9pbkluZm8KIFNwaW5EZWxheVN0YXR1cwogU3BsaXRJbnRlcnZhbAogU3BsaXRMUgorU3BsaXRQ YXJ0aXRpb25Db250ZXh0CiBTcGxpdFBhZ2VMYXlvdXQKIFNwbGl0UG9pbnQKIFNwbGl0VGV4dE91 dHB1dERhdGEKLS0gCjIuMzkuNSAoQXBwbGUgR2l0LTE1NCkKCg== --0000000000001d74a30645b1b5b7--