From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by mx.groups.io with SMTP id smtpd.web08.915.1627695505639929377 for ; Fri, 30 Jul 2021 18:38:25 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=lOYKhEKO; spf=pass (domain: intel.com, ip: 192.55.52.88, mailfrom: jiewen.yao@intel.com) X-IronPort-AV: E=McAfee;i="6200,9189,10061"; a="235114148" X-IronPort-AV: E=Sophos;i="5.84,283,1620716400"; d="scan'208";a="235114148" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Jul 2021 18:38:25 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.84,283,1620716400"; d="scan'208";a="667503525" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by fmsmga005.fm.intel.com with ESMTP; 30 Jul 2021 18:38:24 -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.2242.10; Fri, 30 Jul 2021 18:38:24 -0700 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) 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.2242.10 via Frontend Transport; Fri, 30 Jul 2021 18:38:24 -0700 Received: from NAM02-DM3-obe.outbound.protection.outlook.com (104.47.56.45) 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.2242.10; Fri, 30 Jul 2021 18:38:23 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RLkSCtIYsWy9mTnQGI345sh1AKFwge9IDU+gmqA+8sJqwVyxyQnIv3jnOlgXJmV9ggp/9R5WigVhZ9SbdiSkKBqzOLZ0dHCAw0lHIBvHdXCTR+D4CQmaDVbm2Cp0SdYhg7le1By5YborYdjpCyB1xTu/bgANTq7B7pS4tRoNT2owmjCeSBPsJRpMXEZAaks89L/rfBAjYERXNTOUE8BKxDI3chIn1+XblO/QK8b9bOJ2QBLnvnWtRqN1sH+zZFYtAfOfwJ/0bolgL+nEg93+K1NkLvxu+OOTZU3KB7Rh8YdvfoKqn3efD3Io4vfnLRZJ8+T8cSJwYrsoYtMJa0IVXQ== 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-SenderADCheck; bh=rdLZkD91gwZ0kqjFAmgpFTmYSjmWjj5H2YEZFHq2IVE=; b=MBhU4vjBW4lVFNxO1LZo45aD0J4DEXm/R5DmwzKUIIA8UJgOSCC6pbwZ6Rotk7c0Q0zBmgNMiB6P4MrXDk4iR1GyijasdEdnRsXBCjpWoczj/bavqGxrRYuqVPEdtkw5l1+KsGfPUp0P48bktdsVqSsrWa6jdsW2yLPZ7i3B69nwO9kBrTDtkzPkaFnQyEJZ1O39JA0EOtOhUQeIo+lNYS086AjiYisWjSWH6wpx6mZ1ykrakBgki5RSowDMjOa8RGcA3Lh5sRkKX6VtqgoP6DJDn2FPpi6rsxPPUSjayFPewdcTCzdiPKvo3Sl6LGKmOOiF/GlgJRVRzxGFcg8erw== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=rdLZkD91gwZ0kqjFAmgpFTmYSjmWjj5H2YEZFHq2IVE=; b=lOYKhEKOBCVHtOkGMavMTjGiRGonjfcOEBgO3fF6oepO2bsgO4OsDezub4ovWcq1cWD4WZ1B8neBDY1tz16niGzAgSQC3DqRmMpX8uxhgANtYisDbfH8V+C0s/1Z8DvMlmcLvTrluzWrZ947nl7X1fqPOtDxnZXajpu4Er7IZxA= Received: from PH0PR11MB4885.namprd11.prod.outlook.com (2603:10b6:510:35::14) by PH0PR11MB5141.namprd11.prod.outlook.com (2603:10b6:510:3c::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4373.20; Sat, 31 Jul 2021 01:38:17 +0000 Received: from PH0PR11MB4885.namprd11.prod.outlook.com ([fe80::6c99:8170:1c3c:9121]) by PH0PR11MB4885.namprd11.prod.outlook.com ([fe80::6c99:8170:1c3c:9121%3]) with mapi id 15.20.4373.025; Sat, 31 Jul 2021 01:38:17 +0000 From: "Yao, Jiewen" To: "devel@edk2.groups.io" , "spbrogan@outlook.com" , Taylor Beebe , "Wang, Jian J" CC: "Dong, Eric" , "Ni, Ray" , "Kumar, Rahul1" , "mikuback@linux.microsoft.com" , "Wu, Hao A" , "Bi, Dandan" , "gaoliming@byosoft.com.cn" , "Dong, Guo" , "Ma, Maurice" , "You, Benjamin" Subject: Re: [edk2-devel] [RFC] MemoryProtectionLib for Dynamic Memory Guard Settings Thread-Topic: [edk2-devel] [RFC] MemoryProtectionLib for Dynamic Memory Guard Settings Thread-Index: AQHXhCAY+OLs1hebp0mAsxAXjz+Laataw3kAgAAAgDCAAALuAIAABs0wgAEPUICAAGKe0A== Date: Sat, 31 Jul 2021 01:38:17 +0000 Message-ID: References: <5ffb8dce-8a33-537c-2019-ec4666854739@taylorbeebe.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.5.1.3 dlp-product: dlpe-windows dlp-reaction: no-action authentication-results: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 85b164e9-c07f-40f6-9de5-08d953c3deed x-ms-traffictypediagnostic: PH0PR11MB5141: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: vhAD/mxqp//Gyj4vWjaO41yWWM5dWYaPDEtL5BHq20lQbaxXycizlJkQHA8NIjCO+MCfhSD1KFMa45zQhUUBGApp0DTkb4i7F39qxCA3xpG0QqkF5j3UNeZV8IsJXcA5oPA1lmRDPJ+tL4ha3e5gf7NHYf9wQYblE0K1yq/gmFS+gs888LIm+nCy2uFjWeb1l/ohFJvG1dwKwcqBeljqrVsMQ7a9k4egqU5Uzga1KKJMPsqm7jvAnBFk1z+ve7qsaaLOahGu6XcZh9Du+yZ5WFMz3+uTuhXW2ToheyZdect/qcaH4xAqjjxfx4qf2QGyFnt6I8GGqLqX7EEWS7qE6mB4UXbxV6q/BbZCrMK5PbGg4SQOKvFdH++Gs7OtjNQo7TNt+PBzoFvuQuoOmuS0eJ/TCZ+cWGJz8yIkCbaVWBBoxO8TXH1Td35CeSlDci2ganolUFJc6p6npeHGdvqo/137PljGn67QO8dY1RWVnRTBEi0g0cFUaBRrWJP+SRnJlzm8NhIfUMIS35I2JqvSN4eg1ewU4fXy2tszZORGErAAtyFc/dsItFyKimCHLREqerePGmpJkPWmRs2hOAf71LCMnekMgruFmSMmpNeRyqeGU3Jnv4DViaSixTF6QK0epsjUyz5vLKT/IUD4HCrQwdnaAkanEB8lflNGhtBr9NsD4Nok1X63Uwlnzyfk8Yl6lIZs8vgRVn3gbR7uPGH3Wcwi6Ec7PF3gJWN3zztiNIvAmiHv5OigXhJkeLI8juJmZ5ovryJ3g6nx8CvPd8CJSXPXyaidbZKFvUpDO5Hv5DRzynBkTi4ZyDlYSA2bE5QVzEqxWSNZmOH6rd3laBF8HfH2uVqH/ZrlDWHM1BRwiwXIvTx44MOsPGouII9hp3rf x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR11MB4885.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(376002)(39860400002)(366004)(136003)(396003)(346002)(5660300002)(9686003)(76116006)(38100700002)(26005)(45080400002)(122000001)(4326008)(71200400001)(966005)(8676002)(478600001)(38070700005)(54906003)(2906002)(110136005)(316002)(186003)(30864003)(53546011)(55016002)(7696005)(6636002)(8936002)(107886003)(6506007)(66476007)(66556008)(66946007)(52536014)(66446008)(83380400001)(64756008)(86362001)(33656002)(21314003)(781001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?NDFxcThUQUZlWnFhNmNJa2JHSWMrQnp5OVpGUWpaMjNpRTM2RTdwREp6S0o4?= =?utf-8?B?YUN6Wjk0WWUxRGRINUNLT2JSS2Vra0UwbGpuMFlCUVM1SkxDZWhndEdqV0Yw?= =?utf-8?B?aHRkZENqeHBmTUZCVllMRkFJS2p2RHA1NzJ2bmZoMXB4UEpWMVJVUEtueFZy?= =?utf-8?B?Qm43QTRVek9FSmxVVkV5cFQ5NnZqUWFSWHhtVkpmOG1TVGhlZHJ3SU9VWlF2?= =?utf-8?B?K0RZekMxOTNjZ291RW1MZGpCU3pqeGpTMHV5Zi9QTWNscWduZmVjd3dWOUNG?= =?utf-8?B?bnNpdG90SUVIcURJQ0VCbTNtWHdadG82bFJrNDZRd2VxVnVVNXBzYURLMENN?= =?utf-8?B?TjBXSHdLMitUQ1JMY0xUdWthNVFIQ1phblozZmdIWC9tYjRISHA0cGRWUS9a?= =?utf-8?B?dDJweWJIQmRZWDEvb0NyNEVMWVpYY0IxOWFKaElyNFhvNWRvRC9lUnBiaTVq?= =?utf-8?B?UzloaWxIM1dOMFhvd3diNFNwWnpEWEorbEdnQjNxVW1GcDQ4QURoSmxucmRB?= =?utf-8?B?cXdYTDhSc2FLSXhRZW5RM3R3Z3liQWs5Z2RrR3JwbkxrUXVFYi94SUVFV1NV?= =?utf-8?B?bEJnR1RENjF5T2pyYW1QYi9YRUtUdFN4NWJickJVMzIrRmx1RUhVV1ZZeHJE?= =?utf-8?B?SmpJd2dtLzNCVjIwMGFsREhsa25TaHNCckJqdEZXRVVoQk84N29icGNOSkMr?= =?utf-8?B?SmozOHhpM1NFZUtFTmRLZFR2dWRxYVYwbXR5ZEZwK1pUL21YaEw1R1h3Ykdl?= =?utf-8?B?ajVhV1RUYW95a0lkNUdOUTk3U1o3cEJ1Skg5TTRLTlAvVEw2OTFReU5VeHpI?= =?utf-8?B?QW5hZ1NFT0lFa3FRSXo2cHoxRUdYS1FVQjVkZ045d0tpTnYvZXVWalRlQkxB?= =?utf-8?B?ZDBhMUQ1WEJyTkFYMzRPUlo4VjNzeVJLZmRxMkx1UmY2T0hiMVEwb1dRZ1VN?= =?utf-8?B?MEtJejZFdjl1R1plcTExMm5TQ0FVYUxZaWsrZzFaQWMvV3VWMFI0d2pWOUJS?= =?utf-8?B?ci8zUndGc29Kd3dhOG9wb2lJcjg3UHFScXVsanFBSzRPcVBsM1FsMXpKM3U5?= =?utf-8?B?MGFkMkVOck5DUGdJVVV6TTU2Qnl3S3RiNnkzQzMvLzYxM2x4TVlSbnNadG9Q?= =?utf-8?B?cnlZSHdYNzVPc0tUbkMvaTdPbnpmMXRrQ0lraDIxR3l2bHE2MkdybkNuNXdx?= =?utf-8?B?L2JqdjBVKzBiUVB4M0dOMFVPUEJFZ0RCSlhYU21BaW9yclJPSTZ4VDhsU2ZK?= =?utf-8?B?U1NGbldaMG5DY2ZmRUhpUjJyTDVwbC81czFCQ1JqQUdHK0MvVHliTThZQVZI?= =?utf-8?B?SERyUDZ6cG0xdjUzMGRjVDVjamVVdWlEZ0xKMWE3OFhhT0xWeUFhemFwd0tz?= =?utf-8?B?QkpHSml6SlJLRStWWlg5aUJBbTladjFHaDUzNm1Ka0NNelVKd0RpVXMxcnNj?= =?utf-8?B?VS93QTlnWjNqWTdEOTd6RU9PaWFYbi95eFRxTTNuTmtOQ1pDZWEyeXdqSDdj?= =?utf-8?B?SVBFM3Q5ZlBkVlhScm5KeUFoQnJDWnhsNE8zeFp6UHpNQ2ZiOXpUOTEvSnZU?= =?utf-8?B?V1hNak5xb3BuOHltdXNyaTE5NUtUdW1wOTd5UmtNbkdiRnNOSUI0M2Q5dkd6?= =?utf-8?B?bklPS0V3bDZEUnpDUXNpNjhoODI1M1FFaTNwaGRLdk9UaDRxTWtSaDdsTVpL?= =?utf-8?B?cmtlRjIrUG5iaFB0eG9RcnRzbFFvY0VOZ1VsVnp1SVRwMDN4anp4cmM0dzdH?= =?utf-8?Q?dxrfe7wYkj91/gj/Hnjy4HzoOc5X74TnnhRQLFf?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH0PR11MB4885.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 85b164e9-c07f-40f6-9de5-08d953c3deed X-MS-Exchange-CrossTenant-originalarrivaltime: 31 Jul 2021 01:38:17.1497 (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: LmuouThG/pBC0JS31Vn/WHK/ZpCuwPxwezQ/lv9BJeNP8GDZuSKnXzz0JtD7LlxqX0ZY/RlILt5MGdyNlO/pSw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB5141 Return-Path: jiewen.yao@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgU2Vhbg0KVGhhdCBpcyBleGNlbGxlbnQgdG9waWMuDQoNCkkgYWdyZWUgd2l0aCB5b3UgdGhh dCwgb25lIG9mIG1vc3QgZnJlcXVlbnQgYXNrZWQgcXVlc3Rpb24gaW4gdGhlIGRlc2lnbiBtZWV0 aW5nIGlzOiBTaG91bGQgSSB1c2UgcHJvdG9jb2wgb3IgbGlicmFyeT8gU2lnaC4uLg0KDQpJIGFk ZGVkIG15IHBlcnNvbmFsIHRob3VnaHQgYmVsb3cuIEkgd291bGQgbGlrZSBvdGhlciBwZW9wbGUg dG8gY29tbWVudCwgTWlrZSBLaW5uZXksIEFuZHJldyBGaXNoLCBMaW1pbmcgR2FvLCB3aG8ga25v d3MgdGhlIGhpc3RvcnkgYW5kIEVES0lJIGRlc2lnbiBwaGlsb3NvcGh5IHZlcnkgd2VsbC4NCg0K PT09PT09PT09PQ0KQmVzaWRlcyB0aGUgc3BlY2lmaWNhdGlvbiBkaWZmZXJlbmNlIHlvdSBtZW50 aW9uZWQgaW4gcHJldmlvdXMgZW1haWwsDQoNCjEpICpQcm90b2NvbCogaXMgYmV0d2VlbiAyIG1v ZHVsZXMgaW4gVUVGSS9TTU0gcGhhc2UuIEl0IGlzIHVzZWQgdG8gcGFzcyBkYXRhIG9yIGFic3Ry YWN0IGZ1bmN0aW9uLg0KMikgKlBQSSogaXMgc2ltaWxhciB0byAqUHJvdG9jb2wqLiBCdXQgaXQg aXMgYmV0d2VlbiAyIG1vZHVsZXMgaW4gUEVJIHBoYXNlLg0KDQozKSAqSE9CKiBpcyBiZXR3ZWVu IDIgbW9kdWxlcyBpbiBkaWZmZXJlbnQgcGhhc2UsIHRvIHBhc3MgdGhlIGRhdGEgZnJvbSBvbmUg cGhhc2UgdG8gdGhlIG90aGVyLiBTdWNoIGFzIFBFSSBwYXNzaW5nIEhPQiB0byBEWEUsIFBFSSBw YXNzaW5nIEhPQiB0byBTTU0uDQo0KSAqVmFyaWFibGUqIGlzIGFsc28gYmV0d2VlbiAyIG1vZHVs ZXMgaW4gZGlmZmVyZW50IHBoYXNlLiBJbiBhZGRpdGlvbiwgdGhlIGRhdGEgY2FuIGJlICpOT05f Vk9MQVRJTEUqIGFuZCBhbHdheXMgYmUgdGhlcmUgYWNyb3NzIGJvb3QuDQo1KSAqR1VJRCBjb25m aWd1cmF0aW9uIHRhYmxlKiBpcyBhbHNvIGJldHdlZW4gMiBtb2R1bGVzIGluIGRpZmZlcmVudCBw aGFzZSwgYnV0IGl0IGlzIGxpbWl0ZWQgZnJvbSBVRUZJIHRvIE9TLiBGcm9tIGZ1bmN0aW9uIHBl cnNwZWN0aXZlLCBHVUlEIEhPQiBpcyBzYW1lIGFzIEdVSUQgQ29uZmlnIFRhYmxlLiBUaGUgZGlm ZmVyZW5jZSBpcyB0aGF0IEhPQiBpcyBQSS9PRU0gRmlybXdhcmUgc2NvcGUsIHdoaWxlIHRoZSBH VUlEIENvbmZpZyBUYWJsZSBpcyBVRUZJL09TIGludGVyZmFjZSBzY29wZS4NCg0KU28gZmFyLCBh Ym92ZSBpcyB0aGUgRURLLUkgZGVzaWduLiBIb3dldmVyLCB0d28gYmlnIGlzc3VlcyBleGlzdGVk IGluIEVESy1JLg0KQSkgVGhlIHBvbGljeSBwcm90b2NvbC4gRXZlcnlib2R5IGhhdGVkIHRoZSBw b2xpY3kgcHJvdG9jb2wgaW4gRURLSUksIGJ1dCBldmVyeWJvZHkgaGFzIHRvIHVzZSBpdCBiZWNh dXNlIHRoZXJlIGlzIG5vIG90aGVyIGNob2ljZS4gRXZlcnlvbmUga2VlcHMgaW5jcmVhc2UgdGhl IHBvbGljeSB2ZXJzaW9uIGFuZCBhZGRzIHRoZWlyIG93biBzdHVmZiwgd2hpY2ggbWFrZSBjb2Rl IGhhcmQgdG8gdW5pZnkuDQpCKSBUaGUgbGlicmFyeS4gSW4gRURLLUksIHdlIGhhZCBjcmF6eSBs aWJyYXJ5IGRlc2lnbiAtIEVmaURyaXZlckxpYiwgRWZpQ29tbW9uTGliLCBFZmlSdW50aW1lTGli LCBFZmlTaGVsbExpYi4gSXQgbG9va2VkIGdvb2QgYXQgZmlyc3QgZ2xhbmNlLiBCdXQgd2hlbiB3 ZSBsaW5rIHRoZW0gdG9nZXRoZXIsIGl0IGZhaWxzLiAyIGxpYnJhcmllcyBtYXkgaGF2ZSBzYW1l IGZ1bmN0aW9uIG5hbWUsIGJ1dCBpbXBsZW1lbnQgaW4gZGlmZmVyZW50IHdheS4gMiBsaWJyYXJp ZXMgbWF5IGhhdmUgZGlmZmVyZW50IGZ1bmN0aW9uIG5hbWUsIGJ1dCBpbXBsZW1lbnQgc2FtZSBm dW5jdGlvbi4gDQoNClRob3NlIGlzc3VlcyBkcm92ZSB0aGUgdHdvIG1vc3QgaW1wb3J0YW50IGZl YXR1cmUgLSBQQ0QgYW5kIExpYnJhcnkgZGVzaWduIGluIEVESy1JSS4NCg0KNikgKlBDRCogaXMg ZGVzaWduZWQgdG8gYWJzdHJhY3QgdGhlIE9FTSBjb25maWd1cmF0aW9uIGRhdGEuDQpTdGF0aWMg UENEIG1lYW5zIE9FTSBjYW4gZGV0ZXJtaW5lIHRoZSB2YWx1ZSBhdCBidWlsZCB0aW1lLg0KRHlu YW1pYyBQQ0QgbWVhbnMgT0VNIG5lZWQgZGV0ZXJtaW5lIHRoZSB2YWx1ZSBhdCBydW50aW1lLiAo VGhlIGltcGxlbWVudGF0aW9uIG9mIFBDRCBpcyBzdGlsbCBiYXNlZCB1cG9uIFBQSSwgSG9iLCBh bmQgUHJvdG9jb2wuKQ0KDQo3KSBBIGdlbmVyaWMgKmxpYnJhcnkqIGlzIGRlc2lnbiB0byBzaGFy ZSBjb21tb24gY29kZSBpbiBvbmUgcGxhY2UuDQpJbiBhZGRpdGlvbiwgRURLSUkgKmxpYnJhcnkq c2VydmVzIGFub3RoZXIgcHVycG9zZTogdG8gYWJzdHJhY3QgYSBzZXQgb2YgY29tbW9uIGludGVy ZmFjZSAoYXMga25vd24gYXMgTGlicmFyeSBDbGFzcykuIFRoYXQgYWxsb3dzIHRoZSBPRU0gY2Fu IHJlcGxhY2UgdGhlIGxpYnJhcnkgaW1wbGVtZW50YXRpb24gKGFzIGtub3duIGFzIExpYnJhcnkg SW5zdGFuY2UpIGF0IGJ1aWxkIHRpbWUgd2l0aG91dCBjaGFuZ2luZyBhbnkgY29kZS4NCg0KPT09 PT09PT09PQ0KDQpVc3VhbGx5LCB3ZSBleHBvc2UgZnVuY3Rpb25zIGluIGEgbGlicmFyeSBpbnN0 ZWFkIG9mIGdsb2JhbCBkYXRhLiAoV2VsbCwgdGhlcmUgYXJlIGV4Y2VwdGlvbnMgc3VjaCBhcyBn QlMsIGdTVCwgZ1JULCBnU21zdCwgd2hpY2ggaXMgd2VsbCBrbm93biBwb2ludGVycyBpbiBoaXN0 b3J5LikNCkkgZGlkIG5vdCBzZWUgdG9vIG1hbnkgY2FzZXMgdG8gZXhwb3NlIGdsb2JhbCBkYXRh IGRpcmVjdGx5Lg0KDQpUbyBjb21wYXJlIFVFRkkgcHJvdG9jb2wgb3IgQyBzdHJ1Y3R1cmUvY2xh c3MsIEkgZmVlbCBvcHRpb24gMSBpcyBzaW1pbGFyIHRvIDoNCnR5cGVkZWYgc3RydWN0IHsNClB1 YmxpYzoNCglVSU5UTiBEYXRhOw0KfSBDTEFTU19YWFguDQoNCldoaWxlLCBvcHRpb24gMiBpcyBz aW1pbGFyIHRvIDoNCnR5cGVkZWYgc3RydWN0IHsNClByaXZhdGU6DQoJVUlOVE4gRGF0YTsNClB1 YmxpYzoNCglVSU5UTiBHZXREYXRhICgpOw0KCVZPSUQgU2V0RGF0YSAoVUlOVE4gRGF0YSk7DQp9 IENMQVNTX1hYWC4NCg0KDQpJIGFsc28gc2VlIHRoZSBzaW1pbGFyaXR5IHdpdGggaHR0cHM6Ly9n aXRodWIuY29tL3RpYW5vY29yZS9lZGsyL2Jsb2IvbWFzdGVyL01kZVBrZy9JbmNsdWRlL0xpYnJh cnkvRGVidWdMaWIuaCwgc3VjaCBhcyBEZWJ1Z0Fzc2VydEVuYWJsZWQoKSwgRGVidWdQcmludEVu YWJsZWQoKSwgRGVidWdDb2RlRW5hYmxlZCgpLCBEZWJ1Z0NsZWFyTWVtb3J5RW5hYmxlZCgpLCBE ZWJ1Z1ByaW50TGV2ZWxFbmFibGVkKCkuDQpUaGF0IGlzIHRoZSByZWFzb24gSSB2b3RlIG9wdGlv biAyLg0KDQoNClRoYW5rIHlvdQ0KWWFvIEppZXdlbg0KDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNz YWdlLS0tLS0NCj4gRnJvbTogZGV2ZWxAZWRrMi5ncm91cHMuaW8gPGRldmVsQGVkazIuZ3JvdXBz LmlvPiBPbiBCZWhhbGYgT2YgU2Vhbg0KPiBTZW50OiBTYXR1cmRheSwgSnVseSAzMSwgMjAyMSAy OjQyIEFNDQo+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgWWFvLCBKaWV3ZW4gPGppZXdlbi55 YW9AaW50ZWwuY29tPjsgVGF5bG9yIEJlZWJlDQo+IDx0QHRheWxvcmJlZWJlLmNvbT47IFdhbmcs IEppYW4gSiA8amlhbi5qLndhbmdAaW50ZWwuY29tPg0KPiBDYzogRG9uZywgRXJpYyA8ZXJpYy5k b25nQGludGVsLmNvbT47IE5pLCBSYXkgPHJheS5uaUBpbnRlbC5jb20+OyBLdW1hciwNCj4gUmFo dWwxIDxyYWh1bDEua3VtYXJAaW50ZWwuY29tPjsgbWlrdWJhY2tAbGludXgubWljcm9zb2Z0LmNv bTsgV3UsIEhhbyBBDQo+IDxoYW8uYS53dUBpbnRlbC5jb20+OyBCaSwgRGFuZGFuIDxkYW5kYW4u YmlAaW50ZWwuY29tPjsNCj4gZ2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuOyBEb25nLCBHdW8gPGd1 by5kb25nQGludGVsLmNvbT47IE1hLCBNYXVyaWNlDQo+IDxtYXVyaWNlLm1hQGludGVsLmNvbT47 IFlvdSwgQmVuamFtaW4gPGJlbmphbWluLnlvdUBpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFJlOiBb ZWRrMi1kZXZlbF0gW1JGQ10gTWVtb3J5UHJvdGVjdGlvbkxpYiBmb3IgRHluYW1pYyBNZW1vcnkN Cj4gR3VhcmQgU2V0dGluZ3MNCj4gDQo+IEppZXdlbiwNCj4gDQo+ICoqU2xpZ2h0IHJhbnQqKg0K PiANCj4gSSBhZ3JlZSB3aXRoIGxpYnJhcmllcyBhcyBhbiBlZmZlY3RpdmUgYWJzdHJhY3Rpb24g bWV0aG9kLiAgQnV0IEkgdGhpbmsNCj4gdGhlcmUgbmVlZHMgdG8gYmUgYSBicm9hZCBkaXNjdXNz aW9uIGFib3V0IHRoZSBvcmRlciBvZiBwcmVmZXJlbmNlIGZvcg0KPiBtZXRob2RzIG9mIGFic3Ry YWN0aW9uLiAgVG9kYXkgdGhlIGVkazIgY29kZSBiYXNlIGlzIGEgbWl4IGFuZCBvZnRlbg0KPiB0 aGVyZSBhcmUgbnVtZXJvdXMgbWV0aG9kcyBhYnN0cmFjdGluZyB0aGUgc2FtZSB0aGluZyB3aGlj aCBsZWFkcyB0bw0KPiBjb25mdXNpb24sIG1pc2NvbmZpZ3VyYXRpb24sIGFuZCBlcnJvci4NCj4g DQo+IEluIHRoZSBVRUZJIHNwZWNpZmljYXRpb24gd2UgaGF2ZSBQUElzL1Byb3RvY29scy9FdmVu dHMgZm9yIGZ1bmN0aW9uYWwNCj4gYWJzdHJhY3Rpb24uICBXZSBoYXZlIHZhcmlhYmxlcywgZ3Vp ZGVkIGNvbmZpZyB0YWJsZXMsIGFuZCBISUkgZm9yIGRhdGENCj4gYWJzdHJhY3Rpb24uDQo+IA0K PiBJbiB0aGUgUEkgc3BlY2lmaWNhdGlvbiB3ZSBhZGQgSE9CcyBhbmQgUENEcyBmb3IgZGF0YSBh YnN0cmFjdGlvbnMuDQo+IA0KPiBGaW5hbGx5LCBpbiBFREtJSSB3ZSBhZGQgdGhlIGxpYnJhcnkg Y2xhc3MgY29uY2VwdCBhbmQgbGV2ZXJhZ2UgaXQNCj4gaGVhdmlseSBmb3IgYXJjaCwgcGhhc2Us IGFuZCBwbGF0Zm9ybS9iZWhhdmlvcmFsIGFic3RyYWN0aW9ucy4NCj4gDQo+IFdpdGhvdXQgY2xl YXIgZ3VpZGFuY2UgZm9yIGhvdyBhbmQgd2hlbiB0byB1c2UgdGhlIGFib3ZlIGl0IGlzIGhhcmQg dG8NCj4ga2VlcCBjb2RlIGJlaW5nIGRldmVsb3BlZCBieSB0aGUgbGFyZ2VyIGNvbW11bml0eSBj b25zaXN0ZW50Lg0KPiANCj4gKipFbmQqKg0KPiANCj4gSSB3YXMgbGVhbmluZyB0b3dhcmRzIHNv bWV0aGluZyBjbG9zZXIgdG8NCj4gDQo+ICA+PiBPcHRpb24gMToNCj4gaHR0cHM6Ly9naXRodWIu Y29tL1RheWxvckJlZWJlL2VkazIvdHJlZS9tZW1vcnlfcHJvdGVjdGlvbl9saWJfMg0KPiANCj4g dGhlIEhPQiBtZXRob2QgYW5kIGludGVybmFsbHkgYXMgd2UgZGV2ZWxvcCBtb3JlIGNvZGUgd2Ug YXJlIHByZWZlcnJpbmcNCj4gSE9CIGFuZCBkYXRhIGFic3RyYWN0aW9ucyBtb3JlIHRoYW4gZnVu Y3Rpb25hbCBhYnN0cmFjdGlvbi4gIERhdGENCj4gYWJzdHJhY3Rpb25zIGNhbiBiZSB1c2VkIHRv IGNvbnRyb2wgZnVuY3Rpb25hbCBkaWZmZXJlbmNlcyBhcyB3ZWxsIGlmDQo+IG5lZWRlZC4gIERh dGEgYWJzdHJhY3Rpb25zIGFsbG93IGZvciBlYXNpZXIgdmFsaWRhdGlvbiBhbmQgc3VwcG9ydA0K PiBkaXZlcnNlIGNvZGUgZW52aXJvbm1lbnRzLiAgRm9yIGV4YW1wbGUgc3RhbmRhbG9uZSBNTSBh bmQNCj4gcGF5bG9hZHBrZy9wYXlsb2FkIGNvbmNlcHRzLiAgRmluYWxseSwgZGF0YSBhYnN0cmFj dGlvbnMgYnJlYWsgdGhlIG5lZWQNCj4gZm9yIGEgbW9ub2xpdGhpYyBjb2RlIGJhc2UuICAgQnV0 IGFzIHlvdSBjYW4gc2VlIGluIG9wdGlvbiAxIGl0IGFjdHVhbGx5DQo+IHVzZXMgYSBsaWJyYXJ5 IGNsYXNzIGFic3RyYWN0aW9uIGFzIHdlbGwgYmVjYXVzZSBubyBvbmUgd2FudHMgdG8gd3JpdGUN Cj4gdGhlIHNhbWUgY29kZSBvdmVyIGFuZCBvdmVyIGFnYWluIHRvIGdldCB0aGUgSE9CLiAgVGhl IGNvbnRyYWN0IG9mIHRoZQ0KPiBsaWJyYXJ5IGlzIGp1c3QgZGF0YSBidXQgaXQgc3RpbGwgcmVx dWlyZXMgbGlicmFyeSBtYXBwaW5ncy4gIE1heWJlDQo+IHRoZXNlIHR5cGVzIG9mIGxpYnJhcmll cyBuZWVkIHRvIGJlIHRyZWF0ZWQgZGlmZmVyZW50bHkuDQo+IA0KPiBBbnl3YXkgaXQgd291bGQg YmUgZ3JlYXQgdG8gaGVhciBmcm9tIG90aGVyIG1lbWJlcnMgb2YgdGhlIGNvbW11bml0eQ0KPiBh cm91bmQgbm90IGp1c3QgdGhlIG1lbW9yeSBwcm90ZWN0aW9ucyBSRkMgKHRoaXMgUkZDKSBidXQg YXJvdW5kDQo+IHByZWZlcmVuY2VzIGZvciBhYnN0cmFjdGlvbiB0ZWNobmlxdWVzIChwcm8vY29u KS4gIElmIGFuIGFjdHVhbA0KPiBkaXNjdXNzaW9uIHN0YXJ0cyBpdCBjb3VsZCBtb3ZlIHRvIGRl c2lnbiBtZWV0aW5nLg0KPiANCj4gVGhhbmtzDQo+IFNlYW4NCj4gDQo+IA0KPiANCj4gDQo+IA0K PiANCj4gDQo+IE9uIDcvMjkvMjAyMSA3OjM0IFBNLCBZYW8sIEppZXdlbiB3cm90ZToNCj4gPiBU aGFua3MuIENvZGUgdGFsa3MgYmV0dGVyLg0KPiA+DQo+ID4gSSBwcmVmZXIgb3B0aW9uIDIsIHdo aWNoIGlzIGEgZ2VuZXJpYyB3YXkgZm9yIGFic3RyYWN0aW9uLg0KPiA+DQo+ID4gQW5kIHlvdSBt YXkgZW5hYmxlIG9wdGlvbiAxIHVuZGVyIHRoZSBjb3ZlciBvZiBvcHRpb24gMiwganVzdCBjcmVh dGUgYSBsaWINCj4gaW5zdGFuY2UgdG8gZ2V0IGNvbmZpZyBmcm9tIEhvYi4NCj4gPg0KPiA+IFRo YW5rIHlvdQ0KPiA+IFlhbyBKaWV3ZW4NCj4gPg0KPiA+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2Ut LS0tLQ0KPiA+PiBGcm9tOiBUYXlsb3IgQmVlYmUgPHRAdGF5bG9yYmVlYmUuY29tPg0KPiA+PiBT ZW50OiBGcmlkYXksIEp1bHkgMzAsIDIwMjEgMTA6MDcgQU0NCj4gPj4gVG86IFlhbywgSmlld2Vu IDxqaWV3ZW4ueWFvQGludGVsLmNvbT47IFdhbmcsIEppYW4gSg0KPiA8amlhbi5qLndhbmdAaW50 ZWwuY29tPjsNCj4gPj4gZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4gPj4gQ2M6IHNwYnJvZ2FuQG91 dGxvb2suY29tOyBEb25nLCBFcmljIDxlcmljLmRvbmdAaW50ZWwuY29tPjsgTmksIFJheQ0KPiA+ PiA8cmF5Lm5pQGludGVsLmNvbT47IEt1bWFyLCBSYWh1bDEgPHJhaHVsMS5rdW1hckBpbnRlbC5j b20+Ow0KPiA+PiBtaWt1YmFja0BsaW51eC5taWNyb3NvZnQuY29tOyBXdSwgSGFvIEEgPGhhby5h Lnd1QGludGVsLmNvbT47IEJpLA0KPiBEYW5kYW4NCj4gPj4gPGRhbmRhbi5iaUBpbnRlbC5jb20+ OyBnYW9saW1pbmdAYnlvc29mdC5jb20uY247IERvbmcsIEd1bw0KPiA+PiA8Z3VvLmRvbmdAaW50 ZWwuY29tPjsgTWEsIE1hdXJpY2UgPG1hdXJpY2UubWFAaW50ZWwuY29tPjsgWW91LA0KPiBCZW5q YW1pbg0KPiA+PiA8YmVuamFtaW4ueW91QGludGVsLmNvbT4NCj4gPj4gU3ViamVjdDogUmU6IFtS RkNdIE1lbW9yeVByb3RlY3Rpb25MaWIgZm9yIER5bmFtaWMgTWVtb3J5IEd1YXJkIFNldHRpbmdz DQo+ID4+DQo+ID4+IE9mIGNvdXJzZSAtIGhlcmUgYXJlIGEgY291cGxlIG9mIHJvdWdoIGRyYWZ0 czoNCj4gPj4NCj4gPj4gT3B0aW9uIDE6DQo+IGh0dHBzOi8vZ2l0aHViLmNvbS9UYXlsb3JCZWVi ZS9lZGsyL3RyZWUvbWVtb3J5X3Byb3RlY3Rpb25fbGliXzINCj4gPj4gT3B0aW9uIDI6DQo+IGh0 dHBzOi8vZ2l0aHViLmNvbS9UYXlsb3JCZWViZS9lZGsyL3RyZWUvbWVtb3J5X3Byb3RlY3Rpb25f bGliDQo+ID4+DQo+ID4+IE9uIDcvMjkvMjAyMSA2OjU3IFBNLCBZYW8sIEppZXdlbiB3cm90ZToN Cj4gPj4+IEhpDQo+ID4+PiBTb3JyeSwgSSBhbSBub3QgYWJsZSB0byBmb2xsb3cgdGhlIGRpc2N1 c3Npb24uDQo+ID4+Pg0KPiA+Pj4gSXMgdGhlcmUgYW55IHNhbXBsZSBvciBQT0MgY29kZSB0byBz aG93IHRoZSBjb25jZXB0Pw0KPiA+Pj4NCj4gPj4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0t LQ0KPiA+Pj4+IEZyb206IFRheWxvciBCZWViZSA8dEB0YXlsb3JiZWViZS5jb20+DQo+ID4+Pj4g U2VudDogRnJpZGF5LCBKdWx5IDMwLCAyMDIxIDk6NTUgQU0NCj4gPj4+PiBUbzogV2FuZywgSmlh biBKIDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+OyBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiA+Pj4+ IENjOiBzcGJyb2dhbkBvdXRsb29rLmNvbTsgRG9uZywgRXJpYyA8ZXJpYy5kb25nQGludGVsLmNv bT47IE5pLCBSYXkNCj4gPj4+PiA8cmF5Lm5pQGludGVsLmNvbT47IEt1bWFyLCBSYWh1bDEgPHJh aHVsMS5rdW1hckBpbnRlbC5jb20+Ow0KPiA+Pj4+IG1pa3ViYWNrQGxpbnV4Lm1pY3Jvc29mdC5j b207IFd1LCBIYW8gQSA8aGFvLmEud3VAaW50ZWwuY29tPjsgQmksDQo+ID4+IERhbmRhbg0KPiA+ Pj4+IDxkYW5kYW4uYmlAaW50ZWwuY29tPjsgZ2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuOyBEb25n LCBHdW8NCj4gPj4+PiA8Z3VvLmRvbmdAaW50ZWwuY29tPjsgTWEsIE1hdXJpY2UgPG1hdXJpY2Uu bWFAaW50ZWwuY29tPjsgWW91LA0KPiA+PiBCZW5qYW1pbg0KPiA+Pj4+IDxiZW5qYW1pbi55b3VA aW50ZWwuY29tPjsgWWFvLCBKaWV3ZW4gPGppZXdlbi55YW9AaW50ZWwuY29tPg0KPiA+Pj4+IFN1 YmplY3Q6IFJlOiBbUkZDXSBNZW1vcnlQcm90ZWN0aW9uTGliIGZvciBEeW5hbWljIE1lbW9yeSBH dWFyZA0KPiBTZXR0aW5ncw0KPiA+Pj4+DQo+ID4+Pj4gVGhhbmtzIGZvciB5b3VyIGZlZWRiYWNr LCBKaWFuLg0KPiA+Pj4+DQo+ID4+Pj4gSW4gb3B0aW9uIDIsIGEgbW9zdCBiYXNpYyBpbXBsZW1l bnRhdGlvbiB3b3VsZCByZXR1cm5pbmcgdGhlIGN1cnJlbnQNCj4gPj4+PiBGaXhlZEF0QnVpbGQg UENEcyBhc3N1bWluZyB0aGV5IGFyZSBrZXB0LiBJZiB0aGV5IGFyZW4ndCwgdGhlIGxpYnJhcnkN Cj4gPj4+PiBpbXBsZW1lbnRlciBjb3VsZCBzaW1wbHkgaGFyZC1jb2RlIHRoZSByZXR1cm4gdmFs dWUgZm9yIGVhY2ggbWVtb3J5DQo+ID4+Pj4gcHJvdGVjdGlvbiBzZXR0aW5nLg0KPiA+Pj4+DQo+ ID4+Pj4gSW4gb3B0aW9uIDEsIHRoZSBIT0Igd291bGQgYmUgcHVibGlzaGVkIGluIHByZS1tZW0g YW5kIEknbSBub3QgYW4gZXhwZXJ0DQo+ID4+Pj4gb24gZXhwbG9pdGluZyB0aGUgcHJlLW1lbSBl bnZpcm9ubWVudC4gSmlld2VuIG1heSBoYXZlIG1vcmUgdG8gc2F5IG9uDQo+ID4+IHRoaXMuDQo+ ID4+Pj4NCj4gPj4+PiAtVGF5bG9yDQo+ID4+Pj4NCj4gPj4+PiBPbiA3LzI4LzIwMjEgNzoxOCBQ TSwgV2FuZywgSmlhbiBKIHdyb3RlOg0KPiA+Pj4+PiBUaGFua3MgZm9yIHRoZSBSRkMuIEknbSBu b3Qgb2JqZWN0IHRvIHRoaXMgaWRlYS4gVGhlIG9ubHkgY29uY2VybiBmcm9tIG1lDQo+ID4+Pj4+ IGlzIHRoZSBwb3RlbnRpYWwgc2VjdXJpdHkgaG9sZXMgaW50cm9kdWNlZCBieSB0aGUgY2hhbmdl cy4gQWNjb3JkaW5nIHRvDQo+IHlvdXINCj4gPj4+Pj4gZGVzY3JpcHRpb24sIGl0IGFsbG93cyAz cmQgcGFydHkgc29mdHdhcmUgdG8gdmlvbGF0ZSBtZW1vcnkgcHJvdGVjdGlvbg0KPiA+PiBwb2xp Y3kuDQo+ID4+Pj4+IEknZCBsaWtlIHRvIHNlZSBtb3JlIGV4cGxhbmF0aW9ucyBvbiBob3cgdG8g YXZvaWQgaXQgdG8gYmUgZXhwbG9pdGVkLg0KPiA+Pj4+Pg0KPiA+Pj4+PiArSmlld2VuLCB3aGF0 J3MgY3VycmVudCBwcm9jZXNzIHRvIGV2YWx1YXRlIHRoZSBzZWN1cml0eSB0aHJlYXQ/DQo+ID4+ Pj4+DQo+ID4+Pj4+IFJlZ2FyZHMsDQo+ID4+Pj4+IEppYW4NCj4gPj4+Pj4NCj4gPj4+Pj4+IC0t LS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+Pj4+PiBGcm9tOiBUYXlsb3IgQmVlYmUgPHRA dGF5bG9yYmVlYmUuY29tPg0KPiA+Pj4+Pj4gU2VudDogRnJpZGF5LCBKdWx5IDIzLCAyMDIxIDg6 MzMgQU0NCj4gPj4+Pj4+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiA+Pj4+Pj4gQ2M6IHNw YnJvZ2FuQG91dGxvb2suY29tOyBEb25nLCBFcmljIDxlcmljLmRvbmdAaW50ZWwuY29tPjsgTmks IFJheQ0KPiA+Pj4+Pj4gPHJheS5uaUBpbnRlbC5jb20+OyBLdW1hciwgUmFodWwxIDxSYWh1bDEu S3VtYXJAaW50ZWwuY29tPjsNCj4gPj4+Pj4+IG1pa3ViYWNrQGxpbnV4Lm1pY3Jvc29mdC5jb207 IFdhbmcsIEppYW4gSiA8amlhbi5qLndhbmdAaW50ZWwuY29tPjsNCj4gPj4gV3UsDQo+ID4+Pj4+ PiBIYW8gQSA8aGFvLmEud3VAaW50ZWwuY29tPjsgQmksIERhbmRhbiA8ZGFuZGFuLmJpQGludGVs LmNvbT47DQo+ID4+Pj4+PiBnYW9saW1pbmdAYnlvc29mdC5jb20uY247IERvbmcsIEd1byA8Z3Vv LmRvbmdAaW50ZWwuY29tPjsgTWEsDQo+ID4+Pj4gTWF1cmljZQ0KPiA+Pj4+Pj4gPG1hdXJpY2Uu bWFAaW50ZWwuY29tPjsgWW91LCBCZW5qYW1pbiA8YmVuamFtaW4ueW91QGludGVsLmNvbT4NCj4g Pj4+Pj4+IFN1YmplY3Q6IFtSRkNdIE1lbW9yeVByb3RlY3Rpb25MaWIgZm9yIER5bmFtaWMgTWVt b3J5IEd1YXJkDQo+IFNldHRpbmdzDQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gQ3VycmVudCBtZW1vcnkg cHJvdGVjdGlvbiBzZXR0aW5ncyByZWx5IG9uIEZpeGVkQXRCdWlsZCBQQ0QgdmFsdWVzDQo+ID4+ Pj4+PiAobWludXMgUGNkU2V0TnhGb3JTdGFjaykuIEJlY2F1c2Ugb2YgdGhpcywgdGhlIG1lbW9y eSBwcm90ZWN0aW9uDQo+ID4+Pj4+PiBjb25maWd1cmF0aW9uIGludGVyZmFjZSBpcyBmaXhlZCBp biBuYXR1cmUuIENhc2VzIGFyaXNlIGluIHdoaWNoIG1lbW9yeQ0KPiA+Pj4+Pj4gcHJvdGVjdGlv bnMgbWlnaHQgbmVlZCB0byBiZSBhZGp1c3RlZCBiZXR3ZWVuIGJvb3RzIChpZiBwbGF0Zm9ybSBk ZXNpZ24NCj4gPj4+Pj4+IGFsbG93cykgdG8gYXZvaWQgZGlzYWJsaW5nIGEgc3lzdGVtLiBGb3Ig ZXhhbXBsZSwgcGxhdGZvcm1zIG1pZ2h0DQo+IGNob29zZQ0KPiA+Pj4+Pj4gdG8gYWxsb3cgdGhl IHVzZXIgdG8gY29udHJvbCB0aGVpciBwcm90ZWN0aW9uIHBvbGljaWVzIHN1Y2ggYXMgYWxsb3cN Cj4gPj4+Pj4+IGV4ZWN1dGlvbiBvZiBjcml0aWNhbCAzcmQgcGFydHkgc29mdHdhcmUgdGhhdCBt aWdodCB2aW9sYXRlIG1lbW9yeQ0KPiA+Pj4+Pj4gcHJvdGVjdGlvbnMuDQo+ID4+Pj4+Pg0KPiA+ Pj4+Pj4gVGhpcyBSRkMgc2Vla3MgeW91ciBmZWVkYmFjayByZWdhcmRpbmcgaW50cm9kdWNpbmcg YW4gaW50ZXJmYWNlIHRoYXQNCj4gPj4+Pj4+IGFsbG93cyBkeW5hbWljIGNvbmZpZ3VyYXRpb24g b2YgbWVtb3J5IHByb3RlY3Rpb24gc2V0dGluZ3MuDQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gSSB3b3Vs ZCBsaWtlIHRvIHByb3Bvc2UgdHdvIG9wdGlvbnM6DQo+ID4+Pj4+PiAxLiBEZXNjcmliaW5nIHRo ZSBtZW1vcnkgcHJvdGVjdGlvbiBzZXR0aW5nIGNvbmZpZ3VyYXRpb24gaW4gYSBIT0IgdGhhdA0K PiA+Pj4+Pj4gaXMgcHJvZHVjZWQgYnkgdGhlIHBsYXRmb3JtLg0KPiA+Pj4+Pj4gMi4gSW50cm9k dWNpbmcgYSBsaWJyYXJ5IGNsYXNzIChlLmcuIE1lbW9yeVByb3RlY3Rpb25MaWIpIHRoYXQgYWxs b3dzDQo+ID4+Pj4+PiBhYnN0cmFjdGlvbiBvZiB0aGUgbWVtb3J5IHByb3RlY3Rpb24gc2V0dGlu ZyBjb25maWd1cmF0aW9uIGRhdGEgc291cmNlLg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IEluIGFkZGl0 aW9uLCBJIHdvdWxkIGxpa2UgdG8ga25vdyBpZiB0aGUgbWVtb3J5IHByb3RlY3Rpb24gRml4ZWRB dEJ1aWxkDQo+ID4+Pj4+PiBQQ0RzIGN1cnJlbnRseSBpbiBNZGVNb2R1bGVQa2cgY2FuIGJlIHJl bW92ZWQgc28gd2UgY2FuIG1vdmUgdGhlDQo+ID4+Pj4+PiBjb25maWd1cmF0aW9uIGludGVyZmFj ZSBlbnRpcmVseSB0byBhbiBvcHRpb24gYWJvdmUuDQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gSW4gYW55 IGNhc2UsIEkgd291bGQgbGlrZSB0aGUgc2V0dGluZ3MgdG8gYmUgdmlzaWJsZSB0byBlbnZpcm9u bWVudHMNCj4gPj4+Pj4+IHN1Y2ggYXMgU3RhbmRhbG9uZSBNTSB3aGVyZSBkeW5hbWljIFBDRHMg YXJlIG5vdCBhY2Nlc3NpYmxlLg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IEkgYW0gc2Vla2luZyB5b3Vy IGZlZWRiYWNrIG9uIHRoaXMgcHJvcG9zYWwgaW4gcHJlcGFyYXRpb24gZm9yIHNlbmRpbmcNCj4g Pj4+Pj4+IGFuIGVkazIgcGF0Y2ggc2VyaWVzLg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IC0tDQo+ID4+ Pj4+PiBUYXlsb3IgQmVlYmUNCj4gPj4+Pj4+IFNvZnR3YXJlIEVuZ2luZWVyIEAgTWljcm9zb2Z0 DQo+ID4+Pj4NCj4gPj4+PiAtLQ0KPiA+Pj4+IFRheWxvciBCZWViZQ0KPiA+Pj4+IFNvZnR3YXJl IEVuZ2luZWVyIEAgTWljcm9zb2Z0DQo+ID4+DQo+ID4+IC0tDQo+ID4+IFRheWxvciBCZWViZQ0K PiA+PiBTb2Z0d2FyZSBFbmdpbmVlciBAIE1pY3Jvc29mdA0KPiA+DQo+ID4NCj4gPg0KPiA+DQo+ ID4NCj4gDQo+IA0KPiANCj4gDQoNCg==