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=-8.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS 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 161AAC47082 for ; Mon, 7 Jun 2021 18:01:55 +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 DBC6A6023E for ; Mon, 7 Jun 2021 18:01:54 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org DBC6A6023E 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 B22786E9AC; Mon, 7 Jun 2021 18:01:51 +0000 (UTC) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id AC5C36E9A8; Mon, 7 Jun 2021 18:01:48 +0000 (UTC) IronPort-SDR: pubGfgG5zZ3KaE/MSD/DZP4vEEvPbKPNuAvmxDF+3FxU7r/kbKgdLEy0kB7+hMJXLfGpSp+fMt re9PHOsJmkfg== X-IronPort-AV: E=McAfee;i="6200,9189,10008"; a="204698814" X-IronPort-AV: E=Sophos;i="5.83,255,1616482800"; d="scan'208";a="204698814" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Jun 2021 11:01:26 -0700 IronPort-SDR: E9epUbaYqMZuS46hleSQzYt5LakkmaJ46G8qFnrrulpXqikp6bDCxQt4gORx419SGPI62uwVRm R8N0BL9lllOg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.83,255,1616482800"; d="scan'208";a="401708587" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by orsmga006.jf.intel.com with ESMTP; 07 Jun 2021 11:01:26 -0700 Received: from bgsmsx603.gar.corp.intel.com (10.109.78.82) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4; Mon, 7 Jun 2021 11:01:25 -0700 Received: from bgsmsx604.gar.corp.intel.com (10.67.234.6) by BGSMSX603.gar.corp.intel.com (10.109.78.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4; Mon, 7 Jun 2021 23:31:23 +0530 Received: from bgsmsx604.gar.corp.intel.com ([10.67.234.6]) by BGSMSX604.gar.corp.intel.com ([10.67.234.6]) with mapi id 15.01.2242.008; Mon, 7 Jun 2021 23:31:23 +0530 From: "Shankar, Uma" To: Harry Wentland , "intel-gfx@lists.freedesktop.org" , "dri-devel@lists.freedesktop.org" Thread-Topic: [PATCH 0/9] Enhance pipe color support for multi segmented luts Thread-Index: AQHXVs2wPEDPA6xI2k+X99uG7qHEqqsD226AgAT9sYA= Date: Mon, 7 Jun 2021 18:01:23 +0000 Message-ID: <3a4ccb6211824ce199c7307079833b07@intel.com> References: <20210601104135.29020-1-uma.shankar@intel.com> <0909131c-1340-c93b-7b80-b661497ccf73@amd.com> In-Reply-To: <0909131c-1340-c93b-7b80-b661497ccf73@amd.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.5.1.3 x-originating-ip: [10.223.10.1] MIME-Version: 1.0 Subject: Re: [Intel-gfx] [PATCH 0/9] Enhance pipe color support for multi segmented luts 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: , Cc: "Cyr, Aric" Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" > -----Original Message----- > From: Harry Wentland > Sent: Saturday, June 5, 2021 12:21 AM > To: Shankar, Uma ; intel-gfx@lists.freedesktop.org; dri- > devel@lists.freedesktop.org > Cc: Modem, Bhanuprakash ; Cyr, Aric > > Subject: Re: [PATCH 0/9] Enhance pipe color support for multi segmented luts > > On 2021-06-01 6:41 a.m., Uma Shankar wrote: > > Modern hardwares have multi segmented lut approach to prioritize the > > darker regions of the spectrum. This series introduces a new UAPI to > > define the lut ranges supported by the respective hardware. > > > > This also enables Pipe Color Management Support for Intel's XE_LPD hw. > > Enable Support for Pipe Degamma with the increased lut samples > > supported by hardware. This also adds support for newly introduced > > Logarithmic Gamma for XE_LPD. Also added the gamma readout support. > > > > The Logarithmic gamma implementation on XE_LPD is non linear and adds > > 25 segments with non linear lut samples in each segment. The > > expectation is userspace will create the luts as per this distribution > > and pass the final samples to driver to be programmed in hardware. > > > > Is this design targetting Intel XE_LPD HW in particular or is it intended to be generic? > > If this is intended to be generic I think it would benefit from a lot more > documentation. At this point it's difficult for me to see how to adapt this to AMD > HW. It would take me a while to be comfortable to make a call on whether we can > use it or not. And what about other vendors? This is expected to be generic for all vendors. XE_LPD is just a reference implementation. It's basically an extension of what we have for crtc color but designing the UAPI to have it more scalable for future hardware. The legacy hardware implementation which we have in crtc properties can easily fit in this new UAPI and this can help represent hardware better with more precision and scalability. Credits to Ville as to this is his idea of how we can represent hardware generically and advertise to userspace. Sure, I will add more documentation to make this clearer. > I think we need to be cautious in directly exposing HW functionality through UAPI. > The CM parts of AMD HW seem to be changing in some way each generation and it > looks like the same is true for Intel. The trouble we have with adapting the old > gamma/degamma properties to modern HW is some indication to me that this > approach is somewhat problematic. > The advantage of having flexibility in userspace is that we give access of hardware to userspace.It can then control things based on various usecases and not limited by just a subset of operations what we define (in the lack of such an implementation). > It would be useful to understand and document the specific use-cases we want to > provide to userspace implementers with this functionality. Do we want to support > modern transfer functions such as PQ or HLG? If so, it might be beneficial to have an > API to explicitly specify that, and then use LUT tables in drivers that are optimized for > the implementing HW. Or is the use case tone mapping? If so, would a parametric > definition of tone mapping be easier to manage? > Yes right, ideally this is what intend to achieve here. We cant have fixed tables for operations like Tone mapping as it will depend on mastering luminance values which can vary along with other attributes of metadata. Eventually this operation would be done by the gamma block (non linear luts), the values for which would be calculated and send by userspace. Thus making all this very generic. Also we can't do any color math in driver as it has lot of floating operations. So here the trade-off is between having a UAPI where userspace controls hw, computes and sends values vs having just a fixed function operations with hard coded lut tables in driver. Maybe we can have both the options in order to give flexibility to hardware vendors. We can document the usage of the UAPI we create which can help things co-exist. Userspace can query the supported properties and implement based on the properties exposed by the respective vendor driver implementation. My personal preference would be to go with generic option (expose hardware to userspace) which will make life easier for userspace developers. This will help use hardware for any color operation not just limited to linearization, CSC conversions and tone mapping. Also this is already done for crtc, so it just need to be extended to planes. > > +-----+------------------------------+ > > | x | 2 pow x segment|No of Entries > > | | 0 | 1 | > > | 0 | 1 | 1 | > > | 1 | 2 | 2 | > > | 2 | 4 | 2 | > > | 3 | 8 | 2 | > > | 4 | 16 | 2 | > > | 5 | 32 | 4 | > > | 6 | 64 | 4 | > > | 7 | 128 | 4 | > > | 8 | 256 | 8 | > > | 9 | 512 | 8 | > > | 10 | 1024 | 8 | > > | 11 | 2048 | 16 | > > | 12 | 4096 | 16 | > > | 13 | 8192 | 16 | > > | 14 | 16384 | 32 | > > | 15 | 32768 | 32 | > > | 16 | 65536 | 64 | > > | 17 | 131072 | 64 | > > | 18 | 262144 | 64 | > > | 19 | 524288 | 32 | > > | 20 | 1048576 | 32 | > > | 21 | 2097152 | 32 | > > | 22 | 4194304 | 32 | > > | 23 | 8388608 | 32 | > > | 24 | 16777216 | 1 | > > | | Total Entries | 511 | > > -----+-----------------+------------+ > > > > Credits: Special mention and credits to Ville Syrjala for coming up > > with a design for this feature and inputs. This series is based on his > > original design. > > > > Note: Userspace support for this new UAPI will be done on Chrome and > > plan is to get this supported on mutter as well. We will notify the > > list once we have that ready for review. > > > > Is this an RFC? If so it would be good to mark it as such. Yes, sure will update the tag. Thanks Harry for the feedback. Regards, Uma Shankar > Harry > > > Uma Shankar (9): > > drm: Add gamma mode property > > drm/i915/xelpd: Define color lut range structure > > drm/i915/xelpd: Add support for Logarithmic gamma mode > > drm/i915/xelpd: Attach gamma mode property > > drm: Add Client Cap for advance gamma mode > > drm/i915/xelpd: logarithmic gamma enabled only with advance gamma mode > > drm/i915/xelpd: Enable Pipe Degamma > > drm/i915/xelpd: Add Pipe Color Lut caps to platform config > > drm/i915/xelpd: Enable XE_LPD Gamma Lut readout > > > > drivers/gpu/drm/drm_atomic_uapi.c | 8 + > > drivers/gpu/drm/drm_color_mgmt.c | 75 ++++ > > drivers/gpu/drm/drm_ioctl.c | 5 + > > drivers/gpu/drm/i915/display/intel_color.c | 454 ++++++++++++++++++++- > > drivers/gpu/drm/i915/i915_pci.c | 3 +- > > drivers/gpu/drm/i915/i915_reg.h | 7 + > > include/drm/drm_atomic.h | 1 + > > include/drm/drm_color_mgmt.h | 8 + > > include/drm/drm_crtc.h | 25 ++ > > include/drm/drm_file.h | 8 + > > include/uapi/drm/drm.h | 8 + > > include/uapi/drm/drm_mode.h | 43 ++ > > 12 files changed, 630 insertions(+), 15 deletions(-) > > _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx 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=-8.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS 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 3FE2AC47095 for ; Mon, 7 Jun 2021 18:01:52 +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 0B06260FEA for ; Mon, 7 Jun 2021 18:01:52 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0B06260FEA Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 42DF96E9A8; Mon, 7 Jun 2021 18:01:51 +0000 (UTC) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id AC5C36E9A8; Mon, 7 Jun 2021 18:01:48 +0000 (UTC) IronPort-SDR: pubGfgG5zZ3KaE/MSD/DZP4vEEvPbKPNuAvmxDF+3FxU7r/kbKgdLEy0kB7+hMJXLfGpSp+fMt re9PHOsJmkfg== X-IronPort-AV: E=McAfee;i="6200,9189,10008"; a="204698814" X-IronPort-AV: E=Sophos;i="5.83,255,1616482800"; d="scan'208";a="204698814" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Jun 2021 11:01:26 -0700 IronPort-SDR: E9epUbaYqMZuS46hleSQzYt5LakkmaJ46G8qFnrrulpXqikp6bDCxQt4gORx419SGPI62uwVRm R8N0BL9lllOg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.83,255,1616482800"; d="scan'208";a="401708587" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by orsmga006.jf.intel.com with ESMTP; 07 Jun 2021 11:01:26 -0700 Received: from bgsmsx603.gar.corp.intel.com (10.109.78.82) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4; Mon, 7 Jun 2021 11:01:25 -0700 Received: from bgsmsx604.gar.corp.intel.com (10.67.234.6) by BGSMSX603.gar.corp.intel.com (10.109.78.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4; Mon, 7 Jun 2021 23:31:23 +0530 Received: from bgsmsx604.gar.corp.intel.com ([10.67.234.6]) by BGSMSX604.gar.corp.intel.com ([10.67.234.6]) with mapi id 15.01.2242.008; Mon, 7 Jun 2021 23:31:23 +0530 From: "Shankar, Uma" To: Harry Wentland , "intel-gfx@lists.freedesktop.org" , "dri-devel@lists.freedesktop.org" Subject: RE: [PATCH 0/9] Enhance pipe color support for multi segmented luts Thread-Topic: [PATCH 0/9] Enhance pipe color support for multi segmented luts Thread-Index: AQHXVs2wPEDPA6xI2k+X99uG7qHEqqsD226AgAT9sYA= Date: Mon, 7 Jun 2021 18:01:23 +0000 Message-ID: <3a4ccb6211824ce199c7307079833b07@intel.com> References: <20210601104135.29020-1-uma.shankar@intel.com> <0909131c-1340-c93b-7b80-b661497ccf73@amd.com> In-Reply-To: <0909131c-1340-c93b-7b80-b661497ccf73@amd.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.5.1.3 x-originating-ip: [10.223.10.1] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Modem, Bhanuprakash" Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogSGFycnkgV2VudGxhbmQg PGhhcnJ5LndlbnRsYW5kQGFtZC5jb20+DQo+IFNlbnQ6IFNhdHVyZGF5LCBKdW5lIDUsIDIwMjEg MTI6MjEgQU0NCj4gVG86IFNoYW5rYXIsIFVtYSA8dW1hLnNoYW5rYXJAaW50ZWwuY29tPjsgaW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZzsgZHJpLQ0KPiBkZXZlbEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcNCj4gQ2M6IE1vZGVtLCBCaGFudXByYWthc2ggPGJoYW51cHJha2FzaC5tb2RlbUBp bnRlbC5jb20+OyBDeXIsIEFyaWMNCj4gPEFyaWMuQ3lyQGFtZC5jb20+DQo+IFN1YmplY3Q6IFJl OiBbUEFUQ0ggMC85XSBFbmhhbmNlIHBpcGUgY29sb3Igc3VwcG9ydCBmb3IgbXVsdGkgc2VnbWVu dGVkIGx1dHMNCj4gDQo+IE9uIDIwMjEtMDYtMDEgNjo0MSBhLm0uLCBVbWEgU2hhbmthciB3cm90 ZToNCj4gPiBNb2Rlcm4gaGFyZHdhcmVzIGhhdmUgbXVsdGkgc2VnbWVudGVkIGx1dCBhcHByb2Fj aCB0byBwcmlvcml0aXplIHRoZQ0KPiA+IGRhcmtlciByZWdpb25zIG9mIHRoZSBzcGVjdHJ1bS4g VGhpcyBzZXJpZXMgaW50cm9kdWNlcyBhIG5ldyBVQVBJIHRvDQo+ID4gZGVmaW5lIHRoZSBsdXQg cmFuZ2VzIHN1cHBvcnRlZCBieSB0aGUgcmVzcGVjdGl2ZSBoYXJkd2FyZS4NCj4gPg0KPiA+IFRo aXMgYWxzbyBlbmFibGVzIFBpcGUgQ29sb3IgTWFuYWdlbWVudCBTdXBwb3J0IGZvciBJbnRlbCdz IFhFX0xQRCBody4NCj4gPiBFbmFibGUgU3VwcG9ydCBmb3IgUGlwZSBEZWdhbW1hIHdpdGggdGhl IGluY3JlYXNlZCBsdXQgc2FtcGxlcw0KPiA+IHN1cHBvcnRlZCBieSBoYXJkd2FyZS4gVGhpcyBh bHNvIGFkZHMgc3VwcG9ydCBmb3IgbmV3bHkgaW50cm9kdWNlZA0KPiA+IExvZ2FyaXRobWljIEdh bW1hIGZvciBYRV9MUEQuIEFsc28gYWRkZWQgdGhlIGdhbW1hIHJlYWRvdXQgc3VwcG9ydC4NCj4g Pg0KPiA+IFRoZSBMb2dhcml0aG1pYyBnYW1tYSBpbXBsZW1lbnRhdGlvbiBvbiBYRV9MUEQgaXMg bm9uIGxpbmVhciBhbmQgYWRkcw0KPiA+IDI1IHNlZ21lbnRzIHdpdGggbm9uIGxpbmVhciBsdXQg c2FtcGxlcyBpbiBlYWNoIHNlZ21lbnQuIFRoZQ0KPiA+IGV4cGVjdGF0aW9uIGlzIHVzZXJzcGFj ZSB3aWxsIGNyZWF0ZSB0aGUgbHV0cyBhcyBwZXIgdGhpcyBkaXN0cmlidXRpb24NCj4gPiBhbmQg cGFzcyB0aGUgZmluYWwgc2FtcGxlcyB0byBkcml2ZXIgdG8gYmUgcHJvZ3JhbW1lZCBpbiBoYXJk d2FyZS4NCj4gPg0KPiANCj4gSXMgdGhpcyBkZXNpZ24gdGFyZ2V0dGluZyBJbnRlbCBYRV9MUEQg SFcgaW4gcGFydGljdWxhciBvciBpcyBpdCBpbnRlbmRlZCB0byBiZSBnZW5lcmljPw0KPiANCj4g SWYgdGhpcyBpcyBpbnRlbmRlZCB0byBiZSBnZW5lcmljIEkgdGhpbmsgaXQgd291bGQgYmVuZWZp dCBmcm9tIGEgbG90IG1vcmUNCj4gZG9jdW1lbnRhdGlvbi4gQXQgdGhpcyBwb2ludCBpdCdzIGRp ZmZpY3VsdCBmb3IgbWUgdG8gc2VlIGhvdyB0byBhZGFwdCB0aGlzIHRvIEFNRA0KPiBIVy4gSXQg d291bGQgdGFrZSBtZSBhIHdoaWxlIHRvIGJlIGNvbWZvcnRhYmxlIHRvIG1ha2UgYSBjYWxsIG9u IHdoZXRoZXIgd2UgY2FuDQo+IHVzZSBpdCBvciBub3QuIEFuZCB3aGF0IGFib3V0IG90aGVyIHZl bmRvcnM/DQoNClRoaXMgaXMgZXhwZWN0ZWQgdG8gYmUgZ2VuZXJpYyBmb3IgYWxsIHZlbmRvcnMu ICBYRV9MUEQgaXMganVzdCBhIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbi4NCkl0J3MgYmFzaWNh bGx5IGFuIGV4dGVuc2lvbiBvZiB3aGF0IHdlIGhhdmUgZm9yIGNydGMgY29sb3IgYnV0IGRlc2ln bmluZyB0aGUgVUFQSSB0byBoYXZlIGl0DQptb3JlIHNjYWxhYmxlIGZvciBmdXR1cmUgaGFyZHdh cmUuIFRoZSBsZWdhY3kgaGFyZHdhcmUgaW1wbGVtZW50YXRpb24gd2hpY2ggd2UgaGF2ZSBpbg0K Y3J0YyBwcm9wZXJ0aWVzIGNhbiBlYXNpbHkgZml0IGluIHRoaXMgbmV3IFVBUEkgYW5kIHRoaXMg Y2FuIGhlbHAgcmVwcmVzZW50IGhhcmR3YXJlIGJldHRlcg0Kd2l0aCBtb3JlIHByZWNpc2lvbiBh bmQgc2NhbGFiaWxpdHkuIENyZWRpdHMgdG8gVmlsbGUgYXMgdG8gdGhpcyBpcyBoaXMgaWRlYSBv ZiBob3cgd2UgY2FuIHJlcHJlc2VudA0KaGFyZHdhcmUgZ2VuZXJpY2FsbHkgYW5kIGFkdmVydGlz ZSB0byB1c2Vyc3BhY2UuDQoNClN1cmUsIEkgd2lsbCBhZGQgbW9yZSBkb2N1bWVudGF0aW9uIHRv IG1ha2UgdGhpcyBjbGVhcmVyLiANCg0KPiBJIHRoaW5rIHdlIG5lZWQgdG8gYmUgY2F1dGlvdXMg aW4gZGlyZWN0bHkgZXhwb3NpbmcgSFcgZnVuY3Rpb25hbGl0eSB0aHJvdWdoIFVBUEkuDQo+IFRo ZSBDTSBwYXJ0cyBvZiBBTUQgSFcgc2VlbSB0byBiZSBjaGFuZ2luZyBpbiBzb21lIHdheSBlYWNo IGdlbmVyYXRpb24gYW5kIGl0DQo+IGxvb2tzIGxpa2UgdGhlIHNhbWUgaXMgdHJ1ZSBmb3IgSW50 ZWwuIFRoZSB0cm91YmxlIHdlIGhhdmUgd2l0aCBhZGFwdGluZyB0aGUgb2xkDQo+IGdhbW1hL2Rl Z2FtbWEgcHJvcGVydGllcyB0byBtb2Rlcm4gSFcgaXMgc29tZSBpbmRpY2F0aW9uIHRvIG1lIHRo YXQgdGhpcw0KPiBhcHByb2FjaCBpcyBzb21ld2hhdCBwcm9ibGVtYXRpYy4NCj4gDQoNClRoZSBh ZHZhbnRhZ2Ugb2YgaGF2aW5nIGZsZXhpYmlsaXR5IGluIHVzZXJzcGFjZSBpcyB0aGF0IHdlIGdp dmUgYWNjZXNzIG9mIGhhcmR3YXJlIHRvDQp1c2Vyc3BhY2UuSXQgY2FuIHRoZW4gY29udHJvbCB0 aGluZ3MgYmFzZWQgb24gdmFyaW91cyB1c2VjYXNlcyBhbmQgbm90IGxpbWl0ZWQgYnkganVzdA0K YSBzdWJzZXQgb2Ygb3BlcmF0aW9ucyB3aGF0IHdlIGRlZmluZSAoaW4gdGhlIGxhY2sgb2Ygc3Vj aCBhbiBpbXBsZW1lbnRhdGlvbikuDQoNCj4gSXQgd291bGQgYmUgdXNlZnVsIHRvIHVuZGVyc3Rh bmQgYW5kIGRvY3VtZW50IHRoZSBzcGVjaWZpYyB1c2UtY2FzZXMgd2Ugd2FudCB0bw0KPiBwcm92 aWRlIHRvIHVzZXJzcGFjZSBpbXBsZW1lbnRlcnMgd2l0aCB0aGlzIGZ1bmN0aW9uYWxpdHkuIERv IHdlIHdhbnQgdG8gc3VwcG9ydA0KPiBtb2Rlcm4gdHJhbnNmZXIgZnVuY3Rpb25zIHN1Y2ggYXMg UFEgb3IgSExHPyBJZiBzbywgaXQgbWlnaHQgYmUgYmVuZWZpY2lhbCB0byBoYXZlIGFuDQo+IEFQ SSB0byBleHBsaWNpdGx5IHNwZWNpZnkgdGhhdCwgYW5kIHRoZW4gdXNlIExVVCB0YWJsZXMgaW4g ZHJpdmVycyB0aGF0IGFyZSBvcHRpbWl6ZWQgZm9yDQo+IHRoZSBpbXBsZW1lbnRpbmcgSFcuIE9y IGlzIHRoZSB1c2UgY2FzZSB0b25lIG1hcHBpbmc/IElmIHNvLCB3b3VsZCBhIHBhcmFtZXRyaWMN Cj4gZGVmaW5pdGlvbiBvZiB0b25lIG1hcHBpbmcgYmUgZWFzaWVyIHRvIG1hbmFnZT8NCj4gDQoN ClllcyByaWdodCwgaWRlYWxseSB0aGlzIGlzIHdoYXQgaW50ZW5kIHRvIGFjaGlldmUgaGVyZS4g V2UgY2FudCBoYXZlIGZpeGVkIHRhYmxlcyBmb3Igb3BlcmF0aW9ucw0KbGlrZSBUb25lIG1hcHBp bmcgYXMgaXQgd2lsbCBkZXBlbmQgb24gbWFzdGVyaW5nIGx1bWluYW5jZSB2YWx1ZXMgd2hpY2gg Y2FuIHZhcnkgYWxvbmcgd2l0aA0Kb3RoZXIgYXR0cmlidXRlcyBvZiBtZXRhZGF0YS4gRXZlbnR1 YWxseSB0aGlzIG9wZXJhdGlvbiB3b3VsZCBiZSBkb25lIGJ5IHRoZSBnYW1tYSBibG9jaw0KKG5v biBsaW5lYXIgbHV0cyksIHRoZSB2YWx1ZXMgZm9yIHdoaWNoIHdvdWxkIGJlIGNhbGN1bGF0ZWQg YW5kIHNlbmQgYnkgdXNlcnNwYWNlLiBUaHVzIG1ha2luZw0KYWxsIHRoaXMgdmVyeSBnZW5lcmlj LiBBbHNvIHdlIGNhbid0IGRvIGFueSBjb2xvciBtYXRoIGluIGRyaXZlciBhcyBpdCBoYXMgbG90 IG9mIGZsb2F0aW5nIG9wZXJhdGlvbnMuDQoNClNvIGhlcmUgdGhlIHRyYWRlLW9mZiBpcyBiZXR3 ZWVuIGhhdmluZyBhIFVBUEkgd2hlcmUgdXNlcnNwYWNlIGNvbnRyb2xzIGh3LCBjb21wdXRlcyBh bmQgc2VuZHMNCnZhbHVlcyB2cyBoYXZpbmcganVzdCBhIGZpeGVkIGZ1bmN0aW9uIG9wZXJhdGlv bnMgd2l0aCBoYXJkIGNvZGVkIGx1dCB0YWJsZXMgaW4gZHJpdmVyLg0KDQpNYXliZSB3ZSBjYW4g aGF2ZSBib3RoIHRoZSBvcHRpb25zIGluIG9yZGVyIHRvIGdpdmUgZmxleGliaWxpdHkgdG8gaGFy ZHdhcmUgdmVuZG9ycy4gV2UgY2FuDQpkb2N1bWVudCB0aGUgdXNhZ2Ugb2YgdGhlIFVBUEkgd2Ug Y3JlYXRlIHdoaWNoIGNhbiBoZWxwIHRoaW5ncyBjby1leGlzdC4gVXNlcnNwYWNlIGNhbiBxdWVy eQ0KdGhlIHN1cHBvcnRlZCBwcm9wZXJ0aWVzIGFuZCBpbXBsZW1lbnQgYmFzZWQgb24gdGhlIHBy b3BlcnRpZXMgZXhwb3NlZCBieSB0aGUgcmVzcGVjdGl2ZQ0KdmVuZG9yIGRyaXZlciBpbXBsZW1l bnRhdGlvbi4gDQoNCk15IHBlcnNvbmFsIHByZWZlcmVuY2Ugd291bGQgYmUgdG8gZ28gd2l0aCBn ZW5lcmljIG9wdGlvbiAoZXhwb3NlIGhhcmR3YXJlIHRvIHVzZXJzcGFjZSkgd2hpY2gNCndpbGwg bWFrZSBsaWZlIGVhc2llciBmb3IgdXNlcnNwYWNlIGRldmVsb3BlcnMuIFRoaXMgd2lsbCBoZWxw IHVzZSBoYXJkd2FyZSBmb3IgYW55IGNvbG9yIG9wZXJhdGlvbiBub3QNCmp1c3QgbGltaXRlZCB0 byBsaW5lYXJpemF0aW9uLCBDU0MgY29udmVyc2lvbnMgYW5kIHRvbmUgbWFwcGluZy4gQWxzbyB0 aGlzIGlzIGFscmVhZHkgZG9uZSBmb3IgY3J0Yywgc28gaXQganVzdA0KbmVlZCB0byBiZSBleHRl bmRlZCB0byBwbGFuZXMuDQoNCj4gPiArLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKw0KPiA+IHwgeCAgIHwgIDIgcG93IHggc2VnbWVudHxObyBvZiBFbnRyaWVzDQo+ID4gfCAg ICAgfCAgMCAgICAgICAgICAgICAgfCAxICAgICAgICAgIHwNCj4gPiB8IDAgICB8ICAxICAgICAg ICAgICAgICB8IDEgICAgICAgICAgfA0KPiA+IHwgMSAgIHwgIDIgICAgICAgICAgICAgIHwgMiAg ICAgICAgICB8DQo+ID4gfCAyICAgfCAgNCAgICAgICAgICAgICAgfCAyICAgICAgICAgIHwNCj4g PiB8IDMgICB8ICA4ICAgICAgICAgICAgICB8IDIgICAgICAgICAgfA0KPiA+IHwgNCAgIHwgIDE2 ICAgICAgICAgICAgIHwgMiAgICAgICAgICB8DQo+ID4gfCA1ICAgfCAgMzIgICAgICAgICAgICAg fCA0ICAgICAgICAgIHwNCj4gPiB8IDYgICB8ICA2NCAgICAgICAgICAgICB8IDQgICAgICAgICAg fA0KPiA+IHwgNyAgIHwgIDEyOCAgICAgICAgICAgIHwgNCAgICAgICAgICB8DQo+ID4gfCA4ICAg fCAgMjU2ICAgICAgICAgICAgfCA4ICAgICAgICAgIHwNCj4gPiB8IDkgICB8ICA1MTIgICAgICAg ICAgICB8IDggICAgICAgICAgfA0KPiA+IHwgMTAgIHwgIDEwMjQgICAgICAgICAgIHwgOCAgICAg ICAgICB8DQo+ID4gfCAxMSAgfCAgMjA0OCAgICAgICAgICAgfCAxNiAgICAgICAgIHwNCj4gPiB8 IDEyICB8ICA0MDk2ICAgICAgICAgICB8IDE2ICAgICAgICAgfA0KPiA+IHwgMTMgIHwgIDgxOTIg ICAgICAgICAgIHwgMTYgICAgICAgICB8DQo+ID4gfCAxNCAgfCAgMTYzODQgICAgICAgICAgfCAz MiAgICAgICAgIHwNCj4gPiB8IDE1ICB8ICAzMjc2OCAgICAgICAgICB8IDMyICAgICAgICAgfA0K PiA+IHwgMTYgIHwgIDY1NTM2ICAgICAgICAgIHwgNjQgICAgICAgICB8DQo+ID4gfCAxNyAgfCAg MTMxMDcyICAgICAgICAgfCA2NCAgICAgICAgIHwNCj4gPiB8IDE4ICB8ICAyNjIxNDQgICAgICAg ICB8IDY0ICAgICAgICAgfA0KPiA+IHwgMTkgIHwgIDUyNDI4OCAgICAgICAgIHwgMzIgICAgICAg ICB8DQo+ID4gfCAyMCAgfCAgMTA0ODU3NiAgICAgICAgfCAzMiAgICAgICAgIHwNCj4gPiB8IDIx ICB8ICAyMDk3MTUyICAgICAgICB8IDMyICAgICAgICAgfA0KPiA+IHwgMjIgIHwgIDQxOTQzMDQg ICAgICAgIHwgMzIgICAgICAgICB8DQo+ID4gfCAyMyAgfCAgODM4ODYwOCAgICAgICAgfCAzMiAg ICAgICAgIHwNCj4gPiB8IDI0ICB8ICAxNjc3NzIxNiAgICAgICB8IDEgICAgICAgICAgfA0KPiA+ IHwgICAgIHwgVG90YWwgRW50cmllcyAgIHwgNTExICAgICAgICB8DQo+ID4gIC0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsNCj4gPg0KPiA+IENyZWRpdHM6IFNwZWNpYWwgbWVu dGlvbiBhbmQgY3JlZGl0cyB0byBWaWxsZSBTeXJqYWxhIGZvciBjb21pbmcgdXANCj4gPiB3aXRo IGEgZGVzaWduIGZvciB0aGlzIGZlYXR1cmUgYW5kIGlucHV0cy4gVGhpcyBzZXJpZXMgaXMgYmFz ZWQgb24gaGlzDQo+ID4gb3JpZ2luYWwgZGVzaWduLg0KPiA+DQo+ID4gTm90ZTogVXNlcnNwYWNl IHN1cHBvcnQgZm9yIHRoaXMgbmV3IFVBUEkgd2lsbCBiZSBkb25lIG9uIENocm9tZSBhbmQNCj4g PiBwbGFuIGlzIHRvIGdldCB0aGlzIHN1cHBvcnRlZCBvbiBtdXR0ZXIgYXMgd2VsbC4gV2Ugd2ls bCBub3RpZnkgdGhlDQo+ID4gbGlzdCBvbmNlIHdlIGhhdmUgdGhhdCByZWFkeSBmb3IgcmV2aWV3 Lg0KPiA+DQo+IA0KPiBJcyB0aGlzIGFuIFJGQz8gSWYgc28gaXQgd291bGQgYmUgZ29vZCB0byBt YXJrIGl0IGFzIHN1Y2guDQoNClllcywgc3VyZSB3aWxsIHVwZGF0ZSB0aGUgdGFnLg0KDQpUaGFu a3MgSGFycnkgZm9yIHRoZSBmZWVkYmFjay4NCg0KUmVnYXJkcywNClVtYSBTaGFua2FyDQoNCj4g SGFycnkNCj4gDQo+ID4gVW1hIFNoYW5rYXIgKDkpOg0KPiA+ICAgZHJtOiBBZGQgZ2FtbWEgbW9k ZSBwcm9wZXJ0eQ0KPiA+ICAgZHJtL2k5MTUveGVscGQ6IERlZmluZSBjb2xvciBsdXQgcmFuZ2Ug c3RydWN0dXJlDQo+ID4gICBkcm0vaTkxNS94ZWxwZDogQWRkIHN1cHBvcnQgZm9yIExvZ2FyaXRo bWljIGdhbW1hIG1vZGUNCj4gPiAgIGRybS9pOTE1L3hlbHBkOiBBdHRhY2ggZ2FtbWEgbW9kZSBw cm9wZXJ0eQ0KPiA+ICAgZHJtOiBBZGQgQ2xpZW50IENhcCBmb3IgYWR2YW5jZSBnYW1tYSBtb2Rl DQo+ID4gICBkcm0vaTkxNS94ZWxwZDogbG9nYXJpdGhtaWMgZ2FtbWEgZW5hYmxlZCBvbmx5IHdp dGggYWR2YW5jZSBnYW1tYSBtb2RlDQo+ID4gICBkcm0vaTkxNS94ZWxwZDogRW5hYmxlIFBpcGUg RGVnYW1tYQ0KPiA+ICAgZHJtL2k5MTUveGVscGQ6IEFkZCBQaXBlIENvbG9yIEx1dCBjYXBzIHRv IHBsYXRmb3JtIGNvbmZpZw0KPiA+ICAgZHJtL2k5MTUveGVscGQ6IEVuYWJsZSBYRV9MUEQgR2Ft bWEgTHV0IHJlYWRvdXQNCj4gPg0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY191YXBp LmMgICAgICAgICAgfCAgIDggKw0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2NvbG9yX21nbXQu YyAgICAgICAgICAgfCAgNzUgKysrKw0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2lvY3RsLmMg ICAgICAgICAgICAgICAgfCAgIDUgKw0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2NvbG9yLmMgfCA0NTQgKysrKysrKysrKysrKysrKysrKystDQo+ID4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcGNpLmMgICAgICAgICAgICB8ICAgMyArLQ0KPiA+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oICAgICAgICAgICAgfCAgIDcgKw0KPiA+ICBpbmNsdWRl L2RybS9kcm1fYXRvbWljLmggICAgICAgICAgICAgICAgICAgfCAgIDEgKw0KPiA+ICBpbmNsdWRl L2RybS9kcm1fY29sb3JfbWdtdC5oICAgICAgICAgICAgICAgfCAgIDggKw0KPiA+ICBpbmNsdWRl L2RybS9kcm1fY3J0Yy5oICAgICAgICAgICAgICAgICAgICAgfCAgMjUgKysNCj4gPiAgaW5jbHVk ZS9kcm0vZHJtX2ZpbGUuaCAgICAgICAgICAgICAgICAgICAgIHwgICA4ICsNCj4gPiAgaW5jbHVk ZS91YXBpL2RybS9kcm0uaCAgICAgICAgICAgICAgICAgICAgIHwgICA4ICsNCj4gPiAgaW5jbHVk ZS91YXBpL2RybS9kcm1fbW9kZS5oICAgICAgICAgICAgICAgIHwgIDQzICsrDQo+ID4gIDEyIGZp bGVzIGNoYW5nZWQsIDYzMCBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkNCj4gPg0KDQo=