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.web10.4731.1681811862981734829 for ; Tue, 18 Apr 2023 02:57:43 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=kUgAZ8yM; spf=pass (domain: intel.com, ip: 192.55.52.43, mailfrom: dun.tan@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1681811862; x=1713347862; h=from:to:subject:date:message-id:references:in-reply-to: content-transfer-encoding:mime-version; bh=5MXTnzo85wZllYgdmI2pbs9/tq8xo5KRqpcd0sXyboE=; b=kUgAZ8yMsG4TusyurSy5ySzam/7RLWLq7MmTWsdS5LFUO3jGByfrtoIo d5zn4pFuGZgrq8x3A6/s6S8FcEevFTjrEwv62WPlO4XX2LzMOr44a6LK6 QQDYIvMdlnXT0aNSnm9qgEylIoYk7uLjWmccIvLggcakVvi+sMci0hoJG rbdgGmQfmZJFdZd0/zfnFpBGP3jQu32UquJFWuCq2kCiJxX3gRBmcnW/G dyG2EXTKAPtZeZmpOnnJWginI+oKJT7knz4IrwpElom0QjRhFRy1Qo4N+ CGUCHnthFLYOK2e+6r8nRdeOYUwoNbZL/1ssYy+fuNAPXbytwlk13n6WG A==; X-IronPort-AV: E=McAfee;i="6600,9927,10683"; a="431412671" X-IronPort-AV: E=Sophos;i="5.99,206,1677571200"; d="scan'208";a="431412671" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Apr 2023 02:57:33 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10683"; a="693566930" X-IronPort-AV: E=Sophos;i="5.99,206,1677571200"; d="scan'208";a="693566930" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by fmsmga007.fm.intel.com with ESMTP; 18 Apr 2023 02:57:32 -0700 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Tue, 18 Apr 2023 02:57:32 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) 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.2507.23 via Frontend Transport; Tue, 18 Apr 2023 02:57:32 -0700 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (104.47.55.100) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.23; Tue, 18 Apr 2023 02:57:32 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KUGzjj8tESwmya7dtnBt9Qjq9SJyUoxwY+EsyAr2QYdVoTTjl9ebtOgR45Yl0IJKyPSLSWzJtS/SeYMBqqRrFFE6r+TGE0cq6WAXv0VfeIya02sor6QjsD2b+R4hbD952y+WRQVcE07IBMZFCwD+C+4pYmRoDp84XEDvkYcW6QGKYF3xuht/FcqUVQwj5X8nTgiHlMsxydYhW7i9pPcgfYFCVuirBKGk/d/2C3ocodKWP4i/JfIr9C0DJqosjbs/wlvlThRGOI/x8nQWSJLm0AeR79gpDUn8kBc+IewI6thVIf4tuq6cA1rtSi/Nx09U6ZDeMtXsLTlKJfa6d0rEUg== 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=5MXTnzo85wZllYgdmI2pbs9/tq8xo5KRqpcd0sXyboE=; b=gMB118alIZT5EoopKwRGZ3v0+UhCAWordMxxYvwNpANItg2Yn+1EHI0IdTcjaBCiN700bqBwzDk6HzxufTHAk4TYN7EduUvRWmpqwLWV9uLYk+d5Tm1BMA6NPQTCjMvJH7/2RRyXwhlp/gM3vp67qtWRd/nTHQcj1eEr7E7EjkLhOZpyCU/1Wl6AG977HSaE4gd5cGmfujrihJ2wmuv7GhnhTmHS5KdAY+Kzkm8P88OKi/U0khS/WwY/YGL5RcSoX6MvKy5duY0C2NbWsYBCgP3qONvDNagrIk3tJJVdknhVwbRdCm4MbkajY4l2mDM3DMBbkeiq8NL2ZfAmR8LpGw== 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 BN9PR11MB5483.namprd11.prod.outlook.com (2603:10b6:408:104::10) by PH7PR11MB7478.namprd11.prod.outlook.com (2603:10b6:510:269::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6298.45; Tue, 18 Apr 2023 09:57:30 +0000 Received: from BN9PR11MB5483.namprd11.prod.outlook.com ([fe80::1eb1:2222:1823:8e7a]) by BN9PR11MB5483.namprd11.prod.outlook.com ([fe80::1eb1:2222:1823:8e7a%7]) with mapi id 15.20.6298.045; Tue, 18 Apr 2023 09:57:30 +0000 From: "duntan" To: "devel@edk2.groups.io" , "thomas.lendacky@amd.com" , "Ni, Ray" Subject: Re: [edk2-devel] [Patch V2 0/8] Use CpuPageTableLib to create and update smm page table Thread-Topic: [edk2-devel] [Patch V2 0/8] Use CpuPageTableLib to create and update smm page table Thread-Index: AQHZbRyoGhev/k0Lh0ak5MT8foi7/q8nX/cggACu7wCAALRekIAAqcYAgADTs3CAAJNVAIAAOr8OgAAfEgCABaY98A== Date: Tue, 18 Apr 2023 09:57:30 +0000 Message-ID: References: <1755241E6695EAE7.1885@groups.io> <2301e275-1f69-e5c0-997d-d967264aa590@amd.com> <4c5afff9-39b6-6f3a-ce05-0aadb8b004b9@amd.com> In-Reply-To: <4c5afff9-39b6-6f3a-ce05-0aadb8b004b9@amd.com> Accept-Language: zh-CN, 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: BN9PR11MB5483:EE_|PH7PR11MB7478:EE_ x-ms-office365-filtering-correlation-id: fd0a5875-432e-4203-4cbc-08db3ff352d5 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: xiDq4n2eR7JY+y2AVfkrLPagYimQGkw59iyZzVloa33/07oGCS8q3Zlc3yb/DIzGGSjBM6xQpWakUIBsCzOz8c06ki+d6gkpYlxINmMqd2Q/gYueQ2Ghe5SC1HpWb6z/12W08njae8kr1kG9b/iMlWKQBzH3DS73Py6jQKOrg2xiNjKBbLIJDT9f6kUci6EH2UCUMlD3clZOEv5X31IM+rwjqEFn2iAgKMF4ARR13KV8q0jEX5TB72RTJDVKBelrPll6Kyg3Fy9WFPV/mNZEKFIRRyzVLxAXZs34gHbs4aur7ipN+Om3drjsRLLXhuP9n04+rNLensy3hXKg+PkEUhzNQY/IqtGZlxWOL9y9np0JPWKB5KY5TEqr7rejOl52dexWhn+zESvAOxuVOf8xJGL4JM2XSO3BJGkhw5TemGT6ljvk1WUgmNt+hrkVeCfqL62VoPF6JPWbR0RCDEl84OrQbn2kV/FprGDf5i7ghWsokkf09QY2B0ikWJ0DrvkoDn3F5EmJS2AwatfsTZOCUhEMyU8j7yPEr19NOzXA+wyWn9pcGMxnWxK0hcNxRy9AlW8OCBZnxhbSYd4fjIrgvhmnQQzs8rjJJOOnGki0CmeC44S2VIlFLMbceUuBaz6jYm7mBaTBBWnOk65AQPOe6A== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BN9PR11MB5483.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(396003)(136003)(376002)(39860400002)(366004)(346002)(451199021)(38100700002)(66899021)(71200400001)(5660300002)(966005)(30864003)(33656002)(52536014)(8936002)(7696005)(6636002)(19627235002)(110136005)(316002)(41300700001)(55016003)(76116006)(478600001)(8676002)(66946007)(64756008)(66556008)(6506007)(66446008)(122000001)(82960400001)(66476007)(53546011)(9686003)(86362001)(2906002)(26005)(38070700005)(186003)(15650500001)(83380400001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Q1dEbkVicm9iUXNGcC9Ya2dMS012RWEycTZLVmFNU042STE4QW1mS1NOZWNn?= =?utf-8?B?T2VvU0FpSHVmRWJJVjRhc2x2UmUvWEVYMGhWS3NOUEdLcHRpT1pwY0gzeVZ4?= =?utf-8?B?TDJKV3ZuODFXNkNHR3YvYkEwaFNFc2k0MTlPdGVlc0RLWUpCMW1WR1RwOHVC?= =?utf-8?B?elBUSERlaE82UURwMDlRYkJ2bVVSTUtDM2RaZFR1bElHK1JRU2lZb0V4ZjJR?= =?utf-8?B?T1ZSWWJrTC9CTmY0R29UYXhReTd2TVYzWXVEK2tFbDdJd0tkZjF5T3dmTWJk?= =?utf-8?B?ZjRMMllXcHphcWJPZ3ByTEkreEEvK0ZCRmsxNldjT1RVZGgwQThtc09UMFo5?= =?utf-8?B?QldKbGRkaVRhQVN3YmFscHg5Yjk5WlVJQXhXMDFrajZ1TlpaVkZCYVN3V1VM?= =?utf-8?B?dlo1WXQzb0xoZG1tNnFkZTdvbW5oZ3dxVStEMHBFV3IzNUpNcDlBVWpBbHo1?= =?utf-8?B?NU8weU9SaTRJOWxka0ZMcHQ3YjZjVXlZQlU0SmYwQ3NhZGx6MjMyKzR6NXBq?= =?utf-8?B?alNEdktyYTFXMkNMZjNLNWJqVUZacDNWV01FSk9HQXBpMm5Pd05DcjRMN1lZ?= =?utf-8?B?NkFtVGpuL0pMT2d5UDZ3eDlHSWJKOHFpQ0MvSUtsNHdlaE9CdzJRUVN0M1Rn?= =?utf-8?B?bVphc3JPTW1HSFd2SnhtQmZRT0JPMC9rVVpYK3pFYjNiT0ZOSzh3TFppZmh5?= =?utf-8?B?ZkVHVlBTWUxYUGZXNENGNEhTUlcySDJJeUxLRmhEL2pkMEhlRVpvTmU5WTQx?= =?utf-8?B?alZSc2IwTFBDL0hXSThzY1d6T1NHZGxESDV0bEJDaVJUejF4c0VSalBWNkcv?= =?utf-8?B?VmNlUVNIRUVxZ1BmTzEvWlE4dy85eEwrQUs0dDk0ZVBOV3VwTG5ZUWR2blcw?= =?utf-8?B?eUdGZ09neG9qWFJvcXlLSWZZY1FLNW0yWVhjcWx1Vlc2aXQ4V0NraERua2pv?= =?utf-8?B?OXdRZEdUR0RSZVVxTkdwTXpJOFU1dlJJWkZEMGNUUk5oR3pnemtGUEUyUnlr?= =?utf-8?B?V3d6Tm56aUh4QjY0UFZCbE5WRVY1R0NMaWpBZzJFQjZGR0pyeXdYZzRneHlz?= =?utf-8?B?TTRhUHVsWW9vcjBEaVVVbGNXenhrZ3lMcVhXalRvaXhiaEh1Tm01b2R5cVFC?= =?utf-8?B?QUpXaHJ6UGV5MVB6cFIwZ2VITkFVZmt5cmxwYmNzVEd5ZGdrZWNhYU9yVVRs?= =?utf-8?B?dWhLWmRQRWRsNXhrd1N1a3dzZ0dDank1YUFISDluMGF2VkxuMFNoZE1xSytv?= =?utf-8?B?MmZOU0VNWUdkZlRnaFYrbXJHMkxaZWZtNGlvZVVhUU82S3cvYWF6aExHbHUx?= =?utf-8?B?d2d6U2s4RnpRa21hODJQdWhFdk5mdUhwckhQTSs3L2Qvdzc1UUYvZGh2djF2?= =?utf-8?B?NEtpdSt3dUtpQTNOckpKaStlRW0rNWQyTmRwRG1XYjhKVko1bWszRy9vc3lj?= =?utf-8?B?WkQwQi9QSEV3UHJ2ZWhSQTJPR215SG5VcVpvemdqa1FGZXpWYTdrSGE5ZnNm?= =?utf-8?B?VzhibitvV0JLOVZKQVhWaERBWTBvS2g1VXNVOUl3VHdPNVZFWi96Wm4wRjBV?= =?utf-8?B?SWZHdURWR1dWSkRXQkFOZTJ3dndEd3h3eGZidDhqdXJQVmVkMkdveUY2VGF5?= =?utf-8?B?b1JZWkhsNUppK1ZCekw2VGpZY0dpZ2FZSHd4dDN6cEVUQk5GT1VObHYrdDRz?= =?utf-8?B?aWZqS21rdGVLT0VISVBCWXJaMXgweUxLYTFzZnZzVXNSWkZqWDZ6b1ErS1la?= =?utf-8?B?WUdMSUYwYWl1SnFDWUhycHZXQkFuN0Vwa29PbHJSUE5HZTlPRWFOaGFzekE3?= =?utf-8?B?RTR4c3ladjdBalpJT05tZHVmcXpaTjYzcmdlVW1zQ3B2czdJNmllbVlZZjky?= =?utf-8?B?THRpdE9mTk1QMVl5aUtiVUV4ay8raytZRWk1K3Z4SWR6eVIwZjUwSFBid0kw?= =?utf-8?B?Q014cTFPNUtoYVZiN1pYRmZpeWpteXlJVzIrTG05cHhIdms0S0VNV1AxUlRO?= =?utf-8?B?Nlc1YjlIQTlyblUyUGFyYTI1a04zUFlUKy80eE5wZHZIUVg3NVdyT0FKYTJO?= =?utf-8?B?Wis3a1NCQkZYQTZVMmRSOFovdXJJR09kYkNteGRkREFhMmRLVFM0WUJSR1Rr?= =?utf-8?Q?cfRs=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BN9PR11MB5483.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: fd0a5875-432e-4203-4cbc-08db3ff352d5 X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Apr 2023 09:57:30.2115 (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: ZYkYfPKS/zcSDLOslnBFSYGdPtMY3t2KFpKO3nXti9/2x2AjHiNxkqraCgxvtHnFpsnl68oiuN2t1Cs3YPCpcA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR11MB7478 Return-Path: dun.tan@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgVG9tLA0KDQpJIGFkZGVkIGEgbmV3IHBhdGNoIGluIG15IGNvZGUgYnJhbmNoLiBUaGlzIG5l dyBwYXRjaCByZW1vdmVzIHRoZSBjb2RlIHRoYXQgbWF5IGFwcGx5IEFkZHJlc3NFbmNNYXNrIHRv IHNtbSBwYWdlIHRhYmxlIG5vbi1sZWFmIGVudHJpZXMgd2hlbiBzcGxpdHRpbmcgcGFnZSB0YWJs ZS4gDQpDb3VsZCB5b3UgcGxlYXNlIGhlbHAgdGVzdCBpZiB0aGlzIGNvZGUgYnJhbmNoIHdvcmtz Pw0KaHR0cHM6Ly9naXRodWIuY29tL3RkMzYvZWRrMi90cmVlL1NtbVBhZ2VUYWJsZV9WMg0KDQpU aGFua3MsDQpEdW4NCg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IGRldmVsQGVk azIuZ3JvdXBzLmlvIDxkZXZlbEBlZGsyLmdyb3Vwcy5pbz4gT24gQmVoYWxmIE9mIExlbmRhY2t5 LCBUaG9tYXMgdmlhIGdyb3Vwcy5pbw0KU2VudDogU2F0dXJkYXksIEFwcmlsIDE1LCAyMDIzIDM6 MDUgQU0NClRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgTmksIFJheSA8cmF5Lm5pQGludGVsLmNv bT47IFRhbiwgRHVuIDxkdW4udGFuQGludGVsLmNvbT4NClN1YmplY3Q6IFJlOiBbZWRrMi1kZXZl bF0gW1BhdGNoIFYyIDAvOF0gVXNlIENwdVBhZ2VUYWJsZUxpYiB0byBjcmVhdGUgYW5kIHVwZGF0 ZSBzbW0gcGFnZSB0YWJsZQ0KDQpPbiA0LzE0LzIzIDEyOjE5LCBOaSwgUmF5IHZpYSBncm91cHMu aW8gd3JvdGU6DQo+IHRvbSwNCj4gaWYgdGhlIGMgYml0IGlzIG5vdCByZXF1aXJlZCBmb3Igbm9u IGxlYWYgcGFnZSB0YWJsZSBlbnRyaWVzLCB3aHkgdGhlIHRydW5rIGNvZGUgc2V0cyB0aGUgYyBi aXQgZm9yIGFsbCBlbnRpdGllcyBpbmNsdWRpbmcgbm9ubGVhZiBvbmVzPw0KDQpCZWNhdXNlIGl0 J3MgZWZmZWN0aXZlbHkgdGhlIGNvcnJlY3QgdGhpbmcgdG8gZG8sIGV2ZW4gdGhvdWdoIGl0IGRv ZXNuJ3QgbWF0dGVyLg0KDQo+IA0KPiBpIHdlbnQgYmFjayB0byByZWFkIGFnYWluIHRoZSBzbW0g aXNzdWUgeW91IG1ldC4geW91IHNhaWQgdGhlIGMgYml0IGlzIHNldCBmb3Igbm9uIGxlYWYgZW50 cmllcyB0aGF0IGNhdXNlZCBhIGRlZmVyZW5jZSBpc3N1ZS4gQnV0IHRoZSBwYWdldGFibGVsaWIg Y29kZSBkb2Vzbid0IHNldCBjIGJpdCB0byBub24gbGVhZiBlbnRyaWVzLiB0aGVuIHdobyBzZXRz IHRoZSBjIGJpdD8NCg0KSSBndWVzcyB0aGF0J3MgdGhlIG1haW4gcXVlc3Rpb24sIGhvdyBkaWQg dGhhdCBnZXQgc2V0PyBJIGhhdmVuJ3QgaGFkIHRoZSB0aW1lIHRvIGZ1bGx5IGV4YW1pbmUgYW5k IGZvbGxvdyB0aGUgY29kZXBhdGggaW4gdGhlIHBhZ2V0YWJsZSBsaWJyYXJ5IHRvIGZpZ3VyZSBv dXQgd2h5IGl0IHdhcyBzZXQuIE1heWJlIGFzIHBhcnQgb2YgYSBwYWdlIHNwbGl0Pw0KDQpUaGFu a3MsDQpUb20NCg0KPiANCj4gdGhhbmtzLA0KPiByYXkNCj4gDQo+IHRoYW5rcywNCj4gcmF5DQo+ IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+IEZyb206IGRldmVsQGVkazIuZ3Jv dXBzLmlvIDxkZXZlbEBlZGsyLmdyb3Vwcy5pbz4gb24gYmVoYWxmIG9mIA0KPiBMZW5kYWNreSwg VGhvbWFzIHZpYSBncm91cHMuaW8gPHRob21hcy5sZW5kYWNreT1hbWQuY29tQGdyb3Vwcy5pbz4N Cj4gU2VudDogRnJpZGF5LCBBcHJpbCAxNCwgMjAyMyA5OjQzOjUyIFBNDQo+IFRvOiBOaSwgUmF5 IDxyYXkubmlAaW50ZWwuY29tPjsgVGFuLCBEdW4gPGR1bi50YW5AaW50ZWwuY29tPjsgDQo+IGRl dmVsQGVkazIuZ3JvdXBzLmlvIDxkZXZlbEBlZGsyLmdyb3Vwcy5pbz4NCj4gU3ViamVjdDogUmU6 IFtlZGsyLWRldmVsXSBbUGF0Y2ggVjIgMC84XSBVc2UgQ3B1UGFnZVRhYmxlTGliIHRvIGNyZWF0 ZSANCj4gYW5kIHVwZGF0ZSBzbW0gcGFnZSB0YWJsZQ0KPiANCj4gT24gNC8xNC8yMyAwMDowNywg TmksIFJheSB3cm90ZToNCj4+DQo+Pg0KPj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ Pj4gRnJvbTogVG9tIExlbmRhY2t5IDx0aG9tYXMubGVuZGFja3lAYW1kLmNvbT4NCj4+PiBTZW50 OiBGcmlkYXksIEFwcmlsIDE0LCAyMDIzIDEyOjE5IEFNDQo+Pj4gVG86IFRhbiwgRHVuIDxkdW4u dGFuQGludGVsLmNvbT47IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+Pj4gQ2M6IE5pLCBSYXkgPHJh eS5uaUBpbnRlbC5jb20+DQo+Pj4gU3ViamVjdDogUmU6IFtlZGsyLWRldmVsXSBbUGF0Y2ggVjIg MC84XSBVc2UgQ3B1UGFnZVRhYmxlTGliIHRvIA0KPj4+IGNyZWF0ZSBhbmQgdXBkYXRlIHNtbSBw YWdlIHRhYmxlDQo+Pj4NCj4+PiBPbiA0LzEzLzIzIDA0OjE0LCBUYW4sIER1biB3cm90ZToNCj4+ Pj4gSGkgVG9tLA0KPj4+Pg0KPj4+PiBUaGFuayB5b3UgZm9yIHlvdXIgaGVscCB3aXRoIHRlc3Rp bmcuDQo+Pj4+IEZvciB0aGUgYnVpbGQgZmFpbHVyZSwgaXQncyBiZWNhdXNlIHRoYXQgdGhlIENw dVBhZ2VUYWJsZUxpYiANCj4+Pj4gaW5zdGFuY2UgaXMNCj4+PiBhZGRlZCBpbnRvIE92bWZQa2cg RFNDIGluIHRoZSBsYXN0IHBhY3RoICcgT3ZtZlBrZzogQWRkIA0KPj4+IENwdVBhZ2VUYWJsZUxp YiByZXF1aXJlZCBieSBQaVNtbUNwdUR4ZScuIEkgaGF2ZSBtb3ZlZCB0aGlzIHBhdGNoIHRvIA0K Pj4+IHRoZSBoZWFkIG9mIHRoZSBwYXRjaCBzZXQuDQo+Pj4+DQo+Pj4+IEZvciB0aGUgYm9vdCBm YWlsdXJlLCBJIHRoaW5rIGl0J3MgYmVjYXVzZSB0aGF0IHRoZSBlbmNyeXB0IG1hc2sgDQo+Pj4+ IHdhcyBub3QNCj4+PiBhcHBsaWVkIHRvIHRoZSBtZW1vcnkgdXNlZCBieSBwYWdlIHRhYmxlIGlu IHBhZ2UgdGFibGUgbm9uLWxlYWYgZW50cnkuDQo+Pj4gSW5pdGlhbGx5IEkgdGhvdWdodCB0aGUg ZW5jcnlwdCBtYXNrIHdvdWxkIG9ubHkgYmUgYXBwbGllZCB0byB0aGUgDQo+Pj4gbGVhZiBlbnRy eSBpbiBBTUQgU0VWIGZlYXR1cmUuIFNvIEkgdHJlYXRlZCB0aGUgZW5jcnlwdGlvbiBwcm9jZXNz IA0KPj4+IGFzIG5vbiAxOjEgbWFwcGluZywgd2hpY2ggb25seSBhcHBsaWVzIHRoZSBlbmNyeXB0 IG1hc2sgdG8gbGVhZiANCj4+PiBlbnRyeS4gSSdtIGFsc28gY3VyaW91cyB3aHkgdGhlIER4ZUlw bCBwYXRjaCBzZXQgd29ya3MgZ29vZC4gQWxsIHRoZSANCj4+PiBwYWdlIHRhYmxlIG5vbi1sZWFm IGVudHJpZXMgYXJlIGFsc28gbm90IGVuY3J5cHRlZCBpbiB0aGUgRHhlSXBsIHBhZ2UgdGFibGUg cmVsYXRlZCBwYXRjaCBzZXQuDQo+Pj4NCj4+PiBSaWdodCwgYW5kIHRoYXQgd29ya3MgZm9yIFNF Vi4gQWxsIG5vbi1sZWFmIHBhZ2V0YWJsZSBlbnRyaWVzIGFyZSANCj4+PiB0cmVhdGVkIGFzIGVu Y3J5cHRlZCByZWdhcmRsZXNzIG9mIHRoZSBlbmNyeXB0aW9uIGJpdC4gU2luY2UgdGhlIA0KPj4+ IHRhYmxlcyB3ZXJlIGJ1aWx0IGJlaW5nIG1hcHBlZCBlbmNyeXB0ZWQsIHRoZSBwYWdldGFibGUg d2FsayB3b3JrcyANCj4+PiB3aGVuIHRoZSBub24tbGVhZiBlbnRyaWVzIGRvbid0IGhhdmUgdGhl IGVuY3J5cHRpb24gYml0IHNldC4gSW4gdGhpcyANCj4+PiBjYXNlLCB0aG91Z2gsIHRoZSBlbmNy eXB0aW9uIGJpdCBpcyBwcmVzZW50IGluIHRoZSBub24tbGVhZiBlbnRyeSANCj4+PiBhbmQgdGhh dCBpcyB0aGUgcmVhc29uIHdoeSB0aGVyZSBhcmUgaXNzdWVzLg0KPj4NCj4+IENhbiB5b3UgcG9p bnQgdXMgd2hpY2ggZG9jIGhlcmUgDQo+PiAoaHR0cHM6Ly93d3cuYW1kLmNvbS9lbi9kZXZlbG9w ZXIvc2V2Lmh0bWwpDQo+PiBzYXlzIHRoZSBwYWdlIHRhYmxlIGlzIGVuY3J5cHRlZCByZWdhcmRs ZXNzIHRoZSBLRVlfSUQgYml0cyB2YWx1ZT8NCj4+IEhvdyBjYW4gdGhlIGVuY3J5cHRpb24gZW5n aW5lIGtub3cgaWYgYSBjaHVuayBvZiBtZW1vcnkgYmVsb25ncyB0byBwYWdlIHRhYmxlPw0KPiAN Cj4gSXQgZG9lc24ndC4gRm9yIGFuIFNFViBndWVzdCwgd2hlbiB0aGUgaGFyZHdhcmUgd2Fsa3Mg dGhlIHBhZ2V0YWJsZXMsIA0KPiBpdCB3aWxsIGFsd2F5cyB0cmVhdCB0aGUgbWVtb3J5IGFjY2Vz c2VzIGFzIGVuY3J5cHRlZCAoc2VlIHNlY3Rpb24gDQo+IDE1LjM0LjUgb2YgdGhlIEFNRCBBUE0g Vm9sIDIgYXQgaHR0cHM6Ly93d3cuYW1kLmNvbS9zeXN0ZW0vZmlsZXMvVGVjaERvY3MvMjQ1OTMu cGRmKS4NCj4gDQo+IEJ1dCwgYmVjYXVzZSB0aGUgaW5pdGlhbCBwYWdldGFibGVzIHRoYXQgYXJl IGJ1aWx0IHRvIG1hcCBldmVyeXRoaW5nIA0KPiBhcyBlbmNyeXB0ZWQvcHJpdmF0ZSB0byBzdGFy dCB3aXRoIChzZWUgDQo+IE92bWZQa2cvUmVzZXRWZWN0b3IvSWEzMi9QYWdlVGFibGVzNjQuYXNt KSwgb25seSBjaGFuZ2luZyB0byBzaGFyZWQgDQo+IHdoZW4gc3BlY2lmaWNhbGx5IHJlcXVlc3Rl ZCwgYW55IG1lbW9yeSBhbGxvY2F0ZWQgYW5kIHVzZWQgd2lsbCBiZSBlbmNyeXB0ZWQuDQo+IFRo dXMsIHdoZW4gbmV3IHBhZ2V0YWJsZXMgYXJlIGFsbG9jYXRlZC9jcmVhdGVkIGluIHRoZSBDcHVQ YWdlVGFibGVMaWIgDQo+IGxpYnJhcnksIHRoZXkgd2lsbCBiZSBlbmNyeXB0ZWQgYW5kIHNvIGV2 ZXJ5dGhpbmcgd29ya3MuIEFuZCB0aG9zZSBuZXcgDQo+IHBhZ2V0YWJsZXMgd2lsbCBtYXAgZXZl cnl0aGluZyBlbmNyeXB0ZWQgYnkgZGVmYXVsdCwgZXhjZXB0IGZvciB0aGUgDQo+IEdIQ0IgcGFn ZXMuIElmIHRoZXkgd2VyZSBtYXBwZWQgc2hhcmVkIHdoZW4gdGhleSB3ZXJlIGNyZWF0ZWQsIHRo ZW4gDQo+IHRoZSBwYWdldGFibGUgd2FsayB3b3VsZCBmYWlsLg0KPiANCj4+DQo+PiBNeSB1bmRl cnN0YW5kaW5nIHRvIFNFViBpcyBhbnkgcGh5c2ljYWwgYWRkcmVzcyBmaWVsZCBpbiBndWVzdCBw YWdlIA0KPj4gdGFibGUgc2hvdWxkIGhhdmUgdGhlIEtFWV9JRCBiaXRzIHNldCBpZiB0aGUgcGh5 c2ljYWwgcGFnZXMgYXJlIA0KPj4gcHJpdmF0ZSB0byBndWVzdC4gT25seSBzb21lIHBhZ2VzIGZv ciBHTUNCIGRvbid0IGhhdmUgS0VZX0lEIGJpdHMgc2V0IGFzIHRob3NlIGFyZSBzaGFyZWQgYmV0 d2VlbiBndWVzdCBhbmQgaG9zdC4NCj4gDQo+IFJpZ2h0LCB0aGUgZW5jcnlwdGlvbiBiaXQgaW4g dGhlIGxlYWYgZW50cnkgb2YgdGhlIHBhZ2V0YWJsZXMgd2lsbCANCj4gZGV0ZXJtaW5lIHRoZSBl bmNyeXB0aW9uIG1vZGUuDQo+IA0KPj4NCj4+IEkgdGhvdWdodCBEdW4ncyBwYXRjaCB3b3JrcyBi ZWNhdXNlIGFsbCBndWVzdCBtZW1vcnkgaXMgbWFya2VkIGFzIA0KPj4gc2hhcmVkIGJlY2F1c2Ug dGhlIEtFWV9JRCBiaXRzIGluIGFsbCBlbnRyaWVzIGFyZSBub3Qgc2V0LiBPbmx5IHNvbWUgDQo+ PiBwYWdlcyB0aGF0J3JlIHVzZWQgYnkgR01DQiBoYXZlIHRoZSBLRVlfSUQgYml0cyBzZXQuDQo+ IA0KPiBKdXN0IHRoZSBvcHBvc2l0ZSwgdGhlIENwdVBhZ2VUYWJsZUxpYiBsaWJyYXJ5IG1hcmtz IGV2ZXJ5dGhpbmcgDQo+IGVuY3J5cHRlZCBhbmQgb25seSBjbGVhcnMgdGhlIGVuY3J5cHRpb24g Yml0IGZvciB0aGUgR0hDQiBwYWdlcy4NCj4gDQo+IEluIE1kZU1vZHVsZVBrZy9Db3JlL0R4ZUlw bFBlaW0vWDY0L1ZpcnR1YWxNZW1vcnkuYywgdGhlDQo+IENyZWF0ZUlkZW50aXR5TWFwcGluZ1Bh Z2VUYWJsZXMoKSBmdW5jdGlvbiByZXRyaWV2ZXMgdGhlIGVuY3J5cHRpb24gDQo+IGJpdCBhbmQg c2F2ZXMgaXQgaW4gQWRkcmVzc0VuY01hc2suIEFkZHJlc3NFbmNNYXNrIGlzIHRoZW4gYXBwbGll ZCB0byANCj4gdGhlIG1hcHBpbmcgYXR0cmlidXRlIHVzZWQgd2hlbiBjYWxsaW5nIENyZWF0ZU9y VXBkYXRlUGFnZVRhYmxlKCkgdG8gDQo+IGJ1aWxkIHRoZSBpbml0aWFsIHBhZ2V0YWJsZXMuDQo+ IA0KPj4NCj4+DQo+Pj4NCj4+PiBIZXJlIGlzIHNvbWUgZGVidWcgYWZ0ZXIgc2V0dGluZyBQYWdp bmdFbnRyeSBhdCBsaW5lIDQzNiBvZg0KPj4+IFVlZmlDcHVQa2cvTGlicmFyeS9DcHVQYWdlVGFi bGVMaWIvQ3B1UGFnZVRhYmxlTWFwLmM6DQo+Pj4NCj4+PiAqKiogREVCVUc6IFBhZ2VUYWJsZUxp Yk1hcEluTGV2ZWw6NDM3IC0gUGFnaW5nRW50cnkgPSAzRkY4MTAwMA0KPj4+ICoqKiBERUJVRzog UGFnZVRhYmxlTGliTWFwSW5MZXZlbDo0MzcgLSBQYWdpbmdFbnRyeSA9IDNGRjgwMDAwDQo+Pj4g KioqIERFQlVHOiBQYWdlVGFibGVMaWJNYXBJbkxldmVsOjQzNyAtIFBhZ2luZ0VudHJ5ID0gM0ZG ODMwMDANCj4+PiAqKiogREVCVUc6IFBhZ2VUYWJsZUxpYk1hcEluTGV2ZWw6NDM3IC0gUGFnaW5n RW50cnkgPSAzRkY4MTAwMA0KPj4+ICoqKiBERUJVRzogUGFnZVRhYmxlTGliTWFwSW5MZXZlbDo0 MzcgLSBQYWdpbmdFbnRyeSA9IDNGRjgwMDAwDQo+Pj4gKioqIERFQlVHOiBQYWdlVGFibGVMaWJN YXBJbkxldmVsOjQzNyAtIFBhZ2luZ0VudHJ5ID0gM0ZGODMwMDANCj4+PiAqKiogREVCVUc6IFBh Z2VUYWJsZUxpYk1hcEluTGV2ZWw6NDM3IC0gUGFnaW5nRW50cnkgPSAzRkY4MTAwMA0KPj4+ICoq KiBERUJVRzogUGFnZVRhYmxlTGliTWFwSW5MZXZlbDo0MzcgLSBQYWdpbmdFbnRyeSA9IDNGRjgw MDAwDQo+Pj4gKioqIERFQlVHOiBQYWdlVGFibGVMaWJNYXBJbkxldmVsOjQzNyAtIFBhZ2luZ0Vu dHJ5ID0gODAwMDAzRkMwMTAwMA0KPj4NCj4+IEFyZSB5b3UgdGVzdGluZyB0aGUgU01FIG9yIFNF Vj8NCj4+IE15IHVuZGVyc3RhbmRpbmcgaXMgd2l0aCBTTUUsIG9ubHkgdGhlIGhpZ2hlc3QgQyBi aXQgc2hvdWxkIGJlIHNldCANCj4+IGluZGljYXRpbmcgdGhlIHBoeXNpY2FsIHBhZ2UgaXMgZW5j cnlwdGVkLg0KPiANCj4gSSBhbSB0ZXN0aW5nIFNFVi4gVGhlcmUgaXMgb25seSBhIHNpbmdsZSBi aXQgdG8gaW5kaWNhdGUgd2hldGhlciBhIA0KPiBwYWdlIGlzIGVuY3J5cHRlZC4gVGhlIGd1ZXN0 IEFTSUQgaXMgdXNlZCB0byBkZXRlcm1pbmUgd2hhdCBrZXkgaXMgDQo+IHVzZWQgdG8gZGVjcnlw dCB0aGUgcGFnZS4gRnJvbSBhIHBhZ2V0YWJsZSBsZWFmIGVudHJ5LCBTTUUgYW5kIFNFViBhcmUg DQo+IGVxdWl2YWxlbnQsIHRoZSBlbmNyeXB0aW9uIGJpdCBkZXRlcm1pbmVzIGhvdyB0aGUgbWVt b3J5IHdpbGwgYmUgYWNjZXNzZWQuDQo+IA0KPiBTTUUgYW5kIFNFViBkaWZmZXIgaW4gaG93IHRo ZXkgZGVhbCB3aXRoIGluc3RydWN0aW9uIGZldGNoZXMgYW5kIA0KPiBwYWdldGFibGUgd2Fsa3Ms IHdpdGggU01FIG9iZXlpbmcgdGhlIGVuY3J5cHRpb24gYml0IGFuZCBTRVYgYWx3YXlzIA0KPiBw ZXJmb3JtaW5nIHRoZSBhY2Nlc3NlcyBhcyBlbmNyeXB0ZWQgYWNjZXNzZXMgZm9yIHNlY3VyaXR5 Lg0KPiANCj4gVGhhbmtzLA0KPiBUb20NCj4gDQo+Pg0KPj4NCj4+DQo+Pj4gISEhISBYNjQgRXhj ZXB0aW9uIFR5cGUgLSAwRCgjR1AgLSBHZW5lcmFsIFByb3RlY3Rpb24pICBDUFUgQXBpYyBJRCAN Cj4+PiAtDQo+Pj4gMDAwMDAwMDAgISEhIQ0KPj4+DQo+Pj4gMHg4MDAwMDNGQzAxMDAwIGlzbid0 IG1hcHBlZCBhbmQgc28gaXQgZmFpbHMgLSBJJ20gbm90IGV4YWN0bHkgc3VyZSANCj4+PiBob3cg dGhlICNQRiB0dXJucyBpbnRvIGEgI0dQLCB0aG91Z2gsIG1heWJlIGJlY2F1c2UgdGhlIHZpcnR1 YWwgDQo+Pj4gYWRkcmVzcyBpc24ndCBjYW5vbmljYWwgdGhhdCBwb2ludC4NCj4+Pg0KPj4+IFRo YW5rcywNCj4+PiBUb20NCj4+Pg0KPj4+Pg0KPj4+PiBJJ2xsIGFkZGVkIGFub3RoZXIgcGF0Y2gg aW4gbXkgY29kZSBicmFuY2ggdG8gZml4IHRoaXMgaXNzdWUgbGF0ZXIuIA0KPj4+PiBJbiB0aGUg bmV3DQo+Pj4gY29tbWl0LCBmcm9tIHRoZSBwZXJzcGVjdGl2ZSBvZiBDcHVQYWdlVGFibGVMaWIs IHRoZSB3aG9sZSBtZW1vcnkgDQo+Pj4gY2FuIGJlIGRpdmlkZWQgaW50byAzIGNhdGVnb3JpZXM6 IG1lbW9yeSB1c2VkIGJ5IHBhZ2UgdGFibGUsIGd1ZXN0IA0KPj4+IHByaXZhdGUgbWVtb3J5IGFu ZCBndWVzdCBzaGFyZWQgbWVtb3J5LiBDcHVQYWdlVGFibGVMaWIgd2lsbCBhbHdheXMgDQo+Pj4g YXBwbHkgdGhlIGVuY3J5cHQgbWFzayB0byBtZW1vcnkgdXNlZCBieSBwYWdlIHRhYmxlLCB3aGlj aCBtZWFucyBhbGwgDQo+Pj4gdGhlIG5vbi1sZWFmIHBhZ2UgdGFibGUgZW50cmllcyBhcmUgZW5j cnlwdGVkLiBGb3IgZ3Vlc3QgcHJpdmF0ZSANCj4+PiBtZW1vcnksIHRoaXMgY2FzZSBjYW4gYmUg dHJlYXRlZCBhcyBub24tMToxIG1hcHBpbmcuIFdlIGNhbiBhcHBseSANCj4+PiB0aGUgZW5jcnlw dCBtYXNrIGJ5IHNldHRpbmcgdGhlIGlucHV0IHBhcmFtZXRlciBvZiBQYWdlVGFibGVNYXAoKSAN Cj4+PiBBUEkgbGlrZSAiIEF0dHJpYnV0ZS5VaW50NjQgPSBMaW5lYXJBZGRyZXNzIHwgQWRkcmVz c0VuY01hc2siLiBGb3IgDQo+Pj4gZ3Vlc3Qgc2hhcmVkIG1lbW9yeSwgdGhpcyBjYXNlIGNhbiBi ZSB0cmVhdGVkIGFzIG5vcm1hbCAxOjEgbWFwcGluZy4gDQo+Pj4gSSdsbCBsZXQgeW91IGtub3cg b25jZSB0aGUgbmV3IHBhdGNoIGlzIHJlYWR5Lg0KPj4+Pg0KPj4+PiBUaGFua3MsDQo+Pj4+IER1 bg0KPj4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPj4+PiBGcm9tOiBkZXZlbEBlZGsy Lmdyb3Vwcy5pbyA8ZGV2ZWxAZWRrMi5ncm91cHMuaW8+IE9uIEJlaGFsZiBPZg0KPj4+IExlbmRh Y2t5LCBUaG9tYXMgdmlhIGdyb3Vwcy5pbw0KPj4+PiBTZW50OiBUaHVyc2RheSwgQXByaWwgMTMs IDIwMjMgMzoyNiBBTQ0KPj4+PiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW87IFRhbiwgRHVuIDxk dW4udGFuQGludGVsLmNvbT4NCj4+Pj4gU3ViamVjdDogUmU6IFtlZGsyLWRldmVsXSBbUGF0Y2gg VjIgMC84XSBVc2UgQ3B1UGFnZVRhYmxlTGliIHRvIA0KPj4+PiBjcmVhdGUNCj4+PiBhbmQgdXBk YXRlIHNtbSBwYWdlIHRhYmxlDQo+Pj4+DQo+Pj4+IE9uIDQvMTIvMjMgMDU6MTcsIGR1bnRhbiB2 aWEgZ3JvdXBzLmlvIHdyb3RlOg0KPj4+Pj4gSGkgVG9tLA0KPj4+Pj4NCj4+Pj4+IFRoaXMgcGF0 Y2ggc2V0IGlzIHRvIGNoYW5nZSBQaVNtbUNwdUR4ZVNtbSBjb2RlIHRvIHVzZQ0KPj4+IENwdVBh Z2VUYWJsZUxpYiB0byBjcmVhdGUgYW5kIHVwZGF0ZSBTTU0gcGFnZSB0YWJsZS4gVGhlIFBjZCAN Cj4+PiBQY2RQdGVNZW1vcnlFbmNyeXB0aW9uQWRkcmVzc09yTWFzayBpcyBhbHNvIHVzZWQgaW4g UGlTbW1DcHVEeGVTbW0gDQo+Pj4gY29kZSBhbmQgdGhlIHdob2xlIHJhbmdlIGNvdmVyZWQgYnkg cGFnZSB0YWJsZSBpcyBtYXBwZWQgZW5jcnlwdGVkLCANCj4+PiB3aGljaCBpcyBkaWZmZXJlbnQg ZnJvbSB0aGUgc2l0dWF0aW9uIGluIER4ZUlwbCBtb2R1bGUuDQo+Pj4+PiBTbyBjb3VsZCB5b3Ug YWxzbyBoZWxwIGRvIGEgdGVzdCB0byBtYWtlIHN1cmUgdGhlIEFNRCBTRVYgZmVhdHVyZSANCj4+ Pj4+IHN0aWxsDQo+Pj4gd29ya3MgZ29vZCBpbiBTTU0gd2l0aCB0aGlzIHBhdGNoIHNldD8NCj4+ Pj4+IEhlcmUgaXMgdGhlIGNvZGUgYnJhbmNoIGluIG15IGZvcmsgcmVwbzoNCj4+Pj4+IGh0dHBz Oi8vZ2l0aHViLmNvbS90ZDM2L2VkazIvY29tbWl0cy9TbW1QYWdlVGFibGVfVjINCj4+Pj4NCj4+ Pj4gSGkgRHVuLA0KPj4+Pg0KPj4+PiBJIHRlc3RlZCBhdCB0aGUgZmluYWwgY29tbWl0IG9mIHRo ZSBicmFuY2ggYW5kIGVuY291bnRlcmVkIGEgI0dQIA0KPj4+PiB3aXRoIGFuDQo+Pj4gU0VWIGd1 ZXN0LiBJdCBsb29rcyBsaWtlIHRoZSBDcHVQYWdlVGFibGVMaWJyYXJ5IGRvZXNuJ3QgdGFrZSB0 aGUgDQo+Pj4gZW5jcnlwdGlvbiBiaXQgaW50byBhY2NvdW50LiBGb3IgZXhhbXBsZToNCj4+Pj4N Cj4+Pj4gTGluZSA0MzYgb2YgVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdVBhZ2VUYWJsZUxpYi9DcHVQ YWdlVGFibGVNYXAuYw0KPj4+PiAgICAgICBQYWdpbmdFbnRyeSA9IChJQTMyX1BBR0lOR19FTlRS WQ0KPj4+ICopKFVJTlROKUlBMzJfUE5MRV9QQUdFX1RBQkxFX0JBU0VfQUREUkVTUyAoJlBhcmVu dFBhZ2luZ0VudHJ5LQ0KPj4+PiBQbmxlKTsNCj4+Pj4NCj4+Pj4gVGhpcyB3aWxsIGdldCBhbiBh ZGRyZXNzIHdpdGggdGhlIGVuY3J5cHRpb24gYml0IHNldCBhbmQgdGhlbiB0cnkgDQo+Pj4+IHRv DQo+Pj4gcmVmZXJlbmNlIGl0LiBXaGVuIEkgY2xlYXIgdGhlIGVuY3J5cHRpb24gYml0LCB0aGUg Y29kZSBwcm9jZWVkcyBhIA0KPj4+IGJpdCBmdXJ0aGVyLCBidXQgdGhlbiBlbmNvdW50ZXJzIGEg I0dQIGluIGEgZGlmZmVyZW50IGxvY2F0aW9uLg0KPj4+Pg0KPj4+PiBTbyBpdCBhcHBlYXJzIHRo YXQgdGhlIENwdVBhZ2VUYWJsZUxpYnJhcnkgZG9lc24ndCBkZWFsIHdpdGggdGhlDQo+Pj4gZW5j cnlwdGlvbiBiaXQgcHJvcGVybHkuDQo+Pj4+DQo+Pj4+IEFsc28sIGdvaW5nIHRocm91Z2ggYSBi dWlsZC90ZXN0IG9mIGVhY2ggaW5kaXZpZHVhbCBwYXRjaCBoYWQgbWl4ZWQgcmVzdWx0cy4NCj4+ Pj4NCj4+Pj4gICAgICAgLSBXaXRoIHRoZSBzZWNvbmQgcGF0Y2ggaW4gdGhlIHNlcmllcyBhcHBs aWVkLCBJIGdldCBhIGJ1aWxkIGVycm9yOg0KPj4+Pg0KPj4+PiAgICAgICAgIC9yb290L2tlcm5l bHMvb3ZtZi1kdW4tYnVpbGQtWDY0L092bWZQa2cvT3ZtZlBrZ1g2NC5kc2MoLi4uKToNCj4+PiBl cnJvciA0MDAwOiBJbnN0YW5jZSBvZiBsaWJyYXJ5IGNsYXNzIFtDcHVQYWdlVGFibGVMaWJdIGlz IG5vdCBmb3VuZA0KPj4+PiAgICAgICAgICAgICAgICAgaW4gWy9yb290L2tlcm5lbHMvb3ZtZi1k dW4tYnVpbGQtDQo+Pj4gWDY0L1VlZmlDcHVQa2cvUGlTbW1DcHVEeGVTbW0vUGlTbW1DcHVEeGVT bW0uaW5mXSBbWDY0XQ0KPj4+PiAgICAgICAgICAgICAgICAgY29uc3VtZWQgYnkgbW9kdWxlIFsv cm9vdC9rZXJuZWxzL292bWYtZHVuLWJ1aWxkLQ0KPj4+IFg2NC9VZWZpQ3B1UGtnL1BpU21tQ3B1 RHhlU21tL1BpU21tQ3B1RHhlU21tLmluZl0NCj4+Pj4NCj4+Pj4gICAgICAgICB0aGF0IGlzbid0 IHJlc29sdmVkIHVudGlsIHRoZSBmaW5hbCBwYXRjaC4NCj4+Pj4NCj4+Pj4gVGhhbmtzLA0KPj4+ PiBUb20NCj4+Pj4NCj4+Pj4+DQo+Pj4+PiBUaGFua3MsDQo+Pj4+PiBEdW4NCj4+Pj4+DQo+Pj4+ PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPj4+Pj4gRnJvbTogZGV2ZWxAZWRrMi5ncm91 cHMuaW8gPGRldmVsQGVkazIuZ3JvdXBzLmlvPiBPbiBCZWhhbGYgT2YNCj4+PiBkdW50YW4NCj4+ Pj4+IFNlbnQ6IFdlZG5lc2RheSwgQXByaWwgMTIsIDIwMjMgNDo1NCBQTQ0KPj4+Pj4gVG86IGRl dmVsQGVkazIuZ3JvdXBzLmlvDQo+Pj4+PiBTdWJqZWN0OiBbZWRrMi1kZXZlbF0gW1BhdGNoIFYy IDAvOF0gVXNlIENwdVBhZ2VUYWJsZUxpYiB0byBjcmVhdGUgDQo+Pj4+PiBhbmQgdXBkYXRlIHNt bSBwYWdlIHRhYmxlDQo+Pj4+Pg0KPj4+Pj4gSW4gVjIgcGF0Y2ggc2V0Og0KPj4+Pj4gMS5JbiAn UmVmaW5lbWVudCB0byBjb2RlIGFib3V0IHVwZGF0aW5nIHNtbSBwYWdlIHRhYmxlJywgdXNlIA0K Pj4+Pj4gUXVpY2tTb3J0KCkNCj4+PiBpbiBCYXNlTGliIGluc3RlYWQgb3IgUGVyZm9ybVF1aWNr U29ydCgpIGluIEJhc2VTb3J0TGliLg0KPj4+Pj4gMi5SZW1vdmUgdGhlIHBhdGNoIHRvIGFkZCBC YXNlU29ydExpYiBpbiBEU0MgZmlsZS4NCj4+Pj4+IDMuQWRkIGEgbmV3IHBhdGNoIHRvIGFkZCBD cHVQYWdlVGFibGVMaWIgaW4gVWVmaUNwdVBrZy5kc2MuDQo+Pj4+PiA0LkFkZCBhIHRlbXAgcGF0 Y2ggdG8gYWRkIENwdVBhZ2VUYWJsZUxpYiBpbiBPdm1mUGtnIGRzYyBmaWxlcyBmb3IgDQo+Pj4+ PiB0ZXN0KEEgcHJldmlvdXMgcGF0Y2ggSSBzZW50IGJlZm9yZSAnW1BhdGNoIFYyIDQvOF0gT3Zt ZlBrZzogQWRkIA0KPj4+Pj4gQ3B1UGFnZVRhYmxlTGliIHJlcXVpcmVkIGJ5IER4ZUlwbCBpbiBE U0MgZmlsZScgY29udGFpbnMgYWxsIHRoZSANCj4+Pj4+IGNoYW5nZXMgaW4gdGhpcyBwYXRjaCkN Cj4+Pj4+DQo+Pj4+PiBEdW4gVGFuICg4KToNCj4+Pj4+ICAgICAgIE92bWZQa2c6IEFkZCBDcHVQ YWdlVGFibGVMaWIgcmVxdWlyZWQgYnkgUGlTbW1DcHVEeGUNCj4+Pj4+ICAgICAgIFVlZmlQYXls b2FkUGtnOiBBZGQgQ3B1UGFnZVRhYmxlTGliIHJlcXVpcmVkIGJ5IFBpU21tQ3B1RHhlDQo+Pj4+ PiAgICAgICBVZWZpQ3B1UGtnOiBVc2UgQ3B1UGFnZVRhYmxlTGliIHRvIGNvbnZlcnQgU01NIHBh Z2luZyBhdHRyaWJ1dGUuDQo+Pj4+PiAgICAgICBVZWZpQ3B1UGtnL1BpU21tQ3B1RHhlU21tOiBB dm9pZCBzZXR0aW5nIG5vbi1wcmVzZW50IHJhbmdlIA0KPj4+Pj4gdG8NCj4+PiBSTy9OWA0KPj4+ Pj4gICAgICAgVWVmaUNwdVBrZzogRXh0ZXJuIG1TbW1TaGFkb3dTdGFja1NpemUgaW4gUGlTbW1D cHVEeGVTbW0uaA0KPj4+Pj4gICAgICAgVWVmaUNwdVBrZzogUmVmaW5lbWVudCB0byBjdXJyZW50 IHNtbSBwYWdlIHRhYmxlIGdlbmVyYXRpb24gY29kZQ0KPj4+Pj4gICAgICAgVWVmaUNwdVBrZzog UmVmaW5lbWVudCB0byBjb2RlIGFib3V0IHVwZGF0aW5nIHNtbSBwYWdlIHRhYmxlDQo+Pj4+PiAg ICAgICBVZWZpQ3B1UGtnL1BpU21tQ3B1RHhlU21tOiBSZW1vdmUgdW5uZWNlc3NhcnkgZnVuY3Rp b24NCj4+Pj4+DQo+Pj4+PiAgICAgIE92bWZQa2cvQ2xvdWRIdi9DbG91ZEh2WDY0LmRzYyAgICAg ICAgICAgICAgICAgICAgIHwgICAyICstDQo+Pj4+PiAgICAgIE92bWZQa2cvT3ZtZlBrZ0lhMzIu ZHNjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzICsrLQ0KPj4+Pj4gICAgICBPdm1m UGtnL092bWZQa2dJYTMyWDY0LmRzYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQ0K Pj4+Pj4gICAgICBPdm1mUGtnL092bWZQa2dYNjQuZHNjICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgMiArLQ0KPj4+Pj4gICAgICBVZWZpQ3B1UGtnL1BpU21tQ3B1RHhlU21tL0lhMzIv UGFnZVRibC5jICAgICAgICAgICB8ICAgNSArKystLQ0KPj4+Pj4gICAgICBVZWZpQ3B1UGtnL1Bp U21tQ3B1RHhlU21tL0lhMzIvU21tRnVuY3NBcmNoLmMgICAgICB8ICAgMyArLS0NCj4+Pj4+ICAg ICAgVWVmaUNwdVBrZy9QaVNtbUNwdUR4ZVNtbS9JYTMyL1NtbVByb2ZpbGVBcmNoLmMgICAgfCAg IDIgKy0NCj4+Pj4+ICAgICAgVWVmaUNwdVBrZy9QaVNtbUNwdUR4ZVNtbS9NcFNlcnZpY2UuYyAg ICAgICAgICAgICAgfCAxMzIgLS0tLS0tLS0tLS0tLS0tLS0NCj4+PiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPj4+ IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+Pj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ Pj4+PiAgICAgIFVlZmlDcHVQa2cvUGlTbW1DcHVEeGVTbW0vUGlTbW1DcHVEeGVTbW0uYyAgICAg ICAgIHwgICA4ICsrKysrKy0NCj4+PiAtDQo+Pj4+PiAgICAgIFVlZmlDcHVQa2cvUGlTbW1DcHVE eGVTbW0vUGlTbW1DcHVEeGVTbW0uaCAgICAgICAgIHwgIDk3DQo+Pj4gKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPj4+ICsrLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPj4+Pj4gICAgICBVZWZpQ3B1UGtnL1Bp U21tQ3B1RHhlU21tL1BpU21tQ3B1RHhlU21tLmluZiAgICAgICB8ICAgMSArDQo+Pj4+PiAgICAg IFVlZmlDcHVQa2cvUGlTbW1DcHVEeGVTbW0vU21tQ3B1TWVtb3J5TWFuYWdlbWVudC5jIHwgNjI5 DQo+Pj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKw0KPj4+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysNCj4+PiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrDQo+Pj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPj4+ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+Pj4gLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0NCj4+PiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPj4+IC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ Pj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4+PiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPj4+IC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+Pj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NCj4+Pj4+ICAgICAgVWVmaUNwdVBrZy9QaVNtbUNwdUR4ZVNtbS9T bW1Qcm9maWxlLmMgICAgICAgICAgICAgfCAzNDgNCj4+PiArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+Pj4gKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPj4+ICsrKysrKysr Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tDQo+Pj4gKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4+PiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K Pj4+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+Pj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4+Pj4+ICAgICAgVWVmaUNwdVBrZy9QaVNt bUNwdUR4ZVNtbS9YNjQvUGFnZVRibC5jICAgICAgICAgICAgfCAyMjkNCj4+PiArKysrKysrKysr KysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQ0KPj4+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tDQo+Pj4gLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0NCj4+PiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPj4+IC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+Pj4+PiAgICAg IFVlZmlDcHVQa2cvUGlTbW1DcHVEeGVTbW0vWDY0L1NtbUZ1bmNzQXJjaC5jICAgICAgIHwgICAz ICstLQ0KPj4+Pj4gICAgICBVZWZpQ3B1UGtnL1BpU21tQ3B1RHhlU21tL1g2NC9TbW1Qcm9maWxl QXJjaC5jICAgICB8ICAxOSArKy0tLS0tLS0NCj4+PiAtLS0tLS0tLS0tDQo+Pj4+PiAgICAgIFVl ZmlQYXlsb2FkUGtnL1VlZmlQYXlsb2FkUGtnLmRzYyAgICAgICAgICAgICAgICAgIHwgICAyICst DQo+Pj4+PiAgICAgIDE3IGZpbGVzIGNoYW5nZWQsIDUxMCBpbnNlcnRpb25zKCspLCA5NzcgZGVs ZXRpb25zKC0pDQo+Pj4+Pg0KPj4+Pg0KPj4+Pg0KPj4+Pg0KPj4+Pg0KPj4+Pg0KPiANCj4gDQo+ IA0KPiANCj4gDQo+IA0KPiANCj4gDQo+IA0KPiANCj4gDQo+IA0KDQoNCg0KDQoNCg==