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 0747A42C65; Fri, 9 Jun 2023 03:04:28 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id D1BD140E01; Fri, 9 Jun 2023 03:04:27 +0200 (CEST) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by mails.dpdk.org (Postfix) with ESMTP id A7B6540A7D for ; Fri, 9 Jun 2023 03:04:25 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1686272665; x=1717808665; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=JmM+q12yvq49VX5bcM1cGba3bzQnX3qcIVVQfJbaCpk=; b=Tw5mOrWL175AqJi935yoCAfxdLq3AU5fJ3FQw+bzRa7pwZDBr4Qv9oTL 2tQSBMUorMQIR+ch7+/xezGgbGd9HabePOQJPNls6JhL8UlE7T6+fYlSZ lY2oIhu6fucX1N1QLemm0eTMfVQ3g0iWXfWWulggRF2GB9hkd2HETkL7S rin+H1SvcXpH23yvRgq4HgH3eGKNHmViCLxe39f2HR4R+jY8i16SF2wey wQ+aa4vEkjEpriMkgz74/P5gMwiI4RXJZa1d+wDdoLnlYaGfIO2SqJQK7 +Q8LavZ9KDZq4aFvjnX94QXGFqBn8vAbsDdScX7Cz6KpG6wkThwxzpZYo w==; X-IronPort-AV: E=McAfee;i="6600,9927,10735"; a="347125327" X-IronPort-AV: E=Sophos;i="6.00,228,1681196400"; d="scan'208,217";a="347125327" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Jun 2023 18:04:24 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10735"; a="713318621" X-IronPort-AV: E=Sophos;i="6.00,228,1681196400"; d="scan'208,217";a="713318621" Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by fmsmga007.fm.intel.com with ESMTP; 08 Jun 2023 18:04:23 -0700 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Thu, 8 Jun 2023 18:04:23 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx611.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23 via Frontend Transport; Thu, 8 Jun 2023 18:04:23 -0700 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.169) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.23; Thu, 8 Jun 2023 18:04:22 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VqDXTvdwNpjdx57aVhULbNS3ANrb9wO2URuM5OjoCG1K8vk5urZ+11qnyBlr6iJT/NyobIk+5hAfYQw1T2AHuyp5HZLDbDEeWnzmYY+Wfl8CQg3E94kiLYycbjvPoDxqLvQIp/VgdNPNn8tFOJDfAIHJN/l3+UKogtyKciFLag9XuJqj8PXBq0q+wkpVzvuJxAMgtnMSp2DgDgcYUPKDf8n5oC+3n91Z2lWqcUCmJinQEEIJQCJAcoMwJVOpVlO/UsSS5Svnd4g134NAmR++KykVOQ6YIDrZR1DS8uuU2QJD5NAJV8gNmapm9dDIpnoW6nv0OTCpCetPZtA4BnX+cw== 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=JmM+q12yvq49VX5bcM1cGba3bzQnX3qcIVVQfJbaCpk=; b=jsiNifxLTDofjAGQLEEwkRVEEgbw98KFSDXpe4Jqw/iwRGLeIQUoosxT9wfeGSqQNoDQmASlUyui25FVRaMLpVIk2j6KZFzA/hMSc/3XHwYYIUOV7E8uQoe/9aiyu9Vo8fhoQETsknkdzgswcvVLgBHILSVVoEy/d1F/vevqVeFDejAs6MaMRVp5sq7TYO+xCpkSecy2ggg7z156/1qVte1AiV9pulKWxoLrjAM6CkBb9gnoi1GlViToQHmOxkO+0OXKLdDHtrxuK/GEn6rJhbqPBP5Xm6rY9HggfTCwkPdZ14fdhpg47c+MXhOHY+Ln/ijBK7mHpvwvMD/Ow5HSaA== 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 CY5PR11MB6487.namprd11.prod.outlook.com (2603:10b6:930:31::17) by SA1PR11MB6710.namprd11.prod.outlook.com (2603:10b6:806:25a::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6477.19; Fri, 9 Jun 2023 01:04:21 +0000 Received: from CY5PR11MB6487.namprd11.prod.outlook.com ([fe80::bbdd:44b6:dd11:5070]) by CY5PR11MB6487.namprd11.prod.outlook.com ([fe80::bbdd:44b6:dd11:5070%4]) with mapi id 15.20.6455.034; Fri, 9 Jun 2023 01:04:21 +0000 From: "Hu, Jiayu" To: kumaraparameshwaran rathinavel CC: "dev@dpdk.org" Subject: RE: [PATCH v4] gro : ipv6 changes to support GRO for TCP/ipv6 Thread-Topic: [PATCH v4] gro : ipv6 changes to support GRO for TCP/ipv6 Thread-Index: AQHZmIdczS5iBYQvv0uyxHz+IKTIRq+AQzIggADe2QCAAIZtkA== Date: Fri, 9 Jun 2023 01:04:21 +0000 Message-ID: References: <20221020181425.48006-1-kumaraparmesh92@gmail.com> <20230606145802.53671-1-kumaraparamesh92@gmail.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CY5PR11MB6487:EE_|SA1PR11MB6710:EE_ x-ms-office365-filtering-correlation-id: 80a15746-5178-4936-9a7e-08db68857564 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 2qZ1/1KZcvse4UnCqXew67Pf2XVV+6WIFyG/aGFAo3LyA86BguHG2e6sA0D3quZj8/9OB9houiZ+r9bS7Rkgn8LB2JxjjqfSLhTbvWhTgT6pdEF6DqLc6U2Xb5PC3DI7ON9JvTB4XteV1FboVTBOlaLzHtwetmvCpoNJYHY8BtyPWUORx4wVuyn4S6dxaAnL0kSmAAqsi+FXvMNHut0hzmIfadLggkErY72i9fE+EI4Nw8kWN4JqTvUc75GV8psYV9C2m+EsE3aWiYYI+cfsF99U2ETK8P5poJqsuctTyPKAElY0/el1YkEnCH+BNceKXTk+DidWn2uMhy8k4z0RKlJ1GaaEcMifJL5akD8EGAeDM96VST5dHtxrWe9JBw3/ppgedJIkW9nqr2D7GdrESl/lcpJnN4zpPQIpNkdU7cu4QqNbdZX5+4Xsr9YkJ5wKS6DzGoZyyfwv9w55RZ6jy9FRJy+f11LbtxgOTka7wbXkYP1mfkZ+iBRI0Y6U5WBrl/b2FvMhXDmKmA9/Mi43VRfB1N/Qnu0vtpTvs+HKBXa93ZlLRakoWtySJuuBCiYPuGKtHSgPtUK1CbjYxiIkNIHaWe7bDZU/hIUCaZVNxt8pDpIX0qG1Z+nnjIEWFNFk x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CY5PR11MB6487.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(396003)(39860400002)(376002)(346002)(136003)(366004)(451199021)(83380400001)(186003)(38070700005)(478600001)(71200400001)(53546011)(6506007)(9686003)(26005)(55016003)(86362001)(122000001)(4326008)(66446008)(66556008)(76116006)(64756008)(5660300002)(82960400001)(7696005)(6916009)(9326002)(30864003)(2906002)(66476007)(66946007)(38100700002)(33656002)(52536014)(41300700001)(8936002)(8676002)(316002)(579004); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Z3QyQWRBVWs0ZTNDMFM4QWxtR2I0TlhtaktYdjNSWkJKNXNCTlcvdXovWXBS?= =?utf-8?B?aTNVdU0wRElzN0FkNmczdjk3c3AxUU4yeENHZDlGbG03aWpmakJkM2gxMjcr?= =?utf-8?B?c2NlK29jOHhkWi9xN2dYRmdNVjhMSXozVzFFVEc4NEVyLzExTHV1U2lEMkYy?= =?utf-8?B?azh3UlU0Q3EzSE5NZ3h1S0c1bWs4R2YzSE4vU0s0QlJXNU96dEtwZmhUb3Yw?= =?utf-8?B?STEwRGNXMm5DN2dTRFJEb3plRWR4cjN5dUpvaWlJVjFES1VDblRpVjg0cnBF?= =?utf-8?B?WjNhRXZwTGFxS2NVWVYwUEtIek5WdmwvWWdJSHF2akZPekpCMGFEVjlxMWN2?= =?utf-8?B?NVJlRE1oMlRuUG9OVUhqQ0N2dU9RRnBYRDZJYWNuTy9KRGcwWndlZlNRS05u?= =?utf-8?B?M09IcXNtdDZCOUx3UExMRVJnUUZTOHR2RlM1NTY2U2lwWEFjYlR3SVB5Q1ox?= =?utf-8?B?b0taemx6Wi95Mm5BRzlvMko5eUQ1b0Y4M3E2bDVXZEszeVVPUjVvOHhscEZ5?= =?utf-8?B?S2JHanI0RmN6VVRqczZxVDBtcTF5bWx5c25zL3RMZUlIaUFYWjZqeXl3dzEw?= =?utf-8?B?a2FVMkk3YmhmUmNmNnk2dzhGdnEzc3pXV1d6WUFRcUNtR1IzWE15R21jeTVS?= =?utf-8?B?VkxHL0FLRzdmNjl6TGF2V0NtWGlkUzNjdko0VndRU0U2RHRlNkJBTm00Q3dh?= =?utf-8?B?YTVxc3VNM0RCRmVGelhkSlNDRG5PQkpreVo0cTBWNkJwc3FGaktIS2d5T0J5?= =?utf-8?B?aEJRVzRmc09Qa0FUTHlCdHJyWjNSZkJITlR4NThUc2FXYlZiTzJHenlPMWpI?= =?utf-8?B?ZTR2ME5MQnFkUmYzdTJjSEVwOTJBakY4MUlBTXlBQnNJSzhNNGZTWWVEVUJW?= =?utf-8?B?dDU1WHZ0VWRML1lncjN4NDBmWEdiekNtZnlXTE03UW1RcnhjUEJPSGQ4UXl4?= =?utf-8?B?a1QxMkE2SEhISFgrN2VBN3RWR2tkcVg5cTZ4UGJ5bGVCVC9kamw2RUhTd29N?= =?utf-8?B?UXk4R1BzRFZuLzd1NTJqWVhwaGVRZEtzWE82VE5HTm1yQjhBZlFZdXZybzNF?= =?utf-8?B?WGhYSk4rYnJZakJHQ3h0enRoNmtiQ29XcnNGeExMWTRKb29lK1o0WHFPTllC?= =?utf-8?B?a01vV2ozWHV3T0V5WUo0bCtRRkNyWWZLcThjNHBJcjhlc0ZoRjBYSVZJMmg1?= =?utf-8?B?ZC9UMzhHVXJYeDJ5N2k0bWtjMzZqN3IzM28xdy9XcHppcW9nV0VhZlJHcXgy?= =?utf-8?B?V1ZrZjRhcVozeE1zM0lmaXFMc3VGVXgzb2w4YTNSc252T1BlbmJNTmNGVno2?= =?utf-8?B?dEpWSGtmT1k0THRVSkY4SnNCN0gxUFJhaW8xcGk1RGR2TE05YUhRT1lYbTdm?= =?utf-8?B?ejZyQ29QcUlRT1NsV1R4a1R2em5NVUJJTGVHUkdOKzhFRERGeTA0UHNEMFJ4?= =?utf-8?B?RytpVStLazFBS2RBSk80TGc5dks2aTBqWHlCVE40M2FHRWFlRVR0M25KSlVq?= =?utf-8?B?Uzl6dkVDQS8xUm9hV0RXblBQbnNoa1F3cUxtV1VzYXJwMTBFSzZrZlVySW5X?= =?utf-8?B?ZVQ1c01YWGp1VDM1a3loQTBSMkQ5bjNBMjNWaXhDZW9JTXoyNHJJWjdRdFMv?= =?utf-8?B?V2hPa2VoVjhnWUhpcGRTWnZoMEpEREhSbjkyMWtRN09VME8wd3JXOVl1Qkpr?= =?utf-8?B?SDVoSzd3SlNsN3B6VnpkeXY5N21HVndtNzY4K2YvdGovQmJHTmRURVFZRTFu?= =?utf-8?B?RVlPNVkvOUVEVTlQV1V0dzRiM0RTellLbFF3cUJudERTZjcwd1duNmN0T2lI?= =?utf-8?B?OFRzMHlLMHVvc2dqV2FqSHhOaklJQ3Y3WllXTjZVMlYveXBzcXR5K3YySFF5?= =?utf-8?B?cjZwL0Z3aWVFSHF4VU5mMVh6VGl2ZEVPenNwUk84SHU0ek5OYXJLY0QzNDll?= =?utf-8?B?alY4bW1SanIxYXFYaXAwU2tKYWEyTkxhdmhEZUlrYmJxTWQ0ZlNrNERKcjZh?= =?utf-8?B?ZGR3SVJ2YnJxdlRmcDF4clZ3YndVNUs0c0lvN1dBa3NSdk9RYit3ckY1bXBq?= =?utf-8?B?bHpSenk0VG1JOXk5QWZuRlkzZTM0bG1PYlVnT2ZpSytzRmFsMnZiRmtaSjhR?= =?utf-8?Q?mE9GnLlnjnpCIqe0a4MqQ6fb3?= Content-Type: multipart/alternative; boundary="_000_CY5PR11MB6487301D428831080CBC17089251ACY5PR11MB6487namp_" MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CY5PR11MB6487.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 80a15746-5178-4936-9a7e-08db68857564 X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Jun 2023 01:04:21.2373 (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: nXWeVlNXSvYXShG+1jSGe3qGXBGh67A9ZB3Kl96OupvKyNQ7ZxgOmN0bXx4T2Lfj7GThwBBlX7heLmUbNnbFIQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR11MB6710 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 --_000_CY5PR11MB6487301D428831080CBC17089251ACY5PR11MB6487namp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgS3VtYXJhLA0KDQpJbiB5b3VyIHJlcGxpZWQgbWFpbCwgdGhlIGxpbmUgZG9lc27igJl0IHBy ZWZhY2Ugd2l0aCDigJw+4oCdIGFuZCBpdOKAmXMgaGFyZCB0byBmaW5kIHlvdXIgcmVwbGllcy4N ClNvIEkgcmVwbHkgaGVyZS4gSW4gZ3JvX3RjcDRfcmVhc3NlbWJsZSgpLCBJIG1lYW4gdGhlcmUg aXMgbm8gbmVlZCB0byBzd2l0Y2ggdGhlIHNlcXVlbmNlcw0Kb2YgdGNwX2hkciBhbmQgc2VudF9z ZXEgZGVmaW5pdGlvbiBzdGF0ZW1lbnRzIGluIHRoZSBjb2RlLCByYXRoZXIgdGhhbiBub3QgdXBk YXRpbmcgdGhlbS4NCg0KVGhhbmtzLA0KSmlheXUNCg0KRnJvbToga3VtYXJhcGFyYW1lc2h3YXJh biByYXRoaW5hdmVsIDxrdW1hcmFwYXJhbWVzaDkyQGdtYWlsLmNvbT4NClNlbnQ6IEZyaWRheSwg SnVuZSA5LCAyMDIzIDEyOjUyIEFNDQpUbzogSHUsIEppYXl1IDxqaWF5dS5odUBpbnRlbC5jb20+ DQpDYzogZGV2QGRwZGsub3JnDQpTdWJqZWN0OiBSZTogW1BBVENIIHY0XSBncm8gOiBpcHY2IGNo YW5nZXMgdG8gc3VwcG9ydCBHUk8gZm9yIFRDUC9pcHY2DQoNCkhpIEppeWF1LA0KDQpUaGFua3Mg Zm9yIHRoZSBxdWljayByZXZpZXcgY29tbWVudHMuIFdpbGwgYWRkcmVzcyB0aGUgcmV2aWV3IGNv bW1lbnRzLiBSZXF1aXJlIGNsYXJpZmljYXRpb24gaW4gb25lIG9mIHRoZSBjb21tZW50cy4gUGxl YXNlIGZpbmQgaXQgaW5saW5lLg0KDQpPbiBUaHUsIEp1biA4LCAyMDIzIGF0IDk6MzXigK9BTSBI dSwgSmlheXUgPGppYXl1Lmh1QGludGVsLmNvbTxtYWlsdG86amlheXUuaHVAaW50ZWwuY29tPj4g d3JvdGU6DQpIaSBLdW1hcmEsDQoNClBsZWFzZSBzZWUgcmVwbGllcyBpbmxpbmUuDQoNCkluIGFk ZGl0aW9uLCB5b3UgbmVlZCB0byB1cGRhdGUgdGhlIHByb2dyYW1tZXIgZ3VpZGUgaW4gZ2VuZXJp Y19yZWNlaXZlX29mZmxvYWRfbGliLnJzdCwNCmFuZCByZWxlYXNlIG5vdGUgcmVsZWFzZV8yM18w Ny5yc3QuDQoNClRoYW5rcywNCkppYXl1DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0N Cj4gRnJvbTogS3VtYXJhIFBhcmFtZXNod2FyYW4gPGt1bWFyYXBhcmFtZXNoOTJAZ21haWwuY29t PG1haWx0bzprdW1hcmFwYXJhbWVzaDkyQGdtYWlsLmNvbT4+DQo+IFNlbnQ6IFR1ZXNkYXksIEp1 bmUgNiwgMjAyMyAxMDo1OCBQTQ0KPiBUbzogSHUsIEppYXl1IDxqaWF5dS5odUBpbnRlbC5jb208 bWFpbHRvOmppYXl1Lmh1QGludGVsLmNvbT4+DQo+IENjOiBkZXZAZHBkay5vcmc8bWFpbHRvOmRl dkBkcGRrLm9yZz47IEt1bWFyYSBQYXJhbWVzaHdhcmFuDQo+IDxrdW1hcmFwYXJhbWVzaDkyQGdt YWlsLmNvbTxtYWlsdG86a3VtYXJhcGFyYW1lc2g5MkBnbWFpbC5jb20+Pg0KPiBTdWJqZWN0OiBb UEFUQ0ggdjRdIGdybyA6IGlwdjYgY2hhbmdlcyB0byBzdXBwb3J0IEdSTyBmb3IgVENQL2lwdjYN Cj4NCj4gVGhlIHBhdGNoIGFkZHMgR1JPIHN1cHBvcnQgZm9yIFRDUC9pcHY2IHBhY2tldHMuIFRo aXMgZG9lcyBub3QgaW5jbHVkZSB0aGUNCj4gc3VwcG9ydCBmb3IgdnhsYW4sIHVkcCBpcHY2IHBh Y2tldHMuDQo+DQo+IFNpZ25lZC1vZmYtYnk6IEt1bWFyYSBQYXJhbWVzaHdhcmFuIDxrdW1hcmFw YXJhbWVzaDkyQGdtYWlsLmNvbTxtYWlsdG86a3VtYXJhcGFyYW1lc2g5MkBnbWFpbC5jb20+Pj4N Cj4gZGlmZiAtLWdpdCBhL2xpYi9ncm8vZ3JvX3RjcC5jIGIvbGliL2dyby9ncm9fdGNwLmMgbmV3 IGZpbGUgbW9kZSAxMDA2NDQgaW5kZXgNCj4gMDAwMDAwMDAwMC4uMDJhN2QwZjhjNQ0KPiAtLS0g L2Rldi9udWxsDQo+ICsrKyBiL2xpYi9ncm8vZ3JvX3RjcC5jDQoNCkZvciBncm9fdGNwLmMgYW5k IGdyb190Y3AuaCwgaXQncyBiZXR0ZXIgdG8gYWRkICJfaW50ZXJuYWwiIGluIHRoZSBmaWxlIG5h bWUuDQoNCj4gQEAgLTAsMCArMSwxMjggQEANCj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBCU0QtMy1DbGF1c2UNCj4gKyAqIENvcHlyaWdodChjKSAyMDE3IEludGVsIENvcnBvcmF0aW9u DQo+ICsgKi8NCj4gKyNpbmNsdWRlIDxydGVfbWFsbG9jLmg+DQo+ICsjaW5jbHVkZSA8cnRlX21i dWYuaD4NCj4gKyNpbmNsdWRlIDxydGVfZXRoZGV2Lmg+DQo+ICsNCj4gKyNpbmNsdWRlICJncm9f dGNwLmgiDQo+ICsNCj4gK3N0YXRpYyBpbmxpbmUgdWludDMyX3QNCj4gK2ZpbmRfYW5fZW1wdHlf aXRlbShzdHJ1Y3QgZ3JvX3RjcF9pdGVtICppdGVtcywNCj4gKyAgICAgdWludDMyX3QgbWF4X2l0 ZW1fbnVtKQ0KPiArew0KPiArICAgICB1aW50MzJfdCBpOw0KPiArDQo+ICsgICAgIGZvciAoaSA9 IDA7IGkgPCBtYXhfaXRlbV9udW07IGkrKykNCj4gKyAgICAgICAgICAgICBpZiAoaXRlbXNbaV0u Zmlyc3RzZWcgPT0gTlVMTCkNCj4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpOw0KPiAr ICAgICByZXR1cm4gSU5WQUxJRF9BUlJBWV9JTkRFWDsNCj4gK30NCj4gKw0KPiArdWludDMyX3QN Cj4gK2luc2VydF9uZXdfdGNwX2l0ZW0oc3RydWN0IHJ0ZV9tYnVmICpwa3QsDQo+ICsgICAgICAg ICAgICAgc3RydWN0IGdyb190Y3BfaXRlbSAqaXRlbXMsDQo+ICsgICAgICAgICAgICAgdWludDMy X3QgKml0ZW1fbnVtLA0KPiArICAgICAgICAgICAgIHVpbnQzMl90IG1heF9pdGVtX251bSwNCj4g KyAgICAgICAgICAgICB1aW50NjRfdCBzdGFydF90aW1lLA0KPiArICAgICAgICAgICAgIHVpbnQz Ml90IHByZXZfaWR4LA0KPiArICAgICAgICAgICAgIHVpbnQzMl90IHNlbnRfc2VxLA0KPiArICAg ICAgICAgICAgIHVpbnQxNl90IGlwX2lkLA0KPiArICAgICAgICAgICAgIHVpbnQ4X3QgaXNfYXRv bWljKQ0KDQpUaGlzIGZ1bmN0aW9uIGNhbiBiZSBpbmxpbmUuDQoNCj4gK3sNCj4gKyAgICAgdWlu dDMyX3QgaXRlbV9pZHg7DQo+ICsNCj4gKyAgICAgaXRlbV9pZHggPSBmaW5kX2FuX2VtcHR5X2l0 ZW0oaXRlbXMsIG1heF9pdGVtX251bSk7DQo+ICsgICAgIGlmIChpdGVtX2lkeCA9PSBJTlZBTElE X0FSUkFZX0lOREVYKQ0KPiArICAgICAgICAgICAgIHJldHVybiBJTlZBTElEX0FSUkFZX0lOREVY Ow0KPiArDQo+ICsgICAgIGl0ZW1zW2l0ZW1faWR4XS5maXJzdHNlZyA9IHBrdDsNCj4gKyAgICAg aXRlbXNbaXRlbV9pZHhdLmxhc3RzZWcgPSBydGVfcGt0bWJ1Zl9sYXN0c2VnKHBrdCk7DQo+ICsg ICAgIGl0ZW1zW2l0ZW1faWR4XS5zdGFydF90aW1lID0gc3RhcnRfdGltZTsNCj4gKyAgICAgaXRl bXNbaXRlbV9pZHhdLm5leHRfcGt0X2lkeCA9IElOVkFMSURfQVJSQVlfSU5ERVg7DQo+ICsgICAg IGl0ZW1zW2l0ZW1faWR4XS5zZW50X3NlcSA9IHNlbnRfc2VxOw0KPiArICAgICBpdGVtc1tpdGVt X2lkeF0uaXBfaWQgPSBpcF9pZDsNCj4gKyAgICAgaXRlbXNbaXRlbV9pZHhdLm5iX21lcmdlZCA9 IDE7DQo+ICsgICAgIGl0ZW1zW2l0ZW1faWR4XS5pc19hdG9taWMgPSBpc19hdG9taWM7DQo+ICsg ICAgICgqaXRlbV9udW0pICs9IDE7DQo+ICsNCj4gKyAgICAgLyogaWYgdGhlIHByZXZpb3VzIHBh Y2tldCBleGlzdHMsIGNoYWluIHRoZW0gdG9nZXRoZXIuICovDQo+ICsgICAgIGlmIChwcmV2X2lk eCAhPSBJTlZBTElEX0FSUkFZX0lOREVYKSB7DQo+ICsgICAgICAgICAgICAgaXRlbXNbaXRlbV9p ZHhdLm5leHRfcGt0X2lkeCA9DQo+ICsgICAgICAgICAgICAgICAgICAgICBpdGVtc1twcmV2X2lk eF0ubmV4dF9wa3RfaWR4Ow0KPiArICAgICAgICAgICAgIGl0ZW1zW3ByZXZfaWR4XS5uZXh0X3Br dF9pZHggPSBpdGVtX2lkeDsNCj4gKyAgICAgfQ0KPiArDQo+ICsgICAgIHJldHVybiBpdGVtX2lk eDsNCj4gK30NCj4gKw0KPiArdWludDMyX3QNCj4gK2RlbGV0ZV90Y3BfaXRlbShzdHJ1Y3QgZ3Jv X3RjcF9pdGVtICppdGVtcywgdWludDMyX3QgaXRlbV9pZHgsDQo+ICsgICAgICAgICAgICAgdWlu dDMyX3QgKml0ZW1fbnVtLA0KPiArICAgICAgICAgICAgIHVpbnQzMl90IHByZXZfaXRlbV9pZHgp DQo+ICt7DQo+ICsgICAgIHVpbnQzMl90IG5leHRfaWR4ID0gaXRlbXNbaXRlbV9pZHhdLm5leHRf cGt0X2lkeDsNCj4gKw0KPiArICAgICAvKiBOVUxMIGluZGljYXRlcyBhbiBlbXB0eSBpdGVtICov DQo+ICsgICAgIGl0ZW1zW2l0ZW1faWR4XS5maXJzdHNlZyA9IE5VTEw7DQo+ICsgICAgICgqaXRl bV9udW0pIC09IDE7DQo+ICsgICAgIGlmIChwcmV2X2l0ZW1faWR4ICE9IElOVkFMSURfQVJSQVlf SU5ERVgpDQo+ICsgICAgICAgICAgICAgaXRlbXNbcHJldl9pdGVtX2lkeF0ubmV4dF9wa3RfaWR4 ID0gbmV4dF9pZHg7DQo+ICsNCj4gKyAgICAgcmV0dXJuIG5leHRfaWR4Ow0KPiArfQ0KDQpUaGlz IGZ1bmN0aW9uIGNhbiBiZSBpbmxpbmUuDQoNCj4gKw0KPiAraW50MzJfdA0KPiArZ3JvX3Byb2Nl c3NfdGNwX2l0ZW0oc3RydWN0IHJ0ZV9tYnVmICpwa3QsDQo+ICsgICAgIHN0cnVjdCBydGVfdGNw X2hkciAqdGNwX2hkciwNCj4gKyAgICAgaW50MzJfdCB0Y3BfZGwsDQo+ICsgICAgIHN0cnVjdCBn cm9fdGNwX2l0ZW0gKml0ZW1zLA0KPiArICAgICB1aW50MzJfdCBpdGVtX2lkeCwNCj4gKyAgICAg dWludDMyX3QgKml0ZW1fbnVtLA0KPiArICAgICB1aW50MzJfdCBtYXhfaXRlbV9udW0sDQo+ICsg ICAgIHVpbnQxNl90IGlwX2lkLA0KPiArICAgICB1aW50OF90IGlzX2F0b21pYywNCj4gKyAgICAg dWludDY0X3Qgc3RhcnRfdGltZSkNCg0KSXQgaXMgZm9yIGludGVybmFsIHVzZSwgc28gaXQncyBi ZXR0ZXIgdG8gcmVtb3ZlICJncm9fIiBmcm9tIHRoZSBmdW5jdGlvbiBuYW1lLg0KDQo+ICt7DQo+ ICsgICAgIHVpbnQzMl90IGN1cl9pZHg7DQo+ICsgICAgIHVpbnQzMl90IHByZXZfaWR4Ow0KPiAr ICAgICBpbnQgY21wOw0KPiArICAgICB1aW50MzJfdCBzZW50X3NlcTsNCj4gKw0KPiArICAgICBz ZW50X3NlcSA9IHJ0ZV9iZV90b19jcHVfMzIodGNwX2hkci0+c2VudF9zZXEpOw0KPiArICAgICAv Kg0KPiArICAgICAgKiBDaGVjayBhbGwgcGFja2V0cyBpbiB0aGUgZmxvdyBhbmQgdHJ5IHRvIGZp bmQgYSBuZWlnaGJvciBmb3INCj4gKyAgICAgICogdGhlIGlucHV0IHBhY2tldC4NCj4gKyAgICAg ICovDQo+ICsgICAgIGN1cl9pZHggPSBpdGVtX2lkeDsNCj4gKyAgICAgcHJldl9pZHggPSBjdXJf aWR4Ow0KPiArICAgICBkbyB7DQo+ICsgICAgICAgICAgICAgY21wID0gY2hlY2tfc2VxX29wdGlv bigmaXRlbXNbY3VyX2lkeF0sIHRjcF9oZHIsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNlbnRfc2VxLCBpcF9pZCwgcGt0LT5sNF9sZW4sIHRjcF9kbCwgMCwNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaXNfYXRvbWljKTsNCj4gKyAgICAgICAgICAgICBpZiAoY21w KSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICBpZiAobWVyZ2VfdHdvX3RjcF9wYWNrZXRzKCZp dGVtc1tjdXJfaWR4XSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHBrdCwgY21wLCBzZW50X3NlcSwgaXBfaWQsIDApKQ0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZXR1cm4gMTsNCj4gKyAgICAgICAgICAgICAgICAgICAgIC8qDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgKiBGYWlsIHRvIG1lcmdlIHRoZSB0d28gcGFja2V0cywgYXMg dGhlIHBhY2tldA0KPiArICAgICAgICAgICAgICAgICAgICAgICogbGVuZ3RoIGlzIGdyZWF0ZXIg dGhhbiB0aGUgbWF4IHZhbHVlLiBTdG9yZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICogdGhl IHBhY2tldCBpbnRvIHRoZSBmbG93Lg0KPiArICAgICAgICAgICAgICAgICAgICAgICovDQo+ICsg ICAgICAgICAgICAgICAgICAgICBpZiAoaW5zZXJ0X25ld190Y3BfaXRlbShwa3QsIGl0ZW1zLCBp dGVtX251bSwNCj4gbWF4X2l0ZW1fbnVtLCBzdGFydF90aW1lLCBjdXJfaWR4LA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VudF9zZXEsIGlwX2lkLCBp c19hdG9taWMpID09DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5W QUxJRF9BUlJBWV9JTkRFWCkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IC0xOw0KPiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7DQo+ICsgICAgICAgICAgICAg fQ0KPiArICAgICAgICAgICAgIHByZXZfaWR4ID0gY3VyX2lkeDsNCj4gKyAgICAgICAgICAgICBj dXJfaWR4ID0gaXRlbXNbY3VyX2lkeF0ubmV4dF9wa3RfaWR4Ow0KPiArICAgICB9IHdoaWxlIChj dXJfaWR4ICE9IElOVkFMSURfQVJSQVlfSU5ERVgpOw0KPiArDQo+ICsgICAgIC8qIEZhaWwgdG8g ZmluZCBhIG5laWdoYm9yLCBzbyBzdG9yZSB0aGUgcGFja2V0IGludG8gdGhlIGZsb3cuICovDQo+ ICsgICAgIGlmIChpbnNlcnRfbmV3X3RjcF9pdGVtKHBrdCwgaXRlbXMsIGl0ZW1fbnVtLCBtYXhf aXRlbV9udW0sDQo+IHN0YXJ0X3RpbWUsIHByZXZfaWR4LCBzZW50X3NlcSwNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaXBfaWQsIGlzX2F0b21pYykgPT0gSU5WQUxJRF9BUlJBWV9J TkRFWCkNCj4gKyAgICAgICAgICAgICByZXR1cm4gLTE7DQo+ICsNCj4gKyAgICAgcmV0dXJuIDA7 DQo+ICt9DQo+IGRpZmYgLS1naXQgYS9saWIvZ3JvL2dyb190Y3AuaCBiL2xpYi9ncm8vZ3JvX3Rj cC5oIG5ldyBmaWxlIG1vZGUgMTAwNjQ0IGluZGV4DQo+IDAwMDAwMDAwMDAuLjRiNWI0ZWRhOWMN Cj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9saWIvZ3JvL2dyb190Y3AuaA0KPiBAQCAtMCwwICsx LDIwOSBAQA0KPiArI2lmbmRlZiBfR1JPX1RDUF9IXw0KPiArI2RlZmluZSBfR1JPX1RDUF9IXw0K PiArDQo+ICsjZGVmaW5lIElOVkFMSURfQVJSQVlfSU5ERVggMHhmZmZmZmZmZlVMDQo+ICsNCj4g KyNpbmNsdWRlIDxydGVfdGNwLmg+DQo+ICsNCj4gKy8qDQo+ICsgKiBUaGUgbWF4IGxlbmd0aCBv ZiBhIElQdjQgcGFja2V0LCB3aGljaCBpbmNsdWRlcyB0aGUgbGVuZ3RoIG9mIHRoZSBMMw0KPiAr ICogaGVhZGVyLCB0aGUgTDQgaGVhZGVyIGFuZCB0aGUgZGF0YSBwYXlsb2FkLg0KPiArICovDQo+ ICsjZGVmaW5lIE1BWF9JUF9QS1RfTEVOR1RIIFVJTlQxNl9NQVgNCj4gKw0KPiArLyogVGhlIG1h eGltdW0gVENQIGhlYWRlciBsZW5ndGggKi8NCj4gKyNkZWZpbmUgTUFYX1RDUF9ITEVOIDYwDQo+ ICsjZGVmaW5lIElOVkFMSURfVENQX0hEUkxFTihsZW4pIFwNCj4gKyAgICAgKCgobGVuKSA8IHNp emVvZihzdHJ1Y3QgcnRlX3RjcF9oZHIpKSB8fCAoKGxlbikgPiBNQVhfVENQX0hMRU4pKQ0KPiAr DQo+ICtzdHJ1Y3QgZ3JvX3RjcF9mbG93IHsNCg0KVGhpcyBzdHJ1Y3R1cmUgbmFtZSBpcyBjb25m dXNpbmcuIEluIHRoZSB1cHBlciBsYXllciwgdGNwNCBhbmQgdGNwNiBoYXZlIGdyb190Y3A0X2Zs b3cNCmFuZCBncm9fdGNwNl9mbG93LCB3aGljaCByZXByZXNlbnQgYSBmbG93LiBJbnNpZGUgZ3Jv X3RjcDQvNl9mbG93LCB0aGVyZSBhcmUga2V5cywNCnJlcHJlc2VudGVkIGJ5IHN0cnVjdCB0Y3A0 LzZfZmxvd19rZXkuIEJ1dCBpbnNpZGUgc3RydWN0IHRjcDQvNl9mbG93X2tleSwgdGhlcmUgaXMN CnN0cnVjdCBncm9fdGNwX2Zsb3cuIE5lZWQgdG8gcmVuYW1lIHN0cnVjdCBncm9fdGNwX2Zsb3cs IGxpa2UgY29tbW9uX3RjcF9mbG93X2tleS4NCg0KPiArICAgICBzdHJ1Y3QgcnRlX2V0aGVyX2Fk ZHIgZXRoX3NhZGRyOw0KPiArICAgICBzdHJ1Y3QgcnRlX2V0aGVyX2FkZHIgZXRoX2RhZGRyOw0K PiArICAgICB1aW50MzJfdCByZWN2X2FjazsNCj4gKyAgICAgdWludDE2X3Qgc3JjX3BvcnQ7DQo+ ICsgICAgIHVpbnQxNl90IGRzdF9wb3J0Ow0KPiArfTsNCj4gKw0KPiArI2RlZmluZSBBU1NJR05f VENQX0ZMT1dfS0VZKGsxLCBrMikgXA0KDQpEaXR0by4gVGhlIG1hY3JvIG5lZWRzIHJlbmFtZSwg bGlrZSBBU1NJR05fQ09NTU9OX1RDUF9GTE9XX0tFWS4NCg0KPiArICAgICBkbyB7XA0KPiArICAg ICAgICAgICAgIHJ0ZV9ldGhlcl9hZGRyX2NvcHkoJihrMS0+ZXRoX3NhZGRyKSwgJihrMi0+ZXRo X3NhZGRyKSk7IFwNCj4gKyAgICAgICAgICAgICBydGVfZXRoZXJfYWRkcl9jb3B5KCYoazEtPmV0 aF9kYWRkciksICYoazItPmV0aF9kYWRkcikpOw0KPiBcDQo+ICsgICAgICAgICAgICAgazItPnJl Y3ZfYWNrID0gazEtPnJlY3ZfYWNrOyBcDQo+ICsgICAgICAgICAgICAgazItPnNyY19wb3J0ID0g azEtPnNyY19wb3J0OyBcDQo+ICsgICAgICAgICAgICAgazItPmRzdF9wb3J0ID0gazEtPmRzdF9w b3J0OyBcDQo+ICsgICAgIH0gd2hpbGUgKDApDQo+ICsNCj4gK3N0cnVjdCBncm9fdGNwX2l0ZW0g ew0KPiArICAgICAvKg0KPiArICAgICAgKiBUaGUgZmlyc3QgTUJVRiBzZWdtZW50IG9mIHRoZSBw YWNrZXQuIElmIHRoZSB2YWx1ZQ0KPiArICAgICAgKiBpcyBOVUxMLCBpdCBtZWFucyB0aGUgaXRl bSBpcyBlbXB0eS4NCj4gKyAgICAgICovDQo+ICsgICAgIHN0cnVjdCBydGVfbWJ1ZiAqZmlyc3Rz ZWc7DQo+ICsgICAgIC8qIFRoZSBsYXN0IE1CVUYgc2VnbWVudCBvZiB0aGUgcGFja2V0ICovDQo+ ICsgICAgIHN0cnVjdCBydGVfbWJ1ZiAqbGFzdHNlZzsNCj4gKyAgICAgLyoNCj4gKyAgICAgICog VGhlIHRpbWUgd2hlbiB0aGUgZmlyc3QgcGFja2V0IGlzIGluc2VydGVkIGludG8gdGhlIHRhYmxl Lg0KPiArICAgICAgKiBUaGlzIHZhbHVlIHdvbid0IGJlIHVwZGF0ZWQsIGV2ZW4gaWYgdGhlIHBh Y2tldCBpcyBtZXJnZWQNCj4gKyAgICAgICogd2l0aCBvdGhlciBwYWNrZXRzLg0KPiArICAgICAg Ki8NCj4gKyAgICAgdWludDY0X3Qgc3RhcnRfdGltZTsNCj4gKyAgICAgLyoNCj4gKyAgICAgICog bmV4dF9wa3RfaWR4IGlzIHVzZWQgdG8gY2hhaW4gdGhlIHBhY2tldHMgdGhhdA0KPiArICAgICAg KiBhcmUgaW4gdGhlIHNhbWUgZmxvdyBidXQgY2FuJ3QgYmUgbWVyZ2VkIHRvZ2V0aGVyDQo+ICsg ICAgICAqIChlLmcuIGNhdXNlZCBieSBwYWNrZXQgcmVvcmRlcmluZykuDQo+ICsgICAgICAqLw0K PiArICAgICB1aW50MzJfdCBuZXh0X3BrdF9pZHg7DQo+ICsgICAgIC8qIFRDUCBzZXF1ZW5jZSBu dW1iZXIgb2YgdGhlIHBhY2tldCAqLw0KPiArICAgICB1aW50MzJfdCBzZW50X3NlcTsNCj4gKyAg ICAgLyogSVB2NCBJRCBvZiB0aGUgcGFja2V0ICovDQo+ICsgICAgIHVpbnQxNl90IGlwX2lkOw0K DQpUaGUgaXBfaWQgZmllbGQgaXMgbm90IHVzZWQgYnkgdGNwNi4gSXQncyBiZXR0ZXIgdG8gdXNl IGFuIHVuaW9uIHRvIGluY2x1ZGUgaXBfaWQgZm9yIElQdjQgYW5kDQphbiB1c2VsZXNzIG1lbWJl ciBmb3IgSVB2NiB3aXRoIHNvbWUgY29tbWVudHMgdG8gYXZvaWQgY29uZnVzaW5nLg0KDQo+ICsg ICAgIC8qIHRoZSBudW1iZXIgb2YgbWVyZ2VkIHBhY2tldHMgKi8NCj4gKyAgICAgdWludDE2X3Qg bmJfbWVyZ2VkOw0KPiArICAgICAvKiBJbmRpY2F0ZSBpZiBJUHY0IElEIGNhbiBiZSBpZ25vcmVk ICovDQo+ICsgICAgIHVpbnQ4X3QgaXNfYXRvbWljOw0KPiArfTsNCj4gKw0KPiArdWludDMyX3QN Cj4gK2luc2VydF9uZXdfdGNwX2l0ZW0oc3RydWN0IHJ0ZV9tYnVmICpwa3QsDQo+ICsgICAgICAg ICAgICAgc3RydWN0IGdyb190Y3BfaXRlbSAqaXRlbXMsDQo+ICsgICAgICAgICAgICAgdWludDMy X3QgKml0ZW1fbnVtLA0KPiArICAgICAgICAgICAgIHVpbnQzMl90IHRhYmxlX3NpemUsDQo+ICsg ICAgICAgICAgICAgdWludDY0X3Qgc3RhcnRfdGltZSwNCj4gKyAgICAgICAgICAgICB1aW50MzJf dCBwcmV2X2lkeCwNCj4gKyAgICAgICAgICAgICB1aW50MzJfdCBzZW50X3NlcSwNCj4gKyAgICAg ICAgICAgICB1aW50MTZfdCBpcF9pZCwNCj4gKyAgICAgICAgICAgICB1aW50OF90IGlzX2F0b21p Yyk7DQo+ICsNCj4gK3VpbnQzMl90DQo+ICtkZWxldGVfdGNwX2l0ZW0oc3RydWN0IGdyb190Y3Bf aXRlbSAqaXRlbXMsDQo+ICsgICAgICAgICAgICAgdWludDMyX3QgaXRlbV9pZHgsDQo+ICsgICAg ICAgICAgICAgdWludDMyX3QgKml0ZW1fbnVtLA0KPiArICAgICAgICAgICAgIHVpbnQzMl90IHBy ZXZfaXRlbV9pZHgpOw0KPiArDQo+ICtpbnQzMl90DQo+ICtncm9fcHJvY2Vzc190Y3BfaXRlbShz dHJ1Y3QgcnRlX21idWYgKnBrdCwNCj4gKyAgICAgc3RydWN0IHJ0ZV90Y3BfaGRyICp0Y3BfaGRy LA0KPiArICAgICBpbnQzMl90IHRjcF9kbCwNCj4gKyAgICAgc3RydWN0IGdyb190Y3BfaXRlbSAq aXRlbXMsDQo+ICsgICAgIHVpbnQzMl90IGl0ZW1faWR4LA0KPiArICAgICB1aW50MzJfdCAqaXRl bV9udW0sDQo+ICsgICAgIHVpbnQzMl90IHRhYmxlX3NpemUsDQo+ICsgICAgIHVpbnQxNl90IGlw X2lkLA0KPiArICAgICB1aW50OF90IGlzX2F0b21pYywNCj4gKyAgICAgdWludDY0X3Qgc3RhcnRf dGltZSk7DQo+ICsNCj4gKy8qDQo+ICsgKiBNZXJnZSB0d28gVENQIHBhY2tldHMgd2l0aG91dCB1 cGRhdGluZyBjaGVja3N1bXMuDQo+ICsgKiBJZiBjbXAgaXMgbGFyZ2VyIHRoYW4gMCwgYXBwZW5k IHRoZSBuZXcgcGFja2V0IHRvIHRoZQ0KPiArICogb3JpZ2luYWwgcGFja2V0LiBPdGhlcndpc2Us IHByZS1wZW5kIHRoZSBuZXcgcGFja2V0IHRvDQo+ICsgKiB0aGUgb3JpZ2luYWwgcGFja2V0Lg0K PiArICovDQo+ICtzdGF0aWMgaW5saW5lIGludA0KPiArbWVyZ2VfdHdvX3RjcF9wYWNrZXRzKHN0 cnVjdCBncm9fdGNwX2l0ZW0gKml0ZW0sDQo+ICsgICAgICAgICAgICAgc3RydWN0IHJ0ZV9tYnVm ICpwa3QsDQo+ICsgICAgICAgICAgICAgaW50IGNtcCwNCj4gKyAgICAgICAgICAgICB1aW50MzJf dCBzZW50X3NlcSwNCj4gKyAgICAgICAgICAgICB1aW50MTZfdCBpcF9pZCwNCj4gKyAgICAgICAg ICAgICB1aW50MTZfdCBsMl9vZmZzZXQpDQo+ICt7DQo+ICsgICAgIHN0cnVjdCBydGVfbWJ1ZiAq cGt0X2hlYWQsICpwa3RfdGFpbCwgKmxhc3RzZWc7DQo+ICsgICAgIHVpbnQxNl90IGhkcl9sZW4s IGwyX2xlbjsNCj4gKw0KPiArICAgICBpZiAoY21wID4gMCkgew0KPiArICAgICAgICAgICAgIHBr dF9oZWFkID0gaXRlbS0+Zmlyc3RzZWc7DQo+ICsgICAgICAgICAgICAgcGt0X3RhaWwgPSBwa3Q7 DQo+ICsgICAgIH0gZWxzZSB7DQo+ICsgICAgICAgICAgICAgcGt0X2hlYWQgPSBwa3Q7DQo+ICsg ICAgICAgICAgICAgcGt0X3RhaWwgPSBpdGVtLT5maXJzdHNlZzsNCj4gKyAgICAgfQ0KPiArDQo+ ICsgICAgIC8qIGNoZWNrIGlmIHRoZSBJUHY0IHBhY2tldCBsZW5ndGggaXMgZ3JlYXRlciB0aGFu IHRoZSBtYXggdmFsdWUgKi8NCj4gKyAgICAgaGRyX2xlbiA9IGwyX29mZnNldCArIHBrdF9oZWFk LT5sMl9sZW4gKyBwa3RfaGVhZC0+bDNfbGVuICsNCj4gKyAgICAgICAgICAgICBwa3RfaGVhZC0+ bDRfbGVuOw0KPiArICAgICBsMl9sZW4gPSBsMl9vZmZzZXQgPiAwID8gcGt0X2hlYWQtPm91dGVy X2wyX2xlbiA6IHBrdF9oZWFkLT5sMl9sZW47DQo+ICsgICAgIGlmICh1bmxpa2VseShwa3RfaGVh ZC0+cGt0X2xlbiAtIGwyX2xlbiArIHBrdF90YWlsLT5wa3RfbGVuIC0NCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaGRyX2xlbiA+IE1BWF9JUF9QS1RfTEVOR1RIKSkNCj4gKyAgICAg ICAgICAgICByZXR1cm4gMDsNCj4gKw0KPiArICAgICAvKiByZW1vdmUgdGhlIHBhY2tldCBoZWFk ZXIgZm9yIHRoZSB0YWlsIHBhY2tldCAqLw0KPiArICAgICBydGVfcGt0bWJ1Zl9hZGoocGt0X3Rh aWwsIGhkcl9sZW4pOw0KPiArDQo+ICsgICAgIC8qIGNoYWluIHR3byBwYWNrZXRzIHRvZ2V0aGVy ICovDQo+ICsgICAgIGlmIChjbXAgPiAwKSB7DQo+ICsgICAgICAgICAgICAgaXRlbS0+bGFzdHNl Zy0+bmV4dCA9IHBrdDsNCj4gKyAgICAgICAgICAgICBpdGVtLT5sYXN0c2VnID0gcnRlX3BrdG1i dWZfbGFzdHNlZyhwa3QpOw0KPiArICAgICAgICAgICAgIC8qIHVwZGF0ZSBJUCBJRCB0byB0aGUg bGFyZ2VyIHZhbHVlICovDQo+ICsgICAgICAgICAgICAgaXRlbS0+aXBfaWQgPSBpcF9pZDsNCj4g KyAgICAgfSBlbHNlIHsNCj4gKyAgICAgICAgICAgICBsYXN0c2VnID0gcnRlX3BrdG1idWZfbGFz dHNlZyhwa3QpOw0KPiArICAgICAgICAgICAgIGxhc3RzZWctPm5leHQgPSBpdGVtLT5maXJzdHNl ZzsNCj4gKyAgICAgICAgICAgICBpdGVtLT5maXJzdHNlZyA9IHBrdDsNCj4gKyAgICAgICAgICAg ICAvKiB1cGRhdGUgc2VudF9zZXEgdG8gdGhlIHNtYWxsZXIgdmFsdWUgKi8NCj4gKyAgICAgICAg ICAgICBpdGVtLT5zZW50X3NlcSA9IHNlbnRfc2VxOw0KPiArICAgICAgICAgICAgIGl0ZW0tPmlw X2lkID0gaXBfaWQ7DQo+ICsgICAgIH0NCj4gKyAgICAgaXRlbS0+bmJfbWVyZ2VkKys7DQo+ICsN Cj4gKyAgICAgLyogdXBkYXRlIE1CVUYgbWV0YWRhdGEgZm9yIHRoZSBtZXJnZWQgcGFja2V0ICov DQo+ICsgICAgIHBrdF9oZWFkLT5uYl9zZWdzICs9IHBrdF90YWlsLT5uYl9zZWdzOw0KPiArICAg ICBwa3RfaGVhZC0+cGt0X2xlbiArPSBwa3RfdGFpbC0+cGt0X2xlbjsNCj4gKw0KPiArICAgICBy ZXR1cm4gMTsNCj4gK30NCj4gKw0KPiArLyoNCj4gKyAqIENoZWNrIGlmIHR3byBUQ1AvSVB2NCBw YWNrZXRzIGFyZSBuZWlnaGJvcnMuDQo+ICsgKi8NCj4gK3N0YXRpYyBpbmxpbmUgaW50DQo+ICtj aGVja19zZXFfb3B0aW9uKHN0cnVjdCBncm9fdGNwX2l0ZW0gKml0ZW0sDQo+ICsgICAgICAgICAg ICAgc3RydWN0IHJ0ZV90Y3BfaGRyICp0Y3BoLA0KPiArICAgICAgICAgICAgIHVpbnQzMl90IHNl bnRfc2VxLA0KPiArICAgICAgICAgICAgIHVpbnQxNl90IGlwX2lkLA0KPiArICAgICAgICAgICAg IHVpbnQxNl90IHRjcF9obCwNCj4gKyAgICAgICAgICAgICB1aW50MTZfdCB0Y3BfZGwsDQo+ICsg ICAgICAgICAgICAgdWludDE2X3QgbDJfb2Zmc2V0LA0KPiArICAgICAgICAgICAgIHVpbnQ4X3Qg aXNfYXRvbWljKQ0KPiArew0KPiArICAgICBzdHJ1Y3QgcnRlX21idWYgKnBrdF9vcmlnID0gaXRl bS0+Zmlyc3RzZWc7DQo+ICsgICAgIGNoYXIgKmlwaF9vcmlnOw0KPiArICAgICBzdHJ1Y3QgcnRl X3RjcF9oZHIgKnRjcGhfb3JpZzsNCj4gKyAgICAgdWludDE2X3QgbGVuLCB0Y3BfaGxfb3JpZzsN Cj4gKw0KPiArICAgICBpcGhfb3JpZyA9IChjaGFyICopKHJ0ZV9wa3RtYnVmX210b2QocGt0X29y aWcsIGNoYXIgKikgKw0KPiArICAgICAgICAgICAgICAgICAgICAgbDJfb2Zmc2V0ICsgcGt0X29y aWctPmwyX2xlbik7DQo+ICsgICAgIHRjcGhfb3JpZyA9IChzdHJ1Y3QgcnRlX3RjcF9oZHIgKiko aXBoX29yaWcgKyBwa3Rfb3JpZy0+bDNfbGVuKTsNCj4gKyAgICAgdGNwX2hsX29yaWcgPSBwa3Rf b3JpZy0+bDRfbGVuOw0KPiArDQo+ICsgICAgIC8qIENoZWNrIGlmIFRDUCBvcHRpb24gZmllbGRz IGVxdWFsICovDQo+ICsgICAgIGxlbiA9IFJURV9NQVgodGNwX2hsLCB0Y3BfaGxfb3JpZykgLSBz aXplb2Yoc3RydWN0IHJ0ZV90Y3BfaGRyKTsNCj4gKyAgICAgaWYgKCh0Y3BfaGwgIT0gdGNwX2hs X29yaWcpIHx8ICgobGVuID4gMCkgJiYNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KG1lbWNtcCh0Y3BoICsgMSwgdGNwaF9vcmlnICsgMSwNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBsZW4pICE9IDApKSkNCj4gKyAgICAgICAgICAgICByZXR1cm4gMDsN Cj4gKw0KPiArICAgICAvKiBEb24ndCBtZXJnZSBwYWNrZXRzIHdob3NlIERGIGJpdHMgYXJlIGRp ZmZlcmVudCAqLw0KPiArICAgICBpZiAodW5saWtlbHkoaXRlbS0+aXNfYXRvbWljIF4gaXNfYXRv bWljKSkNCj4gKyAgICAgICAgICAgICByZXR1cm4gMDsNCj4gKw0KPiArICAgICAvKiBjaGVjayBp ZiB0aGUgdHdvIHBhY2tldHMgYXJlIG5laWdoYm9ycyAqLw0KPiArICAgICBsZW4gPSBwa3Rfb3Jp Zy0+cGt0X2xlbiAtIGwyX29mZnNldCAtIHBrdF9vcmlnLT5sMl9sZW4gLQ0KPiArICAgICAgICAg ICAgIHBrdF9vcmlnLT5sM19sZW4gLSB0Y3BfaGxfb3JpZzsNCj4gKyAgICAgaWYgKChzZW50X3Nl cSA9PSBpdGVtLT5zZW50X3NlcSArIGxlbikgJiYgKGlzX2F0b21pYyB8fA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoaXBfaWQgPT0gaXRlbS0+aXBfaWQgKyAxKSkpDQo+ICsgICAg ICAgICAgICAgLyogYXBwZW5kIHRoZSBuZXcgcGFja2V0ICovDQo+ICsgICAgICAgICAgICAgcmV0 dXJuIDE7DQo+ICsgICAgIGVsc2UgaWYgKChzZW50X3NlcSArIHRjcF9kbCA9PSBpdGVtLT5zZW50 X3NlcSkgJiYgKGlzX2F0b21pYyB8fA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo aXBfaWQgKyBpdGVtLT5uYl9tZXJnZWQgPT0gaXRlbS0+aXBfaWQpKSkNCj4gKyAgICAgICAgICAg ICAvKiBwcmUtcGVuZCB0aGUgbmV3IHBhY2tldCAqLw0KPiArICAgICAgICAgICAgIHJldHVybiAt MTsNCj4gKw0KPiArICAgICByZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGlubGluZSBp bnQNCj4gK2lzX3NhbWVfdGNwX2Zsb3coc3RydWN0IGdyb190Y3BfZmxvdyAqazEsIHN0cnVjdCBn cm9fdGNwX2Zsb3cgKmsyKSB7DQo+ICsgICAgIHJldHVybiAoIW1lbWNtcChrMSwgazIsIHNpemVv ZihzdHJ1Y3QgZ3JvX3RjcF9mbG93KSkpOyB9DQoNCkkgdGhpbmsgdGhpcyBmdW5jdGlvbiBuZWVk cyByZW5hbWUsIGFzIHRoZSByZXN1bHQgb2YgdGhpcyBmdW5jdGlvbiBjYW5ub3QgaWRlbnRpZnkg aWYgdGhleSBhcmUNCnNhbWUgVENQIGZsb3cuDQoNCj4gKw0KPiArI2VuZGlmDQo+IGRpZmYgLS1n aXQgYS9saWIvZ3JvL2dyb190Y3A0LmMgYi9saWIvZ3JvL2dyb190Y3A0LmMgaW5kZXgNCj4gMDAx NDA5NmU2My4uZmZjMzM3NDdjNCAxMDA2NDQNCj4gLS0tIGEvbGliL2dyby9ncm9fdGNwNC5jDQo+ ICsrKyBiL2xpYi9ncm8vZ3JvX3RjcDQuYw0KPiBAQCAtNyw2ICs3LDcgQEANCj4gICNpbmNsdWRl IDxydGVfZXRoZGV2Lmg+DQo+DQo+ICAjaW5jbHVkZSAiZ3JvX3RjcDQuaCINCj4gKyNpbmNsdWRl ICJncm9fdGNwLmgiDQo+DQo+ICB2b2lkICoNCj4gIGdyb190Y3A0X3RibF9jcmVhdGUodWludDE2 X3Qgc29ja2V0X2lkLCBAQCAtMzAsNyArMzEsNyBAQA0KPiBncm9fdGNwNF90YmxfY3JlYXRlKHVp bnQxNl90IHNvY2tldF9pZCwNCj4gICAgICAgaWYgKHRibCA9PSBOVUxMKQ0KPiAgICAgICAgICAg ICAgIHJldHVybiBOVUxMOw0KPg0KPiAtICAgICBzaXplID0gc2l6ZW9mKHN0cnVjdCBncm9fdGNw NF9pdGVtKSAqIGVudHJpZXNfbnVtOw0KPiArICAgICBzaXplID0gc2l6ZW9mKHN0cnVjdCBncm9f dGNwX2l0ZW0pICogZW50cmllc19udW07DQo+ICAgICAgIHRibC0+aXRlbXMgPSBydGVfem1hbGxv Y19zb2NrZXQoX19mdW5jX18sDQo+ICAgICAgICAgICAgICAgICAgICAgICBzaXplLA0KPiAgICAg ICAgICAgICAgICAgICAgICAgUlRFX0NBQ0hFX0xJTkVfU0laRSwNCj4gQEAgLTcxLDE4ICs3Miw2 IEBAIGdyb190Y3A0X3RibF9kZXN0cm95KHZvaWQgKnRibCkNCj4gICAgICAgcnRlX2ZyZWUodGNw X3RibCk7DQo+ICB9DQo+DQo+IC1zdGF0aWMgaW5saW5lIHVpbnQzMl90DQo+IC1maW5kX2FuX2Vt cHR5X2l0ZW0oc3RydWN0IGdyb190Y3A0X3RibCAqdGJsKSAtew0KPiAtICAgICB1aW50MzJfdCBp Ow0KPiAtICAgICB1aW50MzJfdCBtYXhfaXRlbV9udW0gPSB0YmwtPm1heF9pdGVtX251bTsNCj4g LQ0KPiAtICAgICBmb3IgKGkgPSAwOyBpIDwgbWF4X2l0ZW1fbnVtOyBpKyspDQo+IC0gICAgICAg ICAgICAgaWYgKHRibC0+aXRlbXNbaV0uZmlyc3RzZWcgPT0gTlVMTCkNCj4gLSAgICAgICAgICAg ICAgICAgICAgIHJldHVybiBpOw0KPiAtICAgICByZXR1cm4gSU5WQUxJRF9BUlJBWV9JTkRFWDsN Cj4gLX0NCj4gLQ0KPiAgc3RhdGljIGlubGluZSB1aW50MzJfdA0KPiAgZmluZF9hbl9lbXB0eV9m bG93KHN0cnVjdCBncm9fdGNwNF90YmwgKnRibCkgIHsgQEAgLTk1LDU2ICs4NCw2IEBADQo+IGZp bmRfYW5fZW1wdHlfZmxvdyhzdHJ1Y3QgZ3JvX3RjcDRfdGJsICp0YmwpDQo+ICAgICAgIHJldHVy biBJTlZBTElEX0FSUkFZX0lOREVYOw0KPiAgfQ0KPg0KPiAtc3RhdGljIGlubGluZSB1aW50MzJf dA0KPiAtaW5zZXJ0X25ld19pdGVtKHN0cnVjdCBncm9fdGNwNF90YmwgKnRibCwNCj4gLSAgICAg ICAgICAgICBzdHJ1Y3QgcnRlX21idWYgKnBrdCwNCj4gLSAgICAgICAgICAgICB1aW50NjRfdCBz dGFydF90aW1lLA0KPiAtICAgICAgICAgICAgIHVpbnQzMl90IHByZXZfaWR4LA0KPiAtICAgICAg ICAgICAgIHVpbnQzMl90IHNlbnRfc2VxLA0KPiAtICAgICAgICAgICAgIHVpbnQxNl90IGlwX2lk LA0KPiAtICAgICAgICAgICAgIHVpbnQ4X3QgaXNfYXRvbWljKQ0KPiAtew0KPiAtICAgICB1aW50 MzJfdCBpdGVtX2lkeDsNCj4gLQ0KPiAtICAgICBpdGVtX2lkeCA9IGZpbmRfYW5fZW1wdHlfaXRl bSh0YmwpOw0KPiAtICAgICBpZiAoaXRlbV9pZHggPT0gSU5WQUxJRF9BUlJBWV9JTkRFWCkNCj4g LSAgICAgICAgICAgICByZXR1cm4gSU5WQUxJRF9BUlJBWV9JTkRFWDsNCj4gLQ0KPiAtICAgICB0 YmwtPml0ZW1zW2l0ZW1faWR4XS5maXJzdHNlZyA9IHBrdDsNCj4gLSAgICAgdGJsLT5pdGVtc1tp dGVtX2lkeF0ubGFzdHNlZyA9IHJ0ZV9wa3RtYnVmX2xhc3RzZWcocGt0KTsNCj4gLSAgICAgdGJs LT5pdGVtc1tpdGVtX2lkeF0uc3RhcnRfdGltZSA9IHN0YXJ0X3RpbWU7DQo+IC0gICAgIHRibC0+ aXRlbXNbaXRlbV9pZHhdLm5leHRfcGt0X2lkeCA9IElOVkFMSURfQVJSQVlfSU5ERVg7DQo+IC0g ICAgIHRibC0+aXRlbXNbaXRlbV9pZHhdLnNlbnRfc2VxID0gc2VudF9zZXE7DQo+IC0gICAgIHRi bC0+aXRlbXNbaXRlbV9pZHhdLmlwX2lkID0gaXBfaWQ7DQo+IC0gICAgIHRibC0+aXRlbXNbaXRl bV9pZHhdLm5iX21lcmdlZCA9IDE7DQo+IC0gICAgIHRibC0+aXRlbXNbaXRlbV9pZHhdLmlzX2F0 b21pYyA9IGlzX2F0b21pYzsNCj4gLSAgICAgdGJsLT5pdGVtX251bSsrOw0KPiAtDQo+IC0gICAg IC8qIGlmIHRoZSBwcmV2aW91cyBwYWNrZXQgZXhpc3RzLCBjaGFpbiB0aGVtIHRvZ2V0aGVyLiAq Lw0KPiAtICAgICBpZiAocHJldl9pZHggIT0gSU5WQUxJRF9BUlJBWV9JTkRFWCkgew0KPiAtICAg ICAgICAgICAgIHRibC0+aXRlbXNbaXRlbV9pZHhdLm5leHRfcGt0X2lkeCA9DQo+IC0gICAgICAg ICAgICAgICAgICAgICB0YmwtPml0ZW1zW3ByZXZfaWR4XS5uZXh0X3BrdF9pZHg7DQo+IC0gICAg ICAgICAgICAgdGJsLT5pdGVtc1twcmV2X2lkeF0ubmV4dF9wa3RfaWR4ID0gaXRlbV9pZHg7DQo+ IC0gICAgIH0NCj4gLQ0KPiAtICAgICByZXR1cm4gaXRlbV9pZHg7DQo+IC19DQo+IC0NCj4gLXN0 YXRpYyBpbmxpbmUgdWludDMyX3QNCj4gLWRlbGV0ZV9pdGVtKHN0cnVjdCBncm9fdGNwNF90Ymwg KnRibCwgdWludDMyX3QgaXRlbV9pZHgsDQo+IC0gICAgICAgICAgICAgdWludDMyX3QgcHJldl9p dGVtX2lkeCkNCj4gLXsNCj4gLSAgICAgdWludDMyX3QgbmV4dF9pZHggPSB0YmwtPml0ZW1zW2l0 ZW1faWR4XS5uZXh0X3BrdF9pZHg7DQo+IC0NCj4gLSAgICAgLyogTlVMTCBpbmRpY2F0ZXMgYW4g ZW1wdHkgaXRlbSAqLw0KPiAtICAgICB0YmwtPml0ZW1zW2l0ZW1faWR4XS5maXJzdHNlZyA9IE5V TEw7DQo+IC0gICAgIHRibC0+aXRlbV9udW0tLTsNCj4gLSAgICAgaWYgKHByZXZfaXRlbV9pZHgg IT0gSU5WQUxJRF9BUlJBWV9JTkRFWCkNCj4gLSAgICAgICAgICAgICB0YmwtPml0ZW1zW3ByZXZf aXRlbV9pZHhdLm5leHRfcGt0X2lkeCA9IG5leHRfaWR4Ow0KPiAtDQo+IC0gICAgIHJldHVybiBu ZXh0X2lkeDsNCj4gLX0NCj4gLQ0KPiAgc3RhdGljIGlubGluZSB1aW50MzJfdA0KPiAgaW5zZXJ0 X25ld19mbG93KHN0cnVjdCBncm9fdGNwNF90YmwgKnRibCwNCj4gICAgICAgICAgICAgICBzdHJ1 Y3QgdGNwNF9mbG93X2tleSAqc3JjLA0KPiBAQCAtMTU5LDEzICs5OCwxMCBAQCBpbnNlcnRfbmV3 X2Zsb3coc3RydWN0IGdyb190Y3A0X3RibCAqdGJsLA0KPg0KPiAgICAgICBkc3QgPSAmKHRibC0+ Zmxvd3NbZmxvd19pZHhdLmtleSk7DQo+DQo+IC0gICAgIHJ0ZV9ldGhlcl9hZGRyX2NvcHkoJihz cmMtPmV0aF9zYWRkciksICYoZHN0LT5ldGhfc2FkZHIpKTsNCj4gLSAgICAgcnRlX2V0aGVyX2Fk ZHJfY29weSgmKHNyYy0+ZXRoX2RhZGRyKSwgJihkc3QtPmV0aF9kYWRkcikpOw0KPiArICAgICBB U1NJR05fVENQX0ZMT1dfS0VZKCgmc3JjLT50Y3BfZmxvdyksICgmZHN0LT50Y3BfZmxvdykpOw0K PiArDQo+ICAgICAgIGRzdC0+aXBfc3JjX2FkZHIgPSBzcmMtPmlwX3NyY19hZGRyOw0KPiAgICAg ICBkc3QtPmlwX2RzdF9hZGRyID0gc3JjLT5pcF9kc3RfYWRkcjsNCj4gLSAgICAgZHN0LT5yZWN2 X2FjayA9IHNyYy0+cmVjdl9hY2s7DQo+IC0gICAgIGRzdC0+c3JjX3BvcnQgPSBzcmMtPnNyY19w b3J0Ow0KPiAtICAgICBkc3QtPmRzdF9wb3J0ID0gc3JjLT5kc3RfcG9ydDsNCj4NCj4gICAgICAg dGJsLT5mbG93c1tmbG93X2lkeF0uc3RhcnRfaW5kZXggPSBpdGVtX2lkeDsNCj4gICAgICAgdGJs LT5mbG93X251bSsrOw0KPiBAQCAtMTczLDIxICsxMDksNiBAQCBpbnNlcnRfbmV3X2Zsb3coc3Ry dWN0IGdyb190Y3A0X3RibCAqdGJsLA0KPiAgICAgICByZXR1cm4gZmxvd19pZHg7DQo+ICB9DQo+ DQo+IC0vKg0KPiAtICogdXBkYXRlIHRoZSBwYWNrZXQgbGVuZ3RoIGZvciB0aGUgZmx1c2hlZCBw YWNrZXQuDQo+IC0gKi8NCj4gLXN0YXRpYyBpbmxpbmUgdm9pZA0KPiAtdXBkYXRlX2hlYWRlcihz dHJ1Y3QgZ3JvX3RjcDRfaXRlbSAqaXRlbSkgLXsNCj4gLSAgICAgc3RydWN0IHJ0ZV9pcHY0X2hk ciAqaXB2NF9oZHI7DQo+IC0gICAgIHN0cnVjdCBydGVfbWJ1ZiAqcGt0ID0gaXRlbS0+Zmlyc3Rz ZWc7DQo+IC0NCj4gLSAgICAgaXB2NF9oZHIgPSAoc3RydWN0IHJ0ZV9pcHY0X2hkciAqKShydGVf cGt0bWJ1Zl9tdG9kKHBrdCwgY2hhciAqKSArDQo+IC0gICAgICAgICAgICAgICAgICAgICBwa3Qt PmwyX2xlbik7DQo+IC0gICAgIGlwdjRfaGRyLT50b3RhbF9sZW5ndGggPSBydGVfY3B1X3RvX2Jl XzE2KHBrdC0+cGt0X2xlbiAtDQo+IC0gICAgICAgICAgICAgICAgICAgICBwa3QtPmwyX2xlbik7 DQo+IC19DQo+IC0NCj4gIGludDMyX3QNCj4gIGdyb190Y3A0X3JlYXNzZW1ibGUoc3RydWN0IHJ0 ZV9tYnVmICpwa3QsDQo+ICAgICAgICAgICAgICAgc3RydWN0IGdyb190Y3A0X3RibCAqdGJsLA0K PiBAQCAtMTk1LDE2ICsxMTYsMTUgQEAgZ3JvX3RjcDRfcmVhc3NlbWJsZShzdHJ1Y3QgcnRlX21i dWYgKnBrdCwgIHsNCj4gICAgICAgc3RydWN0IHJ0ZV9ldGhlcl9oZHIgKmV0aF9oZHI7DQo+ICAg ICAgIHN0cnVjdCBydGVfaXB2NF9oZHIgKmlwdjRfaGRyOw0KPiAtICAgICBzdHJ1Y3QgcnRlX3Rj cF9oZHIgKnRjcF9oZHI7DQo+IC0gICAgIHVpbnQzMl90IHNlbnRfc2VxOw0KPiAgICAgICBpbnQz Ml90IHRjcF9kbDsNCj4gKyAgICAgc3RydWN0IHJ0ZV90Y3BfaGRyICp0Y3BfaGRyOw0KPiAgICAg ICB1aW50MTZfdCBpcF9pZCwgaGRyX2xlbiwgZnJhZ19vZmYsIGlwX3RsZW47DQo+ICAgICAgIHVp bnQ4X3QgaXNfYXRvbWljOw0KPiArICAgICB1aW50MzJfdCBzZW50X3NlcTsNCg0KTm8gbmVlZCB0 byBjaGFuZ2UgdGNwX2hkciBhbmQgc2VudF9zZXEgaGVyZS4NClRoZSBmbG93IG1hdGNoaW5nIGlz IGRvbmUgaW4gdGhlIGZ1bmN0aW9uIGFuZCBpZiB0aGUgZmxvdyBpcyBub3QgZm91bmQgaW5zZXJ0 X25ld190Y3BfaXRlbSBpcyBpbnZva2VkIGZyb20gdGhpcyBmdW5jdGlvbiBpdHNlbGYuIERpZCB5 b3UgbWVhbiB0byBtb3ZlIHRoYXQgdG8gdGhlIHByb2Nlc3NfdGNwX2l0ZW0gYXMgd2VsbD8gSWYg dGhhdCBpcyB0aGUgY2FzZSB3ZSBzaG91bGQgcGFzcyB0aGUgc3RhcnRfaWR4IGFzIElOVkFMSURf QVJSQVlfSU5ERVggYW5kIGluIHByb2Nlc3NfdGNwX2l0ZW0gY2hlY2sgaWYgSU5WQUxJRF9BUlJB WV9JTkRFWCBkbyBhIGluc2VydF9uZXdfdGNwX2l0ZW0gYW5kIHJldHVybiwgZG8gbm90IGRvIHRo ZSBzZXF1bmNlIG51bWJlciBjaGVja3MgZXRjLg0KPg0KPiAgICAgICBzdHJ1Y3QgdGNwNF9mbG93 X2tleSBrZXk7DQo+IC0gICAgIHVpbnQzMl90IGN1cl9pZHgsIHByZXZfaWR4LCBpdGVtX2lkeDsN Cj4gKyAgICAgdWludDMyX3QgaXRlbV9pZHg7DQo+ICAgICAgIHVpbnQzMl90IGksIG1heF9mbG93 X251bSwgcmVtYWluaW5nX2Zsb3dfbnVtOw0KPiAtICAgICBpbnQgY21wOw0KPiAgICAgICB1aW50 OF90IGZpbmQ7DQo+DQo+ICAgICAgIC8qDQo+IEBAIC0yMTYsNyArMTM2LDcgQEAgZ3JvX3RjcDRf cmVhc3NlbWJsZShzdHJ1Y3QgcnRlX21idWYgKnBrdCwNCj4NCj4gICAgICAgZXRoX2hkciA9IHJ0 ZV9wa3RtYnVmX210b2QocGt0LCBzdHJ1Y3QgcnRlX2V0aGVyX2hkciAqKTsNCj4gICAgICAgaXB2 NF9oZHIgPSAoc3RydWN0IHJ0ZV9pcHY0X2hkciAqKSgoY2hhciAqKWV0aF9oZHIgKyBwa3QtPmwy X2xlbik7DQo+IC0gICAgIHRjcF9oZHIgPSAoc3RydWN0IHJ0ZV90Y3BfaGRyICopKChjaGFyICop aXB2NF9oZHIgKyBwa3QtPmwzX2xlbik7DQo+ICsgICAgIHRjcF9oZHIgPSBydGVfcGt0bWJ1Zl9t dG9kX29mZnNldChwa3QsIHN0cnVjdCBydGVfdGNwX2hkciAqLA0KPiArcGt0LT5sMl9sZW4gKyBw a3QtPmwzX2xlbik7DQo+ICAgICAgIGhkcl9sZW4gPSBwa3QtPmwyX2xlbiArIHBrdC0+bDNfbGVu ICsgcGt0LT5sNF9sZW47DQo+DQo+ICAgICAgIC8qDQo+IEBAIC0yMzAsNyArMTUwLDYgQEAgZ3Jv X3RjcDRfcmVhc3NlbWJsZShzdHJ1Y3QgcnRlX21idWYgKnBrdCwNCj4gICAgICAgaXBfdGxlbiA9 IHJ0ZV9iZV90b19jcHVfMTYoaXB2NF9oZHItPnRvdGFsX2xlbmd0aCk7DQo+ICAgICAgIGlmIChw a3QtPnBrdF9sZW4gPiAodWludDMyX3QpKGlwX3RsZW4gKyBwa3QtPmwyX2xlbikpDQo+ICAgICAg ICAgICAgICAgcnRlX3BrdG1idWZfdHJpbShwa3QsIHBrdC0+cGt0X2xlbiAtIGlwX3RsZW4gLSBw a3QtPmwyX2xlbik7DQo+IC0NCj4gICAgICAgLyoNCj4gICAgICAgICogRG9uJ3QgcHJvY2VzcyB0 aGUgcGFja2V0IHdob3NlIHBheWxvYWQgbGVuZ3RoIGlzIGxlc3MgdGhhbiBvcg0KPiAgICAgICAg KiBlcXVhbCB0byAwLg0KPiBAQCAtMjM5LDYgKzE1OCwxMyBAQCBncm9fdGNwNF9yZWFzc2VtYmxl KHN0cnVjdCBydGVfbWJ1ZiAqcGt0LA0KPiAgICAgICBpZiAodGNwX2RsIDw9IDApDQo+ICAgICAg ICAgICAgICAgcmV0dXJuIC0xOw0KPg0KPiArICAgICBydGVfZXRoZXJfYWRkcl9jb3B5KCYoZXRo X2hkci0+c3JjX2FkZHIpLA0KPiAmKGtleS50Y3BfZmxvdy5ldGhfc2FkZHIpKTsNCj4gKyAgICAg cnRlX2V0aGVyX2FkZHJfY29weSgmKGV0aF9oZHItPmRzdF9hZGRyKSwNCj4gJihrZXkudGNwX2Zs b3cuZXRoX2RhZGRyKSk7DQo+ICsgICAgIGtleS5pcF9zcmNfYWRkciA9IGlwdjRfaGRyLT5zcmNf YWRkcjsNCj4gKyAgICAga2V5LmlwX2RzdF9hZGRyID0gaXB2NF9oZHItPmRzdF9hZGRyOw0KPiAr ICAgICBrZXkudGNwX2Zsb3cuc3JjX3BvcnQgPSB0Y3BfaGRyLT5zcmNfcG9ydDsNCj4gKyAgICAg a2V5LnRjcF9mbG93LmRzdF9wb3J0ID0gdGNwX2hkci0+ZHN0X3BvcnQ7DQo+ICsgICAgIGtleS50 Y3BfZmxvdy5yZWN2X2FjayA9IHRjcF9oZHItPnJlY3ZfYWNrOw0KPiAgICAgICAvKg0KPiAgICAg ICAgKiBTYXZlIElQdjQgSUQgZm9yIHRoZSBwYWNrZXQgd2hvc2UgREYgYml0IGlzIDAuIEZvciB0 aGUgcGFja2V0DQo+ICAgICAgICAqIHdob3NlIERGIGJpdCBpcyAxLCBJUHY0IElEIGlzIGlnbm9y ZWQuDQo+IEBAIC0yNDYsMTUgKzE3Miw2IEBAIGdyb190Y3A0X3JlYXNzZW1ibGUoc3RydWN0IHJ0 ZV9tYnVmICpwa3QsDQo+ICAgICAgIGZyYWdfb2ZmID0gcnRlX2JlX3RvX2NwdV8xNihpcHY0X2hk ci0+ZnJhZ21lbnRfb2Zmc2V0KTsNCj4gICAgICAgaXNfYXRvbWljID0gKGZyYWdfb2ZmICYgUlRF X0lQVjRfSERSX0RGX0ZMQUcpID09DQo+IFJURV9JUFY0X0hEUl9ERl9GTEFHOw0KPiAgICAgICBp cF9pZCA9IGlzX2F0b21pYyA/IDAgOiBydGVfYmVfdG9fY3B1XzE2KGlwdjRfaGRyLT5wYWNrZXRf aWQpOw0KPiAtICAgICBzZW50X3NlcSA9IHJ0ZV9iZV90b19jcHVfMzIodGNwX2hkci0+c2VudF9z ZXEpOw0KPiAtDQo+IC0gICAgIHJ0ZV9ldGhlcl9hZGRyX2NvcHkoJihldGhfaGRyLT5zcmNfYWRk ciksICYoa2V5LmV0aF9zYWRkcikpOw0KPiAtICAgICBydGVfZXRoZXJfYWRkcl9jb3B5KCYoZXRo X2hkci0+ZHN0X2FkZHIpLCAmKGtleS5ldGhfZGFkZHIpKTsNCj4gLSAgICAga2V5LmlwX3NyY19h ZGRyID0gaXB2NF9oZHItPnNyY19hZGRyOw0KPiAtICAgICBrZXkuaXBfZHN0X2FkZHIgPSBpcHY0 X2hkci0+ZHN0X2FkZHI7DQo+IC0gICAgIGtleS5zcmNfcG9ydCA9IHRjcF9oZHItPnNyY19wb3J0 Ow0KPiAtICAgICBrZXkuZHN0X3BvcnQgPSB0Y3BfaGRyLT5kc3RfcG9ydDsNCj4gLSAgICAga2V5 LnJlY3ZfYWNrID0gdGNwX2hkci0+cmVjdl9hY2s7DQo+DQo+ICAgICAgIC8qIFNlYXJjaCBmb3Ig YSBtYXRjaGVkIGZsb3cuICovDQo+ICAgICAgIG1heF9mbG93X251bSA9IHRibC0+bWF4X2Zsb3df bnVtOw0KPiBAQCAtMjcwLDYzICsxODcsNDQgQEAgZ3JvX3RjcDRfcmVhc3NlbWJsZShzdHJ1Y3Qg cnRlX21idWYgKnBrdCwNCj4gICAgICAgICAgICAgICB9DQo+ICAgICAgIH0NCj4NCj4gLSAgICAg LyoNCj4gLSAgICAgICogRmFpbCB0byBmaW5kIGEgbWF0Y2hlZCBmbG93LiBJbnNlcnQgYSBuZXcg ZmxvdyBhbmQgc3RvcmUgdGhlDQo+IC0gICAgICAqIHBhY2tldCBpbnRvIHRoZSBmbG93Lg0KPiAt ICAgICAgKi8NCj4gICAgICAgaWYgKGZpbmQgPT0gMCkgew0KPiAtICAgICAgICAgICAgIGl0ZW1f aWR4ID0gaW5zZXJ0X25ld19pdGVtKHRibCwgcGt0LCBzdGFydF90aW1lLA0KPiAtICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBJTlZBTElEX0FSUkFZX0lOREVYLCBzZW50X3NlcSwgaXBfaWQs DQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2F0b21pYyk7DQo+ICsgICAgICAg ICAgICAgc2VudF9zZXEgPSBydGVfYmVfdG9fY3B1XzMyKHRjcF9oZHItPnNlbnRfc2VxKTsNCj4g KyAgICAgICAgICAgICBpdGVtX2lkeCA9IGluc2VydF9uZXdfdGNwX2l0ZW0ocGt0LCB0YmwtPml0 ZW1zLCAmdGJsLQ0KPiA+aXRlbV9udW0sIHRibC0+bWF4X2l0ZW1fbnVtLCBzdGFydF90aW1lLA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5WQUxJRF9B UlJBWV9JTkRFWCwNCj4gc2VudF9zZXEsIGlwX2lkLA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaXNfYXRvbWljKTsNCj4gICAgICAgICAgICAgICBpZiAo aXRlbV9pZHggPT0gSU5WQUxJRF9BUlJBWV9JTkRFWCkNCj4gICAgICAgICAgICAgICAgICAgICAg IHJldHVybiAtMTsNCj4gICAgICAgICAgICAgICBpZiAoaW5zZXJ0X25ld19mbG93KHRibCwgJmtl eSwgaXRlbV9pZHgpID09DQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOVkFMSURf QVJSQVlfSU5ERVgpIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgIElOVkFMSURfQVJSQVlfSU5E RVgpIHsNCj4gICAgICAgICAgICAgICAgICAgICAgIC8qDQo+ICAgICAgICAgICAgICAgICAgICAg ICAgKiBGYWlsIHRvIGluc2VydCBhIG5ldyBmbG93LCBzbyBkZWxldGUgdGhlDQo+ICAgICAgICAg ICAgICAgICAgICAgICAgKiBzdG9yZWQgcGFja2V0Lg0KPiAtICAgICAgICAgICAgICAgICAgICAg ICovDQo+IC0gICAgICAgICAgICAgICAgICAgICBkZWxldGVfaXRlbSh0YmwsIGl0ZW1faWR4LCBJ TlZBTElEX0FSUkFZX0lOREVYKTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICovDQo+ICsgICAg ICAgICAgICAgICAgICAgICBkZWxldGVfdGNwX2l0ZW0odGJsLT5pdGVtcywgaXRlbV9pZHgsICZ0 YmwtDQo+ID5pdGVtX251bSwNCj4gK0lOVkFMSURfQVJSQVlfSU5ERVgpOw0KPiAgICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIC0xOw0KPiAgICAgICAgICAgICAgIH0NCj4gICAgICAgICAgICAg ICByZXR1cm4gMDsNCj4gICAgICAgfQ0KPiArICAgICBpdGVtX2lkeCA9IHRibC0+Zmxvd3NbaV0u c3RhcnRfaW5kZXg7DQoNCk5vIG5lZWQgdG8gdXBkYXRlIGl0ZW1faWR4LCBhbmQgeW91IGNhbiBk aXJlY3RseSBwYXNzIHRibC0+Zmxvd3NbaV0uc3RhcnRfaW5kZXggdG8NCmdyb19wcm9jZXNzX3Rj cF9pdGVtKCkuIEFuZCBzYW1lIGluIGdyb190Y3A2X3JlYXNzZW1ibGUoKS4NCg0KPg0KPiAtICAg ICAvKg0KPiAtICAgICAgKiBDaGVjayBhbGwgcGFja2V0cyBpbiB0aGUgZmxvdyBhbmQgdHJ5IHRv IGZpbmQgYSBuZWlnaGJvciBmb3INCj4gLSAgICAgICogdGhlIGlucHV0IHBhY2tldC4NCj4gLSAg ICAgICovDQo+IC0gICAgIGN1cl9pZHggPSB0YmwtPmZsb3dzW2ldLnN0YXJ0X2luZGV4Ow0KPiAt ICAgICBwcmV2X2lkeCA9IGN1cl9pZHg7DQo+IC0gICAgIGRvIHsNCj4gLSAgICAgICAgICAgICBj bXAgPSBjaGVja19zZXFfb3B0aW9uKCYodGJsLT5pdGVtc1tjdXJfaWR4XSksIHRjcF9oZHIsDQo+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnRfc2VxLCBpcF9pZCwgcGt0LT5sNF9s ZW4sIHRjcF9kbCwgMCwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfYXRvbWlj KTsNCj4gLSAgICAgICAgICAgICBpZiAoY21wKSB7DQo+IC0gICAgICAgICAgICAgICAgICAgICBp ZiAobWVyZ2VfdHdvX3RjcDRfcGFja2V0cygmKHRibC0+aXRlbXNbY3VyX2lkeF0pLA0KPiAtICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGt0LCBjbXAsIHNlbnRf c2VxLCBpcF9pZCwgMCkpDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAx Ow0KPiAtICAgICAgICAgICAgICAgICAgICAgLyoNCj4gLSAgICAgICAgICAgICAgICAgICAgICAq IEZhaWwgdG8gbWVyZ2UgdGhlIHR3byBwYWNrZXRzLCBhcyB0aGUgcGFja2V0DQo+IC0gICAgICAg ICAgICAgICAgICAgICAgKiBsZW5ndGggaXMgZ3JlYXRlciB0aGFuIHRoZSBtYXggdmFsdWUuIFN0 b3JlDQo+IC0gICAgICAgICAgICAgICAgICAgICAgKiB0aGUgcGFja2V0IGludG8gdGhlIGZsb3cu DQo+IC0gICAgICAgICAgICAgICAgICAgICAgKi8NCj4gLSAgICAgICAgICAgICAgICAgICAgIGlm IChpbnNlcnRfbmV3X2l0ZW0odGJsLCBwa3QsIHN0YXJ0X3RpbWUsIGN1cl9pZHgsDQo+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW50X3NlcSwgaXBfaWQs IGlzX2F0b21pYykgPT0NCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJ TlZBTElEX0FSUkFZX0lOREVYKQ0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1 cm4gLTE7DQo+IC0gICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsNCj4gLSAgICAgICAgICAg ICB9DQo+IC0gICAgICAgICAgICAgcHJldl9pZHggPSBjdXJfaWR4Ow0KPiAtICAgICAgICAgICAg IGN1cl9pZHggPSB0YmwtPml0ZW1zW2N1cl9pZHhdLm5leHRfcGt0X2lkeDsNCj4gLSAgICAgfSB3 aGlsZSAoY3VyX2lkeCAhPSBJTlZBTElEX0FSUkFZX0lOREVYKTsNCj4gKyAgICAgcmV0dXJuIGdy b19wcm9jZXNzX3RjcF9pdGVtKHBrdCwgdGNwX2hkciwgdGNwX2RsLCB0YmwtPml0ZW1zLA0KPiBp dGVtX2lkeCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZ0YmwtPml0ZW1fbnVtLCB0YmwtDQo+ID5tYXhfaXRlbV9udW0sDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcF9pZCwgaXNfYXRvbWljLCBzdGFydF90 aW1lKTsNCj4gK30NCj4NCj4gLSAgICAgLyogRmFpbCB0byBmaW5kIGEgbmVpZ2hib3IsIHNvIHN0 b3JlIHRoZSBwYWNrZXQgaW50byB0aGUgZmxvdy4gKi8NCj4gLSAgICAgaWYgKGluc2VydF9uZXdf aXRlbSh0YmwsIHBrdCwgc3RhcnRfdGltZSwgcHJldl9pZHgsIHNlbnRfc2VxLA0KPiAtICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpcF9pZCwgaXNfYXRvbWljKSA9PSBJTlZBTElEX0FSUkFZ X0lOREVYKQ0KPiAtICAgICAgICAgICAgIHJldHVybiAtMTsNCg== --_000_CY5PR11MB6487301D428831080CBC17089251ACY5PR11MB6487namp_ Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: base64 PGh0bWwgeG1sbnM6dj0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTp2bWwiIHhtbG5zOm89InVy bjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOm9mZmljZSIgeG1sbnM6dz0idXJuOnNjaGVt YXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6d29yZCIgeG1sbnM6bT0iaHR0cDovL3NjaGVtYXMubWlj cm9zb2Z0LmNvbS9vZmZpY2UvMjAwNC8xMi9vbW1sIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv VFIvUkVDLWh0bWw0MCI+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIg Y29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4NCjxtZXRhIG5hbWU9IkdlbmVyYXRv ciIgY29udGVudD0iTWljcm9zb2Z0IFdvcmQgMTUgKGZpbHRlcmVkIG1lZGl1bSkiPg0KPHN0eWxl PjwhLS0NCi8qIEZvbnQgRGVmaW5pdGlvbnMgKi8NCkBmb250LWZhY2UNCgl7Zm9udC1mYW1pbHk6 IkNhbWJyaWEgTWF0aCI7DQoJcGFub3NlLTE6MiA0IDUgMyA1IDQgNiAzIDIgNDt9DQpAZm9udC1m YWNlDQoJe2ZvbnQtZmFtaWx5OkRlbmdYaWFuOw0KCXBhbm9zZS0xOjIgMSA2IDAgMyAxIDEgMSAx IDE7fQ0KQGZvbnQtZmFjZQ0KCXtmb250LWZhbWlseTpDYWxpYnJpOw0KCXBhbm9zZS0xOjIgMTUg NSAyIDIgMiA0IDMgMiA0O30NCkBmb250LWZhY2UNCgl7Zm9udC1mYW1pbHk6IlxARGVuZ1hpYW4i Ow0KCXBhbm9zZS0xOjIgMSA2IDAgMyAxIDEgMSAxIDE7fQ0KLyogU3R5bGUgRGVmaW5pdGlvbnMg Ki8NCnAuTXNvTm9ybWFsLCBsaS5Nc29Ob3JtYWwsIGRpdi5Nc29Ob3JtYWwNCgl7bWFyZ2luOjBp bjsNCglmb250LXNpemU6MTEuMHB0Ow0KCWZvbnQtZmFtaWx5OiJDYWxpYnJpIixzYW5zLXNlcmlm O30NCmE6bGluaywgc3Bhbi5Nc29IeXBlcmxpbmsNCgl7bXNvLXN0eWxlLXByaW9yaXR5Ojk5Ow0K CWNvbG9yOmJsdWU7DQoJdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9DQpzcGFuLkVtYWlsU3R5 bGUxOA0KCXttc28tc3R5bGUtdHlwZTpwZXJzb25hbC1yZXBseTsNCglmb250LWZhbWlseToiQ2Fs aWJyaSIsc2Fucy1zZXJpZjsNCgljb2xvcjp3aW5kb3d0ZXh0O30NCi5Nc29DaHBEZWZhdWx0DQoJ e21zby1zdHlsZS10eXBlOmV4cG9ydC1vbmx5Ow0KCWZvbnQtZmFtaWx5OiJDYWxpYnJpIixzYW5z LXNlcmlmO30NCkBwYWdlIFdvcmRTZWN0aW9uMQ0KCXtzaXplOjguNWluIDExLjBpbjsNCgltYXJn aW46MS4waW4gMS4waW4gMS4waW4gMS4waW47fQ0KZGl2LldvcmRTZWN0aW9uMQ0KCXtwYWdlOldv cmRTZWN0aW9uMTt9DQotLT48L3N0eWxlPjwhLS1baWYgZ3RlIG1zbyA5XT48eG1sPg0KPG86c2hh cGVkZWZhdWx0cyB2OmV4dD0iZWRpdCIgc3BpZG1heD0iMTAyNiIgLz4NCjwveG1sPjwhW2VuZGlm XS0tPjwhLS1baWYgZ3RlIG1zbyA5XT48eG1sPg0KPG86c2hhcGVsYXlvdXQgdjpleHQ9ImVkaXQi Pg0KPG86aWRtYXAgdjpleHQ9ImVkaXQiIGRhdGE9IjEiIC8+DQo8L286c2hhcGVsYXlvdXQ+PC94 bWw+PCFbZW5kaWZdLS0+DQo8L2hlYWQ+DQo8Ym9keSBsYW5nPSJFTi1VUyIgbGluaz0iYmx1ZSIg dmxpbms9InB1cnBsZSIgc3R5bGU9IndvcmQtd3JhcDpicmVhay13b3JkIj4NCjxkaXYgY2xhc3M9 IldvcmRTZWN0aW9uMSI+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5IaSBLdW1hcmEsPG86cD48L286 cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48bzpwPiZuYnNwOzwvbzpwPjwvcD4NCjxwIGNs YXNzPSJNc29Ob3JtYWwiPkluIHlvdXIgcmVwbGllZCBtYWlsLCB0aGUgbGluZSBkb2VzbuKAmXQg cHJlZmFjZSB3aXRoIOKAnCZndDvigJ0gYW5kIGl04oCZcyBoYXJkIHRvIGZpbmQgeW91ciByZXBs aWVzLjxvOnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+U28gSSByZXBseSBoZXJl LiBJbiBncm9fdGNwNF9yZWFzc2VtYmxlKCksIEkgbWVhbiB0aGVyZSBpcyBubyBuZWVkIHRvIHN3 aXRjaCB0aGUgc2VxdWVuY2VzPG86cD48L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5v ZiB0Y3BfaGRyIGFuZCBzZW50X3NlcSBkZWZpbml0aW9uIHN0YXRlbWVudHMgaW4gdGhlIGNvZGUs IHJhdGhlciB0aGFuIG5vdCB1cGRhdGluZyB0aGVtLjxvOnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9 Ik1zb05vcm1hbCI+PG86cD4mbmJzcDs8L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5U aGFua3MsPG86cD48L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5KaWF5dTxvOnA+PC9v OnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PG86cD4mbmJzcDs8L286cD48L3A+DQo8ZGl2 IHN0eWxlPSJib3JkZXI6bm9uZTtib3JkZXItbGVmdDpzb2xpZCBibHVlIDEuNXB0O3BhZGRpbmc6 MGluIDBpbiAwaW4gNC4wcHQiPg0KPGRpdj4NCjxkaXYgc3R5bGU9ImJvcmRlcjpub25lO2JvcmRl ci10b3A6c29saWQgI0UxRTFFMSAxLjBwdDtwYWRkaW5nOjMuMHB0IDBpbiAwaW4gMGluIj4NCjxw IGNsYXNzPSJNc29Ob3JtYWwiPjxiPkZyb206PC9iPiBrdW1hcmFwYXJhbWVzaHdhcmFuIHJhdGhp bmF2ZWwgJmx0O2t1bWFyYXBhcmFtZXNoOTJAZ21haWwuY29tJmd0Ow0KPGJyPg0KPGI+U2VudDo8 L2I+IEZyaWRheSwgSnVuZSA5LCAyMDIzIDEyOjUyIEFNPGJyPg0KPGI+VG86PC9iPiBIdSwgSmlh eXUgJmx0O2ppYXl1Lmh1QGludGVsLmNvbSZndDs8YnI+DQo8Yj5DYzo8L2I+IGRldkBkcGRrLm9y Zzxicj4NCjxiPlN1YmplY3Q6PC9iPiBSZTogW1BBVENIIHY0XSBncm8gOiBpcHY2IGNoYW5nZXMg dG8gc3VwcG9ydCBHUk8gZm9yIFRDUC9pcHY2PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjwvZGl2 Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PG86cD4mbmJzcDs8L286cD48L3A+DQo8ZGl2Pg0KPGRp dj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5IaSBKaXlhdSw8bzpwPjwvbzpwPjwvcD4N CjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxvOnA+Jm5ic3A7PC9vOnA+PC9w Pg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+VGhhbmtzIGZvciB0aGUgcXVp Y2sgcmV2aWV3IGNvbW1lbnRzLiBXaWxsIGFkZHJlc3MgdGhlIHJldmlldyBjb21tZW50cy4gUmVx dWlyZSBjbGFyaWZpY2F0aW9uIGluIG9uZSBvZiB0aGUgY29tbWVudHMuIFBsZWFzZSBmaW5kIGl0 IGlubGluZS4NCjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8L2Rpdj4NCjxwIGNsYXNzPSJNc29O b3JtYWwiPjxvOnA+Jm5ic3A7PC9vOnA+PC9wPg0KPGRpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNv Tm9ybWFsIj5PbiBUaHUsIEp1biA4LCAyMDIzIGF0IDk6MzXigK9BTSBIdSwgSmlheXUgJmx0Ozxh IGhyZWY9Im1haWx0bzpqaWF5dS5odUBpbnRlbC5jb20iPmppYXl1Lmh1QGludGVsLmNvbTwvYT4m Z3Q7IHdyb3RlOjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8YmxvY2txdW90ZSBzdHlsZT0iYm9y ZGVyOm5vbmU7Ym9yZGVyLWxlZnQ6c29saWQgI0NDQ0NDQyAxLjBwdDtwYWRkaW5nOjBpbiAwaW4g MGluIDYuMHB0O21hcmdpbi1sZWZ0OjQuOHB0O21hcmdpbi1yaWdodDowaW4iPg0KPHAgY2xhc3M9 Ik1zb05vcm1hbCI+SGkgS3VtYXJhLDxicj4NCjxicj4NClBsZWFzZSBzZWUgcmVwbGllcyBpbmxp bmUuPGJyPg0KPGJyPg0KSW4gYWRkaXRpb24sIHlvdSBuZWVkIHRvIHVwZGF0ZSB0aGUgcHJvZ3Jh bW1lciBndWlkZSBpbiBnZW5lcmljX3JlY2VpdmVfb2ZmbG9hZF9saWIucnN0LDxicj4NCmFuZCBy ZWxlYXNlIG5vdGUgcmVsZWFzZV8yM18wNy5yc3QuPGJyPg0KPGJyPg0KVGhhbmtzLDxicj4NCkpp YXl1PGJyPg0KPGJyPg0KJmd0OyAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLTxicj4NCiZndDsg RnJvbTogS3VtYXJhIFBhcmFtZXNod2FyYW4gJmx0OzxhIGhyZWY9Im1haWx0bzprdW1hcmFwYXJh bWVzaDkyQGdtYWlsLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPmt1bWFyYXBhcmFtZXNoOTJAZ21haWwu Y29tPC9hPiZndDs8YnI+DQomZ3Q7IFNlbnQ6IFR1ZXNkYXksIEp1bmUgNiwgMjAyMyAxMDo1OCBQ TTxicj4NCiZndDsgVG86IEh1LCBKaWF5dSAmbHQ7PGEgaHJlZj0ibWFpbHRvOmppYXl1Lmh1QGlu dGVsLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPmppYXl1Lmh1QGludGVsLmNvbTwvYT4mZ3Q7PGJyPg0K Jmd0OyBDYzogPGEgaHJlZj0ibWFpbHRvOmRldkBkcGRrLm9yZyIgdGFyZ2V0PSJfYmxhbmsiPmRl dkBkcGRrLm9yZzwvYT47IEt1bWFyYSBQYXJhbWVzaHdhcmFuPGJyPg0KJmd0OyAmbHQ7PGEgaHJl Zj0ibWFpbHRvOmt1bWFyYXBhcmFtZXNoOTJAZ21haWwuY29tIiB0YXJnZXQ9Il9ibGFuayI+a3Vt YXJhcGFyYW1lc2g5MkBnbWFpbC5jb208L2E+Jmd0Ozxicj4NCiZndDsgU3ViamVjdDogW1BBVENI IHY0XSBncm8gOiBpcHY2IGNoYW5nZXMgdG8gc3VwcG9ydCBHUk8gZm9yIFRDUC9pcHY2PGJyPg0K Jmd0OyA8YnI+DQomZ3Q7IFRoZSBwYXRjaCBhZGRzIEdSTyBzdXBwb3J0IGZvciBUQ1AvaXB2NiBw YWNrZXRzLiBUaGlzIGRvZXMgbm90IGluY2x1ZGUgdGhlPGJyPg0KJmd0OyBzdXBwb3J0IGZvciB2 eGxhbiwgdWRwIGlwdjYgcGFja2V0cy48YnI+DQomZ3Q7IDxicj4NCiZndDsgU2lnbmVkLW9mZi1i eTogS3VtYXJhIFBhcmFtZXNod2FyYW4gJmx0OzxhIGhyZWY9Im1haWx0bzprdW1hcmFwYXJhbWVz aDkyQGdtYWlsLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPmt1bWFyYXBhcmFtZXNoOTJAZ21haWwuY29t PC9hPiZndDsmZ3Q7DQo8YnI+DQomZ3Q7IGRpZmYgLS1naXQgYS9saWIvZ3JvL2dyb190Y3AuYyBi L2xpYi9ncm8vZ3JvX3RjcC5jIG5ldyBmaWxlIG1vZGUgMTAwNjQ0IGluZGV4PGJyPg0KJmd0OyAw MDAwMDAwMDAwLi4wMmE3ZDBmOGM1PGJyPg0KJmd0OyAtLS0gL2Rldi9udWxsPGJyPg0KJmd0OyAr KysgYi9saWIvZ3JvL2dyb190Y3AuYzxicj4NCjxicj4NCkZvciBncm9fdGNwLmMgYW5kIGdyb190 Y3AuaCwgaXQncyBiZXR0ZXIgdG8gYWRkICZxdW90O19pbnRlcm5hbCZxdW90OyBpbiB0aGUgZmls ZSBuYW1lLjxicj4NCjxicj4NCiZndDsgQEAgLTAsMCArMSwxMjggQEA8YnI+DQomZ3Q7ICsvKiBT UERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlPGJyPg0KJmd0OyArICogQ29weXJp Z2h0KGMpIDIwMTcgSW50ZWwgQ29ycG9yYXRpb248YnI+DQomZ3Q7ICsgKi88YnI+DQomZ3Q7ICsj aW5jbHVkZSAmbHQ7cnRlX21hbGxvYy5oJmd0Ozxicj4NCiZndDsgKyNpbmNsdWRlICZsdDtydGVf bWJ1Zi5oJmd0Ozxicj4NCiZndDsgKyNpbmNsdWRlICZsdDtydGVfZXRoZGV2LmgmZ3Q7PGJyPg0K Jmd0OyArPGJyPg0KJmd0OyArI2luY2x1ZGUgJnF1b3Q7Z3JvX3RjcC5oJnF1b3Q7PGJyPg0KJmd0 OyArPGJyPg0KJmd0OyArc3RhdGljIGlubGluZSB1aW50MzJfdDxicj4NCiZndDsgK2ZpbmRfYW5f ZW1wdHlfaXRlbShzdHJ1Y3QgZ3JvX3RjcF9pdGVtICppdGVtcyw8YnI+DQomZ3Q7ICsmbmJzcDsg Jm5ic3A7ICZuYnNwO3VpbnQzMl90IG1heF9pdGVtX251bSk8YnI+DQomZ3Q7ICt7PGJyPg0KJmd0 OyArJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50MzJfdCBpOzxicj4NCiZndDsgKzxicj4NCiZndDsg KyZuYnNwOyAmbmJzcDsgJm5ic3A7Zm9yIChpID0gMDsgaSAmbHQ7IG1heF9pdGVtX251bTsgaSsr KTxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwO2lmIChpdGVtc1tpXS5maXJzdHNlZyA9PSBOVUxMKTxicj4NCiZndDsgKyZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDtyZXR1cm4gaTs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO3JldHVybiBJ TlZBTElEX0FSUkFZX0lOREVYOzxicj4NCiZndDsgK308YnI+DQomZ3Q7ICs8YnI+DQomZ3Q7ICt1 aW50MzJfdDxicj4NCiZndDsgK2luc2VydF9uZXdfdGNwX2l0ZW0oc3RydWN0IHJ0ZV9tYnVmICpw a3QsPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7c3RydWN0IGdyb190Y3BfaXRlbSAqaXRlbXMsPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDMyX3QgKml0ZW1fbnVtLDxi cj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw O3VpbnQzMl90IG1heF9pdGVtX251bSw8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50NjRfdCBzdGFydF90aW1lLDxicj4NCiZndDsg KyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQzMl90 IHByZXZfaWR4LDxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwO3VpbnQzMl90IHNlbnRfc2VxLDxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQxNl90IGlwX2lkLDxicj4NCiZn dDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQ4 X3QgaXNfYXRvbWljKTxicj4NCjxicj4NClRoaXMgZnVuY3Rpb24gY2FuIGJlIGlubGluZS48YnI+ DQo8YnI+DQomZ3Q7ICt7PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50MzJfdCBp dGVtX2lkeDs8YnI+DQomZ3Q7ICs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO2l0ZW1f aWR4ID0gZmluZF9hbl9lbXB0eV9pdGVtKGl0ZW1zLCBtYXhfaXRlbV9udW0pOzxicj4NCiZndDsg KyZuYnNwOyAmbmJzcDsgJm5ic3A7aWYgKGl0ZW1faWR4ID09IElOVkFMSURfQVJSQVlfSU5ERVgp PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7cmV0dXJuIElOVkFMSURfQVJSQVlfSU5ERVg7PGJyPg0KJmd0OyArPGJyPg0KJmd0OyArJm5i c3A7ICZuYnNwOyAmbmJzcDtpdGVtc1tpdGVtX2lkeF0uZmlyc3RzZWcgPSBwa3Q7PGJyPg0KJmd0 OyArJm5ic3A7ICZuYnNwOyAmbmJzcDtpdGVtc1tpdGVtX2lkeF0ubGFzdHNlZyA9IHJ0ZV9wa3Rt YnVmX2xhc3RzZWcocGt0KTs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO2l0ZW1zW2l0 ZW1faWR4XS5zdGFydF90aW1lID0gc3RhcnRfdGltZTs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7 ICZuYnNwO2l0ZW1zW2l0ZW1faWR4XS5uZXh0X3BrdF9pZHggPSBJTlZBTElEX0FSUkFZX0lOREVY Ozxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7aXRlbXNbaXRlbV9pZHhdLnNlbnRfc2Vx ID0gc2VudF9zZXE7PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDtpdGVtc1tpdGVtX2lk eF0uaXBfaWQgPSBpcF9pZDs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO2l0ZW1zW2l0 ZW1faWR4XS5uYl9tZXJnZWQgPSAxOzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7aXRl bXNbaXRlbV9pZHhdLmlzX2F0b21pYyA9IGlzX2F0b21pYzs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5i c3A7ICZuYnNwOygqaXRlbV9udW0pICs9IDE7PGJyPg0KJmd0OyArPGJyPg0KJmd0OyArJm5ic3A7 ICZuYnNwOyAmbmJzcDsvKiBpZiB0aGUgcHJldmlvdXMgcGFja2V0IGV4aXN0cywgY2hhaW4gdGhl bSB0b2dldGhlci4gKi88YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO2lmIChwcmV2X2lk eCAhPSBJTlZBTElEX0FSUkFZX0lOREVYKSB7PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7aXRlbXNbaXRlbV9pZHhdLm5leHRfcGt0X2lk eCA9PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2l0ZW1zW3ByZXZfaWR4XS5uZXh0X3Br dF9pZHg7PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7aXRlbXNbcHJldl9pZHhdLm5leHRfcGt0X2lkeCA9IGl0ZW1faWR4Ozxicj4NCiZn dDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7fTxicj4NCiZndDsgKzxicj4NCiZndDsgKyZuYnNwOyAm bmJzcDsgJm5ic3A7cmV0dXJuIGl0ZW1faWR4Ozxicj4NCiZndDsgK308YnI+DQomZ3Q7ICs8YnI+ DQomZ3Q7ICt1aW50MzJfdDxicj4NCiZndDsgK2RlbGV0ZV90Y3BfaXRlbShzdHJ1Y3QgZ3JvX3Rj cF9pdGVtICppdGVtcywgdWludDMyX3QgaXRlbV9pZHgsPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDMyX3QgKml0ZW1fbnVtLDxi cj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw O3VpbnQzMl90IHByZXZfaXRlbV9pZHgpPGJyPg0KJmd0OyArezxicj4NCiZndDsgKyZuYnNwOyAm bmJzcDsgJm5ic3A7dWludDMyX3QgbmV4dF9pZHggPSBpdGVtc1tpdGVtX2lkeF0ubmV4dF9wa3Rf aWR4Ozxicj4NCiZndDsgKzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7LyogTlVMTCBp bmRpY2F0ZXMgYW4gZW1wdHkgaXRlbSAqLzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7 aXRlbXNbaXRlbV9pZHhdLmZpcnN0c2VnID0gTlVMTDs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7 ICZuYnNwOygqaXRlbV9udW0pIC09IDE7PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDtp ZiAocHJldl9pdGVtX2lkeCAhPSBJTlZBTElEX0FSUkFZX0lOREVYKTxicj4NCiZndDsgKyZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2l0ZW1zW3ByZXZfaXRl bV9pZHhdLm5leHRfcGt0X2lkeCA9IG5leHRfaWR4Ozxicj4NCiZndDsgKzxicj4NCiZndDsgKyZu YnNwOyAmbmJzcDsgJm5ic3A7cmV0dXJuIG5leHRfaWR4Ozxicj4NCiZndDsgK308YnI+DQo8YnI+ DQpUaGlzIGZ1bmN0aW9uIGNhbiBiZSBpbmxpbmUuPGJyPg0KPGJyPg0KJmd0OyArPGJyPg0KJmd0 OyAraW50MzJfdDxicj4NCiZndDsgK2dyb19wcm9jZXNzX3RjcF9pdGVtKHN0cnVjdCBydGVfbWJ1 ZiAqcGt0LDxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7c3RydWN0IHJ0ZV90Y3BfaGRy ICp0Y3BfaGRyLDxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7aW50MzJfdCB0Y3BfZGws PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDtzdHJ1Y3QgZ3JvX3RjcF9pdGVtICppdGVt cyw8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQzMl90IGl0ZW1faWR4LDxicj4N CiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDMyX3QgKml0ZW1fbnVtLDxicj4NCiZndDsg KyZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDMyX3QgbWF4X2l0ZW1fbnVtLDxicj4NCiZndDsgKyZu YnNwOyAmbmJzcDsgJm5ic3A7dWludDE2X3QgaXBfaWQsPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNw OyAmbmJzcDt1aW50OF90IGlzX2F0b21pYyw8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNw O3VpbnQ2NF90IHN0YXJ0X3RpbWUpPGJyPg0KPGJyPg0KSXQgaXMgZm9yIGludGVybmFsIHVzZSwg c28gaXQncyBiZXR0ZXIgdG8gcmVtb3ZlICZxdW90O2dyb18mcXVvdDsgZnJvbSB0aGUgZnVuY3Rp b24gbmFtZS48YnI+DQo8YnI+DQomZ3Q7ICt7PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJz cDt1aW50MzJfdCBjdXJfaWR4Ozxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDMy X3QgcHJldl9pZHg7PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDtpbnQgY21wOzxicj4N CiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDMyX3Qgc2VudF9zZXE7PGJyPg0KJmd0OyAr PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDtzZW50X3NlcSA9IHJ0ZV9iZV90b19jcHVf MzIodGNwX2hkci0mZ3Q7c2VudF9zZXEpOzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7 Lyo8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAqIENoZWNrIGFsbCBwYWNrZXRzIGlu IHRoZSBmbG93IGFuZCB0cnkgdG8gZmluZCBhIG5laWdoYm9yIGZvcjxicj4NCiZndDsgKyZuYnNw OyAmbmJzcDsgJm5ic3A7ICogdGhlIGlucHV0IHBhY2tldC48YnI+DQomZ3Q7ICsmbmJzcDsgJm5i c3A7ICZuYnNwOyAqLzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7Y3VyX2lkeCA9IGl0 ZW1faWR4Ozxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7cHJldl9pZHggPSBjdXJfaWR4 Ozxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ZG8gezxicj4NCiZndDsgKyZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2NtcCA9IGNoZWNrX3NlcV9v cHRpb24oJmFtcDtpdGVtc1tjdXJfaWR4XSwgdGNwX2hkciw8YnI+DQomZ3Q7ICsmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3NlbnRfc2VxLCBpcF9pZCwgcGt0 LSZndDtsNF9sZW4sIHRjcF9kbCwgMCw8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2lzX2F0b21pYyk7PGJyPg0KJmd0OyArJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7aWYgKGNtcCkgezxicj4NCiZn dDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtpZiAobWVyZ2VfdHdvX3RjcF9wYWNrZXRzKCZhbXA7aXRl bXNbY3VyX2lkeF0sPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwO3BrdCwgY21wLCBzZW50X3NlcSwgaXBfaWQsIDApKTxicj4NCiZndDsgKyZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7cmV0dXJuIDE7PGJy Pg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOy8qPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAqIEZhaWwgdG8gbWVyZ2UgdGhlIHR3byBwYWNrZXRzLCBhcyB0aGUgcGFja2V0PGJyPg0K Jmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAqIGxlbmd0aCBpcyBncmVhdGVyIHRoYW4gdGhlIG1h eCB2YWx1ZS4gU3RvcmU8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICogdGhlIHBhY2tl dCBpbnRvIHRoZSBmbG93Ljxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgKi88YnI+DQom Z3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7aWYgKGluc2VydF9uZXdfdGNwX2l0ZW0ocGt0LCBpdGVt cywgaXRlbV9udW0sPGJyPg0KJmd0OyBtYXhfaXRlbV9udW0sIHN0YXJ0X3RpbWUsIGN1cl9pZHgs PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw O3NlbnRfc2VxLCBpcF9pZCwgaXNfYXRvbWljKSA9PTxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwO0lOVkFMSURfQVJSQVlfSU5ERVgpPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtyZXR1cm4gLTE7PGJyPg0KJmd0OyArJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwO3JldHVybiAwOzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwO308YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtwcmV2X2lkeCA9IGN1cl9pZHg7PGJyPg0KJmd0OyAr Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Y3VyX2lkeCA9 IGl0ZW1zW2N1cl9pZHhdLm5leHRfcGt0X2lkeDs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZu YnNwO30gd2hpbGUgKGN1cl9pZHggIT0gSU5WQUxJRF9BUlJBWV9JTkRFWCk7PGJyPg0KJmd0OyAr PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsvKiBGYWlsIHRvIGZpbmQgYSBuZWlnaGJv ciwgc28gc3RvcmUgdGhlIHBhY2tldCBpbnRvIHRoZSBmbG93LiAqLzxicj4NCiZndDsgKyZuYnNw OyAmbmJzcDsgJm5ic3A7aWYgKGluc2VydF9uZXdfdGNwX2l0ZW0ocGt0LCBpdGVtcywgaXRlbV9u dW0sIG1heF9pdGVtX251bSw8YnI+DQomZ3Q7IHN0YXJ0X3RpbWUsIHByZXZfaWR4LCBzZW50X3Nl cSw8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwO2lwX2lkLCBpc19hdG9taWMpID09IElOVkFMSURfQVJSQVlfSU5ERVgpPGJyPg0KJmd0OyAr Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7cmV0dXJuIC0x Ozxicj4NCiZndDsgKzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7cmV0dXJuIDA7PGJy Pg0KJmd0OyArfTxicj4NCiZndDsgZGlmZiAtLWdpdCBhL2xpYi9ncm8vZ3JvX3RjcC5oIGIvbGli L2dyby9ncm9fdGNwLmggbmV3IGZpbGUgbW9kZSAxMDA2NDQgaW5kZXg8YnI+DQomZ3Q7IDAwMDAw MDAwMDAuLjRiNWI0ZWRhOWM8YnI+DQomZ3Q7IC0tLSAvZGV2L251bGw8YnI+DQomZ3Q7ICsrKyBi L2xpYi9ncm8vZ3JvX3RjcC5oPGJyPg0KJmd0OyBAQCAtMCwwICsxLDIwOSBAQDxicj4NCiZndDsg KyNpZm5kZWYgX0dST19UQ1BfSF88YnI+DQomZ3Q7ICsjZGVmaW5lIF9HUk9fVENQX0hfPGJyPg0K Jmd0OyArPGJyPg0KJmd0OyArI2RlZmluZSBJTlZBTElEX0FSUkFZX0lOREVYIDB4ZmZmZmZmZmZV TDxicj4NCiZndDsgKzxicj4NCiZndDsgKyNpbmNsdWRlICZsdDtydGVfdGNwLmgmZ3Q7PGJyPg0K Jmd0OyArPGJyPg0KJmd0OyArLyo8YnI+DQomZ3Q7ICsgKiBUaGUgbWF4IGxlbmd0aCBvZiBhIElQ djQgcGFja2V0LCB3aGljaCBpbmNsdWRlcyB0aGUgbGVuZ3RoIG9mIHRoZSBMMzxicj4NCiZndDsg KyAqIGhlYWRlciwgdGhlIEw0IGhlYWRlciBhbmQgdGhlIGRhdGEgcGF5bG9hZC48YnI+DQomZ3Q7 ICsgKi88YnI+DQomZ3Q7ICsjZGVmaW5lIE1BWF9JUF9QS1RfTEVOR1RIIFVJTlQxNl9NQVg8YnI+ DQomZ3Q7ICs8YnI+DQomZ3Q7ICsvKiBUaGUgbWF4aW11bSBUQ1AgaGVhZGVyIGxlbmd0aCAqLzxi cj4NCiZndDsgKyNkZWZpbmUgTUFYX1RDUF9ITEVOIDYwPGJyPg0KJmd0OyArI2RlZmluZSBJTlZB TElEX1RDUF9IRFJMRU4obGVuKSBcPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsoKChs ZW4pICZsdDsgc2l6ZW9mKHN0cnVjdCBydGVfdGNwX2hkcikpIHx8ICgobGVuKSAmZ3Q7IE1BWF9U Q1BfSExFTikpPGJyPg0KJmd0OyArPGJyPg0KJmd0OyArc3RydWN0IGdyb190Y3BfZmxvdyB7PGJy Pg0KPGJyPg0KVGhpcyBzdHJ1Y3R1cmUgbmFtZSBpcyBjb25mdXNpbmcuIEluIHRoZSB1cHBlciBs YXllciwgdGNwNCBhbmQgdGNwNiBoYXZlIGdyb190Y3A0X2Zsb3c8YnI+DQphbmQgZ3JvX3RjcDZf Zmxvdywgd2hpY2ggcmVwcmVzZW50IGEgZmxvdy4gSW5zaWRlIGdyb190Y3A0LzZfZmxvdywgdGhl cmUgYXJlIGtleXMsPGJyPg0KcmVwcmVzZW50ZWQgYnkgc3RydWN0IHRjcDQvNl9mbG93X2tleS4g QnV0IGluc2lkZSBzdHJ1Y3QgdGNwNC82X2Zsb3dfa2V5LCB0aGVyZSBpczxicj4NCnN0cnVjdCBn cm9fdGNwX2Zsb3cuIE5lZWQgdG8gcmVuYW1lIHN0cnVjdCBncm9fdGNwX2Zsb3csIGxpa2UgY29t bW9uX3RjcF9mbG93X2tleS48YnI+DQo8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO3N0 cnVjdCBydGVfZXRoZXJfYWRkciBldGhfc2FkZHI7PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAm bmJzcDtzdHJ1Y3QgcnRlX2V0aGVyX2FkZHIgZXRoX2RhZGRyOzxicj4NCiZndDsgKyZuYnNwOyAm bmJzcDsgJm5ic3A7dWludDMyX3QgcmVjdl9hY2s7PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAm bmJzcDt1aW50MTZfdCBzcmNfcG9ydDs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO3Vp bnQxNl90IGRzdF9wb3J0Ozxicj4NCiZndDsgK307PGJyPg0KJmd0OyArPGJyPg0KJmd0OyArI2Rl ZmluZSBBU1NJR05fVENQX0ZMT1dfS0VZKGsxLCBrMikgXDxicj4NCjxicj4NCkRpdHRvLiBUaGUg bWFjcm8gbmVlZHMgcmVuYW1lLCBsaWtlIEFTU0lHTl9DT01NT05fVENQX0ZMT1dfS0VZLjxicj4N Cjxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ZG8ge1w8YnI+DQomZ3Q7ICsmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtydGVfZXRoZXJfYWRkcl9j b3B5KCZhbXA7KGsxLSZndDtldGhfc2FkZHIpLCAmYW1wOyhrMi0mZ3Q7ZXRoX3NhZGRyKSk7IFw8 YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDtydGVfZXRoZXJfYWRkcl9jb3B5KCZhbXA7KGsxLSZndDtldGhfZGFkZHIpLCAmYW1wOyhrMi0m Z3Q7ZXRoX2RhZGRyKSk7PGJyPg0KJmd0OyBcPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7azItJmd0O3JlY3ZfYWNrID0gazEtJmd0O3Jl Y3ZfYWNrOyBcPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7azItJmd0O3NyY19wb3J0ID0gazEtJmd0O3NyY19wb3J0OyBcPGJyPg0KJmd0 OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7azItJmd0 O2RzdF9wb3J0ID0gazEtJmd0O2RzdF9wb3J0OyBcPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAm bmJzcDt9IHdoaWxlICgwKTxicj4NCiZndDsgKzxicj4NCiZndDsgK3N0cnVjdCBncm9fdGNwX2l0 ZW0gezxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7Lyo8YnI+DQomZ3Q7ICsmbmJzcDsg Jm5ic3A7ICZuYnNwOyAqIFRoZSBmaXJzdCBNQlVGIHNlZ21lbnQgb2YgdGhlIHBhY2tldC4gSWYg dGhlIHZhbHVlPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgKiBpcyBOVUxMLCBpdCBt ZWFucyB0aGUgaXRlbSBpcyBlbXB0eS48YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAq Lzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7c3RydWN0IHJ0ZV9tYnVmICpmaXJzdHNl Zzs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOy8qIFRoZSBsYXN0IE1CVUYgc2VnbWVu dCBvZiB0aGUgcGFja2V0ICovPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDtzdHJ1Y3Qg cnRlX21idWYgKmxhc3RzZWc7PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsvKjxicj4N CiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICogVGhlIHRpbWUgd2hlbiB0aGUgZmlyc3QgcGFj a2V0IGlzIGluc2VydGVkIGludG8gdGhlIHRhYmxlLjxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsg Jm5ic3A7ICogVGhpcyB2YWx1ZSB3b24ndCBiZSB1cGRhdGVkLCBldmVuIGlmIHRoZSBwYWNrZXQg aXMgbWVyZ2VkPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgKiB3aXRoIG90aGVyIHBh Y2tldHMuPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgKi88YnI+DQomZ3Q7ICsmbmJz cDsgJm5ic3A7ICZuYnNwO3VpbnQ2NF90IHN0YXJ0X3RpbWU7PGJyPg0KJmd0OyArJm5ic3A7ICZu YnNwOyAmbmJzcDsvKjxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICogbmV4dF9wa3Rf aWR4IGlzIHVzZWQgdG8gY2hhaW4gdGhlIHBhY2tldHMgdGhhdDxicj4NCiZndDsgKyZuYnNwOyAm bmJzcDsgJm5ic3A7ICogYXJlIGluIHRoZSBzYW1lIGZsb3cgYnV0IGNhbid0IGJlIG1lcmdlZCB0 b2dldGhlcjxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICogKGUuZy4gY2F1c2VkIGJ5 IHBhY2tldCByZW9yZGVyaW5nKS48YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAqLzxi cj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDMyX3QgbmV4dF9wa3RfaWR4Ozxicj4N CiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7LyogVENQIHNlcXVlbmNlIG51bWJlciBvZiB0aGUg cGFja2V0ICovPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50MzJfdCBzZW50X3Nl cTs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOy8qIElQdjQgSUQgb2YgdGhlIHBhY2tl dCAqLzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDE2X3QgaXBfaWQ7PGJyPg0K PGJyPg0KVGhlIGlwX2lkIGZpZWxkIGlzIG5vdCB1c2VkIGJ5IHRjcDYuIEl0J3MgYmV0dGVyIHRv IHVzZSBhbiB1bmlvbiB0byBpbmNsdWRlIGlwX2lkIGZvciBJUHY0IGFuZDxicj4NCmFuIHVzZWxl c3MgbWVtYmVyIGZvciBJUHY2IHdpdGggc29tZSBjb21tZW50cyB0byBhdm9pZCBjb25mdXNpbmcu PGJyPg0KPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsvKiB0aGUgbnVtYmVyIG9mIG1l cmdlZCBwYWNrZXRzICovPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50MTZfdCBu Yl9tZXJnZWQ7PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsvKiBJbmRpY2F0ZSBpZiBJ UHY0IElEIGNhbiBiZSBpZ25vcmVkICovPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDt1 aW50OF90IGlzX2F0b21pYzs8YnI+DQomZ3Q7ICt9Ozxicj4NCiZndDsgKzxicj4NCiZndDsgK3Vp bnQzMl90PGJyPg0KJmd0OyAraW5zZXJ0X25ld190Y3BfaXRlbShzdHJ1Y3QgcnRlX21idWYgKnBr dCw8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDtzdHJ1Y3QgZ3JvX3RjcF9pdGVtICppdGVtcyw8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50MzJfdCAqaXRlbV9udW0sPGJy Pg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 dWludDMyX3QgdGFibGVfc2l6ZSw8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50NjRfdCBzdGFydF90aW1lLDxicj4NCiZndDsgKyZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQzMl90IHBy ZXZfaWR4LDxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwO3VpbnQzMl90IHNlbnRfc2VxLDxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQxNl90IGlwX2lkLDxicj4NCiZndDsg KyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQ4X3Qg aXNfYXRvbWljKTs8YnI+DQomZ3Q7ICs8YnI+DQomZ3Q7ICt1aW50MzJfdDxicj4NCiZndDsgK2Rl bGV0ZV90Y3BfaXRlbShzdHJ1Y3QgZ3JvX3RjcF9pdGVtICppdGVtcyw8YnI+DQomZ3Q7ICsmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50MzJfdCBpdGVt X2lkeCw8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDt1aW50MzJfdCAqaXRlbV9udW0sPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDMyX3QgcHJldl9pdGVtX2lkeCk7PGJy Pg0KJmd0OyArPGJyPg0KJmd0OyAraW50MzJfdDxicj4NCiZndDsgK2dyb19wcm9jZXNzX3RjcF9p dGVtKHN0cnVjdCBydGVfbWJ1ZiAqcGt0LDxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7 c3RydWN0IHJ0ZV90Y3BfaGRyICp0Y3BfaGRyLDxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5i c3A7aW50MzJfdCB0Y3BfZGwsPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDtzdHJ1Y3Qg Z3JvX3RjcF9pdGVtICppdGVtcyw8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQz Ml90IGl0ZW1faWR4LDxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDMyX3QgKml0 ZW1fbnVtLDxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDMyX3QgdGFibGVfc2l6 ZSw8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQxNl90IGlwX2lkLDxicj4NCiZn dDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDhfdCBpc19hdG9taWMsPGJyPg0KJmd0OyArJm5i c3A7ICZuYnNwOyAmbmJzcDt1aW50NjRfdCBzdGFydF90aW1lKTs8YnI+DQomZ3Q7ICs8YnI+DQom Z3Q7ICsvKjxicj4NCiZndDsgKyAqIE1lcmdlIHR3byBUQ1AgcGFja2V0cyB3aXRob3V0IHVwZGF0 aW5nIGNoZWNrc3Vtcy48YnI+DQomZ3Q7ICsgKiBJZiBjbXAgaXMgbGFyZ2VyIHRoYW4gMCwgYXBw ZW5kIHRoZSBuZXcgcGFja2V0IHRvIHRoZTxicj4NCiZndDsgKyAqIG9yaWdpbmFsIHBhY2tldC4g T3RoZXJ3aXNlLCBwcmUtcGVuZCB0aGUgbmV3IHBhY2tldCB0bzxicj4NCiZndDsgKyAqIHRoZSBv cmlnaW5hbCBwYWNrZXQuPGJyPg0KJmd0OyArICovPGJyPg0KJmd0OyArc3RhdGljIGlubGluZSBp bnQ8YnI+DQomZ3Q7ICttZXJnZV90d29fdGNwX3BhY2tldHMoc3RydWN0IGdyb190Y3BfaXRlbSAq aXRlbSw8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDtzdHJ1Y3QgcnRlX21idWYgKnBrdCw8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtpbnQgY21wLDxicj4NCiZndDsgKyZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQzMl90IHNlbnRf c2VxLDxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwO3VpbnQxNl90IGlwX2lkLDxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQxNl90IGwyX29mZnNldCk8YnI+DQomZ3Q7ICt7 PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDtzdHJ1Y3QgcnRlX21idWYgKnBrdF9oZWFk LCAqcGt0X3RhaWwsICpsYXN0c2VnOzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7dWlu dDE2X3QgaGRyX2xlbiwgbDJfbGVuOzxicj4NCiZndDsgKzxicj4NCiZndDsgKyZuYnNwOyAmbmJz cDsgJm5ic3A7aWYgKGNtcCAmZ3Q7IDApIHs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtwa3RfaGVhZCA9IGl0ZW0tJmd0O2ZpcnN0c2Vn Ozxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwO3BrdF90YWlsID0gcGt0Ozxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7fSBlbHNl IHs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDtwa3RfaGVhZCA9IHBrdDs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtwa3RfdGFpbCA9IGl0ZW0tJmd0O2ZpcnN0c2VnOzxicj4N CiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7fTxicj4NCiZndDsgKzxicj4NCiZndDsgKyZuYnNw OyAmbmJzcDsgJm5ic3A7LyogY2hlY2sgaWYgdGhlIElQdjQgcGFja2V0IGxlbmd0aCBpcyBncmVh dGVyIHRoYW4gdGhlIG1heCB2YWx1ZSAqLzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7 aGRyX2xlbiA9IGwyX29mZnNldCArIHBrdF9oZWFkLSZndDtsMl9sZW4gKyBwa3RfaGVhZC0mZ3Q7 bDNfbGVuICs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDtwa3RfaGVhZC0mZ3Q7bDRfbGVuOzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsg Jm5ic3A7bDJfbGVuID0gbDJfb2Zmc2V0ICZndDsgMCA/IHBrdF9oZWFkLSZndDtvdXRlcl9sMl9s ZW4gOiBwa3RfaGVhZC0mZ3Q7bDJfbGVuOzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7 aWYgKHVubGlrZWx5KHBrdF9oZWFkLSZndDtwa3RfbGVuIC0gbDJfbGVuICsgcGt0X3RhaWwtJmd0 O3BrdF9sZW4gLTxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7aGRyX2xlbiAmZ3Q7IE1BWF9JUF9QS1RfTEVOR1RIKSk8YnI+DQomZ3Q7ICsm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtyZXR1cm4gMDs8 YnI+DQomZ3Q7ICs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOy8qIHJlbW92ZSB0aGUg cGFja2V0IGhlYWRlciBmb3IgdGhlIHRhaWwgcGFja2V0ICovPGJyPg0KJmd0OyArJm5ic3A7ICZu YnNwOyAmbmJzcDtydGVfcGt0bWJ1Zl9hZGoocGt0X3RhaWwsIGhkcl9sZW4pOzxicj4NCiZndDsg Kzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7LyogY2hhaW4gdHdvIHBhY2tldHMgdG9n ZXRoZXIgKi88YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO2lmIChjbXAgJmd0OyAwKSB7 PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7aXRlbS0mZ3Q7bGFzdHNlZy0mZ3Q7bmV4dCA9IHBrdDs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtpdGVtLSZndDtsYXN0c2VnID0g cnRlX3BrdG1idWZfbGFzdHNlZyhwa3QpOzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOy8qIHVwZGF0ZSBJUCBJRCB0byB0aGUgbGFyZ2Vy IHZhbHVlICovPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7aXRlbS0mZ3Q7aXBfaWQgPSBpcF9pZDs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5i c3A7ICZuYnNwO30gZWxzZSB7PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7bGFzdHNlZyA9IHJ0ZV9wa3RtYnVmX2xhc3RzZWcocGt0KTs8 YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDtsYXN0c2VnLSZndDtuZXh0ID0gaXRlbS0mZ3Q7Zmlyc3RzZWc7PGJyPg0KJmd0OyArJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7aXRlbS0mZ3Q7Zmlyc3Rz ZWcgPSBwa3Q7PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7LyogdXBkYXRlIHNlbnRfc2VxIHRvIHRoZSBzbWFsbGVyIHZhbHVlICovPGJy Pg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 aXRlbS0mZ3Q7c2VudF9zZXEgPSBzZW50X3NlcTs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtpdGVtLSZndDtpcF9pZCA9IGlwX2lkOzxi cj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7fTxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsg Jm5ic3A7aXRlbS0mZ3Q7bmJfbWVyZ2VkKys7PGJyPg0KJmd0OyArPGJyPg0KJmd0OyArJm5ic3A7 ICZuYnNwOyAmbmJzcDsvKiB1cGRhdGUgTUJVRiBtZXRhZGF0YSBmb3IgdGhlIG1lcmdlZCBwYWNr ZXQgKi88YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO3BrdF9oZWFkLSZndDtuYl9zZWdz ICs9IHBrdF90YWlsLSZndDtuYl9zZWdzOzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7 cGt0X2hlYWQtJmd0O3BrdF9sZW4gKz0gcGt0X3RhaWwtJmd0O3BrdF9sZW47PGJyPg0KJmd0OyAr PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDtyZXR1cm4gMTs8YnI+DQomZ3Q7ICt9PGJy Pg0KJmd0OyArPGJyPg0KJmd0OyArLyo8YnI+DQomZ3Q7ICsgKiBDaGVjayBpZiB0d28gVENQL0lQ djQgcGFja2V0cyBhcmUgbmVpZ2hib3JzLjxicj4NCiZndDsgKyAqLzxicj4NCiZndDsgK3N0YXRp YyBpbmxpbmUgaW50PGJyPg0KJmd0OyArY2hlY2tfc2VxX29wdGlvbihzdHJ1Y3QgZ3JvX3RjcF9p dGVtICppdGVtLDxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwO3N0cnVjdCBydGVfdGNwX2hkciAqdGNwaCw8YnI+DQomZ3Q7ICsmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50MzJfdCBzZW50X3Nl cSw8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDt1aW50MTZfdCBpcF9pZCw8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50MTZfdCB0Y3BfaGwsPGJyPg0KJmd0OyArJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDE2X3QgdGNwX2Rs LDxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwO3VpbnQxNl90IGwyX29mZnNldCw8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50OF90IGlzX2F0b21pYyk8YnI+DQomZ3Q7ICt7 PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDtzdHJ1Y3QgcnRlX21idWYgKnBrdF9vcmln ID0gaXRlbS0mZ3Q7Zmlyc3RzZWc7PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDtjaGFy ICppcGhfb3JpZzs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO3N0cnVjdCBydGVfdGNw X2hkciAqdGNwaF9vcmlnOzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDE2X3Qg bGVuLCB0Y3BfaGxfb3JpZzs8YnI+DQomZ3Q7ICs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZu YnNwO2lwaF9vcmlnID0gKGNoYXIgKikocnRlX3BrdG1idWZfbXRvZChwa3Rfb3JpZywgY2hhciAq KSArPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2wyX29mZnNldCArIHBrdF9vcmlnLSZn dDtsMl9sZW4pOzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7dGNwaF9vcmlnID0gKHN0 cnVjdCBydGVfdGNwX2hkciAqKShpcGhfb3JpZyArIHBrdF9vcmlnLSZndDtsM19sZW4pOzxicj4N CiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7dGNwX2hsX29yaWcgPSBwa3Rfb3JpZy0mZ3Q7bDRf bGVuOzxicj4NCiZndDsgKzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7LyogQ2hlY2sg aWYgVENQIG9wdGlvbiBmaWVsZHMgZXF1YWwgKi88YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZu YnNwO2xlbiA9IFJURV9NQVgodGNwX2hsLCB0Y3BfaGxfb3JpZykgLSBzaXplb2Yoc3RydWN0IHJ0 ZV90Y3BfaGRyKTs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO2lmICgodGNwX2hsICE9 IHRjcF9obF9vcmlnKSB8fCAoKGxlbiAmZ3Q7IDApICZhbXA7JmFtcDs8YnI+DQomZ3Q7ICsmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyhtZW1jbXAodGNwaCAr IDEsIHRjcGhfb3JpZyArIDEsPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7bGVuKSAhPSAw KSkpPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7cmV0dXJuIDA7PGJyPg0KJmd0OyArPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJz cDsvKiBEb24ndCBtZXJnZSBwYWNrZXRzIHdob3NlIERGIGJpdHMgYXJlIGRpZmZlcmVudCAqLzxi cj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7aWYgKHVubGlrZWx5KGl0ZW0tJmd0O2lzX2F0 b21pYyBeIGlzX2F0b21pYykpPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7cmV0dXJuIDA7PGJyPg0KJmd0OyArPGJyPg0KJmd0OyArJm5i c3A7ICZuYnNwOyAmbmJzcDsvKiBjaGVjayBpZiB0aGUgdHdvIHBhY2tldHMgYXJlIG5laWdoYm9y cyAqLzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7bGVuID0gcGt0X29yaWctJmd0O3Br dF9sZW4gLSBsMl9vZmZzZXQgLSBwa3Rfb3JpZy0mZ3Q7bDJfbGVuIC08YnI+DQomZ3Q7ICsmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtwa3Rfb3JpZy0mZ3Q7 bDNfbGVuIC0gdGNwX2hsX29yaWc7PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDtpZiAo KHNlbnRfc2VxID09IGl0ZW0tJmd0O3NlbnRfc2VxICsgbGVuKSAmYW1wOyZhbXA7IChpc19hdG9t aWMgfHw8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyhpcF9pZCA9PSBpdGVtLSZndDtpcF9pZCArIDEpKSk8YnI+DQomZ3Q7ICsmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsvKiBhcHBlbmQgdGhlIG5l dyBwYWNrZXQgKi88YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDtyZXR1cm4gMTs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO2Vs c2UgaWYgKChzZW50X3NlcSArIHRjcF9kbCA9PSBpdGVtLSZndDtzZW50X3NlcSkgJmFtcDsmYW1w OyAoaXNfYXRvbWljIHx8PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsoaXBfaWQgKyBpdGVtLSZndDtuYl9tZXJnZWQgPT0gaXRlbS0mZ3Q7 aXBfaWQpKSk8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsvKiBwcmUtcGVuZCB0aGUgbmV3IHBhY2tldCAqLzxicj4NCiZndDsgKyZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3JldHVybiAtMTs8YnI+ DQomZ3Q7ICs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO3JldHVybiAwOzxicj4NCiZn dDsgK308YnI+DQomZ3Q7ICs8YnI+DQomZ3Q7ICtzdGF0aWMgaW5saW5lIGludDxicj4NCiZndDsg K2lzX3NhbWVfdGNwX2Zsb3coc3RydWN0IGdyb190Y3BfZmxvdyAqazEsIHN0cnVjdCBncm9fdGNw X2Zsb3cgKmsyKSB7PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDtyZXR1cm4gKCFtZW1j bXAoazEsIGsyLCBzaXplb2Yoc3RydWN0IGdyb190Y3BfZmxvdykpKTsgfTxicj4NCjxicj4NCkkg dGhpbmsgdGhpcyBmdW5jdGlvbiBuZWVkcyByZW5hbWUsIGFzIHRoZSByZXN1bHQgb2YgdGhpcyBm dW5jdGlvbiBjYW5ub3QgaWRlbnRpZnkgaWYgdGhleSBhcmUNCjxicj4NCnNhbWUgVENQIGZsb3cu PGJyPg0KPGJyPg0KJmd0OyArPGJyPg0KJmd0OyArI2VuZGlmPGJyPg0KJmd0OyBkaWZmIC0tZ2l0 IGEvbGliL2dyby9ncm9fdGNwNC5jIGIvbGliL2dyby9ncm9fdGNwNC5jIGluZGV4PGJyPg0KJmd0 OyAwMDE0MDk2ZTYzLi5mZmMzMzc0N2M0IDEwMDY0NDxicj4NCiZndDsgLS0tIGEvbGliL2dyby9n cm9fdGNwNC5jPGJyPg0KJmd0OyArKysgYi9saWIvZ3JvL2dyb190Y3A0LmM8YnI+DQomZ3Q7IEBA IC03LDYgKzcsNyBAQDxicj4NCiZndDsmbmJzcDsgI2luY2x1ZGUgJmx0O3J0ZV9ldGhkZXYuaCZn dDs8YnI+DQomZ3Q7IDxicj4NCiZndDsmbmJzcDsgI2luY2x1ZGUgJnF1b3Q7Z3JvX3RjcDQuaCZx dW90Ozxicj4NCiZndDsgKyNpbmNsdWRlICZxdW90O2dyb190Y3AuaCZxdW90Ozxicj4NCiZndDsg PGJyPg0KJmd0OyZuYnNwOyB2b2lkICo8YnI+DQomZ3Q7Jm5ic3A7IGdyb190Y3A0X3RibF9jcmVh dGUodWludDE2X3Qgc29ja2V0X2lkLCBAQCAtMzAsNyArMzEsNyBAQDxicj4NCiZndDsgZ3JvX3Rj cDRfdGJsX2NyZWF0ZSh1aW50MTZfdCBzb2NrZXRfaWQsPGJyPg0KJmd0OyZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwO2lmICh0YmwgPT0gTlVMTCk8YnI+DQomZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3JldHVybiBOVUxMOzxicj4NCiZn dDsgPGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDtzaXplID0gc2l6ZW9mKHN0cnVjdCBn cm9fdGNwNF9pdGVtKSAqIGVudHJpZXNfbnVtOzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5i c3A7c2l6ZSA9IHNpemVvZihzdHJ1Y3QgZ3JvX3RjcF9pdGVtKSAqIGVudHJpZXNfbnVtOzxicj4N CiZndDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt0YmwtJmd0O2l0ZW1zID0gcnRlX3ptYWxs b2Nfc29ja2V0KF9fZnVuY19fLDxicj4NCiZndDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3Np emUsPGJyPg0KJmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7UlRFX0NBQ0hFX0xJTkVfU0la RSw8YnI+DQomZ3Q7IEBAIC03MSwxOCArNzIsNiBAQCBncm9fdGNwNF90YmxfZGVzdHJveSh2b2lk ICp0YmwpPGJyPg0KJmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3J0ZV9mcmVlKHRjcF90 YmwpOzxicj4NCiZndDsmbmJzcDsgfTxicj4NCiZndDsgPGJyPg0KJmd0OyAtc3RhdGljIGlubGlu ZSB1aW50MzJfdDxicj4NCiZndDsgLWZpbmRfYW5fZW1wdHlfaXRlbShzdHJ1Y3QgZ3JvX3RjcDRf dGJsICp0YmwpIC17PGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50MzJfdCBpOzxi cj4NCiZndDsgLSZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDMyX3QgbWF4X2l0ZW1fbnVtID0gdGJs LSZndDttYXhfaXRlbV9udW07PGJyPg0KJmd0OyAtPGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAm bmJzcDtmb3IgKGkgPSAwOyBpICZsdDsgbWF4X2l0ZW1fbnVtOyBpKyspPGJyPg0KJmd0OyAtJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7aWYgKHRibC0mZ3Q7 aXRlbXNbaV0uZmlyc3RzZWcgPT0gTlVMTCk8YnI+DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 cmV0dXJuIGk7PGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDtyZXR1cm4gSU5WQUxJRF9B UlJBWV9JTkRFWDs8YnI+DQomZ3Q7IC19PGJyPg0KJmd0OyAtPGJyPg0KJmd0OyZuYnNwOyBzdGF0 aWMgaW5saW5lIHVpbnQzMl90PGJyPg0KJmd0OyZuYnNwOyBmaW5kX2FuX2VtcHR5X2Zsb3coc3Ry dWN0IGdyb190Y3A0X3RibCAqdGJsKSZuYnNwOyB7IEBAIC05NSw1NiArODQsNiBAQDxicj4NCiZn dDsgZmluZF9hbl9lbXB0eV9mbG93KHN0cnVjdCBncm9fdGNwNF90YmwgKnRibCk8YnI+DQomZ3Q7 Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7cmV0dXJuIElOVkFMSURfQVJSQVlfSU5ERVg7PGJy Pg0KJmd0OyZuYnNwOyB9PGJyPg0KJmd0OyA8YnI+DQomZ3Q7IC1zdGF0aWMgaW5saW5lIHVpbnQz Ml90PGJyPg0KJmd0OyAtaW5zZXJ0X25ld19pdGVtKHN0cnVjdCBncm9fdGNwNF90YmwgKnRibCw8 YnI+DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDtzdHJ1Y3QgcnRlX21idWYgKnBrdCw8YnI+DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50NjRfdCBzdGFydF90aW1lLDxicj4NCiZndDsg LSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQzMl90 IHByZXZfaWR4LDxicj4NCiZndDsgLSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwO3VpbnQzMl90IHNlbnRfc2VxLDxicj4NCiZndDsgLSZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQxNl90IGlwX2lkLDxicj4NCiZn dDsgLSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQ4 X3QgaXNfYXRvbWljKTxicj4NCiZndDsgLXs8YnI+DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNw O3VpbnQzMl90IGl0ZW1faWR4Ozxicj4NCiZndDsgLTxicj4NCiZndDsgLSZuYnNwOyAmbmJzcDsg Jm5ic3A7aXRlbV9pZHggPSBmaW5kX2FuX2VtcHR5X2l0ZW0odGJsKTs8YnI+DQomZ3Q7IC0mbmJz cDsgJm5ic3A7ICZuYnNwO2lmIChpdGVtX2lkeCA9PSBJTlZBTElEX0FSUkFZX0lOREVYKTxicj4N CiZndDsgLSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3Jl dHVybiBJTlZBTElEX0FSUkFZX0lOREVYOzxicj4NCiZndDsgLTxicj4NCiZndDsgLSZuYnNwOyAm bmJzcDsgJm5ic3A7dGJsLSZndDtpdGVtc1tpdGVtX2lkeF0uZmlyc3RzZWcgPSBwa3Q7PGJyPg0K Jmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDt0YmwtJmd0O2l0ZW1zW2l0ZW1faWR4XS5sYXN0c2Vn ID0gcnRlX3BrdG1idWZfbGFzdHNlZyhwa3QpOzxicj4NCiZndDsgLSZuYnNwOyAmbmJzcDsgJm5i c3A7dGJsLSZndDtpdGVtc1tpdGVtX2lkeF0uc3RhcnRfdGltZSA9IHN0YXJ0X3RpbWU7PGJyPg0K Jmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDt0YmwtJmd0O2l0ZW1zW2l0ZW1faWR4XS5uZXh0X3Br dF9pZHggPSBJTlZBTElEX0FSUkFZX0lOREVYOzxicj4NCiZndDsgLSZuYnNwOyAmbmJzcDsgJm5i c3A7dGJsLSZndDtpdGVtc1tpdGVtX2lkeF0uc2VudF9zZXEgPSBzZW50X3NlcTs8YnI+DQomZ3Q7 IC0mbmJzcDsgJm5ic3A7ICZuYnNwO3RibC0mZ3Q7aXRlbXNbaXRlbV9pZHhdLmlwX2lkID0gaXBf aWQ7PGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDt0YmwtJmd0O2l0ZW1zW2l0ZW1faWR4 XS5uYl9tZXJnZWQgPSAxOzxicj4NCiZndDsgLSZuYnNwOyAmbmJzcDsgJm5ic3A7dGJsLSZndDtp dGVtc1tpdGVtX2lkeF0uaXNfYXRvbWljID0gaXNfYXRvbWljOzxicj4NCiZndDsgLSZuYnNwOyAm bmJzcDsgJm5ic3A7dGJsLSZndDtpdGVtX251bSsrOzxicj4NCiZndDsgLTxicj4NCiZndDsgLSZu YnNwOyAmbmJzcDsgJm5ic3A7LyogaWYgdGhlIHByZXZpb3VzIHBhY2tldCBleGlzdHMsIGNoYWlu IHRoZW0gdG9nZXRoZXIuICovPGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDtpZiAocHJl dl9pZHggIT0gSU5WQUxJRF9BUlJBWV9JTkRFWCkgezxicj4NCiZndDsgLSZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3RibC0mZ3Q7aXRlbXNbaXRlbV9pZHhd Lm5leHRfcGt0X2lkeCA9PGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3RibC0mZ3Q7aXRl bXNbcHJldl9pZHhdLm5leHRfcGt0X2lkeDs8YnI+DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt0YmwtJmd0O2l0ZW1zW3ByZXZfaWR4XS5uZXh0 X3BrdF9pZHggPSBpdGVtX2lkeDs8YnI+DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNwO308YnI+ DQomZ3Q7IC08YnI+DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNwO3JldHVybiBpdGVtX2lkeDs8 YnI+DQomZ3Q7IC19PGJyPg0KJmd0OyAtPGJyPg0KJmd0OyAtc3RhdGljIGlubGluZSB1aW50MzJf dDxicj4NCiZndDsgLWRlbGV0ZV9pdGVtKHN0cnVjdCBncm9fdGNwNF90YmwgKnRibCwgdWludDMy X3QgaXRlbV9pZHgsPGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7dWludDMyX3QgcHJldl9pdGVtX2lkeCk8YnI+DQomZ3Q7IC17PGJyPg0K Jmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50MzJfdCBuZXh0X2lkeCA9IHRibC0mZ3Q7aXRl bXNbaXRlbV9pZHhdLm5leHRfcGt0X2lkeDs8YnI+DQomZ3Q7IC08YnI+DQomZ3Q7IC0mbmJzcDsg Jm5ic3A7ICZuYnNwOy8qIE5VTEwgaW5kaWNhdGVzIGFuIGVtcHR5IGl0ZW0gKi88YnI+DQomZ3Q7 IC0mbmJzcDsgJm5ic3A7ICZuYnNwO3RibC0mZ3Q7aXRlbXNbaXRlbV9pZHhdLmZpcnN0c2VnID0g TlVMTDs8YnI+DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNwO3RibC0mZ3Q7aXRlbV9udW0tLTs8 YnI+DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNwO2lmIChwcmV2X2l0ZW1faWR4ICE9IElOVkFM SURfQVJSQVlfSU5ERVgpPGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7dGJsLSZndDtpdGVtc1twcmV2X2l0ZW1faWR4XS5uZXh0X3BrdF9p ZHggPSBuZXh0X2lkeDs8YnI+DQomZ3Q7IC08YnI+DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNw O3JldHVybiBuZXh0X2lkeDs8YnI+DQomZ3Q7IC19PGJyPg0KJmd0OyAtPGJyPg0KJmd0OyZuYnNw OyBzdGF0aWMgaW5saW5lIHVpbnQzMl90PGJyPg0KJmd0OyZuYnNwOyBpbnNlcnRfbmV3X2Zsb3co c3RydWN0IGdyb190Y3A0X3RibCAqdGJsLDxicj4NCiZndDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7c3RydWN0IHRjcDRfZmxvd19rZXkgKnNy Yyw8YnI+DQomZ3Q7IEBAIC0xNTksMTMgKzk4LDEwIEBAIGluc2VydF9uZXdfZmxvdyhzdHJ1Y3Qg Z3JvX3RjcDRfdGJsICp0YmwsPGJyPg0KJmd0OyA8YnI+DQomZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ZHN0ID0gJmFtcDsodGJsLSZndDtmbG93c1tmbG93X2lkeF0ua2V5KTs8YnI+DQom Z3Q7IDxicj4NCiZndDsgLSZuYnNwOyAmbmJzcDsgJm5ic3A7cnRlX2V0aGVyX2FkZHJfY29weSgm YW1wOyhzcmMtJmd0O2V0aF9zYWRkciksICZhbXA7KGRzdC0mZ3Q7ZXRoX3NhZGRyKSk7PGJyPg0K Jmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDtydGVfZXRoZXJfYWRkcl9jb3B5KCZhbXA7KHNyYy0m Z3Q7ZXRoX2RhZGRyKSwgJmFtcDsoZHN0LSZndDtldGhfZGFkZHIpKTs8YnI+DQomZ3Q7ICsmbmJz cDsgJm5ic3A7ICZuYnNwO0FTU0lHTl9UQ1BfRkxPV19LRVkoKCZhbXA7c3JjLSZndDt0Y3BfZmxv dyksICgmYW1wO2RzdC0mZ3Q7dGNwX2Zsb3cpKTs8YnI+DQomZ3Q7ICs8YnI+DQomZ3Q7Jm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ZHN0LSZndDtpcF9zcmNfYWRkciA9IHNyYy0mZ3Q7aXBfc3Jj X2FkZHI7PGJyPg0KJmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2RzdC0mZ3Q7aXBfZHN0 X2FkZHIgPSBzcmMtJmd0O2lwX2RzdF9hZGRyOzxicj4NCiZndDsgLSZuYnNwOyAmbmJzcDsgJm5i c3A7ZHN0LSZndDtyZWN2X2FjayA9IHNyYy0mZ3Q7cmVjdl9hY2s7PGJyPg0KJmd0OyAtJm5ic3A7 ICZuYnNwOyAmbmJzcDtkc3QtJmd0O3NyY19wb3J0ID0gc3JjLSZndDtzcmNfcG9ydDs8YnI+DQom Z3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNwO2RzdC0mZ3Q7ZHN0X3BvcnQgPSBzcmMtJmd0O2RzdF9w b3J0Ozxicj4NCiZndDsgPGJyPg0KJmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3RibC0m Z3Q7Zmxvd3NbZmxvd19pZHhdLnN0YXJ0X2luZGV4ID0gaXRlbV9pZHg7PGJyPg0KJmd0OyZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwO3RibC0mZ3Q7Zmxvd19udW0rKzs8YnI+DQomZ3Q7IEBAIC0x NzMsMjEgKzEwOSw2IEBAIGluc2VydF9uZXdfZmxvdyhzdHJ1Y3QgZ3JvX3RjcDRfdGJsICp0Ymws PGJyPg0KJmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3JldHVybiBmbG93X2lkeDs8YnI+ DQomZ3Q7Jm5ic3A7IH08YnI+DQomZ3Q7IDxicj4NCiZndDsgLS8qPGJyPg0KJmd0OyAtICogdXBk YXRlIHRoZSBwYWNrZXQgbGVuZ3RoIGZvciB0aGUgZmx1c2hlZCBwYWNrZXQuPGJyPg0KJmd0OyAt ICovPGJyPg0KJmd0OyAtc3RhdGljIGlubGluZSB2b2lkPGJyPg0KJmd0OyAtdXBkYXRlX2hlYWRl cihzdHJ1Y3QgZ3JvX3RjcDRfaXRlbSAqaXRlbSkgLXs8YnI+DQomZ3Q7IC0mbmJzcDsgJm5ic3A7 ICZuYnNwO3N0cnVjdCBydGVfaXB2NF9oZHIgKmlwdjRfaGRyOzxicj4NCiZndDsgLSZuYnNwOyAm bmJzcDsgJm5ic3A7c3RydWN0IHJ0ZV9tYnVmICpwa3QgPSBpdGVtLSZndDtmaXJzdHNlZzs8YnI+ DQomZ3Q7IC08YnI+DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNwO2lwdjRfaGRyID0gKHN0cnVj dCBydGVfaXB2NF9oZHIgKikocnRlX3BrdG1idWZfbXRvZChwa3QsIGNoYXIgKikgKzxicj4NCiZn dDsgLSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtwa3QtJmd0O2wyX2xlbik7PGJyPg0KJmd0OyAtJm5ic3A7 ICZuYnNwOyAmbmJzcDtpcHY0X2hkci0mZ3Q7dG90YWxfbGVuZ3RoID0gcnRlX2NwdV90b19iZV8x Nihwa3QtJmd0O3BrdF9sZW4gLTxicj4NCiZndDsgLSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtwa3QtJmd0 O2wyX2xlbik7PGJyPg0KJmd0OyAtfTxicj4NCiZndDsgLTxicj4NCiZndDsmbmJzcDsgaW50MzJf dDxicj4NCiZndDsmbmJzcDsgZ3JvX3RjcDRfcmVhc3NlbWJsZShzdHJ1Y3QgcnRlX21idWYgKnBr dCw8YnI+DQomZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwO3N0cnVjdCBncm9fdGNwNF90YmwgKnRibCw8YnI+DQomZ3Q7IEBAIC0xOTUsMTYg KzExNiwxNSBAQCBncm9fdGNwNF9yZWFzc2VtYmxlKHN0cnVjdCBydGVfbWJ1ZiAqcGt0LCZuYnNw OyB7PGJyPg0KJmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3N0cnVjdCBydGVfZXRoZXJf aGRyICpldGhfaGRyOzxicj4NCiZndDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtzdHJ1Y3Qg cnRlX2lwdjRfaGRyICppcHY0X2hkcjs8YnI+DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNwO3N0 cnVjdCBydGVfdGNwX2hkciAqdGNwX2hkcjs8YnI+DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNw O3VpbnQzMl90IHNlbnRfc2VxOzxicj4NCiZndDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtp bnQzMl90IHRjcF9kbDs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO3N0cnVjdCBydGVf dGNwX2hkciAqdGNwX2hkcjs8YnI+DQomZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dWlu dDE2X3QgaXBfaWQsIGhkcl9sZW4sIGZyYWdfb2ZmLCBpcF90bGVuOzxicj4NCiZndDsmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50OF90IGlzX2F0b21pYzs8YnI+DQomZ3Q7ICsmbmJzcDsg Jm5ic3A7ICZuYnNwO3VpbnQzMl90IHNlbnRfc2VxOzxicj4NCjxicj4NCk5vIG5lZWQgdG8gY2hh bmdlIHRjcF9oZHIgYW5kIHNlbnRfc2VxIGhlcmUuPG86cD48L286cD48L3A+DQo8YmxvY2txdW90 ZSBzdHlsZT0iYm9yZGVyOm5vbmU7Ym9yZGVyLWxlZnQ6c29saWQgI0NDQ0NDQyAxLjBwdDtwYWRk aW5nOjBpbiAwaW4gMGluIDYuMHB0O21hcmdpbi1sZWZ0OjQuOHB0O21hcmdpbi1yaWdodDowaW4i Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+VGhlIGZsb3cgbWF0Y2hpbmcgaXMgZG9uZSBpbiB0aGUg ZnVuY3Rpb24gYW5kIGlmIHRoZSBmbG93IGlzIG5vdCBmb3VuZCBpbnNlcnRfbmV3X3RjcF9pdGVt IGlzIGludm9rZWQgZnJvbSB0aGlzIGZ1bmN0aW9uIGl0c2VsZi4gRGlkIHlvdSBtZWFuIHRvIG1v dmUgdGhhdCB0byB0aGUgcHJvY2Vzc190Y3BfaXRlbSBhcyB3ZWxsPyBJZiB0aGF0IGlzIHRoZSBj YXNlIHdlIHNob3VsZCBwYXNzIHRoZSBzdGFydF9pZHgNCiBhcyBJTlZBTElEX0FSUkFZX0lOREVY IGFuZCBpbiBwcm9jZXNzX3RjcF9pdGVtIGNoZWNrIGlmIElOVkFMSURfQVJSQVlfSU5ERVggZG8g YSBpbnNlcnRfbmV3X3RjcF9pdGVtIGFuZCByZXR1cm4sIGRvIG5vdCBkbyB0aGUgc2VxdW5jZSBu dW1iZXIgY2hlY2tzIGV0Yy4NCjxvOnA+PC9vOnA+PC9wPg0KPC9ibG9ja3F1b3RlPg0KPHAgY2xh c3M9Ik1zb05vcm1hbCI+Jmd0OyA8YnI+DQomZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 c3RydWN0IHRjcDRfZmxvd19rZXkga2V5Ozxicj4NCiZndDsgLSZuYnNwOyAmbmJzcDsgJm5ic3A7 dWludDMyX3QgY3VyX2lkeCwgcHJldl9pZHgsIGl0ZW1faWR4Ozxicj4NCiZndDsgKyZuYnNwOyAm bmJzcDsgJm5ic3A7dWludDMyX3QgaXRlbV9pZHg7PGJyPg0KJmd0OyZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwO3VpbnQzMl90IGksIG1heF9mbG93X251bSwgcmVtYWluaW5nX2Zsb3dfbnVtOzxi cj4NCiZndDsgLSZuYnNwOyAmbmJzcDsgJm5ic3A7aW50IGNtcDs8YnI+DQomZ3Q7Jm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7dWludDhfdCBmaW5kOzxicj4NCiZndDsgPGJyPg0KJmd0OyZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOy8qPGJyPg0KJmd0OyBAQCAtMjE2LDcgKzEzNiw3IEBAIGdy b190Y3A0X3JlYXNzZW1ibGUoc3RydWN0IHJ0ZV9tYnVmICpwa3QsPGJyPg0KJmd0OyA8YnI+DQom Z3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ZXRoX2hkciA9IHJ0ZV9wa3RtYnVmX210b2Qo cGt0LCBzdHJ1Y3QgcnRlX2V0aGVyX2hkciAqKTs8YnI+DQomZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7aXB2NF9oZHIgPSAoc3RydWN0IHJ0ZV9pcHY0X2hkciAqKSgoY2hhciAqKWV0aF9o ZHIgKyBwa3QtJmd0O2wyX2xlbik7PGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDt0Y3Bf aGRyID0gKHN0cnVjdCBydGVfdGNwX2hkciAqKSgoY2hhciAqKWlwdjRfaGRyICsgcGt0LSZndDts M19sZW4pOzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7dGNwX2hkciA9IHJ0ZV9wa3Rt YnVmX210b2Rfb2Zmc2V0KHBrdCwgc3RydWN0IHJ0ZV90Y3BfaGRyICosPGJyPg0KJmd0OyArcGt0 LSZndDtsMl9sZW4gKyBwa3QtJmd0O2wzX2xlbik7PGJyPg0KJmd0OyZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwO2hkcl9sZW4gPSBwa3QtJmd0O2wyX2xlbiArIHBrdC0mZ3Q7bDNfbGVuICsgcGt0 LSZndDtsNF9sZW47PGJyPg0KJmd0OyA8YnI+DQomZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7Lyo8YnI+DQomZ3Q7IEBAIC0yMzAsNyArMTUwLDYgQEAgZ3JvX3RjcDRfcmVhc3NlbWJsZShz dHJ1Y3QgcnRlX21idWYgKnBrdCw8YnI+DQomZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 aXBfdGxlbiA9IHJ0ZV9iZV90b19jcHVfMTYoaXB2NF9oZHItJmd0O3RvdGFsX2xlbmd0aCk7PGJy Pg0KJmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2lmIChwa3QtJmd0O3BrdF9sZW4gJmd0 OyAodWludDMyX3QpKGlwX3RsZW4gKyBwa3QtJmd0O2wyX2xlbikpPGJyPg0KJmd0OyZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtydGVfcGt0bWJ1 Zl90cmltKHBrdCwgcGt0LSZndDtwa3RfbGVuIC0gaXBfdGxlbiAtIHBrdC0mZ3Q7bDJfbGVuKTs8 YnI+DQomZ3Q7IC08YnI+DQomZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Lyo8YnI+DQom Z3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICogRG9uJ3QgcHJvY2VzcyB0aGUgcGFja2V0 IHdob3NlIHBheWxvYWQgbGVuZ3RoIGlzIGxlc3MgdGhhbiBvcjxicj4NCiZndDsmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgKiBlcXVhbCB0byAwLjxicj4NCiZndDsgQEAgLTIzOSw2ICsxNTgs MTMgQEAgZ3JvX3RjcDRfcmVhc3NlbWJsZShzdHJ1Y3QgcnRlX21idWYgKnBrdCw8YnI+DQomZ3Q7 Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7aWYgKHRjcF9kbCAmbHQ7PSAwKTxicj4NCiZndDsm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7cmV0 dXJuIC0xOzxicj4NCiZndDsgPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDtydGVfZXRo ZXJfYWRkcl9jb3B5KCZhbXA7KGV0aF9oZHItJmd0O3NyY19hZGRyKSw8YnI+DQomZ3Q7ICZhbXA7 KGtleS50Y3BfZmxvdy5ldGhfc2FkZHIpKTs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNw O3J0ZV9ldGhlcl9hZGRyX2NvcHkoJmFtcDsoZXRoX2hkci0mZ3Q7ZHN0X2FkZHIpLDxicj4NCiZn dDsgJmFtcDsoa2V5LnRjcF9mbG93LmV0aF9kYWRkcikpOzxicj4NCiZndDsgKyZuYnNwOyAmbmJz cDsgJm5ic3A7a2V5LmlwX3NyY19hZGRyID0gaXB2NF9oZHItJmd0O3NyY19hZGRyOzxicj4NCiZn dDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7a2V5LmlwX2RzdF9hZGRyID0gaXB2NF9oZHItJmd0O2Rz dF9hZGRyOzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7a2V5LnRjcF9mbG93LnNyY19w b3J0ID0gdGNwX2hkci0mZ3Q7c3JjX3BvcnQ7PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJz cDtrZXkudGNwX2Zsb3cuZHN0X3BvcnQgPSB0Y3BfaGRyLSZndDtkc3RfcG9ydDs8YnI+DQomZ3Q7 ICsmbmJzcDsgJm5ic3A7ICZuYnNwO2tleS50Y3BfZmxvdy5yZWN2X2FjayA9IHRjcF9oZHItJmd0 O3JlY3ZfYWNrOzxicj4NCiZndDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsvKjxicj4NCiZn dDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgKiBTYXZlIElQdjQgSUQgZm9yIHRoZSBwYWNr ZXQgd2hvc2UgREYgYml0IGlzIDAuIEZvciB0aGUgcGFja2V0PGJyPg0KJmd0OyZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAqIHdob3NlIERGIGJpdCBpcyAxLCBJUHY0IElEIGlzIGlnbm9yZWQu PGJyPg0KJmd0OyBAQCAtMjQ2LDE1ICsxNzIsNiBAQCBncm9fdGNwNF9yZWFzc2VtYmxlKHN0cnVj dCBydGVfbWJ1ZiAqcGt0LDxicj4NCiZndDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtmcmFn X29mZiA9IHJ0ZV9iZV90b19jcHVfMTYoaXB2NF9oZHItJmd0O2ZyYWdtZW50X29mZnNldCk7PGJy Pg0KJmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2lzX2F0b21pYyA9IChmcmFnX29mZiAm YW1wOyBSVEVfSVBWNF9IRFJfREZfRkxBRykgPT08YnI+DQomZ3Q7IFJURV9JUFY0X0hEUl9ERl9G TEFHOzxicj4NCiZndDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtpcF9pZCA9IGlzX2F0b21p YyA/IDAgOiBydGVfYmVfdG9fY3B1XzE2KGlwdjRfaGRyLSZndDtwYWNrZXRfaWQpOzxicj4NCiZn dDsgLSZuYnNwOyAmbmJzcDsgJm5ic3A7c2VudF9zZXEgPSBydGVfYmVfdG9fY3B1XzMyKHRjcF9o ZHItJmd0O3NlbnRfc2VxKTs8YnI+DQomZ3Q7IC08YnI+DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZu YnNwO3J0ZV9ldGhlcl9hZGRyX2NvcHkoJmFtcDsoZXRoX2hkci0mZ3Q7c3JjX2FkZHIpLCAmYW1w OyhrZXkuZXRoX3NhZGRyKSk7PGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDtydGVfZXRo ZXJfYWRkcl9jb3B5KCZhbXA7KGV0aF9oZHItJmd0O2RzdF9hZGRyKSwgJmFtcDsoa2V5LmV0aF9k YWRkcikpOzxicj4NCiZndDsgLSZuYnNwOyAmbmJzcDsgJm5ic3A7a2V5LmlwX3NyY19hZGRyID0g aXB2NF9oZHItJmd0O3NyY19hZGRyOzxicj4NCiZndDsgLSZuYnNwOyAmbmJzcDsgJm5ic3A7a2V5 LmlwX2RzdF9hZGRyID0gaXB2NF9oZHItJmd0O2RzdF9hZGRyOzxicj4NCiZndDsgLSZuYnNwOyAm bmJzcDsgJm5ic3A7a2V5LnNyY19wb3J0ID0gdGNwX2hkci0mZ3Q7c3JjX3BvcnQ7PGJyPg0KJmd0 OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDtrZXkuZHN0X3BvcnQgPSB0Y3BfaGRyLSZndDtkc3RfcG9y dDs8YnI+DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNwO2tleS5yZWN2X2FjayA9IHRjcF9oZHIt Jmd0O3JlY3ZfYWNrOzxicj4NCiZndDsgPGJyPg0KJmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOy8qIFNlYXJjaCBmb3IgYSBtYXRjaGVkIGZsb3cuICovPGJyPg0KJmd0OyZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwO21heF9mbG93X251bSA9IHRibC0mZ3Q7bWF4X2Zsb3dfbnVtOzxicj4N CiZndDsgQEAgLTI3MCw2MyArMTg3LDQ0IEBAIGdyb190Y3A0X3JlYXNzZW1ibGUoc3RydWN0IHJ0 ZV9tYnVmICpwa3QsPGJyPg0KJmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDt9PGJyPg0KJmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw O308YnI+DQomZ3Q7IDxicj4NCiZndDsgLSZuYnNwOyAmbmJzcDsgJm5ic3A7Lyo8YnI+DQomZ3Q7 IC0mbmJzcDsgJm5ic3A7ICZuYnNwOyAqIEZhaWwgdG8gZmluZCBhIG1hdGNoZWQgZmxvdy4gSW5z ZXJ0IGEgbmV3IGZsb3cgYW5kIHN0b3JlIHRoZTxicj4NCiZndDsgLSZuYnNwOyAmbmJzcDsgJm5i c3A7ICogcGFja2V0IGludG8gdGhlIGZsb3cuPGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJz cDsgKi88YnI+DQomZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7aWYgKGZpbmQgPT0gMCkg ezxicj4NCiZndDsgLSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwO2l0ZW1faWR4ID0gaW5zZXJ0X25ld19pdGVtKHRibCwgcGt0LCBzdGFydF90aW1lLDxicj4N CiZndDsgLSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7SU5W QUxJRF9BUlJBWV9JTkRFWCwgc2VudF9zZXEsIGlwX2lkLDxicj4NCiZndDsgLSZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7aXNfYXRvbWljKTs8YnI+DQomZ3Q7 ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtzZW50X3Nl cSA9IHJ0ZV9iZV90b19jcHVfMzIodGNwX2hkci0mZ3Q7c2VudF9zZXEpOzxicj4NCiZndDsgKyZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2l0ZW1faWR4ID0g aW5zZXJ0X25ld190Y3BfaXRlbShwa3QsIHRibC0mZ3Q7aXRlbXMsICZhbXA7dGJsLTxicj4NCiZn dDsgJmd0O2l0ZW1fbnVtLCB0YmwtJmd0O21heF9pdGVtX251bSwgc3RhcnRfdGltZSw8YnI+DQom Z3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7SU5WQUxJ RF9BUlJBWV9JTkRFWCw8YnI+DQomZ3Q7IHNlbnRfc2VxLCBpcF9pZCw8YnI+DQomZ3Q7ICsmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7aXNfYXRvbWljKTs8YnI+ DQomZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwO2lmIChpdGVtX2lkeCA9PSBJTlZBTElEX0FSUkFZX0lOREVYKTxicj4NCiZndDsmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwO3JldHVybiAtMTs8YnI+DQomZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2lmIChpbnNlcnRfbmV3X2Zsb3co dGJsLCAmYW1wO2tleSwgaXRlbV9pZHgpID09PGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtJTlZBTElEX0FSUkFZX0lOREVYKSB7PGJyPg0K Jmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO0lOVkFMSURfQVJSQVlfSU5ERVgpIHs8YnI+DQomZ3Q7 Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsvKjxicj4NCiZndDsmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAqIEZhaWwgdG8gaW5zZXJ0IGEgbmV3IGZsb3csIHNvIGRlbGV0ZSB0aGU8YnI+DQom Z3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgKiBzdG9yZWQgcGFja2V0Ljxicj4NCiZndDsg LSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgKi88YnI+DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ZGVs ZXRlX2l0ZW0odGJsLCBpdGVtX2lkeCwgSU5WQUxJRF9BUlJBWV9JTkRFWCk7PGJyPg0KJmd0OyAr Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyovPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2RlbGV0 ZV90Y3BfaXRlbSh0YmwtJmd0O2l0ZW1zLCBpdGVtX2lkeCwgJmFtcDt0YmwtPGJyPg0KJmd0OyAm Z3Q7aXRlbV9udW0sPGJyPg0KJmd0OyArSU5WQUxJRF9BUlJBWV9JTkRFWCk7PGJyPg0KJmd0OyZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7cmV0dXJuIC0xOzxicj4NCiZndDsmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fTxicj4NCiZndDsmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7cmV0dXJu IDA7PGJyPg0KJmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO308YnI+DQomZ3Q7ICsmbmJz cDsgJm5ic3A7ICZuYnNwO2l0ZW1faWR4ID0gdGJsLSZndDtmbG93c1tpXS5zdGFydF9pbmRleDs8 YnI+DQo8YnI+DQpObyBuZWVkIHRvIHVwZGF0ZSBpdGVtX2lkeCwgYW5kIHlvdSBjYW4gZGlyZWN0 bHkgcGFzcyB0YmwtJmd0O2Zsb3dzW2ldLnN0YXJ0X2luZGV4IHRvPGJyPg0KZ3JvX3Byb2Nlc3Nf dGNwX2l0ZW0oKS4gQW5kIHNhbWUgaW4gZ3JvX3RjcDZfcmVhc3NlbWJsZSgpLjxicj4NCjxicj4N CiZndDsgPGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDsvKjxicj4NCiZndDsgLSZuYnNw OyAmbmJzcDsgJm5ic3A7ICogQ2hlY2sgYWxsIHBhY2tldHMgaW4gdGhlIGZsb3cgYW5kIHRyeSB0 byBmaW5kIGEgbmVpZ2hib3IgZm9yPGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDsgKiB0 aGUgaW5wdXQgcGFja2V0Ljxicj4NCiZndDsgLSZuYnNwOyAmbmJzcDsgJm5ic3A7ICovPGJyPg0K Jmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDtjdXJfaWR4ID0gdGJsLSZndDtmbG93c1tpXS5zdGFy dF9pbmRleDs8YnI+DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNwO3ByZXZfaWR4ID0gY3VyX2lk eDs8YnI+DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNwO2RvIHs8YnI+DQomZ3Q7IC0mbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtjbXAgPSBjaGVja19zZXFf b3B0aW9uKCZhbXA7KHRibC0mZ3Q7aXRlbXNbY3VyX2lkeF0pLCB0Y3BfaGRyLDxicj4NCiZndDsg LSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7c2VudF9zZXEs IGlwX2lkLCBwa3QtJmd0O2w0X2xlbiwgdGNwX2RsLCAwLDxicj4NCiZndDsgLSZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7aXNfYXRvbWljKTs8YnI+DQomZ3Q7 IC0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtpZiAoY21w KSB7PGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2lmIChtZXJnZV90d29fdGNwNF9wYWNr ZXRzKCZhbXA7KHRibC0mZ3Q7aXRlbXNbY3VyX2lkeF0pLDxicj4NCiZndDsgLSZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtwa3QsIGNtcCwgc2VudF9zZXEsIGlw X2lkLCAwKSk8YnI+DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwO3JldHVybiAxOzxicj4NCiZndDsgLSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsvKjxicj4N CiZndDsgLSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgKiBGYWlsIHRvIG1lcmdlIHRoZSB0d28gcGFja2V0 cywgYXMgdGhlIHBhY2tldDxicj4NCiZndDsgLSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgKiBsZW5ndGgg aXMgZ3JlYXRlciB0aGFuIHRoZSBtYXggdmFsdWUuIFN0b3JlPGJyPg0KJmd0OyAtJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAqIHRoZSBwYWNrZXQgaW50byB0aGUgZmxvdy48YnI+DQomZ3Q7IC0mbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICovPGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2lmIChpbnNlcnRf bmV3X2l0ZW0odGJsLCBwa3QsIHN0YXJ0X3RpbWUsIGN1cl9pZHgsPGJyPg0KJmd0OyAtJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3NlbnRfc2VxLCBpcF9pZCwg aXNfYXRvbWljKSA9PTxicj4NCiZndDsgLSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO0lOVkFMSURfQVJSQVlf SU5ERVgpPGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDtyZXR1cm4gLTE7PGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3JldHVybiAw Ozxicj4NCiZndDsgLSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwO308YnI+DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDtwcmV2X2lkeCA9IGN1cl9pZHg7PGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Y3VyX2lkeCA9IHRibC0mZ3Q7aXRlbXNbY3Vy X2lkeF0ubmV4dF9wa3RfaWR4Ozxicj4NCiZndDsgLSZuYnNwOyAmbmJzcDsgJm5ic3A7fSB3aGls ZSAoY3VyX2lkeCAhPSBJTlZBTElEX0FSUkFZX0lOREVYKTs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5i c3A7ICZuYnNwO3JldHVybiBncm9fcHJvY2Vzc190Y3BfaXRlbShwa3QsIHRjcF9oZHIsIHRjcF9k bCwgdGJsLSZndDtpdGVtcyw8YnI+DQomZ3Q7IGl0ZW1faWR4LDxicj4NCiZndDsgKyZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsmYW1wO3RibC0mZ3Q7aXRlbV9u dW0sIHRibC08YnI+DQomZ3Q7ICZndDttYXhfaXRlbV9udW0sPGJyPg0KJmd0OyArJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2lwX2lkLCBpc19hdG9taWMsIHN0 YXJ0X3RpbWUpOzxicj4NCiZndDsgK308YnI+DQomZ3Q7IDxicj4NCiZndDsgLSZuYnNwOyAmbmJz cDsgJm5ic3A7LyogRmFpbCB0byBmaW5kIGEgbmVpZ2hib3IsIHNvIHN0b3JlIHRoZSBwYWNrZXQg aW50byB0aGUgZmxvdy4gKi88YnI+DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNwO2lmIChpbnNl cnRfbmV3X2l0ZW0odGJsLCBwa3QsIHN0YXJ0X3RpbWUsIHByZXZfaWR4LCBzZW50X3NlcSw8YnI+ DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2lw X2lkLCBpc19hdG9taWMpID09IElOVkFMSURfQVJSQVlfSU5ERVgpPGJyPg0KJmd0OyAtJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7cmV0dXJuIC0xOzxvOnA+ PC9vOnA+PC9wPg0KPC9ibG9ja3F1b3RlPg0KPC9kaXY+DQo8L2Rpdj4NCjwvZGl2Pg0KPC9kaXY+ DQo8L2JvZHk+DQo8L2h0bWw+DQo= --_000_CY5PR11MB6487301D428831080CBC17089251ACY5PR11MB6487namp_--