From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.4 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 109F7C433DB for ; Tue, 2 Feb 2021 15:33:43 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id BC87E64E9A for ; Tue, 2 Feb 2021 15:33:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235404AbhBBPdI (ORCPT ); Tue, 2 Feb 2021 10:33:08 -0500 Received: from sonic314-26.consmr.mail.ne1.yahoo.com ([66.163.189.152]:46043 "EHLO sonic314-26.consmr.mail.ne1.yahoo.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235591AbhBBPbC (ORCPT ); Tue, 2 Feb 2021 10:31:02 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1612279813; bh=o9Utnt/GheKo4BGlFZv4mwXrs9bir2pDzEKHZnNw4lY=; h=Subject:To:Cc:References:From:Date:In-Reply-To:From:Subject:Reply-To; b=TbZxMS3XJNcLhv9OvhM0lSqVXVQ9dNhEJHf3lqxPux1/LRHJ/AJs3ej9C/WZTItXn9VuIQaDbBAn6S1hv5GIRZHP079H1pay2wtifThP0Bz6hUu0iB3Z3hEsT0hpN+a254ggNnWsaJ20C7rXlZqNKZaq4KZ1jq2Bc/0Bmo9qztU3nq+hGQ6tUEhB7WnNpu7cHJy3Dd7Tl8SdYMP+eYe5d9nxAKN40T10AlImAMrxZq0FkkbppNWvchHbEII3F4faWOWfOkL8B69yfINHbUPhgCVg0Gj+IvqtJbaUYU0I7xwlB9ybiuTanjeMc+tNY6u2WbXr4pq/6YOrfHAGeQdddA== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1612279813; bh=vocZOY4W/mBWV2WvvIC4WgXyTlaS+dcz5IhqhWL6LV1=; h=Subject:To:From:Date:From:Subject:Reply-To; b=jiae8qg5Eyt/etoMbsDypOm/A/X15ccjZfIgPBHaAWr253Odzo5tr+GInZMi0yviNhFssintSNmtwyoTd6heH7MStHqkp/zlLzuxuGuS/tUNeTjNz9uJR3VF450apw1A34BrFqLAqy3+EBdDhuEEpAfmuJWIZouWvYZFHJoIfQRA/LXKe7v68txhbTWb/2YbpzkZXwlErUOq2fmoVYWj0OrvK3o7KfXbIQgOTM6yMMIjes3rv/+NiLxzuqBgmH77x8SUB4j97WajeqiDWXxQGzPP7jN4MdPuqH9kdy6z/q1kN8ilCVHE6LvWcbLbT+kb4Ko156Yatd2Cedxvf9Vv3Q== X-YMail-OSG: NfBB.TsVM1l_jR2AiNHowANx51uTdIhA6NyXV_5xzHJCXEi9bKhxu_ZbkJ9afuY c0s42CRx8_3RCvCll4HC28PFfavjU8xBzMGA82XkTm0IfkO8qK4MvNMSkVoJTUyK_pDWAG8Y4S56 04yv929oRpdTzU.NV2JHyfw4YJOvg073.Pew2gzNHiRLm7qmIY6llFCDxeQEVmYH6Ul7RuLRCLe2 Kwa9WRRfiQSBHmSLLq1zhM7SL58zhDlo_VdcK2V8PCGEJIp3yqdxQP8anidyx0aae1juVct1K7K6 l_SzhstS0QPs6K23wh1ja.rCAzrIrfm9.9F7eh9FV56_p0uT_FbMAvSHz_mjyQm5nrMUFqDHLAac SOnpusqCBYuaomYqRJJCkDGh2QWzcWBk8r0pFraS5OrsTy32GFy2Mb8KoQvpzdEr93tTfeKMXl4p EOGCoIcpJK0Hb_wHiXgsLUzIgrPr_iq6FZXjCUnx2Q9CXtWYzSoEvp5A8nTWlP7Gz0LhUTqVPLRE snUztO4j5uX3lavVmTyV2Sf1GZVXJq_7aDPI1sVAwxHHW3WDKUCG.zHTwP9CZihGiaRp11OpkGLF aJmGY5.Db5xnsbgCjboL4cVUsbNDc2gDdOOfU2a1vxIy0sen.XxzZ06YMJJaJQusKsna7368aDTB GElmOs_EVnD7SSET6wz5lhQIPw036FlVSAvx6awLOn1I_OL3WKSR0AztDHbHqS9qNnYYtLb2SfHx lMMqnx8TJyxrzPtyPta0a70WJh.HsM0Ae_mL8zut_ORArsG9LncF_OQxg01cS9w6ki0LrZq_4rri SlJW9ZRDKtW3lCOSIf5SMYYu2U3XVCzgwP3e1VYdQwkmgpetVMjrIpUF1lqtAElgsU8auWMgFstH 27X6v7VGI4x8esAXzfj3QPAv2r41bKz8NV23PEpKUU4itEVYh8.w0JL3M2ol3ydB_QEWBohIAf6u 1DkPA5fgh74DO5fxswnO9JRz2tJ.zYSlGl0iKwg.1DjmJf429RedFWbDram.ivN3nm56b7S2hGql jjrYlPjsj24z3imKQyrDIHZ3AT_Yd4nxcOwQISinUygNaxvNyq.TyH2Yxu78V_erVqsHTw48RKXt XO579qzVaiHyPOAytyTAjkrLoaBhMsPXqIqe.2pW6hKctuehJ72XTw3FaejesBLWfmRFkVR0Z_.O NKpnE34E0nIQ1Jjz.rOFZ50R3IxtGuOElelCGf.0iQzpd9jCCAhNYXsksbhGHzePS.nqInBM8Oqa eWFrKC_QkeXnMcRKW0TUkJdA4INscIZ5L0l0dZBN9y3vt0qcv8mjj1lKVL16FjYuzQO06NPKWhSX _ZuxQH6TIwMnO_PhiE9LwqHCh4r3IwbyRjnRlOsJeEK854EnSk4U5gI.x6jqJC_FqXmwa3B9515_ qoaJ3KPql5LPUr9.oe4R444m7I8fzNtodQweNzSHcZFMeVCar_f3J7euzl.wWsDThMn87yyWW0cw jMq0CArXVGubZ8Oi2VCzYEM3DPgN9oaFG6H9pYE16t2qzmFtg0rRP0_SUMhP_ok9vH83anCmjdI. KmYOjr.ORh2D5aPswWKv5HnnBUx9503mVUE4S2D65EmWwBnOfa.xqUT7z4TdmpY47UcysvJJJry7 xJ0KxFhH7EsPR.f7ZmdI.JPbZSyPAhysYof5OVevTeRlFtge_Jem8vpZVPWOQD_pTR3pv0phs9gs UAIMky453R9YZzwY69oBnDo1.L7NQR_usho7iTESeXVtnWyUtFOEN0JMHoF5iJeKWdm3TuqOsPjJ B6V.SgbAABLPsJz7qTI1SkLhVchI42XjZRTYuGduy3VxnTiLNiRuY1L1Zhn8FcQOWbHSQ8f71Reg 52c94PDEO0rZHJeUsjbV8kRnlohgbH8hzD2DEP73AayPkzqYHZQCgkvMRj9tnYjeCUayzXia9wdn yTlyaapOt5qXGfAaI4G1D3.Z2duN9KrPkuvJ_TwMVgMBmV8qzHu8TY3mjSfjLKuEqh4xnhALJGQ1 hpPqOMl2CHCK5oKNb.5106agBiuJbFMePhblaUxP6NtQmnHyRMKhM05H3dYWvqK0V2nu9DaL1Ede 6Nr3x6jTxyl8ItYaHtaEaGR0D8uuIeJ.YTB460N8o8qpb8aV8IcDa7RdTi791fBqs05ZIzi_DLAG HwVxnIv9Wh7H2xcEYS8L4mOO5cq9R5Wl5qrvUlD7S5QVo61sqGoJrrO5DbUVcEoPlEEdPETA8QBY sbTXeJK8YRx_uWtFeF_GinTSXEW1OvmAr75kcgMPMxl.uA1xq_T9hz8cRNzecRp1swLRxP50XHdY tpF.nGJJwF5EjH9wOIKYeDaUYugkt4NcFaUONKXwq4oj1swPsTq1vlmCHUxxm4vc9gHfYrYYnXLC 0REZP_khXlAaldYutQjRlzCj0jOZOc3e2DHinKhCmrcVFvtjjzRpdjIuvojWfTuR.c6cPkRR1Uev tV0OzocN06SzStAqZ_rEGUaBeAFjOFKuVGT9bWlZ555Aa4p9WyXr7jMJm_pOy9vMDiZWeIuMMXh_ zyIM0w_0MNUWWq3UEgb9NRJ8f0tCqwYC40tVZxTRsZX890uHkJLEYOeYSgbT.q1S8P5_jiN6p1Uw pOKQ4VU1H0KOFksiHZTpFVDsWjts15tPz3DX9b4CSMEj5M.4vAgFsRmElQ4IwuXz_LO5l5mb2IRT Bd3Xh6dlHyINoKgIHVCUknyysFEOLS6kyR2Z0wpcObNf4QnpjBvJHWRsWXtEC0O37wB4MGPLlC6k 6OM1oGgrUhB6vWKRFvLwlqwsPD6JQQdDbfu6iQdYdCFgBGrjJh3.Qu_pS5yz625uuYuxxPxrabuk ISZ50Yfm8hqJQHsxg6s4XRE1YY5ETg_QH00zn05.1D4UQqgVhpGiUqgnCSkf.OTEpKdqZcNRSd1z mobivn2yJYV90nRPy49nLOLaEdes2UPWTCdankseCVPaQcxpir2afLvvMXiMHaATV6FH3Gg29t3y kxVrIJojIxePRDG2lp8uKsbaKjDkoYCPWcX4pTaTpsqr.Xv_SFWaFTz4viamTR0dd_X4YnLWtEz6 mb90WzxjelrnK3dNi6vV1hCtArK6Lrb_.25s_6u1RGxok235P.gQxmEHvYDA_Ijw- Received: from sonic.gate.mail.ne1.yahoo.com by sonic314.consmr.mail.ne1.yahoo.com with HTTP; Tue, 2 Feb 2021 15:30:13 +0000 Received: by smtp418.mail.gq1.yahoo.com (VZM Hermes SMTP Server) with ESMTPA ID 152b727c9634b76c0302c24cc85f8c7b; Tue, 02 Feb 2021 15:30:08 +0000 (UTC) Subject: Re: [PATCH v24 00/25] LSM: Module stacking for AppArmor To: Topi Miettinen , casey.schaufler@intel.com, jmorris@namei.org, linux-security-module@vger.kernel.org, selinux@vger.kernel.org Cc: linux-audit@redhat.com, keescook@chromium.org, john.johansen@canonical.com, penguin-kernel@i-love.sakura.ne.jp, paul@paul-moore.com, sds@tycho.nsa.gov, linux-kernel@vger.kernel.org, Casey Schaufler References: <20210126164108.1958-1-casey.ref@schaufler-ca.com> <20210126164108.1958-1-casey@schaufler-ca.com> <31ba0fe7-afdf-8f7d-e7a7-8f15d8c690a4@gmail.com> From: Casey Schaufler Message-ID: Date: Tue, 2 Feb 2021 07:30:06 -0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.6.1 MIME-Version: 1.0 In-Reply-To: <31ba0fe7-afdf-8f7d-e7a7-8f15d8c690a4@gmail.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 Content-Language: en-US X-Mailer: WebService/1.1.17648 mail.backend.jedi.jws.acl:role.jedi.acl.token.atz.jws.hermes.yahoo Apache-HttpAsyncClient/4.1.4 (Java/11.0.8) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org T24gMi8yLzIwMjEgNDowNSBBTSwgVG9waSBNaWV0dGluZW4gd3JvdGU6DQo+IE9uIDI2LjEu MjAyMSAxOC40MCwgQ2FzZXkgU2NoYXVmbGVyIHdyb3RlOg0KPj4gVGhpcyBwYXRjaHNldCBw cm92aWRlcyB0aGUgY2hhbmdlcyByZXF1aXJlZCBmb3INCj4+IHRoZSBBcHBBcm1vciBzZWN1 cml0eSBtb2R1bGUgdG8gc3RhY2sgc2FmZWx5IHdpdGggYW55IG90aGVyLg0KPg0KPiBJbiBt eSB0ZXN0LCB3aGVuIGtlcm5lbCBjb21tYW5kIGxpbmUgaGFzIGFwcGFybW9yIGJlZm9yZSBz ZWxpbnV4IGluIGxzbT0gZW50cnksIHRoZSBib290IGlzIG5vdCBzdWNjZXNzZnVsIHdpdGgg ZW5mb3JjaW5nPTE6DQo+IHN5c3RlbWRbMV06IEZhaWxlZCB0byBjb21wdXRlIGluaXQgbGFi ZWwsIGlnbm9yaW5nLg0KPiBzeXN0ZW1kWzFdOiBGYWlsZWQgdG8gc2V0IFNFTGludXggc2Vj dXJpdHkgY29udGV4dCBzeXN0ZW1fdTpvYmplY3RfcjpjZ3JvdXBfdDpzMCBmb3IgL3N5cy9m cy9jZ3JvdXA6IEludmFsaWQgYXJndW1lbnQNCj4gc3lzdGVtZFsxXTogRmFpbGVkIHRvIHNl dCBTRUxpbnV4IHNlY3VyaXR5IGNvbnRleHQgc3lzdGVtX3U6b2JqZWN0X3I6cHN0b3JlX3Q6 czAgZm9yIC9zeXMvZnMvcHN0b3JlOiBJbnZhbGlkIGFyZ3VtZW50DQo+IHN5c3RlbWRbMV06 IEZhaWxlZCB0byBzZXQgU0VMaW51eCBzZWN1cml0eSBjb250ZXh0IHN5c3RlbV91Om9iamVj dF9yOnN5c2ZzX3Q6czAgZm9yIC9zeXMvZmlybXdhcmUvZWZpL2VmaXZhcnM6IEludmFsaWQg YXJndW1lbnQNCj4gLi4uDQo+IEZhaWxlZCB0byBkcm9wIGNhcGFiaWxpdHkgYm91bmRpbmcg c2V0IG9mIHVzZXJtb2RlIGhlbHBlcnM6IE9wZXJhdGlvbiBub3QgcGVybWl0dGVkDQo+IEZh aWxlZCB0byBkcm9wIGNhcGFiaWxpdHkgYm91bmRpbmcgc2V0IG9mIHVzZXJtb2RlIGhlbHBl cnMuDQo+IHN5c3RlbWRbMV06IEZyZWV6aW5nIGV4ZWN1dGlvbi4NCg0KU3lzdGVtZCBoYXMg ZXh0ZW5zaXZlIHN1cHBvcnQgZm9yIFNFTGludXguIFRoYXQncyBnb29kLg0KSXQgZG9lc24n dCBoYXZlIGFuIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCBuZWVkcyB0byBiZSBkb25lDQppZiBT RUxpbnV4IGlzIGFjdGl2ZSBidXQgbm90IHRoZSBkZWZhdWx0IHNlY3VyaXR5IG1vZHVsZQ0K Zm9yIGludGVyZmFjZXMgaW5jbHVkaW5nIFNPX1BFRVJTRUMgYW5kIC9wcm9jLyovYXR0ci8q Lg0KVGhhdCdzIGdvaW5nIHRvIHRha2Ugc29tZSB3b3JrLg0KDQo+DQo+IFByb2JhYmx5IFNF TGludXggbGlicmFyaWVzIGNhbid0IGZpbmQgb3Igc2V0IHRoZSBsYWJlbHMgZm9yIHRoZSBQ SUQxIG9yIGFueSBmaWxlIHN5c3RlbXMuIEJlZm9yZSB0aGUgaW5pdCBsYWJlbCBtZXNzYWdl LCBzeXN0ZW1kIGNhbGxzIGdldGNvbl9yYXcoKSwgZ2V0ZmlsZWNvbl9yYXcoKSwgc3RyaW5n X3RvX3NlY3VyaXR5X2NsYXNzKCkgYW5kIHNlY3VyaXR5X2NvbXB1dGVfY3JlYXRlX3Jhdygp LCBzbyBvbmUgb2YgdGhlc2UgZG9uJ3QgdW5kZXJzdGFuZCB0aGUgTFNNIHN0YWNraW5nLg0K DQpUaGF0IGlzIGNvcnJlY3QuDQoNCj4NCj4gQWxzbyB0aGUgcG9saWN5IG5lZWRzIHVwZGF0 aW5nIHRvIGhhbmRsZSBwcm9jZXNzMjpzZXRkaXNwbGF5Og0KPiBTRUxpbnV4OsKgIFBlcm1p c3Npb24gc2V0ZGlzcGxheSBpbiBjbGFzcyBwcm9jZXNzMiBub3QgZGVmaW5lZCBpbiBwb2xp Y3kuDQo+IFNFTGludXg6IHRoZSBhYm92ZSB1bmtub3duIGNsYXNzZXMgYW5kIHBlcm1pc3Np b25zIHdpbGwgYmUgZGVuaWVkDQo+DQo+IFdpdGggZW5mb3JjaW5nPTAsIG1hbnkgc2Vydmlj ZXMgc3RhcnQsIGJ1dCBmb3IgZXhhbXBsZSBzeXN0ZW1kLWpvdXJuYWxkIGRvZXNuJ3QuIFRo aXMgaXMgcHJvYmFibHkgcmVsYXRlZCB0byB0aGUgZWFybGllciBwcm9ibGVtIHdpdGggbGFi ZWxzIChtYXliZSBsaWJyYXJpZXMgdHJ5IHRvIHVzZSBTRUxpbnV4IGxhYmVscyB3aGVyZSBr ZXJuZWwgd2FudHMgQXBwQXJtb3IgcHJvZmlsZXMpOg0KPiBzeXN0ZW1kWzFdOiBGYWlsZWQg dG8gc2V0IFNFTGludXggc2VjdXJpdHkgY29udGV4dCBzeXN0ZW1fdTpvYmplY3Rfcjppbml0 X3J1bnRpbWVfdDpzMCBmb3IgL3J1bi9zeXN0ZW1kL3VuaXRzL2ludm9jYXRpb246c3lzdGVt ZC11c2VyLXNlc3Npb25zLnNlcnZpY2U6IEludmFsaWQgYXJndW1lbnQNCg0KVGhpcyBpcyBh bHNvIGFuIGFydGlmYWN0IG9mIHN5c3RlbWQgc2VlaW5nIEFwcEFybW9yIGluZm9ybWF0aW9u DQppbnN0ZWFkIG9mIFNFTGludXggY29udGV4dHMuDQoNCj4NCj4gU3dpdGNoaW5nIHRoZSBv cmRlciBzbyB0aGF0IGFwcGFybW9yIGlzIGFmdGVyIHNlbGludXgsIGJvb3QgaXMgc3VjY2Vz c2Z1bC4gTG9hZGluZyBBcHBBcm1vciBwcm9maWxlcyBuZWVkcyBhIHBlcm1pc3Npb24gZnJv bSBTRUxpbnV4Og0KPg0KPiBGZWIgMDIgMDg6NTM6MTUgYXVkaXRbOTYzXTogQVZDIGF2YzrC oCBkZW5pZWTCoCB7IG1hY19hZG1pbiB9IGZvcsKgIHBpZD05NjMgY29tbT0iYXBwYXJtb3Jf cGFyc2VyIiBjYXBhYmlsaXR5PTMzIHNjb250ZXh0PXN5c3RlbV91OnN5c3RlbV9yOmluaXRy Y190OnMwIHRjb250ZXh0PXN5c3RlbV91OnN5c3RlbV9yOmluaXRyY190OnMwIHRjbGFzcz1j YXBhYmlsaXR5MiBwZXJtaXNzaXZlPTANCj4gRmViIDAyIDA4OjUzOjE1IGF1ZGl0Wzk2M106 IEFWQyBhcHBhcm1vcj0iU1RBVFVTIiBvcGVyYXRpb249InByb2ZpbGVfcmVwbGFjZSIgaW5m bz0ibm90IHBvbGljeSBhZG1pbiIgZXJyb3I9LTEzIHByb2ZpbGU9InVuY29uZmluZWQiIHBp ZD05NjMgY29tbT0iYXBwYXJtb3JfcGFyc2VyIg0KPiBGZWIgMDIgMDg6NTM6MTUgYXVkaXQ6 IEFVRElUMTQyMCBzdWJqX3NlbGludXg9c3lzdGVtX3U6c3lzdGVtX3I6aW5pdHJjX3Q6czAg c3Vial9hcHBhcm1vcj09dW5jb25maW5lZA0KPiBGZWIgMDIgMDg6NTM6MTUgYXVkaXRbOTYz XTogU1lTQ0FMTCBhcmNoPWMwMDAwMDNlIHN5c2NhbGw9MSBzdWNjZXNzPW5vIGV4aXQ9LTEz IGEwPTcgYTE9N2E4ZjJmZjA0ZjgwIGEyPTFlMDkgYTM9MCBpdGVtcz0wIHBwaWQ9OTYxIHBp ZD05NjMgYXVpZD00Mjk0OTY3Mjk1IHVpZD0wIGdpZD0wIGV1aWQ9MCBzdWlkPTAgZnN1aWQ9 MCBlZ2lkPTAgc2dpZD0wIGZzZ2lkPTAgdHR5PShub25lKSBzZXM9NDI5NDk2NzI5NSBjb21t PSJhcHBhcm1vcl9wYXJzZXIiIGV4ZT0iL3Vzci9zYmluL2FwcGFybW9yX3BhcnNlciIgc3Vi aj0/IGtleT0obnVsbCkNCj4gRmViIDAyIDA4OjUzOjE1IGF1ZGl0OiBQUk9DVElUTEUgcHJv Y3RpdGxlPTJGNzM2MjY5NkUyRjYxNzA3MDYxNzI2RDZGNzI1RjcwNjE3MjczNjU3MjAwMkQy RDc3NzI2OTc0NjUyRDYzNjE2MzY4NjUwMDJEMkQ3MjY1NzA2QzYxNjM2NTAwMkQyRDAwMkY2 NTc0NjMyRjYxNzA3MDYxNzI2RDZGNzIyRTY0DQo+IEZlYiAwMiAwODo1MzoxNSBhcHBhcm1v ci5zeXN0ZW1kWzk2M106IC9zYmluL2FwcGFybW9yX3BhcnNlcjogVW5hYmxlIHRvIHJlcGxh Y2UgIi9saWIvc3lzdGVtZC9zeXN0ZW1kLXJlc29sdmVkIi7CoCBQZXJtaXNzaW9uIGRlbmll ZDsgYXR0ZW1wdGVkIHRvIGxvYWQgYSBwcm9maWxlIHdoaWxlIGNvbmZpbmVkPw0KPg0KPiBU aGlzIGp1c3Qgc2VlbXMgdG8gbmVlZCBURSBydWxlcyBmb3IgdGhlIGFwcGFybW9yX3BhcnNl ci4NCj4NCj4gRG91YmxlIGVxdWFsIHNpZ24gaW4gc3Vial9hcHBhcm1vcj09dW5jb25maW5l ZCBsb29rcyBvZGQsIHNob3VsZCB0aGF0IGJlIGp1c3Qgb25lIGxpa2Ugc3Vial9zZWxpbnV4 Pw0KDQpUaGUgYXVkaXQgY29kZSBpcyByZXBvcnRpbmcgd2hhdCBBcHBBcm1vciBwcm92aWRl cy4NCkkgYWdyZWUgdGhhdCB0aGlzIGxvb2tzIG9kZC4NCg0KPg0KPg0KPiBUb29scyBsaWtl IHBzLCBhbmQgS0RFIGFuZCBHbm9tZSBTeXN0ZW0gTW9uaXRvcnMgb25seSBzaG93IFNFTGlu dXggY29udGV4dCwgYnV0IGl0IHdvdWxkIGJlIG5pY2UgaWYgTUFDIGNvbnRleHRzIGZvciBh bGwgZW5hYmxlZCBMU01zIHdlcmUgc2hvd24uDQoNCkkgYWdyZWUuIEhvdyB0aGlzIHNob3Vs ZCBiZSBkb25lIGhhcyBiZWVuIGEgdG9waWMgb2YNCmxpdmVseSBkZWJhdGUgZm9yIHNvbWUg dGltZS4gDQoNCj4NCj4gLVRvcGkNCg0KVGhhbmsgeW91IGZvciB0aGlzIHJlcG9ydC4gV2hp Y2ggZGlzdHJpYnV0aW9uIGFyZSB5b3UgdXNpbmc/DQpJIGhhdmUgYmVlbiB0ZXN0aW5nIHdp dGggRmVkb3JhIChTRUxpbnV4ICsgQXBwQXJtb3IpIGFuZCBVYnVudHUNCihBcHBBcm1vciAr IFNtYWNrKS4gSSB3b3VsZCBiZSB2ZXJ5IGludGVyZXN0ZWQgdG8gc2VlIGhvdyBhDQpkaXN0 cmlidXRpb24gdGhhdCBkb2Vzbid0IHVzZSBzeXN0ZW1kIGJlaGF2ZXMuDQoNCj4NCj4+DQo+ PiB2MjQ6IFJlYmFzZSB0byA1LjExLXJjMQ0KPj4gwqDCoMKgwqDCoCBJbmNvcnBvcmF0ZSBm ZWVkYmFjayBmcm9tIHYyMw0KPj4gwqDCoMKgwqDCoCAtIEFkZHJlc3MgdGhlIElNQSB0ZWFt J3MgY29uY2VybnMgYWJvdXQgImxhYmVsIGNvbGxpc2lvbnMiLg0KPj4gwqDCoMKgwqDCoMKg wqAgQSBsYWJlbCBjb2xsaXNpb24gb2NjdXJzIHdoZW4gdGhlcmUgaXMgYW1iaWd1aXR5IGFi b3V0DQo+PiDCoMKgwqDCoMKgwqDCoCB3aGljaCBvZiBtdWx0aXBsZSBMU01zIGlzIGJlaW5n IHRhcmdldGVkIGluIHRoZSBkZWZpbml0aW9uDQo+PiDCoMKgwqDCoMKgwqDCoCBvZiBhbiBp bnRlZ3JpdHkgY2hlY2sgcnVsZS7CoCBBIHN5c3RlbSB3aXRoIFNtYWNrIGFuZA0KPj4gwqDC oMKgwqDCoMKgwqAgQXBwQXJtb3Igd291bGQgYmUgdW5hYmxlIHRvIGRpc3Rpbmd1aXNoIHdo aWNoIExTTSBpcw0KPj4gwqDCoMKgwqDCoMKgwqAgaW1wb3J0YW50IHRvIGFuIGludGVncml0 eSBydWxlIHJlZmVycmVuY2luZyB0aGUgbGFiZWwNCj4+IMKgwqDCoMKgwqDCoMKgICJ1bmNv bmZpbmVkIiBhcyB0aGF0IGxhYmVsIGlzIG1lYW5pbmdmdWwgdG8gYm90aC4NCj4+IMKgwqDC oMKgwqDCoMKgIFByb3ZpZGUgYSBib290IG9wdGlvbiB0byBzcGVjaWZ5IHdoaWNoIExTTSB3 aWxsIGJlIHVzZWQgaW4NCj4+IMKgwqDCoMKgwqDCoMKgIElNQSBydWxlcyB3aGVuIG11bHRp cGxlIExTTXMgYXJlIHByZXNlbnQuIChwYXRjaCAwNCkNCj4+IMKgwqDCoMKgwqDCoMKgIFB1 bGwgTFNNICJzbG90IiBpZGVudGlmaWNhdGlvbiBmcm9tIGxhdGVyIGF1ZGl0IHBhdGNoZXMg aW4NCj4+IMKgwqDCoMKgwqDCoMKgIGluIHN1cHBvcnQgb2YgdGhpcyAocGF0Y2ggMDMpLg0K Pj4gwqDCoMKgwqDCoCAtIFBpY2sgdXAgYSBmZXcgYXVkaXQgZXZlbnRzIHRoYXQgbmVlZCB0 byBpbmNsdWRlIHN1cHBsaW1lbnRhbA0KPj4gwqDCoMKgwqDCoMKgwqAgc3ViamVjdCBjb250 ZXh0IHJlY29yZHMgdGhhdCBoYWQgYmVlbiBtaXNzZWQgaW4gdGhlDQo+PiDCoMKgwqDCoMKg wqDCoCBwcmV2aW91cyB2ZXJzaW9uLg0KPj4gdjIzOiBSZWJhc2UgdG8gNS4xMC1yYzQNCj4+ IMKgwqDCoMKgwqAgSW5jb3Jwb3JhdGUgZmVlZGJhY2sgZnJvbSB2MjINCj4+IMKgwqDCoMKg wqAgLSBDaGFuZ2UgL3Byb2MvKi9hdHRyL2Rpc3BsYXkgdG8gL3Byb2MvKi9hdHRyL2ludGVy ZmFjZV9sc20gdG8NCj4+IMKgwqDCoMKgwqDCoMKgIG1ha2UgdGhlIHB1cnBvc2UgY2xlYXJl ci4gKHBhdGNoIDAwMTIpDQo+PiDCoMKgwqDCoMKgIC0gSW5jbHVkZSBBQkkgZG9jdW1lbnRh dGlvbi4gKHBhdGNoIDAwMTIsIDAwMjIpDQo+PiDCoMKgwqDCoMKgIC0gSW50cm9kdWNlIExT TSBkb2N1bWVudGF0aW9uIHVwZGF0ZXMgd2l0aCB0aGUgcGF0Y2hlcyB3aGVyZQ0KPj4gwqDC oMKgwqDCoMKgwqAgdGhlIGludGVyZmFjZXMgYXJlIGFkZGVkIHJhdGhlciB0aGFuIGF0IHRo ZSBlbmQuIChwYXRjaCAwMDEyLCAwMDIyKQ0KPj4gwqDCoMKgwqDCoCBJbmNsdWRlIG1vcmUg bWFpbnRhaW5lcnMgYW5kIG1haWwgbGlzdHMgaW4gVG86IGFuZCBDYzogZGlyZWN0aXZlcy4N Cj4+IHYyMjogUmViYXNlIHRvIDUuMTAtcmMxDQo+PiB2MjE6IFJlYmFzZSB0byA1LjktcmM0 DQo+PiDCoMKgwqDCoMKgIEluY29ycG9yYXRlIGZlZWRiYWNrIGZyb20gdjIwDQo+PiDCoMKg wqDCoMKgIC0gRnVydGhlciByZXZlcnQgVURTIFNPX1BFRVJTRUMgdG8gdXNlIHNjYWZmb2xk aW5nIGFyb3VuZA0KPj4gwqDCoMKgwqDCoMKgwqAgdGhlIGludGVyZmFjZXMgdGhhdCB1c2Ug bHNtYmxvYnMgYW5kIHN0b3JlIG9ubHkgYSBzaW5nbGUNCj4+IMKgwqDCoMKgwqDCoMKgIHNl Y2lkLiBUaGUgcG9zc2liaWxpdHkgb2YgbXVsdGlwbGUgc2VjdXJpdHkgbW9kdWxlcw0KPj4g wqDCoMKgwqDCoMKgwqAgcmVxdWlyaW5nIGRhdGEgaGVyZSBpcyBzdGlsbCBhIGZ1dHVyZSBw cm9ibGVtLg0KPj4gwqDCoMKgwqDCoCAtIEluY29ycG9yYXRlIFJpY2hhcmQgR3V5IEJyaWdn cycgbm9uLXN5c2NhbGwgYXV4aWxpYXJ5DQo+PiDCoMKgwqDCoMKgwqDCoCByZWNvcmRzIHBh dGNoIChwYXRjaCAwMDE5LTAwMjEpIGluIHBsYWNlIG9mIG15ICJzdXBwbGltZW50YWwiDQo+ PiDCoMKgwqDCoMKgwqDCoCByZWNvcmRzIGltcGxlbWVudGF0aW9uLiBbSSdtIG5vdCBzdXJl IEkndmUgZ2l2ZW4gcHJvcGVyDQo+PiDCoMKgwqDCoMKgwqDCoCBhdHRlc3RhdGlvbi4gSSB3 aWxsIGNvcnJlY3QgYXMgYXBwcm9wcmlhdGVdDQo+PiB2MjA6IFJlYmFzZSB0byA1LjktcmMx DQo+PiDCoMKgwqDCoMKgIENoYW5nZSB0aGUgQlBGIHNlY3VyaXR5IG1vZHVsZSB0byB1c2Ug dGhlIGxzbWJsb2IgZGF0YS4gKHBhdGNoIDAwMDIpDQo+PiDCoMKgwqDCoMKgIFJlcGFpciBs ZW5ndGggbG9naWMgaW4gc3ViamVjdCBsYWJlbCBwcm9jZXNzaW5nIChwYXRjaCAwMDE1KQ0K Pj4gwqDCoMKgwqDCoCBIYW5kbGUgLUVJTlZBTCBmcm9tIHRoZSBlbXB0eSBCUEYgc2V0cHJv Y2F0dHIgaG9vayAocGF0Y2ggMDAyMCkNCj4+IMKgwqDCoMKgwqAgQ29ycmVjdCBsZW5ndGgg cHJvY2Vzc2luZyBpbiBhcHBlbmRfY3R4KCkgKHBhdGNoIDAwMjIpDQo+PiB2MTk6IFJlYmFz ZSB0byA1LjgtcmM2DQo+PiDCoMKgwqDCoMKgIEluY29ycG9yYXRlIGZlZWRiYWNrIGZyb20g djE4DQo+PiDCoMKgwqDCoMKgIC0gUmV2ZXJ0IFVEUyBTT19QRUVSU0VDIGltcGxlbWVudGF0 aW9uIHRvIHVzZSBsc21ibG9icw0KPj4gwqDCoMKgwqDCoMKgwqAgZGlyZWN0bHksIHJhdGhl ciB0aGFuIGFsbG9jYXRpbmcgYXMgbmVlZGVkLiBUaGUgY29ycmVjdA0KPj4gwqDCoMKgwqDC oMKgwqAgdHJlYXRtZW50IG9mIG91dC1vZi1tZW1vcnkgY29uZGl0aW9ucyBpbiB0aGUgbGF0 ZXIgY2FzZQ0KPj4gwqDCoMKgwqDCoMKgwqAgaXMgZGlmZmljdWx0IHRvIGRlZmluZS4gKHBh dGNoIDAwMDUpDQo+PiDCoMKgwqDCoMKgIC0gVXNlIGEgc2l6ZV90IGluIGFwcGVuZF9jdHgo KSAocGF0Y2ggMDAyMSkNCj4+IMKgwqDCoMKgwqAgLSBGaXggYSBtZW1vcnkgbGVhayB3aGVu IGNyZWF0aW5nIGNvbXBvdW5kIGNvbnRleHRzLiAocGF0Y2ggMDAyMSkNCj4+IMKgwqDCoMKg wqAgRml4IGJ1aWxkIGVycm9yIHdoZW4gQ09ORklHX1NFQ1VSSVRZIGlzbid0IHNldCAocGF0 Y2ggMDAxMykNCj4+IMKgwqDCoMKgwqAgRml4IGJ1aWxkIGVycm9yIHdoZW4gQ09ORklHX1NF Q1VSSVRZIGlzbid0IHNldCAocGF0Y2ggMDAyMCkNCj4+IMKgwqDCoMKgwqAgRml4IGJ1aWxk IGVycm9yIHdoZW4gQ09ORklHX1NFQ1VSSVRZIGlzbid0IHNldCAocGF0Y2ggMDAyMSkNCj4+ IHYxODogUmViYXNlIHRvIDUuOC1yYzMNCj4+IMKgwqDCoMKgwqAgSW5jb3Jwb3JhdGUgZmVl ZGJhY2sgZnJvbSB2MTcNCj4+IMKgwqDCoMKgwqAgLSBOdWxsIHBvaW50ZXIgY2hlY2tpbmcg aW4gVURTIChwYXRjaCAwMDA1KQ0KPj4gwqDCoMKgwqDCoCBNYXRjaCBjaGFuZ2VzIGluIElN QSBjb2RlIChwYXRjaCAwMDEyKQ0KPj4gwqDCoMKgwqDCoCBGaXggdGhlIGJlaGF2aW9yIG9m IExTTSBjb250ZXh0IHN1cHBsaW1lbnRhbCBhdWRpdA0KPj4gwqDCoMKgwqDCoCByZWNvcmRz IHNvIHRoYXQgdGhlcmUncyBhbHdheXMgZXhhY3RseSBvbmUgd2hlbiBpdCdzDQo+PiDCoMKg wqDCoMKgIGFwcHJvcHJpYXRlIGZvciB0aGVyZSB0byBiZSBvbmUuIFRoaXMgaXMgYSBzdWJz dGFudGlhbA0KPj4gwqDCoMKgwqDCoCBjaGFuZ2UgdGhhdCByZXF1aXJlcyBleHRlbnRpb24g b2YgdGhlIGF1ZGl0X2NvbnRleHQgYmV5b25kDQo+PiDCoMKgwqDCoMKgIHN5c2NhbGwgZXZl bnRzLiAocGF0Y2ggMDAyMCkNCj4+IHYxNzogUmViYXNlIHRvIDUuNy1yYzQNCj4+IHYxNjog UmViYXNlIHRvIDUuNg0KPj4gwqDCoMKgwqDCoCBJbmNvcnBvcmF0ZSBmZWVkYmFjayBmcm9t IHYxNSAtIFRoYW5rcyBTdGVwaGVuLCBNaW1pIGFuZCBQYXVsDQo+PiDCoMKgwqDCoMKgIC0g R2VuZXJhbGx5IGltcHJvdmUgY29tbWl0IG1lc3NhZ2VzIFdSVCBzY2FmZm9sZGluZw0KPj4g wqDCoMKgwqDCoCAtIENvbW1lbnQgaW1hX2xzbV9pc3NldCgpIChwYXRjaCAwMDAyKQ0KPj4g wqDCoMKgwqDCoCAtIFNvbWUgcXVlc3Rpb24gbWF5IHJlbWFpbiBvbiBJTUEgd2FybmluZyAo cGF0Y2ggMDAwMikNCj4+IMKgwqDCoMKgwqAgLSBNYXJrIGxzbV9zbG90IGFzIF9fbHNtX3Jv X2FmdGVyX2luaXQgbm90IF9faW5pdF9kYXRhIChwYXRjaCAwMDAyKQ0KPj4gwqDCoMKgwqDC oCAtIENoYW5nZSBuYW1lIG9mIGxzbWJsb2IgdmFyaWFibGUgaW4gaW1hX21hdGNoX3J1bGVz KCkgKHBhdGNoIDAwMDMpDQo+PiDCoMKgwqDCoMKgIC0gSW5zdGVhZCBvZiBwdXR0aW5nIGEg c3RydWN0IGxzbWJsb2IgaW50byB0aGUgdW5peF9za2JfcGFybXMNCj4+IMKgwqDCoMKgwqDC oMKgIHN0cnVjdHVyZSBwdXQgYSBwb2ludGVyIHRvIGFuIGFsbG9jYXRlZCBpbnN0YW5jZS4g VGhlcmUgaXMNCj4+IMKgwqDCoMKgwqDCoMKgIGN1cnJlbnRseSBvbmx5IHNwYWNlIGZvciA1 IHUzMidzIGluIHVuaXhfc2tiX3Bhcm1zIGFuZCBpdCBpcw0KPj4gwqDCoMKgwqDCoMKgwqAg bGlrZWx5IHRvIGdldCBldmVuIHRpZ2h0ZXIuIEZvcnR1bmF0ZWx5LCB0aGUgbGlmZWN5Y2xl DQo+PiDCoMKgwqDCoMKgwqDCoCBtYW5hZ2VtZW50IG9mIHRoZSBhbGxvY2F0ZWQgbHNtYmxv YiBpcyBzaW1wbGUuIChwYXRjaCAwMDA1KQ0KPj4gwqDCoMKgwqDCoCAtIERyb3BwZWQgQWNr cyBkdWUgdG8gdGhlIGFib3ZlIGNoYW5nZSAocGF0Y2ggMDAwNSkNCj4+IMKgwqDCoMKgwqAg LSBJbXByb3ZlZCBjb21tZW50YXJ5IG9uIHNlY21hcmsgbGFiZWxpbmcgc2NhZmZvbGRpbmcu IChwYXRjaCAwMDA2KQ0KPj4gwqDCoMKgwqDCoCAtIFJlZHVjZWQgc2VjbWFyayByZWxhdGVk IGxhYmVsaW5nIHNjYWZmb2xkaW5nLiAocGF0Y2ggMDAwNikNCj4+IMKgwqDCoMKgwqAgLSBS ZXBsYWNlIHVzZSBvZiB0aGUgemVyb3RoIGVudHJ5IG9mIGFuIGxzbWJsb2IgaW4gc2NhZmZv bGRpbmcNCj4+IMKgwqDCoMKgwqDCoMKgIHdpdGggYSBmdW5jdGlvbiBsc21ibG9iX3ZhbHVl KCkgdG8gaG9wZWZ1bGx5IG1ha2UgaXQgbGVzcw0KPj4gwqDCoMKgwqDCoMKgwqAgb2JzY3Vy ZS4gKHBhdGNoIDAwMDYpDQo+PiDCoMKgwqDCoMKgIC0gQ29udmVydCBzZWN1cml0eV9zZWNt YXJrX3JlbGFiZWxfcGFja2V0IHRvIHVzZSBsc21ibG9iIGFzDQo+PiDCoMKgwqDCoMKgwqDC oCB0aGlzIHJlZHVjZXMgbXVjaCBvZiB0aGUgbW9zdCBjb250ZW50aW91cyBzY2FmZm9sZGlu Zy4gKHBhdGNoIDAwMDYpDQo+PiDCoMKgwqDCoMKgIC0gRHJvcHBlZCBBY2tzIGR1ZSB0byB0 aGUgYWJvdmUgY2hhbmdlIChwYXRjaCAwMDA2KQ0KPj4gwqDCoMKgwqDCoCAtIEFkZGVkIEJV SUxEX0JVR19PTigpIGZvciBDSVBTTyB0YWcgNi4gKHBhdGNoIDAwMTgpDQo+PiDCoMKgwqDC oMKgIC0gUmV3b3JrZWQgYXVkaXQgc3ViamVjdCBpbmZvcm1hdGlvbi4gSW5zdGVhZCBvZiBh ZGRpbmcgZmllbGRzIGluDQo+PiDCoMKgwqDCoMKgwqDCoCB0aGUgbWlkZGxlIG9mIGV4aXN0 aW5nIHJlY29yZHMgYWRkIGEgbmV3IHJlY29yZCB0byB0aGUgZXZlbnQuIFdoZW4NCj4+IMKg wqDCoMKgwqDCoMKgIGEgc2VwYXJhdGUgcmVjb3JkIGlzIHJlcXVpcmVkIHVzZSBzdWJqPSI/ Ii4gKHBhdGNoIDAwMjApDQo+PiDCoMKgwqDCoMKgIC0gRHJvcHBlZCBBY2tzIGR1ZSB0byB0 aGUgYWJvdmUgY2hhbmdlIChwYXRjaCAwMDIwKQ0KPj4gwqDCoMKgwqDCoCAtIFJld29ya2Vk IGF1ZGl0IG9iamVjdCBpbmZvcm1hdGlvbi4gSW5zdGVhZCBvZiBhZGRpbmcgZmllbGRzIGlu DQo+PiDCoMKgwqDCoMKgwqDCoCB0aGUgbWlkZGxlIG9mIGV4aXN0aW5nIHJlY29yZHMgYWRk IGEgbmV3IHJlY29yZCB0byB0aGUgZXZlbnQuIFdoZW4NCj4+IMKgwqDCoMKgwqDCoMKgIGEg c2VwYXJhdGUgcmVjb3JkIGlzIHJlcXVpcmVkIHVzZSBvYmo9Ij8iLiAocGF0Y2ggMDAyMSkN Cj4+IMKgwqDCoMKgwqAgLSBEcm9wcGVkIEFja3MgZHVlIHRvIHRoZSBhYm92ZSBjaGFuZ2Ug KHBhdGNoIDAwMjEpDQo+PiDCoMKgwqDCoMKgIC0gRW5oYW5jZWQgZG9jdW1lbnRhdGlvbiAo cGF0Y2ggMDAyMikNCj4+IMKgwqDCoMKgwqAgLSBSZW1vdmVkIHVubmVjZXNzYXJ5IGVycm9y IGNvZGUgY2hlY2sgaW4gc2VjdXJpdHlfZ2V0cHJvY2F0dHIoKQ0KPj4gwqDCoMKgwqDCoMKg wqAgKHBhdGNoIDAwMjEpDQo+PiB2MTU6IFJlYmFzZSB0byA1LjYtcmMxDQo+PiDCoMKgwqDC oMKgIC0gUmV2aXNlIElNQSBkYXRhIHVzZSAocGF0Y2ggMDAwMikNCj4+IMKgwqDCoMKgwqAg SW5jb3Jwb3JhdGUgZmVlZGJhY2sgZnJvbSB2MTQNCj4+IMKgwqDCoMKgwqAgLSBGaXggbG9j a2Rvd24gbW9kdWxlIHJlZ2lzdHJhdGlvbiBuYW1pbmcgKHBhdGNoIDAwMDIpDQo+PiDCoMKg wqDCoMKgIC0gUmV2aXNlIGhvdyAvcHJvYy9zZWxmL2F0dHIvY29udGV4dCBpcyBnYXRoZXJl ZC4gKHBhdGNoIDAwMjIpDQo+PiDCoMKgwqDCoMKgIC0gUmV2aXNlIGFjY2VzcyBtb2RlcyBv biAvcHJvYy9zZWxmL2F0dHIvY29udGV4dC4gKHBhdGNoIDAwMjIpDQo+PiDCoMKgwqDCoMKg IC0gUmV2aXNlIGRvY3VtZW50YXRpb24gb24gTFNNIGV4dGVybmFsIGludGVyZmFjZXMuIChw YXRjaCAwMDIyKQ0KPj4gdjE0OiBSZWJhc2UgdG8gNS41LXJjNQ0KPj4gwqDCoMKgwqDCoCBJ bmNvcnBvcmF0ZSBmZWVkYmFjayBmcm9tIHYxMw0KPj4gwqDCoMKgwqDCoCAtIFVzZSBhbiBh cnJheSBvZiBhdWRpdCBydWxlcyAocGF0Y2ggMDAwMikNCj4+IMKgwqDCoMKgwqAgLSBTaWdu aWZpY2FudCBjaGFuZ2UsIHJlbW92ZWQgQWNrcyAocGF0Y2ggMDAwMikNCj4+IMKgwqDCoMKg wqAgLSBSZW1vdmUgdW5uZWVkZWQgaW5jbHVkZSAocGF0Y2ggMDAxMykNCj4+IMKgwqDCoMKg wqAgLSBVc2UgY29udGV4dC5sZW4gY29ycmVjdGx5IChwYXRjaCAwMDE1KQ0KPj4gwqDCoMKg wqDCoCAtIFJlb3JkZXIgY29kZSB0byBiZSBtb3JlIHNlbnNpYmxlIChwYXRjaCAwMDE2KQ0K Pj4gwqDCoMKgwqDCoCAtIERyb3AgU09fUEVFUkNPTlRFWFQgYXMgaXQncyBub3QgbmVlZGVk IHlldCAocGF0Y2ggMDAyMykNCj4+IHYxMzogUmViYXNlIHRvIDUuNS1yYzINCj4+IMKgwqDC oMKgwqAgSW5jb3Jwb3JhdGUgZmVlZGJhY2sgZnJvbSB2MTINCj4+IMKgwqDCoMKgwqAgLSBQ cmludCBsc21ibG9iIHNpemUgd2l0aCAleiAoUGF0Y2ggMDAwMikNCj4+IMKgwqDCoMKgwqAg LSBDb252ZXJ0IGxvY2tkb3duIExTTSBpbml0aWFsaXphdGlvbi4gKFBhdGNoIDAwMDIpDQo+ PiDCoMKgwqDCoMKgIC0gUmVzdG9yZSBlcnJvciBjaGVjayBpbiBuZnRfc2VjbWFya19jb21w dXRlX3NlY2lkIChQYXRjaCAwMDA2KQ0KPj4gwqDCoMKgwqDCoCAtIENvcnJlY3QgYmxvYiBz Y2FmZm9sZGluZyBpbiBpbWFfbXVzdF9hcHByYWlzZSgpIChQYXRjaCAwMDA5KQ0KPj4gwqDC oMKgwqDCoCAtIE1ha2Ugc2VjdXJpdHlfc2V0cHJvY2F0dHIoKSBjbGVhcmVyIChQYXRjaCAw MDEzKQ0KPj4gwqDCoMKgwqDCoCAtIFVzZSBsc21fdGFza19kaXNwbGF5IG1vcmUgd2lkZWx5 IChQYXRjaCAwMDEzKQ0KPj4gwqDCoMKgwqDCoCAtIFVzZSBwYXNzZWQgc2l6ZSBpbiBsc21j b250ZXh0X2luaXQoKSAoUGF0Y2ggMDAxNCkNCj4+IMKgwqDCoMKgwqAgLSBEb24ndCBhZGQg YSBzbWFja19yZWxlYXNlX3NlY2N0eCgpIGhvb2sgKFBhdGNoIDAwMTQpDQo+PiDCoMKgwqDC oMKgIC0gRG9uJ3QgcHJpbnQgd2FybmluZyBpbiBzZWN1cml0eV9yZWxlYXNlX3NlY2N0eCgp IChQYXRjaCAwMDE0KQ0KPj4gwqDCoMKgwqDCoCAtIERvbid0IGR1cGxpY2F0ZSB0aGUgbGFi ZWwgaW4gbmZzNF9sYWJlbF9pbml0X3NlY3VyaXR5KCkgKFBhdGNoIDAwMTYpDQo+PiDCoMKg wqDCoMKgIC0gUmVtb3ZlIHJldmlld2VkLWJ5IGFzIGNvZGUgaGFzIHNpZ25pZmljYW50IGNo YW5nZSAoUGF0Y2ggMDAxNikNCj4+IMKgwqDCoMKgwqAgLSBTZW5kIHRoZSBlbnRpcmUgbHNt YmxvYiBmb3IgVGFnIDYgKFBhdGNoIDAwMTkpDQo+PiDCoMKgwqDCoMKgIC0gRml4IGRlc2Ny aXB0aW9uIG9mIHNvY2tldF9nZXRwZWVyc2VjX3N0cmVhbSBwYXJhbWV0ZXJzIChQYXRjaCAw MDIzKQ0KPj4gwqDCoMKgwqDCoCAtIFJldGFpbiBMU01CTE9CX0ZJUlNULiBXaGF0IHdhcyBJ IHRoaW5raW5nPyAoUGF0Y2ggMDAyMykNCj4+IMKgwqDCoMKgwqAgLSBBZGQgY29tcG91bmQg Y29udGV4dCB0byBMU00gZG9jdW1lbnRhdGlvbiAoUGF0Y2ggMDAyMykNCj4+IHYxMjogUmVi YXNlIHRvIDUuNS1yYzENCj4+IMKgwqDCoMKgwqAgRml4ZWQgYSBjb3VwbGUgb2YgaW5jb3Jy ZWN0IGNvbnRyYWN0aW9ucyBpbiB0aGUgdGV4dC4NCj4+IHYxMTogUmViYXNlIHRvIDUuNC1y YzYNCj4+IMKgwqDCoMKgwqAgSW5jb3Jwb3JhdGUgZmVlZGJhY2sgZnJvbSB2MTANCj4+IMKg wqDCoMKgwqAgLSBEaXNhbWJpZ3VhdGUgcmVhZGluZyAvcHJvYy8uLi4vYXR0ci9kaXNwbGF5 IGJ5IHJlc3RyaWN0aW5nDQo+PiDCoMKgwqDCoMKgwqDCoCBhbGwgdXNlIG9mIHRoZSBpbnRl cmZhY2UgdG8gdGhlIGN1cnJlbnQgcHJvY2Vzcy4NCj4+IMKgwqDCoMKgwqAgLSBGaXggYSBt ZXJnZSBlcnJvciBpbiBBcHBBcm1vcidzIGRpc3BsYXkgYXR0cmlidXRlIGNoZWNrDQo+PiB2 MTA6IEFzayB0aGUgc2VjdXJpdHkgbW9kdWxlcyBpZiB0aGUgZGlzcGxheSBjYW4gYmUgY2hh bmdlZC4NCj4+IHY5OiBUaGVyZSBpcyBubyB2ZXJzaW9uIDkNCj4+IHY4OiBJbmNvcnBvcmF0 ZSBmZWVkYmFjayBmcm9tIHY3DQo+PiDCoMKgwqDCoCAtIE1pbm9yIGNsZWFuLXVwIGluIGRp c3BsYXkgdmFsdWUgbWFuYWdlbWVudA0KPj4gwqDCoMKgwqAgLSByZWZhY3RvciAiY29tcG91 bmQiIGNvbnRleHQgY3JlYXRpb24gdG8gdXNlIGEgY29tbW9uDQo+PiDCoMKgwqDCoMKgwqAg YXBwZW5kX2N0eCgpIGZ1bmN0aW9uLg0KPj4gdjc6IEluY29ycG9yYXRlIGZlZWRiYWNrIGZy b20gdjYNCj4+IMKgwqDCoMKgIC0gTWFrZSBzZXR0aW5nIHRoZSBkaXNwbGF5IGEgcHJpdmls ZWdlZCBvcGVyYXRpb24uIFRoZQ0KPj4gwqDCoMKgwqDCoMKgIGF2YWlsYWJpbGl0eSBvZiBj b21wb3VuZCBjb250ZXh0cyByZWR1Y2VzIHRoZSBuZWVkIGZvcg0KPj4gwqDCoMKgwqDCoMKg IHNldHRpbmcgdGhlIGRpc3BsYXkuDQo+PiB2NjogSW5jb3Jwb3JhdGUgZmVlZGJhY2sgZnJv bSB2NQ0KPj4gwqDCoMKgwqAgLSBBZGQgc3Vial88bHNtPj0gYW5kIG9ial88bHNtPj0gZmll bGRzIHRvIGF1ZGl0IHJlY29yZHMNCj4+IMKgwqDCoMKgIC0gQWRkIC9wcm9jLy4uLi9hdHRy L2NvbnRleHQgdG8gZ2V0IHRoZSBmdWxsIGNvbnRleHQgaW4NCj4+IMKgwqDCoMKgwqDCoCBs c21uYW1lXDB2YWx1ZVwwLi4uIGZvcm1hdCBhcyBzdWdnZXN0ZWQgYnkgU2ltb24gTWNWaXR0 aWUNCj4+IMKgwqDCoMKgIC0gQWRkIFNPX1BFRVJDT05URVhUIGZvciBnZXRzb2Nrb3B0KCkg dG8gZ2V0IHRoZSBmdWxsIGNvbnRleHQNCj4+IMKgwqDCoMKgwqDCoCBpbiB0aGUgc2FtZSBm b3JtYXQsIGFsc28gc3VnZ2VzdGVkIGJ5IFNpbW9uIE1jVml0dGllLg0KPj4gwqDCoMKgwqAg LSBBZGQgL3N5cy9rZXJuZWwvc2VjdXJpdHkvbHNtX2Rpc3BsYXlfZGVmYXVsdCB0byBwcm92 aWRlDQo+PiDCoMKgwqDCoMKgwqAgdGhlIGRpc3BsYXkgZGVmYXVsdCB2YWx1ZS4NCj4+IHY1 OiBJbmNvcnBvcmF0ZSBmZWVkYmFjayBmcm9tIHY0DQo+PiDCoMKgwqDCoCAtIEluaXRpYWxp emUgdGhlIGxzbWNvbnRleHQgaW4gc2VjdXJpdHlfc2VjaWRfdG9fc2VjY3R4KCkNCj4+IMKg wqDCoMKgIC0gQ2xlYXIgdGhlIGxzbWNvbnRleHQgaW4gYWxsIHNlY3VyaXR5X3JlbGVhc2Vf c2VjY3R4KCkgY2FzZXMNCj4+IMKgwqDCoMKgIC0gRG9uJ3QgdXNlIHRoZSAiZGlzcGxheSIg b24gc3RyaWN0bHkgaW50ZXJuYWwgY29udGV4dA0KPj4gwqDCoMKgwqDCoMKgIGludGVyZmFj ZXMuDQo+PiDCoMKgwqDCoCAtIFRoZSBTRUxpbnV4IGJpbmRlciBob29rcyBjaGVjayBmb3Ig Y2FzZXMgd2hlcmUgdGhlIGNvbnRleHQNCj4+IMKgwqDCoMKgwqDCoCAiZGlzcGxheSIgaXNu J3QgY29tcGF0aWJsZSB3aXRoIFNFTGludXguDQo+PiB2NDogSW5jb3Jwb3JhdGUgZmVlZGJh Y2sgZnJvbSB2Mw0KPj4gwqDCoMKgwqAgLSBNYXJrIG5ldyBsc21fPGJsb2I+X2FsbG9jIGZ1 bmN0aW9ucyBzdGF0aWMNCj4+IMKgwqDCoMKgIC0gUmVwbGFjZSB0aGUgbHNtIGFuZCBzbG90 IGZpZWxkcyBvZiB0aGUgc2VjdXJpdHlfaG9va19saXN0DQo+PiDCoMKgwqDCoMKgwqAgd2l0 aCBhIHBvaW50ZXIgdG8gYSBMU00gYWxsb2NhdGVkIGxzbV9pZCBzdHJ1Y3R1cmUuIFRoZQ0K Pj4gwqDCoMKgwqDCoMKgIExTTSBpZGVudGlmaWVzIGlmIGl0IG5lZWRzIGEgc2xvdCBleHBs aWNpdGx5LiBVc2UgdGhlDQo+PiDCoMKgwqDCoMKgwqAgbHNtX2lkIHJhdGhlciB0aGFuIG1h a2Ugc2VjdXJpdHlfYWRkX2hvb2tzIHJldHVybiB0aGUNCj4+IMKgwqDCoMKgwqDCoCBzbG90 IHZhbHVlLg0KPj4gwqDCoMKgwqAgLSBWYWxpZGF0ZSBzbG90IHZhbHVlcyB1c2VkIGluIHNl Y3VyaXR5LmMNCj4+IMKgwqDCoMKgIC0gUmV3b3JrZWQgdGhlICJkaXNwbGF5IiBwcm9jZXNz IGF0dHJpYnV0ZSBoYW5kbGluZyBzbyB0aGF0DQo+PiDCoMKgwqDCoMKgwqAgaXQgd29ya3Mg cmlnaHQgYW5kIGRvZXNuJ3QgdXNlIGdvb2Z5IGxpc3QgcHJvY2Vzc2luZy4NCj4+IMKgwqDC oMKgIC0gZml4IGRpc3BsYXkgdmFsdWUgY2hlY2sgaW4gZGVudHJ5X2luaXRfc2VjdXJpdHkN Cj4+IMKgwqDCoMKgIC0gUmVwbGFjZSBhdWRpdF9sb2cgb2Ygc2VjaWRzIHdpdGggJz8nIGlu c3RlYWQgb2YgZGVsZXRpbmcNCj4+IMKgwqDCoMKgwqDCoCB0aGUgYXVkaXQgbG9nDQo+PiB2 MzogSW5jb3Jwb3JhdGUgZmVlZGJhY2sgZnJvbSB2Mg0KPj4gwqDCoMKgwqAgLSBNYWtlIGxz bWJsb2IgcGFyYW1ldGVyIGFuZCB2YXJpYWJsZSBuYW1lcyBtb3JlDQo+PiDCoMKgwqDCoMKg wqAgbWVhbmluZ2Z1bCwgY2hhbmdpbmcgImxlIiBhbmQgImwiIHRvICJibG9iIi4NCj4+IMKg wqDCoMKgIC0gSW1wcm92ZSBjb25zaXN0ZW5jeSBvZiBjb25zdGFudCBuYW1pbmcuDQo+PiDC oMKgwqDCoCAtIERvIG1vcmUgc2FuaXR5IGNoZWNraW5nIGR1cmluZyBMU00gaW5pdGlhbGl6 YXRpb24uDQo+PiDCoMKgwqDCoCAtIEJlIGEgYml0IGNsZWFyZXIgYWJvdXQgd2hhdCBpcyB0 ZW1wb3Jhcnkgc2NhZmZvbGRpbmcuDQo+PiDCoMKgwqDCoCAtIFJhdGhlciB0aGFuIGNsdXR0 ZXIgc2VjdXJpdHlfZ2V0cGVlcnNlY19kZ3JhbSB3aXRoDQo+PiDCoMKgwqDCoMKgwqAgb3Ro ZXJ3aXNlIHVubmVjZXNzYXJ5IGNoZWNrcyByZW1vdmUgdGhlIGFwcGFybW9yDQo+PiDCoMKg wqDCoMKgwqAgc3R1Yiwgd2hpY2ggZG9lcyBub3RoaW5nIHVzZWZ1bC4NCj4+DQo+PiBQYXRj aCAwMSBtb3ZlcyBtYW5hZ2VtZW50IG9mIHRoZSBzb2NrIHNlY3VyaXR5IGJsb2INCj4+IGZy b20gdGhlIGluZGl2aWR1YWwgbW9kdWxlcyB0byB0aGUgaW5mcmFzdHJ1Y3R1cmUuDQo+Pg0K Pj4gUGF0Y2hlcyAwMi0wMyBpbnRyb2R1Y2UgYSBzdHJ1Y3R1cmUgImxzbWJsb2IiIHRoYXQg d2lsbCBncmFkdWFsbHkNCj4+IHJlcGxhY2UgdGhlICJzZWNpZCIgYXMgYSBzaG9ydGhhbmQg Zm9yIHNlY3VyaXR5IG1vZHVsZSBpbmZvcm1hdGlvbi4NCj4+IEF0IHRoaXMgcG9pbnQgbHNt YmxvYiBjb250YWlucyBhbiBhcnJheSBvZiB1MzIgc2VjaWRzLCBvbmUgInNsb3QiDQo+PiBm b3IgZWFjaCBvZiB0aGUgc2VjdXJpdHkgbW9kdWxlcyBjb21waWxlZCBpbnRvIHRoZSBrZXJu ZWwgdGhhdA0KPj4gdXNlZCBzZWNpZHMuIEEgInNsb3QiIGlzIGFsbG9jYXRlZCB3aGVuIGEg c2VjdXJpdHkgbW9kdWxlIHJlcXVlc3RzDQo+PiBvbmUuDQo+Pg0KPj4gUGF0Y2ggMDQgcHJv dmlkZXMgbWVjaGFuaXNtIGZvciB0aGUgSU1BIHN1YnN5c3RlbSB0byBpZGVudGlmeQ0KPj4g ZXhwbGljaXRseSB3aGljaCBMU00gaXMgc3ViamVjdCB0byBJTUEgcG9saWN5LiBUaGlzIGlu Y2x1ZGVzDQo+PiBhIGJvb3Qgb3B0aW9uIGZvciBzcGVjaWZ5aW5nIHRoZSBkZWZhdWx0IGFu ZCBhbiBhZGRpdGlvbmFsIG9wdGlvbg0KPj4gaW4gSU1BIHJ1bGVzICJsc209Ii4NCj4+DQo+ PiBQYXRjaGVzIDA1LTEzIGNoYW5nZSBMU00gaW50ZXJmYWNlcyB0byB1c2UgdGhlIGxzbWJs b2IgaW5zdGVhZA0KPj4gb2Ygc2VjaWRzLiBJdCBpcyBpbXBvcnRhbnQgdGhhdCB0aGUgbHNt YmxvYiBiZSBhIGZpeGVkIHNpemUgZW50aXR5DQo+PiB0aGF0IGRvZXMgbm90IGhhdmUgdG8g YmUgYWxsb2NhdGVkLiBTZXZlcmFsIG9mIHRoZSBwbGFjZXMNCj4+IHdoZXJlIGl0IGlzIHVz ZWQgd291bGQgaGF2ZSBwZXJmb3JtYW5jZSBhbmQvb3IgbG9ja2luZw0KPj4gaXNzdWVzIHdp dGggZHluYW1pYyBhbGxvY2F0aW9uLg0KPj4NCj4+IFBhdGNoIDE0IHByb3ZpZGVzIGEgbWVj aGFuaXNtIGZvciBhIHByb2Nlc3MgdG8gaWRlbnRpZnkgd2hpY2gNCj4+IHNlY3VyaXR5IG1v ZHVsZSdzIGhvb2tzIHNob3VsZCBiZSB1c2VkIHdoZW4gZGlzcGxheWluZyBvcg0KPj4gY29u dmVydGluZyBhIHNlY3VyaXR5IGNvbnRleHQgc3RyaW5nLsKgIEEgbmV3IGludGVyZmFjZQ0K Pj4gL3Byb2Mvc2VsZi9hdHRyL2ludGVyZmFjZV9sc20gY29udGFpbnMgdGhlIG5hbWUgb2Yg dGhlIHNlY3VyaXR5DQo+PiBtb2R1bGUgdG8gc2hvdy4gUmVhZGluZyBmcm9tIHRoaXMgZmls ZSB3aWxsIHByZXNlbnQgdGhlIG5hbWUgb2YNCj4+IHRoZSBtb2R1bGUsIHdoaWxlIHdyaXRp bmcgdG8gaXQgd2lsbCBzZXQgdGhlIHZhbHVlLiBPbmx5IG5hbWVzDQo+PiBvZiBhY3RpdmUg c2VjdXJpdHkgbW9kdWxlcyBhcmUgYWNjZXB0ZWQuIEludGVybmFsbHksIHRoZSBuYW1lDQo+ PiBpcyB0cmFuc2xhdGVkIHRvIHRoZSBhcHByb3ByaWF0ZSAic2xvdCIgbnVtYmVyIGZvciB0 aGUgbW9kdWxlDQo+PiB3aGljaCBpcyB0aGVuIHN0b3JlZCBpbiB0aGUgdGFzayBzZWN1cml0 eSBibG9iLiBTZXR0aW5nIHRoZQ0KPj4gZGlzcGxheSByZXF1aXJlcyB0aGF0IGFsbCBtb2R1 bGVzIHVzaW5nIHRoZSAvcHJvYyBpbnRlcmZhY2VzDQo+PiBhbGxvdyB0aGUgdHJhbnNpdGlv bi4gVGhlIGludGVyZmFjZSBMU00gb2Ygb3RoZXIgcHJvY2Vzc2Vzcw0KPj4gY2FuIGJlIG5l aXRoZXIgcmVhZCBub3Igd3JpdHRlbi4gQWxsIHN1Z2dlc3RlZCBjYXNlcyBmb3INCj4+IHJl YWRpbmcgdGhlIGludGVyZmFjZSBMU00gb2YgYSBkaWZmZXJlbnQgcHJvY2VzcyBoYXZlIHJh Y2UNCj4+IGNvbmRpdGlvbnMuDQo+Pg0KPj4gUGF0Y2ggMTUgU3RhcnRzIHRoZSBwcm9jZXNz IG9mIGNoYW5naW5nIGhvdyBhIHNlY3VyaXR5DQo+PiBjb250ZXh0IGlzIHJlcHJlc2VudGVk LiBTaW5jZSBpdCBpcyBwb3NzaWJsZSBmb3IgYQ0KPj4gc2VjdXJpdHkgY29udGV4dCB0byBo YXZlIGJlZW4gZ2VuZXJhdGVkIGJ5IG1vcmUgdGhhbiBvbmUNCj4+IHNlY3VyaXR5IG1vZHVs ZSBpdCBpcyBub3cgbmVjZXNzYXJ5IHRvIG5vdGUgd2hpY2ggbW9kdWxlDQo+PiBjcmVhdGVk IGEgc2VjdXJpdHkgY29udGV4dCBzbyB0aGF0IHRoZSBjb3JyZWN0ICJyZWxlYXNlIg0KPj4g aG9vayBjYW4gYmUgY2FsbGVkLiBUaGVyZSBhcmUgc2V2ZXJhbCBwbGFjZXMgd2hlcmUgdGhl DQo+PiBtb2R1bGUgdGhhdCBjcmVhdGVkIGEgc2VjdXJpdHkgY29udGV4dCBjYW5ub3QgYmUg aW5mZXJyZWQuDQo+Pg0KPj4gVGhpcyBpcyBhY2hpZXZlZCBieSBpbnRyb2R1Y2luZyBhICJs c21jb250ZXh0IiBzdHJ1Y3R1cmUNCj4+IHdoaWNoIGNvbnRhaW5zIHRoZSBjb250ZXh0IHN0 cmluZywgaXRzIGxlbmd0aCBhbmQgdGhlDQo+PiAic2xvdCIgbnVtYmVyIG9mIHRoZSBzZWN1 cml0eSBtb2R1bGUgdGhhdCBjcmVhdGVkIGl0Lg0KPj4gVGhlIHNlY3VyaXR5X3JlbGVhc2Vf c2VjY3R4KCkgaW50ZXJmYWNlIGlzIGNoYW5nZWQsDQo+PiByZXBsYWNpbmcgdGhlIChzdHJp bmcsbGVuKSBwb2ludGVyIHBhaXIgd2l0aCBhIGxzbWNvbnRleHQNCj4+IHBvaW50ZXIuDQo+ Pg0KPj4gUGF0Y2hlcyAxNi0xOCBjb252ZXJ0IHRoZSBzZWN1cml0eSBpbnRlcmZhY2VzIGZy b20NCj4+IChzdHJpbmcsbGVuKSBwb2ludGVyIHBhaXJzIHRvIGEgbHNtY29udGV4dCBwb2lu dGVyLg0KPj4gVGhlIHNsb3QgbnVtYmVyIGlkZW50aWZ5aW5nIHRoZSBjcmVhdGluZyBtb2R1 bGUgaXMNCj4+IGFkZGVkIGJ5IHRoZSBpbmZyYXN0cnVjdHVyZS4gV2hlcmUgdGhlIHNlY3Vy aXR5IGNvbnRleHQNCj4+IGlzIHN0b3JlZCBmb3IgZXh0ZW5kZWQgcGVyaW9kcyB0aGUgZGF0 YSB0eXBlIGlzIGNoYW5nZWQuDQo+Pg0KPj4gVGhlIE5ldGxhYmVsIGNvZGUgaXMgY29udmVy dGVkIHRvIHNhdmUgbHNtYmxvYiBzdHJ1Y3R1cmVzDQo+PiBpbnN0ZWFkIG9mIHNlY2lkcyBp biBQYXRjaCAxOS4gVGhpcyBpcyBub3Qgc3RyaWN0bHkNCj4+IG5lY2Vzc2FyeSBhcyB0aGVy ZSBjYW4gb25seSBiZSBvbmUgc2VjdXJpdHkgbW9kdWxlIHRoYXQNCj4+IHVzZXMgTmV0bGFi ZWwgYXQgdGhpcyBwb2ludC4gVXNpbmcgYSBsc21ibG9iIGlzIG11Y2gNCj4+IGNsZWFuZXIs IGFzIHRoZSBpbnRlcmZhY2VzIHRoYXQgdXNlIHRoZSBkYXRhIGhhdmUgYWxsDQo+PiBiZWVu IGNvbnZlcnRlZC4NCj4+DQo+PiBQYXRjaCAyMCBhZGRzIGNoZWNrcyB0byB0aGUgYmluZGVy IGhvb2tzIHdoaWNoIHZlcmlmeQ0KPj4gdGhhdCBib3RoIGVuZHMgb2YgYSB0cmFuc2FjdGlv biB1c2UgdGhlIHNhbWUgaW50ZXJmYWNlIExTTS4NCj4+DQo+PiBQYXRjaGVzIDIxLTIzIGFk ZCBhZGRpdGlvbiBhdWRpdCByZWNvcmRzIGZvciBzdWJqZWN0IGFuZA0KPj4gb2JqZWN0IExT TSBkYXRhIHdoZW4gdGhlcmUgYXJlIG11bHRpcGxlIHNlY3VyaXR5IG1vZHVsZXMNCj4+IHdp dGggc3VjaCBkYXRhLiBUaGUgQVVESVRfTUFDX1RBU0tfQ09OVEVYVFMgcmVjb3JkIGlzIHVz ZWQNCj4+IGluIGNvbmp1Y3Rpb24gd2l0aCBhICJzdWJqPT8iIGZpZWxkIHRvIGlkZW50aWZ5 IHRoZSBzdWJqZWN0DQo+PiBkYXRhLiBUaGUgQVVESVRfTUFDX09CSl9DT05URVhUUyByZWNv cmQgaXMgdXNlZCBpbiBjb25qdWN0aW9uDQo+PiB3aXRoIGEgIm9iaj0/IiBmaWVsZCB0byBp ZGVudGlmeSB0aGUgb2JqZWN0IGRhdGEuwqAgVGhlDQo+PiBBVURJVF9NQUNfVEFTS19DT05U RVhUUyByZWNvcmQgaWRlbnRpZmllcyB0aGUgc2VjdXJpdHkgbW9kdWxlDQo+PiB3aXRoIHRo ZSBkYXRhOiAic3Vial9zZWxpbnV4PXh5el90IHN1YmpfYXBwYXJtb3I9YWJjIi4gVGhlDQo+ PiBBVURJVF9NQUNfT0JKX0NPTlRFWFRTIHJlY29yZCBpZGVudGlmaWVzIHRoZSBzZWN1cml0 eSBtb2R1bGUNCj4+IHdpdGggdGhlIGRhdGE6ICJvYmpfc2VsaW51eD14eXpfdCBvYmpfYXBw YXJtb3I9YWJjIi7CoCBXaGlsZQ0KPj4gQVVESVRfTUFDX1RBU0tfQ09OVEVYVFMgcmVjb3Jk cyB3aWxsIGFsd2F5cyBjb250YWluIGFuIGVudHJ5DQo+PiBmb3IgZWFjaCBwb3NzaWJsZSBz ZWN1cml0eSBtb2R1bGVzLCBBVURJVF9NQUNfT0JKX0NPTlRFWFRTDQo+PiByZWNvcmRzIHdp bGwgb25seSBjb250YWluIGVudHJpZXMgZm9yIHNlY3VyaXR5IG1vZHVsZXMgZm9yDQo+PiB3 aGljaCB0aGUgb2JqZWN0IGluIHF1ZXN0aW9uIGhhcyBkYXRhLg0KPj4NCj4+IEFuIGV4YW1w bGUgb2YgdGhlIE1BQ19UQVNLX0NPTlRFWFRTICgxNDIwKSByZWNvcmQgaXM6DQo+Pg0KPj4g wqDCoMKgwqAgdHlwZT1VTktOT1dOWzE0MjBdDQo+PiDCoMKgwqDCoCBtc2c9YXVkaXQoMTYw MDg4MDkzMS44MzI6MTEzKQ0KPj4gwqDCoMKgwqAgc3Vial9hcHBhcm1vcj09dW5jb25maW5l ZA0KPj4gwqDCoMKgwqAgc3Vial9zbWFjaz1fDQo+Pg0KPj4gQW4gZXhhbXBsZSBvZiB0aGUg TUFDX09CSl9DT05URVhUUyAoMTQyMSkgcmVjb3JkIGlzOg0KPj4NCj4+IMKgwqDCoMKgIHR5 cGU9VU5LTk9XTlsxNDIxXQ0KPj4gwqDCoMKgwqAgbXNnPWF1ZGl0KDE2MDExNTI0NjcuMDA5 OjEwNTApOg0KPj4gwqDCoMKgwqAgb2JqX3NlbGludXg9dW5jb25maW5lZF91Om9iamVjdF9y OnVzZXJfaG9tZV90OnMwDQo+Pg0KPj4gUGF0Y2ggMjQgYWRkcyBhIG5ldyBpbnRlcmZhY2Ug Zm9yIGdldHRpbmcgdGhlIGNvbXBvdW5kIHNlY3VyaXR5DQo+PiBjb250ZXh0cywgL3Byb2Mv c2VsZi9hdHRyL2NvbnRleHQuwqAgQW4gZXhhbXBsZSBvZiB0aGUgY29udGVudA0KPj4gb2Yg dGhpcyBmaWxlIGlzOg0KPj4NCj4+IMKgwqDCoMKgIHNlbGludXhcMG9uZV91Om9uZV9yOm9u ZV90OnMwLXMwOmMwLmMxMDIzXDBhcHBhcm1vclwwdW5jb25maW5lZFwwDQo+Pg0KPj4gRmlu YWxseSwgd2l0aCBhbGwgaW50ZXJmZXJlbmNlIG9uIHRoZSBBcHBBcm1vciBob29rcyByZW1v dmVkLA0KPj4gUGF0Y2ggMjUgcmVtb3ZlcyB0aGUgZXhjbHVzaXZlIGJpdCBmcm9tIEFwcEFy bW9yLiBBbiB1bm5lY2Vzc2FyeQ0KPj4gc3R1YiBob29rIHdhcyBhbHNvIHJlbW92ZWQuDQo+ Pg0KPj4gVGhlIFVidW50dSBwcm9qZWN0IGlzIHVzaW5nIGFuIGVhcmxpZXIgdmVyc2lvbiBv ZiB0aGlzIHBhdGNoc2V0IGluDQo+PiB0aGVpciBkaXN0cmlidXRpb24gdG8gZW5hYmxlIHN0 YWNraW5nIGZvciBjb250YWluZXJzLg0KPj4NCj4+IFBlcmZvcm1hbmNlIG1lYXN1cmVtZW50 cyB0byBkYXRlIGhhdmUgdGhlIGNoYW5nZSB3aXRoaW4gdGhlICJub2lzZSIuDQo+PiBUaGUg c29ja3BlcmYgYW5kIGRiZW5jaCByZXN1bHRzIGFyZSBvbiB0aGUgb3JkZXIgb2YgMC4yJSB0 byAwLjglDQo+PiBkaWZmZXJlbmNlLCB3aXRoIGJldHRlciBwZXJmb3JtYW5jZSBiZWluZyBh cyBjb21tb24gYXMgd29yc2UuIFRoZQ0KPj4gYmVuY2htYXJrcyB3ZXJlIHJ1biB3aXRoIEFw cEFybW9yIGFuZCBTbWFjayBvbiBVYnVudHUuDQo+Pg0KPj4gaHR0cHM6Ly9naXRodWIuY29t L2NzY2hhdWZsZXIvbHNtLXN0YWNraW5nLmdpdCNzdGFjay01LjExLXJjMS12MjQNCj4+DQo+ PiBTaWduZWQtb2ZmLWJ5OiBDYXNleSBTY2hhdWZsZXIgPGNhc2V5QHNjaGF1Zmxlci1jYS5j b20+DQo+Pg0KPj4NCj4+IENhc2V5IFNjaGF1ZmxlciAoMjUpOg0KPj4gwqDCoCBMU006IElu ZnJhc3RydWN0dXJlIG1hbmFnZW1lbnQgb2YgdGhlIHNvY2sgc2VjdXJpdHkNCj4+IMKgwqAg TFNNOiBBZGQgdGhlIGxzbWJsb2IgZGF0YSBzdHJ1Y3R1cmUuDQo+PiDCoMKgIExTTTogcHJv dmlkZSBsc20gbmFtZSBhbmQgaWQgc2xvdCBtYXBwaW5ncw0KPj4gwqDCoCBJTUE6IGF2b2lk IGxhYmVsIGNvbGxpc2lvbnMgd2l0aCBzdGFja2VkIExTTXMNCj4+IMKgwqAgTFNNOiBVc2Ug bHNtYmxvYiBpbiBzZWN1cml0eV9hdWRpdF9ydWxlX21hdGNoDQo+PiDCoMKgIExTTTogVXNl IGxzbWJsb2IgaW4gc2VjdXJpdHlfa2VybmVsX2FjdF9hcw0KPj4gwqDCoCBMU006IFVzZSBs c21ibG9iIGluIHNlY3VyaXR5X3NlY2N0eF90b19zZWNpZA0KPj4gwqDCoCBMU006IFVzZSBs c21ibG9iIGluIHNlY3VyaXR5X3NlY2lkX3RvX3NlY2N0eA0KPj4gwqDCoCBMU006IFVzZSBs c21ibG9iIGluIHNlY3VyaXR5X2lwY19nZXRzZWNpZA0KPj4gwqDCoCBMU006IFVzZSBsc21i bG9iIGluIHNlY3VyaXR5X3Rhc2tfZ2V0c2VjaWQNCj4+IMKgwqAgTFNNOiBVc2UgbHNtYmxv YiBpbiBzZWN1cml0eV9pbm9kZV9nZXRzZWNpZA0KPj4gwqDCoCBMU006IFVzZSBsc21ibG9i IGluIHNlY3VyaXR5X2NyZWRfZ2V0c2VjaWQNCj4+IMKgwqAgSU1BOiBDaGFuZ2UgaW50ZXJu YWwgaW50ZXJmYWNlcyB0byB1c2UgbHNtYmxvYnMNCj4+IMKgwqAgTFNNOiBTcGVjaWZ5IHdo aWNoIExTTSB0byBkaXNwbGF5DQo+PiDCoMKgIExTTTogRW5zdXJlIHRoZSBjb3JyZWN0IExT TSBjb250ZXh0IHJlbGVhc2VyDQo+PiDCoMKgIExTTTogVXNlIGxzbWNvbnRleHQgaW4gc2Vj dXJpdHlfc2VjaWRfdG9fc2VjY3R4DQo+PiDCoMKgIExTTTogVXNlIGxzbWNvbnRleHQgaW4g c2VjdXJpdHlfaW5vZGVfZ2V0c2VjY3R4DQo+PiDCoMKgIExTTTogc2VjdXJpdHlfc2VjaWRf dG9fc2VjY3R4IGluIG5ldGxpbmsgbmV0ZmlsdGVyDQo+PiDCoMKgIE5FVDogU3RvcmUgTFNN IG5ldGxhYmVsIGRhdGEgaW4gYSBsc21ibG9iDQo+PiDCoMKgIExTTTogVmVyaWZ5IExTTSBk aXNwbGF5IHNhbml0eSBpbiBiaW5kZXINCj4+IMKgwqAgYXVkaXQ6IGFkZCBzdXBwb3J0IGZv ciBub24tc3lzY2FsbCBhdXhpbGlhcnkgcmVjb3Jkcw0KPj4gwqDCoCBBdWRpdDogQWRkIG5l dyByZWNvcmQgZm9yIG11bHRpcGxlIHByb2Nlc3MgTFNNwqAgYXR0cmlidXRlcw0KPj4gwqDC oCBBdWRpdDogQWRkIGEgbmV3IHJlY29yZCBmb3IgbXVsdGlwbGUgb2JqZWN0IExTTSBhdHRy aWJ1dGVzDQo+PiDCoMKgIExTTTogQWRkIC9wcm9jIGF0dHIgZW50cnkgZm9yIGZ1bGwgTFNN IGNvbnRleHQNCj4+IMKgwqAgQXBwQXJtb3I6IFJlbW92ZSB0aGUgZXhjbHVzaXZlIGZsYWcN Cj4+DQo+PiDCoCBEb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2ltYV9wb2xpY3nCoMKgwqDC oMKgwqDCoMKgwqAgfMKgwqAgOCArLQ0KPj4gwqAgRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGlu Zy9wcm9jZnMtYXR0ci1jb250ZXh0IHzCoCAxNCArDQo+PiDCoCAuLi4vQUJJL3Rlc3Rpbmcv cHJvY2ZzLWF0dHItbHNtX2Rpc3BsYXnCoMKgwqDCoMKgwqAgfMKgIDIyICsNCj4+IMKgIERv Y3VtZW50YXRpb24vc2VjdXJpdHkvbHNtLnJzdMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB8wqAgMjggKw0KPj4gwqAgZHJpdmVycy9hbmRyb2lkL2JpbmRlci5jwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCAyNiArLQ0KPj4gwqAgZnMv Y2VwaC94YXR0ci5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDYgKy0NCj4+IMKgIGZzL25mcy9uZnM0cHJvYy5j wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgfMKgwqAgOCArLQ0KPj4gwqAgZnMvbmZzZC9uZnM0eGRyLmPCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgMjAgKy0NCj4+ IMKgIGZzL3Byb2MvYmFzZS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMiArDQo+PiDCoCBpbmNsdWRlL2xp bnV4L2F1ZGl0LmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgfMKgIDQzICstDQo+PiDCoCBpbmNsdWRlL2xpbnV4L2NyZWQuaMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDMgKy0NCj4+ IMKgIGluY2x1ZGUvbGludXgvbHNtX2hvb2tzLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHzCoCAzNiArLQ0KPj4gwqAgaW5jbHVkZS9saW51eC9zZWN1cml0 eS5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMTg1ICsr KysrLQ0KPj4gwqAgaW5jbHVkZS9uZXQvbmV0bGFiZWwuaMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDExICstDQo+PiDCoCBpbmNsdWRlL25l dC9zY20uaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHzCoCAxNSArLQ0KPj4gwqAgaW5jbHVkZS9uZXQveGZybS5owqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCAxMyAr LQ0KPj4gwqAgaW5jbHVkZS91YXBpL2xpbnV4L2F1ZGl0LmjCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCAyICsNCj4+IMKgIGtlcm5lbC9hdWRpdC5jwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgfCAxNzUgKysrKy0tDQo+PiDCoCBrZXJuZWwvYXVkaXQuaMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCAx MSArLQ0KPj4gwqAga2VybmVsL2F1ZGl0ZmlsdGVyLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgMzYgKy0NCj4+IMKgIGtlcm5lbC9h dWRpdHNjLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHwgMTkxICsrKy0tLQ0KPj4gwqAga2VybmVsL2NyZWQuY8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgfMKgIDEyICstDQo+PiDCoCBuZXQvaXB2NC9jaXBzb19pcHY0LmPCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDI2ICstDQo+PiDCoCBu ZXQvaXB2NC9pcF9zb2NrZ2x1ZS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB8wqAgMTIgKy0NCj4+IMKgIG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRy YWNrX25ldGxpbmsuY8KgwqDCoMKgwqDCoMKgwqDCoCB8wqAgMjQgKy0NCj4+IMKgIG5ldC9u ZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3N0YW5kYWxvbmUuY8KgwqDCoMKgwqDCoCB8wqAgMTEg Ky0NCj4+IMKgIG5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmPCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHzCoCAzOCArLQ0KPj4gwqAgbmV0L25ldGZpbHRlci9uZnRfbWV0 YS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCAxMCAr LQ0KPj4gwqAgbmV0L25ldGZpbHRlci94dF9TRUNNQVJLLmPCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCA3ICstDQo+PiDCoCBuZXQvbmV0bGFiZWwvbmV0 bGFiZWxfZG9tYWluaGFzaC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCA0ICstDQo+ PiDCoCBuZXQvbmV0bGFiZWwvbmV0bGFiZWxfa2FwaS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB8wqDCoCA2ICstDQo+PiDCoCBuZXQvbmV0bGFiZWwvbmV0bGFiZWxf dW5sYWJlbGVkLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAxMDYgKystLQ0KPj4gwqAg bmV0L25ldGxhYmVsL25ldGxhYmVsX3VubGFiZWxlZC5owqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHzCoMKgIDIgKy0NCj4+IMKgIG5ldC9uZXRsYWJlbC9uZXRsYWJlbF91c2VyLmPCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCAyMyArLQ0KPj4gwqAgbmV0L25l dGxhYmVsL25ldGxhYmVsX3VzZXIuaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgfMKgwqAgMiArLQ0KPj4gwqAgbmV0L3hmcm0veGZybV9wb2xpY3kuY8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDEwICstDQo+PiDCoCBu ZXQveGZybS94ZnJtX3N0YXRlLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgfMKgIDIwICstDQo+PiDCoCBzZWN1cml0eS9hcHBhcm1vci9pbmNs dWRlL2FwcGFybW9yLmjCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMyArLQ0KPj4gwqAgc2Vj dXJpdHkvYXBwYXJtb3IvaW5jbHVkZS9uZXQuaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgfMKgwqAgNiArLQ0KPj4gwqAgc2VjdXJpdHkvYXBwYXJtb3IvaW5jbHVkZS9wcm9jYXR0 ci5owqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDIgKy0NCj4+IMKgIHNlY3VyaXR5L2FwcGFy bW9yL2xzbS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg fCAxMDUgKystLQ0KPj4gwqAgc2VjdXJpdHkvYXBwYXJtb3IvcHJvY2F0dHIuY8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDIyICstDQo+PiDCoCBzZWN1cml0eS9i cGYvaG9va3MuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHzCoCAxMiArLQ0KPj4gwqAgc2VjdXJpdHkvY29tbW9uY2FwLmPCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCA3ICstDQo+ PiDCoCBzZWN1cml0eS9pbnRlZ3JpdHkvaW1hL2ltYS5owqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB8wqAgMTUgKy0NCj4+IMKgIHNlY3VyaXR5L2ludGVncml0eS9pbWEv aW1hX2FwaS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDE3ICstDQo+PiDCoCBz ZWN1cml0eS9pbnRlZ3JpdHkvaW1hL2ltYV9hcHByYWlzZS5jwqDCoMKgwqDCoMKgwqDCoCB8 wqDCoCA2ICstDQo+PiDCoCBzZWN1cml0eS9pbnRlZ3JpdHkvaW1hL2ltYV9tYWluLmPCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDU0ICstDQo+PiDCoCBzZWN1cml0eS9pbnRlZ3Jp dHkvaW1hL2ltYV9wb2xpY3kuY8KgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCA5NyArKy0NCj4+ IMKgIHNlY3VyaXR5L2ludGVncml0eS9pbnRlZ3JpdHlfYXVkaXQuY8KgwqDCoMKgwqDCoMKg wqDCoCB8wqDCoCA2ICstDQo+PiDCoCBzZWN1cml0eS9sb2FkcGluL2xvYWRwaW4uY8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDggKy0NCj4+IMKgIHNl Y3VyaXR5L2xvY2tkb3duL2xvY2tkb3duLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHzCoMKgIDcgKy0NCj4+IMKgIHNlY3VyaXR5L3NhZmVzZXRpZC9sc20uY8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCA4ICstDQo+PiDC oCBzZWN1cml0eS9zZWN1cml0eS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB8IDU2MSArKysrKysrKysrKysrKysrLS0NCj4+IMKgIHNl Y3VyaXR5L3NlbGludXgvaG9va3MuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB8wqAgOTkgKystLQ0KPj4gwqAgc2VjdXJpdHkvc2VsaW51eC9pbmNsdWRl L2NsYXNzbWFwLmjCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCAyICstDQo+PiDCoCBzZWN1 cml0eS9zZWxpbnV4L2luY2x1ZGUvb2Jqc2VjLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg fMKgwqAgNSArDQo+PiDCoCBzZWN1cml0eS9zZWxpbnV4L2luY2x1ZGUvc2VjdXJpdHkuaMKg wqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDEgKw0KPj4gwqAgc2VjdXJpdHkvc2VsaW51eC9u ZXRsYWJlbC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCAyNSAr LQ0KPj4gwqAgc2VjdXJpdHkvc2VsaW51eC9zcy9zZXJ2aWNlcy5jwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHzCoMKgIDQgKy0NCj4+IMKgIHNlY3VyaXR5L3NtYWNrL3NtYWNr LmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKg IDYgKw0KPj4gwqAgc2VjdXJpdHkvc21hY2svc21hY2tfYWNjZXNzLmPCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCAyICstDQo+PiDCoCBzZWN1cml0eS9zbWFjay9z bWFja19sc20uY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCA5 MSArLS0NCj4+IMKgIHNlY3VyaXR5L3NtYWNrL3NtYWNrX25ldGZpbHRlci5jwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgOCArLQ0KPj4gwqAgc2VjdXJpdHkvc21hY2svc21h Y2tmcy5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCAx MyArLQ0KPj4gwqAgc2VjdXJpdHkvdG9tb3lvL3RvbW95by5jwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDggKy0NCj4+IMKgIHNlY3VyaXR5L3lh bWEveWFtYV9sc20uY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB8wqDCoCA3ICstDQo+PiDCoCA2NyBmaWxlcyBjaGFuZ2VkLCAxNzQxIGluc2VydGlvbnMo KyksIDYzNCBkZWxldGlvbnMoLSkNCj4+IMKgIGNyZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVu dGF0aW9uL0FCSS90ZXN0aW5nL3Byb2Nmcy1hdHRyLWNvbnRleHQNCj4+IMKgIGNyZWF0ZSBt b2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3Byb2Nmcy1hdHRyLWxzbV9k aXNwbGF5DQo+Pg0KPg0K From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.4 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2E0A6C433DB for ; Tue, 2 Feb 2021 15:30:55 +0000 (UTC) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 45AA664F5E for ; Tue, 2 Feb 2021 15:30:53 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 45AA664F5E Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=schaufler-ca.com Authentication-Results: mail.kernel.org; spf=tempfail smtp.mailfrom=linux-audit-bounces@redhat.com Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-335-eSL8IzuENxO50S821QzmXw-1; Tue, 02 Feb 2021 10:30:47 -0500 X-MC-Unique: eSL8IzuENxO50S821QzmXw-1 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 172721800D50; Tue, 2 Feb 2021 15:30:44 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id C1DFB1002393; Tue, 2 Feb 2021 15:30:42 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 63A2D4A7C6; Tue, 2 Feb 2021 15:30:23 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 112FUK3j006730 for ; Tue, 2 Feb 2021 10:30:20 -0500 Received: by smtp.corp.redhat.com (Postfix) id 440191134CB0; Tue, 2 Feb 2021 15:30:20 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast01.extmail.prod.ext.rdu2.redhat.com [10.11.55.17]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 3F3DD1134CB1 for ; Tue, 2 Feb 2021 15:30:17 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [205.139.110.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 339AD85A59D for ; Tue, 2 Feb 2021 15:30:17 +0000 (UTC) Received: from sonic314-26.consmr.mail.ne1.yahoo.com (sonic314-26.consmr.mail.ne1.yahoo.com [66.163.189.152]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-580-3vkS96bsO3eJ1ULbEsouTg-1; Tue, 02 Feb 2021 10:30:14 -0500 X-MC-Unique: 3vkS96bsO3eJ1ULbEsouTg-1 X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1612279813; bh=vocZOY4W/mBWV2WvvIC4WgXyTlaS+dcz5IhqhWL6LV1=; h=Subject:To:From:Date:From:Subject:Reply-To; b=jiae8qg5Eyt/etoMbsDypOm/A/X15ccjZfIgPBHaAWr253Odzo5tr+GInZMi0yviNhFssintSNmtwyoTd6heH7MStHqkp/zlLzuxuGuS/tUNeTjNz9uJR3VF450apw1A34BrFqLAqy3+EBdDhuEEpAfmuJWIZouWvYZFHJoIfQRA/LXKe7v68txhbTWb/2YbpzkZXwlErUOq2fmoVYWj0OrvK3o7KfXbIQgOTM6yMMIjes3rv/+NiLxzuqBgmH77x8SUB4j97WajeqiDWXxQGzPP7jN4MdPuqH9kdy6z/q1kN8ilCVHE6LvWcbLbT+kb4Ko156Yatd2Cedxvf9Vv3Q== X-YMail-OSG: NfBB.TsVM1l_jR2AiNHowANx51uTdIhA6NyXV_5xzHJCXEi9bKhxu_ZbkJ9afuY c0s42CRx8_3RCvCll4HC28PFfavjU8xBzMGA82XkTm0IfkO8qK4MvNMSkVoJTUyK_pDWAG8Y4S56 04yv929oRpdTzU.NV2JHyfw4YJOvg073.Pew2gzNHiRLm7qmIY6llFCDxeQEVmYH6Ul7RuLRCLe2 Kwa9WRRfiQSBHmSLLq1zhM7SL58zhDlo_VdcK2V8PCGEJIp3yqdxQP8anidyx0aae1juVct1K7K6 l_SzhstS0QPs6K23wh1ja.rCAzrIrfm9.9F7eh9FV56_p0uT_FbMAvSHz_mjyQm5nrMUFqDHLAac SOnpusqCBYuaomYqRJJCkDGh2QWzcWBk8r0pFraS5OrsTy32GFy2Mb8KoQvpzdEr93tTfeKMXl4p EOGCoIcpJK0Hb_wHiXgsLUzIgrPr_iq6FZXjCUnx2Q9CXtWYzSoEvp5A8nTWlP7Gz0LhUTqVPLRE snUztO4j5uX3lavVmTyV2Sf1GZVXJq_7aDPI1sVAwxHHW3WDKUCG.zHTwP9CZihGiaRp11OpkGLF aJmGY5.Db5xnsbgCjboL4cVUsbNDc2gDdOOfU2a1vxIy0sen.XxzZ06YMJJaJQusKsna7368aDTB GElmOs_EVnD7SSET6wz5lhQIPw036FlVSAvx6awLOn1I_OL3WKSR0AztDHbHqS9qNnYYtLb2SfHx lMMqnx8TJyxrzPtyPta0a70WJh.HsM0Ae_mL8zut_ORArsG9LncF_OQxg01cS9w6ki0LrZq_4rri SlJW9ZRDKtW3lCOSIf5SMYYu2U3XVCzgwP3e1VYdQwkmgpetVMjrIpUF1lqtAElgsU8auWMgFstH 27X6v7VGI4x8esAXzfj3QPAv2r41bKz8NV23PEpKUU4itEVYh8.w0JL3M2ol3ydB_QEWBohIAf6u 1DkPA5fgh74DO5fxswnO9JRz2tJ.zYSlGl0iKwg.1DjmJf429RedFWbDram.ivN3nm56b7S2hGql jjrYlPjsj24z3imKQyrDIHZ3AT_Yd4nxcOwQISinUygNaxvNyq.TyH2Yxu78V_erVqsHTw48RKXt XO579qzVaiHyPOAytyTAjkrLoaBhMsPXqIqe.2pW6hKctuehJ72XTw3FaejesBLWfmRFkVR0Z_.O NKpnE34E0nIQ1Jjz.rOFZ50R3IxtGuOElelCGf.0iQzpd9jCCAhNYXsksbhGHzePS.nqInBM8Oqa eWFrKC_QkeXnMcRKW0TUkJdA4INscIZ5L0l0dZBN9y3vt0qcv8mjj1lKVL16FjYuzQO06NPKWhSX _ZuxQH6TIwMnO_PhiE9LwqHCh4r3IwbyRjnRlOsJeEK854EnSk4U5gI.x6jqJC_FqXmwa3B9515_ qoaJ3KPql5LPUr9.oe4R444m7I8fzNtodQweNzSHcZFMeVCar_f3J7euzl.wWsDThMn87yyWW0cw jMq0CArXVGubZ8Oi2VCzYEM3DPgN9oaFG6H9pYE16t2qzmFtg0rRP0_SUMhP_ok9vH83anCmjdI. KmYOjr.ORh2D5aPswWKv5HnnBUx9503mVUE4S2D65EmWwBnOfa.xqUT7z4TdmpY47UcysvJJJry7 xJ0KxFhH7EsPR.f7ZmdI.JPbZSyPAhysYof5OVevTeRlFtge_Jem8vpZVPWOQD_pTR3pv0phs9gs UAIMky453R9YZzwY69oBnDo1.L7NQR_usho7iTESeXVtnWyUtFOEN0JMHoF5iJeKWdm3TuqOsPjJ B6V.SgbAABLPsJz7qTI1SkLhVchI42XjZRTYuGduy3VxnTiLNiRuY1L1Zhn8FcQOWbHSQ8f71Reg 52c94PDEO0rZHJeUsjbV8kRnlohgbH8hzD2DEP73AayPkzqYHZQCgkvMRj9tnYjeCUayzXia9wdn yTlyaapOt5qXGfAaI4G1D3.Z2duN9KrPkuvJ_TwMVgMBmV8qzHu8TY3mjSfjLKuEqh4xnhALJGQ1 hpPqOMl2CHCK5oKNb.5106agBiuJbFMePhblaUxP6NtQmnHyRMKhM05H3dYWvqK0V2nu9DaL1Ede 6Nr3x6jTxyl8ItYaHtaEaGR0D8uuIeJ.YTB460N8o8qpb8aV8IcDa7RdTi791fBqs05ZIzi_DLAG HwVxnIv9Wh7H2xcEYS8L4mOO5cq9R5Wl5qrvUlD7S5QVo61sqGoJrrO5DbUVcEoPlEEdPETA8QBY sbTXeJK8YRx_uWtFeF_GinTSXEW1OvmAr75kcgMPMxl.uA1xq_T9hz8cRNzecRp1swLRxP50XHdY tpF.nGJJwF5EjH9wOIKYeDaUYugkt4NcFaUONKXwq4oj1swPsTq1vlmCHUxxm4vc9gHfYrYYnXLC 0REZP_khXlAaldYutQjRlzCj0jOZOc3e2DHinKhCmrcVFvtjjzRpdjIuvojWfTuR.c6cPkRR1Uev tV0OzocN06SzStAqZ_rEGUaBeAFjOFKuVGT9bWlZ555Aa4p9WyXr7jMJm_pOy9vMDiZWeIuMMXh_ zyIM0w_0MNUWWq3UEgb9NRJ8f0tCqwYC40tVZxTRsZX890uHkJLEYOeYSgbT.q1S8P5_jiN6p1Uw pOKQ4VU1H0KOFksiHZTpFVDsWjts15tPz3DX9b4CSMEj5M.4vAgFsRmElQ4IwuXz_LO5l5mb2IRT Bd3Xh6dlHyINoKgIHVCUknyysFEOLS6kyR2Z0wpcObNf4QnpjBvJHWRsWXtEC0O37wB4MGPLlC6k 6OM1oGgrUhB6vWKRFvLwlqwsPD6JQQdDbfu6iQdYdCFgBGrjJh3.Qu_pS5yz625uuYuxxPxrabuk ISZ50Yfm8hqJQHsxg6s4XRE1YY5ETg_QH00zn05.1D4UQqgVhpGiUqgnCSkf.OTEpKdqZcNRSd1z mobivn2yJYV90nRPy49nLOLaEdes2UPWTCdankseCVPaQcxpir2afLvvMXiMHaATV6FH3Gg29t3y kxVrIJojIxePRDG2lp8uKsbaKjDkoYCPWcX4pTaTpsqr.Xv_SFWaFTz4viamTR0dd_X4YnLWtEz6 mb90WzxjelrnK3dNi6vV1hCtArK6Lrb_.25s_6u1RGxok235P.gQxmEHvYDA_Ijw- Received: from sonic.gate.mail.ne1.yahoo.com by sonic314.consmr.mail.ne1.yahoo.com with HTTP; Tue, 2 Feb 2021 15:30:13 +0000 Received: by smtp418.mail.gq1.yahoo.com (VZM Hermes SMTP Server) with ESMTPA ID 152b727c9634b76c0302c24cc85f8c7b; Tue, 02 Feb 2021 15:30:08 +0000 (UTC) Subject: Re: [PATCH v24 00/25] LSM: Module stacking for AppArmor To: Topi Miettinen , casey.schaufler@intel.com, jmorris@namei.org, linux-security-module@vger.kernel.org, selinux@vger.kernel.org References: <20210126164108.1958-1-casey.ref@schaufler-ca.com> <20210126164108.1958-1-casey@schaufler-ca.com> <31ba0fe7-afdf-8f7d-e7a7-8f15d8c690a4@gmail.com> From: Casey Schaufler Message-ID: Date: Tue, 2 Feb 2021 07:30:06 -0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.6.1 MIME-Version: 1.0 In-Reply-To: <31ba0fe7-afdf-8f7d-e7a7-8f15d8c690a4@gmail.com> X-Mimecast-Impersonation-Protect: Policy=CLT - Impersonation Protection Definition; Similar Internal Domain=false; Similar Monitored External Domain=false; Custom External Domain=false; Mimecast External Domain=false; Newly Observed Domain=false; Internal User Name=false; Custom Display Name List=false; Reply-to Address Mismatch=false; Targeted Threat Dictionary=false; Mimecast Threat Dictionary=false; Custom Threat Dictionary=false X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-MIME-Autoconverted: from base64 to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 112FUK3j006730 X-loop: linux-audit@redhat.com Cc: john.johansen@canonical.com, linux-kernel@vger.kernel.org, linux-audit@redhat.com, sds@tycho.nsa.gov X-BeenThere: linux-audit@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Linux Audit Discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linux-audit-bounces@redhat.com Errors-To: linux-audit-bounces@redhat.com X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=linux-audit-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gMi8yLzIwMjEgNDowNSBBTSwgVG9waSBNaWV0dGluZW4gd3JvdGU6Cj4gT24gMjYuMS4yMDIx IDE4LjQwLCBDYXNleSBTY2hhdWZsZXIgd3JvdGU6Cj4+IFRoaXMgcGF0Y2hzZXQgcHJvdmlkZXMg dGhlIGNoYW5nZXMgcmVxdWlyZWQgZm9yCj4+IHRoZSBBcHBBcm1vciBzZWN1cml0eSBtb2R1bGUg dG8gc3RhY2sgc2FmZWx5IHdpdGggYW55IG90aGVyLgo+Cj4gSW4gbXkgdGVzdCwgd2hlbiBrZXJu ZWwgY29tbWFuZCBsaW5lIGhhcyBhcHBhcm1vciBiZWZvcmUgc2VsaW51eCBpbiBsc209IGVudHJ5 LCB0aGUgYm9vdCBpcyBub3Qgc3VjY2Vzc2Z1bCB3aXRoIGVuZm9yY2luZz0xOgo+IHN5c3RlbWRb MV06IEZhaWxlZCB0byBjb21wdXRlIGluaXQgbGFiZWwsIGlnbm9yaW5nLgo+IHN5c3RlbWRbMV06 IEZhaWxlZCB0byBzZXQgU0VMaW51eCBzZWN1cml0eSBjb250ZXh0IHN5c3RlbV91Om9iamVjdF9y OmNncm91cF90OnMwIGZvciAvc3lzL2ZzL2Nncm91cDogSW52YWxpZCBhcmd1bWVudAo+IHN5c3Rl bWRbMV06IEZhaWxlZCB0byBzZXQgU0VMaW51eCBzZWN1cml0eSBjb250ZXh0IHN5c3RlbV91Om9i amVjdF9yOnBzdG9yZV90OnMwIGZvciAvc3lzL2ZzL3BzdG9yZTogSW52YWxpZCBhcmd1bWVudAo+ IHN5c3RlbWRbMV06IEZhaWxlZCB0byBzZXQgU0VMaW51eCBzZWN1cml0eSBjb250ZXh0IHN5c3Rl bV91Om9iamVjdF9yOnN5c2ZzX3Q6czAgZm9yIC9zeXMvZmlybXdhcmUvZWZpL2VmaXZhcnM6IElu dmFsaWQgYXJndW1lbnQKPiAuLi4KPiBGYWlsZWQgdG8gZHJvcCBjYXBhYmlsaXR5IGJvdW5kaW5n IHNldCBvZiB1c2VybW9kZSBoZWxwZXJzOiBPcGVyYXRpb24gbm90IHBlcm1pdHRlZAo+IEZhaWxl ZCB0byBkcm9wIGNhcGFiaWxpdHkgYm91bmRpbmcgc2V0IG9mIHVzZXJtb2RlIGhlbHBlcnMuCj4g c3lzdGVtZFsxXTogRnJlZXppbmcgZXhlY3V0aW9uLgoKU3lzdGVtZCBoYXMgZXh0ZW5zaXZlIHN1 cHBvcnQgZm9yIFNFTGludXguIFRoYXQncyBnb29kLgpJdCBkb2Vzbid0IGhhdmUgYW4gdW5kZXJz dGFuZGluZyBvZiB3aGF0IG5lZWRzIHRvIGJlIGRvbmUKaWYgU0VMaW51eCBpcyBhY3RpdmUgYnV0 IG5vdCB0aGUgZGVmYXVsdCBzZWN1cml0eSBtb2R1bGUKZm9yIGludGVyZmFjZXMgaW5jbHVkaW5n IFNPX1BFRVJTRUMgYW5kIC9wcm9jLyovYXR0ci8qLgpUaGF0J3MgZ29pbmcgdG8gdGFrZSBzb21l IHdvcmsuCgo+Cj4gUHJvYmFibHkgU0VMaW51eCBsaWJyYXJpZXMgY2FuJ3QgZmluZCBvciBzZXQg dGhlIGxhYmVscyBmb3IgdGhlIFBJRDEgb3IgYW55IGZpbGUgc3lzdGVtcy4gQmVmb3JlIHRoZSBp bml0IGxhYmVsIG1lc3NhZ2UsIHN5c3RlbWQgY2FsbHMgZ2V0Y29uX3JhdygpLCBnZXRmaWxlY29u X3JhdygpLCBzdHJpbmdfdG9fc2VjdXJpdHlfY2xhc3MoKSBhbmQgc2VjdXJpdHlfY29tcHV0ZV9j cmVhdGVfcmF3KCksIHNvIG9uZSBvZiB0aGVzZSBkb24ndCB1bmRlcnN0YW5kIHRoZSBMU00gc3Rh Y2tpbmcuCgpUaGF0IGlzIGNvcnJlY3QuCgo+Cj4gQWxzbyB0aGUgcG9saWN5IG5lZWRzIHVwZGF0 aW5nIHRvIGhhbmRsZSBwcm9jZXNzMjpzZXRkaXNwbGF5Ogo+IFNFTGludXg6wqAgUGVybWlzc2lv biBzZXRkaXNwbGF5IGluIGNsYXNzIHByb2Nlc3MyIG5vdCBkZWZpbmVkIGluIHBvbGljeS4KPiBT RUxpbnV4OiB0aGUgYWJvdmUgdW5rbm93biBjbGFzc2VzIGFuZCBwZXJtaXNzaW9ucyB3aWxsIGJl IGRlbmllZAo+Cj4gV2l0aCBlbmZvcmNpbmc9MCwgbWFueSBzZXJ2aWNlcyBzdGFydCwgYnV0IGZv ciBleGFtcGxlIHN5c3RlbWQtam91cm5hbGQgZG9lc24ndC4gVGhpcyBpcyBwcm9iYWJseSByZWxh dGVkIHRvIHRoZSBlYXJsaWVyIHByb2JsZW0gd2l0aCBsYWJlbHMgKG1heWJlIGxpYnJhcmllcyB0 cnkgdG8gdXNlIFNFTGludXggbGFiZWxzIHdoZXJlIGtlcm5lbCB3YW50cyBBcHBBcm1vciBwcm9m aWxlcyk6Cj4gc3lzdGVtZFsxXTogRmFpbGVkIHRvIHNldCBTRUxpbnV4IHNlY3VyaXR5IGNvbnRl eHQgc3lzdGVtX3U6b2JqZWN0X3I6aW5pdF9ydW50aW1lX3Q6czAgZm9yIC9ydW4vc3lzdGVtZC91 bml0cy9pbnZvY2F0aW9uOnN5c3RlbWQtdXNlci1zZXNzaW9ucy5zZXJ2aWNlOiBJbnZhbGlkIGFy Z3VtZW50CgpUaGlzIGlzIGFsc28gYW4gYXJ0aWZhY3Qgb2Ygc3lzdGVtZCBzZWVpbmcgQXBwQXJt b3IgaW5mb3JtYXRpb24KaW5zdGVhZCBvZiBTRUxpbnV4IGNvbnRleHRzLgoKPgo+IFN3aXRjaGlu ZyB0aGUgb3JkZXIgc28gdGhhdCBhcHBhcm1vciBpcyBhZnRlciBzZWxpbnV4LCBib290IGlzIHN1 Y2Nlc3NmdWwuIExvYWRpbmcgQXBwQXJtb3IgcHJvZmlsZXMgbmVlZHMgYSBwZXJtaXNzaW9uIGZy b20gU0VMaW51eDoKPgo+IEZlYiAwMiAwODo1MzoxNSBhdWRpdFs5NjNdOiBBVkMgYXZjOsKgIGRl bmllZMKgIHsgbWFjX2FkbWluIH0gZm9ywqAgcGlkPTk2MyBjb21tPSJhcHBhcm1vcl9wYXJzZXIi IGNhcGFiaWxpdHk9MzMgc2NvbnRleHQ9c3lzdGVtX3U6c3lzdGVtX3I6aW5pdHJjX3Q6czAgdGNv bnRleHQ9c3lzdGVtX3U6c3lzdGVtX3I6aW5pdHJjX3Q6czAgdGNsYXNzPWNhcGFiaWxpdHkyIHBl cm1pc3NpdmU9MAo+IEZlYiAwMiAwODo1MzoxNSBhdWRpdFs5NjNdOiBBVkMgYXBwYXJtb3I9IlNU QVRVUyIgb3BlcmF0aW9uPSJwcm9maWxlX3JlcGxhY2UiIGluZm89Im5vdCBwb2xpY3kgYWRtaW4i IGVycm9yPS0xMyBwcm9maWxlPSJ1bmNvbmZpbmVkIiBwaWQ9OTYzIGNvbW09ImFwcGFybW9yX3Bh cnNlciIKPiBGZWIgMDIgMDg6NTM6MTUgYXVkaXQ6IEFVRElUMTQyMCBzdWJqX3NlbGludXg9c3lz dGVtX3U6c3lzdGVtX3I6aW5pdHJjX3Q6czAgc3Vial9hcHBhcm1vcj09dW5jb25maW5lZAo+IEZl YiAwMiAwODo1MzoxNSBhdWRpdFs5NjNdOiBTWVNDQUxMIGFyY2g9YzAwMDAwM2Ugc3lzY2FsbD0x IHN1Y2Nlc3M9bm8gZXhpdD0tMTMgYTA9NyBhMT03YThmMmZmMDRmODAgYTI9MWUwOSBhMz0wIGl0 ZW1zPTAgcHBpZD05NjEgcGlkPTk2MyBhdWlkPTQyOTQ5NjcyOTUgdWlkPTAgZ2lkPTAgZXVpZD0w IHN1aWQ9MCBmc3VpZD0wIGVnaWQ9MCBzZ2lkPTAgZnNnaWQ9MCB0dHk9KG5vbmUpIHNlcz00Mjk0 OTY3Mjk1IGNvbW09ImFwcGFybW9yX3BhcnNlciIgZXhlPSIvdXNyL3NiaW4vYXBwYXJtb3JfcGFy c2VyIiBzdWJqPT8ga2V5PShudWxsKQo+IEZlYiAwMiAwODo1MzoxNSBhdWRpdDogUFJPQ1RJVExF IHByb2N0aXRsZT0yRjczNjI2OTZFMkY2MTcwNzA2MTcyNkQ2RjcyNUY3MDYxNzI3MzY1NzIwMDJE MkQ3NzcyNjk3NDY1MkQ2MzYxNjM2ODY1MDAyRDJENzI2NTcwNkM2MTYzNjUwMDJEMkQwMDJGNjU3 NDYzMkY2MTcwNzA2MTcyNkQ2RjcyMkU2NAo+IEZlYiAwMiAwODo1MzoxNSBhcHBhcm1vci5zeXN0 ZW1kWzk2M106IC9zYmluL2FwcGFybW9yX3BhcnNlcjogVW5hYmxlIHRvIHJlcGxhY2UgIi9saWIv c3lzdGVtZC9zeXN0ZW1kLXJlc29sdmVkIi7CoCBQZXJtaXNzaW9uIGRlbmllZDsgYXR0ZW1wdGVk IHRvIGxvYWQgYSBwcm9maWxlIHdoaWxlIGNvbmZpbmVkPwo+Cj4gVGhpcyBqdXN0IHNlZW1zIHRv IG5lZWQgVEUgcnVsZXMgZm9yIHRoZSBhcHBhcm1vcl9wYXJzZXIuCj4KPiBEb3VibGUgZXF1YWwg c2lnbiBpbiBzdWJqX2FwcGFybW9yPT11bmNvbmZpbmVkIGxvb2tzIG9kZCwgc2hvdWxkIHRoYXQg YmUganVzdCBvbmUgbGlrZSBzdWJqX3NlbGludXg/CgpUaGUgYXVkaXQgY29kZSBpcyByZXBvcnRp bmcgd2hhdCBBcHBBcm1vciBwcm92aWRlcy4KSSBhZ3JlZSB0aGF0IHRoaXMgbG9va3Mgb2RkLgoK Pgo+Cj4gVG9vbHMgbGlrZSBwcywgYW5kIEtERSBhbmQgR25vbWUgU3lzdGVtIE1vbml0b3JzIG9u bHkgc2hvdyBTRUxpbnV4IGNvbnRleHQsIGJ1dCBpdCB3b3VsZCBiZSBuaWNlIGlmIE1BQyBjb250 ZXh0cyBmb3IgYWxsIGVuYWJsZWQgTFNNcyB3ZXJlIHNob3duLgoKSSBhZ3JlZS4gSG93IHRoaXMg c2hvdWxkIGJlIGRvbmUgaGFzIGJlZW4gYSB0b3BpYyBvZgpsaXZlbHkgZGViYXRlIGZvciBzb21l IHRpbWUuIAoKPgo+IC1Ub3BpCgpUaGFuayB5b3UgZm9yIHRoaXMgcmVwb3J0LiBXaGljaCBkaXN0 cmlidXRpb24gYXJlIHlvdSB1c2luZz8KSSBoYXZlIGJlZW4gdGVzdGluZyB3aXRoIEZlZG9yYSAo U0VMaW51eCArIEFwcEFybW9yKSBhbmQgVWJ1bnR1CihBcHBBcm1vciArIFNtYWNrKS4gSSB3b3Vs ZCBiZSB2ZXJ5IGludGVyZXN0ZWQgdG8gc2VlIGhvdyBhCmRpc3RyaWJ1dGlvbiB0aGF0IGRvZXNu J3QgdXNlIHN5c3RlbWQgYmVoYXZlcy4KCj4KPj4KPj4gdjI0OiBSZWJhc2UgdG8gNS4xMS1yYzEK Pj4gwqDCoMKgwqDCoCBJbmNvcnBvcmF0ZSBmZWVkYmFjayBmcm9tIHYyMwo+PiDCoMKgwqDCoMKg IC0gQWRkcmVzcyB0aGUgSU1BIHRlYW0ncyBjb25jZXJucyBhYm91dCAibGFiZWwgY29sbGlzaW9u cyIuCj4+IMKgwqDCoMKgwqDCoMKgIEEgbGFiZWwgY29sbGlzaW9uIG9jY3VycyB3aGVuIHRoZXJl IGlzIGFtYmlndWl0eSBhYm91dAo+PiDCoMKgwqDCoMKgwqDCoCB3aGljaCBvZiBtdWx0aXBsZSBM U01zIGlzIGJlaW5nIHRhcmdldGVkIGluIHRoZSBkZWZpbml0aW9uCj4+IMKgwqDCoMKgwqDCoMKg IG9mIGFuIGludGVncml0eSBjaGVjayBydWxlLsKgIEEgc3lzdGVtIHdpdGggU21hY2sgYW5kCj4+ IMKgwqDCoMKgwqDCoMKgIEFwcEFybW9yIHdvdWxkIGJlIHVuYWJsZSB0byBkaXN0aW5ndWlzaCB3 aGljaCBMU00gaXMKPj4gwqDCoMKgwqDCoMKgwqAgaW1wb3J0YW50IHRvIGFuIGludGVncml0eSBy dWxlIHJlZmVycmVuY2luZyB0aGUgbGFiZWwKPj4gwqDCoMKgwqDCoMKgwqAgInVuY29uZmluZWQi IGFzIHRoYXQgbGFiZWwgaXMgbWVhbmluZ2Z1bCB0byBib3RoLgo+PiDCoMKgwqDCoMKgwqDCoCBQ cm92aWRlIGEgYm9vdCBvcHRpb24gdG8gc3BlY2lmeSB3aGljaCBMU00gd2lsbCBiZSB1c2VkIGlu Cj4+IMKgwqDCoMKgwqDCoMKgIElNQSBydWxlcyB3aGVuIG11bHRpcGxlIExTTXMgYXJlIHByZXNl bnQuIChwYXRjaCAwNCkKPj4gwqDCoMKgwqDCoMKgwqAgUHVsbCBMU00gInNsb3QiIGlkZW50aWZp Y2F0aW9uIGZyb20gbGF0ZXIgYXVkaXQgcGF0Y2hlcyBpbgo+PiDCoMKgwqDCoMKgwqDCoCBpbiBz dXBwb3J0IG9mIHRoaXMgKHBhdGNoIDAzKS4KPj4gwqDCoMKgwqDCoCAtIFBpY2sgdXAgYSBmZXcg YXVkaXQgZXZlbnRzIHRoYXQgbmVlZCB0byBpbmNsdWRlIHN1cHBsaW1lbnRhbAo+PiDCoMKgwqDC oMKgwqDCoCBzdWJqZWN0IGNvbnRleHQgcmVjb3JkcyB0aGF0IGhhZCBiZWVuIG1pc3NlZCBpbiB0 aGUKPj4gwqDCoMKgwqDCoMKgwqAgcHJldmlvdXMgdmVyc2lvbi4KPj4gdjIzOiBSZWJhc2UgdG8g NS4xMC1yYzQKPj4gwqDCoMKgwqDCoCBJbmNvcnBvcmF0ZSBmZWVkYmFjayBmcm9tIHYyMgo+PiDC oMKgwqDCoMKgIC0gQ2hhbmdlIC9wcm9jLyovYXR0ci9kaXNwbGF5IHRvIC9wcm9jLyovYXR0ci9p bnRlcmZhY2VfbHNtIHRvCj4+IMKgwqDCoMKgwqDCoMKgIG1ha2UgdGhlIHB1cnBvc2UgY2xlYXJl ci4gKHBhdGNoIDAwMTIpCj4+IMKgwqDCoMKgwqAgLSBJbmNsdWRlIEFCSSBkb2N1bWVudGF0aW9u LiAocGF0Y2ggMDAxMiwgMDAyMikKPj4gwqDCoMKgwqDCoCAtIEludHJvZHVjZSBMU00gZG9jdW1l bnRhdGlvbiB1cGRhdGVzIHdpdGggdGhlIHBhdGNoZXMgd2hlcmUKPj4gwqDCoMKgwqDCoMKgwqAg dGhlIGludGVyZmFjZXMgYXJlIGFkZGVkIHJhdGhlciB0aGFuIGF0IHRoZSBlbmQuIChwYXRjaCAw MDEyLCAwMDIyKQo+PiDCoMKgwqDCoMKgIEluY2x1ZGUgbW9yZSBtYWludGFpbmVycyBhbmQgbWFp bCBsaXN0cyBpbiBUbzogYW5kIENjOiBkaXJlY3RpdmVzLgo+PiB2MjI6IFJlYmFzZSB0byA1LjEw LXJjMQo+PiB2MjE6IFJlYmFzZSB0byA1LjktcmM0Cj4+IMKgwqDCoMKgwqAgSW5jb3Jwb3JhdGUg ZmVlZGJhY2sgZnJvbSB2MjAKPj4gwqDCoMKgwqDCoCAtIEZ1cnRoZXIgcmV2ZXJ0IFVEUyBTT19Q RUVSU0VDIHRvIHVzZSBzY2FmZm9sZGluZyBhcm91bmQKPj4gwqDCoMKgwqDCoMKgwqAgdGhlIGlu dGVyZmFjZXMgdGhhdCB1c2UgbHNtYmxvYnMgYW5kIHN0b3JlIG9ubHkgYSBzaW5nbGUKPj4gwqDC oMKgwqDCoMKgwqAgc2VjaWQuIFRoZSBwb3NzaWJpbGl0eSBvZiBtdWx0aXBsZSBzZWN1cml0eSBt b2R1bGVzCj4+IMKgwqDCoMKgwqDCoMKgIHJlcXVpcmluZyBkYXRhIGhlcmUgaXMgc3RpbGwgYSBm dXR1cmUgcHJvYmxlbS4KPj4gwqDCoMKgwqDCoCAtIEluY29ycG9yYXRlIFJpY2hhcmQgR3V5IEJy aWdncycgbm9uLXN5c2NhbGwgYXV4aWxpYXJ5Cj4+IMKgwqDCoMKgwqDCoMKgIHJlY29yZHMgcGF0 Y2ggKHBhdGNoIDAwMTktMDAyMSkgaW4gcGxhY2Ugb2YgbXkgInN1cHBsaW1lbnRhbCIKPj4gwqDC oMKgwqDCoMKgwqAgcmVjb3JkcyBpbXBsZW1lbnRhdGlvbi4gW0knbSBub3Qgc3VyZSBJJ3ZlIGdp dmVuIHByb3Blcgo+PiDCoMKgwqDCoMKgwqDCoCBhdHRlc3RhdGlvbi4gSSB3aWxsIGNvcnJlY3Qg YXMgYXBwcm9wcmlhdGVdCj4+IHYyMDogUmViYXNlIHRvIDUuOS1yYzEKPj4gwqDCoMKgwqDCoCBD aGFuZ2UgdGhlIEJQRiBzZWN1cml0eSBtb2R1bGUgdG8gdXNlIHRoZSBsc21ibG9iIGRhdGEuIChw YXRjaCAwMDAyKQo+PiDCoMKgwqDCoMKgIFJlcGFpciBsZW5ndGggbG9naWMgaW4gc3ViamVjdCBs YWJlbCBwcm9jZXNzaW5nIChwYXRjaCAwMDE1KQo+PiDCoMKgwqDCoMKgIEhhbmRsZSAtRUlOVkFM IGZyb20gdGhlIGVtcHR5IEJQRiBzZXRwcm9jYXR0ciBob29rIChwYXRjaCAwMDIwKQo+PiDCoMKg wqDCoMKgIENvcnJlY3QgbGVuZ3RoIHByb2Nlc3NpbmcgaW4gYXBwZW5kX2N0eCgpIChwYXRjaCAw MDIyKQo+PiB2MTk6IFJlYmFzZSB0byA1LjgtcmM2Cj4+IMKgwqDCoMKgwqAgSW5jb3Jwb3JhdGUg ZmVlZGJhY2sgZnJvbSB2MTgKPj4gwqDCoMKgwqDCoCAtIFJldmVydCBVRFMgU09fUEVFUlNFQyBp bXBsZW1lbnRhdGlvbiB0byB1c2UgbHNtYmxvYnMKPj4gwqDCoMKgwqDCoMKgwqAgZGlyZWN0bHks IHJhdGhlciB0aGFuIGFsbG9jYXRpbmcgYXMgbmVlZGVkLiBUaGUgY29ycmVjdAo+PiDCoMKgwqDC oMKgwqDCoCB0cmVhdG1lbnQgb2Ygb3V0LW9mLW1lbW9yeSBjb25kaXRpb25zIGluIHRoZSBsYXRl ciBjYXNlCj4+IMKgwqDCoMKgwqDCoMKgIGlzIGRpZmZpY3VsdCB0byBkZWZpbmUuIChwYXRjaCAw MDA1KQo+PiDCoMKgwqDCoMKgIC0gVXNlIGEgc2l6ZV90IGluIGFwcGVuZF9jdHgoKSAocGF0Y2gg MDAyMSkKPj4gwqDCoMKgwqDCoCAtIEZpeCBhIG1lbW9yeSBsZWFrIHdoZW4gY3JlYXRpbmcgY29t cG91bmQgY29udGV4dHMuIChwYXRjaCAwMDIxKQo+PiDCoMKgwqDCoMKgIEZpeCBidWlsZCBlcnJv ciB3aGVuIENPTkZJR19TRUNVUklUWSBpc24ndCBzZXQgKHBhdGNoIDAwMTMpCj4+IMKgwqDCoMKg wqAgRml4IGJ1aWxkIGVycm9yIHdoZW4gQ09ORklHX1NFQ1VSSVRZIGlzbid0IHNldCAocGF0Y2gg MDAyMCkKPj4gwqDCoMKgwqDCoCBGaXggYnVpbGQgZXJyb3Igd2hlbiBDT05GSUdfU0VDVVJJVFkg aXNuJ3Qgc2V0IChwYXRjaCAwMDIxKQo+PiB2MTg6IFJlYmFzZSB0byA1LjgtcmMzCj4+IMKgwqDC oMKgwqAgSW5jb3Jwb3JhdGUgZmVlZGJhY2sgZnJvbSB2MTcKPj4gwqDCoMKgwqDCoCAtIE51bGwg cG9pbnRlciBjaGVja2luZyBpbiBVRFMgKHBhdGNoIDAwMDUpCj4+IMKgwqDCoMKgwqAgTWF0Y2gg Y2hhbmdlcyBpbiBJTUEgY29kZSAocGF0Y2ggMDAxMikKPj4gwqDCoMKgwqDCoCBGaXggdGhlIGJl aGF2aW9yIG9mIExTTSBjb250ZXh0IHN1cHBsaW1lbnRhbCBhdWRpdAo+PiDCoMKgwqDCoMKgIHJl Y29yZHMgc28gdGhhdCB0aGVyZSdzIGFsd2F5cyBleGFjdGx5IG9uZSB3aGVuIGl0J3MKPj4gwqDC oMKgwqDCoCBhcHByb3ByaWF0ZSBmb3IgdGhlcmUgdG8gYmUgb25lLiBUaGlzIGlzIGEgc3Vic3Rh bnRpYWwKPj4gwqDCoMKgwqDCoCBjaGFuZ2UgdGhhdCByZXF1aXJlcyBleHRlbnRpb24gb2YgdGhl IGF1ZGl0X2NvbnRleHQgYmV5b25kCj4+IMKgwqDCoMKgwqAgc3lzY2FsbCBldmVudHMuIChwYXRj aCAwMDIwKQo+PiB2MTc6IFJlYmFzZSB0byA1LjctcmM0Cj4+IHYxNjogUmViYXNlIHRvIDUuNgo+ PiDCoMKgwqDCoMKgIEluY29ycG9yYXRlIGZlZWRiYWNrIGZyb20gdjE1IC0gVGhhbmtzIFN0ZXBo ZW4sIE1pbWkgYW5kIFBhdWwKPj4gwqDCoMKgwqDCoCAtIEdlbmVyYWxseSBpbXByb3ZlIGNvbW1p dCBtZXNzYWdlcyBXUlQgc2NhZmZvbGRpbmcKPj4gwqDCoMKgwqDCoCAtIENvbW1lbnQgaW1hX2xz bV9pc3NldCgpIChwYXRjaCAwMDAyKQo+PiDCoMKgwqDCoMKgIC0gU29tZSBxdWVzdGlvbiBtYXkg cmVtYWluIG9uIElNQSB3YXJuaW5nIChwYXRjaCAwMDAyKQo+PiDCoMKgwqDCoMKgIC0gTWFyayBs c21fc2xvdCBhcyBfX2xzbV9yb19hZnRlcl9pbml0IG5vdCBfX2luaXRfZGF0YSAocGF0Y2ggMDAw MikKPj4gwqDCoMKgwqDCoCAtIENoYW5nZSBuYW1lIG9mIGxzbWJsb2IgdmFyaWFibGUgaW4gaW1h X21hdGNoX3J1bGVzKCkgKHBhdGNoIDAwMDMpCj4+IMKgwqDCoMKgwqAgLSBJbnN0ZWFkIG9mIHB1 dHRpbmcgYSBzdHJ1Y3QgbHNtYmxvYiBpbnRvIHRoZSB1bml4X3NrYl9wYXJtcwo+PiDCoMKgwqDC oMKgwqDCoCBzdHJ1Y3R1cmUgcHV0IGEgcG9pbnRlciB0byBhbiBhbGxvY2F0ZWQgaW5zdGFuY2Uu IFRoZXJlIGlzCj4+IMKgwqDCoMKgwqDCoMKgIGN1cnJlbnRseSBvbmx5IHNwYWNlIGZvciA1IHUz MidzIGluIHVuaXhfc2tiX3Bhcm1zIGFuZCBpdCBpcwo+PiDCoMKgwqDCoMKgwqDCoCBsaWtlbHkg dG8gZ2V0IGV2ZW4gdGlnaHRlci4gRm9ydHVuYXRlbHksIHRoZSBsaWZlY3ljbGUKPj4gwqDCoMKg wqDCoMKgwqAgbWFuYWdlbWVudCBvZiB0aGUgYWxsb2NhdGVkIGxzbWJsb2IgaXMgc2ltcGxlLiAo cGF0Y2ggMDAwNSkKPj4gwqDCoMKgwqDCoCAtIERyb3BwZWQgQWNrcyBkdWUgdG8gdGhlIGFib3Zl IGNoYW5nZSAocGF0Y2ggMDAwNSkKPj4gwqDCoMKgwqDCoCAtIEltcHJvdmVkIGNvbW1lbnRhcnkg b24gc2VjbWFyayBsYWJlbGluZyBzY2FmZm9sZGluZy4gKHBhdGNoIDAwMDYpCj4+IMKgwqDCoMKg wqAgLSBSZWR1Y2VkIHNlY21hcmsgcmVsYXRlZCBsYWJlbGluZyBzY2FmZm9sZGluZy4gKHBhdGNo IDAwMDYpCj4+IMKgwqDCoMKgwqAgLSBSZXBsYWNlIHVzZSBvZiB0aGUgemVyb3RoIGVudHJ5IG9m IGFuIGxzbWJsb2IgaW4gc2NhZmZvbGRpbmcKPj4gwqDCoMKgwqDCoMKgwqAgd2l0aCBhIGZ1bmN0 aW9uIGxzbWJsb2JfdmFsdWUoKSB0byBob3BlZnVsbHkgbWFrZSBpdCBsZXNzCj4+IMKgwqDCoMKg wqDCoMKgIG9ic2N1cmUuIChwYXRjaCAwMDA2KQo+PiDCoMKgwqDCoMKgIC0gQ29udmVydCBzZWN1 cml0eV9zZWNtYXJrX3JlbGFiZWxfcGFja2V0IHRvIHVzZSBsc21ibG9iIGFzCj4+IMKgwqDCoMKg wqDCoMKgIHRoaXMgcmVkdWNlcyBtdWNoIG9mIHRoZSBtb3N0IGNvbnRlbnRpb3VzIHNjYWZmb2xk aW5nLiAocGF0Y2ggMDAwNikKPj4gwqDCoMKgwqDCoCAtIERyb3BwZWQgQWNrcyBkdWUgdG8gdGhl IGFib3ZlIGNoYW5nZSAocGF0Y2ggMDAwNikKPj4gwqDCoMKgwqDCoCAtIEFkZGVkIEJVSUxEX0JV R19PTigpIGZvciBDSVBTTyB0YWcgNi4gKHBhdGNoIDAwMTgpCj4+IMKgwqDCoMKgwqAgLSBSZXdv cmtlZCBhdWRpdCBzdWJqZWN0IGluZm9ybWF0aW9uLiBJbnN0ZWFkIG9mIGFkZGluZyBmaWVsZHMg aW4KPj4gwqDCoMKgwqDCoMKgwqAgdGhlIG1pZGRsZSBvZiBleGlzdGluZyByZWNvcmRzIGFkZCBh IG5ldyByZWNvcmQgdG8gdGhlIGV2ZW50LiBXaGVuCj4+IMKgwqDCoMKgwqDCoMKgIGEgc2VwYXJh dGUgcmVjb3JkIGlzIHJlcXVpcmVkIHVzZSBzdWJqPSI/Ii4gKHBhdGNoIDAwMjApCj4+IMKgwqDC oMKgwqAgLSBEcm9wcGVkIEFja3MgZHVlIHRvIHRoZSBhYm92ZSBjaGFuZ2UgKHBhdGNoIDAwMjAp Cj4+IMKgwqDCoMKgwqAgLSBSZXdvcmtlZCBhdWRpdCBvYmplY3QgaW5mb3JtYXRpb24uIEluc3Rl YWQgb2YgYWRkaW5nIGZpZWxkcyBpbgo+PiDCoMKgwqDCoMKgwqDCoCB0aGUgbWlkZGxlIG9mIGV4 aXN0aW5nIHJlY29yZHMgYWRkIGEgbmV3IHJlY29yZCB0byB0aGUgZXZlbnQuIFdoZW4KPj4gwqDC oMKgwqDCoMKgwqAgYSBzZXBhcmF0ZSByZWNvcmQgaXMgcmVxdWlyZWQgdXNlIG9iaj0iPyIuIChw YXRjaCAwMDIxKQo+PiDCoMKgwqDCoMKgIC0gRHJvcHBlZCBBY2tzIGR1ZSB0byB0aGUgYWJvdmUg Y2hhbmdlIChwYXRjaCAwMDIxKQo+PiDCoMKgwqDCoMKgIC0gRW5oYW5jZWQgZG9jdW1lbnRhdGlv biAocGF0Y2ggMDAyMikKPj4gwqDCoMKgwqDCoCAtIFJlbW92ZWQgdW5uZWNlc3NhcnkgZXJyb3Ig Y29kZSBjaGVjayBpbiBzZWN1cml0eV9nZXRwcm9jYXR0cigpCj4+IMKgwqDCoMKgwqDCoMKgIChw YXRjaCAwMDIxKQo+PiB2MTU6IFJlYmFzZSB0byA1LjYtcmMxCj4+IMKgwqDCoMKgwqAgLSBSZXZp c2UgSU1BIGRhdGEgdXNlIChwYXRjaCAwMDAyKQo+PiDCoMKgwqDCoMKgIEluY29ycG9yYXRlIGZl ZWRiYWNrIGZyb20gdjE0Cj4+IMKgwqDCoMKgwqAgLSBGaXggbG9ja2Rvd24gbW9kdWxlIHJlZ2lz dHJhdGlvbiBuYW1pbmcgKHBhdGNoIDAwMDIpCj4+IMKgwqDCoMKgwqAgLSBSZXZpc2UgaG93IC9w cm9jL3NlbGYvYXR0ci9jb250ZXh0IGlzIGdhdGhlcmVkLiAocGF0Y2ggMDAyMikKPj4gwqDCoMKg wqDCoCAtIFJldmlzZSBhY2Nlc3MgbW9kZXMgb24gL3Byb2Mvc2VsZi9hdHRyL2NvbnRleHQuIChw YXRjaCAwMDIyKQo+PiDCoMKgwqDCoMKgIC0gUmV2aXNlIGRvY3VtZW50YXRpb24gb24gTFNNIGV4 dGVybmFsIGludGVyZmFjZXMuIChwYXRjaCAwMDIyKQo+PiB2MTQ6IFJlYmFzZSB0byA1LjUtcmM1 Cj4+IMKgwqDCoMKgwqAgSW5jb3Jwb3JhdGUgZmVlZGJhY2sgZnJvbSB2MTMKPj4gwqDCoMKgwqDC oCAtIFVzZSBhbiBhcnJheSBvZiBhdWRpdCBydWxlcyAocGF0Y2ggMDAwMikKPj4gwqDCoMKgwqDC oCAtIFNpZ25pZmljYW50IGNoYW5nZSwgcmVtb3ZlZCBBY2tzIChwYXRjaCAwMDAyKQo+PiDCoMKg wqDCoMKgIC0gUmVtb3ZlIHVubmVlZGVkIGluY2x1ZGUgKHBhdGNoIDAwMTMpCj4+IMKgwqDCoMKg wqAgLSBVc2UgY29udGV4dC5sZW4gY29ycmVjdGx5IChwYXRjaCAwMDE1KQo+PiDCoMKgwqDCoMKg IC0gUmVvcmRlciBjb2RlIHRvIGJlIG1vcmUgc2Vuc2libGUgKHBhdGNoIDAwMTYpCj4+IMKgwqDC oMKgwqAgLSBEcm9wIFNPX1BFRVJDT05URVhUIGFzIGl0J3Mgbm90IG5lZWRlZCB5ZXQgKHBhdGNo IDAwMjMpCj4+IHYxMzogUmViYXNlIHRvIDUuNS1yYzIKPj4gwqDCoMKgwqDCoCBJbmNvcnBvcmF0 ZSBmZWVkYmFjayBmcm9tIHYxMgo+PiDCoMKgwqDCoMKgIC0gUHJpbnQgbHNtYmxvYiBzaXplIHdp dGggJXogKFBhdGNoIDAwMDIpCj4+IMKgwqDCoMKgwqAgLSBDb252ZXJ0IGxvY2tkb3duIExTTSBp bml0aWFsaXphdGlvbi4gKFBhdGNoIDAwMDIpCj4+IMKgwqDCoMKgwqAgLSBSZXN0b3JlIGVycm9y IGNoZWNrIGluIG5mdF9zZWNtYXJrX2NvbXB1dGVfc2VjaWQgKFBhdGNoIDAwMDYpCj4+IMKgwqDC oMKgwqAgLSBDb3JyZWN0IGJsb2Igc2NhZmZvbGRpbmcgaW4gaW1hX211c3RfYXBwcmFpc2UoKSAo UGF0Y2ggMDAwOSkKPj4gwqDCoMKgwqDCoCAtIE1ha2Ugc2VjdXJpdHlfc2V0cHJvY2F0dHIoKSBj bGVhcmVyIChQYXRjaCAwMDEzKQo+PiDCoMKgwqDCoMKgIC0gVXNlIGxzbV90YXNrX2Rpc3BsYXkg bW9yZSB3aWRlbHkgKFBhdGNoIDAwMTMpCj4+IMKgwqDCoMKgwqAgLSBVc2UgcGFzc2VkIHNpemUg aW4gbHNtY29udGV4dF9pbml0KCkgKFBhdGNoIDAwMTQpCj4+IMKgwqDCoMKgwqAgLSBEb24ndCBh ZGQgYSBzbWFja19yZWxlYXNlX3NlY2N0eCgpIGhvb2sgKFBhdGNoIDAwMTQpCj4+IMKgwqDCoMKg wqAgLSBEb24ndCBwcmludCB3YXJuaW5nIGluIHNlY3VyaXR5X3JlbGVhc2Vfc2VjY3R4KCkgKFBh dGNoIDAwMTQpCj4+IMKgwqDCoMKgwqAgLSBEb24ndCBkdXBsaWNhdGUgdGhlIGxhYmVsIGluIG5m czRfbGFiZWxfaW5pdF9zZWN1cml0eSgpIChQYXRjaCAwMDE2KQo+PiDCoMKgwqDCoMKgIC0gUmVt b3ZlIHJldmlld2VkLWJ5IGFzIGNvZGUgaGFzIHNpZ25pZmljYW50IGNoYW5nZSAoUGF0Y2ggMDAx NikKPj4gwqDCoMKgwqDCoCAtIFNlbmQgdGhlIGVudGlyZSBsc21ibG9iIGZvciBUYWcgNiAoUGF0 Y2ggMDAxOSkKPj4gwqDCoMKgwqDCoCAtIEZpeCBkZXNjcmlwdGlvbiBvZiBzb2NrZXRfZ2V0cGVl cnNlY19zdHJlYW0gcGFyYW1ldGVycyAoUGF0Y2ggMDAyMykKPj4gwqDCoMKgwqDCoCAtIFJldGFp biBMU01CTE9CX0ZJUlNULiBXaGF0IHdhcyBJIHRoaW5raW5nPyAoUGF0Y2ggMDAyMykKPj4gwqDC oMKgwqDCoCAtIEFkZCBjb21wb3VuZCBjb250ZXh0IHRvIExTTSBkb2N1bWVudGF0aW9uIChQYXRj aCAwMDIzKQo+PiB2MTI6IFJlYmFzZSB0byA1LjUtcmMxCj4+IMKgwqDCoMKgwqAgRml4ZWQgYSBj b3VwbGUgb2YgaW5jb3JyZWN0IGNvbnRyYWN0aW9ucyBpbiB0aGUgdGV4dC4KPj4gdjExOiBSZWJh c2UgdG8gNS40LXJjNgo+PiDCoMKgwqDCoMKgIEluY29ycG9yYXRlIGZlZWRiYWNrIGZyb20gdjEw Cj4+IMKgwqDCoMKgwqAgLSBEaXNhbWJpZ3VhdGUgcmVhZGluZyAvcHJvYy8uLi4vYXR0ci9kaXNw bGF5IGJ5IHJlc3RyaWN0aW5nCj4+IMKgwqDCoMKgwqDCoMKgIGFsbCB1c2Ugb2YgdGhlIGludGVy ZmFjZSB0byB0aGUgY3VycmVudCBwcm9jZXNzLgo+PiDCoMKgwqDCoMKgIC0gRml4IGEgbWVyZ2Ug ZXJyb3IgaW4gQXBwQXJtb3IncyBkaXNwbGF5IGF0dHJpYnV0ZSBjaGVjawo+PiB2MTA6IEFzayB0 aGUgc2VjdXJpdHkgbW9kdWxlcyBpZiB0aGUgZGlzcGxheSBjYW4gYmUgY2hhbmdlZC4KPj4gdjk6 IFRoZXJlIGlzIG5vIHZlcnNpb24gOQo+PiB2ODogSW5jb3Jwb3JhdGUgZmVlZGJhY2sgZnJvbSB2 Nwo+PiDCoMKgwqDCoCAtIE1pbm9yIGNsZWFuLXVwIGluIGRpc3BsYXkgdmFsdWUgbWFuYWdlbWVu dAo+PiDCoMKgwqDCoCAtIHJlZmFjdG9yICJjb21wb3VuZCIgY29udGV4dCBjcmVhdGlvbiB0byB1 c2UgYSBjb21tb24KPj4gwqDCoMKgwqDCoMKgIGFwcGVuZF9jdHgoKSBmdW5jdGlvbi4KPj4gdjc6 IEluY29ycG9yYXRlIGZlZWRiYWNrIGZyb20gdjYKPj4gwqDCoMKgwqAgLSBNYWtlIHNldHRpbmcg dGhlIGRpc3BsYXkgYSBwcml2aWxlZ2VkIG9wZXJhdGlvbi4gVGhlCj4+IMKgwqDCoMKgwqDCoCBh dmFpbGFiaWxpdHkgb2YgY29tcG91bmQgY29udGV4dHMgcmVkdWNlcyB0aGUgbmVlZCBmb3IKPj4g wqDCoMKgwqDCoMKgIHNldHRpbmcgdGhlIGRpc3BsYXkuCj4+IHY2OiBJbmNvcnBvcmF0ZSBmZWVk YmFjayBmcm9tIHY1Cj4+IMKgwqDCoMKgIC0gQWRkIHN1YmpfPGxzbT49IGFuZCBvYmpfPGxzbT49 IGZpZWxkcyB0byBhdWRpdCByZWNvcmRzCj4+IMKgwqDCoMKgIC0gQWRkIC9wcm9jLy4uLi9hdHRy L2NvbnRleHQgdG8gZ2V0IHRoZSBmdWxsIGNvbnRleHQgaW4KPj4gwqDCoMKgwqDCoMKgIGxzbW5h bWVcMHZhbHVlXDAuLi4gZm9ybWF0IGFzIHN1Z2dlc3RlZCBieSBTaW1vbiBNY1ZpdHRpZQo+PiDC oMKgwqDCoCAtIEFkZCBTT19QRUVSQ09OVEVYVCBmb3IgZ2V0c29ja29wdCgpIHRvIGdldCB0aGUg ZnVsbCBjb250ZXh0Cj4+IMKgwqDCoMKgwqDCoCBpbiB0aGUgc2FtZSBmb3JtYXQsIGFsc28gc3Vn Z2VzdGVkIGJ5IFNpbW9uIE1jVml0dGllLgo+PiDCoMKgwqDCoCAtIEFkZCAvc3lzL2tlcm5lbC9z ZWN1cml0eS9sc21fZGlzcGxheV9kZWZhdWx0IHRvIHByb3ZpZGUKPj4gwqDCoMKgwqDCoMKgIHRo ZSBkaXNwbGF5IGRlZmF1bHQgdmFsdWUuCj4+IHY1OiBJbmNvcnBvcmF0ZSBmZWVkYmFjayBmcm9t IHY0Cj4+IMKgwqDCoMKgIC0gSW5pdGlhbGl6ZSB0aGUgbHNtY29udGV4dCBpbiBzZWN1cml0eV9z ZWNpZF90b19zZWNjdHgoKQo+PiDCoMKgwqDCoCAtIENsZWFyIHRoZSBsc21jb250ZXh0IGluIGFs bCBzZWN1cml0eV9yZWxlYXNlX3NlY2N0eCgpIGNhc2VzCj4+IMKgwqDCoMKgIC0gRG9uJ3QgdXNl IHRoZSAiZGlzcGxheSIgb24gc3RyaWN0bHkgaW50ZXJuYWwgY29udGV4dAo+PiDCoMKgwqDCoMKg wqAgaW50ZXJmYWNlcy4KPj4gwqDCoMKgwqAgLSBUaGUgU0VMaW51eCBiaW5kZXIgaG9va3MgY2hl Y2sgZm9yIGNhc2VzIHdoZXJlIHRoZSBjb250ZXh0Cj4+IMKgwqDCoMKgwqDCoCAiZGlzcGxheSIg aXNuJ3QgY29tcGF0aWJsZSB3aXRoIFNFTGludXguCj4+IHY0OiBJbmNvcnBvcmF0ZSBmZWVkYmFj ayBmcm9tIHYzCj4+IMKgwqDCoMKgIC0gTWFyayBuZXcgbHNtXzxibG9iPl9hbGxvYyBmdW5jdGlv bnMgc3RhdGljCj4+IMKgwqDCoMKgIC0gUmVwbGFjZSB0aGUgbHNtIGFuZCBzbG90IGZpZWxkcyBv ZiB0aGUgc2VjdXJpdHlfaG9va19saXN0Cj4+IMKgwqDCoMKgwqDCoCB3aXRoIGEgcG9pbnRlciB0 byBhIExTTSBhbGxvY2F0ZWQgbHNtX2lkIHN0cnVjdHVyZS4gVGhlCj4+IMKgwqDCoMKgwqDCoCBM U00gaWRlbnRpZmllcyBpZiBpdCBuZWVkcyBhIHNsb3QgZXhwbGljaXRseS4gVXNlIHRoZQo+PiDC oMKgwqDCoMKgwqAgbHNtX2lkIHJhdGhlciB0aGFuIG1ha2Ugc2VjdXJpdHlfYWRkX2hvb2tzIHJl dHVybiB0aGUKPj4gwqDCoMKgwqDCoMKgIHNsb3QgdmFsdWUuCj4+IMKgwqDCoMKgIC0gVmFsaWRh dGUgc2xvdCB2YWx1ZXMgdXNlZCBpbiBzZWN1cml0eS5jCj4+IMKgwqDCoMKgIC0gUmV3b3JrZWQg dGhlICJkaXNwbGF5IiBwcm9jZXNzIGF0dHJpYnV0ZSBoYW5kbGluZyBzbyB0aGF0Cj4+IMKgwqDC oMKgwqDCoCBpdCB3b3JrcyByaWdodCBhbmQgZG9lc24ndCB1c2UgZ29vZnkgbGlzdCBwcm9jZXNz aW5nLgo+PiDCoMKgwqDCoCAtIGZpeCBkaXNwbGF5IHZhbHVlIGNoZWNrIGluIGRlbnRyeV9pbml0 X3NlY3VyaXR5Cj4+IMKgwqDCoMKgIC0gUmVwbGFjZSBhdWRpdF9sb2cgb2Ygc2VjaWRzIHdpdGgg Jz8nIGluc3RlYWQgb2YgZGVsZXRpbmcKPj4gwqDCoMKgwqDCoMKgIHRoZSBhdWRpdCBsb2cKPj4g djM6IEluY29ycG9yYXRlIGZlZWRiYWNrIGZyb20gdjIKPj4gwqDCoMKgwqAgLSBNYWtlIGxzbWJs b2IgcGFyYW1ldGVyIGFuZCB2YXJpYWJsZSBuYW1lcyBtb3JlCj4+IMKgwqDCoMKgwqDCoCBtZWFu aW5nZnVsLCBjaGFuZ2luZyAibGUiIGFuZCAibCIgdG8gImJsb2IiLgo+PiDCoMKgwqDCoCAtIElt cHJvdmUgY29uc2lzdGVuY3kgb2YgY29uc3RhbnQgbmFtaW5nLgo+PiDCoMKgwqDCoCAtIERvIG1v cmUgc2FuaXR5IGNoZWNraW5nIGR1cmluZyBMU00gaW5pdGlhbGl6YXRpb24uCj4+IMKgwqDCoMKg IC0gQmUgYSBiaXQgY2xlYXJlciBhYm91dCB3aGF0IGlzIHRlbXBvcmFyeSBzY2FmZm9sZGluZy4K Pj4gwqDCoMKgwqAgLSBSYXRoZXIgdGhhbiBjbHV0dGVyIHNlY3VyaXR5X2dldHBlZXJzZWNfZGdy YW0gd2l0aAo+PiDCoMKgwqDCoMKgwqAgb3RoZXJ3aXNlIHVubmVjZXNzYXJ5IGNoZWNrcyByZW1v dmUgdGhlIGFwcGFybW9yCj4+IMKgwqDCoMKgwqDCoCBzdHViLCB3aGljaCBkb2VzIG5vdGhpbmcg dXNlZnVsLgo+Pgo+PiBQYXRjaCAwMSBtb3ZlcyBtYW5hZ2VtZW50IG9mIHRoZSBzb2NrIHNlY3Vy aXR5IGJsb2IKPj4gZnJvbSB0aGUgaW5kaXZpZHVhbCBtb2R1bGVzIHRvIHRoZSBpbmZyYXN0cnVj dHVyZS4KPj4KPj4gUGF0Y2hlcyAwMi0wMyBpbnRyb2R1Y2UgYSBzdHJ1Y3R1cmUgImxzbWJsb2Ii IHRoYXQgd2lsbCBncmFkdWFsbHkKPj4gcmVwbGFjZSB0aGUgInNlY2lkIiBhcyBhIHNob3J0aGFu ZCBmb3Igc2VjdXJpdHkgbW9kdWxlIGluZm9ybWF0aW9uLgo+PiBBdCB0aGlzIHBvaW50IGxzbWJs b2IgY29udGFpbnMgYW4gYXJyYXkgb2YgdTMyIHNlY2lkcywgb25lICJzbG90Igo+PiBmb3IgZWFj aCBvZiB0aGUgc2VjdXJpdHkgbW9kdWxlcyBjb21waWxlZCBpbnRvIHRoZSBrZXJuZWwgdGhhdAo+ PiB1c2VkIHNlY2lkcy4gQSAic2xvdCIgaXMgYWxsb2NhdGVkIHdoZW4gYSBzZWN1cml0eSBtb2R1 bGUgcmVxdWVzdHMKPj4gb25lLgo+Pgo+PiBQYXRjaCAwNCBwcm92aWRlcyBtZWNoYW5pc20gZm9y IHRoZSBJTUEgc3Vic3lzdGVtIHRvIGlkZW50aWZ5Cj4+IGV4cGxpY2l0bHkgd2hpY2ggTFNNIGlz IHN1YmplY3QgdG8gSU1BIHBvbGljeS4gVGhpcyBpbmNsdWRlcwo+PiBhIGJvb3Qgb3B0aW9uIGZv ciBzcGVjaWZ5aW5nIHRoZSBkZWZhdWx0IGFuZCBhbiBhZGRpdGlvbmFsIG9wdGlvbgo+PiBpbiBJ TUEgcnVsZXMgImxzbT0iLgo+Pgo+PiBQYXRjaGVzIDA1LTEzIGNoYW5nZSBMU00gaW50ZXJmYWNl cyB0byB1c2UgdGhlIGxzbWJsb2IgaW5zdGVhZAo+PiBvZiBzZWNpZHMuIEl0IGlzIGltcG9ydGFu dCB0aGF0IHRoZSBsc21ibG9iIGJlIGEgZml4ZWQgc2l6ZSBlbnRpdHkKPj4gdGhhdCBkb2VzIG5v dCBoYXZlIHRvIGJlIGFsbG9jYXRlZC4gU2V2ZXJhbCBvZiB0aGUgcGxhY2VzCj4+IHdoZXJlIGl0 IGlzIHVzZWQgd291bGQgaGF2ZSBwZXJmb3JtYW5jZSBhbmQvb3IgbG9ja2luZwo+PiBpc3N1ZXMg d2l0aCBkeW5hbWljIGFsbG9jYXRpb24uCj4+Cj4+IFBhdGNoIDE0IHByb3ZpZGVzIGEgbWVjaGFu aXNtIGZvciBhIHByb2Nlc3MgdG8gaWRlbnRpZnkgd2hpY2gKPj4gc2VjdXJpdHkgbW9kdWxlJ3Mg aG9va3Mgc2hvdWxkIGJlIHVzZWQgd2hlbiBkaXNwbGF5aW5nIG9yCj4+IGNvbnZlcnRpbmcgYSBz ZWN1cml0eSBjb250ZXh0IHN0cmluZy7CoCBBIG5ldyBpbnRlcmZhY2UKPj4gL3Byb2Mvc2VsZi9h dHRyL2ludGVyZmFjZV9sc20gY29udGFpbnMgdGhlIG5hbWUgb2YgdGhlIHNlY3VyaXR5Cj4+IG1v ZHVsZSB0byBzaG93LiBSZWFkaW5nIGZyb20gdGhpcyBmaWxlIHdpbGwgcHJlc2VudCB0aGUgbmFt ZSBvZgo+PiB0aGUgbW9kdWxlLCB3aGlsZSB3cml0aW5nIHRvIGl0IHdpbGwgc2V0IHRoZSB2YWx1 ZS4gT25seSBuYW1lcwo+PiBvZiBhY3RpdmUgc2VjdXJpdHkgbW9kdWxlcyBhcmUgYWNjZXB0ZWQu IEludGVybmFsbHksIHRoZSBuYW1lCj4+IGlzIHRyYW5zbGF0ZWQgdG8gdGhlIGFwcHJvcHJpYXRl ICJzbG90IiBudW1iZXIgZm9yIHRoZSBtb2R1bGUKPj4gd2hpY2ggaXMgdGhlbiBzdG9yZWQgaW4g dGhlIHRhc2sgc2VjdXJpdHkgYmxvYi4gU2V0dGluZyB0aGUKPj4gZGlzcGxheSByZXF1aXJlcyB0 aGF0IGFsbCBtb2R1bGVzIHVzaW5nIHRoZSAvcHJvYyBpbnRlcmZhY2VzCj4+IGFsbG93IHRoZSB0 cmFuc2l0aW9uLiBUaGUgaW50ZXJmYWNlIExTTSBvZiBvdGhlciBwcm9jZXNzZXNzCj4+IGNhbiBi ZSBuZWl0aGVyIHJlYWQgbm9yIHdyaXR0ZW4uIEFsbCBzdWdnZXN0ZWQgY2FzZXMgZm9yCj4+IHJl YWRpbmcgdGhlIGludGVyZmFjZSBMU00gb2YgYSBkaWZmZXJlbnQgcHJvY2VzcyBoYXZlIHJhY2UK Pj4gY29uZGl0aW9ucy4KPj4KPj4gUGF0Y2ggMTUgU3RhcnRzIHRoZSBwcm9jZXNzIG9mIGNoYW5n aW5nIGhvdyBhIHNlY3VyaXR5Cj4+IGNvbnRleHQgaXMgcmVwcmVzZW50ZWQuIFNpbmNlIGl0IGlz IHBvc3NpYmxlIGZvciBhCj4+IHNlY3VyaXR5IGNvbnRleHQgdG8gaGF2ZSBiZWVuIGdlbmVyYXRl ZCBieSBtb3JlIHRoYW4gb25lCj4+IHNlY3VyaXR5IG1vZHVsZSBpdCBpcyBub3cgbmVjZXNzYXJ5 IHRvIG5vdGUgd2hpY2ggbW9kdWxlCj4+IGNyZWF0ZWQgYSBzZWN1cml0eSBjb250ZXh0IHNvIHRo YXQgdGhlIGNvcnJlY3QgInJlbGVhc2UiCj4+IGhvb2sgY2FuIGJlIGNhbGxlZC4gVGhlcmUgYXJl IHNldmVyYWwgcGxhY2VzIHdoZXJlIHRoZQo+PiBtb2R1bGUgdGhhdCBjcmVhdGVkIGEgc2VjdXJp dHkgY29udGV4dCBjYW5ub3QgYmUgaW5mZXJyZWQuCj4+Cj4+IFRoaXMgaXMgYWNoaWV2ZWQgYnkg aW50cm9kdWNpbmcgYSAibHNtY29udGV4dCIgc3RydWN0dXJlCj4+IHdoaWNoIGNvbnRhaW5zIHRo ZSBjb250ZXh0IHN0cmluZywgaXRzIGxlbmd0aCBhbmQgdGhlCj4+ICJzbG90IiBudW1iZXIgb2Yg dGhlIHNlY3VyaXR5IG1vZHVsZSB0aGF0IGNyZWF0ZWQgaXQuCj4+IFRoZSBzZWN1cml0eV9yZWxl YXNlX3NlY2N0eCgpIGludGVyZmFjZSBpcyBjaGFuZ2VkLAo+PiByZXBsYWNpbmcgdGhlIChzdHJp bmcsbGVuKSBwb2ludGVyIHBhaXIgd2l0aCBhIGxzbWNvbnRleHQKPj4gcG9pbnRlci4KPj4KPj4g UGF0Y2hlcyAxNi0xOCBjb252ZXJ0IHRoZSBzZWN1cml0eSBpbnRlcmZhY2VzIGZyb20KPj4gKHN0 cmluZyxsZW4pIHBvaW50ZXIgcGFpcnMgdG8gYSBsc21jb250ZXh0IHBvaW50ZXIuCj4+IFRoZSBz bG90IG51bWJlciBpZGVudGlmeWluZyB0aGUgY3JlYXRpbmcgbW9kdWxlIGlzCj4+IGFkZGVkIGJ5 IHRoZSBpbmZyYXN0cnVjdHVyZS4gV2hlcmUgdGhlIHNlY3VyaXR5IGNvbnRleHQKPj4gaXMgc3Rv cmVkIGZvciBleHRlbmRlZCBwZXJpb2RzIHRoZSBkYXRhIHR5cGUgaXMgY2hhbmdlZC4KPj4KPj4g VGhlIE5ldGxhYmVsIGNvZGUgaXMgY29udmVydGVkIHRvIHNhdmUgbHNtYmxvYiBzdHJ1Y3R1cmVz Cj4+IGluc3RlYWQgb2Ygc2VjaWRzIGluIFBhdGNoIDE5LiBUaGlzIGlzIG5vdCBzdHJpY3RseQo+ PiBuZWNlc3NhcnkgYXMgdGhlcmUgY2FuIG9ubHkgYmUgb25lIHNlY3VyaXR5IG1vZHVsZSB0aGF0 Cj4+IHVzZXMgTmV0bGFiZWwgYXQgdGhpcyBwb2ludC4gVXNpbmcgYSBsc21ibG9iIGlzIG11Y2gK Pj4gY2xlYW5lciwgYXMgdGhlIGludGVyZmFjZXMgdGhhdCB1c2UgdGhlIGRhdGEgaGF2ZSBhbGwK Pj4gYmVlbiBjb252ZXJ0ZWQuCj4+Cj4+IFBhdGNoIDIwIGFkZHMgY2hlY2tzIHRvIHRoZSBiaW5k ZXIgaG9va3Mgd2hpY2ggdmVyaWZ5Cj4+IHRoYXQgYm90aCBlbmRzIG9mIGEgdHJhbnNhY3Rpb24g dXNlIHRoZSBzYW1lIGludGVyZmFjZSBMU00uCj4+Cj4+IFBhdGNoZXMgMjEtMjMgYWRkIGFkZGl0 aW9uIGF1ZGl0IHJlY29yZHMgZm9yIHN1YmplY3QgYW5kCj4+IG9iamVjdCBMU00gZGF0YSB3aGVu IHRoZXJlIGFyZSBtdWx0aXBsZSBzZWN1cml0eSBtb2R1bGVzCj4+IHdpdGggc3VjaCBkYXRhLiBU aGUgQVVESVRfTUFDX1RBU0tfQ09OVEVYVFMgcmVjb3JkIGlzIHVzZWQKPj4gaW4gY29uanVjdGlv biB3aXRoIGEgInN1Ymo9PyIgZmllbGQgdG8gaWRlbnRpZnkgdGhlIHN1YmplY3QKPj4gZGF0YS4g VGhlIEFVRElUX01BQ19PQkpfQ09OVEVYVFMgcmVjb3JkIGlzIHVzZWQgaW4gY29uanVjdGlvbgo+ PiB3aXRoIGEgIm9iaj0/IiBmaWVsZCB0byBpZGVudGlmeSB0aGUgb2JqZWN0IGRhdGEuwqAgVGhl Cj4+IEFVRElUX01BQ19UQVNLX0NPTlRFWFRTIHJlY29yZCBpZGVudGlmaWVzIHRoZSBzZWN1cml0 eSBtb2R1bGUKPj4gd2l0aCB0aGUgZGF0YTogInN1Ympfc2VsaW51eD14eXpfdCBzdWJqX2FwcGFy bW9yPWFiYyIuIFRoZQo+PiBBVURJVF9NQUNfT0JKX0NPTlRFWFRTIHJlY29yZCBpZGVudGlmaWVz IHRoZSBzZWN1cml0eSBtb2R1bGUKPj4gd2l0aCB0aGUgZGF0YTogIm9ial9zZWxpbnV4PXh5el90 IG9ial9hcHBhcm1vcj1hYmMiLsKgIFdoaWxlCj4+IEFVRElUX01BQ19UQVNLX0NPTlRFWFRTIHJl Y29yZHMgd2lsbCBhbHdheXMgY29udGFpbiBhbiBlbnRyeQo+PiBmb3IgZWFjaCBwb3NzaWJsZSBz ZWN1cml0eSBtb2R1bGVzLCBBVURJVF9NQUNfT0JKX0NPTlRFWFRTCj4+IHJlY29yZHMgd2lsbCBv bmx5IGNvbnRhaW4gZW50cmllcyBmb3Igc2VjdXJpdHkgbW9kdWxlcyBmb3IKPj4gd2hpY2ggdGhl IG9iamVjdCBpbiBxdWVzdGlvbiBoYXMgZGF0YS4KPj4KPj4gQW4gZXhhbXBsZSBvZiB0aGUgTUFD X1RBU0tfQ09OVEVYVFMgKDE0MjApIHJlY29yZCBpczoKPj4KPj4gwqDCoMKgwqAgdHlwZT1VTktO T1dOWzE0MjBdCj4+IMKgwqDCoMKgIG1zZz1hdWRpdCgxNjAwODgwOTMxLjgzMjoxMTMpCj4+IMKg wqDCoMKgIHN1YmpfYXBwYXJtb3I9PXVuY29uZmluZWQKPj4gwqDCoMKgwqAgc3Vial9zbWFjaz1f Cj4+Cj4+IEFuIGV4YW1wbGUgb2YgdGhlIE1BQ19PQkpfQ09OVEVYVFMgKDE0MjEpIHJlY29yZCBp czoKPj4KPj4gwqDCoMKgwqAgdHlwZT1VTktOT1dOWzE0MjFdCj4+IMKgwqDCoMKgIG1zZz1hdWRp dCgxNjAxMTUyNDY3LjAwOToxMDUwKToKPj4gwqDCoMKgwqAgb2JqX3NlbGludXg9dW5jb25maW5l ZF91Om9iamVjdF9yOnVzZXJfaG9tZV90OnMwCj4+Cj4+IFBhdGNoIDI0IGFkZHMgYSBuZXcgaW50 ZXJmYWNlIGZvciBnZXR0aW5nIHRoZSBjb21wb3VuZCBzZWN1cml0eQo+PiBjb250ZXh0cywgL3By b2Mvc2VsZi9hdHRyL2NvbnRleHQuwqAgQW4gZXhhbXBsZSBvZiB0aGUgY29udGVudAo+PiBvZiB0 aGlzIGZpbGUgaXM6Cj4+Cj4+IMKgwqDCoMKgIHNlbGludXhcMG9uZV91Om9uZV9yOm9uZV90OnMw LXMwOmMwLmMxMDIzXDBhcHBhcm1vclwwdW5jb25maW5lZFwwCj4+Cj4+IEZpbmFsbHksIHdpdGgg YWxsIGludGVyZmVyZW5jZSBvbiB0aGUgQXBwQXJtb3IgaG9va3MgcmVtb3ZlZCwKPj4gUGF0Y2gg MjUgcmVtb3ZlcyB0aGUgZXhjbHVzaXZlIGJpdCBmcm9tIEFwcEFybW9yLiBBbiB1bm5lY2Vzc2Fy eQo+PiBzdHViIGhvb2sgd2FzIGFsc28gcmVtb3ZlZC4KPj4KPj4gVGhlIFVidW50dSBwcm9qZWN0 IGlzIHVzaW5nIGFuIGVhcmxpZXIgdmVyc2lvbiBvZiB0aGlzIHBhdGNoc2V0IGluCj4+IHRoZWly IGRpc3RyaWJ1dGlvbiB0byBlbmFibGUgc3RhY2tpbmcgZm9yIGNvbnRhaW5lcnMuCj4+Cj4+IFBl cmZvcm1hbmNlIG1lYXN1cmVtZW50cyB0byBkYXRlIGhhdmUgdGhlIGNoYW5nZSB3aXRoaW4gdGhl ICJub2lzZSIuCj4+IFRoZSBzb2NrcGVyZiBhbmQgZGJlbmNoIHJlc3VsdHMgYXJlIG9uIHRoZSBv cmRlciBvZiAwLjIlIHRvIDAuOCUKPj4gZGlmZmVyZW5jZSwgd2l0aCBiZXR0ZXIgcGVyZm9ybWFu Y2UgYmVpbmcgYXMgY29tbW9uIGFzIHdvcnNlLiBUaGUKPj4gYmVuY2htYXJrcyB3ZXJlIHJ1biB3 aXRoIEFwcEFybW9yIGFuZCBTbWFjayBvbiBVYnVudHUuCj4+Cj4+IGh0dHBzOi8vZ2l0aHViLmNv bS9jc2NoYXVmbGVyL2xzbS1zdGFja2luZy5naXQjc3RhY2stNS4xMS1yYzEtdjI0Cj4+Cj4+IFNp Z25lZC1vZmYtYnk6IENhc2V5IFNjaGF1ZmxlciA8Y2FzZXlAc2NoYXVmbGVyLWNhLmNvbT4KPj4K Pj4KPj4gQ2FzZXkgU2NoYXVmbGVyICgyNSk6Cj4+IMKgwqAgTFNNOiBJbmZyYXN0cnVjdHVyZSBt YW5hZ2VtZW50IG9mIHRoZSBzb2NrIHNlY3VyaXR5Cj4+IMKgwqAgTFNNOiBBZGQgdGhlIGxzbWJs b2IgZGF0YSBzdHJ1Y3R1cmUuCj4+IMKgwqAgTFNNOiBwcm92aWRlIGxzbSBuYW1lIGFuZCBpZCBz bG90IG1hcHBpbmdzCj4+IMKgwqAgSU1BOiBhdm9pZCBsYWJlbCBjb2xsaXNpb25zIHdpdGggc3Rh Y2tlZCBMU01zCj4+IMKgwqAgTFNNOiBVc2UgbHNtYmxvYiBpbiBzZWN1cml0eV9hdWRpdF9ydWxl X21hdGNoCj4+IMKgwqAgTFNNOiBVc2UgbHNtYmxvYiBpbiBzZWN1cml0eV9rZXJuZWxfYWN0X2Fz Cj4+IMKgwqAgTFNNOiBVc2UgbHNtYmxvYiBpbiBzZWN1cml0eV9zZWNjdHhfdG9fc2VjaWQKPj4g wqDCoCBMU006IFVzZSBsc21ibG9iIGluIHNlY3VyaXR5X3NlY2lkX3RvX3NlY2N0eAo+PiDCoMKg IExTTTogVXNlIGxzbWJsb2IgaW4gc2VjdXJpdHlfaXBjX2dldHNlY2lkCj4+IMKgwqAgTFNNOiBV c2UgbHNtYmxvYiBpbiBzZWN1cml0eV90YXNrX2dldHNlY2lkCj4+IMKgwqAgTFNNOiBVc2UgbHNt YmxvYiBpbiBzZWN1cml0eV9pbm9kZV9nZXRzZWNpZAo+PiDCoMKgIExTTTogVXNlIGxzbWJsb2Ig aW4gc2VjdXJpdHlfY3JlZF9nZXRzZWNpZAo+PiDCoMKgIElNQTogQ2hhbmdlIGludGVybmFsIGlu dGVyZmFjZXMgdG8gdXNlIGxzbWJsb2JzCj4+IMKgwqAgTFNNOiBTcGVjaWZ5IHdoaWNoIExTTSB0 byBkaXNwbGF5Cj4+IMKgwqAgTFNNOiBFbnN1cmUgdGhlIGNvcnJlY3QgTFNNIGNvbnRleHQgcmVs ZWFzZXIKPj4gwqDCoCBMU006IFVzZSBsc21jb250ZXh0IGluIHNlY3VyaXR5X3NlY2lkX3RvX3Nl Y2N0eAo+PiDCoMKgIExTTTogVXNlIGxzbWNvbnRleHQgaW4gc2VjdXJpdHlfaW5vZGVfZ2V0c2Vj Y3R4Cj4+IMKgwqAgTFNNOiBzZWN1cml0eV9zZWNpZF90b19zZWNjdHggaW4gbmV0bGluayBuZXRm aWx0ZXIKPj4gwqDCoCBORVQ6IFN0b3JlIExTTSBuZXRsYWJlbCBkYXRhIGluIGEgbHNtYmxvYgo+ PiDCoMKgIExTTTogVmVyaWZ5IExTTSBkaXNwbGF5IHNhbml0eSBpbiBiaW5kZXIKPj4gwqDCoCBh dWRpdDogYWRkIHN1cHBvcnQgZm9yIG5vbi1zeXNjYWxsIGF1eGlsaWFyeSByZWNvcmRzCj4+IMKg wqAgQXVkaXQ6IEFkZCBuZXcgcmVjb3JkIGZvciBtdWx0aXBsZSBwcm9jZXNzIExTTcKgIGF0dHJp YnV0ZXMKPj4gwqDCoCBBdWRpdDogQWRkIGEgbmV3IHJlY29yZCBmb3IgbXVsdGlwbGUgb2JqZWN0 IExTTSBhdHRyaWJ1dGVzCj4+IMKgwqAgTFNNOiBBZGQgL3Byb2MgYXR0ciBlbnRyeSBmb3IgZnVs bCBMU00gY29udGV4dAo+PiDCoMKgIEFwcEFybW9yOiBSZW1vdmUgdGhlIGV4Y2x1c2l2ZSBmbGFn Cj4+Cj4+IMKgIERvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvaW1hX3BvbGljecKgwqDCoMKgwqDC oMKgwqDCoCB8wqDCoCA4ICstCj4+IMKgIERvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvcHJvY2Zz LWF0dHItY29udGV4dCB8wqAgMTQgKwo+PiDCoCAuLi4vQUJJL3Rlc3RpbmcvcHJvY2ZzLWF0dHIt bHNtX2Rpc3BsYXnCoMKgwqDCoMKgwqAgfMKgIDIyICsKPj4gwqAgRG9jdW1lbnRhdGlvbi9zZWN1 cml0eS9sc20ucnN0wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCAyOCArCj4+IMKg IGRyaXZlcnMvYW5kcm9pZC9iaW5kZXIuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB8wqAgMjYgKy0KPj4gwqAgZnMvY2VwaC94YXR0ci5jwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDYgKy0K Pj4gwqAgZnMvbmZzL25mczRwcm9jLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCA4ICstCj4+IMKgIGZzL25mc2QvbmZzNHhkci5j wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg fMKgIDIwICstCj4+IMKgIGZzL3Byb2MvYmFzZS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMiArCj4+IMKgIGluY2x1 ZGUvbGludXgvYXVkaXQuaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB8wqAgNDMgKy0KPj4gwqAgaW5jbHVkZS9saW51eC9jcmVkLmjCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCAzICstCj4+IMKgIGlu Y2x1ZGUvbGludXgvbHNtX2hvb2tzLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHzCoCAzNiArLQo+PiDCoCBpbmNsdWRlL2xpbnV4L3NlY3VyaXR5LmjCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAxODUgKysrKystCj4+IMKgIGluY2x1 ZGUvbmV0L25ldGxhYmVsLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHzCoCAxMSArLQo+PiDCoCBpbmNsdWRlL25ldC9zY20uaMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCAxNSArLQo+PiDCoCBp bmNsdWRlL25ldC94ZnJtLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgfMKgIDEzICstCj4+IMKgIGluY2x1ZGUvdWFwaS9saW51eC9hdWRpdC5o wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMiArCj4+IMKgIGtl cm5lbC9hdWRpdC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgfCAxNzUgKysrKy0tCj4+IMKgIGtlcm5lbC9hdWRpdC5owqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg fMKgIDExICstCj4+IMKgIGtlcm5lbC9hdWRpdGZpbHRlci5jwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDM2ICstCj4+IMKgIGtlcm5lbC9hdWRp dHNjLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHwgMTkxICsrKy0tLQo+PiDCoCBrZXJuZWwvY3JlZC5jwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgMTIgKy0K Pj4gwqAgbmV0L2lwdjQvY2lwc29faXB2NC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHzCoCAyNiArLQo+PiDCoCBuZXQvaXB2NC9pcF9zb2NrZ2x1ZS5j wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgMTIgKy0K Pj4gwqAgbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jwqDCoMKgwqDCoMKgwqDC oMKgIHzCoCAyNCArLQo+PiDCoCBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zdGFuZGFsb25l LmPCoMKgwqDCoMKgwqAgfMKgIDExICstCj4+IMKgIG5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1 ZXVlLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCAzOCArLQo+PiDCoCBuZXQvbmV0 ZmlsdGVyL25mdF9tZXRhLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgfMKgIDEwICstCj4+IMKgIG5ldC9uZXRmaWx0ZXIveHRfU0VDTUFSSy5jwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgNyArLQo+PiDCoCBuZXQvbmV0bGFiZWwv bmV0bGFiZWxfZG9tYWluaGFzaC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCA0ICstCj4+ IMKgIG5ldC9uZXRsYWJlbC9uZXRsYWJlbF9rYXBpLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHzCoMKgIDYgKy0KPj4gwqAgbmV0L25ldGxhYmVsL25ldGxhYmVsX3VubGFiZWxl ZC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMTA2ICsrLS0KPj4gwqAgbmV0L25ldGxhYmVs L25ldGxhYmVsX3VubGFiZWxlZC5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDIgKy0K Pj4gwqAgbmV0L25ldGxhYmVsL25ldGxhYmVsX3VzZXIuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgfMKgIDIzICstCj4+IMKgIG5ldC9uZXRsYWJlbC9uZXRsYWJlbF91c2VyLmjC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDIgKy0KPj4gwqAgbmV0L3hm cm0veGZybV9wb2xpY3kuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgfMKgIDEwICstCj4+IMKgIG5ldC94ZnJtL3hmcm1fc3RhdGUuY8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgMjAgKy0KPj4gwqAgc2VjdXJp dHkvYXBwYXJtb3IvaW5jbHVkZS9hcHBhcm1vci5owqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDMg Ky0KPj4gwqAgc2VjdXJpdHkvYXBwYXJtb3IvaW5jbHVkZS9uZXQuaMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgfMKgwqAgNiArLQo+PiDCoCBzZWN1cml0eS9hcHBhcm1vci9pbmNsdWRlL3By b2NhdHRyLmjCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMiArLQo+PiDCoCBzZWN1cml0eS9hcHBh cm1vci9sc20uY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwg MTA1ICsrLS0KPj4gwqAgc2VjdXJpdHkvYXBwYXJtb3IvcHJvY2F0dHIuY8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDIyICstCj4+IMKgIHNlY3VyaXR5L2JwZi9ob29rcy5j wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDEy ICstCj4+IMKgIHNlY3VyaXR5L2NvbW1vbmNhcC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgNyArLQo+PiDCoCBzZWN1cml0eS9pbnRlZ3Jp dHkvaW1hL2ltYS5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgMTUgKy0K Pj4gwqAgc2VjdXJpdHkvaW50ZWdyaXR5L2ltYS9pbWFfYXBpLmPCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB8wqAgMTcgKy0KPj4gwqAgc2VjdXJpdHkvaW50ZWdyaXR5L2ltYS9pbWFfYXBwcmFp c2UuY8KgwqDCoMKgwqDCoMKgwqAgfMKgwqAgNiArLQo+PiDCoCBzZWN1cml0eS9pbnRlZ3JpdHkv aW1hL2ltYV9tYWluLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDU0ICstCj4+IMKgIHNl Y3VyaXR5L2ludGVncml0eS9pbWEvaW1hX3BvbGljeS5jwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKg IDk3ICsrLQo+PiDCoCBzZWN1cml0eS9pbnRlZ3JpdHkvaW50ZWdyaXR5X2F1ZGl0LmPCoMKgwqDC oMKgwqDCoMKgwqAgfMKgwqAgNiArLQo+PiDCoCBzZWN1cml0eS9sb2FkcGluL2xvYWRwaW4uY8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDggKy0KPj4gwqAgc2Vj dXJpdHkvbG9ja2Rvd24vbG9ja2Rvd24uY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgfMKgwqAgNyArLQo+PiDCoCBzZWN1cml0eS9zYWZlc2V0aWQvbHNtLmPCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgOCArLQo+PiDCoCBzZWN1cml0eS9z ZWN1cml0eS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB8IDU2MSArKysrKysrKysrKysrKysrLS0KPj4gwqAgc2VjdXJpdHkvc2VsaW51eC9ob29r cy5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCA5OSArKy0t Cj4+IMKgIHNlY3VyaXR5L3NlbGludXgvaW5jbHVkZS9jbGFzc21hcC5owqDCoMKgwqDCoMKgwqDC oMKgwqAgfMKgwqAgMiArLQo+PiDCoCBzZWN1cml0eS9zZWxpbnV4L2luY2x1ZGUvb2Jqc2VjLmjC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgNSArCj4+IMKgIHNlY3VyaXR5L3NlbGludXgv aW5jbHVkZS9zZWN1cml0eS5owqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMSArCj4+IMKgIHNl Y3VyaXR5L3NlbGludXgvbmV0bGFiZWwuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB8wqAgMjUgKy0KPj4gwqAgc2VjdXJpdHkvc2VsaW51eC9zcy9zZXJ2aWNlcy5jwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDQgKy0KPj4gwqAgc2VjdXJpdHkvc21hY2sv c21hY2suaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKg wqAgNiArCj4+IMKgIHNlY3VyaXR5L3NtYWNrL3NtYWNrX2FjY2Vzcy5jwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMiArLQo+PiDCoCBzZWN1cml0eS9zbWFjay9zbWFja19s c20uY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCA5MSArLS0KPj4g wqAgc2VjdXJpdHkvc21hY2svc21hY2tfbmV0ZmlsdGVyLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB8wqDCoCA4ICstCj4+IMKgIHNlY3VyaXR5L3NtYWNrL3NtYWNrZnMuY8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgMTMgKy0KPj4gwqAgc2VjdXJpdHkv dG9tb3lvL3RvbW95by5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHzCoMKgIDggKy0KPj4gwqAgc2VjdXJpdHkveWFtYS95YW1hX2xzbS5jwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDcgKy0KPj4gwqAgNjcgZmlsZXMgY2hh bmdlZCwgMTc0MSBpbnNlcnRpb25zKCspLCA2MzQgZGVsZXRpb25zKC0pCj4+IMKgIGNyZWF0ZSBt b2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3Byb2Nmcy1hdHRyLWNvbnRleHQK Pj4gwqAgY3JlYXRlIG1vZGUgMTAwNjQ0IERvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvcHJvY2Zz LWF0dHItbHNtX2Rpc3BsYXkKPj4KPgoKLS0KTGludXgtYXVkaXQgbWFpbGluZyBsaXN0CkxpbnV4 LWF1ZGl0QHJlZGhhdC5jb20KaHR0cHM6Ly93d3cucmVkaGF0LmNvbS9tYWlsbWFuL2xpc3RpbmZv L2xpbnV4LWF1ZGl0