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.web10.41704.1681919658502404740 for ; Wed, 19 Apr 2023 08:54:18 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=fPIRS5Y6; 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=1681919658; x=1713455658; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=Q3ZL3MwXaQBIdt+fcxoyuv75/kKGTZtfYXoVYPXMEjY=; b=fPIRS5Y6QE6OoUIEbAkBysWDCtX9etmANbpSFsnmVy31L6pcrgq6FzYq X5jQrtwq4ZmzhBxFFUZ+8uZH/R6NPmQZzWh01WMqb8SagO26rxk0eoGVx rj4Z7T/kxYBZ9oR5FHyFZnmlwHvEK1it8mmMqPS8BIPfunYL+4YDpc5ci beyFoYB9Wjk7ScnEdaWJm0mrRN36pUh8T/yiq8vpKXlLmriAie2/i/udM Sn2oYhfWJvTW68GzkOxsoPH4nveh4tjE215m0lZT5NleGRmwzfx5OXwoE xeP6VznGPr8S5KvGMfYtNCN/0app1EzZmU+Lzv6iGj6yB65AeEU22vqce A==; X-IronPort-AV: E=McAfee;i="6600,9927,10685"; a="334298392" X-IronPort-AV: E=Sophos;i="5.99,208,1677571200"; d="scan'208";a="334298392" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Apr 2023 08:54:17 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10685"; a="721982108" X-IronPort-AV: E=Sophos;i="5.99,208,1677571200"; d="scan'208";a="721982108" Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by orsmga008.jf.intel.com with ESMTP; 19 Apr 2023 08:54:17 -0700 Received: from orsmsx601.amr.corp.intel.com (10.22.229.14) by ORSMSX601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Wed, 19 Apr 2023 08:54:17 -0700 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23 via Frontend Transport; Wed, 19 Apr 2023 08:54:17 -0700 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (104.47.56.168) 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.2507.23; Wed, 19 Apr 2023 08:54:16 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MNXxd1pJ4Sk7dQRTFZynoj66Y0tRWJ72NUK6qKjh6Adk5Gr739+WwfMnE5uTcJwtxdI8GNfKlrQH/V7DzpOJBzTiulq7lDdah96OUc+afIAvJQq4AD7rEN48O6SFdSr/J8J1UavY5jobnEhRpJqOmZMrfPmZHrowCdBf0EX1QhVJUFJUfvE5wtYvVcpVfHWxkASckR1CFZKGgMmfMZo1w0XoL/26hwOxA8k0+RgF2ST60lHSRxGVK8b7m0fa1sgcPgb/9zpXS8eSHugBwrSf3lBNgOKKJAs9eSQYmWeLwTJ0z+hE7D/X1ncSu6zqu8MVUDJgvLM1LJmK3lgcxqMVLw== 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=Q3ZL3MwXaQBIdt+fcxoyuv75/kKGTZtfYXoVYPXMEjY=; b=Z6ZY6eQsEmthQt1tkvWhAw2AFFnn4UGDP60lKZVd/8yY3iESc4IUjlAYDCJPoGFSwR4+sI2PXx1LHsxoVY6cky8YxAhy17HiBSQLZECzLEE5AJ5Ei0ekXmxI8gS5RhW3BttMKq3HSR0IVdGxtN9pUBuytZ9XSf6wSrwpeL5mA4Hev2vhYLxLBlLDD3ZKwtMKV9zix6g16tnSQfpcP9XS2GNVi9iT83+zJorot8VSutDOI3wKIGAcVz1k9sA9BWNHqyColnCEp/Mi7YaNOYIusM2e4aYNImvcmvTKClpU2O12NdB9o6AN+TxIgqiJwzuB7NlK2V22vpjLs7XPJvCHYg== 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 DM4PR11MB5312.namprd11.prod.outlook.com (2603:10b6:5:393::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6298.45; Wed, 19 Apr 2023 15:54:13 +0000 Received: from CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::ba6c:51be:a461:c46f]) by CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::ba6c:51be:a461:c46f%3]) with mapi id 15.20.6319.022; Wed, 19 Apr 2023 15:54:13 +0000 From: "Michael D Kinney" To: "Lin, Benny" , "devel@edk2.groups.io" CC: "Gao, Liming" , "Liu, Zhiguang" , Pedro Falcato , "Kinney, Michael D" Subject: Re: [PATCH v3 2/3] MdePkg: Support FDT library. Thread-Topic: [PATCH v3 2/3] MdePkg: Support FDT library. Thread-Index: AQHZcO5q7fKvBNcZ+0+q116Ir7z5eq8yx5Ng Date: Wed, 19 Apr 2023 15:54:13 +0000 Message-ID: References: <20230417053505.670-1-benny.lin@intel.com> <20230417053505.670-3-benny.lin@intel.com> In-Reply-To: <20230417053505.670-3-benny.lin@intel.com> Accept-Language: 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: CO1PR11MB4929:EE_|DM4PR11MB5312:EE_ x-ms-office365-filtering-correlation-id: b99888ab-b74a-4143-b692-08db40ee52c3 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: zqToadJbt0fX+Bq2ouRCGzZ5c49DRZ33xrfie1G0rGKNbzMwE59QsnB48IekDlrkGl5J6cOP8Dm0pK9YtVYpXVfQWm0mGMsKpCb9Ul1ieua6F4VCI+SMGO67lsibIGJVYdJDpFHZEx4LhDlJ6Xe1CJ7FGhxlv/UTOIyigUIOQ7/8PeUQa8wCvandfoq7NaaC9s+EAJ0ckqGDAa8b6s0fPEddJ6WW47xojhaV572dl6K7OY/LSHn2F5fe3Ga5Kq6R3TtSl7rbzYGIC84bWoClLsuiLSuAFzVCm9dMxVNzKnVoaJ4Dz2niP5Q0urDgiZ6EKwb3EQ8Q5wiqQ63kZEnRe5q4zAutnglxRr6RwvmwNuB2JmCaGA4ryDSQiUQ86rrGJ5wax4iK6/Lw7rwM+hNV8yvj9RIqn3NepKEyQkcutmQb7/4YjQI5c++q3LqSoivivQSEB92urvIUZGy6gwV7s9BhzhQwdMgLIWzgY/D+E7kxgmu3GqJML9MkBHZJftcvkM7K5Uza1akjoNxmW69U7PPRJLOjs+suGhAICMVypepQQlngGtH3gOYFE/Hrki2Ykx6ohE+b/yuTwfYhlonDDccxmaYHQ+yxXiqFawo4iVFH/YELfL8fs9spIyQpEekqZ1++D52WSN3EudkB/BJRiQ== 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:(13230028)(396003)(39860400002)(346002)(376002)(136003)(366004)(451199021)(38070700005)(52536014)(2906002)(8936002)(5660300002)(8676002)(30864003)(41300700001)(122000001)(55016003)(86362001)(33656002)(38100700002)(45080400002)(478600001)(110136005)(316002)(53546011)(26005)(107886003)(6506007)(9686003)(54906003)(186003)(71200400001)(966005)(7696005)(4326008)(66446008)(64756008)(66476007)(66556008)(66946007)(83380400001)(82960400001)(19627235002)(76116006)(579004)(559001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?MS9rWk9HbThwdEcyazF6K1dxTUJPOVN2UkFNRFhGeDY4NFVuVGpMQm9IWTJC?= =?utf-8?B?SkNlSXh2THVvVDVlbE8vMmY2Y1BJcXRpa2JQVksxRE1rdnBnYWpySFlDcVRu?= =?utf-8?B?M041bUkrL29SUEJoeTNFNjZpRk92TmxabG13cWhtcjVKczhoTFExU1FQUjFz?= =?utf-8?B?VElIWHlycm9KZDFNL0dyMkw0ZTZnVDRtdHluWlJrZnAxVDZ3dzNqMTN5VDhR?= =?utf-8?B?SHBIRlltbGl1dDJqeWNJU0JTbHpOVytTdnZCSHphNDlEeGM2bGNMclcvK3ly?= =?utf-8?B?VzN1akJ1cUZGZktkZFJmeGRDaGUwTHJLeDh0OG5tekRpek5lNURMcmRRUTlq?= =?utf-8?B?OGFOMVVLZ0tHdGJIZUdJR1RnMnFCTGxJeks3SkJsQjlYSkxneFdlNmlhSVZL?= =?utf-8?B?NWdpWWpRaUFaVDVFK0tSczVSQ1Q0RXVpT3hCV2VrUzJQbEhtdGpFQm5rYkhH?= =?utf-8?B?eHJhYmxJZ1huaVhVanZodmhwU2xZZDZveHBqV3BDNElEZmhsK1BFV2tVL0J6?= =?utf-8?B?WjdZT1BLdjRsNFBmZzR2SXBzM2F2d2Z0ejBxTEx1R25Kd0N5WU9PaWRzNkQy?= =?utf-8?B?VlUvdTdEeTgxSndwMEp2cW8wcUEyM0pUQUVVK1VnMklzNE91cVQ4b0Y5RGU1?= =?utf-8?B?dzVTVmRGa09CMllaQ1d3UFdQc0JONXVka09BVGdhaEtKdVZub0Y2S3pEUWhX?= =?utf-8?B?dmxsZlB6NWRGQ0RsS0E1aUpUSG5ZakxDL1NMT01IZzZVVTcrQ09KRFpUS08x?= =?utf-8?B?QkN0SkE3Z0J4KzR4UVJlRnVINm1jZHV2dmVxVXZ6K0ViQ1BnaS9uWmhldEpW?= =?utf-8?B?elJ6MlVrVGVwMVFLRkQ0R1gvdUpvSkxGT2szQ3hoYVFycDVjRlIrTmlVUm02?= =?utf-8?B?RzNFNGhyTHZkZWZCMk5WRFk1SjFSY1hLb3N4bmV2QmJCUlZoaGFTQ2VaeUtD?= =?utf-8?B?UzVZRUpOVnVlN2MyU3NHWlZCZWJsakR0dVA5NkZBM0RSMWVsKzJFQVV0OE12?= =?utf-8?B?bjg4SWpId29OS29yTFlqZ0ZuWHNoeCs3TURoZzVuSlBWdnVOKzNlQ1B2dWZl?= =?utf-8?B?cGdVY1pYeVhmc1F1MXhvUHdRZHI0OHhYcDh6VW9oYTExYmdJMmtXcnBmZUpL?= =?utf-8?B?UmpDdlVaZStmYUpvT3MrL0JUaWVqWE9GNXFxbEQ2a2dyVm90a0MwNGVzSDZu?= =?utf-8?B?b0J4bWdQSmFhak9SNk4yTzIzTTdPYTk1RkRFOGdxbDkrUDQwVGQ0cG5IRVhP?= =?utf-8?B?UWtYdTYrd2tjMDRSbDVoaUlINjFndVlRL1JINk5zK2ZwWlFSaWdaRGY5MzJQ?= =?utf-8?B?OVpXcS9SZWxRRGpXNkFuSGVPc2h3dXR1QmM4MVBiWXdleXNWTHo5d05ud0M4?= =?utf-8?B?VGlRVmZXUktpdUJSR3VrWWhBSm53L01qTDRldGJPeWl3WVl2ZHRHbzdaeld0?= =?utf-8?B?ZHB6dkNGb0FxMzV6MngxU3hsb3huRnR3TDFQdmNoeVdPNHBDWnVWL2RTditz?= =?utf-8?B?WHlkREw1dVMzRTZ4MDR4VGZDNG91clJPYnNJRXNlWFpEVmN2L2pEL3F0OWdC?= =?utf-8?B?NnNIZmRKdi9rb2lKZjdoMGZqNUgxdHNkTFFLdVh0RTh6cmloWjhVK0M5aVRQ?= =?utf-8?B?S1FUS3VyV1F1bkR6N040b2s0bGhxQ0NNenp0bkdYcU44SkFYZnloVWVEYmFi?= =?utf-8?B?WXZnNWkxYmUrb1daWFM2ZnhnRGJBZVc5aE8vMVdpVVNiUDMxcCtNQVpMYXhW?= =?utf-8?B?VmZWa3N0RGZ1QjlneWFGbnZhZFc4SVQrOGx4OFU5MTZTUlIrQlNiRk1kYVFE?= =?utf-8?B?YUQ1MTJrR2VINTVaQWE1QnpZTUFTZHJUWGsyTzVnRm1BV3kyc0pld1FMUDRl?= =?utf-8?B?V1NSblJ2VUhRT3NCQ0dibTZkSG4yOGc4S2t5VEl5LzdvcVd0bmo2ZVF6SXhZ?= =?utf-8?B?cERQWWswSmMydktUSjU0UWNYQmEwTGFIS0Uxeko5RU83dURSMEd3SEd2Ylo3?= =?utf-8?B?emY4OXZwMXl1MnpVY3dvZnRoUjdoY0ZYNTBndHdQa1NHQU05YW1TTTVEVHhp?= =?utf-8?B?K1NkVzgrUjArdWhiNDRMOUptT2FkdFB6Y1hxZEtCaXRwYWdoRGZSeU5hWTQr?= =?utf-8?B?OTZQUWVzQzFZRVNUM0VYcnhLK0QvYXVHSWM1MWxKQ2dtQjJMME1aTWJUOGNN?= =?utf-8?B?QlE9PQ==?= 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: b99888ab-b74a-4143-b692-08db40ee52c3 X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Apr 2023 15:54:13.7670 (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: CnR1+A3OCe5Nr0tctCbpwGklVPnd+Fyv8e2qCSAfhNsR4cbk1J9RgEXR8eaIwbsM1ppLerbvziVi+w664c7PYUUMagstXYzrT1UCJbhbqA8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR11MB5312 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 QSBmZXcgY29tbWVudHMgYmVsb3cuDQoNCk1pa2UNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2Ut LS0tLQ0KPiBGcm9tOiBMaW4sIEJlbm55IDxiZW5ueS5saW5AaW50ZWwuY29tPg0KPiBTZW50OiBT dW5kYXksIEFwcmlsIDE2LCAyMDIzIDEwOjM1IFBNDQo+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5p bw0KPiBDYzogTGluLCBCZW5ueSA8YmVubnkubGluQGludGVsLmNvbT47IEtpbm5leSwgTWljaGFl bCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT47IEdhbywgTGltaW5nDQo+IDxnYW9saW1p bmdAYnlvc29mdC5jb20uY24+OyBMaXUsIFpoaWd1YW5nIDx6aGlndWFuZy5saXVAaW50ZWwuY29t PjsgUGVkcm8gRmFsY2F0byA8cGVkcm8uZmFsY2F0b0BnbWFpbC5jb20+DQo+IFN1YmplY3Q6IFtQ QVRDSCB2MyAyLzNdIE1kZVBrZzogU3VwcG9ydCBGRFQgbGlicmFyeS4NCj4gDQo+IEZyb206IEJl bm55IExpbiA8YmVubnkubGluQGludGVsLmNvbT4NCj4gDQo+IFJFRjogaHR0cHM6Ly9idWd6aWxs YS50aWFub2NvcmUub3JnL3Nob3dfYnVnLmNnaT9pZD00MzkyDQo+IEFkZCBGRFQgc3VwcG9ydCBp biBFREsyIGJ5IHN1Ym1vZHVsZSAzcmQgcGFydHkgbGliZmR0DQo+IChodHRwczovL2dpdGh1Yi5j b20vZGV2aWNldHJlZS1vcmcvcHlsaWJmZHQvdHJlZS9tYWluL2xpYmZkdCkNCj4gYW5kIHJlZmVy IHRvIExpYmNMaWIgaW1wbGVtZW50YXRpb24gYnkgUGVkcm8uDQo+IA0KPiBDYzogTWljaGFlbCBE IEtpbm5leSA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+IENjOiBMaW1pbmcgR2FvIDxn YW9saW1pbmdAYnlvc29mdC5jb20uY24+DQo+IENjOiBaaGlndWFuZyBMaXUgPHpoaWd1YW5nLmxp dUBpbnRlbC5jb20+DQo+IEFja2VkLWJ5OiBQZWRybyBGYWxjYXRvIDxwZWRyby5mYWxjYXRvQGdt YWlsLmNvbT4NCj4gU2lnbmVkLW9mZi1ieTogQmVubnkgTGluIDxiZW5ueS5saW5AaW50ZWwuY29t Pg0KPiAtLS0NCj4gIE1kZVBrZy9JbmNsdWRlL0xpYnJhcnkvRmR0TGliLmggICAgICAgICAgIHwg MzE0ICsrKysrKysrKysrKysrKysrKysrDQo+ICBNZGVQa2cvTGlicmFyeS9CYXNlRmR0TGliL0Jh c2VGZHRMaWIuaW5mICB8ICA2MiArKysrDQo+ICBNZGVQa2cvTGlicmFyeS9CYXNlRmR0TGliL0Jh c2VGZHRMaWIudW5pICB8ICAxNCArDQo+ICBNZGVQa2cvTGlicmFyeS9CYXNlRmR0TGliL0ZkdExp Yi5jICAgICAgICB8IDMwMSArKysrKysrKysrKysrKysrKysrDQo+ICBNZGVQa2cvTGlicmFyeS9C YXNlRmR0TGliL0xpYkZkdFN1cHBvcnQuaCB8ICA5OSArKysrKysNCj4gIE1kZVBrZy9MaWJyYXJ5 L0Jhc2VGZHRMaWIvTGliRmR0V3JhcHBlci5jIHwgMTczICsrKysrKysrKysrDQo+ICBNZGVQa2cv TGlicmFyeS9CYXNlRmR0TGliL2xpbWl0cy5oICAgICAgICB8ICAxMCArDQo+ICBNZGVQa2cvTGli cmFyeS9CYXNlRmR0TGliL3N0ZGJvb2wuaCAgICAgICB8ICAxMCArDQo+ICBNZGVQa2cvTGlicmFy eS9CYXNlRmR0TGliL3N0ZGRlZi5oICAgICAgICB8ICAxMCArDQo+ICBNZGVQa2cvTGlicmFyeS9C YXNlRmR0TGliL3N0ZGludC5oICAgICAgICB8ICAxMCArDQo+ICBNZGVQa2cvTGlicmFyeS9CYXNl RmR0TGliL3N0ZGxpYi5oICAgICAgICB8ICAxMCArDQo+ICBNZGVQa2cvTGlicmFyeS9CYXNlRmR0 TGliL3N0cmluZy5oICAgICAgICB8ICAxMCArDQo+ICBNZGVQa2cvTWRlUGtnLmNpLnlhbWwgICAg ICAgICAgICAgICAgICAgICB8ICAxNyArLQ0KPiAgTWRlUGtnL01kZVBrZy5kZWMgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgIDQgKw0KPiAgTWRlUGtnL01kZVBrZy5kc2MgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgIDEgKw0KPiAgMTUgZmlsZXMgY2hhbmdlZCwgMTA0MyBpbnNlcnRpb25z KCspLCAyIGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL01kZVBrZy9JbmNsdWRlL0xp YnJhcnkvRmR0TGliLmggYi9NZGVQa2cvSW5jbHVkZS9MaWJyYXJ5L0ZkdExpYi5oDQo+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLmQ1OWI3NDljMjUNCj4gLS0tIC9k ZXYvbnVsbA0KPiArKysgYi9NZGVQa2cvSW5jbHVkZS9MaWJyYXJ5L0ZkdExpYi5oDQo+IEBAIC0w LDAgKzEsMzE0IEBADQo+ICsvKiogQGZpbGUNCj4gDQo+ICsgIEZsYXR0ZW5lZCBEZXZpY2UgVHJl ZSBMaWJyYXJ5Lg0KPiANCj4gKw0KPiANCj4gKyAgQ29weXJpZ2h0IChjKSAyMDIzLCBJbnRlbCBD b3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+IA0KPiArICBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiANCj4gKw0KPiANCj4gKyoqLw0K PiANCj4gKw0KPiANCj4gKyNpZm5kZWYgRkRUX0xJQl9IXw0KPiANCj4gKyNkZWZpbmUgRkRUX0xJ Ql9IXw0KPiANCj4gKw0KPiANCj4gKy8vLw0KPiANCj4gKy8vLyBGbGF0dGVuZWQgRGV2aWNlIFRy ZWUgZGVmaW5pdGlvbg0KPiANCj4gKy8vLw0KPiANCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gDQo+ ICsgIFVJTlQzMiAgICBNYWdpYzsgICAgICAgICAgICAgICAvKiBtYWdpYyB3b3JkIEZEVF9NQUdJ QyAqLw0KPiANCj4gKyAgVUlOVDMyICAgIFRvdGFsU2l6ZTsgICAgICAgICAgIC8qIHRvdGFsIHNp emUgb2YgRFQgYmxvY2sgKi8NCj4gDQo+ICsgIFVJTlQzMiAgICBPZmZzZXREdFN0cnVjdDsgICAg ICAvKiBvZmZzZXQgdG8gc3RydWN0dXJlICovDQo+IA0KPiArICBVSU5UMzIgICAgT2Zmc2V0RHRT dHJpbmdzOyAgICAgLyogb2Zmc2V0IHRvIHN0cmluZ3MgKi8NCj4gDQo+ICsgIFVJTlQzMiAgICBP ZmZzZXRNZW1Sc3ZtYXA7ICAgICAvKiBvZmZzZXQgdG8gbWVtb3J5IHJlc2VydmUgbWFwICovDQo+ IA0KPiArICBVSU5UMzIgICAgVmVyc2lvbjsgICAgICAgICAgICAgLyogZm9ybWF0IHZlcnNpb24g Ki8NCj4gDQo+ICsgIFVJTlQzMiAgICBMYXN0Q29tcFZlcnNpb247ICAgICAvKiBsYXN0IGNvbXBh dGlibGUgdmVyc2lvbiAqLw0KPiANCj4gKw0KPiANCj4gKyAgLyogdmVyc2lvbiAyIGZpZWxkcyBi ZWxvdyAqLw0KPiANCj4gKyAgVUlOVDMyICAgIEJvb3RDcHVpZFBoeXM7ICAgICAgIC8qIFdoaWNo IHBoeXNpY2FsIENQVSBpZCB3ZSdyZQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJvb3Rpbmcgb24gKi8NCj4gDQo+ICsgIC8qIHZlcnNpb24gMyBmaWVsZHMgYmVs b3cgKi8NCj4gDQo+ICsgIFVJTlQzMiAgICBTaXplRHRTdHJpbmdzOyAgICAgICAvKiBzaXplIG9m IHRoZSBzdHJpbmdzIGJsb2NrICovDQo+IA0KPiArDQo+IA0KPiArICAvKiB2ZXJzaW9uIDE3IGZp ZWxkcyBiZWxvdyAqLw0KPiANCj4gKyAgVUlOVDMyICAgIFNpemVEdFN0cnVjdDsgICAgICAgIC8q IHNpemUgb2YgdGhlIHN0cnVjdHVyZSBibG9jayAqLw0KPiANCj4gK30gRkRUX0hFQURFUjsNCg0K SSBzZWUgdGhlIG1hY3JvcyBiZWxvdyB1c2UgU3dhcEJ5dGVzMzIoKSBvbiBhbGwgdGhlIGZpZWxk cyBmcm9tIHRoaXMNCnN0cnVjdHVyZS4gIERvZXMgdGhpcyBtZWFuIHRoaXMgc3RydWN0dXJlIGlz IGJpZyBlbmRpYW4/ICBJZiB0aGF0IGlzDQp0aGUgY2FzZSwgdGhlbiB0aGUgZGVzY3JpcHRpb24g b2YgdGhpcyBzdHJ1Y3R1cmUgYW5kIGFsbCBpbmRpdmlkdWFsIA0KZmllbGRzIG11c3QgbWFrZSB0 aGF0IHZlcnkgY2xlYXIgc28gYW55IGNvbnN1bWVyIG9mIHRoZSBzdHJ1Y3R1cmUga25vd3MNCml0 IGRvZXMgbm90IGZvbGxvdyB0aGUgZGVmYXVsdCBlbmRpYW5uZXNzIG9mIFVFRkkvUEkgYW5kIHRo YXQgY29uc3VtZXJzDQptdXN0IGVpdGhlciB1c2UgdGhlIG1hY3JvcyBvciBjb25zdW1lcnMgbXVz dCB1c2UgU3dhcEJ5dGVzMzIoKSBvbg0KdGhlaXIgb3duIHdoZW4gdXNpbmcgdGhpcyBzdHJ1Y3R1 cmUgZGlyZWN0bHkuDQoNCj4gDQo+ICsNCj4gDQo+ICt0eXBlZGVmIHN0cnVjdCB7DQo+IA0KPiAr ICBVSU5UNjQgICAgQWRkcmVzczsNCj4gDQo+ICsgIFVJTlQ2NCAgICBTaXplOw0KPiANCj4gK30g RkRUX1JFU0VSVkVfRU5UUlk7DQoNCg0KSSBkbyBub3Qgc2VlIHRoaXMgdHlwZSB1c2VkIGFueXdo ZXJlIGluIHRoZSBsaWIgY2xhc3Mgb3IgdGhlIGxpYiBpbnN0YW5jZS4NCkNhbiBpdCBiZSByZW1v dmVkPw0KDQo+IA0KPiArDQo+IA0KPiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiANCj4gKyAgVUlOVDMy ICAgIFRhZzsNCj4gDQo+ICsgIENIQVI4ICAgICBOYW1lW107DQo+IA0KPiArfSBGRFRfTk9ERV9I RUFERVI7DQoNCg0KSSBkbyBub3Qgc2VlIHRoaXMgdHlwZSB1c2VkIGFueXdoZXJlIGluIHRoZSBs aWIgY2xhc3Mgb3IgdGhlIGxpYiBpbnN0YW5jZS4NCkNhbiBpdCBiZSByZW1vdmVkPw0KDQo+IA0K PiArDQo+IA0KPiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiANCj4gKyAgVUlOVDMyICAgIFRhZzsNCj4g DQo+ICsgIFVJTlQzMiAgICBMZW5ndGg7DQo+IA0KPiArICBVSU5UMzIgICAgTmFtZU9mZnNldDsN Cj4gDQo+ICsgIENIQVI4ICAgICBEYXRhW107DQo+IA0KPiArfSBGRFRfUFJPUEVSVFk7DQo+IA0K PiArDQo+IA0KPiArI2RlZmluZSBGRFRfR0VUX0hFQURFUihGZHQsIEZpZWxkKSAgU3dhcEJ5dGVz MzIoKChDT05TVCBGRFRfSEVBREVSICopKEZkdCkpLT5GaWVsZCkNCj4gDQo+ICsNCj4gDQo+ICsj ZGVmaW5lIEZEVF9NQUdJQyhGZHQpICAgICAgICAgICAgICAoRkRUX0dFVF9IRUFERVIoRmR0LCBN YWdpYykpDQo+IA0KPiArI2RlZmluZSBGRFRfVE9UQUxfU0laRShGZHQpICAgICAgICAgKEZEVF9H RVRfSEVBREVSKEZkdCwgVG90YWxTaXplKSkNCj4gDQo+ICsjZGVmaW5lIEZEVF9PRkZTRVRfRFRf U1RSVUNUKEZkdCkgICAoRkRUX0dFVF9IRUFERVIoRmR0LCBPZmZzZXREdFN0cnVjdCkpDQo+IA0K PiArI2RlZmluZSBGRFRfT0ZGU0VUX0RUX1NUUklOR1MoRmR0KSAgKEZEVF9HRVRfSEVBREVSKEZk dCwgT2Zmc2V0RHRTdHJpbmdzKSkNCj4gDQo+ICsjZGVmaW5lIEZEVF9PRkZTRVRfTUVNX1JTVk1B UChGZHQpICAoRkRUX0dFVF9IRUFERVIoRmR0LCBPZmZzZXRNZW1Sc3ZtYXApKQ0KPiANCj4gKyNk ZWZpbmUgRkRUX1ZFUlNJT04oRmR0KSAgICAgICAgICAgIChGRFRfR0VUX0hFQURFUihGZHQsIFZl cnNpb24pKQ0KPiANCj4gKyNkZWZpbmUgRkRUX0xBU1RfQ09NUF9WRVJTSU9OKEZkdCkgIChGRFRf R0VUX0hFQURFUihGZHQsIExhc3RDb21wVmVyc2lvbikpDQo+IA0KPiArI2RlZmluZSBGRFRfQk9P VF9DUFVJRF9QSFlTKEZkdCkgICAgKEZEVF9HRVRfSEVBREVSKEZkdCwgQm9vdENwdWlkUGh5cykp DQo+IA0KPiArI2RlZmluZSBGRFRfU0laRV9EVF9TVFJJTkdTKEZkdCkgICAgKEZEVF9HRVRfSEVB REVSKEZkdCwgU2l6ZUR0U3RyaW5ncykpDQo+IA0KPiArI2RlZmluZSBGRFRfU0laRV9EVF9TVFJV Q1QoRmR0KSAgICAgKEZEVF9HRVRfSEVBREVSKEZkdCwgU2l6ZUR0U3RydWN0KSkNCj4gDQo+ICsN Cj4gDQo+ICsvKioNCj4gDQo+ICsgIFZlcmlmeSB0aGUgaGVhZGVyIG9mIHRoZSBGbGF0dGVuZWQg RGV2aWNlIFRyZWUNCj4gDQo+ICsNCj4gDQo+ICsgIEBwYXJhbVtpbl0gRmR0ICAgICAgICAgICAg VGhlIHBvaW50ZXIgdG8gRkRUIGJsb2IuDQo+IA0KPiArDQo+IA0KPiArICBAcmV0dXJuIFplcm8g Zm9yIHN1Y2Nlc3NmdWxseSwgb3RoZXJ3aXNlIGZhaWxlZC4NCj4gDQo+ICsNCj4gDQo+ICsqKi8N Cj4gDQo+ICtJTlQzMg0KPiANCj4gK0VGSUFQSQ0KPiANCj4gK0ZkdENoZWNrSGVhZGVyICgNCj4g DQo+ICsgIElOIENPTlNUIFZPSUQgICpGZHQNCj4gDQo+ICsgICk7DQo+IA0KPiArDQo+IA0KPiAr LyoqDQo+IA0KPiArICBDcmVhdGUgYSBlbXB0eSBGbGF0dGVuZWQgRGV2aWNlIFRyZWUuDQo+IA0K PiArDQo+IA0KPiArICBAcGFyYW1baW5dIEJ1ZmZlciAgICAgICAgIFRoZSBwb2ludGVyIHRvIGFs bG9jYXRlIGEgcG9vbCBmb3IgRkRUIGJsb2IuDQo+IA0KPiArICBAcGFyYW1baW5dIEJ1ZmZlclNp emUgICAgIFRoZSBCdWZmZXJTaXplIHRvIHRoZSBwb29sIHNpemUuDQo+IA0KPiArDQo+IA0KPiAr ICBAcmV0dXJuIFplcm8gZm9yIHN1Y2Nlc3NmdWxseSwgb3RoZXJ3aXNlIGZhaWxlZC4NCj4gDQo+ ICsNCj4gDQo+ICsqKi8NCj4gDQo+ICtSRVRVUk5fU1RBVFVTDQo+IA0KPiArRUZJQVBJDQo+IA0K PiArRmR0Q3JlYXRlRW1wdHlUcmVlICgNCj4gDQo+ICsgIElOIFZPSUQgICAqQnVmZmVyLA0KPiAN Cj4gKyAgSU4gVUlOVE4gIEJ1ZmZlclNpemUNCj4gDQo+ICsgICk7DQo+IA0KPiArDQo+IA0KPiAr LyoqDQo+IA0KPiArICBSZXR1cm5zIGEgb2Zmc2V0IG9mIG5leHQgbm9kZSBmcm9tIHRoZSBnaXZl biBub2RlLg0KPiANCj4gKw0KPiANCj4gKyAgQHBhcmFtW2luXSBGZHQgICAgICAgICAgICBUaGUg cG9pbnRlciB0byBGRFQgYmxvYi4NCj4gDQo+ICsgIEBwYXJhbVtpbl0gT2Zmc2V0ICAgICAgICAg VGhlIG9mZnNldCB0byBwcmV2aW91cyBub2RlLg0KPiANCj4gKyAgQHBhcmFtW2luXSBEZXB0aCAg ICAgICAgICBUaGUgZGVwdGggdG8gdGhlIGxldmVsIG9mIHRyZWUgaGllcmFyY2h5Lg0KPiANCj4g Kw0KPiANCj4gKyAgQHJldHVybiBUaGUgb2Zmc2V0IHRvIG5leHQgbm9kZSBvZmZzZXQuDQo+IA0K PiArDQo+IA0KPiArKiovDQo+IA0KPiArSU5UMzINCj4gDQo+ICtFRklBUEkNCj4gDQo+ICtGZHRO ZXh0Tm9kZSAoDQo+IA0KPiArICBJTiBDT05TVCBWT0lEICAqRmR0LA0KPiANCj4gKyAgSU4gSU5U MzIgICAgICAgT2Zmc2V0LA0KPiANCj4gKyAgSU4gSU5UMzIgICAgICAgKkRlcHRoDQo+IA0KPiAr ICApOw0KPiANCj4gKw0KPiANCj4gKy8qKg0KPiANCj4gKyAgUmV0dXJucyBhIG9mZnNldCBvZiBm aXJzdCBub2RlIHVuZGVyIHRoZSBnaXZlbiBub2RlLg0KPiANCj4gKw0KPiANCj4gKyAgQHBhcmFt W2luXSBGZHQgICAgICAgICAgICBUaGUgcG9pbnRlciB0byBGRFQgYmxvYi4NCj4gDQo+ICsgIEBw YXJhbVtpbl0gT2Zmc2V0ICAgICAgICAgVGhlIG9mZnNldCB0byBwcmV2aW91cyBub2RlLg0KPiAN Cj4gKw0KPiANCj4gKyAgQHJldHVybiBUaGUgb2Zmc2V0IHRvIG5leHQgbm9kZSBvZmZzZXQuDQo+ IA0KPiArDQo+IA0KPiArKiovDQo+IA0KPiArSU5UMzINCj4gDQo+ICtFRklBUEkNCj4gDQo+ICtG ZHRGaXJzdFN1Ym5vZGUgKA0KPiANCj4gKyAgSU4gQ09OU1QgVk9JRCAgKkZkdCwNCj4gDQo+ICsg IElOIElOVDMyICAgICAgIE9mZnNldA0KPiANCj4gKyAgKTsNCj4gDQo+ICsNCj4gDQo+ICsvKioN Cj4gDQo+ICsgIFJldHVybnMgYSBvZmZzZXQgb2YgbmV4dCBub2RlIGZyb20gdGhlIGdpdmVuIG5v ZGUuDQo+IA0KPiArDQo+IA0KPiArICBAcGFyYW1baW5dIEZkdCAgICAgICAgICAgIFRoZSBwb2lu dGVyIHRvIEZEVCBibG9iLg0KPiANCj4gKyAgQHBhcmFtW2luXSBPZmZzZXQgICAgICAgICBUaGUg b2Zmc2V0IHRvIHByZXZpb3VzIG5vZGUuDQo+IA0KPiArDQo+IA0KPiArICBAcmV0dXJuIFRoZSBv ZmZzZXQgdG8gbmV4dCBub2RlIG9mZnNldC4NCj4gDQo+ICsNCj4gDQo+ICsqKi8NCj4gDQo+ICtJ TlQzMg0KPiANCj4gK0VGSUFQSQ0KPiANCj4gK0ZkdE5leHRTdWJub2RlICgNCj4gDQo+ICsgIElO IENPTlNUIFZPSUQgICpGZHQsDQo+IA0KPiArICBJTiBJTlQzMiAgICAgICBPZmZzZXQNCj4gDQo+ ICsgICk7DQo+IA0KPiArDQo+IA0KPiArLyoqDQo+IA0KPiArICBSZXR1cm5zIGEgb2Zmc2V0IG9m IGZpcnN0IG5vZGUgd2hpY2ggaW5jbHVkZXMgdGhlIGdpdmVuIG5hbWUuDQo+IA0KPiArDQo+IA0K PiArICBAcGFyYW1baW5dIEZkdCAgICAgICAgICAgICBUaGUgcG9pbnRlciB0byBGRFQgYmxvYi4N Cj4gDQo+ICsgIEBwYXJhbVtpbl0gUGFyZW50T2Zmc2V0ICAgIFRoZSBvZmZzZXQgdG8gdGhlIG5v ZGUgd2hpY2ggc3RhcnQgZmluZCB1bmRlci4NCj4gDQo+ICsgIEBwYXJhbVtpbl0gTmFtZSAgICAg ICAgICAgIFRoZSBuYW1lIHRvIHNlYXJjaCB0aGUgbm9kZSB3aXRoIHRoZSBuYW1lLg0KPiANCj4g KyAgQHBhcmFtW2luXSBOYW1lTGVuZ3RoICAgICAgVGhlIGxlbmd0aCBvZiB0aGUgbmFtZSB0byBj aGVjayBvbmx5Lg0KPiANCj4gKw0KPiANCj4gKyAgQHJldHVybiBUaGUgb2Zmc2V0IHRvIG5vZGUg b2Zmc2V0IHdpdGggZ2l2ZW4gbm9kZSBuYW1lLg0KPiANCj4gKw0KPiANCj4gKyoqLw0KPiANCj4g K0lOVDMyDQo+IA0KPiArRUZJQVBJDQo+IA0KPiArRmR0U3Vibm9kZU9mZnNldE5hbWVMZW4gKA0K PiANCj4gKyAgSU4gQ09OU1QgVk9JRCAgICpGZHQsDQo+IA0KPiArICBJTiBJTlQzMiAgICAgICAg UGFyZW50T2Zmc2V0LA0KPiANCj4gKyAgSU4gQ09OU1QgQ0hBUjggICpOYW1lLA0KPiANCj4gKyAg SU4gSU5UMzIgICAgICAgIE5hbWVMZW5ndGgNCj4gDQo+ICsgICk7DQo+IA0KPiArDQo+IA0KPiAr LyoqDQo+IA0KPiArICBSZXR1cm5zIGEgb2Zmc2V0IG9mIGZpcnN0IG5vZGUgd2hpY2ggaW5jbHVk ZXMgdGhlIGdpdmVuIHByb3BlcnR5IG5hbWUgYW5kIHZhbHVlLg0KPiANCj4gKw0KPiANCj4gKyAg QHBhcmFtW2luXSBGZHQgICAgICAgICAgICAgVGhlIHBvaW50ZXIgdG8gRkRUIGJsb2IuDQo+IA0K PiArICBAcGFyYW1baW5dIFN0YXJ0T2Zmc2V0ICAgICBUaGUgb2Zmc2V0IHRvIHRoZSBzdGFydGlu ZyBub2RlIHRvIGZpbmQuDQo+IA0KPiArICBAcGFyYW1baW5dIFByb3BlcnR5TmFtZSAgICBUaGUg cHJvcGVydHkgbmFtZSB0byBzZWFyY2ggdGhlIG5vZGUgaW5jbHVkaW5nIHRoZSBuYW1lZCBwcm9w ZXJ0eS4NCj4gDQo+ICsgIEBwYXJhbVtpbl0gUHJvcGVydHlWYWx1ZSAgIFRoZSBwcm9wZXJ0eSB2 YWx1ZSB0byBjaGVjayB0aGUgc2FtZSBwcm9wZXJ0eSB2YWx1ZS4NCj4gDQo+ICsgIEBwYXJhbVtp bl0gUHJvcGVydHlMZW5ndGggIFRoZSBsZW5ndGggb2YgdGhlIHZhbHVlIGluIFByb3BlcnRWYWx1 ZS4NCj4gDQo+ICsNCj4gDQo+ICsgIEByZXR1cm4gVGhlIG9mZnNldCB0byBub2RlIG9mZnNldCB3 aXRoIGdpdmVuIHByb3BlcnR5Lg0KPiANCj4gKw0KPiANCj4gKyoqLw0KPiANCj4gK0lOVDMyDQo+ IA0KPiArRUZJQVBJDQo+IA0KPiArRmR0Tm9kZU9mZnNldEJ5UHJvcFZhbHVlICgNCj4gDQo+ICsg IElOIENPTlNUIFZPSUQgICAqRmR0LA0KPiANCj4gKyAgSU4gSU5UMzIgICAgICAgIFN0YXJ0T2Zm c2V0LA0KPiANCj4gKyAgSU4gQ09OU1QgQ0hBUjggICpQcm9wZXJ0eU5hbWUsDQo+IA0KPiArICBJ TiBDT05TVCBWT0lEICAgKlByb3BlcnR5VmFsdWUsDQo+IA0KPiArICBJTiBJTlQzMiAgICAgICAg UHJvcGVydHlMZW5ndGgNCj4gDQo+ICsgICk7DQo+IA0KPiArDQo+IA0KPiArLyoqDQo+IA0KPiAr ICBSZXR1cm5zIGEgcHJvcGVydHkgd2l0aCB0aGUgZ2l2ZW4gbmFtZSBmcm9tIHRoZSBnaXZlbiBu b2RlLg0KPiANCj4gKw0KPiANCj4gKyAgQHBhcmFtW2luXSBGZHQgICAgICAgICAgICBUaGUgcG9p bnRlciB0byBGRFQgYmxvYi4NCj4gDQo+ICsgIEBwYXJhbVtpbl0gTm9kZU9mZnNldCAgICAgVGhl IG9mZnNldCB0byB0aGUgZ2l2ZW4gbm9kZS4NCj4gDQo+ICsgIEBwYXJhbVtpbl0gTmFtZSAgICAg ICAgICAgVGhlIG5hbWUgdG8gdGhlIHByb3BlcnR5IHdoaWNoIG5lZWQgYmUgc2VhcmNoZWQNCj4g DQo+ICsgIEBwYXJhbVtpbl0gTGVuZ3RoICAgICAgICAgVGhlIGxlbmd0aCB0byB0aGUgc2l6ZSBv ZiB0aGUgcHJvcGVydHkgZm91bmQuDQo+IA0KPiArDQo+IA0KPiArICBAcmV0dXJuIFRoZSBwcm9w ZXJ0eSB0byB0aGUgc3RydWN0dXJlIG9mIHRoZSBmb3VuZCBwcm9wZXJ0eS4NCj4gDQo+ICsNCj4g DQo+ICsqKi8NCj4gDQo+ICtDT05TVCBGRFRfUFJPUEVSVFkgKg0KPiANCj4gK0VGSUFQSQ0KPiAN Cj4gK0ZkdEdldFByb3BlcnR5ICgNCj4gDQo+ICsgIElOIENPTlNUIFZPSUQgICAqRmR0LA0KPiAN Cj4gKyAgSU4gSU5UMzIgICAgICAgIE5vZGVPZmZzZXQsDQo+IA0KPiArICBJTiBDT05TVCBDSEFS OCAgKk5hbWUsDQo+IA0KPiArICBJTiBJTlQzMiAgICAgICAgKkxlbmd0aA0KPiANCj4gKyAgKTsN Cj4gDQo+ICsNCj4gDQo+ICsvKioNCj4gDQo+ICsgIFJldHVybnMgYSBvZmZzZXQgb2YgZmlyc3Qg cHJvcGVydHkgaW4gdGhlIGdpdmVuIG5vZGUuDQo+IA0KPiArDQo+IA0KPiArICBAcGFyYW1baW5d IEZkdCAgICAgICAgICAgIFRoZSBwb2ludGVyIHRvIEZEVCBibG9iLg0KPiANCj4gKyAgQHBhcmFt W2luXSBPZmZzZXQgICAgICAgICBUaGUgb2Zmc2V0IHRvIHRoZSBub2RlIHdoaWNoIG5lZWQgYmUg c2VhcmNoZWQuDQo+IA0KPiArDQo+IA0KPiArICBAcmV0dXJuIFRoZSBvZmZzZXQgdG8gZmlyc3Qg cHJvcGVydHkgb2Zmc2V0IGluIHRoZSBnaXZlbiBub2RlLg0KPiANCj4gKw0KPiANCj4gKyoqLw0K PiANCj4gK0lOVDMyDQo+IA0KPiArRUZJQVBJDQo+IA0KPiArRmR0Rmlyc3RQcm9wZXJ0eU9mZnNl dCAoDQo+IA0KPiArICBJTiBDT05TVCBWT0lEICAqRmR0LA0KPiANCj4gKyAgSU4gSU5UMzIgICAg ICAgTm9kZU9mZnNldA0KPiANCj4gKyAgKTsNCj4gDQo+ICsNCj4gDQo+ICsvKioNCj4gDQo+ICsg IFJldHVybnMgYSBvZmZzZXQgb2YgbmV4dCBwcm9wZXJ0eSBmcm9tIHRoZSBnaXZlbiBwcm9wZXJ0 eS4NCj4gDQo+ICsNCj4gDQo+ICsgIEBwYXJhbVtpbl0gRmR0ICAgICAgICAgICAgVGhlIHBvaW50 ZXIgdG8gRkRUIGJsb2IuDQo+IA0KPiArICBAcGFyYW1baW5dIE9mZnNldCAgICAgICAgIFRoZSBv ZmZzZXQgdG8gcHJldmlvdXMgcHJvcGVydHkuDQo+IA0KPiArDQo+IA0KPiArICBAcmV0dXJuIFRo ZSBvZmZzZXQgdG8gbmV4dCBwcm9wZXJ0eSBvZmZzZXQuDQo+IA0KPiArDQo+IA0KPiArKiovDQo+ IA0KPiArSU5UMzINCj4gDQo+ICtFRklBUEkNCj4gDQo+ICtGZHROZXh0UHJvcGVydHlPZmZzZXQg KA0KPiANCj4gKyAgSU4gQ09OU1QgVk9JRCAgKkZkdCwNCj4gDQo+ICsgIElOIElOVDMyICAgICAg IE9mZnNldA0KPiANCj4gKyAgKTsNCj4gDQo+ICsNCj4gDQo+ICsvKioNCj4gDQo+ICsgIFJldHVy bnMgYSBwcm9wZXJ0eSBmcm9tIHRoZSBnaXZlbiBvZmZzZXQgb2YgdGhlIHByb3BlcnR5Lg0KPiAN Cj4gKw0KPiANCj4gKyAgQHBhcmFtW2luXSBGZHQgICAgICAgICAgICBUaGUgcG9pbnRlciB0byBG RFQgYmxvYi4NCj4gDQo+ICsgIEBwYXJhbVtpbl0gT2Zmc2V0ICAgICAgICAgVGhlIG9mZnNldCB0 byB0aGUgZ2l2ZW4gb2Zmc2V0IG9mIHRoZSBwcm9wZXJ0eS4NCj4gDQo+ICsgIEBwYXJhbVtpbl0g TGVuZ3RoICAgICAgICAgVGhlIGxlbmd0aCB0byB0aGUgc2l6ZSBvZiB0aGUgcHJvcGVydHkgZm91 bmQuDQo+IA0KPiArDQo+IA0KPiArICBAcmV0dXJuIFRoZSBwcm9wZXJ0eSB0byB0aGUgc3RydWN0 dXJlIG9mIHRoZSBnaXZlbiBwcm9wZXJ0eSBvZmZzZXQuDQo+IA0KPiArDQo+IA0KPiArKiovDQo+ IA0KPiArQ09OU1QgRkRUX1BST1BFUlRZICoNCj4gDQo+ICtFRklBUEkNCj4gDQo+ICtGZHRHZXRQ cm9wZXJ0eUJ5T2Zmc2V0ICgNCj4gDQo+ICsgIElOIENPTlNUIFZPSUQgICpGZHQsDQo+IA0KPiAr ICBJTiBJTlQzMiAgICAgICBPZmZzZXQsDQo+IA0KPiArICBJTiBJTlQzMiAgICAgICAqTGVuZ3Ro DQo+IA0KPiArICApOw0KPiANCj4gKw0KPiANCj4gKy8qKg0KPiANCj4gKyAgUmV0dXJucyBhIHN0 cmluZyBieSB0aGUgZ2l2ZW4gc3RyaW5nIG9mZnNldC4NCj4gDQo+ICsNCj4gDQo+ICsgIEBwYXJh bVtpbl0gRmR0ICAgICAgICAgICAgVGhlIHBvaW50ZXIgdG8gRkRUIGJsb2IuDQo+IA0KPiArICBA cGFyYW1baW5dIFN0ck9mZnNldCAgICAgIFRoZSBvZmZzZXQgdG8gdGhlIGxvY2F0aW9uIGluIHRo ZSBzdHJpbmdzIGJsb2NrIG9mIEZEVC4NCj4gDQo+ICsgIEBwYXJhbVtpbl0gTGVuZ3RoICAgICAg ICAgVGhlIGxlbmd0aCB0byB0aGUgc2l6ZSBvZiBzdHJpbmcgd2hpY2ggbmVlZCBiZSByZXRyaWV2 ZWQuDQo+IA0KPiArDQo+IA0KPiArICBAcmV0dXJuIFRoZSBzdHJpbmcgdG8gdGhlIGdpdmVuIHN0 cmluZyBvZmZzZXQuDQo+IA0KPiArDQo+IA0KPiArKiovDQo+IA0KPiArQ09OU1QgQ0hBUjggKg0K PiANCj4gK0VGSUFQSQ0KPiANCj4gK0ZkdEdldFN0cmluZyAoDQo+IA0KPiArICBJTiBDT05TVCBW T0lEICAqRmR0LA0KPiANCj4gKyAgSU4gSU5UMzIgICAgICAgU3RyT2Zmc2V0LA0KPiANCj4gKyAg SU4gSU5UMzIgICAgICAgKkxlbmd0aCAgICAgICAgT1BUSU9OQUwNCj4gDQo+ICsgICk7DQo+IA0K PiArDQo+IA0KPiArLyoqDQo+IA0KPiArICBBZGQgYSBuZXcgbm9kZSB0byB0aGUgRkRULg0KPiAN Cj4gKw0KPiANCj4gKyAgQHBhcmFtW2luXSBGZHQgICAgICAgICAgICBUaGUgcG9pbnRlciB0byBG RFQgYmxvYi4NCj4gDQo+ICsgIEBwYXJhbVtpbl0gUGFyZW50T2Zmc2V0ICAgVGhlIG9mZnNldCB0 byB0aGUgbm9kZSBvZmZzZXQgd2hpY2ggd2FudCB0byBhZGQgaW4uDQo+IA0KPiArICBAcGFyYW1b aW5dIE5hbWUgICAgICAgICAgIFRoZSBuYW1lIHRvIG5hbWUgdGhlIG5vZGUuDQo+IA0KPiArDQo+ IA0KPiArICBAcmV0dXJuICBUaGUgb2Zmc2V0IHRvIHRoZSBuZXcgbm9kZS4NCj4gDQo+ICsNCj4g DQo+ICsqKi8NCj4gDQo+ICtJTlQzMg0KPiANCj4gK0VGSUFQSQ0KPiANCj4gK0ZkdEFkZFN1Ym5v ZGUgKA0KPiANCj4gKyAgSU4gVk9JRCAgICAgICAgICpGZHQsDQo+IA0KPiArICBJTiBJTlQzMiAg ICAgICAgUGFyZW50T2Zmc2V0LA0KPiANCj4gKyAgSU4gQ09OU1QgQ0hBUjggICpOYW1lDQo+IA0K PiArICApOw0KPiANCj4gKw0KPiANCj4gKy8qKg0KPiANCj4gKyAgQWRkIG9yIG1vZGlmeSBhIHBy b3BlcnR5IGluIHRoZSBnaXZlbiBub2RlLg0KPiANCj4gKw0KPiANCj4gKyAgQHBhcmFtW2luXSBG ZHQgICAgICAgICAgICBUaGUgcG9pbnRlciB0byBGRFQgYmxvYi4NCj4gDQo+ICsgIEBwYXJhbVtp bl0gTm9kZU9mZnNldCAgICAgVGhlIG9mZnNldCB0byB0aGUgbm9kZSBvZmZzZXQgd2hpY2ggd2Fu dCB0byBhZGQgaW4uDQo+IA0KPiArICBAcGFyYW1baW5dIE5hbWUgICAgICAgICAgIFRoZSBuYW1l IHRvIG5hbWUgdGhlIHByb3BlcnR5Lg0KPiANCj4gKyAgQHBhcmFtW2luXSBWYWx1ZSAgICAgICAg ICBUaGUgdmFsdWUgdG8gdGhlIHByb3BlcnR5IHZhbHVlLg0KPiANCj4gKyAgQHBhcmFtW2luXSBM ZW5ndGggICAgICAgICBUaGUgbGVuZ3RoIHRvIHRoZSBzaXplIG9mIHRoZSBwcm9wZXJ0eS4NCj4g DQo+ICsNCj4gDQo+ICsgIEByZXR1cm4gIFplcm8gZm9yIHN1Y2Nlc3NmdWxseSwgb3RoZXJ3aXNl IGZhaWxlZC4NCj4gDQo+ICsNCj4gDQo+ICsqKi8NCj4gDQo+ICtJTlQzMg0KPiANCj4gK0VGSUFQ SQ0KPiANCj4gK0ZkdFNldFByb3AgKA0KPiANCj4gKyAgSU4gVk9JRCAgICAgICAgICpGZHQsDQo+ IA0KPiArICBJTiBJTlQzMiAgICAgICAgTm9kZU9mZnNldCwNCj4gDQo+ICsgIElOIENPTlNUIENI QVI4ICAqTmFtZSwNCj4gDQo+ICsgIElOIENPTlNUIFZPSUQgICAqVmFsdWUsDQo+IA0KPiArICBJ TiBVSU5UMzIgICAgICAgTGVuZ3RoDQo+IA0KPiArICApOw0KPiANCj4gKw0KPiANCj4gKyNlbmRp ZiAvKiBGRFRfTElCX0hfICovDQo+IA0KPiBkaWZmIC0tZ2l0IGEvTWRlUGtnL0xpYnJhcnkvQmFz ZUZkdExpYi9CYXNlRmR0TGliLmluZiBiL01kZVBrZy9MaWJyYXJ5L0Jhc2VGZHRMaWIvQmFzZUZk dExpYi5pbmYNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMC4uNzMw ZTU2OGZmNg0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL01kZVBrZy9MaWJyYXJ5L0Jhc2VGZHRM aWIvQmFzZUZkdExpYi5pbmYNCj4gQEAgLTAsMCArMSw2MiBAQA0KPiArIyMgQGZpbGUNCj4gDQo+ ICsjIEZsYXR0ZW5lZCBEZXZpY2UgVHJlZSBMaWJyYXJ5Lg0KPiANCj4gKyMNCj4gDQo+ICsjIENv cHlyaWdodCAoYykgMjAyMywgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQu PEJSPg0KPiANCj4gKyMNCj4gDQo+ICsjICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTIt Q2xhdXNlLVBhdGVudA0KPiANCj4gKyMNCj4gDQo+ICsjDQo+IA0KPiArIyMNCj4gDQo+ICsNCj4g DQo+ICtbRGVmaW5lc10NCj4gDQo+ICsgIElORl9WRVJTSU9OICAgICAgICAgICAgICAgICAgICA9 IDB4MDAwMTAwMUINCj4gDQo+ICsgIEJBU0VfTkFNRSAgICAgICAgICAgICAgICAgICAgICA9IEJh c2VGZHRMaWINCj4gDQo+ICsgIE1PRFVMRV9VTklfRklMRSAgICAgICAgICAgICAgICA9IEJhc2VG ZHRMaWIudW5pDQo+IA0KPiArICBGSUxFX0dVSUQgICAgICAgICAgICAgICAgICAgICAgPSBDNjRE Q0IwMS1CMDM3LTRGRjYtOUNGMy1FOENFQzIwNkRFMDQNCj4gDQo+ICsgIE1PRFVMRV9UWVBFICAg ICAgICAgICAgICAgICAgICA9IEJBU0UNCj4gDQo+ICsgIFZFUlNJT05fU1RSSU5HICAgICAgICAg ICAgICAgICA9IDEuMA0KPiANCj4gKyAgTElCUkFSWV9DTEFTUyAgICAgICAgICAgICAgICAgID0g RmR0TGliDQo+IA0KPiArDQo+IA0KPiArICBERUZJTkUgRkRUX0xJQl9QQVRIICAgICAgICAgICAg PSBsaWJmZHQvbGliZmR0DQo+IA0KPiArDQo+IA0KPiArIw0KPiANCj4gKyMgIFZBTElEX0FSQ0hJ VEVDVFVSRVMgICAgICAgICAgID0gSUEzMiBYNjQNCj4gDQo+ICsjDQo+IA0KPiArDQo+IA0KPiAr W1NvdXJjZXNdDQo+IA0KPiArICBGZHRMaWIuYw0KPiANCj4gKyAgTGliRmR0V3JhcHBlci5jDQo+ IA0KPiArICAjIGhlYWRlciBXcmFwcGVyIGZpbGVzDQo+IA0KPiArICBsaW1pdHMuaA0KPiANCj4g KyAgc3RkYm9vbC5oDQo+IA0KPiArICBzdGRkZWYuaA0KPiANCj4gKyAgc3RkaW50LmgNCj4gDQo+ ICsgIHN0ZGxpYi5oDQo+IA0KPiArICBzdHJpbmcuaA0KPiANCj4gKw0KPiANCj4gKyAgJChGRFRf TElCX1BBVEgpL2ZkdC5jDQo+IA0KPiArICAkKEZEVF9MSUJfUEFUSCkvZmR0LmgNCj4gDQo+ICsg ICQoRkRUX0xJQl9QQVRIKS9mZHRfYWRkcmVzc2VzLmMNCj4gDQo+ICsgICQoRkRUX0xJQl9QQVRI KS9mZHRfY2hlY2suYw0KPiANCj4gKyAgJChGRFRfTElCX1BBVEgpL2ZkdF9lbXB0eV90cmVlLmMN Cj4gDQo+ICsgICQoRkRUX0xJQl9QQVRIKS9mZHRfb3ZlcmxheS5jDQo+IA0KPiArICAkKEZEVF9M SUJfUEFUSCkvZmR0X3JvLmMNCj4gDQo+ICsgICQoRkRUX0xJQl9QQVRIKS9mZHRfcncuYw0KPiAN Cj4gKyAgJChGRFRfTElCX1BBVEgpL2ZkdF9zdHJlcnJvci5jDQo+IA0KPiArICAkKEZEVF9MSUJf UEFUSCkvZmR0X3N3LmMNCj4gDQo+ICsgICQoRkRUX0xJQl9QQVRIKS9mZHRfd2lwLmMNCj4gDQo+ ICsgICQoRkRUX0xJQl9QQVRIKS9saWJmZHQuaA0KPiANCj4gKyAgJChGRFRfTElCX1BBVEgpL2xp YmZkdF9lbnYuaA0KPiANCj4gKyAgJChGRFRfTElCX1BBVEgpL2xpYmZkdF9pbnRlcm5hbC5oDQo+ IA0KPiArDQo+IA0KPiArW1BhY2thZ2VzXQ0KPiANCj4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4g DQo+ICsNCj4gDQo+ICtbTGlicmFyeUNsYXNzZXNdDQo+IA0KPiArICBCYXNlTGliDQo+IA0KPiAr ICBCYXNlTWVtb3J5TGliDQo+IA0KPiArDQo+IA0KPiArW0J1aWxkT3B0aW9uc10NCj4gDQo+ICsg IE1TRlQ6Kl8qX0lBMzJfQ0NfRkxBR1MgPSAvd2Q0MTQ2IC93ZDQyNDUNCj4gDQo+ICsgIE1TRlQ6 Kl8qX1g2NF9DQ19GTEFHUyAgPSAvd2Q0MTQ2IC93ZDQyNDQgL3dkNDI0NSAvd2Q0MjY3DQo+IA0K PiArDQo+IA0KPiBkaWZmIC0tZ2l0IGEvTWRlUGtnL0xpYnJhcnkvQmFzZUZkdExpYi9CYXNlRmR0 TGliLnVuaSBiL01kZVBrZy9MaWJyYXJ5L0Jhc2VGZHRMaWIvQmFzZUZkdExpYi51bmkNCj4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMC4uM2Y3ZTQ1ZWE2Zg0KPiAtLS0g L2Rldi9udWxsDQo+ICsrKyBiL01kZVBrZy9MaWJyYXJ5L0Jhc2VGZHRMaWIvQmFzZUZkdExpYi51 bmkNCj4gQEAgLTAsMCArMSwxNCBAQA0KPiArLy8gLyoqIEBmaWxlDQo+IA0KPiArLy8gRmxhdHRl bmVkIERldmljZSBUcmVlIExpYnJhcnkuDQo+IA0KPiArLy8NCj4gDQo+ICsvLyBDb3B5cmlnaHQg KGMpIDIwMjMsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4g DQo+ICsvLw0KPiANCj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2Ut UGF0ZW50DQo+IA0KPiArLy8NCj4gDQo+ICsvLyAqKi8NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsjc3RyaW5nIFNUUl9NT0RVTEVfQUJTVFJBQ1QgICAgICAgICAgICAgI2xhbmd1YWdlIGVuLVVT ICJJbnN0YW5jZSBvZiBGRFQgTGlicmFyeSINCj4gDQo+ICsNCj4gDQo+ICsjc3RyaW5nIFNUUl9N T0RVTEVfREVTQ1JJUFRJT04gICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICJUaGlzIG1vZHVsZSBw cm92aWRlcyBGRFQgTGlicmFyeSBpbXBsZW1lbnRhdGlvbi4iDQo+IA0KPiArDQo+IA0KPiBkaWZm IC0tZ2l0IGEvTWRlUGtnL0xpYnJhcnkvQmFzZUZkdExpYi9GZHRMaWIuYyBiL01kZVBrZy9MaWJy YXJ5L0Jhc2VGZHRMaWIvRmR0TGliLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXgg MDAwMDAwMDAwMC4uMjAwYTQ5NmM3ZQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL01kZVBrZy9M aWJyYXJ5L0Jhc2VGZHRMaWIvRmR0TGliLmMNCj4gQEAgLTAsMCArMSwzMDEgQEANCj4gKy8qKiBA ZmlsZQ0KPiANCj4gKyAgRmxhdHRlbmVkIERldmljZSBUcmVlIExpYnJhcnkuDQo+IA0KPiArDQo+ IA0KPiArICBDb3B5cmlnaHQgKGMpIDIwMjMsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRz IHJlc2VydmVkLjxCUj4NCj4gDQo+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1D bGF1c2UtUGF0ZW50DQo+IA0KPiArDQo+IA0KPiArKiovDQo+IA0KPiArDQo+IA0KPiArI2luY2x1 ZGUgPGxpYmZkdC9saWJmZHQvbGliZmR0Lmg+DQo+IA0KPiArDQo+IA0KPiArLyoqDQo+IA0KPiAr ICBWZXJpZnkgdGhlIGhlYWRlciBvZiB0aGUgRmxhdHRlbmVkIERldmljZSBUcmVlDQo+IA0KPiAr DQo+IA0KPiArICBAcGFyYW1baW5dIEZkdCAgICAgICAgICAgIFRoZSBwb2ludGVyIHRvIEZEVCBi bG9iLg0KPiANCj4gKw0KPiANCj4gKyAgQHJldHVybiBaZXJvIGZvciBzdWNjZXNzZnVsbHksIG90 aGVyd2lzZSBmYWlsZWQuDQo+IA0KPiArDQo+IA0KPiArKiovDQo+IA0KPiArSU5UMzINCj4gDQo+ ICtFRklBUEkNCj4gDQo+ICtGZHRDaGVja0hlYWRlciAoDQo+IA0KPiArICBJTiBDT05TVCBWT0lE ICAqRmR0DQo+IA0KPiArICApDQo+IA0KPiArew0KPiANCj4gKyAgcmV0dXJuIGZkdF9jaGVja19o ZWFkZXIoRmR0KTsNCj4gDQo+ICt9DQo+IA0KPiArDQo+IA0KPiArLyoqDQo+IA0KPiArICBDcmVh dGUgYSBlbXB0eSBGbGF0dGVuZWQgRGV2aWNlIFRyZWUuDQo+IA0KPiArDQo+IA0KPiArICBAcGFy YW1baW5dIEJ1ZmZlciAgICAgICAgIFRoZSBwb2ludGVyIHRvIGFsbG9jYXRlIGEgcG9vbCBmb3Ig RkRUIGJsb2IuDQo+IA0KPiArICBAcGFyYW1baW5dIEJ1ZmZlclNpemUgICAgIFRoZSBCdWZmZXJT aXplIHRvIHRoZSBwb29sIHNpemUuDQo+IA0KPiArDQo+IA0KPiArICBAcmV0dXJuIFplcm8gZm9y IHN1Y2Nlc3NmdWxseSwgb3RoZXJ3aXNlIGZhaWxlZC4NCj4gDQo+ICsNCj4gDQo+ICsqKi8NCj4g DQo+ICtJTlQzMg0KPiANCj4gK0VGSUFQSQ0KPiANCj4gK0ZkdENyZWF0ZUVtcHR5VHJlZSAoDQo+ IA0KPiArICBJTiBWT0lEICAgICpCdWZmZXIsDQo+IA0KPiArICBJTiBVSU5UMzIgIEJ1ZmZlclNp emUNCj4gDQo+ICsgICkNCj4gDQo+ICt7DQo+IA0KPiArICByZXR1cm4gZmR0X2NyZWF0ZV9lbXB0 eV90cmVlIChCdWZmZXIsIChpbnQpQnVmZmVyU2l6ZSk7DQo+IA0KPiArfQ0KPiANCj4gKw0KPiAN Cj4gKy8qKg0KPiANCj4gKyAgUmV0dXJucyBhIG9mZnNldCBvZiBuZXh0IG5vZGUgZnJvbSB0aGUg Z2l2ZW4gbm9kZS4NCj4gDQo+ICsNCj4gDQo+ICsgIEBwYXJhbVtpbl0gRmR0ICAgICAgICAgICAg VGhlIHBvaW50ZXIgdG8gRkRUIGJsb2IuDQo+IA0KPiArICBAcGFyYW1baW5dIE9mZnNldCAgICAg ICAgIFRoZSBvZmZzZXQgdG8gcHJldmlvdXMgbm9kZS4NCj4gDQo+ICsgIEBwYXJhbVtpbl0gRGVw dGggICAgICAgICAgVGhlIGRlcHRoIHRvIHRoZSBsZXZlbCBvZiB0cmVlIGhpZXJhcmNoeS4NCj4g DQo+ICsNCj4gDQo+ICsgIEByZXR1cm4gVGhlIG9mZnNldCB0byBuZXh0IG5vZGUgb2Zmc2V0Lg0K PiANCj4gKw0KPiANCj4gKyoqLw0KPiANCj4gK0lOVDMyDQo+IA0KPiArRUZJQVBJDQo+IA0KPiAr RmR0TmV4dE5vZGUgKA0KPiANCj4gKyAgSU4gQ09OU1QgVk9JRCAgKkZkdCwNCj4gDQo+ICsgIElO IElOVDMyICAgICAgIE9mZnNldCwNCj4gDQo+ICsgIElOIElOVDMyICAgICAgICpEZXB0aA0KPiAN Cj4gKyAgKQ0KPiANCj4gK3sNCj4gDQo+ICsgIHJldHVybiBmZHRfbmV4dF9ub2RlIChGZHQsIE9m ZnNldCwgRGVwdGgpOw0KPiANCj4gK30NCj4gDQo+ICsNCj4gDQo+ICsvKioNCj4gDQo+ICsgIFJl dHVybnMgYSBvZmZzZXQgb2YgZmlyc3Qgbm9kZSB1bmRlciB0aGUgZ2l2ZW4gbm9kZS4NCj4gDQo+ ICsNCj4gDQo+ICsgIEBwYXJhbVtpbl0gRmR0ICAgICAgICAgICAgVGhlIHBvaW50ZXIgdG8gRkRU IGJsb2IuDQo+IA0KPiArICBAcGFyYW1baW5dIE9mZnNldCAgICAgICAgIFRoZSBvZmZzZXQgdG8g cHJldmlvdXMgbm9kZS4NCj4gDQo+ICsNCj4gDQo+ICsgIEByZXR1cm4gVGhlIG9mZnNldCB0byBu ZXh0IG5vZGUgb2Zmc2V0Lg0KPiANCj4gKw0KPiANCj4gKyoqLw0KPiANCj4gK0lOVDMyDQo+IA0K PiArRUZJQVBJDQo+IA0KPiArRmR0Rmlyc3RTdWJub2RlICgNCj4gDQo+ICsgIElOIENPTlNUIFZP SUQgICpGZHQsDQo+IA0KPiArICBJTiBJTlQzMiAgICAgICBPZmZzZXQNCj4gDQo+ICsgICkNCj4g DQo+ICt7DQo+IA0KPiArICByZXR1cm4gZmR0X2ZpcnN0X3N1Ym5vZGUgKEZkdCwgT2Zmc2V0KTsN Cj4gDQo+ICt9DQo+IA0KPiArDQo+IA0KPiArLyoqDQo+IA0KPiArICBSZXR1cm5zIGEgb2Zmc2V0 IG9mIG5leHQgbm9kZSBmcm9tIHRoZSBnaXZlbiBub2RlLg0KPiANCj4gKw0KPiANCj4gKyAgQHBh cmFtW2luXSBGZHQgICAgICAgICAgICBUaGUgcG9pbnRlciB0byBGRFQgYmxvYi4NCj4gDQo+ICsg IEBwYXJhbVtpbl0gT2Zmc2V0ICAgICAgICAgVGhlIG9mZnNldCB0byBwcmV2aW91cyBub2RlLg0K PiANCj4gKw0KPiANCj4gKyAgQHJldHVybiBUaGUgb2Zmc2V0IHRvIG5leHQgbm9kZSBvZmZzZXQu DQo+IA0KPiArDQo+IA0KPiArKiovDQo+IA0KPiArSU5UMzINCj4gDQo+ICtFRklBUEkNCj4gDQo+ ICtGZHROZXh0U3Vibm9kZSAoDQo+IA0KPiArICBJTiBDT05TVCBWT0lEICAqRmR0LA0KPiANCj4g KyAgSU4gSU5UMzIgICAgICAgT2Zmc2V0DQo+IA0KPiArICApDQo+IA0KPiArew0KPiANCj4gKyAg cmV0dXJuIGZkdF9uZXh0X3N1Ym5vZGUgKEZkdCwgT2Zmc2V0KTsNCj4gDQo+ICt9DQo+IA0KPiAr DQo+IA0KPiArLyoqDQo+IA0KPiArICBSZXR1cm5zIGEgb2Zmc2V0IG9mIGZpcnN0IG5vZGUgd2hp Y2ggaW5jbHVkZXMgdGhlIGdpdmVuIG5hbWUuDQo+IA0KPiArDQo+IA0KPiArICBAcGFyYW1baW5d IEZkdCAgICAgICAgICAgICBUaGUgcG9pbnRlciB0byBGRFQgYmxvYi4NCj4gDQo+ICsgIEBwYXJh bVtpbl0gUGFyZW50T2Zmc2V0ICAgIFRoZSBvZmZzZXQgdG8gdGhlIG5vZGUgd2hpY2ggc3RhcnQg ZmluZCB1bmRlci4NCj4gDQo+ICsgIEBwYXJhbVtpbl0gTmFtZSAgICAgICAgICAgIFRoZSBuYW1l IHRvIHNlYXJjaCB0aGUgbm9kZSB3aXRoIHRoZSBuYW1lLg0KPiANCj4gKyAgQHBhcmFtW2luXSBO YW1lTGVuZ3RoICAgICAgVGhlIGxlbmd0aCBvZiB0aGUgbmFtZSB0byBjaGVjayBvbmx5Lg0KPiAN Cj4gKw0KPiANCj4gKyAgQHJldHVybiBUaGUgb2Zmc2V0IHRvIG5vZGUgb2Zmc2V0IHdpdGggZ2l2 ZW4gbm9kZSBuYW1lLg0KPiANCj4gKw0KPiANCj4gKyoqLw0KPiANCj4gK0lOVDMyDQo+IA0KPiAr RUZJQVBJDQo+IA0KPiArRmR0U3Vibm9kZU9mZnNldE5hbWVMZW4gKA0KPiANCj4gKyAgSU4gQ09O U1QgVk9JRCAgICpGZHQsDQo+IA0KPiArICBJTiBJTlQzMiAgICAgICAgUGFyZW50T2Zmc2V0LA0K PiANCj4gKyAgSU4gQ09OU1QgQ0hBUjggICpOYW1lLA0KPiANCj4gKyAgSU4gSU5UMzIgICAgICAg IE5hbWVMZW5ndGgNCj4gDQo+ICsgICkNCj4gDQo+ICt7DQo+IA0KPiArICByZXR1cm4gZmR0X3N1 Ym5vZGVfb2Zmc2V0X25hbWVsZW4gKEZkdCwgUGFyZW50T2Zmc2V0LCBOYW1lLCBOYW1lTGVuZ3Ro KTsNCj4gDQo+ICt9DQo+IA0KPiArDQo+IA0KPiArLyoqDQo+IA0KPiArICBSZXR1cm5zIGEgb2Zm c2V0IG9mIGZpcnN0IG5vZGUgd2hpY2ggaW5jbHVkZXMgdGhlIGdpdmVuIHByb3BlcnR5IG5hbWUg YW5kIHZhbHVlLg0KPiANCj4gKw0KPiANCj4gKyAgQHBhcmFtW2luXSBGZHQgICAgICAgICAgICAg VGhlIHBvaW50ZXIgdG8gRkRUIGJsb2IuDQo+IA0KPiArICBAcGFyYW1baW5dIFN0YXJ0T2Zmc2V0 ICAgICBUaGUgb2Zmc2V0IHRvIHRoZSBzdGFydGluZyBub2RlIHRvIGZpbmQuDQo+IA0KPiArICBA cGFyYW1baW5dIFByb3BlcnR5TmFtZSAgICBUaGUgcHJvcGVydHkgbmFtZSB0byBzZWFyY2ggdGhl IG5vZGUgaW5jbHVkaW5nIHRoZSBuYW1lZCBwcm9wZXJ0eS4NCj4gDQo+ICsgIEBwYXJhbVtpbl0g UHJvcGVydHlWYWx1ZSAgIFRoZSBwcm9wZXJ0eSB2YWx1ZSB0byBjaGVjayB0aGUgc2FtZSBwcm9w ZXJ0eSB2YWx1ZS4NCj4gDQo+ICsgIEBwYXJhbVtpbl0gUHJvcGVydHlMZW5ndGggIFRoZSBsZW5n dGggb2YgdGhlIHZhbHVlIGluIFByb3BlcnRWYWx1ZS4NCj4gDQo+ICsNCj4gDQo+ICsgIEByZXR1 cm4gVGhlIG9mZnNldCB0byBub2RlIG9mZnNldCB3aXRoIGdpdmVuIHByb3BlcnR5Lg0KPiANCj4g Kw0KPiANCj4gKyoqLw0KPiANCj4gK0lOVDMyDQo+IA0KPiArRUZJQVBJDQo+IA0KPiArRmR0Tm9k ZU9mZnNldEJ5UHJvcFZhbHVlICgNCj4gDQo+ICsgIElOIENPTlNUIFZPSUQgICAqRmR0LA0KPiAN Cj4gKyAgSU4gSU5UMzIgICAgICAgIFN0YXJ0T2Zmc2V0LA0KPiANCj4gKyAgSU4gQ09OU1QgQ0hB UjggICpQcm9wZXJ0eU5hbWUsDQo+IA0KPiArICBJTiBDT05TVCBWT0lEICAgKlByb3BlcnR5VmFs dWUsDQo+IA0KPiArICBJTiBJTlQzMiAgICAgICAgUHJvcGVydHlMZW5ndGgNCj4gDQo+ICsgICkN Cj4gDQo+ICt7DQo+IA0KPiArICByZXR1cm4gZmR0X25vZGVfb2Zmc2V0X2J5X3Byb3BfdmFsdWUg KEZkdCwgU3RhcnRPZmZzZXQsIFByb3BlcnR5TmFtZSwgUHJvcGVydHlWYWx1ZSwgUHJvcGVydHlM ZW5ndGgpOw0KPiANCj4gK30NCj4gDQo+ICsNCj4gDQo+ICsvKioNCj4gDQo+ICsgIFJldHVybnMg YSBwcm9wZXJ0eSB3aXRoIHRoZSBnaXZlbiBuYW1lIGZyb20gdGhlIGdpdmVuIG5vZGUuDQo+IA0K PiArDQo+IA0KPiArICBAcGFyYW1baW5dIEZkdCAgICAgICAgICAgIFRoZSBwb2ludGVyIHRvIEZE VCBibG9iLg0KPiANCj4gKyAgQHBhcmFtW2luXSBOb2RlT2Zmc2V0ICAgICBUaGUgb2Zmc2V0IHRv IHRoZSBnaXZlbiBub2RlLg0KPiANCj4gKyAgQHBhcmFtW2luXSBOYW1lICAgICAgICAgICBUaGUg bmFtZSB0byB0aGUgcHJvcGVydHkgd2hpY2ggbmVlZCBiZSBzZWFyY2hlZA0KPiANCj4gKyAgQHBh cmFtW2luXSBMZW5ndGggICAgICAgICBUaGUgbGVuZ3RoIHRvIHRoZSBzaXplIG9mIHRoZSBwcm9w ZXJ0eSBmb3VuZC4NCj4gDQo+ICsNCj4gDQo+ICsgIEByZXR1cm4gVGhlIHByb3BlcnR5IHRvIHRo ZSBzdHJ1Y3R1cmUgb2YgdGhlIGZvdW5kIHByb3BlcnR5Lg0KPiANCj4gKw0KPiANCj4gKyoqLw0K PiANCj4gK0NPTlNUIHN0cnVjdCBmZHRfcHJvcGVydHkgKg0KPiANCj4gK0VGSUFQSQ0KPiANCj4g K0ZkdEdldFByb3BlcnR5ICgNCj4gDQo+ICsgIElOIENPTlNUIFZPSUQgICAqRmR0LA0KPiANCj4g KyAgSU4gSU5UMzIgICAgICAgIE5vZGVPZmZzZXQsDQo+IA0KPiArICBJTiBDT05TVCBDSEFSOCAg Kk5hbWUsDQo+IA0KPiArICBJTiBJTlQzMiAgICAgICAgKkxlbmd0aA0KPiANCj4gKyAgKQ0KPiAN Cj4gK3sNCj4gDQo+ICsgIHJldHVybiBmZHRfZ2V0X3Byb3BlcnR5IChGZHQsIE5vZGVPZmZzZXQs IE5hbWUsIExlbmd0aCk7DQo+IA0KPiArfQ0KPiANCj4gKw0KPiANCj4gKy8qKg0KPiANCj4gKyAg UmV0dXJucyBhIG9mZnNldCBvZiBmaXJzdCBwcm9wZXJ0eSBpbiB0aGUgZ2l2ZW4gbm9kZS4NCj4g DQo+ICsNCj4gDQo+ICsgIEBwYXJhbVtpbl0gRmR0ICAgICAgICAgICAgVGhlIHBvaW50ZXIgdG8g RkRUIGJsb2IuDQo+IA0KPiArICBAcGFyYW1baW5dIE5vZGVPZmZzZXQgICAgIFRoZSBvZmZzZXQg dG8gdGhlIG5vZGUgd2hpY2ggbmVlZCBiZSBzZWFyY2hlZC4NCj4gDQo+ICsNCj4gDQo+ICsgIEBy ZXR1cm4gVGhlIG9mZnNldCB0byBmaXJzdCBwcm9wZXJ0eSBvZmZzZXQgaW4gdGhlIGdpdmVuIG5v ZGUuDQo+IA0KPiArDQo+IA0KPiArKiovDQo+IA0KPiArSU5UMzINCj4gDQo+ICtFRklBUEkNCj4g DQo+ICtGZHRGaXJzdFByb3BlcnR5T2Zmc2V0ICgNCj4gDQo+ICsgIElOIENPTlNUIFZPSUQgICpG ZHQsDQo+IA0KPiArICBJTiBJTlQzMiAgICAgICBOb2RlT2Zmc2V0DQo+IA0KPiArICApDQo+IA0K PiArew0KPiANCj4gKyAgcmV0dXJuIGZkdF9maXJzdF9wcm9wZXJ0eV9vZmZzZXQgKEZkdCwgTm9k ZU9mZnNldCk7DQo+IA0KPiArfQ0KPiANCj4gKw0KPiANCj4gKy8qKg0KPiANCj4gKyAgUmV0dXJu cyBhIG9mZnNldCBvZiBuZXh0IHByb3BlcnR5IGZyb20gdGhlIGdpdmVuIHByb3BlcnR5Lg0KPiAN Cj4gKw0KPiANCj4gKyAgQHBhcmFtW2luXSBGZHQgICAgICAgICAgICBUaGUgcG9pbnRlciB0byBG RFQgYmxvYi4NCj4gDQo+ICsgIEBwYXJhbVtpbl0gT2Zmc2V0ICAgICAgICAgVGhlIG9mZnNldCB0 byBwcmV2aW91cyBwcm9wZXJ0eS4NCj4gDQo+ICsNCj4gDQo+ICsgIEByZXR1cm4gVGhlIG9mZnNl dCB0byBuZXh0IHByb3BlcnR5IG9mZnNldC4NCj4gDQo+ICsNCj4gDQo+ICsqKi8NCj4gDQo+ICtJ TlQzMg0KPiANCj4gK0VGSUFQSQ0KPiANCj4gK0ZkdE5leHRQcm9wZXJ0eU9mZnNldCAoDQo+IA0K PiArICBJTiBDT05TVCBWT0lEICAqRmR0LA0KPiANCj4gKyAgSU4gSU5UMzIgICAgICAgT2Zmc2V0 DQo+IA0KPiArICApDQo+IA0KPiArew0KPiANCj4gKyAgcmV0dXJuIGZkdF9uZXh0X3Byb3BlcnR5 X29mZnNldCAoRmR0LCBPZmZzZXQpOw0KPiANCj4gK30NCj4gDQo+ICsNCj4gDQo+ICsvKioNCj4g DQo+ICsgIFJldHVybnMgYSBwcm9wZXJ0eSBmcm9tIHRoZSBnaXZlbiBvZmZzZXQgb2YgdGhlIHBy b3BlcnR5Lg0KPiANCj4gKw0KPiANCj4gKyAgQHBhcmFtW2luXSBGZHQgICAgICAgICAgICBUaGUg cG9pbnRlciB0byBGRFQgYmxvYi4NCj4gDQo+ICsgIEBwYXJhbVtpbl0gT2Zmc2V0ICAgICAgICAg VGhlIG9mZnNldCB0byB0aGUgZ2l2ZW4gb2Zmc2V0IG9mIHRoZSBwcm9wZXJ0eS4NCj4gDQo+ICsg IEBwYXJhbVtpbl0gTGVuZ3RoICAgICAgICAgVGhlIGxlbmd0aCB0byB0aGUgc2l6ZSBvZiB0aGUg cHJvcGVydHkgZm91bmQuDQo+IA0KPiArDQo+IA0KPiArICBAcmV0dXJuIFRoZSBwcm9wZXJ0eSB0 byB0aGUgc3RydWN0dXJlIG9mIHRoZSBnaXZlbiBwcm9wZXJ0eSBvZmZzZXQuDQo+IA0KPiArDQo+ IA0KPiArKiovDQo+IA0KPiArQ09OU1Qgc3RydWN0IGZkdF9wcm9wZXJ0eSAqDQo+IA0KPiArRUZJ QVBJDQo+IA0KPiArRmR0R2V0UHJvcGVydHlCeU9mZnNldCAoDQo+IA0KPiArICBJTiBDT05TVCBW T0lEICAqRmR0LA0KPiANCj4gKyAgSU4gSU5UMzIgICAgICAgT2Zmc2V0LA0KPiANCj4gKyAgSU4g SU5UMzIgICAgICAgKkxlbmd0aA0KPiANCj4gKyAgKQ0KPiANCj4gK3sNCj4gDQo+ICsgIHJldHVy biBmZHRfZ2V0X3Byb3BlcnR5X2J5X29mZnNldCAoRmR0LCBPZmZzZXQsIExlbmd0aCk7DQo+IA0K PiArfQ0KPiANCj4gKw0KPiANCj4gKy8qKg0KPiANCj4gKyAgUmV0dXJucyBhIHN0cmluZyBieSB0 aGUgZ2l2ZW4gc3RyaW5nIG9mZnNldC4NCj4gDQo+ICsNCj4gDQo+ICsgIEBwYXJhbVtpbl0gRmR0 ICAgICAgICAgICAgVGhlIHBvaW50ZXIgdG8gRkRUIGJsb2IuDQo+IA0KPiArICBAcGFyYW1baW5d IFN0ck9mZnNldCAgICAgIFRoZSBvZmZzZXQgdG8gdGhlIGxvY2F0aW9uIGluIHRoZSBzdHJpbmdz IGJsb2NrIG9mIEZEVC4NCj4gDQo+ICsgIEBwYXJhbVtpbl0gTGVuZ3RoICAgICAgICAgVGhlIGxl bmd0aCB0byB0aGUgc2l6ZSBvZiBzdHJpbmcgd2hpY2ggbmVlZCBiZSByZXRyaWV2ZWQuDQo+IA0K PiArDQo+IA0KPiArICBAcmV0dXJuIFRoZSBzdHJpbmcgdG8gdGhlIGdpdmVuIHN0cmluZyBvZmZz ZXQuDQo+IA0KPiArDQo+IA0KPiArKiovDQo+IA0KPiArQ09OU1QgQ0hBUjggKg0KPiANCj4gK0VG SUFQSQ0KPiANCj4gK0ZkdEdldFN0cmluZyAoDQo+IA0KPiArICBJTiBDT05TVCBWT0lEICAqRmR0 LA0KPiANCj4gKyAgSU4gSU5UMzIgICAgICAgU3RyT2Zmc2V0LA0KPiANCj4gKyAgSU4gSU5UMzIg ICAgICAgKkxlbmd0aCAgICAgICAgT1BUSU9OQUwNCj4gDQo+ICsgICkNCj4gDQo+ICt7DQo+IA0K PiArICByZXR1cm4gZmR0X2dldF9zdHJpbmcgKEZkdCwgU3RyT2Zmc2V0LCBMZW5ndGgpOw0KPiAN Cj4gK30NCj4gDQo+ICsNCj4gDQo+ICsvKioNCj4gDQo+ICsgIEFkZCBhIG5ldyBub2RlIHRvIHRo ZSBGRFQuDQo+IA0KPiArDQo+IA0KPiArICBAcGFyYW1baW5dIEZkdCAgICAgICAgICAgIFRoZSBw b2ludGVyIHRvIEZEVCBibG9iLg0KPiANCj4gKyAgQHBhcmFtW2luXSBQYXJlbnRPZmZzZXQgICBU aGUgb2Zmc2V0IHRvIHRoZSBub2RlIG9mZnNldCB3aGljaCB3YW50IHRvIGFkZCBpbi4NCj4gDQo+ ICsgIEBwYXJhbVtpbl0gTmFtZSAgICAgICAgICAgVGhlIG5hbWUgdG8gbmFtZSB0aGUgbm9kZS4N Cj4gDQo+ICsNCj4gDQo+ICsgIEByZXR1cm4gIFRoZSBvZmZzZXQgdG8gdGhlIG5ldyBub2RlLg0K PiANCj4gKw0KPiANCj4gKyoqLw0KPiANCj4gK0lOVDMyDQo+IA0KPiArRUZJQVBJDQo+IA0KPiAr RmR0QWRkU3Vibm9kZSAoDQo+IA0KPiArICBJTiBWT0lEICAgICAgICAgKkZkdCwNCj4gDQo+ICsg IElOIElOVDMyICAgICAgICBQYXJlbnRPZmZzZXQsDQo+IA0KPiArICBJTiBDT05TVCBDSEFSOCAg Kk5hbWUNCj4gDQo+ICsgICkNCj4gDQo+ICt7DQo+IA0KPiArICByZXR1cm4gZmR0X2FkZF9zdWJu b2RlIChGZHQsIFBhcmVudE9mZnNldCwgTmFtZSk7DQo+IA0KPiArfQ0KPiANCj4gKw0KPiANCj4g Ky8qKg0KPiANCj4gKyAgQWRkIG9yIG1vZGlmeSBhIHByb3BlcnR5IGluIHRoZSBnaXZlbiBub2Rl Lg0KPiANCj4gKw0KPiANCj4gKyAgQHBhcmFtW2luXSBGZHQgICAgICAgICAgICBUaGUgcG9pbnRl ciB0byBGRFQgYmxvYi4NCj4gDQo+ICsgIEBwYXJhbVtpbl0gTm9kZU9mZnNldCAgICAgVGhlIG9m ZnNldCB0byB0aGUgbm9kZSBvZmZzZXQgd2hpY2ggd2FudCB0byBhZGQgaW4uDQo+IA0KPiArICBA cGFyYW1baW5dIE5hbWUgICAgICAgICAgIFRoZSBuYW1lIHRvIG5hbWUgdGhlIHByb3BlcnR5Lg0K PiANCj4gKyAgQHBhcmFtW2luXSBWYWx1ZSAgICAgICAgICBUaGUgdmFsdWUgdG8gdGhlIHByb3Bl cnR5IHZhbHVlLg0KPiANCj4gKyAgQHBhcmFtW2luXSBMZW5ndGggICAgICAgICBUaGUgbGVuZ3Ro IHRvIHRoZSBzaXplIG9mIHRoZSBwcm9wZXJ0eS4NCj4gDQo+ICsNCj4gDQo+ICsgIEByZXR1cm4g IFplcm8gZm9yIHN1Y2Nlc3NmdWxseSwgb3RoZXJ3aXNlIGZhaWxlZC4NCj4gDQo+ICsNCj4gDQo+ ICsqKi8NCj4gDQo+ICtJTlQzMg0KPiANCj4gK0VGSUFQSQ0KPiANCj4gK0ZkdFNldFByb3AgKA0K PiANCj4gKyAgSU4gVk9JRCAgICAgICAgICpGZHQsDQo+IA0KPiArICBJTiBJTlQzMiAgICAgICAg Tm9kZU9mZnNldCwNCj4gDQo+ICsgIElOIENPTlNUIENIQVI4ICAqTmFtZSwNCj4gDQo+ICsgIElO IENPTlNUIFZPSUQgICAqVmFsdWUsDQo+IA0KPiArICBJTiBVSU5UMzIgICAgICAgTGVuZ3RoDQo+ IA0KPiArICApDQo+IA0KPiArew0KPiANCj4gKyAgcmV0dXJuIGZkdF9zZXRwcm9wIChGZHQsIE5v ZGVPZmZzZXQsIE5hbWUsIFZhbHVlLCAoaW50KUxlbmd0aCk7DQo+IA0KPiArfQ0KPiANCj4gZGlm ZiAtLWdpdCBhL01kZVBrZy9MaWJyYXJ5L0Jhc2VGZHRMaWIvTGliRmR0U3VwcG9ydC5oIGIvTWRl UGtnL0xpYnJhcnkvQmFzZUZkdExpYi9MaWJGZHRTdXBwb3J0LmgNCj4gbmV3IGZpbGUgbW9kZSAx MDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMC4uZTczOGY0ZGVkNA0KPiAtLS0gL2Rldi9udWxsDQo+ ICsrKyBiL01kZVBrZy9MaWJyYXJ5L0Jhc2VGZHRMaWIvTGliRmR0U3VwcG9ydC5oDQo+IEBAIC0w LDAgKzEsOTkgQEANCj4gKy8qKiBAZmlsZQ0KPiANCj4gKyAgUm9vdCBpbmNsdWRlIGZpbGUgb2Yg QyBydW50aW1lIGxpYnJhcnkgdG8gc3VwcG9ydCBidWlsZGluZyB0aGUgdGhpcmQtcGFydHkNCj4g DQo+ICsgIGxpYmZkdCBsaWJyYXJ5Lg0KPiANCj4gKw0KPiANCj4gKyAgQ29weXJpZ2h0IChjKSAy MDIzLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+IA0KPiAr ICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiANCj4gKw0K PiANCj4gKyoqLw0KPiANCj4gKw0KPiANCj4gKyNpZm5kZWYgRkRUX0xJQl9TVVBQT1JUX0hfDQo+ IA0KPiArI2RlZmluZSBGRFRfTElCX1NVUFBPUlRfSF8NCj4gDQo+ICsNCj4gDQo+ICsjaW5jbHVk ZSA8QmFzZS5oPg0KPiANCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VMaWIuaD4NCj4gDQo+ICsj aW5jbHVkZSA8TGlicmFyeS9CYXNlTWVtb3J5TGliLmg+DQo+IA0KPiArDQo+IA0KPiArdHlwZWRl ZiBVSU5UOCAgICB1aW50OF90Ow0KPiANCj4gK3R5cGVkZWYgVUlOVDE2ICAgdWludDE2X3Q7DQo+ IA0KPiArdHlwZWRlZiBJTlQzMiAgICBpbnQzMl90Ow0KPiANCj4gK3R5cGVkZWYgVUlOVDMyICAg dWludDMyX3Q7DQo+IA0KPiArdHlwZWRlZiBVSU5UNjQgICB1aW50NjRfdDsNCj4gDQo+ICt0eXBl ZGVmIFVJTlROICAgIHVpbnRwdHJfdDsNCj4gDQo+ICt0eXBlZGVmIFVJTlROICAgIHNpemVfdDsN Cj4gDQo+ICt0eXBlZGVmIEJPT0xFQU4gIGJvb2w7DQo+IA0KPiArDQo+IA0KPiArI2RlZmluZSB0 cnVlICAgKDEgPT0gMSkNCj4gDQo+ICsjZGVmaW5lIGZhbHNlICAoMSA9PSAwKQ0KPiANCj4gKw0K PiANCj4gKy8vDQo+IA0KPiArLy8gRGVmaW5pdGlvbnMgZm9yIGdsb2JhbCBjb25zdGFudHMgdXNl ZCBieSBsaWJmZHQgbGlicmFyeSByb3V0aW5lcw0KPiANCj4gKy8vDQo+IA0KPiArI2RlZmluZSBJ TlRfTUFYICAgICAgICAgIDB4N0ZGRkZGRkYgICAgICAvKiBNYXhpbXVtIChzaWduZWQpIGludCB2 YWx1ZSAqLw0KPiANCj4gKyNkZWZpbmUgSU5UMzJfTUFYICAgICAgICAweDdGRkZGRkZGICAgICAg LyogTWF4aW11bSAoc2lnbmVkKSBpbnQzMiB2YWx1ZSAqLw0KPiANCj4gKyNkZWZpbmUgVUlOVDMy X01BWCAgICAgICAweEZGRkZGRkZGICAgICAgLyogTWF4aW11bSB1bnNpZ25lZCBpbnQzMiB2YWx1 ZSAqLw0KPiANCj4gKw0KPiANCj4gKy8vDQo+IA0KPiArLy8gRnVuY3Rpb24gcHJvdG90eXBlcyBv ZiBsaWJmZHQgTGlicmFyeSByb3V0aW5lcw0KPiANCj4gKy8vDQo+IA0KPiArdm9pZCAqDQo+IA0K PiArbWVtc2V0ICAgICAoDQo+IA0KPiArICB2b2lkICosDQo+IA0KPiArICBpbnQsDQo+IA0KPiAr ICBzaXplX3QNCj4gDQo+ICsgICk7DQo+IA0KPiArDQo+IA0KPiAraW50DQo+IA0KPiArbWVtY21w ICAgICAgKA0KPiANCj4gKyAgY29uc3Qgdm9pZCAqLA0KPiANCj4gKyAgY29uc3Qgdm9pZCAqLA0K PiANCj4gKyAgc2l6ZV90DQo+IA0KPiArICApOw0KPiANCj4gKw0KPiANCj4gK2ludA0KPiANCj4g K3N0cmNtcCAgICAgICgNCj4gDQo+ICsgIGNvbnN0IGNoYXIgKiwNCj4gDQo+ICsgIGNvbnN0IGNo YXIgKg0KPiANCj4gKyAgKTsNCj4gDQo+ICsNCj4gDQo+ICtjaGFyICoNCj4gDQo+ICtzdHJjaHIg ICAgICgNCj4gDQo+ICsgIGNvbnN0IGNoYXIgKiwNCj4gDQo+ICsgIGludA0KPiANCj4gKyAgKTsN Cj4gDQo+ICsNCj4gDQo+ICtjaGFyICoNCj4gDQo+ICtzdHJyY2hyICAgICgNCj4gDQo+ICsgIGNv bnN0IGNoYXIgKiwNCj4gDQo+ICsgIGludA0KPiANCj4gKyAgKTsNCj4gDQo+ICsNCj4gDQo+ICt1 bnNpZ25lZCBsb25nDQo+IA0KPiArc3RydG91bCAgICAgKA0KPiANCj4gKyAgY29uc3QgY2hhciAq LA0KPiANCj4gKyAgY2hhciAqKiwNCj4gDQo+ICsgIGludA0KPiANCj4gKyAgKTsNCj4gDQo+ICsN Cj4gDQo+ICtjaGFyICoNCj4gDQo+ICtzdHJjcHkgKA0KPiANCj4gKyAgY2hhciAgICAgICAgKnN0 ckRlc3QsDQo+IA0KPiArICBjb25zdCBjaGFyICAqc3RyU291cmNlDQo+IA0KPiArICApOw0KPiAN Cj4gKw0KPiANCj4gKy8vDQo+IA0KPiArLy8gTWFjcm9zIHRoYXQgZGlyZWN0bHkgbWFwIGZ1bmN0 aW9ucyB0byBCYXNlTGliLCBCYXNlTWVtb3J5TGliLCBhbmQgRGVidWdMaWIgZnVuY3Rpb25zDQo+ IA0KPiArLy8NCj4gDQo+ICsjZGVmaW5lIG1lbWNweShkZXN0LCBzb3VyY2UsIGNvdW50KSAgICAg ICAgIENvcHlNZW0oZGVzdCxzb3VyY2UsIChVSU5UTikoY291bnQpKQ0KPiANCj4gKyNkZWZpbmUg bWVtc2V0KGRlc3QsIGNoLCBjb3VudCkgICAgICAgICAgICAgU2V0TWVtKGRlc3QsIChVSU5UTiko Y291bnQpLChVSU5UOCkoY2gpKQ0KPiANCj4gKyNkZWZpbmUgbWVtY2hyKGJ1ZiwgY2gsIGNvdW50 KSAgICAgICAgICAgICAgU2Nhbk1lbTgoYnVmLCAoVUlOVE4pKGNvdW50KSwoVUlOVDgpY2gpDQo+ IA0KPiArI2RlZmluZSBtZW1jbXAoYnVmMSwgYnVmMiwgY291bnQpICAgICAgICAgICAoaW50KShD b21wYXJlTWVtKGJ1ZjEsIGJ1ZjIsIChVSU5UTikoY291bnQpKSkNCj4gDQo+ICsjZGVmaW5lIG1l bW1vdmUoZGVzdCwgc291cmNlLCBjb3VudCkgICAgICAgIENvcHlNZW0oZGVzdCwgc291cmNlLCAo VUlOVE4pKGNvdW50KSkNCj4gDQo+ICsjZGVmaW5lIHN0cmxlbihzdHIpICAgICAgICAgICAgICAg ICAgICAgICAgIChzaXplX3QpKEFzY2lpU3RyTGVuKHN0cikpDQo+IA0KPiArI2RlZmluZSBzdHJu bGVuKHN0ciwgY291bnQpICAgICAgICAgICAgICAgICAoc2l6ZV90KShBc2NpaVN0cm5MZW5TKHN0 ciwgY291bnQpKQ0KPiANCj4gKyNkZWZpbmUgc3RybmNweShzdHJEZXN0LCBzdHJTb3VyY2UsIGNv dW50KSAgQXNjaWlTdHJuQ3B5UyhzdHJEZXN0LCBNQVhfU1RSSU5HX1NJWkUsIHN0clNvdXJjZSwg KFVJTlROKWNvdW50KQ0KPiANCj4gKyNkZWZpbmUgc3RyY2F0KHN0ckRlc3QsIHN0clNvdXJjZSkg ICAgICAgICAgQXNjaWlTdHJDYXRTKHN0ckRlc3QsIE1BWF9TVFJJTkdfU0laRSwgc3RyU291cmNl KQ0KPiANCj4gKyNkZWZpbmUgc3RyY21wKHN0cmluZzEsIHN0cmluZzIsIGNvdW50KSAgICAgKGlu dCkoQXNjaWlTdHJDbXAoc3RyaW5nMSwgc3RyaW5nMikpDQo+IA0KPiArI2RlZmluZSBzdHJuY21w KHN0cmluZzEsIHN0cmluZzIsIGNvdW50KSAgICAoaW50KShBc2NpaVN0cm5DbXAoc3RyaW5nMSwg c3RyaW5nMiwgKFVJTlROKShjb3VudCkpKQ0KPiANCj4gKw0KPiANCj4gKyNlbmRpZiAvKiBGRFRf TElCX1NVUFBPUlRfSF8gKi8NCj4gDQo+IGRpZmYgLS1naXQgYS9NZGVQa2cvTGlicmFyeS9CYXNl RmR0TGliL0xpYkZkdFdyYXBwZXIuYyBiL01kZVBrZy9MaWJyYXJ5L0Jhc2VGZHRMaWIvTGliRmR0 V3JhcHBlci5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLjc3 MmJiYTQ4MzkNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9NZGVQa2cvTGlicmFyeS9CYXNlRmR0 TGliL0xpYkZkdFdyYXBwZXIuYw0KPiBAQCAtMCwwICsxLDE3MyBAQA0KPiArLyoqIEBmaWxlDQo+ IA0KPiArICBJU08gQyBpbXBsZW1lbnRhdGlvbnMgb2Ygc3RyY2hyLCBzdHJyY2hyIGFuZCBzdHJ0 b3VsLg0KPiANCj4gKw0KPiANCj4gKyAgQ29weXJpZ2h0IChjKSAyMDIzLCBJbnRlbCBDb3Jwb3Jh dGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+IA0KPiArICBDb3B5cmlnaHQgKGMpIDIw MjMgUGVkcm8gRmFsY2F0byBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiANCj4gKyAgU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gDQo+ICsNCj4gDQo+ICsqKi8N Cj4gDQo+ICsNCj4gDQo+ICsjaW5jbHVkZSA8QmFzZS5oPg0KPiANCj4gKw0KPiANCj4gKyNkZWZp bmUgVUxPTkdfTUFYICAgICAgICAweEZGRkZGRkZGICAgICAgLyogTWF4aW11bSB1bnNpZ25lZCBs b25nIHZhbHVlICovDQo+IA0KPiArDQo+IA0KPiArLy8gVmVyeSBxdWljayBub3RlczoNCj4gDQo+ ICsvLyBXZSBvbmx5IGdvIHRocm91Z2ggdGhlIHN0cmluZyBvbmNlIGZvciBib3RoIGZ1bmN0aW9u cw0KPiANCj4gKy8vIFRoZXkgYXJlIG1pbmltYWwgaW1wbGVtZW50YXRpb25zIChub3Qgc3BlZWQg b3B0aW1pemVkKSBvZiBJU08gQyBzZW1hbnRpY3MNCj4gDQo+ICsvLyBzdHJjaHIgYW5kIHN0cnJj aHIgYWxzbyBpbmNsdWRlIHRoZSBudWxsIHRlcm1pbmF0b3IgYXMgcGFydCBvZiB0aGUgc3RyaW5n DQo+IA0KPiArLy8gc28gdGhlIGNvZGUgZ2V0cyBhIGJpdCBjbHVua3kgdG8gaGFuZGxlIHRoYXQg Y2FzZSBzcGVjaWZpY2FsbHkuDQo+IA0KPiArDQo+IA0KPiArY2hhciAqDQo+IA0KPiArc3RyY2hy ICgNCj4gDQo+ICsgIGNvbnN0IGNoYXIgICpTdHIsDQo+IA0KPiArICBpbnQgICAgICAgICBDaGFy DQo+IA0KPiArICApDQo+IA0KPiArew0KPiANCj4gKyAgY2hhciAgKlM7DQo+IA0KPiArDQo+IA0K PiArICBTID0gKGNoYXIgKilTdHI7DQo+IA0KPiArDQo+IA0KPiArICBmb3IgKCA7IDsgUysrKSB7 DQo+IA0KPiArICAgIGlmICgqUyA9PSBDaGFyKSB7DQo+IA0KPiArICAgICAgcmV0dXJuIFM7DQo+ IA0KPiArICAgIH0NCj4gDQo+ICsNCj4gDQo+ICsgICAgaWYgKCpTID09ICdcMCcpIHsNCj4gDQo+ ICsgICAgICByZXR1cm4gTlVMTDsNCj4gDQo+ICsgICAgfQ0KPiANCj4gKyAgfQ0KPiANCj4gK30N Cj4gDQo+ICsNCj4gDQo+ICtjaGFyICoNCj4gDQo+ICtzdHJyY2hyICgNCj4gDQo+ICsgIGNvbnN0 IGNoYXIgICpTdHIsDQo+IA0KPiArICBpbnQgICAgICAgICBDaGFyDQo+IA0KPiArICApDQo+IA0K PiArew0KPiANCj4gKyAgY2hhciAgKlMsICpsYXN0Ow0KPiANCj4gKw0KPiANCj4gKyAgUyAgICA9 IChjaGFyICopU3RyOw0KPiANCj4gKyAgbGFzdCA9IE5VTEw7DQo+IA0KPiArDQo+IA0KPiArICBm b3IgKCA7IDsgUysrKSB7DQo+IA0KPiArICAgIGlmICgqUyA9PSBDaGFyKSB7DQo+IA0KPiArICAg ICAgbGFzdCA9IFM7DQo+IA0KPiArICAgIH0NCj4gDQo+ICsNCj4gDQo+ICsgICAgaWYgKCpTID09 ICdcMCcpIHsNCj4gDQo+ICsgICAgICByZXR1cm4gbGFzdDsNCj4gDQo+ICsgICAgfQ0KPiANCj4g KyAgfQ0KPiANCj4gK30NCj4gDQo+ICsNCj4gDQo+ICtTVEFUSUMNCj4gDQo+ICtpbnQNCj4gDQo+ ICtfX2lzc3BhY2UgKA0KPiANCj4gKyAgaW50ICBjaA0KPiANCj4gKyAgKQ0KPiANCj4gK3sNCj4g DQo+ICsgIC8vIGJhc2ljIEFTQ0lJIGN0eXBlLmg6aXNzcGFjZSgpLiBOb3QgZWZmaWNpZW50DQo+ IA0KPiArICByZXR1cm4gY2ggPT0gJ1xyJyB8fCBjaCA9PSAnXG4nIHx8IGNoID09ICcgJyB8fCBj aCA9PSAnXHQnIHx8IGNoID09ICdcdicgfHwgY2ggPT0gJ1xmJzsNCj4gDQo+ICt9DQo+IA0KPiAr DQo+IA0KPiArdW5zaWduZWQgbG9uZw0KPiANCj4gK3N0cnRvdWwgKA0KPiANCj4gKyAgY29uc3Qg Y2hhciAgKk5wdHIsDQo+IA0KPiArICBjaGFyICAgICAgICAqKkVuZFB0ciwNCj4gDQo+ICsgIGlu dCAgICAgICAgIEJhc2UNCj4gDQo+ICsgICkNCj4gDQo+ICt7DQo+IA0KPiArICBCT09MRUFOICAg ICAgICBOZWdhdGU7DQo+IA0KPiArICBCT09MRUFOICAgICAgICBPdmVyZmxvdzsNCj4gDQo+ICsg IHVuc2lnbmVkIGxvbmcgIFZhbDsNCj4gDQo+ICsNCj4gDQo+ICsgIE5lZ2F0ZSAgID0gRkFMU0U7 DQo+IA0KPiArICBPdmVyZmxvdyA9IEZBTFNFOw0KPiANCj4gKyAgVmFsICAgICAgPSAwOw0KPiAN Cj4gKw0KPiANCj4gKyAgLy8gUmVqZWN0IGJhZCBudW1lcmljIGJhc2VzDQo+IA0KPiArICBpZiAo KEJhc2UgPCAwKSB8fCAoQmFzZSA9PSAxKSB8fCAoQmFzZSA+IDM2KSkgew0KPiANCj4gKyAgICBy ZXR1cm4gMDsNCj4gDQo+ICsgIH0NCj4gDQo+ICsNCj4gDQo+ICsgIC8vIFNraXAgd2hpdGVzcGFj ZQ0KPiANCj4gKyAgd2hpbGUgKF9faXNzcGFjZSAoKk5wdHIpKSB7DQo+IA0KPiArICAgIE5wdHIr KzsNCj4gDQo+ICsgIH0NCj4gDQo+ICsNCj4gDQo+ICsgIC8vIENoZWNrIGZvciArIG9yIC0gcHJl Zml4ZXMNCj4gDQo+ICsgIGlmICgqTnB0ciA9PSAnLScpIHsNCj4gDQo+ICsgICAgTmVnYXRlID0g VFJVRTsNCj4gDQo+ICsgICAgTnB0cisrOw0KPiANCj4gKyAgfSBlbHNlIGlmICgqTnB0ciA9PSAn KycpIHsNCj4gDQo+ICsgICAgTnB0cisrOw0KPiANCj4gKyAgfQ0KPiANCj4gKw0KPiANCj4gKyAg Ly8gQ29uc3VtZSB0aGUgc3RhcnQsIGF1dG9kZXRlY3RpbmcgYmFzZSBpZiBuZWVkZWQNCj4gDQo+ ICsgIGlmICgoTnB0clswXSA9PSAnMCcpICYmICgoTnB0clsxXSA9PSAneCcpIHx8IChOcHRyWzFd ID09ICdYJykpICYmICgoQmFzZSA9PSAwKSB8fCAoQmFzZSA9PSAxNikpKSB7DQo+IA0KPiArICAg IC8vIEhleA0KPiANCj4gKyAgICBOcHRyICs9IDI7DQo+IA0KPiArICAgIEJhc2UgID0gMTY7DQo+ IA0KPiArICB9IGVsc2UgaWYgKChOcHRyWzBdID09ICcwJykgJiYgKChOcHRyWzFdID09ICdiJykg fHwgKE5wdHJbMV0gPT0gJ0InKSkgJiYgKChCYXNlID09IDApIHx8IChCYXNlID09IDIpKSkgew0K PiANCj4gKyAgICAvLyBCaW5hcnkgKHN0YW5kYXJkIHBlbmRpbmcgQzIzKQ0KPiANCj4gKyAgICBO cHRyICs9IDI7DQo+IA0KPiArICAgIEJhc2UgID0gMjsNCj4gDQo+ICsgIH0gZWxzZSBpZiAoKE5w dHJbMF0gPT0gJzAnKSAmJiAoKEJhc2UgPT0gMCkgfHwgKEJhc2UgPT0gOCkpKSB7DQo+IA0KPiAr ICAgIC8vIE9jdGFsDQo+IA0KPiArICAgIE5wdHIrKzsNCj4gDQo+ICsgICAgQmFzZSA9IDg7DQo+ IA0KPiArICB9IGVsc2Ugew0KPiANCj4gKyAgICBpZiAoQmFzZSA9PSAwKSB7DQo+IA0KPiArICAg ICAgLy8gQXNzdW1lIGRlY2ltYWwNCj4gDQo+ICsgICAgICBCYXNlID0gMTA7DQo+IA0KPiArICAg IH0NCj4gDQo+ICsgIH0NCj4gDQo+ICsNCj4gDQo+ICsgIHdoaWxlIChUUlVFKSB7DQo+IA0KPiAr ICAgIGludCAgICAgICAgICAgIERpZ2l0Ow0KPiANCj4gKyAgICBjaGFyICAgICAgICAgICBDOw0K PiANCj4gKyAgICB1bnNpZ25lZCBsb25nICBOZXdWYWw7DQo+IA0KPiArDQo+IA0KPiArICAgIEMg ICAgID0gKk5wdHI7DQo+IA0KPiArICAgIERpZ2l0ID0gLTE7DQo+IA0KPiArDQo+IA0KPiArICAg IGlmICgoQyA+PSAnMCcpICYmIChDIDw9ICc5JykpIHsNCj4gDQo+ICsgICAgICBEaWdpdCA9IEMg LSAnMCc7DQo+IA0KPiArICAgIH0gZWxzZSBpZiAoKEMgPj0gJ2EnKSAmJiAoQyA8PSAneicpKSB7 DQo+IA0KPiArICAgICAgRGlnaXQgPSBDIC0gJ2EnICsgMTA7DQo+IA0KPiArICAgIH0gZWxzZSBp ZiAoKEMgPj0gJ0EnKSAmJiAoQyA8PSAnWicpKSB7DQo+IA0KPiArICAgICAgRGlnaXQgPSBDIC0g J0EnICsgMTA7DQo+IA0KPiArICAgIH0NCj4gDQo+ICsNCj4gDQo+ICsgICAgaWYgKChEaWdpdCA9 PSAtMSkgfHwgKERpZ2l0ID49IEJhc2UpKSB7DQo+IA0KPiArICAgICAgLy8gTm90ZSB0aGF0IHRo aXMgY2FzZSBhbHNvIGhhbmRsZXMgdGhlIFwwDQo+IA0KPiArICAgICAgaWYgKEVuZFB0cikgew0K PiANCj4gKyAgICAgICAgKkVuZFB0ciA9IChjaGFyICopTnB0cjsNCj4gDQo+ICsgICAgICB9DQo+ IA0KPiArDQo+IA0KPiArICAgICAgYnJlYWs7DQo+IA0KPiArICAgIH0NCj4gDQo+ICsNCj4gDQo+ ICsgICAgTmV3VmFsID0gVmFsICogQmFzZSArIERpZ2l0Ow0KPiANCj4gKw0KPiANCj4gKyAgICBp ZiAoTmV3VmFsIDwgVmFsKSB7DQo+IA0KPiArICAgICAgLy8gT3ZlcmZsb3cNCj4gDQo+ICsgICAg ICBPdmVyZmxvdyA9IFRSVUU7DQo+IA0KPiArICAgIH0NCj4gDQo+ICsNCj4gDQo+ICsgICAgVmFs ID0gTmV3VmFsOw0KPiANCj4gKw0KPiANCj4gKyAgICBOcHRyKys7DQo+IA0KPiArICB9DQo+IA0K PiArDQo+IA0KPiArICBpZiAoTmVnYXRlKSB7DQo+IA0KPiArICAgIFZhbCA9IC1WYWw7DQo+IA0K PiArICB9DQo+IA0KPiArDQo+IA0KPiArICBpZiAoT3ZlcmZsb3cpIHsNCj4gDQo+ICsgICAgVmFs ID0gVUxPTkdfTUFYOw0KPiANCj4gKyAgfQ0KPiANCj4gKw0KPiANCj4gKyAgLy8gVE9ETzogV2Un cmUgbGFja2luZyBlcnJubyBoZXJlLg0KPiANCj4gKyAgcmV0dXJuIFZhbDsNCj4gDQo+ICt9DQo+ IA0KPiBkaWZmIC0tZ2l0IGEvTWRlUGtnL0xpYnJhcnkvQmFzZUZkdExpYi9saW1pdHMuaCBiL01k ZVBrZy9MaWJyYXJ5L0Jhc2VGZHRMaWIvbGltaXRzLmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQN Cj4gaW5kZXggMDAwMDAwMDAwMC4uZjZjZjhkNTcwMg0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBi L01kZVBrZy9MaWJyYXJ5L0Jhc2VGZHRMaWIvbGltaXRzLmgNCj4gQEAgLTAsMCArMSwxMCBAQA0K PiArLyoqIEBmaWxlDQo+IA0KPiArICBJbmNsdWRlIGZpbGUgdG8gc3VwcG9ydCBidWlsZGluZyB0 aGUgdGhpcmQtcGFydHkgbGliZmR0IGxpYnJhcnkuDQo+IA0KPiArDQo+IA0KPiArQ29weXJpZ2h0 IChjKSAyMDIzLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ IA0KPiArU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gDQo+ ICsNCj4gDQo+ICsqKi8NCj4gDQo+ICsNCj4gDQo+ICsjaW5jbHVkZSA8TGliRmR0U3VwcG9ydC5o Pg0KPiANCj4gKw0KPiANCj4gZGlmZiAtLWdpdCBhL01kZVBrZy9MaWJyYXJ5L0Jhc2VGZHRMaWIv c3RkYm9vbC5oIGIvTWRlUGtnL0xpYnJhcnkvQmFzZUZkdExpYi9zdGRib29sLmgNCj4gbmV3IGZp bGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMC4uZjZjZjhkNTcwMg0KPiAtLS0gL2Rl di9udWxsDQo+ICsrKyBiL01kZVBrZy9MaWJyYXJ5L0Jhc2VGZHRMaWIvc3RkYm9vbC5oDQo+IEBA IC0wLDAgKzEsMTAgQEANCj4gKy8qKiBAZmlsZQ0KPiANCj4gKyAgSW5jbHVkZSBmaWxlIHRvIHN1 cHBvcnQgYnVpbGRpbmcgdGhlIHRoaXJkLXBhcnR5IGxpYmZkdCBsaWJyYXJ5Lg0KPiANCj4gKw0K PiANCj4gK0NvcHlyaWdodCAoYykgMjAyMywgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMg cmVzZXJ2ZWQuPEJSPg0KPiANCj4gK1NQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1 c2UtUGF0ZW50DQo+IA0KPiArDQo+IA0KPiArKiovDQo+IA0KPiArDQo+IA0KPiArI2luY2x1ZGUg PExpYkZkdFN1cHBvcnQuaD4NCj4gDQo+ICsNCj4gDQo+IGRpZmYgLS1naXQgYS9NZGVQa2cvTGli cmFyeS9CYXNlRmR0TGliL3N0ZGRlZi5oIGIvTWRlUGtnL0xpYnJhcnkvQmFzZUZkdExpYi9zdGRk ZWYuaA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwLi5mNmNmOGQ1 NzAyDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvTWRlUGtnL0xpYnJhcnkvQmFzZUZkdExpYi9z dGRkZWYuaA0KPiBAQCAtMCwwICsxLDEwIEBADQo+ICsvKiogQGZpbGUNCj4gDQo+ICsgIEluY2x1 ZGUgZmlsZSB0byBzdXBwb3J0IGJ1aWxkaW5nIHRoZSB0aGlyZC1wYXJ0eSBsaWJmZHQgbGlicmFy eS4NCj4gDQo+ICsNCj4gDQo+ICtDb3B5cmlnaHQgKGMpIDIwMjMsIEludGVsIENvcnBvcmF0aW9u LiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gDQo+ICtTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiANCj4gKw0KPiANCj4gKyoqLw0KPiANCj4gKw0KPiAN Cj4gKyNpbmNsdWRlIDxMaWJGZHRTdXBwb3J0Lmg+DQo+IA0KPiArDQo+IA0KPiBkaWZmIC0tZ2l0 IGEvTWRlUGtnL0xpYnJhcnkvQmFzZUZkdExpYi9zdGRpbnQuaCBiL01kZVBrZy9MaWJyYXJ5L0Jh c2VGZHRMaWIvc3RkaW50LmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAw MDAwMC4uZjZjZjhkNTcwMg0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL01kZVBrZy9MaWJyYXJ5 L0Jhc2VGZHRMaWIvc3RkaW50LmgNCj4gQEAgLTAsMCArMSwxMCBAQA0KPiArLyoqIEBmaWxlDQo+ IA0KPiArICBJbmNsdWRlIGZpbGUgdG8gc3VwcG9ydCBidWlsZGluZyB0aGUgdGhpcmQtcGFydHkg bGliZmR0IGxpYnJhcnkuDQo+IA0KPiArDQo+IA0KPiArQ29weXJpZ2h0IChjKSAyMDIzLCBJbnRl bCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+IA0KPiArU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gDQo+ICsNCj4gDQo+ICsqKi8N Cj4gDQo+ICsNCj4gDQo+ICsjaW5jbHVkZSA8TGliRmR0U3VwcG9ydC5oPg0KPiANCj4gKw0KPiAN Cj4gZGlmZiAtLWdpdCBhL01kZVBrZy9MaWJyYXJ5L0Jhc2VGZHRMaWIvc3RkbGliLmggYi9NZGVQ a2cvTGlicmFyeS9CYXNlRmR0TGliL3N0ZGxpYi5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ IGluZGV4IDAwMDAwMDAwMDAuLmY2Y2Y4ZDU3MDINCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9N ZGVQa2cvTGlicmFyeS9CYXNlRmR0TGliL3N0ZGxpYi5oDQo+IEBAIC0wLDAgKzEsMTAgQEANCj4g Ky8qKiBAZmlsZQ0KPiANCj4gKyAgSW5jbHVkZSBmaWxlIHRvIHN1cHBvcnQgYnVpbGRpbmcgdGhl IHRoaXJkLXBhcnR5IGxpYmZkdCBsaWJyYXJ5Lg0KPiANCj4gKw0KPiANCj4gK0NvcHlyaWdodCAo YykgMjAyMywgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiAN Cj4gK1NQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+IA0KPiAr DQo+IA0KPiArKiovDQo+IA0KPiArDQo+IA0KPiArI2luY2x1ZGUgPExpYkZkdFN1cHBvcnQuaD4N Cj4gDQo+ICsNCj4gDQo+IGRpZmYgLS1naXQgYS9NZGVQa2cvTGlicmFyeS9CYXNlRmR0TGliL3N0 cmluZy5oIGIvTWRlUGtnL0xpYnJhcnkvQmFzZUZkdExpYi9zdHJpbmcuaA0KPiBuZXcgZmlsZSBt b2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwLi5mNmNmOGQ1NzAyDQo+IC0tLSAvZGV2L251 bGwNCj4gKysrIGIvTWRlUGtnL0xpYnJhcnkvQmFzZUZkdExpYi9zdHJpbmcuaA0KPiBAQCAtMCww ICsxLDEwIEBADQo+ICsvKiogQGZpbGUNCj4gDQo+ICsgIEluY2x1ZGUgZmlsZSB0byBzdXBwb3J0 IGJ1aWxkaW5nIHRoZSB0aGlyZC1wYXJ0eSBsaWJmZHQgbGlicmFyeS4NCj4gDQo+ICsNCj4gDQo+ ICtDb3B5cmlnaHQgKGMpIDIwMjMsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2Vy dmVkLjxCUj4NCj4gDQo+ICtTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBh dGVudA0KPiANCj4gKw0KPiANCj4gKyoqLw0KPiANCj4gKw0KPiANCj4gKyNpbmNsdWRlIDxMaWJG ZHRTdXBwb3J0Lmg+DQo+IA0KPiArDQo+IA0KPiBkaWZmIC0tZ2l0IGEvTWRlUGtnL01kZVBrZy5j aS55YW1sIGIvTWRlUGtnL01kZVBrZy5jaS55YW1sDQo+IGluZGV4IDZiYTg1ZWJlNjEuLmYwMzlk YWNjZGIgMTAwNjQ0DQo+IC0tLSBhL01kZVBrZy9NZGVQa2cuY2kueWFtbA0KPiArKysgYi9NZGVQ a2cvTWRlUGtnLmNpLnlhbWwNCj4gQEAgLTIsNyArMiw3IEBADQo+ICAjIENJIGNvbmZpZ3VyYXRp b24gZm9yIE1kZVBrZw0KPiANCj4gICMNCj4gDQo+ICAjIENvcHlyaWdodCAoYykgTWljcm9zb2Z0 IENvcnBvcmF0aW9uDQo+IA0KPiAtIyBDb3B5cmlnaHQgKGMpIDIwMjAsIEludGVsIENvcnBvcmF0 aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gDQo+ICsjIENvcHlyaWdodCAoYykgMjAy MywgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiANCj4gICMg Q29weXJpZ2h0IChjKSAyMDIxLCBBcm0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+ DQo+IA0KPiAgIyBDb3B5cmlnaHQgKGMpIDIwMjMsIExvb25nc29uIFRlY2hub2xvZ3kgQ29ycG9y YXRpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+IA0KPiAgIyBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiANCj4gQEAgLTY3LDcgKzY3 LDggQEANCj4gICAgICAgICAgICAgICJJbmNsdWRlL0xpYnJhcnkvUGNkTGliLmgiLA0KPiANCj4g ICAgICAgICAgICAgICJJbmNsdWRlL0xpYnJhcnkvU2FmZUludExpYi5oIiwNCj4gDQo+ICAgICAg ICAgICAgICAiSW5jbHVkZS9Qcm90b2NvbC9EZWJ1Z1N1cHBvcnQuaCIsDQo+IA0KPiAtICAgICAg ICAgICAgIlRlc3QvVW5pdFRlc3QvTGlicmFyeS9CYXNlU2FmZUludExpYi9UZXN0QmFzZVNhZmVJ bnRMaWIuYyINCj4gDQo+ICsgICAgICAgICAgICAiVGVzdC9Vbml0VGVzdC9MaWJyYXJ5L0Jhc2VT YWZlSW50TGliL1Rlc3RCYXNlU2FmZUludExpYi5jIiwNCj4gDQo+ICsgICAgICAgICAgICAiTGli cmFyeS9CYXNlRmR0TGliIg0KPiANCj4gICAgICAgICAgXQ0KPiANCj4gICAgICB9LA0KPiANCj4g ICAgICAjIyBvcHRpb25zIGRlZmluZWQgY2kvUGx1Z2luL0NvbXBpbGVyUGx1Z2luDQo+IA0KPiBA QCAtMTY0LDUgKzE2NSwxNyBAQA0KPiAgICAgICAgICAiRXh0ZW5kV29yZHMiOiBbXSwgICAgICAg ICAgICMgd29yZHMgdG8gZXh0ZW5kIHRvIHRoZSBkaWN0aW9uYXJ5IGZvciB0aGlzIHBhY2thZ2UN Cj4gDQo+ICAgICAgICAgICJJZ25vcmVTdGFuZGFyZFBhdGhzIjogW10sICAgIyBTdGFuZGFyZCBQ bHVnaW4gZGVmaW5lZCBwYXRocyB0aGF0IHNob3VsZCBiZSBpZ25vcmUNCj4gDQo+ICAgICAgICAg ICJBZGRpdGlvbmFsSW5jbHVkZVBhdGhzIjogW10gIyBBZGRpdGlvbmFsIHBhdGhzIHRvIHNwZWxs IGNoZWNrICh3aWxkY2FyZHMgc3VwcG9ydGVkKQ0KPiANCj4gKyAgICB9LA0KPiANCj4gKyAgICAj IG9wdGlvbnMgZGVmaW5lZCBpbiAucHl0b29sL1BsdWdpbi9VbmNydXN0aWZ5Q2hlY2sNCj4gDQo+ ICsgICAgIlVuY3J1c3RpZnlDaGVjayI6IHsNCj4gDQo+ICsgICAgICAgICJJZ25vcmVGaWxlcyI6 IFsNCj4gDQo+ICsgICAgICAgICAgICAiTGlicmFyeS9CYXNlRmR0TGliL2xpYmZkdCIsDQo+IA0K PiArICAgICAgICAgICAgIkxpYnJhcnkvQmFzZUZkdExpYi9saW1pdHMuaCIsDQo+IA0KPiArICAg ICAgICAgICAgIkxpYnJhcnkvQmFzZUZkdExpYi9zdGRib29sLmgiLA0KPiANCj4gKyAgICAgICAg ICAgICJMaWJyYXJ5L0Jhc2VGZHRMaWIvc3RkZGVmLmgiLA0KPiANCj4gKyAgICAgICAgICAgICJM aWJyYXJ5L0Jhc2VGZHRMaWIvc3RkaW50LmgiLA0KPiANCj4gKyAgICAgICAgICAgICJMaWJyYXJ5 L0Jhc2VGZHRMaWIvc3RkbGliLmgiLA0KPiANCj4gKyAgICAgICAgICAgICJMaWJyYXJ5L0Jhc2VG ZHRMaWIvc3RyaW5nLmgiDQo+IA0KPiArICAgICAgICBdDQo+IA0KPiAgICAgIH0NCj4gDQo+ICB9 DQo+IA0KPiBkaWZmIC0tZ2l0IGEvTWRlUGtnL01kZVBrZy5kZWMgYi9NZGVQa2cvTWRlUGtnLmRl Yw0KPiBpbmRleCBlNzAxODJiZjdmLi45ODA0YTdhNmJkIDEwMDY0NA0KPiAtLS0gYS9NZGVQa2cv TWRlUGtnLmRlYw0KPiArKysgYi9NZGVQa2cvTWRlUGtnLmRlYw0KPiBAQCAtMjg5LDYgKzI4OSwx MCBAQA0KPiAgICAjDQo+IA0KPiAgICBBcm1Ucm5nTGlifEluY2x1ZGUvTGlicmFyeS9Bcm1Ucm5n TGliLmgNCj4gDQo+IA0KPiANCj4gKyAgIyMgIEBsaWJyYXJ5Y2xhc3MgIFByb3ZpZGVzIEFQSXMg Zm9yIHRoaXJkLXBhcnR5IGxpYnJhcnkgbGliZmR0Lg0KPiANCj4gKyAgIw0KPiANCj4gKyAgRmR0 TGlifEluY2x1ZGUvTGlicmFyeS9GZHRMaWIuaA0KPiANCj4gKw0KPiANCj4gIFtMaWJyYXJ5Q2xh c3Nlcy5JQTMyLCBMaWJyYXJ5Q2xhc3Nlcy5YNjQsIExpYnJhcnlDbGFzc2VzLkFBUkNINjRdDQo+ IA0KPiAgICAjIyAgQGxpYnJhcnljbGFzcyAgUHJvdmlkZXMgc2VydmljZXMgdG8gZ2VuZXJhdGUg cmFuZG9tIG51bWJlci4NCj4gDQo+ICAgICMNCj4gDQo+IGRpZmYgLS1naXQgYS9NZGVQa2cvTWRl UGtnLmRzYyBiL01kZVBrZy9NZGVQa2cuZHNjDQo+IGluZGV4IDE1MmMwMjk5MWEuLmIzOGM4NjM4 MTIgMTAwNjQ0DQo+IC0tLSBhL01kZVBrZy9NZGVQa2cuZHNjDQo+ICsrKyBiL01kZVBrZy9NZGVQ a2cuZHNjDQo+IEBAIC0xMzcsNiArMTM3LDcgQEANCj4gICAgTWRlUGtnL0xpYnJhcnkvU21tQ3B1 UmVuZGV6dm91c0xpYk51bGwvU21tQ3B1UmVuZGV6dm91c0xpYk51bGwuaW5mDQo+IA0KPiANCj4g DQo+ICAgIE1kZVBrZy9MaWJyYXJ5L0plZGVjSmVwMTA2TGliL0plZGVjSmVwMTA2TGliLmluZg0K PiANCj4gKyAgTWRlUGtnL0xpYnJhcnkvQmFzZUZkdExpYi9CYXNlRmR0TGliLmluZg0KPiANCj4g DQo+IA0KPiAgW0NvbXBvbmVudHMuSUEzMiwgQ29tcG9uZW50cy5YNjQsIENvbXBvbmVudHMuQVJN LCBDb21wb25lbnRzLkFBUkNINjRdDQo+IA0KPiAgICAjDQo+IA0KPiAtLQ0KPiAyLjM5LjEud2lu ZG93cy4xDQoNCg==