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=-7.3 required=3.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,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 49D0DC433E0 for ; Mon, 29 Jun 2020 06:51:04 +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 1B829206E9 for ; Mon, 29 Jun 2020 06:51:04 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ivs8sdAL" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1B829206E9 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.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 634526E1E2; Mon, 29 Jun 2020 06:50:59 +0000 (UTC) Received: from mail-lj1-x244.google.com (mail-lj1-x244.google.com [IPv6:2a00:1450:4864:20::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4DD1489FA6 for ; Sun, 28 Jun 2020 23:00:04 +0000 (UTC) Received: by mail-lj1-x244.google.com with SMTP id h19so15971251ljg.13 for ; Sun, 28 Jun 2020 16:00:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=6HDzXo+9/I82LcTCZv6SnPgIvt9Vfzi/nFxp6fx1uoc=; b=ivs8sdALpILIOOKZ4QJ3ou1Wey4gN/rm1DNWCi/ZwNAI1/Tlvff36MnB7yTwTcQS35 Ki+iXyFY32CD1ViRV2GqoFavvzn85+M/lGYIBNIqWnxmDojUs1PxmOWM34T3Kzd7P2y9 EKyJEqM6DP6LWZoXiM4O45svuvtLYtjPa/cGpWOmucRPlzm6bpXhwiYqDAhfvawvHVXa bACPJIvrVoFgeqKQ3ek2k8EP7RUOWEZp29U2zp6hQn9+ThfgTWPU/4Rgy4Rgt1d34Eqq UP5i2qFZmXsGhhbNwyxLwGvVlU2CKWaOx89RgHgpe3v9L6RzxrcfIN2aq0DHNRohjSL0 UKNw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=6HDzXo+9/I82LcTCZv6SnPgIvt9Vfzi/nFxp6fx1uoc=; b=QThlCrKCRWcDIDxl7SvNHgLCDTnYibxVRxIAx1YDobuVThB6E0vVpgQac85qd6ds7E 4tGhGC3+Xn3EFCVGUVmxR20JFi9Rv4wrvTyzX0nzEjve/KC3uC8poRCtm9/sAYkgvGUw EuJ9eg8sJmvBhnSeBSi6Idvdzs5u4KhTbWq9YOOeYZ5h+hZFs+IkBgKWfJkrrPypWGfL 0z2c6oGNFS4WuyJOACR/dXQkilDrk6Vc/bNCu1DjpzYSpismQlpEMNFTsPIz9x6yZv+u 0PTgGWDVqYrBD4d5xpxb46QaLpawCAxynvq8VLC5/feIm47OvLW3B+tYO6j8mn6kT+gg SiFA== X-Gm-Message-State: AOAM531zGzD2Ri6tWr2/Geqf1/drZVsF2yU8Khx2MamWtiDkQZO2dZMl hOB+LQIll/h5OS+UGdlezQc= X-Google-Smtp-Source: ABdhPJzhQL16E6+c9IBs8yCBSeWDMiSUe51S9ol580wkiI2j40Rmiwof7v9/06R6JxiIBmiWJ9/a0g== X-Received: by 2002:a05:651c:2da:: with SMTP id f26mr6269559ljo.377.1593385202444; Sun, 28 Jun 2020 16:00:02 -0700 (PDT) Received: from [192.168.2.145] (79-139-237-54.dynamic.spd-mgts.ru. [79.139.237.54]) by smtp.googlemail.com with ESMTPSA id o201sm8705615lff.8.2020.06.28.16.00.01 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 28 Jun 2020 16:00:01 -0700 (PDT) Subject: Re: [RFC] Host1x/TegraDRM UAPI (drm_tegra_channel_map) To: Mikko Perttunen , Thierry Reding References: <9b06b7ec-f952-2561-7afb-5653514cd5d3@kapsi.fi> <4f9ddf30-ad8d-3750-20d7-867be17a1006@gmail.com> <20200626073430.GA3109062@ulmo> <4c243f7a-4c53-d995-88a1-0fe03d41fc3a@gmail.com> From: Dmitry Osipenko Message-ID: Date: Mon, 29 Jun 2020 01:59:59 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.7.0 MIME-Version: 1.0 In-Reply-To: Content-Language: en-US X-Mailman-Approved-At: Mon, 29 Jun 2020 06:50:54 +0000 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: Erik Faye-Lund , David Airlie , gustavo@padovan.org, dri-devel , Jon Hunter , talho@nvidia.com, bhuntsman@nvidia.com, "linux-tegra@vger.kernel.org" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" MjguMDYuMjAyMCAxNDoxNiwgTWlra28gUGVydHR1bmVuINC/0LjRiNC10YI6Cj4gT24gNi8yNi8y MCA3OjM1IFBNLCBEbWl0cnkgT3NpcGVua28gd3JvdGU6Cj4+IDI2LjA2LjIwMjAgMTA6MzQsIFRo aWVycnkgUmVkaW5nINC/0LjRiNC10YI6Cj4+PiBPbiBGcmksIEp1biAyNiwgMjAyMCBhdCAwMTo0 Nzo0NkFNICswMzAwLCBEbWl0cnkgT3NpcGVua28gd3JvdGU6Cj4+Pj4gMjMuMDYuMjAyMCAxNTow OSwgTWlra28gUGVydHR1bmVuINC/0LjRiNC10YI6Cj4+Pj4+ICMjIyBEUk1fVEVHUkFfQ0hBTk5F TF9NQVAKPj4+Pj4KPj4+Pj4gTWFrZSBtZW1vcnkgYWNjZXNzaWJsZSBieSB0aGUgZW5naW5lIHdo aWxlIGV4ZWN1dGluZyB3b3JrIG9uIHRoZQo+Pj4+PiBjaGFubmVsLgo+Pj4+Pgo+Pj4+PiBgYGAK Pj4+Pj4gI2RlZmluZSBEUk1fVEVHUkFfQ0hBTk5FTF9NQVBfUkVBRFdSSVRFwqDCoMKgwqDCoMKg wqAgKDE8PDApCj4+Pj4+Cj4+Pj4+IHN0cnVjdCBkcm1fdGVncmFfY2hhbm5lbF9tYXAgewo+Pj4+ PiDCoMKgwqDCoMKgwqDCoMKgIC8qCj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAqIFtpbl0gSUQg b2YgdGhlIGNoYW5uZWwgZm9yIHdoaWNoIHRvIG1hcCBtZW1vcnkgdG8uCj4+Pj4+IMKgwqDCoMKg wqDCoMKgwqDCoCAqLwo+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgIF9fdTMyIGNoYW5uZWxfaWQ7Cj4+ Pj4+IMKgwqDCoMKgwqDCoMKgwqAgLyoKPj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgICogW2luXSBH RU0gaGFuZGxlIG9mIHRoZSBtZW1vcnkgdG8gbWFwLgo+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAg Ki8KPj4+Pj4gwqDCoMKgwqDCoMKgwqDCoCBfX3UzMiBoYW5kbGU7Cj4+Pj4+Cj4+Pj4+IMKgwqDC oMKgwqDCoMKgwqAgLyoKPj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgICogW2luXSBPZmZzZXQgaW4g R0VNIGhhbmRsZSBvZiB0aGUgbWVtb3J5IGFyZWEgdG8gbWFwLgo+Pj4+PiDCoMKgwqDCoMKgwqDC oMKgwqAgKgo+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgKiBNdXN0IGJlIGFsaWduZWQgYnkgNEsu Cj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAqLwo+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgIF9fdTY0 IG9mZnNldDsKPj4+Pgo+Pj4+IENvdWxkIHlvdSBwbGVhc2UgZ2l2ZSBhIHVzZS1jYXNlIGV4YW1w bGUgZm9yIHRoaXMgcGFydGlhbCBtYXBwaW5nPwo+Pj4+Cj4+Pj4gSSB2YWd1ZWx5IHJlY2FsbGlu ZyB0aGF0IG1heWJlIGl0IHdhcyBtZSB3aG8gc3VnZ2VzdGVkIHRoaXMgaW4gdGhlCj4+Pj4gcGFz dC4uCj4+Pj4KPj4+PiBJIGtpbmRhIHNlZSB0aGF0IHRoaXMgY291bGQgYmUgdXNlZnVsIGZvciBh IGNhc2Ugd2hlcmUgdXNlcnNwYWNlCj4+Pj4gYWxsb2NhdGVzIGEgbGFyZ2UgY2h1bmsgb2YgbWVt b3J5IGFuZCB0aGVuIHBlcmZvcm1zIHN1Yi1hbGxvY2F0aW9ucyBpbgo+Pj4+IHRoZSB1c2Vyc3Bh Y2UgZHJpdmVyLiBCdXQgZG8gd2UgaGF2ZSBhIHJlYWwtd29ybGQgZXhhbXBsZSBmb3IgdGhpcwo+ Pj4+IHJpZ2h0Cj4+Pj4gbm93Pwo+Pj4KPj4+IEkgdGhpbmsgdGhlIG1haW4gcG9pbnQgYWJvdXQg dGhpcyBJT0NUTCB3YXMgdG8gbWFrZSBtYXBwaW5nL3VubWFwcGluZwo+Pj4gbW9yZSBlZmZpY2ll bnQgYW5kIGF2b2lkIHJlbG9jYXRpb25zIGZvciBzaXR1YXRpb25zIHdoZXJlIHdlIGtub3cgaXQg aXMKPj4+IHNhZmUgdG8gZG8gc28uCj4+Pgo+Pj4gVGhlIGZhY3QgdGhhdCB0aGlzIGNhbiBiZSB1 c2VkIHRvIGNyZWF0ZSBwYXJ0aWFsIG1hcHBpbmdzIGlzIG1vc3RseSBqdXN0Cj4+PiBhbiBhZGRl ZCBib251cywgaW4gbXkgb3Bpbmlvbi4gRG9pbmcgdGhpcyBkb2Vzbid0IGNyZWF0ZSBtdWNoIGNv bXBsZXhpdHkKPj4+IGJ1dCBpbiB0dXJuIGdpdmVzIHVzIGEgbG90IG1vcmUgZmxleGliaWxpdHku Cj4+Pgo+Pj4gQSBjb3VwbGUgb2YgcGxhY2VzIHdoZXJlIEkgdGhpbmsgdGhpcyBjb3VsZCBiZSB1 c2VmdWwgYXJlIE9wZW5HTCBhbmQKPj4+IFZ1bGthbiwgYm90aCBvZiB3aGljaCBzdXBwb3J0IGJ1 ZmZlciBzdWJhbGxvY2F0aW9uLiBUaGlzIGhhcyBhIGNvdXBsZSBvZgo+Pj4gYWR2YW50YWdlcyBv biBtb2Rlcm4gR1BVcyB3aGVyZSBzb21ldGltZXMgeW91IHdhbnQgdG8gdXNlIHZlcnkgbGFyZ2UK Pj4+IGFsbG9jYXRpb24gZ3JhbnVsYXJpdHksIGV0Yy4KPj4+Cj4+PiBOb3csIEkgZG9uJ3QgdGhp bmsgdGhhdCB3ZSdsbCBzZWUgbXVjaCBvZiB0aGF0IGluIFRlZ3JhIERSTSBkaXJlY3RseSwKPj4+ IGFsdGhvdWdoIGdyYXRlIGNvdWxkIGNlcnRhaW5seSBtYWtlIHVzZSBvZiB0aGlzLCBJIHN1c3Bl Y3QuIEhvd2V2ZXIsIEkKPj4+IHRoaW5rIGZvciBpbnRlcm9wZXJhdGlvbiBvZiBkR1BVIGFuZCBU ZWdyYSBEUk0gKHdpdGggVklDIGZvciBwb3N0LQo+Pj4gcHJvY2Vzc2luZywgb3IgaG9wZWZ1bGx5 IHNvbWUgb2YgdGhlIG90aGVyIGhhcmR3YXJlIGFjY2VsZXJhdGlvbgo+Pj4gZW5naW5lcyBhdCBz b21lIHBvaW50KSwgdGhpcyBtaWdodCBjb21lIGluIGhhbmR5Lgo+Pj4KPj4+IFRoZXJlIGFyZSBv dGhlciBwb3NzaWJsZSB1c2UtY2FzZXMgd2l0aGluIGp1c3QgVGVncmEgRFJNIGFzIHdlbGwuIFdl IG1heQo+Pj4gd2FudCB0byBvbmx5IHBhcnRpYWxseSBtYXAgcGxhbmFyIGJ1ZmZlcnMgZm9yIHZp ZGVvIHBvc3QtcHJvY2Vzc2luZywgZm9yCj4+PiBleGFtcGxlLiBPciBtYXAgZWFjaCBwbGFuZSBz ZXBhcmF0ZWx5Lgo+Pj4KPj4+PiBQbGVhc2Ugc2VlIG1vcmUgYmVsb3cuCj4+Pj4KPj4+Pj4gwqDC oMKgwqDCoMKgwqDCoCAvKgo+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgKiBbaW5dIExlbmd0aCBv ZiBtZW1vcnkgYXJlYSB0byBtYXAgaW4gYnl0ZXMuCj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAq Cj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAqIE11c3QgYmUgYWxpZ25lZCBieSA0Sy4KPj4+Pj4g wqDCoMKgwqDCoMKgwqDCoMKgICovCj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqAgX191NjQgbGVuZ3Ro Owo+Pj4+Pgo+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgIC8qCj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDC oCAqIFtvdXRdIElPVkEgb2YgbWFwcGVkIG1lbW9yeS4gVXNlcnNwYWNlIGNhbiB1c2UgdGhpcyBJ T1ZBCj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAqwqDCoCBkaXJlY3RseSB0byByZWZlciB0byB0 aGUgbWVtb3J5IHRvIHNraXAgdXNpbmcKPj4+Pj4gcmVsb2NhdGlvbnMuCj4+Pj4+IMKgwqDCoMKg wqDCoMKgwqDCoCAqwqDCoCBPbmx5IGF2YWlsYWJsZSBpZiBoYXJkd2FyZSBtZW1vcnkgaXNvbGF0 aW9uIGlzIGVuYWJsZWQuCj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAqCj4+Pj4+IMKgwqDCoMKg wqDCoMKgwqDCoCAqwqDCoCBXaWxsIGJlIHNldCB0byAweGZmZmZfZmZmZl9mZmZmX2ZmZmYgaWYg dW5hdmFpbGFibGUuCj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAqLwo+Pj4+PiDCoMKgwqDCoMKg wqDCoMKgIF9fdTY0IGlvdmE7Cj4+Pj4+Cj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqAgLyoKPj4+Pj4g wqDCoMKgwqDCoMKgwqDCoMKgICogW291dF0gSUQgY29ycmVzcG9uZGluZyB0byB0aGUgbWFwcGVk IG1lbW9yeSB0byBiZSB1c2VkIGZvcgo+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgKsKgwqAgcmVs b2NhdGlvbnMgb3IgdW5tYXBwaW5nLgo+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgKi8KPj4+Pj4g wqDCoMKgwqDCoMKgwqDCoCBfX3UzMiBtYXBwaW5nX2lkOwo+Pj4+PiDCoMKgwqDCoMKgwqDCoMKg IC8qCj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAqIFtpbl0gRmxhZ3MuCj4+Pj4+IMKgwqDCoMKg wqDCoMKgwqDCoCAqLwo+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgIF9fdTMyIGZsYWdzOwo+Pj4+Pgo+ Pj4+PiDCoMKgwqDCoMKgwqDCoMKgIF9fdTMyIHJlc2VydmVkWzZdOwo+Pj4+PiB9Owo+Pj4+Cj4+ Pj4gSXQgbG9va3MgdG8gbWUgdGhhdCB3ZSBhY3R1YWxseSBuZWVkIGEgYml0IGRpZmZlcmVudCB0 aGluZyBoZXJlLgo+Pj4+Cj4+Pj4gVGhpcyBNQVAgSU9DVEwgbWFwcyBhIHBvcnRpb24gb2YgYSBH RU0gYW5kIHRoZW4gcmV0dXJucyB0aGUgbWFwcGluZ19pZC4KPj4+PiBBbmQgSSB0aGluayB3ZSBu ZWVkIHNvbWV0aGluZyBtb3JlIGZsZXhpYmxlIHRoYXQgd2lsbCBhbGxvdyB1cyB0byB1c2UKPj4+ PiBHRU0gaGFuZGxlcyBmb3IgdGhlIHJlbG9jYXRpb24gSURzLCB3aGljaCBzaG91bGQgZml0IG5p Y2VseSB3aXRoIHRoZQo+Pj4+IERNQS1yZXNlcnZhdGlvbnMuCj4+Pj4KPj4+PiBXaGF0IGFib3V0 IGFuIElPQ1RMIHRoYXQgd3JhcHMgR0VNIGludG8gYW5vdGhlciBHRU0/IFdlIGNvdWxkIHdyYXAg YQo+Pj4+IHBvcnRpb24gb2YgR0VNX0EgaW50byBhIEdFTV9CLCBhbmQgdGhlbiBtYXAgdGhlIEdF TV9CIHVzaW5nIHRoZSBNQVAKPj4+PiBJT0NUTC4KPj4+Pgo+Pj4+IEl0IGNvdWxkIGJlIHNvbWV0 aGluZyBsaWtlIHRoaXM6Cj4+Pj4KPj4+PiAjIyMgRFJNX1RFR1JBX0JPX1dSQVAKPj4+Pgo+Pj4+ IHN0cnVjdCBkcm1fdGVncmFfd3JhcF9ibyB7Cj4+Pj4gwqDCoMKgwqBfX3UzMiBib19oYW5kbGVf d3JhcHBlZDsgLy8gb3V0Cj4+Pj4gwqDCoMKgwqBfX3UzMiBib19oYW5kbGU7wqDCoMKgwqDCoMKg wqDCoCAvLyBpbgo+Pj4+IMKgwqDCoMKgX191NjQgb2Zmc2V0Owo+Pj4+IMKgwqDCoMKgX191NjQg bGVuZ3RoOwo+Pj4+IH07Cj4+Pj4KPj4+PiAjIyMgRFJNX1RFR1JBX0NIQU5ORUxfTUFQCj4+Pj4K Pj4+PiBzdHJ1Y3QgZHJtX3RlZ3JhX2NoYW5uZWxfbWFwIHsKPj4+PiDCoMKgwqDCoMKgwqDCoMKg IF9fdTMyIGNoYW5uZWxzX21hc2s7Cj4+Pj4gwqDCoMKgwqBfX3UzMiBtYXBwaW5nX2lkOwo+Pj4+ IMKgwqDCoMKgwqDCoMKgwqAgX191MzIgYm9faGFuZGxlOwo+Pj4+IMKgwqDCoMKgwqDCoMKgwqAg X191MzIgZmxhZ3M7Cj4+Pj4gwqDCoMKgwqDCoMKgwqDCoCBfX3U2NCBpb3ZhOwo+Pj4+IH07Cj4+ Pj4KPj4+PiA9PT0KPj4+Pgo+Pj4+IFRoaXMgYWxsb3dzIG11bHRpcGxlIG1hcHBpbmdfaWRzIHRv IGhhdmUgdGhlIHNhbWUgYmFja2luZyBHRU0sIHNvIHRoZQo+Pj4+IG1hcHBpbmdfaWQgY291bGQg YmUgcmVzb2x2ZWQgaW50byBhIEJPIGR1cmluZyBvZiBqb2IncyBzdWJtaXNzaW9uIGZvcgo+Pj4+ IHRoZSBETUEtcmVzZXJ2YXRpb25zIGhhbmRsaW5nLgo+Pj4KPj4+IFRoYXQncyBwcmV0dHkgbXVj aCB3aGF0IHdlIGhhdmUgYWxyZWFkeSBhYm92ZSwgaXNuJ3QgaXQ/IEp1c3QgYmVjYXVzZSB3ZQo+ Pj4gY2FsbCB0aGUgZmllbGQgIm1hcHBpbmdfaWQiIGRvZXNuJ3QgbWVhbiB0aGF0IGluIHRoZSBi YWNrZ3JvdW5kIHdlIGNhbid0Cj4+PiBjcmVhdGUgYSBHRU0gb2JqZWN0IGFuZCByZXR1cm4gaXQn cyBoYW5kbGUgYXMgIm1hcHBpbmdfaWQiLgo+Pj4KPj4+IE9uZSBhZHZhbnRhZ2Ugb2YgTWlra28n cyBwcm9wb3NhbCBpcyB0aGF0IHdlIGhhdmUgYSBzaW5nbGUgSU9DVEwgcmF0aGVyCj4+PiB0aGFu IHR3byB0byBjcmVhdGUgdGhlIG1hcHBpbmcsIG1ha2luZyBpdCBhIGJpdCBtb3JlIGxpZ2h0d2Vp Z2h0Lgo+Pgo+PiBUaGlua2luZyBhIGJpdCBtb3JlIGFib3V0IGl0LCBJIG5vdyBjaGFuZ2VkIG15 IG1pbmQuCj4+Cj4+IFRoZXJlIGlzIG5vIG5lZWQgdG8gcGVyZm9ybSBpbXBsaWNpdCBmZW5jaW5n IG9uIGVhY2ggc3ViYWxsb2NhdGlvbiwKPj4gaW5zdGVhZCBleHBsaWNpdCBmZW5jaW5nIHNob3Vs ZCBiZSB1c2VkIGZvciB0aGUgc3ViYWxsb2NhdGlvbnMuCj4+Cj4+IFNvLCB3ZSB3aWxsIG5lZWQg dG8gYWRkIHRoZSByZWxvY2F0aW9uIGZsYWdzIGZvciB0aGUgZGlyZWN0aW9uIGFuZAo+PiBleHBs aWNpdCAob3IgaW1wbGljaXQpIGZlbmNpbmcgcGVyLXJlbG9jYXRpb24uIFRoZSBkaXJlY3Rpb24g d2lsbCB0ZWxsCj4+IGhvdyBmZW5jZSBzaG91bGQgYmUgYXR0YWNoZWQgdG8gdGhlIEJPJ3MgRE1B LXJlc2VydmF0aW9uLCB3aGlsZSB0aGUKPj4gZmVuY2UtZmxhZyB3aWxsIHRlbGwgd2hldGhlciBq b2IncyBzY2hlZHVsZXIgc2hvdWxkIHdhaXQgZm9yIHRoZSBCTydzCj4+IHJlc2VydmF0aW9uIGJl Zm9yZSBleGVjdXRpbmcgam9iIG9uIGhhcmR3YXJlLiBUaGlzIGFsbCB3aWxsIGJlIG5lZWRlZAo+ PiBmb3IgYSBwcm9wZXIgRFJJIGltcGxlbWVudGF0aW9uIG9uIG9sZGVyIFRlZ3Jhcy4KPj4KPj4g QWN0dWFsbHksIGR1cmluZyBvZiBteSBleHBlcmltZW50cyB3aXRoIHRoZSBVQVBJLCBJIGFkZGVk IGJvdGggdGhlc2UKPj4gZmxhZ3MgZm9yIHRoZSByZWxvY2F0aW9ucyBbMV0sIGJ1dCByZWFsbHkg dXNlZCBvbmx5IHRoZSBkaXJlY3Rpb24gZmxhZwo+PiBzbyBmYXIsIHJlbHlpbmcgb24gdGhlIGlt cGxpY2l0IGZlbmNpbmcuCj4+Cj4+IFsxXQo+PiBodHRwczovL2dpdGh1Yi5jb20vZ3JhdGUtZHJp dmVyL2xpbnV4L2Jsb2IvbWFzdGVyL2luY2x1ZGUvdWFwaS9kcm0vdGVncmFfZHJtLmgjTDg5NAo+ Pgo+Pgo+PiBTbywgbGV0J3Mga2VlcCB0aGUgY3VycmVudCB2YXJpYW50IG9mIHRoaXMgTUFQIElP Q1RMIGFzLWlzLgo+Pgo+IAo+IExldCBtZSByZXBocmFzZSB0byBtYWtlIHN1cmUgSSB1bmRlcnN0 YW5kOgo+IAo+IEZvciByZWxvY2F0aW9ucywgd2Ugc2hvdWxkIGFkZCBmbGFncyBmb3IgZGlyZWN0 aW9uIGFuZCBmZW5jaW5nLiBUaGlzIHdheQo+IGF0IHN1Ym1pdCB0aW1lIHdlIGNhbiBkbyB0aGUg cHJvcGVyIGZlbmNpbmcgb3BlcmF0aW9ucyBvbiB0aGUgcmVsb2NhdGVkCj4gQk8ncyBETUEgcmVz ZXJ2YXRpb24uCgpDb3JyZWN0Cgo+IFRoaXMgc291bmRzIGdvb2QgdG8gbWUsIGFuZCBJIHRoaW5r IGl0IG1ha2VzIHRoZSAicmVsb2NhdGlvbiIgY29uY2VwdCBhCj4gYml0IG1vcmUgZ2VuZXJhbCB0 aGFuIGl0IGlzIGN1cnJlbnRseS4gSSB0aGluayB3ZSBjb3VsZCByZW5hbWUgaXQgdG8KPiBzb21l dGhpbmcgbGlrZSAiYnVmZmVyX3VzYWdlIiAob3BlbiB0byBiaWtlc2hlZGRpbmcpLCBhbmQgaXQg Y2FuIGhhdmUKPiBmZW5jZS1yZWxhdGVkIGZsYWdzIGFuZCByZWxvY2F0aW9uLXJlbGF0ZWQgZmxh Z3MuIEZvciBuZXdlciBUZWdyYSBjaGlwcwo+IHdlIGRvbid0IG5lY2Vzc2FyaWx5IG5lZWQgdG8g cmVsb2NhdGUsIGJ1dCB3ZSBzdGlsbCBtYXkgbmVlZCB0byBoYW5kbGUKPiBETUEgcmVzZXJ2YXRp b25zLCBzbyBpbiB0aGVzZSBjYXNlcyBvbmx5IHRoZSBmZW5jaW5nIGZsYWdzIHdvdWxkIGJlIHNl dC4KCktlcm5lbCBkcml2ZXIgYWxyZWFkeSBrbm93cyB3aGV0aGVyIHJlbG9jYXRpb24gbmVlZHMg dG8gYmUgcGF0Y2hlZCBzaW5jZQppdCByZXR1cm5zIDB4ZmZmZmZmZmYgYnkgdGhlIE1BUCBpZiBw YXRjaGluZyBpcyBuZWVkZWQsIGFuZCB0aHVzLApwYXRjaGluZyBjb3VsZCBiZSBhdXRvLXNraXBw ZWQgYnkgdGhlIGRyaXZlci4KCkkgZG9uJ3QgdGhpbmsgdGhhdCBhIHNwZWNpYWwgZmxhZyBpcyBy ZXF1aXJlZCBmb3IgdGVsbGluZyBhYm91dCB3aGV0aGVyCnJlbG9jYXRpb24gbmVlZHMgdG8gYmUg ZG9uZS4gVGhlIGRpcmVjdGlvbiBhbmQgZmVuY2UgZmxhZ3Mgc2hvdWxkIGJlCmVub3VnaCBmb3Ig bm93LgoKPT09CgpJJ20gY3VyaW9zIHdoYXQgZG8geW91IHRoaW5rIGFib3V0IGFub3RoZXIgdmFy aWFudDoKCkluIHRoZSBncmF0ZS1rZXJuZWwgSSdtIHVzaW5nIGEgQk8gdGFibGUgd2hpY2ggY29u dGFpbnMgdW5pcXVlIEJPCmVudHJpZXMgZm9yIGVhY2ggam9iJ3MgcmVsb2NhdGlvbiBbMV0gYW5k IHRoZW4gSURzIG9mIHRoaXMgdGFibGUgYW5kCnRhcmdldCBvZmZzZXRzIGFyZSBlbWJlZGRlZCBp bnRvIHRoZSBjbWRzdHJlYW0gaW4tcGxhY2Ugb2YgdGhlIG1lbW9yeQphZGRyZXNzZXMgWzJdLiBU aGlzIHdheSwgd2hlbiBjbWRzdHJlYW0gaXMgZnVsbHkgZmlyZXdhbGxlZCwgd2UncmUKcmVhZGlu ZyB0aGUgc3RyZWFtJ3MgZGF0YSBhbnl3YXlzLCBhbmQgdGh1cywgaXQncyBxdWl0ZSBuaWNlIHRv IGVtYmVkCnRoZSBCTyB0YWJsZSBJRHMgYW5kIG9mZnNldHMgaW50byBjbWRzdHJlYW0gaXRzZWxm IFszXS4KCkluIGEgcmVzdWx0OgoKIC0gRWFjaCBqb2IncyBCTyBpcyByZXNvbHZlZCBvbmx5IG9u Y2UgZHVyaW5nIHN1Ym1pc3Npb24uCgogLSBCTyB0YWJsZSBpcyBrZXB0IHNtYWxsIGlmIGNtZHN0 cmVhbSBjb250YWlucyBkdXBsaWNhdGVkIHJlbG9jYXRpb25zLgoKWzFdCmh0dHBzOi8vZ2l0aHVi LmNvbS9ncmF0ZS1kcml2ZXIvbGludXgvYmxvYi9tYXN0ZXIvaW5jbHVkZS91YXBpL2RybS90ZWdy YV9kcm0uaCNMODkyCgpbMl0KaHR0cHM6Ly9naXRodWIuY29tL2dyYXRlLWRyaXZlci9saW51eC9i bG9iL21hc3Rlci9pbmNsdWRlL3VhcGkvZHJtL3RlZ3JhX2RybS5oI0w3ODMKClszXQpodHRwczov L2dpdGh1Yi5jb20vZ3JhdGUtZHJpdmVyL2xpbnV4L2Jsb2IvbWFzdGVyL2RyaXZlcnMvZ3B1L2Ry bS90ZWdyYS91YXBpL3BhdGNoaW5nLmMjTDQzCgpPZiBjb3Vyc2UgdGhpcyBsaW1pdHMgdGhlIG51 bWJlciBvZiBCT3MgcGVyLWpvYi4gSW4gYSBjYXNlIG9mCmdyYXRlLWtlcm5lbCBpdCdzIG1heCA2 NCBCT3MgcGVyLWpvYiArIG1heCA2NE1CIGZvciB0YXJnZXQgb2Zmc2V0LiBJCmd1ZXNzIHRoZSBC T3MgbnVtYmVyIGNvdWxkIGJlIGxvd2VyZWQgdG8gMzIgcGVyLWpvYiwgd2hpY2ggc2hvdWxkIGJl IGEKYml0IG1vcmUgcmVhbGlzdGljLCBhbmQgdGhlbiBtYXggdGFyZ2V0IG9mZnNldCB3aWxsIGJl IDEyOE1CLgoKU28sIHdlIGNvdWxkIHJlcGxhY2UgdGhlIEJPIHRhYmxlIHdpdGggYSBtYXBwaW5n IHRhYmxlIGFuZCBoYXZlIHRoZQpNQVBQSU5HX1RBQkxFISA6KSBBbmQgaXQgZG9lc24ndCBtYXR0 ZXIgd2hldGhlciBjbWRzdHJlYW0gcGF0Y2hlZCBvcgpub3QsIGVpdGhlciB3YXkgdGhlIE1BUFBJ TkdfVEFCTEUgd2lsbCBjb250YWluIG1hcHBpbmcgSUQgKyBmbGFncy4KClRoZXJlIGFyZSAzIHBv c3NpYmxlIHZhcmlhbnRzIG9mIGhvdyBqb2IgY291bGQgYmUgcHJvY2Vzc2VkLCBkZXBlbmRpbmcK b24gaGFyZHdhcmUgZ2VuZXJhdGlvbiBhbmQgZHJpdmVyIHNlY3VyaXR5IGNvbmZpZ3VyYXRpb246 CgogIDEuIEpvYiBpcyBmdWxseS1wYXJzZWQgYW5kIHBhdGNoZWQuCiAgMi4gSm9iIGlzIHBhdGNo ZWQtb25seSAod2l0aCByZWxvY2F0aW9ucykuCiAgMy4gSm9iIGlzbid0IHBhcnNlZCwgbm9yIHBh dGNoZWQuCgpNeSB2YXJpYW50IGNvdmVycyAxIGFuZCAzLiBJIGd1ZXNzIHdlIGNvdWxkIGp1c3Qg aWdub3JlIHRoZSBjYXNlIDIgZm9yCm5vdyBhbmQgZmFsbCBiYWNrIHRvIDEsIGZvciBzaW1wbGlj aXR5LiBJdCBzaG91bGRuJ3QgYmUgYSBwcm9ibGVtIHRvIGFkZApzdXBwb3J0IGZvciB0aGUgUkVM T0NTX1RBQkxFIGluIGFkZGl0aW9uIHRvIE1BUFBJTkdfVEFCTEUgbGF0ZXIgb24sIGlmCndpbGwg YmUgcmVhbGx5IG5lZWRlZC4KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJp LWRldmVsCg==