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=-2.1 required=3.0 tests=BAYES_00,DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE, SPF_PASS,USER_AGENT_SANE_1 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 D31B8C433B4 for ; Tue, 4 May 2021 09:14:15 +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 912D9610FB for ; Tue, 4 May 2021 09:14:15 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 912D9610FB 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 A56AD6EAA4; Tue, 4 May 2021 09:14:10 +0000 (UTC) Received: from mail-ej1-x633.google.com (mail-ej1-x633.google.com [IPv6:2a00:1450:4864:20::633]) by gabe.freedesktop.org (Postfix) with ESMTPS id 59AAA6E1B7; Tue, 4 May 2021 09:14:09 +0000 (UTC) Received: by mail-ej1-x633.google.com with SMTP id gx5so12025150ejb.11; Tue, 04 May 2021 02:14:09 -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-transfer-encoding:content-language; bh=x6+Q02ON7KrhxaSTi50N6nl63k7+yXEE8FcUUTgGQKo=; b=mVo7uCXSOL6d0NSzd5jT/gD+/WeyiqYRGnSvkvVDTUPOHy8G2o2YeaO6flbrcwP7c5 7pLrdhV7B0g9qt2p/T8UE4wD+drBu5cCC88CRICaVVek5sZ5mBcgzO/7V2TMfomiW99z AldxwyO8O1V+P1uYyrS906e6gkphceS1v0Hp/GtJZ1NMY4TZu8WdVRmgpUl7J2Xv1pha zYKqWKGESF1iCWd/WF+NgerXmwTHGppBvn42fmc89KWZ7+w4XGPke+EUFw159F5PX8Yh 0CgYdNvMFXjh+nbpRcOKCSi+ryfr6PTBtp9mr8DGy3UhgQvuRUssWfmmDkNLu7FqPAxr WSGg== 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-transfer-encoding :content-language; bh=x6+Q02ON7KrhxaSTi50N6nl63k7+yXEE8FcUUTgGQKo=; b=gvKCqEcgm/gn5S+gnegbsysOJ9ZSYhM3H+8SB3QyrS6h5wOqa7HtRyvDW/hx7IJ2nJ 1kyERFUg//jY2ZuXhFSzivQqjGENxUDuAcyKw3oqkoxA9eKKC14fcFZ7BzK3WKB/rDS2 Xw67BIV/GkhxFvDDW/NlIsG6FN4bSVZG2BtHe/94JQCde1fFFIzYl9jP6BBucfAyZml2 2pnKvH6QmIksvvTr50162aDPBMtZmcJgDRIkZNabmH4B1NfTzIyslrgPuJTH6Tv28aPT bNhRVGSQa007zH+wspscUGfpBYz/kvhFdk3L1z7ixEdfXu823HIfm43xuu6SJEXI7kQ1 I3Iw== X-Gm-Message-State: AOAM531NTuLW6xf+rvdQGUeChNe0+UKeoSqG27a/tvXNfx+x50k6oZOG ErFJVjELE5xi649SgWSJ6gIikWi9VS4= X-Google-Smtp-Source: ABdhPJxIg4XVIOT3r2ZOXryFgqAFifQqh6TZ3xrK8KIqNfjX9wWHvQCgTiinVKNfsS52lvx7K6G1/Q== X-Received: by 2002:a17:906:46d0:: with SMTP id k16mr21111025ejs.105.1620119647782; Tue, 04 May 2021 02:14:07 -0700 (PDT) Received: from ?IPv6:2a02:908:1252:fb60:b6e2:f801:3cd:9deb? ([2a02:908:1252:fb60:b6e2:f801:3cd:9deb]) by smtp.gmail.com with ESMTPSA id pw11sm1065526ejb.88.2021.05.04.02.14.06 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 04 May 2021 02:14:07 -0700 (PDT) Subject: Re: [Mesa-dev] [RFC] Linux Graphics Next: Explicit fences everywhere and no BO fences - initial proposal To: Daniel Vetter References: <153487a3-082b-faf7-2a4d-ae15993b2a5d@gmail.com> <1bd8105b-4a2a-2ad9-0b3c-a81590282f2e@gmail.com> <9ccfe4b2-91f0-b8e5-6327-bf3c8b6d1a24@gmail.com> From: =?UTF-8?Q?Christian_K=c3=b6nig?= Message-ID: Date: Tue, 4 May 2021 11:14:06 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.1 MIME-Version: 1.0 In-Reply-To: Content-Language: en-US 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 , =?UTF-8?Q?Michel_D=c3=a4nzer?= , Jason Ekstrand , =?UTF-8?B?TWFyZWsgT2zFocOhaw==?= Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" QW0gMDQuMDUuMjEgdW0gMTA6Mjcgc2NocmllYiBEYW5pZWwgVmV0dGVyOgo+IE9uIFR1ZSwgTWF5 IDQsIDIwMjEgYXQgMTA6MDkgQU0gQ2hyaXN0aWFuIEvDtm5pZwo+IDxja29lbmlnLmxlaWNodHp1 bWVya2VuQGdtYWlsLmNvbT4gd3JvdGU6Cj4+IEFtIDA0LjA1LjIxIHVtIDA5OjMyIHNjaHJpZWIg RGFuaWVsIFZldHRlcjoKPj4+IE9uIFR1ZSwgTWF5IDA0LCAyMDIxIGF0IDA5OjAxOjIzQU0gKzAy MDAsIENocmlzdGlhbiBLw7ZuaWcgd3JvdGU6Cj4+Pj4gVW5mb3J0dW5hdGVseSBhcyBJIHBvaW50 ZWQgb3V0IHRvIERhbmllbCBhcyB3ZWxsIHRoaXMgd29uJ3Qgd29yayAxMDAlCj4+Pj4gcmVsaWFi bGUgZWl0aGVyLgo+Pj4gWW91J3JlIGNsYWltaW5nIHRoaXMsIGJ1dCB0aGVyZSdzIG5vIGNsZWFy IHJlYXNvbiB3aHkgcmVhbGx5LCBhbmQgeW91Cj4+PiBkaWQndCByZXBseSB0byBteSBsYXN0IG1h aWwgb24gdGhhdCBzdWItdGhyZWFkLCBzbyBJIHJlYWxseSBkb24ndCBnZXQKPj4+IHdoZXJlIGV4 YWN0bHkgeW91J3JlIHNlZWluZyBhIHByb2JsZW0uCj4+IFllYWgsIGl0J3MgcmF0aGVyIGhhcmQg dG8gZXhwbGFpbiB3aXRob3V0IHBvaW50aW5nIG91dCBob3cgdGhlIGhhcmR3YXJlCj4+IHdvcmtz IGluIGRldGFpbC4KPj4KPj4+PiBTZWUgdGhlIHNpZ25hbCBvbiB0aGUgcmluZyBidWZmZXIgbmVl ZHMgdG8gYmUgcHJvdGVjdGVkIGJ5IG1hbmlwdWxhdGlvbiBmcm9tCj4+Pj4gdXNlcnNwYWNlIHNv IHRoYXQgd2UgY2FuIGd1YXJhbnRlZSB0aGF0IHRoZSBoYXJkd2FyZSByZWFsbHkgaGFzIGZpbmlz aGVkCj4+Pj4gZXhlY3V0aW5nIHdoZW4gaXQgZmlyZXMuCj4+PiBOb3BlIHlvdSBkb24ndC4gVXNl cnNwYWNlIGlzIGFscmVhZHkgYWxsb3dlZCB0byBzdWJtaXQgYWxsIGtpbmRzIG9mIHJhbmRvbQo+ Pj4gZ2FyYmFnZSwgdGhlIG9ubHkgdGhpbmcgdGhlIGtlcm5lbCBoYXMgdG8gZ3Vhcm5hdGVlIGlz Ogo+Pj4gLSB0aGUgZG1hLWZlbmNlIERBRyBzdGF5cyBhIERBRwo+Pj4gLSBkbWEtZmVuY2UgY29t cGxldGVzIGluIGZpbml0ZSB0aW1lCj4+Pgo+Pj4gRXZlcnl0aGluZyBlbHNlIGlzIG5vdCB0aGUg a2VybmVsJ3MgcHJvYmxlbSwgYW5kIGlmIHVzZXJzcGFjZSBtaXhlcyBzdHVmZgo+Pj4gdXAgbGlr ZSBtYW5pcHVsYXRlcyB0aGUgc2Vxbm8sIHRoYXQncyBvay4gSXQgY2FuIGRvIHRoYXQga2luZCBv ZiBnYXJiYWdlCj4+PiBhbHJlYWR5Lgo+Pj4KPj4+PiBQcm90ZWN0aW5nIG1lbW9yeSBieSBpbW1l ZGlhdGUgcGFnZSB0YWJsZSB1cGRhdGVzIGlzIGEgZ29vZCBmaXJzdCBzdGVwLCBidXQKPj4+PiB1 bmZvcnR1bmF0ZWx5IG5vdCBzdWZmaWNpZW50IChhbmQgd2Ugd291bGQgbmVlZCB0byByZXN0cnVj dHVyZSBsYXJnZSBwYXJ0cwo+Pj4+IG9mIHRoZSBkcml2ZXIgdG8gbWFrZSB0aGlzIGhhcHBlbiku Cj4+PiBUaGlzIGlzIHdoeSB5b3UgbmVlZCB0aGUgdW5sb2FkLWZlbmNlIG9uIHRvcCwgYmVjYXVz ZSBpbmRlZWQgeW91IGNhbid0Cj4+PiBqdXN0IHJlbHkgb24gdGhlIGZlbmNlcyBjcmVhdGVkIGZy b20gdGhlIHVzZXJzcGFjZSByaW5nLCB0aG9zZSBhcmUKPj4+IHVucmVsaWFibGUgZm9yIG1lbW9y eSBtYW5hZ2VtZW50Lgo+PiBBbmQgZXhhY3RseSB0aGF0J3MgdGhlIHByb2JsZW0hIFdlIGNhbid0 IHByb3ZpZGUgYSByZWxpYWJsZSB1bmxvYWQtZmVuY2UKPj4gYW5kIHRoZSB1c2VyIGZlbmNlcyBh cmUgdW5yZWxpYWJsZSBmb3IgdGhhdC4KPj4KPj4gSSd2ZSB0YWxrZWQgdGhpcyB0aHJvdWdoIGxl bmd0aHkgd2l0aCBvdXIgaGFyZHdhcmUvZmlybXdhcmUgZ3V5IGxhc3QKPj4gVGh1cnNkYXkgYnV0 IGNvdWxkbid0IGZpbmQgYSBzb2x1dGlvbiBlaXRoZXIuCj4+Cj4+IFdlIGNhbiBoYXZlIGEgcHJl ZW1wdGlvbiBmZW5jZSBmb3IgdGhlIGtlcm5lbCB3aGljaCBzYXlzOiBIZXkgdGhpcyBxdWV1ZQo+ PiB3YXMgc2NoZWR1bGVkIGF3YXkgeW91IGNhbiB0b3VjaCBpdCdzIGhhcmR3YXJlIGRlc2NyaXB0 b3IsIGNvbnRyb2wKPj4gcmVnaXN0ZXJzLCBwYWdlIHRhYmxlcywgVExCLCBtZW1vcnksIEdXUywg R0RTLCBPQSBldGMgZXRjIGV0Yy4uLiBhZ2Fpbi4KPj4gQnV0IHRoYXQgb25lIGlzIG9ubHkgdHJp Z2dlcmVkIG9uIHByZWVtcHRpb24gYW5kIHRoZW4gd2UgaGF2ZSB0aGUgc2FtZQo+PiBvcmRlcmlu ZyBwcm9ibGVtcyBvbmNlIG1vcmUuCj4+Cj4+IE9yIHdlIGNhbiBoYXZlIGEgZW5kIG9mIG9wZXJh dGlvbiBmZW5jZSBmb3IgdXNlcnNwYWNlIHdoaWNoIHNheXM6IEhleQo+PiB0aGlzIHF1ZXVlIGhh cyBmaW5pc2hlZCBpdCdzIGJhdGNoIG9mIGV4ZWN1dGlvbiwgYnV0IHRoaXMgb25lIGlzCj4+IG1h bmlwdWxhYmxlIGZyb20gdXNlcnNwYWNlIGluIGJvdGggZmluaXNoIHRvIGVhcmx5ICh2ZXJ5IHZl cnkgYmFkIGZvcgo+PiBpbnZhbGlkYXRpb25zIGFuZCBtZW1vcnkgbWFuYWdlbWVudCkgb3IgZmlu aXNoIHRvIGxhdGUvbmV2ZXIgKGRlYWRsb2NrCj4+IHByb25lIGJ1dCBmaXhhYmxlIGJ5IHRpbWVv dXQpLgo+Pgo+PiBXaGF0IHdlIGNvdWxkIGRvIGlzIHRvIHVzZSB0aGUgcHJlZW1wdGlvbiBmZW5j ZSB0byBlbXVsYXRlIHRoZSB1bmxvYWQKPj4gZmVuY2UsIGUuZy4gc29tZXRoaW5nIGxpa2U6Cj4+ IDEuIFByZWVtcHQgdGhlIHF1ZXVlIGluIGZpeGVkIGludGVydmFscyAobGV0J3Mgc2F5IDEwMG1z KS4KPj4gMi4gV2hpbGUgcHJlZW1wdGVkIGNoZWNrIGlmIHdlIGhhdmUgcmVhY2hlZCB0aGUgY2hl Y2twb2ludCBpbiBxdWVzdGlvbgo+PiBieSBsb29raW5nIGF0IHRoZSBoYXJkd2FyZSBkZXNjcmlw dG9yLgo+PiAzLiBJZiB3ZSBoYXZlIHJlYWNoZWQgdGhlIGNoZWNrcG9pbnQgc2lnbmFsIHRoZSB1 bmxvYWQgZmVuY2UuCj4+IDQuIElmIHdlIGhhdmVuJ3QgcmVhY2hlZCB0aGUgY2hlY2twb2ludCBy ZXN1bWUgdGhlIHF1ZXVlIGFnYWluLgo+Pgo+PiBUaGUgcHJvYmxlbSBpcyB0aGF0IHRoaXMgbWln aHQgaW50cm9kdWNlIGEgbWF4aW11bSBvZiAxMDBtcyBkZWxheSBiZWZvcmUKPj4gc2lnbmFsaW5n IHRoZSB1bmxvYWQgZmVuY2UgYW5kIHByZWVtcHQvcmVzdW1lIGhhcyBzdWNoIGEgaGVmdHkgb3Zl cmhlYWQKPj4gdGhhdCB3ZSB3YXN0ZSBhIGhvcnJpYmxlIGFtb3VudCBvZiB0aW1lIG9uIGl0Lgo+ IFNvIHlvdXIgaHcgY2FuIHByZWVtcHQ/IFRoYXQncyBnb29kIGVub3VnaC4KPgo+IFRoZSB1bmxv YWQgZmVuY2UgaXMganVzdAo+IDEuIHdhaXQgZm9yIGFsbCBkbWFfZmVuY2UgdGhhdCBhcmUgYmFz ZWQgb24gdGhlIHVzZXJzcGFjZSByaW5nLiBUaGlzCj4gaXMgdW5yZWxpYWJsZSwgYnV0IHdlIGRv bid0IGNhcmUgYmVjYXVzZSB0ZHIgd2lsbCBtYWtlIGl0IHJlbGlhYmxlLgo+IEFuZCBvbmNlIHRk ciBzaG90IGRvd24gYSBjb250ZXh0IHdlJ2xsIGZvcmNlLXVubG9hZCBhbmQgdGhyYXNoIGl0Cj4g Y29tcGxldGVseSwgd2hpY2ggc29sdmVzIHRoZSBwcm9ibGVtLgo+IDIuIHByZWVtcHQgdGhlIGNv bnRleHQsIHdoaWNoIC9zaG91bGQvIG5vdyBiZSBzdHVjayB3YWl0aW5nIGZvciBtb3JlCj4gY29t bWFuZHMgdG8gYmUgc3R1ZmZlZCBpbnRvIHRoZSByaW5nYnVmZmVyLiBXaGljaCBtZWFucyB5b3Vy Cj4gcHJlZW1wdGlvbiBpcyBob3BlZnVsbHkgZmFzdCBlbm91Z2ggdG8gbm90IG1hdHRlci4gSWYg eW91ciBodyB0YWtlcwo+IGZvcmV2ZXIgdG8gcHJlZW1wdCBhbiBpZGxlIHJpbmcsIEkgY2FuJ3Qg aGVscCB5b3UgOi0pCgpZZWFoLCBpdCBqdXN0IHRha2VzIHRvIGxvbmcgZm9yIHRoZSBwcmVlbXB0 aW9uIHRvIGNvbXBsZXRlIHRvIGJlIHJlYWxseSAKdXNlZnVsIGZvciB0aGUgZmVhdHVyZSB3ZSBh cmUgZGlzY3Vzc2luZyBoZXJlLgoKQXMgSSBzYWlkIHdoZW4gdGhlIGtlcm5lbCByZXF1ZXN0cyB0 byBwcmVlbXB0IGEgcXVldWUgd2UgY2FuIGVhc2lseSAKZXhwZWN0IGEgdGltZW91dCBvZiB+MTAw bXMgdW50aWwgdGhhdCBjb21lcyBiYWNrLiBGb3IgY29tcHV0ZSB0aGF0IGlzIApldmVuIGluIHRo ZSBtdWx0aXBsZSBzZWNvbmRzIHJhbmdlLgoKVGhlICJwcmVlbXB0aW9uIiBmZWF0dXJlIGlzIHJl YWxseSBjYWxsZWQgc3VzcGVuZCBhbmQgbWFkZSBqdXN0IGZvciB0aGUgCmNhc2Ugd2hlbiB3ZSB3 YW50IHRvIHB1dCBhIHByb2Nlc3MgdG8gc2xlZXAgb3IgbmVlZCB0byBmb3JjZWZ1bGx5IGtpbGwg Cml0IGZvciBtaXNiZWhhdmlvciBvciBzdHVmZiBsaWtlIHRoYXQuIEl0IGlzIG5vdCBtZWFudCB0 byBiZSB1c2VkIGluIApub3JtYWwgb3BlcmF0aW9uLgoKSWYgd2Ugb25seSBhdHRhY2ggaXQgb24g LT5tb3ZlIHRoZW4geWVhaCBtYXliZSBhIGxhc3QgcmVzb3J0IHBvc3NpYmlsaXR5IAp0byBkbyBp dCB0aGlzIHdheSwgYnV0IEkgdGhpbmsgaW4gdGhhdCBjYXNlIHdlIGNvdWxkIHJhdGhlciBzdGlj ayB3aXRoIAprZXJuZWwgc3VibWlzc2lvbnMuCgo+IEFsc28sIGlmIHVzZXJzcGFjZSBsaWVzIHRv IHVzIGFuZCBrZWVwcyBwdXNoaW5nIGNyYXAgaW50byB0aGUgcmluZwo+IGFmdGVyIGl0J3Mgc3Vw cG9zZWQgdG8gYmUgaWRsZTogVXNlcnNwYWNlIGlzIGFscmVhZHkgYWxsb3dlZCB0byB3YXN0ZQo+ IGdwdSB0aW1lLiBJZiB5b3UncmUgdG9vIHdvcnJpZWQgYWJvdXQgdGhpcyBzZXQgYSBmYWlybHkg YWdncmVzc2l2ZQo+IHByZWVtcHQgdGltZW91dCBvbiB0aGUgdW5sb2FkIGZlbmNlLCBhbmQga2ls bCB0aGUgY29udGV4dCBpZiBpdCB0YWtlcwo+IGxvbmdlciB0aGFuIHdoYXQgcHJlZW1wdGluZyBh biBpZGxlIHJpbmcgc2hvdWxkIHRha2UgKGJlY2F1c2UgdGhhdAo+IHdvdWxkIGluZGljYXRlIGJy b2tlbi9ldmlsIHVzZXJzcGFjZSkuCgpJIHRoaW5rIHlvdSBoYXZlIHRoZSB3cm9uZyBleHBlY3Rh dGlvbiBoZXJlLiBJdCBpcyBwZXJmZWN0bHkgdmFsaWQgYW5kIApleHBlY3RlZCBmb3IgdXNlcnNw YWNlIHRvIGtlZXAgd3JpdGluZyBjb21tYW5kcyBpbnRvIHRoZSByaW5nIGJ1ZmZlci4KCkFmdGVy IGFsbCB3aGVuIG9uZSBmcmFtZSBpcyBjb21wbGV0ZWQgdGhleSB3YW50IHRvIGltbWVkaWF0ZWx5 IHN0YXJ0IApyZW5kZXJpbmcgdGhlIG5leHQgb25lLgoKPiBBZ2FpbiwgSSdtIG5vdCBzZWVpbmcg dGhlIHByb2JsZW0uIEV4Y2VwdCBpZiB5b3VyIGh3IGlzIHJlYWxseQo+IGNvbXBsZXRlbHkgYnVz dGVkIHRvIHRoZSBwb2ludCB3aGVyZSBpdCBjYW4ndCBldmVuIHN1cHBvcnQgdXNlcnNwYWNlCj4g cmluZ2J1ZmZlcnMgcHJvcGVybHkgYW5kIHdpdGggc3VmZmljaWVudCBwZXJmb3JtYW5jZSA6LVAK Pgo+IE9mIGNvdXJzZSBpZiB5b3UgaXNzdWUgdGhlIHByZWVtcHQgY29udGV4dCByZXF1ZXN0IGJl Zm9yZSB0aGUKPiB1c2Vyc3BhY2UgZmVuY2VzIGhhdmUgZmluaXNoZWQgKG9yIHRkciBjbGVhbmVk IHVwIHRoZSBtZXNzKSBsaWtlIHlvdQo+IGRvIGluIHlvdXIgcHJvcG9zYWwsIHRoZW4gaXQgd2ls bCBiZSByaWRpY3Vsb3VzbHkgZXhwZW5zaXZlIGFuZC9vcgo+IHdvbnQgd29yay4gU28ganVzdCBk b24ndCBkbyB0aGF0Lgo+Cj4+PiBidHcgSSB0aG91Z2h0IHNvbWUgbW9yZSwgYW5kIEkgdGhpbmsg aXQncyBwcm9iYWJseSBiZXN0IGlmIHdlIG9ubHkgYXR0YWNoCj4+PiB0aGUgdW5sb2FkLWZlbmNl IGluIHRoZSAtPm1vdmUoX25vdGlmeSkgY2FsbGJhY2tzLiBLaW5kYSBsaWtlIHdlIGFscmVhZHkK Pj4+IGRvIGZvciBhc3luYyBjb3B5IGpvYnMuIFNvIHRoZSBvdmVyYWxsIGJ1ZmZlciBtb3ZlIHNl cXVlbmNlIHdvdWxkIGJlOgo+Pj4KPj4+IDEuIHdhaXQgZm9yICh1bnRydXN0ZWQgZm9yIGtlcm5l bCwgYnV0IG5lY2Vzc2FyeSBmb3IgdXNlcnNwYWNlCj4+PiBjb3JyZWN0bmVzcykgZmFrZSBkbWEt ZmVuY2UgdGhhdCByZWx5IG9uIHRoZSB1c2Vyc3BhY2UgcmluZwo+Pj4KPj4+IDIuIHVubG9hZCBj dHgKPj4+Cj4+PiAzLiBjb3B5IGJ1ZmZlcgo+Pj4KPj4+IE9mYyAyJjMgd291bGQgYmUgZG9uZSBh c3luYyBiZWhpbmQgYSBkbWFfZmVuY2UuCj4+Pgo+Pj4+IE9uIG9sZGVyIGhhcmR3YXJlIHdlIG9m dGVuIGhhZCB0aGUgc2l0dWF0aW9uIHRoYXQgZm9yIHJlbGlhYmxlIGludmFsaWRhdGlvbgo+Pj4+ IHdlIG5lZWQgdGhlIGd1YXJhbnRlZSB0aGF0IGV2ZXJ5IHByZXZpb3VzIG9wZXJhdGlvbiBoYXMg ZmluaXNoZWQgZXhlY3V0aW5nLgo+Pj4+IEl0J3Mgbm90IHNvIG11Y2ggb2YgYSBwcm9ibGVtIHdo ZW4gdGhlIG5leHQgb3BlcmF0aW9uIGhhcyBhbHJlYWR5IHN0YXJ0ZWQsCj4+Pj4gc2luY2UgdGhl biB3ZSBoYWQgdGhlIG9wcG9ydHVuaXR5IHRvIGRvIHRoaW5ncyBpbiBiZXR3ZWVuIHRoZSBsYXN0 IGFuZCB0aGUKPj4+PiBuZXh0IG9wZXJhdGlvbi4gSnVzdCBzZWUgY2FjaGUgaW52YWxpZGF0aW9u IGFuZCBWTSBzd2l0Y2hpbmcgZm9yIGV4YW1wbGUuCj4+PiBJZiB5b3UgaGF2ZSBncHUgcGFnZSBm YXVsdHMgeW91IGdlbmVyYWxseSBoYXZlIHN5bmNocm9ub3VzIHRsYgo+Pj4gaW52YWxpZGF0aW9u LAo+PiBQbGVhc2UgdGVsbCB0aGF0IG91ciBoYXJkd2FyZSBlbmdpbmVlcnMgOikKPj4KPj4gV2Ug aGF2ZSB0d28gbW9kZXMgb2Ygb3BlcmF0aW9uLCBzZWUgdGhlIHdob2xlIFhOQUNLIG9uL29mZiBk aXNjdXNzaW9uIG9uCj4+IHRoZSBhbWRnZnggbWFpbGluZyBsaXN0Lgo+IEkgZGlkbid0IGZpbmQg dGhpcyBhbnl3aGVyZSB3aXRoIGEgcXVpY2sgc2VhcmNoLiBQb2ludGVycyB0byBhcmNoaXZlCj4g KGxvcmUua2VybmVsLm9yZy9hbWQtZ2Z4IGlzIHRoZSBiZXN0IGltbykuCgpDYW4ndCBmaW5kIHRo YXQgb2YgaGFuZCBlaXRoZXIsIGJ1dCBzZWUgdGhlIGFtZGdwdV9ub3JldHJ5IG1vZHVsZSBvcHRp b24uCgpJdCBiYXNpY2FsbHkgdGVsbHMgdGhlIGhhcmR3YXJlIGlmIHJldHJ5IHBhZ2UgZmF1bHRz IHNob3VsZCBiZSBzdXBwb3J0ZWQgCm9yIG5vdCBiZWNhdXNlIHRoaXMgd2hvbGUgVExCIHNodXRk b3duIHRoaW5nIHdoZW4gdGhleSBhcmUgc3VwcG9ydGVkIGlzIApleHRyZW1lbHkgY29zdGx5LgoK Pj4+IHNvIHRoaXMgYWxzbyBzaG91bGRuJ3QgYmUgYSBiaWcgcHJvYmxlbS4gQ29tYmluZWQgd2l0 aCB0aGUKPj4+IHVubG9hZCBmZW5jZSBhdCBsZWFzdC4gSWYgeW91IGRvbid0IGhhdmUgc3luY2hy b25vdXMgdGxiIGludmFsaWRhdGUgaXQKPj4+IGdldHMgYSBiaXQgbW9yZSBuYXN0eSBhbmQgeW91 IG5lZWQgdG8gZm9yY2UgYSBwcmVlbXB0aW9uIHRvIGEga2VybmVsCj4+PiBjb250ZXh0IHdoaWNo IGhhcyB0aGUgcmVxdWlyZWQgZmx1c2hlcyBhY3Jvc3MgYWxsIHRoZSBjYWNoZXMuIFNsaWdodGx5 Cj4+PiBuYXN0eSwgYnV0IHRoZSBleGFjdCBzYW1lIHRoaW5nIHdvdWxkIGJlIHJlcXVpcmVkIGZv ciBoYW5kbGluZyBwYWdlIGZhdWx0cwo+Pj4gYW55d2F5IHdpdGggdGhlIGRpcmVjdCB1c2Vyc3Bh Y2Ugc3VibWl0IG1vZGVsLgo+Pj4KPj4+IEFnYWluIEknbSBub3Qgc2VlaW5nIGEgcHJvYmxlbS4K Pj4+Cj4+Pj4gQWRkaXRpb25hbCB0byB0aGF0IGl0IGRvZXNuJ3QgcmVhbGx5IGJ1eSB1cyBhbnl0 aGluZywgZS5nLiB0aGVyZSBpcyBub3QgbXVjaAo+Pj4+IGFkdmFudGFnZSB0byB0aGlzLiBXcml0 aW5nIHRoZSByaW5nIGJ1ZmZlciBpbiB1c2Vyc3BhY2UgYW5kIHRoZW4gcmluZ2luZyBpbgo+Pj4+ IHRoZSBrZXJuZWwgaGFzIHRoZSBzYW1lIG92ZXJoZWFkIGFzIGRvaW5nIGV2ZXJ5dGhpbmcgaW4g dGhlIGtlcm5lbCBpbiB0aGUKPj4+PiBmaXJzdCBwbGFjZS4KPj4+IEl0IGdldHMgeW91IGRtYS1m ZW5jZSBiYWNrd2FyZHMgY29tcGF0IHdpdGhvdXQgaGF2aW5nIHRvIHJld3JpdGUgdGhlCj4+PiBl bnRpcmUgdXNlcnNwYWNlIGVjb3N5c3RlbS4gQWxzbyBzaW5jZSB5b3UgaGF2ZSB0aGUgaHcgYWxy ZWFkeSBkZXNpZ25lZAo+Pj4gZm9yIHJpbmdidWZmZXIgaW4gdXNlcnNwYWNlIGl0IHdvdWxkIGJl IHNpbGx5IHRvIGNvcHkgdGhhdCB0aHJvdWdoIHRoZSBjcwo+Pj4gaW9jdGwsIHRoYXQncyBqdXN0 IG92ZXJoZWFkLgo+Pj4KPj4+IEFsc28gSSB0aG91Z2h0IHRoZSBwcm9ibGVtIHlvdSdyZSBoYXZp bmcgaXMgdGhhdCBhbGwgdGhlIGtlcm5lbCByaW5nYnVmCj4+PiBzdHVmZiBpcyBnb2luZyBhd2F5 LCBzbyB0aGUgb2xkIGNzIGlvY3RsIHdvbnQgd29yayBhbnltb3JlIGZvciBzdXJlPwo+PiBXZSBz dGlsbCBoYXZlIGEgYml0IG1vcmUgdGltZSBmb3IgdGhpcy4gQXMgSSBsZWFybmVkIGZyb20gb3Vy IGZpcm13YXJlCj4+IGVuZ2luZWVyIGxhc3QgVGh1cnNkYXkgdGhlIFdpbmRvd3Mgc2lkZSBpcyBy dW5uaW5nIGludG8gc2ltaWxhciBwcm9ibGVtcwo+PiBhcyB3ZSBkby4KPiBUaGlzIHN0b3J5IHNv dW5kcyBmYW1pbGlhciwgSSd2ZSBoZWFyZCBpdCBhIGZldyB0aW1lcyBoZXJlIGF0IGludGVsCj4g dG9vIG9uIHZhcmlvdXMgdGhpbmdzIHdoZXJlIHdlIGNvbXBsYWluZWQgYW5kIHRoZW4gd2luZG93 cyBoaXQgdGhlCj4gc2FtZSBpc3N1ZXMgdG9vIDotKQo+Cj4gRS5nLiBJJ3ZlIGp1c3QgbGVhcm5l ZCB0aGF0IGFsbCB0aGUgdGhpbmdzIHdlJ3ZlIGRpc2N1c3NlZCBhcm91bmQgZ3B1Cj4gcGFnZSBm YXVsdHMgdnMgM2Qgd29ya2xvYWRzIGFuZCBob3cgeW91IG5lZWQgdG8gcmVzZXJ2ZSBzb21lIENV IGZvciAzZAo+IGd1YXJhbnRlZWQgZm9yd2FyZCBwcm9ncmVzcyBvciBldmVuIHdvcnNlIG1lYXN1 cmVzIGlzIGFsc28gc29tZXRoaW5nCj4gdGhleSdyZSBoaXR0aW5nIG9uIFdpbmRvd3MuIEFwcGFy ZW50bHkgdGhleSBmaXhlZCBpdCBieSBvbmx5IHJ1bm5pbmcKPiAzZCBvciBjb21wdXRlIHdvcmts b2FkcyBhdCB0aGUgc2FtZSB0aW1lLCBidXQgbm90IGJvdGguCgpJJ20gbm90IGV2ZW4gc3VyZSBp ZiB3ZSBhcmUgZ29pbmcgdG8gc2VlIHVzZXIgZmVuY2VzIG9uIFdpbmRvd3Mgd2l0aCB0aGUgCm5l eHQgaHcgZ2VuZXJhdGlvbi4KCkJlZm9yZSB3ZSBjYW4gY29udGludWUgd2l0aCB0aGlzIGRpc2N1 c3Npb24gd2UgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0byAKZ2V0IHRoZSBoYXJkd2FyZSByZWxp YWJsZSBmaXJzdC4KCkluIG90aGVyIHdvcmRzIGlmIHdlIHdvdWxkIGhhdmUgZXhwbGljaXQgdXNl ciBmZW5jZXMgZXZlcnl3aGVyZSwgaG93IAp3b3VsZCB3ZSBoYW5kbGUgdGltZW91dHMgYW5kIG1p c2JlaGF2aW5nIHByb2Nlc3Nlcz8gQXMgaXQgdHVybmVkIG91dCAKdGhleSBoYXZlbid0IGZpZ3Vy ZWQgdGhpcyBvdXQgb24gV2luZG93cyB5ZXQgZWl0aGVyLgoKPgo+Pj4gTWF5YmUgYWxzbyBwaWNr IHVwIHRoYXQgb3RoZXIgc3VidGhyZWFkIHdoaWNoIGVuZGVkIHdpdGggbXkgbGFzdCByZXBseS4K Pj4gSSB3aWxsIHNlbmQgb3V0IGFub3RoZXIgcHJvcG9zYWwgZm9yIGhvdyB0byBoYW5kbGUgdXNl ciBmZW5jZXMgc2hvcnRseS4KPiBNYXliZSBsZXQncyBkaXNjdXNzIHRoaXMgaGVyZSBmaXJzdCBi ZWZvcmUgd2UgY29tbWl0IHRvIHJlcXVpcmluZyBhbGwKPiB1c2Vyc3BhY2UgdG8gdXBncmFkZSB0 byB1c2VyIGZlbmNlcyAuLi4gSSBkbyBhZ3JlZSB0aGF0IHdlIHdhbnQgdG8gZ28KPiB0aGVyZSB0 b28sIGJ1dCBicmVha2luZyBhbGwgdGhlIGNvbXBvc2l0b3JzIGlzIHByb2JhYmx5IG5vdCB0aGUg YmVzdAo+IG9wdGlvbi4KCkkgd2FzIG1vcmUgdGhpbmtpbmcgYWJvdXQgaGFuZGxpbmcgaXQgYWxs IGluIHRoZSBrZXJuZWwuCgpDaHJpc3RpYW4uCgo+Cj4gQ2hlZXJzLCBEYW5pZWwKPgo+Cj4+IENo ZWVycywKPj4gQ2hyaXN0aWFuLgo+Pgo+Pj4gQ2hlZXJzLCBEYW5pZWwKPj4+Cj4+Pgo+Pj4+IENo cmlzdGlhbi4KPj4+Pgo+Pj4+IEFtIDA0LjA1LjIxIHVtIDA1OjExIHNjaHJpZWIgTWFyZWsgT2zF ocOhazoKPj4+Pj4gUHJvcG9zYWwgZm9yIGEgbmV3IENTIGlvY3RsLCBrZXJuZWwgcHNldWRvIGNv ZGU6Cj4+Pj4+Cj4+Pj4+IGxvY2soJmdsb2JhbF9sb2NrKTsKPj4+Pj4gc2VyaWFsID0gZ2V0X25l eHRfc2VyaWFsKGRldik7Cj4+Pj4+IGFkZF93YWl0X2NvbW1hbmQocmluZywgc2VyaWFsIC0gMSk7 Cj4+Pj4+IGFkZF9leGVjX2NtZGJ1ZihyaW5nLCB1c2VyX2NtZGJ1Zik7Cj4+Pj4+IGFkZF9zaWdu YWxfY29tbWFuZChyaW5nLCBzZXJpYWwpOwo+Pj4+PiAqcmluZy0+ZG9vcmJlbGwgPSBGSVJFOwo+ Pj4+PiB1bmxvY2soJmdsb2JhbF9sb2NrKTsKPj4+Pj4KPj4+Pj4gU2VlPyBKdXN0IGxpa2UgdXNl cnNwYWNlIHN1Ym1pdCwgYnV0IGluIHRoZSBrZXJuZWwgd2l0aG91dAo+Pj4+PiBjb25jdXJyZW5j eS9wcmVlbXB0aW9uLiBJcyB0aGlzIG5vdyBzYWZlIGVub3VnaCBmb3IgZG1hX2ZlbmNlPwo+Pj4+ Pgo+Pj4+PiBNYXJlawo+Pj4+Pgo+Pj4+PiBPbiBNb24sIE1heSAzLCAyMDIxIGF0IDQ6MzYgUE0g TWFyZWsgT2zFocOhayA8bWFyYWVvQGdtYWlsLmNvbQo+Pj4+PiA8bWFpbHRvOm1hcmFlb0BnbWFp bC5jb20+PiB3cm90ZToKPj4+Pj4KPj4+Pj4gICAgICAgV2hhdCBhYm91dCBkaXJlY3Qgc3VibWl0 IGZyb20gdGhlIGtlcm5lbCB3aGVyZSB0aGUgcHJvY2VzcyBzdGlsbAo+Pj4+PiAgICAgICBoYXMg d3JpdGUgYWNjZXNzIHRvIHRoZSBHUFUgcmluZyBidWZmZXIgYnV0IGRvZXNuJ3QgdXNlIGl0PyBJ Cj4+Pj4+ICAgICAgIHRoaW5rIHRoYXQgc29sdmVzIHlvdXIgcHJlZW1wdGlvbiBleGFtcGxlLCBi dXQgbGVhdmVzIGEgcG90ZW50aWFsCj4+Pj4+ICAgICAgIGJhY2tkb29yIGZvciBhIHByb2Nlc3Mg dG8gb3ZlcndyaXRlIHRoZSBzaWduYWwgY29tbWFuZHMsIHdoaWNoCj4+Pj4+ICAgICAgIHNob3Vs ZG4ndCBiZSBhIHByb2JsZW0gc2luY2Ugd2UgYXJlIE9LIHdpdGggdGltZW91dHMuCj4+Pj4+Cj4+ Pj4+ICAgICAgIE1hcmVrCj4+Pj4+Cj4+Pj4+ICAgICAgIE9uIE1vbiwgTWF5IDMsIDIwMjEgYXQg MTE6MjMgQU0gSmFzb24gRWtzdHJhbmQKPj4+Pj4gICAgICAgPGphc29uQGpsZWtzdHJhbmQubmV0 IDxtYWlsdG86amFzb25Aamxla3N0cmFuZC5uZXQ+PiB3cm90ZToKPj4+Pj4KPj4+Pj4gICAgICAg ICAgIE9uIE1vbiwgTWF5IDMsIDIwMjEgYXQgMTA6MTYgQU0gQmFzIE5pZXV3ZW5odWl6ZW4KPj4+ Pj4gICAgICAgICAgIDxiYXNAYmFzbmlldXdlbmh1aXplbi5ubCA8bWFpbHRvOmJhc0BiYXNuaWV1 d2VuaHVpemVuLm5sPj4gd3JvdGU6Cj4+Pj4+ICAgICAgICAgICA+Cj4+Pj4+ICAgICAgICAgICA+ IE9uIE1vbiwgTWF5IDMsIDIwMjEgYXQgNTowMCBQTSBKYXNvbiBFa3N0cmFuZAo+Pj4+PiAgICAg ICAgICAgPGphc29uQGpsZWtzdHJhbmQubmV0IDxtYWlsdG86amFzb25Aamxla3N0cmFuZC5uZXQ+ PiB3cm90ZToKPj4+Pj4gICAgICAgICAgID4gPgo+Pj4+PiAgICAgICAgICAgPiA+IFNvcnJ5IGZv ciB0aGUgdG9wLXBvc3QgYnV0IHRoZXJlJ3Mgbm8gZ29vZCB0aGluZyB0byByZXBseQo+Pj4+PiAg ICAgICAgICAgdG8gaGVyZS4uLgo+Pj4+PiAgICAgICAgICAgPiA+Cj4+Pj4+ICAgICAgICAgICA+ ID4gT25lIG9mIHRoZSB0aGluZ3MgcG9pbnRlZCBvdXQgdG8gbWUgcmVjZW50bHkgYnkgRGFuaWVs Cj4+Pj4+ICAgICAgICAgICBWZXR0ZXIgdGhhdCBJCj4+Pj4+ICAgICAgICAgICA+ID4gZGlkbid0 IGZ1bGx5IHVuZGVyc3RhbmQgYmVmb3JlIGlzIHRoYXQgZG1hX2J1ZiBoYXMgYSB2ZXJ5Cj4+Pj4+ ICAgICAgICAgICBzdWJ0bGUKPj4+Pj4gICAgICAgICAgID4gPiBzZWNvbmQgcmVxdWlyZW1lbnQg YmV5b25kIGZpbml0ZSB0aW1lIGNvbXBsZXRpb246ICBOb3RoaW5nCj4+Pj4+ICAgICAgICAgICBy ZXF1aXJlZAo+Pj4+PiAgICAgICAgICAgPiA+IGZvciBzaWduYWxpbmcgYSBkbWEtZmVuY2UgY2Fu IGFsbG9jYXRlIG1lbW9yeS4gV2h5Pwo+Pj4+PiAgICAgICAgICAgQmVjYXVzZSB0aGUgYWN0Cj4+ Pj4+ICAgICAgICAgICA+ID4gb2YgYWxsb2NhdGluZyBtZW1vcnkgbWF5IHdhaXQgb24geW91ciBk bWEtZmVuY2UuICBUaGlzLCBhcwo+Pj4+PiAgICAgICAgICAgaXQgdHVybnMKPj4+Pj4gICAgICAg ICAgID4gPiBvdXQsIGlzIGEgbWFzc2l2ZWx5IG1vcmUgc3RyaWN0IHJlcXVpcmVtZW50IHRoYW4g ZmluaXRlIHRpbWUKPj4+Pj4gICAgICAgICAgID4gPiBjb21wbGV0aW9uIGFuZCwgSSB0aGluaywg dGhyb3dzIG91dCBhbGwgb2YgdGhlIHByb3Bvc2Fscwo+Pj4+PiAgICAgICAgICAgd2UgaGF2ZSBz bwo+Pj4+PiAgICAgICAgICAgPiA+IGZhci4KPj4+Pj4gICAgICAgICAgID4gPgo+Pj4+PiAgICAg ICAgICAgPiA+IFRha2UsIGZvciBpbnN0YW5jZSwgTWFyZWsncyBwcm9wb3NhbCBmb3IgdXNlcnNw YWNlCj4+Pj4+ICAgICAgICAgICBpbnZvbHZlbWVudCB3aXRoCj4+Pj4+ICAgICAgICAgICA+ID4g ZG1hLWZlbmNlIGJ5IGFza2luZyB0aGUga2VybmVsIGZvciBhIG5leHQgc2VyaWFsIGFuZCB0aGUK Pj4+Pj4gICAgICAgICAgIGtlcm5lbAo+Pj4+PiAgICAgICAgICAgPiA+IHRydXN0aW5nIHVzZXJz cGFjZSB0byBzaWduYWwgaXQuICBUaGF0IGRvZXNuJ3Qgd29yayBhdCBhbGwgaWYKPj4+Pj4gICAg ICAgICAgID4gPiBhbGxvY2F0aW5nIG1lbW9yeSB0byB0cmlnZ2VyIGEgZG1hLWZlbmNlIGNhbiBi bG93IHVwLgo+Pj4+PiAgICAgICAgICAgVGhlcmUncyBzaW1wbHkKPj4+Pj4gICAgICAgICAgID4g PiBubyB3YXkgZm9yIHRoZSBrZXJuZWwgdG8gdHJ1c3QgdXNlcnNwYWNlIHRvIG5vdCBkbwo+Pj4+ PiAgICAgICAgICAgQU5ZVEhJTkcgd2hpY2gKPj4+Pj4gICAgICAgICAgID4gPiBtaWdodCBhbGxv Y2F0ZSBtZW1vcnkuICBJIGRvbid0IGV2ZW4gdGhpbmsgdGhlcmUncyBhIHdheQo+Pj4+PiAgICAg ICAgICAgdXNlcnNwYWNlIGNhbgo+Pj4+PiAgICAgICAgICAgPiA+IHRydXN0IGl0c2VsZiB0aGVy ZS4gIEl0IGFsc28gYmxvd3MgdXAgbXkgcGxhbiBvZiBtb3ZpbmcKPj4+Pj4gICAgICAgICAgIHRo ZSBmZW5jZXMgdG8KPj4+Pj4gICAgICAgICAgID4gPiB0cmFuc2l0aW9uIGJvdW5kYXJpZXMuCj4+ Pj4+ICAgICAgICAgICA+ID4KPj4+Pj4gICAgICAgICAgID4gPiBOb3Qgc3VyZSB3aGVyZSB0aGF0 IGxlYXZlcyB1cy4KPj4+Pj4gICAgICAgICAgID4KPj4+Pj4gICAgICAgICAgID4gSG9uZXN0bHkg dGhlIG1vcmUgSSBsb29rIGF0IHRoaW5ncyBJIHRoaW5rCj4+Pj4+ICAgICAgICAgICB1c2Vyc3Bh Y2Utc2lnbmFsYWJsZSBmZW5jZXMKPj4+Pj4gICAgICAgICAgID4gd2l0aCBhIHRpbWVvdXQgc291 bmQgbGlrZSB0aGV5IGFyZSBhIHZhbGlkIHNvbHV0aW9uIGZvcgo+Pj4+PiAgICAgICAgICAgdGhl c2UgaXNzdWVzLgo+Pj4+PiAgICAgICAgICAgPiBFc3BlY2lhbGx5IHNpbmNlIChhcyBoYXMgYmVl biBtZW50aW9uZWQgY291bnRsZXNzIHRpbWVzIGluCj4+Pj4+ICAgICAgICAgICB0aGlzIGVtYWls Cj4+Pj4+ICAgICAgICAgICA+IHRocmVhZCkgdXNlcnNwYWNlIGFscmVhZHkgaGFzIGEgbG90IG9m IHdheXMgdG8gY2F1c2UKPj4+Pj4gICAgICAgICAgIHRpbWVvdXRzIGFuZCBvcgo+Pj4+PiAgICAg ICAgICAgPiBHUFUgaGFuZ3MgdGhyb3VnaCBHUFUgd29yayBhbHJlYWR5Lgo+Pj4+PiAgICAgICAg ICAgPgo+Pj4+PiAgICAgICAgICAgPiBBZGRpbmcgYSB0aW1lb3V0IG9uIHRoZSBzaWduYWxpbmcg c2lkZSBvZiBhIGRtYV9mZW5jZSB3b3VsZAo+Pj4+PiAgICAgICAgICAgZW5zdXJlOgo+Pj4+PiAg ICAgICAgICAgPgo+Pj4+PiAgICAgICAgICAgPiAtIFRoZSBkbWFfZmVuY2Ugc2lnbmFscyBpbiBm aW5pdGUgdGltZQo+Pj4+PiAgICAgICAgICAgPiAtICBJZiB0aGUgdGltZW91dCBjYXNlIGRvZXMg bm90IGFsbG9jYXRlIG1lbW9yeSB0aGVuIG1lbW9yeQo+Pj4+PiAgICAgICAgICAgYWxsb2NhdGlv bgo+Pj4+PiAgICAgICAgICAgPiBpcyBub3QgYSBibG9ja2VyIGZvciBzaWduYWxpbmcuCj4+Pj4+ ICAgICAgICAgICA+Cj4+Pj4+ICAgICAgICAgICA+IE9mIGNvdXJzZSB5b3UgbG9zZSB0aGUgZnVs bCBkZXBlbmRlbmN5IGdyYXBoIGFuZCB3ZSBuZWVkIHRvCj4+Pj4+ICAgICAgICAgICBtYWtlIHN1 cmUKPj4+Pj4gICAgICAgICAgID4gZ2FyYmFnZSBjb2xsZWN0aW9uIG9mIGZlbmNlcyB3b3JrcyBj b3JyZWN0bHkgd2hlbiB3ZSBoYXZlCj4+Pj4+ICAgICAgICAgICBjeWNsZXMuCj4+Pj4+ICAgICAg ICAgICA+IEhvd2V2ZXIsIHRoZSBsYXR0ZXIgc291bmRzIHZlcnkgZG9hYmxlIGFuZCB0aGUgZmly c3Qgc291bmRzCj4+Pj4+ICAgICAgICAgICBsaWtlIGl0IGlzCj4+Pj4+ICAgICAgICAgICA+IHRv IHNvbWUgZXh0ZW50IGluZXZpdGFibGUuCj4+Pj4+ICAgICAgICAgICA+Cj4+Pj4+ICAgICAgICAg ICA+IEkgZmVlbCBsaWtlIEknbSBtaXNzaW5nIHNvbWUgcmVxdWlyZW1lbnQgaGVyZSBnaXZlbiB0 aGF0IHdlCj4+Pj4+ICAgICAgICAgICA+IGltbWVkaWF0ZWx5IHdlbnQgdG8gbXVjaCBtb3JlIGNv bXBsaWNhdGVkIHRoaW5ncyBidXQgY2FuJ3QKPj4+Pj4gICAgICAgICAgIGZpbmQgaXQuCj4+Pj4+ ICAgICAgICAgICA+IFRob3VnaHRzPwo+Pj4+Pgo+Pj4+PiAgICAgICAgICAgVGltZW91dHMgYXJl IHN1ZmZpY2llbnQgdG8gcHJvdGVjdCB0aGUga2VybmVsIGJ1dCB0aGV5IG1ha2UKPj4+Pj4gICAg ICAgICAgIHRoZSBmZW5jZXMKPj4+Pj4gICAgICAgICAgIHVucHJlZGljdGFibGUgYW5kIHVucmVs aWFibGUgZnJvbSBhIHVzZXJzcGFjZSBQb1YuICBPbmUgb2YgdGhlIGJpZwo+Pj4+PiAgICAgICAg ICAgcHJvYmxlbXMgd2UgZmFjZSBpcyB0aGF0LCBvbmNlIHdlIGV4cG9zZSBhIGRtYV9mZW5jZSB0 byB1c2Vyc3BhY2UsCj4+Pj4+ICAgICAgICAgICB3ZSd2ZSBhbGxvd2VkIGZvciBzb21lIHByZXR0 eSBjcmF6eSBwb3RlbnRpYWwgZGVwZW5kZW5jaWVzIHRoYXQKPj4+Pj4gICAgICAgICAgIG5laXRo ZXIgdXNlcnNwYWNlIG5vciB0aGUga2VybmVsIGNhbiBzb3J0IG91dC4gIFNheSB5b3UgaGF2ZQo+ Pj4+PiAgICAgICAgICAgbWFyZWsncwo+Pj4+PiAgICAgICAgICAgIm5leHQgc2VyaWFsLCBwbGVh c2UiIHByb3Bvc2FsIGFuZCBhIG11bHRpLXRocmVhZGVkIGFwcGxpY2F0aW9uLgo+Pj4+PiAgICAg ICAgICAgQmV0d2VlbiB0aW1lIHRpbWUgeW91IGFzayB0aGUga2VybmVsIGZvciBhIHNlcmlhbCBh bmQgZ2V0IGEKPj4+Pj4gICAgICAgICAgIGRtYV9mZW5jZQo+Pj4+PiAgICAgICAgICAgYW5kIHN1 Ym1pdCB0aGUgd29yayB0byBzaWduYWwgdGhhdCBzZXJpYWwsIHlvdXIgcHJvY2VzcyBtYXkgZ2V0 Cj4+Pj4+ICAgICAgICAgICBwcmVlbXB0ZWQsIHNvbWV0aGluZyBlbHNlIHNob3ZlZCBpbiB3aGlj aCBhbGxvY2F0ZXMgbWVtb3J5LAo+Pj4+PiAgICAgICAgICAgYW5kIHRoZW4KPj4+Pj4gICAgICAg ICAgIHdlIGVuZCB1cCBibG9ja2luZyBvbiB0aGF0IGRtYV9mZW5jZS4gIFRoZXJlJ3Mgbm8gd2F5 Cj4+Pj4+ICAgICAgICAgICB1c2Vyc3BhY2UgY2FuCj4+Pj4+ICAgICAgICAgICBwcmVkaWN0IGFu ZCBkZWZlbmQgaXRzZWxmIGZyb20gdGhhdC4KPj4+Pj4KPj4+Pj4gICAgICAgICAgIFNvIEkgdGhp bmsgd2hlcmUgdGhhdCBsZWF2ZXMgdXMgaXMgdGhhdCB0aGVyZSBpcyBubyBzYWZlIHBsYWNlIHRv Cj4+Pj4+ICAgICAgICAgICBjcmVhdGUgYSBkbWFfZmVuY2UgZXhjZXB0IGZvciBpbnNpZGUgdGhl IGlvY3RsIHdoaWNoIHN1Ym1pdHMKPj4+Pj4gICAgICAgICAgIHRoZSB3b3JrCj4+Pj4+ICAgICAg ICAgICBhbmQgb25seSBhZnRlciBhbnkgbmVjZXNzYXJ5IG1lbW9yeSBoYXMgYmVlbiBhbGxvY2F0 ZWQuIFRoYXQncyBhCj4+Pj4+ICAgICAgICAgICBwcmV0dHkgc3RpZmYgcmVxdWlyZW1lbnQuICBX ZSBtYXkgc3RpbGwgYmUgYWJsZSB0byBpbnRlcmFjdCB3aXRoCj4+Pj4+ICAgICAgICAgICB1c2Vy c3BhY2UgYSBiaXQgbW9yZSBleHBsaWNpdGx5IGJ1dCBJIHRoaW5rIGl0IHRocm93cyBhbnkKPj4+ Pj4gICAgICAgICAgIG5vdGlvbiBvZgo+Pj4+PiAgICAgICAgICAgdXNlcnNwYWNlIGRpcmVjdCBz dWJtaXQgb3V0IHRoZSB3aW5kb3cuCj4+Pj4+Cj4+Pj4+ICAgICAgICAgICAtLUphc29uCj4+Pj4+ Cj4+Pj4+Cj4+Pj4+ICAgICAgICAgICA+IC0gQmFzCj4+Pj4+ICAgICAgICAgICA+ID4KPj4+Pj4g ICAgICAgICAgID4gPiAtLUphc29uCj4+Pj4+ICAgICAgICAgICA+ID4KPj4+Pj4gICAgICAgICAg ID4gPiBPbiBNb24sIE1heSAzLCAyMDIxIGF0IDk6NDIgQU0gQWxleCBEZXVjaGVyCj4+Pj4+ICAg ICAgICAgICA8YWxleGRldWNoZXJAZ21haWwuY29tIDxtYWlsdG86YWxleGRldWNoZXJAZ21haWwu Y29tPj4gd3JvdGU6Cj4+Pj4+ICAgICAgICAgICA+ID4gPgo+Pj4+PiAgICAgICAgICAgPiA+ID4g T24gU2F0LCBNYXkgMSwgMjAyMSBhdCA2OjI3IFBNIE1hcmVrIE9sxaHDoWsKPj4+Pj4gICAgICAg ICAgIDxtYXJhZW9AZ21haWwuY29tIDxtYWlsdG86bWFyYWVvQGdtYWlsLmNvbT4+IHdyb3RlOgo+ Pj4+PiAgICAgICAgICAgPiA+ID4gPgo+Pj4+PiAgICAgICAgICAgPiA+ID4gPiBPbiBXZWQsIEFw ciAyOCwgMjAyMSBhdCA1OjA3IEFNIE1pY2hlbCBEw6RuemVyCj4+Pj4+ICAgICAgICAgICA8bWlj aGVsQGRhZW56ZXIubmV0IDxtYWlsdG86bWljaGVsQGRhZW56ZXIubmV0Pj4gd3JvdGU6Cj4+Pj4+ ICAgICAgICAgICA+ID4gPiA+Pgo+Pj4+PiAgICAgICAgICAgPiA+ID4gPj4gT24gMjAyMS0wNC0y OCA4OjU5IGEubS4sIENocmlzdGlhbiBLw7ZuaWcgd3JvdGU6Cj4+Pj4+ICAgICAgICAgICA+ID4g PiA+PiA+IEhpIERhdmUsCj4+Pj4+ICAgICAgICAgICA+ID4gPiA+PiA+Cj4+Pj4+ICAgICAgICAg ICA+ID4gPiA+PiA+IEFtIDI3LjA0LjIxIHVtIDIxOjIzIHNjaHJpZWIgTWFyZWsgT2zFocOhazoK Pj4+Pj4gICAgICAgICAgID4gPiA+ID4+ID4+IFN1cHBvcnRpbmcgaW50ZXJvcCB3aXRoIGFueSBk ZXZpY2UgaXMgYWx3YXlzCj4+Pj4+ICAgICAgICAgICBwb3NzaWJsZS4gSXQgZGVwZW5kcyBvbiB3 aGljaCBkcml2ZXJzIHdlIG5lZWQgdG8gaW50ZXJvcGVyYXRlCj4+Pj4+ICAgICAgICAgICB3aXRo IGFuZCB1cGRhdGUgdGhlbS4gV2UndmUgYWxyZWFkeSBmb3VuZCB0aGUgcGF0aCBmb3J3YXJkIGZv cgo+Pj4+PiAgICAgICAgICAgYW1kZ3B1LiBXZSBqdXN0IG5lZWQgdG8gZmluZCBvdXQgaG93IG1h bnkgb3RoZXIgZHJpdmVycyBuZWVkCj4+Pj4+ICAgICAgICAgICB0byBiZSB1cGRhdGVkIGFuZCBl dmFsdWF0ZSB0aGUgY29zdC9iZW5lZml0IGFzcGVjdC4KPj4+Pj4gICAgICAgICAgID4gPiA+ID4+ ID4+Cj4+Pj4+ICAgICAgICAgICA+ID4gPiA+PiA+PiBNYXJlawo+Pj4+PiAgICAgICAgICAgPiA+ ID4gPj4gPj4KPj4+Pj4gICAgICAgICAgID4gPiA+ID4+ID4+IE9uIFR1ZSwgQXByIDI3LCAyMDIx IGF0IDI6MzggUE0gRGF2ZSBBaXJsaWUKPj4+Pj4gICAgICAgICAgIDxhaXJsaWVkQGdtYWlsLmNv bSA8bWFpbHRvOmFpcmxpZWRAZ21haWwuY29tPgo+Pj4+PiAgICAgICAgICAgPG1haWx0bzphaXJs aWVkQGdtYWlsLmNvbSA8bWFpbHRvOmFpcmxpZWRAZ21haWwuY29tPj4+IHdyb3RlOgo+Pj4+PiAg ICAgICAgICAgPiA+ID4gPj4gPj4KPj4+Pj4gICAgICAgICAgID4gPiA+ID4+ID4+ICAgICBPbiBU dWUsIDI3IEFwciAyMDIxIGF0IDIyOjA2LCBDaHJpc3RpYW4gS8O2bmlnCj4+Pj4+ICAgICAgICAg ICA+ID4gPiA+PiA+PiAgICAgPGNrb2VuaWcubGVpY2h0enVtZXJrZW5AZ21haWwuY29tCj4+Pj4+ ICAgICAgICAgICA8bWFpbHRvOmNrb2VuaWcubGVpY2h0enVtZXJrZW5AZ21haWwuY29tPgo+Pj4+ PiAgICAgICAgICAgPG1haWx0bzpja29lbmlnLmxlaWNodHp1bWVya2VuQGdtYWlsLmNvbQo+Pj4+ PiAgICAgICAgICAgPG1haWx0bzpja29lbmlnLmxlaWNodHp1bWVya2VuQGdtYWlsLmNvbT4+PiB3 cm90ZToKPj4+Pj4gICAgICAgICAgID4gPiA+ID4+ID4+ICAgICA+Cj4+Pj4+ICAgICAgICAgICA+ ID4gPiA+PiA+PiAgICAgPiBDb3JyZWN0LCB3ZSB3b3VsZG4ndCBoYXZlIHN5bmNocm9uaXphdGlv bgo+Pj4+PiAgICAgICAgICAgYmV0d2VlbiBkZXZpY2Ugd2l0aCBhbmQgd2l0aG91dCB1c2VyIHF1 ZXVlcyBhbnkgbW9yZS4KPj4+Pj4gICAgICAgICAgID4gPiA+ID4+ID4+ICAgICA+Cj4+Pj4+ICAg ICAgICAgICA+ID4gPiA+PiA+PiAgICAgPiBUaGF0IGNvdWxkIG9ubHkgYmUgYSBwcm9ibGVtIGZv ciBBK0kgTGFwdG9wcy4KPj4+Pj4gICAgICAgICAgID4gPiA+ID4+ID4+Cj4+Pj4+ICAgICAgICAg ICA+ID4gPiA+PiA+PiAgICAgU2luY2UgSSB0aGluayB5b3UgbWVudGlvbmVkIHlvdSdkIG9ubHkg YmUKPj4+Pj4gICAgICAgICAgIGVuYWJsaW5nIHRoaXMgb24gbmV3ZXIKPj4+Pj4gICAgICAgICAg ID4gPiA+ID4+ID4+ICAgICBjaGlwc2V0cywgd29uJ3QgaXQgYmUgYSBwcm9ibGVtIGZvciBBK0Eg d2hlcmUKPj4+Pj4gICAgICAgICAgIG9uZSBBIGlzIGEgZ2VuZXJhdGlvbgo+Pj4+PiAgICAgICAg ICAgPiA+ID4gPj4gPj4gICAgIGJlaGluZCB0aGUgb3RoZXI/Cj4+Pj4+ICAgICAgICAgICA+ID4g PiA+PiA+Pgo+Pj4+PiAgICAgICAgICAgPiA+ID4gPj4gPgo+Pj4+PiAgICAgICAgICAgPiA+ID4g Pj4gPiBDcmFwLCB0aGF0IGlzIGEgZ29vZCBwb2ludCBhcyB3ZWxsLgo+Pj4+PiAgICAgICAgICAg PiA+ID4gPj4gPgo+Pj4+PiAgICAgICAgICAgPiA+ID4gPj4gPj4KPj4+Pj4gICAgICAgICAgID4g PiA+ID4+ID4+ICAgICBJJ20gbm90IHJlYWxseSBsaWtpbmcgd2hlcmUgdGhpcyBpcyBnb2luZyBi dHcsCj4+Pj4+ICAgICAgICAgICBzZWVtcyBsaWtlIGEgaWxsCj4+Pj4+ICAgICAgICAgICA+ID4g PiA+PiA+PiAgICAgdGhvdWdodCBvdXQgY29uY2VwdCwgaWYgQU1EIGlzIHJlYWxseSBnb2luZwo+ Pj4+PiAgICAgICAgICAgZG93biB0aGUgcm9hZCBvZiBkZXNpZ25pbmcKPj4+Pj4gICAgICAgICAg ID4gPiA+ID4+ID4+ICAgICBodyB0aGF0IGlzIGN1cnJlbnRseSBMaW51eCBpbmNvbXBhdGlibGUs IHlvdQo+Pj4+PiAgICAgICAgICAgYXJlIGdvaW5nIHRvIGhhdmUgdG8KPj4+Pj4gICAgICAgICAg ID4gPiA+ID4+ID4+ICAgICBhY2NlcHQgYSBiaWcgcGFydCBvZiB0aGUgYnVyZGVuIGluIGJyaW5n aW5nCj4+Pj4+ICAgICAgICAgICB0aGlzIHN1cHBvcnQgaW4gdG8gbW9yZQo+Pj4+PiAgICAgICAg ICAgPiA+ID4gPj4gPj4gICAgIHRoYW4ganVzdCBhbWQgZHJpdmVycyBmb3IgdXBjb21pbmcgZ2Vu ZXJhdGlvbnMKPj4+Pj4gICAgICAgICAgIG9mIGdwdS4KPj4+Pj4gICAgICAgICAgID4gPiA+ID4+ ID4+Cj4+Pj4+ICAgICAgICAgICA+ID4gPiA+PiA+Cj4+Pj4+ICAgICAgICAgICA+ID4gPiA+PiA+ IFdlbGwgd2UgZG9uJ3QgcmVhbGx5IGxpa2UgdGhhdCBlaXRoZXIsIGJ1dCB3ZSBoYXZlCj4+Pj4+ ICAgICAgICAgICBubyBvdGhlciBvcHRpb24gYXMgZmFyIGFzIEkgY2FuIHNlZS4KPj4+Pj4gICAg ICAgICAgID4gPiA+ID4+Cj4+Pj4+ICAgICAgICAgICA+ID4gPiA+PiBJIGRvbid0IHJlYWxseSB1 bmRlcnN0YW5kIHdoYXQgImZ1dHVyZSBodyBtYXkgcmVtb3ZlCj4+Pj4+ICAgICAgICAgICBzdXBw b3J0IGZvciBrZXJuZWwgcXVldWVzIiBtZWFucyBleGFjdGx5LiBXaGlsZSB0aGUKPj4+Pj4gICAg ICAgICAgIHBlci1jb250ZXh0IHF1ZXVlcyBjYW4gYmUgbWFwcGVkIHRvIHVzZXJzcGFjZSBkaXJl Y3RseSwgdGhleQo+Pj4+PiAgICAgICAgICAgZG9uJ3QgKmhhdmUqIHRvIGJlLCBkbyB0aGV5PyBJ LmUuIHRoZSBrZXJuZWwgZHJpdmVyIHNob3VsZCBiZQo+Pj4+PiAgICAgICAgICAgYWJsZSB0byBl aXRoZXIgaW50ZXJjZXB0IHVzZXJzcGFjZSBhY2Nlc3MgdG8gdGhlIHF1ZXVlcywgb3IgaW4KPj4+ Pj4gICAgICAgICAgIHRoZSB3b3JzdCBjYXNlIGRvIGl0IGFsbCBpdHNlbGYsIGFuZCBwcm92aWRl IHRoZSBleGlzdGluZwo+Pj4+PiAgICAgICAgICAgc3luY2hyb25pemF0aW9uIHNlbWFudGljcyBh cyBuZWVkZWQ/Cj4+Pj4+ICAgICAgICAgICA+ID4gPiA+Pgo+Pj4+PiAgICAgICAgICAgPiA+ID4g Pj4gU3VyZWx5IHRoZXJlIGFyZSByZXNvdXJjZSBsaW1pdHMgZm9yIHRoZSBwZXItY29udGV4dAo+ Pj4+PiAgICAgICAgICAgcXVldWVzLCBzbyB0aGUga2VybmVsIGRyaXZlciBuZWVkcyB0byBkbyBz b21lIGtpbmQgb2YKPj4+Pj4gICAgICAgICAgIHZpcnR1YWxpemF0aW9uIC8gbXVsdGktcGxleGlu ZyBhbnl3YXksIG9yIHdlJ2xsIGdldCBzYWQgdXNlcgo+Pj4+PiAgICAgICAgICAgZmFjZXMgd2hl biB0aGVyZSdzIG5vIHF1ZXVlIGF2YWlsYWJsZSBmb3IgPGN1cnJlbnQgaG90IGdhbWU+Lgo+Pj4+ PiAgICAgICAgICAgPiA+ID4gPj4KPj4+Pj4gICAgICAgICAgID4gPiA+ID4+IEknbSBwcm9iYWJs eSBtaXNzaW5nIHNvbWV0aGluZyB0aG91Z2gsIGF3YWl0aW5nCj4+Pj4+ICAgICAgICAgICBlbmxp Z2h0ZW5tZW50LiA6KQo+Pj4+PiAgICAgICAgICAgPiA+ID4gPgo+Pj4+PiAgICAgICAgICAgPiA+ ID4gPgo+Pj4+PiAgICAgICAgICAgPiA+ID4gPiBUaGUgaHcgaW50ZXJmYWNlIGZvciB1c2Vyc3Bh Y2UgaXMgdGhhdCB0aGUgcmluZyBidWZmZXIKPj4+Pj4gICAgICAgICAgIGlzIG1hcHBlZCB0byB0 aGUgcHJvY2VzcyBhZGRyZXNzIHNwYWNlIGFsb25nc2lkZSBhIGRvb3JiZWxsCj4+Pj4+ICAgICAg ICAgICBhcGVydHVyZSAoNEsgcGFnZSkgdGhhdCBpc24ndCByZWFsIG1lbW9yeSwgYnV0IHdoZW4g dGhlIENQVQo+Pj4+PiAgICAgICAgICAgd3JpdGVzIGludG8gaXQsIGl0IHRlbGxzIHRoZSBodyBz Y2hlZHVsZXIgdGhhdCB0aGVyZSBhcmUgbmV3Cj4+Pj4+ICAgICAgICAgICBHUFUgY29tbWFuZHMg aW4gdGhlIHJpbmcgYnVmZmVyLiBVc2Vyc3BhY2UgaW5zZXJ0cyBhbGwgdGhlCj4+Pj4+ICAgICAg ICAgICB3YWl0LCBkcmF3LCBhbmQgc2lnbmFsIGNvbW1hbmRzIGludG8gdGhlIHJpbmcgYnVmZmVy IGFuZCB0aGVuCj4+Pj4+ICAgICAgICAgICAicmluZ3MiIHRoZSBkb29yYmVsbC4gSXQncyBteSB1 bmRlcnN0YW5kaW5nIHRoYXQgdGhlIHJpbmcKPj4+Pj4gICAgICAgICAgIGJ1ZmZlciBhbmQgdGhl IGRvb3JiZWxsIGFyZSBhbHdheXMgbWFwcGVkIGluIHRoZSBzYW1lIEdQVQo+Pj4+PiAgICAgICAg ICAgYWRkcmVzcyBzcGFjZSBhcyB0aGUgcHJvY2Vzcywgd2hpY2ggbWFrZXMgaXQgdmVyeSBkaWZm aWN1bHQgdG8KPj4+Pj4gICAgICAgICAgIGVtdWxhdGUgdGhlIGN1cnJlbnQgcHJvdGVjdGVkIHJp bmcgYnVmZmVycyBpbiB0aGUga2VybmVsLiBUaGUKPj4+Pj4gICAgICAgICAgIFZNSUQgb2YgdGhl IHJpbmcgYnVmZmVyIGlzIGFsc28gbm90IGNoYW5nZWFibGUuCj4+Pj4+ICAgICAgICAgICA+ID4g PiA+Cj4+Pj4+ICAgICAgICAgICA+ID4gPgo+Pj4+PiAgICAgICAgICAgPiA+ID4gVGhlIGRvb3Ji ZWxsIGRvZXMgbm90IGhhdmUgdG8gYmUgbWFwcGVkIGludG8gdGhlCj4+Pj4+ICAgICAgICAgICBw cm9jZXNzJ3MgR1BVIHZpcnR1YWwKPj4+Pj4gICAgICAgICAgID4gPiA+IGFkZHJlc3Mgc3BhY2Uu ICBUaGUgQ1BVIGNvdWxkIHdyaXRlIHRvIGl0IGRpcmVjdGx5Lgo+Pj4+PiAgICAgICAgICAgTWFw cGluZyBpdCBpbnRvCj4+Pj4+ICAgICAgICAgICA+ID4gPiB0aGUgR1BVJ3MgdmlydHVhbCBhZGRy ZXNzIHNwYWNlIHdvdWxkIGFsbG93IHlvdSB0byBoYXZlCj4+Pj4+ICAgICAgICAgICBhIGRldmlj ZSBraWNrCj4+Pj4+ICAgICAgICAgICA+ID4gPiBvZmYgd29yayBob3dldmVyIHJhdGhlciB0aGFu IHRoZSBDUFUuIEUuZy4sIHRoZSBHUFUKPj4+Pj4gICAgICAgICAgIGNvdWxkIGtpY2sgb2ZmCj4+ Pj4+ICAgICAgICAgICA+ID4gPiBpdCdzIG93biB3b3JrIG9yIG11bHRpcGxlIGRldmljZXMgY291 bGQga2ljayBvZmYgd29yawo+Pj4+PiAgICAgICAgICAgd2l0aG91dCBDUFUKPj4+Pj4gICAgICAg ICAgID4gPiA+IGludm9sdmVtZW50Lgo+Pj4+PiAgICAgICAgICAgPiA+ID4KPj4+Pj4gICAgICAg ICAgID4gPiA+IEFsZXgKPj4+Pj4gICAgICAgICAgID4gPiA+Cj4+Pj4+ICAgICAgICAgICA+ID4g Pgo+Pj4+PiAgICAgICAgICAgPiA+ID4gPiBUaGUgaHcgc2NoZWR1bGVyIGRvZXNuJ3QgZG8gYW55 IHN5bmNocm9uaXphdGlvbiBhbmQgaXQKPj4+Pj4gICAgICAgICAgIGRvZXNuJ3Qgc2VlIGFueSBk ZXBlbmRlbmNpZXMuIEl0IG9ubHkgY2hvb3NlcyB3aGljaCBxdWV1ZSB0bwo+Pj4+PiAgICAgICAg ICAgZXhlY3V0ZSwgc28gaXQncyByZWFsbHkganVzdCBhIHNpbXBsZSBxdWV1ZSBtYW5hZ2VyIGhh bmRsaW5nCj4+Pj4+ICAgICAgICAgICB0aGUgdmlydHVhbGl6YXRpb24gYXNwZWN0IGFuZCBub3Qg bXVjaCBlbHNlLgo+Pj4+PiAgICAgICAgICAgPiA+ID4gPgo+Pj4+PiAgICAgICAgICAgPiA+ID4g PiBNYXJlawo+Pj4+PiAgICAgICAgICAgPiA+ID4gPiBfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwo+Pj4+PiAgICAgICAgICAgPiA+ID4gPiBkcmktZGV2ZWwg bWFpbGluZyBsaXN0Cj4+Pj4+ICAgICAgICAgICA+ID4gPiA+IGRyaS1kZXZlbEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKPj4+Pj4gICAgICAgICAgIDxtYWlsdG86ZHJpLWRldmVsQGxpc3RzLmZyZWVk ZXNrdG9wLm9yZz4KPj4+Pj4gICAgICAgICAgID4gPiA+ID4KPj4+Pj4gICAgICAgICAgIGh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCj4+Pj4+ ICAgICAgICAgICA8aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9kcmktZGV2ZWw+Cj4+Pj4+ICAgICAgICAgICA+ID4gPiBfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwo+Pj4+PiAgICAgICAgICAgPiA+ID4gbWVzYS1kZXYg bWFpbGluZyBsaXN0Cj4+Pj4+ICAgICAgICAgICA+ID4gPiBtZXNhLWRldkBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKPj4+Pj4gICAgICAgICAgIDxtYWlsdG86bWVzYS1kZXZAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnPgo+Pj4+PiAgICAgICAgICAgPiA+ID4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9tZXNhLWRldgo+Pj4+PiAgICAgICAgICAgPGh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vbWVzYS1kZXY+Cj4+Pj4+ICAgICAg ICAgICA+ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K Pj4+Pj4gICAgICAgICAgID4gPiBkcmktZGV2ZWwgbWFpbGluZyBsaXN0Cj4+Pj4+ICAgICAgICAg ICA+ID4gZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+Pj4+PiAgICAgICAgICAgPG1h aWx0bzpkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnPgo+Pj4+PiAgICAgICAgICAgPiA+ IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs Cj4+Pj4+ICAgICAgICAgICA8aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9kcmktZGV2ZWw+Cj4+Pj4+Cj4+Pj4gX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KPj4+PiBkcmktZGV2ZWwgbWFpbGluZyBsaXN0Cj4+Pj4gZHJp LWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+Pj4+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCj4KCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRl dmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=