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=-3.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS autolearn=no 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 3CDB3C43460 for ; Fri, 30 Apr 2021 09:35:19 +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 AA1926145D for ; Fri, 30 Apr 2021 09:35:18 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org AA1926145D Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ffwll.ch 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 43E796F51A; Fri, 30 Apr 2021 09:35:16 +0000 (UTC) Received: from mail-oo1-xc2a.google.com (mail-oo1-xc2a.google.com [IPv6:2607:f8b0:4864:20::c2a]) by gabe.freedesktop.org (Postfix) with ESMTPS id E8AD66F51F for ; Fri, 30 Apr 2021 09:35:14 +0000 (UTC) Received: by mail-oo1-xc2a.google.com with SMTP id i3-20020a4ad3830000b02901ef20f8cae8so8045082oos.11 for ; Fri, 30 Apr 2021 02:35:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=/wVmpG6vak/ihMzHhgP5FHkpR93QUB++MGmHsuuQXpM=; b=ljuczzjRAJOFNhzapyrOR3nz73wUOIt43lRqPMWFtL2+d8SjhyY2RqgXfSSfCiU/o2 GHQhEyG5rzheSn3N5Yf/VUGkf6OyNS5ZJryABbYQTscRred2sBuZxwZ05o3gaE+e5vd9 wH4QrDIBUvvtHZXitVlK+Uz4gTlcROkHOAs9Q= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=/wVmpG6vak/ihMzHhgP5FHkpR93QUB++MGmHsuuQXpM=; b=RFnCwyTHl58MbvqiykuhMdrO3Uav7ioFebBo/sqZBXnT88QWQsn+Ni6OxjW4jJOjJT rpLWyv3trOj1+bzzeJht6Sh493pKxHMEOCQuFIq+KDxussN0nmGQAL5NjahVHbrnI+su L4z0jiQfrYXsIKEsd9VFhWCWAz9jS0x01ZydMYrRUcF6FhLJlhu7BMy3kiCiA6hD/X2O vzEmcbhiJ8OuS/RTX47hVxFqakBtKG4gItV0KAGzQ8NOUfudlWyW+MKGdDZ5y+ap+0eG WhYnbzgrD3Xeb/bqufgaa2w9tI1G9yGKMigDTqNPTVutzmlNxcBoQbJ6RwEgbOE4pIJd Pu3Q== X-Gm-Message-State: AOAM533uku2f1/FwdOMYxCIFGPzi2gjukf/mSUthwS5JSpBjX0gLDdOu DyJoLLXm/EJXQqtqhmbM8SDF+wbJf2taX7U/EJsR/w== X-Google-Smtp-Source: ABdhPJxOPDXIOwEWnTMhoGk+4EfaSFdPKrfd/9M4miLtifWvExacuN+5XQJc5v5zZx+fLPOKxl9+po2IawnINgliuQo= X-Received: by 2002:a4a:e873:: with SMTP id m19mr3725583oom.85.1619775313743; Fri, 30 Apr 2021 02:35:13 -0700 (PDT) MIME-Version: 1.0 References: <19ca36c3-306e-5021-0243-3289c38ef067@gmail.com> <72f21ab9-9376-b366-2b69-94ea65e332c1@gmail.com> <06fab310-afb6-c720-a2e7-d8e3d70f81b8@gmail.com> In-Reply-To: <06fab310-afb6-c720-a2e7-d8e3d70f81b8@gmail.com> From: Daniel Vetter Date: Fri, 30 Apr 2021 11:35:02 +0200 Message-ID: Subject: Re: [Mesa-dev] [RFC] Linux Graphics Next: Explicit fences everywhere and no BO fences - initial proposal To: =?UTF-8?Q?Christian_K=C3=B6nig?= 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: dri-devel , ML Mesa-dev Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" T24gRnJpLCBBcHIgMzAsIDIwMjEgYXQgMTE6MDggQU0gQ2hyaXN0aWFuIEvDtm5pZwo8Y2tvZW5p Zy5sZWljaHR6dW1lcmtlbkBnbWFpbC5jb20+IHdyb3RlOgo+Cj4gQW0gMzAuMDQuMjEgdW0gMTA6 NTggc2NocmllYiBEYW5pZWwgVmV0dGVyOgo+ID4gW1NOSVBdCj4gPj4+IFdoZW4gdGhlIHVzZXIg YWxsb2NhdGVzIHVzZXJtb2RlIHF1ZXVlcywgdGhlIGtlcm5lbCBkcml2ZXIgc2V0cyB1cCBhCj4g Pj4+IHF1ZXVlIGRlc2NyaXB0b3IgaW4gdGhlIGtlcm5lbCB3aGljaCBkZWZpbmVzIHRoZSBsb2Nh dGlvbiBvZiB0aGUgcXVldWUKPiA+Pj4gaW4gbWVtb3J5LCB3aGF0IHByaW9yaXR5IGl0IGhhcywg d2hhdCBwYWdlIHRhYmxlcyBpdCBzaG91bGQgdXNlLCBldGMuCj4gPj4+IFVzZXIgbW9kZSBjYW4g dGhlbiBzdGFydCB3cml0aW5nIGNvbW1hbmRzIHRvIGl0cyBxdWV1ZXMuICBXaGVuIHRoZXkKPiA+ Pj4gYXJlIHJlYWR5IGZvciB0aGUgaGFyZHdhcmUgdG8gc3RhcnQgZXhlY3V0aW5nIHRoZW0sIHRo ZXkgcmluZyBhCj4gPj4+IGRvb3JiZWxsIHdoaWNoIHNpZ25hbHMgdGhlIHNjaGVkdWxlciBhbmQg aXQgbWFwcyB0aGUgcXVldWUgZGVzY3JpcHRvcnMKPiA+Pj4gdG8gSFcgcXVldWUgc2xvdHMgYW5k IHRoZXkgc3RhcnQgZXhlY3V0aW5nLiAgVGhlIHVzZXIgb25seSBoYXMgYWNjZXNzCj4gPj4+IHRv IGl0J3MgcXVldWVzIGFuZCBhbnkgYnVmZmVycyBpdCBoYXMgbWFwcGVkIGluIGl0J3MgR1BVIHZp cnR1YWwKPiA+Pj4gYWRkcmVzcyBzcGFjZS4gIFdoaWxlIHRoZSBxdWV1ZXMgYXJlIHNjaGVkdWxl ZCwgdGhlIHVzZXIgY2FuIGtlZXAKPiA+Pj4gc3VibWl0dGluZyB3b3JrIHRvIHRoZW0gYW5kIHRo ZXkgd2lsbCBrZWVwIGV4ZWN1dGluZyB1bmxlc3MgdGhleSBnZXQKPiA+Pj4gcHJlZW1wdGVkIGJ5 IHRoZSBzY2hlZHVsZXIgZHVlIHRvIG92ZXJzdWJzY3JpcHRpb24gb3IgYSBwcmlvcml0eSBjYWxs Cj4gPj4+IG9yIGEgcmVxdWVzdCBmcm9tIHRoZSBrZXJuZWwgZHJpdmVyIHRvIHByZWVtcHQsIGV0 Yy4KPiA+PiBZZWFoLCB3b3JrcyBsaWtlIHdpdGggb3VyIHN0dWZmLgo+ID4+Cj4gPj4gSSBkb24n dCBzZWUgYSBwcm9ibGVtIHRiaC4gSXQncyBzbGlnaHRseSBzaWxseSBnb2luZyB0aGUgZGV0b3Vy IHdpdGggdGhlCj4gPj4ga2VybmVsIGlvY3RsLCBhbmQgaXQncyBhbm5veWluZyB0aGF0IHlvdSBz dGlsbCBoYXZlIHRvIHVzZSBkcm0vc2NoZWR1bGVyCj4gPj4gdG8gcmVzb2x2ZSBkZXBlbmRlbmNp ZXMgaW5zdGVhZCBvZiBncHUgc2VtYXBob3JlcyBhbmQgYWxsIHRoYXQuIEJ1dCB0aGlzCj4gPj4g b25seSBhcHBsaWVzIHRvIGxlZ2FjeSB3aW5zeXMgbW9kZSwgY29tcHV0ZSAoZS5nLiB2ayB3aXRo b3V0IHdpbnN5cykgY2FuCj4gPj4gdXNlIHRoZSBmdWxsIHBvd2VyLiBKdXN0IG5lZWRzIGEgZmxh ZyBvciBzb21ldGhpbmcgd2hlbiBzZXR0aW5nIHVwIHRoZQo+ID4+IGNvbnRleHQuCj4gPj4KPiA+ PiBBbmQgYmVzdCBwYXJ0IGlzIHRoYXQgZnJvbSBodyBwb3YgdGhpcyByZWFsbHkgaXMgaW5kaXN0 aW5ndWlzaGFibGUgZnJvbQo+ID4+IHRoZSBmdWxsIG9uIHVzZXJzcGFjZSBzdWJtaXQgbW9kZWwu Cj4gPj4KPiA+PiBUaGUgdGhpbmcgd2hlcmUgaXQgZ2V0cyBhbm5veWluZyBpcyB3aGVuIHlvdSB1 c2Ugb25lIG9mIHRoZXNlIG5ldyBjcHUKPiA+PiBpbnN0cnVjdGlvbnMgd2hpY2ggZG8gZGlyZWN0 IHN1Ym1pdCB0byBodyBhbmQgcGFzcyBhbG9uZyB0aGUgcGFzaWQgaWQKPiA+PiBiZWhpbmQgdGhl IHNjZW5lcy4gVGhhdCdzIHRydWx5IHNvbWV0aGluZyB5b3UgY2FuJ3QgaW50ZXJjZXB0IGFueW1v cmUgaW4KPiA+PiB0aGUga2VybmVsIGFuZCBmYWtlIHRoZSBsZWdhY3kgZG1hX2ZlbmNlIHdvcmxk Lgo+ID4+Cj4gPj4gQnV0IHdoYXQgeW91J3JlIGRlc2NyaWJpbmcgaGVyZSBzb3VuZHMgbGlrZSBi b2cgc3RhbmRhcmQgc3R1ZmYsIGFuZCBhbHNvCj4gPj4gcHJldHR5IGVhc3kgdG8ga2VlcCB3b3Jr aW5nIHdpdGggZXhhY3RseSB0aGUgY3VycmVudCBtb2RlbC4KPiA+Pgo+ID4+IE9mYyB3ZSdsbCB3 YW50IHRvIHB1c2ggZm9yd2FyZCBhIG1vcmUgbW9kZXJuIG1vZGVsIHRoYXQgYmV0dGVyIHN1aXRz Cj4gPj4gbW9kZXJuIGdwdXMsIGJ1dCBJIGRvbid0IHNlZSBhbnkgaGFyZCByZXF1aXJlbWVudCBo ZXJlIGZyb20gdGhlIGh3IHNpZGUuCj4gPiBBZGRpbmcgYSBiaXQgbW9yZSBkZXRhaWwgb24gd2hh dCBJIGhhdmUgaW4gbWluZDoKPiA+Cj4gPiAtIG1lbW9yeSBtYW5hZ2VtZW50IHdvcmtzIGxpa2Ug YW1kZ3B1IGRvZXMgdG9kYXksIHNvIGFsbCBidWZmZXJzIGFyZQo+ID4gcHJlLWJvdW5kIHRvIHRo ZSBncHUgdm0sIHdlIGtlZXAgdGhlIGVudGlyZSBibyBzZXQgbWFya2VkIGFzIGJ1c3kgd2l0aAo+ ID4gdGhlIGJ1bGsgbHJ1IHRyaWNrIGZvciBldmVyeSBjb21tYW5kIHN1Ym1pc3Npb24uCj4gPgo+ ID4gLSBmb3IgdGhlIHJpbmdidWZmZXIsIHVzZXJzcGFjZSBhbGxjb2F0ZXMgYSBzdWl0YWJseSBz aXplZCBibyBmb3IKPiA+IHJpbmdidWZmZXIsIHJpbmcvdGFpbC9zZXFubyBhbmQgd2hhdGV2ZXIg ZWxzZSBpdCBuZWVkcwo+ID4KPiA+IC0gdXNlcnNwYWNlIHRoZW4gYXNrcyB0aGUga2VybmVsIHRv IG1ha2UgdGhhdCBpbnRvIGEgaHcgY29udGV4dCwgd2l0aAo+ID4gYWxsIHRoZSBwcml2aWxlZGdl cyBzZXR1cC4gRG9vcmJlbGwgd2lsbCBvbmx5IGJlIG1hcHBlZCBpbnRvIGtlcm5lbAo+ID4gKGh3 IGNhbid0IHRlbGwgdGhlIGRpZmZlcmVuY2UgYW55d2F5KSwgYnV0IGlmIGl0IGhhcHBlbnMgdG8g YWxzbyBiZQo+ID4gdmlzaWJsZSB0byB1c2Vyc3BhY2UgdGhhdCdzIG5vIHByb2JsZW0uIFdlIGFz c3VtZSB1c2Vyc3BhY2UgY2FuIHJpbmcKPiA+IHRoZSBkb29yYmVsbCBhbnl0aW1lIGl0IHdhbnRz IHRvLgo+Cj4gVGhpcyBkb2Vzbid0IHdvcmsgaW4gaGFyZHdhcmUuIFdlIGF0IGxlYXN0IG5lZWQg dG8gc2V0dXAgYSBmZXcgcmVnaXN0ZXJzCj4gYW5kIG1lbW9yeSBsb2NhdGlvbnMgZnJvbSBpbnNp ZGUgdGhlIFZNIHdoaWNoIHVzZXJzcGFjZSBzaG91bGRuJ3QgaGF2ZQo+IGFjY2VzcyB0byB3aGVu IHdlIHdhbnQgdGhlIGVuZCBvZiBiYXRjaCBmZW5jZSBhbmQgcmluZyBidWZmZXIgc3RhcnQgdG8K PiBiZSByZWxpYWJsZS4KClRoZSB0aGluZyBpcywgd2UgZG9uJ3QgY2FyZSB3aGV0aGVyIGl0J3Mg cmVsaWFibGUgb3Igbm90LiBVc2Vyc3BhY2UgaXMKYWxsb3dlZCB0byBsaWUsIG5vdCBzaWduYWws IHNpZ25hbCB0aGUgd3JvbmcgdGhpbmcsIG91dCBvZiBvcmRlciwKZXZlcnl0aGluZy4KClRoZSBk ZXNpZ24gYXNzdW1lcyBhbGwgdGhpcyBpcyBwb3NzaWJsZS4KClNvIHVubGVzcyB5b3UgY2FuJ3Qg c2lnbmFsIGF0IGFsbCBmcm9tIHVzZXJzcGFjZSwgdGhpcyB3b3Jrcy4gQW5kIGZvcgp0aGUgImNh bid0IHNpZ25hbCBhdCBhbGwiIGl0IGp1c3QgbWVhbnMgc29tZXRoaW5nIG5lZWRzIHRvIGRvIGEg Y3B1CmJ1c3kgd2FpdCBhbmQgYnVybiBkb3duIGxvdHMgb2YgY3B1IHRpbWUuIEkgaG9wZSB0aGF0 J3Mgbm90IHlvdXIgaHcKZGVzaWduIDotKQoKPiA+IC0gd2UgZG8gZG91YmxlIG1lbW9yeSBtYW5h Z2VtZW50OiBPbmUgZG1hX2ZlbmNlIHdvcmtzIHNpbWlsYXIgdG8gdGhlCj4gPiBhbWRrZmQgcHJl ZW1wdCBmZW5jZSwgZXhjZXB0IGl0IGRvZXNuJ3QgcHJlZW1wdCBidXQgZG9lcyBhbnl0aGluZwo+ ID4gcmVxdWlyZWQgdG8gbWFrZSB0aGUgaHcgY29udGV4dCB1bnJ1bm5hYmxlIGFuZCB0YWtlIGl0 IG91dCBvZiB0aGUgaHcKPiA+IHNjaGVkdWxlciBlbnRpcmVseS4gVGhpcyBtaWdodCBpbnZvbHZl IHVubWFwcGluZyB0aGUgZG9vcmJlbGwgaWYKPiA+IHVzZXJzcGFjZSBoYXMgYWNjZXNzIHRvIGl0 Lgo+ID4KPiA+IC0gYnV0IHdlIGFsc28gZG8gY2xhc3NpYyBlbmQtb2YtYmF0Y2ggZmVuY2VzLCBz byB0aGF0IGltcGxpY2l0IGZlbmNpbmcKPiA+IGFuZCBhbGwgdGhhdCBrZWVwcyB3b3JraW5nLiBU aGUgIm1ha2UgaHcgY3R4IHVucnVubmFibGUiIGZlbmNlIG11c3QKPiA+IGFsc28gd2FpdCBmb3Ig YWxsIG9mIHRoZXNlIHBlbmRpbmcgc3VibWlzc2lvbnMgdG8gY29tcGxldGUuCj4KPiBUaGlzIHRv Z2V0aGVyIGRvZXNuJ3Qgd29yayBmcm9tIHRoZSBzb2Z0d2FyZSBzaWRlLCBlLmcuIHlvdSBjYW4g ZWl0aGVyCj4gaGF2ZSBwcmVlbXB0aW9uIGZlbmNlcyBvciBlbmQgb2YgYmF0Y2ggZmVuY2VzIGJ1 dCBuZXZlciBib3RoIG9yIHlvdXIgZW5kCj4gb2YgYmF0Y2ggZmVuY2VzIHdvdWxkIGhhdmUgYW5v dGhlciBkZXBlbmRlbmN5IG9uIHRoZSBwcmVlbXB0aW9uIGZlbmNlcwo+IHdoaWNoIHdlIGN1cnJl bnRseSBjYW4ndCBleHByZXNzIGluIHRoZSBkbWFfZmVuY2UgZnJhbWV3b3JrLgoKSXQncyBfbm90 XyBhIHByZWVtcHQgZmVuY2UuIEl0J3MgYW4gY3R4IHVubG9hZCBmZW5jZS4gTm90IHRoZSBzYW1l CnRoaW5nLiBOb3JtYWwgcHJlZW1wdCBmZW5jZSB3b3VsZCBpbmRlZWQgZmFpbC4KCj4gQWRkaXRp b25hbCB0byB0aGF0IGl0IGNhbid0IHdvcmsgZnJvbSB0aGUgaGFyZHdhcmUgc2lkZSBiZWNhdXNl IHdlIGhhdmUKPiBhIHNlcGFyYXRpb24gYmV0d2VlbiBlbmdpbmUgYW5kIHNjaGVkdWxlciBvbiB0 aGUgaGFyZHdhcmUgc2lkZS4gU28gd2UKPiBjYW4ndCByZWxpYWJsZSBnZXQgYSBzaWduYWwgaW5z aWRlIHRoZSBrZXJuZWwgdGhhdCBhIGJhdGNoIGhhcyBjb21wbGV0ZWQuCj4KPiBXaGF0IHdlIGNv dWxkIGRvIGlzIHRvIGdldCB0aGlzIHNpZ25hbCBpbiB1c2Vyc3BhY2UsIGUuZy4gdXNlcnNwYWNl Cj4gaW5zZXJ0cyB0aGUgcGFja2V0cyBpbnRvIHRoZSByaW5nIGJ1ZmZlciBhbmQgdGhlbiB0aGUg a2VybmVsIGNhbiByZWFkCj4gdGhlIGZlbmNlIHZhbHVlIGFuZCBnZXQgdGhlIElWLgo+Cj4gQnV0 IHRoaXMgaGFzIHRoZSBzYW1lIHByb2JsZW0gYXMgdXNlciBmZW5jZXMgYmVjYXVzZSBpdCByZXF1 aXJlcyB0aGUKPiBjb29wZXJhdGlvbiBvZiB1c2Vyc3BhY2UuCgpOb3BlLiBSZWFkIHRoZSB0aGlu ZyBhZ2FpbiwgSSdtIGFzc3VtaW5nIHRoYXQgdXNlcnNwYWNlIGxpZXMuIFRoZQprZXJuZWwncyBk bWFfZmVuY2UgY29kZSBjb21wZW5zYXRlcyBmb3IgdGhhdC4KCkFsc28gbm90ZSB0aGF0IHVzZXJz cGFjZSBjYW4gYWxyZWFkeSBsaWUgdG8gaXQncyBoZWFydCdzIGNvbnRlbnQgd2l0aAp0aGUgY3Vy cmVudCBJQiBzdHVmZi4gWW91IGFyZSBhbHJlYWR5IGFsbG93ZWQgdG8gaGFuZyB0aGUgZ3B1LCBz dWJtaXQKdXR0ZXIgZ2FyYmFnZSwgcmVuZGVyIHRvIHRoZSB3cm9uZyBidWZmZXIgb3IganVzdCBz Y3JpYmJsZSBhbGwgb3Zlcgp5b3VyIG93biBJQi4gVGhpcyBpc24ndCBhIG5ldyBwcm9ibGVtLgoK PiBXZSBqdXN0IHllc3RlcmRheSBoYWQgYSBtZWV0aW5nIHdpdGggdGhlIGZpcm13YXJlIGRldmVs b3BlcnMgdG8gZGlzY3Vzcwo+IHRoZSBwb3NzaWJsZSBvcHRpb25zIGFuZCBJIG5vdyBoYXZlIGV2 ZW4gc3Ryb25nZXIgZG91YnRzIHRoYXQgdGhpcyBpcwo+IGRvYWJsZS4KPgo+IFdlIGVpdGhlciBo YXZlIHVzZXIgcXVldWVzIHdoZXJlIHVzZXJzcGFjZSB3cml0ZXMgdGhlIG5lY2Vzc2FyeSBjb21t YW5kcwo+IGRpcmVjdGx5IHRvIHRoZSByaW5nIGJ1ZmZlciBvciB3ZSBoYXZlIGtlcm5lbCBxdWV1 ZXMuIEEgbWl4dHVyZSBvZiBib3RoCj4gaXNuJ3Qgc3VwcG9ydGVkIGluIG5laXRoZXIgdGhlIGhh cmR3YXJlIG5vciB0aGUgZmlybXdhcmUuCgpZdXAuIFBsZWFzZSByZWFkIG15IHRoaW5nIGFnYWlu IGNhcmVmdWxseSwgSSdtIHN0YXRpbmcgdGhhdCB1c2Vyc3BhY2UKd3JpdGVzIGFsbCB0aGUgbmVj ZXNzYXJ5IGNvbW1hbmRzIGRpcmVjdGx5IGludG8gdGhlIHJpbmdidWZmZXIuCgpUaGUga2VybmVs IHdyaXRlcyBfbm90aGluZ18gaW50byB0aGUgcmluZ2J1ZmZlci4gVGhlIG9ubHkgdGhpbmcgaXQK ZG9lcyBpcyB1cGRhdGUgdGhlIGhlYWQgcG9pbnRlciB0byB1bmJsb2NrIHRoYXQgbmV4dCBzZWN0 aW9uIG9mIHRoZQpyaW5nLCB3aGVuIGRybS9zY2hlZHVsZXIgdGhpbmtzIHRoYXQncyBvayB0byBk by4KClRoaXMgd29ya3MsIHlvdSBqdXN0IHRoaW5raW5nIG9mIHNvbWV0aGluZyBjb21wbGV0ZWx5 IGRpZmZlcmVudCB0aGFuCndoYXQgSSB3cml0ZSBkb3duIDotKQoKQ2hlZXJzLCBEYW5pZWwKCj4K PiBSZWdhcmRzLAo+IENocmlzdGlhbi4KPgo+ID4KPiA+IC0gZm9yIHRoZSBhY3R1YWwgZW5kLW9m LWJhdGNoYnVmZmVyIGRtYV9mZW5jZSBpdCdzIGFsbW9zdCBhbGwgZmFrZWQsCj4gPiBidXQgd2l0 aCBzb21lIGNoZWNrcyBpbiB0aGUga2VybmVsIHRvIGtlZXAgdXAgdGhlIGd1YXJhbnRlZXMuIGNz IGZsb3cKPiA+IGlzIHJvdWdobHkKPiA+Cj4gPiAxLiB1c2Vyc3BhY2UgZGlyZWN0bHkgd3JpdGVz IGludG8gdGhlIHVzZXJzcGFjZSByaW5nYnVmZmVyLiBJdCBuZWVkcwo+ID4gdG8gZm9sbG93IHRo ZSBrZXJuZWwncyBydWxlIGZvciB0aGlzIGlmIGl0IHdhbnRzIHRoaW5ncyB0byB3b3JrCj4gPiBj b3JyZWN0bHksIGJ1dCB3ZSBhc3N1bWUgZXZpbCB1c2Vyc3BhY2UgaXMgYWxsb3dlZCB0byB3cml0 ZSB3aGF0ZXZlcgo+ID4gaXQgd2FudHMgdG8gdGhlIHJpbmcsIGFuZCBjaGFuZ2UgdGhhdCB3aGVu ZXZlciBpdCB3YW50cy4gVXNlcnNwYWNlCj4gPiBkb2VzIG5vdCB1cGRhdGUgcmluZyBoZWFkL3Rh aWwgcG9pbnRlcnMuCj4gPgo+ID4gMi4gY3MgaW9jdGwganVzdCBjb250YWluczogYSkgaGVhZCAo dGhlIHRoaW5nIHVzZXJzcGFjZSBhZHZhbmNlcywgdGFpbAo+ID4gaXMgd2hlcmUgdGhlIGdwdSBj b25zdW1lcykgcG9pbnRlciB2YWx1ZSB0byB3cml0ZSB0byBraWNrIG9mIHRoaXMgbmV3Cj4gPiBi YXRjaCBiKSBpbi1mZW5jZXMgYikgb3V0LWZlbmNlLgo+ID4KPiA+IDMuIGtlcm5lbCBkcm0vc2No ZWR1bGVyIGhhbmRsZXMgdGhpcyBsaWtlIGFueSBvdGhlciByZXF1ZXN0IGFuZCBmaXJzdAo+ID4g d2FpdHMgZm9yIHRoZSBpbi1mZW5jZXMgdG8gYWxsIHNpZ25hbCwgdGhlbiBpdCBleGVjdXRlcyB0 aGUgQ1MuIEZvcgo+ID4gZXhlY3V0aW9uIGl0IHNpbXBseSB3cml0ZXMgdGhlIHByb3ZpZGVkIGhl YWQgdmFsdWUgaW50byB0aGUgcmluZydzCj4gPiBtZXRhZGF0YSwgYW5kIHJpbmdzIHRoZSBkb29y YmVsbHMuIE5vIGNoZWNrcy4gV2UgYXNzdW1lIHVzZXJzcGFjZSBjYW4KPiA+IHVwZGF0ZSB0aGUg dGFpbCB3aGVuZXZlciBpdCBmZWVscyBsaWtlLCBzbyBjaGVja2luZyB0aGUgaGVhZCB2YWx1ZSBp cwo+ID4gcG9pbnRsZXNzIGFueXdheS4KPiA+Cj4gPiA0LiB0aGUgZW50aXJlIGNvcnJlY3RuZXNz IGlzIG9ubHkgZGVwZW5kaW5nIHVwb24gdGhlIGRtYV9mZW5jZXMKPiA+IHdvcmtpbmcgYXMgdGhl eSBzaG91bGQuIEZvciB0aGF0IHdlIG5lZWQgc29tZSB2ZXJ5IHN0cmljdCBydWxlcyBvbgo+ID4g d2hlbiB0aGUgZW5kLW9mLWJhdGNoYnVmZmVyIGRtYV9mZW5jZSBzaWduYWxzOgo+ID4gLSB0aGUg ZHJtL3NjaGVkdWxlciBtdXN0IGhhdmUgbWFya2VkIHRoZSByZXF1ZXN0IGFzIHJ1bm5hYmxlIGFs cmVhZHksCj4gPiBpLmUuIGFsbCBkZXBlbmRlbmNpZXMgYXJlIGZ1bGxmaWxsZWQuIFRoaXMgaXMg dG8gcHJldmVudCB0aGUgZmVuY2VzCj4gPiBmcm9tIHNpZ25hbGxpbmcgaW4gdGhlIHdyb25nIG9y ZGVyLgo+ID4gLSB0aGUgZmVuY2UgZnJvbSB0aGUgcHJldmlvdXMgYmF0Y2ggbXVzdCBoYXZlIHNp Z25hbGxlZCBhbHJlYWR5LCBhZ2Fpbgo+ID4gdG8gZ3VhcmFudGVlIGluLW9yZGVyIHNpZ25hbGxp bmcgKGV2ZW4gaWYgdXNlcnNwYWNlIGRvZXMgc29tZXRoaW5nCj4gPiBzdHVwaWQgYW5kIHJlb3Jk ZXJzIGhvdyB0aGluZ3MgY29tcGxldGUpCj4gPiAtIHRoZSBmZW5jZSBtdXN0IG5ldmVyIGp1bXAg YmFjayB0byB1bnNpZ25hbGxlZCwgc28gdGhlIGxvY2tsZXNzCj4gPiBmYXN0cGF0aCB0aGF0IGp1 c3QgY2hlY2tzIHRoZSBzZXFubyBpcyBhIG5vLWdvCj4gPgo+ID4gNS4gaWYgZHJtL3NjaGVkdWxl ciB0ZHIgZGVjaWRlcyBpdCdzIHRha2luZyB0b28gbG9uZyB3ZSB0aHJvdyB0aGUKPiA+IGVudGly ZSBjb250ZXh0IGF3YXksIGZvcmJpdCBmdXJ0aGVyIGNvbW1hbmQgc3VibWlzc2lvbiBvbiBpdCAo dGhyb3VnaAo+ID4gdGhlIGlvY3RsLCB1c2Vyc3BhY2UgY2FuIGtlZXAgd3JpdGluZyB0byB0aGUg cmluZyB3aGF0ZXZlciBpdCB3YW50cykKPiA+IGFuZCBmYWlsIGFsbCBpbi1mbGlnaHQgYnVmZmVy cyB3aXRoIGFuIGVycm9yLiBOb24tZXZpbCB1c2Vyc3BhY2UgY2FuCj4gPiB0aGVuIHJlY292ZXIg YnkgcmUtY3JlYXRpbmcgYSBuZXcgcmluZ2J1ZmZlciB3aXRoIGV2ZXJ5dGhpbmcuCj4gPgo+ID4g SSd2ZSBwb25kZXJlZCB0aGlzIG5vdyBmb3IgYSBiaXQgYW5kIEkgcmVhbGx5IGNhbid0IHNwb3Qg dGhlIGhvbGVzLgo+ID4gQW5kIEkgdGhpbmsgaXQgc2hvdWxkIGFsbCB3b3JrLCBib3RoIGZvciBo dyBhbmQga2VybmVsL2xlZ2FjeQo+ID4gZG1hX2ZlbmNlIHVzZS1jYXNlLgo+ID4gLURhbmllbAo+ CgoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9u Cmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2RyaS1kZXZlbAo=