From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 510FB47660 for ; Mon, 18 Dec 2023 06:28:51 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4279268D159; Mon, 18 Dec 2023 08:28:48 +0200 (EET) Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.9]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DCB8A68D140 for ; Mon, 18 Dec 2023 08:28:39 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1702880925; x=1734416925; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=+q1B/5vnc1YLBcopWRSQOQ+XDFWiGXgttNMpgVDE/5Q=; b=IVyDgsfG0+6gFTO6GbtEdiLeJPf+fYWb3sDS/Mb1uV8kPo+LJMGtvy01 84d5ryYvGZn9K5S+SM36yprV56hOqtiiSVqVyiErfWLiZ8e2FHPn2cU3G UO/3ZUMPOJMFd1ycebKgVu1mFTvOSmDL9jetMWWB40ufZkjkLb7Ncj2FW H3z7OnxintoYZtf4Ocp5phdNTXTs4sLaag0JnIvblOYmk5+MpwqZ7K+S+ csx/R5zypocjF8muKBjpXpHO9xN9mv7p/fV/cxX9SU5Y8H9SKFbGk5ITB szQComUEGdF0uwa9fPyBCCSvrKfEAeVKtwpwbqFdD8rrZko4LUt+nITD6 Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10927"; a="14147492" X-IronPort-AV: E=Sophos;i="6.04,284,1695711600"; d="scan'208";a="14147492" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orvoesa101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Dec 2023 22:28:36 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10927"; a="1022650024" X-IronPort-AV: E=Sophos;i="6.04,284,1695711600"; d="scan'208";a="1022650024" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by fmsmga006.fm.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 17 Dec 2023 22:28:35 -0800 Received: from orsmsx603.amr.corp.intel.com (10.22.229.16) by ORSMSX602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Sun, 17 Dec 2023 22:28:34 -0800 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35 via Frontend Transport; Sun, 17 Dec 2023 22:28:34 -0800 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (104.47.55.169) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Sun, 17 Dec 2023 22:28:29 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OKKSnAUmT2QgvGoyfchJB4CAU6ekDzJf8N0aIJ0g8QFba3j4ezWKxz0eMr1kAaZQ9cU/+TaaQP8Fk9VlAY4md5KbLIjkmiVyhuRb38WJH5JdOkEs13e8uywCk5b1rYQfFeEPvu8zHp5d3Dn9cm9g9hUACDLz8rFbbsc4XTA5jBs64Aq0FKksHsPUgTbDRpdiQwDddWmG6B7et5TwxRPy0z/2q3HwbOS21HwXojbwE7BMGJfvQ06ALudjJp1nhOCHFuPMds1yAoKJor1CyQwxOUZmzpXlPJ/n0AjC7mi8ZbnBsilks8n7+iTxpTogdCqxKNjVW6BEULVUqV5ElwdwSA== 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=+q1B/5vnc1YLBcopWRSQOQ+XDFWiGXgttNMpgVDE/5Q=; b=NeT+sYpguiNU9Rf+DUl7Wz44L1Lpz90xJiOeVtn4urmC1uDmHQmmpvGkyrzKuzAUhIyVpHGZynQKHC8rdDhJtjj7p6nGPkloyeyJrgAaJBlamRxFxX4nMA67bduSuaxaKFSy/ZUR2hWZ0ZXh534oc8eAzjDp2QnARXiR4pdLep0yQK4XcuZKdjO9/hmdRr8jmSSFxjAuc6Ds3RHTGSB1n1HcPJJ7Uqd2x92lIDr5amc2F5cgF0vyhb8OHYT13mGukUChzEytwj2Qx7cYROdYwHHrTDoPOqMLkw6JLpt31XfmPH5bAIvO0HQLj4oYa60fohATgaP52kQab/iCoA8Fdg== 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 DM3PR11MB8757.namprd11.prod.outlook.com (2603:10b6:8:1af::7) by LV8PR11MB8533.namprd11.prod.outlook.com (2603:10b6:408:1e5::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7091.37; Mon, 18 Dec 2023 06:28:22 +0000 Received: from DM3PR11MB8757.namprd11.prod.outlook.com ([fe80::4c5:6fdf:6d9:7ac2]) by DM3PR11MB8757.namprd11.prod.outlook.com ([fe80::4c5:6fdf:6d9:7ac2%4]) with mapi id 15.20.7091.034; Mon, 18 Dec 2023 06:28:21 +0000 From: "Xiang, Haihao" To: "ffmpeg-devel@ffmpeg.org" Thread-Topic: [FFmpeg-devel] [PATCH v12 1/9] libavutil: add hwcontext_d3d12va and AV_PIX_FMT_D3D12 Thread-Index: AQHaJ0eRJLcdofFW/UmSN2NDDV0IlrCuqCOA Date: Mon, 18 Dec 2023 06:28:21 +0000 Message-ID: References: <20231205065034.1621-1-tong1.wu@intel.com> In-Reply-To: <20231205065034.1621-1-tong1.wu@intel.com> Accept-Language: en-AS, zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.44.4-0ubuntu2 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: DM3PR11MB8757:EE_|LV8PR11MB8533:EE_ x-ms-office365-filtering-correlation-id: fec31c9c-e4b4-41e9-965d-08dbff9287eb x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: n2eGfMQP5RL+wzHrvOIpq9qxLvq23hn3DVZYmComJQCWiuQ5jloRQ0uGMFGkdYboLGN19y/790216FMA0oicBcjE/ZUnot/R6zJWIHcLQjJAB2zP+wx6i76MrKl/HGa8ZSGhg0Q/iJ65741QlfY9nPFmywwMY6ka08AHLrLdHZi/iCgOuNlWCUxjW1cQKcvGJsV+YhKOexe7j+22Cbi/UPco07ii+1j/b7cTLem1yF4jc6L5UeYdj8EBbwyks005ESUg7dy83oKpLzrEhLyWPOBtpvtwGVta0THxFjFpB5MKBytlaMs/qde9PdwrurXGLaEnQ82RJAPyeuwNi7N1lImxs4HJx4mbNrJQnufzLchBzHMlmtxY/ihKrBYbd5P3QgkvfVTHdgkZVyQyGQVt1Sdw+n7KXYFERVA2fohVZ4kn3ilxJGzHD+w68wl+24vb+b9+nKm3jYBbuMqtBp2N9sg3bBzd0yjlbdG6IPOxLMqQMgIIgIMJNdxOZ8yA0AoRxLXrxi5uctFXZZZPqh2EbC9fNU0qPHgBkmEKTbQHhFz601OtCKRvyFe6r7a3jlE/uyMxe7iXDBiJkCn83RO6AWbF4/ekkb9xkuHg69q5un8aNSa9yV72tUD3l5jETmiHjYsUGji3Sf5CvulVbTd511f8qHQHRjZRzcB3vjQthakwtzYc53nHZa+0zm2YrXvD x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM3PR11MB8757.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(366004)(396003)(346002)(39860400002)(136003)(376002)(230273577357003)(230922051799003)(230173577357003)(64100799003)(186009)(451199024)(1800799012)(66899024)(45080400002)(26005)(107886003)(2616005)(19627235002)(6512007)(6506007)(71200400001)(122000001)(82960400001)(38070700009)(38100700002)(36756003)(86362001)(8936002)(8676002)(4326008)(91956017)(478600001)(2906002)(30864003)(5660300002)(83380400001)(41300700001)(6486002)(966005)(76116006)(64756008)(66446008)(66946007)(66556008)(66476007)(54906003)(316002)(6916009)(2004002)(559001)(579004)(309714004); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?MUJCUk5MbzZydlo1Q0NJZ0NhNW9sZC8weHdKZXM1L0kvNE9sc3pjRWVsYkNE?= =?utf-8?B?cWFEaFBWd2dHRWdUU294bE4zUHZYWUs5NkdoNHVJMU5mVGpPUzVrSEp5SmNs?= =?utf-8?B?MzdoL0I5MjVhcnJUOWlxcGd5Q0tFQXZ0eEtvTWdXMXR0MDVYMHNrbWpPTmRz?= =?utf-8?B?OXZaUVM3cUM0blk5SktuQm15WmwzNjZOakQyZjg1YzZZRnJvN1liUlJ1b2JF?= =?utf-8?B?QnNRWG5XR255V01lVEgweVVoK2w2MTlESUJ2NEgvYzNtTEd6R0F4cEplY1JG?= =?utf-8?B?UzMxSTV3cjdPQm80TjNiRCtFUE54N0RzQVhFU2UwRnZkWWFpQytsTHpXNkFE?= =?utf-8?B?K25xSTRVSEJKYVllSmltTHJaSmg4b2pqRkdQQXZlWjZmUS9tcEJSeVVPVU96?= =?utf-8?B?SVg1emFJanJUcFNZbGpBdDlLdHFIZHRmSmo4ckZQMEpydGdwUmdYVWtSWXVE?= =?utf-8?B?ckNFTTZWZXRwQXNEUEhQUmtDY2hFaHFJQTl0cU55M29YWWlSTUh6ZHhHUzhH?= =?utf-8?B?N3h2V1NKK24xR3RRbWpYS1R2Tk12SE4vell6WkZHQkM1d0lBYWw0V0NpdUZV?= =?utf-8?B?eU9ublEzWkQ0eU1RZU13UTlwNCtkQXF5aVdwNkV6cGh3RjEycDNEMzYwWFIw?= =?utf-8?B?T1NROUdyY2g3ZWZRa3IycXlZOVErWGFxVmJnVXg3d2g1MnIzU0svSFl6SThl?= =?utf-8?B?VjRHaWN2ODNiR1hDU2kxTFhtUURWNTQzeWljcEFHbEY1dU9OZ2sxeExibFdE?= =?utf-8?B?Uit2NWRHSDRETlpVRlJPNjQvak9OdXdwb0J1NTVRamdjYWVuUHcxRnRVSEIy?= =?utf-8?B?eDA5UWRHYkFSZzcyRXduNWRmdTB3NzRFWVdSNGhTa25adXJ2K2JRNEFnckNE?= =?utf-8?B?Z3o4ZE1HOUdHcTFKNnJjL2NncjltMW8wby9OUnlFZ050NVRrV29RUEhDUTRK?= =?utf-8?B?RmwzSlIxSk1oVmZEdnNrVzJFOHE4ay9LRU5aVVhPYXpRNk5DOURJNEkxYjVZ?= =?utf-8?B?WGpjd2h0b29EUEJEQ2xKZ1NaUXNDbUpHOWYvb3FoWjJJQXMrcDFDZWRnV2Nj?= =?utf-8?B?UWYwNGVQSm0xQWJYVjZXTW0zYm8xSTNXSDRCU2FXNUVRRmx4TTdYUHJIWFpo?= =?utf-8?B?blpWeTlTR2o1UVFJa3ZDanZadi9GNCtHam5Rb2w5amdOdHN6Q28wN0p4d25w?= =?utf-8?B?N1ZKMDV0Z3g2bC8wemhyMUdvTHI1Ny9OUERBYW1qZWtlVXlOWGVxOWxsRy8x?= =?utf-8?B?cGhvZDFlS09Pc0ROWmFiRlRaRERqYmNLVjVjbDBBWjdPVm5kajYyb1NDMDJX?= =?utf-8?B?WVA2NDJLV3FwTit5M0kzWXRpVUozaXJhUVRJRjF3aDd2cjBsNlNQcG0zZDRQ?= =?utf-8?B?WXNJd0JBcGpHRndhNUF1a2lOTnh0Yno3MGpob1lpMlEyMkc3cWoraGRpSnh6?= =?utf-8?B?OEpaclh4aHMyVXFScWdwWE5nLzVhUlM5ZEd1bnh3eWxhTFJYSUw0VytsMUJ2?= =?utf-8?B?cFVub3UyRHgwTGhhNVRuZmhvZWU2Z0d1QVRxbHpyejZxdUpsLzlkL2plV21v?= =?utf-8?B?bWRyMGJ3Wk9HZVphWS9wWW0rZkZGdUJpZ0FkMU9XSUJjRDZ3azUyMjgrZ01a?= =?utf-8?B?Ym16VENWZnFuWm4vajE0MHdkWTQ1QXhCUkhiRDQxbnhQOTNhSXB4dGFrWnJC?= =?utf-8?B?SEFTNGI4S1Z2SmluclNCdEhuaTY2WmtCcDNVc1oxSTFSR2hlNkg5VjdaVWFw?= =?utf-8?B?a3FFQTBaU2hXMExDck8yODlsb0duTStwK3FRMW95TVZIVEh1dXc3Zk1kdDZu?= =?utf-8?B?Y212SHVSQytpL2k4ZEUyc2dZTkxITjVNMFNFRzgrK3dDZExmdnJPWG84RU5t?= =?utf-8?B?dHdrNVNaMzF3QVkwaW1WVitBanRRM0JVS2FGM3dSUTM4YU5JU1B2Z09nUkhp?= =?utf-8?B?bWQ2TlIvTTB6Z0Rkbk5jTTd1and2RkU3cjdPRDFvTmpEV0dEelhoUDQ4L0Na?= =?utf-8?B?L2d6QklJbDJsQXVvb3ozN1dTQ1BnKyswQVk2UmNqc3lwS0M1TmJHQWlSSWc5?= =?utf-8?B?RTkyKzBhbXlBMUFDY1dVdUVNNTNkTmhUaC8xU3MwV0hsaGkwaVQ3QWIyaDZx?= =?utf-8?B?M3hyY3NqQzgyNWk3Z2lLNE9uVjJjN0lKZHlHdXNvRzlHa0IzVjY5d1VlWlNP?= =?utf-8?B?WUE9PQ==?= Content-ID: MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM3PR11MB8757.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: fec31c9c-e4b4-41e9-965d-08dbff9287eb X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Dec 2023 06:28:21.3643 (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: Ej34mnH6igEJxoasgwVs5+NhoEW8btB/tcROytIk/2SK9k/H3usPv1a24wjcs9piMnwKzFoV+C3oCqJItO6ReQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV8PR11MB8533 X-OriginatorOrg: intel.com Subject: Re: [FFmpeg-devel] [PATCH v12 1/9] libavutil: add hwcontext_d3d12va and AV_PIX_FMT_D3D12 X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: "Wu, Tong1" , "toqsxw@outlook.com" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: T24gRGksIDIwMjMtMTItMDUgYXQgMTQ6NDYgKzA4MDAsIFRvbmcgV3Ugd3JvdGU6Cj4gRnJvbTog V3UgSmlhbmh1YSA8dG9xc3h3QG91dGxvb2suY29tPgo+IAo+IFNpZ25lZC1vZmYtYnk6IFd1IEpp YW5odWEgPHRvcXN4d0BvdXRsb29rLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBUb25nIFd1IDx0b25n MS53dUBpbnRlbC5jb20+Cj4gLS0tCj4gCj4gQ29tcGFyZWQgdG8gdjExLCB2MTIgc2V0IHRoZSBp bml0aWFsIHZhbHVlIHRvIDAgZm9yIHRoZSBmZW5jZSB2YWx1ZSwKPiBmaXhpbmcgYSBwb3RlbnRp YWwgZHluYW1pYyBwb29sIHN5bmMgaXNzdWUuIEhlbmNlIHJlbW92ZWQgdGhlIG5vbiB6ZXJvCj4g aW5pdGlhbF9wb29sX3NpemUgZm9yCj4gZDNkMTJ2YSBkZWNvZGVyLiAKPiAKPiBTb21lIG90aGVy IG1pbm9yIGVycm9yIG1lc3NhZ2UgY2hhbmdlcy4KPiAKPiAKPiAKPiDCoGNvbmZpZ3VyZcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKg wqAgNSArCj4gwqBkb2MvQVBJY2hhbmdlc8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB8wqDCoCA1ICsKPiDCoGxpYmF2dXRpbC9NYWtlZmlsZcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMyArCj4gwqBsaWJhdnV0aWwv aHdjb250ZXh0LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDQgKwo+ IMKgbGliYXZ1dGlsL2h3Y29udGV4dC5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB8wqDCoCAxICsKPiDCoGxpYmF2dXRpbC9od2NvbnRleHRfZDNkMTJ2YS5jwqDCoMKgwqDCoMKg wqDCoMKgIHwgNzAzICsrKysrKysrKysrKysrKysrKysrKysrKysKPiDCoGxpYmF2dXRpbC9od2Nv bnRleHRfZDNkMTJ2YS5owqDCoMKgwqDCoMKgwqDCoMKgIHwgMTM0ICsrKysrCj4gwqBsaWJhdnV0 aWwvaHdjb250ZXh0X2QzZDEydmFfaW50ZXJuYWwuaCB8wqAgNTkgKysrCj4gwqBsaWJhdnV0aWwv aHdjb250ZXh0X2ludGVybmFsLmjCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDEgKwo+IMKgbGliYXZ1 dGlsL3BpeGRlc2MuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKg IDQgKwo+IMKgbGliYXZ1dGlsL3BpeGZtdC5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB8wqDCoCA3ICsKPiDCoGxpYmF2dXRpbC90ZXN0cy9od2RldmljZS5jwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDIgKwo+IMKgbGliYXZ1dGlsL3ZlcnNpb24uaMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDIgKy0KPiDCoDEzIGZpbGVz IGNoYW5nZWQsIDkyOSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCj4gwqBjcmVhdGUgbW9k ZSAxMDA2NDQgbGliYXZ1dGlsL2h3Y29udGV4dF9kM2QxMnZhLmMKPiDCoGNyZWF0ZSBtb2RlIDEw MDY0NCBsaWJhdnV0aWwvaHdjb250ZXh0X2QzZDEydmEuaAo+IMKgY3JlYXRlIG1vZGUgMTAwNjQ0 IGxpYmF2dXRpbC9od2NvbnRleHRfZDNkMTJ2YV9pbnRlcm5hbC5oCj4gCj4gZGlmZiAtLWdpdCBh L2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQo+IGluZGV4IGQ3N2MwNTMyMjYuLjFhMzQzYWM2YjkgMTAw NzU1Cj4gLS0tIGEvY29uZmlndXJlCj4gKysrIGIvY29uZmlndXJlCj4gQEAgLTMzNiw2ICszMzYs NyBAQCBFeHRlcm5hbCBsaWJyYXJ5IHN1cHBvcnQ6Cj4gwqDCoCAtLWRpc2FibGUtY3VkYS1sbHZt wqDCoMKgwqDCoCBkaXNhYmxlIENVREEgY29tcGlsYXRpb24gdXNpbmcgY2xhbmcgW2F1dG9kZXRl Y3RdCj4gwqDCoCAtLWRpc2FibGUtY3V2aWTCoMKgwqDCoMKgwqDCoMKgwqAgZGlzYWJsZSBOdmlk aWEgQ1VWSUQgc3VwcG9ydCBbYXV0b2RldGVjdF0KPiDCoMKgIC0tZGlzYWJsZS1kM2QxMXZhwqDC oMKgwqDCoMKgwqAgZGlzYWJsZSBNaWNyb3NvZnQgRGlyZWN0M0QgMTEgdmlkZW8gYWNjZWxlcmF0 aW9uCj4gY29kZSBbYXV0b2RldGVjdF0KPiArwqAgLS1kaXNhYmxlLWQzZDEydmHCoMKgwqDCoMKg wqDCoCBkaXNhYmxlIE1pY3Jvc29mdCBEaXJlY3QzRCAxMiB2aWRlbyBhY2NlbGVyYXRpb24KPiBj b2RlIFthdXRvZGV0ZWN0XQo+IMKgwqAgLS1kaXNhYmxlLWR4dmEywqDCoMKgwqDCoMKgwqDCoMKg IGRpc2FibGUgTWljcm9zb2Z0IERpcmVjdFggOSB2aWRlbyBhY2NlbGVyYXRpb24KPiBjb2RlIFth dXRvZGV0ZWN0XQo+IMKgwqAgLS1kaXNhYmxlLWZmbnZjb2RlY8KgwqDCoMKgwqAgZGlzYWJsZSBk eW5hbWljYWxseSBsaW5rZWQgTnZpZGlhIGNvZGUKPiBbYXV0b2RldGVjdF0KPiDCoMKgIC0tZW5h YmxlLWxpYmRybcKgwqDCoMKgwqDCoMKgwqDCoCBlbmFibGUgRFJNIGNvZGUgKExpbnV4KSBbbm9d Cj4gQEAgLTE5MjYsNiArMTkyNyw3IEBAIEhXQUNDRUxfQVVUT0RFVEVDVF9MSUJSQVJZX0xJU1Q9 Igo+IMKgwqDCoMKgIGN1ZGFfbGx2bQo+IMKgwqDCoMKgIGN1dmlkCj4gwqDCoMKgwqAgZDNkMTF2 YQo+ICvCoMKgwqAgZDNkMTJ2YQo+IMKgwqDCoMKgIGR4dmEyCj4gwqDCoMKgwqAgZmZudmNvZGVj Cj4gwqDCoMKgwqAgbnZkZWMKPiBAQCAtMzA0OCw2ICszMDUwLDcgQEAgY3J5c3RhbGhkX2RlcHM9 ImxpYmNyeXN0YWxoZF9saWJjcnlzdGFsaGRfaWZfaCIKPiDCoGN1ZGFfZGVwcz0iZmZudmNvZGVj Igo+IMKgY3V2aWRfZGVwcz0iZmZudmNvZGVjIgo+IMKgZDNkMTF2YV9kZXBzPSJkeHZhX2ggSUQz RDExVmlkZW9EZWNvZGVyIElEM0QxMVZpZGVvQ29udGV4dCIKPiArZDNkMTJ2YV9kZXBzPSJkeHZh X2ggSUQzRDEyRGV2aWNlIElEM0QxMlZpZGVvRGVjb2RlciIKPiDCoGR4dmEyX2RlcHM9ImR4dmEy YXBpX2ggRFhWQTJfQ29uZmlnUGljdHVyZURlY29kZSBvbGUzMiB1c2VyMzIiCj4gwqBmZm52Y29k ZWNfZGVwc19hbnk9ImxpYmRsIExvYWRMaWJyYXJ5Igo+IMKgbWVkaWFjb2RlY19kZXBzPSJhbmRy b2lkIgo+IEBAIC02NTc1LDYgKzY1NzgsOCBAQCBjaGVja190eXBlICJ3aW5kb3dzLmggZHhnaTFf Mi5oIiAiSURYR0lPdXRwdXQxIgo+IMKgY2hlY2tfdHlwZSAid2luZG93cy5oIGR4Z2kxXzUuaCIg IklEWEdJT3V0cHV0NSIKPiDCoGNoZWNrX3R5cGUgIndpbmRvd3MuaCBkM2QxMS5oIiAiSUQzRDEx VmlkZW9EZWNvZGVyIgo+IMKgY2hlY2tfdHlwZSAid2luZG93cy5oIGQzZDExLmgiICJJRDNEMTFW aWRlb0NvbnRleHQiCj4gK2NoZWNrX3R5cGUgIndpbmRvd3MuaCBkM2QxMi5oIiAiSUQzRDEyRGV2 aWNlIgo+ICtjaGVja190eXBlICJ3aW5kb3dzLmggZDNkMTJ2aWRlby5oIiAiSUQzRDEyVmlkZW9E ZWNvZGVyIgo+IMKgY2hlY2tfdHlwZSAid2luZG93cy5oIiAiRFBJX0FXQVJFTkVTU19DT05URVhU IiAtRF9XSU4zMl9XSU5OVD0weDBBMDAKPiDCoGNoZWNrX3R5cGUgImQzZDkuaCBkeHZhMmFwaS5o IiBEWFZBMl9Db25maWdQaWN0dXJlRGVjb2RlIC0KPiBEX1dJTjMyX1dJTk5UPTB4MDYwMgo+IMKg Y2hlY2tfZnVuY19oZWFkZXJzIG1mYXBpLmggTUZDcmVhdGVBbGlnbmVkTWVtb3J5QnVmZmVyIC1s bWZwbGF0Cj4gZGlmZiAtLWdpdCBhL2RvYy9BUEljaGFuZ2VzIGIvZG9jL0FQSWNoYW5nZXMKPiBp bmRleCA0YTJkYzFjNDRmLi4wNDM1OTI2ZDgwIDEwMDY0NAo+IC0tLSBhL2RvYy9BUEljaGFuZ2Vz Cj4gKysrIGIvZG9jL0FQSWNoYW5nZXMKPiBAQCAtMiw2ICsyLDExIEBAIFRoZSBsYXN0IHZlcnNp b24gaW5jcmVhc2VzIG9mIGFsbCBsaWJyYXJpZXMgd2VyZSBvbiAyMDIzLTAyLQo+IDA5Cj4gwqAK PiDCoEFQSSBjaGFuZ2VzLCBtb3N0IHJlY2VudCBmaXJzdDoKPiDCoAo+ICsyMDIzLTExLTA3IC0g eHh4eHh4eHh4eCAtIGxhdnUgNTguMzMuMTAwIC0gcGl4Zm10LmggaHdjb250ZXh0LmgKPiBod2Nv bnRleHRfZDNkMTJ2YS5oCj4gK8KgIEFkZCBBVl9IV0RFVklDRV9UWVBFX0QzRDEyVkEgYW5kIEFW X1BJWF9GTVRfRDNEMTIuCj4gK8KgIEFkZCBBVkQzRDEyVkFEZXZpY2VDb250ZXh0LCBBVkQzRDEy VkFTeW5jQ29udGV4dCwgQVZEM0QxMlZBRnJhbWUgYW5kCj4gK8KgIEFWRDNEMTJWQUZyYW1lc0Nv bnRleHQuCj4gKwo+IMKgMjAyMy0xMS0wOCAtIGI4Mjk1N2E2NmE3IC0gbGF2dSA1OC4zMi4xMDAg LSBjaGFubmVsX2xheW91dC5oCj4gwqDCoCBBZGQgQVZfQ0hfTEFZT1VUXzdQT0lOVDJQT0lOVDMg YW5kIEFWX0NIQU5ORUxfTEFZT1VUXzdQT0lOVDJQT0lOVDMuCj4gwqDCoCBBZGQgQVZfQ0hfTEFZ T1VUXzlQT0lOVDFQT0lOVDRfQkFDSyBhbmQKPiBBVl9DSEFOTkVMX0xBWU9VVF85UE9JTlQxUE9J TlQ0X0JBQ0suCj4gZGlmZiAtLWdpdCBhL2xpYmF2dXRpbC9NYWtlZmlsZSBiL2xpYmF2dXRpbC9N YWtlZmlsZQo+IGluZGV4IDQ3MTFmOGNkZTguLjZhODU2NmYxZDkgMTAwNjQ0Cj4gLS0tIGEvbGli YXZ1dGlsL01ha2VmaWxlCj4gKysrIGIvbGliYXZ1dGlsL01ha2VmaWxlCj4gQEAgLTQyLDYgKzQy LDcgQEAgSEVBREVSUyA9Cj4gYWRsZXIzMi5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgXAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgIGh3Y29udGV4dC5owqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4gwqDCoMKgwqDCoMKg wqDCoMKgwqAgaHdjb250ZXh0X2N1ZGEuaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBcCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgaHdjb250ZXh0X2QzZDExdmEuaMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBcCj4gK8KgwqDCoMKgwqDCoMKgwqDCoCBod2NvbnRleHRfZDNkMTJ2 YS5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoCBo d2NvbnRleHRfZHJtLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4gwqDC oMKgwqDCoMKgwqDCoMKgwqAgaHdjb250ZXh0X2R4dmEyLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIFwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoCBod2NvbnRleHRfcXN2LmjCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4gQEAgLTE5MCw2ICsxOTEsNyBAQCBPQkpT ID0KPiBhZGxlcjMyLm/CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBcCj4gwqAKPiDCoE9CSlMtJChDT05GSUdfQ1VEQSnCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICs9IGh3Y29udGV4dF9jdWRhLm8KPiDCoE9CSlMtJChD T05GSUdfRDNEMTFWQSnCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICs9IGh3Y29u dGV4dF9kM2QxMXZhLm8KPiArT0JKUy0kKENPTkZJR19EM0QxMlZBKcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgKz0gaHdjb250ZXh0X2QzZDEydmEubwo+IMKgT0JKUy0kKENPTkZJ R19EWFZBMinCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCArPSBod2NvbnRl eHRfZHh2YTIubwo+IMKgT0JKUy0kKENPTkZJR19MSUJEUk0pwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgICs9IGh3Y29udGV4dF9kcm0ubwo+IMKgT0JKUy0kKENPTkZJR19NQUNP U19LUEVSRinCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCArPSBtYWNvc19rcGVyZi5vCj4gQEAg LTIxMyw2ICsyMTUsNyBAQCBTS0lQSEVBREVSUy0kKEhBVkVfQ1VEQV9IKcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCArPSBod2NvbnRleHRfY3VkYS5oCj4gwqBTS0lQSEVBREVSUy0kKENPTkZJR19D VURBKcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCArPSBod2NvbnRleHRfY3VkYV9pbnRlcm5hbC5o wqDCoMKgwqAgXAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjdWRhX2NoZWNrLmgKPiDC oFNLSVBIRUFERVJTLSQoQ09ORklHX0QzRDExVkEpwqDCoMKgwqDCoMKgwqDCoMKgICs9IGh3Y29u dGV4dF9kM2QxMXZhLmgKPiArU0tJUEhFQURFUlMtJChDT05GSUdfRDNEMTJWQSnCoMKgwqDCoMKg wqDCoMKgwqAgKz0gaHdjb250ZXh0X2QzZDEydmEuaAo+IMKgU0tJUEhFQURFUlMtJChDT05GSUdf RFhWQTIpwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCArPSBod2NvbnRleHRfZHh2YTIuaAo+IMKgU0tJ UEhFQURFUlMtJChDT05GSUdfUVNWKcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICs9IGh3Y29u dGV4dF9xc3YuaAo+IMKgU0tJUEhFQURFUlMtJChDT05GSUdfT1BFTkNMKcKgwqDCoMKgwqDCoMKg wqDCoMKgICs9IGh3Y29udGV4dF9vcGVuY2wuaAo+IGRpZmYgLS1naXQgYS9saWJhdnV0aWwvaHdj b250ZXh0LmMgYi9saWJhdnV0aWwvaHdjb250ZXh0LmMKPiBpbmRleCAzNjUwZDQ2NTNhLi5lMjNi YWQyMzBmIDEwMDY0NAo+IC0tLSBhL2xpYmF2dXRpbC9od2NvbnRleHQuYwo+ICsrKyBiL2xpYmF2 dXRpbC9od2NvbnRleHQuYwo+IEBAIC0zNiw2ICszNiw5IEBAIHN0YXRpYyBjb25zdCBIV0NvbnRl eHRUeXBlICogY29uc3QgaHdfdGFibGVbXSA9IHsKPiDCoCNpZiBDT05GSUdfRDNEMTFWQQo+IMKg wqDCoMKgICZmZl9od2NvbnRleHRfdHlwZV9kM2QxMXZhLAo+IMKgI2VuZGlmCj4gKyNpZiBDT05G SUdfRDNEMTJWQQo+ICvCoMKgwqAgJmZmX2h3Y29udGV4dF90eXBlX2QzZDEydmEsCj4gKyNlbmRp Zgo+IMKgI2lmIENPTkZJR19MSUJEUk0KPiDCoMKgwqDCoCAmZmZfaHdjb250ZXh0X3R5cGVfZHJt LAo+IMKgI2VuZGlmCj4gQEAgLTcxLDYgKzc0LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0 IGh3X3R5cGVfbmFtZXNbXSA9IHsKPiDCoMKgwqDCoCBbQVZfSFdERVZJQ0VfVFlQRV9EUk1dwqDC oMKgID0gImRybSIsCj4gwqDCoMKgwqAgW0FWX0hXREVWSUNFX1RZUEVfRFhWQTJdwqAgPSAiZHh2 YTIiLAo+IMKgwqDCoMKgIFtBVl9IV0RFVklDRV9UWVBFX0QzRDExVkFdID0gImQzZDExdmEiLAo+ ICvCoMKgwqAgW0FWX0hXREVWSUNFX1RZUEVfRDNEMTJWQV0gPSAiZDNkMTJ2YSIsCj4gwqDCoMKg wqAgW0FWX0hXREVWSUNFX1RZUEVfT1BFTkNMXSA9ICJvcGVuY2wiLAo+IMKgwqDCoMKgIFtBVl9I V0RFVklDRV9UWVBFX1FTVl3CoMKgwqAgPSAicXN2IiwKPiDCoMKgwqDCoCBbQVZfSFdERVZJQ0Vf VFlQRV9WQUFQSV3CoCA9ICJ2YWFwaSIsCj4gZGlmZiAtLWdpdCBhL2xpYmF2dXRpbC9od2NvbnRl eHQuaCBiL2xpYmF2dXRpbC9od2NvbnRleHQuaAo+IGluZGV4IDdmZjA4Yzg2MDguLjJiMzM3MjFh OTcgMTAwNjQ0Cj4gLS0tIGEvbGliYXZ1dGlsL2h3Y29udGV4dC5oCj4gKysrIGIvbGliYXZ1dGls L2h3Y29udGV4dC5oCj4gQEAgLTM3LDYgKzM3LDcgQEAgZW51bSBBVkhXRGV2aWNlVHlwZSB7Cj4g wqDCoMKgwqAgQVZfSFdERVZJQ0VfVFlQRV9PUEVOQ0wsCj4gwqDCoMKgwqAgQVZfSFdERVZJQ0Vf VFlQRV9NRURJQUNPREVDLAo+IMKgwqDCoMKgIEFWX0hXREVWSUNFX1RZUEVfVlVMS0FOLAo+ICvC oMKgwqAgQVZfSFdERVZJQ0VfVFlQRV9EM0QxMlZBLAo+IMKgfTsKPiDCoAo+IMKgdHlwZWRlZiBz dHJ1Y3QgQVZIV0RldmljZUludGVybmFsIEFWSFdEZXZpY2VJbnRlcm5hbDsKPiBkaWZmIC0tZ2l0 IGEvbGliYXZ1dGlsL2h3Y29udGV4dF9kM2QxMnZhLmMgYi9saWJhdnV0aWwvaHdjb250ZXh0X2Qz ZDEydmEuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMC4uMTYwMGQ5 NGNiMAo+IC0tLSAvZGV2L251bGwKPiArKysgYi9saWJhdnV0aWwvaHdjb250ZXh0X2QzZDEydmEu Ywo+IEBAIC0wLDAgKzEsNzAzIEBACj4gKy8qCj4gKyAqIERpcmVjdDNEIDEyIEhXIGFjY2VsZXJh dGlvbi4KPiArICoKPiArICogY29weXJpZ2h0IChjKSAyMDIyLTIwMjMgV3UgSmlhbmh1YSA8dG9x c3h3QG91dGxvb2suY29tPgo+ICsgKgo+ICsgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcu Cj4gKyAqCj4gKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IKPiArICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExl c3NlciBHZW5lcmFsIFB1YmxpYwo+ICsgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKPiArICogdmVyc2lvbiAyLjEgb2YgdGhlIExp Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCj4gKyAqCj4gKyAq IEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAo+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgo+ICsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuwqAgU2VlIHRoZSBHTlUKPiArICogTGVzc2VyIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KPiArICoKPiArICogWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwo+ICsgKiBMaWNl bnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJl Cj4gKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is IEJvc3RvbiwgTUEgMDIxMTAtMTMwMQo+IFVTQQo+ICsgKi8KPiArCj4gKyNpbmNsdWRlICJjb25m aWcuaCIKPiArI2luY2x1ZGUgImNvbW1vbi5oIgo+ICsjaW5jbHVkZSAiaHdjb250ZXh0LmgiCj4g KyNpbmNsdWRlICJod2NvbnRleHRfaW50ZXJuYWwuaCIKPiArI2luY2x1ZGUgImh3Y29udGV4dF9k M2QxMnZhX2ludGVybmFsLmgiCj4gKyNpbmNsdWRlICJod2NvbnRleHRfZDNkMTJ2YS5oIgo+ICsj aW5jbHVkZSAiaW1ndXRpbHMuaCIKPiArI2luY2x1ZGUgInBpeGRlc2MuaCIKPiArI2luY2x1ZGUg InBpeGZtdC5oIgo+ICsjaW5jbHVkZSAidGhyZWFkLmgiCj4gKyNpbmNsdWRlICJjb21wYXQvdzMy ZGxmY24uaCIKPiArI2luY2x1ZGUgPGR4Z2kxXzMuaD4KPiArCj4gK3R5cGVkZWYgSFJFU1VMVChX SU5BUEkgKlBGTl9DUkVBVEVfRFhHSV9GQUNUT1JZMikoVUlOVCBGbGFncywgUkVGSUlEIHJpaWQs Cj4gdm9pZCAqKnBwRmFjdG9yeSk7Cj4gKwo+ICt0eXBlZGVmIHN0cnVjdCBEM0QxMlZBRnJhbWVz Q29udGV4dCB7Cj4gK8KgwqDCoCBJRDNEMTJSZXNvdXJjZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg KnN0YWdpbmdfZG93bmxvYWRfYnVmZmVyOwo+ICvCoMKgwqAgSUQzRDEyUmVzb3VyY2XCoMKgwqDC oMKgwqDCoMKgwqDCoMKgICpzdGFnaW5nX3VwbG9hZF9idWZmZXI7Cj4gK8KgwqDCoCBJRDNEMTJD b21tYW5kUXVldWXCoMKgwqDCoMKgwqDCoCAqY29tbWFuZF9xdWV1ZTsKPiArwqDCoMKgIElEM0Qx MkNvbW1hbmRBbGxvY2F0b3LCoMKgwqAgKmNvbW1hbmRfYWxsb2NhdG9yOwo+ICvCoMKgwqAgSUQz RDEyR3JhcGhpY3NDb21tYW5kTGlzdCAqY29tbWFuZF9saXN0Owo+ICvCoMKgwqAgQVZEM0QxMlZB U3luY0NvbnRleHTCoMKgwqDCoMKgwqAgc3luY19jdHg7Cj4gK8KgwqDCoCBVSU5UwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbHVtYV9jb21wb25lbnRfc2l6ZTsK PiArfSBEM0QxMlZBRnJhbWVzQ29udGV4dDsKPiArCj4gK3R5cGVkZWYgc3RydWN0IEQzRDEyVkFE ZXZpY2VQcml2IHsKPiArwqDCoMKgIEhBTkRMRcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgZDNkMTJsaWI7Cj4gK8KgwqDCoCBIQU5ETEXCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGR4Z2lsaWI7Cj4gK8KgwqDCoCBQRk5f Q1JFQVRFX0RYR0lfRkFDVE9SWTLCoMKgwqDCoMKgIGNyZWF0ZV9keGdpX2ZhY3RvcnkyOwo+ICvC oMKgwqAgUEZOX0QzRDEyX0NSRUFURV9ERVZJQ0XCoMKgwqDCoMKgwqAgY3JlYXRlX2RldmljZTsK PiArwqDCoMKgIFBGTl9EM0QxMl9HRVRfREVCVUdfSU5URVJGQUNFIGdldF9kZWJ1Z19pbnRlcmZh Y2U7Cj4gK30gRDNEMTJWQURldmljZVByaXY7Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHsK PiArwqDCoMKgIERYR0lfRk9STUFUIGQzZF9mb3JtYXQ7Cj4gK8KgwqDCoCBlbnVtIEFWUGl4ZWxG b3JtYXQgcGl4X2ZtdDsKPiArfSBzdXBwb3J0ZWRfZm9ybWF0c1tdID0gewo+ICvCoMKgwqAgeyBE WEdJX0ZPUk1BVF9OVjEyLCBBVl9QSVhfRk1UX05WMTIgfSwKPiArwqDCoMKgIHsgRFhHSV9GT1JN QVRfUDAxMCwgQVZfUElYX0ZNVF9QMDEwIH0sCj4gK307Cj4gKwo+ICtzdGF0aWMgdm9pZCBkM2Qx MnZhX2RlZmF1bHRfbG9jayh2b2lkICpjdHgpCj4gK3sKPiArwqDCoMKgIFdhaXRGb3JTaW5nbGVP YmplY3RFeChjdHgsIElORklOSVRFLCBGQUxTRSk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGQz ZDEydmFfZGVmYXVsdF91bmxvY2sodm9pZCAqY3R4KQo+ICt7Cj4gK8KgwqDCoCBSZWxlYXNlTXV0 ZXgoY3R4KTsKPiArfQo+ICsKPiArRFhHSV9GT1JNQVQgYXZfZDNkMTJ2YV9tYXBfc3dfdG9faHdf Zm9ybWF0KGVudW0gQVZQaXhlbEZvcm1hdCBwaXhfZm10KQo+ICt7Cj4gK8KgwqDCoCBzd2l0Y2gg KHBpeF9mbXQpIHsKPiArwqDCoMKgIGNhc2UgQVZfUElYX0ZNVF9OVjEyOnJldHVybiBEWEdJX0ZP Uk1BVF9OVjEyOwo+ICvCoMKgwqAgY2FzZSBBVl9QSVhfRk1UX1AwMTA6cmV0dXJuIERYR0lfRk9S TUFUX1AwMTA7Cj4gK8KgwqDCoCBkZWZhdWx0OsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1 cm4gRFhHSV9GT1JNQVRfVU5LTk9XTjsKPiArwqDCoMKgIH0KPiArfQo+ICsKPiArc3RhdGljIGlu dCBkM2QxMnZhX2ZlbmNlX2NvbXBsZXRpb24oQVZEM0QxMlZBU3luY0NvbnRleHQgKnBzeW5jX2N0 eCkKPiArewo+ICvCoMKgwqAgdWludDY0X3QgY29tcGxldGlvbiA9IElEM0QxMkZlbmNlX0dldENv bXBsZXRlZFZhbHVlKHBzeW5jX2N0eC0+ZmVuY2UpOwo+ICvCoMKgwqAgaWYgKGNvbXBsZXRpb24g PCBwc3luY19jdHgtPmZlbmNlX3ZhbHVlKSB7Cj4gK8KgwqDCoMKgwqDCoMKgIGlmIChGQUlMRUQo SUQzRDEyRmVuY2VfU2V0RXZlbnRPbkNvbXBsZXRpb24ocHN5bmNfY3R4LT5mZW5jZSwKPiBwc3lu Y19jdHgtPmZlbmNlX3ZhbHVlLCBwc3luY19jdHgtPmV2ZW50KSkpCj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgIFdh aXRGb3JTaW5nbGVPYmplY3RFeChwc3luY19jdHgtPmV2ZW50LCBJTkZJTklURSwgRkFMU0UpOwo+ ICvCoMKgwqAgfQo+ICsKPiArwqDCoMKgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5s aW5lIGludCBkM2QxMnZhX3dhaXRfcXVldWVfaWRsZShBVkQzRDEyVkFTeW5jQ29udGV4dCAqcHN5 bmNfY3R4LAo+IElEM0QxMkNvbW1hbmRRdWV1ZSAqY29tbWFuZF9xdWV1ZSkKPiArewo+ICvCoMKg wqAgRFhfQ0hFQ0soSUQzRDEyQ29tbWFuZFF1ZXVlX1NpZ25hbChjb21tYW5kX3F1ZXVlLCBwc3lu Y19jdHgtPmZlbmNlLAo+ICsrcHN5bmNfY3R4LT5mZW5jZV92YWx1ZSkpOwo+ICvCoMKgwqAgcmV0 dXJuIGQzZDEydmFfZmVuY2VfY29tcGxldGlvbihwc3luY19jdHgpOwo+ICsKPiArZmFpbDoKPiAr wqDCoMKgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgZDNk MTJ2YV9jcmVhdGVfc3RhZ2luZ19idWZmZXJfcmVzb3VyY2UoQVZIV0ZyYW1lc0NvbnRleHQgKmN0 eCwKPiBEM0QxMl9SRVNPVVJDRV9TVEFURVMgc3RhdGVzLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBJRDNEMTJSZXNvdXJjZQo+ICoqcHBSZXNvdXJjZSwgaW50 IGRvd25sb2FkKQo+ICt7Cj4gK8KgwqDCoCBBVkQzRDEyVkFEZXZpY2VDb250ZXh0ICpkZXZpY2Vf aHdjdHggPSBjdHgtPmRldmljZV9jdHgtPmh3Y3R4Owo+ICvCoMKgwqAgRDNEMTJWQUZyYW1lc0Nv bnRleHTCoMKgICpzwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA9IGN0eC0+aW50ZXJuYWwtPnByaXY7 Cj4gK8KgwqDCoCBEM0QxMl9IRUFQX1BST1BFUlRJRVMgcHJvcHMgPSB7IC5UeXBlID0gZG93bmxv YWQgPwo+IEQzRDEyX0hFQVBfVFlQRV9SRUFEQkFDSyA6IEQzRDEyX0hFQVBfVFlQRV9VUExPQUQg fTsKPiArwqDCoMKgIEQzRDEyX1JFU09VUkNFX0RFU0MgZGVzYyA9IHsKPiArwqDCoMKgwqDCoMKg wqAgLkRpbWVuc2lvbsKgwqDCoMKgwqDCoMKgwqDCoCA9IEQzRDEyX1JFU09VUkNFX0RJTUVOU0lP Tl9CVUZGRVIsCj4gK8KgwqDCoMKgwqDCoMKgIC5BbGlnbm1lbnTCoMKgwqDCoMKgwqDCoMKgwqAg PSAwLAo+ICvCoMKgwqDCoMKgwqDCoCAuV2lkdGjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA9 IHMtPmx1bWFfY29tcG9uZW50X3NpemUgKyAocy0KPiA+bHVtYV9jb21wb25lbnRfc2l6ZSA+PiAx KSwKPiArwqDCoMKgwqDCoMKgwqAgLkhlaWdodMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA9IDEs Cj4gK8KgwqDCoMKgwqDCoMKgIC5EZXB0aE9yQXJyYXlTaXplwqDCoCA9IDEsCj4gK8KgwqDCoMKg wqDCoMKgIC5NaXBMZXZlbHPCoMKgwqDCoMKgwqDCoMKgwqAgPSAxLAo+ICvCoMKgwqDCoMKgwqDC oCAuRm9ybWF0wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgID0gRFhHSV9GT1JNQVRfVU5LTk9XTiwK PiArwqDCoMKgwqDCoMKgwqAgLlNhbXBsZURlc2PCoMKgwqDCoMKgwqDCoMKgID0geyAuQ291bnQg PSAxLCAuUXVhbGl0eSA9IDAgfSwKPiArwqDCoMKgwqDCoMKgwqAgLkxheW91dMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCA9IEQzRDEyX1RFWFRVUkVfTEFZT1VUX1JPV19NQUpPUiwKPiArwqDCoMKg wqDCoMKgwqAgLkZsYWdzwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgPSBEM0QxMl9SRVNPVVJD RV9GTEFHX05PTkUsCj4gK8KgwqDCoCB9Owo+ICsKPiArwqDCoMKgIGlmIChGQUlMRUQoSUQzRDEy RGV2aWNlX0NyZWF0ZUNvbW1pdHRlZFJlc291cmNlKGRldmljZV9od2N0eC0+ZGV2aWNlLAo+ICZw cm9wcywgRDNEMTJfSEVBUF9GTEFHX05PTkUsICZkZXNjLAo+ICvCoMKgwqDCoMKgwqDCoCBzdGF0 ZXMsIE5VTEwsICZJSURfSUQzRDEyUmVzb3VyY2UsICh2b2lkICoqKXBwUmVzb3VyY2UpKSkgewo+ ICvCoMKgwqDCoMKgwqDCoCBhdl9sb2coY3R4LCBBVl9MT0dfRVJST1IsICJDb3VsZCBub3QgY3Jl YXRlIHRoZSBzdGFnaW5nIGJ1ZmZlcgo+IHJlc291cmNlXG4iKTsKPiArwqDCoMKgwqDCoMKgwqAg cmV0dXJuIEFWRVJST1JfVU5LTk9XTjsKPiArwqDCoMKgIH0KPiArCj4gK8KgwqDCoCByZXR1cm4g MDsKPiArfQo+ICsKPiArc3RhdGljIGludCBkM2QxMnZhX2NyZWF0ZV9oZWxwZXJfb2JqZWN0cyhB VkhXRnJhbWVzQ29udGV4dCAqY3R4KQo+ICt7Cj4gK8KgwqDCoCBBVkQzRDEyVkFEZXZpY2VDb250 ZXh0ICpkZXZpY2VfaHdjdHggPSBjdHgtPmRldmljZV9jdHgtPmh3Y3R4Owo+ICvCoMKgwqAgQVZE M0QxMlZBRnJhbWVzQ29udGV4dCAqZnJhbWVzX2h3Y3R4ID0gY3R4LT5od2N0eDsKPiArwqDCoMKg IEQzRDEyVkFGcmFtZXNDb250ZXh0wqDCoCAqc8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgPSBjdHgt PmludGVybmFsLT5wcml2Owo+ICsKPiArwqDCoMKgIEQzRDEyX0NPTU1BTkRfUVVFVUVfREVTQyBx dWV1ZV9kZXNjID0gewo+ICvCoMKgwqDCoMKgwqDCoCAuVHlwZcKgwqDCoMKgID0gRDNEMTJfQ09N TUFORF9MSVNUX1RZUEVfQ09QWSwKPiArwqDCoMKgwqDCoMKgwqAgLlByaW9yaXR5ID0gMCwKPiAr wqDCoMKgwqDCoMKgwqAgLk5vZGVNYXNrID0gMCwKPiArwqDCoMKgIH07Cj4gKwo+ICvCoMKgwqAg cy0+bHVtYV9jb21wb25lbnRfc2l6ZSA9IEZGQUxJR04oY3R4LT53aWR0aCAqIChmcmFtZXNfaHdj dHgtPmZvcm1hdCA9PQo+IERYR0lfRk9STUFUX1AwMTAgPyAyIDogMSksCj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBEM0QxMl9URVhUVVJFX0RBVEFfUElUQ0hfQUxJR05NRU5UKSAqCj4gY3R4LT5oZWlnaHQ7 Cj4gKwo+ICvCoMKgwqAgRFhfQ0hFQ0soSUQzRDEyRGV2aWNlX0NyZWF0ZUZlbmNlKGRldmljZV9o d2N0eC0+ZGV2aWNlLCAwLAo+IEQzRDEyX0ZFTkNFX0ZMQUdfTk9ORSwKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgJklJRF9JRDNEMTJGZW5jZSwgKHZvaWQgKiopJnMtCj4gPnN5bmNfY3R4LmZlbmNlKSk7 Cj4gKwo+ICvCoMKgwqAgcy0+c3luY19jdHguZXZlbnQgPSBDcmVhdGVFdmVudChOVUxMLCBGQUxT RSwgRkFMU0UsIE5VTEwpOwo+ICvCoMKgwqAgaWYgKCFzLT5zeW5jX2N0eC5ldmVudCkKPiArwqDC oMKgwqDCoMKgwqAgZ290byBmYWlsOwo+ICsKPiArwqDCoMKgIERYX0NIRUNLKElEM0QxMkRldmlj ZV9DcmVhdGVDb21tYW5kUXVldWUoZGV2aWNlX2h3Y3R4LT5kZXZpY2UsCj4gJnF1ZXVlX2Rlc2Ms Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmSUlEX0lEM0QxMkNvbW1hbmRRdWV1ZSwgKHZv aWQgKiopJnMtPmNvbW1hbmRfcXVldWUpKTsKPiArCj4gK8KgwqDCoCBEWF9DSEVDSyhJRDNEMTJE ZXZpY2VfQ3JlYXRlQ29tbWFuZEFsbG9jYXRvcihkZXZpY2VfaHdjdHgtPmRldmljZSwKPiBxdWV1 ZV9kZXNjLlR5cGUsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmSUlEX0lEM0QxMkNvbW1h bmRBbGxvY2F0b3IsICh2b2lkICoqKSZzLT5jb21tYW5kX2FsbG9jYXRvcikpOwo+ICsKPiArwqDC oMKgIERYX0NIRUNLKElEM0QxMkRldmljZV9DcmVhdGVDb21tYW5kTGlzdChkZXZpY2VfaHdjdHgt PmRldmljZSwgMCwKPiBxdWV1ZV9kZXNjLlR5cGUsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBzLT5jb21tYW5kX2FsbG9jYXRvciwgTlVMTCwgJklJRF9JRDNEMTJHcmFwaGljc0NvbW1hbmRM aXN0LAo+ICh2b2lkICoqKSZzLT5jb21tYW5kX2xpc3QpKTsKPiArCj4gK8KgwqDCoCBEWF9DSEVD SyhJRDNEMTJHcmFwaGljc0NvbW1hbmRMaXN0X0Nsb3NlKHMtPmNvbW1hbmRfbGlzdCkpOwo+ICsK PiArwqDCoMKgIElEM0QxMkNvbW1hbmRRdWV1ZV9FeGVjdXRlQ29tbWFuZExpc3RzKHMtPmNvbW1h bmRfcXVldWUsIDEsCj4gKElEM0QxMkNvbW1hbmRMaXN0ICoqKSZzLT5jb21tYW5kX2xpc3QpOwo+ ICsKPiArwqDCoMKgIHJldHVybiBkM2QxMnZhX3dhaXRfcXVldWVfaWRsZSgmcy0+c3luY19jdHgs IHMtPmNvbW1hbmRfcXVldWUpOwo+ICsKPiArZmFpbDoKPiArwqDCoMKgIHJldHVybiBBVkVSUk9S KEVJTlZBTCk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGQzZDEydmFfZnJhbWVzX3VuaW5pdChB VkhXRnJhbWVzQ29udGV4dCAqY3R4KQo+ICt7Cj4gK8KgwqDCoCBBVkQzRDEyVkFGcmFtZXNDb250 ZXh0ICpmcmFtZXNfaHdjdHggPSBjdHgtPmh3Y3R4Owo+ICvCoMKgwqAgRDNEMTJWQUZyYW1lc0Nv bnRleHTCoMKgICpzwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA9IGN0eC0+aW50ZXJuYWwtPnByaXY7 Cj4gKwo+ICvCoMKgwqAgRDNEMTJfT0JKRUNUX1JFTEVBU0Uocy0+c3luY19jdHguZmVuY2UpOwo+ ICvCoMKgwqAgaWYgKHMtPnN5bmNfY3R4LmV2ZW50KQo+ICvCoMKgwqDCoMKgwqDCoCBDbG9zZUhh bmRsZShzLT5zeW5jX2N0eC5ldmVudCk7Cj4gKwo+ICvCoMKgwqAgRDNEMTJfT0JKRUNUX1JFTEVB U0Uocy0+c3RhZ2luZ19kb3dubG9hZF9idWZmZXIpOwo+ICvCoMKgwqAgRDNEMTJfT0JKRUNUX1JF TEVBU0Uocy0+c3RhZ2luZ191cGxvYWRfYnVmZmVyKTsKPiArwqDCoMKgIEQzRDEyX09CSkVDVF9S RUxFQVNFKHMtPmNvbW1hbmRfYWxsb2NhdG9yKTsKPiArwqDCoMKgIEQzRDEyX09CSkVDVF9SRUxF QVNFKHMtPmNvbW1hbmRfbGlzdCk7Cj4gK8KgwqDCoCBEM0QxMl9PQkpFQ1RfUkVMRUFTRShzLT5j b21tYW5kX3F1ZXVlKTsKPiArfQo+ICsKPiArc3RhdGljIGludCBkM2QxMnZhX2ZyYW1lc19nZXRf Y29uc3RyYWludHMoQVZIV0RldmljZUNvbnRleHQgKmN0eCwgY29uc3Qgdm9pZAo+ICpod2NvbmZp ZywgQVZIV0ZyYW1lc0NvbnN0cmFpbnRzICpjb25zdHJhaW50cykKPiArewo+ICvCoMKgwqAgSFJF U1VMVCBocjsKPiArwqDCoMKgIGludCBuYl9zd19mb3JtYXRzID0gMDsKPiArwqDCoMKgIEFWRDNE MTJWQURldmljZUNvbnRleHQgKmRldmljZV9od2N0eCA9IGN0eC0+aHdjdHg7Cj4gKwo+ICvCoMKg wqAgY29uc3RyYWludHMtPnZhbGlkX3N3X2Zvcm1hdHMgPQo+IGF2X21hbGxvY19hcnJheShGRl9B UlJBWV9FTEVNUyhzdXBwb3J0ZWRfZm9ybWF0cykgKyAxLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc2l6ZW9mKCpjb25zdHJhaW50cy0KPiA+dmFsaWRf c3dfZm9ybWF0cykpOwo+ICvCoMKgwqAgaWYgKCFjb25zdHJhaW50cy0+dmFsaWRfc3dfZm9ybWF0 cykKPiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKPiArCj4gK8KgwqDC oCBmb3IgKGludCBpID0gMDsgaSA8IEZGX0FSUkFZX0VMRU1TKHN1cHBvcnRlZF9mb3JtYXRzKTsg aSsrKSB7Cj4gK8KgwqDCoMKgwqDCoMKgIEQzRDEyX0ZFQVRVUkVfREFUQV9GT1JNQVRfU1VQUE9S VCBmb3JtYXRfc3VwcG9ydCA9IHsKPiBzdXBwb3J0ZWRfZm9ybWF0c1tpXS5kM2RfZm9ybWF0IH07 Cj4gK8KgwqDCoMKgwqDCoMKgIGhyID0gSUQzRDEyRGV2aWNlX0NoZWNrRmVhdHVyZVN1cHBvcnQo ZGV2aWNlX2h3Y3R4LT5kZXZpY2UsCj4gRDNEMTJfRkVBVFVSRV9GT1JNQVRfU1VQUE9SVCwgJmZv cm1hdF9zdXBwb3J0LCBzaXplb2YoZm9ybWF0X3N1cHBvcnQpKTsKPiArwqDCoMKgwqDCoMKgwqAg aWYgKFNVQ0NFRURFRChocikgJiYgKGZvcm1hdF9zdXBwb3J0LlN1cHBvcnQxICYKPiBEM0QxMl9G T1JNQVRfU1VQUE9SVDFfVEVYVFVSRTJEKSkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25z dHJhaW50cy0+dmFsaWRfc3dfZm9ybWF0c1tuYl9zd19mb3JtYXRzKytdID0KPiBzdXBwb3J0ZWRf Zm9ybWF0c1tpXS5waXhfZm10Owo+ICvCoMKgwqAgfQo+ICvCoMKgwqAgY29uc3RyYWludHMtPnZh bGlkX3N3X2Zvcm1hdHNbbmJfc3dfZm9ybWF0c10gPSBBVl9QSVhfRk1UX05PTkU7Cj4gKwo+ICvC oMKgwqAgY29uc3RyYWludHMtPnZhbGlkX2h3X2Zvcm1hdHMgPSBhdl9tYWxsb2NfYXJyYXkoMiwg c2l6ZW9mKCpjb25zdHJhaW50cy0KPiA+dmFsaWRfaHdfZm9ybWF0cykpOwo+ICvCoMKgwqAgaWYg KCFjb25zdHJhaW50cy0+dmFsaWRfaHdfZm9ybWF0cykKPiArwqDCoMKgwqDCoMKgwqAgcmV0dXJu IEFWRVJST1IoRU5PTUVNKTsKPiArCj4gK8KgwqDCoCBjb25zdHJhaW50cy0+dmFsaWRfaHdfZm9y bWF0c1swXSA9IEFWX1BJWF9GTVRfRDNEMTI7Cj4gK8KgwqDCoCBjb25zdHJhaW50cy0+dmFsaWRf aHdfZm9ybWF0c1sxXSA9IEFWX1BJWF9GTVRfTk9ORTsKPiArCj4gK8KgwqDCoCByZXR1cm4gMDsK PiArfQo+ICsKPiArc3RhdGljIHZvaWQgZnJlZV90ZXh0dXJlKHZvaWQgKm9wYXF1ZSwgdWludDhf dCAqZGF0YSkKPiArewo+ICvCoMKgwqAgQVZEM0QxMlZBRnJhbWUgKmZyYW1lID0gKEFWRDNEMTJW QUZyYW1lICopZGF0YTsKPiArCj4gK8KgwqDCoCBEM0QxMl9PQkpFQ1RfUkVMRUFTRShmcmFtZS0+ dGV4dHVyZSk7Cj4gK8KgwqDCoCBEM0QxMl9PQkpFQ1RfUkVMRUFTRShmcmFtZS0+c3luY19jdHgu ZmVuY2UpOwo+ICvCoMKgwqAgaWYgKGZyYW1lLT5zeW5jX2N0eC5ldmVudCkKPiArwqDCoMKgwqDC oMKgwqAgQ2xvc2VIYW5kbGUoZnJhbWUtPnN5bmNfY3R4LmV2ZW50KTsKPiArCj4gK8KgwqDCoCBh dl9mcmVlcCgmZGF0YSk7Cj4gK30KPiArCj4gK3N0YXRpYyBBVkJ1ZmZlclJlZiAqZDNkMTJ2YV9w b29sX2FsbG9jKHZvaWQgKm9wYXF1ZSwgc2l6ZV90IHNpemUpCj4gK3sKPiArwqDCoMKgIEFWSFdG cmFtZXNDb250ZXh0wqDCoMKgwqDCoCAqY3R4wqDCoMKgwqDCoMKgwqDCoMKgID0gKEFWSFdGcmFt ZXNDb250ZXh0ICopb3BhcXVlOwo+ICvCoMKgwqAgQVZEM0QxMlZBRnJhbWVzQ29udGV4dCAqaHdj dHjCoMKgwqDCoMKgwqDCoCA9IGN0eC0+aHdjdHg7Cj4gK8KgwqDCoCBBVkQzRDEyVkFEZXZpY2VD b250ZXh0ICpkZXZpY2VfaHdjdHggPSBjdHgtPmRldmljZV9jdHgtPmh3Y3R4Owo+ICsKPiArwqDC oMKgIEFWQnVmZmVyUmVmICpidWY7Cj4gK8KgwqDCoCBBVkQzRDEyVkFGcmFtZSAqZnJhbWU7Cj4g K8KgwqDCoCBEM0QxMl9IRUFQX1BST1BFUlRJRVMgcHJvcHMgPSB7IC5UeXBlID0gRDNEMTJfSEVB UF9UWVBFX0RFRkFVTFQgfTsKPiArwqDCoMKgIEQzRDEyX1JFU09VUkNFX0RFU0MgZGVzYyA9IHsK PiArwqDCoMKgwqDCoMKgwqAgLkRpbWVuc2lvbsKgwqDCoMKgwqDCoMKgID0gRDNEMTJfUkVTT1VS Q0VfRElNRU5TSU9OX1RFWFRVUkUyRCwKPiArwqDCoMKgwqDCoMKgwqAgLkFsaWdubWVudMKgwqDC oMKgwqDCoMKgID0gMCwKPiArwqDCoMKgwqDCoMKgwqAgLldpZHRowqDCoMKgwqDCoMKgwqDCoMKg wqDCoCA9IGN0eC0+d2lkdGgsCj4gK8KgwqDCoMKgwqDCoMKgIC5IZWlnaHTCoMKgwqDCoMKgwqDC oMKgwqDCoCA9IGN0eC0+aGVpZ2h0LAo+ICvCoMKgwqDCoMKgwqDCoCAuRGVwdGhPckFycmF5U2l6 ZSA9IDEsCj4gK8KgwqDCoMKgwqDCoMKgIC5NaXBMZXZlbHPCoMKgwqDCoMKgwqDCoCA9IDEsCj4g K8KgwqDCoMKgwqDCoMKgIC5Gb3JtYXTCoMKgwqDCoMKgwqDCoMKgwqDCoCA9IGh3Y3R4LT5mb3Jt YXQsCj4gK8KgwqDCoMKgwqDCoMKgIC5TYW1wbGVEZXNjwqDCoMKgwqDCoMKgID0gey5Db3VudCA9 IDEsIC5RdWFsaXR5ID0gMCB9LAo+ICvCoMKgwqDCoMKgwqDCoCAuTGF5b3V0wqDCoMKgwqDCoMKg wqDCoMKgwqAgPSBEM0QxMl9URVhUVVJFX0xBWU9VVF9VTktOT1dOLAo+ICvCoMKgwqDCoMKgwqDC oCAuRmxhZ3PCoMKgwqDCoMKgwqDCoMKgwqDCoMKgID0gRDNEMTJfUkVTT1VSQ0VfRkxBR19OT05F LAo+ICvCoMKgwqAgfTsKPiArCj4gK8KgwqDCoCBmcmFtZSA9IGF2X21hbGxvY3ooc2l6ZW9mKEFW RDNEMTJWQUZyYW1lKSk7Cj4gK8KgwqDCoCBpZiAoIWZyYW1lKQo+ICvCoMKgwqDCoMKgwqDCoCBy ZXR1cm4gTlVMTDsKPiArCj4gK8KgwqDCoCBpZiAoRkFJTEVEKElEM0QxMkRldmljZV9DcmVhdGVD b21taXR0ZWRSZXNvdXJjZShkZXZpY2VfaHdjdHgtPmRldmljZSwKPiAmcHJvcHMsIEQzRDEyX0hF QVBfRkxBR19OT05FLCAmZGVzYywKPiArwqDCoMKgwqDCoMKgwqAgRDNEMTJfUkVTT1VSQ0VfU1RB VEVfQ09NTU9OLCBOVUxMLCAmSUlEX0lEM0QxMlJlc291cmNlLCAodm9pZAo+ICoqKSZmcmFtZS0+ dGV4dHVyZSkpKSB7Cj4gK8KgwqDCoMKgwqDCoMKgIGF2X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwg IkNvdWxkIG5vdCBjcmVhdGUgdGhlIHRleHR1cmVcbiIpOwo+ICvCoMKgwqDCoMKgwqDCoCBnb3Rv IGZhaWw7Cj4gK8KgwqDCoCB9Cj4gKwo+ICvCoMKgwqAgRFhfQ0hFQ0soSUQzRDEyRGV2aWNlX0Ny ZWF0ZUZlbmNlKGRldmljZV9od2N0eC0+ZGV2aWNlLCAwLAo+IEQzRDEyX0ZFTkNFX0ZMQUdfTk9O RSwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJklJRF9JRDNEMTJGZW5jZSwgKHZvaWQgKiopJmZyYW1l LQo+ID5zeW5jX2N0eC5mZW5jZSkpOwo+ICsKPiArwqDCoMKgIGZyYW1lLT5zeW5jX2N0eC5ldmVu dCA9IENyZWF0ZUV2ZW50KE5VTEwsIEZBTFNFLCBGQUxTRSwgTlVMTCk7Cj4gK8KgwqDCoCBpZiAo IWZyYW1lLT5zeW5jX2N0eC5ldmVudCkKPiArwqDCoMKgwqDCoMKgwqAgZ290byBmYWlsOwo+ICsK PiArwqDCoMKgIGJ1ZiA9IGF2X2J1ZmZlcl9jcmVhdGUoKHVpbnQ4X3QgKilmcmFtZSwgc2l6ZW9m KGZyYW1lKSwgZnJlZV90ZXh0dXJlLAo+IE5VTEwsIDApOwo+ICvCoMKgwqAgaWYgKCFidWYpCj4g K8KgwqDCoMKgwqDCoMKgIGdvdG8gZmFpbDsKPiArCj4gK8KgwqDCoCByZXR1cm4gYnVmOwo+ICsK PiArZmFpbDoKPiArwqDCoMKgIGZyZWVfdGV4dHVyZShOVUxMLCAodWludDhfdCAqKWZyYW1lKTsK PiArwqDCoMKgIHJldHVybiBOVUxMOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGQzZDEydmFfZnJh bWVzX2luaXQoQVZIV0ZyYW1lc0NvbnRleHQgKmN0eCkKPiArewo+ICvCoMKgwqAgQVZEM0QxMlZB RnJhbWVzQ29udGV4dCAqaHdjdHjCoMKgwqDCoMKgwqDCoCA9IGN0eC0+aHdjdHg7Cj4gK8KgwqDC oCBBVkQzRDEyVkFEZXZpY2VDb250ZXh0ICpkZXZpY2VfaHdjdHggPSBjdHgtPmRldmljZV9jdHgt Pmh3Y3R4Owo+ICvCoMKgwqAgRDNEMTJWQUZyYW1lc0NvbnRleHTCoMKgICpzwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCA9IGN0eC0+aW50ZXJuYWwtPnByaXY7Cj4gK8KgwqDCoCBpbnQgaTsKPiArCj4g K8KgwqDCoCBmb3IgKGkgPSAwOyBpIDwgRkZfQVJSQVlfRUxFTVMoc3VwcG9ydGVkX2Zvcm1hdHMp OyBpKyspIHsKPiArwqDCoMKgwqDCoMKgwqAgaWYgKGN0eC0+c3dfZm9ybWF0ID09IHN1cHBvcnRl ZF9mb3JtYXRzW2ldLnBpeF9mbXQpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoaHdj dHgtPmZvcm1hdCAhPSBEWEdJX0ZPUk1BVF9VTktOT1dOICYmCj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBod2N0eC0+Zm9ybWF0ICE9IHN1cHBvcnRlZF9mb3JtYXRzW2ldLmQzZF9m b3JtYXQpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhdl9sb2coY3R4LCBBVl9M T0dfV0FSTklORywgIkluY29tcGF0aWJsZSBEWEdJIGZvcm1hdAo+IHByb3ZpZGVkIGJ5IHVzZXIs IHdpbGwgYmUgb3ZlcmlkZWRcbiIpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGh3Y3R4LT5m b3JtYXQgPSBzdXBwb3J0ZWRfZm9ybWF0c1tpXS5kM2RfZm9ybWF0Owo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGJyZWFrOwo+ICvCoMKgwqDCoMKgwqDCoCB9Cj4gK8KgwqDCoCB9Cj4gK8KgwqDC oCBpZiAoaSA9PSBGRl9BUlJBWV9FTEVNUyhzdXBwb3J0ZWRfZm9ybWF0cykpIHsKPiArwqDCoMKg wqDCoMKgwqAgYXZfbG9nKGN0eCwgQVZfTE9HX0VSUk9SLCAiVW5zdXBwb3J0ZWQgcGl4ZWwgZm9y bWF0OiAlc1xuIiwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhdl9nZXRfcGl4X2Zt dF9uYW1lKGN0eC0+c3dfZm9ybWF0KSk7Cj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBBVkVSUk9S KEVJTlZBTCk7Cj4gK8KgwqDCoCB9Cj4gKwo+ICvCoMKgwqAgY3R4LT5pbnRlcm5hbC0+cG9vbF9p bnRlcm5hbCA9Cj4gYXZfYnVmZmVyX3Bvb2xfaW5pdDIoc2l6ZW9mKEFWRDNEMTJWQUZyYW1lKSwK PiArwqDCoMKgwqDCoMKgwqAgY3R4LCBkM2QxMnZhX3Bvb2xfYWxsb2MsIE5VTEwpOwo+ICsKPiAr wqDCoMKgIGlmICghY3R4LT5pbnRlcm5hbC0+cG9vbF9pbnRlcm5hbCkKPiArwqDCoMKgwqDCoMKg wqAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKPiArCj4gK8KgwqDCoCByZXR1cm4gMDsKPiArfQo+ ICsKPiArc3RhdGljIGludCBkM2QxMnZhX2dldF9idWZmZXIoQVZIV0ZyYW1lc0NvbnRleHQgKmN0 eCwgQVZGcmFtZSAqZnJhbWUpCj4gK3sKPiArwqDCoMKgIGludCByZXQ7Cj4gKwo+ICvCoMKgwqAg ZnJhbWUtPmJ1ZlswXSA9IGF2X2J1ZmZlcl9wb29sX2dldChjdHgtPnBvb2wpOwo+ICvCoMKgwqAg aWYgKCFmcmFtZS0+YnVmWzBdKQo+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gQVZFUlJPUihFTk9N RU0pOwo+ICsKPiArwqDCoMKgIHJldCA9IGF2X2ltYWdlX2ZpbGxfYXJyYXlzKGZyYW1lLT5kYXRh LCBmcmFtZS0+bGluZXNpemUsIE5VTEwsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjdHgtPnN3X2Zvcm1hdCwgY3R4LT53aWR0 aCwgY3R4LT5oZWlnaHQsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBEM0QxMl9URVhUVVJFX0RBVEFfUElUQ0hfQUxJR05NRU5U KTsKPiArwqDCoMKgIGlmIChyZXQgPCAwKQo+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Owo+ ICsKPiArwqDCoMKgIGZyYW1lLT5kYXRhWzBdID0gZnJhbWUtPmJ1ZlswXS0+ZGF0YTsKPiArwqDC oMKgIGZyYW1lLT5mb3JtYXTCoCA9IEFWX1BJWF9GTVRfRDNEMTI7Cj4gK8KgwqDCoCBmcmFtZS0+ d2lkdGjCoMKgID0gY3R4LT53aWR0aDsKPiArwqDCoMKgIGZyYW1lLT5oZWlnaHTCoCA9IGN0eC0+ aGVpZ2h0Owo+ICsKPiArwqDCoMKgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGQz ZDEydmFfdHJhbnNmZXJfZ2V0X2Zvcm1hdHMoQVZIV0ZyYW1lc0NvbnRleHQgKmN0eCwKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGVudW0gQVZIV0ZyYW1lVHJhbnNmZXJEaXJlY3Rpb24gZGlyLAo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZW51bSBBVlBpeGVsRm9ybWF0ICoqZm9ybWF0cykKPiAr ewo+ICvCoMKgwqAgRDNEMTJWQUZyYW1lc0NvbnRleHQgKnMgPSBjdHgtPmludGVybmFsLT5wcml2 Owo+ICvCoMKgwqAgZW51bSBBVlBpeGVsRm9ybWF0ICpmbXRzOwo+ICsKPiArwqDCoMKgIGZtdHMg PSBhdl9tYWxsb2NfYXJyYXkoMiwgc2l6ZW9mKCpmbXRzKSk7Cj4gK8KgwqDCoCBpZiAoIWZtdHMp Cj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7Cj4gKwo+ICvCoMKgwqAg Zm10c1swXSA9IGN0eC0+c3dfZm9ybWF0Owo+ICvCoMKgwqAgZm10c1sxXSA9IEFWX1BJWF9GTVRf Tk9ORTsKPiArCj4gK8KgwqDCoCAqZm9ybWF0cyA9IGZtdHM7Cj4gKwo+ICvCoMKgwqAgcmV0dXJu IDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgZDNkMTJ2YV90cmFuc2Zlcl9kYXRhKEFWSFdGcmFt ZXNDb250ZXh0ICpjdHgsIEFWRnJhbWUgKmRzdCwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBBVkZyYW1lICpz cmMpCj4gK3sKPiArwqDCoMKgIEFWRDNEMTJWQURldmljZUNvbnRleHQgKmh3Y3R4wqDCoMKgwqDC oMKgwqAgPSBjdHgtPmRldmljZV9jdHgtPmh3Y3R4Owo+ICvCoMKgwqAgQVZEM0QxMlZBRnJhbWVz Q29udGV4dCAqZnJhbWVzX2h3Y3R4ID0gY3R4LT5od2N0eDsKPiArwqDCoMKgIEQzRDEyVkFGcmFt ZXNDb250ZXh0wqDCoCAqc8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgPSBjdHgtPmludGVybmFsLT5w cml2Owo+ICsKPiArwqDCoMKgIGludCByZXQ7Cj4gK8KgwqDCoCBpbnQgZG93bmxvYWQgPSBzcmMt PmZvcm1hdCA9PSBBVl9QSVhfRk1UX0QzRDEyOwo+ICvCoMKgwqAgY29uc3QgQVZGcmFtZSAqZnJh bWUgPSBkb3dubG9hZCA/IHNyYyA6IGRzdDsKPiArwqDCoMKgIGNvbnN0IEFWRnJhbWUgKm90aGVy ID0gZG93bmxvYWQgPyBkc3QgOiBzcmM7Cj4gKwo+ICvCoMKgwqAgQVZEM0QxMlZBRnJhbWUgKmYg PSAoQVZEM0QxMlZBRnJhbWUgKilmcmFtZS0+ZGF0YVswXTsKPiArwqDCoMKgIElEM0QxMlJlc291 cmNlICp0ZXh0dXJlID0gKElEM0QxMlJlc291cmNlICopZi0+dGV4dHVyZTsKPiArCj4gK8KgwqDC oCB1aW50OF90ICptYXBwZWRfZGF0YTsKPiArwqDCoMKgIHVpbnQ4X3QgKmRhdGFbNF07Cj4gK8Kg wqDCoCBpbnQgbGluZXNpemVzWzRdOwo+ICsKPiArwqDCoMKgIEQzRDEyX1RFWFRVUkVfQ09QWV9M T0NBVElPTiBzdGFnaW5nX3lfbG9jYXRpb27CoCA9IHsgMCB9Owo+ICvCoMKgwqAgRDNEMTJfVEVY VFVSRV9DT1BZX0xPQ0FUSU9OIHN0YWdpbmdfdXZfbG9jYXRpb24gPSB7IDAgfTsKPiArCj4gK8Kg wqDCoCBEM0QxMl9URVhUVVJFX0NPUFlfTE9DQVRJT04gdGV4dHVyZV95X2xvY2F0aW9uID0gewo+ ICvCoMKgwqDCoMKgwqDCoCAucFJlc291cmNlwqDCoMKgwqDCoMKgwqAgPSB0ZXh0dXJlLAo+ICvC oMKgwqDCoMKgwqDCoCAuVHlwZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA9IEQzRDEyX1RFWFRV UkVfQ09QWV9UWVBFX1NVQlJFU09VUkNFX0lOREVYLAo+ICvCoMKgwqDCoMKgwqDCoCAuU3VicmVz b3VyY2VJbmRleCA9IDAsCj4gK8KgwqDCoCB9Owo+ICsKPiArwqDCoMKgIEQzRDEyX1RFWFRVUkVf Q09QWV9MT0NBVElPTiB0ZXh0dXJlX3V2X2xvY2F0aW9uID0gewo+ICvCoMKgwqDCoMKgwqDCoCAu cFJlc291cmNlwqDCoMKgwqDCoMKgwqAgPSB0ZXh0dXJlLAo+ICvCoMKgwqDCoMKgwqDCoCAuVHlw ZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA9IEQzRDEyX1RFWFRVUkVfQ09QWV9UWVBFX1NVQlJF U09VUkNFX0lOREVYLAo+ICvCoMKgwqDCoMKgwqDCoCAuU3VicmVzb3VyY2VJbmRleCA9IDEsCj4g K8KgwqDCoCB9Owo+ICsKPiArwqDCoMKgIEQzRDEyX1JFU09VUkNFX0JBUlJJRVIgYmFycmllciA9 IHsKPiArwqDCoMKgwqDCoMKgwqAgLlR5cGXCoCA9IEQzRDEyX1JFU09VUkNFX0JBUlJJRVJfVFlQ RV9UUkFOU0lUSU9OLAo+ICvCoMKgwqDCoMKgwqDCoCAuRmxhZ3MgPSBEM0QxMl9SRVNPVVJDRV9C QVJSSUVSX0ZMQUdfTk9ORSwKPiArwqDCoMKgwqDCoMKgwqAgLlRyYW5zaXRpb24gPSB7Cj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqAgLnBSZXNvdXJjZcKgwqAgPSB0ZXh0dXJlLAo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIC5TdGF0ZUJlZm9yZSA9IEQzRDEyX1JFU09VUkNFX1NUQVRFX0NPTU1P TiwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAuU3RhdGVBZnRlcsKgID0gZG93bmxvYWQgPyBE M0QxMl9SRVNPVVJDRV9TVEFURV9DT1BZX1NPVVJDRSA6Cj4gRDNEMTJfUkVTT1VSQ0VfU1RBVEVf Q09QWV9ERVNULAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5TdWJyZXNvdXJjZSA9IEQzRDEy X1JFU09VUkNFX0JBUlJJRVJfQUxMX1NVQlJFU09VUkNFUywKPiArwqDCoMKgwqDCoMKgwqAgfSwK PiArwqDCoMKgIH07Cj4gKwo+ICvCoMKgwqAgaWYgKGZyYW1lLT5od19mcmFtZXNfY3R4LT5kYXRh ICE9ICh1aW50OF90ICopY3R4IHx8IG90aGVyLT5mb3JtYXQgIT0gY3R4LQo+ID5zd19mb3JtYXQp Cj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7Cj4gKwo+ICvCoMKgwqAg aHdjdHgtPmxvY2soaHdjdHgtPmxvY2tfY3R4KTsKPiArCj4gK8KgwqDCoCBpZiAoIXMtPmNvbW1h bmRfcXVldWUpIHsKPiArwqDCoMKgwqDCoMKgwqAgcmV0ID0gZDNkMTJ2YV9jcmVhdGVfaGVscGVy X29iamVjdHMoY3R4KTsKPiArwqDCoMKgwqDCoMKgwqAgaWYgKHJldCA8IDApCj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgZ290byBmYWlsOwo+ICvCoMKgwqAgfQo+ICsKPiArwqDCoMKgIGZvciAo aW50IGkgPSAwOyBpIDwgNDsgaSsrKQo+ICvCoMKgwqDCoMKgwqDCoCBsaW5lc2l6ZXNbaV0gPSBG RkFMSUdOKGZyYW1lLT53aWR0aCAqIChmcmFtZXNfaHdjdHgtPmZvcm1hdCA9PQo+IERYR0lfRk9S TUFUX1AwMTAgPyAyIDogMSksCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBEM0QxMl9URVhUVVJFX0RBVEFfUElUQ0hfQUxJR05N RU5UKTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgIHN0YWdpbmdfeV9sb2NhdGlvbiA9IChEM0QxMl9U RVhUVVJFX0NPUFlfTE9DQVRJT04pIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAuVHlwZcKg wqDCoMKgwqAgPSBEM0QxMl9URVhUVVJFX0NPUFlfVFlQRV9QTEFDRURfRk9PVFBSSU5ULAo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5QbGFjZWRGb290cHJpbnQgPSB7Cj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAuT2Zmc2V0ID0gMCwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIC5Gb290cHJpbnQgPSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIC5Gb3JtYXTCoMKgID0gZnJhbWVzX2h3Y3R4LT5mb3JtYXQgPT0gRFhHSV9GT1JN QVRfUDAxMCA/Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIERYR0lfRk9STUFUX1IxNl9VTk9STQo+IDogRFhHSV9GT1JNQVRfUjhfVU5PUk0s Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5XaWR0aMKgwqDCoCA9 IGN0eC0+d2lkdGgsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5I ZWlnaHTCoMKgID0gY3R4LT5oZWlnaHQsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIC5EZXB0aMKgwqDCoCA9IDEsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIC5Sb3dQaXRjaCA9IGxpbmVzaXplc1swXSwKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIH0sCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfSwKPiArwqDCoMKg wqDCoMKgwqAgfTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgIHN0YWdpbmdfdXZfbG9jYXRpb24gPSAo RDNEMTJfVEVYVFVSRV9DT1BZX0xPQ0FUSU9OKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAg LlR5cGXCoMKgwqDCoMKgID0gRDNEMTJfVEVYVFVSRV9DT1BZX1RZUEVfUExBQ0VEX0ZPT1RQUklO VCwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAuUGxhY2VkRm9vdHByaW50ID0gewo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLk9mZnNldCA9IHMtPmx1bWFfY29tcG9uZW50X3Np emUsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAuRm9vdHByaW50ID0gewo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAuRm9ybWF0wqDCoCA9IGZyYW1l c19od2N0eC0+Zm9ybWF0ID09IERYR0lfRk9STUFUX1AwMTAgPwo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoAo+IERYR0lfRk9STUFUX1IxNkcx Nl9VTk9STSA6IERYR0lfRk9STUFUX1I4RzhfVU5PUk0sCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIC5XaWR0aMKgwqDCoCA9IGN0eC0+d2lkdGjCoCA+PiAxLAo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAuSGVpZ2h0wqDCoCA9IGN0eC0+ aGVpZ2h0ID4+IDEsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5E ZXB0aMKgwqDCoCA9IDEsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IC5Sb3dQaXRjaCA9IGxpbmVzaXplc1swXSwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIH0sCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfSwKPiArwqDCoMKgwqDCoMKgwqAgfTsK PiArCj4gK8KgwqDCoCBEWF9DSEVDSyhJRDNEMTJDb21tYW5kQWxsb2NhdG9yX1Jlc2V0KHMtPmNv bW1hbmRfYWxsb2NhdG9yKSk7Cj4gKwo+ICvCoMKgwqAgRFhfQ0hFQ0soSUQzRDEyR3JhcGhpY3ND b21tYW5kTGlzdF9SZXNldChzLT5jb21tYW5kX2xpc3QsIHMtCj4gPmNvbW1hbmRfYWxsb2NhdG9y LCBOVUxMKSk7Cj4gKwo+ICvCoMKgwqAgaWYgKGRvd25sb2FkKSB7Cj4gK8KgwqDCoMKgwqDCoMKg IGlmICghcy0+c3RhZ2luZ19kb3dubG9hZF9idWZmZXIpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCByZXQgPSBkM2QxMnZhX2NyZWF0ZV9zdGFnaW5nX2J1ZmZlcl9yZXNvdXJjZShjdHgsCj4g RDNEMTJfUkVTT1VSQ0VfU1RBVEVfQ09QWV9ERVNULAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZzLQo+ID5zdGFnaW5nX2Rvd25sb2Fk X2J1ZmZlciwgMSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHJldCA8IDApIHsKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gZmFpbDsKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB9Cj4gK8KgwqDCoMKgwqDCoMKgIH0KPiArCj4gK8KgwqDCoMKgwqDCoMKgIHN0 YWdpbmdfeV9sb2NhdGlvbi5wUmVzb3VyY2UgPSBzdGFnaW5nX3V2X2xvY2F0aW9uLnBSZXNvdXJj ZSA9IHMtCj4gPnN0YWdpbmdfZG93bmxvYWRfYnVmZmVyOwo+ICsKPiArwqDCoMKgwqDCoMKgwqAg SUQzRDEyR3JhcGhpY3NDb21tYW5kTGlzdF9SZXNvdXJjZUJhcnJpZXIocy0+Y29tbWFuZF9saXN0 LCAxLAo+ICZiYXJyaWVyKTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgIElEM0QxMkdyYXBoaWNzQ29t bWFuZExpc3RfQ29weVRleHR1cmVSZWdpb24ocy0+Y29tbWFuZF9saXN0LAo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJnN0YWdpbmdfeV9sb2NhdGlvbiwg MCwKPiAwLCAwLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgJnRleHR1cmVfeV9sb2NhdGlvbiwKPiBOVUxMKTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgIElE M0QxMkdyYXBoaWNzQ29tbWFuZExpc3RfQ29weVRleHR1cmVSZWdpb24ocy0+Y29tbWFuZF9saXN0 LAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJnN0YWdp bmdfdXZfbG9jYXRpb24sIDAsCj4gMCwgMCwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgICZ0ZXh0dXJlX3V2X2xvY2F0aW9uLAo+IE5VTEwpOwo+ICsKPiAr wqDCoMKgwqDCoMKgwqAgYmFycmllci5UcmFuc2l0aW9uLlN0YXRlQmVmb3JlID0gYmFycmllci5U cmFuc2l0aW9uLlN0YXRlQWZ0ZXI7Cj4gK8KgwqDCoMKgwqDCoMKgIGJhcnJpZXIuVHJhbnNpdGlv bi5TdGF0ZUFmdGVywqAgPSBEM0QxMl9SRVNPVVJDRV9TVEFURV9DT01NT047Cj4gK8KgwqDCoMKg wqDCoMKgIElEM0QxMkdyYXBoaWNzQ29tbWFuZExpc3RfUmVzb3VyY2VCYXJyaWVyKHMtPmNvbW1h bmRfbGlzdCwgMSwKPiAmYmFycmllcik7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoCBEWF9DSEVDSyhJ RDNEMTJHcmFwaGljc0NvbW1hbmRMaXN0X0Nsb3NlKHMtPmNvbW1hbmRfbGlzdCkpOwo+ICsKPiAr wqDCoMKgwqDCoMKgwqAgRFhfQ0hFQ0soSUQzRDEyQ29tbWFuZFF1ZXVlX1dhaXQocy0+Y29tbWFu ZF9xdWV1ZSwgZi0+c3luY19jdHguZmVuY2UsCj4gZi0+c3luY19jdHguZmVuY2VfdmFsdWUpKTsK PiArCj4gK8KgwqDCoMKgwqDCoMKgIElEM0QxMkNvbW1hbmRRdWV1ZV9FeGVjdXRlQ29tbWFuZExp c3RzKHMtPmNvbW1hbmRfcXVldWUsIDEsCj4gKElEM0QxMkNvbW1hbmRMaXN0ICoqKSZzLT5jb21t YW5kX2xpc3QpOwo+ICsKPiArwqDCoMKgwqDCoMKgwqAgcmV0ID0gZDNkMTJ2YV93YWl0X3F1ZXVl X2lkbGUoJnMtPnN5bmNfY3R4LCBzLT5jb21tYW5kX3F1ZXVlKTsKPiArwqDCoMKgwqDCoMKgwqAg aWYgKHJldCA8IDApCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBmYWlsOwo+ICsKPiAr wqDCoMKgwqDCoMKgwqAgRFhfQ0hFQ0soSUQzRDEyUmVzb3VyY2VfTWFwKHMtPnN0YWdpbmdfZG93 bmxvYWRfYnVmZmVyLCAwLCBOVUxMLAo+ICh2b2lkICoqKSZtYXBwZWRfZGF0YSkpOwo+ICvCoMKg wqDCoMKgwqDCoCBhdl9pbWFnZV9maWxsX3BvaW50ZXJzKGRhdGEsIGN0eC0+c3dfZm9ybWF0LCBj dHgtPmhlaWdodCwKPiBtYXBwZWRfZGF0YSwgbGluZXNpemVzKTsKPiArCj4gK8KgwqDCoMKgwqDC oMKgIGF2X2ltYWdlX2NvcHkoZHN0LT5kYXRhLCBkc3QtPmxpbmVzaXplLCBkYXRhLCBsaW5lc2l6 ZXMsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjdHgtPnN3 X2Zvcm1hdCwgY3R4LT53aWR0aCwgY3R4LT5oZWlnaHQpOwo+ICsKPiArwqDCoMKgwqDCoMKgwqAg SUQzRDEyUmVzb3VyY2VfVW5tYXAocy0+c3RhZ2luZ19kb3dubG9hZF9idWZmZXIsIDAsIE5VTEwp Owo+ICvCoMKgwqAgfSBlbHNlIHsKPiArwqDCoMKgwqDCoMKgwqAgaWYgKCFzLT5zdGFnaW5nX3Vw bG9hZF9idWZmZXIpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXQgPSBkM2QxMnZhX2Ny ZWF0ZV9zdGFnaW5nX2J1ZmZlcl9yZXNvdXJjZShjdHgsCj4gRDNEMTJfUkVTT1VSQ0VfU1RBVEVf R0VORVJJQ19SRUFELAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAmcy0KPiA+c3RhZ2luZ191cGxvYWRfYnVmZmVyLCAwKTsKPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBpZiAocmV0IDwgMCkgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgZ290byBmYWlsOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPiArwqDCoMKg wqDCoMKgwqAgfQo+ICsKPiArwqDCoMKgwqDCoMKgwqAgc3RhZ2luZ195X2xvY2F0aW9uLnBSZXNv dXJjZSA9IHN0YWdpbmdfdXZfbG9jYXRpb24ucFJlc291cmNlID0gcy0KPiA+c3RhZ2luZ191cGxv YWRfYnVmZmVyOwo+ICsKPiArwqDCoMKgwqDCoMKgwqAgRFhfQ0hFQ0soSUQzRDEyUmVzb3VyY2Vf TWFwKHMtPnN0YWdpbmdfdXBsb2FkX2J1ZmZlciwgMCwgTlVMTCwgKHZvaWQKPiAqKikmbWFwcGVk X2RhdGEpKTsKPiArwqDCoMKgwqDCoMKgwqAgYXZfaW1hZ2VfZmlsbF9wb2ludGVycyhkYXRhLCBj dHgtPnN3X2Zvcm1hdCwgY3R4LT5oZWlnaHQsCj4gbWFwcGVkX2RhdGEsIGxpbmVzaXplcyk7Cj4g Kwo+ICvCoMKgwqDCoMKgwqDCoCBhdl9pbWFnZV9jb3B5KGRhdGEsIGxpbmVzaXplcywgc3JjLT5k YXRhLCBzcmMtPmxpbmVzaXplLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgY3R4LT5zd19mb3JtYXQsIGN0eC0+d2lkdGgsIGN0eC0+aGVpZ2h0KTsKPiArCj4g K8KgwqDCoMKgwqDCoMKgIElEM0QxMlJlc291cmNlX1VubWFwKHMtPnN0YWdpbmdfdXBsb2FkX2J1 ZmZlciwgMCwgTlVMTCk7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoCBJRDNEMTJHcmFwaGljc0NvbW1h bmRMaXN0X1Jlc291cmNlQmFycmllcihzLT5jb21tYW5kX2xpc3QsIDEsCj4gJmJhcnJpZXIpOwo+ ICsKPiArwqDCoMKgwqDCoMKgwqAgSUQzRDEyR3JhcGhpY3NDb21tYW5kTGlzdF9Db3B5VGV4dHVy ZVJlZ2lvbihzLT5jb21tYW5kX2xpc3QsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAmdGV4dHVyZV95X2xvY2F0aW9uLCAwLAo+IDAsIDAsCj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmc3RhZ2luZ195X2xvY2F0 aW9uLAo+IE5VTEwpOwo+ICsKPiArwqDCoMKgwqDCoMKgwqAgSUQzRDEyR3JhcGhpY3NDb21tYW5k TGlzdF9Db3B5VGV4dHVyZVJlZ2lvbihzLT5jb21tYW5kX2xpc3QsCj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmdGV4dHVyZV91dl9sb2NhdGlvbiwgMCwK PiAwLCAwLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg JnN0YWdpbmdfdXZfbG9jYXRpb24sCj4gTlVMTCk7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoCBiYXJy aWVyLlRyYW5zaXRpb24uU3RhdGVCZWZvcmUgPSBiYXJyaWVyLlRyYW5zaXRpb24uU3RhdGVBZnRl cjsKPiArwqDCoMKgwqDCoMKgwqAgYmFycmllci5UcmFuc2l0aW9uLlN0YXRlQWZ0ZXIgPSBEM0Qx Ml9SRVNPVVJDRV9TVEFURV9DT01NT047Cj4gK8KgwqDCoMKgwqDCoMKgIElEM0QxMkdyYXBoaWNz Q29tbWFuZExpc3RfUmVzb3VyY2VCYXJyaWVyKHMtPmNvbW1hbmRfbGlzdCwgMSwKPiAmYmFycmll cik7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoCBEWF9DSEVDSyhJRDNEMTJHcmFwaGljc0NvbW1hbmRM aXN0X0Nsb3NlKHMtPmNvbW1hbmRfbGlzdCkpOwo+ICsKPiArwqDCoMKgwqDCoMKgwqAgSUQzRDEy Q29tbWFuZFF1ZXVlX0V4ZWN1dGVDb21tYW5kTGlzdHMocy0+Y29tbWFuZF9xdWV1ZSwgMSwKPiAo SUQzRDEyQ29tbWFuZExpc3QgKiopJnMtPmNvbW1hbmRfbGlzdCk7Cj4gKwo+ICvCoMKgwqDCoMKg wqDCoCByZXQgPSBkM2QxMnZhX3dhaXRfcXVldWVfaWRsZSgmcy0+c3luY19jdHgsIHMtPmNvbW1h bmRfcXVldWUpOwo+ICvCoMKgwqDCoMKgwqDCoCBpZiAocmV0IDwgMCkKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBnb3RvIGZhaWw7Cj4gK8KgwqDCoCB9Cj4gKwo+ICvCoMKgwqAgaHdjdHgtPnVu bG9jayhod2N0eC0+bG9ja19jdHgpOwo+ICsKPiArwqDCoMKgIHJldHVybiAwOwo+ICsKPiArZmFp bDoKPiArwqDCoMKgIGh3Y3R4LT51bmxvY2soaHdjdHgtPmxvY2tfY3R4KTsKPiArwqDCoMKgIHJl dHVybiBBVkVSUk9SKEVJTlZBTCk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgZDNkMTJ2YV9sb2Fk X2Z1bmN0aW9ucyhBVkhXRGV2aWNlQ29udGV4dCAqaHdkZXYpCj4gK3sKPiArwqDCoMKgIEQzRDEy VkFEZXZpY2VQcml2ICpwcml2ID0gaHdkZXYtPmludGVybmFsLT5wcml2Owo+ICsKPiArI2lmICFI QVZFX1VXUAo+ICvCoMKgwqAgcHJpdi0+ZDNkMTJsaWIgPSBkbG9wZW4oImQzZDEyLmRsbCIsIDAp Owo+ICvCoMKgwqAgcHJpdi0+ZHhnaWxpYsKgID0gZGxvcGVuKCJkeGdpLmRsbCIsIDApOwo+ICsK PiArwqDCoMKgIGlmICghcHJpdi0+ZDNkMTJsaWIgfHwgIXByaXYtPmR4Z2lsaWIpCj4gK8KgwqDC oMKgwqDCoMKgIGdvdG8gZmFpbDsKPiArCj4gK8KgwqDCoCBwcml2LT5jcmVhdGVfZGV2aWNlID0g KFBGTl9EM0QxMl9DUkVBVEVfREVWSUNFKUdldFByb2NBZGRyZXNzKHByaXYtCj4gPmQzZDEybGli LCAiRDNEMTJDcmVhdGVEZXZpY2UiKTsKPiArwqDCoMKgIGlmICghcHJpdi0+Y3JlYXRlX2Rldmlj ZSkKPiArwqDCoMKgwqDCoMKgwqAgZ290byBmYWlsOwo+ICsKPiArwqDCoMKgIHByaXYtPmNyZWF0 ZV9keGdpX2ZhY3RvcnkyID0KPiAoUEZOX0NSRUFURV9EWEdJX0ZBQ1RPUlkyKUdldFByb2NBZGRy ZXNzKHByaXYtPmR4Z2lsaWIsICJDcmVhdGVEWEdJRmFjdG9yeTIiKTsKPiArwqDCoMKgIGlmICgh cHJpdi0+Y3JlYXRlX2R4Z2lfZmFjdG9yeTIpCj4gK8KgwqDCoMKgwqDCoMKgIGdvdG8gZmFpbDsK PiArCj4gK8KgwqDCoCBwcml2LT5nZXRfZGVidWdfaW50ZXJmYWNlwqAgPQo+IChQRk5fRDNEMTJf R0VUX0RFQlVHX0lOVEVSRkFDRSlHZXRQcm9jQWRkcmVzcyhwcml2LT5kM2QxMmxpYiwKPiAiRDNE MTJHZXREZWJ1Z0ludGVyZmFjZSIpOwo+ICsjZWxzZQo+ICvCoMKgwqAgcHJpdi0+Y3JlYXRlX2Rl dmljZcKgwqDCoMKgwqDCoMKgID0gKFBGTl9EM0QxMl9DUkVBVEVfREVWSUNFKSBEM0QxMkNyZWF0 ZURldmljZTsKPiArwqDCoMKgIHByaXYtPmNyZWF0ZV9keGdpX2ZhY3RvcnkyID0gKFBGTl9DUkVB VEVfRFhHSV9GQUNUT1JZMikKPiBDcmVhdGVEWEdJRmFjdG9yeTI7Cj4gK8KgwqDCoCBwcml2LT5n ZXRfZGVidWdfaW50ZXJmYWNlwqAgPSAoUEZOX0QzRDEyX0dFVF9ERUJVR19JTlRFUkZBQ0UpCj4g RDNEMTJHZXREZWJ1Z0ludGVyZmFjZTsKPiArI2VuZGlmCj4gK8KgwqDCoCByZXR1cm4gMDsKPiAr Cj4gK2ZhaWw6Cj4gK8KgwqDCoCBhdl9sb2coaHdkZXYsIEFWX0xPR19FUlJPUiwgIkZhaWxlZCB0 byBsb2FkIEQzRDEyIGxpYnJhcnkgb3IgaXRzCj4gZnVuY3Rpb25zXG4iKTsKPiArwqDCoMKgIHJl dHVybiBBVkVSUk9SX1VOS05PV047Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGQzZDEydmFfZGV2 aWNlX2ZyZWUoQVZIV0RldmljZUNvbnRleHQgKmh3ZGV2KQo+ICt7Cj4gK8KgwqDCoCBBVkQzRDEy VkFEZXZpY2VDb250ZXh0ICpjdHjCoCA9IGh3ZGV2LT5od2N0eDsKPiArwqDCoMKgIEQzRDEyVkFE ZXZpY2VQcml2wqDCoMKgwqDCoCAqcHJpdiA9IGh3ZGV2LT5pbnRlcm5hbC0+cHJpdjsKPiArCj4g K8KgwqDCoCBEM0QxMl9PQkpFQ1RfUkVMRUFTRShjdHgtPmRldmljZSk7Cj4gKwo+ICvCoMKgwqAg aWYgKHByaXYtPmQzZDEybGliKQo+ICvCoMKgwqDCoMKgwqDCoCBkbGNsb3NlKHByaXYtPmQzZDEy bGliKTsKPiArCj4gK8KgwqDCoCBpZiAocHJpdi0+ZHhnaWxpYikKPiArwqDCoMKgwqDCoMKgwqAg ZGxjbG9zZShwcml2LT5keGdpbGliKTsKPiArfQo+ICsKPiArc3RhdGljIGludCBkM2QxMnZhX2Rl dmljZV9pbml0KEFWSFdEZXZpY2VDb250ZXh0ICpod2RldikKPiArewo+ICvCoMKgwqAgQVZEM0Qx MlZBRGV2aWNlQ29udGV4dCAqY3R4ID0gaHdkZXYtPmh3Y3R4Owo+ICsKPiArwqDCoMKgIGlmICgh Y3R4LT5sb2NrKSB7Cj4gK8KgwqDCoMKgwqDCoMKgIGN0eC0+bG9ja19jdHggPSBDcmVhdGVNdXRl eChOVUxMLCAwLCBOVUxMKTsKPiArwqDCoMKgwqDCoMKgwqAgaWYgKGN0eC0+bG9ja19jdHggPT0g SU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhdl9sb2co TlVMTCwgQVZfTE9HX0VSUk9SLCAiRmFpbGVkIHRvIGNyZWF0ZSBhIG11dGV4XG4iKTsKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwo+ICvCoMKgwqDCoMKg wqDCoCB9Cj4gK8KgwqDCoMKgwqDCoMKgIGN0eC0+bG9ja8KgwqAgPSBkM2QxMnZhX2RlZmF1bHRf bG9jazsKPiArwqDCoMKgwqDCoMKgwqAgY3R4LT51bmxvY2sgPSBkM2QxMnZhX2RlZmF1bHRfdW5s b2NrOwo+ICvCoMKgwqAgfQo+ICsKPiArwqDCoMKgIGlmICghY3R4LT52aWRlb19kZXZpY2UpCj4g K8KgwqDCoMKgwqDCoMKgIERYX0NIRUNLKElEM0QxMkRldmljZV9RdWVyeUludGVyZmFjZShjdHgt PmRldmljZSwKPiAmSUlEX0lEM0QxMlZpZGVvRGV2aWNlLCAodm9pZCAqKikmY3R4LT52aWRlb19k ZXZpY2UpKTsKPiArCj4gK8KgwqDCoCByZXR1cm4gMDsKPiArCj4gK2ZhaWw6Cj4gK8KgwqDCoCBy ZXR1cm4gQVZFUlJPUihFSU5WQUwpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBkM2QxMnZhX2Rl dmljZV91bmluaXQoQVZIV0RldmljZUNvbnRleHQgKmh3ZGV2KQo+ICt7Cj4gK8KgwqDCoCBBVkQz RDEyVkFEZXZpY2VDb250ZXh0ICpkZXZpY2VfaHdjdHggPSBod2Rldi0+aHdjdHg7Cj4gKwo+ICvC oMKgwqAgRDNEMTJfT0JKRUNUX1JFTEVBU0UoZGV2aWNlX2h3Y3R4LT52aWRlb19kZXZpY2UpOwo+ ICsKPiArwqDCoMKgIGlmIChkZXZpY2VfaHdjdHgtPmxvY2sgPT0gZDNkMTJ2YV9kZWZhdWx0X2xv Y2spIHsKPiArwqDCoMKgwqDCoMKgwqAgQ2xvc2VIYW5kbGUoZGV2aWNlX2h3Y3R4LT5sb2NrX2N0 eCk7Cj4gK8KgwqDCoMKgwqDCoMKgIGRldmljZV9od2N0eC0+bG9ja19jdHggPSBJTlZBTElEX0hB TkRMRV9WQUxVRTsKPiArwqDCoMKgwqDCoMKgwqAgZGV2aWNlX2h3Y3R4LT5sb2NrID0gTlVMTDsK PiArwqDCoMKgIH0KPiArfQo+ICsKPiArc3RhdGljIGludCBkM2QxMnZhX2RldmljZV9jcmVhdGUo QVZIV0RldmljZUNvbnRleHQgKmh3ZGV2LCBjb25zdCBjaGFyCj4gKmRldmljZSwKPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBBVkRpY3Rpb25hcnkgKm9wdHMsIGludCBmbGFncykKPiArewo+ICvCoMKgwqAgQVZEM0QxMlZB RGV2aWNlQ29udGV4dCAqY3R4wqAgPSBod2Rldi0+aHdjdHg7Cj4gK8KgwqDCoCBEM0QxMlZBRGV2 aWNlUHJpdsKgwqDCoMKgwqAgKnByaXYgPSBod2Rldi0+aW50ZXJuYWwtPnByaXY7Cj4gKwo+ICvC oMKgwqAgSFJFU1VMVCBocjsKPiArwqDCoMKgIFVJTlQgY3JlYXRlX2ZsYWdzID0gMDsKPiArwqDC oMKgIElEWEdJQWRhcHRlciAqcEFkYXB0ZXIgPSBOVUxMOwo+ICsKPiArwqDCoMKgIGludCByZXQ7 Cj4gK8KgwqDCoCBpbnQgaXNfZGVidWcgPSAhIWF2X2RpY3RfZ2V0KG9wdHMsICJkZWJ1ZyIsIE5V TEwsIDApOwo+ICsKPiArwqDCoMKgIGh3ZGV2LT5mcmVlID0gZDNkMTJ2YV9kZXZpY2VfZnJlZTsK PiArCj4gK8KgwqDCoCByZXQgPSBkM2QxMnZhX2xvYWRfZnVuY3Rpb25zKGh3ZGV2KTsKPiArwqDC oMKgIGlmIChyZXQgPCAwKQo+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Owo+ICsKPiArwqDC oMKgIGlmIChpc19kZWJ1Zykgewo+ICvCoMKgwqDCoMKgwqDCoCBJRDNEMTJEZWJ1ZyAqcERlYnVn Owo+ICvCoMKgwqDCoMKgwqDCoCBpZiAocHJpdi0+Z2V0X2RlYnVnX2ludGVyZmFjZSAmJiBTVUND RUVERUQocHJpdi0KPiA+Z2V0X2RlYnVnX2ludGVyZmFjZSgmSUlEX0lEM0QxMkRlYnVnLCAodm9p ZCAqKikmcERlYnVnKSkpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjcmVhdGVfZmxhZ3Mg fD0gRFhHSV9DUkVBVEVfRkFDVE9SWV9ERUJVRzsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBJ RDNEMTJEZWJ1Z19FbmFibGVEZWJ1Z0xheWVyKHBEZWJ1Zyk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgRDNEMTJfT0JKRUNUX1JFTEVBU0UocERlYnVnKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBhdl9sb2coaHdkZXYsIEFWX0xPR19JTkZPLCAiRDNEMTIgZGVidWcgbGF5ZXIgaXMgZW5h YmxlZCFcbiIpOwo+ICvCoMKgwqDCoMKgwqDCoCB9Cj4gK8KgwqDCoCB9Cj4gKwo+ICvCoMKgwqAg aWYgKCFjdHgtPmRldmljZSkgewo+ICvCoMKgwqDCoMKgwqDCoCBJRFhHSUZhY3RvcnkyICpwRFhH SUZhY3RvcnkgPSBOVUxMOwo+ICsKPiArwqDCoMKgwqDCoMKgwqAgaHIgPSBwcml2LT5jcmVhdGVf ZHhnaV9mYWN0b3J5MihjcmVhdGVfZmxhZ3MsICZJSURfSURYR0lGYWN0b3J5MiwKPiAodm9pZCAq KikmcERYR0lGYWN0b3J5KTsKPiArwqDCoMKgwqDCoMKgwqAgaWYgKFNVQ0NFRURFRChocikpIHsK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQgYWRhcHRlciA9IGRldmljZSA/IGF0b2koZGV2 aWNlKSA6IDA7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKEZBSUxFRChJRFhHSUZhY3Rv cnkyX0VudW1BZGFwdGVycyhwRFhHSUZhY3RvcnksIGFkYXB0ZXIsCj4gJnBBZGFwdGVyKSkpCj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwQWRhcHRlciA9IE5VTEw7Cj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqAgSURYR0lGYWN0b3J5Ml9SZWxlYXNlKHBEWEdJRmFjdG9yeSk7Cj4g K8KgwqDCoMKgwqDCoMKgIH0KPiArCj4gK8KgwqDCoMKgwqDCoMKgIGlmIChwQWRhcHRlcikgewo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERYR0lfQURBUFRFUl9ERVNDIGRlc2M7Cj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqAgaHIgPSBJRFhHSUFkYXB0ZXIyX0dldERlc2MocEFkYXB0ZXIsICZk ZXNjKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoIUZBSUxFRChocikpIHsKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGF2X2xvZyhjdHgsIEFWX0xPR19JTkZPLCAiVXNp bmcgZGV2aWNlICUwNHg6JTA0eCAoJWxzKS5cbiIsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRlc2MuVmVuZG9ySWQsIGRlc2MuRGV2aWNlSWQsIGRlc2Mu RGVzY3JpcHRpb24pOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPiArwqDCoMKgwqDCoMKg wqAgfQo+ICsKPiArwqDCoMKgwqDCoMKgwqAgaHIgPSBwcml2LT5jcmVhdGVfZGV2aWNlKChJVW5r bm93biAqKXBBZGFwdGVyLAo+IEQzRF9GRUFUVVJFX0xFVkVMXzEyXzAsICZJSURfSUQzRDEyRGV2 aWNlLCAodm9pZCAqKikmY3R4LT5kZXZpY2UpOwo+ICvCoMKgwqDCoMKgwqDCoCBEM0QxMl9PQkpF Q1RfUkVMRUFTRShwQWRhcHRlcik7Cj4gK8KgwqDCoMKgwqDCoMKgIGlmIChGQUlMRUQoaHIpKSB7 Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXZfbG9nKGN0eCwgQVZfTE9HX0VSUk9SLCAiRmFp bGVkIHRvIGNyZWF0ZSBEaXJlY3QgM0QgMTIgZGV2aWNlCj4gKCVseClcbiIsIChsb25nKWhyKTsK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gQVZFUlJPUl9VTktOT1dOOwo+ICvCoMKg wqDCoMKgwqDCoCB9Cj4gK8KgwqDCoCB9Cj4gKwo+ICvCoMKgwqAgcmV0dXJuIDA7Cj4gK30KPiAr Cj4gK2NvbnN0IEhXQ29udGV4dFR5cGUgZmZfaHdjb250ZXh0X3R5cGVfZDNkMTJ2YSA9IHsKPiAr wqDCoMKgIC50eXBlwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgID0gQVZfSFdE RVZJQ0VfVFlQRV9EM0QxMlZBLAo+ICvCoMKgwqAgLm5hbWXCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgPSAiRDNEMTJWQSIsCj4gKwo+ICvCoMKgwqAgLmRldmljZV9od2N0eF9z aXplwqDCoMKgwqDCoCA9IHNpemVvZihBVkQzRDEyVkFEZXZpY2VDb250ZXh0KSwKPiArwqDCoMKg IC5kZXZpY2VfcHJpdl9zaXplwqDCoMKgwqDCoMKgID0gc2l6ZW9mKEQzRDEyVkFEZXZpY2VQcml2 KSwKPiArwqDCoMKgIC5mcmFtZXNfaHdjdHhfc2l6ZcKgwqDCoMKgwqAgPSBzaXplb2YoQVZEM0Qx MlZBRnJhbWVzQ29udGV4dCksCj4gK8KgwqDCoCAuZnJhbWVzX3ByaXZfc2l6ZcKgwqDCoMKgwqDC oCA9IHNpemVvZihEM0QxMlZBRnJhbWVzQ29udGV4dCksCj4gKwo+ICvCoMKgwqAgLmRldmljZV9j cmVhdGXCoMKgwqDCoMKgwqDCoMKgwqAgPSBkM2QxMnZhX2RldmljZV9jcmVhdGUsCj4gK8KgwqDC oCAuZGV2aWNlX2luaXTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgID0gZDNkMTJ2YV9kZXZpY2VfaW5p dCwKPiArwqDCoMKgIC5kZXZpY2VfdW5pbml0wqDCoMKgwqDCoMKgwqDCoMKgID0gZDNkMTJ2YV9k ZXZpY2VfdW5pbml0LAo+ICvCoMKgwqAgLmZyYW1lc19nZXRfY29uc3RyYWludHMgPSBkM2QxMnZh X2ZyYW1lc19nZXRfY29uc3RyYWludHMsCj4gK8KgwqDCoCAuZnJhbWVzX2luaXTCoMKgwqDCoMKg wqDCoMKgwqDCoMKgID0gZDNkMTJ2YV9mcmFtZXNfaW5pdCwKPiArwqDCoMKgIC5mcmFtZXNfdW5p bml0wqDCoMKgwqDCoMKgwqDCoMKgID0gZDNkMTJ2YV9mcmFtZXNfdW5pbml0LAo+ICvCoMKgwqAg LmZyYW1lc19nZXRfYnVmZmVywqDCoMKgwqDCoCA9IGQzZDEydmFfZ2V0X2J1ZmZlciwKPiArwqDC oMKgIC50cmFuc2Zlcl9nZXRfZm9ybWF0c8KgwqAgPSBkM2QxMnZhX3RyYW5zZmVyX2dldF9mb3Jt YXRzLAo+ICvCoMKgwqAgLnRyYW5zZmVyX2RhdGFfdG/CoMKgwqDCoMKgwqAgPSBkM2QxMnZhX3Ry YW5zZmVyX2RhdGEsCj4gK8KgwqDCoCAudHJhbnNmZXJfZGF0YV9mcm9twqDCoMKgwqAgPSBkM2Qx MnZhX3RyYW5zZmVyX2RhdGEsCj4gKwo+ICvCoMKgwqAgLnBpeF9mbXRzwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCA9IChjb25zdCBlbnVtIEFWUGl4ZWxGb3JtYXRbXSl7IEFWX1BJWF9GTVRf RDNEMTIsCj4gQVZfUElYX0ZNVF9OT05FIH0sCj4gK307Cj4gZGlmZiAtLWdpdCBhL2xpYmF2dXRp bC9od2NvbnRleHRfZDNkMTJ2YS5oIGIvbGliYXZ1dGlsL2h3Y29udGV4dF9kM2QxMnZhLmgKPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAuLmZmMDZlNmYyZWYKPiAtLS0g L2Rldi9udWxsCj4gKysrIGIvbGliYXZ1dGlsL2h3Y29udGV4dF9kM2QxMnZhLmgKPiBAQCAtMCww ICsxLDEzNCBAQAo+ICsvKgo+ICsgKiBEaXJlY3QzRCAxMiBIVyBhY2NlbGVyYXRpb24uCj4gKyAq Cj4gKyAqIGNvcHlyaWdodCAoYykgMjAyMi0yMDIzIFd1IEppYW5odWEgPHRvcXN4d0BvdXRsb29r LmNvbT4KPiArICoKPiArICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgo+ICsgKgo+ICsg KiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y Cj4gKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh bCBQdWJsaWMKPiArICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyCj4gKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgo+ICsgKgo+ICsgKiBGRm1wZWcgaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKPiArICogYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKPiArICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLsKgIFNlZSB0aGUgR05VCj4gKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCj4gKyAqCj4gKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKPiArICogTGljZW5zZSBhbG9uZyB3 aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQo+ICsgKiBGb3Vu ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1B IDAyMTEwLTEzMDEKPiBVU0EKPiArICovCj4gKwo+ICsjaWZuZGVmIEFWVVRJTF9IV0NPTlRFWFRf RDNEMTJWQV9ICj4gKyNkZWZpbmUgQVZVVElMX0hXQ09OVEVYVF9EM0QxMlZBX0gKPiArCj4gKy8q Kgo+ICsgKiBAZmlsZQo+ICsgKiBBbiBBUEktc3BlY2lmaWMgaGVhZGVyIGZvciBBVl9IV0RFVklD RV9UWVBFX0QzRDEyVkEuCj4gKyAqCj4gKyAqIEFWSFdGcmFtZXNDb250ZXh0LnBvb2wgbXVzdCBj b250YWluIEFWQnVmZmVyUmVmcyB3aG9zZQo+ICsgKiBkYXRhIHBvaW50ZXIgcG9pbnRzIHRvIGFu IEFWRDNEMTJWQUZyYW1lIHN0cnVjdC4KPiArICovCj4gKyNpbmNsdWRlIDxzdGRpbnQuaD4KPiAr I2luY2x1ZGUgPGluaXRndWlkLmg+Cj4gKyNpbmNsdWRlIDxkM2QxMi5oPgo+ICsjaW5jbHVkZSA8 ZDNkMTJzZGtsYXllcnMuaD4KPiArI2luY2x1ZGUgPGQzZDEydmlkZW8uaD4KPiArCj4gKy8qKgo+ ICsgKiBAYnJpZWYgVGhpcyBzdHJ1Y3QgaXMgYWxsb2NhdGVkIGFzIEFWSFdEZXZpY2VDb250ZXh0 Lmh3Y3R4Cj4gKyAqCj4gKyAqLwo+ICt0eXBlZGVmIHN0cnVjdCBBVkQzRDEyVkFEZXZpY2VDb250 ZXh0IHsKPiArwqDCoMKgIC8qKgo+ICvCoMKgwqDCoCAqIERldmljZSB1c2VkIGZvciBvYmplY3Rz IGNyZWF0aW9uIGFuZCBhY2Nlc3MuIFRoaXMgY2FuIGFsc28gYmUKPiArwqDCoMKgwqAgKiB1c2Vk IHRvIHNldCB0aGUgbGliYXZjb2RlYyBkZWNvZGluZyBkZXZpY2UuCj4gK8KgwqDCoMKgICoKPiAr wqDCoMKgwqAgKiBDYW4gYmUgc2V0IGJ5IHRoZSB1c2VyLiBUaGlzIGlzIHRoZSBvbmx5IG1hbmRh dG9yeSBmaWVsZCAtIHRoZSBvdGhlcgo+ICvCoMKgwqDCoCAqIGRldmljZSBjb250ZXh0IGZpZWxk cyBhcmUgc2V0IGZyb20gdGhpcyBhbmQgYXJlIGF2YWlsYWJsZSBmb3IKPiBjb252ZW5pZW5jZS4K PiArwqDCoMKgwqAgKgo+ICvCoMKgwqDCoCAqIERlYWxsb2NhdGluZyB0aGUgQVZIV0RldmljZUNv bnRleHQgd2lsbCBhbHdheXMgcmVsZWFzZSB0aGlzIGludGVyZmFjZSwKPiArwqDCoMKgwqAgKiBh bmQgaXQgZG9lcyBub3QgbWF0dGVyIHdoZXRoZXIgaXQgd2FzIHVzZXItYWxsb2NhdGVkLgo+ICvC oMKgwqDCoCAqLwo+ICvCoMKgwqAgSUQzRDEyRGV2aWNlICpkZXZpY2U7Cj4gKwo+ICvCoMKgwqAg LyoqCj4gK8KgwqDCoMKgICogSWYgdW5zZXQsIHRoaXMgd2lsbCBiZSBzZXQgZnJvbSB0aGUgZGV2 aWNlIGZpZWxkIG9uIGluaXQuCj4gK8KgwqDCoMKgICoKPiArwqDCoMKgwqAgKiBEZWFsbG9jYXRp bmcgdGhlIEFWSFdEZXZpY2VDb250ZXh0IHdpbGwgYWx3YXlzIHJlbGVhc2UgdGhpcyBpbnRlcmZh Y2UsCj4gK8KgwqDCoMKgICogYW5kIGl0IGRvZXMgbm90IG1hdHRlciB3aGV0aGVyIGl0IHdhcyB1 c2VyLWFsbG9jYXRlZC4KPiArwqDCoMKgwqAgKi8KPiArwqDCoMKgIElEM0QxMlZpZGVvRGV2aWNl ICp2aWRlb19kZXZpY2U7Cj4gKwo+ICvCoMKgwqAgLyoqCj4gK8KgwqDCoMKgICogQ2FsbGJhY2tz IGZvciBsb2NraW5nLiBUaGV5IHByb3RlY3QgYWNjZXNzIHRvIHRoZSBpbnRlcm5hbCBzdGFnaW5n Cj4gK8KgwqDCoMKgICogdGV4dHVyZSAoZm9yIGF2X2h3ZnJhbWVfdHJhbnNmZXJfZGF0YSgpIGNh bGxzKS4gVGhleSBkbyBOT1QgcHJvdGVjdAo+ICvCoMKgwqDCoCAqIGFjY2VzcyB0byBod2NvbnRl eHQgb3IgZGVjb2RlciBzdGF0ZSBpbiBnZW5lcmFsLgo+ICvCoMKgwqDCoCAqCj4gK8KgwqDCoMKg ICogSWYgdW5zZXQgb24gaW5pdCwgdGhlIGh3Y29udGV4dCBpbXBsZW1lbnRhdGlvbiB3aWxsIHNl dCB0aGVtIHRvIHVzZSBhbgo+ICvCoMKgwqDCoCAqIGludGVybmFsIG11dGV4Lgo+ICvCoMKgwqDC oCAqCj4gK8KgwqDCoMKgICogVGhlIHVuZGVybHlpbmcgbG9jayBtdXN0IGJlIHJlY3Vyc2l2ZS4g bG9ja19jdHggaXMgZm9yIGZyZWUgdXNlIGJ5IHRoZQo+ICvCoMKgwqDCoCAqIGxvY2tpbmcgaW1w bGVtZW50YXRpb24uCj4gK8KgwqDCoMKgICovCj4gK8KgwqDCoCB2b2lkICgqbG9jaykodm9pZCAq bG9ja19jdHgpOwo+ICvCoMKgwqAgdm9pZCAoKnVubG9jaykodm9pZCAqbG9ja19jdHgpOwo+ICvC oMKgwqAgdm9pZCAqbG9ja19jdHg7Cj4gK30gQVZEM0QxMlZBRGV2aWNlQ29udGV4dDsKPiArCj4g Ky8qKgo+ICsgKiBAYnJpZWYgVGhpcyBzdHJ1Y3QgaXMgdXNlZCB0byBzeW5jIGQzZDEyIGV4ZWN1 dGlvbgo+ICsgKgo+ICsgKi8KPiArdHlwZWRlZiBzdHJ1Y3QgQVZEM0QxMlZBU3luY0NvbnRleHQg ewo+ICvCoMKgwqAgLyoqCj4gK8KgwqDCoMKgICogRDNEMTIgZmVuY2Ugb2JqZWN0Cj4gK8KgwqDC oMKgICovCj4gK8KgwqDCoCBJRDNEMTJGZW5jZSAqZmVuY2U7Cj4gKwo+ICvCoMKgwqAgLyoqCj4g K8KgwqDCoMKgICogQSBoYW5kbGUgdG8gdGhlIGV2ZW50IG9iamVjdCB0aGF0J3MgcmFpc2VkIHdo ZW4gdGhlIGZlbmNlCj4gK8KgwqDCoMKgICogcmVhY2hlcyBhIGNlcnRhaW4gdmFsdWUuCj4gK8Kg wqDCoMKgICovCj4gK8KgwqDCoCBIQU5ETEUgZXZlbnQ7Cj4gKwo+ICvCoMKgwqAgLyoqCj4gK8Kg wqDCoMKgICogVGhlIGZlbmNlIHZhbHVlIHVzZWQgZm9yIHN5bmMKPiArwqDCoMKgwqAgKi8KPiAr wqDCoMKgIHVpbnQ2NF90IGZlbmNlX3ZhbHVlOwo+ICt9IEFWRDNEMTJWQVN5bmNDb250ZXh0Owo+ ICsKPiArLyoqCj4gKyAqIEBicmllZiBEM0QxMlZBIGZyYW1lIGRlc2NyaXB0b3IgZm9yIHBvb2wg YWxsb2NhdGlvbi4KPiArICoKPiArICovCj4gK3R5cGVkZWYgc3RydWN0IEFWRDNEMTJWQUZyYW1l IHsKPiArwqDCoMKgIC8qKgo+ICvCoMKgwqDCoCAqIFRoZSB0ZXh0dXJlIGluIHdoaWNoIHRoZSBm cmFtZSBpcyBsb2NhdGVkLiBUaGUgcmVmZXJlbmNlIGNvdW50IGlzCj4gK8KgwqDCoMKgICogbWFu YWdlZCBieSB0aGUgQVZCdWZmZXJSZWYsIGFuZCBkZXN0cm95aW5nIHRoZSByZWZlcmVuY2Ugd2ls bCByZWxlYXNlCj4gK8KgwqDCoMKgICogdGhlIGludGVyZmFjZS4KPiArwqDCoMKgwqAgKi8KPiAr wqDCoMKgIElEM0QxMlJlc291cmNlICp0ZXh0dXJlOwo+ICsKPiArwqDCoMKgIC8qKgo+ICvCoMKg wqDCoCAqIFRoZSBzeW5jIGNvbnRleHQgZm9yIHRoZSB0ZXh0dXJlCj4gK8KgwqDCoMKgICoKPiAr wqDCoMKgwqAgKiBAc2VlOgo+IGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9lbi11cy93aW5k b3dzL3dpbjMyL21lZGZvdW5kL2RpcmVjdDNkLTEyLXZpZGVvLW92ZXJ2aWV3I2RpcmVjdHgtMTIt ZmVuY2VzCj4gK8KgwqDCoMKgICovCj4gK8KgwqDCoCBBVkQzRDEyVkFTeW5jQ29udGV4dCBzeW5j X2N0eDsKPiArfSBBVkQzRDEyVkFGcmFtZTsKPiArCj4gKy8qKgo+ICsgKiBAYnJpZWYgVGhpcyBz dHJ1Y3QgaXMgYWxsb2NhdGVkIGFzIEFWSFdGcmFtZXNDb250ZXh0Lmh3Y3R4Cj4gKyAqCj4gKyAq Lwo+ICt0eXBlZGVmIHN0cnVjdCBBVkQzRDEyVkFGcmFtZXNDb250ZXh0IHsKPiArwqDCoMKgIC8q Kgo+ICvCoMKgwqDCoCAqIERYR0lfRk9STUFUIGZvcm1hdC4gTVVTVCBiZSBjb21wYXRpYmxlIHdp dGggdGhlIHBpeGVsIGZvcm1hdC4KPiArwqDCoMKgwqAgKiBJZiB1bnNldCwgd2lsbCBiZSBhdXRv bWF0aWNhbGx5IHNldC4KPiArwqDCoMKgwqAgKi8KPiArwqDCoMKgIERYR0lfRk9STUFUIGZvcm1h dDsKPiArfSBBVkQzRDEyVkFGcmFtZXNDb250ZXh0Owo+ICsKPiArI2VuZGlmIC8qIEFWVVRJTF9I V0NPTlRFWFRfRDNEMTJWQV9IICovCj4gZGlmZiAtLWdpdCBhL2xpYmF2dXRpbC9od2NvbnRleHRf ZDNkMTJ2YV9pbnRlcm5hbC5oCj4gYi9saWJhdnV0aWwvaHdjb250ZXh0X2QzZDEydmFfaW50ZXJu YWwuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMC4uYmZkODliMzU0 NQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9saWJhdnV0aWwvaHdjb250ZXh0X2QzZDEydmFfaW50 ZXJuYWwuaAo+IEBAIC0wLDAgKzEsNTkgQEAKPiArLyoKPiArICogRGlyZWN0M0QgMTIgSFcgYWNj ZWxlcmF0aW9uLgo+ICsgKgo+ICsgKiBjb3B5cmlnaHQgKGMpIDIwMjItMjAyMyBXdSBKaWFuaHVh IDx0b3FzeHdAb3V0bG9vay5jb20+Cj4gKyAqCj4gKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZG bXBlZy4KPiArICoKPiArICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vcgo+ICsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCj4gKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgo+ICsgKiB2ZXJzaW9uIDIuMSBvZiB0 aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPiArICoK PiArICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCj4gKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCj4gKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS7CoCBTZWUgdGhlIEdOVQo+ICsgKiBMZXNzZXIgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo+ICsgKgo+ICsgKiBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCj4gKyAq IExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m dHdhcmUKPiArICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG bG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxCj4gVVNBCj4gKyAqLwo+ICsKPiArI2lmbmRlZiBB VlVUSUxfSFdDT05URVhUX0QzRDEyVkFfSU5URVJOQUxfSAo+ICsjZGVmaW5lIEFWVVRJTF9IV0NP TlRFWFRfRDNEMTJWQV9JTlRFUk5BTF9ICj4gKwo+ICsvKioKPiArICogQGRlZiBDT0JKTUFDUk9T Cj4gKyAqCj4gKyAqIEBicmllZiBFbmFibGUgQyBzdHlsZSBpbnRlcmZhY2UgZm9yIEQzRDEyCj4g KyAqLwo+ICsjaWZuZGVmIENPQkpNQUNST1MKPiArI2RlZmluZSBDT0JKTUFDUk9TCj4gKyNlbmRp Zgo+ICsKPiArLyoqCj4gKyAqIEBkZWYgRFhfQ0hFQ0sKPiArICoKPiArICogQGJyaWVmIEEgY2hl Y2sgbWFjcm8gdXNlZCBieSBEM0QxMiBmdW5jdGlvbnMgaGlnaGx5IGZyZXF1ZW50bHkKPiArICov Cj4gKyNkZWZpbmUgRFhfQ0hFQ0soaHIpwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4gK8KgwqDCoCBkbyB7wqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBcCj4gK8KgwqDCoMKgwqDCoMKgIGlmIChGQUlMRUQoaHIpKcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGdvdG8gZmFpbDvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+ICvCoMKgwqAgfSB3aGlsZSAoMCkKPiArCj4gKy8qKgo+ ICsgKiBAZGVmIEQzRDEyX09CSkVDVF9SRUxFQVNFCj4gKyAqCj4gKyAqIEBicmllZiBBIHJlbGVh c2UgbWFjcm8gdXNlZCBieSBEM0QxMiBvYmplY3RzIGhpZ2hseSBmcmVxdWVudGx5Cj4gKyAqLwo+ ICsjZGVmaW5lIEQzRDEyX09CSkVDVF9SRUxFQVNFKHBJbnRlcmZhY2UpwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgXAo+ICvCoMKgwqAgZG8ge8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBcCj4gK8KgwqDCoMKgwqDCoMKgIGlmIChwSW50ZXJmYWNlKSB7wqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIElVbmtub3duX1JlbGVhc2UoKElVbmtub3duICopcEludGVyZmFjZSk7IFwK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwSW50ZXJmYWNlID0gTlVMTDvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPiArwqDCoMKgwqDCoMKgwqAgfcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+ICvCoMKgwqAgfSB3aGlsZSAoMCkKPiAr Cj4gKyNlbmRpZiAvKiBBVlVUSUxfSFdDT05URVhUX0QzRDEyVkFfSU5URVJOQUxfSCAqLwo+IFwg Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo+IGRpZmYgLS1naXQgYS9saWJhdnV0aWwvaHdjb250 ZXh0X2ludGVybmFsLmggYi9saWJhdnV0aWwvaHdjb250ZXh0X2ludGVybmFsLmgKPiBpbmRleCBl NjI2NjQ5NGFjLi40ZGY1MTZlZTZhIDEwMDY0NAo+IC0tLSBhL2xpYmF2dXRpbC9od2NvbnRleHRf aW50ZXJuYWwuaAo+ICsrKyBiL2xpYmF2dXRpbC9od2NvbnRleHRfaW50ZXJuYWwuaAo+IEBAIC0x NjUsNiArMTY1LDcgQEAgaW50IGZmX2h3ZnJhbWVfbWFwX3JlcGxhY2UoQVZGcmFtZSAqZHN0LCBj b25zdCBBVkZyYW1lCj4gKnNyYyk7Cj4gwqAKPiDCoGV4dGVybiBjb25zdCBIV0NvbnRleHRUeXBl IGZmX2h3Y29udGV4dF90eXBlX2N1ZGE7Cj4gwqBleHRlcm4gY29uc3QgSFdDb250ZXh0VHlwZSBm Zl9od2NvbnRleHRfdHlwZV9kM2QxMXZhOwo+ICtleHRlcm4gY29uc3QgSFdDb250ZXh0VHlwZSBm Zl9od2NvbnRleHRfdHlwZV9kM2QxMnZhOwo+IMKgZXh0ZXJuIGNvbnN0IEhXQ29udGV4dFR5cGUg ZmZfaHdjb250ZXh0X3R5cGVfZHJtOwo+IMKgZXh0ZXJuIGNvbnN0IEhXQ29udGV4dFR5cGUgZmZf aHdjb250ZXh0X3R5cGVfZHh2YTI7Cj4gwqBleHRlcm4gY29uc3QgSFdDb250ZXh0VHlwZSBmZl9o d2NvbnRleHRfdHlwZV9vcGVuY2w7Cj4gZGlmZiAtLWdpdCBhL2xpYmF2dXRpbC9waXhkZXNjLmMg Yi9saWJhdnV0aWwvcGl4ZGVzYy5jCj4gaW5kZXggNGU0YTYzZTI4Ny4uMGRiNDE2NzkzNCAxMDA2 NDQKPiAtLS0gYS9saWJhdnV0aWwvcGl4ZGVzYy5jCj4gKysrIGIvbGliYXZ1dGlsL3BpeGRlc2Mu Ywo+IEBAIC0yMzExLDYgKzIzMTEsMTAgQEAgc3RhdGljIGNvbnN0IEFWUGl4Rm10RGVzY3JpcHRv cgo+IGF2X3BpeF9mbXRfZGVzY3JpcHRvcnNbQVZfUElYX0ZNVF9OQl0gPSB7Cj4gwqDCoMKgwqDC oMKgwqDCoCAubmFtZSA9ICJkM2QxMSIsCj4gwqDCoMKgwqDCoMKgwqDCoCAuZmxhZ3MgPSBBVl9Q SVhfRk1UX0ZMQUdfSFdBQ0NFTCwKPiDCoMKgwqDCoCB9LAo+ICvCoMKgwqAgW0FWX1BJWF9GTVRf RDNEMTJdID0gewo+ICvCoMKgwqDCoMKgwqDCoCAubmFtZSA9ICJkM2QxMiIsCj4gK8KgwqDCoMKg wqDCoMKgIC5mbGFncyA9IEFWX1BJWF9GTVRfRkxBR19IV0FDQ0VMLAo+ICvCoMKgwqAgfSwKPiDC oMKgwqDCoCBbQVZfUElYX0ZNVF9HQlJQRjMyQkVdID0gewo+IMKgwqDCoMKgwqDCoMKgwqAgLm5h bWUgPSAiZ2JycGYzMmJlIiwKPiDCoMKgwqDCoMKgwqDCoMKgIC5uYl9jb21wb25lbnRzID0gMywK PiBkaWZmIC0tZ2l0IGEvbGliYXZ1dGlsL3BpeGZtdC5oIGIvbGliYXZ1dGlsL3BpeGZtdC5oCj4g aW5kZXggYTI2YzcyZDU2Yi4uNThmOWFkMjhiZCAxMDA2NDQKPiAtLS0gYS9saWJhdnV0aWwvcGl4 Zm10LmgKPiArKysgYi9saWJhdnV0aWwvcGl4Zm10LmgKPiBAQCAtNDI5LDYgKzQyOSwxMyBAQCBl bnVtIEFWUGl4ZWxGb3JtYXQgewo+IMKgwqDCoMKgIEFWX1BJWF9GTVRfR0JSQVAxNEJFLMKgIC8v LzwgcGxhbmFyIEdCUiA0OjQ6NDo0IDU2YnBwLCBiaWctZW5kaWFuCj4gwqDCoMKgwqAgQVZfUElY X0ZNVF9HQlJBUDE0TEUswqAgLy8vPCBwbGFuYXIgR0JSIDQ6NDo0OjQgNTZicHAsIGxpdHRsZS1l bmRpYW4KPiDCoAo+ICvCoMKgwqAgLyoqCj4gK8KgwqDCoMKgICogSGFyZHdhcmUgc3VyZmFjZXMg Zm9yIERpcmVjdDNEIDEyLgo+ICvCoMKgwqDCoCAqCj4gK8KgwqDCoMKgICogZGF0YVswXSBwb2lu dHMgdG8gYW4gQVZEM0QxMlZBRnJhbWUKPiArwqDCoMKgwqAgKi8KPiArwqDCoMKgIEFWX1BJWF9G TVRfRDNEMTIsCj4gKwo+IMKgwqDCoMKgIEFWX1BJWF9GTVRfTkLCoMKgwqDCoMKgwqDCoMKgIC8v LzwgbnVtYmVyIG9mIHBpeGVsIGZvcm1hdHMsIERPIE5PVCBVU0UgVEhJUyBpZgo+IHlvdSB3YW50 IHRvIGxpbmsgd2l0aCBzaGFyZWQgbGliYXYqIGJlY2F1c2UgdGhlIG51bWJlciBvZiBmb3JtYXRz IG1pZ2h0IGRpZmZlcgo+IGJldHdlZW4gdmVyc2lvbnMKPiDCoH07Cj4gwqAKPiBkaWZmIC0tZ2l0 IGEvbGliYXZ1dGlsL3Rlc3RzL2h3ZGV2aWNlLmMgYi9saWJhdnV0aWwvdGVzdHMvaHdkZXZpY2Uu Ywo+IGluZGV4IGM1NzU4NjYxM2EuLjlkNzk2NGY5ZWUgMTAwNjQ0Cj4gLS0tIGEvbGliYXZ1dGls L3Rlc3RzL2h3ZGV2aWNlLmMKPiArKysgYi9saWJhdnV0aWwvdGVzdHMvaHdkZXZpY2UuYwo+IEBA IC0xMzcsNiArMTM3LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB7Cj4gwqDCoMKgwqDCoMKgIHsg IjAiLCAiMSIsICIyIiB9IH0sCj4gwqDCoMKgwqAgeyBBVl9IV0RFVklDRV9UWVBFX0QzRDExVkEs Cj4gwqDCoMKgwqDCoMKgIHsgIjAiLCAiMSIsICIyIiB9IH0sCj4gK8KgwqDCoCB7IEFWX0hXREVW SUNFX1RZUEVfRDNEMTJWQSwKPiArwqDCoMKgwqDCoCB7ICIwIiwgIjEiLCAiMiIgfSB9LAo+IMKg wqDCoMKgIHsgQVZfSFdERVZJQ0VfVFlQRV9PUEVOQ0wsCj4gwqDCoMKgwqDCoMKgIHsgIjAuMCIs ICIwLjEiLCAiMS4wIiwgIjEuMSIgfSB9LAo+IMKgwqDCoMKgIHsgQVZfSFdERVZJQ0VfVFlQRV9W QUFQSSwKPiBkaWZmIC0tZ2l0IGEvbGliYXZ1dGlsL3ZlcnNpb24uaCBiL2xpYmF2dXRpbC92ZXJz aW9uLmgKPiBpbmRleCBjNWZhN2MzNjkyLi4wNjg0OTk2YmYyIDEwMDY0NAo+IC0tLSBhL2xpYmF2 dXRpbC92ZXJzaW9uLmgKPiArKysgYi9saWJhdnV0aWwvdmVyc2lvbi5oCj4gQEAgLTc5LDcgKzc5 LDcgQEAKPiDCoCAqLwo+IMKgCj4gwqAjZGVmaW5lIExJQkFWVVRJTF9WRVJTSU9OX01BSk9SwqAg NTgKPiAtI2RlZmluZSBMSUJBVlVUSUxfVkVSU0lPTl9NSU5PUsKgIDMyCj4gKyNkZWZpbmUgTElC QVZVVElMX1ZFUlNJT05fTUlOT1LCoCAzMwo+IMKgI2RlZmluZSBMSUJBVlVUSUxfVkVSU0lPTl9N SUNSTyAxMDAKPiDCoAo+IMKgI2RlZmluZSBMSUJBVlVUSUxfVkVSU0lPTl9JTlTCoMKgIEFWX1ZF UlNJT05fSU5UKExJQkFWVVRJTF9WRVJTSU9OX01BSk9SLCBcCgoKdjEyIExHVE0sIGFuZCB3b3Jr cyB3ZWxsIGluIG15IHRlc3RpbmcuIEknbGwgbWVyZ2UgdjEyIGlmIHRoZXJlIGFyZSBubwpvYmpl Y3Rpb25zIC8gY29tbWVudHMuCgpUaGFua3MKSGFpaGFvCgoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdApmZm1w ZWctZGV2ZWxAZmZtcGVnLm9yZwpodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9m Zm1wZWctZGV2ZWwKClRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbApm Zm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUi Lgo=