From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by mx.groups.io with SMTP id smtpd.web11.2514.1607988629682906217 for ; Mon, 14 Dec 2020 15:30:29 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=qgu7OQbj; spf=pass (domain: intel.com, ip: 192.55.52.93, mailfrom: michael.d.kinney@intel.com) IronPort-SDR: nteRClDqblmPkrUybX23xd5LaJO74+ELanK8f+ZXtgfB2QIgVOKdKI6jYSAvMei+emTGigs9qK xO5hBDQNinTA== X-IronPort-AV: E=McAfee;i="6000,8403,9835"; a="171288594" X-IronPort-AV: E=Sophos;i="5.78,420,1599548400"; d="scan'208";a="171288594" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Dec 2020 15:30:28 -0800 IronPort-SDR: 5mVCtkIPgcGN7NocQmqliSqjuI92GM8sUkYTHp35OZzcWMMVzw4V4F9JZn4aWVuIXm9QOWf0s+ gQYnzvU8sWFw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.78,420,1599548400"; d="scan'208";a="378324878" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by orsmga007.jf.intel.com with ESMTP; 14 Dec 2020 15:30:27 -0800 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Mon, 14 Dec 2020 15:30:27 -0800 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Mon, 14 Dec 2020 15:30:27 -0800 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) 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.1713.5 via Frontend Transport; Mon, 14 Dec 2020 15:30:26 -0800 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.46) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.1713.5; Mon, 14 Dec 2020 15:30:26 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NKYqsXMlvDrAFUNv8AADmENjbGNg3jlNedwIeW2l2Gz6Guoa/aNu4tYstIxEzIGp3W9OuJszHE80KgFYH1sK/W+tAAQEdEug7M5q0cUqfiE76gAf2XUBw96BDbRgeUw2DhmI43pYvNhQJKSBbdgUPawWCvU2/5TsnHSYtQdKLgE07YzVzQc4X2r0DQ68iLY43poliyh75c3AdA05FTXLuOdZhfqQ9JoMWFtEz6us6caE0Cs2OKm88jcG4CZ7HPgeuVjfTodcmLy0ZZLLN3cFArSFkWRawHvA81eNjVgOJqW0FAa/+tGxs/4p6mVjI+0VloO3f0gWj/N3N8C63yo4Sw== 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=GW+wbXf7UX/oaCRrtGLL06YcIwDKdd1ptu/UCRR7sis=; b=iO6H1LPozkSdpWc7k2lb51yNWsS7sodRhXKZ7U3eZn8JaXxMCrrGaU//QQNDNgbkuEmXUpTy3HFDv4XZHdNEmoKv8zXRyq9h3CXYBzWwE3L9+dgmGSddvMWFq7xLyHXHhEVdeUKOa3+IgT3itufYUvbBeze6M+RlH9S1I+85uyQEGCPYd5ZF/zrPDLoRU74pOuyfLcHj+vJJhv5wusDMb+B+4g3sf+pnEtCUbfF6REnVyWAzviSvO0lApTYlV+BtcAmdOp+isWERceh37qYSQiWIrmMkJIYOxNlO6m0g6KQm087MV1TpHWcEukUQ+YSXUtiIdwsjsHHC1fqR0i4XCw== 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=GW+wbXf7UX/oaCRrtGLL06YcIwDKdd1ptu/UCRR7sis=; b=qgu7OQbjnfCL4Z+Kh9YZwYT/CfTKzCufCi+q1bDakwAvX8Hvw2w1mpOQGpvQbPOJoofWmJICBe5QZgH/1E47+E1XQ7h3TLkYG/16LayEnL72L/Av4uDTzCHFTMhJMXFSy6WDOu3MVCReUeegpbZhnnX7sX6k4VbiXfSwib9EC54= Received: from BL0PR11MB3236.namprd11.prod.outlook.com (2603:10b6:208:60::18) by BL0PR11MB2916.namprd11.prod.outlook.com (2603:10b6:208:72::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3654.17; Mon, 14 Dec 2020 23:30:25 +0000 Received: from BL0PR11MB3236.namprd11.prod.outlook.com ([fe80::dcf8:f2f2:db7c:1cec]) by BL0PR11MB3236.namprd11.prod.outlook.com ([fe80::dcf8:f2f2:db7c:1cec%7]) with mapi id 15.20.3654.025; Mon, 14 Dec 2020 23:30:25 +0000 From: "Michael D Kinney" To: "devel@edk2.groups.io" , "abner.chang@hpe.com" , "Kinney, Michael D" CC: Leif Lindholm , Nickle Wang , Peter O'Hanley Subject: Re: [edk2-devel] [PATCH v6 3/6] RedfishPkg/CrtLib: C runtime library Thread-Topic: [edk2-devel] [PATCH v6 3/6] RedfishPkg/CrtLib: C runtime library Thread-Index: AQHW0jOnCVnLFzoXRkG3ZBb2k8r8t6n3Oc5w Date: Mon, 14 Dec 2020 23:30:24 +0000 Message-ID: References: <20201214035321.17000-1-abner.chang@hpe.com> <20201214035321.17000-4-abner.chang@hpe.com> In-Reply-To: <20201214035321.17000-4-abner.chang@hpe.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.5.1.3 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-originating-ip: [24.19.191.44] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 290ada5f-f852-45eb-948d-08d8a0883bc4 x-ms-traffictypediagnostic: BL0PR11MB2916: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: IAoHClN+RDf4h9iCIq5bEORwZK+FvhSb4a7WCQUmCihjm3EKFCPnBJbvhnshamwXPSchdq/yZ76l7aZm+vHT5RDpH1YJ0XwQ7/2OQtrtKe0Jo8gY3j4ua24vuN9R1OC/94KrW1wAUHisUClMUJs71u4uMytioBM6dSDAxcB/HMoJA0RE/gZkZI67y8hzrFgJ5kegv0U+DsXJqf/h+MxPuOWfyCQp14ORXJKvDFmcxAk1tnnl7YXw8UXeWaLi5GmgFR0LmD4ZR/0mr1j3ZTYaGilHh4DLIDk9UUCcqVVeKzOcbBU0+wl7300wDq8vD+wkwtIqv+KcKUflzK6JaIQnZiuupak5wUN6ihYV3U/JI0aQgDfrVpmf2Kd2OA+EEh9rxOhfePeMxWEnpxgV0JVj21xnaE9daRKSHX/e+kPud8tMbk8i+Y7fQPw7MExT3fo59X8pr/e0Ma6pXEG+fxcbC2tyXSiR9aPgCBhyTCXJurE= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL0PR11MB3236.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(376002)(346002)(366004)(136003)(66476007)(64756008)(66946007)(66556008)(966005)(7696005)(66446008)(53546011)(55016002)(86362001)(52536014)(4326008)(8936002)(110136005)(83380400001)(8676002)(2906002)(54906003)(5660300002)(9686003)(26005)(76116006)(186003)(30864003)(71200400001)(33656002)(6506007)(508600001)(461764006)(21314003)(579004)(559001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: =?utf-8?B?SUZwMTIzNERBRkNZbHZ4Wi9oRGlTTlpOSlhEekJvU0ZvQXhLVmNYanh5M1Yx?= =?utf-8?B?TjlkdnhKYVdaOC8xbnBnYmtHWUNjZTFQYlZMT1JHaWJ0bC82cmdRb3hQb3hK?= =?utf-8?B?ZCtLeW92Qkl0U3RXa2dOM1MwbU05MEtDM2hPYS9ldG5aalNsZDh6SXptTzZy?= =?utf-8?B?YUthdU9iT05NTlFTcUxDdmF5Q3RVdFlmWUdrZmJVRWNaYjJDU0M4cWY4NmFP?= =?utf-8?B?eE5FLzBtNmtETlFPRElSOTlLazMzVlVVK0VUMitrMUdVUXZtS0xwMjJZUTBX?= =?utf-8?B?MkFML0l4Y1BYUlY2bjJRR3cwYkZ4ekh0VzFvbHhJMlBodzdjOGVxb2duTjkx?= =?utf-8?B?aDR3aHdPbVpXYS9YQ1VNSlBONmFnNkZrNmVONEFhblF2aVBCMDA2dlY0Z091?= =?utf-8?B?SXRVeDF5MGw4VWtJRGdxU29RS1ZRTzVtejdLVVp1WDRNREptUnNUOXJzekxr?= =?utf-8?B?clNBL1hxTlB0czA3VnRMcWI1YU5zMU8vZ2dlQ0hGeHlMMXRZYnU5OWp1eUZD?= =?utf-8?B?MHpWS2FVZW9YaW9LN3R1MDI3cjc2VGFSTWx1R3JOZzJweFZOM0E1a3k2cUh3?= =?utf-8?B?OTh5NHQ4b21wYzJDblFVN0c5eVBxTWRma2FOeEp6YXpxdVNnaGw3bGJvRnRa?= =?utf-8?B?Q05PSUVLRGJkbjNLWW5sQXFNQ0RyUEhiTEZZYnVBakVuL2pQZWh1aGVYTU1B?= =?utf-8?B?VTR4Y0xtWFA5MDRFK3hzNE5BdGpPcUl5bEp0bzZIc3BxeHIyb0RXaVFycnhD?= =?utf-8?B?ZU5KZStsbllJT0xLM1kyNlpqUXRDZ3NVMVNuS2UyREVZQ2tOSnhBbHh3eW5U?= =?utf-8?B?RHMwTHBzZERnRUwxa3QxaDV2QlJQUjg1ZzJZRlQ1YS9vaGtQM21CN3dUNDMw?= =?utf-8?B?ZzBuc3pncnM4WmJPK2ZicHVqK09IZi94SWUzNng0Y29PMSttdFBiZ2dwbmVF?= =?utf-8?B?ZVE3R2xyQ1dwVVU0ZWNURkZuQ01NWlArTkg1MTZreGlLZVNVSTNXMUh6eHpa?= =?utf-8?B?WTZJRE42V09HWHRhdVBVRzJnZFJpcnBYc3dNY2wwV3djSGpMSU1ESnN1cE9z?= =?utf-8?B?TzlHdFFhY3BLMVhzSlM0enFhRDdxL0xNUFc3R1h6MGNTUkc3c0k3aS81bDZH?= =?utf-8?B?UC9MVUxieTUvMmd4VkdLSWpOK1F1NDVONm03VG5KaExVTXdSRlZQcWJqMStS?= =?utf-8?B?dWk3Y1h0S2drcW1OQVZTdW1TRVFSczlIcFMyd0ppbmc5dzdBNU9rajlTeUlE?= =?utf-8?B?R3FZRWVJendUMEpKdkFpZ3Vkc09kNmNpR2ZvTGh2em5MaGwvRnplWTBRM1du?= =?utf-8?Q?kgf+BpYrBxDew=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BL0PR11MB3236.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 290ada5f-f852-45eb-948d-08d8a0883bc4 X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Dec 2020 23:30:25.0391 (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: C81pMsVvPlutPdj+uPZlUjZPnitABYmrMXwaMge3g37tLj4VR/v9mhsRMUqtXVbmspVjZ+JW3c7ueBTemQTEJVg4gql7SKH0JhN4A+4i8xQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL0PR11MB2916 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 SGkgQWJuZXIsDQoNCkNvbW1lbnRzIGluY2x1ZGVkIGJlbG93Lg0KDQpNaWtlDQoNCg0KDQo+IC0t LS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IGRldmVsQGVkazIuZ3JvdXBzLmlvIDxk ZXZlbEBlZGsyLmdyb3Vwcy5pbz4gT24gQmVoYWxmIE9mIEFibmVyIENoYW5nDQo+IFNlbnQ6IFN1 bmRheSwgRGVjZW1iZXIgMTMsIDIwMjAgNzo1MyBQTQ0KPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMu aW8NCj4gQ2M6IExlaWYgTGluZGhvbG0gPGxlaWZAbnV2aWFpbmMuY29tPjsgTmlja2xlIFdhbmcg PG5pY2tsZS53YW5nQGhwZS5jb20+OyBQZXRlciBPJ0hhbmxleSA8cGV0ZXIub2hhbmxleUBocGUu Y29tPg0KPiBTdWJqZWN0OiBbZWRrMi1kZXZlbF0gW1BBVENIIHY2IDMvNl0gUmVkZmlzaFBrZy9D cnRMaWI6IEMgcnVudGltZSBsaWJyYXJ5DQo+IA0KPiBDUlQgbGlicmFyeSBpcyBjdXJyZW50bHkg dXNlZCBieSBlZGsyIEpzb25MaWIgKG9wZW4gc291cmNlDQo+IGphbnNzb24gcHJvamVjdCkgYW5k IGVkazIgUmVkZmlzaExpYiAobGlicmVkZmlzaCBvcGVuIHNvdXJjZQ0KPiBwcm9qZWN0KS4gQ3J0 TGliIGxpYnJhcnkgcHJvdmlkZXMgdGhlIG5lY2Vzc2FyeSBDIHJ1bnRpbWUNCj4gZXF1aXZhbGVu dCBlZGsyIGZ1bmN0aW9ucyBmb3Igb3BlbiBzb3VyY2UgcHJvamVjdHMuDQo+IA0KPiBTaWduZWQt b2ZmLWJ5OiBBYm5lciBDaGFuZyA8YWJuZXIuY2hhbmdAaHBlLmNvbT4NCj4gDQo+IENjOiBMZWlm IExpbmRob2xtIDxsZWlmQG51dmlhaW5jLmNvbT4NCj4gQ2M6IE5pY2tsZSBXYW5nIDxuaWNrbGUu d2FuZ0BocGUuY29tPg0KPiBDYzogUGV0ZXIgTydIYW5sZXkgPHBldGVyLm9oYW5sZXlAaHBlLmNv bT4NCj4gLS0tDQo+ICBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L2Fzc2VydC5oICAgICAgfCAgMTYg Kw0KPiAgUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9lcnJuby5oICAgICAgIHwgIDE2ICsNCj4gIFJl ZGZpc2hQa2cvSW5jbHVkZS9DcnQvbGltaXRzLmggICAgICB8ICAxNiArDQo+ICBSZWRmaXNoUGtn L0luY2x1ZGUvQ3J0L21hdGguaCAgICAgICAgfCAgMTYgKw0KPiAgUmVkZmlzaFBrZy9JbmNsdWRl L0NydC9zdGRhcmcuaCAgICAgIHwgIDE1ICsNCj4gIFJlZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3Rk ZGVmLmggICAgICB8ICAxNiArDQo+ICBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N0ZGlvLmggICAg ICAgfCAgMTUgKw0KPiAgUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zdGRsaWIuaCAgICAgIHwgIDE2 ICsNCj4gIFJlZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3RyaW5nLmggICAgICB8ICAxNiArDQo+ICBS ZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N5cy90aW1lLmggICAgfCAgMTUgKw0KPiAgUmVkZmlzaFBr Zy9JbmNsdWRlL0NydC9zeXMvdHlwZXMuaCAgIHwgIDE1ICsNCj4gIFJlZGZpc2hQa2cvSW5jbHVk ZS9DcnQvdGltZS5oICAgICAgICB8ICAxNSArDQo+ICBSZWRmaXNoUGtnL0luY2x1ZGUvTGlicmFy eS9DcnRMaWIuaCAgfCAxOTUgKysrKysrKysNCj4gIFJlZGZpc2hQa2cvTGlicmFyeS9DcnRMaWIv Q3J0TGliLmMgICB8IDcwNSArKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gIFJlZGZpc2hQ a2cvTGlicmFyeS9DcnRMaWIvQ3J0TGliLmluZiB8ICAzNyArKw0KPiAgUmVkZmlzaFBrZy9SZWRm aXNoTGlicy5kc2MuaW5jICAgICAgIHwgICAxICsNCj4gIFJlZGZpc2hQa2cvUmVkZmlzaFBrZy5j aS55YW1sICAgICAgICB8ICAxOSArDQo+ICBSZWRmaXNoUGtnL1JlZGZpc2hQa2cuZGVjICAgICAg ICAgICAgfCAgIDggKw0KPiAgUmVkZmlzaFBrZy9SZWRmaXNoUGtnLmRzYyAgICAgICAgICAgIHwg ICAxICsNCj4gIDE5IGZpbGVzIGNoYW5nZWQsIDExNTMgaW5zZXJ0aW9ucygrKQ0KPiAgY3JlYXRl IG1vZGUgMTAwNjQ0IFJlZGZpc2hQa2cvSW5jbHVkZS9DcnQvYXNzZXJ0LmgNCj4gIGNyZWF0ZSBt b2RlIDEwMDY0NCBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L2Vycm5vLmgNCj4gIGNyZWF0ZSBtb2Rl IDEwMDY0NCBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L2xpbWl0cy5oDQo+ICBjcmVhdGUgbW9kZSAx MDA2NDQgUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9tYXRoLmgNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0 NCBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N0ZGFyZy5oDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQg UmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zdGRkZWYuaA0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IFJl ZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3RkaW8uaA0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IFJlZGZp c2hQa2cvSW5jbHVkZS9DcnQvc3RkbGliLmgNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBSZWRmaXNo UGtnL0luY2x1ZGUvQ3J0L3N0cmluZy5oDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgUmVkZmlzaFBr Zy9JbmNsdWRlL0NydC9zeXMvdGltZS5oDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgUmVkZmlzaFBr Zy9JbmNsdWRlL0NydC9zeXMvdHlwZXMuaA0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IFJlZGZpc2hQ a2cvSW5jbHVkZS9DcnQvdGltZS5oDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgUmVkZmlzaFBrZy9J bmNsdWRlL0xpYnJhcnkvQ3J0TGliLmgNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBSZWRmaXNoUGtn L0xpYnJhcnkvQ3J0TGliL0NydExpYi5jDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgUmVkZmlzaFBr Zy9MaWJyYXJ5L0NydExpYi9DcnRMaWIuaW5mDQo+IA0KPiBkaWZmIC0tZ2l0IGEvUmVkZmlzaFBr Zy9JbmNsdWRlL0NydC9hc3NlcnQuaCBiL1JlZGZpc2hQa2cvSW5jbHVkZS9DcnQvYXNzZXJ0LmgN Cj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMC4uZjlhYjdlZjljYQ0K PiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL1JlZGZpc2hQa2cvSW5jbHVkZS9DcnQvYXNzZXJ0LmgN Cj4gQEAgLTAsMCArMSwxNiBAQA0KPiArLyoqIEBmaWxlDQo+ICsgIEluY2x1ZGUgZmlsZSB0byBz dXBwb3J0IGJ1aWxkaW5nIHRoZSB0aGlyZC1wYXJ0eSBqYW5zc29uIGxpYnJhcnkuDQo+ICsNCj4g KyBDb3B5cmlnaHQgKGMpIDIwMTksIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2Vy dmVkLjxCUj4NCj4gKyAoQykgQ29weXJpZ2h0IDIwMjAgSGV3bGV0dCBQYWNrYXJkIEVudGVycHJp c2UgRGV2ZWxvcG1lbnQgTFA8QlI+DQo+ICsNCj4gKyAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiArDQo+ICsqKi8NCj4gKw0KPiArI2lmbmRlZiBDUlRf QVNTRVJUX0hfDQo+ICsjZGVmaW5lIENSVF9BU1NFUlRfSF8NCj4gKw0KPiArI2luY2x1ZGUgPExp YnJhcnkvQ3J0TGliLmg+DQo+ICsNCj4gKyNlbmRpZg0KPiBkaWZmIC0tZ2l0IGEvUmVkZmlzaFBr Zy9JbmNsdWRlL0NydC9lcnJuby5oIGIvUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9lcnJuby5oDQo+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLmQzMGFlZTE0ZGUNCj4g LS0tIC9kZXYvbnVsbA0KPiArKysgYi9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L2Vycm5vLmgNCj4g QEAgLTAsMCArMSwxNiBAQA0KPiArLyoqIEBmaWxlDQo+ICsgIEluY2x1ZGUgZmlsZSB0byBzdXBw b3J0IGJ1aWxkaW5nIHRoZSB0aGlyZC1wYXJ0eSBqYW5zc29uIGxpYnJhcnkuDQo+ICsNCj4gKyBD b3B5cmlnaHQgKGMpIDIwMTksIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVk LjxCUj4NCj4gKyAoQykgQ29weXJpZ2h0IDIwMjAgSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2Ug RGV2ZWxvcG1lbnQgTFA8QlI+DQo+ICsNCj4gKyAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog QlNELTItQ2xhdXNlLVBhdGVudA0KPiArDQo+ICsqKi8NCj4gKw0KPiArI2lmbmRlZiBDUlRfRVJS Tk9fSF8NCj4gKyNkZWZpbmUgQ1JUX0VSUk5PX0hfDQo+ICsNCj4gKyNpbmNsdWRlIDxMaWJyYXJ5 L0NydExpYi5oPg0KPiArDQo+ICsjZW5kaWYNCj4gZGlmZiAtLWdpdCBhL1JlZGZpc2hQa2cvSW5j bHVkZS9DcnQvbGltaXRzLmggYi9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L2xpbWl0cy5oDQo+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLmYzYmRkMzNmMmENCj4gLS0t IC9kZXYvbnVsbA0KPiArKysgYi9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L2xpbWl0cy5oDQo+IEBA IC0wLDAgKzEsMTYgQEANCj4gKy8qKiBAZmlsZQ0KPiArICBJbmNsdWRlIGZpbGUgdG8gc3VwcG9y dCBidWlsZGluZyB0aGUgdGhpcmQtcGFydHkgamFuc3NvbiBsaWJyYXJ5Lg0KPiArDQo+ICsgQ29w eXJpZ2h0IChjKSAyMDE5LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48 QlI+DQo+ICsgKEMpIENvcHlyaWdodCAyMDIwIEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIERl dmVsb3BtZW50IExQPEJSPg0KPiArDQo+ICsgICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJT RC0yLUNsYXVzZS1QYXRlbnQNCj4gKw0KPiArKiovDQo+ICsNCj4gKyNpZm5kZWYgQ1JUX0xJTUlU U19IXw0KPiArI2RlZmluZSBDUlRfTElNSVRTX0hfDQo+ICsNCj4gKyNpbmNsdWRlIDxMaWJyYXJ5 L0NydExpYi5oPg0KPiArDQo+ICsjZW5kaWYNCj4gZGlmZiAtLWdpdCBhL1JlZGZpc2hQa2cvSW5j bHVkZS9DcnQvbWF0aC5oIGIvUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9tYXRoLmgNCj4gbmV3IGZp bGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMC4uOTg0YzBjY2MyMQ0KPiAtLS0gL2Rl di9udWxsDQo+ICsrKyBiL1JlZGZpc2hQa2cvSW5jbHVkZS9DcnQvbWF0aC5oDQo+IEBAIC0wLDAg KzEsMTYgQEANCj4gKy8qKiBAZmlsZQ0KPiArICBJbmNsdWRlIGZpbGUgdG8gc3VwcG9ydCBidWls ZGluZyB0aGUgdGhpcmQtcGFydHkgamFuc3NvbiBsaWJyYXJ5Lg0KPiArDQo+ICsgQ29weXJpZ2h0 IChjKSAyMDE5LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ ICsgKEMpIENvcHlyaWdodCAyMDIwIEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIERldmVsb3Bt ZW50IExQPEJSPg0KPiArDQo+ICsgICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNs YXVzZS1QYXRlbnQNCj4gKw0KPiArKiovDQo+ICsNCj4gKyNpZm5kZWYgQ1JUX01BVEhfSF8NCj4g KyNkZWZpbmUgQ1JUX01BVEhfSF8NCj4gKw0KPiArI2luY2x1ZGUgPExpYnJhcnkvQ3J0TGliLmg+ DQo+ICsNCj4gKyNlbmRpZg0KPiBkaWZmIC0tZ2l0IGEvUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9z dGRhcmcuaCBiL1JlZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3RkYXJnLmgNCj4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMC4uZDVhMzE0YWQzYg0KPiAtLS0gL2Rldi9udWxs DQo+ICsrKyBiL1JlZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3RkYXJnLmgNCj4gQEAgLTAsMCArMSwx NSBAQA0KPiArLyoqIEBmaWxlDQo+ICsgIEluY2x1ZGUgZmlsZSB0byBzdXBwb3J0IGJ1aWxkaW5n IHRoZSB0aGlyZC1wYXJ0eSBqYW5zc29uIGxpYnJhcnkuDQo+ICsNCj4gKyBDb3B5cmlnaHQgKGMp IDIwMTksIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gKyAo QykgQ29weXJpZ2h0IDIwMjAgSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgRGV2ZWxvcG1lbnQg TFA8QlI+DQo+ICsNCj4gKyAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNl LVBhdGVudA0KPiArDQo+ICsqKi8NCj4gKyNpZm5kZWYgQ1JUX1NUREFSR19IXw0KPiArI2RlZmlu ZSBDUlRfU1REQVJHX0hfDQo+ICsNCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0NydExpYi5oPg0KPiAr DQo+ICsjZW5kaWYNCj4gZGlmZiAtLWdpdCBhL1JlZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3RkZGVm LmggYi9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N0ZGRlZi5oDQo+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLjE1YTM3YmY1MGUNCj4gLS0tIC9kZXYvbnVsbA0KPiAr KysgYi9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N0ZGRlZi5oDQo+IEBAIC0wLDAgKzEsMTYgQEAN Cj4gKy8qKiBAZmlsZQ0KPiArICBJbmNsdWRlIGZpbGUgdG8gc3VwcG9ydCBidWlsZGluZyB0aGUg dGhpcmQtcGFydHkgamFuc3NvbiBsaWJyYXJ5Lg0KPiArDQo+ICsgQ29weXJpZ2h0IChjKSAyMDE5 LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ICsgKEMpIENv cHlyaWdodCAyMDIwIEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIERldmVsb3BtZW50IExQPEJS Pg0KPiArDQo+ICsgICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRl bnQNCj4gKw0KPiArKiovDQo+ICsNCj4gKyNpZm5kZWYgQ1JUX1NURERFRl9IXw0KPiArI2RlZmlu ZSBDUlRfU1REREVGX0hfDQo+ICsNCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0NydExpYi5oPg0KPiAr DQo+ICsjZW5kaWYNCj4gZGlmZiAtLWdpdCBhL1JlZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3RkaW8u aCBiL1JlZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3RkaW8uaA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KPiBpbmRleCAwMDAwMDAwMDAwLi4yNWU2MTBiZTEwDQo+IC0tLSAvZGV2L251bGwNCj4gKysr IGIvUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zdGRpby5oDQo+IEBAIC0wLDAgKzEsMTUgQEANCj4g Ky8qKiBAZmlsZQ0KPiArICBJbmNsdWRlIGZpbGUgdG8gc3VwcG9ydCBidWlsZGluZyB0aGUgdGhp cmQtcGFydHkgamFuc3NvbiBsaWJyYXJ5Lg0KPiArDQo+ICsgQ29weXJpZ2h0IChjKSAyMDE5LCBJ bnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ICsgKEMpIENvcHly aWdodCAyMDIwIEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIERldmVsb3BtZW50IExQPEJSPg0K PiArDQo+ICsgICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQN Cj4gKw0KPiArKiovDQo+ICsjaWZuZGVmIENSVF9TVERJT19IXw0KPiArI2RlZmluZSBDUlRfU1RE SU9fSF8NCj4gKw0KPiArI2luY2x1ZGUgPExpYnJhcnkvQ3J0TGliLmg+DQo+ICsNCj4gKyNlbmRp Zg0KPiBkaWZmIC0tZ2l0IGEvUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zdGRsaWIuaCBiL1JlZGZp c2hQa2cvSW5jbHVkZS9DcnQvc3RkbGliLmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5k ZXggMDAwMDAwMDAwMC4uNWIzZGQyNzNjOA0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL1JlZGZp c2hQa2cvSW5jbHVkZS9DcnQvc3RkbGliLmgNCj4gQEAgLTAsMCArMSwxNiBAQA0KPiArLyoqIEBm aWxlDQo+ICsgIEluY2x1ZGUgZmlsZSB0byBzdXBwb3J0IGJ1aWxkaW5nIHRoZSB0aGlyZC1wYXJ0 eSBqYW5zc29uIGxpYnJhcnkuDQo+ICsNCj4gKyBDb3B5cmlnaHQgKGMpIDIwMTksIEludGVsIENv cnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gKyAoQykgQ29weXJpZ2h0IDIw MjAgSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgRGV2ZWxvcG1lbnQgTFA8QlI+DQo+ICsNCj4g KyAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiArDQo+ ICsqKi8NCj4gKw0KPiArI2lmbmRlZiBDUlRfU1RETElCX0hfDQo+ICsjZGVmaW5lIENSVF9TVERM SUJfSF8NCj4gKw0KPiArI2luY2x1ZGUgPExpYnJhcnkvQ3J0TGliLmg+DQo+ICsNCj4gKyNlbmRp Zg0KPiBkaWZmIC0tZ2l0IGEvUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zdHJpbmcuaCBiL1JlZGZp c2hQa2cvSW5jbHVkZS9DcnQvc3RyaW5nLmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5k ZXggMDAwMDAwMDAwMC4uZjYwYjg3Y2NkMg0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL1JlZGZp c2hQa2cvSW5jbHVkZS9DcnQvc3RyaW5nLmgNCj4gQEAgLTAsMCArMSwxNiBAQA0KPiArLyoqIEBm aWxlDQo+ICsgIEluY2x1ZGUgZmlsZSB0byBzdXBwb3J0IGJ1aWxkaW5nIHRoZSB0aGlyZC1wYXJ0 eSBqYW5zc29uIGxpYnJhcnkuDQo+ICsNCj4gKyBDb3B5cmlnaHQgKGMpIDIwMTksIEludGVsIENv cnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gKyAoQykgQ29weXJpZ2h0IDIw MjAgSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgRGV2ZWxvcG1lbnQgTFA8QlI+DQo+ICsNCj4g KyAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiArDQo+ ICsqKi8NCj4gKw0KPiArI2lmbmRlZiBDUlRfU1RSSU5HX0hfDQo+ICsjZGVmaW5lIENSVF9TVFJJ TkdfSF8NCj4gKw0KPiArI2luY2x1ZGUgPExpYnJhcnkvQ3J0TGliLmg+DQo+ICsNCj4gKyNlbmRp Zg0KPiBkaWZmIC0tZ2l0IGEvUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zeXMvdGltZS5oIGIvUmVk ZmlzaFBrZy9JbmNsdWRlL0NydC9zeXMvdGltZS5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ IGluZGV4IDAwMDAwMDAwMDAuLjRjZWQxNzZjZGENCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9S ZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N5cy90aW1lLmgNCj4gQEAgLTAsMCArMSwxNSBAQA0KPiAr LyoqIEBmaWxlDQo+ICsgIEluY2x1ZGUgZmlsZSB0byBzdXBwb3J0IGJ1aWxkaW5nIHRoZSB0aGly ZC1wYXJ0eSBqYW5zc29uIGxpYnJhcnkuDQo+ICsNCj4gKyBDb3B5cmlnaHQgKGMpIDIwMTksIElu dGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gKyAoQykgQ29weXJp Z2h0IDIwMjAgSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgRGV2ZWxvcG1lbnQgTFA8QlI+DQo+ ICsNCj4gKyAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0K PiArDQo+ICsqKi8NCj4gKyNpZm5kZWYgQ1JUX1NZU19USU1FX0hfDQo+ICsjZGVmaW5lIENSVF9T WVNfVElNRV9IXw0KPiArDQo+ICsjaW5jbHVkZSA8TGlicmFyeS9DcnRMaWIuaD4NCj4gKw0KPiAr I2VuZGlmDQo+IGRpZmYgLS1naXQgYS9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N5cy90eXBlcy5o IGIvUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zeXMvdHlwZXMuaA0KPiBuZXcgZmlsZSBtb2RlIDEw MDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwLi5jNGY4MDcyMTRjDQo+IC0tLSAvZGV2L251bGwNCj4g KysrIGIvUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zeXMvdHlwZXMuaA0KPiBAQCAtMCwwICsxLDE1 IEBADQo+ICsvKiogQGZpbGUNCj4gKyAgSW5jbHVkZSBmaWxlIHRvIHN1cHBvcnQgYnVpbGRpbmcg dGhlIHRoaXJkLXBhcnR5IGphbnNzb24gbGlicmFyeS4NCj4gKw0KPiArIENvcHlyaWdodCAoYykg MjAxOSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiArIChD KSBDb3B5cmlnaHQgMjAyMCBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSBEZXZlbG9wbWVudCBM UDxCUj4NCj4gKw0KPiArICAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2Ut UGF0ZW50DQo+ICsNCj4gKyoqLw0KPiArI2lmbmRlZiBDUlRfU1lTX1RZUEVTX0hfDQo+ICsjZGVm aW5lIENSVF9TWVNfVFlQRVNfSF8NCj4gKw0KPiArI2luY2x1ZGUgPExpYnJhcnkvQ3J0TGliLmg+ DQo+ICsNCj4gKyNlbmRpZg0KPiBkaWZmIC0tZ2l0IGEvUmVkZmlzaFBrZy9JbmNsdWRlL0NydC90 aW1lLmggYi9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3RpbWUuaA0KPiBuZXcgZmlsZSBtb2RlIDEw MDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwLi5jYTA0YWM4NzMwDQo+IC0tLSAvZGV2L251bGwNCj4g KysrIGIvUmVkZmlzaFBrZy9JbmNsdWRlL0NydC90aW1lLmgNCj4gQEAgLTAsMCArMSwxNSBAQA0K PiArLyoqIEBmaWxlDQo+ICsgIEluY2x1ZGUgZmlsZSB0byBzdXBwb3J0IGJ1aWxkaW5nIHRoZSB0 aGlyZC1wYXJ0eSBqYW5zc29uIGxpYnJhcnkuDQo+ICsNCj4gKyBDb3B5cmlnaHQgKGMpIDIwMTks IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gKyAoQykgQ29w eXJpZ2h0IDIwMjAgSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgRGV2ZWxvcG1lbnQgTFA8QlI+ DQo+ICsNCj4gKyAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVu dA0KPiArDQo+ICsqKi8NCj4gKyNpZm5kZWYgQ1JUX1RJTUVfSF8NCj4gKyNkZWZpbmUgQ1JUX1RJ TUVfSF8NCj4gKw0KPiArI2luY2x1ZGUgPExpYnJhcnkvQ3J0TGliLmg+DQo+ICsNCj4gKyNlbmRp Zg0KPiBkaWZmIC0tZ2l0IGEvUmVkZmlzaFBrZy9JbmNsdWRlL0xpYnJhcnkvQ3J0TGliLmggYi9S ZWRmaXNoUGtnL0luY2x1ZGUvTGlicmFyeS9DcnRMaWIuaA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KPiBpbmRleCAwMDAwMDAwMDAwLi44Yzc0ODRlNzViDQo+IC0tLSAvZGV2L251bGwNCj4gKysr IGIvUmVkZmlzaFBrZy9JbmNsdWRlL0xpYnJhcnkvQ3J0TGliLmgNCj4gQEAgLTAsMCArMSwxOTUg QEANCj4gKy8qKiBAZmlsZQ0KPiArICBDUlQgd3JhcHBlciBoZWFkIGZ1bmN0aW9ucyBmb3IgamFu c3NvbiBzeXN0ZW0gY2FsbC4NCj4gKw0KPiArICBDb3B5cmlnaHQgKGMpIDIwMTksIEludGVsIENv cnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gKyAgKEMpIENvcHlyaWdodCAy MDIwIEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIERldmVsb3BtZW50IExQPEJSPg0KPiArDQo+ ICsgICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gKw0K PiArKiovDQo+ICsNCj4gKyNpZm5kZWYgQ1JUX0xJQl9IXw0KPiArI2RlZmluZSBDUlRfTElCX0hf DQo+ICsNCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJy YXJ5L0Jhc2VNZW1vcnlMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0RlYnVnTGliLmg+DQo+ ICsjaW5jbHVkZSA8TGlicmFyeS9QcmludExpYi5oPg0KPiArDQo+ICsjZGVmaW5lIE1BWF9TVFJJ TkdfU0laRSAgMHgxMDAwMDAwMA0KPiArDQo+ICsvLyBNaW5pbXVtIHZhbHVlIGZvciBhbiBvYmpl Y3Qgb2YgdHlwZSBsb25nIGxvbmcgaW50Lg0KPiArI2RlZmluZSBMTE9OR19NSU4gICBNSU5fSU5U NjQNCj4gKw0KPiArLy8gTWF4aW11bSB2YWx1ZSBmb3IgYW4gb2JqZWN0IG9mIHR5cGUgbG9uZyBs b25nIGludC4NCj4gKyNkZWZpbmUgTExPTkdfTUFYICAgTUFYX0lOVDY0DQo+ICsNCj4gKy8vIFdl IGRvbnQgc3VwcG9ydCBkb3VibGUgb24gZWRrMg0KPiArI2RlZmluZSBIVUdFX1ZBTCAgICAwDQo+ ICsNCj4gKyNpZiBkZWZpbmVkKE1ERV9DUFVfWDY0KSB8fCBkZWZpbmVkKE1ERV9DUFVfQUFSQ0g2 NCkgfHwgZGVmaW5lZChNREVfQ1BVX0lBNjQpIHx8IGRlZmluZWQoTURFX0NQVV9SSVNDVjY0KQ0K PiArLy8NCj4gKy8vIFdpdGggR0NDIHdlIHdvdWxkIG5vcm1hbGx5IHVzZSBTSVhUWV9GT1VSX0JJ VF9MT05HLCBidXQgTVNWQyBuZWVkcw0KPiArLy8gU0lYVFlfRk9VUl9CSVQsIGJlY2F1c2UgJ2xv bmcnIGlzIDMyLWJpdCBhbmQgb25seSAnbG9uZyBsb25nJyBpcw0KPiArLy8gNjQtYml0LiBTaW5j ZSB1c2luZyAnbG9uZyBsb25nJyB3b3JrcyBmaW5lIG9uIEdDQyB0b28sIGp1c3QgZG8gdGhhdC4N Cj4gKy8vDQo+ICsjZGVmaW5lIFNJWFRZX0ZPVVJfQklUDQo+ICsjZWxpZiBkZWZpbmVkKE1ERV9D UFVfSUEzMikgfHwgZGVmaW5lZChNREVfQ1BVX0FSTSkgfHwgZGVmaW5lZChNREVfQ1BVX0VCQykN Cj4gKyNkZWZpbmUgVEhJUlRZX1RXT19CSVQNCj4gKyNlbmRpZg0KPiArDQo+ICsvLw0KPiArLy8g TWFwIGFsbCB2YV94eHh4IGVsZW1lbnRzIHRvIFZBX3h4eCBkZWZpbmVkIGluIE1kZVBrZy9JbmNs dWRlL0Jhc2UuaA0KPiArLy8NCj4gKyNpZiAhZGVmaW5lZChfX0NDX0FSTSkgLy8gaWYgdmFfbGlz dCBpcyBub3QgYWxyZWFkeSBkZWZpbmVkDQo+ICsjZGVmaW5lIHZhX2xpc3QgICBWQV9MSVNUDQo+ ICsjZGVmaW5lIHZhX2FyZyAgICBWQV9BUkcNCj4gKyNkZWZpbmUgdmFfc3RhcnQgIFZBX1NUQVJU DQo+ICsjZGVmaW5lIHZhX2VuZCAgICBWQV9FTkQNCj4gKyNlbHNlIC8vIF9fQ0NfQVJNDQo+ICsj ZGVmaW5lIHZhX3N0YXJ0KE1hcmtlciwgUGFyYW1ldGVyKSAgIF9fdmFfc3RhcnQoTWFya2VyLCBQ YXJhbWV0ZXIpDQo+ICsjZGVmaW5lIHZhX2FyZyhNYXJrZXIsIFRZUEUpICAgICAgICAgIF9fdmFf YXJnKE1hcmtlciwgVFlQRSkNCj4gKyNkZWZpbmUgdmFfZW5kKE1hcmtlcikgICAgICAgICAgICAg ICAgKCh2b2lkKTApDQo+ICsjZW5kaWYNCj4gKw0KPiArLy8NCj4gKy8vIERlZmluaXRpb25zIGZv ciBnbG9iYWwgY29uc3RhbnRzIHVzZWQgYnkgQ1JUIGxpYnJhcnkgcm91dGluZXMNCj4gKy8vDQo+ ICsjZGVmaW5lIElOVF9NQVggICAgICBNQVhfSU5UMzIgICAgICAgIC8qIE1heGltdW0gKHNpZ25l ZCkgaW50IHZhbHVlICovDQo+ICsjZGVmaW5lIExPTkdfTUFYICAgICAwWDdGRkZGRkZGTCAgICAg IC8qIG1heCB2YWx1ZSBmb3IgYSBsb25nICovDQo+ICsjZGVmaW5lIExPTkdfTUlOICAgICAoLUxP TkdfTUFYLTEpICAgIC8qIG1pbiB2YWx1ZSBmb3IgYSBsb25nICovDQo+ICsjZGVmaW5lIFVMT05H X01BWCAgICAweEZGRkZGRkZGICAgICAgIC8qIE1heGltdW0gdW5zaWduZWQgbG9uZyB2YWx1ZSAq Lw0KPiArI2RlZmluZSBDSEFSX0JJVCAgICAgOCAgICAgICAgICAgICAgICAvKiBOdW1iZXIgb2Yg Yml0cyBpbiBhIGNoYXIgKi8NCj4gKw0KPiArLy8gTWF4aW11bSB2YWx1ZSBmb3IgYW4gb2JqZWN0 IG9mIHR5cGUgdW5zaWduZWQgbG9uZyBsb25nIGludC4NCj4gKyNkZWZpbmUgVUxMT05HX01BWCAg MHhGRkZGRkZGRkZGRkZGRkZGVUxMIC8vIDJeNjQgLSAxDQo+ICsvLyBNYXhpbXVtIHZhbHVlIGZv ciBhbiBvYmplY3Qgb2YgdHlwZSB1bnNpZ25lZCBjaGFyLg0KPiArI2RlZmluZSBVQ0hBUl9NQVgg ICAyNTUgIC8vIDJeOCAtIDENCj4gKw0KPiArLy8NCj4gKy8vIEJhc2ljIHR5cGVzIG1hcHBpbmcN Cj4gKy8vDQo+ICt0eXBlZGVmIFVJTlROICAgICAgICAgIHNpemVfdDsNCj4gK3R5cGVkZWYgSU5U TiAgICAgICAgICAgc3NpemVfdDsNCj4gK3R5cGVkZWYgSU5UMzIgICAgICAgICAgdGltZV90Ow0K PiArdHlwZWRlZiBVSU5UOCAgICAgICAgICBfX3VpbnQ4X3Q7DQo+ICt0eXBlZGVmIFVJTlQ4ICAg ICAgICAgIHNhX2ZhbWlseV90Ow0KPiArdHlwZWRlZiBVSU5UMzIgICAgICAgICB1aWRfdDsNCj4g K3R5cGVkZWYgVUlOVDMyICAgICAgICAgZ2lkX3Q7DQo+ICt0eXBlZGVmIElOVDMyICAgICAgICAg IGludDMyX3Q7DQo+ICt0eXBlZGVmIFVJTlQzMiAgICAgICAgIHVpbnQzMl90Ow0KPiArdHlwZWRl ZiBVSU5UMTYgICAgICAgICB1aW50MTZfdDsNCj4gK3R5cGVkZWYgVUlOVDggICAgICAgICAgdWlu dDhfdDsNCj4gK3R5cGVkZWYgZW51bSB7ZmFsc2UsIHRydWV9IGJvb2w7DQo+ICsNCj4gKy8vDQo+ ICsvLyBGaWxlIG9wZXJhdGlvbnMgYXJlIG5vdCByZXF1aXJlZCBmb3IgRUZJIGJ1aWxkaW5nLA0K PiArLy8gc28gRklMRSBpcyBtYXBwZWQgdG8gVk9JRCAqIHRvIHBhc3MgYnVpbGQNCj4gKy8vDQo+ ICt0eXBlZGVmIFZPSUQgICpGSUxFOw0KPiArDQo+ICsvLw0KPiArLy8gR2xvYmFsIHZhcmlhYmxl cw0KPiArLy8NCj4gK2V4dGVybiBpbnQgIGVycm5vOw0KPiArZXh0ZXJuIEZJTEUgKnN0ZGVycjsN Cj4gKw0KPiArLy8NCj4gKy8vIEZ1bmN0aW9uIHByb3RvdHlwZXMgb2YgQ1JUIExpYnJhcnkgcm91 dGluZXMNCj4gKy8vDQo+ICt2b2lkICAgICAgICAgICAqbWFsbG9jICAgICAoc2l6ZV90KTsNCj4g K3ZvaWQgICAgICAgICAgICpyZWFsbG9jICAgICh2b2lkICosIHNpemVfdCk7DQo+ICt2b2lkICAg ICAgICAgICAqY2FsbG9jICAgICAoc2l6ZV90IE51bSwgc2l6ZV90IFNpemUpOw0KPiArdm9pZCAg ICAgICAgICAgZnJlZSAgICAgICAgKHZvaWQgKik7DQo+ICt2b2lkICAgICAgICAgICAqbWVtc2V0 ICAgICAodm9pZCAqLCBpbnQsIHNpemVfdCk7DQo+ICtpbnQgICAgICAgICAgICBtZW1jbXAgICAg ICAoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICosIHNpemVfdCk7DQo+ICtpbnQgICAgICAgICAg ICBpc2RpZ2l0ICAgICAoaW50KTsNCj4gK2ludCAgICAgICAgICAgIGlzc3BhY2UgICAgIChpbnQp Ow0KPiAraW50ICAgICAgICAgICAgdG9sb3dlciAgICAgKGludCk7DQo+ICtpbnQgICAgICAgICAg ICBpc3VwcGVyICAgICAoaW50KTsNCj4gK2ludCAgICAgICAgICAgIGlzeGRpZ2l0ICAgIChpbnQp Ow0KPiAraW50ICAgICAgICAgICAgaXNhbG51bSAgICAgKGludCk7DQo+ICt2b2lkICAgICAgICAg ICAqbWVtY3B5ICAgICAodm9pZCAqLCBjb25zdCB2b2lkICosIHNpemVfdCk7DQo+ICt2b2lkICAg ICAgICAgICAqbWVtc2V0ICAgICAodm9pZCAqLCBpbnQsIHNpemVfdCk7DQo+ICt2b2lkICAgICAg ICAgICAqbWVtY2hyICAgICAoY29uc3Qgdm9pZCAqLCBpbnQsIHNpemVfdCk7DQo+ICtpbnQgICAg ICAgICAgICBtZW1jbXAgICAgICAoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICosIHNpemVfdCk7 DQo+ICt2b2lkICAgICAgICAgICAqbWVtbW92ZSAgICAodm9pZCAqLCBjb25zdCB2b2lkICosIHNp emVfdCk7DQo+ICtpbnQgICAgICAgICAgICBzdHJjbXAgICAgICAoY29uc3QgY2hhciAqLCBjb25z dCBjaGFyICopOw0KPiAraW50ICAgICAgICAgICAgc3RybmNtcCAgICAgKGNvbnN0IGNoYXIgKiwg Y29uc3QgY2hhciAqLCBzaXplX3QpOw0KPiArY2hhciAgICAgICAgICAgKnN0cmNweSAgICAgKGNo YXIgKiwgY29uc3QgY2hhciAqKTsNCj4gK3NpemVfdCAgICAgICAgIHN0cmxlbiAgICAgIChjb25z dCBjaGFyICopOw0KPiArY2hhciAgICAgICAgICAgKnN0cmNhdCAgICAgKGNoYXIgKiwgY29uc3Qg Y2hhciAqKTsNCj4gK2NoYXIgICAgICAgICAgICpzdHJjaHIgICAgIChjb25zdCBjaGFyICosIGlu dCk7DQo+ICtpbnQgICAgICAgICAgICBzdHJjYXNlY21wICAoY29uc3QgY2hhciAqLCBjb25zdCBj aGFyICopOw0KPiAraW50ICAgICAgICAgICAgc3RybmNhc2VjbXAgKGNvbnN0IGNoYXIgKiwgY29u c3QgY2hhciAqLCBzaXplX3QpOw0KPiArY2hhciAgICAgICAgICAgKnN0cm5jcHkgICAgKGNoYXIg Kiwgc2l6ZV90LCBjb25zdCBjaGFyICosIHNpemVfdCk7DQo+ICtpbnQgICAgICAgICAgICBzdHJu Y21wICAgICAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7DQo+ICtjaGFyICAg ICAgICAgICAqc3RycmNociAgICAoY29uc3QgY2hhciAqLCBpbnQpOw0KPiArdW5zaWduZWQgbG9u ZyAgc3RydG91bCAgICAgKGNvbnN0IGNoYXIgKiwgY2hhciAqKiwgaW50KTsNCj4gK2NoYXIgKiAg ICAgICAgIHN0cnN0ciAgICAgIChjb25zdCBjaGFyICpzMSAsIGNvbnN0IGNoYXIgKnMyKTsNCj4g K2xvbmcgICAgICAgICAgIHN0cnRvbCAgICAgIChjb25zdCBjaGFyICosIGNoYXIgKiosIGludCk7 DQo+ICtjaGFyICAgICAgICAgICAqc3RyZXJyb3IgICAoaW50KTsNCj4gK3NpemVfdCAgICAgICAg IHN0cnNwbiAgICAgIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7DQo+ICtjaGFyICogICAg ICAgICBzdHJkdXAgICAgICAoY29uc3QgY2hhciAqc3RyKTsNCj4gK2NoYXIgKiAgICAgICAgIHN0 cnBicmsgICAgIChjb25zdCBjaGFyICpzMSwgY29uc3QgY2hhciAqczIpOw0KPiArdW5zaWduZWQg bG9uZyBsb25nIHN0cnRvdWxsKGNvbnN0IGNoYXIgKiBucHRyLCBjaGFyICoqIGVuZHB0ciwgaW50 IGJhc2UpOw0KPiArbG9uZyBsb25nICAgICAgc3RydG9sbCAgICAgKGNvbnN0IGNoYXIgKiBucHRy LCBjaGFyICoqIGVuZHB0ciwgaW50IGJhc2UpOw0KPiArbG9uZyAgICAgICAgICAgc3RydG9sICAg ICAgKGNvbnN0IGNoYXIgKiBucHRyLCBjaGFyICoqIGVuZHB0ciwgaW50IGJhc2UpOw0KPiArZG91 YmxlICAgICAgICAgc3RydG9kICAgICAgKGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0IG5wdHIsIGNo YXIgKiogX19yZXN0cmljdCBlbmRwdHIpOw0KPiArc2l6ZV90ICAgICAgICAgc3RyY3NwbiAgICAg KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsNCj4gK2ludCAgICAgICAgICAgIHByaW50ZiAg ICAgIChjb25zdCBjaGFyICosIC4uLik7DQo+ICtpbnQgICAgICAgICAgICBzc2NhbmYgICAgICAo Y29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIC4uLik7DQo+ICtGSUxFICAgICAgICAgICAqZm9w ZW4gICAgICAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOw0KPiArc2l6ZV90ICAgICAgICAg ZnJlYWQgICAgICAgKHZvaWQgKiwgc2l6ZV90LCBzaXplX3QsIEZJTEUgKik7DQo+ICtzaXplX3Qg ICAgICAgICBmd3JpdGUgICAgICAoY29uc3Qgdm9pZCAqLCBzaXplX3QsIHNpemVfdCwgRklMRSAq KTsNCj4gK2ludCAgICAgICAgICAgIGZjbG9zZSAgICAgIChGSUxFICopOw0KPiAraW50ICAgICAg ICAgICAgZnByaW50ZiAgICAgKEZJTEUgKiwgY29uc3QgY2hhciAqLCAuLi4pOw0KPiAraW50ICAg ICAgICAgICAgZmdldGMgICAgICAgKEZJTEUgKiBfRmlsZSk7DQo+ICt1aWRfdCAgICAgICAgICBn ZXR1aWQgICAgICAodm9pZCk7DQo+ICt1aWRfdCAgICAgICAgICBnZXRldWlkICAgICAodm9pZCk7 DQo+ICtnaWRfdCAgICAgICAgICBnZXRnaWQgICAgICAodm9pZCk7DQo+ICtnaWRfdCAgICAgICAg ICBnZXRlZ2lkICAgICAodm9pZCk7DQo+ICt2b2lkICAgICAgICAgICBxc29ydCAgICAgICAodm9p ZCAqLCBzaXplX3QsIHNpemVfdCwgaW50ICgqKShjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikp Ow0KPiArY2hhciAgICAgICAgICAgKmdldGVudiAgICAgKGNvbnN0IGNoYXIgKik7DQo+ICsjaWYg ZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fID49IDIpDQo+ICt2b2lkICAgICAgICAgICBh Ym9ydCAgICAgICAodm9pZCkgX19hdHRyaWJ1dGVfXygoX19ub3JldHVybl9fKSk7DQo+ICsjZWxz ZQ0KPiArdm9pZCAgICAgICAgICAgYWJvcnQgICAgICAgKHZvaWQpOw0KPiArI2VuZGlmDQo+ICtp bnQgICAgICAgICAgICB0b3VwcGVyICAgICAoaW50KTsNCj4gK2ludCAgICAgICAgICAgIERpZ2l0 MlZhbCAgIChpbnQpOw0KPiArdGltZV90ICAgICAgICAgdGltZSAgICAgICAgKHRpbWVfdCAqKTsN Cj4gKw0KPiArLy8NCj4gKy8vIE1hY3JvcyB0aGF0IGRpcmVjdGx5IG1hcCBmdW5jdGlvbnMgdG8g QmFzZUxpYiwgQmFzZU1lbW9yeUxpYiwgYW5kIERlYnVnTGliIGZ1bmN0aW9ucw0KPiArLy8NCj4g KyNkZWZpbmUgc3RyY21wICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzY2lpU3RyQ21wDQo+ ICsjZGVmaW5lIG1lbWNweShkZXN0LHNvdXJjZSxjb3VudCkgICAgICAgICBDb3B5TWVtKGRlc3Qs c291cmNlLChVSU5UTikoY291bnQpKQ0KPiArI2RlZmluZSBtZW1zZXQoZGVzdCxjaCxjb3VudCkg ICAgICAgICAgICAgU2V0TWVtKGRlc3QsKFVJTlROKShjb3VudCksKFVJTlQ4KShjaCkpDQo+ICsj ZGVmaW5lIG1lbWNocihidWYsY2gsY291bnQpICAgICAgICAgICAgICBTY2FuTWVtOChidWYsKFVJ TlROKShjb3VudCksKFVJTlQ4KWNoKQ0KPiArI2RlZmluZSBtZW1jbXAoYnVmMSxidWYyLGNvdW50 KSAgICAgICAgICAgKGludCkoQ29tcGFyZU1lbShidWYxLGJ1ZjIsKFVJTlROKShjb3VudCkpKQ0K PiArI2RlZmluZSBtZW1tb3ZlKGRlc3Qsc291cmNlLGNvdW50KSAgICAgICAgQ29weU1lbShkZXN0 LHNvdXJjZSwoVUlOVE4pKGNvdW50KSkNCj4gKyNkZWZpbmUgc3RybGVuKHN0cikgICAgICAgICAg ICAgICAgICAgICAgIChzaXplX3QpKEFzY2lpU3RybkxlblMoc3RyLE1BWF9TVFJJTkdfU0laRSkp DQoNCldoYXQgaXMgTUFYX1NUUklOR19TSVpFPyAgSG93IGRvIHlvdSBrbm93IHRoZXJlIGFyZSBu byBidWZmZXIgb3ZlcnJ1bnMgbG9va2luZyBmb3IgdGhlIGVuZCANCm9mIHRoZSBzdHJpbmc/ICBJ IGd1ZXNzIHRoaXMgaXMgbW9yZSBvZiBhIGphbnNzb24gbGliIHF1ZXN0aW9uPz8/DQoNCj4gKyNk ZWZpbmUgc3RyY3B5KHN0ckRlc3Qsc3RyU291cmNlKSAgICAgICAgIEFzY2lpU3RyQ3B5UyhzdHJE ZXN0LChzdHJsZW4oc3RyU291cmNlKSsxKSxzdHJTb3VyY2UpDQo+ICsjZGVmaW5lIHN0cm5jcHko c3RyRGVzdCxzdHJTb3VyY2UsY291bnQpICBBc2NpaVN0cm5DcHlTKHN0ckRlc3QsKFVJTlROKWNv dW50LHN0clNvdXJjZSwoVUlOVE4pY291bnQpDQo+ICsjZGVmaW5lIHN0cm5jcHlzKHN0ckRlc3Qs IERlc3RMZW4sIHN0clNvdXJjZSxjb3VudCkgIEFzY2lpU3RybkNweVMoc3RyRGVzdCxEZXN0TGVu LHN0clNvdXJjZSwoVUlOVE4pY291bnQpDQo+ICsjZGVmaW5lIHN0cmNhdChzdHJEZXN0LHN0clNv dXJjZSkgICAgICAgICBBc2NpaVN0ckNhdFMoc3RyRGVzdCwoc3RybGVuKHN0clNvdXJjZSkrc3Ry bGVuKHN0ckRlc3QpKzEpLHN0clNvdXJjZSkNCj4gKyNkZWZpbmUgc3RyY2hyKHN0cixjaCkgICAg ICAgICAgICAgICAgICAgIFNjYW5NZW04KChWT0lEICopKHN0ciksQXNjaWlTdHJTaXplKHN0ciks KFVJTlQ4KWNoKQ0KPiArI2RlZmluZSBzdHJuY21wKHN0cmluZzEsc3RyaW5nMixjb3VudCkgICAg KGludCkoQXNjaWlTdHJuQ21wKHN0cmluZzEsc3RyaW5nMiwoVUlOVE4pKGNvdW50KSkpDQo+ICsj ZGVmaW5lIHN0cmNhc2VjbXAoc3RyMSxzdHIyKSAgICAgICAgICAgICAoaW50KUFzY2lpU3RyaUNt cChzdHIxLHN0cjIpDQo+ICsjZGVmaW5lIHN0cnN0cihzMSxzMikgICAgICAgICAgICAgICAgICAg ICBBc2NpaVN0clN0cihzMSxzMikNCj4gKyNkZWZpbmUgc3ByaW50ZihidWYsLi4uKSAgICAgICAg ICAgICAgICAgIEFzY2lpU1ByaW50KGJ1ZixNQVhfU1RSSU5HX1NJWkUsX19WQV9BUkdTX18pDQo+ ICsjZGVmaW5lIHNucHJpbnRmKGJ1ZixsZW4sLi4uKSAgICAgICAgICAgICBBc2NpaVNQcmludChi dWYsbGVuLF9fVkFfQVJHU19fKQ0KPiArI2RlZmluZSB2c25wcmludGYoYnVmLGxlbixmb3JtYXQs bWFya2VyKSAgQXNjaWlWU1ByaW50KChidWYpLChsZW4pLChmb3JtYXQpLChtYXJrZXIpKQ0KDQpU aGUgRURLIElJIFByaW50TGliIGZvcm1hdCBzdHJpbmcgaXMgbm90IGlkZW50aWNhbCB0byBsaWJj IHByaW50ZigpIGZvcm1hdCBzdHJpbmcuDQpBcmUgeW91IHN1cmUgdGhlIHVzYWdlIGJ5IGphbnNz b24gaXMgY29tcGF0aWJsZT8NCg0KPiArI2RlZmluZSBhc3NlcnQoZXhwcmVzc2lvbikgICAgICAg ICAgICAgICAgQVNTRVJUKGV4cHJlc3Npb24pDQo+ICsjZGVmaW5lIGF0b2kobnB0cikgICAgICAg ICAgICAgICAgICAgICAgICBBc2NpaVN0ckRlY2ltYWxUb1VpbnRuKG5wdHIpDQoNCklzIHRoaXMg cmVhbGx5IGNvbXBhdGlibGUgaW4gYmVoYXZpb3I/DQoNCj4gKyNkZWZpbmUgZmFicyh4KSAgICAg ICAgICAgICAgICAgICAgICAgICAgICgoKHgpIDwgMC4wKT8gKC14KTogKHgpKQ0KDQpJcyBmYWJz KCkgYWN0dWFsbHkgdXNlZD8gIFVzaW5nIGZsb2F0aW5nIHBvaW50IGZyb20gVUVGSS9QSSBlbnZp cm9ubWVudCBpcyBjb21wbGV4DQphbmQgcmVxdWlyZXMgaW50ZXJydXB0cyB0byBiZSBkaXNhYmxl ZC9yZXN0b3JlZCBhbmQgcG90ZW50aWFsbHkgc29tZSBjb250ZXh0DQpzYXZlL3Jlc3RvcmUgYXJv dW5kIHVzZSBvZiBmbG9hdGluZyBwb2ludCByZWdpc3RlcnMuICBJZiB0aGVyZSBpcyBhbnl3YXlz IHRvDQplbGltaW5hdGUgYWxsIHVzZXMgb2YgZmxvYXRpbmcgcG9pbnQsIHRoYXQgd291bGQgYmUg bXVjaCBiZXR0ZXIuDQoNCj4gKyNkZWZpbmUgb2Zmc2V0b2YodHlwZSxtZW1iZXIpICAgICAgICAg ICAgIE9GRlNFVF9PRih0eXBlLG1lbWJlcikNCj4gKw0KPiArI2RlZmluZSBFT0YgKC0xKQ0KPiAr DQo+ICtleHRlcm4gaW50ICBlcnJubzsNCj4gKw0KPiArI2RlZmluZSBFUkFOR0UgICAzNCAgICAg ICAgICAgICAgICAvKiAzNCAgIFJlc3VsdCB0b28gbGFyZ2UgKi8NCj4gKw0KPiArI2VuZGlmDQo+ IGRpZmYgLS1naXQgYS9SZWRmaXNoUGtnL0xpYnJhcnkvQ3J0TGliL0NydExpYi5jIGIvUmVkZmlz aFBrZy9MaWJyYXJ5L0NydExpYi9DcnRMaWIuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBp bmRleCAwMDAwMDAwMDAwLi4xZmY0MDIzZGJlDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvUmVk ZmlzaFBrZy9MaWJyYXJ5L0NydExpYi9DcnRMaWIuYw0KPiBAQCAtMCwwICsxLDcwNSBAQA0KPiAr LyoqIEBmaWxlDQo+ICsgIENSVCB3cmFwcGVyIGZ1bmN0aW9ucyBmb3Igc3lzdGVtIGNhbGwuDQo+ ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDE5LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0 cyByZXNlcnZlZC48QlI+DQo+ICsgIChDKSBDb3B5cmlnaHQgMjAyMCBIZXdsZXR0IFBhY2thcmQg RW50ZXJwcmlzZSBEZXZlbG9wbWVudCBMUDxCUj4NCj4gKw0KPiArICAgIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ICsNCj4gKyoqLw0KPiArI2luY2x1ZGUg PFVlZmkuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0NydExpYi5oPg0KPiArI2luY2x1ZGUgPExp YnJhcnkvTWVtb3J5QWxsb2NhdGlvbkxpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaVJ1 bnRpbWVTZXJ2aWNlc1RhYmxlTGliLmg+DQo+ICsNCj4gK2ludCAgZXJybm8gPSAwOw0KPiArDQo+ ICsvKioNCj4gKyAgRGV0ZXJtaW5lIGlmIGEgcGFydGljdWxhciBjaGFyYWN0ZXIgaXMgYW4gYWxw aGFudW1lcmljIGNoYXJhY3Rlcg0KPiArICBAcmV0dXJuICBSZXR1cm5zIDEgaWYgYyBpcyBhbiBh bHBoYW51bWVyaWMgY2hhcmFjdGVyLCBvdGhlcndpc2UgcmV0dXJucyAwLg0KPiArKiovDQo+ICtp bnQgaXNhbG51bSAoaW50IGMpDQo+ICt7DQo+ICsgIC8vDQo+ICsgIC8vIDxhbG51bT4gOjo9IFsw LTldIHwgW2Etel0gfCBbQS1aXQ0KPiArICAvLw0KPiArICByZXR1cm4gKCgoJzAnIDw9IChjKSkg JiYgKChjKSA8PSAnOScpKSB8fA0KPiArICAgICAgICAgICgoJ2EnIDw9IChjKSkgJiYgKChjKSA8 PSAneicpKSB8fA0KPiArICAgICAgICAgICgoJ0EnIDw9IChjKSkgJiYgKChjKSA8PSAnWicpKSk7 DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBEZXRlcm1pbmUgaWYgYSBwYXJ0aWN1bGFyIGNoYXJh Y3RlciBpcyBhIGRpZ2l0YWwgY2hhcmFjdGVyDQo+ICsNCj4gKyAgQHJldHVybiAgUmV0dXJucyAx IGlmIGMgaXMgYW4gZGlnaXRhbCBjaGFyYWN0ZXIsIG90aGVyd2lzZSByZXR1cm5zIDAuDQo+ICsq Ki8NCj4gK2ludCBpc2RjaGFyIChpbnQgYykNCj4gK3sNCj4gKyAgLy8NCj4gKyAgLy8gWzAtOV0g fCBbZSArLS5dDQo+ICsgIC8vDQo+ICsgIHJldHVybiAoKCgnMCcgPD0gKGMpKSAmJiAoKGMpIDw9 ICc5JykpIHx8DQo+ICsgICAgICAgICAgKGMgPT0gJ2UnKSB8fCAoYyA9PSAnRScpIHx8DQo+ICsg ICAgICAgICAgKGMgPT0gJysnKSB8fCAoYyA9PSAnLScpIHx8DQo+ICsgICAgICAgICAgKGMgPT0g Jy4nKSk7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBEZXRlcm1pbmUgaWYgYSBwYXJ0aWN1bGFy IGNoYXJhY3RlciBpcyBhIHNwYWNlIGNoYXJhY3Rlcg0KPiArDQo+ICsgIEByZXR1cm4gIFJldHVy bnMgMSBpZiBjIGlzIGEgc3BhY2UgY2hhcmFjdGVyDQo+ICsqKi8NCj4gK2ludCBpc3NwYWNlIChp bnQgYykNCj4gK3sNCj4gKyAgLy8NCj4gKyAgLy8gPHNwYWNlPiA6Oj0gWyBdDQo+ICsgIC8vDQo+ ICsgIHJldHVybiAoKGMpID09ICcgJykgfHwgKChjKSA9PSAnXHQnKSB8fCAoKGMpID09ICdccicp IHx8ICgoYykgPT0gJ1xuJykgfHwgKChjKSA9PSAnXHYnKSAgfHwgKChjKSA9PSAnXGYnKTsNCj4g K30NCj4gKw0KPiArLyoqDQo+ICsgIEFsbG9jYXRlcyBtZW1vcnkgYmxvY2tzDQo+ICsqLw0KPiAr dm9pZCAqbWFsbG9jIChzaXplX3Qgc2l6ZSkNCj4gK3sNCj4gKyAgcmV0dXJuIEFsbG9jYXRlUG9v bCAoKFVJTlROKSBzaXplKTsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIERlLWFsbG9jYXRlcyBv ciBmcmVlcyBhIG1lbW9yeSBibG9jaw0KPiArKi8NCj4gK3ZvaWQgZnJlZSAodm9pZCAqcHRyKQ0K PiArew0KPiArICAvLw0KPiArICAvLyBJbiBTdGFuZGFyZCBDLCBmcmVlKCkgaGFuZGxlcyBhIG51 bGwgcG9pbnRlciBhcmd1bWVudCB0cmFuc3BhcmVudGx5LiBUaGlzDQo+ICsgIC8vIGlzIG5vdCB0 cnVlIG9mIEZyZWVQb29sKCkgYmVsb3csIHNvIHByb3RlY3QgaXQuDQo+ICsgIC8vDQo+ICsgIGlm IChwdHIgIT0gTlVMTCkgew0KPiArICAgIEZyZWVQb29sIChwdHIpOw0KPiArICB9DQo+ICt9DQo+ ICsNCj4gKy8qKg0KPiArICBOZXRCU0QgQ29tcGF0aWJpbGl0eSBGdW5jdGlvbiBzdHJkdXAgY3Jl YXRlcyBhIGR1cGxpY2F0ZSBjb3B5IG9mIGEgc3RyaW5nLg0KPiArDQo+ICsgIEByZXR1cm4gIFJl dHVybnMgdGhlIHBvaW50ZXIgdG8gZHVwbGljYXRlZCBzdHJpbmcuDQo+ICsqKi8NCj4gK2NoYXIg KiBzdHJkdXAoY29uc3QgY2hhciAqc3RyKQ0KPiArew0KPiArICBzaXplX3QgbGVuOw0KPiArICBj aGFyICpjb3B5Ow0KPiArDQo+ICsgIGxlbiA9IHN0cmxlbihzdHIpICsgMTsNCj4gKyAgaWYgKChj b3B5ID0gbWFsbG9jKGxlbikpID09IE5VTEwpDQo+ICsgICAgcmV0dXJuIChOVUxMKTsNCj4gKyAg bWVtY3B5KGNvcHksIHN0ciwgbGVuKTsNCj4gKyAgcmV0dXJuIChjb3B5KTsNCj4gK30NCj4gKw0K PiArLyoqIFRoZSB0b3VwcGVyIGZ1bmN0aW9uIGNvbnZlcnRzIGEgbG93ZXJjYXNlIGxldHRlciB0 byBhIGNvcnJlc3BvbmRpbmcNCj4gKyAgICB1cHBlcmNhc2UgbGV0dGVyLg0KPiArDQo+ICsgICAg QHBhcmFtW2luXSAgICBjICAgVGhlIGNoYXJhY3RlciB0byBiZSBjb252ZXJ0ZWQuDQo+ICsNCj4g KyAgICBAcmV0dXJuICAgSWYgdGhlIGFyZ3VtZW50IGlzIGEgY2hhcmFjdGVyIGZvciB3aGljaCBp c2xvd2VyIGlzIHRydWUgYW5kDQo+ICsgICAgICAgICAgICAgIHRoZXJlIGFyZSBvbmUgb3IgbW9y ZSBjb3JyZXNwb25kaW5nIGNoYXJhY3RlcnMsIGFzIHNwZWNpZmllZCBieQ0KPiArICAgICAgICAg ICAgICB0aGUgY3VycmVudCBsb2NhbGUsIGZvciB3aGljaCBpc3VwcGVyIGlzIHRydWUsIHRoZSB0 b3VwcGVyDQo+ICsgICAgICAgICAgICAgIGZ1bmN0aW9uIHJldHVybnMgb25lIG9mIHRoZSBjb3Jy ZXNwb25kaW5nIGNoYXJhY3RlcnMgKGFsd2F5cyB0aGUNCj4gKyAgICAgICAgICAgICAgc2FtZSBv bmUgZm9yIGFueSBnaXZlbiBsb2NhbGUpOyBvdGhlcndpc2UsIHRoZSBhcmd1bWVudCBpcw0KPiAr ICAgICAgICAgICAgICByZXR1cm5lZCB1bmNoYW5nZWQuDQo+ICsqKi8NCj4gK2ludA0KPiArdG91 cHBlcigNCj4gKyAgSU4gIGludCBjDQo+ICsgICkNCj4gK3sNCj4gKyAgaWYgKCAoYyA+PSAnYScp ICYmIChjIDw9ICd6JykgKSB7DQo+ICsgICAgYyA9IGMgLSAoJ2EnIC0gJ0EnKTsNCj4gKyAgfQ0K PiArICByZXR1cm4gYzsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIERpZ2l0IHRvIGEgdmFsdWUu DQo+ICsNCj4gKyAgQHJldHVybiAgUmV0dXJucyB0aGUgdmFsdWUgb2YgZGlnaXQuDQo+ICsqKi8N Cj4gK2ludA0KPiArRGlnaXQyVmFsKCBpbnQgYykNCj4gK3sNCj4gKyAgaWYgKCgoYyA+PSAnYScp ICYmIChjIDw9ICd6JykpIHx8ICgoYyA+PSAnQScpICYmIChjIDw9ICdaJykpKSB7ICAvKiBJZiBj IGlzIG9uZSBvZiBbQS1aYS16XS4uLiAqLw0KPiArICAgIGMgPSB0b3VwcGVyKGMpIC0gNzsgICAv LyBBZGp1c3Qgc28gJ0EnIGlzICgnOScgKyAxKQ0KPiArICB9DQo+ICsgIHJldHVybiBjIC0gJzAn OyAgIC8vIFZhbHVlIHJldHVybmVkIGlzIGJldHdlZW4gMCBhbmQgMzUsIGluY2x1c2l2ZS4NCj4g K30NCj4gKw0KPiArDQo+ICsvKiogVGhlIHN0cnRvbGwgZnVuY3Rpb24gY29udmVydHMgdGhlIGlu aXRpYWwgcG9ydGlvbiBvZiB0aGUgc3RyaW5nIHBvaW50ZWQgdG8NCj4gKyAgICBieSBucHRyIHRv IGxvbmcgbG9uZyBpbnQgcmVwcmVzZW50YXRpb24uDQo+ICsNCj4gKyAgICBTZWUgdGhlIGRlc2Ny aXB0aW9uIGZvciBzdHJ0b2wgZm9yIG1vcmUgaW5mb3JtYXRpb24uDQo+ICsNCj4gKyAgQHJldHVy biAgIFRoZSBzdHJ0b2xsIGZ1bmN0aW9uIHJldHVybnMgdGhlIGNvbnZlcnRlZCB2YWx1ZSwgaWYg YW55LiBJZiBubw0KPiArICAgICAgICAgICAgY29udmVyc2lvbiBjb3VsZCBiZSBwZXJmb3JtZWQs IHplcm8gaXMgcmV0dXJuZWQuIElmIHRoZSBjb3JyZWN0DQo+ICsgICAgICAgICAgICB2YWx1ZSBp cyBvdXRzaWRlIHRoZSByYW5nZSBvZiByZXByZXNlbnRhYmxlIHZhbHVlcywgTExPTkdfTUlOIG9y DQo+ICsgICAgICAgICAgICBMTE9OR19NQVggaXMgcmV0dXJuZWQgKGFjY29yZGluZyB0byB0aGUg c2lnbiBvZiB0aGUgdmFsdWUsIGlmIGFueSksDQo+ICsgICAgICAgICAgICBhbmQgdGhlIHZhbHVl IG9mIHRoZSBtYWNybyBFUkFOR0UgaXMgc3RvcmVkIGluIGVycm5vLg0KPiArKiovDQo+ICtsb25n IGxvbmcNCj4gK3N0cnRvbGwoY29uc3QgY2hhciAqIG5wdHIsIGNoYXIgKiogZW5kcHRyLCBpbnQg YmFzZSkNCj4gK3sNCj4gKyAgY29uc3QgY2hhciAqcEVuZDsNCj4gKyAgbG9uZyBsb25nICAgUmVz dWx0ID0gMDsNCj4gKyAgbG9uZyBsb25nICAgUHJldmlvdXM7DQo+ICsgIGludCAgICAgICAgIHRl bXA7DQo+ICsgIEJPT0xFQU4gICAgIE5lZ2F0aXZlID0gRkFMU0U7DQo+ICsNCj4gKyAgcEVuZCA9 IG5wdHI7DQo+ICsNCj4gKyAgaWYoKGJhc2UgPCAwKSB8fCAoYmFzZSA9PSAxKSB8fCAoYmFzZSA+ IDM2KSkgew0KPiArICAgIGlmKGVuZHB0ciAhPSBOVUxMKSB7DQo+ICsgICAgKmVuZHB0ciA9IE5V TEw7DQo+ICsgICAgfQ0KPiArICAgIHJldHVybiAwOw0KPiArICB9DQo+ICsgIC8vIFNraXAgbGVh ZGluZyBzcGFjZXMuDQo+ICsgIHdoaWxlKGlzc3BhY2UoKm5wdHIpKSAgICsrbnB0cjsNCj4gKw0K PiArICAvLyBQcm9jZXNzIFN1YmplY3Qgc2VxdWVuY2U6IG9wdGlvbmFsIHNpZ24gZm9sbG93ZWQg YnkgZGlnaXRzLg0KPiArICBpZigqbnB0ciA9PSAnKycpIHsNCj4gKyAgICBOZWdhdGl2ZSA9IEZB TFNFOw0KPiArICAgICsrbnB0cjsNCj4gKyAgfQ0KPiArICBlbHNlIGlmKCpucHRyID09ICctJykg ew0KPiArICAgIE5lZ2F0aXZlID0gVFJVRTsNCj4gKyAgICArK25wdHI7DQo+ICsgIH0NCj4gKw0K PiArICBpZigqbnB0ciA9PSAnMCcpIHsgIC8qIE1pZ2h0IGJlIE9jdGFsIG9yIEhleCAqLw0KPiAr ICAgIGlmKHRvdXBwZXIobnB0clsxXSkgPT0gJ1gnKSB7ICAgLyogTG9va3MgbGlrZSBIZXggKi8N Cj4gKyAgICAgIGlmKChiYXNlID09IDApIHx8IChiYXNlID09IDE2KSkgew0KPiArICAgICAgICBu cHRyICs9IDI7ICAvKiBTa2lwIHRoZSAiMFgiICAgICAgKi8NCj4gKyAgICAgICAgYmFzZSA9IDE2 OyAgLyogSW4gY2FzZSBiYXNlIHdhcyAwICovDQo+ICsgICAgICB9DQo+ICsgICAgfQ0KPiArICAg IGVsc2UgeyAgICAvKiBMb29rcyBsaWtlIE9jdGFsICovDQo+ICsgICAgICBpZigoYmFzZSA9PSAw KSB8fCAoYmFzZSA9PSA4KSkgew0KPiArICAgICAgICArK25wdHI7ICAgICAvKiBTa2lwIHRoZSBs ZWFkaW5nICIwIiAqLw0KPiArICAgICAgICBiYXNlID0gODsgICAvKiBJbiBjYXNlIGJhc2Ugd2Fz IDAgICAqLw0KPiArICAgICAgfQ0KPiArICAgIH0NCj4gKyAgfQ0KPiArICBpZihiYXNlID09IDAp IHsgICAvKiBJZiBzdGlsbCB6ZXJvIHRoZW4gbXVzdCBiZSBkZWNpbWFsICovDQo+ICsgICAgYmFz ZSA9IDEwOw0KPiArICB9DQo+ICsgIGlmKCpucHRyICA9PSAnMCcpIHsNCj4gKyAgICBmb3IoIDsg Km5wdHIgPT0gJzAnOyArK25wdHIpOyAgLyogU2tpcCBhbnkgcmVtYWluaW5nIGxlYWRpbmcgemVy b3MgKi8NCj4gKyAgICBwRW5kID0gbnB0cjsNCj4gKyAgfQ0KPiArDQo+ICsgIHdoaWxlKCBpc2Fs bnVtKCpucHRyKSAmJiAoKHRlbXAgPSBEaWdpdDJWYWwoKm5wdHIpKSA8IGJhc2UpKSB7DQo+ICsg ICAgUHJldmlvdXMgPSBSZXN1bHQ7DQo+ICsgICAgUmVzdWx0ID0gTXVsdFM2NHg2NCAoUmVzdWx0 LCBiYXNlKSArIChsb25nIGxvbmcgaW50KXRlbXA7DQo+ICsgICAgaWYoIFJlc3VsdCA8PSBQcmV2 aW91cykgeyAgIC8vIERldGVjdCBPdmVyZmxvdw0KPiArICAgICAgaWYoTmVnYXRpdmUpIHsNCj4g KyAgICAgICAgUmVzdWx0ID0gTExPTkdfTUlOOw0KPiArICAgICAgfQ0KPiArICAgICAgZWxzZSB7 DQo+ICsgICAgICAgIFJlc3VsdCA9IExMT05HX01BWDsNCj4gKyAgICAgIH0NCj4gKyAgICAgIE5l Z2F0aXZlID0gRkFMU0U7DQo+ICsgICAgICBlcnJubyA9IEVSQU5HRTsNCj4gKyAgICAgIGJyZWFr Ow0KPiArICAgIH0NCj4gKyAgICBwRW5kID0gKytucHRyOw0KPiArICB9DQo+ICsgIGlmKE5lZ2F0 aXZlKSB7DQo+ICsgICAgUmVzdWx0ID0gLVJlc3VsdDsNCj4gKyAgfQ0KPiArDQo+ICsgIC8vIFNh dmUgcG9pbnRlciB0byBmaW5hbCBzZXF1ZW5jZQ0KPiArICBpZihlbmRwdHIgIT0gTlVMTCkgew0K PiArICAgICplbmRwdHIgPSAoY2hhciAqKXBFbmQ7DQo+ICsgIH0NCj4gKyAgcmV0dXJuIFJlc3Vs dDsNCj4gK30NCj4gKw0KPiArLyoqIFRoZSBzdHJ0b2wsIHN0cnRvbGwsIHN0cnRvdWwsIGFuZCBz dHJ0b3VsbCBmdW5jdGlvbnMgY29udmVydCB0aGUgaW5pdGlhbA0KPiArICAgIHBvcnRpb24gb2Yg dGhlIHN0cmluZyBwb2ludGVkIHRvIGJ5IG5wdHIgdG8gbG9uZyBpbnQsIGxvbmcgbG9uZyBpbnQs DQo+ICsgICAgdW5zaWduZWQgbG9uZyBpbnQsIGFuZCB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHJl cHJlc2VudGF0aW9uLCByZXNwZWN0aXZlbHkuDQo+ICsgICAgRmlyc3QsIHRoZXkgZGVjb21wb3Nl IHRoZSBpbnB1dCBzdHJpbmcgaW50byB0aHJlZSBwYXJ0czogYW4gaW5pdGlhbCwNCj4gKyAgICBw b3NzaWJseSBlbXB0eSwgc2VxdWVuY2Ugb2Ygd2hpdGUtc3BhY2UgY2hhcmFjdGVycyAoYXMgc3Bl Y2lmaWVkIGJ5IHRoZQ0KPiArICAgIGlzc3BhY2UgZnVuY3Rpb24pLCBhIHN1YmplY3Qgc2VxdWVu Y2UgcmVzZW1ibGluZyBhbiBpbnRlZ2VyIHJlcHJlc2VudGVkIGluDQo+ICsgICAgc29tZSByYWRp eCBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiBiYXNlLCBhbmQgYSBmaW5hbCBzdHJpbmcgb2Yg b25lIG9yDQo+ICsgICAgbW9yZSB1bnJlY29nbml6ZWQgY2hhcmFjdGVycywgaW5jbHVkaW5nIHRo ZSB0ZXJtaW5hdGluZyBudWxsIGNoYXJhY3RlciBvZg0KPiArICAgIHRoZSBpbnB1dCBzdHJpbmcu IFRoZW4sIHRoZXkgYXR0ZW1wdCB0byBjb252ZXJ0IHRoZSBzdWJqZWN0IHNlcXVlbmNlIHRvIGFu DQo+ICsgICAgaW50ZWdlciwgYW5kIHJldHVybiB0aGUgcmVzdWx0Lg0KPiArDQo+ICsgICAgSWYg dGhlIHZhbHVlIG9mIGJhc2UgaXMgemVybywgdGhlIGV4cGVjdGVkIGZvcm0gb2YgdGhlIHN1Ympl Y3Qgc2VxdWVuY2UgaXMNCj4gKyAgICB0aGF0IG9mIGFuIGludGVnZXIgY29uc3RhbnQsIG9wdGlv bmFsbHkgcHJlY2VkZWQNCj4gKyAgICBieSBhIHBsdXMgb3IgbWludXMgc2lnbiwgYnV0IG5vdCBp bmNsdWRpbmcgYW4gaW50ZWdlciBzdWZmaXguIElmIHRoZSB2YWx1ZQ0KPiArICAgIG9mIGJhc2Ug aXMgYmV0d2VlbiAyIGFuZCAzNiAoaW5jbHVzaXZlKSwgdGhlIGV4cGVjdGVkIGZvcm0gb2YgdGhl IHN1YmplY3QNCj4gKyAgICBzZXF1ZW5jZSBpcyBhIHNlcXVlbmNlIG9mIGxldHRlcnMgYW5kIGRp Z2l0cyByZXByZXNlbnRpbmcgYW4gaW50ZWdlciB3aXRoDQo+ICsgICAgdGhlIHJhZGl4IHNwZWNp ZmllZCBieSBiYXNlLCBvcHRpb25hbGx5IHByZWNlZGVkIGJ5IGEgcGx1cyBvciBtaW51cyBzaWdu LA0KPiArICAgIGJ1dCBub3QgaW5jbHVkaW5nIGFuIGludGVnZXIgc3VmZml4LiBUaGUgbGV0dGVy cyBmcm9tIGEgKG9yIEEpIHRocm91Z2ggeg0KPiArICAgIChvciBaKSBhcmUgYXNjcmliZWQgdGhl IHZhbHVlcyAxMCB0aHJvdWdoIDM1OyBvbmx5IGxldHRlcnMgYW5kIGRpZ2l0cyB3aG9zZQ0KPiAr ICAgIGFzY3JpYmVkIHZhbHVlcyBhcmUgbGVzcyB0aGFuIHRoYXQgb2YgYmFzZSBhcmUgcGVybWl0 dGVkLiBJZiB0aGUgdmFsdWUgb2YNCj4gKyAgICBiYXNlIGlzIDE2LCB0aGUgY2hhcmFjdGVycyAw eCBvciAwWCBtYXkgb3B0aW9uYWxseSBwcmVjZWRlIHRoZSBzZXF1ZW5jZSBvZg0KPiArICAgIGxl dHRlcnMgYW5kIGRpZ2l0cywgZm9sbG93aW5nIHRoZSBzaWduIGlmIHByZXNlbnQuDQo+ICsNCj4g KyAgICBUaGUgc3ViamVjdCBzZXF1ZW5jZSBpcyBkZWZpbmVkIGFzIHRoZSBsb25nZXN0IGluaXRp YWwgc3Vic2VxdWVuY2Ugb2YgdGhlDQo+ICsgICAgaW5wdXQgc3RyaW5nLCBzdGFydGluZyB3aXRo IHRoZSBmaXJzdCBub24td2hpdGUtc3BhY2UgY2hhcmFjdGVyLCB0aGF0IGlzIG9mDQo+ICsgICAg dGhlIGV4cGVjdGVkIGZvcm0uIFRoZSBzdWJqZWN0IHNlcXVlbmNlIGNvbnRhaW5zIG5vIGNoYXJh Y3RlcnMgaWYgdGhlIGlucHV0DQo+ICsgICAgc3RyaW5nIGlzIGVtcHR5IG9yIGNvbnNpc3RzIGVu dGlyZWx5IG9mIHdoaXRlIHNwYWNlLCBvciBpZiB0aGUgZmlyc3QNCj4gKyAgICBub24td2hpdGUt c3BhY2UgY2hhcmFjdGVyIGlzIG90aGVyIHRoYW4gYSBzaWduIG9yIGEgcGVybWlzc2libGUgbGV0 dGVyIG9yIGRpZ2l0Lg0KPiArDQo+ICsgICAgSWYgdGhlIHN1YmplY3Qgc2VxdWVuY2UgaGFzIHRo ZSBleHBlY3RlZCBmb3JtIGFuZCB0aGUgdmFsdWUgb2YgYmFzZSBpcw0KPiArICAgIHplcm8sIHRo ZSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzIHN0YXJ0aW5nIHdpdGggdGhlIGZpcnN0IGRpZ2l0IGlz DQo+ICsgICAgaW50ZXJwcmV0ZWQgYXMgYW4gaW50ZWdlciBjb25zdGFudC4gSWYgdGhlIHN1Ympl Y3Qgc2VxdWVuY2UgaGFzIHRoZQ0KPiArICAgIGV4cGVjdGVkIGZvcm0gYW5kIHRoZSB2YWx1ZSBv ZiBiYXNlIGlzIGJldHdlZW4gMiBhbmQgMzYsIGl0IGlzIHVzZWQgYXMgdGhlDQo+ICsgICAgYmFz ZSBmb3IgY29udmVyc2lvbiwgYXNjcmliaW5nIHRvIGVhY2ggbGV0dGVyIGl0cyB2YWx1ZSBhcyBn aXZlbiBhYm92ZS4gSWYNCj4gKyAgICB0aGUgc3ViamVjdCBzZXF1ZW5jZSBiZWdpbnMgd2l0aCBh IG1pbnVzIHNpZ24sIHRoZSB2YWx1ZSByZXN1bHRpbmcgZnJvbSB0aGUNCj4gKyAgICBjb252ZXJz aW9uIGlzIG5lZ2F0ZWQgKGluIHRoZSByZXR1cm4gdHlwZSkuIEEgcG9pbnRlciB0byB0aGUgZmlu YWwgc3RyaW5nDQo+ICsgICAgaXMgc3RvcmVkIGluIHRoZSBvYmplY3QgcG9pbnRlZCB0byBieSBl bmRwdHIsIHByb3ZpZGVkIHRoYXQgZW5kcHRyIGlzDQo+ICsgICAgbm90IGEgbnVsbCBwb2ludGVy Lg0KPiArDQo+ICsgICAgSW4gb3RoZXIgdGhhbiB0aGUgIkMiIGxvY2FsZSwgYWRkaXRpb25hbCBs b2NhbGUtc3BlY2lmaWMgc3ViamVjdCBzZXF1ZW5jZQ0KPiArICAgIGZvcm1zIG1heSBiZSBhY2Nl cHRlZC4NCj4gKw0KPiArICAgIElmIHRoZSBzdWJqZWN0IHNlcXVlbmNlIGlzIGVtcHR5IG9yIGRv ZXMgbm90IGhhdmUgdGhlIGV4cGVjdGVkIGZvcm0sIG5vDQo+ICsgICAgY29udmVyc2lvbiBpcyBw ZXJmb3JtZWQ7IHRoZSB2YWx1ZSBvZiBucHRyIGlzIHN0b3JlZCBpbiB0aGUgb2JqZWN0IHBvaW50 ZWQNCj4gKyAgICB0byBieSBlbmRwdHIsIHByb3ZpZGVkIHRoYXQgZW5kcHRyIGlzIG5vdCBhIG51 bGwgcG9pbnRlci4NCj4gKw0KPiArICBAcmV0dXJuICAgVGhlIHN0cnRvbCwgc3RydG9sbCwgc3Ry dG91bCwgYW5kIHN0cnRvdWxsIGZ1bmN0aW9ucyByZXR1cm4gdGhlDQo+ICsgICAgICAgICAgICBj b252ZXJ0ZWQgdmFsdWUsIGlmIGFueS4gSWYgbm8gY29udmVyc2lvbiBjb3VsZCBiZSBwZXJmb3Jt ZWQsIHplcm8NCj4gKyAgICAgICAgICAgIGlzIHJldHVybmVkLiBJZiB0aGUgY29ycmVjdCB2YWx1 ZSBpcyBvdXRzaWRlIHRoZSByYW5nZSBvZg0KPiArICAgICAgICAgICAgcmVwcmVzZW50YWJsZSB2 YWx1ZXMsIExPTkdfTUlOLCBMT05HX01BWCwgTExPTkdfTUlOLCBMTE9OR19NQVgsDQo+ICsgICAg ICAgICAgICBVTE9OR19NQVgsIG9yIFVMTE9OR19NQVggaXMgcmV0dXJuZWQgKGFjY29yZGluZyB0 byB0aGUgcmV0dXJuIHR5cGUNCj4gKyAgICAgICAgICAgIGFuZCBzaWduIG9mIHRoZSB2YWx1ZSwg aWYgYW55KSwgYW5kIHRoZSB2YWx1ZSBvZiB0aGUgbWFjcm8gRVJBTkdFDQo+ICsgICAgICAgICAg ICBpcyBzdG9yZWQgaW4gZXJybm8uDQo+ICsqKi8NCj4gK2xvbmcNCj4gK3N0cnRvbChjb25zdCBj aGFyICogbnB0ciwgY2hhciAqKiBlbmRwdHIsIGludCBiYXNlKQ0KPiArew0KPiArICBjb25zdCBj aGFyICpwRW5kOw0KPiArICBsb25nICAgICAgICBSZXN1bHQgPSAwOw0KPiArICBsb25nICAgICAg ICBQcmV2aW91czsNCj4gKyAgaW50ICAgICAgICAgdGVtcDsNCj4gKyAgQk9PTEVBTiAgICAgTmVn YXRpdmUgPSBGQUxTRTsNCj4gKw0KPiArICBwRW5kID0gbnB0cjsNCj4gKw0KPiArICBpZigoYmFz ZSA8IDApIHx8IChiYXNlID09IDEpIHx8IChiYXNlID4gMzYpKSB7DQo+ICsgICAgaWYoZW5kcHRy ICE9IE5VTEwpIHsNCj4gKyAgICAqZW5kcHRyID0gTlVMTDsNCj4gKyAgICB9DQo+ICsgICAgcmV0 dXJuIDA7DQo+ICsgIH0NCj4gKyAgLy8gU2tpcCBsZWFkaW5nIHNwYWNlcy4NCj4gKyAgd2hpbGUo aXNzcGFjZSgqbnB0cikpICAgKytucHRyOw0KPiArDQo+ICsgIC8vIFByb2Nlc3MgU3ViamVjdCBz ZXF1ZW5jZTogb3B0aW9uYWwgc2lnbiBmb2xsb3dlZCBieSBkaWdpdHMuDQo+ICsgIGlmKCpucHRy ID09ICcrJykgew0KPiArICAgIE5lZ2F0aXZlID0gRkFMU0U7DQo+ICsgICAgKytucHRyOw0KPiAr ICB9DQo+ICsgIGVsc2UgaWYoKm5wdHIgPT0gJy0nKSB7DQo+ICsgICAgTmVnYXRpdmUgPSBUUlVF Ow0KPiArICAgICsrbnB0cjsNCj4gKyAgfQ0KPiArDQo+ICsgIGlmKCpucHRyID09ICcwJykgeyAg LyogTWlnaHQgYmUgT2N0YWwgb3IgSGV4ICovDQo+ICsgICAgaWYodG91cHBlcihucHRyWzFdKSA9 PSAnWCcpIHsgICAvKiBMb29rcyBsaWtlIEhleCAqLw0KPiArICAgICAgaWYoKGJhc2UgPT0gMCkg fHwgKGJhc2UgPT0gMTYpKSB7DQo+ICsgICAgICAgIG5wdHIgKz0gMjsgIC8qIFNraXAgdGhlICIw WCIgICAgICAqLw0KPiArICAgICAgICBiYXNlID0gMTY7ICAvKiBJbiBjYXNlIGJhc2Ugd2FzIDAg Ki8NCj4gKyAgICAgIH0NCj4gKyAgICB9DQo+ICsgICAgZWxzZSB7ICAgIC8qIExvb2tzIGxpa2Ug T2N0YWwgKi8NCj4gKyAgICAgIGlmKChiYXNlID09IDApIHx8IChiYXNlID09IDgpKSB7DQo+ICsg ICAgICAgICsrbnB0cjsgICAgIC8qIFNraXAgdGhlIGxlYWRpbmcgIjAiICovDQo+ICsgICAgICAg IGJhc2UgPSA4OyAgIC8qIEluIGNhc2UgYmFzZSB3YXMgMCAgICovDQo+ICsgICAgICB9DQo+ICsg ICAgfQ0KPiArICB9DQo+ICsgIGlmKGJhc2UgPT0gMCkgeyAgIC8qIElmIHN0aWxsIHplcm8gdGhl biBtdXN0IGJlIGRlY2ltYWwgKi8NCj4gKyAgICBiYXNlID0gMTA7DQo+ICsgIH0NCj4gKyAgaWYo Km5wdHIgID09ICcwJykgew0KPiArICAgIGZvciggOyAqbnB0ciA9PSAnMCc7ICsrbnB0cik7ICAv KiBTa2lwIGFueSByZW1haW5pbmcgbGVhZGluZyB6ZXJvcyAqLw0KPiArICAgIHBFbmQgPSBucHRy Ow0KPiArICB9DQo+ICsNCj4gKyAgd2hpbGUoIGlzYWxudW0oKm5wdHIpICYmICgodGVtcCA9IERp Z2l0MlZhbCgqbnB0cikpIDwgYmFzZSkpIHsNCj4gKyAgICBQcmV2aW91cyA9IFJlc3VsdDsNCj4g KyAgICBSZXN1bHQgPSAoUmVzdWx0ICogYmFzZSkgKyAobG9uZyBpbnQpdGVtcDsNCj4gKyAgICBp ZiggUmVzdWx0IDw9IFByZXZpb3VzKSB7ICAgLy8gRGV0ZWN0IE92ZXJmbG93DQo+ICsgICAgICBp ZihOZWdhdGl2ZSkgew0KPiArICAgICAgICBSZXN1bHQgPSBMT05HX01JTjsNCj4gKyAgICAgIH0N Cj4gKyAgICAgIGVsc2Ugew0KPiArICAgICAgICBSZXN1bHQgPSBMT05HX01BWDsNCj4gKyAgICAg IH0NCj4gKyAgICAgIE5lZ2F0aXZlID0gRkFMU0U7DQo+ICsgICAgICBlcnJubyA9IEVSQU5HRTsN Cj4gKyAgICAgIGJyZWFrOw0KPiArICAgIH0NCj4gKyAgICBwRW5kID0gKytucHRyOw0KPiArICB9 DQo+ICsgIGlmKE5lZ2F0aXZlKSB7DQo+ICsgICAgUmVzdWx0ID0gLVJlc3VsdDsNCj4gKyAgfQ0K PiArDQo+ICsgIC8vIFNhdmUgcG9pbnRlciB0byBmaW5hbCBzZXF1ZW5jZQ0KPiArICBpZihlbmRw dHIgIT0gTlVMTCkgew0KPiArICAgICplbmRwdHIgPSAoY2hhciAqKXBFbmQ7DQo+ICsgIH0NCj4g KyAgcmV0dXJuIFJlc3VsdDsNCj4gK30NCj4gKw0KPiArLyoqIFRoZSBzdHJ0b3VsbCBmdW5jdGlv biBjb252ZXJ0cyB0aGUgaW5pdGlhbCBwb3J0aW9uIG9mIHRoZSBzdHJpbmcgcG9pbnRlZCB0bw0K PiArICAgIGJ5IG5wdHIgdG8gdW5zaWduZWQgbG9uZyBsb25nIGludCByZXByZXNlbnRhdGlvbi4N Cj4gKw0KPiArICAgIFNlZSB0aGUgZGVzY3JpcHRpb24gZm9yIHN0cnRvbCBmb3IgbW9yZSBpbmZv cm1hdGlvbi4NCj4gKw0KPiArICBAcmV0dXJuICAgVGhlIHN0cnRvdWxsIGZ1bmN0aW9uIHJldHVy bnMgdGhlIGNvbnZlcnRlZCB2YWx1ZSwgaWYgYW55LiBJZiBubw0KPiArICAgICAgICAgICAgY29u dmVyc2lvbiBjb3VsZCBiZSBwZXJmb3JtZWQsIHplcm8gaXMgcmV0dXJuZWQuIElmIHRoZSBjb3Jy ZWN0DQo+ICsgICAgICAgICAgICB2YWx1ZSBpcyBvdXRzaWRlIHRoZSByYW5nZSBvZiByZXByZXNl bnRhYmxlIHZhbHVlcywgVUxMT05HX01BWCBpcw0KPiArICAgICAgICAgICAgcmV0dXJuZWQgYW5k IHRoZSB2YWx1ZSBvZiB0aGUgbWFjcm8gRVJBTkdFIGlzIHN0b3JlZCBpbiBlcnJuby4NCj4gKyoq Lw0KPiArdW5zaWduZWQgbG9uZyBsb25nDQo+ICtzdHJ0b3VsbChjb25zdCBjaGFyICogbnB0ciwg Y2hhciAqKiBlbmRwdHIsIGludCBiYXNlKQ0KPiArew0KPiArICBjb25zdCBjaGFyICAgICAgICAg ICAqcEVuZDsNCj4gKyAgdW5zaWduZWQgbG9uZyBsb25nICAgIFJlc3VsdCA9IDA7DQo+ICsgIHVu c2lnbmVkIGxvbmcgbG9uZyAgICBQcmV2aW91czsNCj4gKyAgaW50ICAgICAgICAgICAgICAgICAg IHRlbXA7DQo+ICsNCj4gKyAgcEVuZCA9IG5wdHI7DQo+ICsNCj4gKyAgaWYoKGJhc2UgPCAwKSB8 fCAoYmFzZSA9PSAxKSB8fCAoYmFzZSA+IDM2KSkgew0KPiArICAgIGlmKGVuZHB0ciAhPSBOVUxM KSB7DQo+ICsgICAgKmVuZHB0ciA9IE5VTEw7DQo+ICsgICAgfQ0KPiArICAgIHJldHVybiAwOw0K PiArICB9DQo+ICsgIC8vIFNraXAgbGVhZGluZyBzcGFjZXMuDQo+ICsgIHdoaWxlKGlzc3BhY2Uo Km5wdHIpKSAgICsrbnB0cjsNCj4gKw0KPiArICAvLyBQcm9jZXNzIFN1YmplY3Qgc2VxdWVuY2U6 IG9wdGlvbmFsICsgc2lnbiBmb2xsb3dlZCBieSBkaWdpdHMuDQo+ICsgIGlmKCpucHRyID09ICcr Jykgew0KPiArICAgICsrbnB0cjsNCj4gKyAgfQ0KPiArDQo+ICsgIGlmKCpucHRyID09ICcwJykg eyAgLyogTWlnaHQgYmUgT2N0YWwgb3IgSGV4ICovDQo+ICsgICAgaWYodG91cHBlcihucHRyWzFd KSA9PSAnWCcpIHsgICAvKiBMb29rcyBsaWtlIEhleCAqLw0KPiArICAgICAgaWYoKGJhc2UgPT0g MCkgfHwgKGJhc2UgPT0gMTYpKSB7DQo+ICsgICAgICAgIG5wdHIgKz0gMjsgIC8qIFNraXAgdGhl ICIwWCIgICAgICAqLw0KPiArICAgICAgICBiYXNlID0gMTY7ICAvKiBJbiBjYXNlIGJhc2Ugd2Fz IDAgKi8NCj4gKyAgICAgIH0NCj4gKyAgICB9DQo+ICsgICAgZWxzZSB7ICAgIC8qIExvb2tzIGxp a2UgT2N0YWwgKi8NCj4gKyAgICAgIGlmKChiYXNlID09IDApIHx8IChiYXNlID09IDgpKSB7DQo+ ICsgICAgICAgICsrbnB0cjsgICAgIC8qIFNraXAgdGhlIGxlYWRpbmcgIjAiICovDQo+ICsgICAg ICAgIGJhc2UgPSA4OyAgIC8qIEluIGNhc2UgYmFzZSB3YXMgMCAgICovDQo+ICsgICAgICB9DQo+ ICsgICAgfQ0KPiArICB9DQo+ICsgIGlmKGJhc2UgPT0gMCkgeyAgIC8qIElmIHN0aWxsIHplcm8g dGhlbiBtdXN0IGJlIGRlY2ltYWwgKi8NCj4gKyAgICBiYXNlID0gMTA7DQo+ICsgIH0NCj4gKyAg aWYoKm5wdHIgID09ICcwJykgew0KPiArICAgIGZvciggOyAqbnB0ciA9PSAnMCc7ICsrbnB0cik7 ICAvKiBTa2lwIGFueSByZW1haW5pbmcgbGVhZGluZyB6ZXJvcyAqLw0KPiArICAgIHBFbmQgPSBu cHRyOw0KPiArICB9DQo+ICsNCj4gKyAgd2hpbGUoIGlzYWxudW0oKm5wdHIpICYmICgodGVtcCA9 IERpZ2l0MlZhbCgqbnB0cikpIDwgYmFzZSkpIHsNCj4gKyAgICBQcmV2aW91cyA9IFJlc3VsdDsN Cj4gKyAgICBSZXN1bHQgPSBEaXZVNjR4MzIgKFJlc3VsdCwgYmFzZSkgKyAodW5zaWduZWQgbG9u ZyBsb25nKXRlbXA7DQo+ICsgICAgaWYoIFJlc3VsdCA8IFByZXZpb3VzKSAgeyAgIC8vIElmIHdl IG92ZXJmbG93ZWQNCj4gKyAgICAgIFJlc3VsdCA9IFVMTE9OR19NQVg7DQo+ICsgICAgICBlcnJu byA9IEVSQU5HRTsNCj4gKyAgICAgIGJyZWFrOw0KPiArICAgIH0NCj4gKyAgICBwRW5kID0gKytu cHRyOw0KPiArICB9DQo+ICsNCj4gKyAgLy8gU2F2ZSBwb2ludGVyIHRvIGZpbmFsIHNlcXVlbmNl DQo+ICsgIGlmKGVuZHB0ciAhPSBOVUxMKSB7DQo+ICsgICAgKmVuZHB0ciA9IChjaGFyICopcEVu ZDsNCj4gKyAgfQ0KPiArICByZXR1cm4gUmVzdWx0Ow0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAg ZWRrMiBKYW5zc29uIHBvcnQgZG9lcyBub3Qgc3VwcG9ydCBkb3VibGVzLCBzaW1wbHkgcmV0dXJu IDAuDQo+ICsNCj4gKyAgVGhlc2UgY29udmVyc2lvbiBmdW5jdGlvbnMgY29udmVydCB0aGUgaW5p dGlhbCBwb3J0aW9uIG9mIHRoZSBzdHJpbmcNCj4gKyAgcG9pbnRlZCB0byBieSBucHRyIHRvIGRv dWJsZSwgZmxvYXQsIGFuZCBsb25nIGRvdWJsZSByZXByZXNlbnRhdGlvbiwNCj4gKyAgcmVzcGVj dGl2ZWx5Lg0KPiArDQo+ICsgIFRoZSBzdHJ0b2QoKSwgc3RydG9mKCksIGFuZCBzdHJ0b2xkKCkg ZnVuY3Rpb25zIHJldHVybiB0aGUgY29udmVydGVkDQo+ICsgIHZhbHVlLCBpZiBhbnkuDQo+ICsN Cj4gKyAgSWYgZW5kcHRyIGlzIG5vdCBOVUxMLCBhIHBvaW50ZXIgdG8gdGhlIGNoYXJhY3RlciBh ZnRlciB0aGUgbGFzdCBjaGFyYWMtDQo+ICsgIHRlciB1c2VkIGluIHRoZSBjb252ZXJzaW9uIGlz IHN0b3JlZCBpbiB0aGUgbG9jYXRpb24gcmVmZXJlbmNlZCBieQ0KPiArICBlbmRwdHIuDQo+ICsN Cj4gKyAgSWYgbm8gY29udmVyc2lvbiBpcyBwZXJmb3JtZWQsIHplcm8gaXMgcmV0dXJuZWQgYW5k IHRoZSB2YWx1ZSBvZiBucHRyIGlzDQo+ICsgIHN0b3JlZCBpbiB0aGUgbG9jYXRpb24gcmVmZXJl bmNlZCBieSBlbmRwdHIuDQo+ICsNCj4gKyAgSWYgdGhlIGNvcnJlY3QgdmFsdWUgd291bGQgY2F1 c2Ugb3ZlcmZsb3csIHBsdXMgb3IgbWludXMgSFVHRV9WQUwsDQo+ICsgIEhVR0VfVkFMRiwgb3Ig SFVHRV9WQUxMIGlzIHJldHVybmVkIChhY2NvcmRpbmcgdG8gdGhlIHNpZ24gYW5kIHR5cGUgb2YN Cj4gKyAgdGhlIHJldHVybiB2YWx1ZSksIGFuZCBFUkFOR0UgaXMgc3RvcmVkIGluIGVycm5vLiAg SWYgdGhlIGNvcnJlY3QgdmFsdWUNCj4gKyAgd291bGQgY2F1c2UgdW5kZXJmbG93LCB6ZXJvIGlz IHJldHVybmVkIGFuZCBFUkFOR0UgaXMgc3RvcmVkIGluIGVycm5vLg0KPiArDQo+ICsgIEByZXR1 cm4gIFJldHVybiAwLg0KPiArKiovDQo+ICtkb3VibGUNCj4gK3N0cnRvZCAoY29uc3QgY2hhciAq IF9fcmVzdHJpY3QgbnB0ciwgY2hhciAqKiBfX3Jlc3RyaWN0IGVuZHB0cikgew0KPiArICAgIGlm KGVuZHB0cikNCj4gKyAgICAgICplbmRwdHIgPSAoY2hhciAqKShucHRyICsgc3RybGVuKG5wdHIp KTsNCj4gKw0KPiArICAgIHJldHVybiAoZG91YmxlKTA7DQo+ICt9DQoNCkV2ZW4gdGhlIHVzZSBv ZiB0aGUgdHlwZSBkb3VibGUgdG8gcmV0dXJuIDAgaGFzIGlzc3VlcyBpbiBVRUZJL1BJLg0KQ2Fu IHlvdSBmaWd1cmUgb3V0IGhvdyB0byByZW1vdmUgdGhlIHVzZSBvZiBzdHJ0b2QoKSBieSBqYW5z c29uPw0KDQo+ICsNCj4gKy8qKg0KPiArICBBbGxvY2F0ZSBhbmQgemVyby1pbml0aWFsaXplIGFy cmF5Lg0KPiArKiovDQo+ICt2b2lkICoNCj4gK2NhbGxvYyhzaXplX3QgTnVtLCBzaXplX3QgU2l6 ZSkNCj4gK3sNCj4gKyAgdm9pZCAgICAgICAqUmV0VmFsOw0KPiArICBzaXplX3QgICAgICBOdW1T aXplOw0KPiArDQo+ICsgIE51bVNpemUgPSBOdW0gKiBTaXplOw0KPiArICBSZXRWYWwgID0gTlVM TDsNCj4gKyAgaWYgKE51bVNpemUgIT0gMCkgew0KPiArICBSZXRWYWwgPSBtYWxsb2MoTnVtU2l6 ZSk7DQo+ICsgIGlmKCBSZXRWYWwgIT0gTlVMTCkgew0KPiArICAgIChWT0lEKVplcm9NZW0oIFJl dFZhbCwgTnVtU2l6ZSk7DQo+ICsgIH0NCj4gKyAgfQ0KPiArICBERUJVRygoREVCVUdfUE9PTCwg IjB4JXAgPSBjYWxsb2MoJWQsICVkKVxuIiwgUmV0VmFsLCBOdW0sIFNpemUpKTsNCj4gKw0KPiAr ICByZXR1cm4gUmV0VmFsOw0KPiArfQ0KPiArDQo+ICsvLw0KPiArLy8gIFRoZSBhcnJheXMgZ2l2 ZSB0aGUgY3VtdWxhdGl2ZSBudW1iZXIgb2YgZGF5cyB1cCB0byB0aGUgZmlyc3Qgb2YgdGhlDQo+ ICsvLyAgbW9udGggbnVtYmVyIHVzZWQgYXMgdGhlIGluZGV4ICgxIC0+IDEyKSBmb3IgcmVndWxh ciBhbmQgbGVhcCB5ZWFycy4NCj4gKy8vICBUaGUgdmFsdWUgYXQgaW5kZXggMTMgaXMgZm9yIHRo ZSB3aG9sZSB5ZWFyLg0KPiArLy8NCj4gK1VJTlROIEN1bXVsYXRpdmVEYXlzWzJdWzE0XSA9IHsN Cj4gKyAgew0KPiArICAgIDAsDQo+ICsgICAgMCwNCj4gKyAgICAzMSwNCj4gKyAgICAzMSArIDI4 LA0KPiArICAgIDMxICsgMjggKyAzMSwNCj4gKyAgICAzMSArIDI4ICsgMzEgKyAzMCwNCj4gKyAg ICAzMSArIDI4ICsgMzEgKyAzMCArIDMxLA0KPiArICAgIDMxICsgMjggKyAzMSArIDMwICsgMzEg KyAzMCwNCj4gKyAgICAzMSArIDI4ICsgMzEgKyAzMCArIDMxICsgMzAgKyAzMSwNCj4gKyAgICAz MSArIDI4ICsgMzEgKyAzMCArIDMxICsgMzAgKyAzMSArIDMxLA0KPiArICAgIDMxICsgMjggKyAz MSArIDMwICsgMzEgKyAzMCArIDMxICsgMzEgKyAzMCwNCj4gKyAgICAzMSArIDI4ICsgMzEgKyAz MCArIDMxICsgMzAgKyAzMSArIDMxICsgMzAgKyAzMSwNCj4gKyAgICAzMSArIDI4ICsgMzEgKyAz MCArIDMxICsgMzAgKyAzMSArIDMxICsgMzAgKyAzMSArIDMwLA0KPiArICAgIDMxICsgMjggKyAz MSArIDMwICsgMzEgKyAzMCArIDMxICsgMzEgKyAzMCArIDMxICsgMzAgKyAzMQ0KPiArICB9LA0K PiArICB7DQo+ICsgICAgMCwNCj4gKyAgICAwLA0KPiArICAgIDMxLA0KPiArICAgIDMxICsgMjks DQo+ICsgICAgMzEgKyAyOSArIDMxLA0KPiArICAgIDMxICsgMjkgKyAzMSArIDMwLA0KPiArICAg IDMxICsgMjkgKyAzMSArIDMwICsgMzEsDQo+ICsgICAgMzEgKyAyOSArIDMxICsgMzAgKyAzMSAr IDMwLA0KPiArICAgIDMxICsgMjkgKyAzMSArIDMwICsgMzEgKyAzMCArIDMxLA0KPiArICAgIDMx ICsgMjkgKyAzMSArIDMwICsgMzEgKyAzMCArIDMxICsgMzEsDQo+ICsgICAgMzEgKyAyOSArIDMx ICsgMzAgKyAzMSArIDMwICsgMzEgKyAzMSArIDMwLA0KPiArICAgIDMxICsgMjkgKyAzMSArIDMw ICsgMzEgKyAzMCArIDMxICsgMzEgKyAzMCArIDMxLA0KPiArICAgIDMxICsgMjkgKyAzMSArIDMw ICsgMzEgKyAzMCArIDMxICsgMzEgKyAzMCArIDMxICsgMzAsDQo+ICsgICAgMzEgKyAyOSArIDMx ICsgMzAgKyAzMSArIDMwICsgMzEgKyAzMSArIDMwICsgMzEgKyAzMCArIDMxDQo+ICsgIH0NCj4g K307DQo+ICsNCj4gKyNkZWZpbmUgSXNMZWFwKHkpICAgKCgoeSkgJSA0KSA9PSAwICYmICgoKHkp ICUgMTAwKSAhPSAwIHx8ICgoeSkgJSA0MDApID09IDApKQ0KPiArI2RlZmluZSBTRUNTUEVSTUlO ICAoNjApDQo+ICsjZGVmaW5lIFNFQ1NQRVJIT1VSICg2MCAqIDYwKQ0KPiArI2RlZmluZSBTRUNT UEVSREFZICAoMjQgKiBTRUNTUEVSSE9VUikNCj4gKw0KPiArLyoqDQo+ICsgIEdldCB0aGUgc3lz dGVtIHRpbWUgYXMgc2Vjb25kcyBlbGFwc2VkIHNpbmNlIG1pZG5pZ2h0LCBKYW51YXJ5IDEsIDE5 NzAuDQo+ICsqKi8NCj4gK3RpbWVfdCB0aW1lICh0aW1lX3QgKnRpbWVyKQ0KPiArew0KPiArICBF RklfVElNRSAgVGltZTsNCj4gKyAgdGltZV90ICAgIENhbFRpbWU7DQo+ICsgIFVJTlROICAgICBZ ZWFyOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIEdldCB0aGUgY3VycmVudCB0aW1lIGFuZCBkYXRl IGluZm9ybWF0aW9uDQo+ICsgIC8vDQo+ICsgIGdSVC0+R2V0VGltZSAoJlRpbWUsIE5VTEwpOw0K PiArDQo+ICsgIC8vDQo+ICsgIC8vIFllYXJzIEhhbmRsaW5nDQo+ICsgIC8vIFVUaW1lIHNob3Vs ZCBub3cgYmUgc2V0IHRvIDAwOjAwOjAwIG9uIEphbiAxIG9mIHRoZSBjdXJyZW50IHllYXIuDQo+ ICsgIC8vDQo+ICsgIGZvciAoWWVhciA9IDE5NzAsIENhbFRpbWUgPSAwOyBZZWFyICE9IFRpbWUu WWVhcjsgWWVhcisrKSB7DQo+ICsgICAgQ2FsVGltZSA9IENhbFRpbWUgKyAodGltZV90KShDdW11 bGF0aXZlRGF5c1tJc0xlYXAoWWVhcildWzEzXSAqIFNFQ1NQRVJEQVkpOw0KPiArICB9DQo+ICsN Cj4gKyAgLy8NCj4gKyAgLy8gQWRkIGluIG51bWJlciBvZiBzZWNvbmRzIGZvciBjdXJyZW50IE1v bnRoLCBEYXksIEhvdXIsIE1pbnV0ZSwgU2Vjb25kcywgYW5kIFRpbWVab25lIGFkanVzdG1lbnQN Cj4gKyAgLy8NCj4gKyAgQ2FsVGltZSA9IENhbFRpbWUgKw0KPiArICAgICAgICAgICAgKHRpbWVf dCkoKFRpbWUuVGltZVpvbmUgIT0gRUZJX1VOU1BFQ0lGSUVEX1RJTUVaT05FKSA/IChUaW1lLlRp bWVab25lICogNjApIDogMCkgKw0KPiArICAgICAgICAgICAgKHRpbWVfdCkoQ3VtdWxhdGl2ZURh eXNbSXNMZWFwKFRpbWUuWWVhcildW1RpbWUuTW9udGhdICogU0VDU1BFUkRBWSkgKw0KPiArICAg ICAgICAgICAgKHRpbWVfdCkoKChUaW1lLkRheSA+IDApID8gVGltZS5EYXkgLSAxIDogMCkgKiBT RUNTUEVSREFZKSArDQo+ICsgICAgICAgICAgICAodGltZV90KShUaW1lLkhvdXIgKiBTRUNTUEVS SE9VUikgKw0KPiArICAgICAgICAgICAgKHRpbWVfdCkoVGltZS5NaW51dGUgKiA2MCkgKw0KPiAr ICAgICAgICAgICAgKHRpbWVfdClUaW1lLlNlY29uZDsNCj4gKw0KPiArICBpZiAodGltZXIgIT0g TlVMTCkgew0KPiArICAgICp0aW1lciA9IENhbFRpbWU7DQo+ICsgIH0NCj4gKw0KPiArICByZXR1 cm4gQ2FsVGltZTsNCj4gK30NCj4gKw0KPiArdHlwZWRlZg0KPiAraW50DQo+ICsoKlNPUlRfQ09N UEFSRSkoDQo+ICsgIElOICBWT0lEICAqQnVmZmVyMSwNCj4gKyAgSU4gIFZPSUQgICpCdWZmZXIy DQo+ICsgICk7DQo+ICsNCj4gKy8qKg0KPiArICBEdXBsaWNhdGVkIGZyb20gRURLSUkgQmFzZVNv cnRMaWIgZm9yIHFzb3J0KCkgd3JhcHBlcg0KPiArICBAcGFyYW1baW4sIG91dF0gQnVmZmVyVG9T b3J0ICAgb24gY2FsbCBhIEJ1ZmZlciBvZiAocG9zc2libHkgc29ydGVkKSBlbGVtZW50cw0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb24gcmV0dXJuIGEgYnVmZmVyIG9mIHNv cnRlZCBlbGVtZW50cw0KPiArICBAcGFyYW1baW5dIENvdW50ICAgICAgICAgICAgICAgdGhlIG51 bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgYnVmZmVyIHRvIHNvcnQNCj4gKyAgQHBhcmFtW2luXSBF bGVtZW50U2l6ZSAgICAgICAgIFNpemUgb2YgYW4gZWxlbWVudCBpbiBieXRlcw0KPiArICBAcGFy YW1baW5dIENvbXBhcmVGdW5jdGlvbiAgICAgVGhlIGZ1bmN0aW9uIHRvIGNhbGwgdG8gcGVyZm9y bSB0aGUgY29tcGFyaXNvbg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Yg YW55IDIgZWxlbWVudHMNCj4gKyAgQHBhcmFtW2luXSBCdWZmZXIgICAgICAgICAgICAgIEJ1ZmZl ciBvZiBzaXplIEVsZW1lbnRTaXplIGZvciB1c2UgaW4gc3dhcHBpbmcNCj4gKyoqLw0KPiArU1RB VElDDQo+ICtWT0lEDQo+ICtRdWlja1NvcnRXb3JrZXIgKA0KPiArICBJTiBPVVQgICAgVk9JRCAg ICAgICAgICAqQnVmZmVyVG9Tb3J0LA0KPiArICBJTiBDT05TVCAgVUlOVE4gICAgICAgICBDb3Vu dCwNCj4gKyAgSU4gQ09OU1QgIFVJTlROICAgICAgICAgRWxlbWVudFNpemUsDQo+ICsgIElOICAg ICAgICBTT1JUX0NPTVBBUkUgIENvbXBhcmVGdW5jdGlvbiwNCj4gKyAgSU4gICAgICAgIFZPSUQg ICAgICAgICAgKkJ1ZmZlcg0KPiArICApDQo+ICt7DQo+ICsgIFZPSUQgICAgICAgICpQaXZvdDsN Cj4gKyAgVUlOVE4gICAgICAgTG9vcENvdW50Ow0KPiArICBVSU5UTiAgICAgICBOZXh0U3dhcExv Y2F0aW9uOw0KPiArDQo+ICsgIEFTU0VSVChCdWZmZXJUb1NvcnQgICAgIT0gTlVMTCk7DQo+ICsg IEFTU0VSVChDb21wYXJlRnVuY3Rpb24gIT0gTlVMTCk7DQo+ICsgIEFTU0VSVChCdWZmZXIgICAg ICAgICAgIT0gTlVMTCk7DQo+ICsNCj4gKyAgaWYgKENvdW50IDwgMiB8fCBFbGVtZW50U2l6ZSAg PCAxKSB7DQo+ICsgICAgcmV0dXJuOw0KPiArICB9DQo+ICsNCj4gKyAgTmV4dFN3YXBMb2NhdGlv biA9IDA7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gUGljayBhIHBpdm90ICh3ZSBjaG9vc2UgbGFz dCBlbGVtZW50KQ0KPiArICAvLw0KPiArICBQaXZvdCA9ICgoVUlOVDggKilCdWZmZXJUb1NvcnQg KyAoKENvdW50IC0gMSkgKiBFbGVtZW50U2l6ZSkpOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIE5v dyBnZXQgdGhlIHBpdm90IHN1Y2ggdGhhdCBhbGwgb24gImxlZnQiIGFyZSBiZWxvdyBpdA0KPiAr ICAvLyBhbmQgZXZlcnl0aGluZyAicmlnaHQiIGFyZSBhYm92ZSBpdA0KPiArICAvLw0KPiArICBm b3IgKExvb3BDb3VudCA9IDA7IExvb3BDb3VudCA8IENvdW50IC0gMTsgIExvb3BDb3VudCsrKQ0K PiArICB7DQo+ICsgICAgLy8NCj4gKyAgICAvLyBJZiB0aGUgZWxlbWVudCBpcyBsZXNzIHRoYW4g dGhlIHBpdm90DQo+ICsgICAgLy8NCj4gKyAgICBpZiAoQ29tcGFyZUZ1bmN0aW9uICgoVk9JRCAq KSgoVUlOVDggKilCdWZmZXJUb1NvcnQgKyAoKExvb3BDb3VudCkgKiBFbGVtZW50U2l6ZSkpLCBQ aXZvdCkgPD0gMCkgew0KPiArICAgICAgLy8NCj4gKyAgICAgIC8vIFN3YXANCj4gKyAgICAgIC8v DQo+ICsgICAgICBDb3B5TWVtIChCdWZmZXIsIChVSU5UOCAqKUJ1ZmZlclRvU29ydCArIChOZXh0 U3dhcExvY2F0aW9uICogRWxlbWVudFNpemUpLCBFbGVtZW50U2l6ZSk7DQo+ICsgICAgICBDb3B5 TWVtICgoVUlOVDggKilCdWZmZXJUb1NvcnQgKyAoTmV4dFN3YXBMb2NhdGlvbiAqIEVsZW1lbnRT aXplKSwgKFVJTlQ4ICopQnVmZmVyVG9Tb3J0ICsgKChMb29wQ291bnQpICoNCj4gRWxlbWVudFNp emUpLCBFbGVtZW50U2l6ZSk7DQo+ICsgICAgICBDb3B5TWVtICgoVUlOVDggKilCdWZmZXJUb1Nv cnQgKyAoKExvb3BDb3VudCkgKiBFbGVtZW50U2l6ZSksIEJ1ZmZlciwgRWxlbWVudFNpemUpOw0K PiArDQo+ICsgICAgICAvLw0KPiArICAgICAgLy8gSW5jcmVtZW50IE5leHRTd2FwTG9jYXRpb24N Cj4gKyAgICAgIC8vDQo+ICsgICAgICBOZXh0U3dhcExvY2F0aW9uKys7DQo+ICsgICAgfQ0KPiAr ICB9DQo+ICsgIC8vDQo+ICsgIC8vIFN3YXAgcGl2b3QgdG8gaXQncyBmaW5hbCBwb3NpdGlvbiAo TmV4dFN3YXBMb2NhaXRvbikNCj4gKyAgLy8NCj4gKyAgQ29weU1lbSAoQnVmZmVyLCBQaXZvdCwg RWxlbWVudFNpemUpOw0KPiArICBDb3B5TWVtIChQaXZvdCwgKFVJTlQ4ICopQnVmZmVyVG9Tb3J0 ICsgKE5leHRTd2FwTG9jYXRpb24gKiBFbGVtZW50U2l6ZSksIEVsZW1lbnRTaXplKTsNCj4gKyAg Q29weU1lbSAoKFVJTlQ4ICopQnVmZmVyVG9Tb3J0ICsgKE5leHRTd2FwTG9jYXRpb24gKiBFbGVt ZW50U2l6ZSksIEJ1ZmZlciwgRWxlbWVudFNpemUpOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIE5v dyByZWN1cnNlIG9uIDIgcGFyaXRpYWwgbGlzdHMuICBOZWl0aGVyIG9mIHRoZXNlIHdpbGwgaGF2 ZSB0aGUgJ3Bpdm90JyBlbGVtZW50Lg0KPiArICAvLyBJRSBsaXN0IGlzIHNvcnRlZCBsZWZ0IGhh bGYsIHBpdm90IGVsZW1lbnQsIHNvcnRlZCByaWdodCBoYWxmLi4uDQo+ICsgIC8vDQo+ICsgIFF1 aWNrU29ydFdvcmtlciAoDQo+ICsgICAgQnVmZmVyVG9Tb3J0LA0KPiArICAgIE5leHRTd2FwTG9j YXRpb24sDQo+ICsgICAgRWxlbWVudFNpemUsDQo+ICsgICAgQ29tcGFyZUZ1bmN0aW9uLA0KPiAr ICAgIEJ1ZmZlcg0KPiArICAgICk7DQo+ICsNCj4gKyAgUXVpY2tTb3J0V29ya2VyICgNCj4gKyAg ICAoVUlOVDggKilCdWZmZXJUb1NvcnQgKyAoTmV4dFN3YXBMb2NhdGlvbiArIDEpICogRWxlbWVu dFNpemUsDQo+ICsgICAgQ291bnQgLSBOZXh0U3dhcExvY2F0aW9uIC0gMSwNCj4gKyAgICBFbGVt ZW50U2l6ZSwNCj4gKyAgICBDb21wYXJlRnVuY3Rpb24sDQo+ICsgICAgQnVmZmVyDQo+ICsgICAg KTsNCj4gKw0KPiArICByZXR1cm47DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBQZXJmb3JtcyBh IHF1aWNrIHNvcnQNCj4gKyoqLw0KPiArdm9pZCBxc29ydCAodm9pZCAqYmFzZSwgc2l6ZV90IG51 bSwgc2l6ZV90IHdpZHRoLCBpbnQgKCpjb21wYXJlKShjb25zdCB2b2lkICosIGNvbnN0IHZvaWQg KikpDQo+ICt7DQo+ICsgIFZPSUQgICpCdWZmZXI7DQo+ICsNCj4gKyAgQVNTRVJUIChiYXNlICAg ICE9IE5VTEwpOw0KPiArICBBU1NFUlQgKGNvbXBhcmUgIT0gTlVMTCk7DQo+ICsNCj4gKyAgLy8N Cj4gKyAgLy8gVXNlIENSVC1zdHlsZSBtYWxsb2MgdG8gY292ZXIgQlMgYW5kIFJUIG1lbW9yeSBh bGxvY2F0aW9uLg0KPiArICAvLw0KPiArICBCdWZmZXIgPSBtYWxsb2MgKHdpZHRoKTsNCj4gKyAg QVNTRVJUIChCdWZmZXIgIT0gTlVMTCk7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gUmUtdXNlIFBl cmZvcm1RdWlja1NvcnQoKSBmdW5jdGlvbiBJbXBsZW1lbnRhdGlvbiBpbiBFREtJSSBCYXNlU29y dExpYi4NCj4gKyAgLy8NCj4gKyAgUXVpY2tTb3J0V29ya2VyIChiYXNlLCAoVUlOVE4pbnVtLCAo VUlOVE4pd2lkdGgsIChTT1JUX0NPTVBBUkUpY29tcGFyZSwgQnVmZmVyKTsNCj4gKw0KPiArICBm cmVlIChCdWZmZXIpOw0KPiArICByZXR1cm47DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBHZXQg Y2hhcmFjdGVyIGZyb20gc3RyZWFtLCB3ZSBkb24ndCBzdXBwb3J0IGZpbGUgb3BlcmFzdGlvbiBv biBlZGsyIEpTT04gbGlicmFyeS4NCj4gKw0KPiArICBAcmV0dXJuIFJldHVybnMgdGhlIGNoYXJh Y3RlciBjdXJyZW50bHkgcG9pbnRlZCBieSB0aGUgaW50ZXJuYWwgZmlsZSBwb3NpdGlvbiBpbmRp Y2F0b3Igb2YgdGhlIHNwZWNpZmllZCBzdHJlYW0NCj4gKw0KPiArKiovDQo+ICtpbnQgZmdldGMo RklMRSAqIF9GaWxlKXsNCj4gKyAgIHJldHVybiAwOw0KPiArfQ0KPiBkaWZmIC0tZ2l0IGEvUmVk ZmlzaFBrZy9MaWJyYXJ5L0NydExpYi9DcnRMaWIuaW5mIGIvUmVkZmlzaFBrZy9MaWJyYXJ5L0Ny dExpYi9DcnRMaWIuaW5mDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAw MDAuLmI1MTQ4MTdjZjQNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9SZWRmaXNoUGtnL0xpYnJh cnkvQ3J0TGliL0NydExpYi5pbmYNCj4gQEAgLTAsMCArMSwzNyBAQA0KPiArIyMgQGZpbGUNCj4g KyMgRURLMiBDIFJ1bnRpbWUgTGlicmFyeSBmb3Igb3BlbnNvdXJjZSBwcm9qZWN0Lg0KPiArIw0K PiArIyBDb3B5cmlnaHQgKGMpIDIwMTksIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJl c2VydmVkLjxCUj4NCj4gKyMgKEMpIENvcHlyaWdodCAyMDIwIEhld2xldHQgUGFja2FyZCBFbnRl cnByaXNlIERldmVsb3BtZW50IExQPEJSPg0KPiArIw0KPiArIyAgICBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiArIw0KPiArIyMNCj4gKw0KPiArW0RlZmlu ZXNdDQo+ICsgIElORl9WRVJTSU9OICAgICAgICAgICAgICAgICAgICA9IDB4MDAwMTAwMWINCj4g KyAgQkFTRV9OQU1FICAgICAgICAgICAgICAgICAgICAgID0gQ3J0TGliDQo+ICsgIEZJTEVfR1VJ RCAgICAgICAgICAgICAgICAgICAgICA9IDgyNjNCOEFDLUQwMjEtNDI1RC1CMzM3LTNFQzk2RjVE QzE5Qg0KPiArICBNT0RVTEVfVFlQRSAgICAgICAgICAgICAgICAgICAgPSBEWEVfRFJJVkVSDQo+ ICsgIFZFUlNJT05fU1RSSU5HICAgICAgICAgICAgICAgICA9IDEuMA0KPiArICBMSUJSQVJZX0NM QVNTICAgICAgICAgICAgICAgICAgPSBDcnRMaWJ8RFhFX0NPUkUgRFhFX0RSSVZFUiBEWEVfUlVO VElNRV9EUklWRVIgRFhFX1NNTV9EUklWRVIgVUVGSV9BUFBMSUNBVElPTg0KPiBVRUZJX0RSSVZF Ug0KPiArDQo+ICsjDQo+ICsjICBWQUxJRF9BUkNISVRFQ1RVUkVTICAgICAgICAgICA9IElBMzIg WDY0IEFSTSBBQVJDSDY0IFJJU0NWNjQNCj4gKyMNCj4gKw0KPiArW1NvdXJjZXNdDQo+ICsgIENy dExpYi5jDQo+ICsNCj4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4gKyAgQmFzZUxpYg0KPiArICBEZWJ1 Z0xpYg0KPiArICBNZW1vcnlBbGxvY2F0aW9uTGliDQo+ICsgIFVlZmlSdW50aW1lU2VydmljZXNU YWJsZUxpYg0KPiArDQo+ICtbUGFja2FnZXNdDQo+ICsgIE1kZVBrZy9NZGVQa2cuZGVjDQo+ICsg IE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ICsgIFJlZGZpc2hQa2cvUmVkZmlzaFBr Zy5kZWMNCj4gKw0KPiArDQo+IGRpZmYgLS1naXQgYS9SZWRmaXNoUGtnL1JlZGZpc2hMaWJzLmRz Yy5pbmMgYi9SZWRmaXNoUGtnL1JlZGZpc2hMaWJzLmRzYy5pbmMNCj4gaW5kZXggZDRjMDhlMThh Yy4uMmE5NTFiZDhmYSAxMDA2NDQNCj4gLS0tIGEvUmVkZmlzaFBrZy9SZWRmaXNoTGlicy5kc2Mu aW5jDQo+ICsrKyBiL1JlZGZpc2hQa2cvUmVkZmlzaExpYnMuZHNjLmluYw0KPiBAQCAtMTIsNSAr MTIsNiBAQA0KPiAgIyMNCj4gICFpZiAkKFJFREZJU0hfRU5BQkxFKSA9PSBUUlVFDQo+ICAgIFVj czJVdGY4TGlifFJlZGZpc2hQa2cvTGlicmFyeS9CYXNlVWNzMlV0ZjhMaWIvQmFzZVVjczJVdGY4 TGliLmluZg0KPiArICBDcnRMaWJ8UmVkZmlzaFBrZy9MaWJyYXJ5L0NydExpYi9DcnRMaWIuaW5m DQo+ICAhZW5kaWYNCj4gDQo+IGRpZmYgLS1naXQgYS9SZWRmaXNoUGtnL1JlZGZpc2hQa2cuY2ku eWFtbCBiL1JlZGZpc2hQa2cvUmVkZmlzaFBrZy5jaS55YW1sDQo+IGluZGV4IDIwYzI5N2FkMjIu Ljk4OTVmZGFjOTkgMTAwNjQ0DQo+IC0tLSBhL1JlZGZpc2hQa2cvUmVkZmlzaFBrZy5jaS55YW1s DQo+ICsrKyBiL1JlZGZpc2hQa2cvUmVkZmlzaFBrZy5jaS55YW1sDQo+IEBAIC0xNyw2ICsxNywy NSBAQA0KPiAgICAgICAgICBdLA0KPiAgICAgICAgICAjIyBCb3RoIGZpbGUgcGF0aCBhbmQgZGly ZWN0b3J5IHBhdGggYXJlIGFjY2VwdGVkLg0KPiAgICAgICAgICAiSWdub3JlRmlsZXMiOiBbDQo+ ICsgICAgICAgICAgICAjIyBCZWxvdyBhcmUgZmlsZXMgaW5jb3Jwb3JhdGVkIHdpdGggb3BlbiBz b3VyY2Ugd2hpY2ggYXJlDQo+ICsgICAgICAgICAgICAjIyBub3QgZWRrMiBjb2Rpbmcgc3RhbmRh cmQgY29tcGxpYW50Lg0KPiArICAgICAgICAgICAgIyMNCj4gKyAgICAgICAgICAgICMjIEVESzIg Q1JUIGxpYnJhcnkgd2hpY2ggaXMgbm90IGVkazIgY29kaW5nDQo+ICsgICAgICAgICAgICAjIyBz dGFuZGFyZCBjb21wbGlhbnQuDQo+ICsgICAgICAgICAgICAjIyBDIHJ1bnRpbWUgbGlicmFyeSBm b3IgRURLSUkgSnNvbkxpYi4NCj4gKyAgICAgICAgICAgICJJbmNsdWRlL0NydC9zeXMiLA0KPiAr ICAgICAgICAgICAgIkluY2x1ZGUvQ3J0L2Fzc2VydC5oIiwNCj4gKyAgICAgICAgICAgICJJbmNs dWRlL0NydC9lcnJuby5oIiwNCj4gKyAgICAgICAgICAgICJJbmNsdWRlL0NydC9saW1pdHMuaCIs DQo+ICsgICAgICAgICAgICAiSW5jbHVkZS9DcnQvbWF0aC5oIiwNCj4gKyAgICAgICAgICAgICJJ bmNsdWRlL0NydC9zdGRhcmcuaCIsDQo+ICsgICAgICAgICAgICAiSW5jbHVkZS9DcnQvc3RkZGVm LmgiLA0KPiArICAgICAgICAgICAgIkluY2x1ZGUvQ3J0L3N0ZGlvLmgiLA0KPiArICAgICAgICAg ICAgIkluY2x1ZGUvQ3J0L3N0ZGxpYi5oIiwNCj4gKyAgICAgICAgICAgICJJbmNsdWRlL0NydC9z dHJpbmcuaCIsDQo+ICsgICAgICAgICAgICAiSW5jbHVkZS9DcnQvdGltZS5oIiwNCj4gKyAgICAg ICAgICAgICJJbmNsdWRlL0xpYnJhcnkvQ3J0TGliLmgiLA0KPiArICAgICAgICAgICAgIkxpYnJh cnkvQ3J0TGliL0NydExpYi5jIg0KPiAgICAgICAgICBdDQo+ICAgICAgfSwNCj4gICAgICAiQ29t cGlsZXJQbHVnaW4iOiB7DQo+IGRpZmYgLS1naXQgYS9SZWRmaXNoUGtnL1JlZGZpc2hQa2cuZGVj IGIvUmVkZmlzaFBrZy9SZWRmaXNoUGtnLmRlYw0KPiBpbmRleCBhZWNjMWY0YTNhLi4yMTQyYjQz NjQwIDEwMDY0NA0KPiAtLS0gYS9SZWRmaXNoUGtnL1JlZGZpc2hQa2cuZGVjDQo+ICsrKyBiL1Jl ZGZpc2hQa2cvUmVkZmlzaFBrZy5kZWMNCj4gQEAgLTE1LDE2ICsxNSwyNCBAQA0KPiANCj4gIFtJ bmNsdWRlc10NCj4gICAgSW5jbHVkZQ0KPiArICBJbmNsdWRlL0NydCAgICAgICAgICAgICAgICAg ICAjIEhlYWRlciBmaWxlcyBmb3IgQyBSVEwuDQo+IA0KPiAgW0xpYnJhcnlDbGFzc2VzXQ0KPiAg ICAjIyAgQGxpYnJhcnljbGFzcyBQbGF0Zm9ybSBSZWRmaXNoIEhvc3QgSW50ZXJmYWNlIExpYnJh cnkNCj4gICAgIyAgIFBsYXRmb3JtIGltcGxlbWVudGF0aW9uLXNwZWNpZmljIFJlZGZpc2ggSG9z dCBJbnRlcmZhY2UuDQo+ICAgIFJlZGZpc2hQbGF0Zm9ybUhvc3RJbnRlcmZhY2VMaWJ8SW5jbHVk ZS9MaWJyYXJ5L1JlZGZpc2hIb3N0SW50ZXJmYWNlTGliLmgNCj4gKw0KPiAgICAjIyAgQGxpYnJh cnljbGFzcyAgVGhpcyBsaWJyYXJ5IHByb3ZpZGVzIFVDUzIgdG8gVVRGOCBtYW5pcHVsYXRpb24N Cj4gICAgIyAgIGZ1bmN0aW9ucy4NCj4gICAgIw0KPiAgICBVY3MyVXRmOExpYnxJbmNsdWRlL0xp YnJhcnkvQmFzZVVjczJVdGY4TGliLmgNCj4gDQo+ICsgICMjICBAbGlicmFyeWNsYXNzICBQcm92 aWRlcyB0aGUgQyBydW50aW1lIGxpYnJhcnkgZnVuY3Rpb25zDQo+ICsgICMgICBDUlQgbGlicmFy eSBpcyBjdXJyZW50bHkgdXNlZCBieSBlZGsyIEpzb25MaWIgKG9wZW4gc291cmNlDQo+ICsgICMg ICBqYW5zc29uIHByb2plY3QpIGFuZCBlZGsyIFJlZGZpc2hMaWIgKGxpYnJlZGZpc2ggb3BlbiBz b3VyY2UNCj4gKyAgIyAgIHByb2plY3QpLg0KPiArICBDcnRMaWJ8SW5jbHVkZS9MaWJyYXJ5L0Ny dExpYi5oDQo+ICsNCj4gIFtQcm90b2NvbHNdDQo+ICAgICMjIEluY2x1ZGUvUHJvdG9jb2wvUmVk ZmlzaERpc2NvdmVyLmgNCj4gICAgZ0VmaVJlZGZpc2hEaXNjb3ZlclByb3RvY29sR3VpZCAgICAg ID0geyAweDVkYjEyNTA5LCAweDQ1NTAsIDB4NDM0NywgeyAweDk2LCAweGIzLCAweDczLCAweGMw LCAweGZmLCAweDZlLCAweDg2LCAweDlmDQo+IH19DQo+IGRpZmYgLS1naXQgYS9SZWRmaXNoUGtn L1JlZGZpc2hQa2cuZHNjIGIvUmVkZmlzaFBrZy9SZWRmaXNoUGtnLmRzYw0KPiBpbmRleCAzNjM5 YjYyMGU2Li5hYTFjY2Q1YTk1IDEwMDY0NA0KPiAtLS0gYS9SZWRmaXNoUGtnL1JlZGZpc2hQa2cu ZHNjDQo+ICsrKyBiL1JlZGZpc2hQa2cvUmVkZmlzaFBrZy5kc2MNCj4gQEAgLTQ4LDUgKzQ4LDYg QEANCj4gIFtDb21wb25lbnRzXQ0KPiAgICBSZWRmaXNoUGtnL0xpYnJhcnkvUGxhdGZvcm1Ib3N0 SW50ZXJmYWNlTGliTnVsbC9QbGF0Zm9ybUhvc3RJbnRlcmZhY2VMaWJOdWxsLmluZg0KPiAgICBS ZWRmaXNoUGtnL0xpYnJhcnkvQmFzZVVjczJVdGY4TGliL0Jhc2VVY3MyVXRmOExpYi5pbmYNCj4g KyAgUmVkZmlzaFBrZy9MaWJyYXJ5L0NydExpYi9DcnRMaWIuaW5mDQo+IA0KPiAgICAhaW5jbHVk ZSBSZWRmaXNoUGtnL1JlZGZpc2guZHNjLmluYw0KPiAtLQ0KPiAyLjE3LjENCj4gDQo+IA0KPiAN Cj4gDQo+IA0KDQo=