From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id A0502A04FD; Fri, 8 Apr 2022 19:26:38 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3ECB140041; Fri, 8 Apr 2022 19:26:38 +0200 (CEST) Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by mails.dpdk.org (Postfix) with ESMTP id EA4834003F for ; Fri, 8 Apr 2022 19:26:35 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1649438796; x=1680974796; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=IeUa/RW9ZCMn+oPmyz+944oGkn/F5D2kyQIBzpQBxEw=; b=Ec4jUx/3Z8Qy/6K8hwEnES/GoAxw39dkiUwyEtzc57R+kfQBA0e4BKcv fJLM4MjxORqOyl0DlMY0lWMP43R+lXi+can/RdrUa+nXZY+4gRtBi3vBn jWQC6mDA+ePp8ZZryQYo9smL+9OeImM1Y99o4cHld/VtshcZLGkrae7pd QZk+AvHWb/Mg4tPvU4oeY2X9ZU2PVaVBmg6oQpWvnUenHcRwlVwsdlE4N Bhrt8yeuK+66pfKc5peo7NBumFwv51MIT+VVA/+6Rtz4fJk/N3zLkQAR3 RSKlH/AFl9KxxCY1UZOWmEmJIa+C4HGZCo5a2ZnBUjPLBApigDtUNzmoj w==; X-IronPort-AV: E=McAfee;i="6400,9594,10310"; a="322339627" X-IronPort-AV: E=Sophos;i="5.90,245,1643702400"; d="scan'208";a="322339627" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Apr 2022 10:26:34 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,245,1643702400"; d="scan'208";a="550581507" Received: from fmsmsx604.amr.corp.intel.com ([10.18.126.84]) by orsmga007.jf.intel.com with ESMTP; 08 Apr 2022 10:26:34 -0700 Received: from fmsmsx605.amr.corp.intel.com (10.18.126.85) by fmsmsx604.amr.corp.intel.com (10.18.126.84) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Fri, 8 Apr 2022 10:26:34 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx605.amr.corp.intel.com (10.18.126.85) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27 via Frontend Transport; Fri, 8 Apr 2022 10:26:34 -0700 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (104.47.55.173) 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.2308.27; Fri, 8 Apr 2022 10:26:32 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CaZqHpM4MPUFg9cBFqSvbB2y5IoGYNfUmpKrjnm3xodHS8MR9jxJVF/KDGKXgmTngyl6IHn5Rb84HdJ8bTkUmD0tbhe2owP4hNE09LHI+zTv1ZQ+VIW2pX6B/1od64cMbVMmoWKxGcQwR0yvWndJGQZY85zcE1ghz6Ku14csGQ8Gc/IHyqD+Hna27Sdbwq+R8xAlTiBdXE+nlwK1937ZhlLYCMyOTX3HHTbsSQI7xq92fmwMULqcgg30PmRTfe60d+jiau+SEPl7XIuFtdjFF4Idjcz9PG5yAuwwckzf0rU0WF0/s1qakYt3cdC1wMXYb11RpeG65w0BUNfswTgw+A== 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=IeUa/RW9ZCMn+oPmyz+944oGkn/F5D2kyQIBzpQBxEw=; b=Eyn6s53LuT/Tt2hC7riPRsIEiNQveqNyFLW4NbTRnnCjBKqYNFKFrvGwRhnwyO7ZwRhXLIJ0QTu/HfJ505HQqgn1UmBf5HHoPU5InWh7XK4245POid5w5prw3kJcfIeT67CkLObhUn5RPoAYUwZYBHas81V+f0OARyPXHVgUO4XT39R806UvrbF5oZjnDl8MkHwyHpexvxyNt6LHyrRERCWqJv6fUd3zixubwuv4QVvnJtHGJcPOTavJ2zLi6iXP0ZiaWOw3KGIfZQ+UjL4sIdEp8MHAXTG5UgqW5IWd6c0bHS6x5OhW3eZaB4x+lI0K8n40v3RUH9QeauwM0QmlOA== 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 DM6PR11MB4491.namprd11.prod.outlook.com (2603:10b6:5:204::19) by CH2PR11MB4469.namprd11.prod.outlook.com (2603:10b6:610:43::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5144.22; Fri, 8 Apr 2022 17:26:30 +0000 Received: from DM6PR11MB4491.namprd11.prod.outlook.com ([fe80::4011:c0b:7a03:b291]) by DM6PR11MB4491.namprd11.prod.outlook.com ([fe80::4011:c0b:7a03:b291%6]) with mapi id 15.20.5144.022; Fri, 8 Apr 2022 17:26:30 +0000 From: "Ananyev, Konstantin" To: "Morrissey, Sean" , Thomas Monjalon CC: "dev@dpdk.org" , "Morrissey, Sean" Subject: RE: [PATCH v4] examples/l3fwd: merge l3fwd-acl into l3fwd Thread-Topic: [PATCH v4] examples/l3fwd: merge l3fwd-acl into l3fwd Thread-Index: AQHYSa7o0U4ZulTtZkmnj3V707QzxqzmRPPw Date: Fri, 8 Apr 2022 17:26:30 +0000 Message-ID: References: <20220406102907.2853883-1-sean.morrissey@intel.com> <20220406120625.3248258-1-sean.morrissey@intel.com> In-Reply-To: <20220406120625.3248258-1-sean.morrissey@intel.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.401.20 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: cb584320-df0f-4b8b-21dd-08da1984eb86 x-ms-traffictypediagnostic: CH2PR11MB4469:EE_ x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: i0GY1BsLUaeLGAL333JTl/YED5qIbWs+OCi9HKcLu76X3tCtrRAA0StKTErBIq04kec2XATjAbc5SzaJqvlZR1SG4zFtdBBHjt9AEIIbIt9C+oi4TD1rxafZeKG1lWmlqlgGiAhoMDs4Jf8srfHfGym/+sBZ3qeYjiHUh/jYfq3laaXK7ZUYrv3CV4ZTYhmM1XK5A3tsCffopIbTXUqlpI0nWFnYTgSLXgxcByFFxUKMpe941+kWHjMgjXT1CgM6S9++ck9s2NF27IeKyrdryyzkaDUAJ1QmBGYFEQ0Ohk3mxH9Jn6kdr3yEE0pHW4fJmctupHjNTkbYQ3wRIdLObi330ZqHsw05YUwj3vJN6f2/0L1a2Q0QHhGYklI5CsZ3ShYLplk8yUcIL/hqKbxcp0zkUEi8odeqMmzQ5jYs7xJdxlTY821gOEQeLnfwnjeLm5Y3YoViHyoJykH9A3igJiEiqPlpl1fkdVDD3SZOGqTqgGaDrNTFm306d/sc5Z4427j9bY1vb9WkthVQiXEFwNrrFT8yhbRHqzaxedoFZSwUHps+yH+IuEdmBDXm8S75tVpmD2QK+sZoGCfR1u8tXhljOWsrxh91QnNxZtwfxNwpUiZbCIs8jo1iBx8P+Tz4bGBfaZEhuEiI+tQsMlIgAMp+usTo/OLl9SNmeDNPGqJOGRmR1ETizegdevDQFhKKVkdRYZRYXyHPkHiVwqBYTBkL3y9OnvCSAO0GEm6tR9E= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM6PR11MB4491.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(186003)(26005)(82960400001)(38070700005)(9686003)(83380400001)(66946007)(66556008)(8936002)(2906002)(30864003)(6506007)(7696005)(122000001)(107886003)(55016003)(508600001)(33656002)(86362001)(5660300002)(54906003)(71200400001)(76116006)(316002)(64756008)(4326008)(8676002)(52536014)(38100700002)(110136005)(66446008)(66476007)(32563001)(579004)(559001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?VHdTZmZZR2F2V0lsM1FwREhnRVNBVElEdFZ6UXIwdGRnK0pRR1dxMnQ2dlUx?= =?utf-8?B?a0JDdmVZVWtPT3dadmxsMUFQUWtKbWdvQXdVQzNtQ3pMN1BadFZrYWdPQWUx?= =?utf-8?B?RUlGZXptYVF3MUlJOTBsNm95N0ZSUVMzWlhsbFloaUVOSTVBYTR4Z24zbmk2?= =?utf-8?B?YUFvWFZud2RnT3piTDNrNzMzbDEvTlY5MnlkcHduTUZLNnpKUzllU0dpc0lL?= =?utf-8?B?TytvNXN0dHMvZTBXbTdDWGpzVG1YRE9SR25ldGxtdWpiSGsxTXR5UjdJTThO?= =?utf-8?B?M1ltQkl6S05VTnNBUHZia3NoTElvVlhkTFFvRVNmRzZSTGlHVkJyMTNIeUlX?= =?utf-8?B?MGFEQWZNckx2dXFYOCtPK1dTeGJzaU9WZG5zY205TXBJUW9YcEJkUndSMEtJ?= =?utf-8?B?VjRSOUxJUFI3NjV0V25qZll1Ukc1L3JLbi9iSWJrdnZ3WS9lUG9CQmpwdnFm?= =?utf-8?B?M3FnSUYvTTFvRWZha3Z4K2U5R0JQYXM3OU80TWplZE5CZjF0b1FJN1hOWTB1?= =?utf-8?B?M29udmZsbGxWc29udXE0ZFBTdUo3OEdBZWxVV09MOWU5NFUvQUk2UVJQSnBw?= =?utf-8?B?dE90STc5VVppUVU2bXk0bjdoVTk0VnZlYlFOeVVwcW01RE56N1RGZFpqV2E1?= =?utf-8?B?LzQ2dXowRjRHOFA1QlNmL0lnQ09IQkJRYnorWFFCQjBjSFlETmtJYktKVVVR?= =?utf-8?B?VTdVVncvNEE4bjBhVFBscHIrZU1pSXpmY3BQbmI4ekhFUURvQW9IcEc0eUpP?= =?utf-8?B?QlFia3I3dzdleWxxWkcvZmU4SHpQb213UFVtYkN4MU9wbUZkak1kdnAzL3Uw?= =?utf-8?B?VFNXWWhKK0s2ZHdvSkNwK2RRdmlqMzJpR1NuUXZNeHVYNVdUa1drZ3R1blZQ?= =?utf-8?B?OWxsSnpKckRaRXR1NjRFSXRMbGx6eTlhbm9DMm5LZ2Zjcm93YnJBL2c2VHlx?= =?utf-8?B?TEZOVzFnSlBWRUUwVFdOY3BoZGZ4T29aR0p6S3Nlem02UGJwNE1ENC9VQUd4?= =?utf-8?B?VjRSczVuZXdmbDByMHZXYmNjUlp1d3N6eGR4MHBHNG03UmRMVldQWTZ4cjJO?= =?utf-8?B?dm1PMFRTYmhyNnZiNVM2Q3hkM0s1S2R1ZUZBL3ovNy9NMjZUVU1rL2w2bisy?= =?utf-8?B?Y1ppc2N5dkVCWm42Wm9pcTZFMzJHaWh2M1NrTDNlckJqWUM5Tit2S2FhOXJZ?= =?utf-8?B?N1RCUFdEa2hVYVFQV2k4L0xWZ0JEbS9vbHJuRWE1MjBXRW02SFdMODBSa2ht?= =?utf-8?B?VjVBZjZNUk5Fa29kdWRtZkNDZSt6ZVkvVGhLNVhLVGd1WGNRVDNGOE93TWVn?= =?utf-8?B?eUJJaW5JTHFjSVh2Q0RKWDhpN0t3eEhmcUhUNjZ0bFNWTmU2ckNTYktaZGsx?= =?utf-8?B?SFIyaXJ2dWRxRFUrdy9vZE1zWkt5NmpBNEptbmlFSk10Yks2NFp6bTlOcHB4?= =?utf-8?B?VEcyd3hvTkswWjFBOXh4Q0lvTlUvb3kwQkM5NmgzRjQ0RFdxb0FhMDRHNU4v?= =?utf-8?B?d2I5Ty81VHJVWXZjcXQ5T0ZNWVBPK3VxQWdJVXVzUG5qRk1qY2dRMkpRR3Vw?= =?utf-8?B?TmdtdURlWEFyOTloeU9kOTN6eGMwZkVJM3Z3cmFsZHdFOUJYakVxYndaeUZv?= =?utf-8?B?Ym44aEZGcWF6TzhVdTJwdlRJdUh5TE81eGVsMnkvOTdCc2J0UEx3bjBMZDhN?= =?utf-8?B?MlcxQW8wNXNWaFBWdFdDbFNCdlNZSnpGOHJzV0YycWI3aDhXS3BreitqQVhz?= =?utf-8?B?SUcwcGtkRitVajdHVjVORzV6Q3BQM0F5MGlLNUxKQWNiVm5DbzRvWUhHcFFt?= =?utf-8?B?aDBMblN2QmlmemNnSlVzd3hmWmptM3BzQkt2UFdiTmpjaWU1cjg4bGdXbWtD?= =?utf-8?B?UDAvTVNRM3VFOFQ0UTZBb0t0TDMyTmZuamErK2gvYUZWVnZ3bGdvWVRBVEUv?= =?utf-8?B?NW1TUE1YcXU1Y1JNRHh1SEtpZWlOL0NoOGJNeE1oanpGc2E2SHZpWnBDM3VQ?= =?utf-8?B?YnczR20zWFk2RGVXcDQraE5vL0l1RmNPTnFIQWtydUE0TnhiNUtQN05IdW1Q?= =?utf-8?B?eERCK2daa2prZk9OcWxuNHBYQm5yQWNSQmFrUVB5aXlrNGttSlpxcXhuU25D?= =?utf-8?B?ekdySWp3NUNpWE5xVkd1R0EzNVNqVEtrc2NhcE9oTW1xVmNmS1F0c0wrbUpU?= =?utf-8?B?R1FuTUNldEVoRGFUMUZIaUdkNnNIaVQ2R0xoUDk2aDhxb2RUdk1ZQ0pWVlBK?= =?utf-8?B?NnErNWkvWTZUYktLRkRtV01DY1ZLNE16Z012T3dOV1BsRGl4QWJwMU1TZHZF?= =?utf-8?B?WWZRMlpyc0p5ZkZ2QWlRWUpUVEpNWlpEYVg5QVZ2ZS8zenJ5SEt1M0VnQ2Rv?= =?utf-8?Q?c/P5Fi+0fcRTJaJk=3D?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM6PR11MB4491.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: cb584320-df0f-4b8b-21dd-08da1984eb86 X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Apr 2022 17:26:30.3535 (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: 1bnp2Z+qG3dmDQil5Gj8ige2Lc3Zsav+KfUaqIZTSB2c5CtR0PL14C1gh/MCkRaiStX7y23QuCxJfe0aQqKJfQLJC8bNudD6xeKGVQohnbk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR11MB4469 X-OriginatorOrg: intel.com X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org DQpIaSBTZWFuLA0KDQpGZXcgbml0cywgdGhhdCBJIGRpZG4ndCBzcG90IHByZXZpb3VzbHksIHBs cyBzZWUgYmVsb3cuDQogDQo+IGwzZndkLWFjbCBjb250YWlucyBkdXBsaWNhdGUgZnVuY3Rpb25z IHRvIGwzZndkLg0KPiBGb3IgdGhpcyByZWFzb24gd2UgbWVyZ2UgbDNmd2QtYWNsIGNvZGUgaW50 byBsM2Z3ZA0KPiB3aXRoICctLWxvb2t1cCBhY2wnIGNtZGxpbmUgb3B0aW9uIHRvIHJ1biBBQ0wu DQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBTZWFuIE1vcnJpc3NleSA8c2Vhbi5tb3JyaXNzZXlAaW50 ZWwuY29tPg0KPiAtLS0NCj4gIE1BSU5UQUlORVJTICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgIDIgLQ0KPiAgZG9jL2d1aWRlcy9yZWxfbm90ZXMvcmVsZWFzZV8yMl8wNy5y c3QgICAgICAgIHwgICAgNSArDQo+ICBkb2MvZ3VpZGVzL3NhbXBsZV9hcHBfdWcvaW5kZXgucnN0 ICAgICAgICAgICAgfCAgICAxIC0NCj4gIGRvYy9ndWlkZXMvc2FtcGxlX2FwcF91Zy9sM19mb3J3 YXJkLnJzdCAgICAgICB8ICAgNjMgKy0NCj4gIC4uLi9zYW1wbGVfYXBwX3VnL2wzX2ZvcndhcmRf YWNjZXNzX2N0cmwucnN0ICB8ICAzNDAgLS0tDQo+ICBleGFtcGxlcy9sM2Z3ZC1hY2wvTWFrZWZp bGUgICAgICAgICAgICAgICAgICAgfCAgIDUxIC0NCj4gIGV4YW1wbGVzL2wzZndkLWFjbC9tYWlu LmMgICAgICAgICAgICAgICAgICAgICB8IDIyNzIgLS0tLS0tLS0tLS0tLS0tLS0NCj4gIGV4YW1w bGVzL2wzZndkLWFjbC9tZXNvbi5idWlsZCAgICAgICAgICAgICAgICB8ICAgMTMgLQ0KPiAgZXhh bXBsZXMvbDNmd2QvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQ0KPiAg ZXhhbXBsZXMvbDNmd2QvbDNmd2QuaCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzOSArLQ0K PiAgZXhhbXBsZXMvbDNmd2QvbDNmd2RfYWNsLmMgICAgICAgICAgICAgICAgICAgIHwgMTA5OCAr KysrKysrKw0KPiAgZXhhbXBsZXMvbDNmd2QvbDNmd2RfYWNsLmggICAgICAgICAgICAgICAgICAg IHwgICA1MSArDQo+ICBleGFtcGxlcy9sM2Z3ZC9sM2Z3ZF9hY2xfc2NhbGFyLmggICAgICAgICAg ICAgfCAgMTEyICsNCj4gIGV4YW1wbGVzL2wzZndkL2wzZndkX3JvdXRlLmggICAgICAgICAgICAg ICAgICB8ICAgMTYgKw0KPiAgZXhhbXBsZXMvbDNmd2QvbWFpbi5jICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICA2NSArLQ0KPiAgZXhhbXBsZXMvbDNmd2QvbWVzb24uYnVpbGQgICAgICAgICAg ICAgICAgICAgIHwgICAgMyArLQ0KPiAgZXhhbXBsZXMvbWVzb24uYnVpbGQgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgMSAtDQo+ICAxNyBmaWxlcyBjaGFuZ2VkLCAxNDM0IGluc2VydGlv bnMoKyksIDI3MDAgZGVsZXRpb25zKC0pDQo+ICBkZWxldGUgbW9kZSAxMDA2NDQgZG9jL2d1aWRl cy9zYW1wbGVfYXBwX3VnL2wzX2ZvcndhcmRfYWNjZXNzX2N0cmwucnN0DQo+ICBkZWxldGUgbW9k ZSAxMDA2NDQgZXhhbXBsZXMvbDNmd2QtYWNsL01ha2VmaWxlDQo+ICBkZWxldGUgbW9kZSAxMDA2 NDQgZXhhbXBsZXMvbDNmd2QtYWNsL21haW4uYw0KPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IGV4YW1w bGVzL2wzZndkLWFjbC9tZXNvbi5idWlsZA0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGV4YW1wbGVz L2wzZndkL2wzZndkX2FjbC5jDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZXhhbXBsZXMvbDNmd2Qv bDNmd2RfYWNsLmgNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBleGFtcGxlcy9sM2Z3ZC9sM2Z3ZF9h Y2xfc2NhbGFyLmgNCj4gDQo+IGRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJT DQo+IGluZGV4IDE1MDA4YzAzYmMuLmIyOWZmODkyOWQgMTAwNjQ0DQo+IC0tLSBhL01BSU5UQUlO RVJTDQo+ICsrKyBiL01BSU5UQUlORVJTDQo+IEBAIC0xNTA1LDggKzE1MDUsNiBAQCBGOiBsaWIv YWNsLw0KPiAgRjogZG9jL2d1aWRlcy9wcm9nX2d1aWRlL3BhY2tldF9jbGFzc2lmX2FjY2Vzc19j dHJsLnJzdA0KPiAgRjogYXBwL3Rlc3QtYWNsLw0KPiAgRjogYXBwL3Rlc3QvdGVzdF9hY2wuKg0K PiAtRjogZXhhbXBsZXMvbDNmd2QtYWNsLw0KPiAtRjogZG9jL2d1aWRlcy9zYW1wbGVfYXBwX3Vn L2wzX2ZvcndhcmRfYWNjZXNzX2N0cmwucnN0DQo+IA0KLi4uDQoNCj4gZGlmZiAtLWdpdCBhL2V4 YW1wbGVzL2wzZndkL2wzZndkLmggYi9leGFtcGxlcy9sM2Z3ZC9sM2Z3ZC5oDQo+IGluZGV4IGFk Mzk0OTZlNjQuLmMyMmNiNzk2ZjUgMTAwNjQ0DQo+IC0tLSBhL2V4YW1wbGVzL2wzZndkL2wzZndk LmgNCj4gKysrIGIvZXhhbXBsZXMvbDNmd2QvbDNmd2QuaA0KPiBAQCAtNyw2ICs3LDcgQEANCj4g DQo+ICAjaW5jbHVkZSA8cnRlX2V0aGRldi5oPg0KPiAgI2luY2x1ZGUgPHJ0ZV92ZWN0Lmg+DQo+ ICsjaW5jbHVkZSA8cnRlX2FjbC5oPg0KPiANCj4gICNkZWZpbmUgRE9fUkZDXzE4MTJfQ0hFQ0tT DQo+IA0KPiBAQCAtNjEsNiArNjIsMTIgQEANCj4gIHN0cnVjdCBwYXJtX2NmZyB7DQo+ICAJY29u c3QgY2hhciAqcnVsZV9pcHY0X25hbWU7DQo+ICAJY29uc3QgY2hhciAqcnVsZV9pcHY2X25hbWU7 DQo+ICsJZW51bSBydGVfYWNsX2NsYXNzaWZ5X2FsZyBhbGc7DQo+ICt9Ow0KPiArDQo+ICtzdHJ1 Y3QgYWNsX2FsZ29yaXRobXMgew0KPiArCWNvbnN0IGNoYXIgKm5hbWU7DQo+ICsJZW51bSBydGVf YWNsX2NsYXNzaWZ5X2FsZyBhbGc7DQo+ICB9Ow0KPiANCj4gIHN0cnVjdCBtYnVmX3RhYmxlIHsN Cj4gQEAgLTgwLDYgKzg3LDcgQEAgc3RydWN0IGxjb3JlX2NvbmYgew0KPiAgCXVpbnQxNl90IHR4 X3BvcnRfaWRbUlRFX01BWF9FVEhQT1JUU107DQo+ICAJdWludDE2X3QgdHhfcXVldWVfaWRbUlRF X01BWF9FVEhQT1JUU107DQo+ICAJc3RydWN0IG1idWZfdGFibGUgdHhfbWJ1ZnNbUlRFX01BWF9F VEhQT1JUU107DQo+ICsJc3RydWN0IHJ0ZV9ldGhfZGV2X3R4X2J1ZmZlciAqdHhfYnVmZmVyW1JU RV9NQVhfRVRIUE9SVFNdOw0KDQpJIGRvbid0IHRoaW5rIGl0IGlzIHVzZWQgYW55d2hlcmUuDQpQ cm9iYWJseSByZW1haW5zIGZyb20gcHJldmlvdXMgaXRlcmF0aW9ucy4NCg0KDQo+ICAJdm9pZCAq aXB2NF9sb29rdXBfc3RydWN0Ow0KPiAgCXZvaWQgKmlwdjZfbG9va3VwX3N0cnVjdDsNCj4gIH0g X19ydGVfY2FjaGVfYWxpZ25lZDsNCj4gQEAgLTEwNyw2ICsxMTUsOCBAQCBleHRlcm4gc3RydWN0 IGxjb3JlX2NvbmYgbGNvcmVfY29uZltSVEVfTUFYX0xDT1JFXTsNCj4gDQo+ICBleHRlcm4gc3Ry dWN0IHBhcm1fY2ZnIHBhcm1fY29uZmlnOw0KPiANCj4gK2V4dGVybiBzdHJ1Y3QgYWNsX2FsZ29y aXRobXMgYWNsX2FsZ1tdOw0KPiArDQo+ICAvKiBTZW5kIGJ1cnN0IG9mIHBhY2tldHMgb24gYW4g b3V0cHV0IGludGVyZmFjZSAqLw0KPiAgc3RhdGljIGlubGluZSBpbnQNCj4gIHNlbmRfYnVyc3Qo c3RydWN0IGxjb3JlX2NvbmYgKnFjb25mLCB1aW50MTZfdCBuLCB1aW50MTZfdCBwb3J0KQ0KPiBA QCAtMTkwLDEwICsyMDAsMTkgQEAgaXNfdmFsaWRfaXB2NF9wa3Qoc3RydWN0IHJ0ZV9pcHY0X2hk ciAqcGt0LCB1aW50MzJfdCBsaW5rX2xlbikNCj4gIH0NCj4gICNlbmRpZiAvKiBET19SRkNfMTgx Ml9DSEVDS1MgKi8NCj4gDQo+ICtlbnVtIHJ0ZV9hY2xfY2xhc3NpZnlfYWxnDQo+ICtwYXJzZV9h Y2xfYWxnKGNvbnN0IGNoYXIgKmFsZyk7DQo+ICsNCj4gK2ludA0KPiArdXNhZ2VfYWNsX2FsZyhj aGFyICpidWYsIHNpemVfdCBzeik7DQo+ICsNCj4gIGludA0KPiAgaW5pdF9tZW0odWludDE2X3Qg cG9ydGlkLCB1bnNpZ25lZCBpbnQgbmJfbWJ1Zik7DQo+IA0KPiAtLyogRnVuY3Rpb24gcG9pbnRl cnMgZm9yIExQTSwgRU0gb3IgRklCIGZ1bmN0aW9uYWxpdHkuICovDQo+ICsvKiBGdW5jdGlvbiBw b2ludGVycyBmb3IgQUNMLCBMUE0sIEVNIG9yIEZJQiBmdW5jdGlvbmFsaXR5LiAqLw0KPiArdm9p ZA0KPiArc2V0dXBfYWNsKGNvbnN0IGludCBzb2NrZXRpZCk7DQo+ICsNCj4gIHZvaWQNCj4gIHNl dHVwX2xwbShjb25zdCBpbnQgc29ja2V0aWQpOw0KPiANCj4gQEAgLTIwMywxMiArMjIyLDE5IEBA IHNldHVwX2hhc2goY29uc3QgaW50IHNvY2tldGlkKTsNCj4gIHZvaWQNCj4gIHNldHVwX2ZpYihj b25zdCBpbnQgc29ja2V0aWQpOw0KPiANCj4gK2ludA0KPiArYWNsX2NoZWNrX3B0eXBlKGludCBw b3J0aWQpOw0KPiArDQo+ICBpbnQNCj4gIGVtX2NoZWNrX3B0eXBlKGludCBwb3J0aWQpOw0KPiAN Cj4gIGludA0KPiAgbHBtX2NoZWNrX3B0eXBlKGludCBwb3J0aWQpOw0KDQpTZWVtcyBub3QgdXNl ZC9kZWZpbmVkLg0KDQo+ICt1aW50MTZfdA0KPiArYWNsX2NiX3BhcnNlX3B0eXBlKHVpbnQxNl90 IHBvcnQsIHVpbnQxNl90IHF1ZXVlLCBzdHJ1Y3QgcnRlX21idWYgKnBrdHNbXSwNCj4gKwkJICB1 aW50MTZfdCBuYl9wa3RzLCB1aW50MTZfdCBtYXhfcGt0cywgdm9pZCAqdXNlcl9wYXJhbSk7DQo+ ICsNCg0KU2FtZSBub3QgdXNlZC9kZWZpbmVkLg0KDQoNCj4gIHVpbnQxNl90DQo+ICBlbV9jYl9w YXJzZV9wdHlwZSh1aW50MTZfdCBwb3J0LCB1aW50MTZfdCBxdWV1ZSwgc3RydWN0IHJ0ZV9tYnVm ICpwa3RzW10sDQo+ICAJCSAgdWludDE2X3QgbmJfcGt0cywgdWludDE2X3QgbWF4X3BrdHMsIHZv aWQgKnVzZXJfcGFyYW0pOw0KPiBAQCAtMjE3LDYgKzI0Myw5IEBAIHVpbnQxNl90DQo+ICBscG1f Y2JfcGFyc2VfcHR5cGUodWludDE2X3QgcG9ydCwgdWludDE2X3QgcXVldWUsIHN0cnVjdCBydGVf bWJ1ZiAqcGt0c1tdLA0KPiAgCQkgICB1aW50MTZfdCBuYl9wa3RzLCB1aW50MTZfdCBtYXhfcGt0 cywgdm9pZCAqdXNlcl9wYXJhbSk7DQo+IA0KPiAraW50DQo+ICthY2xfbWFpbl9sb29wKF9fcnRl X3VudXNlZCB2b2lkICpkdW1teSk7DQo+ICsNCj4gIGludA0KPiAgZW1fbWFpbl9sb29wKF9fcnRl X3VudXNlZCB2b2lkICpkdW1teSk7DQo+IA0KPiBAQCAtMjc4LDcgKzMwNywxMyBAQCBpbnQNCj4g IGZpYl9ldmVudF9tYWluX2xvb3BfdHhfcV9idXJzdF92ZWN0b3IoX19ydGVfdW51c2VkIHZvaWQg KmR1bW15KTsNCj4gDQo+IA0KPiAtLyogUmV0dXJuIGlwdjQvaXB2NiBmd2QgbG9va3VwIHN0cnVj dCBmb3IgTFBNLCBFTSBvciBGSUIuICovDQo+ICsvKiBSZXR1cm4gaXB2NC9pcHY2IGZ3ZCBsb29r dXAgc3RydWN0IGZvciBBQ0wsIExQTSwgRU0gb3IgRklCLiAqLw0KPiArdm9pZCAqDQo+ICthY2xf Z2V0X2lwdjRfbDNmd2RfbG9va3VwX3N0cnVjdChjb25zdCBpbnQgc29ja2V0aWQpOw0KPiArDQo+ ICt2b2lkICoNCj4gK2FjbF9nZXRfaXB2Nl9sM2Z3ZF9sb29rdXBfc3RydWN0KGNvbnN0IGludCBz b2NrZXRpZCk7DQo+ICsNCj4gIHZvaWQgKg0KPiAgZW1fZ2V0X2lwdjRfbDNmd2RfbG9va3VwX3N0 cnVjdChjb25zdCBpbnQgc29ja2V0aWQpOw0KPiANCj4gZGlmZiAtLWdpdCBhL2V4YW1wbGVzL2wz ZndkL2wzZndkX2FjbC5jIGIvZXhhbXBsZXMvbDNmd2QvbDNmd2RfYWNsLmMNCj4gbmV3IGZpbGUg bW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMC4uZTVmZTM4ZGJhNQ0KPiAtLS0gL2Rldi9u dWxsDQo+ICsrKyBiL2V4YW1wbGVzL2wzZndkL2wzZndkX2FjbC5jDQo+IEBAIC0wLDAgKzEsMTA5 OCBAQA0KPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQ0KPiArICog Q29weXJpZ2h0KGMpIDIwMjIgSW50ZWwgQ29ycG9yYXRpb24NCj4gKyAqLw0KPiArDQo+ICsjaW5j bHVkZSAibDNmd2QuaCINCj4gKyNpbmNsdWRlICJsM2Z3ZF9yb3V0ZS5oIg0KPiArDQo+ICsvKg0K PiArICogUnVsZSBhbmQgdHJhY2UgZm9ybWF0cyBkZWZpbml0aW9ucy4NCj4gKyAqLw0KPiArDQo+ ICtlbnVtIHsNCj4gKwlQUk9UT19GSUVMRF9JUFY0LA0KPiArCVNSQ19GSUVMRF9JUFY0LA0KPiAr CURTVF9GSUVMRF9JUFY0LA0KPiArCVNSQ1BfRklFTERfSVBWNCwNCj4gKwlEU1RQX0ZJRUxEX0lQ VjQsDQo+ICsJTlVNX0ZJRUxEU19JUFY0DQo+ICt9Ow0KPiArDQo+ICsvKg0KPiArICogVGhhdCBl ZmZlY3RpdmVseSBkZWZpbmVzIG9yZGVyIG9mIElQVjRWTEFOIGNsYXNzaWZpY2F0aW9uczoNCj4g KyAqICAtIFBST1RPDQo+ICsgKiAgLSBWTEFOIChUQUcgYW5kIERPTUFJTikNCj4gKyAqICAtIFNS QyBJUCBBRERSRVNTDQo+ICsgKiAgLSBEU1QgSVAgQUREUkVTUw0KPiArICogIC0gUE9SVFMgKFNS QyBhbmQgRFNUKQ0KPiArICovDQo+ICtlbnVtIHsNCj4gKwlSVEVfQUNMX0lQVjRWTEFOX1BST1RP LA0KPiArCVJURV9BQ0xfSVBWNFZMQU5fVkxBTiwNCj4gKwlSVEVfQUNMX0lQVjRWTEFOX1NSQywN Cj4gKwlSVEVfQUNMX0lQVjRWTEFOX0RTVCwNCj4gKwlSVEVfQUNMX0lQVjRWTEFOX1BPUlRTLA0K PiArCVJURV9BQ0xfSVBWNFZMQU5fTlVNDQo+ICt9Ow0KPiArDQo+ICtzdHJ1Y3QgYWNsX2FsZ29y aXRobXMgYWNsX2FsZ1tdID0gew0KPiArCXsNCj4gKwkJLm5hbWUgPSAic2NhbGFyIiwNCj4gKwkJ LmFsZyA9IFJURV9BQ0xfQ0xBU1NJRllfU0NBTEFSLA0KPiArCX0sDQo+ICsJew0KPiArCQkubmFt ZSA9ICJzc2UiLA0KPiArCQkuYWxnID0gUlRFX0FDTF9DTEFTU0lGWV9TU0UsDQo+ICsJfSwNCj4g Kwl7DQo+ICsJCS5uYW1lID0gImF2eDIiLA0KPiArCQkuYWxnID0gUlRFX0FDTF9DTEFTU0lGWV9B VlgyLA0KPiArCX0sDQo+ICsJew0KPiArCQkubmFtZSA9ICJuZW9uIiwNCj4gKwkJLmFsZyA9IFJU RV9BQ0xfQ0xBU1NJRllfTkVPTiwNCj4gKwl9LA0KPiArCXsNCj4gKwkJLm5hbWUgPSAiYWx0aXZl YyIsDQo+ICsJCS5hbGcgPSBSVEVfQUNMX0NMQVNTSUZZX0FMVElWRUMsDQo+ICsJfSwNCj4gKwl7 DQo+ICsJCS5uYW1lID0gImF2eDUxMngxNiIsDQo+ICsJCS5hbGcgPSBSVEVfQUNMX0NMQVNTSUZZ X0FWWDUxMlgxNiwNCj4gKwl9LA0KPiArCXsNCj4gKwkJLm5hbWUgPSAiYXZ4NTEyeDMyIiwNCj4g KwkJLmFsZyA9IFJURV9BQ0xfQ0xBU1NJRllfQVZYNTEyWDMyLA0KPiArCX0sDQo+ICt9Ow0KPiAr DQo+ICtzdHJ1Y3QgcnRlX2FjbF9maWVsZF9kZWYgaXB2NF9kZWZzW05VTV9GSUVMRFNfSVBWNF0g PSB7DQo+ICsJew0KPiArCQkudHlwZSA9IFJURV9BQ0xfRklFTERfVFlQRV9CSVRNQVNLLA0KPiAr CQkuc2l6ZSA9IHNpemVvZih1aW50OF90KSwNCj4gKwkJLmZpZWxkX2luZGV4ID0gUFJPVE9fRklF TERfSVBWNCwNCj4gKwkJLmlucHV0X2luZGV4ID0gUlRFX0FDTF9JUFY0VkxBTl9QUk9UTywNCj4g KwkJLm9mZnNldCA9IDAsDQo+ICsJfSwNCj4gKwl7DQo+ICsJCS50eXBlID0gUlRFX0FDTF9GSUVM RF9UWVBFX01BU0ssDQo+ICsJCS5zaXplID0gc2l6ZW9mKHVpbnQzMl90KSwNCj4gKwkJLmZpZWxk X2luZGV4ID0gU1JDX0ZJRUxEX0lQVjQsDQo+ICsJCS5pbnB1dF9pbmRleCA9IFJURV9BQ0xfSVBW NFZMQU5fU1JDLA0KPiArCQkub2Zmc2V0ID0gb2Zmc2V0b2Yoc3RydWN0IHJ0ZV9pcHY0X2hkciwg c3JjX2FkZHIpIC0NCj4gKwkJCW9mZnNldG9mKHN0cnVjdCBydGVfaXB2NF9oZHIsIG5leHRfcHJv dG9faWQpLA0KPiArCX0sDQo+ICsJew0KPiArCQkudHlwZSA9IFJURV9BQ0xfRklFTERfVFlQRV9N QVNLLA0KPiArCQkuc2l6ZSA9IHNpemVvZih1aW50MzJfdCksDQo+ICsJCS5maWVsZF9pbmRleCA9 IERTVF9GSUVMRF9JUFY0LA0KPiArCQkuaW5wdXRfaW5kZXggPSBSVEVfQUNMX0lQVjRWTEFOX0RT VCwNCj4gKwkJLm9mZnNldCA9IG9mZnNldG9mKHN0cnVjdCBydGVfaXB2NF9oZHIsIGRzdF9hZGRy KSAtDQo+ICsJCQlvZmZzZXRvZihzdHJ1Y3QgcnRlX2lwdjRfaGRyLCBuZXh0X3Byb3RvX2lkKSwN Cj4gKwl9LA0KPiArCXsNCj4gKwkJLnR5cGUgPSBSVEVfQUNMX0ZJRUxEX1RZUEVfUkFOR0UsDQo+ ICsJCS5zaXplID0gc2l6ZW9mKHVpbnQxNl90KSwNCj4gKwkJLmZpZWxkX2luZGV4ID0gU1JDUF9G SUVMRF9JUFY0LA0KPiArCQkuaW5wdXRfaW5kZXggPSBSVEVfQUNMX0lQVjRWTEFOX1BPUlRTLA0K PiArCQkub2Zmc2V0ID0gc2l6ZW9mKHN0cnVjdCBydGVfaXB2NF9oZHIpIC0NCj4gKwkJCW9mZnNl dG9mKHN0cnVjdCBydGVfaXB2NF9oZHIsIG5leHRfcHJvdG9faWQpLA0KPiArCX0sDQo+ICsJew0K PiArCQkudHlwZSA9IFJURV9BQ0xfRklFTERfVFlQRV9SQU5HRSwNCj4gKwkJLnNpemUgPSBzaXpl b2YodWludDE2X3QpLA0KPiArCQkuZmllbGRfaW5kZXggPSBEU1RQX0ZJRUxEX0lQVjQsDQo+ICsJ CS5pbnB1dF9pbmRleCA9IFJURV9BQ0xfSVBWNFZMQU5fUE9SVFMsDQo+ICsJCS5vZmZzZXQgPSBz aXplb2Yoc3RydWN0IHJ0ZV9pcHY0X2hkcikgLQ0KPiArCQkJb2Zmc2V0b2Yoc3RydWN0IHJ0ZV9p cHY0X2hkciwgbmV4dF9wcm90b19pZCkgKw0KPiArCQkJc2l6ZW9mKHVpbnQxNl90KSwNCj4gKwl9 LA0KPiArfTsNCj4gKw0KPiArZW51bSB7DQo+ICsJUFJPVE9fRklFTERfSVBWNiwNCj4gKwlTUkMx X0ZJRUxEX0lQVjYsDQo+ICsJU1JDMl9GSUVMRF9JUFY2LA0KPiArCVNSQzNfRklFTERfSVBWNiwN Cj4gKwlTUkM0X0ZJRUxEX0lQVjYsDQo+ICsJRFNUMV9GSUVMRF9JUFY2LA0KPiArCURTVDJfRklF TERfSVBWNiwNCj4gKwlEU1QzX0ZJRUxEX0lQVjYsDQo+ICsJRFNUNF9GSUVMRF9JUFY2LA0KPiAr CVNSQ1BfRklFTERfSVBWNiwNCj4gKwlEU1RQX0ZJRUxEX0lQVjYsDQo+ICsJTlVNX0ZJRUxEU19J UFY2DQo+ICt9Ow0KPiArDQo+ICtzdHJ1Y3QgcnRlX2FjbF9maWVsZF9kZWYgaXB2Nl9kZWZzW05V TV9GSUVMRFNfSVBWNl0gPSB7DQo+ICsJew0KPiArCQkudHlwZSA9IFJURV9BQ0xfRklFTERfVFlQ RV9CSVRNQVNLLA0KPiArCQkuc2l6ZSA9IHNpemVvZih1aW50OF90KSwNCj4gKwkJLmZpZWxkX2lu ZGV4ID0gUFJPVE9fRklFTERfSVBWNiwNCj4gKwkJLmlucHV0X2luZGV4ID0gUFJPVE9fRklFTERf SVBWNiwNCj4gKwkJLm9mZnNldCA9IDAsDQo+ICsJfSwNCj4gKwl7DQo+ICsJCS50eXBlID0gUlRF X0FDTF9GSUVMRF9UWVBFX01BU0ssDQo+ICsJCS5zaXplID0gc2l6ZW9mKHVpbnQzMl90KSwNCj4g KwkJLmZpZWxkX2luZGV4ID0gU1JDMV9GSUVMRF9JUFY2LA0KPiArCQkuaW5wdXRfaW5kZXggPSBT UkMxX0ZJRUxEX0lQVjYsDQo+ICsJCS5vZmZzZXQgPSBvZmZzZXRvZihzdHJ1Y3QgcnRlX2lwdjZf aGRyLCBzcmNfYWRkcikgLQ0KPiArCQkJb2Zmc2V0b2Yoc3RydWN0IHJ0ZV9pcHY2X2hkciwgcHJv dG8pLA0KPiArCX0sDQo+ICsJew0KPiArCQkudHlwZSA9IFJURV9BQ0xfRklFTERfVFlQRV9NQVNL LA0KPiArCQkuc2l6ZSA9IHNpemVvZih1aW50MzJfdCksDQo+ICsJCS5maWVsZF9pbmRleCA9IFNS QzJfRklFTERfSVBWNiwNCj4gKwkJLmlucHV0X2luZGV4ID0gU1JDMl9GSUVMRF9JUFY2LA0KPiAr CQkub2Zmc2V0ID0gb2Zmc2V0b2Yoc3RydWN0IHJ0ZV9pcHY2X2hkciwgc3JjX2FkZHIpIC0NCj4g KwkJCW9mZnNldG9mKHN0cnVjdCBydGVfaXB2Nl9oZHIsIHByb3RvKSArIHNpemVvZih1aW50MzJf dCksDQo+ICsJfSwNCj4gKwl7DQo+ICsJCS50eXBlID0gUlRFX0FDTF9GSUVMRF9UWVBFX01BU0ss DQo+ICsJCS5zaXplID0gc2l6ZW9mKHVpbnQzMl90KSwNCj4gKwkJLmZpZWxkX2luZGV4ID0gU1JD M19GSUVMRF9JUFY2LA0KPiArCQkuaW5wdXRfaW5kZXggPSBTUkMzX0ZJRUxEX0lQVjYsDQo+ICsJ CS5vZmZzZXQgPSBvZmZzZXRvZihzdHJ1Y3QgcnRlX2lwdjZfaGRyLCBzcmNfYWRkcikgLQ0KPiAr CQkJb2Zmc2V0b2Yoc3RydWN0IHJ0ZV9pcHY2X2hkciwgcHJvdG8pICsNCj4gKwkJCTIgKiBzaXpl b2YodWludDMyX3QpLA0KPiArCX0sDQo+ICsJew0KPiArCQkudHlwZSA9IFJURV9BQ0xfRklFTERf VFlQRV9NQVNLLA0KPiArCQkuc2l6ZSA9IHNpemVvZih1aW50MzJfdCksDQo+ICsJCS5maWVsZF9p bmRleCA9IFNSQzRfRklFTERfSVBWNiwNCj4gKwkJLmlucHV0X2luZGV4ID0gU1JDNF9GSUVMRF9J UFY2LA0KPiArCQkub2Zmc2V0ID0gb2Zmc2V0b2Yoc3RydWN0IHJ0ZV9pcHY2X2hkciwgc3JjX2Fk ZHIpIC0NCj4gKwkJCW9mZnNldG9mKHN0cnVjdCBydGVfaXB2Nl9oZHIsIHByb3RvKSArDQo+ICsJ CQkzICogc2l6ZW9mKHVpbnQzMl90KSwNCj4gKwl9LA0KPiArCXsNCj4gKwkJLnR5cGUgPSBSVEVf QUNMX0ZJRUxEX1RZUEVfTUFTSywNCj4gKwkJLnNpemUgPSBzaXplb2YodWludDMyX3QpLA0KPiAr CQkuZmllbGRfaW5kZXggPSBEU1QxX0ZJRUxEX0lQVjYsDQo+ICsJCS5pbnB1dF9pbmRleCA9IERT VDFfRklFTERfSVBWNiwNCj4gKwkJLm9mZnNldCA9IG9mZnNldG9mKHN0cnVjdCBydGVfaXB2Nl9o ZHIsIGRzdF9hZGRyKQ0KPiArCQkJCS0gb2Zmc2V0b2Yoc3RydWN0IHJ0ZV9pcHY2X2hkciwgcHJv dG8pLA0KPiArCX0sDQo+ICsJew0KPiArCQkudHlwZSA9IFJURV9BQ0xfRklFTERfVFlQRV9NQVNL LA0KPiArCQkuc2l6ZSA9IHNpemVvZih1aW50MzJfdCksDQo+ICsJCS5maWVsZF9pbmRleCA9IERT VDJfRklFTERfSVBWNiwNCj4gKwkJLmlucHV0X2luZGV4ID0gRFNUMl9GSUVMRF9JUFY2LA0KPiAr CQkub2Zmc2V0ID0gb2Zmc2V0b2Yoc3RydWN0IHJ0ZV9pcHY2X2hkciwgZHN0X2FkZHIpIC0NCj4g KwkJCW9mZnNldG9mKHN0cnVjdCBydGVfaXB2Nl9oZHIsIHByb3RvKSArIHNpemVvZih1aW50MzJf dCksDQo+ICsJfSwNCj4gKwl7DQo+ICsJCS50eXBlID0gUlRFX0FDTF9GSUVMRF9UWVBFX01BU0ss DQo+ICsJCS5zaXplID0gc2l6ZW9mKHVpbnQzMl90KSwNCj4gKwkJLmZpZWxkX2luZGV4ID0gRFNU M19GSUVMRF9JUFY2LA0KPiArCQkuaW5wdXRfaW5kZXggPSBEU1QzX0ZJRUxEX0lQVjYsDQo+ICsJ CS5vZmZzZXQgPSBvZmZzZXRvZihzdHJ1Y3QgcnRlX2lwdjZfaGRyLCBkc3RfYWRkcikgLQ0KPiAr CQkJb2Zmc2V0b2Yoc3RydWN0IHJ0ZV9pcHY2X2hkciwgcHJvdG8pICsNCj4gKwkJCTIgKiBzaXpl b2YodWludDMyX3QpLA0KPiArCX0sDQo+ICsJew0KPiArCQkudHlwZSA9IFJURV9BQ0xfRklFTERf VFlQRV9NQVNLLA0KPiArCQkuc2l6ZSA9IHNpemVvZih1aW50MzJfdCksDQo+ICsJCS5maWVsZF9p bmRleCA9IERTVDRfRklFTERfSVBWNiwNCj4gKwkJLmlucHV0X2luZGV4ID0gRFNUNF9GSUVMRF9J UFY2LA0KPiArCQkub2Zmc2V0ID0gb2Zmc2V0b2Yoc3RydWN0IHJ0ZV9pcHY2X2hkciwgZHN0X2Fk ZHIpIC0NCj4gKwkJCW9mZnNldG9mKHN0cnVjdCBydGVfaXB2Nl9oZHIsIHByb3RvKSArDQo+ICsJ CQkzICogc2l6ZW9mKHVpbnQzMl90KSwNCj4gKwl9LA0KPiArCXsNCj4gKwkJLnR5cGUgPSBSVEVf QUNMX0ZJRUxEX1RZUEVfUkFOR0UsDQo+ICsJCS5zaXplID0gc2l6ZW9mKHVpbnQxNl90KSwNCj4g KwkJLmZpZWxkX2luZGV4ID0gU1JDUF9GSUVMRF9JUFY2LA0KPiArCQkuaW5wdXRfaW5kZXggPSBT UkNQX0ZJRUxEX0lQVjYsDQo+ICsJCS5vZmZzZXQgPSBzaXplb2Yoc3RydWN0IHJ0ZV9pcHY2X2hk cikgLQ0KPiArCQkJb2Zmc2V0b2Yoc3RydWN0IHJ0ZV9pcHY2X2hkciwgcHJvdG8pLA0KPiArCX0s DQo+ICsJew0KPiArCQkudHlwZSA9IFJURV9BQ0xfRklFTERfVFlQRV9SQU5HRSwNCj4gKwkJLnNp emUgPSBzaXplb2YodWludDE2X3QpLA0KPiArCQkuZmllbGRfaW5kZXggPSBEU1RQX0ZJRUxEX0lQ VjYsDQo+ICsJCS5pbnB1dF9pbmRleCA9IFNSQ1BfRklFTERfSVBWNiwNCj4gKwkJLm9mZnNldCA9 IHNpemVvZihzdHJ1Y3QgcnRlX2lwdjZfaGRyKSAtDQo+ICsJCQlvZmZzZXRvZihzdHJ1Y3QgcnRl X2lwdjZfaGRyLCBwcm90bykgKyBzaXplb2YodWludDE2X3QpLA0KPiArCX0sDQo+ICt9Ow0KPiAr DQo+ICtlbnVtIHsNCj4gKwlDQl9GTERfU1JDX0FERFIsDQo+ICsJQ0JfRkxEX0RTVF9BRERSLA0K PiArCUNCX0ZMRF9TUkNfUE9SVF9MT1csDQo+ICsJQ0JfRkxEX1NSQ19QT1JUX0RMTSwNCj4gKwlD Ql9GTERfU1JDX1BPUlRfSElHSCwNCj4gKwlDQl9GTERfRFNUX1BPUlRfTE9XLA0KPiArCUNCX0ZM RF9EU1RfUE9SVF9ETE0sDQo+ICsJQ0JfRkxEX0RTVF9QT1JUX0hJR0gsDQo+ICsJQ0JfRkxEX1BS T1RPLA0KPiArCUNCX0ZMRF9VU0VSREFUQSwNCj4gKwlDQl9GTERfTlVNLA0KPiArfTsNCj4gKw0K PiArUlRFX0FDTF9SVUxFX0RFRihhY2w0X3J1bGUsIFJURV9ESU0oaXB2NF9kZWZzKSk7DQo+ICtS VEVfQUNMX1JVTEVfREVGKGFjbDZfcnVsZSwgUlRFX0RJTShpcHY2X2RlZnMpKTsNCj4gKw0KPiAr c3RydWN0IGFjbF9zZWFyY2hfdCB7DQo+ICsJY29uc3QgdWludDhfdCAqZGF0YV9pcHY0W01BWF9Q S1RfQlVSU1RdOw0KPiArCXN0cnVjdCBydGVfbWJ1ZiAqbV9pcHY0W01BWF9QS1RfQlVSU1RdOw0K PiArCXVpbnQzMl90IHJlc19pcHY0W01BWF9QS1RfQlVSU1RdOw0KPiArCWludCBudW1faXB2NDsN Cj4gKw0KPiArCWNvbnN0IHVpbnQ4X3QgKmRhdGFfaXB2NltNQVhfUEtUX0JVUlNUXTsNCj4gKwlz dHJ1Y3QgcnRlX21idWYgKm1faXB2NltNQVhfUEtUX0JVUlNUXTsNCj4gKwl1aW50MzJfdCByZXNf aXB2NltNQVhfUEtUX0JVUlNUXTsNCj4gKwlpbnQgbnVtX2lwdjY7DQo+ICt9Ow0KPiArDQo+ICtz dGF0aWMgc3RydWN0IHsNCj4gKwlzdHJ1Y3QgcnRlX2FjbF9jdHggKmFjeF9pcHY0W05CX1NPQ0tF VFNdOw0KPiArCXN0cnVjdCBydGVfYWNsX2N0eCAqYWN4X2lwdjZbTkJfU09DS0VUU107DQo+ICsj aWZkZWYgTDNGV0RBQ0xfREVCVUcNCj4gKwlzdHJ1Y3QgYWNsNF9ydWxlICpydWxlX2lwdjQ7DQo+ ICsJc3RydWN0IGFjbDZfcnVsZSAqcnVsZV9pcHY2Ow0KPiArI2VuZGlmDQo+ICt9IGFjbF9jb25m aWc7DQo+ICsNCj4gK3N0YXRpYyBjb25zdCBjaGFyIGNiX3BvcnRfZGVsaW1bXSA9ICI6IjsNCj4g Kw0KPiArc3RhdGljIHN0cnVjdCBydGVfYWNsX3J1bGUgKmFjbF9iYXNlX2lwdjQsICpyb3V0ZV9i YXNlX2lwdjQsDQo+ICsJCSphY2xfYmFzZV9pcHY2LCAqcm91dGVfYmFzZV9pcHY2Ow0KPiArc3Rh dGljIHVuc2lnbmVkIGludCBhY2xfbnVtX2lwdjQsIHJvdXRlX251bV9pcHY0LA0KPiArCQlhY2xf bnVtX2lwdjYsIHJvdXRlX251bV9pcHY2Ow0KPiArDQo+ICsjaW5jbHVkZSAibDNmd2RfYWNsLmgi DQo+ICsNCj4gKyNpbmNsdWRlICJsM2Z3ZF9hY2xfc2NhbGFyLmgiDQo+ICsNCj4gKy8qDQo+ICsg KiBQYXJzZSBJUFY2IGFkZHJlc3MsIGV4cGVjdHMgdGhlIGZvbGxvd2luZyBmb3JtYXQ6DQo+ICsg KiBYWFhYOlhYWFg6WFhYWDpYWFhYOlhYWFg6WFhYWDpYWFhYOlhYWFggKHdoZXJlIFggaXMgYSBo ZXhhZGVjaW1hbCBkaWdpdCkuDQo+ICsgKi8NCj4gK3N0YXRpYyBpbnQNCj4gK3BhcnNlX2lwdjZf YWRkcihjaGFyICppbiwgdWludDMyX3QgdltJUFY2X0FERFJfVTMyXSwgdWludDMyX3QgKm1hc2sp DQo+ICt7DQo+ICsJY2hhciAqc2EsICpzbSwgKnN2Ow0KPiArCWNvbnN0IGNoYXIgKmRsbSA9ICAi LyI7DQo+ICsNCj4gKwlzdiA9IE5VTEw7DQo+ICsJc2EgPSBzdHJ0b2tfcihpbiwgZGxtLCAmc3Yp Ow0KPiArCWlmIChzYSA9PSBOVUxMKQ0KPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gKwlzbSA9IHN0 cnRva19yKE5VTEwsIGRsbSwgJnN2KTsNCj4gKwlpZiAoc20gPT0gTlVMTCkNCj4gKwkJcmV0dXJu IC1FSU5WQUw7DQo+ICsNCj4gKwlpZiAoaW5ldF9wdG9uKEFGX0lORVQ2LCBzYSwgdikgIT0gMSkN Cj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ICsNCj4gKwlHRVRfQ0JfRklFTEQoc20sICptYXNrLCAw LCAxMjgsIDApOw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50DQo+ICtw YXJzZV9pcHY2X25ldChjaGFyICppbiwgc3RydWN0IHJ0ZV9hY2xfZmllbGQgZmllbGRbNF0pDQo+ ICt7DQo+ICsJaW50MzJfdCByYzsNCj4gKwl1aW50MzJfdCBpLCB2WzRdOw0KPiArCXVpbnQzMl90 IG07DQo+ICsJY29uc3QgdWludDMyX3QgbmJ1MzIgPSBzaXplb2YodWludDMyX3QpICogQ0hBUl9C SVQ7DQo+ICsNCj4gKwkvKiBnZXQgYWRkcmVzcy4gKi8NCj4gKwlyYyA9IHBhcnNlX2lwdjZfYWRk cihpbiwgdiwgJm0pOw0KPiArCWlmIChyYyAhPSAwKQ0KPiArCQlyZXR1cm4gcmM7DQo+ICsNCj4g KwkvKiBwdXQgYWxsIHRvZ2V0aGVyLiAqLw0KPiArCWZvciAoaSA9IDA7IGkgIT0gUlRFX0RJTSh2 KTsgaSsrKSB7DQo+ICsJCWlmIChtID49IChpICsgMSkgKiBuYnUzMikNCj4gKwkJCWZpZWxkW2ld Lm1hc2tfcmFuZ2UudTMyID0gbmJ1MzI7DQo+ICsJCWVsc2UNCj4gKwkJCWZpZWxkW2ldLm1hc2tf cmFuZ2UudTMyID0gbSA+IChpICogbmJ1MzIpID8NCj4gKwkJCQltIC0gKGkgKiAzMikgOiAwOw0K PiArDQo+ICsJCWZpZWxkW2ldLnZhbHVlLnUzMiA9IHZbaV07DQo+ICsJfQ0KPiArDQo+ICsJcmV0 dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQNCj4gK3BhcnNlX2NiX2lwdjZfcnVsZShj aGFyICpzdHIsIHN0cnVjdCBydGVfYWNsX3J1bGUgKnYsIGludCBoYXNfdXNlcmRhdGEpDQo+ICt7 DQo+ICsJaW50IGksIHJjOw0KPiArCWNoYXIgKnMsICpzcCwgKmluW0NCX0ZMRF9OVU1dOw0KPiAr CXN0YXRpYyBjb25zdCBjaGFyICpkbG0gPSAiIFx0XG4iOw0KPiArCWludCBkaW0gPSBoYXNfdXNl cmRhdGEgPyBDQl9GTERfTlVNIDogQ0JfRkxEX1VTRVJEQVRBOw0KPiArCXMgPSBzdHI7DQo+ICsN Cj4gKwlmb3IgKGkgPSAwOyBpICE9IGRpbTsgaSsrLCBzID0gTlVMTCkgew0KPiArCQlpbltpXSA9 IHN0cnRva19yKHMsIGRsbSwgJnNwKTsNCj4gKwkJaWYgKGluW2ldID09IE5VTEwpDQo+ICsJCQly ZXR1cm4gLUVJTlZBTDsNCj4gKwl9DQo+ICsNCj4gKwlyYyA9IHBhcnNlX2lwdjZfbmV0KGluW0NC X0ZMRF9TUkNfQUREUl0sIHYtPmZpZWxkICsgU1JDMV9GSUVMRF9JUFY2KTsNCj4gKwlpZiAocmMg IT0gMCkgew0KPiArCQlhY2xfbG9nKCJmYWlsZWQgdG8gcmVhZCBzb3VyY2UgYWRkcmVzcy9tYXNr OiAlc1xuIiwNCj4gKwkJCWluW0NCX0ZMRF9TUkNfQUREUl0pOw0KPiArCQlyZXR1cm4gcmM7DQo+ ICsJfQ0KPiArDQo+ICsJcmMgPSBwYXJzZV9pcHY2X25ldChpbltDQl9GTERfRFNUX0FERFJdLCB2 LT5maWVsZCArIERTVDFfRklFTERfSVBWNik7DQo+ICsJaWYgKHJjICE9IDApIHsNCj4gKwkJYWNs X2xvZygiZmFpbGVkIHRvIHJlYWQgZGVzdGluYXRpb24gYWRkcmVzcy9tYXNrOiAlc1xuIiwNCj4g KwkJCWluW0NCX0ZMRF9EU1RfQUREUl0pOw0KPiArCQlyZXR1cm4gcmM7DQo+ICsJfQ0KPiArDQo+ ICsJLyogc291cmNlIHBvcnQuICovDQo+ICsJR0VUX0NCX0ZJRUxEKGluW0NCX0ZMRF9TUkNfUE9S VF9MT1ddLA0KPiArCQl2LT5maWVsZFtTUkNQX0ZJRUxEX0lQVjZdLnZhbHVlLnUxNiwNCj4gKwkJ MCwgVUlOVDE2X01BWCwgMCk7DQo+ICsJR0VUX0NCX0ZJRUxEKGluW0NCX0ZMRF9TUkNfUE9SVF9I SUdIXSwNCj4gKwkJdi0+ZmllbGRbU1JDUF9GSUVMRF9JUFY2XS5tYXNrX3JhbmdlLnUxNiwNCj4g KwkJMCwgVUlOVDE2X01BWCwgMCk7DQo+ICsNCj4gKwlpZiAoc3RybmNtcChpbltDQl9GTERfU1JD X1BPUlRfRExNXSwgY2JfcG9ydF9kZWxpbSwNCj4gKwkJCXNpemVvZihjYl9wb3J0X2RlbGltKSkg IT0gMCkNCj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ICsNCj4gKwkvKiBkZXN0aW5hdGlvbiBwb3J0 LiAqLw0KPiArCUdFVF9DQl9GSUVMRChpbltDQl9GTERfRFNUX1BPUlRfTE9XXSwNCj4gKwkJdi0+ ZmllbGRbRFNUUF9GSUVMRF9JUFY2XS52YWx1ZS51MTYsDQo+ICsJCTAsIFVJTlQxNl9NQVgsIDAp Ow0KPiArCUdFVF9DQl9GSUVMRChpbltDQl9GTERfRFNUX1BPUlRfSElHSF0sDQo+ICsJCXYtPmZp ZWxkW0RTVFBfRklFTERfSVBWNl0ubWFza19yYW5nZS51MTYsDQo+ICsJCTAsIFVJTlQxNl9NQVgs IDApOw0KPiArDQo+ICsJaWYgKHN0cm5jbXAoaW5bQ0JfRkxEX0RTVF9QT1JUX0RMTV0sIGNiX3Bv cnRfZGVsaW0sDQo+ICsJCQlzaXplb2YoY2JfcG9ydF9kZWxpbSkpICE9IDApDQo+ICsJCXJldHVy biAtRUlOVkFMOw0KPiArDQo+ICsJaWYgKHYtPmZpZWxkW1NSQ1BfRklFTERfSVBWNl0ubWFza19y YW5nZS51MTYNCj4gKwkJCTwgdi0+ZmllbGRbU1JDUF9GSUVMRF9JUFY2XS52YWx1ZS51MTYNCj4g KwkJCXx8IHYtPmZpZWxkW0RTVFBfRklFTERfSVBWNl0ubWFza19yYW5nZS51MTYNCj4gKwkJCTwg di0+ZmllbGRbRFNUUF9GSUVMRF9JUFY2XS52YWx1ZS51MTYpDQo+ICsJCXJldHVybiAtRUlOVkFM Ow0KPiArDQo+ICsJR0VUX0NCX0ZJRUxEKGluW0NCX0ZMRF9QUk9UT10sIHYtPmZpZWxkW1BST1RP X0ZJRUxEX0lQVjZdLnZhbHVlLnU4LA0KPiArCQkwLCBVSU5UOF9NQVgsICcvJyk7DQo+ICsJR0VU X0NCX0ZJRUxEKGluW0NCX0ZMRF9QUk9UT10sIHYtPmZpZWxkW1BST1RPX0ZJRUxEX0lQVjZdLm1h c2tfcmFuZ2UudTgsDQo+ICsJCTAsIFVJTlQ4X01BWCwgMCk7DQo+ICsNCj4gKwlpZiAoaGFzX3Vz ZXJkYXRhKQ0KPiArCQlHRVRfQ0JfRklFTEQoaW5bQ0JfRkxEX1VTRVJEQVRBXSwgdi0+ZGF0YS51 c2VyZGF0YSwNCj4gKwkJCTAsIFVJTlQzMl9NQVgsIDApOw0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ ICt9DQo+ICsNCj4gKy8qDQo+ICsgKiBQYXJzZSBDbGFzc0JlbmNoIHJ1bGVzIGZpbGUuDQo+ICsg KiBFeHBlY3RlZCBmb3JtYXQ6DQo+ICsgKiAnQCc8c3JjX2lwdjRfYWRkcj4nLyc8bWFza2xlbj4g PHNwYWNlPiBcDQo+ICsgKiA8ZHN0X2lwdjRfYWRkcj4nLyc8bWFza2xlbj4gPHNwYWNlPiBcDQo+ ICsgKiA8c3JjX3BvcnRfbG93PiA8c3BhY2U+ICI6IiA8c3JjX3BvcnRfaGlnaD4gPHNwYWNlPiBc DQo+ICsgKiA8ZHN0X3BvcnRfbG93PiA8c3BhY2U+ICI6IiA8ZHN0X3BvcnRfaGlnaD4gPHNwYWNl PiBcDQo+ICsgKiA8cHJvdG8+Jy8nPG1hc2s+DQo+ICsgKi8NCj4gK3N0YXRpYyBpbnQNCj4gK3Bh cnNlX2lwdjRfbmV0KGNoYXIgKmluLCB1aW50MzJfdCAqYWRkciwgdWludDMyX3QgKm1hc2tfbGVu KQ0KPiArew0KPiArCWNoYXIgKnNhLCAqc20sICpzdjsNCj4gKwljb25zdCBjaGFyICpkbG0gPSAg Ii8iOw0KPiArDQo+ICsJc3YgPSBOVUxMOw0KPiArCXNhID0gc3RydG9rX3IoaW4sIGRsbSwgJnN2 KTsNCj4gKwlpZiAoc2EgPT0gTlVMTCkNCj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ICsJc20gPSBz dHJ0b2tfcihOVUxMLCBkbG0sICZzdik7DQo+ICsJaWYgKHNtID09IE5VTEwpDQo+ICsJCXJldHVy biAtRUlOVkFMOw0KPiArDQo+ICsJaWYgKGluZXRfcHRvbihBRl9JTkVULCBzYSwgYWRkcikgIT0g MSkNCj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ICsNCj4gKwlHRVRfQ0JfRklFTEQoc20sICptYXNr X2xlbiwgMCwgMzIsIDApOw0KPiArCSphZGRyID0gbnRvaGwoKmFkZHIpOw0KPiArCXJldHVybiAw Ow0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50DQo+ICtwYXJzZV9jYl9pcHY0dmxhbl9ydWxlKGNo YXIgKnN0ciwgc3RydWN0IHJ0ZV9hY2xfcnVsZSAqdiwgaW50IGhhc191c2VyZGF0YSkNCj4gK3sN Cj4gKwlpbnQgaSwgcmM7DQo+ICsJY2hhciAqcywgKnNwLCAqaW5bQ0JfRkxEX05VTV07DQo+ICsJ c3RhdGljIGNvbnN0IGNoYXIgKmRsbSA9ICIgXHRcbiI7DQo+ICsJaW50IGRpbSA9IGhhc191c2Vy ZGF0YSA/IENCX0ZMRF9OVU0gOiBDQl9GTERfVVNFUkRBVEE7DQo+ICsJcyA9IHN0cjsNCj4gKw0K PiArCWZvciAoaSA9IDA7IGkgIT0gZGltOyBpKyssIHMgPSBOVUxMKSB7DQo+ICsJCWluW2ldID0g c3RydG9rX3IocywgZGxtLCAmc3ApOw0KPiArCQlpZiAoaW5baV0gPT0gTlVMTCkNCj4gKwkJCXJl dHVybiAtRUlOVkFMOw0KPiArCX0NCj4gKw0KPiArCXJjID0gcGFyc2VfaXB2NF9uZXQoaW5bQ0Jf RkxEX1NSQ19BRERSXSwNCj4gKwkJCSZ2LT5maWVsZFtTUkNfRklFTERfSVBWNF0udmFsdWUudTMy LA0KPiArCQkJJnYtPmZpZWxkW1NSQ19GSUVMRF9JUFY0XS5tYXNrX3JhbmdlLnUzMik7DQo+ICsJ aWYgKHJjICE9IDApIHsNCj4gKwkJYWNsX2xvZygiZmFpbGVkIHRvIHJlYWQgc291cmNlIGFkZHJl c3MvbWFzazogJXNcbiIsDQo+ICsJCQlpbltDQl9GTERfU1JDX0FERFJdKTsNCj4gKwkJcmV0dXJu IHJjOw0KPiArCX0NCj4gKw0KPiArCXJjID0gcGFyc2VfaXB2NF9uZXQoaW5bQ0JfRkxEX0RTVF9B RERSXSwNCj4gKwkJCSZ2LT5maWVsZFtEU1RfRklFTERfSVBWNF0udmFsdWUudTMyLA0KPiArCQkJ JnYtPmZpZWxkW0RTVF9GSUVMRF9JUFY0XS5tYXNrX3JhbmdlLnUzMik7DQo+ICsJaWYgKHJjICE9 IDApIHsNCj4gKwkJYWNsX2xvZygiZmFpbGVkIHRvIHJlYWQgZGVzdGluYXRpb24gYWRkcmVzcy9t YXNrOiAlc1xuIiwNCj4gKwkJCWluW0NCX0ZMRF9EU1RfQUREUl0pOw0KPiArCQlyZXR1cm4gcmM7 DQo+ICsJfQ0KPiArDQo+ICsJR0VUX0NCX0ZJRUxEKGluW0NCX0ZMRF9TUkNfUE9SVF9MT1ddLA0K PiArCQl2LT5maWVsZFtTUkNQX0ZJRUxEX0lQVjRdLnZhbHVlLnUxNiwNCj4gKwkJMCwgVUlOVDE2 X01BWCwgMCk7DQo+ICsJR0VUX0NCX0ZJRUxEKGluW0NCX0ZMRF9TUkNfUE9SVF9ISUdIXSwNCj4g KwkJdi0+ZmllbGRbU1JDUF9GSUVMRF9JUFY0XS5tYXNrX3JhbmdlLnUxNiwNCj4gKwkJMCwgVUlO VDE2X01BWCwgMCk7DQo+ICsNCj4gKwlpZiAoc3RybmNtcChpbltDQl9GTERfU1JDX1BPUlRfRExN XSwgY2JfcG9ydF9kZWxpbSwNCj4gKwkJCXNpemVvZihjYl9wb3J0X2RlbGltKSkgIT0gMCkgew0K PiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gKwl9DQo+ICsNCj4gKwlHRVRfQ0JfRklFTEQoaW5bQ0Jf RkxEX0RTVF9QT1JUX0xPV10sDQo+ICsJCXYtPmZpZWxkW0RTVFBfRklFTERfSVBWNF0udmFsdWUu dTE2LA0KPiArCQkwLCBVSU5UMTZfTUFYLCAwKTsNCj4gKwlHRVRfQ0JfRklFTEQoaW5bQ0JfRkxE X0RTVF9QT1JUX0hJR0hdLA0KPiArCQl2LT5maWVsZFtEU1RQX0ZJRUxEX0lQVjRdLm1hc2tfcmFu Z2UudTE2LA0KPiArCQkwLCBVSU5UMTZfTUFYLCAwKTsNCj4gKw0KPiArCWlmIChzdHJuY21wKGlu W0NCX0ZMRF9EU1RfUE9SVF9ETE1dLCBjYl9wb3J0X2RlbGltLA0KPiArCQkJc2l6ZW9mKGNiX3Bv cnRfZGVsaW0pKSAhPSAwKSB7DQo+ICsJCXJldHVybiAtRUlOVkFMOw0KPiArCX0NCj4gKw0KPiAr CWlmICh2LT5maWVsZFtTUkNQX0ZJRUxEX0lQVjRdLm1hc2tfcmFuZ2UudTE2DQo+ICsJCQk8IHYt PmZpZWxkW1NSQ1BfRklFTERfSVBWNF0udmFsdWUudTE2DQo+ICsJCQl8fCB2LT5maWVsZFtEU1RQ X0ZJRUxEX0lQVjRdLm1hc2tfcmFuZ2UudTE2DQo+ICsJCQk8IHYtPmZpZWxkW0RTVFBfRklFTERf SVBWNF0udmFsdWUudTE2KSB7DQo+ICsJCXJldHVybiAtRUlOVkFMOw0KPiArCX0NCj4gKw0KPiAr CUdFVF9DQl9GSUVMRChpbltDQl9GTERfUFJPVE9dLCB2LT5maWVsZFtQUk9UT19GSUVMRF9JUFY0 XS52YWx1ZS51OCwNCj4gKwkJMCwgVUlOVDhfTUFYLCAnLycpOw0KPiArCUdFVF9DQl9GSUVMRChp bltDQl9GTERfUFJPVE9dLCB2LT5maWVsZFtQUk9UT19GSUVMRF9JUFY0XS5tYXNrX3JhbmdlLnU4 LA0KPiArCQkwLCBVSU5UOF9NQVgsIDApOw0KPiArDQo+ICsJaWYgKGhhc191c2VyZGF0YSkNCj4g KwkJR0VUX0NCX0ZJRUxEKGluW0NCX0ZMRF9VU0VSREFUQV0sIHYtPmRhdGEudXNlcmRhdGEsIDAs DQo+ICsJCQlVSU5UMzJfTUFYLCAwKTsNCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ ICtzdGF0aWMgaW50DQo+ICthY2xfYWRkX3J1bGVzKGNvbnN0IGNoYXIgKnJ1bGVfcGF0aCwNCj4g KwkJc3RydWN0IHJ0ZV9hY2xfcnVsZSAqKnByb3V0ZV9iYXNlLA0KPiArCQl1bnNpZ25lZCBpbnQg KnByb3V0ZV9udW0sDQo+ICsJCXN0cnVjdCBydGVfYWNsX3J1bGUgKipwYWNsX2Jhc2UsDQo+ICsJ CXVuc2lnbmVkIGludCAqcGFjbF9udW0sIHVpbnQzMl90IHJ1bGVfc2l6ZSwNCj4gKwkJaW50ICgq cGFyc2VyKShjaGFyICosIHN0cnVjdCBydGVfYWNsX3J1bGUqLCBpbnQpKQ0KPiArew0KPiArCXVp bnQ4X3QgKmFjbF9ydWxlcywgKnJvdXRlX3J1bGVzOw0KPiArCXN0cnVjdCBydGVfYWNsX3J1bGUg Km5leHQ7DQo+ICsJdW5zaWduZWQgaW50IGFjbF9udW0gPSAwLCByb3V0ZV9udW0gPSAwLCB0b3Rh bF9udW0gPSAwOw0KPiArCXVuc2lnbmVkIGludCBhY2xfY250ID0gMCwgcm91dGVfY250ID0gMDsN Cj4gKwljaGFyIGJ1ZmZbTElORV9NQVhdOw0KPiArCUZJTEUgKmZoID0gZm9wZW4ocnVsZV9wYXRo LCAicmIiKTsNCj4gKwl1bnNpZ25lZCBpbnQgaSA9IDA7DQo+ICsJaW50IHZhbDsNCj4gKw0KPiAr CWlmIChmaCA9PSBOVUxMKQ0KPiArCQlydGVfZXhpdChFWElUX0ZBSUxVUkUsICIlczogT3BlbiAl cyBmYWlsZWRcbiIsIF9fZnVuY19fLA0KPiArCQkJcnVsZV9wYXRoKTsNCj4gKw0KPiArCXdoaWxl ICgoZmdldHMoYnVmZiwgTElORV9NQVgsIGZoKSAhPSBOVUxMKSkgew0KPiArCQlpZiAoYnVmZlsw XSA9PSBST1VURV9MRUFEX0NIQVIpDQo+ICsJCQlyb3V0ZV9udW0rKzsNCj4gKwkJZWxzZSBpZiAo YnVmZlswXSA9PSBBQ0xfTEVBRF9DSEFSKQ0KPiArCQkJYWNsX251bSsrOw0KPiArCX0NCj4gKw0K PiArCWlmIChyb3V0ZV9udW0gPT0gMCkNCj4gKwkJcnRlX2V4aXQoRVhJVF9GQUlMVVJFLCAiTm90 IGZpbmQgYW55IHJvdXRlIGVudHJpZXMgaW4gJXMhXG4iLA0KPiArCQkJCXJ1bGVfcGF0aCk7DQo+ ICsNCj4gKwl2YWwgPSBmc2VlayhmaCwgMCwgU0VFS19TRVQpOw0KPiArCWlmICh2YWwgPCAwKSB7 DQo+ICsJCXJ0ZV9leGl0KEVYSVRfRkFJTFVSRSwgIiVzOiBGaWxlIHNlZWsgb3BlcmF0aW9uIGZh aWxlZFxuIiwNCj4gKwkJCV9fZnVuY19fKTsNCj4gKwl9DQo+ICsNCj4gKwlhY2xfcnVsZXMgPSBj YWxsb2MoYWNsX251bSwgcnVsZV9zaXplKTsNCj4gKw0KPiArCWlmIChhY2xfcnVsZXMgPT0gTlVM TCkNCj4gKwkJcnRlX2V4aXQoRVhJVF9GQUlMVVJFLCAiJXM6IGZhaWxlZCB0byBtYWxsb2MgbWVt b3J5XG4iLA0KPiArCQkJX19mdW5jX18pOw0KPiArDQo+ICsJcm91dGVfcnVsZXMgPSBjYWxsb2Mo cm91dGVfbnVtLCBydWxlX3NpemUpOw0KPiArDQo+ICsJaWYgKHJvdXRlX3J1bGVzID09IE5VTEwp DQo+ICsJCXJ0ZV9leGl0KEVYSVRfRkFJTFVSRSwgIiVzOiBmYWlsZWQgdG8gbWFsbG9jIG1lbW9y eVxuIiwNCj4gKwkJCV9fZnVuY19fKTsNCj4gKw0KPiArCWkgPSAwOw0KPiArCXdoaWxlIChmZ2V0 cyhidWZmLCBMSU5FX01BWCwgZmgpICE9IE5VTEwpIHsNCj4gKwkJaSsrOw0KPiArDQo+ICsJCWlm IChpc19ieXBhc3NfbGluZShidWZmKSkNCj4gKwkJCWNvbnRpbnVlOw0KPiArDQo+ICsJCWNoYXIg cyA9IGJ1ZmZbMF07DQo+ICsNCj4gKwkJLyogUm91dGUgZW50cnkgKi8NCj4gKwkJaWYgKHMgPT0g Uk9VVEVfTEVBRF9DSEFSKQ0KPiArCQkJbmV4dCA9IChzdHJ1Y3QgcnRlX2FjbF9ydWxlICopKHJv dXRlX3J1bGVzICsNCj4gKwkJCQlyb3V0ZV9jbnQgKiBydWxlX3NpemUpOw0KPiArDQo+ICsJCS8q IEFDTCBlbnRyeSAqLw0KPiArCQllbHNlIGlmIChzID09IEFDTF9MRUFEX0NIQVIpDQo+ICsJCQlu ZXh0ID0gKHN0cnVjdCBydGVfYWNsX3J1bGUgKikoYWNsX3J1bGVzICsNCj4gKwkJCQlhY2xfY250 ICogcnVsZV9zaXplKTsNCj4gKw0KPiArCQkvKiBJbGxlZ2FsIGxpbmUgKi8NCj4gKwkJZWxzZQ0K PiArCQkJcnRlX2V4aXQoRVhJVF9GQUlMVVJFLA0KPiArCQkJCSIlcyBMaW5lICV1OiBzaG91bGQg c3RhcnQgd2l0aCBsZWFkaW5nICINCj4gKwkJCQkiY2hhciAlYyBvciAlY1xuIiwNCj4gKwkJCQly dWxlX3BhdGgsIGksIFJPVVRFX0xFQURfQ0hBUiwgQUNMX0xFQURfQ0hBUik7DQo+ICsNCj4gKwkJ aWYgKHBhcnNlcihidWZmICsgMSwgbmV4dCwgcyA9PSBST1VURV9MRUFEX0NIQVIpICE9IDApDQo+ ICsJCQlydGVfZXhpdChFWElUX0ZBSUxVUkUsDQo+ICsJCQkJIiVzIExpbmUgJXU6IHBhcnNlIHJ1 bGVzIGVycm9yXG4iLA0KPiArCQkJCXJ1bGVfcGF0aCwgaSk7DQo+ICsNCj4gKwkJaWYgKHMgPT0g Uk9VVEVfTEVBRF9DSEFSKSB7DQo+ICsJCQkvKiBDaGVjayB0aGUgZm9yd2FyZGluZyBwb3J0IG51 bWJlciAqLw0KPiArCQkJaWYgKChlbmFibGVkX3BvcnRfbWFzayAmICgxIDw8IG5leHQtPmRhdGEu dXNlcmRhdGEpKSA9PQ0KPiArCQkJCQkwKQ0KPiArCQkJCXJ0ZV9leGl0KEVYSVRfRkFJTFVSRSwN Cj4gKwkJCQkJIiVzIExpbmUgJXU6IGZ3ZCBudW1iZXIgaWxsZWdhbDoldVxuIiwNCj4gKwkJCQkJ cnVsZV9wYXRoLCBpLCBuZXh0LT5kYXRhLnVzZXJkYXRhKTsNCj4gKwkJCW5leHQtPmRhdGEudXNl cmRhdGEgKz0gRldEX1BPUlRfU0hJRlQ7DQo+ICsJCQlyb3V0ZV9jbnQrKzsNCj4gKwkJfSBlbHNl IHsNCj4gKwkJCW5leHQtPmRhdGEudXNlcmRhdGEgPSBBQ0xfREVOWV9TSUdOQVRVUkUgKyBhY2xf Y250Ow0KPiArCQkJYWNsX2NudCsrOw0KPiArCQl9DQo+ICsNCj4gKwkJbmV4dC0+ZGF0YS5wcmlv cml0eSA9IFJURV9BQ0xfTUFYX1BSSU9SSVRZIC0gdG90YWxfbnVtOw0KPiArCQluZXh0LT5kYXRh LmNhdGVnb3J5X21hc2sgPSAtMTsNCj4gKwkJdG90YWxfbnVtKys7DQo+ICsJfQ0KPiArDQo+ICsJ ZmNsb3NlKGZoKTsNCj4gKw0KPiArCSpwYWNsX2Jhc2UgPSAoc3RydWN0IHJ0ZV9hY2xfcnVsZSAq KWFjbF9ydWxlczsNCj4gKwkqcGFjbF9udW0gPSBhY2xfbnVtOw0KPiArCSpwcm91dGVfYmFzZSA9 IChzdHJ1Y3QgcnRlX2FjbF9ydWxlICopcm91dGVfcnVsZXM7DQo+ICsJKnByb3V0ZV9udW0gPSBy b3V0ZV9jbnQ7DQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArZW51bSBydGVfYWNs X2NsYXNzaWZ5X2FsZw0KPiArcGFyc2VfYWNsX2FsZyhjb25zdCBjaGFyICphbGcpDQo+ICt7DQo+ ICsJdWludDMyX3QgaTsNCj4gKw0KPiArCWZvciAoaSA9IDA7IGkgIT0gUlRFX0RJTShhY2xfYWxn KTsgaSsrKSB7DQo+ICsJCWlmIChzdHJjbXAoYWxnLCBhY2xfYWxnW2ldLm5hbWUpID09IDApDQo+ ICsJCQlyZXR1cm4gYWNsX2FsZ1tpXS5hbGc7DQo+ICsJfQ0KPiArDQo+ICsJcmV0dXJuIFJURV9B Q0xfQ0xBU1NJRllfREVGQVVMVDsNCj4gK30NCj4gKw0KPiAraW50DQo+ICt1c2FnZV9hY2xfYWxn KGNoYXIgKmJ1Ziwgc2l6ZV90IHN6KQ0KPiArew0KPiArCXVpbnQzMl90IGksIG4sIHJjLCB0bjsN Cj4gKw0KPiArCW4gPSAwOw0KPiArCXRuID0gMDsNCj4gKwlmb3IgKGkgPSAwOyBpIDwgUlRFX0RJ TShhY2xfYWxnKTsgaSsrKSB7DQo+ICsJCXJjID0gc25wcmludGYoYnVmICsgbiwgc3ogLSBuLA0K PiArCQkJaSA9PSBSVEVfRElNKGFjbF9hbGcpIC0gMSA/ICIlcyIgOiAiJXN8IiwNCj4gKwkJCWFj bF9hbGdbaV0ubmFtZSk7DQo+ICsJCXRuICs9IHJjOw0KPiArCQlpZiAocmMgPCBzeiAtIG4pDQo+ ICsJCQluICs9IHJjOw0KPiArCX0NCj4gKw0KPiArCXJldHVybiB0bjsNCj4gK30NCj4gKw0KPiAr c3RhdGljIGNvbnN0IGNoYXIgKg0KPiArc3RyX2FjbF9hbGcoZW51bSBydGVfYWNsX2NsYXNzaWZ5 X2FsZyBhbGcpDQo+ICt7DQo+ICsJdWludDMyX3QgaTsNCj4gKw0KPiArCWZvciAoaSA9IDA7IGkg IT0gUlRFX0RJTShhY2xfYWxnKTsgaSsrKSB7DQo+ICsJCWlmIChhbGcgPT0gYWNsX2FsZ1tpXS5h bGcpDQo+ICsJCQlyZXR1cm4gYWNsX2FsZ1tpXS5uYW1lOw0KPiArCX0NCj4gKw0KPiArCXJldHVy biAiZGVmYXVsdCI7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkDQo+ICtkdW1wX2FjbF9jb25m aWcodm9pZCkNCj4gK3sNCj4gKwlwcmludGYoIkFDTCBvcHRpb25zIGFyZTpcbiIpOw0KPiArCXBy aW50ZigicnVsZV9pcHY0OiAlc1xuIiwgcGFybV9jb25maWcucnVsZV9pcHY0X25hbWUpOw0KPiAr CXByaW50ZigicnVsZV9pcHY2OiAlc1xuIiwgcGFybV9jb25maWcucnVsZV9pcHY2X25hbWUpOw0K PiArCXByaW50ZigiYWxnOiAlc1xuIiwgc3RyX2FjbF9hbGcocGFybV9jb25maWcuYWxnKSk7DQo+ ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQNCj4gK2NoZWNrX2FjbF9jb25maWcodm9pZCkNCj4gK3sN Cj4gKwlpZiAocGFybV9jb25maWcucnVsZV9pcHY0X25hbWUgPT0gTlVMTCkgew0KPiArCQlhY2xf bG9nKCJBQ0wgSVB2NCBydWxlIGZpbGUgbm90IHNwZWNpZmllZFxuIik7DQo+ICsJCXJldHVybiAt MTsNCj4gKwl9IGVsc2UgaWYgKHBhcm1fY29uZmlnLnJ1bGVfaXB2Nl9uYW1lID09IE5VTEwpIHsN Cj4gKwkJYWNsX2xvZygiQUNMIElQdjYgcnVsZSBmaWxlIG5vdCBzcGVjaWZpZWRcbiIpOw0KPiAr CQlyZXR1cm4gLTE7DQo+ICsJfQ0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gKy8q IFNldHVwIEFDTCBjb250ZXh0LiA4PCAqLw0KDQpMb29rcyBsaWtlIHNvbWUgdHlwbyB3aXRoaW4g Y29tbWVudHMuDQoNCj4gK3N0YXRpYyBzdHJ1Y3QgcnRlX2FjbF9jdHgqDQo+ICthcHBfYWNsX2lu aXQoc3RydWN0IHJ0ZV9hY2xfcnVsZSAqcm91dGVfYmFzZSwNCj4gKwkJc3RydWN0IHJ0ZV9hY2xf cnVsZSAqYWNsX2Jhc2UsIHVuc2lnbmVkIGludCByb3V0ZV9udW0sDQo+ICsJCXVuc2lnbmVkIGlu dCBhY2xfbnVtLCBpbnQgaXB2NiwgaW50IHNvY2tldGlkKQ0KPiArew0KPiArCWNoYXIgbmFtZVtQ QVRIX01BWF07DQo+ICsJc3RydWN0IHJ0ZV9hY2xfcGFyYW0gYWNsX3BhcmFtOw0KPiArCXN0cnVj dCBydGVfYWNsX2NvbmZpZyBhY2xfYnVpbGRfcGFyYW07DQo+ICsJc3RydWN0IHJ0ZV9hY2xfY3R4 ICpjb250ZXh0Ow0KPiArCWludCBkaW0gPSBpcHY2ID8gUlRFX0RJTShpcHY2X2RlZnMpIDogUlRF X0RJTShpcHY0X2RlZnMpOw0KPiArDQo+ICsJLyogQ3JlYXRlIEFDTCBjb250ZXh0cyAqLw0KPiAr CXNucHJpbnRmKG5hbWUsIHNpemVvZihuYW1lKSwgIiVzJWQiLA0KPiArCQkJaXB2NiA/IEwzRldE X0FDTF9JUFY2X05BTUUgOiBMM0ZXRF9BQ0xfSVBWNF9OQU1FLA0KPiArCQkJc29ja2V0aWQpOw0K PiArDQo+ICsJYWNsX3BhcmFtLm5hbWUgPSBuYW1lOw0KPiArCWFjbF9wYXJhbS5zb2NrZXRfaWQg PSBzb2NrZXRpZDsNCj4gKwlhY2xfcGFyYW0ucnVsZV9zaXplID0gUlRFX0FDTF9SVUxFX1NaKGRp bSk7DQo+ICsJYWNsX3BhcmFtLm1heF9ydWxlX251bSA9IE1BWF9BQ0xfUlVMRV9OVU07DQo+ICsN Cj4gKwljb250ZXh0ID0gcnRlX2FjbF9jcmVhdGUoJmFjbF9wYXJhbSk7DQo+ICsJaWYgKGNvbnRl eHQgPT0gTlVMTCkNCj4gKwkJcnRlX2V4aXQoRVhJVF9GQUlMVVJFLCAiRmFpbGVkIHRvIGNyZWF0 ZSBBQ0wgY29udGV4dFxuIik7DQo+ICsNCj4gKwlpZiAocGFybV9jb25maWcuYWxnICE9IFJURV9B Q0xfQ0xBU1NJRllfREVGQVVMVCAmJg0KPiArCQkJcnRlX2FjbF9zZXRfY3R4X2NsYXNzaWZ5KGNv bnRleHQsIHBhcm1fY29uZmlnLmFsZykgIT0gMCkNCj4gKwkJcnRlX2V4aXQoRVhJVF9GQUlMVVJF LA0KPiArCQkJIkZhaWxlZCB0byBzZXR1cCBjbGFzc2lmeSBtZXRob2QgZm9yICBBQ0wgY29udGV4 dFxuIik7DQo+ICsNCj4gKwlpZiAocnRlX2FjbF9hZGRfcnVsZXMoY29udGV4dCwgcm91dGVfYmFz ZSwgcm91dGVfbnVtKSA8IDApDQo+ICsJCXJ0ZV9leGl0KEVYSVRfRkFJTFVSRSwgImFkZCBydWxl cyBmYWlsZWRcbiIpOw0KPiArDQo+ICsJaWYgKHJ0ZV9hY2xfYWRkX3J1bGVzKGNvbnRleHQsIGFj bF9iYXNlLCBhY2xfbnVtKSA8IDApDQo+ICsJCXJ0ZV9leGl0KEVYSVRfRkFJTFVSRSwgImFkZCBy dWxlcyBmYWlsZWRcbiIpOw0KPiArDQo+ICsJLyogUGVyZm9ybSBidWlsZHMgKi8NCj4gKwltZW1z ZXQoJmFjbF9idWlsZF9wYXJhbSwgMCwgc2l6ZW9mKGFjbF9idWlsZF9wYXJhbSkpOw0KPiArDQo+ ICsJYWNsX2J1aWxkX3BhcmFtLm51bV9jYXRlZ29yaWVzID0gREVGQVVMVF9NQVhfQ0FURUdPUklF UzsNCj4gKwlhY2xfYnVpbGRfcGFyYW0ubnVtX2ZpZWxkcyA9IGRpbTsNCj4gKwltZW1jcHkoJmFj bF9idWlsZF9wYXJhbS5kZWZzLCBpcHY2ID8gaXB2Nl9kZWZzIDogaXB2NF9kZWZzLA0KPiArCQlp cHY2ID8gc2l6ZW9mKGlwdjZfZGVmcykgOiBzaXplb2YoaXB2NF9kZWZzKSk7DQo+ICsNCj4gKwlp ZiAocnRlX2FjbF9idWlsZChjb250ZXh0LCAmYWNsX2J1aWxkX3BhcmFtKSAhPSAwKQ0KPiArCQly dGVfZXhpdChFWElUX0ZBSUxVUkUsICJGYWlsZWQgdG8gYnVpbGQgQUNMIHRyaWVcbiIpOw0KPiAr DQo+ICsJcnRlX2FjbF9kdW1wKGNvbnRleHQpOw0KPiArDQo+ICsJcmV0dXJuIGNvbnRleHQ7DQo+ ICt9DQo+ICsvKiA+OCBFbmQgb2YgQUNMIGNvbnRleHQgc2V0dXAuICovDQoNClR5cG8gaW4gY29t bWVudHMuIA0KDQo=