From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by mx.groups.io with SMTP id smtpd.web11.97184.1673328435624189261 for ; Mon, 09 Jan 2023 21:27:15 -0800 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=FOnzBN+N; spf=pass (domain: intel.com, ip: 192.55.52.115, mailfrom: michael.d.kinney@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1673328435; x=1704864435; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=QcehL+S84g0z9CJGRtxQ75YWmv4mGgH4yar7wJRyfUs=; b=FOnzBN+N5UZEOMnny7orkqCJrDTThYRQY0fyNXkPH4KJiRm2/DVqMcex SIro32BFBl2QQ54M2tZRnw1GBBpIWjReZtF2nP8UQuBOixpNbNku8JlsR R/jqRi5cQ90qcJJ7ZR88wi4Pc55Cym1DQOmYDzWRyy3gSHU/RFVEN+Kcc f/dFqCKeliP8Er+2b6DldhcCx46m5qP0r0ynhBQ6gaw6DYfjdtos/Vkad QwUiNm9bk38yqgi4Ch4JnIWCNomjjox4/f9HpI1J5ROl6LkVymjDVnCJh timxBFyzq90qQI6hMXnZvlZRkLiVBG/DGbICY4NOObBQTESQ9u54YW6VS Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10585"; a="323134794" X-IronPort-AV: E=Sophos;i="5.96,314,1665471600"; d="scan'208";a="323134794" Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Jan 2023 21:27:14 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10585"; a="780947860" X-IronPort-AV: E=Sophos;i="5.96,314,1665471600"; d="scan'208";a="780947860" Received: from fmsmsx603.amr.corp.intel.com ([10.18.126.83]) by orsmga004.jf.intel.com with ESMTP; 09 Jan 2023 21:27:14 -0800 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) 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.2507.16; Mon, 9 Jan 2023 21:27:13 -0800 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16 via Frontend Transport; Mon, 9 Jan 2023 21:27:13 -0800 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.169) 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.2507.16; Mon, 9 Jan 2023 21:27:12 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Zxy7KVuJuEEEA/H88KVmiS18BSOhTIFDzvy7lj5AAt4mYcaOUEDjUOqXD7Mo7HvXRb6TPh+IsQIISVFY4ZxCLqxokvz/MhrYLVyBL5goj7S7hjxpQaOJzdXjc71eBgonmU4e5VxP3zszqhnT1m7IVGwbM/M2VyT1uLaIDjtC5DDNbq399lJAEWK3v1aXKnf6mSVW3VQJ+p2GGG52dgbUAe0NlXgCcHn5E43l0W9KGM8bbPXhSPYYnsTfxZInnsTBg0CDCozO/XbJCzBHH2q9riSlybX7XoDMtI02yLD1T5SNVsjM7rzd1zy2zPhXMb9GgW4FxwbX0TPh5TI9Gr0Qlw== 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=QcehL+S84g0z9CJGRtxQ75YWmv4mGgH4yar7wJRyfUs=; b=Olgmfbjol4vIh6M+8Qg9G5k3g2endhzqNdSugin0VASeiuEVuID2uB6Rc7A9lUmi4Ej6SzkTebwgr19PTEBBNZA/n0urlKRTIe4LLD2pLGFyDs7iQbWLkuoumWrFhnsapWW8Q4nuErfGRv7vURVQoIwR0z7YUX+YWs6kmHchPK2vW+VhXpAq+frdS4RLSxW8ytqOk+tW/PheRbS4h+p54OoN1wwbAiQCPLg5ZhnHh2MHWIZS61ZLhN+AnV6mYXZ7aHVZNc1gAp0bN0r7Dp9AvJpLjhEQkpVKcPUMHe+8Z154461yk1Sg0aFLunCJNaYcCCJt7KrNrRYMV4818sAmig== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from CO1PR11MB4929.namprd11.prod.outlook.com (2603:10b6:303:6d::19) by BN9PR11MB5546.namprd11.prod.outlook.com (2603:10b6:408:103::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.18; Tue, 10 Jan 2023 05:27:09 +0000 Received: from CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::cbb4:be2:d9b1:8898]) by CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::cbb4:be2:d9b1:8898%9]) with mapi id 15.20.5986.018; Tue, 10 Jan 2023 05:27:09 +0000 From: "Michael D Kinney" To: "devel@edk2.groups.io" , "Wu, Jiaxin" , "Clark-williams, Zachary" , "Kinney, Michael D" CC: Zachary Clark-Williams , Maciej Rabeda , "Otcheretianski, Andrei" , "Kinney, Michael D" Subject: Re: [edk2-devel] [PATCH] NetworkPkg: Add WiFi profile sync protocol support Thread-Topic: [edk2-devel] [PATCH] NetworkPkg: Add WiFi profile sync protocol support Thread-Index: AQHZIjfKIktilTDqWUeWOBUQboiwOa6W+5MAgAAoOhA= Date: Tue, 10 Jan 2023 05:27:09 +0000 Message-ID: References: <20230107013110.7349-1-zachary.clark-williams@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CO1PR11MB4929:EE_|BN9PR11MB5546:EE_ x-ms-office365-filtering-correlation-id: 289d434b-1b86-4b11-8615-08daf2cb51d7 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 1XnHuaW+mqtRf4C1o3OSDSRtrfirbVI9HTfP4+geOj2iSPeXIfhqF/z+IBnYcezu1nVOf8FfD6JHyT/4PBqj58iswGDUIGMkYiLzZU1ofhr/YeLv9YoqArIivmtTeJ1oXYCtkLcQI8+XBJOaIRcrAzLvyV7lnN+SAB0ohaRdaUvnVE4x04c6xiJ3lG+rbLPsh2l78wxXVhor78y1OJ/slTrSahgHkjowiLAAgEITnvvt0W/QyTIs27GSTeI5SLg0CTqpDVbGrSgsBtOEZaCauYMRl2XDfgKmW0QVMEaugwwXv/AQkaRtWLh+25eCqGOCEhTDxcod/QUzNnxZboZPH9NS8LhUHzdGWIiodnoZKNOQMfRJeSNhvdGVonIAFvKSJPUN8lf9jWBxrrIf88jpdNrP9HTd5Oi2BZJ8oPmojhOjFgFx5jFvnPfRUeEzwz1R2jAKvBKtRj3ui85cr2PAjPyR/H/fFthWObepDCvEl6eMXaZ0BL/xE/FjO1QkkN9tKojHJgDQFzK17loKv3NUhgBXBOSBheG1lqCOdhXfIRopg46t0QL0SeCogyXRUVjDbrMTvd3cKANGvfEwqcHlFPk3FuztQGSdXdbj9ZaA7evH449awNSOH5MHOsZ3YZDHTAgqapwLUSQErzvOe+gWQ+ZNhZxBaidGWP44cyItkKkK/xpJNfJwcKByVmeLjMxf13VUX/j8fTXxV7vzR+KPib/L6Cw93DtCm6+FWCvVnhTC8ffCOpcOYEwVR79oqL9Cb6tY8nmC0WAI3zokqvMZlg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO1PR11MB4929.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(6029001)(376002)(366004)(396003)(136003)(39860400002)(346002)(451199015)(33656002)(2906002)(82960400001)(30864003)(8936002)(5660300002)(52536014)(41300700001)(83380400001)(122000001)(110136005)(54906003)(71200400001)(66946007)(7696005)(86362001)(66899015)(76116006)(38070700005)(66556008)(6506007)(53546011)(38100700002)(186003)(55016003)(19627235002)(966005)(66476007)(8676002)(4326008)(26005)(316002)(66446008)(64756008)(478600001)(9686003)(579004)(559001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Njd2Q0hNVWJnV3lUV2M3RVA1SXhYU2lOZ0l4L0dXTXZaR2psMndVdmRGenJ2?= =?utf-8?B?dG1RRk9STFUwelFzWHJEaTJ0d3FYZnd3U09GMUhQMjlkSFdTbDhMWnVVYUVr?= =?utf-8?B?SVpuREorelpXc2hta1I0QzBVN1R3b25IemlKajVXbWlVZXlLQjNicnE2MWYr?= =?utf-8?B?U0ZCOUVGRjBpelhvNkd4aDM2M1lldE5EZnhuSkw5VmFONTh3MExkUXR5aXhU?= =?utf-8?B?bTVLTjFvL2NMVVYzYUs0aEdrcTRHUVljcHh6MHZleDJGZVBaNWJlYk5GaGNx?= =?utf-8?B?T1Q2ZzdiTEk4ajFyNnpNa3B2a0I1Q1hGNWxIQllqZlh6N2RXbHFWVFkrdTVl?= =?utf-8?B?dytxRGZXWll3V2FtTWxxN29PUkdPWlVWcGRUZE9sR0JETkZpVFJXdnlOanBr?= =?utf-8?B?eTdTL2ZKZ0tJVUpMQXhmSGk3UWcxeS9GZEs0MU04eVZvdXJJd1dReEdmVkVn?= =?utf-8?B?KzJ5aTNGUHZORWJqNUxjeksrSFBaKzNpTjhST3VkSmI4d3h5VThvbzBOeUhG?= =?utf-8?B?LzVLZzB2UnVyQlh2YSt0Y2pWcW1UdlJkdlNjUWNHUFZmTWpWeVgxaXJVdHZC?= =?utf-8?B?S1h5czVGTEU5K0tXNEFLaGVEOVlDRnh2M2dIc2RYTndibnJuQ09lbjYyemdT?= =?utf-8?B?MEhNM2ZrTzZlMzFDdkhlMHErRE5HZW9xV0VtS0EwY1g5TEtWNjltUnBlNjhN?= =?utf-8?B?enNYOUNtZVRsNHNpK0pldUE3SVUzZlR5L000bkpiczBiRWNyR08xcFRkM2g3?= =?utf-8?B?UWNwL2p5Qk53V0dBR252cE1ST3REcjkxNHJGQ2ZESHNvdUdJYUpZUndOd2FF?= =?utf-8?B?TE9iVUl0QWVyQlBiTmc2RUNFQytiN24vcmhGbExwM1gxSmJ0T3BmSE9vNWZZ?= =?utf-8?B?U3RzejJldVNPTjZlWkNOVUtVeHBsZ2xEZVYweW12TkdwMjZBampzcVBoZ0ZS?= =?utf-8?B?M0prVkVCOU9TNlNJaXR0cUl3QnpadjJLbXpFbzRSeCtSV1k0NXNQRkJHOERw?= =?utf-8?B?QVNiVFR2clpYbHp1VGcrYWRjWjhMS1E0cFZaZkRYNmRLTzF5VjdTR2RDOWlk?= =?utf-8?B?WmZ1NVA2OWFaSVhnSnJRaC9nczAwNW1oRGNNWnByNjVpQUMxQlM3aFc5eG4r?= =?utf-8?B?UWo2Q21rQ3JzSW84WWhKR3lIM0c5OEpxRStFeTlXS01oU3VLNlBTTnBhWUVp?= =?utf-8?B?WngvNjlSNVR2OWxpU0R0T1RxUGlvaW5vZVp4djFqL2FjdVpvVjF1TWtrUHRw?= =?utf-8?B?MEg1Mk1wUVdweVZaY2xiVmREYitrZmRGT2tFVTRxQ3Z6eEdXRkNvMDNGRldJ?= =?utf-8?B?S3dINkc0bXdLclFVNWgxK0ZxeFNwbms5QmtSSGVCczlHQytVNHBNVkR4UWc3?= =?utf-8?B?NkcxQzZkRE1XVWVYRUFjZ05KcXVxbFhxSHhaVk1qOHdGdEd0dmpDWTk1bEJ4?= =?utf-8?B?cTYzaytJRThMS0F2cFI0TStRYkhHaDlCSWx4VWFaSjZEaHhmZSs2NWtKSzNa?= =?utf-8?B?MWc5eStFSjNzR0Vxd2x3TklrY05RaXZWek1KZEIraDZ5Q3VxZDJ2YWRnb0Vn?= =?utf-8?B?dUI1S0hHVkluc1k5a2J4TTgzanhuS2Z2QU8vY2g1S0IvREFsYXQyQXlDemxF?= =?utf-8?B?NEhUdjJrNkRUcVdsUHdjZ0thRGFiWVU1T09MV2UxTlI2cjBQeFh1c1NvOVpQ?= =?utf-8?B?K2IxamMxQ1pqeENiR0ttakFqbS91NHJ1NWlXcFJUSHRKWmlOcTY4emVCM01h?= =?utf-8?B?VHI3ZDJ3cEt2SzIraHNCOENDWGtwdGRTU2ZaS3h0SjZmbnB1S29hc2szT1B0?= =?utf-8?B?SjVxQ01Vekk0ME1KQzZsUnNFKzFVNUpwT2FiMERYTkhXNVpicm55VjAwWmJ5?= =?utf-8?B?YU0zZ0lDeXMyU0Z5Q25RVHp6bXBzQmZjc3ZHRVduT1I0S1k3UDRkak9jendH?= =?utf-8?B?dXBMeFBYTWlHZzVKUlhSVkM5L2U1d0NUMHVSeUtnSXRCZlEydWV3dW1yUTUr?= =?utf-8?B?Vm5yMStwTk51aUpHL3VwVHZaTko1MlUwRXdJKzlUOUlGZ2preUNrVGxYS2hs?= =?utf-8?B?TWNXbU11TUVCYm1ERE5WN1F6Mjl5SFpqSzUwZGpLRmJPMlVyMkdGank5ZFY3?= =?utf-8?B?UFZQby95Wi9YZkFVUDA3SndCaXBYZnlVS082Wmp6Z2VHRy81L2ZhTC91c0JY?= =?utf-8?B?WGc9PQ==?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CO1PR11MB4929.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 289d434b-1b86-4b11-8615-08daf2cb51d7 X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Jan 2023 05:27:09.1552 (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: lx5mZT8ce2XMe86ceayLS2CO8PwFFXybzdaxWys3Z4AUk3WYy6vlQy9D9JGo5GXbn4wJ0/i1/R7FfprYCRjliVBRjAr3qLwnhR/z0GmDQ2A= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN9PR11MB5546 Return-Path: michael.d.kinney@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 QWNrZWQtYnk6IE1pY2hhZWwgRCBLaW5uZXkgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0K DQpNaWtlDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogZGV2ZWxAZWRr Mi5ncm91cHMuaW8gPGRldmVsQGVkazIuZ3JvdXBzLmlvPiBPbiBCZWhhbGYgT2YgV3UsIEppYXhp bg0KPiBTZW50OiBNb25kYXksIEphbnVhcnkgOSwgMjAyMyA3OjAzIFBNDQo+IFRvOiBDbGFyay13 aWxsaWFtcywgWmFjaGFyeSA8emFjaGFyeS5jbGFyay13aWxsaWFtc0BpbnRlbC5jb20+OyBkZXZl bEBlZGsyLmdyb3Vwcy5pbw0KPiBDYzogWmFjaGFyeSBDbGFyay1XaWxsaWFtcyA8emNsYXJrdzEx MkBnbWFpbC5jb20+OyBNYWNpZWogUmFiZWRhIDxtYWNpZWoucmFiZWRhQGxpbnV4LmludGVsLmNv bT47IE90Y2hlcmV0aWFuc2tpLCBBbmRyZWkNCj4gPGFuZHJlaS5vdGNoZXJldGlhbnNraUBpbnRl bC5jb20+DQo+IFN1YmplY3Q6IFJlOiBbZWRrMi1kZXZlbF0gW1BBVENIXSBOZXR3b3JrUGtnOiBB ZGQgV2lGaSBwcm9maWxlIHN5bmMgcHJvdG9jb2wgc3VwcG9ydA0KPiANCj4gT25lIGNvbW1lbnQg YXMgYmVsb3csIE90aGVycyBnb29kIHRvIG1lLg0KPiANCj4gUmV2aWV3ZWQtYnk6IFd1IEppYXhp biA8amlheGluLnd1QGludGVsLmNvbT4NCj4gDQo+IA0KPiA+ICsgIEBwYXJhbVtpbiwgb3V0XSAg V2NtUHJvZmlsZSAgICAgICBXaUZpIENvbm5lY3Rpb24gTWFuYWdlciBwcm9maWxlDQo+ID4gc3Ry dWN0dXJlDQo+ID4gKyAgQHBhcmFtW2luLCBvdXRdICBNYWNBZGRyZXNzICAgICAgIE1BQyBhZGRy ZXNzIGZyb20gQU1UIHNhdmVkIHRvIE5pQw0KPiA+IE1BQyBhZGRyZXNzDQo+ID4gKw0KPiA+ICsg IEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgICBTdG9yZWQgV2lGaSBwcm9maWxlIGNv bnZlcnRlZCBhbmQgcmV0dXJuZWQNCj4gPiBzdWNjZWZ1bGx5DQo+ID4gKyAgQHJldHZhbCBFRklf VU5TVVBQT1JURUQgICAgICAgICAgIFByb2ZpbGUgcHJvdG9jb2wgc2hhcmluZyBub3Qgc3VwcG9y dGVkIG9yDQo+ID4gZW5hYmxlZA0KPiA+ICsgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAg ICAgICBObyBwcm9maWxlcyB0byByZXR1cm5lZA0KPiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAg ICAgICAgICAgICAgICBFcnJvciBPY2N1cnJlZA0KPiA+ICsqKi8NCj4gPiArdHlwZWRlZg0KPiA+ ICtFRklfU1RBVFVTDQo+ID4gKyhFRklBUEkgKldJRklfUFJPRklMRV9HRVQpKA0KPiA+ICsgIElO IE9VVCAgV0lGSV9NR1JfTkVUV09SS19QUk9GSUxFICAqUHJvZmlsZSwNCj4gPiArICBJTiBPVVQg IEVGSV84MDIxMV9NQUNfQUREUkVTUyAgICAgTWFjQWRkcmVzcw0KPiA+ICsgICk7DQo+IA0KPiBE b2VzIGl0IG1ha2Ugc2Vuc2UgcmVtb3ZlIHRoZSBPVVQgZGVjbGFyaW5nIHNpbmNlIHRoaXMgaXMg anVzdCB0byBnZXQgdGhlIGNvcnJlc3BvbmRpbmcgTWFjQWRkcmVzcyBQcm9maWxlPyBGb3IgT1VU LCB3ZSBleHBlY3QNCj4gdGhlcmUgd2lsbCBiZSBjaGFuZ2VkIHdoZW4gcmV0dXJuIGJ1dCBoZXJl IGl0J3Mgbm90Lg0KPiANCj4gVGhhbmtzLA0KPiBKaWF4aW4NCj4gDQo+ID4gLS0tLS1PcmlnaW5h bCBNZXNzYWdlLS0tLS0NCj4gPiBGcm9tOiBDbGFyay13aWxsaWFtcywgWmFjaGFyeSA8emFjaGFy eS5jbGFyay13aWxsaWFtc0BpbnRlbC5jb20+DQo+ID4gU2VudDogU2F0dXJkYXksIEphbnVhcnkg NywgMjAyMyA5OjMxIEFNDQo+ID4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+ID4gQ2M6IFph Y2hhcnkgQ2xhcmstV2lsbGlhbXMgPHpjbGFya3cxMTJAZ21haWwuY29tPjsgTWFjaWVqIFJhYmVk YQ0KPiA+IDxtYWNpZWoucmFiZWRhQGxpbnV4LmludGVsLmNvbT47IFd1LCBKaWF4aW4gPGppYXhp bi53dUBpbnRlbC5jb20+Ow0KPiA+IE90Y2hlcmV0aWFuc2tpLCBBbmRyZWkgPGFuZHJlaS5vdGNo ZXJldGlhbnNraUBpbnRlbC5jb20+OyBDbGFyay13aWxsaWFtcywNCj4gPiBaYWNoYXJ5IDx6YWNo YXJ5LmNsYXJrLXdpbGxpYW1zQGludGVsLmNvbT4NCj4gPiBTdWJqZWN0OiBbUEFUQ0hdIE5ldHdv cmtQa2c6IEFkZCBXaUZpIHByb2ZpbGUgc3luYyBwcm90b2NvbCBzdXBwb3J0DQo+ID4NCj4gPiBG cm9tOiBaYWNoYXJ5IENsYXJrLVdpbGxpYW1zIDx6Y2xhcmt3MTEyQGdtYWlsLmNvbT4NCj4gPg0K PiA+IFJFRjogaHR0cHM6Ly9idWd6aWxsYS50aWFub2NvcmUub3JnL3Nob3dfYnVnLmNnaT9pZD0z ODQ1DQo+ID4NCj4gPiBFbmFibGVzIEtWTSBhbmQgT25lIENsaWNrIFJlY292ZXJ5IFdMQU4gY2Fw YWJpbGl0eSB3aXRoIFdpRmkgUHJvZmlsZQ0KPiA+IFN5bmMgZmVhdHVyZSBhbmQgcHJvdG9jb2wu IEFkZGluZyBXaUZpUHJvZmlsZVN5bmNQcm90b2NvbCwgd2hpY2gNCj4gPiBzdXBwb3J0cyB0aGUg cHJvZmlsZXN5bmMgZHJpdmVyIG9wZXJhdGlvbnMgZm9yIHRyYW5zZmVycmluZyBXaUZpIHByb2Zp bGVzDQo+ID4gZnJvbSBBTVQgdG8gdGhlIFN1cHBsaWNhbnQuIFdpRmlDb25uZWN0aW9uTWFuYWdl ciB3aWxsIGNoZWNrIGZvciB0aGUNCj4gPiBXaWZpUHJvZmlsZVN5bmNQcm90b2NvbCBhbmQgaWYg Zm91bmQgd2lsbCBvcGVyYXRlIG9uIHRoZSBwcmVtaXNlIG9mIGENCj4gPiBPbmUgQ2xpY2sgUmVj b3ZlcnksIG9yIEtWTSBmbG93IHdpdGggYSBXaWZpIHByb2ZpbGUgcHJvdmlkZWQgYnkgQU1ULg0K PiA+DQo+ID4gQ2M6IE1hY2llaiBSYWJlZGEgPG1hY2llai5yYWJlZGFAbGludXguaW50ZWwuY29t Pg0KPiA+IENjOiBXdSBKaWF4aW4gPGppYXhpbi53dUBpbnRlbC5jb20+DQo+ID4gQ2M6IEFuZHJl aSBPdGNoZXJldGlhbnNraSA8YW5kcmVpLm90Y2hlcmV0aWFuc2tpQGludGVsLmNvbT4NCj4gPg0K PiA+IFNpZ25lZC1vZmYtYnk6IFphY2hhcnkgQ2xhcmstV2lsbGlhbXMgPHphY2hhcnkuY2xhcmst d2lsbGlhbXNAaW50ZWwuY29tPg0KPiA+IC0tLQ0KPiA+ICAuLi4vUHJvdG9jb2wvV2lGaVByb2Zp bGVTeW5jUHJvdG9jb2wuaCAgICAgICAgfCAgOTAgKysrKysrKw0KPiA+ICBOZXR3b3JrUGtnL05l dHdvcmtQa2cuZGVjICAgICAgICAgICAgICAgICAgICAgfCAgIDMgKw0KPiA+ICAuLi4vV2lmaUNv bm5lY3Rpb25NYW5hZ2VyRHhlLmluZiAgICAgICAgICAgICAgfCAgIDMgKy0NCj4gPiAgLi4uL1dp ZmlDb25uZWN0aW9uTWdyQ29uZmlnTlZEYXRhU3RydWN0LmggICAgIHwgICAyICstDQo+ID4gIC4u Li9XaWZpQ29ubmVjdGlvbk1nckRyaXZlci5jICAgICAgICAgICAgICAgICB8IDEyNSArKysrKyst LS0tDQo+ID4gIC4uLi9XaWZpQ29ubmVjdGlvbk1nckR4ZS5oICAgICAgICAgICAgICAgICAgICB8 ICAgNCArLQ0KPiA+ICAuLi4vV2lmaUNvbm5lY3Rpb25NZ3JJbXBsLmMgICAgICAgICAgICAgICAg ICAgfCAyMTkgKysrKysrKysrKysrKysrLS0tDQo+ID4gIC4uLi9XaWZpQ29ubmVjdGlvbk1nck1p c2MuYyAgICAgICAgICAgICAgICAgICB8ICAxMyArKw0KPiA+ICA4IGZpbGVzIGNoYW5nZWQsIDM4 NiBpbnNlcnRpb25zKCspLCA3MyBkZWxldGlvbnMoLSkNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0 DQo+ID4gTmV0d29ya1BrZy9JbmNsdWRlL1Byb3RvY29sL1dpRmlQcm9maWxlU3luY1Byb3RvY29s LmgNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9OZXR3b3JrUGtnL0luY2x1ZGUvUHJvdG9jb2wvV2lG aVByb2ZpbGVTeW5jUHJvdG9jb2wuaA0KPiA+IGIvTmV0d29ya1BrZy9JbmNsdWRlL1Byb3RvY29s L1dpRmlQcm9maWxlU3luY1Byb3RvY29sLmgNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ IGluZGV4IDAwMDAwMDAwMDAuLjkwNTIzZTMwZmENCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysr IGIvTmV0d29ya1BrZy9JbmNsdWRlL1Byb3RvY29sL1dpRmlQcm9maWxlU3luY1Byb3RvY29sLmgN Cj4gPiBAQCAtMCwwICsxLDkwIEBADQo+ID4gKy8qKiBAZmlsZQ0KPiA+ICsgIFdpRmkgcHJvZmls ZSBzeW5jIHByb3RvY29sLiBTdXBwb3J0cyBPbmUgQ2xpY2sgUmVjb3Zlcnkgb3IgS1ZNIE9TDQo+ ID4gcmVjb3ZlcnkNCj4gPiArICBib290IGZsb3cgb3ZlciBXaUZpLiBUaGlzIHByb3RvY29sIHdp bGwgaG9sZCB0aGUgV2lGaSBwcm9maWxlIHByb3ZpZGVkIGJ5DQo+ID4gQU1UDQo+ID4gKyAgaW4g aXRzIG9yaWdpbmFsIHN0cnVjdHVyZSwgdGhlbiBjb252ZXJ0IHRoZSBwcm9maWxlIHdoZW4gdGhl DQo+ID4gV2lmaUNvbm5lY3Rpb25NYW5hZ2VyDQo+ID4gKyAgaXMgYXR0ZW1wdGluZyBhIGNvbm5l Y3Rpb24gZHVyaW5nIGEgc3lzdGVtIHJlY292ZXJ5IHJlYm9vdCwgT0NSIG9yIEtWTS4NCj4gPiBU aGVzZQ0KPiA+ICsgIGNvbnZlcnN0aW9uIGFuZCBvcGVyYXRpb25zIGFyZSBmb3VuZCBpbiB0aGUg V2lmaVByb2ZpbGVTeW5jIGRyaXZlciBhbmQgaW4NCj4gPiArICB0aGUgbGluayBwcm92aWRlZCBi ZWxvdy4NCj4gPiArDQo+ID4gKyAgUHVsYmljIGxpbmtzIHRvIHNwZWZpY2lhdGlvbiBkb2N1bWVu dCBmb3IgS1ZNIGFuZCBPbmUgQ2xpY2sgUmVjb3ZlcnkNCj4gPiBmZWF0dXJlLg0KPiA+ICsNCj4g PiBodHRwczovL3NvZnR3YXJlLmludGVsLmNvbS9zaXRlcy9tYW5hZ2VhYmlsaXR5L0FNVF9JbXBs ZW1lbnRhdGlvbl9hbmRfDQo+ID4gUmVmZXJlbmNlX0d1aWRlL2RlZmF1bHQuaHRtP3R1cmw9V29y ZERvY3VtZW50cyUyRm9uZWNsaWNrcmVjb3ZlcnkuaA0KPiA+IHRtDQo+ID4gKw0KPiA+ICsgIENv cHlyaWdodCAoYykgMjAyMiwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQu PEJSPg0KPiA+ICsNCj4gPiArICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNl LVBhdGVudA0KPiA+ICsqKi8NCj4gPiArDQo+ID4gKyNpZm5kZWYgV0lGSV9QUk9GSUxFX1NZTkNf UFJPVE9DT0xfSF8NCj4gPiArI2RlZmluZSBXSUZJX1BST0ZJTEVfU1lOQ19QUk9UT0NPTF9IXw0K PiA+ICsNCj4gPiArI2luY2x1ZGUgPFdpZmlDb25uZWN0aW9uTWFuYWdlckR4ZS9XaWZpQ29ubmVj dGlvbk1nckNvbmZpZy5oPg0KPiA+ICsNCj4gPiArLy8NCj4gPiArLy8gIFdpRmkgUHJvZmlsZSBT eW5jIFByb3RvY29sIEdVSUQgdmFyaWFibGUuDQo+ID4gKy8vDQo+ID4gK2V4dGVybiBFRklfR1VJ RCAgZ0VmaVdpRmlQcm9maWxlU3luY1Byb3RvY29sR3VpZDsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ ICsgIFVzZWQgYnkgdGhlIFdpRmkgY29ubmVjdGlvbiBtYW5hZ2VyIHRvIGdldCB0aGUgV2lGaSBw cm9maWxlIHRoYXQgQU1UDQo+ID4gc2hhcmVkDQo+ID4gKyAgYW5kIHdhcyBzdG9yZWQgaW4gV2lG aSBwcm9maWxlIHByb3RvY29sLiBBbGlnbnMgdGhlIEFNVCBXaUZpIHByb2ZpbGUgZGF0YSB0bw0K PiA+ICsgIHRoZSBXaUZpIGNvbm5lY3Rpb24gbWFuYWdlciBwcm9maWxlIHN0cnVjdHVyZSBmbyBj b25uZWN0aW9uIHVzZS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luLCBvdXRdICBXY21Qcm9maWxl ICAgICAgIFdpRmkgQ29ubmVjdGlvbiBNYW5hZ2VyIHByb2ZpbGUNCj4gPiBzdHJ1Y3R1cmUNCj4g PiArICBAcGFyYW1baW4sIG91dF0gIE1hY0FkZHJlc3MgICAgICAgTUFDIGFkZHJlc3MgZnJvbSBB TVQgc2F2ZWQgdG8gTmlDDQo+ID4gTUFDIGFkZHJlc3MNCj4gPiArDQo+ID4gKyAgQHJldHZhbCBF RklfU1VDQ0VTUyAgICAgICAgICAgICAgIFN0b3JlZCBXaUZpIHByb2ZpbGUgY29udmVydGVkIGFu ZCByZXR1cm5lZA0KPiA+IHN1Y2NlZnVsbHkNCj4gPiArICBAcmV0dmFsIEVGSV9VTlNVUFBPUlRF RCAgICAgICAgICAgUHJvZmlsZSBwcm90b2NvbCBzaGFyaW5nIG5vdCBzdXBwb3J0ZWQgb3INCj4g PiBlbmFibGVkDQo+ID4gKyAgQHJldHZhbCBFRklfTk9UX0ZPVU5EICAgICAgICAgICAgIE5vIHBy b2ZpbGVzIHRvIHJldHVybmVkDQo+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICAgICAg ICAgIEVycm9yIE9jY3VycmVkDQo+ID4gKyoqLw0KPiA+ICt0eXBlZGVmDQo+ID4gK0VGSV9TVEFU VVMNCj4gPiArKEVGSUFQSSAqV0lGSV9QUk9GSUxFX0dFVCkoDQo+ID4gKyAgSU4gT1VUICBXSUZJ X01HUl9ORVRXT1JLX1BST0ZJTEUgICpQcm9maWxlLA0KPiA+ICsgIElOIE9VVCAgRUZJXzgwMjEx X01BQ19BRERSRVNTICAgICBNYWNBZGRyZXNzDQo+ID4gKyAgKTsNCj4gPiArDQo+ID4gKy8qKg0K PiA+ICsgIFNhdmVzIHRoZSBXaUZpIGNvbm5lY3Rpb24gc3RhdHVzIHJlY2lldmVkIGJ5IHRoZSBX aUZpQ29ubmVjdGlvbk1hbmFnZXINCj4gPiB3aGVuDQo+ID4gKyAgaW4gYSBLVk0gT1IgT25lIENs aWNrIFJlY292ZXJ5IFdMQU4gcmVjb3ZlcnkgZmxvdy4gSW5wdXQgYXMNCj4gPiArICBFRklfODAy MTFfQ09OTkVDVF9ORVRXT1JLX1JFU1VMVF9DT0RFIHRoZW4gY29udmVydGVkIGFuZA0KPiA+IHN0 b3JlZCBhcyBFRklfU1RBVFVTIHR5cGUuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gQ29ubmVj dGlvblN0YXR1cyAgICAgV2lGaSBjb25uZWN0aW9uIGF0dGVtcHQgcmVzdWx0cw0KPiA+ICsqKi8N Cj4gPiArdHlwZWRlZg0KPiA+ICtWT0lEDQo+ID4gKyhFRklBUEkgKldJRklfU0VUX0NPTk5FQ1Rf U1RBVEUpKA0KPiA+ICsgIElOICBFRklfODAyMTFfQ09OTkVDVF9ORVRXT1JLX1JFU1VMVF9DT0RF IENvbm5lY3Rpb25TdGF0dXMNCj4gPiArICApOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUmV0 cmlldmVzIHRoZSBzdG9yZWQgV2lGaSBjb25uZWN0aW9uIHN0YXR1cyB3aGVuIGluIGVpdGhlciBL Vk0gT1IgT25lDQo+ID4gQ2xpY2sNCj4gPiArICBSZWNvdmVyeSBXTEFOIHJlY292ZXJ5IGZsb3cu DQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgICBXaUZpIGNv bm5lY3Rpb24gY29tcGxldGVkIHN1Y2Nlc2Z1bGx5DQo+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAg ICAgICAgICAgICAgICAgIENvbm5lY3Rpb24gZmFpbHVyZSBvY2N1cnJlZA0KPiA+ICsqKi8NCj4g PiArdHlwZWRlZg0KPiA+ICtFRklfU1RBVFVTDQo+ID4gKyhFRklBUEkgKldJRklfR0VUX0NPTk5F Q1RfU1RBVEUpKA0KPiA+ICsgIFZPSUQNCj4gPiArICApOw0KPiA+ICsNCj4gPiArLy8NCj4gPiAr Ly8gIFdpRmkgUHJvZmlsZSBTeW5jIFByb3RvY29sIHN0cnVjdHVyZS4NCj4gPiArLy8NCj4gPiAr dHlwZWRlZiBzdHJ1Y3Qgew0KPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgUmV2aXNp b247DQo+ID4gKyAgV0lGSV9TRVRfQ09OTkVDVF9TVEFURSAgICBTZXRDb25uZWN0U3RhdGU7DQo+ ID4gKyAgV0lGSV9HRVRfQ09OTkVDVF9TVEFURSAgICBHZXRDb25uZWN0U3RhdGU7DQo+ID4gKyAg V0lGSV9QUk9GSUxFX0dFVCAgICAgICAgICBHZXRQcm9maWxlOw0KPiA+ICt9IEVES0lJX1dJRklf UFJPRklMRV9TWU5DX1BST1RPQ09MOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgV2lGaSBQcm9m aWxlIFByb3RvY29sIHJldmlzaW9uIG51bWJlci4NCj4gPiArDQo+ID4gKyAgUmV2aXNpb24gMTog ICBJbml0aWFsIHZlcnNpb24NCj4gPiArKiovDQo+ID4gKyNkZWZpbmUgRURLSUlfV0lGSV9QUk9G SUxFX1NZTkNfUFJPVE9DT0xfUkVWSVNJT04gIDENCj4gPiArDQo+ID4gKyNlbmRpZiAvLyAgV0lG SV9QUk9GSUxFX1NZTkNfUFJPVE9DT0xfSF8NCj4gPiBkaWZmIC0tZ2l0IGEvTmV0d29ya1BrZy9O ZXR3b3JrUGtnLmRlYyBiL05ldHdvcmtQa2cvTmV0d29ya1BrZy5kZWMNCj4gPiBpbmRleCA1ZTQz ZWJmOGM1Li41M2ZiMzRjNGEwIDEwMDY0NA0KPiA+IC0tLSBhL05ldHdvcmtQa2cvTmV0d29ya1Br Zy5kZWMNCj4gPiArKysgYi9OZXR3b3JrUGtnL05ldHdvcmtQa2cuZGVjDQo+ID4gQEAgLTkxLDYg KzkxLDkgQEANCj4gPiAgICAjIyBJbmNsdWRlL1Byb3RvY29sL0h0dHBDYWxsYmFjay5oDQo+ID4g ICAgZ0Vka2lpSHR0cENhbGxiYWNrUHJvdG9jb2xHdWlkICA9IHsweDYxMTExNGYxLCAweGEzN2Is IDB4NDQ2OCwgezB4YTQsIDB4MzYsDQo+ID4gMHg1YiwgMHhkZCwgMHhhMSwgMHg2YSwgMHhhMiwg MHg0MH19DQo+ID4NCj4gPiArICAjIyBJbmNsdWRlL1Byb3RvY29sL1dpRmlQcm9maWxlU3luY1By b3RvY29sLmgNCj4gPiArICBnRWZpV2lGaVByb2ZpbGVTeW5jUHJvdG9jb2xHdWlkID0gezB4Mzk5 YTJiOGEsIDB4YzI2NywgMHg0NGFhLCB7MHg5YSwNCj4gPiAweGI0LCAweDMwLCAweDU4LCAweDhj LCAweGQyLCAweDJkLCAweGNjfX0NCj4gPiArDQo+ID4gIFtQY2RzRml4ZWRBdEJ1aWxkXQ0KPiA+ ICAgICMjIFRoZSBtYXggYXR0ZW1wdCBudW1iZXIgd2lsbCBiZSBjcmVhdGVkIGJ5IGlTQ1NJIGRy aXZlci4NCj4gPiAgICAjIEBQcm9tcHQgTWF4IGF0dGVtcHQgbnVtYmVyLg0KPiA+IGRpZmYgLS1n aXQNCj4gPiBhL05ldHdvcmtQa2cvV2lmaUNvbm5lY3Rpb25NYW5hZ2VyRHhlL1dpZmlDb25uZWN0 aW9uTWFuYWdlckR4ZS5pbmYNCj4gPiBiL05ldHdvcmtQa2cvV2lmaUNvbm5lY3Rpb25NYW5hZ2Vy RHhlL1dpZmlDb25uZWN0aW9uTWFuYWdlckR4ZS5pbmYNCj4gPiBpbmRleCA0Mzk0YjZmNGJiLi43 ZTM2MDE2Y2Y4IDEwMDY0NA0KPiA+IC0tLQ0KPiA+IGEvTmV0d29ya1BrZy9XaWZpQ29ubmVjdGlv bk1hbmFnZXJEeGUvV2lmaUNvbm5lY3Rpb25NYW5hZ2VyRHhlLmluZg0KPiA+ICsrKw0KPiA+IGIv TmV0d29ya1BrZy9XaWZpQ29ubmVjdGlvbk1hbmFnZXJEeGUvV2lmaUNvbm5lY3Rpb25NYW5hZ2Vy RHhlLmluZg0KPiA+IEBAIC05LDcgKzksNyBAQA0KPiA+ICAjICAyKS4gV1BBMiBQZXJzb25hbCBO ZXR3b3JrDQo+ID4gICMgIDMpLiBFQVAgTmV0d29ya3MgKEVBUC1UTFMsIEVBUC1UVExTL01TQ0hB UHYyIGFuZCBQRUFQdjAvTVNDSEFQdjIpDQo+ID4gICMNCj4gPiAtIyAgQ29weXJpZ2h0IChjKSAy MDE5LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gKyMg IENvcHlyaWdodCAoYykgMjAxOSAtIDIwMjIsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRz IHJlc2VydmVkLjxCUj4NCj4gPiAgIw0KPiA+ICAjICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog QlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ICAjDQo+ID4gQEAgLTcxLDYgKzcxLDcgQEANCj4gPiAg ICBnRWZpQWRhcHRlckluZm9ybWF0aW9uUHJvdG9jb2xHdWlkICAgICAgICAgICAgIyMgU09NRVRJ TUVTX0NPTlNVTUVTDQo+ID4gICAgZ0VmaVN1cHBsaWNhbnRQcm90b2NvbEd1aWQgICAgICAgICAg ICAgICAgICAgICMjIFNPTUVUSU1FU19DT05TVU1FUw0KPiA+ICAgIGdFZmlFYXBDb25maWd1cmF0 aW9uUHJvdG9jb2xHdWlkICAgICAgICAgICAgICAjIyBTT01FVElNRVNfQ09OU1VNRVMNCj4gPiAr ICBnRWZpV2lGaVByb2ZpbGVTeW5jUHJvdG9jb2xHdWlkICAgICAgICAgICAgICAgIyMgU09NRVRJ TUVTX0NPTlNVTUVTDQo+ID4NCj4gPiAgW0d1aWRzXQ0KPiA+ICAgIGdXaWZpQ29uZmlnR3VpZCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIyBQUk9EVUNFUyAgIyMgR1VJRA0KPiA+IGRp ZmYgLS1naXQNCj4gPiBhL05ldHdvcmtQa2cvV2lmaUNvbm5lY3Rpb25NYW5hZ2VyRHhlL1dpZmlD b25uZWN0aW9uTWdyQ29uZmlnTlZEYQ0KPiA+IHRhU3RydWN0LmgNCj4gPiBiL05ldHdvcmtQa2cv V2lmaUNvbm5lY3Rpb25NYW5hZ2VyRHhlL1dpZmlDb25uZWN0aW9uTWdyQ29uZmlnTlZEYQ0KPiA+ IHRhU3RydWN0LmgNCj4gPiBpbmRleCBiNTUxOGE3NGQ4Li5kY2M0YmY3ZTI3IDEwMDY0NA0KPiA+ IC0tLQ0KPiA+IGEvTmV0d29ya1BrZy9XaWZpQ29ubmVjdGlvbk1hbmFnZXJEeGUvV2lmaUNvbm5l Y3Rpb25NZ3JDb25maWdOVkRhDQo+ID4gdGFTdHJ1Y3QuaA0KPiA+ICsrKw0KPiA+IGIvTmV0d29y a1BrZy9XaWZpQ29ubmVjdGlvbk1hbmFnZXJEeGUvV2lmaUNvbm5lY3Rpb25NZ3JDb25maWdOVkRh DQo+ID4gdGFTdHJ1Y3QuaA0KPiA+IEBAIC0yNSw3ICsyNSw3IEBADQo+ID4NCj4gPiAgI2RlZmlu ZSBQQVNTV09SRF9NSU5fTEVOICAgICAgIDgNCj4gPiAgI2RlZmluZSBQQVNTV09SRF9NQVhfTEVO ICAgICAgIDYzDQo+ID4gLSNkZWZpbmUgUEFTU1dPUkRfU1RPUkFHRV9TSVpFICA2NA0KPiA+ICsj ZGVmaW5lIFBBU1NXT1JEX1NUT1JBR0VfU0laRSAgNjUNCj4gPg0KPiA+ICAjZGVmaW5lIEVBUF9J REVOVElUWV9MRU4gICA2Mw0KPiA+ICAjZGVmaW5lIEVBUF9JREVOVElUWV9TSVpFICA2NA0KPiA+ IGRpZmYgLS1naXQNCj4gPiBhL05ldHdvcmtQa2cvV2lmaUNvbm5lY3Rpb25NYW5hZ2VyRHhlL1dp ZmlDb25uZWN0aW9uTWdyRHJpdmVyLmMNCj4gPiBiL05ldHdvcmtQa2cvV2lmaUNvbm5lY3Rpb25N YW5hZ2VyRHhlL1dpZmlDb25uZWN0aW9uTWdyRHJpdmVyLmMNCj4gPiBpbmRleCA2N2EwMWNhMDU4 Li4wYWY1NWRiNTk5IDEwMDY0NA0KPiA+IC0tLSBhL05ldHdvcmtQa2cvV2lmaUNvbm5lY3Rpb25N YW5hZ2VyRHhlL1dpZmlDb25uZWN0aW9uTWdyRHJpdmVyLmMNCj4gPiArKysgYi9OZXR3b3JrUGtn L1dpZmlDb25uZWN0aW9uTWFuYWdlckR4ZS9XaWZpQ29ubmVjdGlvbk1nckRyaXZlci5jDQo+ID4g QEAgLTEsNyArMSw3IEBADQo+ID4gIC8qKiBAZmlsZQ0KPiA+ICAgIFRoZSBkcml2ZXIgYmluZGlu ZyBwcm90b2NvbCBmb3IgdGhlIFdpRmkgQ29ubmVjdGlvbiBNYW5hZ2VyLg0KPiA+DQo+ID4gLSAg Q29weXJpZ2h0IChjKSAyMDE5LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZl ZC48QlI+DQo+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDE5IC0gMjAyMiwgSW50ZWwgQ29ycG9yYXRp b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+DQo+ID4gICAgU1BEWC1MaWNlbnNlLUlk ZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPg0KPiA+IEBAIC0zOSw2ICszOSwxMSBA QCBFRklfR1VJRCAgbVdpZmlDb25maWdOZXR3b3JrTGlzdFJlZnJlc2hHdWlkID0NCj4gPiBXSUZJ X0NPTkZJR19ORVRXT1JLX0xJU1RfUkVGUkVTSF9HDQo+ID4gIEVGSV9HVUlEICBtV2lmaUNvbmZp Z0Nvbm5lY3RGb3JtUmVmcmVzaEd1aWQgPQ0KPiA+IFdJRklfQ09ORklHX0NPTk5FQ1RfRk9STV9S RUZSRVNIX0dVSUQ7DQo+ID4gIEVGSV9HVUlEICBtV2lmaUNvbmZpZ01haW5Gb3JtUmVmcmVzaEd1 aWQgICAgPQ0KPiA+IFdJRklfQ09ORklHX01BSU5fRk9STV9SRUZSRVNIX0dVSUQ7DQo+ID4NCj4g PiArLy8NCj4gPiArLy8gV2lmaSBjb25uZWN0aW9uIGF0dGVtcHQgY291bnRlciBmb3IgcmV0cmll cw0KPiA+ICsvLw0KPiA+ICtleHRlcm4gVUlOVDggIG1XaWZpQ29ubmVjdGlvbkNvdW50Ow0KPiA+ ICsNCj4gPiAgLyoqDQo+ID4gICAgVGVzdHMgdG8gc2VlIGlmIHRoaXMgZHJpdmVyIHN1cHBvcnRz IGEgZ2l2ZW4gY29udHJvbGxlci4gSWYgYSBjaGlsZCBkZXZpY2UgaXMNCj4gPiBwcm92aWRlZCwN Cj4gPiAgICBpdCBmdXJ0aGVyIHRlc3RzIHRvIHNlZSBpZiB0aGlzIGRyaXZlciBzdXBwb3J0cyBj cmVhdGluZyBhIGhhbmRsZSBmb3IgdGhlDQo+ID4gc3BlY2lmaWVkIGNoaWxkIGRldmljZS4NCj4g PiBAQCAtMTY3LDggKzE3MiwxMCBAQCBXaWZpTWdyRHhlRHJpdmVyQmluZGluZ1N0YXJ0ICgNCj4g PiAgICBFRklfV0lSRUxFU1NfTUFDX0NPTk5FQ1RJT05fSUlfUFJPVE9DT0wgICpXbXA7DQo+ID4g ICAgRUZJX1NVUFBMSUNBTlRfUFJPVE9DT0wgICAgICAgICAgICAgICAgICAqU3VwcGxpY2FudDsN Cj4gPiAgICBFRklfRUFQX0NPTkZJR1VSQVRJT05fUFJPVE9DT0wgICAgICAgICAgICpFYXBDb25m aWc7DQo+ID4gKyAgRURLSUlfV0lGSV9QUk9GSUxFX1NZTkNfUFJPVE9DT0wgICAgICAgICAqV2lG aVByb2ZpbGVTeW5jUHJvdG9jb2w7DQo+ID4NCj4gPiAtICBOaWMgPSBOVUxMOw0KPiA+ICsgIG1X aWZpQ29ubmVjdGlvbkNvdW50ID0gMDsNCj4gPiArICBOaWMgICAgICAgICAgICAgICAgICA9IE5V TEw7DQo+ID4NCj4gPiAgICAvLw0KPiA+ICAgIC8vIE9wZW4gUHJvdG9jb2xzDQo+ID4gQEAgLTIz Niw0NyArMjQzLDcyIEBAIFdpZmlNZ3JEeGVEcml2ZXJCaW5kaW5nU3RhcnQgKA0KPiA+ICAgIElu aXRpYWxpemVMaXN0SGVhZCAoJk5pYy0+UHJvZmlsZUxpc3QpOw0KPiA+DQo+ID4gICAgLy8NCj4g PiAtICAvLyBSZWNvcmQgdGhlIE1BQyBhZGRyZXNzIG9mIHRoZSBpbmNvbWluZyBOSUMuDQo+ID4g KyAgLy8gV2lGaSBwcm9maWxlIHN5bmMgcHJvdG9jb2wgaW5zdGFsbGF0aW9uIGNoZWNrIGZvciBP UyByZWNvdmVyeSBmbG93Lg0KPiA+ICAgIC8vDQo+ID4gLSAgU3RhdHVzID0gTmV0TGliR2V0TWFj QWRkcmVzcyAoDQo+ID4gLSAgICAgICAgICAgICBDb250cm9sbGVySGFuZGxlLA0KPiA+IC0gICAg ICAgICAgICAgKEVGSV9NQUNfQUREUkVTUyAqKSZOaWMtPk1hY0FkZHJlc3MsDQo+ID4gLSAgICAg ICAgICAgICAmQWRkcmVzc1NpemUNCj4gPiAtICAgICAgICAgICAgICk7DQo+ID4gLSAgaWYgKEVG SV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+IC0gICAgZ290byBFUlJPUjI7DQo+ID4gLSAgfQ0KPiA+ IC0NCj4gPiAtICAvLw0KPiA+IC0gIC8vIENyZWF0ZSBhbmQgc3RhcnQgdGhlIHRpbWVyIGZvciB0 aGUgc3RhdHVzIGNoZWNrDQo+ID4gLSAgLy8NCj4gPiAtICBTdGF0dXMgPSBnQlMtPkNyZWF0ZUV2 ZW50ICgNCj4gPiAtICAgICAgICAgICAgICAgICAgRVZUX05PVElGWV9TSUdOQUwgfCBFVlRfVElN RVIsDQo+ID4gLSAgICAgICAgICAgICAgICAgIFRQTF9DQUxMQkFDSywNCj4gPiAtICAgICAgICAg ICAgICAgICAgV2lmaU1nck9uVGltZXJUaWNrLA0KPiA+IC0gICAgICAgICAgICAgICAgICBOaWMs DQo+ID4gLSAgICAgICAgICAgICAgICAgICZOaWMtPlRpY2tUaW1lcg0KPiA+ICsgIFN0YXR1cyA9 IGdCUy0+TG9jYXRlUHJvdG9jb2wgKA0KPiA+ICsgICAgICAgICAgICAgICAgICAmZ0VmaVdpRmlQ cm9maWxlU3luY1Byb3RvY29sR3VpZCwNCj4gPiArICAgICAgICAgICAgICAgICAgTlVMTCwNCj4g PiArICAgICAgICAgICAgICAgICAgKFZPSUQgKiopJldpRmlQcm9maWxlU3luY1Byb3RvY29sDQo+ ID4gICAgICAgICAgICAgICAgICAgICk7DQo+ID4gLSAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkg ew0KPiA+IC0gICAgZ290byBFUlJPUjI7DQo+ID4gLSAgfQ0KPiA+ICsgIGlmICghRUZJX0VSUk9S IChTdGF0dXMpKSB7DQo+ID4gKyAgICBOaWMtPkNvbm5lY3RQZW5kaW5nTmV0d29yayA9IChXSUZJ X01HUl9ORVRXT1JLX1BST0ZJTEUNCj4gPiAqKUFsbG9jYXRlWmVyb1Bvb2wgKHNpemVvZiAoV0lG SV9NR1JfTkVUV09SS19QUk9GSUxFKSk7DQo+ID4gKyAgICBpZiAoTmljLT5Db25uZWN0UGVuZGlu Z05ldHdvcmsgPT0gTlVMTCkgew0KPiA+ICsgICAgICBTdGF0dXMgPSBFRklfT1VUX09GX1JFU09V UkNFUzsNCj4gPiArICAgICAgZ290byBFUlJPUjE7DQo+ID4gKyAgICB9DQo+ID4NCj4gPiAtICBT dGF0dXMgPSBnQlMtPlNldFRpbWVyIChOaWMtPlRpY2tUaW1lciwgVGltZXJQZXJpb2RpYywNCj4g PiBFRklfVElNRVJfUEVSSU9EX01JTExJU0VDT05EUyAoNTAwKSk7DQo+ID4gLSAgaWYgKEVGSV9F UlJPUiAoU3RhdHVzKSkgew0KPiA+IC0gICAgZ290byBFUlJPUjM7DQo+ID4gLSAgfQ0KPiA+ICsg ICAgV2lGaVByb2ZpbGVTeW5jUHJvdG9jb2wtPkdldFByb2ZpbGUgKE5pYy0+Q29ubmVjdFBlbmRp bmdOZXR3b3JrLCBOaWMtDQo+ID4gPk1hY0FkZHJlc3MpOw0KPiA+ICsgICAgaWYgKE5pYy0+Q29u bmVjdFBlbmRpbmdOZXR3b3JrICE9IE5VTEwpIHsNCj4gPiArICAgICAgU3RhdHVzID0gV2lmaU1n ckNvbm5lY3RUb05ldHdvcmsgKE5pYywgTmljLQ0KPiA+ID5Db25uZWN0UGVuZGluZ05ldHdvcmsp Ow0KPiA+ICsgICAgICBpZiAoIUVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgICAgIGdv dG8gRVJST1IxOw0KPiA+ICsgICAgICB9DQo+ID4gKyAgICAgIFdpRmlQcm9maWxlU3luY1Byb3Rv Y29sLT5TZXRDb25uZWN0U3RhdGUgKFN0YXR1cyk7DQo+ID4gKyAgICB9DQo+ID4gKyAgfSBlbHNl IHsNCj4gPiArICAgIC8vDQo+ID4gKyAgICAvLyBSZWNvcmQgdGhlIE1BQyBhZGRyZXNzIG9mIHRo ZSBpbmNvbWluZyBOSUMuDQo+ID4gKyAgICAvLw0KPiA+ICsgICAgU3RhdHVzID0gTmV0TGliR2V0 TWFjQWRkcmVzcyAoDQo+ID4gKyAgICAgICAgICAgICAgIENvbnRyb2xsZXJIYW5kbGUsDQo+ID4g KyAgICAgICAgICAgICAgIChFRklfTUFDX0FERFJFU1MgKikmTmljLT5NYWNBZGRyZXNzLA0KPiA+ ICsgICAgICAgICAgICAgICAmQWRkcmVzc1NpemUNCj4gPiArICAgICAgICAgICAgICAgKTsNCj4g PiArICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgICAgZ290byBFUlJPUjI7 DQo+ID4gKyAgICB9DQo+ID4NCj4gPiAtICBOaWMtPkNvbm5lY3RTdGF0ZSA9IFdpZmlNZ3JEaXNj b25uZWN0ZWQ7DQo+ID4gLSAgTmljLT5TY2FuU3RhdGUgICAgPSBXaWZpTWdyU2NhbkZpbmlzaGVk Ow0KPiA+ICsgICAgLy8NCj4gPiArICAgIC8vIENyZWF0ZSBhbmQgc3RhcnQgdGhlIHRpbWVyIGZv ciB0aGUgc3RhdHVzIGNoZWNrDQo+ID4gKyAgICAvLw0KPiA+ICsgICAgU3RhdHVzID0gZ0JTLT5D cmVhdGVFdmVudCAoDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgRVZUX05PVElGWV9TSUdOQUwg fCBFVlRfVElNRVIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgVFBMX0NBTExCQUNLLA0KPiA+ ICsgICAgICAgICAgICAgICAgICAgIFdpZmlNZ3JPblRpbWVyVGljaywNCj4gPiArICAgICAgICAg ICAgICAgICAgICBOaWMsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgJk5pYy0+VGlja1RpbWVy DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgKTsNCj4gPiArICAgIGlmIChFRklfRVJST1IgKFN0 YXR1cykpIHsNCj4gPiArICAgICAgZ290byBFUlJPUjI7DQo+ID4gKyAgICB9DQo+ID4NCj4gPiAt ICBPbGRUcGwgPSBnQlMtPlJhaXNlVFBMIChUUExfQ0FMTEJBQ0spOw0KPiA+IC0gIEluc2VydFRh aWxMaXN0ICgmbVByaXZhdGUtPk5pY0xpc3QsICZOaWMtPkxpbmspOw0KPiA+IC0gIE5pYy0+Tmlj SW5kZXggPSBtUHJpdmF0ZS0+TmljQ291bnQrKzsNCj4gPiAtICBpZiAobVByaXZhdGUtPkN1cnJl bnROaWMgPT0gTlVMTCkgew0KPiA+IC0gICAgbVByaXZhdGUtPkN1cnJlbnROaWMgPSBOaWM7DQo+ ID4gLSAgfQ0KPiA+ICsgICAgU3RhdHVzID0gZ0JTLT5TZXRUaW1lciAoTmljLT5UaWNrVGltZXIs IFRpbWVyUGVyaW9kaWMsDQo+ID4gRUZJX1RJTUVSX1BFUklPRF9NSUxMSVNFQ09ORFMgKDUwMCkp Ow0KPiA+ICsgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgICBnb3RvIEVS Uk9SMzsNCj4gPiArICAgIH0NCj4gPg0KPiA+IC0gIGdCUy0+UmVzdG9yZVRQTCAoT2xkVHBsKTsN Cj4gPiArICAgIE5pYy0+Q29ubmVjdFN0YXRlID0gV2lmaU1nckRpc2Nvbm5lY3RlZDsNCj4gPiAr ICAgIE5pYy0+U2NhblN0YXRlICAgID0gV2lmaU1nclNjYW5GaW5pc2hlZDsNCj4gPiArDQo+ID4g KyAgICBPbGRUcGwgPSBnQlMtPlJhaXNlVFBMIChUUExfQ0FMTEJBQ0spOw0KPiA+ICsgICAgSW5z ZXJ0VGFpbExpc3QgKCZtUHJpdmF0ZS0+TmljTGlzdCwgJk5pYy0+TGluayk7DQo+ID4gKyAgICBO aWMtPk5pY0luZGV4ID0gbVByaXZhdGUtPk5pY0NvdW50Kys7DQo+ID4gKyAgICBpZiAobVByaXZh dGUtPkN1cnJlbnROaWMgPT0gTlVMTCkgew0KPiA+ICsgICAgICBtUHJpdmF0ZS0+Q3VycmVudE5p YyA9IE5pYzsNCj4gPiArICAgIH0NCj4gPiArDQo+ID4gKyAgICBnQlMtPlJlc3RvcmVUUEwgKE9s ZFRwbCk7DQo+ID4gKyAgfQ0KPiA+DQo+ID4gICAgU3RhdHVzID0gZ0JTLT5JbnN0YWxsUHJvdG9j b2xJbnRlcmZhY2UgKA0KPiA+ICAgICAgICAgICAgICAgICAgICAmQ29udHJvbGxlckhhbmRsZSwN Cj4gPiBAQCAtMzg1LDEwICs0MTcsMTEgQEAgV2lmaU1nckR4ZURyaXZlckJpbmRpbmdTdG9wICgN Cj4gPiAgICBJTiBFRklfSEFORExFICAgICAgICAgICAgICAgICAgICpDaGlsZEhhbmRsZUJ1ZmZl ciBPUFRJT05BTA0KPiA+ICAgICkNCj4gPiAgew0KPiA+IC0gIEVGSV9TVEFUVVMgICAgICAgICAg ICAgICAgIFN0YXR1czsNCj4gPiAtICBFRklfVFBMICAgICAgICAgICAgICAgICAgICBPbGRUcGw7 DQo+ID4gLSAgV0lGSV9NR1JfUFJJVkFURV9QUk9UT0NPTCAgKldpZmlNZ3JJZGVudGlmaWVyOw0K PiA+IC0gIFdJRklfTUdSX0RFVklDRV9EQVRBICAgICAgICpOaWM7DQo+ID4gKyAgRUZJX1NUQVRV UyAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gPiArICBFRklfVFBMICAgICAgICAg ICAgICAgICAgICAgICAgICAgT2xkVHBsOw0KPiA+ICsgIFdJRklfTUdSX1BSSVZBVEVfUFJPVE9D T0wgICAgICAgICAqV2lmaU1ncklkZW50aWZpZXI7DQo+ID4gKyAgV0lGSV9NR1JfREVWSUNFX0RB VEEgICAgICAgICAgICAgICpOaWM7DQo+ID4gKyAgRURLSUlfV0lGSV9QUk9GSUxFX1NZTkNfUFJP VE9DT0wgICpXaUZpUHJvZmlsZVN5bmNQcm90b2NvbDsNCj4gPg0KPiA+ICAgIFN0YXR1cyA9IGdC Uy0+T3BlblByb3RvY29sICgNCj4gPiAgICAgICAgICAgICAgICAgICAgQ29udHJvbGxlckhhbmRs ZSwNCj4gPiBAQCAtNDgxLDcgKzUxNCwxNSBAQCBXaWZpTWdyRHhlRHJpdmVyQmluZGluZ1N0b3Ag KA0KPiA+ICAgIC8vDQo+ID4gICAgT2xkVHBsID0gZ0JTLT5SYWlzZVRQTCAoVFBMX0NBTExCQUNL KTsNCj4gPg0KPiA+IC0gIFJlbW92ZUVudHJ5TGlzdCAoJk5pYy0+TGluayk7DQo+ID4gKyAgU3Rh dHVzID0gZ0JTLT5Mb2NhdGVQcm90b2NvbCAoDQo+ID4gKyAgICAgICAgICAgICAgICAgICZnRWZp V2lGaVByb2ZpbGVTeW5jUHJvdG9jb2xHdWlkLA0KPiA+ICsgICAgICAgICAgICAgICAgICBOVUxM LA0KPiA+ICsgICAgICAgICAgICAgICAgICAoVk9JRCAqKikmV2lGaVByb2ZpbGVTeW5jUHJvdG9j b2wNCj4gPiArICAgICAgICAgICAgICAgICAgKTsNCj4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0 dXMpKSB7DQo+ID4gKyAgICBSZW1vdmVFbnRyeUxpc3QgKCZOaWMtPkxpbmspOw0KPiA+ICsgIH0N Cj4gPiArDQo+ID4gICAgbVByaXZhdGUtPk5pY0NvdW50LS07DQo+ID4gICAgaWYgKG1Qcml2YXRl LT5DdXJyZW50TmljID09IE5pYykgew0KPiA+ICAgICAgbVByaXZhdGUtPkN1cnJlbnROaWMgPSBO VUxMOw0KPiA+IGRpZmYgLS1naXQNCj4gPiBhL05ldHdvcmtQa2cvV2lmaUNvbm5lY3Rpb25NYW5h Z2VyRHhlL1dpZmlDb25uZWN0aW9uTWdyRHhlLmgNCj4gPiBiL05ldHdvcmtQa2cvV2lmaUNvbm5l Y3Rpb25NYW5hZ2VyRHhlL1dpZmlDb25uZWN0aW9uTWdyRHhlLmgNCj4gPiBpbmRleCA3YjJlNDFl MTU1Li4wNDdmODVkYmMyIDEwMDY0NA0KPiA+IC0tLSBhL05ldHdvcmtQa2cvV2lmaUNvbm5lY3Rp b25NYW5hZ2VyRHhlL1dpZmlDb25uZWN0aW9uTWdyRHhlLmgNCj4gPiArKysgYi9OZXR3b3JrUGtn L1dpZmlDb25uZWN0aW9uTWFuYWdlckR4ZS9XaWZpQ29ubmVjdGlvbk1nckR4ZS5oDQo+ID4gQEAg LTQ3LDYgKzQ3LDcgQEANCj4gPiAgI2luY2x1ZGUgPFByb3RvY29sL1NpbXBsZU5ldHdvcmsuaD4N Cj4gPiAgI2luY2x1ZGUgPFByb3RvY29sL1NpbXBsZUZpbGVTeXN0ZW0uaD4NCj4gPiAgI2luY2x1 ZGUgPFByb3RvY29sL0VhcENvbmZpZ3VyYXRpb24uaD4NCj4gPiArI2luY2x1ZGUgPFByb3RvY29s L1dpRmlQcm9maWxlU3luY1Byb3RvY29sLmg+DQo+ID4NCj4gPiAgLy8NCj4gPiAgLy8gUHJvZHVj ZWQgUHJvdG9jb2xzDQo+ID4gQEAgLTczLDcgKzc0LDggQEANCj4gPiAgLy8NCj4gPiAgI2RlZmlu ZSBXSUZJX01HUl9EWEVfVkVSU0lPTiAgMHhiDQo+ID4NCj4gPiAtI2RlZmluZSBPVUlfSUVFRV84 MDIxMUkgIDB4QUMwRjAwDQo+ID4gKyNkZWZpbmUgT1VJX0lFRUVfODAyMTFJICAgICAgICAgICAg ICAweEFDMEYwMA0KPiA+ICsjZGVmaW5lIE1BWF9XSUZJX0NPTk5FVElPTl9BVFRFTVBUUyAgMw0K PiA+DQo+ID4gIHR5cGVkZWYgZW51bSB7DQo+ID4gICAgSWVlZTgwMjExUGFpcndpc2VDaXBoZXJT dWl0ZVVzZUdyb3VwQ2lwaGVyU3VpdGUgPSAwLA0KPiA+IGRpZmYgLS1naXQNCj4gPiBhL05ldHdv cmtQa2cvV2lmaUNvbm5lY3Rpb25NYW5hZ2VyRHhlL1dpZmlDb25uZWN0aW9uTWdySW1wbC5jDQo+ ID4gYi9OZXR3b3JrUGtnL1dpZmlDb25uZWN0aW9uTWFuYWdlckR4ZS9XaWZpQ29ubmVjdGlvbk1n ckltcGwuYw0KPiA+IGluZGV4IDU5YmFjNDhjNDIuLjdkNDcxZTc1OTEgMTAwNjQ0DQo+ID4gLS0t IGEvTmV0d29ya1BrZy9XaWZpQ29ubmVjdGlvbk1hbmFnZXJEeGUvV2lmaUNvbm5lY3Rpb25NZ3JJ bXBsLmMNCj4gPiArKysgYi9OZXR3b3JrUGtnL1dpZmlDb25uZWN0aW9uTWFuYWdlckR4ZS9XaWZp Q29ubmVjdGlvbk1nckltcGwuYw0KPiA+IEBAIC0xOSw2ICsxOSw4IEBAIEVGSV9FQVBfVFlQRSAg bUVhcFNlY29uZEF1dGhNZXRob2RbXSA9IHsNCj4gPiAgICBFRklfRUFQX1RZUEVfTVNDSEFQVjIN Cj4gPiAgfTsNCj4gPg0KPiA+ICtVSU5UOCAgbVdpZmlDb25uZWN0aW9uQ291bnQgPSAwOw0KPiA+ ICsNCj4gPiAgLyoqDQo+ID4gICAgVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIGZvciBzY2FuIG9wZXJh dGlvbi4gVGhpcyBmdW5jdGlvbiB1cGRhdGVzIG5ldHdvcmtzDQo+ID4gICAgYWNjb3JkaW5nIHRv IHRoZSBsYXRlc3Qgc2NhbiByZXN1bHQsIGFuZCB0cmlnZ2VyIFVJIHJlZnJlc2guDQo+ID4gQEAg LTQyNCwxOCArNDI2LDI2IEBAIFdpZmlNZ3JDb25maWdQYXNzd29yZCAoDQo+ID4gICAgICByZXR1 cm4gRUZJX05PVF9GT1VORDsNCj4gPiAgICB9DQo+ID4NCj4gPiAtICBBc2NpaVBhc3N3b3JkID0g QWxsb2NhdGVaZXJvUG9vbCAoKFN0ckxlbiAoUHJvZmlsZS0+UGFzc3dvcmQpICsgMSkgKiBzaXpl b2YNCj4gPiAoVUlOVDgpKTsNCj4gPiArICBpZiAoU3RyTGVuIChQcm9maWxlLT5QYXNzd29yZCkg Pj0gUEFTU1dPUkRfU1RPUkFHRV9TSVpFKSB7DQo+ID4gKyAgICBBU1NFUlQgKEVGSV9JTlZBTElE X1BBUkFNRVRFUik7DQo+ID4gKyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+ ICsgIH0NCj4gPiArDQo+ID4gKyAgQXNjaWlQYXNzd29yZCA9IEFsbG9jYXRlWmVyb1Bvb2wgKChT dHJMZW4gKFByb2ZpbGUtPlBhc3N3b3JkKSArIDEpICoNCj4gPiBzaXplb2YgKENIQVI4KSk7DQo+ ID4gICAgaWYgKEFzY2lpUGFzc3dvcmQgPT0gTlVMTCkgew0KPiA+ICAgICAgcmV0dXJuIEVGSV9P VVRfT0ZfUkVTT1VSQ0VTOw0KPiA+ICAgIH0NCj4gPg0KPiA+IC0gIFVuaWNvZGVTdHJUb0FzY2lp U3RyUyAoUHJvZmlsZS0+UGFzc3dvcmQsIChDSEFSOCAqKUFzY2lpUGFzc3dvcmQsDQo+ID4gUEFT U1dPUkRfU1RPUkFHRV9TSVpFKTsNCj4gPiAtICBTdGF0dXMgPSBTdXBwbGljYW50LT5TZXREYXRh ICgNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgIFN1cHBsaWNhbnQsDQo+ID4gLSAgICAg ICAgICAgICAgICAgICAgICAgICBFZmlTdXBwbGljYW50ODAyMTFQc2tQYXNzd29yZCwNCj4gPiAt ICAgICAgICAgICAgICAgICAgICAgICAgIEFzY2lpUGFzc3dvcmQsDQo+ID4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAoU3RyTGVuIChQcm9maWxlLT5QYXNzd29yZCkgKyAxKSAqIHNpemVvZiAo VUlOVDgpDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICApOw0KPiA+ICsgIFN0YXR1cyA9 IFVuaWNvZGVTdHJUb0FzY2lpU3RyUyAoUHJvZmlsZS0+UGFzc3dvcmQsIChDSEFSOA0KPiA+ICop QXNjaWlQYXNzd29yZCwgKFN0ckxlbiAoUHJvZmlsZS0+UGFzc3dvcmQpICsgMSkpOw0KPiA+ICsg IGlmICghRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICBTdGF0dXMgPSBTdXBwbGljYW50 LT5TZXREYXRhICgNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgU3VwcGxpY2FudCwN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgRWZpU3VwcGxpY2FudDgwMjExUHNrUGFz c3dvcmQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzY2lpUGFzc3dvcmQsDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChTdHJMZW4gKFByb2ZpbGUtPlBhc3N3b3Jk KSArIDEpICogc2l6ZW9mIChDSEFSOCkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg KTsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICAgIFplcm9NZW0gKEFzY2lpUGFzc3dvcmQsIEFzY2lp U3RyTGVuICgoQ0hBUjggKilBc2NpaVBhc3N3b3JkKSArIDEpOw0KPiA+ICAgIEZyZWVQb29sIChB c2NpaVBhc3N3b3JkKTsNCj4gPg0KPiA+IEBAIC00NjUsMTkgKzQ3NSwyMCBAQCBXaWZpTWdyQ29u ZmlnRWFwICgNCj4gPiAgICBJTiAgICBXSUZJX01HUl9ORVRXT1JLX1BST0ZJTEUgICpQcm9maWxl DQo+ID4gICAgKQ0KPiA+ICB7DQo+ID4gLSAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAg ICBTdGF0dXM7DQo+ID4gLSAgRUZJX0VBUF9DT05GSUdVUkFUSU9OX1BST1RPQ09MICAqRWFwQ29u ZmlnOw0KPiA+IC0gIEVGSV9FQVBfVFlQRSAgICAgICAgICAgICAgICAgICAgRWFwQXV0aE1ldGhv ZDsNCj4gPiAtICBFRklfRUFQX1RZUEUgICAgICAgICAgICAgICAgICAgIEVhcFNlY29uZEF1dGhN ZXRob2Q7DQo+ID4gLSAgRUZJX0VBUF9UWVBFICAgICAgICAgICAgICAgICAgICAqQXV0aE1ldGhv ZExpc3Q7DQo+ID4gLSAgQ0hBUjggICAgICAgICAgICAgICAgICAgICAgICAgICAqSWRlbnRpdHk7 DQo+ID4gLSAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICBJZGVudGl0eVNpemU7DQo+ ID4gLSAgQ0hBUjE2ICAgICAgICAgICAgICAgICAgICAgICAgICAqUGFzc3dvcmQ7DQo+ID4gLSAg VUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzd29yZFNpemU7DQo+ID4gLSAgVUlO VE4gICAgICAgICAgICAgICAgICAgICAgICAgICBFbmNyeXB0UGFzc3dvcmRMZW47DQo+ID4gLSAg Q0hBUjggICAgICAgICAgICAgICAgICAgICAgICAgICAqQXNjaWlFbmNyeXB0UGFzc3dvcmQ7DQo+ ID4gLSAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICBBdXRoTWV0aG9kTGlzdFNpemU7 DQo+ID4gLSAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleDsNCj4gPiArICBF RklfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ICsgIEVES0lJX1dJ RklfUFJPRklMRV9TWU5DX1BST1RPQ09MICAqV2lGaVByb2ZpbGVTeW5jUHJvdG9jb2w7DQo+ID4g KyAgRUZJX0VBUF9DT05GSUdVUkFUSU9OX1BST1RPQ09MICAgICpFYXBDb25maWc7DQo+ID4gKyAg RUZJX0VBUF9UWVBFICAgICAgICAgICAgICAgICAgICAgIEVhcEF1dGhNZXRob2Q7DQo+ID4gKyAg RUZJX0VBUF9UWVBFICAgICAgICAgICAgICAgICAgICAgIEVhcFNlY29uZEF1dGhNZXRob2Q7DQo+ ID4gKyAgRUZJX0VBUF9UWVBFICAgICAgICAgICAgICAgICAgICAgICpBdXRoTWV0aG9kTGlzdDsN Cj4gPiArICBDSEFSOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKklkZW50aXR5Ow0KPiA+ ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZGVudGl0eVNpemU7DQo+ID4g KyAgQ0hBUjE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICpQYXNzd29yZDsNCj4gPiArICBV SU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc3dvcmRTaXplOw0KPiA+ICsgIFVJ TlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmNyeXB0UGFzc3dvcmRMZW47DQo+ID4g KyAgQ0hBUjggICAgICAgICAgICAgICAgICAgICAgICAgICAgICpBc2NpaUVuY3J5cHRQYXNzd29y ZDsNCj4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXV0aE1ldGhvZExp c3RTaXplOw0KPiA+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleDsN Cj4gPg0KPiA+ICAgIGlmICgoTmljID09IE5VTEwpIHx8IChOaWMtPkVhcENvbmZpZyA9PSBOVUxM KSB8fCAoUHJvZmlsZSA9PSBOVUxMKSkgew0KPiA+ICAgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BB UkFNRVRFUjsNCj4gPiBAQCAtNTY3LDcgKzU3OCwxMyBAQCBXaWZpTWdyQ29uZmlnRWFwICgNCj4g PiAgICAgICAgcmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiA+ICAgICAgfQ0KPiA+DQo+ ID4gLSAgICBVbmljb2RlU3RyVG9Bc2NpaVN0clMgKFByb2ZpbGUtPkVhcElkZW50aXR5LCBJZGVu dGl0eSwgSWRlbnRpdHlTaXplKTsNCj4gPiArICAgIFN0YXR1cyA9IGdCUy0+TG9jYXRlUHJvdG9j b2wgKCZnRWZpV2lGaVByb2ZpbGVTeW5jUHJvdG9jb2xHdWlkLCBOVUxMLA0KPiA+IChWT0lEICoq KSZXaUZpUHJvZmlsZVN5bmNQcm90b2NvbCk7DQo+ID4gKyAgICBpZiAoIUVGSV9FUlJPUiAoU3Rh dHVzKSkgew0KPiA+ICsgICAgICBDb3B5TWVtIChJZGVudGl0eSwgJlByb2ZpbGUtPkVhcElkZW50 aXR5LCBJZGVudGl0eVNpemUpOw0KPiA+ICsgICAgfSBlbHNlIHsNCj4gPiArICAgICAgVW5pY29k ZVN0clRvQXNjaWlTdHJTIChQcm9maWxlLT5FYXBJZGVudGl0eSwgSWRlbnRpdHksIElkZW50aXR5 U2l6ZSk7DQo+ID4gKyAgICB9DQo+ID4gKw0KPiA+ICAgICAgU3RhdHVzID0gRWFwQ29uZmlnLT5T ZXREYXRhICgNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFYXBDb25maWcsDQo+ID4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX0VBUF9UWVBFX0lERU5USVRZLA0KPiA+IEBA IC04OTIsNiArOTA5LDEzMyBAQCBXaWZpTWdyUHJlcGFyZUNvbm5lY3Rpb24gKA0KPiA+ICAgIHJl dHVybiBFRklfU1VDQ0VTUzsNCj4gPiAgfQ0KPiA+DQo+ID4gKy8qKg0KPiA+ICsgIFdpbGwgcmVz ZXQgTmlDIGRhdGEsIGdldCBwcm9maWxlIGZyb20gcHJvZmlsZSBzeW5jIGRyaXZlciwgYW5kIHNl bmQgZm9yDQo+ID4gKyAgYW5vdGhlciBjb25uZWN0aW9uIGF0dGVtcHQuVGhpcyBmdW5jdGlvbiBz aG91bGQgbm90IGJlIGNhbGxlZCBtb3JlIHRoYW4NCj4gPiArICAzIHRpbWVzLg0KPiA+ICsNCj4g PiArICBAcGFyYW1baW5dICBXaUZpUHJvZmlsZVN5bmNQcm90b2NvbCAgVGhlIHRhcmdldCBuZXR3 b3JrIHByb2ZpbGUgdG8NCj4gPiBjb25uZWN0Lg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9T VUNDRVNTICAgICAgICAgICAgICAgICAgVGhlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQuDQo+ID4g KyAgQHJldHZhbCBvdGhlciAgICAgICAgICAgICAgICAgICAgICAgIE9wZXJhdGlvbiBmYWlsdXJl Lg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArQ29ubmVjdGlvblJldHJ5 ICgNCj4gPiArICBJTiAgIEVES0lJX1dJRklfUFJPRklMRV9TWU5DX1BST1RPQ09MICAqV2lGaVBy b2ZpbGVTeW5jUHJvdG9jb2wNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBFRklfU1RBVFVTICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gPiArICBXSUZJX01HUl9ERVZJ Q0VfREFUQSAgICAgICAgICAgICAgICAgICAgICpOaWM7DQo+ID4gKyAgRUZJX1dJUkVMRVNTX01B Q19DT05ORUNUSU9OX0lJX1BST1RPQ09MICAqV21wOw0KPiA+ICsgIEVGSV9TVVBQTElDQU5UX1BS T1RPQ09MICAgICAgICAgICAgICAgICAgKlN1cHBsaWNhbnQ7DQo+ID4gKyAgRUZJX0VBUF9DT05G SUdVUkFUSU9OX1BST1RPQ09MICAgICAgICAgICAqRWFwQ29uZmlnOw0KPiA+ICsNCj4gPiArICBO aWMgPSBOVUxMOw0KPiA+ICsNCj4gPiArICBTdGF0dXMgPSBnQlMtPkxvY2F0ZVByb3RvY29sICgN Cj4gPiArICAgICAgICAgICAgICAgICAgJmdFZmlXaUZpMlByb3RvY29sR3VpZCwNCj4gPiArICAg ICAgICAgICAgICAgICAgTlVMTCwNCj4gPiArICAgICAgICAgICAgICAgICAgKFZPSUQgKiopJldt cA0KPiA+ICsgICAgICAgICAgICAgICAgICApOw0KPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1 cykpIHsNCj4gPiArICAgIHJldHVybiBTdGF0dXM7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBT dGF0dXMgPSBnQlMtPkxvY2F0ZVByb3RvY29sICgNCj4gPiArICAgICAgICAgICAgICAgICAgJmdF ZmlTdXBwbGljYW50UHJvdG9jb2xHdWlkLA0KPiA+ICsgICAgICAgICAgICAgICAgICBOVUxMLA0K PiA+ICsgICAgICAgICAgICAgICAgICAoVk9JRCAqKikmU3VwcGxpY2FudA0KPiA+ICsgICAgICAg ICAgICAgICAgICApOw0KPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAg IFN1cHBsaWNhbnQgPSBOVUxMOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgU3RhdHVzID0gZ0JT LT5Mb2NhdGVQcm90b2NvbCAoDQo+ID4gKyAgICAgICAgICAgICAgICAgICZnRWZpRWFwQ29uZmln dXJhdGlvblByb3RvY29sR3VpZCwNCj4gPiArICAgICAgICAgICAgICAgICAgTlVMTCwNCj4gPiAr ICAgICAgICAgICAgICAgICAgKFZPSUQgKiopJkVhcENvbmZpZw0KPiA+ICsgICAgICAgICAgICAg ICAgICApOw0KPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgIEVhcENv bmZpZyA9IE5VTEw7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICAvLw0KPiA+ICsgIC8vIEluaXRp YWxpemUgTmljIGRldmljZSBkYXRhDQo+ID4gKyAgLy8NCj4gPiArICBOaWMgPSBBbGxvY2F0ZVpl cm9Qb29sIChzaXplb2YgKFdJRklfTUdSX0RFVklDRV9EQVRBKSk7DQo+ID4gKyAgaWYgKE5pYyA9 PSBOVUxMKSB7DQo+ID4gKyAgICBTdGF0dXMgPSBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4gPiAr ICAgIHJldHVybiBTdGF0dXM7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBOaWMtPlNpZ25hdHVy ZSAgICAgICAgICAgPSBXSUZJX01HUl9ERVZJQ0VfREFUQV9TSUdOQVRVUkU7DQo+ID4gKyAgTmlj LT5Qcml2YXRlICAgICAgICAgICAgID0gbVByaXZhdGU7DQo+ID4gKyAgTmljLT5XbXAgICAgICAg ICAgICAgICAgID0gV21wOw0KPiA+ICsgIE5pYy0+U3VwcGxpY2FudCAgICAgICAgICA9IFN1cHBs aWNhbnQ7DQo+ID4gKyAgTmljLT5FYXBDb25maWcgICAgICAgICAgID0gRWFwQ29uZmlnOw0KPiA+ ICsgIE5pYy0+VXNlclNlbGVjdGVkUHJvZmlsZSA9IE5VTEw7DQo+ID4gKyAgTmljLT5PbmVUaW1l U2NhblJlcXVlc3QgID0gRkFMU0U7DQo+ID4gKw0KPiA+ICsgIGlmIChOaWMtPlN1cHBsaWNhbnQg IT0gTlVMTCkgew0KPiA+ICsgICAgU3RhdHVzID0gV2lmaU1nckdldFN1cHBvcnRlZFN1aXRlcyAo TmljKTsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIGlmICghRUZJX0VSUk9SIChTdGF0dXMpKSB7 DQo+ID4gKyAgICBJbml0aWFsaXplTGlzdEhlYWQgKCZOaWMtPlByb2ZpbGVMaXN0KTsNCj4gPiAr DQo+ID4gKyAgICBOaWMtPkNvbm5lY3RQZW5kaW5nTmV0d29yayA9IChXSUZJX01HUl9ORVRXT1JL X1BST0ZJTEUNCj4gPiAqKUFsbG9jYXRlWmVyb1Bvb2wgKHNpemVvZiAoV0lGSV9NR1JfTkVUV09S S19QUk9GSUxFKSk7DQo+ID4gKyAgICBpZiAoTmljLT5Db25uZWN0UGVuZGluZ05ldHdvcmsgPT0g TlVMTCkgew0KPiA+ICsgICAgICBTdGF0dXMgPSBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4gPiAr ICAgICAgREVCVUcgKChERUJVR19FUlJPUiwgIltXaUZpIENvbm5lY3Rpb24gTWFuYWdlcl0gRmFp bGVkIHRvIGFsbG9jYXRlDQo+ID4gbWVtb3J5IGZvciBDb25uZWN0UGVuZGluZ05ldHdvcmtcbiIp KTsNCj4gPiArICAgICAgZ290byBFUlJPUjsNCj4gPiArICAgIH0NCj4gPiArDQo+ID4gKyAgICBT dGF0dXMgPSBXaUZpUHJvZmlsZVN5bmNQcm90b2NvbC0+R2V0UHJvZmlsZSAoTmljLQ0KPiA+ID5D b25uZWN0UGVuZGluZ05ldHdvcmssIE5pYy0+TWFjQWRkcmVzcyk7DQo+ID4gKyAgICBpZiAoIUVG SV9FUlJPUiAoU3RhdHVzKSAmJiAoTmljLT5Db25uZWN0UGVuZGluZ05ldHdvcmsgIT0gTlVMTCkp IHsNCj4gPiArICAgICAgU3RhdHVzID0gV2lmaU1nckNvbm5lY3RUb05ldHdvcmsgKE5pYywgTmlj LQ0KPiA+ID5Db25uZWN0UGVuZGluZ05ldHdvcmspOw0KPiA+ICsgICAgICBpZiAoIUVGSV9FUlJP UiAoU3RhdHVzKSkgew0KPiA+ICsgICAgICAgIHJldHVybiBTdGF0dXM7DQo+ID4gKyAgICAgIH0N Cj4gPiArICAgIH0gZWxzZSB7DQo+ID4gKyAgICAgIERFQlVHICgoREVCVUdfRVJST1IsICJbV2lG aSBDb25uZWN0aW9uIE1hbmFnZXJdIEZhaWxlZCB0byBnZXQgV2lGaQ0KPiA+IHByb2ZpbGUgd2l0 aCBzdGF0dXMgJXJcbiIsIFN0YXR1cykpOw0KPiA+ICsgICAgfQ0KPiA+ICsgIH0gZWxzZSB7DQo+ ID4gKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiW1dpRmkgQ29ubmVjdGlvbiBNYW5hZ2VyXSBG YWlsZWQgdG8gZ2V0DQo+ID4gU3VwcG9ydGVkIHN1aXRlcyB3aXRoIHN0YXR1cyAlclxuIiwgU3Rh dHVzKSk7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBpZiAoTmljLT5Db25uZWN0UGVuZGluZ05l dHdvcmsgIT0gTlVMTCkgew0KPiA+ICsgICAgaWYgKE5pYy0+Q29ubmVjdFBlbmRpbmdOZXR3b3Jr LT5OZXR3b3JrLkFLTVN1aXRlICE9IE5VTEwpIHsNCj4gPiArICAgICAgRnJlZVBvb2wgKE5pYy0+ Q29ubmVjdFBlbmRpbmdOZXR3b3JrLT5OZXR3b3JrLkFLTVN1aXRlKTsNCj4gPiArICAgIH0NCj4g PiArDQo+ID4gKyAgICBpZiAoTmljLT5Db25uZWN0UGVuZGluZ05ldHdvcmstPk5ldHdvcmsuQ2lw aGVyU3VpdGUgIT0gTlVMTCkgew0KPiA+ICsgICAgICBGcmVlUG9vbCAoTmljLT5Db25uZWN0UGVu ZGluZ05ldHdvcmstPk5ldHdvcmsuQ2lwaGVyU3VpdGUpOw0KPiA+ICsgICAgfQ0KPiA+ICsNCj4g PiArICAgIEZyZWVQb29sIChOaWMtPkNvbm5lY3RQZW5kaW5nTmV0d29yayk7DQo+ID4gKyAgfQ0K PiA+ICsNCj4gPiArRVJST1I6DQo+ID4gKyAgaWYgKE5pYy0+U3VwcGxpY2FudCAhPSBOVUxMKSB7 DQo+ID4gKyAgICBpZiAoTmljLT5TdXBwb3J0ZWRTdWl0ZXMuU3VwcG9ydGVkQUtNU3VpdGVzICE9 IE5VTEwpIHsNCj4gPiArICAgICAgRnJlZVBvb2wgKE5pYy0+U3VwcG9ydGVkU3VpdGVzLlN1cHBv cnRlZEFLTVN1aXRlcyk7DQo+ID4gKyAgICB9DQo+ID4gKw0KPiA+ICsgICAgaWYgKE5pYy0+U3Vw cG9ydGVkU3VpdGVzLlN1cHBvcnRlZFN3Q2lwaGVyU3VpdGVzICE9IE5VTEwpIHsNCj4gPiArICAg ICAgRnJlZVBvb2wgKE5pYy0+U3VwcG9ydGVkU3VpdGVzLlN1cHBvcnRlZFN3Q2lwaGVyU3VpdGVz KTsNCj4gPiArICAgIH0NCj4gPiArDQo+ID4gKyAgICBpZiAoTmljLT5TdXBwb3J0ZWRTdWl0ZXMu U3VwcG9ydGVkSHdDaXBoZXJTdWl0ZXMgIT0gTlVMTCkgew0KPiA+ICsgICAgICBGcmVlUG9vbCAo TmljLT5TdXBwb3J0ZWRTdWl0ZXMuU3VwcG9ydGVkSHdDaXBoZXJTdWl0ZXMpOw0KPiA+ICsgICAg fQ0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgRnJlZVBvb2wgKE5pYyk7DQo+ID4gKw0KPiA+ICsg IHJldHVybiBTdGF0dXM7DQo+ID4gK30NCj4gPiArDQo+ID4gIC8qKg0KPiA+ICAgIFRoZSBjYWxs YmFjayBmdW5jdGlvbiBmb3IgY29ubmVjdCBvcGVyYXRpb24uDQo+ID4NCj4gPiBAQCAtOTA4LDEy ICsxMDUyLDEzIEBAIFdpZmlNZ3JPbkNvbm5lY3RGaW5pc2hlZCAoDQo+ID4gICAgSU4gIFZPSUQg ICAgICAgKkNvbnRleHQNCj4gPiAgICApDQo+ID4gIHsNCj4gPiAtICBFRklfU1RBVFVTICAgICAg ICAgICAgICAgICBTdGF0dXM7DQo+ID4gLSAgV0lGSV9NR1JfTUFDX0NPTkZJR19UT0tFTiAgKkNv bmZpZ1Rva2VuOw0KPiA+IC0gIFdJRklfTUdSX05FVFdPUktfUFJPRklMRSAgICpDb25uZWN0ZWRQ cm9maWxlOw0KPiA+IC0gIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgIFNlY3VyaXR5VHlwZTsN Cj4gPiAtICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICBTU0lkTGVuOw0KPiA+IC0gIENIQVI4 ICAgICAgICAgICAgICAgICAgICAgICpBc2NpaVNTSWQ7DQo+ID4gKyAgRUZJX1NUQVRVUyAgICAg ICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gPiArICBXSUZJX01HUl9NQUNfQ09ORklHX1RP S0VOICAgICAgICAgKkNvbmZpZ1Rva2VuOw0KPiA+ICsgIFdJRklfTUdSX05FVFdPUktfUFJPRklM RSAgICAgICAgICAqQ29ubmVjdGVkUHJvZmlsZTsNCj4gPiArICBVSU5UOCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgU2VjdXJpdHlUeXBlOw0KPiA+ICsgIFVJTlQ4ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBTU0lkTGVuOw0KPiA+ICsgIENIQVI4ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAqQXNjaWlTU0lkOw0KPiA+ICsgIEVES0lJX1dJRklfUFJPRklMRV9TWU5DX1BST1RP Q09MICAqV2lGaVByb2ZpbGVTeW5jUHJvdG9jb2w7DQo+ID4NCj4gPiAgICBBU1NFUlQgKENvbnRl eHQgIT0gTlVMTCk7DQo+ID4NCj4gPiBAQCAtOTI1LDYgKzEwNzAsMjQgQEAgV2lmaU1nck9uQ29u bmVjdEZpbmlzaGVkICgNCj4gPiAgICBBU1NFUlQgKENvbmZpZ1Rva2VuLT5UeXBlID09IFRva2Vu VHlwZUNvbm5lY3ROZXR3b3JrVG9rZW4pOw0KPiA+DQo+ID4gICAgQVNTRVJUIChDb25maWdUb2tl bi0+VG9rZW4uQ29ubmVjdE5ldHdvcmtUb2tlbiAhPSBOVUxMKTsNCj4gPiArDQo+ID4gKyAgU3Rh dHVzID0gZ0JTLT5Mb2NhdGVQcm90b2NvbCAoJmdFZmlXaUZpUHJvZmlsZVN5bmNQcm90b2NvbEd1 aWQsIE5VTEwsDQo+ID4gKFZPSUQgKiopJldpRmlQcm9maWxlU3luY1Byb3RvY29sKTsNCj4gPiAr ICBpZiAoIUVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgV2lGaVByb2ZpbGVTeW5jUHJv dG9jb2wtPlNldENvbm5lY3RTdGF0ZSAoQ29uZmlnVG9rZW4tDQo+ID4gPlRva2VuLkNvbm5lY3RO ZXR3b3JrVG9rZW4tPlJlc3VsdENvZGUpOw0KPiA+ICsgICAgaWYgKChtV2lmaUNvbm5lY3Rpb25D b3VudCA8IE1BWF9XSUZJX0NPTk5FVElPTl9BVFRFTVBUUykgJiYNCj4gPiArICAgICAgICAoQ29u ZmlnVG9rZW4tPlRva2VuLkNvbm5lY3ROZXR3b3JrVG9rZW4tPlJlc3VsdENvZGUgIT0NCj4gPiBD b25uZWN0U3VjY2VzcykpDQo+ID4gKyAgICB7DQo+ID4gKyAgICAgIG1XaWZpQ29ubmVjdGlvbkNv dW50Kys7DQo+ID4gKyAgICAgIGdCUy0+Q2xvc2VFdmVudCAoRXZlbnQpOw0KPiA+ICsgICAgICBT dGF0dXMgPSBDb25uZWN0aW9uUmV0cnkgKFdpRmlQcm9maWxlU3luY1Byb3RvY29sKTsNCj4gPiAr ICAgICAgaWYgKCFFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgICAgICByZXR1cm47DQo+ ID4gKyAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgIFdpRmlQcm9maWxlU3luY1Byb3RvY29sLT5T ZXRDb25uZWN0U3RhdGUgKFN0YXR1cyk7DQo+ID4gKyAgICB9DQo+ID4gKyAgfQ0KPiA+ICsNCj4g PiAgICBpZiAoQ29uZmlnVG9rZW4tPlRva2VuLkNvbm5lY3ROZXR3b3JrVG9rZW4tPlN0YXR1cyAh PSBFRklfU1VDQ0VTUykgew0KPiA+ICAgICAgaWYgKENvbmZpZ1Rva2VuLT5OaWMtPk9uZVRpbWVD b25uZWN0UmVxdWVzdCkgew0KPiA+ICAgICAgICAvLw0KPiA+IGRpZmYgLS1naXQNCj4gPiBhL05l dHdvcmtQa2cvV2lmaUNvbm5lY3Rpb25NYW5hZ2VyRHhlL1dpZmlDb25uZWN0aW9uTWdyTWlzYy5j DQo+ID4gYi9OZXR3b3JrUGtnL1dpZmlDb25uZWN0aW9uTWFuYWdlckR4ZS9XaWZpQ29ubmVjdGlv bk1nck1pc2MuYw0KPiA+IGluZGV4IDRhZDU2NDNjMjQuLjUxODU3MjkyMmYgMTAwNjQ0DQo+ID4g LS0tIGEvTmV0d29ya1BrZy9XaWZpQ29ubmVjdGlvbk1hbmFnZXJEeGUvV2lmaUNvbm5lY3Rpb25N Z3JNaXNjLmMNCj4gPiArKysgYi9OZXR3b3JrUGtnL1dpZmlDb25uZWN0aW9uTWFuYWdlckR4ZS9X aWZpQ29ubmVjdGlvbk1nck1pc2MuYw0KPiA+IEBAIC02NzIsMTAgKzY3MiwyMyBAQCBXaWZpTWdy Q2xlYW5Qcm9maWxlU2VjcmV0cyAoDQo+ID4gICAgSU4gIFdJRklfTUdSX05FVFdPUktfUFJPRklM RSAgKlByb2ZpbGUNCj4gPiAgICApDQo+ID4gIHsNCj4gPiArICBFRklfU1RBVFVTICAgICAgICAg ICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ICsgIEVES0lJX1dJRklfUFJPRklMRV9TWU5DX1BS T1RPQ09MICAqV2lGaVByb2ZpbGVTeW5jUHJvdG9jb2w7DQo+ID4gKw0KPiA+ICAgIFplcm9NZW0g KFByb2ZpbGUtPlBhc3N3b3JkLCBzaXplb2YgKENIQVIxNikgKg0KPiA+IFBBU1NXT1JEX1NUT1JB R0VfU0laRSk7DQo+ID4gICAgWmVyb01lbSAoUHJvZmlsZS0+RWFwUGFzc3dvcmQsIHNpemVvZiAo Q0hBUjE2KSAqDQo+ID4gUEFTU1dPUkRfU1RPUkFHRV9TSVpFKTsNCj4gPiAgICBaZXJvTWVtIChQ cm9maWxlLT5Qcml2YXRlS2V5UGFzc3dvcmQsIHNpemVvZiAoQ0hBUjE2KSAqDQo+ID4gUEFTU1dP UkRfU1RPUkFHRV9TSVpFKTsNCj4gPg0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gIFdoZW4gRUZJIFdp RmkgcHJvZmlsZSBzeW5jIHByb3RvY29sIGlzIGZvdW5kIHRoZSBzeXN0ZW0gaXMgcGVyZm9ybWlu ZyBhDQo+ID4gcmVjb3ZlcnkgYm9vdCBpbiBzZWN1cmUNCj4gPiArICAvLyAgYm9vdCBtb2RlLiBU aGUgcHJvZmlsZSBzeW5jIGRyaXZlciB3aWxsIG1hbmFnZSB0aGUgQ0EgY2VydGlmaWNhdGUsIGNs aWVudA0KPiA+IGNlcnRpZmljYXRlLCBhbmQga2V5DQo+ID4gKyAgLy8gIGRhdGEsIGNsZWFuaW5n IHRoZW0gYXQgZXhpdCBib290IHNlcnZpY2VzLg0KPiA+ICsgIC8vDQo+ID4gKyAgU3RhdHVzID0g Z0JTLT5Mb2NhdGVQcm90b2NvbCAoJmdFZmlXaUZpUHJvZmlsZVN5bmNQcm90b2NvbEd1aWQsIE5V TEwsDQo+ID4gKFZPSUQgKiopJldpRmlQcm9maWxlU3luY1Byb3RvY29sKTsNCj4gPiArICBpZiAo IUVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgcmV0dXJuOw0KPiA+ICsgIH0NCj4gPiAr DQo+ID4gICAgaWYgKFByb2ZpbGUtPkNBQ2VydERhdGEgIT0gTlVMTCkgew0KPiA+ICAgICAgWmVy b01lbSAoUHJvZmlsZS0+Q0FDZXJ0RGF0YSwgUHJvZmlsZS0+Q0FDZXJ0U2l6ZSk7DQo+ID4gICAg ICBGcmVlUG9vbCAoUHJvZmlsZS0+Q0FDZXJ0RGF0YSk7DQo+ID4gLS0NCj4gPiAyLjM3LjMud2lu ZG93cy4xDQo+IA0KPiANCj4gDQo+IA0KPiANCg0K