From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by mx.groups.io with SMTP id smtpd.web12.1973.1645752319949182976 for ; Thu, 24 Feb 2022 17:25:20 -0800 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=QOGx49d0; spf=pass (domain: intel.com, ip: 192.55.52.43, mailfrom: guo.dong@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1645752319; x=1677288319; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=uwKC8ZOoxiRlvgAYfC7hMLn5NOUiKeO+7EWlLNGdFhA=; b=QOGx49d0Z526BeNkijrkn0iknI55NW+NVtNf9cgOpPbwvxM7H66ETzpD GXUpAGp5CpaLb3r116SS3Brh5TocDtwbrwVfwtHrwpb4TKd7xrAnk0c9/ GLTxb0JeClvgLYK75tysuYfhLppfslUINUF3jMfO0mkIpKUfhDdfUx5Jn 1Ghb7FnseWmOmkOcKfMgO8sx6Oxkw4ysmu//7Od30GVainSljf8QktdH9 1zjDb3lqUhQWipnrcffjYlGobNB1eumqFDnYonvjJ8x/nhOsj7klelMNJ UefCHnO/M4rrun/2kAwP6tOW2cAa7/nzg8H9aph/yuPO92L68aXwmZ/4T w==; X-IronPort-AV: E=McAfee;i="6200,9189,10268"; a="338829464" X-IronPort-AV: E=Sophos;i="5.90,134,1643702400"; d="scan'208";a="338829464" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Feb 2022 17:25:19 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,134,1643702400"; d="scan'208";a="638058062" Received: from orsmsx605.amr.corp.intel.com ([10.22.229.18]) by fmsmga002.fm.intel.com with ESMTP; 24 Feb 2022 17:25:19 -0800 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX605.amr.corp.intel.com (10.22.229.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.21; Thu, 24 Feb 2022 17:25:18 -0800 Received: from orsmsx606.amr.corp.intel.com (10.22.229.19) by ORSMSX611.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20; Thu, 24 Feb 2022 17:25:18 -0800 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx606.amr.corp.intel.com (10.22.229.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.21 via Frontend Transport; Thu, 24 Feb 2022 17:25:18 -0800 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (104.47.55.108) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.20; Thu, 24 Feb 2022 17:25:18 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=e3uAAW4T0OQVMr3CNS8A1y7E6wfURR9rCi7GGg5F4ouIs4BTaYigCI65HJRfeD6OOV/erQ+oBL77RkXepxEvONTSHyuJHOl/mekIDk5+ZGkCs7N0aLhMVTMAGeeGkTrbTZUUphtTaEk7LmraKV4YJJKRyymScgIe3z8QNNK8NSLipzN1ICSAmXvIynMcSQPC/7bXeN5FuBvhcAa7rP/Vm0Zgv8U0Wm5cboBIH2Z/XPlu+nvdpajsAJf3EiYqRjNqizElUYUSgy1eMA6zbtHZL+uCdFL5rAFVkzjuiDprQwC/VYf8IFQNVazcsNzbwSOMMVv6gptDVhlEKDaNjkHv+g== 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=uwKC8ZOoxiRlvgAYfC7hMLn5NOUiKeO+7EWlLNGdFhA=; b=mCTNXy/pmm90w81XZlqDdxKqo48y+HxCP1AMlfpiJBlaMImxlqFKfZobbqfGv6uBwmUZerkX7qMgT3LAdvpDtCX2ZjZqfQYcZG2asMnPQaKU4p/8259UuNpguXyqYgT+M/MtPspY1ZLIRsg77l9+ZrnP1p5xdV+Vy56Z7CjYoSPKGWu0rt/VmOPrvo/zmAT/Ma1vyhwOEYOteHdbKXM9ALRwLUr6nmO1a1qRf8TC9bm3YBMiEulZ0q5xw4PY/JCVVetrmU0mkeYluiufn4qyVbPwABFn3jfJD9HH3i3aF1cSDeedz2mXD81bQ8zvKRUffDzMKHljSv5RbzFvS9tRSg== 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 BYAPR11MB3622.namprd11.prod.outlook.com (2603:10b6:a03:fe::30) by DM6PR11MB4187.namprd11.prod.outlook.com (2603:10b6:5:19e::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4995.16; Fri, 25 Feb 2022 01:25:15 +0000 Received: from BYAPR11MB3622.namprd11.prod.outlook.com ([fe80::45c8:c9c6:42a:a43d]) by BYAPR11MB3622.namprd11.prod.outlook.com ([fe80::45c8:c9c6:42a:a43d%4]) with mapi id 15.20.5017.024; Fri, 25 Feb 2022 01:25:15 +0000 From: "Guo Dong" To: "devel@edk2.groups.io" , "patrick.rudolph@9elements.com" , "Ma, Maurice" CC: "Rhodes, Sean" , "Ni, Ray" , "You, Benjamin" Subject: Re: [edk2-devel] [PATCH 1/2] UefiPayloadPkg: Add i801 SMBus controller DXE Thread-Topic: [edk2-devel] [PATCH 1/2] UefiPayloadPkg: Add i801 SMBus controller DXE Thread-Index: AQHYJCcGVKKsXkkd+UKWTGJNjVidcqyYDs4AgAqAWwCAAFTxYIAAmYMw Date: Fri, 25 Feb 2022 01:25:15 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.401.20 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 377d64c3-7d36-456f-7ead-08d9f7fdad67 x-ms-traffictypediagnostic: DM6PR11MB4187:EE_ x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: uH/dX/xQR5CowqACXM4WdPw/ziMNIEF0Q3/1ViepGWLv4Bz4TpJFTK/yto9ObWJ3fQUheKnS/ITJKfzSEY6jYp5pyPMtz9guMqn+VQ5ivgYFmgEsQ4JM9jyWhRdLVHqWsStoLq49gcKQ29/07t6P0avFoUVzfuIER1jkF15mfSxH3ubLBRVRd4FC4wYp3qzsPjmuoGalaVUJp60+wzoGOJiLilPF3oDxlwVNt46BQOUbC5GHmaSHUuZVM+uFor/tmlNRKoGSj3DYnkJZKbStBV8+hXqGl9c8Gf2o9Rrr7TRUDNjljBP4+6z6T2Jo7ZdTWwj72ZLndnJrcl6VJ+joyM6n/FBdGcAgByt7Tmzs+U5FUc9KUWVyCE7hPMd8ywCpa+f8VGnabzh/7YOTjknf0lkN8eIBUmFkhCACkZk869PLepfgYoY58BFvM+Oj/Z0tt3GfDCZ86tl/sUji+HmF65msiGARt2WHV2z1kvzzIsT2fS5pzuir7/eMduOPGhdyA2BBjfjgFca4QqCR+4OsW5KHldkWVWcLKNq+wElK59tzAzOE9YmNrgu3+I4EvsuT6sNeutav4osSI808txEAlTnwBFWzVUjl8M+A7wlsXeWCrSIepFEnHsHALUHXpJGRaBNag7NRHPAAb3utoXPJP1k+PtPOrhjShSAopZKiQ3TPC2tprFPSjIidSR7T59G+Nx+7EKZIWjvC1fwwXA/OyWayT8trYBZm0je56acqvvkjGZ5JC76rQ9nI0U6qjrO5iLRszjSPYmhqCiNBo++87xJtC32HY0npNOl0r5SUu1kALH52CrsGnH0RD/ARUzTTrV94AU11hj24+whRvmmxxw== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BYAPR11MB3622.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(2906002)(110136005)(8936002)(83380400001)(54906003)(316002)(19627235002)(122000001)(66446008)(966005)(30864003)(82960400001)(5660300002)(4326008)(33656002)(52536014)(76116006)(66556008)(66476007)(8676002)(6636002)(64756008)(66946007)(508600001)(107886003)(53546011)(71200400001)(86362001)(38070700005)(38100700002)(7696005)(9686003)(6506007)(55016003)(186003)(26005)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?ZVBpTGNWbjBUc3BQZTkxNzU2c0FlL3ZlYkxiQmg3cjIrRTllaSt3M29PRjZZ?= =?utf-8?B?TXZGV0JhcmtQUXBTMmVSR2U0L1FEQ210RG5rSENDMzBBbFpCN2s0M2x4cXNX?= =?utf-8?B?ZVJnNFJ3OENMbzFFcGNBQlhGZE5LTHlyTlByTnlPSlFtaVRlTHM0K1dES0xs?= =?utf-8?B?U3k2N2FxY3dCVTJkZndabTRZZkN4eTdLN05BeHpNajlwR2UvV0lFZmZBbG5K?= =?utf-8?B?TnJYS1RQdjk1elhjQSt3TlJpUWhHMFR1Qm0vcUJCWmg1YkJnSWVCeTlxOFk0?= =?utf-8?B?dTJ6NkcrQlI5dFROaFJOYWJGNFVNOGdqV2R1QytSVHNxaTJZOWdNd0NPUDVX?= =?utf-8?B?UFN1RjQ5WlB6c1VXUmFRV2RQdHE2bld2WmJ3cHM1SzMzOFQydVpJWWFaNXN3?= =?utf-8?B?d1V4ZVlKTWdzT0FLRlZwU2tUVFNpeE91UlorRXQ4RjJ3c01RWWdlYTROQXFS?= =?utf-8?B?Z0o2d2dnekx4dXFLd2d0VFBla2pzcUM2SzZEbkFCVXR6QUs5MzlkZVdvV0tY?= =?utf-8?B?RjY0a00zV3BEVWVUMGdlNUhVN2hWbkZSOGR3RFU0b3JHVGlsMlNWQm5wVXRN?= =?utf-8?B?TTdXYzRRTGQxN2N5VGZ4czNGK0F2V0QwUkNPeCtFYWFWb1UrdVZNWERTdEpF?= =?utf-8?B?NjV5eE4wdHhURVZRNVg5VXZQUHlpUUpSUGlQK3h0MS9HcVZHZlJ0Y3U1UnNs?= =?utf-8?B?OEhKWm1BY2NnR0I3bWlkVjE3YThDOVJZT2U1OStGQ3pJTVUxNUdwTS9jV0hX?= =?utf-8?B?cDZnbUlRS1o0ZldzTllDTDZlcjRhUXFwUzhDV2tDTENKYW96S2tlOVY2ZFlP?= =?utf-8?B?RzRKWllpbG1KeHBzYi9nTXA2SXpTMWoyeVVuTFFRTjRZR0FyQ0tuTklQSmxY?= =?utf-8?B?cWx2Z3R0c0l4b21YbkpqakhEMm1DTjJuemRXdjBhSnFFZ3ljNUY2OFhZMHpQ?= =?utf-8?B?YUpNQ0RVaytwWWhwVU51U3grTURPMW9zQnZWTWsrUXJnbkRraFJnd3NXKzMx?= =?utf-8?B?REh2djlFbzI4azY1UVF1dmFNNTlKNGNBNC8xSlZpY1RKRm1kUnRMMzdaa0dy?= =?utf-8?B?M3Y5SSt1SmJwYlZCQjA4MXlXYllDeFZVeVBSbXBLNXEydk9JNGI4V2pOM2dr?= =?utf-8?B?bytSUVJSKzhuOUpDT0RPNVVLanE4UHFBSVlmRzk2RjhUM0VNdFRHWUYrcUEv?= =?utf-8?B?eVU4b1g3RmdMT3VZRmE4cGpMTFUvVzRRMG1hUXRMajVqeThqZlUvWE5PQUov?= =?utf-8?B?YzJGS3kwdUlzMkhjQ1NVQ3lWWjR6ZlVabURkYTZpUm1uMnMzd0Z2ODdSckx1?= =?utf-8?B?TUxkbmhNZlJNRUh4N3diL1RWQlVxZWFqa24rOVNnQlh2MThkM2VqNTQ2TlE3?= =?utf-8?B?REpNWDg4MGZlQ2FsM3YzS3M3eWdweGMrelU5UzJDcHMwMlhjVnNTSU05QTdT?= =?utf-8?B?VU42dVYybVIrK25vcEhPNTEwOVdiWW5EL08rR0RXbDI3M2lXMk04QmtTYVVE?= =?utf-8?B?ZW4wL25veVZYYjMrRHg0aGMzelFtUlREZnBmNk5QQXRrM2lJK2hQU1lSWVlO?= =?utf-8?B?N2hZWGU0NVd1R1p1VURKdnNyVytuS05iUmMzNVZmUGZ3VVYySzVVbmlTTmtQ?= =?utf-8?B?ek9IejQ3a3NZVFpmbkJZdjNuemptb2l3dXk1TzhPNzlDamh4Y2VFT241TWRW?= =?utf-8?B?enJXd1VmVTBJajBiTFBxVFdXQlNJWnU4QXdvOHVmZEZ3dGZZdU1tQkNBLzNu?= =?utf-8?B?Tk1uUGlrMHFVSTE4Z2VLZHZLelY3MENpUGloY0lCMEVyd1pyS1hmdzhtckJp?= =?utf-8?B?NE4zNUdjam12OGMvd0FXVkw4bXJzVG10akJOYTNSQ3ZaU1JTVEswUnoveUxH?= =?utf-8?B?eGVJc2lqa2c2TDRFaFpQOHRzOGJHY3JKTHh3bXdESWxVTnkzdENpbEJvVG1L?= =?utf-8?B?NDNoY1lrcFllT3k0b3o2Rm12R2FhN1RZOVJVTytoQ0txV0U1Rk4xWjFEZFhE?= =?utf-8?B?bytCM3BRTDNZRnYxS21Sa0J2RzREOHliRHpSQnA1MDJvV3I0UVd3OXlPMWhl?= =?utf-8?B?cy9DWk5ncWRhUWQzV3ZuOWhyWGo5VHFHOGxZTUNsRzh4UGR1UnU2VndOZ1Fh?= =?utf-8?B?VnpSakRTREp1M20yUE1sdnlNUXYremhPa25hWFg4d3JrZHVmVDloK0tEMFlo?= =?utf-8?B?U1E9PQ==?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BYAPR11MB3622.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 377d64c3-7d36-456f-7ead-08d9f7fdad67 X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Feb 2022 01:25:15.6257 (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: rh7AcJ916RoRemgz9vyLQcgDF7IqfuTA3VSbV6O20IzVgqbHY5ncMMQvZPFGfRGgfYeEur59nNPs3HHU3VHc0g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR11MB4187 Return-Path: guo.dong@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 DQpIaSBQYXRyaWNrLA0KDQpZb3UgY291bGQgcmVmZXIgdGhpcyBwYWdlIGh0dHBzOi8vZ2l0aHVi LmNvbS90aWFub2NvcmUvZWRrMi1wbGF0Zm9ybXMgb24gaG93IHRvIGJ1aWxkIHBsYXRmb3JtIHdp dGggRURLMiBhbmQgZWRrMi1wbGF0Zm9ybSByZXBvLg0KDQpJIGhhZCB0aG91Z2h0IHlvdSBhZGRl ZCBhIFNNYnVzIGRyaXZlciB0aGF0IGNvdWxkIG9ubHkgd29yayBvbiBhIHBhcnRpY3VsYXIgZGV2 aWNlLiAgSSBhZ3JlZSB3aXRoIE1hdXJpY2UgdG8gcHV0IHRoaXMga2luZCBvZiBtb2R1bGVzIHRv IEVkazItcGxhdGZvcm0gcmVwby4NCkZvciBTcGlGbGFzaExpYiBpdCBpcyBsaWJyYXJ5IHNwZWNp ZmljIGZvciBJbnRlbCBQQ0ggU1BJLCB3ZSBldmVyIGRpc2N1c3NlZCB0byBwdXQgdG8gZWRrMi1w bGF0Zm9ybSBiZWZvcmUuICBCdXQgd2UgdGVtcG9yYXJpbHkgcHV0IHRvIEVESzIgd2l0aCBvdGhl ciBTTU0gbW9kdWxlcyBmb3IgY29udmVuaWVuY2Ugc2luY2UgdGhlcmUgaXMgb25seSBmZXcgdGhp cyBraW5kIG9mIG1vZHVsZXMuDQpMZXQgbWUgZXhwbG9yZSBhIHNvbHV0aW9uIHRvIG1vdmUgUENI IHNwZWNpZmljIG1vZHVsZXMgdG8gZWRrMi1wbGF0Zm9ybS4gTWF5YmUgY3JlYXRlIFBheWxvYWRQ bGF0Zm9ybVBrZyB1bmRlciBlZGsyLXBsYXRmb3Jtc1xQbGF0Zm9ybVxJbnRlbCB0byBidWlsZCB1 bml2ZXJzYWwgVUVGSSBwYXlsb2FkIGZyb20gRWRrMiByZXBvLCBhbmQgYnVpbGQgYSBzZXBhcmF0 ZSBGViB0byBpbmNsdWRlIFBDSCBzcGVjaWZpYyBtb2R1bGVzIGZyb20gZWRrMi1wbGF0Zm9ybSBy ZXBvLiBUaGUgYnVpbGQgc2NyaXB0IGNvdWxkIGFkZCB0aGUgRlYgaW50byB0aGUgdW5pdmVyc2Fs IHBheWxvYWQgYXMgYSBzZWN0aW9uIG9mIHVuaXZlcnNhbCBwYXlsb2FkIGRlZmluZWQgYnkgdGhl IHVuaXZlcnNhbCBwYXlsb2FkIHNwZWNpZmljYXRpb24uIFRoaXMgd2F5IHRoZSBVRUZJIHBheWxv YWQgaW4gRURLMiBjb3VsZCBiZSBnZW5lcmljIGVub3VnaCB3aXRob3V0IHBsYXRmb3JtIHNwZWNp ZmljIG1vZHVsZXMuDQoNClRoYW5rcywNCkd1bw0KDQotLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0t LQ0KRnJvbTogRG9uZywgR3VvIA0KU2VudDogVGh1cnNkYXksIEZlYnJ1YXJ5IDI0LCAyMDIyIDg6 NTQgQU0NClRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgcGF0cmljay5ydWRvbHBoQDllbGVtZW50 cy5jb207IE1hLCBNYXVyaWNlIDxtYXVyaWNlLm1hQGludGVsLmNvbT4NCkNjOiBSaG9kZXMsIFNl YW4gPHNlYW5Ac3RhcmxhYnMuc3lzdGVtcz47IE5pLCBSYXkgPHJheS5uaUBpbnRlbC5jb20+OyBZ b3UsIEJlbmphbWluIDxiZW5qYW1pbi55b3VAaW50ZWwuY29tPg0KU3ViamVjdDogUkU6IFtlZGsy LWRldmVsXSBbUEFUQ0ggMS8yXSBVZWZpUGF5bG9hZFBrZzogQWRkIGk4MDEgU01CdXMgY29udHJv bGxlciBEWEUNCg0KDQpIaSBQYXRyaWNrLA0KDQpVZWZpUGF5bG9hZFBrZy9MaWJyYXJ5L1NwaUZs YXNoTGliL1NwaUZsYXNoTGliLmluZiBpcyBhIGNvbW1vbiBtb2R1bGUgYXMgdGhlIGNvbW1pdCBt ZXNzYWdlIG1lbnRpb25lZCBhcyBiZWxvdzoNCg0KKiBVZWZpUGF5bG9hZFBrZzogQWRkIFNwaUZs YXNoTGliDQoNClRoaXMgaXMgYSBjb21tb24gU1BJIEZsYXNoIGxpYnJhcnkgdXNlZCBmb3IgdGhl IEludGVsIHBsYXRmb3JtIHRoYXQgc3VwcG9ydHMgU1BJIGhhcmR3YXJlIHNlcXVlbmNlLiBUaGlz IGxpYnJhcnkgcHJvdmlkZXMgYWN0dWFsIFNQSSBmbGFzaCBvcGVyYXRpb24gdmlhIEludGVsIFBD SCBTUEkgY29udHJvbGxlci4NCg0KVGhhbmtzLA0KR3VvDQoNCi0tLS0tT3JpZ2luYWwgTWVzc2Fn ZS0tLS0tDQpGcm9tOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbyA8ZGV2ZWxAZWRrMi5ncm91cHMuaW8+ IE9uIEJlaGFsZiBPZiBQYXRyaWNrIFJ1ZG9scGgNClNlbnQ6IFRodXJzZGF5LCBGZWJydWFyeSAy NCwgMjAyMiAzOjQ2IEFNDQpUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW87IE1hLCBNYXVyaWNlIDxt YXVyaWNlLm1hQGludGVsLmNvbT4NCkNjOiBSaG9kZXMsIFNlYW4gPHNlYW5Ac3RhcmxhYnMuc3lz dGVtcz47IERvbmcsIEd1byA8Z3VvLmRvbmdAaW50ZWwuY29tPjsgTmksIFJheSA8cmF5Lm5pQGlu dGVsLmNvbT47IFlvdSwgQmVuamFtaW4gPGJlbmphbWluLnlvdUBpbnRlbC5jb20+DQpTdWJqZWN0 OiBSZTogW2VkazItZGV2ZWxdIFtQQVRDSCAxLzJdIFVlZmlQYXlsb2FkUGtnOiBBZGQgaTgwMSBT TUJ1cyBjb250cm9sbGVyIERYRQ0KDQpIaSBNYXVyaWNlLA0KSSBhZ3JlZSB0aGF0IGVkazItcGxh dGZvcm1zIGlzIHRoZSByaWdodCBwbGFjZS4NCkhvdyBzaG91bGQgaXQgYmUgdXNlZCB0byBidWls ZCBVZWZpUGxheWxvYWRQa2c/IFNob3VsZCBpdCBiZSBob29rZWQgdXAgYXMgZ2l0IHN1Ym1vZHVs ZT8NCg0KSnVzdCB3b25kZXJpbmcgd2h5IHlvdSBhZGRlZCB2ZW5kb3IgKG9yIHBsYXRmb3JtKSBz cGVjaWZpYyBjb2RlIGluIFVlZmlQYXlsb2FkUGtnL0xpYnJhcnkvU3BpRmxhc2hMaWIvU3BpRmxh c2hMaWIuaW5mID8NClBsZWFzZSBjbGFyaWZ5Lg0KDQpSZWdhcmRzLA0KUGF0cmljayBSdWRvbHBo DQoNCk9uIFRodSwgRmViIDE3LCAyMDIyIGF0IDc6MjQgUE0gTWEsIE1hdXJpY2UgPG1hdXJpY2Uu bWFAaW50ZWwuY29tPiB3cm90ZToNCj4NCj4gVGhpcyB2ZW5kb3Igc3BlY2lmaWMgZGV2aWNlIGRy aXZlciBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBzZWVtIHRvIGZpdCBpbnRvIFVFRkkgcGF5bG9h ZCBwYWNrYWdlIHNjb3BlIHdlbGwuDQo+DQo+IERvIHlvdSB0aGluayBodHRwczovL2dpdGh1Yi5j b20vdGlhbm9jb3JlL2VkazItcGxhdGZvcm1zL3RyZWUvbWFzdGVyL1NpbGljb24gY291bGQgYmUg YSBiZXR0ZXIgbG9jYXRpb24gPw0KPg0KPiBUaGFua3MNCj4gTWF1cmljZQ0KPiA+IC0tLS0tT3Jp Z2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJvbTogZGV2ZWxAZWRrMi5ncm91cHMuaW8gPGRldmVs QGVkazIuZ3JvdXBzLmlvPiBPbiBCZWhhbGYgT2YgU2VhbiANCj4gPiBSaG9kZXMNCj4gPiBTZW50 OiBUaHVyc2RheSwgRmVicnVhcnkgMTcsIDIwMjIgOTo1MQ0KPiA+IFRvOiBkZXZlbEBlZGsyLmdy b3Vwcy5pbw0KPiA+IENjOiBEb25nLCBHdW8gPGd1by5kb25nQGludGVsLmNvbT47IFBhdHJpY2sg UnVkb2xwaCANCj4gPiA8cGF0cmljay5ydWRvbHBoQDllbGVtZW50cy5jb20+OyBOaSwgUmF5IDxy YXkubmlAaW50ZWwuY29tPjsgTWEsIA0KPiA+IE1hdXJpY2UgPG1hdXJpY2UubWFAaW50ZWwuY29t PjsgWW91LCBCZW5qYW1pbiANCj4gPiA8YmVuamFtaW4ueW91QGludGVsLmNvbT4NCj4gPiBTdWJq ZWN0OiBbZWRrMi1kZXZlbF0gW1BBVENIIDEvMl0gVWVmaVBheWxvYWRQa2c6IEFkZCBpODAxIFNN QnVzIA0KPiA+IGNvbnRyb2xsZXIgRFhFDQo+ID4NCj4gPiBGcm9tOiBQYXRyaWNrIFJ1ZG9scGgg PHBhdHJpY2sucnVkb2xwaEA5ZWxlbWVudHMuY29tPg0KPiA+DQo+ID4gSW1wbGVtZW50IGEgc3Vi c2V0IG9mIHRoZSBnRWZpU21idXNIY1Byb3RvY29sR3VpZCB1c2luZyBhIGdlbmVyaWMgDQo+ID4g UENJIGk4MDEgU01CdXMgY29udHJvbGxlci4NCj4gPg0KPiA+IENjOiBHdW8gRG9uZyA8Z3VvLmRv bmdAaW50ZWwuY29tPg0KPiA+IENjOiBSYXkgTmkgPHJheS5uaUBpbnRlbC5jb20+DQo+ID4gQ2M6 IE1hdXJpY2UgTWEgPG1hdXJpY2UubWFAaW50ZWwuY29tPg0KPiA+IENjOiBCZW5qYW1pbiBZb3Ug PGJlbmphbWluLnlvdUBpbnRlbC5jb20+DQo+ID4gU2lnbmVkLW9mZi1ieTogUGF0cmljayBSdWRv bHBoIDxwYXRyaWNrLnJ1ZG9scGhAOWVsZW1lbnRzLmNvbT4NCj4gPiAtLS0NCj4gPiAgLi4uL0xp YnJhcnkvQnJvdGxpQ3VzdG9tRGVjb21wcmVzc0xpYi9icm90bGkgIHwgICAyICstDQo+ID4gIFVl ZmlQYXlsb2FkUGtnL1NtYnVzRHhlL1NNQnVzaTgwMUR4ZS5jICAgICAgICB8IDU1Ng0KPiA+ICsr KysrKysrKysrKysrKysrKw0KPiA+ICBVZWZpUGF5bG9hZFBrZy9TbWJ1c0R4ZS9TTUJ1c2k4MDFE eGUuaCAgICAgICAgfCAgMTcgKw0KPiA+ICBVZWZpUGF5bG9hZFBrZy9TbWJ1c0R4ZS9TTUJ1c2k4 MDFEeGUuaW5mICAgICAgfCAgNDUgKysNCj4gPiAgVWVmaVBheWxvYWRQa2cvVWVmaVBheWxvYWRQ a2cuZHNjICAgICAgICAgICAgIHwgICA3ICsNCj4gPiAgVWVmaVBheWxvYWRQa2cvVWVmaVBheWxv YWRQa2cuZmRmICAgICAgICAgICAgIHwgICA1ICsNCj4gPiAgNiBmaWxlcyBjaGFuZ2VkLCA2MzEg aW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKSAgY3JlYXRlIG1vZGUNCj4gPiAxMDA2NDQgVWVm aVBheWxvYWRQa2cvU21idXNEeGUvU01CdXNpODAxRHhlLmMNCj4gPiAgY3JlYXRlIG1vZGUgMTAw NjQ0IFVlZmlQYXlsb2FkUGtnL1NtYnVzRHhlL1NNQnVzaTgwMUR4ZS5oDQo+ID4gIGNyZWF0ZSBt b2RlIDEwMDY0NCBVZWZpUGF5bG9hZFBrZy9TbWJ1c0R4ZS9TTUJ1c2k4MDFEeGUuaW5mDQo+ID4N Cj4gPiBkaWZmIC0tZ2l0IGEvTWRlTW9kdWxlUGtnL0xpYnJhcnkvQnJvdGxpQ3VzdG9tRGVjb21w cmVzc0xpYi9icm90bGkNCj4gPiBiL01kZU1vZHVsZVBrZy9MaWJyYXJ5L0Jyb3RsaUN1c3RvbURl Y29tcHJlc3NMaWIvYnJvdGxpDQo+ID4gaW5kZXggZjQxNTNhMDlmOC4uNjY2YzMyODBjYyAxNjAw MDANCj4gPiAtLS0gYS9NZGVNb2R1bGVQa2cvTGlicmFyeS9Ccm90bGlDdXN0b21EZWNvbXByZXNz TGliL2Jyb3RsaQ0KPiA+ICsrKyBiL01kZU1vZHVsZVBrZy9MaWJyYXJ5L0Jyb3RsaUN1c3RvbURl Y29tcHJlc3NMaWIvYnJvdGxpDQo+ID4gQEAgLTEgKzEgQEANCj4gPiAtU3VicHJvamVjdCBjb21t aXQgZjQxNTNhMDlmODdjYmI5YzgyNmQ4ZmMxMmM3NDY0MmJiMmQ4NzllYQ0KPiA+ICtTdWJwcm9q ZWN0IGNvbW1pdCA2NjZjMzI4MGNjMTFkYzQzM2MzMDNkNzlhODNkNGZmYmRkMTJjYzhkDQo+ID4g ZGlmZiAtLWdpdCBhL1VlZmlQYXlsb2FkUGtnL1NtYnVzRHhlL1NNQnVzaTgwMUR4ZS5jDQo+ID4g Yi9VZWZpUGF5bG9hZFBrZy9TbWJ1c0R4ZS9TTUJ1c2k4MDFEeGUuYw0KPiA+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMC4uN2JmN2I4OTNhZA0KPiA+IC0tLSAvZGV2 L251bGwNCj4gPiArKysgYi9VZWZpUGF5bG9hZFBrZy9TbWJ1c0R4ZS9TTUJ1c2k4MDFEeGUuYw0K PiA+IEBAIC0wLDAgKzEsNTU2IEBADQo+ID4gKy8qKiBAZmlsZSsgIEltcGxlbWVudGF0aW9uIGZv ciBhIGdlbmVyaWMgaTgwMSBTTUJ1cyANCj4gPiArZHJpdmVyLisrQ29weXJpZ2h0IChjKQ0KPiA+ IDIwMTYsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4rU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6DQo+ID4gQlNELTItQ2xhdXNlLVBhdGVudCsrKyoqLysrI2luY2x1 ZGUgIlNNQnVzaTgwMUR4ZS5oIisjaW5jbHVkZQ0KPiA+IDxMaWJyYXJ5L1RpbWVyTGliLmg+KyNp bmNsdWRlIDxMaWJyYXJ5L1BjaUxpYi5oPisjaW5jbHVkZSANCj4gPiA8TGlicmFyeS9Jb0xpYi5o PisjaW5jbHVkZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPisjaW5jbHVkZSANCj4gPiA8TGlicmFyeS9C YXNlTWVtb3J5TGliLmg+KyNpbmNsdWRlDQo+ID4gPExpYnJhcnkvVWVmaUJvb3RTZXJ2aWNlc1Rh YmxlTGliLmg+KytFRklfSEFORExFICBtRHJpdmVySGFuZGxlID0NCj4gPiBOVUxMOytVSU5UMzIg ICAgICBQY2lEZXZpY2UgICAgID0gMDsrKy8qIFNNQnVzIHJlZ2lzdGVyIG9mZnNldHMuICovKyNk ZWZpbmUNCj4gPiBTTUJIU1RTVEFUICAgICAgMHgwKyNkZWZpbmUgU01CSFNUQ1RMICAgICAgIDB4 MisjZGVmaW5lIFNNQkhTVENNRA0KPiA+IDB4MysjZGVmaW5lIFNNQlhNSVRBREQgICAgICAweDQr I2RlZmluZSBTTUJIU1REQVQwICAgICAgMHg1KyNkZWZpbmUNCj4gPiBTTUJIU1REQVQxICAgICAg MHg2KyNkZWZpbmUgU01CQkxLREFUICAgICAgIDB4NysjZGVmaW5lIFNNQlRSTlNBREQNCj4gPiAw eDkrI2RlZmluZSBTTUJTTFZEQVRBICAgICAgMHhhKyNkZWZpbmUgU01MSU5LX1BJTl9DVEwgIDB4 ZSsjZGVmaW5lDQo+ID4gU01CVVNfUElOX0NUTCAgIDB4ZisjZGVmaW5lIFNNQlNMVkNNRCAgICAg ICAweDExKysvKiBJODAxIGNvbW1hbmQNCj4gPiBjb25zdGFudHMgKi8rI2RlZmluZSBJODAxX1FV SUNLICAgICAgICAgICAoMCA8PCAyKSsjZGVmaW5lIEk4MDFfQllURSAgICAgICAgICAgICgxDQo+ ID4gPDwgMikrI2RlZmluZSBJODAxX0JZVEVfREFUQSAgICAgICAoMiA8PCAyKSsjZGVmaW5lIEk4 MDFfV09SRF9EQVRBICAgICAgICgzDQo+ID4gPDwgMikrI2RlZmluZSBJODAxX1BST0NFU1NfQ0FM TCAgICAoNCA8PCAyKSsjZGVmaW5lIEk4MDFfQkxPQ0tfREFUQQ0KPiA+ICg1IDw8IDIpKyNkZWZp bmUgSTgwMV9JMkNfQkxPQ0tfREFUQSAgKDYgPDwgMikgICAgIC8qIElDSDUgYW5kIGxhdGVyICov KysvKg0KPiA+IEk4MDEgSG9zdCBDb250cm9sIHJlZ2lzdGVyIGJpdHMgKi8rI2RlZmluZSBTTUJI U1RDTlRfSU5UUkVOICAgICAoMSA8PA0KPiA+IDApKyNkZWZpbmUgU01CSFNUQ05UX0tJTEwgICAg ICAgKDEgPDwgMSkrI2RlZmluZSBTTUJIU1RDTlRfTEFTVF9CWVRFDQo+ID4gKDEgPDwgNSkrI2Rl ZmluZSBTTUJIU1RDTlRfU1RBUlQgICAgICAoMSA8PCA2KSsjZGVmaW5lDQo+ID4gU01CSFNUQ05U X1BFQ19FTiAgICAgKDEgPDwgNykgICAgLyogSUNIMyBhbmQgbGF0ZXIgKi8rKy8qIEk4MDEgSG9z dHMgU3RhdHVzDQo+ID4gcmVnaXN0ZXIgYml0cyAqLysjZGVmaW5lIFNNQkhTVFNUU19CWVRFX0RP TkUgICAgICgxIDw8IDcpKyNkZWZpbmUNCj4gPiBTTUJIU1RTVFNfSU5VU0VfU1RTICAgICAoMSA8 PCA2KSsjZGVmaW5lIFNNQkhTVFNUU19TTUJBTEVSVF9TVFMgICgxDQo+ID4gPDwgNSkrI2RlZmlu ZSBTTUJIU1RTVFNfRkFJTEVEICAgICAgICAoMSA8PCA0KSsjZGVmaW5lDQo+ID4gU01CSFNUU1RT X0JVU19FUlIgICAgICAgKDEgPDwgMykrI2RlZmluZSBTTUJIU1RTVFNfREVWX0VSUiAgICAgICAo MSA8PA0KPiA+IDIpKyNkZWZpbmUgU01CSFNUU1RTX0lOVFIgICAgICAgICAgKDEgPDwgMSkrI2Rl ZmluZSBTTUJIU1RTVFNfSE9TVF9CVVNZDQo+ID4gKDEgPDwgMCkrKy8qIEZvciBTTUJYTUlUQURE IHJlZ2lzdGVyLiAqLysjZGVmaW5lIFhNSVRfV1JJVEUoZGV2KQ0KPiA+ICgoKGRldikgPDwgMSkg fCAwKSsjZGVmaW5lIFhNSVRfUkVBRChkZXYpICAgKCgoZGV2KSA8PCAxKSB8DQo+ID4gMSkrK1NU QVRJQytVSU5UMTYrRUZJQVBJK1NtYnVzR2V0U01CYXNlQWRkcmVzcyAoKyAgSU4gVk9JRCsgICkr eysNCj4gPiBVSU5UMTYgIENtZDsrICBVSU5UMzIgIFJlZzMyOysgIFVJTlQxNiAgSW9CYXNlOysr ICBJb0Jhc2UgPSAwOysgIC8vKyANCj4gPiAvLyBUZXN0IGlmIEkvTyBkZWNvZGluZyBpcyBlbmFi bGVkKyAgLy8rICBDbWQgPSBQY2lSZWFkMTYgKFBjaURldmljZSArIDB4NCk7KyAgaWYNCj4gPiAo IShDbWQgJiAxKSkgeysgICAgZ290byBDbG9zZUFuZFJldHVybjsrICB9KysgIC8vKyAgLy8gVGVz dCBpZiBCQVIwIGlzIEkvTyBiYXINCj4gPiBhbmQgZW5hYmxlZCsgIC8vKyAgUmVnMzIgPSBQY2lS ZWFkMTYgKFBjaURldmljZSArIDB4MjApOysgIGlmDQo+ID4gKCEoUmVnMzIgJiAxKQ0KPiA+IHx8 ICEoUmVnMzIgJiAweGZmZmMpIHx8ICgoUmVnMzIgJiAweGZmZmMpID09IDB4ZmZmYykpIHsrICAg IGdvdG8NCj4gPiBDbG9zZUFuZFJldHVybjsrICB9KysgIElvQmFzZSA9IFJlZzMyICYgMHhmZmZj OysrQ2xvc2VBbmRSZXR1cm46KyANCj4gPiByZXR1cm4gSW9CYXNlOyt9KytTVEFUSUMrRUZJX1NU QVRVUytTbWJ1c1NldHVwQ29tbWFuZCAoKyAgSU4gVUlOVDE2DQo+ID4gSW9CYXNlLCsgIElOIFVJ TlQ4ICAgQ3RybCwrICBJTiBVSU5UOCAgIFhtaXRhZGQrICApK3srICBVSU5UTiAgTG9vcHMgPSAx MDAwMDsrDQo+ID4gVUlOVDggIGhvc3RfYnVzeTsrKyAgZG8geysgICAgTWljcm9TZWNvbmREZWxh eSAoMTAwKTsrICAgIGhvc3RfYnVzeSA9DQo+ID4gSW9SZWFkOCAoSW9CYXNlICsgU01CSFNUU1RB VCkgJiBTTUJIU1RTVFNfSE9TVF9CVVNZOysgIH0gd2hpbGUgKC0tDQo+ID4gTG9vcHMgJiYgaG9z dF9idXN5KTsrKyAgaWYgKExvb3BzID09IDApIHsrICAgIHJldHVybiBFRklfVElNRU9VVDsrICB9 KysgIC8qDQo+ID4gQ2xlYXIgYW55IGxpbmdlcmluZyBlcnJvcnMsIHNvIHRoZSB0cmFuc2FjdGlv biB3aWxsIHJ1bi4gKi8rDQo+ID4gSW9Xcml0ZTggKElvQmFzZSArIFNNQkhTVFNUQVQsIElvUmVh ZDggKElvQmFzZSArIFNNQkhTVFNUQVQpKTsrKyAgLyogDQo+ID4gU2V0IHVwIHRyYW5zYWN0aW9u ICovKw0KPiA+IC8qIERpc2FibGUgaW50ZXJydXB0cyAqLysgIElvV3JpdGU4IChJb0Jhc2UgKyBT TUJIU1RDVEwsIEN0cmwpOysrDQo+ID4gLyogU2V0IHRoZSBkZXZpY2UgSSdtIHRhbGtpbmcgdG8u ICovKyAgSW9Xcml0ZTggKElvQmFzZSArIA0KPiA+IFNNQlhNSVRBREQsIFhtaXRhZGQpOysrIHJl dHVybiANCj4gPiBFRklfU1VDQ0VTUzsrfSsrU1RBVElDK0VGSV9TVEFUVVMrU21idXNFeGVjdXRl Q29tbWFuZCAoKyBJTiBVSU5UMTYNCj4gPiBJb0Jhc2UrICApK3srICBVSU5UTiAgTG9vcHMgPSAx MDAwMDsrICBVSU5UOCAgU3RhdHVzOysrICAvKiBTdGFydA0KPiA+IHRoZSBjb21tYW5kLiAqLysg IElvV3JpdGU4IChJb0Jhc2UgKyBTTUJIU1RDVEwsIElvUmVhZDggKElvQmFzZSArDQo+ID4gU01C SFNUQ1RMKSB8IFNNQkhTVENOVF9TVEFSVCk7KyAgU3RhdHVzID0gSW9SZWFkOCAoSW9CYXNlICsN Cj4gPiBTTUJIU1RTVEFUKTsrKyAgLyogUG9sbCBmb3IgaXQgdG8gc3RhcnQuICovKyAgZG8geysg ICAgTWljcm9TZWNvbmREZWxheQ0KPiA+ICgxMDApOysrICAgIC8qIElmIHdlIHBvbGwgdG9vIHNs b3csIHdlIGNvdWxkIG1pc3MgSE9TVF9CVVNZIGZsYWcrICAgICAqIHNldCBhbmQNCj4gPiBkZXRl Y3QgSU5UUiBvciB4X0VSUiBmbGFncyBpbnN0ZWFkIGhlcmUuKyAgICAgKi8rICAgIFN0YXR1cyA9 IElvUmVhZDggKElvQmFzZSArDQo+ID4gU01CSFNUU1RBVCk7KysgICAgU3RhdHVzICY9IH4oU01C SFNUU1RTX1NNQkFMRVJUX1NUUyB8DQo+ID4gU01CSFNUU1RTX0lOVVNFX1NUUyk7KyAgfSB3aGls ZSAoLS1Mb29wcyAmJiBTdGF0dXMgPT0gMCk7KysgIGlmIChMb29wcyA9PSAwKQ0KPiA+IHsrICAg IHJldHVybiBFRklfVElNRU9VVDsrICB9KysgIHJldHVybg0KPiA+IEVGSV9TVUNDRVNTOyt9KytT VEFUSUMrQk9PTEVBTitTbWJ1c0hvc3RDb21wbGV0ZWQgKCsgIElOIFVJTlQ4DQo+ID4gU3RhdHVz KyAgKSt7KyAgaWYgKFN0YXR1cyAmIFNNQkhTVFNUU19IT1NUX0JVU1kpIHsrICAgIHJldHVybiBG QUxTRTsrICB9KysNCj4gPiAvKiBUaGVzZSBzdGF0dXMgYml0cyBkbyBub3QgaW1wbHkgY29tcGxl dGlvbiBvZiB0cmFuc2FjdGlvbi4gKi8rIA0KPiA+IFN0YXR1cyAmPSB+KFNNQkhTVFNUU19CWVRF X0RPTkUgfCBTTUJIU1RTVFNfSU5VU0VfU1RTIHwgDQo+ID4gU01CSFNUU1RTX1NNQkFMRVJUX1NU Uyk7KyAgcmV0dXJuIFN0YXR1cyAhPSANCj4gPiAwOyt9KytTVEFUSUMrRUZJX1NUQVRVUytTbWJ1 c0NvbXBsZXRlQ29tbWFuZCAoKyAgSU4gVUlOVDE2DQo+ID4gSW9CYXNlKyAgKSt7KyAgVUlOVE4g IExvb3BzID0gMTAwMDA7KyAgVUlOVDggIFN0YXR1czsrKyAgZG8geysNCj4gPiBNaWNyb1NlY29u ZERlbGF5ICgxMDApOysgICAgU3RhdHVzID0gSW9SZWFkOCAoSW9CYXNlICsgU01CSFNUU1RBVCk7 KyAgfQ0KPiA+IHdoaWxlICgtLUxvb3BzICYmICFTbWJ1c0hvc3RDb21wbGV0ZWQgKFN0YXR1cykp OysrICBpZiAoTG9vcHMgPT0gMCkgDQo+ID4geysgcmV0dXJuIEVGSV9USU1FT1VUOysgIH0rKyAg LyogVGhlc2Ugc3RhdHVzIGJpdHMgZG8gbm90IGltcGx5IA0KPiA+IGVycm9ycy4gKi8rIFN0YXR1 cyAmPSB+KFNNQkhTVFNUU19CWVRFX0RPTkUgfCBTTUJIU1RTVFNfSU5VU0VfU1RTIHwNCj4gPiBT TUJIU1RTVFNfU01CQUxFUlRfU1RTKTsrKyAgaWYgKFN0YXR1cyA9PSBTTUJIU1RTVFNfSU5UUikg eysgICAgcmV0dXJuDQo+ID4gRUZJX1NVQ0NFU1M7KyAgfSsrICByZXR1cm4NCj4gPiBFRklfTk9f UkVTUE9OU0U7K30rK1NUQVRJQytFRklfU1RBVFVTK0VGSUFQSStTbWJ1c1Byb2Nlc3NDYWxsT3Bl cg0KPiA+IGF0aW9uICgrICBJTiBDT05TVCAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICBJb0Jh c2UsKyAgSU4gQ09OU1QNCj4gPiBFRklfU01CVVNfSENfUFJPVE9DT0wgICAgICpUaGlzLCsgIElO ICAgICAgICBFRklfU01CVVNfREVWSUNFX0FERFJFU1MNCj4gPiBTbGF2ZUFkZHJlc3MsKyAgSU4g ICAgICAgIEVGSV9TTUJVU19ERVZJQ0VfQ09NTUFORCAgQ29tbWFuZCwrICBJTg0KPiA+IEJPT0xF QU4gICAgICAgICAgICAgICAgICAgUGVjQ2hlY2ssKyAgSU4gT1VUICAgIFVJTlROICAgICAgICAg ICAgICAgICAgICAgKkxlbmd0aCwrICBJTiBPVVQNCj4gPiBWT0lEICAgICAgICAgICAgICAgICAg ICAgICpCdWZmZXIrICApK3srICBFRklfU1RBVFVTICBTdGF0dXM7KyAgVUlOVDE2DQo+ID4gUmVz dWx0QnVmZmVyOysgIFVJTlQxNiAgICAgIEFkZHJCdWZmZXI7KysgIGlmICghQnVmZmVyIHx8ICFM ZW5ndGgpIHsrICAgIHJldHVybg0KPiA+IFJFVFVSTl9JTlZBTElEX1BBUkFNRVRFUjsrICB9Kysg IGlmICgqTGVuZ3RoICE9IDIpIHsrICAgIHJldHVybg0KPiA+IFJFVFVSTl9JTlZBTElEX1BBUkFN RVRFUjsrICB9KysgIENvcHlNZW0gKCZBZGRyQnVmZmVyLCBCdWZmZXIsIA0KPiA+IHNpemVvZiAo QWRkckJ1ZmZlcikpOysrICAvKiBTZXQgdXAgZm9yIHByb2Nlc3MgY2FsbCAqLysgIFN0YXR1cyA9 IA0KPiA+IFNtYnVzU2V0dXBDb21tYW5kIChJb0Jhc2UsIEk4MDFfUFJPQ0VTU19DQUxMLCBYTUlU X1dSSVRFDQo+ID4gKFNsYXZlQWRkcmVzcy5TbWJ1c0RldmljZUFkZHJlc3MpKTsrICBpZiAoRUZJ X0VSUk9SIChTdGF0dXMpKSB7KyAgICByZXR1cm4NCj4gPiBTdGF0dXM7KyAgfSsrICAvKiBjbWQg d2lsbCBvbmx5IGJlIHNlbmQgaWYgSTJDX0VOIGlzIHplcm8gKi8rDQo+ID4gSW9Xcml0ZTggKElv QmFzZQ0KPiA+ICsgU01CSFNUQ01ELCBDb21tYW5kKTsrKyAgSW9Xcml0ZTggKElvQmFzZSArIFNN QkhTVERBVDAsIEFkZHJCdWZmZXINCj4gPiAmIDB4MDBmZik7KyAgSW9Xcml0ZTggKElvQmFzZSAr IFNNQkhTVERBVDEsIChBZGRyQnVmZmVyICYgMHhmZjAwKSA+PiANCj4gPiA4KTsrKw0KPiA+IC8q IFN0YXJ0IHRoZSBjb21tYW5kICovKyAgU3RhdHVzID0gU21idXNFeGVjdXRlQ29tbWFuZCAoSW9C YXNlKTsrICBpZg0KPiA+IChFRklfRVJST1IgKFN0YXR1cykpIHsrICAgIHJldHVybiBTdGF0dXM7 KyAgfSsrICAvKiBQb2xsIGZvciB0cmFuc2FjdGlvbg0KPiA+IGNvbXBsZXRpb24gKi8rICBTdGF0 dXMgPSBTbWJ1c0NvbXBsZXRlQ29tbWFuZCAoSW9CYXNlKTsrICBpZg0KPiA+IChFRklfRVJST1Ig KFN0YXR1cykpIHsrICAgIHJldHVybiBTdGF0dXM7KyAgfSsrICAvKiBSZWFkIHJlc3VsdHMgb2Yg dHJhbnNhY3Rpb24NCj4gPiAqLysgIFJlc3VsdEJ1ZmZlciAgPSBJb1JlYWQ4IChJb0Jhc2UgKyBT TUJIU1REQVQwKTsrICBSZXN1bHRCdWZmZXINCj4gPiB8PQ0KPiA+IChJb1JlYWQ4IChJb0Jhc2Ug KyBTTUJIU1REQVQxKSA8PCA4KTsrKyAgQ29weU1lbSAoQnVmZmVyLCANCj4gPiAmUmVzdWx0QnVm ZmVyLCBzaXplb2YgKFJlc3VsdEJ1ZmZlcikpOysgICpMZW5ndGggPSBzaXplb2YgDQo+ID4gKFJl c3VsdEJ1ZmZlcik7KysgcmV0dXJuIEVGSV9TVUNDRVNTOyt9KytTVEFUSUMrRUZJX1NUQVRVUytF RklBUEkrU21idXNSZWFkT3BlcmF0aW9uDQo+ID4gKCsgIElOIENPTlNUICBVSU5UMTYgICAgICAg ICAgICAgICAgICAgIElvQmFzZSwrICBJTiBDT05TVA0KPiA+IEVGSV9TTUJVU19IQ19QUk9UT0NP TCAgICAgKlRoaXMsKyAgSU4gICAgICAgIEVGSV9TTUJVU19ERVZJQ0VfQUREUkVTUw0KPiA+IFNs YXZlQWRkcmVzcywrICBJTiAgICAgICAgRUZJX1NNQlVTX0RFVklDRV9DT01NQU5EICBDb21tYW5k LCsgIElODQo+ID4gQk9PTEVBTiAgICAgICAgICAgICAgICAgICBQZWNDaGVjaywrICBJTiBPVVQg ICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAqTGVuZ3RoLCsgIElOIE9VVA0KPiA+IFZPSUQg ICAgICAgICAgICAgICAgICAgICAgKkJ1ZmZlcisgICkreysgIEVGSV9TVEFUVVMgIFN0YXR1czsr ICBVSU5UOA0KPiA+IFJlc3VsdEJ1ZmZlcjsrKyAgaWYgKCFCdWZmZXIgfHwgIUxlbmd0aCkgeysg ICAgcmV0dXJuDQo+ID4gUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSOysgIH0rKyAgLyogU2V0IHVw IGZvciBhIGJ5dGUgZGF0YSByZWFkLiAqLysgDQo+ID4gU3RhdHVzID0gU21idXNTZXR1cENvbW1h bmQgKElvQmFzZSwgSTgwMV9CWVRFX0RBVEEsIFhNSVRfUkVBRA0KPiA+IChTbGF2ZUFkZHJlc3Mu U21idXNEZXZpY2VBZGRyZXNzKSk7KyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgeysgICAgcmV0 dXJuDQo+ID4gU3RhdHVzOysgIH0rKyAgSW9Xcml0ZTggKElvQmFzZSArIFNNQkhTVENNRCwgQ29t bWFuZCk7KysgIElvV3JpdGU4IA0KPiA+IChJb0Jhc2UgKyBTTUJIU1REQVQwLCAwKTsrICBJb1dy aXRlOCAoSW9CYXNlICsgU01CSFNUREFUMSwgMCk7KysgIC8qIA0KPiA+IFN0YXJ0IHRoZSBjb21t YW5kICovKyAgU3RhdHVzID0gU21idXNFeGVjdXRlQ29tbWFuZCAoSW9CYXNlKTsrICBpZg0KPiA+ IChFRklfRVJST1IgKFN0YXR1cykpIHsrICAgIHJldHVybiBTdGF0dXM7KyAgfSsrICAvKiBQb2xs IGZvciB0cmFuc2FjdGlvbg0KPiA+IGNvbXBsZXRpb24gKi8rICBTdGF0dXMgPSBTbWJ1c0NvbXBs ZXRlQ29tbWFuZCAoSW9CYXNlKTsrICBpZg0KPiA+IChFRklfRVJST1IgKFN0YXR1cykpIHsrICAg IHJldHVybiBTdGF0dXM7KyAgfSsrICAvKiBSZWFkIHJlc3VsdHMgb2YgdHJhbnNhY3Rpb24NCj4g PiAqLysgIFJlc3VsdEJ1ZmZlciA9IElvUmVhZDggKElvQmFzZSArIFNNQkhTVERBVDApOysrICBD b3B5TWVtIA0KPiA+IChCdWZmZXIsICZSZXN1bHRCdWZmZXIsIHNpemVvZiAoUmVzdWx0QnVmZmVy KSk7KyAgKkxlbmd0aCA9IHNpemVvZiANCj4gPiAoUmVzdWx0QnVmZmVyKTsrKyByZXR1cm4gRUZJ X1NVQ0NFU1M7K30rK1NUQVRJQytFRklfU1RBVFVTK0VGSUFQSStTbWJ1c1dyaXRlT3BlcmF0aW9u DQo+ID4gKCsgIElOIENPTlNUICBVSU5UMTYgICAgICAgICAgICAgICAgICAgIElvQmFzZSwrICBJ TiBDT05TVA0KPiA+IEVGSV9TTUJVU19IQ19QUk9UT0NPTCAgICAgKlRoaXMsKyAgSU4gICAgICAg IEVGSV9TTUJVU19ERVZJQ0VfQUREUkVTUw0KPiA+IFNsYXZlQWRkcmVzcywrICBJTiAgICAgICAg RUZJX1NNQlVTX0RFVklDRV9DT01NQU5EICBDb21tYW5kLCsgIElODQo+ID4gQk9PTEVBTiAgICAg ICAgICAgICAgICAgICBQZWNDaGVjaywrICBJTiBPVVQgICAgVUlOVE4gICAgICAgICAgICAgICAg ICAgICAqTGVuZ3RoLCsgIElOIE9VVA0KPiA+IFZPSUQgICAgICAgICAgICAgICAgICAgICAgKkJ1 ZmZlcisgICkreysgIEVGSV9TVEFUVVMgIFN0YXR1czsrICBVSU5UOA0KPiA+IElucHV0QnVmZmVy OysrICBpZiAoIUJ1ZmZlciB8fCAhTGVuZ3RoKSB7KyAgICByZXR1cm4NCj4gPiBSRVRVUk5fSU5W QUxJRF9QQVJBTUVURVI7KyAgfSsrICBpZiAoKkxlbmd0aCAhPSAxKSB7KyAgICByZXR1cm4NCj4g PiBSRVRVUk5fSU5WQUxJRF9QQVJBTUVURVI7KyAgfSsrICBDb3B5TWVtICgmSW5wdXRCdWZmZXIs IEJ1ZmZlciwgDQo+ID4gc2l6ZW9mIChJbnB1dEJ1ZmZlcikpOysrICAvKiBTZXQgdXAgZm9yIGEg Ynl0ZSBkYXRhIHJlYWQuICovKyBTdGF0dXMgDQo+ID4gPSBTbWJ1c1NldHVwQ29tbWFuZCAoSW9C YXNlLCBJODAxX0JZVEVfREFUQSwgWE1JVF9XUklURQ0KPiA+IChTbGF2ZUFkZHJlc3MuU21idXNE ZXZpY2VBZGRyZXNzKSk7KyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgeysgICAgcmV0dXJuDQo+ ID4gU3RhdHVzOysgIH0rKyAgSW9Xcml0ZTggKElvQmFzZSArIFNNQkhTVENNRCwgQ29tbWFuZCk7 KysgIElvV3JpdGU4IA0KPiA+IChJb0Jhc2UgKyBTTUJIU1REQVQwLCBJbnB1dEJ1ZmZlcik7Kysg IC8qIFN0YXJ0IHRoZSBjb21tYW5kICovKyAgU3RhdHVzID0NCj4gPiBTbWJ1c0V4ZWN1dGVDb21t YW5kIChJb0Jhc2UpOysgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsrICAgIHJldHVybg0KPiA+ IFN0YXR1czsrICB9KysgIC8qIFBvbGwgZm9yIHRyYW5zYWN0aW9uIGNvbXBsZXRpb24gKi8rICBT dGF0dXMgPQ0KPiA+IFNtYnVzQ29tcGxldGVDb21tYW5kIChJb0Jhc2UpOysgIGlmIChFRklfRVJS T1IgKFN0YXR1cykpIHsrICAgIHJldHVybg0KPiA+IFN0YXR1czsrICB9KysgIHJldHVybg0KPiA+ IEVGSV9TVUNDRVNTOyt9KytTVEFUSUMrRUZJX1NUQVRVUytFRklBUEkrU21idXNFeGVjdXRlT3Bl cmF0aW9uICgrDQo+ID4gSU4gQ09OU1QgIEVGSV9TTUJVU19IQ19QUk9UT0NPTCAgICAgKlRoaXMs KyAgSU4NCj4gPiBFRklfU01CVVNfREVWSUNFX0FERFJFU1MgIFNsYXZlQWRkcmVzcywrICBJTiAN Cj4gPiBFRklfU01CVVNfREVWSUNFX0NPTU1BTkQgIENvbW1hbmQsKyAgSU4NCj4gPiBFRklfU01C VVNfT1BFUkFUSU9OICAgICAgIE9wZXJhdGlvbiwrICBJTiAgICAgICAgQk9PTEVBTg0KPiA+IFBl Y0NoZWNrLCsgIElOIE9VVCAgICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICpMZW5ndGgsKyAg SU4gT1VUICAgIFZPSUQNCj4gPiAqQnVmZmVyKyAgKSt7KyAgVUlOVDE2ICBJb0Jhc2U7KysgIElv QmFzZSA9IFNtYnVzR2V0U01CYXNlQWRkcmVzcyAoKTsrICBpZg0KPiA+ICghSW9CYXNlKSB7KyAg ICByZXR1cm4gRUZJX1VOU1VQUE9SVEVEOysgIH0rKyAgaWYgKE9wZXJhdGlvbiA9PQ0KPiA+IEVm aVNtYnVzUHJvY2Vzc0NhbGwpIHsrICAgIHJldHVybiBTbWJ1c1Byb2Nlc3NDYWxsT3BlcmF0aW9u ICgrDQo+ID4gSW9CYXNlLCsgICAgICAgICAgICAgVGhpcywrICAgICAgICAgICAgIFNsYXZlQWRk cmVzcywrICAgICAgICAgICAgIENvbW1hbmQsKw0KPiA+IFBlY0NoZWNrLCsgICAgICAgICAgICAg TGVuZ3RoLCsgICAgICAgICAgICAgQnVmZmVyKyAgICAgICAgICAgICApOysgIH0gZWxzZSBpZiAo T3BlcmF0aW9uID09DQo+ID4gRWZpU21idXNSZWFkQnl0ZSkgeysgICAgcmV0dXJuIFNtYnVzUmVh ZE9wZXJhdGlvbiAoKyAgICAgICAgICAgICBJb0Jhc2UsKw0KPiA+IFRoaXMsKyAgICAgICAgICAg ICBTbGF2ZUFkZHJlc3MsKyAgICAgICAgICAgICBDb21tYW5kLCsgICAgICAgICAgICAgUGVjQ2hl Y2ssKw0KPiA+IExlbmd0aCwrICAgICAgICAgICAgIEJ1ZmZlcisgICAgICAgICAgICAgKTsrICB9 IGVsc2UgaWYgKE9wZXJhdGlvbiA9PSBFZmlTbWJ1c1dyaXRlQnl0ZSkNCj4gPiB7KyAgICByZXR1 cm4gU21idXNXcml0ZU9wZXJhdGlvbiAoKyAgICAgICAgICAgICBJb0Jhc2UsKyAgICAgICAgICAg ICBUaGlzLCsNCj4gPiBTbGF2ZUFkZHJlc3MsKyAgICAgICAgICAgICBDb21tYW5kLCsgICAgICAg ICAgICAgUGVjQ2hlY2ssKyAgICAgICAgICAgICBMZW5ndGgsKw0KPiA+IEJ1ZmZlcisgICAgICAg ICAgICAgKTsrICB9KysgIHJldHVybg0KPiA+IEVGSV9VTlNVUFBPUlRFRDsrfSsrU1RBVElDK0VG SV9TVEFUVVMrRUZJQVBJK1NtYnVzSGNQcm90b2NvbEFycEQNCj4gPiBldmljZSAoKyAgSU4gQ09O U1QgIEVGSV9TTUJVU19IQ19QUk9UT0NPTCAqVGhpcywrICBJTiAgICAgICAgQk9PTEVBTg0KPiA+ IEFycEFsbCwrICBJTiAgICAgICAgRUZJX1NNQlVTX1VESUQgKlNtYnVzVWRpZCwgT1BUSU9OQUwr ICBJTiBPVVQNCj4gPiBFRklfU01CVVNfREVWSUNFX0FERFJFU1MgICpTbGF2ZUFkZHJlc3MgT1BU SU9OQUwrICApK3srICByZXR1cm4gDQo+ID4gRUZJX1VOU1VQUE9SVEVEOyt9KytTVEFUSUMrRUZJ X1NUQVRVUytFRklBUEkrU21idXNIY1Byb3RvY29sR2V0QQ0KPiA+IHJwTWFwICgrICBJTiBDT05T VCAgRUZJX1NNQlVTX0hDX1BST1RPQ09MICAqVGhpcywrICBJTiBPVVQgICAgVUlOVE4NCj4gPiAq TGVuZ3RoLCsgIElOIE9VVCAgICBFRklfU01CVVNfREVWSUNFX01BUCAgICoqU21idXNEZXZpY2VN YXArICApK3srDQo+ID4gcmV0dXJuDQo+ID4gRUZJX1VOU1VQUE9SVEVEOyt9KytTVEFUSUMrRUZJ X1NUQVRVUytFRklBUEkrU21idXNIY1Byb3RvY29sTm90aWYNCj4gPiB5ICgrICBJTiBDT05TVCAg RUZJX1NNQlVTX0hDX1BST1RPQ09MICAgICAgKlRoaXMsKyAgSU4NCj4gPiBFRklfU01CVVNfREVW SUNFX0FERFJFU1MgICBTbGF2ZUFkZHJlc3MsKyAgSU4gICAgICAgIFVJTlRODQo+ID4gRGF0YSwr ICBJTiAgICAgICAgRUZJX1NNQlVTX05PVElGWV9GVU5DVElPTiAgTm90aWZ5RnVuY3Rpb24rICAp K3srICByZXR1cm4NCj4gPiBFRklfVU5TVVBQT1JURUQ7K30rK0VGSV9TTUJVU19IQ19QUk9UT0NP TCAgbVNtYnVzUHJvdG9jb2wgPSB7KyANCj4gPiBTbWJ1c0V4ZWN1dGVPcGVyYXRpb24sKyAgU21i dXNIY1Byb3RvY29sQXJwRGV2aWNlLCsgDQo+ID4gU21idXNIY1Byb3RvY29sR2V0QXJwTWFwLCsg IFNtYnVzSGNQcm90b2NvbE5vdGlmeSt9OysrLyoqKyAgVGhlIA0KPiA+IEVudHJ5IFBvaW50IGZv ciBTTUJVUyBkcml2ZXIuKysgIEl0IGluc3RhbGxzIERyaXZlckJpbmRpbmcuKysgIEByZXR2YWwg RUZJX1NVQ0NFU1MNCj4gPiBUaGUgZW50cnkgcG9pbnQgaXMgZXhlY3V0ZWQgc3VjY2Vzc2Z1bGx5 LisgIEByZXR2YWwgb3RoZXIgICAgICAgICAgICAgU29tZSBlcnJvcg0KPiA+IG9jY3VycyB3aGVu IGV4ZWN1dGluZyB0aGlzIGVudHJ5DQo+ID4gcG9pbnQuKysqKi8rRUZJX1NUQVRVUytFRklBUEkr SW5zdGFsbFNtYnVzUHJvdG9jb2wgKCsgIElOIEVGSV9IQU5ETEUgDQo+ID4gSW1hZ2VIYW5kbGUs KyAgSU4gRUZJX1NZU1RFTV9UQUJMRSAgKlN5c3RlbVRhYmxlKyAgKSt7KyAgRUZJX1NUQVRVUw0K PiA+IFN0YXR1czsrICBVSU5UMTYgICAgICBJb0Jhc2U7KyAgVUlOVDggICAgICAgRGV2aWNlOysg IFVJTlQ4ICAgICAgIEZ1bmN0aW9uOysNCj4gPiBCT09MRUFOICAgICBCcmVha0xvb3A7KyAgVUlO VDggICAgICAgQmFzZUNsYXNzOysgIFVJTlQ4ICAgICAgIFN1YkNsYXNzOysrDQo+ID4gQnJlYWtM b29wID0gRkFMU0U7KyAgU3RhdHVzICAgID0gRUZJX1NVQ0NFU1M7KysgIC8vKyAgLy8gU2VhcmNo IGZvciBTTUJ1cw0KPiA+IENvbnRyb2xsZXIgd2l0aGluIFBDSSBEZXZpY2VzIG9uIHJvb3QgYnVz KyAgLy8rICBmb3IgKERldmljZSA9IDA7IERldmljZSA8PQ0KPiA+IFBDSV9NQVhfREVWSUNFOyBE ZXZpY2UrKykgeysgICAgZm9yIChGdW5jdGlvbiA9IDA7IEZ1bmN0aW9uIDw9DQo+ID4gUENJX01B WF9GVU5DOyBGdW5jdGlvbisrKSB7KyAgICAgIGlmIChQY2lSZWFkMTYgKFBDSV9MSUJfQUREUkVT UyAoMCwNCj4gPiBEZXZpY2UsIEZ1bmN0aW9uLCAweDAwKSkgIT0gMHg4MDg2KSB7KyAgICAgICAg Y29udGludWU7KyAgICAgIH0rKyAgICAgIEJhc2VDbGFzcyA9DQo+ID4gUGNpUmVhZDggKFBDSV9M SUJfQUREUkVTUyAoMCwgRGV2aWNlLCBGdW5jdGlvbiwgMHgwQikpOysrICAgICAgaWYgKEJhc2VD bGFzcw0KPiA+ID09IFBDSV9DTEFTU19TRVJJQUwpIHsrICAgICAgICBTdWJDbGFzcyA9IFBjaVJl YWQ4IChQQ0lfTElCX0FERFJFU1MgKDAsDQo+ID4gRGV2aWNlLCBGdW5jdGlvbiwgMHhBKSk7Kysg ICAgICAgIGlmIChTdWJDbGFzcyA9PSBQQ0lfQ0xBU1NfU0VSSUFMX1NNQikgeysNCj4gPiBCcmVh a0xvb3AgPSBUUlVFOysgICAgICAgICAgUGNpRGV2aWNlID0gUENJX0xJQl9BRERSRVNTICgwLCBE ZXZpY2UsIEZ1bmN0aW9uLA0KPiA+IDB4MDApOysgICAgICAgICAgYnJlYWs7KyAgICAgICAgfSsg ICAgICB9KyAgICB9KysgICAgaWYgKEJyZWFrTG9vcCkgeysgICAgICBicmVhazsrICAgIH0rICB9 KysgIGlmDQo+ID4gKCFCcmVha0xvb3ApIHsrICAgIERFQlVHICgoRUZJX0RfSU5GTywgIk5vIFBD SSBTTUJVUyBjb250cm9sbGVyDQo+ID4gZm91bmQuXG4iKSk7KyAgICByZXR1cm4gRUZJX1VOU1VQ UE9SVEVEOysgIH0rKyAgREVCVUcgKChFRklfRF9JTkZPLCAiUENJDQo+ID4gRGV2aWNlIGZvdW5k IG9uIDAtJXgtJXhcbiIsIERldmljZSwgRnVuY3Rpb24pKTsrKyAgSW9CYXNlID0NCj4gPiBTbWJ1 c0dldFNNQmFzZUFkZHJlc3MgKCk7KyAgaWYgKCFJb0Jhc2UpIHsrICAgIHJldHVybg0KPiA+IEVG SV9VTlNVUFBPUlRFRDsrICB9KysgIERFQlVHICgoKyAgICBFRklfRF9JTkZPLCsgICAgIiVhOiBE ZXRlY3RlZCBpODAxDQo+ID4gU01CdXMgY29udHJvbGxlciB3aXRoIFNNQkFTRSAweCV4XG4iLCsg ICAgX19GVU5DVElPTl9fLCsNCj4gPiBJb0Jhc2UrICAgICkpOysrICBTdGF0dXMgPSBnQlMtPklu c3RhbGxQcm90b2NvbEludGVyZmFjZSAoKw0KPiA+ICZtRHJpdmVySGFuZGxlLCsgICAgICAgICAg ICAgICAgICAmZ0VmaVNtYnVzSGNQcm90b2NvbEd1aWQsKw0KPiA+IEVGSV9OQVRJVkVfSU5URVJG QUNFLCsgICAgICAgICAgICAgICAgICAmbVNtYnVzUHJvdG9jb2wrICAgICAgICAgICAgICAgICAg KTsrKyAgaWYNCj4gPiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7KyAgICByZXR1cm4gU3RhdHVzOysg IH0rKyAgcmV0dXJuIEVGSV9TVUNDRVNTOyt9ZGlmZiAtLWdpdA0KPiA+IGEvVWVmaVBheWxvYWRQ a2cvU21idXNEeGUvU01CdXNpODAxRHhlLmgNCj4gPiBiL1VlZmlQYXlsb2FkUGtnL1NtYnVzRHhl L1NNQnVzaTgwMUR4ZS5oDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAw MDAwMDAwLi5lODg4MjNkYTMxDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL1VlZmlQYXls b2FkUGtnL1NtYnVzRHhlL1NNQnVzaTgwMUR4ZS5oDQo+ID4gQEAgLTAsMCArMSwxNyBAQA0KPiA+ ICsvKiogQGZpbGUrICBIZWFkZXIgZmlsZSBmb3IgYSBnZW5lcmljIGk4MDEgU01CVVMgZHJpdmVy LisrQ29weXJpZ2h0DQo+ID4gKyhjKSAyMDE2LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0 cw0KPiA+ICtyZXNlcnZlZC48QlI+K1NQRFgtTGljZW5zZS1JZGVudGlmaWVyOg0KPiA+ICtCU0Qt Mi1DbGF1c2UtUGF0ZW50KysrKiovKyNpZm5kZWYgX1BDSV9QTEFURk9STV9EWEVfSF8rI2RlZmlu ZQ0KPiA+ICtfUENJX1BMQVRGT1JNX0RYRV9IXysjaW5jbHVkZSA8UGlEeGUuaD4rKyNpbmNsdWRl IA0KPiA+ICs8SW5kdXN0cnlTdGFuZGFyZC9QY2kuaD4rI2luY2x1ZGUNCj4gPiArPEluZHVzdHJ5 U3RhbmRhcmQvUGNpMjIuaD4rI2luY2x1ZGUNCj4gPiArPFByb3RvY29sL1NtYnVzSGMuaD4rKyNl bmRpZmRpZmYgLS1naXQgDQo+ID4gK2EvVWVmaVBheWxvYWRQa2cvU21idXNEeGUvU01CdXNpODAx RHhlLmluZg0KPiA+ICtiL1VlZmlQYXlsb2FkUGtnL1NtYnVzRHhlL1NNQnVzaTgwMUR4ZS5pbmYN Cj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAuLjdkMTNjNDQ2 ZWYNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvVWVmaVBheWxvYWRQa2cvU21idXNEeGUv U01CdXNpODAxRHhlLmluZg0KPiA+IEBAIC0wLDAgKzEsNDUgQEANCj4gPiArIyMgQGZpbGUrIyBU aGlzIGRyaXZlciBwcm9kdWNlcyBnRWZpU21idXNIY1Byb3RvY29sR3VpZCBwcm90b2NvbCB0byAN Cj4gPiArbG9hZA0KPiA+IGFjY2VzcyBTTUJVUyBkZXZpY2VzKyMrIyBDb3B5cmlnaHQgKGMpIDIw MjAsIDllbGVtZW50cyBBZ2VuY3kNCj4gPiBHbWJIKyMrIyAgU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEJTRC0yLUNsYXVzZS0NCj4gPiBQYXRlbnQrIysjKyMjKytbRGVmaW5lc10rICBJTkZfVkVS U0lPTiAgICAgICAgICAgICAgICAgICAgPSAweDAwMDEwMDA1Kw0KPiA+IEJBU0VfTkFNRSAgICAg ICAgICAgICAgICAgICAgICA9IFNNQnVzaTgwMUR4ZSsgIEZJTEVfR1VJRCAgICAgICAgICAgICAg ICAgICAgICA9IDM5MDIwOERBLQ0KPiA+IDhFNkYtNDk1Ny05MEQ2LTQyMTczN0ZFQTlCRisgIE1P RFVMRV9UWVBFICAgICAgICAgICAgICAgICAgICA9IERYRV9EUklWRVIrDQo+ID4gVkVSU0lPTl9T VFJJTkcgICAgICAgICAgICAgICAgID0gMS4wKyAgRU5UUllfUE9JTlQgICAgICAgICAgICAgICAg ICAgID0NCj4gPiBJbnN0YWxsU21idXNQcm90b2NvbCsrIysjIFRoZSBmb2xsb3dpbmcgaW5mb3Jt YXRpb24gaXMgZm9yIHJlZmVyZW5jZSANCj4gPiBJbnN0YWxsU21idXNQcm90b2NvbCsrb25seQ0K PiA+IGFuZCBub3QgcmVxdWlyZWQgYnkgdGhlIGJ1aWxkIHRvb2xzLisjKyMgIFZBTElEX0FSQ0hJ VEVDVFVSRVMgICAgICAgICAgID0gSUEzMg0KPiA+IFg2NCsjKytbU291cmNlcy5jb21tb25dKyAg U01CdXNpODAxRHhlLmgrDQo+ID4gU01CdXNpODAxRHhlLmMrK1tQYWNrYWdlc10rICBNZGVQa2cv TWRlUGtnLmRlYysgDQo+ID4gTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMrK1tMaWJyYXJ5 Q2xhc3Nlc10rDQo+ID4gVWVmaURyaXZlckVudHJ5UG9pbnQrICBEZWJ1Z0xpYisgIElvTGliKyAg VWVmaUxpYisgIFRpbWVyTGliKw0KPiA+IFBjaUxpYisrW1Byb3RvY29sc10rICBnRWZpU21idXNI Y1Byb3RvY29sR3VpZCAgICAgICAgICAgICAgICAgICAgICAgIyMNCj4gPiBQUk9EVUNFUysrW0Rl cGV4XSsgIFRSVUVkaWZmIC0tZ2l0DQo+ID4gUFJPRFVDRVMrK2EvVWVmaVBheWxvYWRQa2cvVWVm aVBheWxvYWRQa2cuZHNjDQo+ID4gYi9VZWZpUGF5bG9hZFBrZy9VZWZpUGF5bG9hZFBrZy5kc2MN Cj4gPiBpbmRleCAxY2U5NmE1MWMxLi41NDU0M2I3NjIzIDEwMDY0NA0KPiA+IC0tLSBhL1VlZmlQ YXlsb2FkUGtnL1VlZmlQYXlsb2FkUGtnLmRzYw0KPiA+ICsrKyBiL1VlZmlQYXlsb2FkUGtnL1Vl ZmlQYXlsb2FkUGtnLmRzYw0KPiA+IEBAIC0yOTAsNiArMjkwLDcgQEANCj4gPiAgIWlmICQoUEVS Rk9STUFOQ0VfTUVBU1VSRU1FTlRfRU5BQkxFKQ0KPiA+IFBlcmZvcm1hbmNlTGlifE1kZU1vZHVs ZVBrZy9MaWJyYXJ5L0R4ZUNvcmVQZXJmb3JtYW5jZUxpYi9EeGVDb3JlDQo+ID4gUGVyZm9ybWFu Y2VMaWIuaW5mICFlbmRpZisNCj4gPiBTbWJ1c0xpYnxNZGVQa2cvTGlicmFyeS9EeGVTbWJ1c0xp Yi9EeGVTbWJ1c0xpYi5pbmYNCj4gPiBbTGlicmFyeUNsYXNzZXMuY29tbW9uLkRYRV9EUklWRVJd DQo+ID4gUGNkTGlifE1kZVBrZy9MaWJyYXJ5L0R4ZVBjZExpYi9EeGVQY2RMaWIuaW5mQEAgLTMw NCw2ICszMDUsNyBAQA0KPiA+ICAhaWYgJChQRVJGT1JNQU5DRV9NRUFTVVJFTUVOVF9FTkFCTEUp DQo+ID4gUGVyZm9ybWFuY2VMaWJ8TWRlTW9kdWxlUGtnL0xpYnJhcnkvRHhlUGVyZm9ybWFuY2VM aWIvRHhlUGVyZm9ybWENCj4gPiBuY2VMaWIuaW5mICFlbmRpZisNCj4gPiBTbWJ1c0xpYnxNZGVQ a2cvTGlicmFyeS9EeGVTbWJ1c0xpYi9EeGVTbWJ1c0xpYi5pbmYNCj4gPiBbTGlicmFyeUNsYXNz ZXMuY29tbW9uLkRYRV9SVU5USU1FX0RSSVZFUl0NCj4gPiBQY2RMaWJ8TWRlUGtnL0xpYnJhcnkv RHhlUGNkTGliL0R4ZVBjZExpYi5pbmZAQCAtNjU3LDYgKzY1OSwxMSBAQA0KPiA+ICAhZW5kaWYg ICBNZGVNb2R1bGVQa2cvQnVzL0lzYS9QczJNb3VzZUR4ZS9QczJNb3VzZUR4ZS5pbmYgKyAgIysg ICMNCj4gPiBTTUJVUyBTdXBwb3J0KyAgIysgIFVlZmlQYXlsb2FkUGtnL1NtYnVzRHhlL1NNQnVz aTgwMUR4ZS5pbmYrICAgIyAgICMNCj4gPiBDb25zb2xlIFN1cHBvcnQgICAjZGlmZiAtLWdpdCBh L1VlZmlQYXlsb2FkUGtnL1VlZmlQYXlsb2FkUGtnLmZkZg0KPiA+IGIvVWVmaVBheWxvYWRQa2cv VWVmaVBheWxvYWRQa2cuZmRmDQo+ID4gaW5kZXggYzdiMDQ5NzhhZC4uODg2MWQyOTE2MiAxMDA2 NDQNCj4gPiAtLS0gYS9VZWZpUGF5bG9hZFBrZy9VZWZpUGF5bG9hZFBrZy5mZGYNCj4gPiArKysg Yi9VZWZpUGF5bG9hZFBrZy9VZWZpUGF5bG9hZFBrZy5mZGYNCj4gPiBAQCAtMTc4LDYgKzE3OCwx MSBAQCBJTkYNCj4gPiBNZGVNb2R1bGVQa2cvQnVzL0lzYS9QczJLZXlib2FyZER4ZS9QczJLZXli b2FyZER4ZS5pbmYNCj4gPiAgIWVuZGlmIElORiBNZGVNb2R1bGVQa2cvQnVzL0lzYS9QczJNb3Vz ZUR4ZS9QczJNb3VzZUR4ZS5pbmYgKyMrIyANCj4gPiBTTUJVUyBTdXBwb3J0KyMrSU5GIFVlZmlQ YXlsb2FkUGtnL1NtYnVzRHhlL1NNQnVzaTgwMUR4ZS5pbmYrICMgIyANCj4gPiBDb25zb2xlIFN1 cHBvcnQgIy0tDQo+ID4gMi4zMi4wDQo+ID4NCj4gPg0KPiA+DQo+ID4gLT0tPS09LT0tPS09DQo+ ID4gR3JvdXBzLmlvIExpbmtzOiBZb3UgcmVjZWl2ZSBhbGwgbWVzc2FnZXMgc2VudCB0byB0aGlz IGdyb3VwLg0KPiA+IFZpZXcvUmVwbHkgT25saW5lICgjODY3MzApOiANCj4gPiBodHRwczovL2Vk azIuZ3JvdXBzLmlvL2cvZGV2ZWwvbWVzc2FnZS84NjczMA0KPiA+IE11dGUgVGhpcyBUb3BpYzog aHR0cHM6Ly9ncm91cHMuaW8vbXQvODkyMTQ5OTEvMTc3Mzk3Mg0KPiA+IEdyb3VwIE93bmVyOiBk ZXZlbCtvd25lckBlZGsyLmdyb3Vwcy5pbw0KPiA+IFVuc3Vic2NyaWJlOiBodHRwczovL2VkazIu Z3JvdXBzLmlvL2cvZGV2ZWwvdW5zdWINCj4gPiBbbWF1cmljZS5tYUBpbnRlbC5jb21dIC09LT0t PS09LT0tPQ0KPiA+DQo+DQo+DQo+DQo+IA0KPg0KPg0KDQoNCg0KDQoNCg==