From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM04-BN8-obe.outbound.protection.outlook.com (NAM04-BN8-obe.outbound.protection.outlook.com [40.107.100.40]) by mx.groups.io with SMTP id smtpd.web11.1531.1682038269293175491 for ; Thu, 20 Apr 2023 17:51:09 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@amd.com header.s=selector1 header.b=Hp3N4TgU; spf=permerror, err=parse error for token &{10 18 %{i}._ip.%{h}._ehlo.%{d}._spf.vali.email}: invalid domain name (domain: amd.com, ip: 40.107.100.40, mailfrom: abner.chang@amd.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=c+/Alz8raRQNoNip0e5/+MJ8WjykEG/hE5Cia1bSW7dx5nHukv2et7oh+prSERUXc2xPjkK22MPVaXWANICxgXt4AX+m199ocRsvWcvvqXvSO18n1CtrNRuFRdDu13dI+cWLCpW4BXin89MUvH0Z1mUFg6wJaLdgXF9jW6dGt7T+nDzsfVUwT3RlU2YAYX1b2gUeQK6Cc3i9t6F/JFa2U593BRPF+mW8tq21rPbR8CF5ISk92gOPrXQm12BTYxGfW9IXLxiXRnaoxOVr/MLfWAKmr4TFBeACM3AEDv7NT3aGePU2ODchbEMi4TK9CgG9498RBj9vWgDOVMqYQmCdyQ== 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=jM75hsQOWMHl1DQfhyXwcEVBPTvm5pOFijp2qs3OROI=; b=GiTrfmQMz9MQltFZOI0LyRQLNLbtQkNSR2BJQIMYhL/ofiWsL0k2EsIjIPtZcg0rd5ND9TNWS6gXqfjtmXki4ysYjB0MC4s3ft3Cjj8rsw9qMrvS++vmCeaCZlxkQrVBw+CK88HXGpD/CJQaq9l0ZPWcz2bXJcbCGtqGfK899bETl8BkMo/RsdRLKVDDWBBfui2rsyX5iAMextm4zFNlWBKFcn/ag3D+koX2ySup18ZCjlj3R067t6OqNuj/gw5QBhc0sRWWEX7KlwF2UlZ6wY4j6cDFYSloH2lZOpVFBSSxfBcXfesZYrM3H26KEtc63+PILwrSrupgahXLiPBcig== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=jM75hsQOWMHl1DQfhyXwcEVBPTvm5pOFijp2qs3OROI=; b=Hp3N4TgUT3DMwi//B03CkqCy3RuTY3AkLIYqdYc8wVukBIejtGr14nqvLy0tD7FvNb+F5XvItUZZsADBYD6WCfcI4xT+OLN7URigPWc4oEmvA1+hVFXmxyc93A2lOxw8Vla63n5NaVtCs6eh6qiiE6ruOIJhg2PXpHL1cs0ajl8= Received: from MN2PR12MB3966.namprd12.prod.outlook.com (2603:10b6:208:165::18) by PH8PR12MB7208.namprd12.prod.outlook.com (2603:10b6:510:224::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6319.22; Fri, 21 Apr 2023 00:51:06 +0000 Received: from MN2PR12MB3966.namprd12.prod.outlook.com ([fe80::46f1:bdce:a4bc:29e3]) by MN2PR12MB3966.namprd12.prod.outlook.com ([fe80::46f1:bdce:a4bc:29e3%3]) with mapi id 15.20.6319.022; Fri, 21 Apr 2023 00:51:05 +0000 From: "Chang, Abner" To: Tinh Nguyen , "devel@edk2.groups.io" CC: Isaac Oram , "Attar, AbdulLateef (Abdul Lateef)" , Nickle Wang , Igor Kulchytskyy Subject: Re: [edk2-devel] [edk2-platforms][PATCH V2 02/14] ManageabilityPkg: Support Maximum Transfer Unit Thread-Topic: [edk2-devel] [edk2-platforms][PATCH V2 02/14] ManageabilityPkg: Support Maximum Transfer Unit Thread-Index: AQHZc058z58Z/Ae3j0ydySQvWX5LFK806bRA Date: Fri, 21 Apr 2023 00:51:05 +0000 Message-ID: References: <20230418071543.1951-1-abner.chang@amd.com> <20230418071543.1951-3-abner.chang@amd.com> <0e8628de-5da9-849d-db7d-ae0b6be126b1@amperemail.onmicrosoft.com> In-Reply-To: <0e8628de-5da9-849d-db7d-ae0b6be126b1@amperemail.onmicrosoft.com> Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Enabled=true; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_SetDate=2023-04-21T00:51:04Z; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Method=Standard; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Name=General; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_SiteId=3dd8961f-e488-4e60-8e11-a82d994e183d; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_ActionId=0ace9589-7df7-4efe-ae00-ca367436b253; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_ContentBits=1 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amd.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MN2PR12MB3966:EE_|PH8PR12MB7208:EE_ x-ms-office365-filtering-correlation-id: 0996234d-62bb-4424-c5a6-08db42027d0b x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: TMovehJHKhKv8N3moqYoECfitotAHNm6KSJt3ok6ktnbWRjADrEj3ObY6aX47sATkF3ss4MJhZcZ/2lw6a9lV0CYKOMhL0lVLdnamWmzVexhy90my1jHyGJBLtbixyHHw0dq/4a0xRsTdUDPL3S2PJQBrV/XKK8XmunBvELK11RzPYJKi92DTmjbnwSXGqg78bMJJKmso/bLGEx6/kYC1jHHR0KOONHSk8TnVv1LnDwdqNGu7oEkk0blD+gv6uqSnDkrLy8Xd7b61sTZ6nNsTv2iGHyAIYMBAcgKOT/LPD+G7QlsIb+cujPfi1Aqn3/m5El/8JubLOY3NeOSevyNFjxFNaw5oGBFl7CHeCOmkOlxiMU+IVc0pu7qJ8Zd59Z+dlc7G0rxyhpQsUanCfNz0Rx4Gq94woz6KRX9OIaiXZi0P+bJrST6o1BA7H8vJowheQakdq9ivfcuraoqHYVzguNesGwru4s83w5L+VxjsEe2+WHms67FDguZDiXxs60f4pG6bs76RHyBjvwabYaDzhDKQArTFO27pympsjj+1WdzAySMwdFCvEl1mQQVLVl5RWkbi+9BCsS/qlwGIPNonmv16OdO5vtwUJh4UTRQRMDK6H4vAw5LYGsrNxk+3OvaWWQPaCNgJvNMlfc4dIaXmA== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN2PR12MB3966.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(366004)(376002)(39860400002)(346002)(136003)(396003)(451199021)(110136005)(54906003)(83380400001)(478600001)(6506007)(7696005)(55016003)(9686003)(26005)(71200400001)(76116006)(66476007)(19627235002)(66556008)(64756008)(66446008)(41300700001)(122000001)(66946007)(53546011)(4326008)(316002)(296002)(186003)(52536014)(5660300002)(38070700005)(38100700002)(8676002)(8936002)(2906002)(30864003)(33656002)(86362001)(559001)(579004)(44824005);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?dzBodmlBTTl5V010WVdacHFOb0Vac2Q0TnAwVHVIK1ZXSVFhM0tVUENEaXV2?= =?utf-8?B?ei9nUEpEaUV4c1REbHBDMjQ0TUFzVHJiU21RM01yay9kUlpHYjdXaW1veGRM?= =?utf-8?B?YUF1b0haaWdZa1VJdVdKTHdNZEZ5bkowNXhXNVNoTXhlK3lmeVNNRDlLS2t0?= =?utf-8?B?RW5DWk83VTBkZkRQZm80TWIrSnR1RmZLVnRJaUIvcmh2cDRidWhocmI2Y000?= =?utf-8?B?UmVONGRYMFVObXVDcm0vRzkwaGdhNmIzQkQ0VmdBMmN5R0htc3lGaDBmMWc2?= =?utf-8?B?V1ZEMXJKNzVBckJDcjNqa0RYYzlMUEczd0hGYm5zTEtsamRlaVpyRExWazhJ?= =?utf-8?B?dURqdjUwZ0NqbWgxMWpVRlc4dnMvaC9rQmJ4c1VZTDRDTFRvNWE4UkxHVFZ2?= =?utf-8?B?OVBvQnpQTWlNdG1KZG5nVWNobEpOcHdKWG5KWjh4RTZQOXZpMDN6SnEyUmt0?= =?utf-8?B?Qm96bGZsRDROSFJmaHlraWlSSFd5cTJpa3k2SnMyZ2hCd0Y0QXB0Tk14Z2Jp?= =?utf-8?B?Yk5ucWZBQXNJTFNNZnJ6VFZSOEF6YUlud2N2M2pDcXBTWmdaTmhLcjh0NVUw?= =?utf-8?B?Ym85U25saG1KbmF3ZzNXcm8yaUFHNHBtL0FiOWhjZWcyNzExaFlleWJpRGZC?= =?utf-8?B?aGdSMjBRZGI3cVdRRGFhSmVCWmptdktocXNjZGZoeVpWWmxkTzdNR0RoZ0xU?= =?utf-8?B?MFNSaXJNcEVHaVczS214MEhDZGxkNDkvNStuYWxDV283NzlBelVLblZsUlFk?= =?utf-8?B?RjNGUWxhYUtFL2RCNGxtZXZSNHpsS0doSkVBeFhsYW82UUJGRzF1bHNjMFdU?= =?utf-8?B?NERPWkN2d0R6TndObDI1K0p2R1JNNVZyNURhNzY2b2VZTWNocXRvLzNQQzFa?= =?utf-8?B?L2RQQlpSdndLTVdiQnVBMnRmbCtnWHVaMWVvYlhXWWhsQzFzdFIzQXZEdWVM?= =?utf-8?B?dlU3N21OUFVlbE9QY0N6TlBsUFFlbHk5Zi9tQW44emxudEFWdk9hb2FHL2lF?= =?utf-8?B?QVBjMU01bmFFNHVESTgwdUJUTHhOM003MVZIT3paNkt3cEVtRDNJVjhyMnFk?= =?utf-8?B?L1hER2N4ZWh0Q0xyVDh5NFJvTmtoRlJ3QndiU09QZ29ERldYWHFXMktsVTlI?= =?utf-8?B?L01MK3daWVN3cTN5c2VDdWZMemp5M0FHbjA0SzVvS3k3cFBHa2xRcUxybzI5?= =?utf-8?B?ZU1uOHFFSndrR3FMZEtLUHVucnBZYkIybFdRYnRVL0dqekh1ZEcxK0ROVExL?= =?utf-8?B?dGJVK0hFLzAxeWszZWsrL2ViTDZPQjJwR1o0NUxudklGTllIVzVjSW5kWmFV?= =?utf-8?B?R1YyMElreGZUUS9JYVBZWmJxRVBvZ2VzdUIxUm9sTGhCVWJDSlVtWmJSL3V1?= =?utf-8?B?K29UQnhRSVVPNVk0V05xbjAveDFNRkQ2NEc5WFROZWwxeW9WeWRBUmNCWjRa?= =?utf-8?B?c0hNSG40MmZCTUJpMlJRUHYyK1BaTW1KYWkrTUQ2U2FxSjhCSjdTWGVoWGhs?= =?utf-8?B?Z3RxT2k5UlVpTzBvVkM2UXRVcEU3eVJ0aktXRkdxR1cvbEtuelR4dktON2c2?= =?utf-8?B?b1hYRE56K1o1YjRMbnltT0xJWkNkWldlWXV5R0xsUHc4dlU1Q0I4aThsV0wr?= =?utf-8?B?QWJzQ0ozUHIvRUJBVEd5TXQ4Kzhrd1B2eTMrQXp2aENlT1FtMDFldEZwMk5w?= =?utf-8?B?U1lNM3dYQWwvbHpKdFJIMVBNSS92MFpNZ0RHUWR3cEo5ZDkraG1XM0poaXRD?= =?utf-8?B?V0pXSjZoQmFtbXdQaXVUZGp4azNoZTN4U0tPY0p4cWJuRUVnYmoyUUVnRmFm?= =?utf-8?B?YzUxVjIzNU0zN1I3VGlqZ2VRbzZwNGtZVDlzdzZSczdBejZhOU1WREFPMStm?= =?utf-8?B?ZG9lK2MxSG0yRDhTeFcwdit3a3RZN01UK0RUN3FscnhsOGRvaTVhYVR0RzIv?= =?utf-8?B?NU8vNC9nSUVJbU5JbjFOR1FSQ3dGSjdZLzNrL3hBZGVQVUt5Q1hQRnh5WWVo?= =?utf-8?B?eU9URVhKYmlvUDlISlp3ZkdzZHVFZUZJL3lYTTgrTExaTk95R09sNUVucFNs?= =?utf-8?B?UFVsV1o0YlBLZE9KbmZaTXdlM0xlWkJRLzVyV1lnQVlmV2VOSDNtWitEUjMr?= =?utf-8?Q?8pThE/7pc/nebWBo5TRy5n+UG?= MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN2PR12MB3966.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0996234d-62bb-4424-c5a6-08db42027d0b X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Apr 2023 00:51:05.8333 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: wTN5Cpg6SRkKtytK46sVJ9SxSWArz8L1vzZEapjh+SqBQjHN3xNfD8x/Ez6qJBVRVn11ycZQHQet3XU3+YVc4g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR12MB7208 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 W0FNRCBPZmZpY2lhbCBVc2UgT25seSAtIEdlbmVyYWxdDQoNCg0KDQo+IC0tLS0tT3JpZ2luYWwg TWVzc2FnZS0tLS0tDQo+IEZyb206IFRpbmggTmd1eWVuIDx0aW5obmd1eWVuQGFtcGVyZW1haWwu b25taWNyb3NvZnQuY29tPg0KPiBTZW50OiBUaHVyc2RheSwgQXByaWwgMjAsIDIwMjMgMjowOCBQ TQ0KPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW87IENoYW5nLCBBYm5lciA8QWJuZXIuQ2hhbmdA YW1kLmNvbT4NCj4gQ2M6IElzYWFjIE9yYW0gPGlzYWFjLncub3JhbUBpbnRlbC5jb20+OyBBdHRh ciwgQWJkdWxMYXRlZWYgKEFiZHVsIExhdGVlZikNCj4gPEFiZHVsTGF0ZWVmLkF0dGFyQGFtZC5j b20+OyBOaWNrbGUgV2FuZyA8bmlja2xld0BudmlkaWEuY29tPjsgSWdvcg0KPiBLdWxjaHl0c2t5 eSA8aWdvcmtAYW1pLmNvbT4NCj4gU3ViamVjdDogUmU6IFtlZGsyLWRldmVsXSBbZWRrMi1wbGF0 Zm9ybXNdW1BBVENIIFYyIDAyLzE0XQ0KPiBNYW5hZ2VhYmlsaXR5UGtnOiBTdXBwb3J0IE1heGlt dW0gVHJhbnNmZXIgVW5pdA0KPiANCj4gQ2F1dGlvbjogVGhpcyBtZXNzYWdlIG9yaWdpbmF0ZWQg ZnJvbSBhbiBFeHRlcm5hbCBTb3VyY2UuIFVzZSBwcm9wZXINCj4gY2F1dGlvbiB3aGVuIG9wZW5p bmcgYXR0YWNobWVudHMsIGNsaWNraW5nIGxpbmtzLCBvciByZXNwb25kaW5nLg0KPiANCj4gDQo+ IEhpIEFibmVyLA0KPiANCj4gSSBoYXZlIHNvbWUgaW5saW5lIGNvbW1lbnRzIGJlbG93DQo+IA0K PiBPbiAxOC8wNC8yMDIzIDE0OjE1LCBDaGFuZywgQWJuZXIgdmlhIGdyb3Vwcy5pbyB3cm90ZToN Cj4gPiBGcm9tOiBBYm5lciBDaGFuZyA8YWJuZXIuY2hhbmdAYW1kLmNvbT4NCj4gPg0KPiA+IFVw ZGF0ZSBHZXRUcmFuc3BvcnRDYXBhYmlsaXR5IHRvIHN1cHBvcnQgTWF4aW11bSBUcmFuc2ZlciBV bml0IChNVFUpDQo+ID4gb2YgdHJhbnNwb3J0IGludGVyZmFjZS4NCj4gPg0KPiA+IFNpZ25lZC1v ZmYtYnk6IEFibmVyIENoYW5nIDxhYm5lci5jaGFuZ0BhbWQuY29tPg0KPiA+IENjOiBJc2FhYyBP cmFtIDxpc2FhYy53Lm9yYW1AaW50ZWwuY29tPg0KPiA+IENjOiBBYmR1bCBMYXRlZWYgQXR0YXIg PGFiZGF0dGFyQGFtZC5jb20+DQo+ID4gQ2M6IE5pY2tsZSBXYW5nIDxuaWNrbGV3QG52aWRpYS5j b20+DQo+ID4gQ2M6IElnb3IgS3VsY2h5dHNreXkgPGlnb3JrQGFtaS5jb20+DQo+ID4gLS0tDQo+ ID4gICAuLi4vTGlicmFyeS9NYW5hZ2VhYmlsaXR5VHJhbnNwb3J0TGliLmggICAgICAgfCAzMyAr KysrKysrKy0tLQ0KPiA+ICAgLi4uL0NvbW1vbi9NYW5hZ2VhYmlsaXR5VHJhbnNwb3J0S2NzLmgg ICAgICAgIHwgIDIgKw0KPiA+ICAgLi4uL0lwbWlQcm90b2NvbC9QZWkvSXBtaVBwaUludGVybmFs LmggICAgICAgIHwgIDggKystDQo+ID4gICAuLi4vQmFzZU1hbmFnZWFiaWxpdHlUcmFuc3BvcnRO dWxsLmMgICAgICAgICAgfCAxOCArKysrLS0NCj4gPiAgIC4uLi9EeGUvTWFuYWdlYWJpbGl0eVRy YW5zcG9ydEtjcy5jICAgICAgICAgICB8IDU3ICsrKysrKysrKysrLS0tLS0tLS0NCj4gPiAgIC4u Li9Vbml2ZXJzYWwvSXBtaVByb3RvY29sL0R4ZS9JcG1pUHJvdG9jb2wuYyB8IDI0ICsrKysrKy0t DQo+ID4gICAuLi4vVW5pdmVyc2FsL0lwbWlQcm90b2NvbC9QZWkvSXBtaVBwaS5jICAgICAgfCA1 MSArKysrKysrKysrLS0tLS0tLQ0KPiA+ICAgLi4uL1VuaXZlcnNhbC9JcG1pUHJvdG9jb2wvU21t L0lwbWlQcm90b2NvbC5jIHwgMjQgKysrKysrLS0NCj4gPiAgIDggZmlsZXMgY2hhbmdlZCwgMTQ1 IGluc2VydGlvbnMoKyksIDcyIGRlbGV0aW9ucygtKQ0KPiA+DQo+ID4gZGlmZiAtLWdpdA0KPiA+ IGEvRmVhdHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9JbmNsdWRlL0xpYnJhcnkvTWFuYWdlYWJpbGl0 eVRyYW5zcG9ydExpYi4NCj4gPiBoDQo+ID4gYi9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL0lu Y2x1ZGUvTGlicmFyeS9NYW5hZ2VhYmlsaXR5VHJhbnNwb3J0TGliLg0KPiA+IGgNCj4gPiBpbmRl eCBjMDIyYjRhYzVjLi5kODZkMGQ4N2Q1IDEwMDY0NA0KPiA+IC0tLQ0KPiA+IGEvRmVhdHVyZXMv TWFuYWdlYWJpbGl0eVBrZy9JbmNsdWRlL0xpYnJhcnkvTWFuYWdlYWJpbGl0eVRyYW5zcG9ydExp Yi4NCj4gPiBoDQo+ID4gKysrIGIvRmVhdHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9JbmNsdWRlL0xp YnJhcnkvTWFuYWdlYWJpbGl0eVRyYW5zcG9ydA0KPiA+ICsrKyBMaWIuaA0KPiA+IEBAIC0xNCw2 ICsxNCw5IEBADQo+ID4gICAjZGVmaW5lIE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX1RPS0VOX1ZF UlNJT04NCj4gKChNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9UT0tFTl9WRVJTSU9OX01BSk9SIDw8 IDgpIHxcDQo+ID4NCj4gPiBNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9UT0tFTl9WRVJTSU9OX01J Tk9SKQ0KPiA+DQo+ID4gKyNkZWZpbmUNCj4gTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRfUEFZTE9B RF9TSVpFX0ZST01fQ0FQQUJJTElUWShhKSAgKDEgPDwNCj4gKChhICYNCj4gTUFOQUdFQUJJTElU WV9UUkFOU1BPUlRfQ0FQQUJJTElUWV9NQVhJTVVNX1BBWUxPQURfTUFTSykNCj4gPj5cDQo+ID4g Kw0KPiA+DQo+ICtNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9DQVBBQklMSVRZX01BWElNVU1fUEFZ TE9BRF9CSVRfUE8NCj4gU0lUSU9OKSkNCj4gPiArDQo+ID4gICB0eXBlZGVmIHN0cnVjdCAgX01B TkFHRUFCSUxJVFlfVFJBTlNQT1JUX0ZVTkNUSU9OX1YxXzANCj4gTUFOQUdFQUJJTElUWV9UUkFO U1BPUlRfRlVOQ1RJT05fVjFfMDsNCj4gPiAgIHR5cGVkZWYgc3RydWN0ICBfTUFOQUdFQUJJTElU WV9UUkFOU1BPUlQNCj4gTUFOQUdFQUJJTElUWV9UUkFOU1BPUlQ7DQo+ID4gICB0eXBlZGVmIHN0 cnVjdCAgX01BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX1RPS0VODQo+IE1BTkFHRUFCSUxJVFlfVFJB TlNQT1JUX1RPS0VOOw0KPiA+IEBAIC02OCw4ICs3MSwxNyBAQCB0eXBlZGVmIFVJTlQzMg0KPiBN QU5BR0VBQklMSVRZX1RSQU5TUE9SVF9BRERJVElPTkFMX1NUQVRVUzsNCj4gPiAgIC8vLyBBZGRp dGlvbmFsIHRyYW5zcG9ydCBpbnRlcmZhY2UgZmVhdHVyZXMuDQo+ID4gICAvLy8NCj4gPiAgIHR5 cGVkZWYgVUlOVDMyIE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX0NBUEFCSUxJVFk7DQo+ID4gKy8v LyBCaXQgMA0KPiA+ICAgI2RlZmluZQ0KPiBNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9DQVBBQklM SVRZX01VTFRJUExFX1RSQU5TRkVSX1RPS0VOUw0KPiAweDAwMDAwMDAxDQo+ID4gLSNkZWZpbmUN Cj4gTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRfQ0FQQUJJTElUWV9BU1lOQ0hST05PVVNfVFJBTlNG RVINCj4gMHgwMDAwMDAwMg0KPiA+ICsvLy8gQml0IDENCj4gPiArI2RlZmluZQ0KPiBNQU5BR0VB QklMSVRZX1RSQU5TUE9SVF9DQVBBQklMSVRZX0FTWU5DSFJPTk9VU19UUkFOU0ZFUg0KPiAweDAw MDAwMDAyDQo+ID4gKy8vLyBCaXQgMiAgIC0gUmVzZXJ2ZWQNCj4gPiArLy8vIEJpdCA3OjMgLSBU cmFuc3BvcnQgaW50ZXJmYWNlIG1heGltdW0gcGF5bG9hZCBzaXplLCB3aGljaCBpcyAoMiBeIGJp dFs3OjNdDQo+IC0gMSkNCj4gPiArLy8vICAgICAgICAgICBiaXRbNzozXSBtZWFucyBubyBtYXhp bXVtIHBheWxvYWQuDQo+IA0KPiBJIGFtIGNvbmZ1c2VkIHdpdGggeW91ciBkZWZpbml0aW9uIGhl cmUuDQo+IA0KPiBXaHkgZG9lcyBpdCBoYXZlIHRvIGJlIGEgcG93ZXIgb2YgMj8NClVzdWFsbHkg dGhlIG1heGltdW0vbWluaW11bSBpcyBpbiAgcG93ZXIgb2YgMiBhbmQgdXNlIHBvd2VyIG9mIDIg aGFzIGxlc3MgYml0cyBvY2N1cGllZCBmcm9tIE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX0NBUEFC SUxJVFkuDQoNCj4gDQo+IEFuZCB3ZSBzaG91bGQgc2VwYXJhdGUgcmVxdWVzdCBwYXlsb2FkIHNp emUgYW5kIHJlc3BvbnNlIHBheWxvYWQgc2l6ZQ0KPiANCj4gQ2FuIHlvdSBjbGFyaWZ5IG1vcmUg YWJvdXQgdGhhdD8NCkRvIHdlIHJlYWxseSBuZWVkIHRoZSBtYXhpbXVtIHNpemUgZm9yIHJlc3Bv bnNlPyBSZXNwb25zZSBpcyBpbml0aWF0ZWQgYnkgdGFyZ2V0IGVuZHBvaW50IGFuZCBzdXBwb3Nl IHRoZSBwYXlsb2FkIGhlYWRlciBzaG91bGQgaGF2ZSBzb21lIGZpZWxkcyB0aGF0IGluZGljYXRl IHRoZSByZXR1cm4gcGF5bG9hZCBpcyBvbmx5IHBhcnQgb2YgcmVzcG9uc2UuIFRoZSBzaXplIG9m IHBheWxvYWQgcmV0dXJuZWQgaXMgYWN0dWFsbHkgbWF4aW11bSB0cmFuc2ZlciBzaXplIHRoYXQg dGFyZ2V0IGVuZHBvaW50IGNhbiBoYW5kbGUuDQpEbyB5b3Uga25vdyBhbnkgY2FzZSB0aGF0IHJl Y2VpdmVyIGhhcyBubyBpZGVhIGFib3V0IGlmIHRoZSBwYXlsb2FkIHNlbnQgYmFjayBmcm9tIHRh cmdldCBlbmRwb2ludCBpcyBhIHBhcnRpYWwgb2YgcmVzcG9uc2Ugb3Igbm90PyAgV2Ugc2hvdWxk IGhhdmUgTVRVIHJlc3BvbnNlIGlmIGl0IGlzIHJlcXVpcmVkIGZvciB0aGUgdHJhbnNwb3J0IGlu dGVyZmFjZS4NCg0KPiANCj4gQW5vdGhlciBxdWVzdGlvbiwgb25seSBQRUlfSVBNSV9QUElfSU5U RVJOQUwgY29udGFpbnMgTWF4UGF5bG9hZFNpemUsDQpQUEkgaGFzIE1heFBheWxvYWRTaXplIGlu IHN0cnVjdHVyZSBpcyBiZWNhdXNlIHdlIGNhbid0IGRlZmluZSBhIGdsb2JhbCB2YXJpYWJsZSBm b3IgUEVJIG1vZHVsZSBhcyBtb2R1bGUgaXMgZXhlY3V0ZWQgaW4gcGxhY2UuDQoNCj4gaG93IGRv IElQTUkvTUNUUC9QTERNIHByb3RvY29sIHByb3ZpZGUgTWF4cGF5bG9hZHNpemUNCkZvciBEWEUg ZHJpdmVycywgdGhlIE1heHBheWxvYWRzaXplIGlzIGRlZmluZWQgYXMgZ2xvYmFsIHZhcmlhYmxl Lg0KDQo+IA0KPiB0byBjYWxsZXI/DQo+IA0KPiA+ICsjZGVmaW5lDQo+IE1BTkFHRUFCSUxJVFlf VFJBTlNQT1JUX0NBUEFCSUxJVFlfTUFYSU1VTV9QQVlMT0FEX01BU0sNCj4gMHgwMDAwMDBmOA0K PiA+ICsjZGVmaW5lDQo+IE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX0NBUEFCSUxJVFlfTUFYSU1V TV9QQVlMT0FEX0JJVF9QT1MNCj4gSVRJT04gICAzDQo+ID4gKyNkZWZpbmUNCj4gPg0KPiArTUFO QUdFQUJJTElUWV9UUkFOU1BPUlRfQ0FQQUJJTElUWV9NQVhJTVVNX1BBWUxPQURfTk9UX0ENCj4g VkFJTEFCTEUNCj4gPiArMHgwMCAvLy8gQml0IDg6MzEgLSBSZXNlcnZlZA0KPiA+DQo+ID4gICAv Ly8NCj4gPiAgIC8vLyBEZWZpbml0aW9ucyBvZiBNYW5hZ2VhYmlsaXR5IHRyYW5zcG9ydCBpbnRl cmZhY2UgZnVuY3Rpb25zLg0KPiA+IEBAIC0xODcsMTUgKzE5OSwyMCBAQCBBY3F1aXJlVHJhbnNw b3J0U2Vzc2lvbiAoDQo+ID4gICAgICk7DQo+ID4NCj4gPiAgIC8qKg0KPiA+IC0gIFRoaXMgZnVu Y3Rpb24gcmV0dXJucyB0aGUgdHJhbnNwb3J0IGNhcGFiaWxpdGllcy4NCj4gPiAtDQo+ID4gLSAg QHBhcmFtIFtvdXRdICBUcmFuc3BvcnRGZWF0dXJlICAgICAgICBQb2ludGVyIHRvIHJlY2VpdmUg dHJhbnNwb3J0DQo+IGNhcGFiaWxpdGllcy4NCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFNlZSB0aGUgZGVmaW5pdGlvbnMgb2YNCj4gPiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX0NBUEFC SUxJVFkuDQo+ID4gLQ0KPiA+ICsgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgdHJhbnNwb3J0 IGNhcGFiaWxpdGllcyBhY2NvcmRpbmcgdG8gIHRoZQ0KPiA+ICsgbWFuYWdlYWJpbGl0eSBwcm90 b2NvbC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtIFtpbl0gICBUcmFuc3BvcnRUb2tlbiAgICAgICAg ICAgICBUcmFuc3BvcnQgdG9rZW4gYWNxdWlyZWQgZnJvbQ0KPiBtYW5hZ2VhYmlsaXR5DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3BvcnQgbGli cmFyeS4NCj4gPiArICBAcGFyYW0gW291dF0gIFRyYW5zcG9ydEZlYXR1cmUgICAgICAgICAgIFBv aW50ZXIgdG8gcmVjZWl2ZSB0cmFuc3BvcnQNCj4gY2FwYWJpbGl0aWVzLg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSBkZWZpbml0aW9ucyBv Zg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUFOQUdF QUJJTElUWV9UUkFOU1BPUlRfQ0FQQUJJTElUWS4NCj4gPiArICBAcmV0dmFsICAgICAgIEVGSV9T VUNDRVNTICAgICAgICAgICAgICAgIFRyYW5zcG9ydENhcGFiaWxpdHkgaXMgcmV0dXJuZWQNCj4g c3VjY2Vzc2Z1bGx5Lg0KPiA+ICsgIEByZXR2YWwgICAgICAgRUZJX0lOVkFMSURfUEFSQU1FVEVS ICAgICAgVHJhbnNwb3J0VG9rZW4gaXMgbm90IGEgdmFsaWQNCj4gdG9rZW4uDQo+ID4gICAqKi8N Cj4gPiAtVk9JRA0KPiA+ICtFRklfU1RBVFVTDQo+ID4gICBHZXRUcmFuc3BvcnRDYXBhYmlsaXR5 ICgNCj4gPiArICBJTiBNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9UT0tFTiAgICAgICAgKlRyYW5z cG9ydFRva2VuLA0KPiA+ICAgICBPVVQgTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRfQ0FQQUJJTElU WSAgKlRyYW5zcG9ydENhcGFiaWxpdHkNCj4gPiAgICAgKTsNCj4gPg0KPiA+IGRpZmYgLS1naXQN Cj4gPg0KPiBhL0ZlYXR1cmVzL01hbmFnZWFiaWxpdHlQa2cvTGlicmFyeS9NYW5hZ2VhYmlsaXR5 VHJhbnNwb3J0S2NzTGliL0NvbW1vDQo+ID4gbi9NYW5hZ2VhYmlsaXR5VHJhbnNwb3J0S2NzLmgN Cj4gPg0KPiBiL0ZlYXR1cmVzL01hbmFnZWFiaWxpdHlQa2cvTGlicmFyeS9NYW5hZ2VhYmlsaXR5 VHJhbnNwb3J0S2NzTGliL0NvbW0NCj4gbw0KPiA+IG4vTWFuYWdlYWJpbGl0eVRyYW5zcG9ydEtj cy5oDQo+ID4gaW5kZXggZjE3NThmZmQ4Zi4uMmNkZjYwYmE3ZSAxMDA2NDQNCj4gPiAtLS0NCj4g Pg0KPiBhL0ZlYXR1cmVzL01hbmFnZWFiaWxpdHlQa2cvTGlicmFyeS9NYW5hZ2VhYmlsaXR5VHJh bnNwb3J0S2NzTGliL0NvbW1vDQo+ID4gbi9NYW5hZ2VhYmlsaXR5VHJhbnNwb3J0S2NzLmgNCj4g PiArKysgYi9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL0xpYnJhcnkvTWFuYWdlYWJpbGl0eVRy YW5zcG9ydEtjc0xpYi9DDQo+ID4gKysrIG9tbW9uL01hbmFnZWFiaWxpdHlUcmFuc3BvcnRLY3Mu aA0KPiA+IEBAIC0zMiw2ICszMiw4IEBAIHR5cGVkZWYgc3RydWN0IHsNCj4gPiAgICNkZWZpbmUg SVBNSV9LQ1NfR0VUX1NUQVRFKHMpICAocyA+PiA2KQ0KPiA+ICAgI2RlZmluZSBJUE1JX0tDU19T RVRfU1RBVEUocykgIChzIDw8IDYpDQo+ID4NCj4gPiArI2RlZmluZSBNQ1RQX0tDU19NVFVfSU5f UE9XRVJfT0ZfMiAgOA0KPiA+ICsNCj4gPiAgIC8vLyA1IHNlYywgYWNjb3JkaW5nIHRvIElQTUkg c3BlYw0KPiA+ICAgI2RlZmluZSBJUE1JX0tDU19USU1FT1VUXzVfU0VDICA1MDAwKjEwMDANCj4g PiAgICNkZWZpbmUgSVBNSV9LQ1NfVElNRU9VVF8xTVMgICAgMTAwMA0KPiA+IGRpZmYgLS1naXQN Cj4gPiBhL0ZlYXR1cmVzL01hbmFnZWFiaWxpdHlQa2cvVW5pdmVyc2FsL0lwbWlQcm90b2NvbC9Q ZWkvSXBtaVBwaUludGVybmFsDQo+ID4gLmgNCj4gPiBiL0ZlYXR1cmVzL01hbmFnZWFiaWxpdHlQ a2cvVW5pdmVyc2FsL0lwbWlQcm90b2NvbC9QZWkvSXBtaVBwaUludGVybmFsDQo+ID4gLmgNCj4g PiBpbmRleCBiYmUwYzhjNWNiLi40YjZiZGM5N2E5IDEwMDY0NA0KPiA+IC0tLQ0KPiA+IGEvRmVh dHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9Vbml2ZXJzYWwvSXBtaVByb3RvY29sL1BlaS9JcG1pUHBp SW50ZXJuYWwNCj4gPiAuaA0KPiA+ICsrKyBiL0ZlYXR1cmVzL01hbmFnZWFiaWxpdHlQa2cvVW5p dmVyc2FsL0lwbWlQcm90b2NvbC9QZWkvSXBtaVBwaUludGUNCj4gPiArKysgcm5hbC5oDQo+ID4g QEAgLTE3LDkgKzE3LDExIEBADQo+ID4gICAjZGVmaW5lIE1BTkFHRUFCSUxJVFlfSVBNSV9QUElf SU5URVJOQUxfRlJPTV9MSU5LKGEpICBDUiAoYSwNCj4gPiBQRUlfSVBNSV9QUElfSU5URVJOQUws IFBlaUlwbWlQcGksDQo+ID4gTUFOQUdFQUJJTElUWV9JUE1JX1BQSV9JTlRFUk5BTF9TSUdOQVRV UkUpDQo+ID4NCj4gPiAgIHR5cGVkZWYgc3RydWN0IHsNCj4gPiAtICBVSU5UMzIgICAgICAgICAg ICAgICAgICAgICAgICAgU2lnbmF0dXJlOw0KPiA+IC0gIE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JU X1RPS0VOICAqVHJhbnNwb3J0VG9rZW47DQo+ID4gLSAgUEVJX0lQTUlfUFBJICAgICAgICAgICAg ICAgICAgIFBlaUlwbWlQcGk7DQo+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBTaWduYXR1cmU7DQo+ID4gKyAgTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRfVE9LRU4g ICAgICAgICAqVHJhbnNwb3J0VG9rZW47DQo+ID4gKyAgTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRf Q0FQQUJJTElUWSAgICBUcmFuc3BvcnRDYXBhYmlsaXR5Ow0KPiA+ICsgIFVJTlQzMiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNwb3J0TWF4aW11bVBheWxvYWQ7DQo+ID4gKyAg UEVJX0lQTUlfUFBJICAgICAgICAgICAgICAgICAgICAgICAgICBQZWlJcG1pUHBpOw0KPiA+ICAg fSBQRUlfSVBNSV9QUElfSU5URVJOQUw7DQo+ID4NCj4gPiAgICNlbmRpZiAvLyBNQU5BR0VBQklM SVRZX0lQTUlfUFBJX0lOVEVSTkFMX0hfDQo+ID4gZGlmZiAtLWdpdA0KPiA+IGEvRmVhdHVyZXMv TWFuYWdlYWJpbGl0eVBrZy9MaWJyYXJ5L0Jhc2VNYW5hZ2VhYmlsaXR5VHJhbnNwb3J0TnVsbExp Yi8NCj4gPiBCYXNlTWFuYWdlYWJpbGl0eVRyYW5zcG9ydE51bGwuYw0KPiA+IGIvRmVhdHVyZXMv TWFuYWdlYWJpbGl0eVBrZy9MaWJyYXJ5L0Jhc2VNYW5hZ2VhYmlsaXR5VHJhbnNwb3J0TnVsbExp Yi8NCj4gPiBCYXNlTWFuYWdlYWJpbGl0eVRyYW5zcG9ydE51bGwuYw0KPiA+IGluZGV4IDQ5ZmM4 YzBmNzEuLjNhYTY4NTc4YTYgMTAwNjQ0DQo+ID4gLS0tDQo+ID4gYS9GZWF0dXJlcy9NYW5hZ2Vh YmlsaXR5UGtnL0xpYnJhcnkvQmFzZU1hbmFnZWFiaWxpdHlUcmFuc3BvcnROdWxsTGliLw0KPiA+ IEJhc2VNYW5hZ2VhYmlsaXR5VHJhbnNwb3J0TnVsbC5jDQo+ID4gKysrDQo+IGIvRmVhdHVyZXMv TWFuYWdlYWJpbGl0eVBrZy9MaWJyYXJ5L0Jhc2VNYW5hZ2VhYmlsaXR5VHJhbnNwb3J0TnVsbA0K PiA+ICsrKyBMaWIvQmFzZU1hbmFnZWFiaWxpdHlUcmFuc3BvcnROdWxsLmMNCj4gPiBAQCAtMzEs MTkgKzMxLDI1IEBAIEFjcXVpcmVUcmFuc3BvcnRTZXNzaW9uICgNCj4gPiAgIH0NCj4gPg0KPiA+ ICAgLyoqDQo+ID4gLSAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSB0cmFuc3BvcnQgY2FwYWJp bGl0aWVzLg0KPiA+IC0NCj4gPiAtICBAcGFyYW0gW291dF0gIFRyYW5zcG9ydEZlYXR1cmUgICAg ICAgIFBvaW50ZXIgdG8gcmVjZWl2ZSB0cmFuc3BvcnQNCj4gY2FwYWJpbGl0aWVzLg0KPiA+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSBkZWZpbml0aW9u cyBvZg0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUFOQUdF QUJJTElUWV9UUkFOU1BPUlRfQ0FQQUJJTElUWS4NCj4gPiArICBUaGlzIGZ1bmN0aW9uIHJldHVy bnMgdGhlIHRyYW5zcG9ydCBjYXBhYmlsaXRpZXMgYWNjb3JkaW5nIHRvICB0aGUNCj4gPiArIG1h bmFnZWFiaWxpdHkgcHJvdG9jb2wuDQo+ID4NCj4gPiArICBAcGFyYW0gW2luXSAgIFRyYW5zcG9y dFRva2VuICAgICAgICAgICAgIFRyYW5zcG9ydCB0b2tlbiBhY3F1aXJlZCBmcm9tDQo+IG1hbmFn ZWFiaWxpdHkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHRyYW5zcG9ydCBsaWJyYXJ5Lg0KPiA+ICsgIEBwYXJhbSBbb3V0XSAgVHJhbnNwb3J0RmVhdHVy ZSAgICAgICAgICAgUG9pbnRlciB0byByZWNlaXZlIHRyYW5zcG9ydA0KPiBjYXBhYmlsaXRpZXMu DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhl IGRlZmluaXRpb25zIG9mDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9DQVBBQklMSVRZLg0KPiA+ICsgIEByZXR2 YWwgICAgICAgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgICAgVHJhbnNwb3J0Q2FwYWJpbGl0eSBp cyByZXR1cm5lZA0KPiBzdWNjZXNzZnVsbHkuDQo+ID4gKyAgQHJldHZhbCAgICAgICBFRklfSU5W QUxJRF9QQVJBTUVURVIgICAgICBUcmFuc3BvcnRUb2tlbiBpcyBub3QgYSB2YWxpZA0KPiB0b2tl bi4NCj4gPiAgICoqLw0KPiA+IC1WT0lEDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiAgIEdldFRyYW5z cG9ydENhcGFiaWxpdHkgKA0KPiA+ICsgIElOIE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX1RPS0VO ICAgICAgICAqVHJhbnNwb3J0VG9rZW4sDQo+ID4gICAgIE9VVCBNQU5BR0VBQklMSVRZX1RSQU5T UE9SVF9DQVBBQklMSVRZICAqVHJhbnNwb3J0Q2FwYWJpbGl0eQ0KPiA+ICAgICApDQo+ID4gICB7 DQo+ID4gICAgICpUcmFuc3BvcnRDYXBhYmlsaXR5ID0gMDsNCj4gPiArICByZXR1cm4gRUZJX1NV Q0NFU1M7DQo+ID4gICB9DQo+ID4NCj4gPiAgIC8qKg0KPiA+IGRpZmYgLS1naXQNCj4gPg0KPiBh L0ZlYXR1cmVzL01hbmFnZWFiaWxpdHlQa2cvTGlicmFyeS9NYW5hZ2VhYmlsaXR5VHJhbnNwb3J0 S2NzTGliL0R4ZS9NDQo+ID4gYW5hZ2VhYmlsaXR5VHJhbnNwb3J0S2NzLmMNCj4gPg0KPiBiL0Zl YXR1cmVzL01hbmFnZWFiaWxpdHlQa2cvTGlicmFyeS9NYW5hZ2VhYmlsaXR5VHJhbnNwb3J0S2Nz TGliL0R4ZS9NDQo+ID4gYW5hZ2VhYmlsaXR5VHJhbnNwb3J0S2NzLmMNCj4gPiBpbmRleCBhYjQx NmU1NDQ5Li43ZDg1Mzc4ZmMxIDEwMDY0NA0KPiA+IC0tLQ0KPiA+DQo+IGEvRmVhdHVyZXMvTWFu YWdlYWJpbGl0eVBrZy9MaWJyYXJ5L01hbmFnZWFiaWxpdHlUcmFuc3BvcnRLY3NMaWIvRHhlL00N Cj4gPiBhbmFnZWFiaWxpdHlUcmFuc3BvcnRLY3MuYw0KPiA+ICsrKyBiL0ZlYXR1cmVzL01hbmFn ZWFiaWxpdHlQa2cvTGlicmFyeS9NYW5hZ2VhYmlsaXR5VHJhbnNwb3J0S2NzTGliL0QNCj4gPiAr KysgeGUvTWFuYWdlYWJpbGl0eVRyYW5zcG9ydEtjcy5jDQo+ID4gQEAgLTYyLDcgKzYyLDcgQEAg S2NzVHJhbnNwb3J0SW5pdCAoDQo+ID4gICAgIH0NCj4gPg0KPiA+ICAgICBpZiAoSGFyZHdhcmVJ bmZvLktjcyA9PSBOVUxMKSB7DQo+ID4gLSAgICBERUJVRyAoKERFQlVHX0lORk8sICIlYTogSGFy ZHdhcmUgaW5mb3JtYXRpb24gaXMgbm90IHByb3ZpZGVkLCB1c2UNCj4gZGZhdWx0IHNldHRpbmdz LlxuIiwgX19GVU5DVElPTl9fKSk7DQo+ID4gKyAgICBERUJVRyAoKERFQlVHX01BTkFHRUFCSUxJ VFlfSU5GTywgIiVhOiBIYXJkd2FyZSBpbmZvcm1hdGlvbiBpcw0KPiA+ICsgbm90IHByb3ZpZGVk LCB1c2UgZGZhdWx0IHNldHRpbmdzLlxuIiwgX19GVU5DVElPTl9fKSk7DQo+ID4gICAgICAgbUtj c0hhcmR3YXJlSW5mby5NZW1vcnlNYXAgICAgICAgICAgICAgICAgICAgID0NCj4gTUFOQUdFQUJJ TElUWV9UUkFOU1BPUlRfS0NTX0lPX01BUF9JTzsNCj4gPiAgICAgICBtS2NzSGFyZHdhcmVJbmZv LklvQmFzZUFkZHJlc3MuSW9BZGRyZXNzMTYgICAgPSBQY2RHZXQxNg0KPiAoUGNkSXBtaUtjc0lv QmFzZUFkZHJlc3MpOw0KPiA+ICAgICAgIG1LY3NIYXJkd2FyZUluZm8uSW9EYXRhSW5BZGRyZXNz LklvQWRkcmVzczE2ICA9DQo+ID4gbUtjc0hhcmR3YXJlSW5mby5Jb0Jhc2VBZGRyZXNzLklvQWRk cmVzczE2ICsNCj4gSVBNSV9LQ1NfREFUQV9JTl9SRUdJU1RFUl9PRkZTRVQ7IEBAIC04MSwyMSAr ODEsMjEgQEANCj4gS2NzVHJhbnNwb3J0SW5pdCAoDQo+ID4gICAgIC8vIEdldCBwcm90b2NvbCBz cGVjaWZpY2F0aW9uIG5hbWUuDQo+ID4gICAgIE1hbmFnZWFiaWxpdHlQcm90b2NvbE5hbWUgPSBI ZWxwZXJNYW5hZ2VhYmlsaXR5U3BlY05hbWUNCj4gPiAoVHJhbnNwb3J0VG9rZW4tPk1hbmFnZWFi aWxpdHlQcm90b2NvbFNwZWNpZmljYXRpb24pOw0KPiA+DQo+ID4gLSAgREVCVUcgKChERUJVR19J TkZPLCAiJWE6IEtDUyB0cmFuc3BvcnQgaGFyZHdhcmUgZm9yICVzIGlzOlxuIiwNCj4gPiBfX0ZV TkNUSU9OX18sIE1hbmFnZWFiaWxpdHlQcm90b2NvbE5hbWUpKTsNCj4gPiArICBERUJVRyAoKERF QlVHX01BTkFHRUFCSUxJVFlfSU5GTywgIiVhOiBLQ1MgdHJhbnNwb3J0IGhhcmR3YXJlDQo+IGZv cg0KPiA+ICsgJXMgaXM6XG4iLCBfX0ZVTkNUSU9OX18sIE1hbmFnZWFiaWxpdHlQcm90b2NvbE5h bWUpKTsNCj4gPiAgICAgaWYgKG1LY3NIYXJkd2FyZUluZm8uTWVtb3J5TWFwKSB7DQo+ID4gLSAg ICBERUJVRyAoKERFQlVHX0lORk8sICJNZW1vcnkgTWFwIEkvT1xuIiwgX19GVU5DVElPTl9fKSk7 DQo+ID4gLSAgICBERUJVRyAoKERFQlVHX0lORk8sICJCYXNlIE1lbW9yeSBBZGRyZXNzIDogMHgl MDh4XG4iLA0KPiBtS2NzSGFyZHdhcmVJbmZvLklvQmFzZUFkZHJlc3MuSW9BZGRyZXNzMzIpKTsN Cj4gPiAtICAgIERFQlVHICgoREVCVUdfSU5GTywgIkRhdGEgaW4gQWRkcmVzcyAgICAgOiAweCUw OHhcbiIsDQo+IG1LY3NIYXJkd2FyZUluZm8uSW9EYXRhSW5BZGRyZXNzLklvQWRkcmVzczMyKSk7 DQo+ID4gLSAgICBERUJVRyAoKERFQlVHX0lORk8sICJEYXRhIG91dCBBZGRyZXNzICAgIDogMHgl MDh4XG4iLA0KPiBtS2NzSGFyZHdhcmVJbmZvLklvRGF0YU91dEFkZHJlc3MuSW9BZGRyZXNzMzIp KTsNCj4gPiAtICAgIERFQlVHICgoREVCVUdfSU5GTywgIkNvbW1hbmQgQWRkcmVzcyAgICAgOiAw eCUwOHhcbiIsDQo+IG1LY3NIYXJkd2FyZUluZm8uSW9Db21tYW5kQWRkcmVzcy5Jb0FkZHJlc3Mz MikpOw0KPiA+IC0gICAgREVCVUcgKChERUJVR19JTkZPLCAiU3RhdHVzIEFkZHJlc3MgICAgICA6 IDB4JTA4eFxuIiwNCj4gbUtjc0hhcmR3YXJlSW5mby5Jb1N0YXR1c0FkZHJlc3MuSW9BZGRyZXNz MzIpKTsNCj4gPiArICAgIERFQlVHICgoREVCVUdfTUFOQUdFQUJJTElUWV9JTkZPLCAiTWVtb3J5 IE1hcCBJL09cbiIsDQo+IF9fRlVOQ1RJT05fXykpOw0KPiA+ICsgICAgREVCVUcgKChERUJVR19N QU5BR0VBQklMSVRZX0lORk8sICJCYXNlIE1lbW9yeSBBZGRyZXNzIDoNCj4gMHglMDh4XG4iLCBt S2NzSGFyZHdhcmVJbmZvLklvQmFzZUFkZHJlc3MuSW9BZGRyZXNzMzIpKTsNCj4gPiArICAgIERF QlVHICgoREVCVUdfTUFOQUdFQUJJTElUWV9JTkZPLCAiRGF0YSBpbiBBZGRyZXNzICAgICA6DQo+ IDB4JTA4eFxuIiwgbUtjc0hhcmR3YXJlSW5mby5Jb0RhdGFJbkFkZHJlc3MuSW9BZGRyZXNzMzIp KTsNCj4gPiArICAgIERFQlVHICgoREVCVUdfTUFOQUdFQUJJTElUWV9JTkZPLCAiRGF0YSBvdXQg QWRkcmVzcyAgICA6DQo+IDB4JTA4eFxuIiwgbUtjc0hhcmR3YXJlSW5mby5Jb0RhdGFPdXRBZGRy ZXNzLklvQWRkcmVzczMyKSk7DQo+ID4gKyAgICBERUJVRyAoKERFQlVHX01BTkFHRUFCSUxJVFlf SU5GTywgIkNvbW1hbmQgQWRkcmVzcyAgICAgOg0KPiAweCUwOHhcbiIsIG1LY3NIYXJkd2FyZUlu Zm8uSW9Db21tYW5kQWRkcmVzcy5Jb0FkZHJlc3MzMikpOw0KPiA+ICsgICAgREVCVUcgKChERUJV R19NQU5BR0VBQklMSVRZX0lORk8sICJTdGF0dXMgQWRkcmVzcyAgICAgIDoNCj4gMHglMDh4XG4i LCBtS2NzSGFyZHdhcmVJbmZvLklvU3RhdHVzQWRkcmVzcy5Jb0FkZHJlc3MzMikpOw0KPiA+ICAg ICB9IGVsc2Ugew0KPiA+IC0gICAgREVCVUcgKChERUJVR19JTkZPLCAiSS9PIE1hcCBJL09cbiIp KTsNCj4gPiAtICAgIERFQlVHICgoREVCVUdfSU5GTywgIkJhc2UgSS9PIHBvcnQgICAgOiAweCUw NHhcbiIsDQo+IG1LY3NIYXJkd2FyZUluZm8uSW9CYXNlQWRkcmVzcy5Jb0FkZHJlc3MxNikpOw0K PiA+IC0gICAgREVCVUcgKChERUJVR19JTkZPLCAiRGF0YSBpbiBJL08gcG9ydCA6IDB4JTA0eFxu IiwNCj4gbUtjc0hhcmR3YXJlSW5mby5Jb0RhdGFJbkFkZHJlc3MuSW9BZGRyZXNzMTYpKTsNCj4g PiAtICAgIERFQlVHICgoREVCVUdfSU5GTywgIkRhdGEgb3V0IEkvTyBwb3J0OiAweCUwNHhcbiIs DQo+IG1LY3NIYXJkd2FyZUluZm8uSW9EYXRhT3V0QWRkcmVzcy5Jb0FkZHJlc3MxNikpOw0KPiA+ IC0gICAgREVCVUcgKChERUJVR19JTkZPLCAiQ29tbWFuZCBJL08gcG9ydCA6IDB4JTA0eFxuIiwN Cj4gbUtjc0hhcmR3YXJlSW5mby5Jb0NvbW1hbmRBZGRyZXNzLklvQWRkcmVzczE2KSk7DQo+ID4g LSAgICBERUJVRyAoKERFQlVHX0lORk8sICJTdGF0dXMgSS9PIHBvcnQgIDogMHglMDR4XG4iLA0K PiBtS2NzSGFyZHdhcmVJbmZvLklvU3RhdHVzQWRkcmVzcy5Jb0FkZHJlc3MxNikpOw0KPiA+ICsg ICAgREVCVUcgKChERUJVR19NQU5BR0VBQklMSVRZX0lORk8sICJJL08gTWFwIEkvT1xuIikpOw0K PiA+ICsgICAgREVCVUcgKChERUJVR19NQU5BR0VBQklMSVRZX0lORk8sICJCYXNlIEkvTyBwb3J0 ICAgIDogMHglMDR4XG4iLA0KPiBtS2NzSGFyZHdhcmVJbmZvLklvQmFzZUFkZHJlc3MuSW9BZGRy ZXNzMTYpKTsNCj4gPiArICAgIERFQlVHICgoREVCVUdfTUFOQUdFQUJJTElUWV9JTkZPLCAiRGF0 YSBpbiBJL08gcG9ydCA6IDB4JTA0eFxuIiwNCj4gbUtjc0hhcmR3YXJlSW5mby5Jb0RhdGFJbkFk ZHJlc3MuSW9BZGRyZXNzMTYpKTsNCj4gPiArICAgIERFQlVHICgoREVCVUdfTUFOQUdFQUJJTElU WV9JTkZPLCAiRGF0YSBvdXQgSS9PIHBvcnQ6DQo+IDB4JTA0eFxuIiwgbUtjc0hhcmR3YXJlSW5m by5Jb0RhdGFPdXRBZGRyZXNzLklvQWRkcmVzczE2KSk7DQo+ID4gKyAgICBERUJVRyAoKERFQlVH X01BTkFHRUFCSUxJVFlfSU5GTywgIkNvbW1hbmQgSS9PIHBvcnQgOg0KPiAweCUwNHhcbiIsIG1L Y3NIYXJkd2FyZUluZm8uSW9Db21tYW5kQWRkcmVzcy5Jb0FkZHJlc3MxNikpOw0KPiA+ICsgICAg REVCVUcgKChERUJVR19NQU5BR0VBQklMSVRZX0lORk8sICJTdGF0dXMgSS9PIHBvcnQgIDogMHgl MDR4XG4iLA0KPiA+ICsgbUtjc0hhcmR3YXJlSW5mby5Jb1N0YXR1c0FkZHJlc3MuSW9BZGRyZXNz MTYpKTsNCj4gPiAgICAgfQ0KPiBpZiB0aG9zZSBjb2RlIGlzIGp1c3QgZm9yIGRlYnVnZ2luZywg eW91IHNob3VsZCBwdXQgdGhlbSBpbnRvDQo+IERFQlVHX0NPREVfQkVHSU4oKSBhbmQgREVCVUdf Q09ERV9FTkQoKQ0KREVCVUdfTUFOQUdFQUJJTElUWSBpcyBnb3QgYXBwcm92YWwgYW5kIHdlIGNh biB1c2UgdGhhdCB0byBlbmFibGUgdGhlIHByaW50IGVycm9yIGxldmVsIGZvciBNYW5hZ2VhYmls aXR5IHN0dWZmLiBVc2UgREVCVUdfQ09ERV9CRUdJTiByZXF1aXJlcyB1c2VyIHRvIGVuYWJsZSBE RUJVR19QUk9QRVJUWV9ERUJVR19DT0RFX0VOQUJMRUQgYWRkaXRpb25hbGx5LCBpdCBzYXZlcyBS T00gc2l6ZSB0aG91Z2guDQpIb3cgZG8geW91IHRoaW5rPyBXaGljaCB3YXkgaXMgY29udmVuaWVu dCB0byB1c2VycyBhbmQgYWxzbyBoYXZlIGEgZ29vZCBjb2RlIHN0cnVjdHVyZT8gDQoNClRoYW5r cw0KQWJuZXINCg0KPiA+DQo+ID4gICAgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPiBAQCAtMjIx LDcgKzIyMSw3IEBAIEtjc1RyYW5zcG9ydFRyYW5zbWl0UmVjZWl2ZSAoDQo+ID4gICAgIEVGSV9T VEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gICAgIE1BTkFHRUFC SUxJVFlfSVBNSV9UUkFOU1BPUlRfSEVBREVSICAqVHJhbnNtaXRIZWFkZXI7DQo+ID4NCj4gPiAt ICBpZiAoVHJhbnNwb3J0VG9rZW4gPT0gTlVMTCB8fCBUcmFuc2ZlclRva2VuID09IE5VTEwpIHsN Cj4gPiArICBpZiAoKFRyYW5zcG9ydFRva2VuID09IE5VTEwpIHx8IChUcmFuc2ZlclRva2VuID09 IE5VTEwpKSB7DQo+ID4gICAgICAgREVCVUcgKChERUJVR19FUlJPUiwgIiVhOiBJbnZhbGlkIHRy YW5zcG9ydCB0b2tlbiBvciB0cmFuc2Zlcg0KPiB0b2tlbi5cbiIsIF9fRlVOQ1RJT05fXykpOw0K PiA+ICAgICAgIHJldHVybjsNCj4gPiAgICAgfQ0KPiA+IEBAIC0yOTgsNiArMjk4LDcgQEAgQWNx dWlyZVRyYW5zcG9ydFNlc3Npb24gKA0KPiA+ICAgICAgIERFQlVHICgoREVCVUdfRVJST1IsICIl YTogRmFpbCB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yDQo+IE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JU X0tDU1xuIiwgX19GVU5DVElPTl9fKSk7DQo+ID4gICAgICAgcmV0dXJuIEVGSV9PVVRfT0ZfUkVT T1VSQ0VTOw0KPiA+ICAgICB9DQo+ID4gKw0KPiA+ICAgICBLY3NUcmFuc3BvcnRUb2tlbi0+VG9r ZW4uVHJhbnNwb3J0ID0gQWxsb2NhdGVaZXJvUG9vbCAoc2l6ZW9mDQo+IChNQU5BR0VBQklMSVRZ X1RSQU5TUE9SVCkpOw0KPiA+ICAgICBpZiAoS2NzVHJhbnNwb3J0VG9rZW4tPlRva2VuLlRyYW5z cG9ydCA9PSBOVUxMKSB7DQo+ID4gICAgICAgRnJlZVBvb2wgKEtjc1RyYW5zcG9ydFRva2VuKTsN Cj4gPiBAQCAtMzI5LDIxICszMzAsMjkgQEAgQWNxdWlyZVRyYW5zcG9ydFNlc3Npb24gKA0KPiA+ ICAgfQ0KPiA+DQo+ID4gICAvKioNCj4gPiAtICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHRy YW5zcG9ydCBjYXBhYmlsaXRpZXMuDQo+ID4gLQ0KPiA+IC0gIEBwYXJhbSBbb3V0XSAgVHJhbnNw b3J0RmVhdHVyZSAgICAgICAgUG9pbnRlciB0byByZWNlaXZlIHRyYW5zcG9ydA0KPiBjYXBhYmls aXRpZXMuDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWUg dGhlIGRlZmluaXRpb25zIG9mDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9DQVBBQklMSVRZLg0KPiA+IC0NCj4gPiAr ICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHRyYW5zcG9ydCBjYXBhYmlsaXRpZXMgYWNjb3Jk aW5nIHRvICB0aGUNCj4gPiArIG1hbmFnZWFiaWxpdHkgcHJvdG9jb2wuDQo+ID4gKw0KPiA+ICsg IEBwYXJhbSBbaW5dICAgVHJhbnNwb3J0VG9rZW4gICAgICAgICAgICAgVHJhbnNwb3J0IHRva2Vu IGFjcXVpcmVkIGZyb20NCj4gbWFuYWdlYWJpbGl0eQ0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0IGxpYnJhcnkuDQo+ID4gKyAgQHBhcmFt IFtvdXRdICBUcmFuc3BvcnRGZWF0dXJlICAgICAgICAgICBQb2ludGVyIHRvIHJlY2VpdmUgdHJh bnNwb3J0DQo+IGNhcGFiaWxpdGllcy4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFNlZSB0aGUgZGVmaW5pdGlvbnMgb2YNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX0NB UEFCSUxJVFkuDQo+ID4gKyAgQHJldHZhbCAgICAgICBFRklfU1VDQ0VTUyAgICAgICAgICAgICAg ICBUcmFuc3BvcnRDYXBhYmlsaXR5IGlzIHJldHVybmVkDQo+IHN1Y2Nlc3NmdWxseS4NCj4gPiAr ICBAcmV0dmFsICAgICAgIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgICAgIFRyYW5zcG9ydFRva2Vu IGlzIG5vdCBhIHZhbGlkDQo+IHRva2VuLg0KPiA+ICAgKiovDQo+ID4gLVZPSUQNCj4gPiArRUZJ X1NUQVRVUw0KPiA+ICAgR2V0VHJhbnNwb3J0Q2FwYWJpbGl0eSAoDQo+ID4gKyAgSU4gTUFOQUdF QUJJTElUWV9UUkFOU1BPUlRfVE9LRU4gICAgICAgICpUcmFuc3BvcnRUb2tlbiwNCj4gPiAgICAg T1VUIE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX0NBUEFCSUxJVFkgICpUcmFuc3BvcnRDYXBhYmls aXR5DQo+ID4gICAgICkNCj4gPiAgIHsNCj4gPiAtICBpZiAoVHJhbnNwb3J0Q2FwYWJpbGl0eSAh PSBOVUxMKSB7DQo+ID4gLSAgICAqVHJhbnNwb3J0Q2FwYWJpbGl0eSA9IDA7DQo+ID4gKyAgaWYg KChUcmFuc3BvcnRUb2tlbiA9PSBOVUxMKSB8fCAoVHJhbnNwb3J0Q2FwYWJpbGl0eSA9PSBOVUxM KSkgew0KPiA+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPiAgICAgfQ0K PiA+ICsNCj4gPiArICAqVHJhbnNwb3J0Q2FwYWJpbGl0eSA9IDA7DQo+ID4gKyAgcmV0dXJuIEVG SV9TVUNDRVNTOw0KPiA+ICAgfQ0KPiA+DQo+ID4gICAvKioNCj4gPiBkaWZmIC0tZ2l0DQo+ID4g YS9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL1VuaXZlcnNhbC9JcG1pUHJvdG9jb2wvRHhlL0lw bWlQcm90b2NvbC5jDQo+ID4gYi9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL1VuaXZlcnNhbC9J cG1pUHJvdG9jb2wvRHhlL0lwbWlQcm90b2NvbC5jDQo+ID4gaW5kZXggMDUxNzVlZTQ0OC4uNTFk NWM3ZjBiYSAxMDA2NDQNCj4gPiAtLS0NCj4gPiBhL0ZlYXR1cmVzL01hbmFnZWFiaWxpdHlQa2cv VW5pdmVyc2FsL0lwbWlQcm90b2NvbC9EeGUvSXBtaVByb3RvY29sLmMNCj4gPiArKysNCj4gYi9G ZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL1VuaXZlcnNhbC9JcG1pUHJvdG9jb2wvRHhlL0lwbWlQ cm90b2NvDQo+ID4gKysrIGwuYw0KPiA+IEBAIC0xNyw5ICsxNyw5IEBADQo+ID4NCj4gPiAgICNp bmNsdWRlICJJcG1pUHJvdG9jb2xDb21tb24uaCINCj4gPg0KPiA+IC1NQU5BR0VBQklMSVRZX1RS QU5TUE9SVF9UT0tFTiAgKm1UcmFuc3BvcnRUb2tlbiA9IE5VTEw7DQo+ID4gLUNIQVIxNiAgICAg ICAgICAgICAgICAgICAgICAgICAqbVRyYW5zcG9ydE5hbWU7DQo+ID4gLQ0KPiA+ICtNQU5BR0VB QklMSVRZX1RSQU5TUE9SVF9UT0tFTiAgICAgICAgICAgICAgICAgKm1UcmFuc3BvcnRUb2tlbiA9 IE5VTEw7DQo+ID4gK0NIQVIxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAqbVRyYW5zcG9ydE5hbWU7DQo+ID4gK1VJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBUcmFuc3BvcnRNYXhpbXVtUGF5bG9hZDsNCj4gPiAgIE1BTkFHRUFCSUxJ VFlfVFJBTlNQT1JUX0hBUkRXQVJFX0lORk9STUFUSU9ODQo+IG1IYXJkd2FyZUluZm9ybWF0aW9u Ow0KPiA+DQo+ID4gICAvKioNCj4gPiBAQCAtOTIsOCArOTIsNiBAQCBEeGVJcG1pRW50cnkgKA0K PiA+ICAgICBNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9DQVBBQklMSVRZICAgICAgICAgVHJhbnNw b3J0Q2FwYWJpbGl0eTsNCj4gPiAgICAgTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRfQURESVRJT05B TF9TVEFUVVMNCj4gPiBUcmFuc3BvcnRBZGRpdGlvbmFsU3RhdHVzOw0KPiA+DQo+ID4gLSAgR2V0 VHJhbnNwb3J0Q2FwYWJpbGl0eSAoJlRyYW5zcG9ydENhcGFiaWxpdHkpOw0KPiA+IC0NCj4gPiAg ICAgU3RhdHVzID0gSGVscGVyQWNxdWlyZU1hbmFnZWFiaWxpdHlUcmFuc3BvcnQgKA0KPiA+ICAg ICAgICAgICAgICAgICZnTWFuYWdlYWJpbGl0eVByb3RvY29sSXBtaUd1aWQsDQo+ID4gICAgICAg ICAgICAgICAgJm1UcmFuc3BvcnRUb2tlbg0KPiA+IEBAIC0xMDMsOCArMTAxLDIyIEBAIER4ZUlw bWlFbnRyeSAoDQo+ID4gICAgICAgcmV0dXJuIFN0YXR1czsNCj4gPiAgICAgfQ0KPiA+DQo+ID4g KyAgU3RhdHVzID0gR2V0VHJhbnNwb3J0Q2FwYWJpbGl0eSAobVRyYW5zcG9ydFRva2VuLA0KPiA+ ICsgJlRyYW5zcG9ydENhcGFiaWxpdHkpOyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ ICsgICAgREVCVUcgKChERUJVR19FUlJPUiwgIiVhOiBGYWlsZWQgdG8gR2V0VHJhbnNwb3J0Q2Fw YWJpbGl0eSgpLlxuIiwNCj4gX19GVU5DVElPTl9fKSk7DQo+ID4gKyAgICByZXR1cm4gU3RhdHVz Ow0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgVHJhbnNwb3J0TWF4aW11bVBheWxvYWQgPQ0KPiA+ ICsgTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRfUEFZTE9BRF9TSVpFX0ZST01fQ0FQQUJJTElUWQ0K PiAoVHJhbnNwb3J0Q2FwYWJpbGl0eSk7ICBpZiAoVHJhbnNwb3J0TWF4aW11bVBheWxvYWQgPT0g KDEgPDwNCj4gTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRfQ0FQQUJJTElUWV9NQVhJTVVNX1BBWUxP QURfTk9UX0FWDQo+IEFJTEFCTEUpKSB7DQo+ID4gKyAgICBERUJVRyAoKERFQlVHX01BTkFHRUFC SUxJVFlfSU5GTywgIiVhOiBUcmFuc3BvcnQgaW50ZXJmYWNlDQo+ID4gKyBtYXhpbXVtIHBheWxv YWQgaXMgdW5kZWZpbmVkLlxuIiwgX19GVU5DVElPTl9fKSk7ICB9IGVsc2Ugew0KPiA+ICsgICAg VHJhbnNwb3J0TWF4aW11bVBheWxvYWQgLT0gMTsNCj4gPiArICAgIERFQlVHICgoREVCVUdfTUFO QUdFQUJJTElUWV9JTkZPLCAiJWE6IFRyYW5zcG9ydCBpbnRlcmZhY2UgZm9yDQo+ID4gKyBJUE1J IHByb3RvY29sIGhhcyBtYXhpbXVtIHBheWxvYWQgJXguXG4iLCBfX0ZVTkNUSU9OX18sDQo+ID4g KyBUcmFuc3BvcnRNYXhpbXVtUGF5bG9hZCkpOyAgfQ0KPiA+ICsNCj4gPiAgICAgbVRyYW5zcG9y dE5hbWUgPSBIZWxwZXJNYW5hZ2VhYmlsaXR5U3BlY05hbWUNCj4gPiAobVRyYW5zcG9ydFRva2Vu LT5UcmFuc3BvcnQtPk1hbmFnZWFiaWxpdHlUcmFuc3BvcnRTcGVjaWZpY2F0aW9uKTsNCj4gPiAt ICBERUJVRyAoKERFQlVHX0lORk8sICIlYTogSVBNSSBwcm90b2NvbCBvdmVyICVzLlxuIiwgX19G VU5DVElPTl9fLA0KPiA+IG1UcmFuc3BvcnROYW1lKSk7DQo+ID4gKyAgREVCVUcgKChERUJVR19N QU5BR0VBQklMSVRZX0lORk8sICIlYTogSVBNSSBwcm90b2NvbCBvdmVyDQo+ICVzLlxuIiwNCj4g PiArIF9fRlVOQ1RJT05fXywgbVRyYW5zcG9ydE5hbWUpKTsNCj4gPg0KPiA+ICAgICAvLw0KPiA+ ICAgICAvLyBTZXR1cCBoYXJkd2FyZSBpbmZvcm1hdGlvbiBhY2NvcmRpbmcgdG8gdGhlIHRyYW5z cG9ydCBpbnRlcmZhY2UuDQo+ID4gZGlmZiAtLWdpdA0KPiA+IGEvRmVhdHVyZXMvTWFuYWdlYWJp bGl0eVBrZy9Vbml2ZXJzYWwvSXBtaVByb3RvY29sL1BlaS9JcG1pUHBpLmMNCj4gPiBiL0ZlYXR1 cmVzL01hbmFnZWFiaWxpdHlQa2cvVW5pdmVyc2FsL0lwbWlQcm90b2NvbC9QZWkvSXBtaVBwaS5j DQo+ID4gaW5kZXggZjgzOWNkNzM4Ny4uOGJmMWU3OTRmMCAxMDA2NDQNCj4gPiAtLS0gYS9GZWF0 dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL1VuaXZlcnNhbC9JcG1pUHJvdG9jb2wvUGVpL0lwbWlQcGku Yw0KPiA+ICsrKyBiL0ZlYXR1cmVzL01hbmFnZWFiaWxpdHlQa2cvVW5pdmVyc2FsL0lwbWlQcm90 b2NvbC9QZWkvSXBtaVBwaS5jDQo+ID4gQEAgLTUxLDE5ICs1MSwxOSBAQCBQZWlJcG1pU3VibWl0 Q29tbWFuZCAoDQo+ID4gICAgIElOIE9VVCBVSU5UMzIgICAgICAgICpSZXNwb25zZURhdGFTaXpl DQo+ID4gICAgICkNCj4gPiAgIHsNCj4gPiAtICBFRklfU1RBVFVTICAgICAgICAgICAgU3RhdHVz Ow0KPiA+IC0gIFBFSV9JUE1JX1BQSV9JTlRFUk5BTCAqUGVpSXBtaVBwaWludGVybmFsOw0KPiA+ IC0NCj4gPiAtICBQZWlJcG1pUHBpaW50ZXJuYWwgPQ0KPiA+IE1BTkFHRUFCSUxJVFlfSVBNSV9Q UElfSU5URVJOQUxfRlJPTV9MSU5LKFRoaXMpOw0KPiA+IC0gIFN0YXR1cyA9IENvbW1vbklwbWlT dWJtaXRDb21tYW5kICgNCj4gPiAtICAgICAgICAgICAgIFBlaUlwbWlQcGlpbnRlcm5hbC0+VHJh bnNwb3J0VG9rZW4sDQo+ID4gLSAgICAgICAgICAgICBOZXRGdW5jdGlvbiwNCj4gPiAtICAgICAg ICAgICAgIENvbW1hbmQsDQo+ID4gLSAgICAgICAgICAgICBSZXF1ZXN0RGF0YSwNCj4gPiAtICAg ICAgICAgICAgIFJlcXVlc3REYXRhU2l6ZSwNCj4gPiAtICAgICAgICAgICAgIFJlc3BvbnNlRGF0 YSwNCj4gPiAtICAgICAgICAgICAgIFJlc3BvbnNlRGF0YVNpemUNCj4gPiAtICAgICAgICAgICAg ICk7DQo+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gKyAgUEVJX0lQ TUlfUFBJX0lOVEVSTkFMICAqUGVpSXBtaVBwaWludGVybmFsOw0KPiA+ICsNCj4gPiArICBQZWlJ cG1pUHBpaW50ZXJuYWwgPSBNQU5BR0VBQklMSVRZX0lQTUlfUFBJX0lOVEVSTkFMX0ZST01fTElO Sw0KPiAoVGhpcyk7DQo+ID4gKyAgU3RhdHVzICAgICAgICAgICAgID0gQ29tbW9uSXBtaVN1Ym1p dENvbW1hbmQgKA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgUGVpSXBtaVBwaWludGVy bmFsLT5UcmFuc3BvcnRUb2tlbiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIE5ldEZ1 bmN0aW9uLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWFuZCwNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgIFJlcXVlc3REYXRhLA0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgUmVxdWVzdERhdGFTaXplLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg UmVzcG9uc2VEYXRhLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgUmVzcG9uc2VEYXRh U2l6ZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4gPiAgICAgcmV0dXJuIFN0 YXR1czsNCj4gPiAgIH0NCj4gPg0KPiA+IEBAIC04NywyOSArODcsMjggQEAgUGVpSXBtaUVudHJ5 ICgNCj4gPiAgICAgQ0hBUjE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICpUcmFuc3BvcnROYW1lOw0KPiA+ICAgICBQRUlfSVBNSV9QUElfSU5URVJOQUwgICAgICAgICAg ICAgICAgICAgICAgICAgKlBlaUlwbWlQcGlpbnRlcm5hbDsNCj4gPiAgICAgRUZJX1BFSV9QUElf REVTQ1JJUFRPUiAgICAgICAgICAgICAgICAgICAgICAgICpQcGlEZXNjcmlwdG9yOw0KPiA+IC0g IE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX0NBUEFCSUxJVFkgICAgICAgICAgICBUcmFuc3BvcnRD YXBhYmlsaXR5Ow0KPiA+ICAgICBNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9BRERJVElPTkFMX1NU QVRVUw0KPiBUcmFuc3BvcnRBZGRpdGlvbmFsU3RhdHVzOw0KPiA+ICAgICBNQU5BR0VBQklMSVRZ X1RSQU5TUE9SVF9IQVJEV0FSRV9JTkZPUk1BVElPTg0KPiBIYXJkd2FyZUluZm9ybWF0aW9uOw0K PiA+DQo+ID4gLSAgUGVpSXBtaVBwaWludGVybmFsID0gKFBFSV9JUE1JX1BQSV9JTlRFUk5BTCAq KUFsbG9jYXRlWmVyb1Bvb2wNCj4gPiAoc2l6ZW9mKFBFSV9JUE1JX1BQSV9JTlRFUk5BTCkpOw0K PiA+ICsgIFBlaUlwbWlQcGlpbnRlcm5hbCA9IChQRUlfSVBNSV9QUElfSU5URVJOQUwgKilBbGxv Y2F0ZVplcm9Qb29sDQo+ID4gKyAoc2l6ZW9mIChQRUlfSVBNSV9QUElfSU5URVJOQUwpKTsNCj4g PiAgICAgaWYgKFBlaUlwbWlQcGlpbnRlcm5hbCA9PSBOVUxMKSB7DQo+ID4gICAgICAgREVCVUcg KChERUJVR19FUlJPUiwgIiVhOiBOb3QgZW5vdWdoIG1lbW9yeSBmb3INCj4gUEVJX0lQTUlfUFBJ X0lOVEVSTkFMLlxuIiwgX19GVU5DVElPTl9fKSk7DQo+ID4gICAgICAgcmV0dXJuIEVGSV9PVVRf T0ZfUkVTT1VSQ0VTOw0KPiA+ICAgICB9DQo+ID4gLSAgUHBpRGVzY3JpcHRvciA9IChFRklfUEVJ X1BQSV9ERVNDUklQVE9SICopQWxsb2NhdGVaZXJvUG9vbA0KPiA+IChzaXplb2YoRUZJX1BFSV9Q UElfREVTQ1JJUFRPUikpOw0KPiA+ICsNCj4gPiArICBQcGlEZXNjcmlwdG9yID0gKEVGSV9QRUlf UFBJX0RFU0NSSVBUT1IgKilBbGxvY2F0ZVplcm9Qb29sIChzaXplb2YNCj4gPiArIChFRklfUEVJ X1BQSV9ERVNDUklQVE9SKSk7DQo+ID4gICAgIGlmIChQcGlEZXNjcmlwdG9yID09IE5VTEwpIHsN Cj4gPiAgICAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiJWE6IE5vdCBlbm91Z2ggbWVtb3J5IGZv cg0KPiBFRklfUEVJX1BQSV9ERVNDUklQVE9SLlxuIiwgX19GVU5DVElPTl9fKSk7DQo+ID4gICAg ICAgcmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiA+ICAgICB9DQo+ID4NCj4gPiAtICBQ ZWlJcG1pUHBpaW50ZXJuYWwtPlNpZ25hdHVyZSA9DQo+ID4gTUFOQUdFQUJJTElUWV9JUE1JX1BQ SV9JTlRFUk5BTF9TSUdOQVRVUkU7DQo+ID4gKyAgUGVpSXBtaVBwaWludGVybmFsLT5TaWduYXR1 cmUgICAgICAgICAgICAgICAgICAgID0NCj4gTUFOQUdFQUJJTElUWV9JUE1JX1BQSV9JTlRFUk5B TF9TSUdOQVRVUkU7DQo+ID4gICAgIFBlaUlwbWlQcGlpbnRlcm5hbC0+UGVpSXBtaVBwaS5JcG1p U3VibWl0Q29tbWFuZCA9DQo+ID4gUGVpSXBtaVN1Ym1pdENvbW1hbmQ7DQo+ID4NCj4gPiAgICAg UHBpRGVzY3JpcHRvci0+RmxhZ3MgPSBFRklfUEVJX1BQSV9ERVNDUklQVE9SX1BQSSB8DQo+IEVG SV9QRUlfUFBJX0RFU0NSSVBUT1JfVEVSTUlOQVRFX0xJU1Q7DQo+ID4gICAgIFBwaURlc2NyaXB0 b3ItPkd1aWQgID0gJmdQZWlJcG1pUHBpR3VpZDsNCj4gPiAgICAgUHBpRGVzY3JpcHRvci0+UHBp ICAgPSAmUGVpSXBtaVBwaWludGVybmFsLT5QZWlJcG1pUHBpOw0KPiA+DQo+ID4gLSAgR2V0VHJh bnNwb3J0Q2FwYWJpbGl0eSAoJlRyYW5zcG9ydENhcGFiaWxpdHkpOw0KPiA+ICAgICBTdGF0dXMg PSBIZWxwZXJBY3F1aXJlTWFuYWdlYWJpbGl0eVRyYW5zcG9ydCAoDQo+ID4gICAgICAgICAgICAg ICAgJmdNYW5hZ2VhYmlsaXR5UHJvdG9jb2xJcG1pR3VpZCwNCj4gPiAgICAgICAgICAgICAgICAm UGVpSXBtaVBwaWludGVybmFsLT5UcmFuc3BvcnRUb2tlbg0KPiA+IEBAIC0xMTksOCArMTE4LDIy IEBAIFBlaUlwbWlFbnRyeSAoDQo+ID4gICAgICAgcmV0dXJuIFN0YXR1czsNCj4gPiAgICAgfQ0K PiA+DQo+ID4gKyAgU3RhdHVzID0gR2V0VHJhbnNwb3J0Q2FwYWJpbGl0eQ0KPiA+ICsgKFBlaUlw bWlQcGlpbnRlcm5hbC0+VHJhbnNwb3J0VG9rZW4sDQo+ID4gKyAmUGVpSXBtaVBwaWludGVybmFs LT5UcmFuc3BvcnRDYXBhYmlsaXR5KTsNCj4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7 DQo+ID4gKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiJWE6IEZhaWxlZCB0byBHZXRUcmFuc3Bv cnRDYXBhYmlsaXR5KCkuXG4iLA0KPiBfX0ZVTkNUSU9OX18pKTsNCj4gPiArICAgIHJldHVybiBT dGF0dXM7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBQZWlJcG1pUHBpaW50ZXJuYWwtPlRyYW5z cG9ydE1heGltdW1QYXlsb2FkID0NCj4gPiArIE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX1BBWUxP QURfU0laRV9GUk9NX0NBUEFCSUxJVFkNCj4gPiArIChQZWlJcG1pUHBpaW50ZXJuYWwtPlRyYW5z cG9ydENhcGFiaWxpdHkpOw0KPiA+ICsgIGlmIChQZWlJcG1pUHBpaW50ZXJuYWwtPlRyYW5zcG9y dE1heGltdW1QYXlsb2FkICA9PSAoMSA8PA0KPiBNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9DQVBB QklMSVRZX01BWElNVU1fUEFZTE9BRF9OT1RfQVYNCj4gQUlMQUJMRSkpIHsNCj4gPiArICAgIERF QlVHICgoREVCVUdfTUFOQUdFQUJJTElUWV9JTkZPLCAiJWE6IFRyYW5zcG9ydCBpbnRlcmZhY2UN Cj4gPiArIG1heGltdW0gcGF5bG9hZCBpcyB1bmRlZmluZWQuXG4iLCBfX0ZVTkNUSU9OX18pKTsg IH0gZWxzZSB7DQo+ID4gKyAgICBQZWlJcG1pUHBpaW50ZXJuYWwtPlRyYW5zcG9ydE1heGltdW1Q YXlsb2FkIC09IDE7DQo+ID4gKyAgICBERUJVRyAoKERFQlVHX01BTkFHRUFCSUxJVFlfSU5GTywg IiVhOiBUcmFuc3BvcnQgaW50ZXJmYWNlIGZvcg0KPiA+ICsgSVBNSSBwcm90b2NvbCBoYXMgbWF4 aW11bSBwYXlsb2FkIDB4JXguXG4iLCBfX0ZVTkNUSU9OX18sDQo+ID4gKyBQZWlJcG1pUHBpaW50 ZXJuYWwtPlRyYW5zcG9ydE1heGltdW1QYXlsb2FkKSk7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiAg ICAgVHJhbnNwb3J0TmFtZSA9IEhlbHBlck1hbmFnZWFiaWxpdHlTcGVjTmFtZQ0KPiA+IChQZWlJ cG1pUHBpaW50ZXJuYWwtPlRyYW5zcG9ydFRva2VuLT5UcmFuc3BvcnQtPk1hbmFnZWFiaWxpdHlU cmFuc3BvcnQNCj4gPiBTcGVjaWZpY2F0aW9uKTsNCj4gPiAtICBERUJVRyAoKERFQlVHX0lORk8s ICIlYTogSVBNSSBwcm90b2NvbCBvdmVyICVzLlxuIiwgX19GVU5DVElPTl9fLA0KPiA+IFRyYW5z cG9ydE5hbWUpKTsNCj4gPiArICBERUJVRyAoKERFQlVHX01BTkFHRUFCSUxJVFlfSU5GTywgIiVh OiBJUE1JIHByb3RvY29sIG92ZXINCj4gJXMuXG4iLA0KPiA+ICsgX19GVU5DVElPTl9fLCBUcmFu c3BvcnROYW1lKSk7DQo+ID4NCj4gPiAgICAgLy8NCj4gPiAgICAgLy8gU2V0dXAgaGFyZHdhcmUg aW5mb3JtYXRpb24gYWNjb3JkaW5nIHRvIHRoZSB0cmFuc3BvcnQgaW50ZXJmYWNlLg0KPiA+IGRp ZmYgLS1naXQNCj4gPiBhL0ZlYXR1cmVzL01hbmFnZWFiaWxpdHlQa2cvVW5pdmVyc2FsL0lwbWlQ cm90b2NvbC9TbW0vSXBtaVByb3RvY29sLmMNCj4gPg0KPiBiL0ZlYXR1cmVzL01hbmFnZWFiaWxp dHlQa2cvVW5pdmVyc2FsL0lwbWlQcm90b2NvbC9TbW0vSXBtaVByb3RvY29sLmMNCj4gPiBpbmRl eCA4N2E1NDM2YmRmLi5lNGNkMTY2YjdhIDEwMDY0NA0KPiA+IC0tLQ0KPiA+IGEvRmVhdHVyZXMv TWFuYWdlYWJpbGl0eVBrZy9Vbml2ZXJzYWwvSXBtaVByb3RvY29sL1NtbS9JcG1pUHJvdG9jb2wu Yw0KPiA+ICsrKw0KPiBiL0ZlYXR1cmVzL01hbmFnZWFiaWxpdHlQa2cvVW5pdmVyc2FsL0lwbWlQ cm90b2NvbC9TbW0vSXBtaVByb3RvY28NCj4gPiArKysgbC5jDQo+ID4gQEAgLTE4LDkgKzE4LDkg QEANCj4gPg0KPiA+ICAgI2luY2x1ZGUgIklwbWlQcm90b2NvbENvbW1vbi5oIg0KPiA+DQo+ID4g LU1BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX1RPS0VOICAqbVRyYW5zcG9ydFRva2VuID0gTlVMTDsN Cj4gPiAtQ0hBUjE2ICAgICAgICAgICAgICAgICAgICAgICAgICptVHJhbnNwb3J0TmFtZTsNCj4g PiAtDQo+ID4gK01BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX1RPS0VOICAgICAgICAgICAgICAgICAq bVRyYW5zcG9ydFRva2VuID0gTlVMTDsNCj4gPiArQ0hBUjE2ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICptVHJhbnNwb3J0TmFtZTsNCj4gPiArVUlOVDMyICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zcG9ydE1heGltdW1QYXlsb2FkOw0K PiA+ICAgTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRfSEFSRFdBUkVfSU5GT1JNQVRJT04NCj4gbUhh cmR3YXJlSW5mb3JtYXRpb247DQo+ID4NCj4gPiAgIC8qKg0KPiA+IEBAIC05Myw4ICs5Myw2IEBA IFNtbUlwbWlFbnRyeSAoDQo+ID4gICAgIE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX0NBUEFCSUxJ VFkgICAgICAgICBUcmFuc3BvcnRDYXBhYmlsaXR5Ow0KPiA+ICAgICBNQU5BR0VBQklMSVRZX1RS QU5TUE9SVF9BRERJVElPTkFMX1NUQVRVUw0KPiA+IFRyYW5zcG9ydEFkZGl0aW9uYWxTdGF0dXM7 DQo+ID4NCj4gPiAtICBHZXRUcmFuc3BvcnRDYXBhYmlsaXR5ICgmVHJhbnNwb3J0Q2FwYWJpbGl0 eSk7DQo+ID4gLQ0KPiA+ICAgICBTdGF0dXMgPSBIZWxwZXJBY3F1aXJlTWFuYWdlYWJpbGl0eVRy YW5zcG9ydCAoDQo+ID4gICAgICAgICAgICAgICAgJmdNYW5hZ2VhYmlsaXR5UHJvdG9jb2xJcG1p R3VpZCwNCj4gPiAgICAgICAgICAgICAgICAmbVRyYW5zcG9ydFRva2VuDQo+ID4gQEAgLTEwNCw4 ICsxMDIsMjIgQEAgU21tSXBtaUVudHJ5ICgNCj4gPiAgICAgICByZXR1cm4gU3RhdHVzOw0KPiA+ ICAgICB9DQo+ID4NCj4gPiArICBTdGF0dXMgPSBHZXRUcmFuc3BvcnRDYXBhYmlsaXR5IChtVHJh bnNwb3J0VG9rZW4sDQo+ID4gKyAmVHJhbnNwb3J0Q2FwYWJpbGl0eSk7ICBpZiAoRUZJX0VSUk9S IChTdGF0dXMpKSB7DQo+ID4gKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiJWE6IEZhaWxlZCB0 byBHZXRUcmFuc3BvcnRDYXBhYmlsaXR5KCkuXG4iLA0KPiBfX0ZVTkNUSU9OX18pKTsNCj4gPiAr ICAgIHJldHVybiBTdGF0dXM7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBUcmFuc3BvcnRNYXhp bXVtUGF5bG9hZCA9DQo+ID4gKyBNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9QQVlMT0FEX1NJWkVf RlJPTV9DQVBBQklMSVRZDQo+IChUcmFuc3BvcnRDYXBhYmlsaXR5KTsgIGlmIChUcmFuc3BvcnRN YXhpbXVtUGF5bG9hZCA9PSAoMSA8PA0KPiBNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9DQVBBQklM SVRZX01BWElNVU1fUEFZTE9BRF9OT1RfQVYNCj4gQUlMQUJMRSkpIHsNCj4gPiArICAgIERFQlVH ICgoREVCVUdfTUFOQUdFQUJJTElUWV9JTkZPLCAiJWE6IFRyYW5zcG9ydCBpbnRlcmZhY2UNCj4g PiArIG1heGltdW0gcGF5bG9hZCBpcyB1bmRlZmluZWQuXG4iLCBfX0ZVTkNUSU9OX18pKTsgIH0g ZWxzZSB7DQo+ID4gKyAgICBUcmFuc3BvcnRNYXhpbXVtUGF5bG9hZCAtPSAxOw0KPiA+ICsgICAg REVCVUcgKChERUJVR19NQU5BR0VBQklMSVRZX0lORk8sICIlYTogVHJhbnNwb3J0IGludGVyZmFj ZSBmb3INCj4gPiArIElQTUkgcHJvdG9jb2wgaGFzIG1heGltdW0gcGF5bG9hZCAweCV4LlxuIiwg X19GVU5DVElPTl9fLA0KPiA+ICsgVHJhbnNwb3J0TWF4aW11bVBheWxvYWQpKTsgIH0NCj4gPiAr DQo+ID4gICAgIG1UcmFuc3BvcnROYW1lID0gSGVscGVyTWFuYWdlYWJpbGl0eVNwZWNOYW1lDQo+ ID4gKG1UcmFuc3BvcnRUb2tlbi0+VHJhbnNwb3J0LT5NYW5hZ2VhYmlsaXR5VHJhbnNwb3J0U3Bl Y2lmaWNhdGlvbik7DQo+ID4gLSAgREVCVUcgKChERUJVR19JTkZPLCAiJWE6IElQTUkgcHJvdG9j b2wgb3ZlciAlcy5cbiIsIF9fRlVOQ1RJT05fXywNCj4gPiBtVHJhbnNwb3J0TmFtZSkpOw0KPiA+ ICsgIERFQlVHICgoREVCVUdfTUFOQUdFQUJJTElUWV9JTkZPLCAiJWE6IElQTUkgcHJvdG9jb2wg b3Zlcg0KPiAlcy5cbiIsDQo+ID4gKyBfX0ZVTkNUSU9OX18sIG1UcmFuc3BvcnROYW1lKSk7DQo+ ID4NCj4gPiAgICAgLy8NCj4gPiAgICAgLy8gU2V0dXAgaGFyZHdhcmUgaW5mb3JtYXRpb24gYWNj b3JkaW5nIHRvIHRoZSB0cmFuc3BvcnQgaW50ZXJmYWNlLg0K