From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by mx.groups.io with SMTP id smtpd.web08.23248.1643252689996884208 for ; Wed, 26 Jan 2022 19:04:50 -0800 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=AawEhPA+; spf=pass (domain: intel.com, ip: 192.55.52.151, mailfrom: lisa.huang@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1643252690; x=1674788690; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=tiAfrYTcwOUpCsAOFEHu55lVtQOhKJFV7MiHDmqPq/0=; b=AawEhPA+LFKC0dGFRn2sXG17GbkAG4uQsASHyndIlIbdg3JN+A5t/O/1 m7C/wRJurULqcTvgu+kFMUS22IWr3wSJNGlTM0UHxpc3wwG4+AmRXI+5U ZKVdgRfbqcQqOO1/bovV/EH+66VQmdEoEX7/WPBrkEA7A/4mNwWMYN0Zd BP6n1pYz5tzMXamgb2rnJpqv4FENILcM8CtLpqvx2KjG0l6E1p78OOBPu KwhesqXjWoSx9BfzBzHxB5t+VNsCxN3l84jGg0YtYyvkqjpv+tGxX+XoT +SVhnQL78GbacPtF8YlurDqfyNQNJhQafGfV7ZrniSasF2CDIQkr2syPe A==; X-IronPort-AV: E=McAfee;i="6200,9189,10239"; a="227405418" X-IronPort-AV: E=Sophos;i="5.88,319,1635231600"; d="scan'208";a="227405418" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Jan 2022 19:04:49 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.88,319,1635231600"; d="scan'208";a="477707941" Received: from fmsmsx603.amr.corp.intel.com ([10.18.126.83]) by orsmga003.jf.intel.com with ESMTP; 26 Jan 2022 19:04:48 -0800 Received: from fmsmsx609.amr.corp.intel.com (10.18.126.89) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20; Wed, 26 Jan 2022 19:04:48 -0800 Received: from fmsmsx603.amr.corp.intel.com (10.18.126.83) by fmsmsx609.amr.corp.intel.com (10.18.126.89) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20; Wed, 26 Jan 2022 19:04:47 -0800 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20 via Frontend Transport; Wed, 26 Jan 2022 19:04:47 -0800 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (104.47.55.174) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.20; Wed, 26 Jan 2022 19:04:47 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dkgzPVfw7YBxW0rEt+G36eEaMY+Cc7bkobJqXNaZDPKMJWfyDpjS6sbtJCShpYtYhgAYyobM+F2Qjpnl5W06aSeon1nyjMyMZCCuzIGqUzHRGC4JRMHTZVD4P+ty/ptA5Ps5KsYiCUlPgHgZG3N141L+M3o91vc37XAo/e1a++1o0cafCvBjY4ir7tbZfQbbm0PaP5z9v/5D4kt1drywXDJDd2Hh9J2D6eezQOi8bOmnajaDWBTOmVJ9Q14c0kKAe67gYRy8uSmS+mG05AF92XG9BbLKZZXQXTcAgQXePCYm4LFkj4PBRBfN3f2EQni28gfROm35GNedhfByUUu2xQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=tiAfrYTcwOUpCsAOFEHu55lVtQOhKJFV7MiHDmqPq/0=; b=HU4pLyqiqfmAR+Xj6AWZfk9bEtx7/SHoYGTMC3WjsOAyQfCRW0EjSPXlGDUyZUuvrxwUXL7alFv7h5s3IgM8gcUDHSyZap/hRApPuhNsc1XoapCt8tQyav1NuOKdeUH3ZWyzIBpgokpHcouTB4/r95wpDDHRhrED3cf7BLJX2wDh8/CmuTBI/3L8iV9YjbDuoEzUczM9GyfUksODIt+db4jsbrvBbpnjw62Se9+3bRyQoa4v7IYNGQD5vHVtf8iM/Rl+aJJ3PEyJhRf96HcTw41QA406aFluN8kEgCaDOP8tpSj8qQjhjtiwKTzOP66ctIs2S46MuzOzg0BWas+x9A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none Received: from PH0PR11MB5659.namprd11.prod.outlook.com (2603:10b6:510:ea::6) by DM8PR11MB5750.namprd11.prod.outlook.com (2603:10b6:8:11::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4909.12; Thu, 27 Jan 2022 03:04:44 +0000 Received: from PH0PR11MB5659.namprd11.prod.outlook.com ([fe80::8c3b:f58d:d445:2613]) by PH0PR11MB5659.namprd11.prod.outlook.com ([fe80::8c3b:f58d:d445:2613%9]) with mapi id 15.20.4930.017; Thu, 27 Jan 2022 03:04:44 +0000 From: "Huang, Li-Xia" To: Michael Kubacki , Michael Kubacki , "devel@edk2.groups.io" , "Gao, Liming" , "Feng, Bob C" CC: "Chen, Christine" , "Wu, Yidong" , "Xu, Wei6" , "You, Benjamin" Subject: Re: [edk2-devel][PATCH] BaseTools/GenFw: Enhance to add export table in PE-COFF Thread-Topic: [edk2-devel][PATCH] BaseTools/GenFw: Enhance to add export table in PE-COFF Thread-Index: AQHYB4g+cvnUrFHGu0aV+Ww5F7lHBqxiDByAgAR0tNCAAcZJAIAAAF+AgAYe9gCABqJlwIAAy+SAgABjAHA= Date: Thu, 27 Jan 2022 03:04:44 +0000 Message-ID: References: <20220112074423.5075-1-lisa.huang@intel.com> <002001d80c2b$150f2230$3f2d6690$@byosoft.com.cn> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-reaction: no-action dlp-version: 11.6.200.16 dlp-product: dlpe-windows authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: cc68cf06-0889-4ffa-7fb1-08d9e141c525 x-ms-traffictypediagnostic: DM8PR11MB5750:EE_ x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:3826; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: PabInaGKMf29Xqt8pR40iHcvjOLHjYCxqh4B5jYewWKxEQHYwdNLcTJ5j85VRJlv/9vNZXXCVYsU7afhKBSpHDcQYhsgGofUs+mYVQmAi7PeMKV0nyj9nA2O2v+E8yJPptYEEnEdAKuRl9vBITKTJrOmIgEqQBOm9GlQ2J+iWLhBUQfNyZoz/R7o/vm0gi+qrb191Ld+UwUdR9HqSkOMB2h8DqrU2OVicokyjmqwnDbNirwxjBoIKyJSfEGrPqKAIx2rPmFTn8FLxeWMCM2V2NW0d7jnc+P00tq/lOgW0hu69YjGrULosXSFdW9jJn5RfdnouiPiTVpbha/wI4rl5MV+OtvAN7IuI2BSlGL60vg3RfB8kk2VEIKtneG3LA9zL72/qvYe1l9r6Rnv5MPLEuY2kilEqP7n3eBRKUNJZyIVEbMQUn2GVLoDvY8SrvcFUCyVQUSkXMI4N6xLpKi6etPgRJIaeeqUNvyNjnWVHtLHGvitDh0br5QFnii56L8ilNsmCDca5lP6uwFzNus+cPdWIvvHPdKix5X1QGfHzOlwLHcVLLr4dBWAvavr+Qqt/cId4G45P92ktuDSEmxhUVhXzDnD300ukVSJ0cAzzNg/fRn0eGeLMoem5KVwHxDqJkU3vWR6AmDOKLOhaAu5RlRmkichgj9KfMZHGER5BNl1F6DivbKcpTaVjDC6dsq+hy5wFj/z6y2fBB0jtkWkb/BTDRZL2y5L/10k0mRB3bWwsEBe+DeSvAnyh33LHtanpngO+31vxfy6y1Y5uvPQAEqjA+gSpIig9xf1Xwga06kgYiwgtikTNDVmJnn/uDHS x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR11MB5659.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(52536014)(8676002)(76116006)(8936002)(110136005)(186003)(66946007)(38100700002)(122000001)(82960400001)(54906003)(316002)(508600001)(966005)(30864003)(5660300002)(45080400002)(71200400001)(4326008)(33656002)(66446008)(64756008)(66556008)(66476007)(26005)(9686003)(86362001)(7696005)(107886003)(53546011)(6506007)(19627235002)(55016003)(83380400001)(6636002)(2906002)(38070700005)(579004)(559001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?WnFPK1UvR2VPUktqTTJVa2NkN0VGNFM4ZGdjUDlRNWM4VGxCYks5ZU0vemRK?= =?utf-8?B?b0NjZmhkbjVTMEFrQTNkN29qcHpoUUJMc2Zvc1JjYUM2SnMya2grSEpFM01N?= =?utf-8?B?c2IzZnlyek5acjNKSktXaEdxWmFyV0hTaUNvbWhzcGExRis1Y1pvTGpWZ1J0?= =?utf-8?B?QTZWaWV0SGJENjNNaW04ZHM5ejREa0pyZjE3MlVEZlYzaFNxODkwZ2xReVVW?= =?utf-8?B?NTQ5OEN0bUMvZWZkekRrdjZwMUZWakxZQUQ5ZXpudzloUGR4eVhFLzhwcGty?= =?utf-8?B?MThYSGsxbkI3TkhQUjQveEQwZ2h3alJyZHg1SmF4NkhlS3R5SXJYblN3eTRt?= =?utf-8?B?Uy84Unlic2RGUFRBTHBCMzZZUXBpZ2hET1IzMUF2cGwzbUVkUTM2OUFQNHhO?= =?utf-8?B?MjNQUWZlOFJTak4vTTlPNTlnRnFSS2thSkxTdlYzTmluTHhkRk1Jb1l6Y2lJ?= =?utf-8?B?UHg4cUxiTHVEWkxwbU9ySW1xYkRFbFJWTUU5Y01RNnVVbnpzOFNjMk5VNjNZ?= =?utf-8?B?WWtuYzRrNUlDVC8xNlRKZUljRW8ra2RDa09ESGljYy83Zzh3aXI3QkluTkRp?= =?utf-8?B?Um8zL3ZGeWFSYTYxTkRYaGJDdWRQTFlUQno0M0pPUHZlYVBtak9TQ2F4VHZE?= =?utf-8?B?R09uVzFNMUVYRDFTb29CZFRXU1pEYXV3ZXdKUW9KNW5lNG4rVENWZlpZd0ZN?= =?utf-8?B?UkZwMlZ5VXFHNnMxaCtFdWdhc3hwcGt5SEFKQ3l6SUp4dG9waS96ZVVuWkl6?= =?utf-8?B?bk9zSmw4VEdRU0YyNzN0TU95U3ZSUHFjWEloNlRTazMxQnJ4WTZWOUR5YjUy?= =?utf-8?B?U0FoeHVOMk5tdnJEMkk3MSt4ZzNmVm1taDVkNDdmNTQvcnpxRkU1WHdmQnVW?= =?utf-8?B?NHA5cGtPZURiUE9vUktjb1BFSUUxWDFOd29jSVgzUzdFSlpYbjJzSEplZDNx?= =?utf-8?B?YmxISDRxSXR5UmM4dE9sQmx2SVNuOVpjeGlNdVhzYWpUNXBNaUw4bHpBWCtX?= =?utf-8?B?VFhyYXFwR2drS0FrQWtNYURlYUI0Q1ZDSEtuQXpHSkxWVk1zRkpFR2xKZ1JK?= =?utf-8?B?NWhrNlJJRWVIb2pKOHRiV3RrbHc2SUZaM2JZWk1wU3dxcHdnSGJPNDl5eVhl?= =?utf-8?B?S1l5WFcyM2lTbU92RDRFS1FVcE01K2MxSUJKckdCa1AxWW16cmZnbmIrQ25Z?= =?utf-8?B?UWFDOE5KWFZ6Vm8weGZEZzlYZmpDTmpzMk8vZFVuc1NxQytqeUlJYTNhUnpy?= =?utf-8?B?ZGlneW5iQUcrZWVrV3pyVDJLNmRaOHFLTnYxQm9SVSt5Rk1nRkhhZ29RMy9o?= =?utf-8?B?eXR5Zm84dHJ6TnZUd1FORGlyN2pwRTVtNUk4bG9WT0J4b0FpMTJTR2tRenhw?= =?utf-8?B?clEvZ1NMUFl6NXdFeUo1MHZvTVpHUGlSY0JsOVM5OFhlL3VDT21LNk95czJr?= =?utf-8?B?ejREdkNNNFFLWVBMRFZ5Y3RZZVp2NTVCUWNsdDFoUDd4VVVuQXhpZ3JFQmpT?= =?utf-8?B?N0tzUVYrMlV1SDU3UnRXa3Q3SnhrVG5yaitJZ0pwVzhDN2RjNmlOSitZTTMz?= =?utf-8?B?aXlhaXc2M0ZKQ1FOblNGT0VEU2pxNzhPWkZ6eUlRN0hJaHBIZVRaU2xWYlFC?= =?utf-8?B?QTBEK01LSmFuMitvRm84K040Q2RmRmd6Zm5Vd0xPYUoxL0tFbGlCd0F5bG1r?= =?utf-8?B?QXNtb1ZhVWtFeGQ2ZWFjMXY2QVJrS0JNeFJRaTkrTE5FUjU1cUNsNFlUbjBY?= =?utf-8?B?TzE3OTM3OEpuTlRvbXJ5TG1ZbUV6SHFMRzlndlV2aWJROXZDOG4yR0Y3Mkdt?= =?utf-8?B?dFduaU45Slh1OUJ5QjdjbUxGUGtMV2ZTOEpSVjFZaXEvbFY2L005QXBsV2Y2?= =?utf-8?B?QlI2NzlxdXlaekdJK01nNzh0SFNsYVNQK1B0STh4L0hSckhYWjFoYzdqWDRZ?= =?utf-8?B?SU5hWUprcFBucWlVNWZhdllqU3QvZkFkQkdyZExuVWNaaVFqVVpoeVhHVVNF?= =?utf-8?B?VVFMY1YvVGxOZFFQV3QwU1pnNUk0ZUdEWE1pUTRNL1RnR0VXK3hzR2U5aFFD?= =?utf-8?B?Tk5oVUJLOWsxdUtTSjc3Z1dTQnp4NnIxOGFkQkgyb2ZsdnhnVWxCNVh3UlNZ?= =?utf-8?B?VXMrK1loamFaRjFhZC9ZY3lsRnVRVmRLcXhicW1CK0xXUG5vYTNJeTFpazZY?= =?utf-8?Q?tt+8W0OII3ozvuZ5ZvCJN/k=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH0PR11MB5659.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: cc68cf06-0889-4ffa-7fb1-08d9e141c525 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Jan 2022 03:04:44.4922 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: VIqxcaUPGuWyHnXEId7xfYo309MSyl+63AbFc+vwFCcOeO5OvIsfZeAA3bzlKIqsDe5go3/01ZwlJ/R8R0Y4Uw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM8PR11MB5750 Return-Path: lisa.huang@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgTWljaGFlbCwNCg0KVGhhbmtzIGZvciB5b3VyIHJlc3BvbnNlLg0KDQpTb3JyeSBJIGRpZG4n dCBnaXZlIGVub3VnaCBjb250ZXh0IGZvciBteSBxdWVzdGlvbiwgSSBtZWFuIHRoZSAnIFNpemVP ZkluaXRpYWxpemVkRGF0YScgaW4gT3B0aW9uYWwgaGVhZGVyIG9mIFBFLUNPRkYgZmlsZS4NClNp emVPZkluaXRpYWxpemVkRGF0YQ0KVGhlIHNpemUgb2YgdGhlIGluaXRpYWxpemVkIGRhdGEgc2Vj dGlvbiwgb3IgdGhlIHN1bSBvZiBhbGwgc3VjaCBzZWN0aW9ucyBpZiB0aGVyZSBhcmUgbXVsdGlw bGUgZGF0YSBzZWN0aW9ucy4NCg0KSSBoYWQgYW4gZXhwZXJpbWVudCwgIGNvbXBhcmUgdGhlIC5l ZmkgZmlsZXMgZ2VuZXJhdGVkIGJ5IE1TVkMgdG9vbCAgLSBvbmUgd2l0aCBQUk0gZXhwb3J0cyBh bmQgdGhlIG90aGVyIHdpdGhvdXQsICB0aGUgc2l6ZSBvZiBJbml0aWFsaXplZERhdGEgaW4gb3B0 aW9uYWwgaGVhZGVyIGJlY29tZXMgbGFyZ2VyIHdpdGggUFJNIGV4cG9ydHMuIFNvIGl0IHNob3dz IHRoYXQgZXhwb3J0IHRhYmxlIHdpbGwgYmUgaW5jbHVkZWQgaW4gaW5pdGlhbGl6ZWQgZGF0YS4N CiNpZiBkZWZpbmVkKF9NU0NfVkVSKQ0KICAjZGVmaW5lIFBSTV9FWFBPUlRfQVBJICAgICAgICAg ICAgICAgICAgICAgICAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkNCiNlbHNlDQogICNkZWZpbmUg UFJNX0VYUE9SVF9BUEkNCiNlbmRpZg0KDQpSZWdhcmRzLA0KTGlzYQ0KDQotLS0tLU9yaWdpbmFs IE1lc3NhZ2UtLS0tLQ0KRnJvbTogTWljaGFlbCBLdWJhY2tpIDxtaWt1YmFja0BsaW51eC5taWNy b3NvZnQuY29tPiANClNlbnQ6IDIwMjLlubQx5pyIMjfml6UgNDoxOQ0KVG86IEh1YW5nLCBMaS1Y aWEgPGxpc2EuaHVhbmdAaW50ZWwuY29tPjsgTWljaGFlbCBLdWJhY2tpIDxtaWNoYWVsLmt1YmFj a2lAb3V0bG9vay5jb20+OyBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgR2FvLCBMaW1pbmcgPGdhb2xp bWluZ0BieW9zb2Z0LmNvbS5jbj47IEZlbmcsIEJvYiBDIDxib2IuYy5mZW5nQGludGVsLmNvbT4N CkNjOiBDaGVuLCBDaHJpc3RpbmUgPHl1d2VpLmNoZW5AaW50ZWwuY29tPjsgV3UsIFlpZG9uZyA8 eWlkb25nLnd1QGludGVsLmNvbT47IFh1LCBXZWk2IDx3ZWk2Lnh1QGludGVsLmNvbT47IFlvdSwg QmVuamFtaW4gPGJlbmphbWluLnlvdUBpbnRlbC5jb20+DQpTdWJqZWN0OiBSZTogW2VkazItZGV2 ZWxdW1BBVENIXSBCYXNlVG9vbHMvR2VuRnc6IEVuaGFuY2UgdG8gYWRkIGV4cG9ydCB0YWJsZSBp biBQRS1DT0ZGDQoNCkFyZSB5b3UgcmVmZXJyaW5nIHRvICJzdGF0aWMgZGF0YSI/IElmIHNvLCBu by4gVGhhdCBpcyBhbGxvY2F0ZWQgYXQgYm9vdCB0aW1lIGFuZCBwbGFjZWQgaW50byB0aGUgYXBw cm9wcmlhdGUgaGFuZGxlciBpbmZvcm1hdGlvbiBzdHJ1Y3R1cmVzLg0KDQpUaGUgaXRlbXMgaW4g dGhlIGV4cG9ydCB0YWJsZSBmb3IgYSBnaXZlbiBQUk0gTW9kdWxlIGFyZToNCjEuIFBSTSBoYW5k bGVyIGNvdW50DQoyLiBQbGF0Zm9ybSBHVUlEIChhdXRvbWF0aWNhbGx5IGFwcGxpZWQgZnJvbSB0 aGUgRFNDDQpFREtJSV9EU0NfUExBVEZPUk1fR1VJRCkNCiAgICAoaHR0cHM6Ly9idWd6aWxsYS50 aWFub2NvcmUub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTY5KQ0KMy4gVGhlIFBSTSBNb2R1bGUgR1VJ RA0KNC4gQSBsaXN0IG9mIFBSTSBoYW5kbGVyIEdVSUQ8LT5QUk0gaGFuZGxlciBuYW1lcw0KICAg ICh1c2VkIGJ5IEZXIGRpc2NvdmVyeSB0byBtYXAgaGFuZGxlciBpbiBleHBvcnQgdG8gR1VJRCBl bnRyeSBpbiB0aGUgUFJNVCBpdCBwcm9kdWNlcykNCg0KaHR0cHM6Ly9naXRodWIuY29tL3RpYW5v Y29yZS9lZGsyLXN0YWdpbmcvYmxvYi9QbGF0Zm9ybVJ1bnRpbWVNZWNoYW5pc20vUHJtUGtnL0lu Y2x1ZGUvUHJtRXhwb3J0RGVzY3JpcHRvci5oDQoNClRoYW5rcywNCk1pY2hhZWwNCg0KT24gMS8y Ni8yMDIyIDM6MTYgQU0sIEh1YW5nLCBMaS1YaWEgd3JvdGU6DQo+IEhpIE1pY2hhZWwsDQo+IA0K PiBTdXJlLCBJIHdpbGwgaW5jbHVkZSB5b3UgaWYgYW55IHVwZGF0ZSBvbiBQUk0gZnVuY3Rpb25h bGl0eS4NCj4gDQo+IEJUVywgSSBoYXZlIGEgcXVlc3Rpb24gYWJvdXQgSW5pdGlhbGl6ZWREYXRh LCBkb2VzIGl0IGluY2x1ZGUgZXhwb3J0IHNlY3Rpb24gb3Igbm90PyBUaGFua3MuDQo+IA0KPiBS ZWdhcmRzLA0KPiBMaXNhDQo+IA0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9t OiBNaWNoYWVsIEt1YmFja2kgPG1pY2hhZWwua3ViYWNraUBvdXRsb29rLmNvbT4NCj4gU2VudDog MjAyMuW5tDHmnIgyMuaXpSAxMDo1MA0KPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW87IEh1YW5n LCBMaS1YaWEgPGxpc2EuaHVhbmdAaW50ZWwuY29tPjsgR2FvLCANCj4gTGltaW5nIDxnYW9saW1p bmdAYnlvc29mdC5jb20uY24+OyBGZW5nLCBCb2IgQyA8Ym9iLmMuZmVuZ0BpbnRlbC5jb20+DQo+ IENjOiBDaGVuLCBDaHJpc3RpbmUgPHl1d2VpLmNoZW5AaW50ZWwuY29tPjsgV3UsIFlpZG9uZyAN Cj4gPHlpZG9uZy53dUBpbnRlbC5jb20+OyBYdSwgV2VpNiA8d2VpNi54dUBpbnRlbC5jb20+OyBZ b3UsIEJlbmphbWluIA0KPiA8YmVuamFtaW4ueW91QGludGVsLmNvbT47IG1pa3ViYWNrQGxpbnV4 Lm1pY3Jvc29mdC5jb20NCj4gU3ViamVjdDogUmU6IFtlZGsyLWRldmVsXVtQQVRDSF0gQmFzZVRv b2xzL0dlbkZ3OiBFbmhhbmNlIHRvIGFkZCANCj4gZXhwb3J0IHRhYmxlIGluIFBFLUNPRkYNCj4g DQo+IEhpIExpc2EsDQo+IA0KPiBUaGFuayB5b3UgZm9yIGNvbnRyaWJ1dGluZyB0aGlzLiBQbGVh c2UgaW5jbHVkZSBtZSBvbiBmdW5jdGlvbmFsaXR5IHJlbGF0ZWQgdG8gUFJNLg0KPiANCj4gSSB3 YXMgdXNpbmcgdGhlIFBSTV9FWFBPUlRfQVBJIG1hY3JvDQo+IChodHRwczovL2dpdGh1Yi5jb20v dGlhbm9jb3JlL2VkazItc3RhZ2luZy9ibG9iLzlkYThhYmY2NjUwNWQ4ZmY2MzZhYWUNCj4gY2M0 MjlhNTIzN2NlMjI2NjUwL1BybVBrZy9JbmNsdWRlL1BybS5oI0wxNykNCj4gdG8gc3VwcG9ydCB0 aGlzIG9uIE1TIHRvb2xjaGFpbi4NCj4gDQo+IEl0IGxvb2tzIGxpa2UgdGhpcyBpcyB0byBhZGQg c2ltaWxhciBmdW5jdGlvbmFsaXR5IGZvciBFTEYgYmluYXJpZXMgdXNpbmcgR2VuRnc/DQo+IA0K PiBUaGFua3MsDQo+IE1pY2hhZWwNCj4gDQo+IE9uIDEvMTgvMjAyMiAxOjE5IEFNLCBIdWFuZywg TGktWGlhIHdyb3RlOg0KPj4gSGkgTGltaW5nLA0KPj4NCj4+IFRoYW5rcyBmb3IgeW91ciBmZWVk YmFjay4NCj4+DQo+PiBJIGhhdmUgYWRkZWQgc29tZSBkZXRhaWwgaW4gQlouIPCfmIoNCj4+DQo+ PiBodHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcvc2hvd19idWcuY2dpP2lkPTM4MDIjYWRk X2NvbW1lbnQNCj4+IDxodHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcvc2hvd19idWcuY2dp P2lkPTM4MDIjYWRkX2NvbW1lbnQ+DQo+Pg0KPj4gUmVnYXJkcywNCj4+DQo+PiBMaXNhDQo+Pg0K Pj4gKkZyb206Kmdhb2xpbWluZyA8Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPg0KPj4gKlNlbnQ6 KiAyMDIy5bm0MeaciDE45pelMTM6MjANCj4+ICpUbzoqIGRldmVsQGVkazIuZ3JvdXBzLmlvOyBI dWFuZywgTGktWGlhIDxsaXNhLmh1YW5nQGludGVsLmNvbT47IA0KPj4gRmVuZywgQm9iIEMgPGJv Yi5jLmZlbmdAaW50ZWwuY29tPg0KPj4gKkNjOiogQ2hlbiwgQ2hyaXN0aW5lIDx5dXdlaS5jaGVu QGludGVsLmNvbT47IFd1LCBZaWRvbmcgDQo+PiA8eWlkb25nLnd1QGludGVsLmNvbT47IFh1LCBX ZWk2IDx3ZWk2Lnh1QGludGVsLmNvbT47IFlvdSwgQmVuamFtaW4gDQo+PiA8YmVuamFtaW4ueW91 QGludGVsLmNvbT4NCj4+ICpTdWJqZWN0Oiog5Zue5aSNOiBbZWRrMi1kZXZlbF1bUEFUQ0hdIEJh c2VUb29scy9HZW5GdzogRW5oYW5jZSB0byBhZGQgDQo+PiBleHBvcnQgdGFibGUgaW4gUEUtQ09G Rg0KPj4NCj4+IExpc2E6DQo+Pg0KPj4gICDCoENhbiB5b3UgZ2l2ZSBtb3JlIGJhY2tncm91bmQg YWJvdXQgUFJNIHVzYWdlPyBXaGF0IG5ldyB1c2FnZSANCj4+IHJlcXVpcmVzIFJQTT8gQ2FuIHlv dSBhZGQgdGhlIGRldGFpbCBpbiBCWj8NCj4+DQo+PiBUaGFua3MNCj4+DQo+PiBMaW1pbmcNCj4+ DQo+PiAq5Y+R5Lu25Lq6Kio6KmRldmVsQGVkazIuZ3JvdXBzLmlvDQo+PiA8bWFpbHRvOmRldmVs QGVkazIuZ3JvdXBzLmlvPjxkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPj4gPG1haWx0bzpkZXZlbEBl ZGsyLmdyb3Vwcy5pbz4+ICrku6PooaggKkh1YW5nLCBMaS1YaWENCj4+ICrlj5HpgIHml7bpl7Q6 KiAyMDIy5bm0MeaciDE35pelIDExOjA5DQo+PiAq5pS25Lu25Lq6OiogRmVuZywgQm9iIEMgPGJv Yi5jLmZlbmdAaW50ZWwuY29tIA0KPj4gPG1haWx0bzpib2IuYy5mZW5nQGludGVsLmNvbT4+OyBk ZXZlbEBlZGsyLmdyb3Vwcy5pbyANCj4+IDxtYWlsdG86ZGV2ZWxAZWRrMi5ncm91cHMuaW8+DQo+ PiAq5oqE6YCBOiogR2FvLCBMaW1pbmcgPGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbiANCj4+IDxt YWlsdG86Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPj47IENoZW4sIENocmlzdGluZSANCj4+IDx5 dXdlaS5jaGVuQGludGVsLmNvbSA8bWFpbHRvOnl1d2VpLmNoZW5AaW50ZWwuY29tPj47IFd1LCBZ aWRvbmcgDQo+PiA8eWlkb25nLnd1QGludGVsLmNvbSA8bWFpbHRvOnlpZG9uZy53dUBpbnRlbC5j b20+PjsgWHUsIFdlaTYgDQo+PiA8d2VpNi54dUBpbnRlbC5jb20gPG1haWx0bzp3ZWk2Lnh1QGlu dGVsLmNvbT4+OyBZb3UsIEJlbmphbWluIA0KPj4gPGJlbmphbWluLnlvdUBpbnRlbC5jb20gPG1h aWx0bzpiZW5qYW1pbi55b3VAaW50ZWwuY29tPj4NCj4+ICrkuLvpopg6KiBSZTogW2VkazItZGV2 ZWxdW1BBVENIXSBCYXNlVG9vbHMvR2VuRnc6IEVuaGFuY2UgdG8gYWRkIGV4cG9ydCANCj4+IHRh YmxlIGluIFBFLUNPRkYNCj4+DQo+PiBIaSBCb2IsDQo+Pg0KPj4gVGhhbmtzIGZvciB5b3VyIGNv bW1lbnRzLg0KPj4NCj4+IDEuwqAgSSB3aWxsIGFkZCB0aGUgaGVscCBpbmZvcm1hdGlvbiBmb3Ig Ii0tUFJNIjsNCj4+DQo+PiAyLg0KPj4NCj4+IEBAIC03NTAsNyArODE4LDcgQEAgU2NhblNlY3Rp b25zNjQgKA0KPj4NCj4+ICAgwqDCoMKgwqAgaWYgKHNoZHItPnNoX2FkZHJhbGlnbiA8PSBtQ29m ZkFsaWdubWVudCkgew0KPj4NCj4+ICAgwqDCoMKgwqDCoMKgIGNvbnRpbnVlOw0KPj4NCj4+ICAg wqDCoMKgwqAgfQ0KPj4NCj4+IC3CoMKgwqAgaWYgKElzVGV4dFNoZHIoc2hkcikgfHwgSXNEYXRh U2hkcihzaGRyKSB8fCBJc0hpaVJzcmNTaGRyKHNoZHIpKSANCj4+IHsNCj4+DQo+PiArwqDCoMKg IGlmIChJc1RleHRTaGRyKHNoZHIpIHx8IElzRGF0YVNoZHIoc2hkcikgfHwgSXNIaWlSc3JjU2hk cihzaGRyKQ0KPj4gK3x8DQo+PiBJc1N5bWJvbFNoZHIoc2hkcikpIHsNCj4+DQo+PiAgIMKgwqDC oMKgwqDCoCBtQ29mZkFsaWdubWVudCA9IChVSU5UMzIpc2hkci0+c2hfYWRkcmFsaWduOw0KPj4N Cj4+ICAgwqDCoMKgwqAgfQ0KPj4NCj4+ICAgwqDCoCB9DQo+Pg0KPj4gMSkgQWJvdmUgY2hhbmdl IGlzIHRvIFNldCBtQ29mZkFsaWdubWVudCB0byB0aGUgbWF4aW11bSBhbGlnbm1lbnQgb2YgDQo+ PiB0aGUgaW5wdXQgc2VjdGlvbnMgaW5jbHVkaW5nIHN5bWJvbCBzZWN0aW9uLg0KPj4NCj4+ICAg wqDCoMKgwqBUaGUgc3ltYm9sIHNlY3Rpb24gd2lsbCBvbmx5IGV4aXN0IHdpdGggYmVsb3cgY2hh bmdlLCBzbyBpdCANCj4+IHNob3VsZCBoYXZlIG5vIGVmZmVjdCB0byBvdGhlciBkcml2ZXJzLg0K Pj4NCj4+IGJ1aWxkX3J1bGUudGVtcGxhdGU6DQo+Pg0KPj4gICDCoMKgwqAgPENvbW1hbmQuR0ND Pg0KPj4NCj4+ICAgwqDCoMKgwqDCoMKgwqAgJChDUCkgJHtzcmN9ICQoREVCVUdfRElSKSgrKSQo TU9EVUxFX05BTUUpLmRlYnVnDQo+Pg0KPj4gICDCoMKgwqDCoMKgwqDCoCAjJChPQkpDT1BZKSAt LXN0cmlwLXVubmVlZGVkIC1SIC5laF9mcmFtZSAke3NyY30NCj4+DQo+PiAgIMKgwqDCoMKgwqDC oMKgICQoT0JKQ09QWSkgJChPQkpDT1BZX1NUUklQRkxBRykgJHtzcmN9DQo+Pg0KPj4gdG9vbHNf ZGVmLnRlbXBsYXRlOg0KPj4NCj4+ICpfKl8qX09CSkNPUFlfU1RSSVBGTEFHwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCA9IC0tc3RyaXAtdW5uZWVkZWQgLVIgLmVoX2ZyYW1lDQo+Pg0KPj4gUHJtQWRk clRyYW5zRHNtLmluZjoNCj4+DQo+PiBbQnVpbGRPcHRpb25zLmNvbW1vbl0NCj4+DQo+PiAuLi4N Cj4+DQo+PiAgIMKgIEdDQzogKl8qXypfT0JKQ09QWV9TVFJJUEZMQUcgPT0gLVIgLmVoX2ZyYW1l DQo+Pg0KPj4gMikgRm9yIFBSTSBkcml2ZXIsIHNoX2FkZHJhbGlnbiBvZiBzeW1ib2wgc2VjdGlv biBpcyA4LCBhbmQgbGVzcyB0aGFuIA0KPj4gb3RoZXIgc2VjdGlvbnMgc3VjaCBhcyBUZXh0IGFu ZCBEYXRhIChzaF9hZGRyYWxpZ24gaXMgNDA5NikuDQo+Pg0KPj4gUmVnYXJkcywNCj4+DQo+PiBM aXNhDQo+Pg0KPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4+IEZyb206IEZlbmcsIEJv YiBDIDxib2IuYy5mZW5nQGludGVsLmNvbSANCj4+IDxtYWlsdG86Ym9iLmMuZmVuZ0BpbnRlbC5j b20+Pg0KPj4gU2VudDogMjAyMuW5tDHmnIgxNOaXpSAxNDoxMg0KPj4gVG86IEh1YW5nLCBMaS1Y aWEgPGxpc2EuaHVhbmdAaW50ZWwuY29tIA0KPj4gPG1haWx0bzpsaXNhLmh1YW5nQGludGVsLmNv bT4+OyBkZXZlbEBlZGsyLmdyb3Vwcy5pbyANCj4+IDxtYWlsdG86ZGV2ZWxAZWRrMi5ncm91cHMu aW8+DQo+PiBDYzogR2FvLCBMaW1pbmcgPGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbiANCj4+IDxt YWlsdG86Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPj47IENoZW4sIENocmlzdGluZSANCj4+IDx5 dXdlaS5jaGVuQGludGVsLmNvbSA8bWFpbHRvOnl1d2VpLmNoZW5AaW50ZWwuY29tPj4NCj4+IFN1 YmplY3Q6IFJFOiBbZWRrMi1kZXZlbF1bUEFUQ0hdIEJhc2VUb29scy9HZW5GdzogRW5oYW5jZSB0 byBhZGQgDQo+PiBleHBvcnQgdGFibGUgaW4gUEUtQ09GRg0KPj4NCj4+IEhpIExpeGlhLA0KPj4N Cj4+IFRoaXMgcGF0Y2ggaW50cm9kdWNlIGEgbmV3IGNvbW1hbmQgbGluZSBvcHRpb24gLS1QUk0u IENvdWxkIHlvdSBhZGQgDQo+PiB0aGUgaGVscCBpbmZvcm1hdGlvbiBhYm91dCAtLVBSTT8NCj4+ DQo+PiBDb3VsZCB5b3UgcHJvdmlkZSBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBiZWxvdyBj aGFuZ2U/IFdvdWxkIA0KPj4gdGhlcmUgYmUgc2lkZS1lZmZlY3Q/DQo+Pg0KPj4gQEAgLTc1MCw3 ICs4MTgsNyBAQCBTY2FuU2VjdGlvbnM2NCAoDQo+Pg0KPj4gICDCoMKgwqDCoCBpZiAoc2hkci0+ c2hfYWRkcmFsaWduIDw9IG1Db2ZmQWxpZ25tZW50KSB7DQo+Pg0KPj4gICDCoMKgwqDCoMKgwqAg Y29udGludWU7DQo+Pg0KPj4gICDCoMKgwqDCoCB9DQo+Pg0KPj4gLcKgwqDCoCBpZiAoSXNUZXh0 U2hkcihzaGRyKSB8fCBJc0RhdGFTaGRyKHNoZHIpIHx8IElzSGlpUnNyY1NoZHIoc2hkcikpIA0K Pj4gew0KPj4NCj4+ICvCoMKgwqAgaWYgKElzVGV4dFNoZHIoc2hkcikgfHwgSXNEYXRhU2hkcihz aGRyKSB8fCBJc0hpaVJzcmNTaGRyKHNoZHIpDQo+PiArfHwNCj4+IElzU3ltYm9sU2hkcihzaGRy KSkgew0KPj4NCj4+ICAgwqDCoMKgwqDCoMKgIG1Db2ZmQWxpZ25tZW50ID0gKFVJTlQzMilzaGRy LT5zaF9hZGRyYWxpZ247DQo+Pg0KPj4gICDCoMKgwqDCoCB9DQo+Pg0KPj4gICDCoMKgIH0NCj4+ DQo+PiBUaGFua3MsDQo+Pg0KPj4gQm9iDQo+Pg0KPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t LS0NCj4+DQo+PiBGcm9tOiBIdWFuZywgTGktWGlhIDxsaXNhLmh1YW5nQGludGVsLmNvbSANCj4+ IDxtYWlsdG86bGlzYS5odWFuZ0BpbnRlbC5jb20+Pg0KPj4NCj4+IFNlbnQ6IFdlZG5lc2RheSwg SmFudWFyeSAxMiwgMjAyMiAzOjQ0IFBNDQo+Pg0KPj4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlv IDxtYWlsdG86ZGV2ZWxAZWRrMi5ncm91cHMuaW8+DQo+Pg0KPj4gQ2M6IEh1YW5nLCBMaS1YaWEg PGxpc2EuaHVhbmdAaW50ZWwuY29tIA0KPj4gPG1haWx0bzpsaXNhLmh1YW5nQGludGVsLmNvbT4+ OyBHYW8sIExpbWluZyA8Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuIA0KPj4gPG1haWx0bzpnYW9s aW1pbmdAYnlvc29mdC5jb20uY24+PjsgRmVuZywgQm9iIEMgPGJvYi5jLmZlbmdAaW50ZWwuY29t IA0KPj4gPG1haWx0bzpib2IuYy5mZW5nQGludGVsLmNvbT4+OyBDaGVuLCBDaHJpc3RpbmUgPHl1 d2VpLmNoZW5AaW50ZWwuY29tIA0KPj4gPG1haWx0bzp5dXdlaS5jaGVuQGludGVsLmNvbT4+DQo+ Pg0KPj4gU3ViamVjdDogW2VkazItZGV2ZWxdW1BBVENIXSBCYXNlVG9vbHMvR2VuRnc6IEVuaGFu Y2UgdG8gYWRkIGV4cG9ydCANCj4+IHRhYmxlIGluIFBFLUNPRkYNCj4+DQo+PiBSRUY6IGh0dHBz Oi8vYnVnemlsbGEudGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzgwMg0KPj4gPGh0dHBz Oi8vYnVnemlsbGEudGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzgwMj4NCj4+DQo+PiBT aW5jZSBQUk0gbW9kdWxlIG5lZWRzIHRvIHN1cHBvcnQgZXhwb3J0IHRhYmxlIGluIFBFLUNPRkYs IHdlJ2xsIA0KPj4gZW5oYW5jZSBHZW5GdyB0b29sIHRvIHN1cHBvcnQgdGhpcy4NCj4+DQo+PiBB ZGQgb25lIGV4cG9ydCBmbGFnIGluIEdlbkZ3IHRvb2wuIElmIGV4cG9ydCBmbGFnIGlzIHNldDoN Cj4+DQo+PiBTdGVwMTogU2NhbiBFTEYgc3ltYm9sIHRhYmxlIGJhc2VkIG9uIFBSTSBtb2R1bGUg ZGVzY3JpcHRvciB0byBnZXQgDQo+PiBkZXNjcmlwdG9yIG9mZnNldCBhZGRyZXNzOw0KPj4NCj4+ IFN0ZXAyOiBGaW5kIFBSTSBoYW5kbGVycyBudW1iZXIgYW5kIG5hbWUgaW4gQ09GRiBmaWxlIGJh c2VkIG9uIHRoZSANCj4+IGFkZHJlc3MgZnJvbSBzdGVwMTsNCj4+DQo+PiBTdGVwMzogV3JpdGUg UFJNIGluZm8gc3VjaCBhcyBoYW5kbGVyIG5hbWUgYW5kIGV4cG9ydCBSVkEgaW50byBDT0ZGIA0K Pj4gZXhwb3J0IHRhYmxlLg0KPj4NCj4+IENjOiBMaW1pbmcgR2FvIDxnYW9saW1pbmdAYnlvc29m dC5jb20uY24gDQo+PiA8bWFpbHRvOmdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbj4+DQo+Pg0KPj4g Q2M6IEJvYiBGZW5nIDxib2IuYy5mZW5nQGludGVsLmNvbSA8bWFpbHRvOmJvYi5jLmZlbmdAaW50 ZWwuY29tPj4NCj4+DQo+PiBDYzogWXV3ZWkgQ2hlbiA8eXV3ZWkuY2hlbkBpbnRlbC5jb20gPG1h aWx0bzp5dXdlaS5jaGVuQGludGVsLmNvbT4+DQo+Pg0KPj4gU2lnbmVkLW9mZi1ieTogTGl4aWEg SHVhbmcgPGxpc2EuaHVhbmdAaW50ZWwuY29tIA0KPj4gPG1haWx0bzpsaXNhLmh1YW5nQGludGVs LmNvbT4+DQo+Pg0KPj4gLS0tDQo+Pg0KPj4gQmFzZVRvb2xzL1NvdXJjZS9DL0dlbkZ3L0VsZjY0 Q29udmVydC5jwqDCoMKgwqDCoMKgIHwgMjU0IA0KPj4gKysrKysrKysrKysrKysrKystDQo+Pg0K Pj4gQmFzZVRvb2xzL1NvdXJjZS9DL0dlbkZ3L0VsZkNvbnZlcnQuY8KgwqDCoMKgwqDCoMKgwqAg fMKgIDEwICsNCj4+DQo+PiBCYXNlVG9vbHMvU291cmNlL0MvR2VuRncvRWxmQ29udmVydC5owqDC oMKgwqDCoMKgwqDCoCB8wqAgNDIgKystDQo+Pg0KPj4gQmFzZVRvb2xzL1NvdXJjZS9DL0dlbkZ3 L0dlbkZ3LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgMTEgKy0NCj4+DQo+PiAuLi4v Qy9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvUGVJbWFnZS5owqDCoMKgwqDCoCB8wqDCoCA3ICsN Cj4+DQo+PiA1IGZpbGVzIGNoYW5nZWQsIDMxOCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygt KQ0KPj4NCj4+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL0MvR2VuRncvRWxmNjRDb252 ZXJ0LmMNCj4+IGIvQmFzZVRvb2xzL1NvdXJjZS9DL0dlbkZ3L0VsZjY0Q29udmVydC5jDQo+Pg0K Pj4gaW5kZXggMGJiM2VhZDIyOC4uMDA3OTUwNzM1NiAxMDA2NDQNCj4+DQo+PiAtLS0gYS9CYXNl VG9vbHMvU291cmNlL0MvR2VuRncvRWxmNjRDb252ZXJ0LmMNCj4+DQo+PiArKysgYi9CYXNlVG9v bHMvU291cmNlL0MvR2VuRncvRWxmNjRDb252ZXJ0LmMNCj4+DQo+PiBAQCAtNTYsNiArNTYsMTgg QEAgV3JpdGVEZWJ1ZzY0ICgNCj4+DQo+PiAgIMKgwqAgVk9JRMKgwqAgKTsgK1NUQVRJQytWT0lE K1NjYW5TeW1ib2w2NCAoK8KgIFZPSUQrDQo+PiApOysrU1RBVElDK1ZPSUQrV3JpdGVFeHBvcnQ2 NCAoK8KgIFZPSUQrwqAgKTsrIFNUQVRJQyBWT0lEDQo+PiBTZXRJbWFnZVNpemU2NCAoQEAgLTEy Miw3ICsxMzQsNyBAQCBTVEFUSUMgVUlOVDMyIG1EYXRhT2Zmc2V0Ow0KPj4NCj4+IFNUQVRJQyBV SU5UMzIgbUhpaVJzcmNPZmZzZXQ7IFNUQVRJQyBVSU5UMzIgbVJlbG9jT2Zmc2V0OyBTVEFUSUMN Cj4+IFVJTlQzMiBtRGVidWdPZmZzZXQ7LStTVEFUSUMgVUlOVDMyIG1FeHBvcnRPZmZzZXQ7IC8v IC8vIFVzZWQgZm9yIA0KPj4gUklTQy1WIHJlbG9jYXRpb25zLiAvL0BAIC0xMzIsNiArMTQ0LDE0 IEBAIFNUQVRJQyBFbGY2NF9IYWxmIA0KPj4gbVJpc2NWUGFzczFTeW1TZWNJbmRleCA9IDA7DQo+ Pg0KPj4gU1RBVElDIElOVDMywqDCoMKgwqDCoMKgIG1SaXNjVlBhc3MxT2Zmc2V0OyBTVEFUSUMg SU5UMzIgDQo+PiBtUmlzY1ZQYXNzMUdvdEZpeHVwOyArLy8rLy8gVXNlZCBmb3IgRXhwb3J0IHNl Y3Rpb24uKy8vK1NUQVRJQw0KPj4gVUlOVDMywqDCoMKgwqDCoCBtRXhwb3J0U2l6ZTsrU1RBVElD IFVJTlQzMiANCj4+IG1FeHBvcnRSVkFbUFJNX01PRFVMRV9FWFBPUlRfU1lNQk9MX05VTV07K1NU QVRJQyBVSU5UMzIgDQo+PiBtRXhwb3J0U3ltTnVtOytTVEFUSUMgQ0hBUjggDQo+PiBtRXhwb3J0 U3ltTmFtZVtQUk1fTU9EVUxFX0VYUE9SVF9TWU1CT0xfTlVNXVtQUk1fSEFORExFUl9OQU1FX01B WElNVU0NCj4+IF8gTEVOR1RIXTsrIC8vIC8vIEluaXRpYWxpemF0aW9uIEZ1bmN0aW9uIC8vQEAg LTIwMCw2ICsyMjAsMTAgQEANCj4+IEluaXRpYWxpemVFbGY2NCAoDQo+Pg0KPj4gICDCoMKgIEVs ZkZ1bmN0aW9ucy0+U2V0SW1hZ2VTaXplID0gU2V0SW1hZ2VTaXplNjQ7DQo+PiBFbGZGdW5jdGlv bnMtPkNsZWFuVXAgPSBDbGVhblVwNjQ7ICvCoCBpZiAobUV4cG9ydEZsYWcpIHsrwqDCoMKgIA0K Pj4gRWxmRnVuY3Rpb25zLT5FbGZGdW5jdGlvbnMtPlNjYW5TeW1ib2wgPQ0KPj4gU2NhblN5bWJv bDY0OyvCoMKgwqAgRWxmRnVuY3Rpb25zLT5Xcml0ZUV4cG9ydCA9IFdyaXRlRXhwb3J0NjQ7K8Kg IH0gDQo+PiByZXR1cm4gVFJVRTsgfSBAQCAtMjYzLDYgKzI4NywxNyBAQCBJc0hpaVJzcmNTaGRy ICgNCj4+DQo+PiAgIMKgwqAgcmV0dXJuIChCT09MRUFOKSAoc3RyY21wKChDSEFSOCopbUVoZHIg KyBOYW1lZHItPnNoX29mZnNldCArDQo+PiBTaGRyLT5zaF9uYW1lLCBFTEZfSElJX1NFQ1RJT05f TkFNRSkgPT0gMCk7IH0NCj4+ICtTVEFUSUMrQk9PTEVBTitJc1N5bWJvbFNoZHIgKCvCoCBFbGZf U2hkciAqU2hkcivCoCApK3srwqAgRWxmX1NoZHINCj4+ICpOYW1laGRyID0gR2V0U2hkckJ5SW5k ZXgobUVoZHItPmVfc2hzdHJuZHgpOysrwqAgcmV0dXJuIChCT09MRUFOKSANCj4+IChzdHJjbXAo KENIQVI4KiltRWhkciArIE5hbWVoZHItPnNoX29mZnNldCArIFNoZHItPnNoX25hbWUsDQo+PiBF TEZfU1lNQk9MX1NFQ1RJT05fTkFNRSkgPT0gMCk7K30rIFNUQVRJQyBCT09MRUFOIElzRGF0YVNo ZHIgKEBADQo+PiAtMzM1LDYNCj4+ICszNzAsMzggQEAgR2V0U3ltTmFtZSAoDQo+Pg0KPj4gICDC oMKgIHJldHVybiBTdHJ0YWJDb250ZW50cyArIFN5bS0+c3RfbmFtZTsgfSArLy8rLy8gR2V0IFBy bSBIYW5kbGVyIA0KPj4gbnVtYmVyIGFuZCBuYW1lKy8vK1NUQVRJQytWT0lEK0ZpbmRQcm1IYW5k bGVyICgrwqAgVUlOVDY0IE9mZnNldCvCoCANCj4+ICkreysgUFJNX01PRFVMRV9FWFBPUlRfREVT Q1JJUFRPUl9TVFJVQ1RfSEVBREVSICpQcm1FeHBvcnQ7K8KgIFVJTlQzMiANCj4+IE5hbWVPZmZz ZXQ7K8KgIFVJTlQzMsKgwqAgSGFuZGxlck51bTsrIFVJTlQzMsKgwqAgSW5kZXg7K8KgIFVJTlQ4 IA0KPj4gU3ltTmFtZVtQUk1fSEFORExFUl9OQU1FX01BWElNVU1fTEVOR1RIXTsrK8KgIFBybUV4 cG9ydCA9IA0KPj4gKFBSTV9NT0RVTEVfRVhQT1JUX0RFU0NSSVBUT1JfU1RSVUNUX0hFQURFUiop KG1Db2ZmRmlsZSArIE9mZnNldCk7KyANCj4+IE5hbWVPZmZzZXQgPSBzaXplb2YoUFJNX01PRFVM RV9FWFBPUlRfREVTQ1JJUFRPUl9TVFJVQ1RfSEVBREVSKSArIA0KPj4gc2l6ZW9mKEVGSV9HVUlE KTsrK8KgIGZvciAoSGFuZGxlck51bSA9IDA7IEhhbmRsZXJOdW0gPA0KPj4gUHJtRXhwb3J0LT5O dW1iZXJQcm1IYW5kbGVyczsgSGFuZGxlck51bSsrKSB7K8KgwqDCoCBmb3IgKEluZGV4ID0gMDsg DQo+PiBQcm1FeHBvcnQtPkluZGV4DQo+PiA8IFBSTV9IQU5ETEVSX05BTUVfTUFYSU1VTV9MRU5H VEg7IEluZGV4KyspIHsrwqDCoMKgwqDCoCBTeW1OYW1lW0luZGV4XSA9DQo+PiAqKChVSU5UOCAq KVBybUV4cG9ydCArIE5hbWVPZmZzZXQgKyBJbmRleCk7K8KgwqDCoMKgwqAgaWYgKFN5bU5hbWVb SW5kZXhdIA0KPj4gPT0NCj4+IDApIHsrwqDCoMKgwqDCoMKgwqAgYnJlYWs7KyB9K8KgwqDCoCB9 KysNCj4+IHN0cmNweShtRXhwb3J0U3ltTmFtZVttRXhwb3J0U3ltTnVtXSwNCj4+IChDSEFSOCop U3ltTmFtZSk7K8KgwqDCoCBOYW1lT2Zmc2V0ICs9IFBSTV9IQU5ETEVSX05BTUVfTUFYSU1VTV9M RU5HVEggKyANCj4+IHNpemVvZihFRklfR1VJRCk7K8KgwqDCoCBtRXhwb3J0U3ltTnVtICsrOyvC oCB9K30rIC8vIC8vIEZpbmQgdGhlIEVMRiANCj4+IHNlY3Rpb24gaG9zdGluZyB0aGUgR09UIGZy b20gYW4gRUxGIFJ2YSAvL8KgwqAgb2YgYSBzaW5nbGUgR09UIGVudHJ5Lg0KPj4gTm9ybWFsbHks IEdPVCBpcyBwbGFjZWQgaW5AQCAtNzE3LDYgKzc4NCw3IEBAIFNjYW5TZWN0aW9uczY0ICgNCj4+ DQo+PiAgIMKgwqAgVUlOVDMywqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgQ29mZkVudHJ5Ow0KPj4gVUlOVDMywqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgU2VjdGlvbkNvdW50OyBCT09MRUFOwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIA0KPj4gRm91bmRTZWN0aW9u OysNCj4+IFVJTlQzMsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIE9mZnNldDvCoMKgwqAgQ29mZkVudHJ5ID0gMDsgbUNvZmZPZmZzZXQgDQo+PiA9IDA7 QEAgLTc1MCw3ICs4MTgsNyBAQCBTY2FuU2VjdGlvbnM2NCAoDQo+Pg0KPj4gICDCoMKgwqDCoCBp ZiAoc2hkci0+c2hfYWRkcmFsaWduIDw9IG1Db2ZmQWxpZ25tZW50KSB7wqDCoMKgwqDCoMKgIGNv bnRpbnVlOw0KPj4gfS3CoMKgwqAgaWYgKElzVGV4dFNoZHIoc2hkcikgfHwgSXNEYXRhU2hkcihz aGRyKSB8fCANCj4+IElzSGlpUnNyY1NoZHIoc2hkcikpIHsrwqDCoMKgIGlmIChJc1RleHRTaGRy KHNoZHIpIHx8IElzRGF0YVNoZHIoc2hkcikgDQo+PiB8fCBJc0hpaVJzcmNTaGRyKHNoZHIpDQo+ PiB8fA0KPj4gSXNTeW1ib2xTaGRyKHNoZHIpKSB7wqDCoMKgwqDCoMKgIG1Db2ZmQWxpZ25tZW50 ID0gDQo+PiAoVUlOVDMyKXNoZHItPnNoX2FkZHJhbGlnbjvCoMKgwqDCoCB9wqDCoCB9QEAgLTg4 MCw2ICs5NDgsMTYgQEANCj4+IFNjYW5TZWN0aW9uczY0ICgNCj4+DQo+PiAgIMKgwqDCoMKgIFdh cm5pbmcgKE5VTEwsIDAsIDAsIE5VTEwsICJNdWx0aXBsZSBzZWN0aW9ucyBpbiAlcyBhcmUgbWVy Z2VkIA0KPj4gaW50byAxIGRhdGEgc2VjdGlvbi4gU291cmNlIGxldmVsIGRlYnVnIG1pZ2h0IG5v dCB3b3JrIGNvcnJlY3RseS4iLCANCj4+IG1JbkltYWdlTmFtZSk7wqDCoCB9ICvCoCAvLyvCoCAv L8KgIFRoZSBTeW1ib2wgc2VjdGlvbnMuK8KgIC8vK8KgIGlmDQo+PiAobUV4cG9ydEZsYWcpIHsr wqDCoMKgIG1FeHBvcnRPZmZzZXQgPSBtQ29mZk9mZnNldDsrwqDCoMKgIG1FeHBvcnRTaXplID0N Cj4+IHNpemVvZihFRklfSU1BR0VfRVhQT1JUX0RJUkVDVE9SWSkgKyBzdHJsZW4obUluSW1hZ2VO YW1lKSArIDE7KyANCj4+IG1Db2ZmT2Zmc2V0ICs9IG1FeHBvcnRTaXplOyvCoMKgwqAgbUNvZmZP ZmZzZXQgPSANCj4+IENvZmZBbGlnbihtQ29mZk9mZnNldCk7KyB9K8KgwqAgLy/CoMKgIC8vwqAg VGhlIEhJSSByZXNvdXJjZSBzZWN0aW9ucy7CoMKgIA0KPj4gLy9AQCAtOTYyLDcgKzEwNDAsMTEg QEANCj4+IFNjYW5TZWN0aW9uczY0ICgNCj4+DQo+PiAgIMKgwqDCoMKgIHwgRUZJX0lNQUdFX0ZJ TEVfTEFSR0VfQUREUkVTU19BV0FSRTsNCj4+IE50SGRyLT5QZTMyUGx1cy5PcHRpb25hbEhlYWRl ci5TaXplT2ZDb2RlID0gbURhdGFPZmZzZXQgLQ0KPj4gTnRIZHItPm1UZXh0T2Zmc2V0Oy0gUGUz MlBsdXMuT3B0aW9uYWxIZWFkZXIuU2l6ZU9mSW5pdGlhbGl6ZWREYXRhID0gDQo+PiBOdEhkci0+ bVJlbG9jT2Zmc2V0IC0NCj4+IG1EYXRhT2Zmc2V0OyvCoCBpZihtRXhwb3J0RmxhZykgeysNCj4+ IE50SGRyLT5QZTMyUGx1cy5PcHRpb25hbEhlYWRlci5TaXplT2ZJbml0aWFsaXplZERhdGEgPSBt UmVsb2NPZmZzZXQgLQ0KPj4gbUV4cG9ydE9mZnNldDsrwqAgfSBlbHNlIHsrDQo+PiBOdEhkci0+ UGUzMlBsdXMuT3B0aW9uYWxIZWFkZXIuU2l6ZU9mSW5pdGlhbGl6ZWREYXRhID0gbVJlbG9jT2Zm c2V0IC0NCj4+IG1EYXRhT2Zmc2V0OyvCoCB9DQo+PiBOdEhkci0+UGUzMlBsdXMuT3B0aW9uYWxI ZWFkZXIuU2l6ZU9mVW5pbml0aWFsaXplZERhdGEgPSAwOyANCj4+IE50SGRyLT5QZTMyUGx1cy5P cHRpb25hbEhlYWRlci5BZGRyZXNzT2ZFbnRyeVBvaW50ID0gQ29mZkVudHJ5OyBAQA0KPj4gLTk4 OSw4ICsxMDcxLDE3IEBAIFNjYW5TZWN0aW9uczY0ICgNCj4+DQo+PiAgIMKgwqDCoMKgIE50SGRy LT5QZTMyUGx1cy5GaWxlSGVhZGVyLk51bWJlck9mU2VjdGlvbnMtLTvCoMKgIH0gK8KgIC8vK8Kg IC8vIA0KPj4gSWYgZm91bmQgc3ltYm9sLCBhZGQgZWRhdGEgc2VjdGlvbiBiZXR3ZWVuIGRhdGEg YW5kIHJzcmMgc2VjdGlvbivCoCANCj4+IC8vKw0KPj4gaWYobUV4cG9ydEZsYWcpIHsrwqDCoMKg IE9mZnNldCA9IG1FeHBvcnRPZmZzZXQ7K8KgIH0gZWxzZSB7K8KgwqDCoCBPZmZzZXQgPSANCj4+ IG1IaWlSc3JjT2Zmc2V0OyvCoCB9K8KgwqAgaWYgKChtSGlpUnNyY09mZnNldCAtIG1EYXRhT2Zm c2V0KSA+IDApIHstIA0KPj4gQ3JlYXRlU2VjdGlvbkhlYWRlciAoIi5kYXRhIiwgbURhdGFPZmZz ZXQsIG1IaWlSc3JjT2Zmc2V0IC0gDQo+PiBtRGF0YU9mZnNldCwrwqDCoMKgIENyZWF0ZVNlY3Rp b25IZWFkZXIgKCIuZGF0YSIsIG1EYXRhT2Zmc2V0LCBPZmZzZXQgLSANCj4+IG1EYXRhT2Zmc2V0 LMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBFRklfSU1BR0VfU0NOX0NOVF9JTklUSUFMSVpFRF9E QVRBDQo+PiB8IEVGSV9JTUFHRV9TQ05fTUVNX1dSSVRFIHwgRUZJX0lNQUdFX1NDTl9NRU1fUkVB RCk7QEAgLTk5OSw2IA0KPj4gfCArMTA5MCwyMA0KPj4gQEAgU2NhblNlY3Rpb25zNjQgKA0KPj4N Cj4+ICAgwqDCoMKgwqAgTnRIZHItPlBlMzJQbHVzLkZpbGVIZWFkZXIuTnVtYmVyT2ZTZWN0aW9u cy0tO8KgwqAgfSArDQo+PiBpZihtRXhwb3J0RmxhZykgeyvCoMKgwqAgaWYgKChtSGlpUnNyY09m ZnNldCAtIG1FeHBvcnRPZmZzZXQpID4gMCkgeysgDQo+PiBDcmVhdGVTZWN0aW9uSGVhZGVyICgi LmVkYXRhIiwgbUV4cG9ydE9mZnNldCwgbUhpaVJzcmNPZmZzZXQgLSANCj4+IG1FeHBvcnRPZmZz ZXQsK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEVGSV9JTUFHRV9TQ05fQ05UX0lOSVRJQUxJ WkVEX0RBVEErIHwgDQo+PiBFRklfSU1BR0VfU0NOX01FTV9SRUFEKTsrDQo+PiBOdEhkci0+UGUz MlBsdXMuT3B0aW9uYWxIZWFkZXIuRGF0YURpcmVjdG9yeVtFRklfSU1BR0VfRElSRUNUT1JZX0VO VFINCj4+IE50SGRyLT5ZDQo+PiBOdEhkci0+X0VYUE9SVF0uU2l6ZQ0KPj4gPSBtSGlpUnNyY09m ZnNldCAtIG1FeHBvcnRPZmZzZXQ7Kw0KPj4gTnRIZHItPlBlMzJQbHVzLk9wdGlvbmFsSGVhZGVy LkRhdGFEaXJlY3RvcnlbRUZJX0lNQUdFX0RJUkVDVE9SWV9FTlRSDQo+PiBOdEhkci0+WQ0KPj4g TnRIZHItPl9FWFBPUlRdLlZpcnR1YWxBZGRyZXNzDQo+PiA9IG1FeHBvcnRPZmZzZXQ7KyBOdEhk ci0+UGUzMlBsdXMuRmlsZUhlYWRlci5OdW1iZXJPZlNlY3Rpb25zKys7K8KgwqDCoCANCj4+IH0g ZWxzZSB7K8KgwqDCoMKgwqAgLy8gRG9uJ3QgbWFrZSBhIHNlY3Rpb24gb2Ygc2l6ZSAwLisNCj4+ IE50SGRyLT5QZTMyUGx1cy5GaWxlSGVhZGVyLk51bWJlck9mU2VjdGlvbnMtLTsrwqDCoMKgIH0r wqAgfSvCoMKgIGlmDQo+PiAoKG1SZWxvY09mZnNldCAtIG1IaWlSc3JjT2Zmc2V0KSA+IDApIHvC oMKgwqDCoCBDcmVhdGVTZWN0aW9uSGVhZGVyIA0KPj4gKCIucnNyYyIsIG1IaWlSc3JjT2Zmc2V0 LCBtUmVsb2NPZmZzZXQgLSBtSGlpUnNyY09mZnNldCwgDQo+PiBFRklfSU1BR0VfU0NOX0NOVF9J TklUSUFMSVpFRF9EQVRBQEAgLTE3NTcsNCArMTg2MiwxNDUgQEAgQ2xlYW5VcDY0ICgNCj4+DQo+ PiAgIMKgwqAgfSB9ICtTVEFUSUMrVk9JRCtTY2FuU3ltYm9sNjQgKCvCoCBWT0lEK8KgICkreyvC oCBVSU5UMzIgc2hJbmRleDsrwqAgDQo+PiBVSU5UMzLCoMKgwqDCoMKgIFN5bUluZGV4OyvCoCBF bGZfU3ltwqDCoMKgwqAgKlN5bTsrwqAgVUlOVDY0IFN5bU51bTsrwqAgY29uc3QgDQo+PiBVSU5U OCAqU3ltTmFtZTsrK8KgIGZvciAoc2hJbmRleCA9IDA7IHNoSW5kZXggPA0KPj4gbUVoZHItPmVf c2hudW07IHNoSW5kZXgrKykgeyvCoMKgwqAgLy8rwqDCoMKgIC8vIERldGVybWluZSBpZiB0aGlz IGlzIGEgDQo+PiBtRWhkci0+c3ltYm9sDQo+PiBzZWN0aW9uLivCoMKgwqAgLy8rwqDCoMKgIEVs Zl9TaGRyICpzaGRyID0gR2V0U2hkckJ5SW5kZXgoc2hJbmRleCk7K8KgwqDCoCBpZg0KPj4gKCFJ c1N5bWJvbFNoZHIoc2hkcikpIHsrwqDCoMKgwqDCoCBjb250aW51ZTsrwqDCoMKgIH0rK8KgwqDC oCBVSU5UOMKgwqDCoCAqU3ltdGFiID0gDQo+PiAoVUlOVDgqKW1FaGRyICsgc2hkci0+c2hfb2Zm c2V0OyvCoMKgwqAgU3ltTnVtID0gKHNoZHItPnNoX3NpemUpIC8gDQo+PiAoc2hkci0+c2hfZW50 c2l6ZSk7KysgLy8rwqDCoMKgIC8vIEZpcnN0IEdldCBQcm1Nb2R1bGVFeHBvcnREZXNjcmlwdG9y KyANCj4+IC8vK8KgwqDCoCBmb3IgKFN5bUluZGV4ID0gMDsgU3ltSW5kZXggPCBTeW1OdW07IFN5 bUluZGV4KyspIHsrwqDCoMKgwqDCoCBTeW0gDQo+PiA9IChFbGZfU3ltICopKFN5bXRhYiArIFN5 bUluZGV4ICogc2hkci0+c2hfZW50c2l6ZSk7K8KgwqDCoMKgwqAgU3ltTmFtZSA9IA0KPj4gR2V0 U3ltTmFtZShTeW0pOyvCoMKgwqDCoMKgIGlmIChTeW1OYW1lID09IE5VTEwpIHsrwqDCoMKgwqDC oMKgwqDCoMKgIGNvbnRpbnVlOysgDQo+PiB9KysgaWYgKHN0cmNtcCgoQ0hBUjgqKVN5bU5hbWUs IFBSTV9NT0RVTEVfRVhQT1JUX0RFU0NSSVBUT1JfTkFNRSkNCj4+ID09IDApIHsrwqDCoMKgwqDC oMKgwqAgLy8rwqDCoMKgwqDCoMKgwqAgLy8gRmluZCBQcm1IYW5kbGVyIE51bWJlciBhbmQgTmFt ZSsgLy8rwqDCoMKgwqDCoMKgwqAgDQo+PiBGaW5kUHJtSGFuZGxlcihTeW0tPnN0X3ZhbHVlKTsr KyANCj4+IHN0cmNweShtRXhwb3J0U3ltTmFtZVttRXhwb3J0U3ltTnVtXSwgKENIQVI4KilTeW1O YW1lKTsrIA0KPj4gbUV4cG9ydFJWQVttRXhwb3J0U3ltTnVtXSA9IChVSU5UMzIpKFN5bS0+c3Rf dmFsdWUpOysgbUV4cG9ydFNpemUNCj4+ICs9IDIgKiBFRklfSU1BR0VfRVhQT1JUX0FERFJfU0la RSArIEVGSV9JTUFHRV9FWFBPUlRfT1JESU5BTF9TSVpFICsNCj4+IHN0cmxlbigoQ0hBUjggKilT eW1OYW1lKSArIDE7K8KgwqDCoMKgwqDCoMKgIG1FeHBvcnRTeW1OdW0gKys7KyBicmVhazsrwqDC oMKgwqDCoCANCj4+IH0rwqDCoMKgIH0rK8KgwqDCoCAvLyvCoMKgwqAgLy8gU2Vjb25kIEdldCBQ cm1IYW5kbGVyKyAvLyvCoMKgwqAgZm9yIChTeW1JbmRleCA9IA0KPj4gMDsgU3ltSW5kZXggPCBT eW1OdW07IFN5bUluZGV4KyspIHsrwqDCoMKgwqDCoCBVSU5UMzIgRXhwSW5kZXg7K8KgwqDCoMKg wqAgU3ltIA0KPj4gPSAoRWxmX1N5bSAqKShTeW10YWIgKyBTeW1JbmRleCAqDQo+PiBzaGRyLT5z aF9lbnRzaXplKTsrwqDCoMKgwqDCoCBTeW1OYW1lID0gR2V0U3ltTmFtZShTeW0pOyvCoMKgwqDC oMKgIGlmIChTeW1OYW1lIA0KPj4gc2hkci0+PT0NCj4+IE5VTEwpIHsrwqDCoMKgwqDCoMKgwqDC oMKgIGNvbnRpbnVlOyvCoMKgwqDCoMKgIH0rK8KgwqDCoMKgwqAgZm9yIChFeHBJbmRleCA9IDA7 IA0KPj4gRXhwSW5kZXggPCAobUV4cG9ydFN5bU51bSAtMSk7IEV4cEluZGV4KyspIHsrwqDCoMKg wqDCoMKgwqAgaWYgDQo+PiAoc3RyY21wKChDSEFSOCopU3ltTmFtZSwNCj4+IG1FeHBvcnRTeW1O YW1lW0V4cEluZGV4XSkgIT0gMCkgeyvCoMKgwqDCoMKgwqDCoMKgwqAgY29udGludWU7K8KgwqDC oMKgwqDCoMKgIH0rIA0KPj4gbUV4cG9ydFJWQVtFeHBJbmRleF0gPSAoVUlOVDMyKShTeW0tPnN0 X3ZhbHVlKTsrwqDCoMKgwqDCoMKgwqAgbUV4cG9ydFNpemUgDQo+PiArPQ0KPj4gMg0KPj4gKiBF RklfSU1BR0VfRVhQT1JUX0FERFJfU0laRSArIEVGSV9JTUFHRV9FWFBPUlRfT1JESU5BTF9TSVpF ICsNCj4+IHN0cmxlbigoQ0hBUjggKilTeW1OYW1lKSArIDE7K8KgwqDCoMKgwqAgfSvCoMKgwqAg fSsrwqDCoMKgIGJyZWFrOysNCj4+IH0rfSsrU1RBVElDK1ZPSUQrV3JpdGVFeHBvcnQ2NCAoK8Kg IFZPSUQrwqAgKSt7KyANCj4+IEVGSV9JTUFHRV9PUFRJT05BTF9IRUFERVJfVU5JT07CoMKgwqDC oCAqTnRIZHI7KyANCj4+IEVGSV9JTUFHRV9FWFBPUlRfRElSRUNUT1JZwqDCoMKgwqDCoMKgwqDC oMKgICpFeHBvcnREaXI7KyANCj4+IEVGSV9JTUFHRV9EQVRBX0RJUkVDVE9SWSAqRGF0YURpcjsr wqAgVUlOVDMyIEZpbGVOYW1lT2Zmc2V0OyvCoCBVSU5UMzLCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIA0KPj4gRnVuY09mZnNldDsrDQo+ PiBVSU5UMTbCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgwqDCoEluZGV4OysNCj4+IFVJTlQ4wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICpUZGF0YSA9IE5VTEw7KyvCoCBFeHBvcnRE aXIgPSANCj4+IChFRklfSU1BR0VfRVhQT1JUX0RJUkVDVE9SWSopKG1Db2ZmRmlsZSArIG1FeHBv cnRPZmZzZXQpOysNCj4+IEV4cG9ydERpci0+Q2hhcmFjdGVyaXN0aWNzID0gMDsrwqAgRXhwb3J0 RGlyLT5UaW1lRGF0ZVN0YW1wID0gMDsrIA0KPj4gRXhwb3J0RGlyLT5NYWpvclZlcnNpb24gPSAw OyvCoCBFeHBvcnREaXItPk1pbm9yVmVyc2lvbiA9MDsrIE5hbWUgPSANCj4+IEV4cG9ydERpci0+ MDsrDQo+PiBFeHBvcnREaXItPkV4cG9ydERpci0+TnVtYmVyT2ZGdW5jdGlvbnMgPSBtRXhwb3J0 U3ltTnVtOysNCj4+IEV4cG9ydERpci0+TnVtYmVyT2ZOYW1lcyA9IG1FeHBvcnRTeW1OdW07KyBF eHBvcnREaXItPkJhc2UgPQ0KPj4gRUZJX0lNQUdFX0VYUE9SVF9PUkRJTkFMX0JBU0U7K8KgIEV4 cG9ydERpci0+QWRkcmVzc09mRnVuY3Rpb25zID0gDQo+PiBtRXhwb3J0T2Zmc2V0ICsgc2l6ZW9m KEVGSV9JTUFHRV9FWFBPUlRfRElSRUNUT1JZKTsrDQo+PiBFeHBvcnREaXItPkFkZHJlc3NPZk5h bWVzID0gRXhwb3J0RGlyLT5BZGRyZXNzT2ZGdW5jdGlvbnMgKw0KPj4gRUZJX0lNQUdFX0VYUE9S VF9BRERSX1NJWkUgKiBtRXhwb3J0U3ltTnVtOysNCj4+IEV4cG9ydERpci0+QWRkcmVzc09mTmFt ZU9yZGluYWxzID0gRXhwb3J0RGlyLT5BZGRyZXNzT2ZOYW1lcyArDQo+PiBFRklfSU1BR0VfRVhQ T1JUX0FERFJfU0laRSAqIG1FeHBvcnRTeW1OdW07KyvCoCBGaWxlTmFtZU9mZnNldCA9DQo+PiBF eHBvcnREaXItPkFkZHJlc3NPZk5hbWVPcmRpbmFscyArIEVGSV9JTUFHRV9FWFBPUlRfT1JESU5B TF9TSVpFICoNCj4+IG1FeHBvcnRTeW1OdW07K8KgIEZ1bmNPZmZzZXQgPSBGaWxlTmFtZU9mZnNl dCArIHN0cmxlbihtSW5JbWFnZU5hbWUpICsgDQo+PiAxOysrwqAgLy8gV3JpdGUgSW5wdXQgaW1h Z2UgTmFtZSBSVkErwqAgVGRhdGEgPSBtQ29mZkZpbGUgKyAxMjsrDQo+PiAqKFVJTlQzMiAqKVRk YXRhID0gRmlsZU5hbWVPZmZzZXQ7KyvCoCAvLyBXcml0ZSBJbnB1dCBpbWFnZSBOYW1lKyANCj4+ IHN0cmNweSgoY2hhciAqKShtQ29mZkZpbGUgKyBGaWxlTmFtZU9mZnNldCksIG1JbkltYWdlTmFt ZSk7KyvCoCBmb3IgDQo+PiAoSW5kZXggPSAwOyBJbmRleCA8IG1FeHBvcnRTeW1OdW07IEluZGV4 KyspIHsrwqDCoMKgIC8vK8KgwqDCoCAvLyBXcml0ZSANCj4+IEV4cG9ydCBBZGRyZXNzIFRhYmxl KyAvLyvCoMKgwqAgVGRhdGEgPSBtQ29mZkZpbGUgKw0KPj4gRXhwb3J0RGlyLT5BZGRyZXNzT2ZG dW5jdGlvbnMgKyBJbmRleCAqIEVGSV9JTUFHRV9FWFBPUlRfQUREUl9TSVpFOyvCoMKgwqAgDQo+ PiBFeHBvcnREaXItPiooVUlOVDMyICopVGRhdGEgPQ0KPj4gbUV4cG9ydFJWQVtJbmRleF07KyvC oMKgwqAgLy8rwqDCoMKgIC8vIFdyaXRlIEV4cG9ydCBOYW1lIFBvaW50ZXIgVGFibGUrIA0KPj4g Ly8rwqDCoMKgIFRkYXRhID0gbUNvZmZGaWxlICsgRXhwb3J0RGlyLT5BZGRyZXNzT2ZOYW1lcyAr IEluZGV4ICogDQo+PiBFRklfSU1BR0VfRVhQT1JUX0FERFJfU0laRTsrICooVUlOVDMyICopVGRh dGEgPSBGdW5jT2Zmc2V0OysrwqDCoMKgIC8vKyANCj4+IC8vIFdyaXRlIEV4cG9ydCBPcmRpbmFs IHRhYmxlK8KgwqDCoCAvLyvCoMKgwqAgVGRhdGEgPSBtQ29mZkZpbGUgKw0KPj4gRXhwb3J0RGly LT5BZGRyZXNzT2ZOYW1lT3JkaW5hbHMgKyBJbmRleCAqDQo+PiBFRklfSU1BR0VfRVhQT1JUX09S RElOQUxfU0laRTsrwqDCoMKgICooVUlOVDE2ICopVGRhdGEgPSBJbmRleDsrK8KgwqDCoCAvLysg DQo+PiAvLyBXcml0ZSBFeHBvcnQgTmFtZSBUYWJsZSvCoMKgwqAgLy8rIHN0cmNweSgoY2hhciAq KShtQ29mZkZpbGUgKyANCj4+IEZ1bmNPZmZzZXQpLCBtRXhwb3J0U3ltTmFtZVtJbmRleF0pOyvC oMKgwqAgRnVuY09mZnNldCArPQ0KPj4gc3RybGVuKG1FeHBvcnRTeW1OYW1lW0luZGV4XSkgKyAx OyvCoCB9KyvCoCBOdEhkciA9IA0KPj4gKEVGSV9JTUFHRV9PUFRJT05BTF9IRUFERVJfVU5JT04g KikobUNvZmZGaWxlICsgbU50SGRyT2Zmc2V0KTsrIA0KPj4gRGF0YURpciA9IA0KPj4gJk50SGRy LT5QZTMyUGx1cy5PcHRpb25hbEhlYWRlci5EYXRhRGlyZWN0b3J5W0VGSV9JTUFHRV9ESVJFQ1RP UllfRU5UDQo+PiBSDQo+PiBZX0VYUE9SVF07Kw0KPj4gRGF0YURpci0+VmlydHVhbEFkZHJlc3Mg PSBtRXhwb3J0T2Zmc2V0OysgwqBEYXRhRGlyLT5TaXplID0NCj4+IG1FeHBvcnRTaXplOysrfSBk aWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9DL0dlbkZ3L0VsZkNvbnZlcnQuYw0KPj4gYi9C YXNlVG9vbHMvU291cmNlL0MvR2VuRncvRWxmQ29udmVydC5jDQo+Pg0KPj4gaW5kZXggN2RiODcy MTE2Ny4uNzk1Y2RiZDc0MyAxMDA2NDQNCj4+DQo+PiAtLS0gYS9CYXNlVG9vbHMvU291cmNlL0Mv R2VuRncvRWxmQ29udmVydC5jDQo+Pg0KPj4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9DL0dlbkZ3 L0VsZkNvbnZlcnQuYw0KPj4NCj4+IEBAIC0yMjMsNiArMjIzLDE2IEBAIENvbnZlcnRFbGYgKA0K Pj4NCj4+ICAgwqDCoCBWZXJib3NlTXNnICgiV3JpdGUgZGVidWcgaW5mby4iKTvCoMKgIEVsZkZ1 bmN0aW9ucy5Xcml0ZURlYnVnICgpOyANCj4+ICsgLy8rwqAgLy8gRm9yIFBSTSBEcml2ZXIgdG8g V3JpdGUgZXhwb3J0IGluZm8uK8KgIC8vK8KgIGlmIA0KPj4gKG1FeHBvcnRGbGFnKSB7K8KgwqDC oCBWZXJib3NlTXNnICgiU2NhbiBzeW1ib2wgaW5mby4iKTsrwqDCoMKgIA0KPj4gRWxmRnVuY3Rp b25zLlNjYW5TeW1ib2wgKCk7K8KgwqDCoCBWZXJib3NlTXNnICgiV3JpdGUgZXhwb3J0IGluZm8u Iik7KyANCj4+IEVsZkZ1bmN0aW9ucy5Xcml0ZUV4cG9ydCAoKTsrwqAgfSvCoMKgIC8vwqDCoCAv LyBNYWtlIHN1cmUgaW1hZ2Ugc2l6ZSBpcyANCj4+IGNvcnJlY3QgYmVmb3JlIHJldHVybmluZyB0 aGUgbmV3IGltYWdlLsKgwqAgLy9kaWZmIC0tZ2l0IA0KPj4gYS9CYXNlVG9vbHMvU291cmNlL0Mv R2VuRncvRWxmQ29udmVydC5oDQo+PiBiL0Jhc2VUb29scy9Tb3VyY2UvQy9HZW5Gdy9FbGZDb252 ZXJ0LmgNCj4+DQo+PiBpbmRleCA4MDFlOGRlNGEyLi43OTIwNzY1ZmJiIDEwMDY0NA0KPj4NCj4+ IC0tLSBhL0Jhc2VUb29scy9Tb3VyY2UvQy9HZW5Gdy9FbGZDb252ZXJ0LmgNCj4+DQo+PiArKysg Yi9CYXNlVG9vbHMvU291cmNlL0MvR2VuRncvRWxmQ29udmVydC5oDQo+Pg0KPj4gQEAgLTI0LDYg KzI0LDcgQEAgZXh0ZXJuIFVJTlQ4wqAgKm1Db2ZmRmlsZTvCoCBleHRlcm4gVUlOVDMyIA0KPj4g bVRhYmxlT2Zmc2V0OyBleHRlcm4gVUlOVDMyIG1PdXRJbWFnZVR5cGU7IGV4dGVybiBVSU5UMzIg DQo+PiBtRmlsZUJ1ZmZlclNpemU7K2V4dGVybiBCT09MRUFOIG1FeHBvcnRGbGFnOyDCoC8vIC8v IENvbW1vbiBFRkkgDQo+PiBzcGVjaWZpYyBkYXRhLkBAIC0zMSw2ICszMiw0MiBAQCBleHRlcm4g VUlOVDMyIG1GaWxlQnVmZmVyU2l6ZTsNCj4+DQo+PiAjZGVmaW5lIEVMRl9ISUlfU0VDVElPTl9O QU1FICIuaGlpIiAjZGVmaW5lIEVMRl9TVFJUQUJfU0VDVElPTl9OQU1FIA0KPj4gIi5zdHJ0YWIi ICNkZWZpbmUgTUFYX0NPRkZfQUxJR05NRU5UIDB4MTAwMDArI2RlZmluZSANCj4+IEVMRl9TWU1C T0xfU0VDVElPTl9OQU1FICIuc3ltdGFiIisrLy8rLy8gUGxhdGZvcm0gUnVudGltZSBNZWNoYW5p c20NCj4+IChQUk0pIHNwZWNpZmljIGRhdGEuKy8vKyNkZWZpbmUgUFJNX01PRFVMRV9FWFBPUlRf U1lNQk9MX05VTQ0KPj4gMTArI2RlZmluZSBQUk1fSEFORExFUl9OQU1FX01BWElNVU1fTEVOR1RI IDEyOCsrI2RlZmluZQ0KPj4gUFJNX01PRFVMRV9FWFBPUlRfREVTQ1JJUFRPUl9OQU1FDQo+PiAi UHJtTW9kdWxlRXhwb3J0RGVzY3JpcHRvciIrI2RlZmluZQ0KPj4gUFJNX01PRFVMRV9FWFBPUlRf REVTQ1JJUFRPUl9TSUdOQVRVUkXCoMKgwqAgU0lHTkFUVVJFXzY0ICgnUCcsICdSJywgDQo+PiAn TScsICdfJywgJ00nLCAnRScsICdEJywgJ1QnKSsjZGVmaW5lIFBSTV9NT0RVTEVfRVhQT1JUX1JF VklTSU9OIA0KPj4gMHgwKysvLysvLyBQbGF0Zm9ybSBSdW50aW1lIE1lY2hhbmlzbSAoUFJNKSBF eHBvcnQgRGVzY3JpcHRvciANCj4+IFN0cnVjdHVyZXMrLy8rI3ByYWdtYSBwYWNrKHB1c2gsIDEp Kyt0eXBlZGVmIHN0cnVjdCB7K8KgIEVGSV9HVUlEDQo+PiAgIMKgUHJtSGFuZGxlckd1aWQ7K8Kg IENIQVI4DQo+PiBQcm1IYW5kbGVyTmFtZVtQUk1fSEFORExFUl9OQU1FX01BWElNVU1fTEVOR1RI XTsrfQ0KPj4gUFJNX0hBTkRMRVJfRVhQT1JUX0RFU0NSSVBUT1JfU1RSVUNUOysrdHlwZWRlZiBz dHJ1Y3QgeysNCj4+IFVJTlQ2NMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFNpZ25hdHVyZTsrDQo+PiBVSU5UMTbCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBSZXZp c2lvbjsrDQo+PiBVSU5UMTbCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBOdW1iZXJQcm1IYW5kbGVyczsrwqAgRUZJX0dVSUQgDQo+ PiBQbGF0Zm9ybUd1aWQ7K8KgIEVGSV9HVUlEwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBNb2R1bGVHdWlkOyt9IA0KPj4gUFJNX01PRFVM RV9FWFBPUlRfREVTQ1JJUFRPUl9TVFJVQ1RfSEVBREVSOysrdHlwZWRlZiBzdHJ1Y3QgeysgDQo+ PiBQUk1fTU9EVUxFX0VYUE9SVF9ERVNDUklQVE9SX1NUUlVDVF9IRUFERVLCoCBIZWFkZXI7KyAN Cj4+IFBSTV9IQU5ETEVSX0VYUE9SVF9ERVNDUklQVE9SX1NUUlVDVA0KPj4gUHJtSGFuZGxlckV4 cG9ydERlc2NyaXB0b3JzWzFdOyt9DQo+PiBQUk1fTU9EVUxFX0VYUE9SVF9ERVNDUklQVE9SX1NU UlVDVDsrKyNwcmFnbWEgcGFjayhwb3ApwqAgLy8gLy8gRmlsdGVyIA0KPj4gVHlwZXNAQCAtMzgs NyArNzUsOCBAQCBleHRlcm4gVUlOVDMyIG1GaWxlQnVmZmVyU2l6ZTsNCj4+DQo+PiB0eXBlZGVm IGVudW0geyDCoMKgU0VDVElPTl9URVhULMKgwqAgU0VDVElPTl9ISUksLcKgIFNFQ1RJT05fREFU QSsgDQo+PiBTRUNUSU9OX0RBVEEsK8KgIFNFQ1RJT05fU1lNQk9MwqAgfSBTRUNUSU9OX0ZJTFRF Ul9UWVBFUzsgQEAgLTUwLDYgDQo+PiArODgsOCBAQCB0eXBlZGVmIHN0cnVjdCB7DQo+Pg0KPj4g ICDCoMKgIEJPT0xFQU4gKCpXcml0ZVNlY3Rpb25zKSAoU0VDVElPTl9GSUxURVJfVFlQRVPCoCBG aWx0ZXJUeXBlKTsgDQo+PiBWT0lEwqDCoMKgICgqV3JpdGVSZWxvY2F0aW9ucykgKCk7wqDCoCBW T0lEwqDCoMKgICgqV3JpdGVEZWJ1ZykgKCk7K8KgIFZPSUQNCj4+ICgqU2NhblN5bWJvbCkgKCk7 K8KgIFZPSUTCoMKgwqAgKCpXcml0ZUV4cG9ydCkgKCk7wqDCoCBWT0lEDQo+PiAoKlNldEltYWdl U2l6ZSkgKCk7wqDCoCBWT0lEwqDCoMKgICgqQ2xlYW5VcCkgKCk7IGRpZmYgLS1naXQgDQo+PiBh L0Jhc2VUb29scy9Tb3VyY2UvQy9HZW5Gdy9HZW5Gdy5jIGIvQmFzZVRvb2xzL1NvdXJjZS9DL0dl bkZ3L0dlbkZ3LmMNCj4+DQo+PiBpbmRleCA4Y2FiNzBiYTRkLi5jN2RlNWI4OWQ4IDEwMDY0NA0K Pj4NCj4+IC0tLSBhL0Jhc2VUb29scy9Tb3VyY2UvQy9HZW5Gdy9HZW5Gdy5jDQo+Pg0KPj4gKysr IGIvQmFzZVRvb2xzL1NvdXJjZS9DL0dlbkZ3L0dlbkZ3LmMNCj4+DQo+PiBAQCAtODcsNyArODcs NyBAQCBVSU5UMzIgbUltYWdlVGltZVN0YW1wID0gMDsNCj4+DQo+PiBVSU5UMzIgbUltYWdlU2l6 ZSA9IDA7IFVJTlQzMiBtT3V0SW1hZ2VUeXBlID0gRldfRFVNTVlfSU1BR0U7IEJPT0xFQU4gDQo+ PiBtSXNDb252ZXJ0WGlwID0gRkFMU0U7LStCT09MRUFOIG1FeHBvcnRGbGFnID0gRkFMU0U7wqAg U1RBVElDIA0KPj4gRUZJX1NUQVRVU0BAIC0xNDM2LDYgKzE0MzYsMTUgQEAgUmV0dXJuczoNCj4+ DQo+PiAgIMKgwqDCoMKgwqDCoCBjb250aW51ZTvCoMKgwqDCoCB9ICvCoMKgwqAgaWYgKHN0cmlj bXAgKGFyZ3ZbMF0sICItLVBSTSIpID09IDApIHsrwqDCoMKgwqDCoCANCj4+IGlmICghbUV4cG9y dEZsYWcpIHsrwqDCoMKgwqDCoMKgwqAgbUV4cG9ydEZsYWcgPSBUUlVFOyvCoMKgwqDCoMKgIH0r IGFyZ2MgLS07K8KgwqDCoMKgwqAgDQo+PiBhcmd2ICsrOyvCoMKgwqDCoMKgIGNvbnRpbnVlOyvC oMKgwqAgfSvCoMKgwqDCoCBpZiAoYXJndlswXVswXSA9PQ0KPj4gJy0nKSB7wqDCoMKgwqDCoMKg IEVycm9yIChOVUxMLCAwLCAxMDAwLCAiVW5rbm93biBvcHRpb24iLCBhcmd2WzBdKTsgZ290byAN Cj4+IEZpbmlzaDtkaWZmIC0tZ2l0IA0KPj4gYS9CYXNlVG9vbHMvU291cmNlL0MvSW5jbHVkZS9J bmR1c3RyeVN0YW5kYXJkL1BlSW1hZ2UuaA0KPj4gYi9CYXNlVG9vbHMvU291cmNlL0MvSW5jbHVk ZS9JbmR1c3RyeVN0YW5kYXJkL1BlSW1hZ2UuaA0KPj4NCj4+IGluZGV4IGYxN2I4ZWUxOWIuLjIx Yzk2OGU2NTAgMTAwNjQ0DQo+Pg0KPj4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9DL0luY2x1ZGUv SW5kdXN0cnlTdGFuZGFyZC9QZUltYWdlLmgNCj4+DQo+PiArKysgYi9CYXNlVG9vbHMvU291cmNl L0MvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1BlSW1hZ2UuaA0KPj4NCj4+IEBAIC01NzEsNiAr NTcxLDEzIEBAIHR5cGVkZWYgc3RydWN0IHsNCj4+DQo+PiAgIMKgwqAgVUlOVDMywqAgQWRkcmVz c09mTmFtZU9yZGluYWxzOyB9IEVGSV9JTUFHRV9FWFBPUlRfRElSRUNUT1JZOyANCj4+ICsvLysv LyBCYXNlZCBleHBvcnQgdHlwZXMuKy8vKyNkZWZpbmUgRUZJX0lNQUdFX0VYUE9SVF9PUkRJTkFM X0JBU0UNCj4+IDErI2RlZmluZSBFRklfSU1BR0VfRVhQT1JUX0FERFJfU0laRcKgwqDCoMKgwqDC oMKgIDQrI2RlZmluZQ0KPj4gRUZJX0lNQUdFX0VYUE9SVF9PUkRJTkFMX1NJWkXCoMKgwqDCoCAy KyAvLy8gLy8vIERMTCBzdXBwb3J0LiAvLy8gSW1wb3J0DQo+PiBGb3JtYXQtLQ0KPj4NCj4+IDIu MjYuMi53aW5kb3dzLjENCj4+DQo+PiANCg==