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=-13.8 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 C50C4C4167B for ; Tue, 7 Sep 2021 15:33:44 +0000 (UTC) Received: from smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.137]) (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 645AD610D0 for ; Tue, 7 Sep 2021 15:33:44 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 645AD610D0 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=lists.linux-foundation.org Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id 2D7D04025F; Tue, 7 Sep 2021 15:33:44 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp4.osuosl.org ([127.0.0.1]) by localhost (smtp4.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id cSiyDErOxgkG; Tue, 7 Sep 2021 15:33:42 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp4.osuosl.org (Postfix) with ESMTPS id 2C94340251; Tue, 7 Sep 2021 15:33:42 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 13210C000F; Tue, 7 Sep 2021 15:33:42 +0000 (UTC) Received: from smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.138]) by lists.linuxfoundation.org (Postfix) with ESMTP id 7D148C000D for ; Tue, 7 Sep 2021 15:33:41 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id 6BF668176C for ; Tue, 7 Sep 2021 15:33:41 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Authentication-Results: smtp1.osuosl.org (amavisd-new); dkim=pass (2048-bit key) header.d=kernel.org Received: from smtp1.osuosl.org ([127.0.0.1]) by localhost (smtp1.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id jAeX11tfrjTk for ; Tue, 7 Sep 2021 15:33:40 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp1.osuosl.org (Postfix) with ESMTPS id 0EA9E81751 for ; Tue, 7 Sep 2021 15:33:39 +0000 (UTC) Received: by mail.kernel.org (Postfix) with ESMTPSA id 7AC6461051 for ; Tue, 7 Sep 2021 15:33:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1631028819; bh=3Yea4Fr5Ie1toQUOmtVyym4O0BP/K2DsqPqAKPtX2uU=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=X/95N0Xyk4A1gqz4COgG1SLU8Dh9u8q+EIJbFBjWYGEKRiY2VtodQfNzJptu9aRdZ DgrTj0b/7uOeVunKIsoV4baMwxgKFzo+os1nImbadj0N8c+mdxfZDbNUfzU4+NS287 3DEbz2WzypPu0kXC/0sLG8NRCH5yb8AW3wUfhqbw6glfdzqrIQb151bFFX7DNN7PBZ FfHAVWGbd82aUAWDzfTWl406sc+QFDCYkbu8l32Vy9y2+02UVSynjW3e5kIZb/i3Pe p1Bbo/DhTH2GC3kAcvLCrSMgpc4nwKrk9T+aJZ1kVW8RElqFjns8g0aaxbzjHbkRHA 2lrENgC+RRYog== Received: by mail-ed1-f53.google.com with SMTP id dm15so14490106edb.10 for ; Tue, 07 Sep 2021 08:33:39 -0700 (PDT) X-Gm-Message-State: AOAM531xabfHCN790/pyW5PaTQZwp2yoWNau74FJpPgNsqtdp7DOWCeZ 6KbfYEsIpflgRCqSTM38sHdvmVR3ZbfL35WYCQ== X-Google-Smtp-Source: ABdhPJyNnVMwWe1w7fHUzZYDF0H9Cf/1MvTGVSkKcOPxOQNj1Ah381CVuzMBB2RBkTKbbgZk42Z40AjczLRFC4tlCWQ= X-Received: by 2002:aa7:de09:: with SMTP id h9mr2254edv.271.1631028817727; Tue, 07 Sep 2021 08:33:37 -0700 (PDT) MIME-Version: 1.0 References: <20210423163234.3651547-2-thierry.reding@gmail.com> <20210520220306.GA1976116@robh.at.kernel.org> <7995b0ed-a277-ced1-b3d0-e0e7e02817a6@gmail.com> In-Reply-To: From: Rob Herring Date: Tue, 7 Sep 2021 10:33:24 -0500 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v2 1/5] dt-bindings: reserved-memory: Document memory region specifier To: Thierry Reding Cc: devicetree@vger.kernel.org, Robin Murphy , Linux IOMMU , dri-devel , Alyssa Rosenzweig , linux-tegra , Dmitry Osipenko , Will Deacon X-BeenThere: iommu@lists.linux-foundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Development issues for Linux IOMMU support List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: iommu-bounces@lists.linux-foundation.org Sender: "iommu" T24gRnJpLCBTZXAgMywgMjAyMSBhdCAxMDozNiBBTSBUaGllcnJ5IFJlZGluZyA8dGhpZXJyeS5y ZWRpbmdAZ21haWwuY29tPiB3cm90ZToKPgo+IE9uIEZyaSwgU2VwIDAzLCAyMDIxIGF0IDA5OjM2 OjMzQU0gLTA1MDAsIFJvYiBIZXJyaW5nIHdyb3RlOgo+ID4gT24gRnJpLCBTZXAgMywgMjAyMSBh dCA4OjUyIEFNIFRoaWVycnkgUmVkaW5nIDx0aGllcnJ5LnJlZGluZ0BnbWFpbC5jb20+IHdyb3Rl Ogo+ID4gPgo+ID4gPiBPbiBGcmksIFNlcCAwMywgMjAyMSBhdCAwODoyMDo1NUFNIC0wNTAwLCBS b2IgSGVycmluZyB3cm90ZToKPiA+ID4gPiBPbiBXZWQsIFNlcCAxLCAyMDIxIGF0IDk6MTMgQU0g VGhpZXJyeSBSZWRpbmcgPHRoaWVycnkucmVkaW5nQGdtYWlsLmNvbT4gd3JvdGU6Cj4gPiA+ID4g Pgo+ID4gPiA+ID4gT24gRnJpLCBKdWwgMDIsIDIwMjEgYXQgMDU6MTY6MjVQTSArMDMwMCwgRG1p dHJ5IE9zaXBlbmtvIHdyb3RlOgo+ID4gPiA+ID4gPiAwMS4wNy4yMDIxIDIxOjE0LCBUaGllcnJ5 IFJlZGluZyDQv9C40YjQtdGCOgo+ID4gPiA+ID4gPiA+IE9uIFR1ZSwgSnVuIDA4LCAyMDIxIGF0 IDA2OjUxOjQwUE0gKzAyMDAsIFRoaWVycnkgUmVkaW5nIHdyb3RlOgo+ID4gPiA+ID4gPiA+PiBP biBGcmksIE1heSAyOCwgMjAyMSBhdCAwNjo1NDo1NVBNICswMjAwLCBUaGllcnJ5IFJlZGluZyB3 cm90ZToKPiA+ID4gPiA+ID4gPj4+IE9uIFRodSwgTWF5IDIwLCAyMDIxIGF0IDA1OjAzOjA2UE0g LTA1MDAsIFJvYiBIZXJyaW5nIHdyb3RlOgo+ID4gPiA+ID4gPiA+Pj4+IE9uIEZyaSwgQXByIDIz LCAyMDIxIGF0IDA2OjMyOjMwUE0gKzAyMDAsIFRoaWVycnkgUmVkaW5nIHdyb3RlOgo+ID4gPiA+ ID4gPiA+Pj4+PiBGcm9tOiBUaGllcnJ5IFJlZGluZyA8dHJlZGluZ0BudmlkaWEuY29tPgo+ID4g PiA+ID4gPiA+Pj4+Pgo+ID4gPiA+ID4gPiA+Pj4+PiBSZXNlcnZlZCBtZW1vcnkgcmVnaW9uIHBo YW5kbGUgcmVmZXJlbmNlcyBjYW4gYmUgYWNjb21wYW5pZWQgYnkgYQo+ID4gPiA+ID4gPiA+Pj4+ PiBzcGVjaWZpZXIgdGhhdCBwcm92aWRlcyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IGhv dyB0aGF0IHNwZWNpZmljCj4gPiA+ID4gPiA+ID4+Pj4+IHJlZmVyZW5jZSBzaG91bGQgYmUgdHJl YXRlZC4KPiA+ID4gPiA+ID4gPj4+Pj4KPiA+ID4gPiA+ID4gPj4+Pj4gT25lIHVzZS1jYXNlIGlz IHRvIG1hcmsgYSBtZW1vcnkgcmVnaW9uIGFzIG5lZWRpbmcgYW4gaWRlbnRpdHkgbWFwcGluZwo+ ID4gPiA+ID4gPiA+Pj4+PiBpbiB0aGUgc3lzdGVtJ3MgSU9NTVUgZm9yIHRoZSBkZXZpY2UgdGhh dCByZWZlcmVuY2VzIHRoZSByZWdpb24uIFRoaXMgaXMKPiA+ID4gPiA+ID4gPj4+Pj4gbmVlZGVk IGZvciBleGFtcGxlIHdoZW4gdGhlIGJvb3Rsb2FkZXIgaGFzIHNldCB1cCBoYXJkd2FyZSAoc3Vj aCBhcyBhCj4gPiA+ID4gPiA+ID4+Pj4+IGRpc3BsYXkgY29udHJvbGxlcikgdG8gYWN0aXZlbHkg YWNjZXNzIGEgbWVtb3J5IHJlZ2lvbiAoZS5nLiBhIGJvb3QKPiA+ID4gPiA+ID4gPj4+Pj4gc3Bs YXNoIHNjcmVlbiBmcmFtZWJ1ZmZlcikgZHVyaW5nIGJvb3QuIFRoZSBvcGVyYXRpbmcgc3lzdGVt IGNhbiB1c2UgdGhlCj4gPiA+ID4gPiA+ID4+Pj4+IGlkZW50aXR5IG1hcHBpbmcgZmxhZyBmcm9t IHRoZSBzcGVjaWZpZXIgdG8gbWFrZSBzdXJlIGFuIElPTU1VIGlkZW50aXR5Cj4gPiA+ID4gPiA+ ID4+Pj4+IG1hcHBpbmcgaXMgc2V0IHVwIGZvciB0aGUgZnJhbWVidWZmZXIgYmVmb3JlIElPTU1V IHRyYW5zbGF0aW9ucyBhcmUKPiA+ID4gPiA+ID4gPj4+Pj4gZW5hYmxlZCBmb3IgdGhlIGRpc3Bs YXkgY29udHJvbGxlci4KPiA+ID4gPiA+ID4gPj4+Pj4KPiA+ID4gPiA+ID4gPj4+Pj4gU2lnbmVk LW9mZi1ieTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4KPiA+ID4gPiA+ID4g Pj4+Pj4gLS0tCj4gPiA+ID4gPiA+ID4+Pj4+ICAuLi4vcmVzZXJ2ZWQtbWVtb3J5L3Jlc2VydmVk LW1lbW9yeS50eHQgICAgICAgfCAyMSArKysrKysrKysrKysrKysrKysrCj4gPiA+ID4gPiA+ID4+ Pj4+ICBpbmNsdWRlL2R0LWJpbmRpbmdzL3Jlc2VydmVkLW1lbW9yeS5oICAgICAgICAgfCAgOCAr KysrKysrCj4gPiA+ID4gPiA+ID4+Pj4+ICAyIGZpbGVzIGNoYW5nZWQsIDI5IGluc2VydGlvbnMo KykKPiA+ID4gPiA+ID4gPj4+Pj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2R0LWJpbmRp bmdzL3Jlc2VydmVkLW1lbW9yeS5oCj4gPiA+ID4gPiA+ID4+Pj4KPiA+ID4gPiA+ID4gPj4+PiBT b3JyeSBmb3IgYmVpbmcgc2xvdyBvbiB0aGlzLiBJIGhhdmUgMiBjb25jZXJucy4KPiA+ID4gPiA+ ID4gPj4+Pgo+ID4gPiA+ID4gPiA+Pj4+IEZpcnN0LCB0aGlzIGNyZWF0ZXMgYW4gQUJJIGlzc3Vl LiBBIERUIHdpdGggY2VsbHMgaW4gJ21lbW9yeS1yZWdpb24nCj4gPiA+ID4gPiA+ID4+Pj4gd2ls bCBub3QgYmUgdW5kZXJzdG9vZCBieSBhbiBleGlzdGluZyBPUy4gSSdtIGxlc3MgY29uY2VybmVk IGFib3V0IHRoaXMKPiA+ID4gPiA+ID4gPj4+PiBpZiB3ZSBhZGRyZXNzIHRoYXQgd2l0aCBhIHN0 YWJsZSBmaXguIChUaG91Z2ggSSdtIHByZXR0eSBzdXJlIHdlJ3ZlCj4gPiA+ID4gPiA+ID4+Pj4g bmFpdmVseSBhZGRlZCAjPy1jZWxscyBpbiB0aGUgcGFzdCBpZ25vcmluZyB0aGlzIGlzc3VlLikK PiA+ID4gPiA+ID4gPj4+Cj4gPiA+ID4gPiA+ID4+PiBBIHdoaWxlIGFnbyBJIGhhZCBwcm9wb3Nl ZCBhZGRpbmcgbWVtb3J5LXJlZ2lvbipzKiBhcyBhbiBhbHRlcm5hdGl2ZQo+ID4gPiA+ID4gPiA+ Pj4gbmFtZSBmb3IgbWVtb3J5LXJlZ2lvbiB0byBtYWtlIHRoZSBuYW1pbmcgbW9yZSBjb25zaXN0 ZW50IHdpdGggb3RoZXIKPiA+ID4gPiA+ID4gPj4+IHR5cGVzIG9mIHByb3BlcnRpZXMgKHRoaW5r IGNsb2NrcywgcmVzZXRzLCBncGlvcywgLi4uKS4gSWYgd2UgYWRkZWQKPiA+ID4gPiA+ID4gPj4+ IHRoYXQsIHdlIGNvdWxkIGVhc2lseSBkaWZmZXJlbnRpYXRlIGJldHdlZW4gdGhlICJsZWdhY3ki IGNhc2VzIHdoZXJlCj4gPiA+ID4gPiA+ID4+PiBubyAjbWVtb3J5LXJlZ2lvbi1jZWxscyB3YXMg YWxsb3dlZCBhbmQgdGhlIG5ldyBjYXNlcyB3aGVyZSBpdCB3YXMuCj4gPiA+ID4gPiA+ID4+Pgo+ ID4gPiA+ID4gPiA+Pj4+IFNlY29uZCwgaXQgY291bGQgYmUgdGhlIGJvb3Rsb2FkZXIgc2V0dGlu ZyB1cCB0aGUgcmVzZXJ2ZWQgcmVnaW9uLiBJZiBhCj4gPiA+ID4gPiA+ID4+Pj4gbm9kZSBhbHJl YWR5IGhhcyAnbWVtb3J5LXJlZ2lvbicsIHRoZW4gYWRkaW5nIG1vcmUgcmVnaW9ucyBpcyBtb3Jl Cj4gPiA+ID4gPiA+ID4+Pj4gY29tcGxpY2F0ZWQgY29tcGFyZWQgdG8gYWRkaW5nIG5ldyBwcm9w ZXJ0aWVzLiBBbmQgZGVmaW5pbmcgd2hhdCBlYWNoCj4gPiA+ID4gPiA+ID4+Pj4gbWVtb3J5LXJl Z2lvbiBlbnRyeSBpcyBvciBob3cgbWFueSBpbiBzY2hlbWFzIGlzIGltcG9zc2libGUuCj4gPiA+ ID4gPiA+ID4+Pgo+ID4gPiA+ID4gPiA+Pj4gSXQncyB0cnVlIHRoYXQgdXBkYXRpbmcgdGhlIHBy b3BlcnR5IGdldHMgYSBiaXQgY29tcGxpY2F0ZWQsIGJ1dCBpdCdzCj4gPiA+ID4gPiA+ID4+PiBu b3QgZXhhY3RseSByb2NrZXQgc2NpZW5jZS4gV2UgcmVhbGx5IGp1c3QgbmVlZCB0byBzcGxpY2Ug dGhlIGFycmF5LiBJCj4gPiA+ID4gPiA+ID4+PiBoYXZlIGEgd29ya2luZyBpbXBsZW1lbnRpb24g Zm9yIHRoaXMgaW4gVS1Cb290Lgo+ID4gPiA+ID4gPiA+Pj4KPiA+ID4gPiA+ID4gPj4+IEZvciB3 aGF0IGl0J3Mgd29ydGgsIHdlIGNvdWxkIHJ1biBpbnRvIHRoZSBzYW1lIGlzc3VlIHdpdGggYW55 IG5ldwo+ID4gPiA+ID4gPiA+Pj4gcHJvcGVydHkgdGhhdCB3ZSBhZGQuIEV2ZW4gaWYgd2UgcmVu YW1lZCB0aGlzIHRvIGlvbW11LW1lbW9yeS1yZWdpb24sCj4gPiA+ID4gPiA+ID4+PiBpdCdzIHN0 aWxsIHBvc3NpYmxlIHRoYXQgYSBib290bG9hZGVyIG1heSBoYXZlIHRvIHVwZGF0ZSB0aGlzIHBy b3BlcnR5Cj4gPiA+ID4gPiA+ID4+PiBpZiBpdCBhbHJlYWR5IGV4aXN0cyAoaXQgY291bGQgYmUg aGFyZC1jb2RlZCBpbiBEVCwgb3IgaXQgY291bGQgaGF2ZQo+ID4gPiA+ID4gPiA+Pj4gYmVlbiBh ZGRlZCBieSBzb21lIGVhcmxpZXIgYm9vdGxvYWRlciBvciBmaXJtd2FyZSkuCj4gPiA+ID4gPiA+ ID4+Pgo+ID4gPiA+ID4gPiA+Pj4+IEJvdGggY291bGQgYmUgYWRkcmVzc2VkIHdpdGggYSBuZXcg cHJvcGVydHkuIFBlcmhhcHMgc29tZXRoaW5nIGxpa2UKPiA+ID4gPiA+ID4gPj4+PiAnaW9tbXUt bWVtb3J5LXJlZ2lvbiA9IDwmcGhhbmRsZT47Jy4gSSB0aGluayB0aGUgJ2lvbW11JyBwcmVmaXgg aXMKPiA+ID4gPiA+ID4gPj4+PiBhcHByb3ByaWF0ZSBnaXZlbiB0aGlzIGlzIGVudGlyZWx5IGJl Y2F1c2Ugb2YgdGhlIElPTU1VIGJlaW5nIGluIHRoZQo+ID4gPiA+ID4gPiA+Pj4+IG1peC4gSSBt aWdodCBmZWVsIGRpZmZlcmVudGx5IGlmIHdlIGhhZCBvdGhlciB1c2VzIGZvciBjZWxscywgYnV0 IEkKPiA+ID4gPiA+ID4gPj4+PiBkb24ndCByZWFsbHkgc2VlIGl0IGluIHRoaXMgY2FzZS4KPiA+ ID4gPiA+ID4gPj4+Cj4gPiA+ID4gPiA+ID4+PiBJJ20gYWZyYWlkIHRoYXQgZG93biB0aGUgcm9h ZCB3ZSdsbCBlbmQgdXAgd2l0aCBvdGhlciBjYXNlcyBhbmQgdGhlbiB3ZQo+ID4gPiA+ID4gPiA+ Pj4gbWlnaHQgcHJvbGlmZXJhdGUgYSBudW1iZXIgb2YgKi1tZW1vcnktcmVnaW9uIHByb3BlcnRp ZXMgd2l0aCB2YXJ5aW5nCj4gPiA+ID4gPiA+ID4+PiBwcmVmaXhlcy4KPiA+ID4gPiA+ID4gPj4+ Cj4gPiA+ID4gPiA+ID4+PiBJIGFtIGF3YXJlIG9mIG9uZSBvdGhlciBjYXNlIHdoZXJlIHdlIG1p Z2h0IG5lZWQgc29tZXRoaW5nIGxpa2UgdGhpczogb24KPiA+ID4gPiA+ID4gPj4+IHNvbWUgVGVn cmEgU29DcyB3ZSBoYXZlIGF1ZGlvIHByb2Nlc3NvcnMgdGhhdCB3aWxsIGFjY2VzcyBtZW1vcnkg YnVmZmVycwo+ID4gPiA+ID4gPiA+Pj4gdXNpbmcgYSBETUEgZW5naW5lLiBUaGVzZSBwcm9jZXNz b3JzIGFyZSBib290ZWQgZnJvbSBlYXJseSBmaXJtd2FyZQo+ID4gPiA+ID4gPiA+Pj4gdXNpbmcg ZmlybXdhcmUgZnJvbSBzeXN0ZW0gbWVtb3J5LiBJbiBvcmRlciB0byBhdm9pZCB0cmFzaGluZyB0 aGUKPiA+ID4gPiA+ID4gPj4+IGZpcm13YXJlLCB3ZSBuZWVkIHRvIHJlc2VydmUgbWVtb3J5LiBX ZSBjYW4gZG8gdGhpcyB1c2luZyByZXNlcnZlZAo+ID4gPiA+ID4gPiA+Pj4gbWVtb3J5IG5vZGVz LiBIb3dldmVyLCB0aGUgYXVkaW8gRE1BIGVuZ2luZSBhbHNvIHVzZXMgdGhlIFNNTVUsIHNvIHdl Cj4gPiA+ID4gPiA+ID4+PiBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBmaXJtd2FyZSBtZW1v cnkgaXMgbWFya2VkIGFzIHJlc2VydmVkIHdpdGhpbgo+ID4gPiA+ID4gPiA+Pj4gdGhlIFNNTVUu IFRoaXMgaXMgc2ltaWxhciB0byB0aGUgaWRlbnRpdHkgbWFwcGluZyBjYXNlLCBidXQgbm90IGV4 YWN0bHkKPiA+ID4gPiA+ID4gPj4+IHRoZSBzYW1lLiBJbnN0ZWFkIG9mIGNyZWF0aW5nIGEgMTox IG1hcHBpbmcsIHdlIGp1c3Qgd2FudCB0aGF0IElPVkEKPiA+ID4gPiA+ID4gPj4+IHJlZ2lvbiB0 byBiZSByZXNlcnZlZCAoaS5lLiBJT01NVV9SRVNWX1JFU0VSVkVEIGluc3RlYWQgb2YKPiA+ID4g PiA+ID4gPj4+IElPTU1VX1JFU1ZfRElSRUNUeyxfUkVMQVhBQkxFfSkuCj4gPiA+ID4gPiA+ID4+ Pgo+ID4gPiA+ID4gPiA+Pj4gVGhhdCB3b3VsZCBhbHNvIGZhbGwgaW50byB0aGUgSU9NTVUgZG9t YWluLCBidXQgd2UgY2FuJ3QgcmV1c2UgdGhlCj4gPiA+ID4gPiA+ID4+PiBpb21tdS1tZW1vcnkt cmVnaW9uIHByb3BlcnR5IGZvciB0aGF0IGJlY2F1c2UgdGhlbiB3ZSBkb24ndCBoYXZlIGVub3Vn aAo+ID4gPiA+ID4gPiA+Pj4gaW5mb3JtYXRpb24gdG8gZGVjaWRlIHdoaWNoIHR5cGUgb2YgcmVz ZXJ2YXRpb24gd2UgbmVlZC4KPiA+ID4gPiA+ID4gPj4+Cj4gPiA+ID4gPiA+ID4+PiBXZSBjb3Vs ZCBvYnZpb3VzbHkgbWFrZSBpb21tdS1tZW1vcnktcmVnaW9uIHRha2UgYSBzcGVjaWZpZXIsIGJ1 dCB3ZQo+ID4gPiA+ID4gPiA+Pj4gY291bGQganVzdCBhcyB3ZWxsIHVzZSBtZW1vcnktcmVnaW9u cyBpbiB0aGF0IGNhc2Ugc2luY2Ugd2UgaGF2ZQo+ID4gPiA+ID4gPiA+Pj4gc29tZXRoaW5nIG1v cmUgZ2VuZXJpYyBhbnl3YXkuCj4gPiA+ID4gPiA+ID4+Pgo+ID4gPiA+ID4gPiA+Pj4gV2l0aCB0 aGUgI21lbW9yeS1yZWdpb24tY2VsbHMgcHJvcG9zYWwsIHdlIGNhbiBlYXNpbHkgZXh0ZW5kIHRo ZSBjZWxsIGluCj4gPiA+ID4gPiA+ID4+PiB0aGUgc3BlY2lmaWVyIHdpdGggYW4gYWRkaXRpb25h bCBNRU1PUllfUkVHSU9OX0lPTU1VX1JFU0VSVkUgZmxhZyB0bwo+ID4gPiA+ID4gPiA+Pj4gdGFr ZSB0aGF0IG90aGVyIHVzZSBjYXNlIGludG8gYWNjb3VudC4gSWYgd2UgdGhhbiBhbHNvIGNoYW5n ZSB0byB0aGUgbmV3Cj4gPiA+ID4gPiA+ID4+PiBtZW1vcnktcmVnaW9ucyBwcm9wZXJ0eSBuYW1l LCB3ZSBhdm9pZCB0aGUgQUJJIGlzc3VlIChhbmQgd2UgZ2FpbiBhIGJpdAo+ID4gPiA+ID4gPiA+ Pj4gb2YgY29uc2lzdGVuY3kgd2hpbGUgYXQgaXQpLgo+ID4gPiA+ID4gPiA+Pgo+ID4gPiA+ID4g PiA+PiBQaW5nPyBSb2IsIGRvIHlvdSB3YW50IG1lIHRvIGFkZCB0aGlzIHNlY29uZCB1c2UtY2Fz ZSB0byB0aGUgcGF0Y2gKPiA+ID4gPiA+ID4gPj4gc2VyaWVzIHRvIG1ha2UgaXQgbW9yZSBvYnZp b3VzIHRoYXQgdGhpcyBpc24ndCBqdXN0IGEgb25lLW9mZiB0aGluZz8gT3IKPiA+ID4gPiA+ID4g Pj4gaG93IGRvIHdlIHByb2NlZWQ/Cj4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiBSb2IsIGdp dmVuIHRoYXQgYWRkaXRpb25hbCB1c2UtY2FzZSwgZG8geW91IHdhbnQgbWUgdG8gcnVuIHdpdGgg dGhpcwo+ID4gPiA+ID4gPiA+IHByb3Bvc2FsIGFuZCBzZW5kIG91dCBhbiB1cGRhdGVkIHNlcmll cz8KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gV2hhdCBhYm91dCB2YXJpYW50 IHdpdGggYSAiZGVzY3JpcHRvciIgcHJvcGVydGllcyB0aGF0IHdpbGwgZGVzY3JpYmUKPiA+ID4g PiA+ID4gZWFjaCByZWdpb246Cj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+IGZiX2Rlc2M6IGRpc3Bs YXktZnJhbWVidWZmZXItbWVtb3J5LWRlc2NyaXB0b3Igewo+ID4gPiA+ID4gPiAgICAgICBuZWVk cy1pZGVudGl0eS1tYXBwaW5nOwo+ID4gPiA+ID4gPiB9Cj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ IGRpc3BsYXlANTI0MDAwMDAgewo+ID4gPiA+ID4gPiAgICAgICBtZW1vcnktcmVnaW9uID0gPCZm YiAuLi4+Owo+ID4gPiA+ID4gPiAgICAgICBtZW1vcnktcmVnaW9uLWRlc2NyaXB0b3IgPSA8JmZi X2Rlc2MgLi4uPjsKPiA+ID4gPiA+ID4gfTsKPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gSXQgY291 bGQgYmUgYSBtb3JlIGZsZXhpYmxlL2V4dGVuZGlibGUgdmFyaWFudC4KPiA+ID4gPiA+Cj4gPiA+ ID4gPiBUaGlzIHByb2JsZW0gcmVjZW50bHkgY2FtZSB1cCBvbiAjZHJpLWRldmVsIGFnYWluLiBB ZGRpbmcgQWx5c3NhIGFuZAo+ID4gPiA+ID4gU3ZlbiB3aG8gYXJlIGZhY2luZyBhIHNpbWlsYXIg Y2hhbGxlbmdlIG9uIHRoZWlyIHdvcmsgb24gQXBwbGUgTTEgKGlmIEkKPiA+ID4gPiA+IHVuZGVy c3Rvb2QgY29ycmVjdGx5KS4gQWxzbyBhZGRpbmcgZHJpLWRldmVsIGZvciB2aXNpYmlsaXR5IHNp bmNlIHRoaXMKPiA+ID4gPiA+IGlzIGEgdmVyeSBjb21tb24gcHJvYmxlbSBmb3IgZGlzcGxheSBp biBwYXJ0aWN1bGFyLgo+ID4gPiA+ID4KPiA+ID4gPiA+IE9uIE0xIHRoZSBzaXR1YXRpb24gaXMg c2xpZ2h0bHkgbW9yZSBjb21wbGljYXRlZDogdGhlIGZpcm13YXJlIHdpbGwKPiA+ID4gPiA+IGFs bG9jYXRlIGEgY291cGxlIG9mIGJ1ZmZlcnMgKGluY2x1ZGluZyB0aGUgZnJhbWVidWZmZXIpIGlu IGhpZ2ggbWVtb3J5Cj4gPiA+ID4gPiAoPiA0IEdpQikgYW5kIHVzZSB0aGUgSU9NTVUgdG8gbWFw IHRoYXQgaW50byBhbiBJT1ZBIHJlZ2lvbiBiZWxvdyA0IEdpQgo+ID4gPiA+ID4gc28gdGhhdCB0 aGUgZGlzcGxheSBoYXJkd2FyZSBjYW4gYWNjZXNzIGl0LiBUaGlzIG1ha2VzIGl0IGltcG9zc2li bGUgdG8KPiA+ID4gPiA+IGJ5cGFzcyB0aGUgSU9NTVUgbGlrZSB3ZSBkbyBvbiBvdGhlciBjaGlw cyAoaW4gcGFydGljdWxhciB0byB3b3JrIGFyb3VuZAo+ID4gPiA+ID4gdGhlIGZhdWx0LWJ5LWRl ZmF1bHQgcG9saWN5IG9mIHRoZSBBUk0gU01NVSBkcml2ZXIpLiBJdCBhbHNvIG1lYW5zIHRoYXQK PiA+ID4gPiA+IGluIGFkZGl0aW9uIHRvIHRoZSBzaW1wbGUgcmVzZXJ2ZWQgcmVnaW9ucyBJIG1l bnRpb25lZCB3ZSBuZWVkIGZvciBhdWRpbwo+ID4gPiA+ID4gdXNlLWNhc2VzIGFuZCBpZGVudGl0 eSBtYXBwaW5nIHVzZS1jYXNlcyB3ZSBuZWVkIGZvciBkaXNwbGF5IG9uIFRlZ3JhLAo+ID4gPiA+ ID4gd2Ugbm93IGFsc28gbmVlZCB0byBiZSBhYmxlIHRvIGNvbnZleSBwaHlzaWNhbCB0byBJT1ZB IG1hcHBpbmdzLgo+ID4gPiA+ID4KPiA+ID4gPiA+IEZpdHRpbmcgdGhlIGxhdHRlciBpbnRvIHRo ZSBvcmlnaW5hbCBwcm9wb3NhbCBzb3VuZHMgZGlmZmljdWx0LiBBIHF1aWNrCj4gPiA+ID4gPiBm aXggd291bGQndmUgYmVlbiB0byBnZW5lcmF0ZSBhIG1hcHBpbmcgdGFibGUgaW4gbWVtb3J5IGFu ZCBwYXNzIHRoYXQgdG8KPiA+ID4gPiA+IHRoZSBrZXJuZWwgdXNpbmcgYSByZXNlcnZlZC1tZW1v cnkgbm9kZSAoc2ltaWxhciB0byB3aGF0J3MgZG9uZSBmb3IKPiA+ID4gPiA+IGV4YW1wbGUgb24g VGVncmEgZm9yIHRoZSBFTUMgZnJlcXVlbmN5IHRhYmxlIG9uIFRlZ3JhMjEwKSBhbmQgbWFyayBp dCBhcwo+ID4gPiA+ID4gc3VjaCB1c2luZyBhIHNwZWNpYWwgZmxhZy4gQnV0IHRoYXQgdGhlbiBp bnZvbHZlcyB0d28gbGF5ZXJzIG9mIHBhcnNpbmcsCj4gPiA+ID4gPiB3aGljaCBzZWVtcyBhIGJp dCBzdWJvcHRpbWFsLiBBbm90aGVyIHdheSB0byBzaG9laG9ybiB0aGF0IGludG8gdGhlCj4gPiA+ ID4gPiBvcmlnaW5hbCBwcm9wb3NhbCB3b3VsZCd2ZSBiZWVuIHRvIGFkZCBmbGFncyBmb3IgcGh5 c2ljYWwgYW5kIHZpcnR1YWwKPiA+ID4gPiA+IGFkZHJlc3MgcmVnaW9ucyBhbmQgdXNlIHBhaXJz IHRvIHBhc3MgdGhlbSB1c2luZyBzcGVjaWFsIGZsYWdzLiBBZ2FpbiwKPiA+ID4gPiA+IHRoaXMg aXMgYSBiaXQgd29ua3kgYmVjYXVzZSBpdCBuZWVkcyB0aGVzZSB0byBiZSBjYXJlZnVsbHkgcGFy c2VkIGFuZAo+ID4gPiA+ID4gbWF0Y2hlZCB1cC4KPiA+ID4gPiA+Cj4gPiA+ID4gPiBBbm90aGVy IGRvd25zaWRlIGlzIHRoYXQgd2Ugbm93IGhhdmUgYSBzaXR1YXRpb24gd2hlcmUgc29tZSBvZiB0 aGVzZQo+ID4gPiA+ID4gcmVnaW9ucyBhcmUgbm8gbG9uZ2VyICJyZXNlcnZlZC1tZW1vcnkgcmVn aW9ucyIgaW4gdGhlIHRyYWRpdGlvbmFsCj4gPiA+ID4gPiBzZW5zZS4gVGhpcyB3b3VsZCByZXF1 aXJlIGFuIGFkZGl0aW9uYWwgZmxhZyBpbiB0aGUgcmVzZXJ2ZWQtbWVtb3J5Cj4gPiA+ID4gPiBy ZWdpb24gbm9kZXMgdG8gcHJldmVudCB0aGUgSU9WQSByZWdpb25zIGZyb20gYmVpbmcgcmVzZXJ2 ZWQuIEJ5IHRoZQo+ID4gPiA+ID4gd2F5LCB0aGlzIGlzIHNvbWV0aGluZyB0aGF0IHdvdWxkIGFs c28gYmUgbmVlZGVkIGZvciB0aGUgYXVkaW8gdXNlLWNhc2UKPiA+ID4gPiA+IEkgbWVudGlvbmVk IGJlZm9yZSwgYmVjYXVzZSB0aGUgcGh5c2ljYWwgbWVtb3J5IGF0IHRoYXQgYWRkcmVzcyBjYW4K PiA+ID4gPiA+IHN0aWxsIGJlIHVzZWQgYnkgYW4gb3BlcmF0aW5nIHN5c3RlbS4KPiA+ID4gPiA+ Cj4gPiA+ID4gPiBBIG1vcmUgZ2VuZXJhbCBzb2x1dGlvbiB3b3VsZCBiZSB0byBkcmF3IGEgYml0 IGZyb20gRG1pdHJ5J3MgcHJvcG9zYWwKPiA+ID4gPiA+IGFuZCBpbnRyb2R1Y2UgYSBuZXcgdG9w LWxldmVsICJpb3YtcmVzZXJ2ZWQtbWVtb3J5IiBub2RlLiBUaGlzIGNvdWxkIGJlCj4gPiA+ID4g PiBtb2RlbGxlZCBvbiB0aGUgZXhpc3RpbmcgcmVzZXJ2ZWQtbWVtb3J5IG5vZGUsIGV4Y2VwdCB0 aGF0IHRoZSBwaHlzaWNhbAo+ID4gPiA+ID4gbWVtb3J5IHBhZ2VzIGZvciByZWdpb25zIHJlcHJl c2VudGVkIGJ5IGNoaWxkIG5vZGVzIHdvdWxkIG5vdCBiZSBtYXJrZWQKPiA+ID4gPiA+IGFzIHJl c2VydmVkLiBPbmx5IHRoZSBJT1ZBIHJhbmdlIGRlc2NyaWJlZCBieSB0aGUgcmVnaW9uIHdvdWxk IGJlCj4gPiA+ID4gPiByZXNlcnZlZCBzdWJzZXF1ZW50bHkgYnkgdGhlIElPTU1VIGZyYW1ld29y ayBhbmQvb3IgSU9NTVUgZHJpdmVyLgo+ID4gPiA+ID4KPiA+ID4gPiA+IFRoZSBzaW1wbGVzdCBj YXNlIHdoZXJlIHdlIGp1c3Qgd2FudCB0byByZXNlcnZlIHNvbWUgSU9WQSByZWdpb24gY291bGQK PiA+ID4gPiA+IHRoZW4gYmUgZG9uZSBsaWtlIHRoaXM6Cj4gPiA+ID4gPgo+ID4gPiA+ID4gICAg ICAgICBpb3YtcmVzZXJ2ZWQtbWVtb3J5IHsKPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAvKgo+ ID4gPiA+ID4gICAgICAgICAgICAgICAgICAqIFByb2JhYmx5IHNhZmVzdCB0byBkZWZhdWx0IHRv IDwyPiwgPDI+IGhlcmUgZ2l2ZW4KPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgKiB0aGF0IG1v c3QgSU9NTVVzIHN1cHBvcnQgZWl0aGVyID4gMzIgYml0cyBvZiBJQVMKPiA+ID4gPiA+ICAgICAg ICAgICAgICAgICAgKiBvciBPQVMuCj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICovCj4gPiA+ ID4gPiAgICAgICAgICAgICAgICAgI2FkZHJlc3MtY2VsbHMgPSA8Mj47Cj4gPiA+ID4gPiAgICAg ICAgICAgICAgICAgI3NpemUtY2VsbHMgPSA8Mj47Cj4gPiA+ID4gPgo+ID4gPiA+ID4gICAgICAg ICAgICAgICAgIGZpcm13YXJlOiBmaXJtd2FyZUA4MDAwMDAwMCB7Cj4gPiA+ID4gPiAgICAgICAg ICAgICAgICAgICAgICAgICByZWcgPSA8MCAweDgwMDAwMDAwIDAgMHgwMTAwMDAwMD47Cj4gPiA+ ID4gPiAgICAgICAgICAgICAgICAgfTsKPiA+ID4gPiA+ICAgICAgICAgfTsKPiA+ID4gPiA+Cj4g PiA+ID4gPiAgICAgICAgIGF1ZGlvQDMwMDAwMDAwIHsKPiA+ID4gPiA+ICAgICAgICAgICAgICAg ICAuLi4KPiA+ID4gPiA+ICAgICAgICAgICAgICAgICBpb3YtbWVtb3J5LXJlZ2lvbnMgPSA8JmZp cm13YXJlPjsKPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAuLi4KPiA+ID4gPiA+ICAgICAgICAg fTsKPiA+ID4gPiA+Cj4gPiA+ID4gPiBNYXBwaW5ncyBjb3VsZCBiZSByZXByZXNlbnRlZCBieSBh biBJT1YgcmVzZXJ2ZWQgcmVnaW9uIHRha2luZyBhCj4gPiA+ID4gPiByZWZlcmVuY2UgdG8gdGhl IHJlc2VydmVkLXJlZ2lvbiB0aGF0IHRoZXkgbWFwOgo+ID4gPiA+ID4KPiA+ID4gPiA+ICAgICAg ICAgcmVzZXJ2ZWQtbWVtb3J5IHsKPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAjYWRkcmVzcy1j ZWxscyA9IDwyPjsKPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAjc2l6ZS1jZWxscyA9IDwyPjsK PiA+ID4gPiA+Cj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgLyogMTYgTWlCIG9mIGZyYW1lYnVm ZmVyIGF0IHRvcC1vZi1tZW1vcnkgKi8KPiA+ID4gPiA+ICAgICAgICAgICAgICAgICBmcmFtZWJ1 ZmZlcjogZnJhbWVidWZmZXJAMSxmZjAwMDAwMCB7Cj4gPiA+ID4gPiAgICAgICAgICAgICAgICAg ICAgICAgICByZWcgPSA8MHgxIDB4ZmYwMDAwMDAgMCAweDAxMDAwMDAwPjsKPiA+ID4gPiA+ICAg ICAgICAgICAgICAgICAgICAgICAgIG5vLW1hcDsKPiA+ID4gPiA+ICAgICAgICAgICAgICAgICB9 Owo+ID4gPiA+ID4gICAgICAgICB9Owo+ID4gPiA+ID4KPiA+ID4gPiA+ICAgICAgICAgaW92LXJl c2VydmVkLW1lbW9yeSB7Cj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgLyogSU9NTVUgc3VwcG9y dHMgb25seSAzMi1iaXQgb3V0cHV0IGFkZHJlc3Mgc3BhY2UgKi8KPiA+ID4gPiA+ICAgICAgICAg ICAgICAgICAjYWRkcmVzcy1jZWxscyA9IDwxPjsKPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAj c2l6ZS1jZWxscyA9IDwxPjsKPiA+ID4gPiA+Cj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgLyog MTYgTWlCIG9mIGZyYW1lYnVmZmVyIG1hcHBlZCB0byB0b3Agb2YgSU9WQSAqLwo+ID4gPiA+ID4g ICAgICAgICAgICAgICAgIGZiOiBmYkBmZjAwMDAwMCB7Cj4gPiA+ID4gPiAgICAgICAgICAgICAg ICAgICAgICAgICByZWcgPSA8MCAweGZmMDAwMDAwIDAgMHgwMTAwMDAwMD47Cj4gPiA+ID4gPiAg ICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnktcmVnaW9uID0gPCZmcmFtZWJ1ZmZlcj47Cj4g PiA+ID4gPiAgICAgICAgICAgICAgICAgfTsKPiA+ID4gPiA+ICAgICAgICAgfTsKPiA+ID4gPiA+ Cj4gPiA+ID4gPiAgICAgICAgIGRpc3BsYXlANDAwMDAwMDAgewo+ID4gPiA+ID4gICAgICAgICAg ICAgICAgIC4uLgo+ID4gPiA+ID4gICAgICAgICAgICAgICAgIC8qIG9wdGlvbmFsPyAqLwo+ID4g PiA+ID4gICAgICAgICAgICAgICAgIG1lbW9yeS1yZWdpb24gPSA8JmZyYW1lYnVmZmVyPjsKPiA+ ID4gPiA+ICAgICAgICAgICAgICAgICBpb3YtbWVtb3J5LXJlZ2lvbnMgPSA8JmZiPjsKPiA+ID4g PiA+ICAgICAgICAgICAgICAgICAuLi4KPiA+ID4gPiA+ICAgICAgICAgfTsKPiA+ID4gPiA+Cj4g PiA+ID4gPiBJdCdzIGludGVyZXN0aW5nIGhvdyBpZGVudGl0eSBtYXBwZWQgcmVnaW9ucyBub3cg YmVjb21lIGEgdHJpdmlhbAo+ID4gPiA+ID4gc3BlY2lhbCBjYXNlIG9mIG1hcHBpbmdzLiBBbGwg dGhhdCBpcyBuZWVkZWQgaXMgdG8gbWFrZSB0aGUgcmVnIHByb3BlcnR5Cj4gPiA+ID4gPiBvZiB0 aGUgSU9WIHJlc2VydmVkIHJlZ2lvbiBjb3JyZXNwb25kIHRvIHRoZSByZWcgcHJvcGVydHkgb2Yg dGhlIG5vcm1hbAo+ID4gPiA+ID4gcmVzZXJ2ZWQgcmVnaW9uLiBBbHRlcm5hdGl2ZWx5LCBhcyBh IHNtYWxsIG9wdGltaXphdGlvbiBmb3IgbGF6eSBwZW9wbGUKPiA+ID4gPiA+IGxpa2UgbWUsIHdl IGNvdWxkIGp1c3QgYWxsb3cgdGhlc2UgY2FzZXMgdG8gb21pdCB0aGUgcmVnIHByb3BlcnR5IGFu ZAo+ID4gPiA+ID4gaW5zdGVhZCBpbmhlcml0IGl0IGZyb20gdGhlIHJlZmVyZW5jZWQgcmVzZXJ2 ZWQgcmVnaW9uLgo+ID4gPiA+ID4KPiA+ID4gPiA+IEFzIHRoZSBzZWNvbmQgZXhhbXBsZSBzaG93 cyBpdCBtaWdodCBiZSBjb252ZW5pZW50IGlmIG1lbW9yeS1yZWdpb24KPiA+ID4gPiA+IGNvdWxk IGJlIGRlcml2ZWQgZnJvbSBpb3YtbWVtb3J5LXJlZ2lvbnMuIFRoaXMgY291bGQgYmUgdXNlZnVs IGZvciBjYXNlcwo+ID4gPiA+ID4gd2hlcmUgdGhlIGRyaXZlciB3YW50cyB0byBkbyBzb21ldGhp bmcgd2l0aCB0aGUgcGh5c2ljYWwgcGFnZXMgb2YgdGhlCj4gPiA+ID4gPiByZXNlcnZlZCByZWdp b24gKHN1Y2ggYXMgbWFwcGluZyB0aGVtIGFuZCBjb3B5aW5nIG91dCB0aGUgZnJhbWVidWZmZXIK PiA+ID4gPiA+IGRhdGEgdG8gYW5vdGhlciBidWZmZXIgc28gdGhhdCB0aGUgcmVzZXJ2ZWQgbWVt b3J5IGNhbiBiZSByZWN5Y2xlZCkuIElmCj4gPiA+ID4gPiB3ZSBoYXZlIHRoZSBJT1YgcmVzZXJ2 ZWQgcmVnaW9uLCB3ZSBjb3VsZCBwcm92aWRlIGFuIEFQSSB0byBleHRyYWN0IHRoZQo+ID4gPiA+ ID4gcGh5c2ljYWwgcmVzZXJ2ZWQgcmVnaW9uIChpZiBpdCBleGlzdHMpLiBUaGF0IHdheSB3ZSBj b3VsZCBhdm9pZAo+ID4gPiA+ID4gcmVmZXJlbmNpbmcgaXQgdHdpY2UgaW4gRFQuIFRoZW4gYWdh aW4sIHRoZXJlJ3Mgc29tZXRoaW5nIGVsZWdhbnQgYWJvdXQKPiA+ID4gPiA+IHRoZSBleHBsaWNp dCBzZWNvbmQgcmVmZXJlbmNlIHRvLiBJdCBpbmRpY2F0ZXMgdGhlIGludGVudCB0aGF0IHdlIG1h eQo+ID4gPiA+ID4gd2FudCB0byB1c2UgdGhlIHJlZ2lvbiBmb3Igc29tZXRoaW5nIG90aGVyIHRo YW4ganVzdCB0aGUgSU9WIG1hcHBpbmcuCj4gPiA+ID4gPgo+ID4gPiA+ID4gQW55d2F5LCB0aGlz IGhhcyBiZWVuIGxvbmcgZW5vdWdoLiBMZXQgbWUga25vdyB3aGF0IHlvdSB0aGluay4gQWx5c3Nh LAo+ID4gPiA+ID4gU3ZlbiwgaXQnZCBiZSBpbnRlcmVzdGluZyB0byBoZWFyIGlmIHlvdSB0aGlu ayB0aGlzIGNvdWxkIHdvcmsgYXMgYQo+ID4gPiA+ID4gc29sdXRpb24gdG8gdGhlIHByb2JsZW0g b24gTTEuCj4gPiA+ID4gPgo+ID4gPiA+ID4gUm9iLCBJIHRoaW5rIHlvdSBtaWdodCBsaWtlIHRo aXMgYWx0ZXJuYXRpdmUgYmVjYXVzZSBpdCBiYXNpY2FsbHkgZ2V0cwo+ID4gPiA+ID4gcmlkIG9m IGFsbCB0aGUgcG9pbnRzIGluIHRoZSBvcmlnaW5hbCBwcm9wb3NhbCB0aGF0IHlvdSB3ZXJlIGNv bmNlcm5lZAo+ID4gPiA+ID4gYWJvdXQuIExldCBtZSBrbm93IHdoYXQgeW91IHRoaW5rLgo+ID4g PiA+Cj4gPiA+ID4gQ291bGRuJ3Qgd2Uga2VlcCB0aGlzIGFsbCBpbiAvcmVzZXJ2ZWQtbWVtb3J5 PyBKdXN0IGFkZCBhbiBpb3ZhCj4gPiA+ID4gdmVyc2lvbiBvZiByZWcuIFBlcmhhcHMgYWJ1c2Ug J2Fzc2lnbmVkLWFkZHJlc3MnIGZvciB0aGlzIHB1cnBvc2UuIFRoZQo+ID4gPiA+IGlzc3VlIEkg c2VlIHdvdWxkIGJlIGhhbmRsaW5nIHJlc2VydmVkIGlvdmEgYXJlYXMgd2l0aG91dCBhIHBoeXNp Y2FsCj4gPiA+ID4gYXJlYS4gVGhhdCBjYW4gYmUgaGFuZGxlZCB3aXRoIGp1c3QgYSBpb3ZhIGFu ZCBubyByZWcuIFdlIGFscmVhZHkgaGF2ZQo+ID4gPiA+IGEgbm8gcmVnIGNhc2UuCj4gPiA+Cj4g PiA+IEkgaGFkIHRob3VnaHQgYWJvdXQgdGhhdCBpbml0aWFsbHkuIE9uZSB0aGluZyBJJ20gd29y cmllZCBhYm91dCBpcyB0aGF0Cj4gPiA+IGV2ZXJ5IGNoaWxkIG5vZGUgaW4gL3Jlc2VydmVkLW1l bW9yeSB3aWxsIGVmZmVjdGl2ZWx5IGNhdXNlIHRoZSBtZW1vcnkKPiA+ID4gdGhhdCBpdCBkZXNj cmliZWQgdG8gYmUgcmVzZXJ2ZWQuIEJ1dCB3ZSBkb24ndCB3YW50IHRoYXQgZm9yIHJlZ2lvbnMK PiA+ID4gdGhhdCBhcmUgInZpcnR1YWwgb25seSIgKGkuZS4gSU9NTVUgcmVzZXJ2YXRpb25zKS4K PiA+Cj4gPiBCeSB2aXJ0dWFsIG9ubHksIHlvdSBtZWFuIG5vIHBoeXNpY2FsIG1hcHBpbmcsIGp1 c3QgYSByZWdpb24gb2YKPiA+IHZpcnR1YWwgc3BhY2UsIHJpZ2h0PyBGb3IgdGhhdCB3ZSdkIGhh dmUgbm8gJ3JlZycgYW5kIHRoZXJlZm9yZSBubwo+ID4gKHBoeXNpY2FsKSByZXNlcnZhdGlvbiBi eSB0aGUgT1MuIEl0J3Mgc2ltaWxhciB0byBub24tc3RhdGljIHJlZ2lvbnMuCj4gPiBZb3UgbmVl ZCBhIHNwZWNpZmljIGhhbmRsZXIgZm9yIHRoZW0uIFdlJ2QgcHJvYmFibHkgd2FudCBhIGNvbXBh dGlibGUKPiA+IGFzIHdlbGwgZm9yIHRoZXNlIHZpcnR1YWwgcmVzZXJ2YXRpb25zLgo+Cj4gWWVh aCwgdGhlc2Ugd291bGQgYmUgcHVyZWx5IHVzZWQgZm9yIHJlc2VydmluZyByZWdpb25zIGluIHRo ZSBJT1ZBIHNvCj4gdGhhdCB0aGV5IHdvbid0IGJlIHVzZWQgYnkgdGhlIElPVkEgYWxsb2NhdG9y LiBUeXBpY2FsbHkgdGhlc2Ugd291bGQgYmUKPiB1c2VkIGZvciBjYXNlcyB3aGVyZSB0aG9zZSBh ZGRyZXNzZXMgaGF2ZSBzb21lIHNwZWNpYWwgbWVhbmluZy4KPgo+IERvIHdlIHdhbnQgc29tZXRo aW5nIGxpa2U6Cj4KPiAgICAgICAgIGNvbXBhdGlibGUgPSAiaW9tbXUtcmVzZXJ2ZWQiOwo+Cj4g Zm9yIHRoZXNlPyBPciB3b3VsZCB0aGF0IG5lZWQgdG8gYmU6Cj4KPiAgICAgICAgIGNvbXBhdGli bGUgPSAibGludXgsaW9tbXUtcmVzZXJ2ZWQiOwo+Cj4gPyBUaGVyZSBzZWVtcyB0byBiZSBhIG1p eCBvZiB2ZW5kb3ItcHJlZml4IHZzLiBub24tdmVuZG9yLXByZWZpeAo+IGNvbXBhdGlibGUgc3Ry aW5ncyBpbiB0aGUgcmVzZXJ2ZWQtbWVtb3J5IERUIGJpbmRpbmdzIGRpcmVjdG9yeS4KCkkgd291 bGQgbm90IHVzZSAnbGludXgsJyBoZXJlLgoKPgo+IE9uIHRoZSBvdGhlciBoYW5kLCBkbyB3ZSBh Y3R1YWxseSBuZWVkIHRoZSBjb21wYXRpYmxlIHN0cmluZz8gQmVjYXVzZSB3ZQo+IGRvbid0IHJl YWxseSB3YW50IHRvIGFzc29jaWF0ZSBtdWNoIGV4dHJhIGluZm9ybWF0aW9uIHdpdGggdGhpcyBs aWtlIHdlCj4gZG8gZm9yIGV4YW1wbGUgd2l0aCAic2hhcmVkLWRtYS1wb29sIi4gVGhlIGxvZ2lj IHRvIGhhbmRsZSB0aGlzIHdvdWxkCj4gYWxsIGJlIHdpdGhpbiB0aGUgSU9NTVUgZnJhbWV3b3Jr LiBBbGwgd2UgcmVhbGx5IG5lZWQgaXMgZm9yIHRoZQo+IHN0YW5kYXJkIHJlc2VydmF0aW9uIGNv ZGUgdG8gc2tpcCBub2RlcyB0aGF0IGRvbid0IGhhdmUgYSByZWcgcHJvcGVydHkKPiBzbyB3ZSBk b24ndCByZXNlcnZlIG1lbW9yeSBmb3IgInZpcnR1YWwtb25seSIgYWxsb2NhdGlvbnMuCgpJdCBk b2Vzbid0IGh1cnQgdG8gaGF2ZSBvbmUgYW5kIEkgY2FuIGltYWdpbmUgd2UgbWlnaHQgd2FudCB0 byBpdGVyYXRlCm92ZXIgYWxsIHRoZSBub2Rlcy4gSXQncyBzbGlnaHRseSBlYXNpZXIgYW5kIG1v cmUgY29tbW9uIHRvIGl0ZXJhdGUKb3ZlciBjb21wYXRpYmxlIG5vZGVzIHJhdGhlciB0aGFuIG5v ZGVzIHdpdGggc29tZSBwcm9wZXJ0eS4KCj4gPiBBcmUgdGhlc2UgYmVpbmcgZ2xvYmFsIGluIERU IGdvaW5nIHRvIGJlIGEgcHJvYmxlbT8gUHJlc3VtYWJseSB3ZSBoYXZlCj4gPiBhIHZpcnR1YWwg c3BhY2UgcGVyIElPTU1VLiBXZSdkIGtub3cgd2hpY2ggSU9NTVUgYmFzZWQgb24gYSBkZXZpY2Un cwo+ID4gJ2lvbW11cycgYW5kICdtZW1vcnktcmVnaW9uJyBwcm9wZXJ0aWVzLCBidXQgd2l0aGlu IC9yZXNlcnZlZC1tZW1vcnkKPiA+IHdlIHdvdWxkbid0IGJlIGFibGUgdG8gZGlzdGluZ3Vpc2gg b3ZlcmxhcHBpbmcgYWRkcmVzc2VzIGZyb20gc2VwYXJhdGUKPiA+IGFkZHJlc3Mgc3BhY2VzLiBP ciB3ZSBjb3VsZCBoYXZlIDIgZGlmZmVyZW50IElPVkFzIGZvciAxIHBoeXNpY2FsCj4gPiBzcGFj ZS4gVGhhdCBjb3VsZCBiZSBzb2x2ZWQgd2l0aCBzb21ldGhpbmcgbGlrZSB0aGlzOgo+ID4KPiA+ IGlvbW11LWFkZHJlc3NlcyA9IDwmaW9tbXUxIDxhZGRyZXNzIGNlbGxzPiA8c2l6ZSBjZWxscz4+ Owo+Cj4gVGhlIG9ubHkgY2FzZSB0aGF0IHdvdWxkIGJlIHByb2JsZW1hdGljIHdvdWxkIGJlIGlm IHdlIGhhdmUgb3ZlcmxhcHBpbmcKPiBwaHlzaWNhbCByZWdpb25zLCBiZWNhdXNlIHRoYXQgd2ls bCBwcm9iYWJseSB0cmlwIHVwIHRoZSBzdGFuZGFyZCBjb2RlLgo+Cj4gQnV0IHRoaXMgY291bGQg YWxzbyBiZSB3b3JrZWQgYXJvdW5kIGJ5IGxvb2tpbmcgYXQgaW9tbXUtYWRkcmVzc2VzLiBGb3IK PiBleGFtcGxlLCBpZiB3ZSBoYWQgc29tZXRoaW5nIGxpa2UgdGhpczoKPgo+ICAgICAgICAgcmVz ZXJ2ZWQtbWVtb3J5IHsKPiAgICAgICAgICAgICAgICAgZmJfZGMwOiBmYkA4MDAwMDAwMCB7Cj4g ICAgICAgICAgICAgICAgICAgICAgICAgcmVnID0gPDB4ODAwMDAwMDAgMHgwMTAwMDAwMD47Cj4g ICAgICAgICAgICAgICAgICAgICAgICAgaW9tbXUtYWRkcmVzc2VzID0gPDB4YTAwMDAwMDAgMHgw MTAwMDAwMD47Cj4gICAgICAgICAgICAgICAgIH07Cj4KPiAgICAgICAgICAgICAgICAgZmJfZGMx OiBmYkA4MDAwMDAwMCB7CgpZb3UgY2FuJ3QgaGF2ZSAyIG5vZGVzIHdpdGggdGhlIHNhbWUgbmFt ZSAoYWN0dWFsbHksIHlvdSBjYW4sIHRoZXkKanVzdCBnZXQgbWVyZ2VkIHRvZ2V0aGVyKS4gRGlm ZmVyZW50IG5hbWVzIHdpdGggdGhlIHNhbWUgdW5pdC1hZGRyZXNzCmlzIGEgZHRjIHdhcm5pbmcu IEknZCByZWFsbHkgbGlrZSB0byBtYWtlIHRoYXQgYSBmdWxsIGJsb3duCm92ZXJsYXBwaW5nIHJl Z2lvbiBjaGVjay4KCj4gICAgICAgICAgICAgICAgICAgICAgICAgcmVnID0gPDB4ODAwMDAwMDAg MHgwMTAwMDAwMD47Cj4gICAgICAgICAgICAgICAgICAgICAgICAgaW9tbXUtYWRkcmVzc2VzID0g PDB4YjAwMDAwMDAgMHgwMTAwMDAwMD47Cj4gICAgICAgICAgICAgICAgIH07Cj4gICAgICAgICB9 Owo+Cj4gV2UgY291bGQgbWFrZSB0aGUgY29kZSBpZGVudGlmeSB0aGF0IHRoaXMgaXMgZm9yIHRo ZSBzYW1lIHBoeXNpY2FsCj4gcmVzZXJ2YXRpb24gKG1heWJlIG1ha2UgaXQgc28gdGhhdCByZWcg bmVlZHMgdG8gbWF0Y2ggZXhhY3RseSBmb3IgdGhpcwo+IHRvIGJlIHJlY29nbml6ZWQpIGJ1dCB3 aXRoIGRpZmZlcmVudCB2aXJ0dWFsIGFsbG9jYXRpb25zLgo+Cj4gT24gYSBzaWRlLW5vdGU6IGRv IHdlIHJlYWxseSBuZWVkIHRvIHJlcGVhdCB0aGUgc2l6ZT8gSSdkIHRoaW5rIGlmIHdlCj4gd2Fu dCBtYXBwaW5ncyB0aGVuIHdlJ2QgbGlrZWx5IHdhbnQgdGhlbSBmb3IgdGhlIHdob2xlIHJlc2Vy dmF0aW9uLgoKSHVtbSwgSSBzdXBwb3NlIG5vdCwgYnV0IGRyb3BwaW5nIGl0IHBhaW50cyB1cyBp bnRvIGEgY29ybmVyIGlmIHdlCmNvbWUgdXAgd2l0aCB3YW50aW5nIGEgZGlmZmVyZW50IHNpemUg bGF0ZXIuIFlvdSBjb3VsZCBoYXZlIGEgY2FydmVvdXQKZm9yIGRvdWJsZS90cmlwbGUgYnVmZmVy aW5nIHlvdXIgZnJhbWVidWZmZXIsIGJ1dCB0aGUgYm9vdGxvYWRlcgpmcmFtZWJ1ZmZlciBpcyBv bmx5IHNpbmdsZSBidWZmZXJlZC4gU28gd291bGQgeW91IHdhbnQgYWN0dWFsIHNpemU/Cgo+IEkn ZCBsaWtlIHRvIGtlZXAgcmVmZXJlbmNlcyB0byBJT01NVXMgb3V0IG9mIHRoaXMgYmVjYXVzZSB0 aGV5IHdvdWxkIGJlCj4gZHVwbGljYXRlZC4gV2Ugd2lsbCBvbmx5IHVzZSB0aGVzZSBub2RlcyBp ZiB0aGV5IGFyZSByZWZlcmVuY2VkIGJ5IGEKPiBkZXZpY2Ugbm9kZSB0aGF0IGFsc28gaGFzIGFu IGlvbW11cyBwcm9wZXJ0eS4gQWxzbywgdGhlIElPTU1VIHJlZmVyZW5jZQo+IGl0c2VsZiBpc24n dCBlbm91Z2guIFdlJ2QgYWxzbyBuZWVkIHRvIHN1cHBvcnQgdGhlIGNvbXBsZXRlIHNwZWNpZmll cgo+IGJlY2F1c2UgeW91IGNhbiBoYXZlIHRoaW5ncyBsaWtlIFNJRHMgaW4gdGhlcmUgdG8gc3Bl Y2lmeSB0aGUgZXhhY3QKPiBhZGRyZXNzIHNwYWNlIHRoYXQgYSBkZXZpY2UgdXNlcy4KPgo+IEFs c28sIGZvciBzb21lIG9mIHRoZXNlIHRoZXkgbWF5IGJlIHJldXNlZCBpbmRlcGVuZGVudGx5IG9m IHRoZSBJT01NVQo+IGFkZHJlc3Mgc3BhY2UuIEZvciBleGFtcGxlIHRoZSBUZWdyYSBmcmFtZWJ1 ZmZlciBpZGVudGl0eSBtYXBwaW5nIGNhbgo+IGJlIHVzZWQgYnkgZWl0aGVyIG9mIHRoZSAyLTQg ZGlzcGxheSBjb250cm9sbGVycywgZWFjaCB3aXRoIChhdCBsZWFzdAo+IHBvdGVudGlhbGx5KSB0 aGVpciBvd24gYWRkcmVzcyBzcGFjZS4gQnV0IHdlIGRvbid0IHdhbnQgdG8gaGF2ZSB0bwo+IGRl c2NyaWJlIHRoZSBpZGVudGl0eSBtYXBwaW5nIHNlcGFyYXRlbHkgZm9yIGVhY2ggZGlzcGxheSBj b250cm9sbGVyLgoKT2theSwgYnV0IEknZCByYXRoZXIgaGF2ZSB0byBkdXBsaWNhdGUgdGhpbmdz IGluIHlvdXIgY2FzZSB0aGFuIG5vdCBiZQphYmxlIHRvIGV4cHJlc3Mgc29tZSBvdGhlciBjYXNl LgoKPiBBbm90aGVyIHRoaW5nIHRvIGNvbnNpZGVyIGlzIHRoYXQgdGhlc2Ugbm9kZXMgd2lsbCBv ZnRlbiBiZSBhZGRlZCBieQo+IGZpcm13YXJlIChlLmcuIGZpcm13YXJlIHdpbGwgYWxsb2NhdGUg dGhlIGZyYW1lYnVmZmVyIGFuZCBzZXQgdXAgdGhlCj4gY29ycmVzcG9uZGluZyByZXNlcnZlZCBt ZW1vcnkgcmVnaW9uIGluIERUKS4gV2lyaW5nIHVwIHJlZmVyZW5jZXMgbGlrZQo+IHRoaXMgd291 bGQgZ2V0IHZlcnkgY29tcGxpY2F0ZWQgdmVyeSBxdWlja2x5LgoKWWVzLgoKVGhlIHVzaW5nICdp b21tdXMnIHByb3BlcnR5IG9wdGlvbiBiZWxvdyBjYW4gYmUgb3B0aW9uYWwgYW5kIGRvZXNuJ3QK aGF2ZSB0byBiZSBkZWZpbmVkL3N1cHBvcnRlZCBub3cuIEp1c3QgdHJ5aW5nIHRvIHRoaW5rIGFo ZWFkIGFuZCBub3QKYmUgc3R1Y2sgd2l0aCBzb21ldGhpbmcgdGhhdCBjYW4ndCBiZSBleHRlbmRl ZC4KCj4gPiBPciB0aGUgb3RoZXIgd2F5IHRvIGRvIHRoaXMgaXMgcmV1c2UgJ2lvbW11cycgcHJv cGVydHkgdG8gZGVmaW5lIHRoZQo+ID4gbWFwcGluZyBvZiBlYWNoIGFkZHJlc3MgZW50cnkgdG8g aW9tbXUuCj4gPgo+ID4gPiBPYnZpb3VzbHkgd2UgY2FuIGZpeCB0aGF0IGluIExpbnV4LCBidXQg d2hhdCBhYm91dCBvdGhlciBvcGVyYXRpbmcKPiA+ID4gc3lzdGVtcz8gQ3VycmVudGx5ICJyZWci IGlzIGEgcmVxdWlyZWQgcHJvcGVydHkgZm9yIHN0YXRpY2FsbHkgYWxsb2NhdGVkCj4gPiA+IHJl Z2lvbnMgKHdoaWNoIGFsbCBvZiB0aGVzZSB3b3VsZCBiZSkuIERvIHlvdSBoYXZlIGFuIGlkZWEg b2YgaG93IHdpZGVseQo+ID4gPiB0aGF0J3MgdXNlZD8gV2hhdCBhYm91dCBvdGhlciBPU2VzLCBv ciBib290bG9hZGVycywgd2hhdCBpZiB0aGV5Cj4gPiA+IGVuY291bnRlciB0aGVzZSBub2RlcyB0 aGF0IGRvbid0IGhhdmUgYSAicmVnIiBwcm9wZXJ0eT8KPiA+Cj4gPiBXaXRob3V0ICdyZWcnLCB0 aGVyZSBtdXN0IGJlIGEgY29tcGF0aWJsZSB0aGF0IHRoZSBjbGllbnQgdW5kZXJzdGFuZHMKPiA+ IG9yIHRoZSBub2RlIHNob3VsZCBiZSBpZ25vcmVkLgo+ID4KPiA+IE15IHN1c3BpY2lvbiBpcyB0 aGF0IC9yZXNlcnZlZC1tZW1vcnkgaXMgYWJ1c2VkIGZvciBhbGwgc29ydHMgb2YKPiA+IHRoaW5n cyBkb3duc3RyZWFtLCBidXQgdGhhdCdzIG5vdCByZWFsbHkgcmVsZXZhbnQgaGVyZS4KPgo+IFll YWgsIG15IG9ubHkgY29uY2VybiB3YXMgdGhhdCB3ZSBtaWdodCBicmVhayB1c2VycyBvZiB0aGlz IHRoYXQgYXJlIG5vdAo+IHNvcGhpc3RpY2F0ZWQgZW5vdWdoIHRvIGhhbmRsZSB0aGUgbnVhbmNl cyB0aGF0IHdlJ2QgaW50cm9kdWNlIGhlcmUuIElmCj4gd2UgY2FuIGFzc3VtZSB0aGF0IG5vZGVz IHdpdGhvdXQgYSByZWcgcHJvcGVydHkgd2lsbCBiZSBpZ25vcmVkLCB0aGVuIEkKPiB0aGluayB0 aGF0J3MgZ29vZCBlbm91Z2guCgpJJ20gcHJldHR5IHN1cmUgd2Ugc2hvdWxkIGJlIG9rYXksIGJ1 dCBjaGVjayB0aGUgY29kZS4KClJvYgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwppb21tdSBtYWlsaW5nIGxpc3QKaW9tbXVAbGlzdHMubGludXgtZm91bmRh dGlvbi5vcmcKaHR0cHM6Ly9saXN0cy5saW51eGZvdW5kYXRpb24ub3JnL21haWxtYW4vbGlzdGlu Zm8vaW9tbXU=