From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by mx.groups.io with SMTP id smtpd.web09.557.1662744185506076765 for ; Fri, 09 Sep 2022 10:23:05 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=flPHW17w; spf=pass (domain: intel.com, ip: 134.134.136.20, mailfrom: michael.d.kinney@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1662744185; x=1694280185; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=TVjWFL0TLj5MgWdhU9JpqaVZw8Em3wgLlU6BLadVHPs=; b=flPHW17wuNGWUU96QxI4HK0l+e3NpTK2IS+cpqA7IXEUHifpYkj2oWNA GewWa/Dm/tRb1b7ksVYLaFOye9NnmOaWHcvbbnjVhvjJy5Id4Fd8NR+xx czRHolLrzGrUtVFnmm60+DML3NlenqgDj+F77kTMBB5THw1ohhnlOdszs ZcSSSxApAOBXhb0WZic+MBMbyj+sop9uZQJ8baktfrF9zkrqjrAMoLuWM R9WWHjeuLzAmHRLJOsIDmvo263SdZiykENrCuSDIfo/ijV1lumyxQ4MCR z0pfSecYIrq5Lg1zDBmggYcSfIRV6NJgYL/3zo06KbKkdV/AW6lN8K1oG A==; X-IronPort-AV: E=McAfee;i="6500,9779,10465"; a="284545167" X-IronPort-AV: E=Sophos;i="5.93,303,1654585200"; d="scan'208";a="284545167" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Sep 2022 10:23:04 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.93,303,1654585200"; d="scan'208";a="611123138" Received: from fmsmsx603.amr.corp.intel.com ([10.18.126.83]) by orsmga007.jf.intel.com with ESMTP; 09 Sep 2022 10:23:04 -0700 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Fri, 9 Sep 2022 10:23:04 -0700 Received: from fmsmsx607.amr.corp.intel.com (10.18.126.87) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Fri, 9 Sep 2022 10:23:03 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx607.amr.corp.intel.com (10.18.126.87) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31 via Frontend Transport; Fri, 9 Sep 2022 10:23:03 -0700 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (104.47.55.105) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2375.31; Fri, 9 Sep 2022 10:23:03 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jaQFuNGViTPIwopeSQHUYLtnanGz6ObA4PJ8FPgqvKegPeH6Pe+qIj8dvXzPQ8jBFYjv6JMKxzglmsV9AAH5sSHpdKKsfw53o8k3RnKpCKhKiY5/Pv5bbg2fbQ3MZVnwgfkdtafHqVJuOCFF2jN2V3KpPoX58d6QNxKB43kmJTKWmSgvSCgw9Pw/smpPNyIf3JBSU+0abvE/3FiQsYmdQZ3UTOZjHYctxkO2YIL5W+0obA7Yxwc/D/qs+mpDR9qbqmHMl3U0gsvogpkAZa+jMHCQTZnhfR0bdjqFqyaaP+eX8bioyaHx4kn9ZrA3r4IZd3XdRsr0E3rvd2N6DK5f/Q== 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=TVjWFL0TLj5MgWdhU9JpqaVZw8Em3wgLlU6BLadVHPs=; b=NojGU9JzWV55o+PYTBX/J16thw8iaguGXPEJRpp6aEcj4c6WXOhMrTG9QhCUa8FoDpy16ckY8igKDpNbdfl9Uvql0pHp/CHH61emI+NNR5yJeYCMf6jCIgNRSNaBcBY+pqqZv97Y6KHCXNyAY65AwImAHt8nmTaVVbiPrQj189+iMJqxxWZqai59AuLlL0yBoP08o796b9efL73nxa18kkkqkE3Etk0bg1LGWP02Orkpim77ZUss29G+B4B5tr0UfFyWBRcbm6THQzekiEFz8SfYGnPPNWBN9JWXky9nGyfLH+CkZBGk/trPVevHZJ00CqqoqejKjbIlp4MtC2ol7g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from CO1PR11MB4929.namprd11.prod.outlook.com (2603:10b6:303:6d::19) by SA2PR11MB4794.namprd11.prod.outlook.com (2603:10b6:806:f9::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5612.19; Fri, 9 Sep 2022 17:23:01 +0000 Received: from CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::7890:343e:99cb:21c8]) by CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::7890:343e:99cb:21c8%7]) with mapi id 15.20.5612.020; Fri, 9 Sep 2022 17:23:00 +0000 From: "Michael D Kinney" To: Chao Li , "devel@edk2.groups.io" , "Kinney, Michael D" CC: "Gao, Liming" , "Liu, Zhiguang" , Baoqi Zhang Subject: Re: [PATCH v1 26/34] MdePkg/BasePeCoff: Add LoongArch PE/Coff related code. Thread-Topic: [PATCH v1 26/34] MdePkg/BasePeCoff: Add LoongArch PE/Coff related code. Thread-Index: AQHYwz7FKXigh/6iN0KDmkwKrzoBAq3XWv8A Date: Fri, 9 Sep 2022 17:23:00 +0000 Message-ID: References: <20220908045158.1191989-1-lichao@loongson.cn> In-Reply-To: <20220908045158.1191989-1-lichao@loongson.cn> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.500.17 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CO1PR11MB4929:EE_|SA2PR11MB4794:EE_ x-ms-office365-filtering-correlation-id: 343ef7ec-a14d-427d-b130-08da9287f209 x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: EdLksPIQfN764QIJhOCnSwgMbfrloh4efYeHanKhaZH7nQePiUvawMvvSJc20D5ZdbFvz5vN58/3oNS/NqunTA5BaTsYPg9h3ZOOonuzb1N7c+TjKMbOfe3UfQ91Rt7eHR9xCUL18H6HNJ0ElC8lAJoLTPXQopSixqnXHaVv4EgCv4bIyc/cm99wLjYlWwAA5MJKMKE4xQloFvguHWsHky/KtgGaJW1tDqVcm0gn8c1IoIlOYghEq+sTSURrijVN23n011Kk5rUWOb4AJfUQIz2Mex5vzFkPQAmjRULadZpXyyU8oFaZfmk9xaKerhR41Hp1vVLnNJMazqp6mTI1Dz9DXtVM8S2zjddvoIvx9J+/s6U0LofXbjPDMvra3Jym5cJM79UjBQFfjcLSIqxext4yyk2+ZVH2vUDmFQ1G7Ff7L7onnQTUvWT6nGeAyTjef0pzSMez4qUnvdzScyDKSNL83l1S3MeI7gQ9BCqDFbxtzJuju23D9uVmaHMYLlFlXXO9YN3EPsKCMi3p6tmqUu6Q5jYS+E8IsaOWkacJiFghJ/Enva9KY+2TtDDwKEAJoEJzUtilTEfp794ngAXXqYB83Y9NZXfey3EQnTityMWUB3MUH+5T61TBrOJ61Vh5bgp3Qk4e5FUn/vIzjVrdy2vTG7Lk95VJQC3pEU9KdS/9zvu2/HilLQ/6x0aNG9Ig8bQd3k76q1YVk/3DjwVwNIQKrrnwzc4iV0lryaT2z47jN23zin6jL20tCv9S4C1O/piolE88YAZLAhtuNrR5vw== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO1PR11MB4929.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(6029001)(376002)(346002)(39860400002)(396003)(366004)(136003)(38100700002)(186003)(66946007)(66446008)(64756008)(66556008)(66476007)(76116006)(8676002)(83380400001)(122000001)(52536014)(5660300002)(2906002)(86362001)(8936002)(316002)(4326008)(110136005)(54906003)(41300700001)(71200400001)(7696005)(6506007)(53546011)(9686003)(26005)(82960400001)(55016003)(38070700005)(478600001)(33656002);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?YVErR1lnK0RmS3hKTVRhRVZHUGYyVFhza3daQ2hPSENHRklGTFJRWkc3Y0dB?= =?utf-8?B?d2pXa1VESkJJZmpVTjVJWG52M2YvY0w3eVJzRm1jU1hob3RGS1FtbzFHZjkv?= =?utf-8?B?L1BrOVN5aFNQOGpob01VbkZSVHUrTkRFcWZKcU5KcnNScXVpekIya25jZUQy?= =?utf-8?B?YmtVQUs0UW5QSzVMejlzbHVqMkFCZEQ1elR2c2pIbHprdVludzR4bStJMzhk?= =?utf-8?B?YlpmZ0R5RGY5eXZwTUtHYjhHclJiU1lITjFXbE1zZWIzK2s1ZCtMWDRlb1o1?= =?utf-8?B?ZTZ2NXcxWE5ndC9qWU55ZmkvRnVWcUtlcHNLdTREZVZrNUdFblBIVWxlMWhn?= =?utf-8?B?WFFDUTFlVCt2cFlMc3AwMXVrcFVYQU1pYWk4bjRGTGFzdUVrTjBqT0xsTGN4?= =?utf-8?B?ckdzZW9XTDJGNm1EODFBSml5dzIvSGZjY1VGaTlkLzdLQzVoU1I0aCtUWnBm?= =?utf-8?B?elVYNzl4NnYwbUkzUThsZFJGN3ZlcDJTOWsvVnE3Mm1tMXU5YmhEN0YrYldj?= =?utf-8?B?UDVVaG03RjdheXJycU5tZ2lRS0cxVTg5YWcvOC9telo5dWxxZll4T1RaSHdj?= =?utf-8?B?aUhkV3BiTExUb1ZVVXdUU3U0SmhKZGIyYy9kbXdEZStzMzhLQlFpRTNkREk3?= =?utf-8?B?YW5jejREUDJmSTBDVndEV0Zkc1BOSHlUQWlHc2YyWFNlS3pJR25pMFRNbi9U?= =?utf-8?B?TG1tdlhWTWNuV2g0dkQ5Wm4rMVNEL0xqeWhLUkYvK0hPTzlpNkZodXZYekxp?= =?utf-8?B?aGxnd1k1ZHludFJ0b2IxMTVKakRnd2hIMFc1a0M0UjFtdzI0em5ZK2M0YmUx?= =?utf-8?B?ZmFmbWNMZXJEWVlEbGtoeWx3cmtON1BGQmxxazVRdnFuekJ6bmdKNU1raVRY?= =?utf-8?B?MmFUb0JkV3o1YnJMVVUxeTZ2MHE2bE5IejBvNmpTd20vK1JvS1NXb1paNjVC?= =?utf-8?B?aG5SVWg0TllSVURGT3diWEoxQmhJSTE2d2UwWi84U0lWalhPUE0vZVM5SThF?= =?utf-8?B?WlhnVDBxQXRZaDdrdDRtZ00zcFFhZXBHaGx0UWNVZE91SDRRaW4zZFlZNjQ0?= =?utf-8?B?ZGJUQjNWZU5NS3FEWk9yUitXblpqbzBERy9venArY2Vvd2M2RU9lcVVacjAx?= =?utf-8?B?a1l0ODI3bDJ1ZzlneTViQkt2VGdsaTM4bG1MMW5UaVNoeTJMZmhBUitzenRT?= =?utf-8?B?R0pvSDJMbmkzeWpWa2xHdXk4ZjBFQXMrRjVDaC8xMzkrS1JRejhUNFVjbTNo?= =?utf-8?B?NlNjR0JaSW5pTmUwVWNSMGNIMlB2ZFBOaEtmUXQ0Rk0rdnA0TEUzWG1MWE1P?= =?utf-8?B?ZlNxcUYreGZGdFM3cENWOEJxY3M1N2Z5aDB5R1kzNXpBUzErTWFtOGc1RHBu?= =?utf-8?B?dWo0QnAwY2cxL0ZpVEdmZXVMQXhLZEFSOXlVOWNyc1ZQNnl4d0NQRitWZ1k4?= =?utf-8?B?bFBkMkdTWW5FSHdWY3FEUWZ5TzRUYldnSUpBWkFseUlvc3ZWZGhEVW52clBI?= =?utf-8?B?QmhldmRHQVVFU3ZEUjlLenFYTHNmc3BDU1V1UVJhNnA0MTZ6YkRQTm9yRzlS?= =?utf-8?B?em9TTVBaRzZ3T2M1SGNHZXVHb3k2NVg5NlpzTHczZUFHUXZNUFRKeExid3h6?= =?utf-8?B?S3BTaEpMVXVYb2M1UUVpUndRSFpNbzBrTC9MUlV2TlFKUG4zTTJvbCt1RHNY?= =?utf-8?B?b3UwQzhtNG40R2RJRUNtTUFUQjhWUHNwcnpWQ2kxekJocFhJRDcvZ1pBTjRG?= =?utf-8?B?bUZjYzJpSDNvUm13SGk0d0liUjJXcVFOSzNBdTFZdU4rRjBManFFUG1BNEdp?= =?utf-8?B?OHhFTHYzOVRnUjIwNFNaMXhCZVNpbTV3bXhnZjI5M1haQktUR2RHK2ttdER1?= =?utf-8?B?T3RHRGtrQXVxTWJIYnVlaDhMMnBCWUxkTjFWeS9qOTk2bnllTmRGZmhaamNh?= =?utf-8?B?M2ZhS2pORmFzSGwwTTIrbFhiUXlXS2poVEFnb2cvbEV4czFUa2owc0l2Qk1I?= =?utf-8?B?T3ZqcGtQVTVvYU54d2JwQWx2dUpVZHBYbnR4NWxBSGtwMVF3VWlqK21SUjc0?= =?utf-8?B?K0lsVHd4Zk9HOVF1M2J4Nnl4MzNybURMOTd0Y2xSVk5aSVkzZlM4N09MVjE0?= =?utf-8?B?YVZXblZVWHJhTXdRTjFLdnpmOG5ZckJRZ1MwWFBBcXNTUktScFgyMGxFd2Fz?= =?utf-8?B?d0E9PQ==?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CO1PR11MB4929.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 343ef7ec-a14d-427d-b130-08da9287f209 X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Sep 2022 17:23:00.5151 (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: 8B4VExKKgXriYJcg7ttHIGoXI9RERdNUmlXn2o9WLi1clvuUQZ6KdnL5HiCAvaWmrkDDMV+CGFvtAic/wElRW7Ve4aesQXs7HyiPSlgvMgA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA2PR11MB4794 Return-Path: michael.d.kinney@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Q2FuIHlvdSBhZGQgbGluayB0byBzcGVjIHRoYXQgZGVmaW5lcyBMT09OR0FSQ0ggUEUvQ09GRiBy ZWxvY2F0aW9uIHR5cGVzPw0KDQpNaWtlDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0N Cj4gRnJvbTogQ2hhbyBMaSA8bGljaGFvQGxvb25nc29uLmNuPg0KPiBTZW50OiBXZWRuZXNkYXks IFNlcHRlbWJlciA3LCAyMDIyIDk6NTIgUE0NCj4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+ IENjOiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+OyBHYW8s IExpbWluZyA8Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPjsgTGl1LCBaaGlndWFuZw0KPiA8emhp Z3VhbmcubGl1QGludGVsLmNvbT47IEJhb3FpIFpoYW5nIDx6aGFuZ2Jhb3FpQGxvb25nc29uLmNu Pg0KPiBTdWJqZWN0OiBbUEFUQ0ggdjEgMjYvMzRdIE1kZVBrZy9CYXNlUGVDb2ZmOiBBZGQgTG9v bmdBcmNoIFBFL0NvZmYgcmVsYXRlZCBjb2RlLg0KPiANCj4gQWRkIExvb25nQXJjaCBpbWFnZSBy ZWxvY2F0aW9uLg0KPiANCj4gQ2M6IE1pY2hhZWwgRCBLaW5uZXkgPG1pY2hhZWwuZC5raW5uZXlA aW50ZWwuY29tPg0KPiBDYzogTGltaW5nIEdhbyA8Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPg0K PiBDYzogWmhpZ3VhbmcgTGl1IDx6aGlndWFuZy5saXVAaW50ZWwuY29tPg0KPiANCj4gU2lnbmVk LW9mZi1ieTogQ2hhbyBMaSA8bGljaGFvQGxvb25nc29uLmNuPg0KPiBDby1hdXRob3JlZC1ieTog QmFvcWkgWmhhbmcgPHpoYW5nYmFvcWlAbG9vbmdzb24uY24+DQo+IC0tLQ0KPiAgTWRlUGtnL0xp YnJhcnkvQmFzZVBlQ29mZkxpYi9CYXNlUGVDb2ZmLmMgICAgIHwgICAzICstDQo+ICAuLi4vTGli cmFyeS9CYXNlUGVDb2ZmTGliL0Jhc2VQZUNvZmZMaWIuaW5mICAgfCAgIDUgKw0KPiAgLi4uL0xp YnJhcnkvQmFzZVBlQ29mZkxpYi9CYXNlUGVDb2ZmTGliLnVuaSAgIHwgICAyICsNCj4gIC4uLi9C YXNlUGVDb2ZmTGliL0xvb25nQXJjaC9QZUNvZmZMb2FkZXJFeC5jICB8IDEzNyArKysrKysrKysr KysrKysrKysNCj4gIDQgZmlsZXMgY2hhbmdlZCwgMTQ2IGluc2VydGlvbnMoKyksIDEgZGVsZXRp b24oLSkNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBNZGVQa2cvTGlicmFyeS9CYXNlUGVDb2ZmTGli L0xvb25nQXJjaC9QZUNvZmZMb2FkZXJFeC5jDQo+IA0KPiBkaWZmIC0tZ2l0IGEvTWRlUGtnL0xp YnJhcnkvQmFzZVBlQ29mZkxpYi9CYXNlUGVDb2ZmLmMgYi9NZGVQa2cvTGlicmFyeS9CYXNlUGVD b2ZmTGliL0Jhc2VQZUNvZmYuYw0KPiBpbmRleCA2ZDhkOWZhZWI4Li45N2E4YWFmOGM3IDEwMDY0 NA0KPiAtLS0gYS9NZGVQa2cvTGlicmFyeS9CYXNlUGVDb2ZmTGliL0Jhc2VQZUNvZmYuYw0KPiAr KysgYi9NZGVQa2cvTGlicmFyeS9CYXNlUGVDb2ZmTGliL0Jhc2VQZUNvZmYuYw0KPiBAQCAtMSw2 ICsxLDYgQEANCj4gIC8qKiBAZmlsZQ0KPiANCj4gICAgQmFzZSBQRS9DT0ZGIGxvYWRlciBzdXBw b3J0cyBsb2FkaW5nIGFueSBQRTMyL1BFMzIrIG9yIFRFIGltYWdlLCBidXQNCj4gDQo+IC0gIG9u bHkgc3VwcG9ydHMgcmVsb2NhdGluZyBJQTMyLCB4NjQsIElQRiwgQVJNLCBSSVNDLVYgYW5kIEVC QyBpbWFnZXMuDQo+IA0KPiArICBvbmx5IHN1cHBvcnRzIHJlbG9jYXRpbmcgSUEzMiwgeDY0LCBJ UEYsIEFSTSwgUklTQy1WLCBMb29uZ0FyY2ggYW5kIEVCQyBpbWFnZXMuDQo+IA0KPiANCj4gDQo+ ICAgIENhdXRpb246IFRoaXMgZmlsZSByZXF1aXJlcyBhZGRpdGlvbmFsIHJldmlldyB3aGVuIG1v ZGlmaWVkLg0KPiANCj4gICAgVGhpcyBsaWJyYXJ5IHdpbGwgaGF2ZSBleHRlcm5hbCBpbnB1dCAt IFBFL0NPRkYgaW1hZ2UuDQo+IA0KPiBAQCAtMTgsNiArMTgsNyBAQA0KPiAgICBDb3B5cmlnaHQg KGMpIDIwMDYgLSAyMDE5LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48 QlI+DQo+IA0KPiAgICBQb3J0aW9ucyBjb3B5cmlnaHQgKGMpIDIwMDggLSAyMDA5LCBBcHBsZSBJ bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiANCj4gICAgUG9ydGlvbnMgQ29weXJpZ2h0 IChjKSAyMDIwLCBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSBEZXZlbG9wbWVudCBMUC4gQWxs IHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+IA0KPiArICBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIw MjIsIExvb25nc29uIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyBy ZXNlcnZlZC48QlI+DQo+IA0KPiAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xh dXNlLVBhdGVudA0KPiANCj4gDQo+IA0KPiAgKiovDQo+IA0KPiBkaWZmIC0tZ2l0IGEvTWRlUGtn L0xpYnJhcnkvQmFzZVBlQ29mZkxpYi9CYXNlUGVDb2ZmTGliLmluZiBiL01kZVBrZy9MaWJyYXJ5 L0Jhc2VQZUNvZmZMaWIvQmFzZVBlQ29mZkxpYi5pbmYNCj4gaW5kZXggMTEwYjZkNWEwOS4uM2I4 YjhlYjE5MSAxMDA2NDQNCj4gLS0tIGEvTWRlUGtnL0xpYnJhcnkvQmFzZVBlQ29mZkxpYi9CYXNl UGVDb2ZmTGliLmluZg0KPiArKysgYi9NZGVQa2cvTGlicmFyeS9CYXNlUGVDb2ZmTGliL0Jhc2VQ ZUNvZmZMaWIuaW5mDQo+IEBAIC00LDYgKzQsNyBAQA0KPiAgIyAgVGhlIElBMzIgdmVyc2lvbiBs aWJyYXJ5IHN1cHBvcnQgbG9hZGluZyBJQTMyLCBYNjQgYW5kIEVCQyBQRS9DT0ZGIGltYWdlcy4N Cj4gDQo+ICAjICBUaGUgWDY0IHZlcnNpb24gbGlicmFyeSBzdXBwb3J0IGxvYWRpbmcgSUEzMiwg WDY0IGFuZCBFQkMgUEUvQ09GRiBpbWFnZXMuDQo+IA0KPiAgIyAgVGhlIFJJU0MtViB2ZXJzaW9u IGxpYnJhcnkgc3VwcG9ydCBsb2FkaW5nIFJJU0MtViBpbWFnZXMuDQo+IA0KPiArIyAgVGhlIExv b25nQXJjaCB2ZXJzaW9uIGxpYnJhcnkgc3VwcG9ydCBsb2FkaW5nIExvb25nQXJjaCBpbWFnZXMu DQo+IA0KPiAgIw0KPiANCj4gICMgIENhdXRpb246IFRoaXMgbW9kdWxlIHJlcXVpcmVzIGFkZGl0 aW9uYWwgcmV2aWV3IHdoZW4gbW9kaWZpZWQuDQo+IA0KPiAgIyAgVGhpcyBsaWJyYXJ5IHdpbGwg aGF2ZSBleHRlcm5hbCBpbnB1dCAtIFBFL0NPRkYgaW1hZ2UuDQo+IA0KPiBAQCAtMTMsNiArMTQs NyBAQA0KPiAgIyAgQ29weXJpZ2h0IChjKSAyMDA2IC0gMjAxOCwgSW50ZWwgQ29ycG9yYXRpb24u IEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiANCj4gICMgIFBvcnRpb25zIGNvcHlyaWdodCAo YykgMjAwOCAtIDIwMDksIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+IA0K PiAgIyAgUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDIwLCBIZXdsZXR0IFBhY2thcmQgRW50ZXJw cmlzZSBEZXZlbG9wbWVudCBMUC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+IA0KPiArIyAg UG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDIyLCBMb29uZ3NvbiBUZWNobm9sb2d5IENvcnBvcmF0 aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiANCj4gICMNCj4gDQo+ICAj ICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiANCj4gICMN Cj4gDQo+IEBAIC00Niw2ICs0OCw5IEBADQo+ICBbU291cmNlcy5SSVNDVjY0XQ0KPiANCj4gICAg UmlzY1YvUGVDb2ZmTG9hZGVyRXguYw0KPiANCj4gDQo+IA0KPiArW1NvdXJjZXMuTE9PTkdBUkNI NjRdDQo+IA0KPiArICBMb29uZ0FyY2gvUGVDb2ZmTG9hZGVyRXguYw0KPiANCj4gKw0KPiANCj4g IFtQYWNrYWdlc10NCj4gDQo+ICAgIE1kZVBrZy9NZGVQa2cuZGVjDQo+IA0KPiANCj4gDQo+IGRp ZmYgLS1naXQgYS9NZGVQa2cvTGlicmFyeS9CYXNlUGVDb2ZmTGliL0Jhc2VQZUNvZmZMaWIudW5p IGIvTWRlUGtnL0xpYnJhcnkvQmFzZVBlQ29mZkxpYi9CYXNlUGVDb2ZmTGliLnVuaQ0KPiBpbmRl eCA1NTQxNzAyOWYyLi4xZjczMTM0NGUxIDEwMDY0NA0KPiAtLS0gYS9NZGVQa2cvTGlicmFyeS9C YXNlUGVDb2ZmTGliL0Jhc2VQZUNvZmZMaWIudW5pDQo+ICsrKyBiL01kZVBrZy9MaWJyYXJ5L0Jh c2VQZUNvZmZMaWIvQmFzZVBlQ29mZkxpYi51bmkNCj4gQEAgLTUsNiArNSw3IEBADQo+ICAvLyBU aGUgSUEzMiB2ZXJzaW9uIGxpYnJhcnkgc3VwcG9ydCBsb2FkaW5nIElBMzIsIFg2NCBhbmQgRUJD IFBFL0NPRkYgaW1hZ2VzLg0KPiANCj4gIC8vIFRoZSBYNjQgdmVyc2lvbiBsaWJyYXJ5IHN1cHBv cnQgbG9hZGluZyBJQTMyLCBYNjQgYW5kIEVCQyBQRS9DT0ZGIGltYWdlcy4NCj4gDQo+ICAvLyBU aGUgUklTQy1WIHZlcnNpb24gbGlicmFyeSBzdXBwb3J0IGxvYWRpbmcgUklTQy1WMzIgYW5kIFJJ U0MtVjY0IFBFL0NPRkYgaW1hZ2VzLg0KPiANCj4gKy8vIFRoZSBMb29uZ0FyY2ggdmVyc2lvbiBs aWJyYXJ5IHN1cHBvcnQgbG9hZGluZyBMb29uZ0FyY2gzMiBhbmQgTG9vbmdBcmNoNjQgUEUvQ09G RiBpbWFnZXMuDQo+IA0KPiAgLy8NCj4gDQo+ICAvLyBDYXV0aW9uOiBUaGlzIG1vZHVsZSByZXF1 aXJlcyBhZGRpdGlvbmFsIHJldmlldyB3aGVuIG1vZGlmaWVkLg0KPiANCj4gIC8vIFRoaXMgbGli cmFyeSB3aWxsIGhhdmUgZXh0ZXJuYWwgaW5wdXQgLSBQRS9DT0ZGIGltYWdlLg0KPiANCj4gQEAg LTE0LDYgKzE1LDcgQEANCj4gIC8vIENvcHlyaWdodCAoYykgMjAwNiAtIDIwMTgsIEludGVsIENv cnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gDQo+ICAvLyBQb3J0aW9ucyBj b3B5cmlnaHQgKGMpIDIwMDggLSAyMDA5LCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu PEJSPg0KPiANCj4gIC8vIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAyMCwgSGV3bGV0dCBQYWNr YXJkIEVudGVycHJpc2UgRGV2ZWxvcG1lbnQgTFAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0K PiANCj4gKy8vIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAyMiwgTG9vbmdzb24gVGVjaG5vbG9n eSBDb3Jwb3JhdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gDQo+ICAv Lw0KPiANCj4gIC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50 DQo+IA0KPiAgLy8NCj4gDQo+IGRpZmYgLS1naXQgYS9NZGVQa2cvTGlicmFyeS9CYXNlUGVDb2Zm TGliL0xvb25nQXJjaC9QZUNvZmZMb2FkZXJFeC5jIGIvTWRlUGtnL0xpYnJhcnkvQmFzZVBlQ29m ZkxpYi9Mb29uZ0FyY2gvUGVDb2ZmTG9hZGVyRXguYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0K PiBpbmRleCAwMDAwMDAwMDAwLi40MTcwOTZmMzM0DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIv TWRlUGtnL0xpYnJhcnkvQmFzZVBlQ29mZkxpYi9Mb29uZ0FyY2gvUGVDb2ZmTG9hZGVyRXguYw0K PiBAQCAtMCwwICsxLDEzNyBAQA0KPiArLyoqIEBmaWxlDQo+IA0KPiArICBQRS9Db2ZmIGxvYWRl ciBmb3IgTG9vbmdBcmNoIFBFIGltYWdlDQo+IA0KPiArDQo+IA0KPiArICBDb3B5cmlnaHQgKGMp IDIwMjIsIExvb25nc29uIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24gTGltaXRlZC4gQWxsIHJpZ2h0 cyByZXNlcnZlZC48QlI+DQo+IA0KPiArDQo+IA0KPiArICBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiANCj4gKyoqLw0KPiANCj4gKw0KPiANCj4gKyNpbmNs dWRlICJCYXNlUGVDb2ZmTGliSW50ZXJuYWxzLmgiDQo+IA0KPiArI2luY2x1ZGUgPExpYnJhcnkv QmFzZUxpYi5oPg0KPiANCj4gKw0KPiANCj4gKy8qKg0KPiANCj4gKyAgUGVyZm9ybXMgYW4gTG9v bmdBcmNoIHNwZWNpZmljIHJlbG9jYXRpb24gZml4dXAgYW5kIGlzIGEgbm8tb3Agb24gb3RoZXIN Cj4gDQo+ICsgIGluc3RydWN0aW9uIHNldHMuDQo+IA0KPiArDQo+IA0KPiArICBAcGFyYW1baW5d ICAgICAgIFJlbG9jICAgICAgIFBvaW50ZXIgdG8gdGhlIHJlbG9jYXRpb24gcmVjb3JkLg0KPiAN Cj4gKyAgQHBhcmFtW2luLCBvdXRdICBGaXh1cCAgICAgICBQb2ludGVyIHRvIHRoZSBhZGRyZXNz IHRvIGZpeCB1cC4NCj4gDQo+ICsgIEBwYXJhbVtpbiwgb3V0XSAgRml4dXBEYXRhICAgUG9pbnRl ciB0byBhIGJ1ZmZlciB0byBsb2cgdGhlIGZpeHVwcy4NCj4gDQo+ICsgIEBwYXJhbVtpbl0gICAg ICAgQWRqdXN0ICAgICAgVGhlIG9mZnNldCB0byBhZGp1c3QgdGhlIGZpeHVwLg0KPiANCj4gKw0K PiANCj4gKyAgQHJldHVybiBTdGF0dXMgY29kZS4NCj4gDQo+ICsNCj4gDQo+ICsqKi8NCj4gDQo+ ICtSRVRVUk5fU1RBVFVTDQo+IA0KPiArUGVDb2ZmTG9hZGVyUmVsb2NhdGVJbWFnZUV4ICgNCj4g DQo+ICsgIElOIFVJTlQxNiAgICAgKlJlbG9jLA0KPiANCj4gKyAgSU4gT1VUIENIQVI4ICAqRml4 dXAsDQo+IA0KPiArICBJTiBPVVQgQ0hBUjggICoqRml4dXBEYXRhLA0KPiANCj4gKyAgSU4gVUlO VDY0ICAgICBBZGp1c3QNCj4gDQo+ICsgICkNCj4gDQo+ICt7DQo+IA0KPiArICBVSU5UOCAgIFJl bG9jVHlwZTsNCj4gDQo+ICsgIFVJTlQ2NCAgVmFsdWU7DQo+IA0KPiArICBVSU5UNjQgIFRtcDE7 DQo+IA0KPiArICBVSU5UNjQgIFRtcDI7DQo+IA0KPiArDQo+IA0KPiArICBSZWxvY1R5cGUgPSAo KlJlbG9jKSA+PiAxMjsNCj4gDQo+ICsgIFZhbHVlICAgICA9IDA7DQo+IA0KPiArICBUbXAxICAg ICAgPSAwOw0KPiANCj4gKyAgVG1wMiAgICAgID0gMDsNCj4gDQo+ICsNCj4gDQo+ICsgIHN3aXRj aCAoUmVsb2NUeXBlKSB7DQo+IA0KPiArICAgIGNhc2UgRUZJX0lNQUdFX1JFTF9CQVNFRF9MT09O R0FSQ0g2NF9NQVJLX0xBOg0KPiANCj4gKyAgICAgIC8vIFRoZSBuZXh0IGZvdXIgaW5zdHJ1Y3Rp b25zIGFyZSB1c2VkIHRvIGxvYWQgYSA2NCBiaXQgYWRkcmVzcywgcmVsb2NhdGUgYWxsIG9mIHRo ZW0NCj4gDQo+ICsgICAgICBWYWx1ZSA9ICgqKFVJTlQzMiAqKUZpeHVwICYgMHgxZmZmZmUwKSA8 PCA3IHwgICAgICAgLy8gbHUxMmkudyAyMGJpdHMgZnJvbSBiaXQ1DQo+IA0KPiArICAgICAgICAg ICAgICAoKigoVUlOVDMyICopRml4dXAgKyAxKSAmIDB4M2ZmYzAwKSA+PiAxMDsgIC8vIG9yaSAg ICAgMTJiaXRzIGZyb20gYml0MTANCj4gDQo+ICsgICAgICBUbXAxICAgPSAqKChVSU5UMzIgKilG aXh1cCArIDIpICYgMHgxZmZmZmUwOyAgICAgICAgLy8gbHUzMmkuZCAyMGJpdHMgZnJvbSBiaXQ1 DQo+IA0KPiArICAgICAgVG1wMiAgID0gKigoVUlOVDMyICopRml4dXAgKyAzKSAmIDB4M2ZmYzAw OyAgICAgICAgIC8vIGx1NTJpLmQgMTJiaXRzIGZyb20gYml0MTANCj4gDQo+ICsgICAgICBWYWx1 ZSAgPSBWYWx1ZSB8IChUbXAxIDw8IDI3KSB8IChUbXAyIDw8IDQyKTsNCj4gDQo+ICsgICAgICBW YWx1ZSArPSBBZGp1c3Q7DQo+IA0KPiArDQo+IA0KPiArICAgICAgKihVSU5UMzIgKilGaXh1cCA9 ICgqKFVJTlQzMiAqKUZpeHVwICYgfjB4MWZmZmZlMCkgfCAoKChWYWx1ZSA+PiAxMikgJiAweGZm ZmZmKSA8PCA1KTsNCj4gDQo+ICsgICAgICBpZiAoKkZpeHVwRGF0YSAhPSBOVUxMKSB7DQo+IA0K PiArICAgICAgICAqRml4dXBEYXRhICAgICAgICAgICAgICA9IEFMSUdOX1BPSU5URVIgKCpGaXh1 cERhdGEsIHNpemVvZiAoVUlOVDMyKSk7DQo+IA0KPiArICAgICAgICAqKFVJTlQzMiAqKSgqRml4 dXBEYXRhKSA9ICooVUlOVDMyICopRml4dXA7DQo+IA0KPiArICAgICAgICAqRml4dXBEYXRhICAg ICAgICAgICAgICA9ICpGaXh1cERhdGEgKyBzaXplb2YgKFVJTlQzMik7DQo+IA0KPiArICAgICAg fQ0KPiANCj4gKw0KPiANCj4gKyAgICAgIEZpeHVwICAgICAgICAgICArPSBzaXplb2YgKFVJTlQz Mik7DQo+IA0KPiArICAgICAgKihVSU5UMzIgKilGaXh1cCA9ICgqKFVJTlQzMiAqKUZpeHVwICYg fjB4M2ZmYzAwKSB8ICgoVmFsdWUgJiAweGZmZikgPDwgMTApOw0KPiANCj4gKyAgICAgIGlmICgq Rml4dXBEYXRhICE9IE5VTEwpIHsNCj4gDQo+ICsgICAgICAgICpGaXh1cERhdGEgICAgICAgICAg ICAgID0gQUxJR05fUE9JTlRFUiAoKkZpeHVwRGF0YSwgc2l6ZW9mIChVSU5UMzIpKTsNCj4gDQo+ ICsgICAgICAgICooVUlOVDMyICopKCpGaXh1cERhdGEpID0gKihVSU5UMzIgKilGaXh1cDsNCj4g DQo+ICsgICAgICAgICpGaXh1cERhdGEgICAgICAgICAgICAgID0gKkZpeHVwRGF0YSArIHNpemVv ZiAoVUlOVDMyKTsNCj4gDQo+ICsgICAgICB9DQo+IA0KPiArDQo+IA0KPiArICAgICAgRml4dXAg ICAgICAgICAgICs9IHNpemVvZiAoVUlOVDMyKTsNCj4gDQo+ICsgICAgICAqKFVJTlQzMiAqKUZp eHVwID0gKCooVUlOVDMyICopRml4dXAgJiB+MHgxZmZmZmUwKSB8ICgoKFZhbHVlID4+IDMyKSAm IDB4ZmZmZmYpIDw8IDUpOw0KPiANCj4gKyAgICAgIGlmICgqRml4dXBEYXRhICE9IE5VTEwpIHsN Cj4gDQo+ICsgICAgICAgICpGaXh1cERhdGEgICAgICAgICAgICAgID0gQUxJR05fUE9JTlRFUiAo KkZpeHVwRGF0YSwgc2l6ZW9mIChVSU5UMzIpKTsNCj4gDQo+ICsgICAgICAgICooVUlOVDMyICop KCpGaXh1cERhdGEpID0gKihVSU5UMzIgKilGaXh1cDsNCj4gDQo+ICsgICAgICAgICpGaXh1cERh dGEgICAgICAgICAgICAgID0gKkZpeHVwRGF0YSArIHNpemVvZiAoVUlOVDMyKTsNCj4gDQo+ICsg ICAgICB9DQo+IA0KPiArDQo+IA0KPiArICAgICAgRml4dXAgICAgICAgICAgICs9IHNpemVvZiAo VUlOVDMyKTsNCj4gDQo+ICsgICAgICAqKFVJTlQzMiAqKUZpeHVwID0gKCooVUlOVDMyICopRml4 dXAgJiB+MHgzZmZjMDApIHwgKCgoVmFsdWUgPj4gNTIpICYgMHhmZmYpIDw8IDEwKTsNCj4gDQo+ ICsgICAgICBpZiAoKkZpeHVwRGF0YSAhPSBOVUxMKSB7DQo+IA0KPiArICAgICAgICAqRml4dXBE YXRhICAgICAgICAgICAgICA9IEFMSUdOX1BPSU5URVIgKCpGaXh1cERhdGEsIHNpemVvZiAoVUlO VDMyKSk7DQo+IA0KPiArICAgICAgICAqKFVJTlQzMiAqKSgqRml4dXBEYXRhKSA9ICooVUlOVDMy ICopRml4dXA7DQo+IA0KPiArICAgICAgICAqRml4dXBEYXRhICAgICAgICAgICAgICA9ICpGaXh1 cERhdGEgKyBzaXplb2YgKFVJTlQzMik7DQo+IA0KPiArICAgICAgfQ0KPiANCj4gKw0KPiANCj4g KyAgICAgIGJyZWFrOw0KPiANCj4gKyAgICBkZWZhdWx0Og0KPiANCj4gKyAgICAgIHJldHVybiBS RVRVUk5fVU5TVVBQT1JURUQ7DQo+IA0KPiArICB9DQo+IA0KPiArDQo+IA0KPiArICByZXR1cm4g UkVUVVJOX1NVQ0NFU1M7DQo+IA0KPiArfQ0KPiANCj4gKw0KPiANCj4gKy8qKg0KPiANCj4gKyAg UmV0dXJucyBUUlVFIGlmIHRoZSBtYWNoaW5lIHR5cGUgb2YgUEUvQ09GRiBpbWFnZSBpcyBzdXBw b3J0ZWQuIFN1cHBvcnRlZA0KPiANCj4gKyAgZG9lcyBub3QgbWVhbiB0aGUgaW1hZ2UgY2FuIGJl IGV4ZWN1dGVkIGl0IG1lYW5zIHRoZSBQRS9DT0ZGIGxvYWRlciBzdXBwb3J0cw0KPiANCj4gKyAg bG9hZGluZyBhbmQgcmVsb2NhdGluZyBvZiB0aGUgaW1hZ2UgdHlwZS4gSXQncyB1cCB0byB0aGUg Y2FsbGVyIHRvIHN1cHBvcnQNCj4gDQo+ICsgIHRoZSBlbnRyeSBwb2ludC4NCj4gDQo+ICsNCj4g DQo+ICsgIEBwYXJhbVtpbl0gIE1hY2hpbmUgICBNYWNoaW5lIHR5cGUgZnJvbSB0aGUgUEUgSGVh ZGVyLg0KPiANCj4gKw0KPiANCj4gKyAgQHJldHVybiBUUlVFIGlmIHRoaXMgUEUvQ09GRiBsb2Fk ZXIgY2FuIGxvYWQgdGhlIGltYWdlDQo+IA0KPiArDQo+IA0KPiArKiovDQo+IA0KPiArQk9PTEVB Tg0KPiANCj4gK1BlQ29mZkxvYWRlckltYWdlRm9ybWF0U3VwcG9ydGVkICgNCj4gDQo+ICsgIElO ICBVSU5UMTYgIE1hY2hpbmUNCj4gDQo+ICsgICkNCj4gDQo+ICt7DQo+IA0KPiArICBpZiAoTWFj aGluZSA9PSBJTUFHRV9GSUxFX01BQ0hJTkVfTE9PTkdBUkNINjQpIHsNCj4gDQo+ICsgICAgcmV0 dXJuIFRSVUU7DQo+IA0KPiArICB9DQo+IA0KPiArDQo+IA0KPiArICByZXR1cm4gRkFMU0U7DQo+ IA0KPiArfQ0KPiANCj4gKw0KPiANCj4gKy8qKg0KPiANCj4gKyAgUGVyZm9ybXMgYW4gTE9PTkdB UkNILWJhc2VkIHNwZWNpZmljIHJlLXJlbG9jYXRpb24gZml4dXAgYW5kIGlzIGEgbm8tb3Agb24g b3RoZXINCj4gDQo+ICsgIGluc3RydWN0aW9uIHNldHMuIFRoaXMgaXMgdXNlZCB0byByZS1yZWxv Y2F0ZWQgdGhlIGltYWdlIGludG8gdGhlIEVGSSB2aXJ0dWFsDQo+IA0KPiArICBzcGFjZSBmb3Ig cnVudGltZSBjYWxscy4NCj4gDQo+ICsNCj4gDQo+ICsgIEBwYXJhbVtpbl0gICAgICAgUmVsb2Mg ICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIHJlbG9jYXRpb24gcmVjb3JkLg0KPiANCj4gKyAgQHBh cmFtW2luLCBvdXRdICBGaXh1cCAgICAgICBUaGUgcG9pbnRlciB0byB0aGUgYWRkcmVzcyB0byBm aXggdXAuDQo+IA0KPiArICBAcGFyYW1baW4sIG91dF0gIEZpeHVwRGF0YSAgIFRoZSBwb2ludGVy IHRvIGEgYnVmZmVyIHRvIGxvZyB0aGUgZml4dXBzLg0KPiANCj4gKyAgQHBhcmFtW2luXSAgICAg ICBBZGp1c3QgICAgICBUaGUgb2Zmc2V0IHRvIGFkanVzdCB0aGUgZml4dXAuDQo+IA0KPiArDQo+ IA0KPiArICBAcmV0dXJuIFN0YXR1cyBjb2RlLg0KPiANCj4gKw0KPiANCj4gKyoqLw0KPiANCj4g K1JFVFVSTl9TVEFUVVMNCj4gDQo+ICtQZUhvdFJlbG9jYXRlSW1hZ2VFeCAoDQo+IA0KPiArICBJ TiBVSU5UMTYgICAgICpSZWxvYywNCj4gDQo+ICsgIElOIE9VVCBDSEFSOCAgKkZpeHVwLA0KPiAN Cj4gKyAgSU4gT1VUIENIQVI4ICAqKkZpeHVwRGF0YSwNCj4gDQo+ICsgIElOIFVJTlQ2NCAgICAg QWRqdXN0DQo+IA0KPiArICApDQo+IA0KPiArew0KPiANCj4gKyAgLy8gVG8gY2hlY2sNCj4gDQo+ ICsgIHJldHVybiBQZUNvZmZMb2FkZXJSZWxvY2F0ZUltYWdlRXggKFJlbG9jLCBGaXh1cCwgRml4 dXBEYXRhLCBBZGp1c3QpOw0KPiANCj4gK30NCj4gDQo+IC0tDQo+IDIuMjcuMA0KDQo=