From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.3 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0930CC48BCF for ; Wed, 9 Jun 2021 20:07:33 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id C49306139A for ; Wed, 9 Jun 2021 20:07:32 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C49306139A Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id E2E776E9F9; Wed, 9 Jun 2021 20:07:27 +0000 (UTC) Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 98CB76E059; Wed, 9 Jun 2021 20:07:26 +0000 (UTC) IronPort-SDR: Vm1QHj0WB5uYAaOvZB4437WhQ4CVAsjkS+USIpHK/W5DjRd60tVRfqM6miXyil7aP6Le/47cnX jZ/PK0p/J6yw== X-IronPort-AV: E=McAfee;i="6200,9189,10010"; a="203307570" X-IronPort-AV: E=Sophos;i="5.83,261,1616482800"; d="scan'208";a="203307570" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Jun 2021 13:07:26 -0700 IronPort-SDR: G95YNv8NhKdxbMk2+2Qig1AzfGUW3zT8O1I6kUwTs382TS8HNdybaTItgIZRU0L7tQAjgW6NFj pWJL9p4W0/AA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.83,261,1616482800"; d="scan'208";a="413850678" Received: from irvmail001.ir.intel.com ([10.43.11.63]) by fmsmga007.fm.intel.com with ESMTP; 09 Jun 2021 13:07:23 -0700 Received: from [10.249.139.139] (mwajdecz-MOBL.ger.corp.intel.com [10.249.139.139]) by irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id 159K7LOl001222; Wed, 9 Jun 2021 21:07:22 +0100 To: John Harrison , Daniele Ceraolo Spurio , Matthew Brost , intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org References: <20210607180356.165785-1-matthew.brost@intel.com> <20210607180356.165785-8-matthew.brost@intel.com> <946237c6-1671-b419-5337-d5b8cc02a041@intel.com> <04a5897a-b521-b999-433e-81c417a19f70@intel.com> From: Michal Wajdeczko Message-ID: <4ec30495-2694-46da-225f-456ed2b6b4ee@intel.com> Date: Wed, 9 Jun 2021 22:07:21 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.10.2 MIME-Version: 1.0 In-Reply-To: <04a5897a-b521-b999-433e-81c417a19f70@intel.com> Content-Language: en-US Subject: Re: [Intel-gfx] [PATCH 07/13] drm/i915/guc: New definition of the CTB registration action X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" CgpPbiAwOS4wNi4yMDIxIDE5OjM2LCBKb2huIEhhcnJpc29uIHdyb3RlOgo+IE9uIDYvNy8yMDIx IDE4OjIzLCBEYW5pZWxlIENlcmFvbG8gU3B1cmlvIHdyb3RlOgo+PiBPbiA2LzcvMjAyMSAxMTow MyBBTSwgTWF0dGhldyBCcm9zdCB3cm90ZToKPj4+IEZyb206IE1pY2hhbCBXYWpkZWN6a28gPG1p Y2hhbC53YWpkZWN6a29AaW50ZWwuY29tPgo+Pj4KPj4+IERlZmluaXRpb24gb2YgdGhlIENUQiBy ZWdpc3RyYXRpb24gYWN0aW9uIGhhcyBjaGFuZ2VkLgo+Pj4gQWRkIHNvbWUgQUJJIGRvY3VtZW50 YXRpb24gYW5kIGltcGxlbWVudCByZXF1aXJlZCBjaGFuZ2VzLgo+Pj4KPj4+IFNpZ25lZC1vZmYt Ynk6IE1pY2hhbCBXYWpkZWN6a28gPG1pY2hhbC53YWpkZWN6a29AaW50ZWwuY29tPgo+Pj4gU2ln bmVkLW9mZi1ieTogTWF0dGhldyBCcm9zdCA8bWF0dGhldy5icm9zdEBpbnRlbC5jb20+Cj4+PiBD YzogUGlvdHIgUGnDs3Jrb3dza2kgPHBpb3RyLnBpb3Jrb3dza2lAaW50ZWwuY29tPiAjNAo+Pj4g LS0tCj4+PiDCoCAuLi4vZ3B1L2RybS9pOTE1L2d0L3VjL2FiaS9ndWNfYWN0aW9uc19hYmkuaMKg IHwgMTA3ICsrKysrKysrKysrKysrKysrKwo+Pj4gwqAgLi4uL2d0L3VjL2FiaS9ndWNfY29tbXVu aWNhdGlvbl9jdGJfYWJpLmjCoMKgwqDCoCB8wqDCoCA0IC0KPj4+IMKgIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L3VjL2ludGVsX2d1Y19jdC5jwqDCoMKgwqAgfMKgIDc2ICsrKysrKysrLS0tLS0K Pj4+IMKgIDMgZmlsZXMgY2hhbmdlZCwgMTUyIGluc2VydGlvbnMoKyksIDM1IGRlbGV0aW9ucygt KQo+Pj4KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9hYmkvZ3Vj X2FjdGlvbnNfYWJpLmgKPj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvYWJpL2d1Y19h Y3Rpb25zX2FiaS5oCj4+PiBpbmRleCA5MGVmZWY4YTczZTQuLjY0MjZmYzE4MzY5MiAxMDA2NDQK Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2FiaS9ndWNfYWN0aW9uc19hYmku aAo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvYWJpL2d1Y19hY3Rpb25zX2Fi aS5oCj4+PiBAQCAtNiw2ICs2LDExMyBAQAo+Pj4gwqAgI2lmbmRlZiBfQUJJX0dVQ19BQ1RJT05T X0FCSV9ICj4+PiDCoCAjZGVmaW5lIF9BQklfR1VDX0FDVElPTlNfQUJJX0gKPj4+IMKgICsvKioK Pj4+ICsgKiBET0M6IEhPU1QyR1VDX1JFR0lTVEVSX0NUQgo+Pj4gKyAqCj4+PiArICogVGhpcyBt ZXNzYWdlIGlzIHVzZWQgYXMgcGFydCBvZiB0aGUgYENUQiBiYXNlZCBjb21tdW5pY2F0aW9uYF8K Pj4+IHNldHVwLgo+Pj4gKyAqCj4+PiArICogVGhpcyBtZXNzYWdlIG11c3QgYmUgc2VudCBhcyBg TU1JTyBIWEcgTWVzc2FnZWBfLgo+Pj4gKyAqCj4+PiArICoKPj4+ICstLS0rLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSsKPj4+Cj4+PiArICrCoCB8wqDCoCB8IEJpdHPCoCB8Cj4+PiBEZXNjcmlwdGlvbsKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwKPj4+ICsgKgo+Pj4gKz09PSs9PT09 PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Kwo+Pj4KPj4+ICsgKsKgIHwgMCB8wqDCoMKgIDMxIHwgT1JJR0lOID0KPj4+IEdV Q19IWEdfT1JJR0lOX0hPU1RfwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+Pj4gKyAqwqAgfAo+Pj4gKy0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r Cj4+PiArICrCoCB8wqDCoCB8IDMwOjI4IHwgVFlQRSA9Cj4+PiBHVUNfSFhHX1RZUEVfUkVRVUVT VF/CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHwKPj4+ICsgKsKgIHwKPj4+ICstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+Pj4gKyAqwqAgfMKg wqAgfCAyNzoxNiB8IERBVEEwID0KPj4+IE1CWsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHwKPj4+ICsgKsKgIHwKPj4+ICstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+Pj4gKyAqwqAg fMKgwqAgfMKgIDE1OjAgfCBBQ1RJT04gPSBfYEdVQ19BQ1RJT05fSE9TVDJHVUNfUkVHSVNURVJf Q1RCYCA9Cj4+PiAweDUyMDDCoMKgwqDCoMKgwqDCoCB8Cj4+Cj4+IFNwZWNzIHNheXMgNDUwNQo+ Pgo+Pj4gKyAqCj4+PiArLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4+Pgo+Pj4gKyAqwqAgfCAxIHwgMzE6 MTIgfCBSRVNFUlZFRCA9Cj4+PiBNQlrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB8Cj4+PiArICrCoCB8Cj4+PiArLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPj4+ICsgKsKgIHzCoMKgIHzCoCAx MTo4IHwgKipUWVBFKiogLSB0eXBlIGZvciB0aGUgYENUCj4+PiBCdWZmZXJgX8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8Cj4+PiArICrCoCB8wqDCoCB8 Cj4+PiB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgfAo+Pj4gKyAqwqAgfMKgwqAgfMKgwqDCoMKgwqDCoCB8wqDCoCAtIF9g R1VDX0NUQl9UWVBFX0hPU1QyR1VDYCA9Cj4+PiAwwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+Pj4gKyAqwqAgfMKgwqAgfMKgwqDCoMKg wqDCoCB8wqDCoCAtIF9gR1VDX0NUQl9UWVBFX0dVQzJIT1NUYCA9Cj4+PiAxwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+Pj4gKyAqwqAg fAo+Pj4gKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4+PiArICrCoCB8wqDCoCB8wqDCoCA3OjAgfCAqKlNJWkUq KiAtIHNpemUgb2YgdGhlIGBDVCBCdWZmZXJgXyBpbiA0SyB1bml0cwo+Pj4gbWludXMgMcKgwqDC oMKgwqAgfAo+Pj4gKyAqCj4+PiArLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4+Pgo+Pj4gKyAqwqAgfCAy IHzCoCAzMTowIHwgKipERVNDX0FERFIqKiAtIEdHVFQgYWRkcmVzcyBvZiB0aGUgYENUQgo+Pj4g RGVzY3JpcHRvcmBfwqDCoMKgwqDCoMKgwqAgfAo+Pj4gKyAqCj4+PiArLS0tKy0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rCj4+Pgo+Pj4gKyAqwqAgfCAzIHzCoCAzMTowIHwgKipCVUZGX0FEREYqKiAtIEdHVFQgYWRk cmVzcyBvZiB0aGUgYENUCj4+PiBCdWZmZXJgX8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8Cj4+ PiArICoKPj4+ICstLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPj4+Cj4+PiArKgo+Pj4gKyAqCj4+PiArLS0t Ky0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rCj4+Pgo+Pj4gKyAqwqAgfMKgwqAgfCBCaXRzwqAgfAo+Pj4gRGVzY3Jp cHRpb27CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8Cj4+PiArICoK Pj4+ICs9PT0rPT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PSsKPj4+Cj4+PiArICrCoCB8IDAgfMKgwqDCoCAzMSB8IE9S SUdJTiA9Cj4+PiBHVUNfSFhHX09SSUdJTl9HVUNfwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8Cj4+PiArICrCoCB8Cj4+PiAr LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSsKPj4+ICsgKsKgIHzCoMKgIHwgMzA6MjggfCBUWVBFID0KPj4+IEdVQ19I WEdfVFlQRV9SRVNQT05TRV9TVUNDRVNTX8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgfAo+Pj4gKyAqwqAgfAo+Pj4gKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4+PiArICrC oCB8wqDCoCB8wqAgMjc6MCB8IERBVEEwID0KPj4+IE1CWsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHwKPj4+ICsgKgo+Pj4gKy0tLSstLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+Pj4K Pj4+ICsgKi8KPj4+ICsjZGVmaW5lIEdVQ19BQ1RJT05fSE9TVDJHVUNfUkVHSVNURVJfQ1RCwqDC oMKgwqDCoMKgwqAgMHg0NTA1IC8vIEZJWE1FIDB4NTIwMAo+Pgo+PiBXaHkgRklYTUU/IEFGQUlD UyB0aGUgc3BlY3Mgc3RpbGwgc2F5cyA0NTA1LCBldmVuIGlmIHdlIHBsYW4gdG8gdXBkYXRlCj4+ IGF0IHNvbWUgcG9pbnQgSSBkb247dCB0aGluayB0aGlzIGRlc2VydmVzIGEgRklYTUUgc2luY2Ug bm90aGluZyBpcwo+PiBpbmNvcnJlY3QuCj4+Cj4+PiArCj4+PiArI2RlZmluZSBIT1NUMkdVQ19S RUdJU1RFUl9DVEJfUkVRVUVTVF9NU0dfTEVOCj4+PiAoR1VDX0hYR19SRVFVRVNUX01TR19NSU5f TEVOICsgM3UpCj4+PiArI2RlZmluZSBIT1NUMkdVQ19SRUdJU1RFUl9DVEJfUkVRVUVTVF9NU0df MF9NQloKPj4+IEdVQ19IWEdfUkVRVUVTVF9NU0dfMF9EQVRBMAo+Pj4gKyNkZWZpbmUgSE9TVDJH VUNfUkVHSVNURVJfQ1RCX1JFUVVFU1RfTVNHXzFfTUJawqDCoMKgwqDCoMKgwqAgKDB4ZmZmZmYg PDwgMTIpCj4+PiArI2RlZmluZSBIT1NUMkdVQ19SRUdJU1RFUl9DVEJfUkVRVUVTVF9NU0dfMV9U WVBFwqDCoMKgICgweGYgPDwgOCkKPj4+ICsjZGVmaW5lwqDCoCBHVUNfQ1RCX1RZUEVfSE9TVDJH VUPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHUKPj4+ICsjZGVmaW5lwqDCoCBHVUNf Q1RCX1RZUEVfR1VDMkhPU1TCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMXUKPj4+ICsj ZGVmaW5lIEhPU1QyR1VDX1JFR0lTVEVSX0NUQl9SRVFVRVNUX01TR18xX1NJWkXCoMKgwqAgKDB4 ZmYgPDwgMCkKPj4+ICsjZGVmaW5lIEhPU1QyR1VDX1JFR0lTVEVSX0NUQl9SRVFVRVNUX01TR18y X0RFU0NfQUREUgo+Pj4gR1VDX0hYR19SRVFVRVNUX01TR19uX0RBVEFuCj4+PiArI2RlZmluZSBI T1NUMkdVQ19SRUdJU1RFUl9DVEJfUkVRVUVTVF9NU0dfM19CVUZGX0FERFIKPj4+IEdVQ19IWEdf UkVRVUVTVF9NU0dfbl9EQVRBbgo+Pgo+PiBUaGUgZnVsbCBtYXNrIHN0aWxsIHNlZW1zIGxpa2Ug b3ZlcmtpbGwgdG8gbWUgYW5kIEkgc3RpbGwgdGhpbmsgd2UKPj4gc2hvdWxkIHVzZSBCSVQoKS9H RU5NQVNLKCkgYW5kIGEgX01BU0sgcHJlZml4LCBidXQgbm90IGdvaW5nIHRvIGJsb2NrCj4+IG9u IGl0Lgo+Pgo+Pj4gKwo+Pj4gKyNkZWZpbmUgSE9TVDJHVUNfUkVHSVNURVJfQ1RCX1JFU1BPTlNF X01TR19MRU4KPj4+IEdVQ19IWEdfUkVTUE9OU0VfTVNHX01JTl9MRU4KPj4+ICsjZGVmaW5lIEhP U1QyR1VDX1JFR0lTVEVSX0NUQl9SRVNQT05TRV9NU0dfMF9NQloKPj4+IEdVQ19IWEdfUkVTUE9O U0VfTVNHXzBfREFUQTAKPj4+ICsKPj4+ICsvKioKPj4+ICsgKiBET0M6IEhPU1QyR1VDX0RFUkVH SVNURVJfQ1RCCj4+PiArICoKPj4+ICsgKiBUaGlzIG1lc3NhZ2UgaXMgdXNlZCBhcyBwYXJ0IG9m IHRoZSBgQ1RCIGJhc2VkIGNvbW11bmljYXRpb25gXwo+Pj4gdGVhcmRvd24uCj4+PiArICoKPj4+ ICsgKiBUaGlzIG1lc3NhZ2UgbXVzdCBiZSBzZW50IGFzIGBNTUlPIEhYRyBNZXNzYWdlYF8uCj4+ PiArICoKPj4+ICsgKgo+Pj4gKy0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+Pj4KPj4+ICsgKsKgIHzCoMKg IHwgQml0c8KgIHwKPj4+IERlc2NyaXB0aW9uwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgfAo+Pj4gKyAqCj4+PiArPT09Kz09PT09PT0rPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCj4+Pgo+Pj4gKyAq wqAgfCAwIHzCoMKgwqAgMzEgfCBPUklHSU4gPQo+Pj4gR1VDX0hYR19PUklHSU5fSE9TVF/CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB8Cj4+PiArICrCoCB8Cj4+PiArLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPj4+ICsgKsKgIHzCoMKgIHwgMzA6 MjggfCBUWVBFID0KPj4+IEdVQ19IWEdfVFlQRV9SRVFVRVNUX8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+Pj4gKyAqwqAg fAo+Pj4gKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4+PiArICrCoCB8wqDCoCB8IDI3OjE2IHwgREFUQTAgPQo+ Pj4gTUJawqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+Pj4gKyAq wqAgfAo+Pj4gKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4+PiArICrCoCB8wqDCoCB8wqAgMTU6MCB8IEFDVElP TiA9IF9gR1VDX0FDVElPTl9IT1NUMkdVQ19ERVJFR0lTVEVSX0NUQmAgPQo+Pj4gMHg1MjAxwqDC oMKgwqDCoCB8Cj4+Cj4+IFNwZWNzIHNheXMgNDUwNgo+Pgo+IEkgd291bGQgc2F5IHRoYXQgdGhl IGVudW0gdmFsdWUgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZCBpbiB0aGUgc3RydWN0dXJlCj4gZGVm aW5pdGlvbi4gSSB3b3VsZCBhbHNvIGFyZ3VlIHRoYXQgdGhlcmUgaXMgbm8gcG9pbnQgaW4gcmVw ZWF0aW5nIHRoZQo+IGNvbW1vbiBoZWFkZXIgc3RydWN0dXJlIGZvciBldmVyeSBzaW5nbGUgSDJH IGFjdGlvbiBkZWZpbml0aW9uLiBUaGF0IGlzCj4ganVzdCBvdmVybHkgdmVyYm9zZSBhbmQgbWFr ZXMgaXQgaGFyZGVyIHRvIHJlYWQgdGhlIHNwZWMuIEl0IGltcGxpZXMKPiB0aGF0IGV2ZXJ5IGFj dGlvbiBoYXMgYSBkaWZmZXJlbnQgaGVhZGVyIHN0cnVjdHVyZSBhbmQgbXVzdCBiZSBjb2RlZAo+ IGluZGl2aWR1YWxseS4KCmJ1dCBzb21lIGFjdGlvbnMgYXJlIGRlZmluZWQgYXMgUkVRVUVTVCBz b21lIGFzIEVWRU5ULCBzbyB3ZSBuZWVkIHRvIHNheQp0aGF0LCBhbHNvIGVhY2ggUkVRVUVTVCBh Y3Rpb24gbWF5IGRlZmluZSBpdHMgb3duIERBVEEwLCBzbyBhZ2FpbiB3ZQpzdGlsbCBuZWVkIHRv IGRlZmluZSB0aGVzZSBiaXRzIHNvbWV3aGVyZQoKPiAKPiBQZXJzb25hbGx5LCBJIGRvbid0IGJl bGlldmUgd2Ugc2hvdWxkIGJlIHJlcGxpY2F0aW5nIHRoZSBlbnRpcmUgR3VDIEFQSQo+IHNwZWMg aW4gdGhlIGRyaXZlciBoZWFkZXIgZmlsZXMgYW55d2F5LiBUaGlzIGlzIG5vdCBzb21ldGhpbmcg dGhhdCBpcwo+IGRlZmluZWQgYnkgdGhlIGk5MTUgZHJpdmVyIHNvIHRoZSBpOTE1IGRyaXZlciBz aG91bGQgbm90IGJlIGRlZmluaW5nIGl0IQo+IEluc3RlYWQsIGp1c3QgaW5jbHVkZSBhIGxpbmsg b3IgcG9pbnRlciB0byB3aGVyZSB0aGUgYWN0dWFsIHNwZWMgY2FuIGJlCj4gZm91bmQuIFdlIGRv bid0IGNvcHkgdGhlIGVudGlyZSBic3BlYyBwYWdlIGZvciBldmVyeSByZWdpc3RlciB0aGF0IHRo ZQo+IGRyaXZlciB0b3VjaGVzLCBzbyB3aHkgc2hvdWxkIHRoaXMgYmUgYW55IGRpZmZlcmVudD8K CnRvIHNvbWUgZXh0ZW5kIHdlIGhhdmUgdG8gcmVwbGljYXRlIGF0IGxlYXN0IHBhcnQgb2YgdGhl IEd1QyBBQkkgc3BlYywKcGFydCB0aGF0IGRlZmluZXMgYWxsIGJpdHMsIGFuZCBJTUhPIHRoZXJl IGlzIG5vdGhpbmcgd3JvbmcgaWYgaXQgY29tZXMKd2l0aCBmdWxsIG1lc3NhZ2UgbGF5b3V0IGRl ZmluaXRpb25zLCBlc3BlY2lhbGx5IGlmIHlvdSBjb21wYXJlIHRoYXQKd2l0aCBwcmV2aW91cyBh cHByb2FjaCwgd2VyZSBIMkcgYWN0aW9uIGRlZmluaXRpb25zIHdlcmUgbGltaXRlZCBqdXN0IHRv CnNpbmdsZSBlbnVtIHZhbHVlIChhbmQgdG8gZmluZCBvdXQgaG93IHRvIHVzZSBnaXZlbiBIMkcg eW91IGhhZCB0byBsb29rCmludG8gZmlybXdhcmUgc291cmNlIGNvZGUpCgpzbyB3aGlsZSB3ZSBr ZWVwIHRoZXNlIGFiaS5oIGZpbGVzIGluIGtlcm5lbCByZXBvLCB0aGV5IHNoYWxsIGJlIHRyZWF0 ZWQKYXMgcmVhZC1vbmx5IGltcG9ydGVkIGV4dGVybmFsIGludGVyZmFjZSBkZWZpbml0aW9ucywg ZnJvbSB3aGljaCB3ZSBqdXN0CnVzZSBhbGwgI2RlZmluZSBmb3IgY29kaW5nIGFuZCBET0M6IGZv ciBkb2N1bWVudGF0aW9uIChsYXR0ZXIgYXQgbGVhc3QKdW50aWwgR3VDIHdpbGwgcmVsZWFzZSBp dHMgc3BlYyB0byB0aGUgcHVibGljKQoKPiAKPiBKb2huLgo+IAo+IAo+Pj4gKyAqCj4+PiArLS0t Ky0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rCj4+Pgo+Pj4gKyAqwqAgfCAxIHwgMzE6MTIgfCBSRVNFUlZFRCA9Cj4+ PiBNQlrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8Cj4+PiArICrCoCB8Cj4+ PiArLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSsKPj4+ICsgKsKgIHzCoMKgIHzCoCAxMTo4IHwgKipUWVBFKiogLSB0 eXBlIG9mIHRoZSBgQ1QKPj4+IEJ1ZmZlcmBfwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+Pj4gKyAqwqAgfMKgwqAgfAo+Pj4gfMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwK Pj4+ICsgKsKgIHzCoMKgIHzCoMKgwqDCoMKgwqAgfCBzZWUKPj4+IGBHVUNfQUNUSU9OX0hPU1Qy R1VDX1JFR0lTVEVSX0NUQmBfwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHwKPj4+ICsgKsKgIHwKPj4+ICstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+Pj4gKyAqwqAgfMKgwqAgfMKg wqAgNzowIHwgUkVTRVJWRUQgPQo+Pj4gTUJawqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgfAo+Pj4gKyAqCj4+PiArLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4+Pgo+Pj4gKyoKPj4+ICsg Kgo+Pj4gKy0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+Pj4KPj4+ICsgKsKgIHzCoMKgIHwgQml0c8KgIHwK Pj4+IERlc2NyaXB0aW9uwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg fAo+Pj4gKyAqCj4+PiArPT09Kz09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCj4+Pgo+Pj4gKyAqwqAgfCAwIHzCoMKg wqAgMzEgfCBPUklHSU4gPQo+Pj4gR1VDX0hYR19PUklHSU5fR1VDX8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+Pj4gKyAq wqAgfAo+Pj4gKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4+PiArICrCoCB8wqDCoCB8IDMwOjI4IHwgVFlQRSA9 Cj4+PiBHVUNfSFhHX1RZUEVfUkVTUE9OU0VfU1VDQ0VTU1/CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwKPj4+ICsgKsKgIHwKPj4+ICstLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Kwo+Pj4gKyAqwqAgfMKgwqAgfMKgIDI3OjAgfCBEQVRBMCA9Cj4+PiBNQlrCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8Cj4+PiArICoKPj4+ICstLS0rLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSsKPj4+Cj4+PiArICovCj4+PiArI2RlZmluZSBHVUNfQUNUSU9OX0hPU1QyR1VDX0RFUkVH SVNURVJfQ1RCwqDCoMKgwqDCoMKgwqAgMHg0NTA2IC8vIEZJWE1FCj4+PiAweDUyMDEKPj4KPj4g U2FtZSBjb21tZW50IGZvciB0aGUgRklYTUUgYXMgYWJvdmUKPj4KPj4+ICsKPj4+ICsjZGVmaW5l IEhPU1QyR1VDX0RFUkVHSVNURVJfQ1RCX1JFUVVFU1RfTVNHX0xFTgo+Pj4gKEdVQ19IWEdfUkVR VUVTVF9NU0dfTUlOX0xFTiArIDF1KQo+Pj4gKyNkZWZpbmUgSE9TVDJHVUNfREVSRUdJU1RFUl9D VEJfUkVRVUVTVF9NU0dfMF9NQloKPj4+IEdVQ19IWEdfUkVRVUVTVF9NU0dfMF9EQVRBMAo+Pj4g KyNkZWZpbmUgSE9TVDJHVUNfREVSRUdJU1RFUl9DVEJfUkVRVUVTVF9NU0dfMV9NQlrCoMKgwqAg KDB4ZmZmZmYgPDwgMTIpCj4+PiArI2RlZmluZSBIT1NUMkdVQ19ERVJFR0lTVEVSX0NUQl9SRVFV RVNUX01TR18xX1RZUEXCoMKgwqAgKDB4ZiA8PCA4KQo+Pj4gKyNkZWZpbmUgSE9TVDJHVUNfREVS RUdJU1RFUl9DVEJfUkVRVUVTVF9NU0dfMV9NQloywqDCoMKgICgweGZmIDw8IDApCj4+PiArCj4+ PiArI2RlZmluZSBIT1NUMkdVQ19ERVJFR0lTVEVSX0NUQl9SRVNQT05TRV9NU0dfTEVOCj4+PiBH VUNfSFhHX1JFU1BPTlNFX01TR19NSU5fTEVOCj4+PiArI2RlZmluZSBIT1NUMkdVQ19ERVJFR0lT VEVSX0NUQl9SRVNQT05TRV9NU0dfMF9NQloKPj4+IEdVQ19IWEdfUkVTUE9OU0VfTVNHXzBfREFU QTAKPj4+ICsKPj4+ICsvKiBsZWdhY3kgZGVmaW5pdGlvbnMgKi8KPj4+ICsKPj4+IMKgIGVudW0g aW50ZWxfZ3VjX2FjdGlvbiB7Cj4+PiDCoMKgwqDCoMKgIElOVEVMX0dVQ19BQ1RJT05fREVGQVVM VCA9IDB4MCwKPj4+IMKgwqDCoMKgwqAgSU5URUxfR1VDX0FDVElPTl9SRVFVRVNUX1BSRUVNUFRJ T04gPSAweDIsCj4+PiBkaWZmIC0tZ2l0Cj4+PiBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3Vj L2FiaS9ndWNfY29tbXVuaWNhdGlvbl9jdGJfYWJpLmgKPj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvdWMvYWJpL2d1Y19jb21tdW5pY2F0aW9uX2N0Yl9hYmkuaAo+Pj4gaW5kZXggYzJhMDY5 YTc4ZTAxLi4xMjdiMjU2YTY2MmMgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC91Yy9hYmkvZ3VjX2NvbW11bmljYXRpb25fY3RiX2FiaS5oCj4+PiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC91Yy9hYmkvZ3VjX2NvbW11bmljYXRpb25fY3RiX2FiaS5oCj4+PiBA QCAtMTEyLDEwICsxMTIsNiBAQCBzdGF0aWNfYXNzZXJ0KHNpemVvZihzdHJ1Y3QgZ3VjX2N0X2J1 ZmZlcl9kZXNjKQo+Pj4gPT0gNjQpOwo+Pj4gwqDCoCAqIC0gKipmbGFncyoqLCBob2xkcyB2YXJp b3VzIGJpdHMgdG8gY29udHJvbCBtZXNzYWdlIGhhbmRsaW5nCj4+PiDCoMKgICovCj4+PiDCoCAt LyogVHlwZSBvZiBjb21tYW5kIHRyYW5zcG9ydCBidWZmZXIgKi8KPj4+IC0jZGVmaW5lIElOVEVM X0dVQ19DVF9CVUZGRVJfVFlQRV9TRU5EwqDCoMKgIDB4MHUKPj4+IC0jZGVmaW5lIElOVEVMX0dV Q19DVF9CVUZGRVJfVFlQRV9SRUNWwqDCoMKgIDB4MXUKPj4+IC0KPj4+IMKgIC8qCj4+PiDCoMKg ICogRGVmaW5pdGlvbiBvZiB0aGUgY29tbWFuZCB0cmFuc3BvcnQgbWVzc2FnZSBoZWFkZXIgKERX MCkKPj4+IMKgwqAgKgo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3Vj L2ludGVsX2d1Y19jdC5jCj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1 Y19jdC5jCj4+PiBpbmRleCAzMjQxYTQ3NzE5NmYuLjZhMjliZTc3OWNjOSAxMDA2NDQKPj4+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19jdC5jCj4+PiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfY3QuYwo+Pj4gQEAgLTEwMyw5ICsx MDMsOSBAQCB2b2lkIGludGVsX2d1Y19jdF9pbml0X2Vhcmx5KHN0cnVjdCBpbnRlbF9ndWNfY3QK Pj4+ICpjdCkKPj4+IMKgIHN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciAqZ3VjX2N0X2J1ZmZlcl90 eXBlX3RvX3N0cih1MzIgdHlwZSkKPj4+IMKgIHsKPj4+IMKgwqDCoMKgwqAgc3dpdGNoICh0eXBl KSB7Cj4+PiAtwqDCoMKgIGNhc2UgSU5URUxfR1VDX0NUX0JVRkZFUl9UWVBFX1NFTkQ6Cj4+PiAr wqDCoMKgIGNhc2UgR1VDX0NUQl9UWVBFX0hPU1QyR1VDOgo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKg IHJldHVybiAiU0VORCI7Cj4+PiAtwqDCoMKgIGNhc2UgSU5URUxfR1VDX0NUX0JVRkZFUl9UWVBF X1JFQ1Y6Cj4+PiArwqDCoMKgIGNhc2UgR1VDX0NUQl9UWVBFX0dVQzJIT1NUOgo+Pj4gwqDCoMKg wqDCoMKgwqDCoMKgIHJldHVybiAiUkVDViI7Cj4+PiDCoMKgwqDCoMKgIGRlZmF1bHQ6Cj4+PiDC oMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuICI8aW52YWxpZD4iOwo+Pj4gQEAgLTEzNiwyNSArMTM2 LDMzIEBAIHN0YXRpYyB2b2lkIGd1Y19jdF9idWZmZXJfaW5pdChzdHJ1Y3QKPj4+IGludGVsX2d1 Y19jdF9idWZmZXIgKmN0YiwKPj4+IMKgwqDCoMKgwqAgZ3VjX2N0X2J1ZmZlcl9yZXNldChjdGIp Owo+Pj4gwqAgfQo+Pj4gwqAgLXN0YXRpYyBpbnQgZ3VjX2FjdGlvbl9yZWdpc3Rlcl9jdF9idWZm ZXIoc3RydWN0IGludGVsX2d1YyAqZ3VjLAo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgdTMyIGRlc2NfYWRkciwKPj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHUzMiB0eXBlKQo+Pj4gK3N0YXRpYyBpbnQgZ3VjX2FjdGlvbl9y ZWdpc3Rlcl9jdF9idWZmZXIoc3RydWN0IGludGVsX2d1YyAqZ3VjLCB1MzIKPj4+IHR5cGUsCj4+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgZGVzY19hZGRy LCB1MzIgYnVmZl9hZGRyLCB1MzIgc2l6ZSkKPj4+IMKgIHsKPj4+IC3CoMKgwqAgdTMyIGFjdGlv bltdID0gewo+Pj4gLcKgwqDCoMKgwqDCoMKgIElOVEVMX0dVQ19BQ1RJT05fUkVHSVNURVJfQ09N TUFORF9UUkFOU1BPUlRfQlVGRkVSLAo+Pj4gLcKgwqDCoMKgwqDCoMKgIGRlc2NfYWRkciwKPj4+ IC3CoMKgwqDCoMKgwqDCoCBzaXplb2Yoc3RydWN0IGd1Y19jdF9idWZmZXJfZGVzYyksCj4+PiAt wqDCoMKgwqDCoMKgwqAgdHlwZQo+Pj4gK8KgwqDCoCB1MzIgcmVxdWVzdFtIT1NUMkdVQ19SRUdJ U1RFUl9DVEJfUkVRVUVTVF9NU0dfTEVOXSA9IHsKPj4+ICvCoMKgwqDCoMKgwqDCoCBGSUVMRF9Q UkVQKEdVQ19IWEdfTVNHXzBfT1JJR0lOLCBHVUNfSFhHX09SSUdJTl9IT1NUKSB8Cj4+PiArwqDC oMKgwqDCoMKgwqAgRklFTERfUFJFUChHVUNfSFhHX01TR18wX1RZUEUsIEdVQ19IWEdfVFlQRV9S RVFVRVNUKSB8Cj4+PiArwqDCoMKgwqDCoMKgwqAgRklFTERfUFJFUChHVUNfSFhHX1JFUVVFU1Rf TVNHXzBfQUNUSU9OLAo+Pj4gR1VDX0FDVElPTl9IT1NUMkdVQ19SRUdJU1RFUl9DVEIpLAo+Pgo+ PiBJTU8gd2UgY291bGQgdXNlIGEgbWFjcm8gb3IgMiBmb3IgdGhlIEhYRyBoZWFkZXIsIHRvIGF2 b2lkIGFsbCB0aGVzZQo+PiBsaW5lcywgd2hpY2ggYXJlIGhhcmQgdG8gcmVhZC4gc29tZXRoaW5n IGxpa2U6Cj4+Cj4+IEdVQ19IWEdfSEVBREVSKG9yaWdpbiwgdHlwZSwgZGF0YSwgYWN0aW9uKSBc Cj4+IMKgwqDCoCAoRklFTERfUFJFUChHVUNfSFhHX01TR18wX09SSUdJTiwgb3JpZ2luKSB8IFwK Pj4gwqDCoMKgwqAgRklFTERfUFJFUChHVUNfSFhHX01TR18wX1RZUEUsIHR5cGUpIHwgXAo+PiBG SUVMRF9QUkVQKEdVQ19IWEdfTVNHXzBfREFUQTAsIGRhdGEpIHwgXAo+PiDCoMKgwqDCoCBGSUVM RF9QUkVQKEdVQ19IWEdfUkVRVUVTVF9NU0dfMF9BQ1RJT04sIGFjdGlvbikpCj4+Cj4+IEgyR19I RUFERVIodHlwZSwgZGF0YSwgYWN0aW9uKSBcCj4+IMKgwqDCoCBHVUNfSFhHX0hFQURFUihHVUNf SFhHX09SSUdJTl9IT1NULCB0eXBlLCBkYXRhLCBhY3Rpb24pCj4+Cj4+IGFuZCB0aGVuIGNhbGwK Pj4KPj4gSDJHX0hFQURFUihHVUNfSFhHX1RZUEVfUkVRVUVTVCwgMCwgR1VDX0FDVElPTl9IT1NU MkdVQ19SRUdJU1RFUl9DVEIpCj4+Cj4+Cj4+IE5vdCBhIGJsb2NrZXIuCj4+Cj4+IERhbmllbGUK Pj4KPj4+ICsgRklFTERfUFJFUChIT1NUMkdVQ19SRUdJU1RFUl9DVEJfUkVRVUVTVF9NU0dfMV9T SVpFLCBzaXplIC8gU1pfNEsgLQo+Pj4gMSkgfAo+Pj4gK8KgwqDCoMKgwqDCoMKgIEZJRUxEX1BS RVAoSE9TVDJHVUNfUkVHSVNURVJfQ1RCX1JFUVVFU1RfTVNHXzFfVFlQRSwgdHlwZSksCj4+PiAr IEZJRUxEX1BSRVAoSE9TVDJHVUNfUkVHSVNURVJfQ1RCX1JFUVVFU1RfTVNHXzJfREVTQ19BRERS LCBkZXNjX2FkZHIpLAo+Pj4gKyBGSUVMRF9QUkVQKEhPU1QyR1VDX1JFR0lTVEVSX0NUQl9SRVFV RVNUX01TR18zX0JVRkZfQUREUiwgYnVmZl9hZGRyKSwKPj4+IMKgwqDCoMKgwqAgfTsKPj4+IMKg IC3CoMKgwqAgLyogQ2FuJ3QgdXNlIGdlbmVyaWMgc2VuZCgpLCBDVCByZWdpc3RyYXRpb24gbXVz dCBnbyBvdmVyIE1NSU8gKi8KPj4+IC3CoMKgwqAgcmV0dXJuIGludGVsX2d1Y19zZW5kX21taW8o Z3VjLCBhY3Rpb24sIEFSUkFZX1NJWkUoYWN0aW9uKSwKPj4+IE5VTEwsIDApOwo+Pj4gK8KgwqDC oCBHRU1fQlVHX09OKHR5cGUgIT0gR1VDX0NUQl9UWVBFX0hPU1QyR1VDICYmIHR5cGUgIT0KPj4+ IEdVQ19DVEJfVFlQRV9HVUMySE9TVCk7Cj4+PiArwqDCoMKgIEdFTV9CVUdfT04oc2l6ZSAlIFNa XzRLKTsKPj4+ICsKPj4+ICvCoMKgwqAgLyogQ1QgcmVnaXN0cmF0aW9uIG11c3QgZ28gb3ZlciBN TUlPICovCj4+PiArwqDCoMKgIHJldHVybiBpbnRlbF9ndWNfc2VuZF9tbWlvKGd1YywgcmVxdWVz dCwgQVJSQVlfU0laRShyZXF1ZXN0KSwKPj4+IE5VTEwsIDApOwo+Pj4gwqAgfQo+Pj4gwqAgLXN0 YXRpYyBpbnQgY3RfcmVnaXN0ZXJfYnVmZmVyKHN0cnVjdCBpbnRlbF9ndWNfY3QgKmN0LCB1MzIK Pj4+IGRlc2NfYWRkciwgdTMyIHR5cGUpCj4+PiArc3RhdGljIGludCBjdF9yZWdpc3Rlcl9idWZm ZXIoc3RydWN0IGludGVsX2d1Y19jdCAqY3QsIHUzMiB0eXBlLAo+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIGRlc2NfYWRkciwgdTMyIGJ1ZmZfYWRkciwgdTMyIHNp emUpCj4+PiDCoCB7Cj4+PiAtwqDCoMKgIGludCBlcnIgPSBndWNfYWN0aW9uX3JlZ2lzdGVyX2N0 X2J1ZmZlcihjdF90b19ndWMoY3QpLAo+Pj4gZGVzY19hZGRyLCB0eXBlKTsKPj4+ICvCoMKgwqAg aW50IGVycjsKPj4+IMKgICvCoMKgwqAgZXJyID0gZ3VjX2FjdGlvbl9yZWdpc3Rlcl9jdF9idWZm ZXIoY3RfdG9fZ3VjKGN0KSwgdHlwZSwKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGRlc2NfYWRkciwgYnVmZl9hZGRyLCBzaXplKTsKPj4+IMKgwqDC oMKgwqAgaWYgKHVubGlrZWx5KGVycikpCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgQ1RfRVJST1Io Y3QsICJGYWlsZWQgdG8gcmVnaXN0ZXIgJXMgYnVmZmVyIChlcnI9JWQpXG4iLAo+Pj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBndWNfY3RfYnVmZmVyX3R5cGVfdG9fc3RyKHR5cGUpLCBl cnIpOwo+Pj4gQEAgLTE2MywxNCArMTcxLDE3IEBAIHN0YXRpYyBpbnQgY3RfcmVnaXN0ZXJfYnVm ZmVyKHN0cnVjdAo+Pj4gaW50ZWxfZ3VjX2N0ICpjdCwgdTMyIGRlc2NfYWRkciwgdTMyIHR5cGUp Cj4+PiDCoCDCoCBzdGF0aWMgaW50IGd1Y19hY3Rpb25fZGVyZWdpc3Rlcl9jdF9idWZmZXIoc3Ry dWN0IGludGVsX2d1YyAqZ3VjLAo+Pj4gdTMyIHR5cGUpCj4+PiDCoCB7Cj4+PiAtwqDCoMKgIHUz MiBhY3Rpb25bXSA9IHsKPj4+IC3CoMKgwqDCoMKgwqDCoCBJTlRFTF9HVUNfQUNUSU9OX0RFUkVH SVNURVJfQ09NTUFORF9UUkFOU1BPUlRfQlVGRkVSLAo+Pj4gLcKgwqDCoMKgwqDCoMKgIENUQl9P V05FUl9IT1NULAo+Pj4gLcKgwqDCoMKgwqDCoMKgIHR5cGUKPj4+ICvCoMKgwqAgdTMyIHJlcXVl c3RbSE9TVDJHVUNfREVSRUdJU1RFUl9DVEJfUkVRVUVTVF9NU0dfTEVOXSA9IHsKPj4+ICvCoMKg wqDCoMKgwqDCoCBGSUVMRF9QUkVQKEdVQ19IWEdfTVNHXzBfT1JJR0lOLCBHVUNfSFhHX09SSUdJ Tl9IT1NUKSB8Cj4+PiArwqDCoMKgwqDCoMKgwqAgRklFTERfUFJFUChHVUNfSFhHX01TR18wX1RZ UEUsIEdVQ19IWEdfVFlQRV9SRVFVRVNUKSB8Cj4+PiArwqDCoMKgwqDCoMKgwqAgRklFTERfUFJF UChHVUNfSFhHX1JFUVVFU1RfTVNHXzBfQUNUSU9OLAo+Pj4gR1VDX0FDVElPTl9IT1NUMkdVQ19E RVJFR0lTVEVSX0NUQiksCj4+PiArwqDCoMKgwqDCoMKgwqAgRklFTERfUFJFUChIT1NUMkdVQ19E RVJFR0lTVEVSX0NUQl9SRVFVRVNUX01TR18xX1RZUEUsIHR5cGUpLAo+Pj4gwqDCoMKgwqDCoCB9 Owo+Pj4gwqAgLcKgwqDCoCAvKiBDYW4ndCB1c2UgZ2VuZXJpYyBzZW5kKCksIENUIGRlcmVnaXN0 cmF0aW9uIG11c3QgZ28gb3Zlcgo+Pj4gTU1JTyAqLwo+Pj4gLcKgwqDCoCByZXR1cm4gaW50ZWxf Z3VjX3NlbmRfbW1pbyhndWMsIGFjdGlvbiwgQVJSQVlfU0laRShhY3Rpb24pLAo+Pj4gTlVMTCwg MCk7Cj4+PiArwqDCoMKgIEdFTV9CVUdfT04odHlwZSAhPSBHVUNfQ1RCX1RZUEVfSE9TVDJHVUMg JiYgdHlwZSAhPQo+Pj4gR1VDX0NUQl9UWVBFX0dVQzJIT1NUKTsKPj4+ICsKPj4+ICvCoMKgwqAg LyogQ1QgZGVyZWdpc3RyYXRpb24gbXVzdCBnbyBvdmVyIE1NSU8gKi8KPj4+ICvCoMKgwqAgcmV0 dXJuIGludGVsX2d1Y19zZW5kX21taW8oZ3VjLCByZXF1ZXN0LCBBUlJBWV9TSVpFKHJlcXVlc3Qp LAo+Pj4gTlVMTCwgMCk7Cj4+PiDCoCB9Cj4+PiDCoCDCoCBzdGF0aWMgaW50IGN0X2RlcmVnaXN0 ZXJfYnVmZmVyKHN0cnVjdCBpbnRlbF9ndWNfY3QgKmN0LCB1MzIgdHlwZSkKPj4+IEBAIC0yNTgs NyArMjY5LDcgQEAgdm9pZCBpbnRlbF9ndWNfY3RfZmluaShzdHJ1Y3QgaW50ZWxfZ3VjX2N0ICpj dCkKPj4+IMKgIGludCBpbnRlbF9ndWNfY3RfZW5hYmxlKHN0cnVjdCBpbnRlbF9ndWNfY3QgKmN0 KQo+Pj4gwqAgewo+Pj4gwqDCoMKgwqDCoCBzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSBjdF90b19n dWMoY3QpOwo+Pj4gLcKgwqDCoCB1MzIgYmFzZSwgY21kczsKPj4+ICvCoMKgwqAgdTMyIGJhc2Us IGRlc2MsIGNtZHM7Cj4+PiDCoMKgwqDCoMKgIHZvaWQgKmJsb2I7Cj4+PiDCoMKgwqDCoMKgIGlu dCBlcnI7Cj4+PiDCoCBAQCAtMjc0LDIzICsyODUsMjYgQEAgaW50IGludGVsX2d1Y19jdF9lbmFi bGUoc3RydWN0IGludGVsX2d1Y19jdCAqY3QpCj4+PiDCoMKgwqDCoMKgIEdFTV9CVUdfT04oYmxv YiAhPSBjdC0+Y3Ricy5zZW5kLmRlc2MpOwo+Pj4gwqAgwqDCoMKgwqDCoCAvKiAocmUpaW5pdGlh bGl6ZSBkZXNjcmlwdG9ycyAqLwo+Pj4gLcKgwqDCoCBjbWRzID0gYmFzZSArIHB0cmRpZmYoY3Qt PmN0YnMuc2VuZC5jbWRzLCBibG9iKTsKPj4+IMKgwqDCoMKgwqAgZ3VjX2N0X2J1ZmZlcl9yZXNl dCgmY3QtPmN0YnMuc2VuZCk7Cj4+PiAtCj4+PiAtwqDCoMKgIGNtZHMgPSBiYXNlICsgcHRyZGlm ZihjdC0+Y3Ricy5yZWN2LmNtZHMsIGJsb2IpOwo+Pj4gwqDCoMKgwqDCoCBndWNfY3RfYnVmZmVy X3Jlc2V0KCZjdC0+Y3Ricy5yZWN2KTsKPj4+IMKgIMKgwqDCoMKgwqAgLyoKPj4+IMKgwqDCoMKg wqDCoCAqIFJlZ2lzdGVyIGJvdGggQ1QgYnVmZmVycyBzdGFydGluZyB3aXRoIFJFQ1YgYnVmZmVy Lgo+Pj4gwqDCoMKgwqDCoMKgICogRGVzY3JpcHRvcnMgYXJlIGluIGZpcnN0IGhhbGYgb2YgdGhl IGJsb2IuCj4+PiDCoMKgwqDCoMKgwqAgKi8KPj4+IC3CoMKgwqAgZXJyID0gY3RfcmVnaXN0ZXJf YnVmZmVyKGN0LCBiYXNlICsgcHRyZGlmZihjdC0+Y3Ricy5yZWN2LmRlc2MsCj4+PiBibG9iKSwK Pj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBJTlRFTF9HVUNfQ1RfQlVGRkVS X1RZUEVfUkVDVik7Cj4+PiArwqDCoMKgIGRlc2MgPSBiYXNlICsgcHRyZGlmZihjdC0+Y3Ricy5y ZWN2LmRlc2MsIGJsb2IpOwo+Pj4gK8KgwqDCoCBjbWRzID0gYmFzZSArIHB0cmRpZmYoY3QtPmN0 YnMucmVjdi5jbWRzLCBibG9iKTsKPj4+ICvCoMKgwqAgZXJyID0gY3RfcmVnaXN0ZXJfYnVmZmVy KGN0LCBHVUNfQ1RCX1RZUEVfR1VDMkhPU1QsCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgZGVzYywgY21kcywgY3QtPmN0YnMucmVjdi5zaXplICogNCk7Cj4+PiArCj4+PiDC oMKgwqDCoMKgIGlmICh1bmxpa2VseShlcnIpKQo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8g ZXJyX291dDsKPj4+IMKgIC3CoMKgwqAgZXJyID0gY3RfcmVnaXN0ZXJfYnVmZmVyKGN0LCBiYXNl ICsKPj4+IHB0cmRpZmYoY3QtPmN0YnMuc2VuZC5kZXNjLCBibG9iKSwKPj4+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBJTlRFTF9HVUNfQ1RfQlVGRkVSX1RZUEVfU0VORCk7Cj4+ PiArwqDCoMKgIGRlc2MgPSBiYXNlICsgcHRyZGlmZihjdC0+Y3Ricy5zZW5kLmRlc2MsIGJsb2Ip Owo+Pj4gK8KgwqDCoCBjbWRzID0gYmFzZSArIHB0cmRpZmYoY3QtPmN0YnMuc2VuZC5jbWRzLCBi bG9iKTsKPj4+ICvCoMKgwqAgZXJyID0gY3RfcmVnaXN0ZXJfYnVmZmVyKGN0LCBHVUNfQ1RCX1RZ UEVfSE9TVDJHVUMsCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGVzYywg Y21kcywgY3QtPmN0YnMuc2VuZC5zaXplICogNCk7Cj4+PiArCj4+PiDCoMKgwqDCoMKgIGlmICh1 bmxpa2VseShlcnIpKQo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gZXJyX2RlcmVnaXN0ZXI7 Cj4+PiDCoCBAQCAtMjk5LDcgKzMxMyw3IEBAIGludCBpbnRlbF9ndWNfY3RfZW5hYmxlKHN0cnVj dCBpbnRlbF9ndWNfY3QgKmN0KQo+Pj4gwqDCoMKgwqDCoCByZXR1cm4gMDsKPj4+IMKgIMKgIGVy cl9kZXJlZ2lzdGVyOgo+Pj4gLcKgwqDCoCBjdF9kZXJlZ2lzdGVyX2J1ZmZlcihjdCwgSU5URUxf R1VDX0NUX0JVRkZFUl9UWVBFX1JFQ1YpOwo+Pj4gK8KgwqDCoCBjdF9kZXJlZ2lzdGVyX2J1ZmZl cihjdCwgR1VDX0NUQl9UWVBFX0dVQzJIT1NUKTsKPj4+IMKgIGVycl9vdXQ6Cj4+PiDCoMKgwqDC oMKgIENUX1BST0JFX0VSUk9SKGN0LCAiRmFpbGVkIHRvIGVuYWJsZSBDVEIgKCVwZSlcbiIsIEVS Ul9QVFIoZXJyKSk7Cj4+PiDCoMKgwqDCoMKgIHJldHVybiBlcnI7Cj4+PiBAQCAtMzE4LDggKzMz Miw4IEBAIHZvaWQgaW50ZWxfZ3VjX2N0X2Rpc2FibGUoc3RydWN0IGludGVsX2d1Y19jdCAqY3Qp Cj4+PiDCoMKgwqDCoMKgIGN0LT5lbmFibGVkID0gZmFsc2U7Cj4+PiDCoCDCoMKgwqDCoMKgIGlm IChpbnRlbF9ndWNfaXNfZndfcnVubmluZyhndWMpKSB7Cj4+PiAtwqDCoMKgwqDCoMKgwqAgY3Rf ZGVyZWdpc3Rlcl9idWZmZXIoY3QsIElOVEVMX0dVQ19DVF9CVUZGRVJfVFlQRV9TRU5EKTsKPj4+ IC3CoMKgwqDCoMKgwqDCoCBjdF9kZXJlZ2lzdGVyX2J1ZmZlcihjdCwgSU5URUxfR1VDX0NUX0JV RkZFUl9UWVBFX1JFQ1YpOwo+Pj4gK8KgwqDCoMKgwqDCoMKgIGN0X2RlcmVnaXN0ZXJfYnVmZmVy KGN0LCBHVUNfQ1RCX1RZUEVfSE9TVDJHVUMpOwo+Pj4gK8KgwqDCoMKgwqDCoMKgIGN0X2RlcmVn aXN0ZXJfYnVmZmVyKGN0LCBHVUNfQ1RCX1RZUEVfR1VDMkhPU1QpOwo+Pj4gwqDCoMKgwqDCoCB9 Cj4+PiDCoCB9Cj4+Cj4gCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeAo=