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=-1.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,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 AEFF8C2BCA1 for ; Fri, 7 Jun 2019 14:44:08 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 5571C2083D for ; Fri, 7 Jun 2019 14:44:08 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=ffwll.ch header.i=@ffwll.ch header.b="hkUGAWYi" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729116AbfFGOoH (ORCPT ); Fri, 7 Jun 2019 10:44:07 -0400 Received: from mail-oi1-f193.google.com ([209.85.167.193]:45840 "EHLO mail-oi1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728252AbfFGOoH (ORCPT ); Fri, 7 Jun 2019 10:44:07 -0400 Received: by mail-oi1-f193.google.com with SMTP id m206so1580084oib.12 for ; Fri, 07 Jun 2019 07:44:06 -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; bh=8/YG1pNvMhtPq+4D/wbH72srnMWO5h0vGaK5D7ISjxM=; b=hkUGAWYiwktyF8XAUCRFTlr4xI1gbzfNuHnL0ZqV5wgdQRoVHoHBe17OW7ICbSF8+G S3ubc5pB3To8JxlIx+K78TmL0YjqIkQ3qYe2A3H9VFxJ79fYxq/GFKTijf7DCWWHkw9/ EbaBsS2uMISNW1W4S9xao+K8J0akEMyZ/HaMU= 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; bh=8/YG1pNvMhtPq+4D/wbH72srnMWO5h0vGaK5D7ISjxM=; b=ieE3eSQU0RcJXvM1BR3UW1BCEZKecqajjsK+WdeVyRpX2hSYQ5pziN/L0wQYy/Q74n ZfGVWon7oIr7WuwYoCymYvYt/8c2pO1+nL4bbJ2c3PWfr7WAsNVE+Q4Rr3qm+AvNMQs3 HANvhVZpcNHdKZuA06/rDX0AaDayrmTntlIH4TAjtIk4LTLm9Qd+cGCiWZqV415DSPpZ Vu7Nf29RUCH5mfRSG+wXz2Kh5G6hb8eCUKu7uxU66j8wBB/q/4eepFWDKknES/CT5iKQ I+Z4/11k6kbtc7d3p7gbeSnrmd/CZ/0FuIRU9cB4BnLNlmyArc3Okpbq/xYMyvo2kI2F WHXw== X-Gm-Message-State: APjAAAXuCUMNcKlcVtsbPAeTtHvayp9A/JD7L4S7qHVAtHr4Q9flk/50 JwqqIlk6u6dB3bSPFtm/0VukPOOTtJ73idGJ+CBh2A== X-Google-Smtp-Source: APXvYqyWzzjaSAsBe1eXBlUeemEQQMcPTFSvrjgyAA6IyzSW6eAQ89KOXjY91ifZBRMzVd+/veIXrDJHvZ3uiLJsYls= X-Received: by 2002:aca:62c2:: with SMTP id w185mr4176522oib.110.1559918646230; Fri, 07 Jun 2019 07:44:06 -0700 (PDT) MIME-Version: 1.0 References: <20190528090304.9388-1-daniel.vetter@ffwll.ch> In-Reply-To: From: Daniel Vetter Date: Fri, 7 Jun 2019 16:43:54 +0200 Message-ID: Subject: Re: [PATCH 00/33] fbcon notifier begone v3! To: Bartlomiej Zolnierkiewicz Cc: LKML , DRI Development , Intel Graphics Development , Linux Fbdev development list , Daniel Thompson Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Jun 7, 2019 at 12:07 PM Bartlomiej Zolnierkiewicz wrote: > > > On 6/6/19 9:38 AM, Daniel Vetter wrote: > > Hi Bart, > > Hi Daniel, > > > On Tue, May 28, 2019 at 11:02:31AM +0200, Daniel Vetter wrote: > >> Hi all, > >> > >> I think we're slowly getting there. Previous cover letters with more > >> context: > >> > >> https://lists.freedesktop.org/archives/dri-devel/2019-May/218362.html > >> > >> tldr; I have a multi-year plan to improve fbcon locking, because the > >> current thing is a bit a mess. > >> > >> Cover letter of this version, where I detail a bit more the details > >> fixed in this one here: > >> > >> https://lists.freedesktop.org/archives/dri-devel/2019-May/218984.html > >> > >> Note that the locking plan in this one is already outdated, I overlooked a > >> few fun issues around any printk() going back to console_lock. > >> > >> I think remaining bits: > >> > >> - Ack from Daniel Thompson for the backlight bits, he wanted to check the > >> big picture. > > > > I think Daniel is still on vacation until next week or so. > > > >> - Hash out actual merge plan. > > > > I'd like to stuff this into drm.git somehow, I guess topic branch works > > too. > > I would like to have topic branch for this patchset. Do you plan to prep that, or should I? Doesn't really matter to me, and assuming Daniel Thompson doesn't have any last minute concerns should still be enough time to get it all sorted and have a few weeks of testing left before the merge window. > > Long term I think we need to reconsider how we handle fbdev, at least the > > core/fbcon pieces. Since a few years all the work in that area has been > > motivated by drm, and pushed by drm contributors. Having that maintained > > in a separate tree that doesn't regularly integrate imo doesn't make much > > sense, and we ended up merging almost everything through some drm tree. > > That one time we didn't (for some panel rotation stuff) it resulted in > > some good suprises. > > > > I think best solution is if we put the core and fbcon bits into drm-misc, > > as group maintained infrastructure piece. All the other gfx infra pieces > > are maintained in there already too. You'd obviously get commit rights. > > I think that would include > > - drivers/video/fbdev > > - drivers/video/*c > > - drivers/video/console > > Sounds fine to me. > > > I don't really care about what happens with the actual fbdev drivers > > (aside from the drm one in drm_fb_helper.c, but that's already maintained > > as part of drm). I guess we could also put those into drm-misc, or as a > > separate tree, depending what you want. > > > > Thoughts? > > I would like to handle fbdev changes for v5.3 merge window using fbdev > tree but after that everything (including changes to fbdev drivers) can go > through drm-misc tree. Fully agreed, no need to rush anything here. For the drm-misc account you need to request an SSH legacy account here by filing a issue: https://gitlab.freedesktop.org/freedesktop/freedesktop/issues/new Select the "New SSH account" template, it has instructions with everything that's needed. For the getting started howto, see https://drm.pages.freedesktop.org/maintainer-tools/getting-started.html If that all looks good and you're set up I think best to test-drive the entire process with the MAINTAINERS patch to change the git repo for 5.4. Cheers, Daniel > Best regards, > -- > Bartlomiej Zolnierkiewicz > Samsung R&D Institute Poland > Samsung Electronics > > > Cheers, Daniel > > > > > >> > >> I'm also cc'ing the entire pile to a lot more people on request. > >> > >> Thanks, Daniel > >> > >> Daniel Vetter (33): > >> dummycon: Sprinkle locking checks > >> fbdev: locking check for fb_set_suspend > >> vt: might_sleep() annotation for do_blank_screen > >> vt: More locking checks > >> fbdev/sa1100fb: Remove dead code > >> fbdev/cyber2000: Remove struct display > >> fbdev/aty128fb: Remove dead code > >> fbcon: s/struct display/struct fbcon_display/ > >> fbcon: Remove fbcon_has_exited > >> fbcon: call fbcon_fb_(un)registered directly > >> fbdev/sh_mobile: remove sh_mobile_lcdc_display_notify > >> fbdev/omap: sysfs files can't disappear before the device is gone > >> fbdev: sysfs files can't disappear before the device is gone > >> staging/olpc: lock_fb_info can't fail > >> fbdev/atyfb: lock_fb_info can't fail > >> fbdev: lock_fb_info cannot fail > >> fbcon: call fbcon_fb_bind directly > >> fbdev: make unregister/unlink functions not fail > >> fbdev: unify unlink_framebuffer paths > >> fbdev/sh_mob: Remove fb notifier callback > >> fbdev: directly call fbcon_suspended/resumed > >> fbcon: Call fbcon_mode_deleted/new_modelist directly > >> fbdev: Call fbcon_get_requirement directly > >> Revert "backlight/fbcon: Add FB_EVENT_CONBLANK" > >> fbmem: pull fbcon_fb_blanked out of fb_blank > >> fbdev: remove FBINFO_MISC_USEREVENT around fb_blank > >> fb: Flatten control flow in fb_set_var > >> fbcon: replace FB_EVENT_MODE_CHANGE/_ALL with direct calls > >> vgaswitcheroo: call fbcon_remap_all directly > >> fbcon: Call con2fb_map functions directly > >> fbcon: Document what I learned about fbcon locking > >> staging/olpc_dcon: Add drm conversion to TODO > >> backlight: simplify lcd notifier > >> > >> arch/arm/mach-pxa/am200epd.c | 13 +- > >> drivers/gpu/vga/vga_switcheroo.c | 11 +- > >> drivers/media/pci/ivtv/ivtvfb.c | 6 +- > >> drivers/staging/fbtft/fbtft-core.c | 4 +- > >> drivers/staging/olpc_dcon/TODO | 7 + > >> drivers/staging/olpc_dcon/olpc_dcon.c | 6 +- > >> drivers/tty/vt/vt.c | 18 + > >> drivers/video/backlight/backlight.c | 2 +- > >> drivers/video/backlight/lcd.c | 12 - > >> drivers/video/console/dummycon.c | 6 + > >> drivers/video/fbdev/aty/aty128fb.c | 64 --- > >> drivers/video/fbdev/aty/atyfb_base.c | 3 +- > >> drivers/video/fbdev/core/fbcmap.c | 6 +- > >> drivers/video/fbdev/core/fbcon.c | 313 ++++++-------- > >> drivers/video/fbdev/core/fbcon.h | 6 +- > >> drivers/video/fbdev/core/fbmem.c | 399 +++++++----------- > >> drivers/video/fbdev/core/fbsysfs.c | 20 +- > >> drivers/video/fbdev/cyber2000fb.c | 1 - > >> drivers/video/fbdev/neofb.c | 9 +- > >> .../video/fbdev/omap2/omapfb/omapfb-sysfs.c | 21 +- > >> drivers/video/fbdev/sa1100fb.c | 25 -- > >> drivers/video/fbdev/savage/savagefb_driver.c | 9 +- > >> drivers/video/fbdev/sh_mobile_lcdcfb.c | 132 +----- > >> drivers/video/fbdev/sh_mobile_lcdcfb.h | 5 - > >> include/linux/console_struct.h | 5 +- > >> include/linux/fb.h | 45 +- > >> include/linux/fbcon.h | 30 ++ > >> 27 files changed, 396 insertions(+), 782 deletions(-) > >> > >> -- > >> 2.20.1 > >> > > > > -- > > Daniel Vetter > > Software Engineer, Intel Corporation > > http://blog.ffwll.ch -- Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Date: Fri, 07 Jun 2019 14:43:54 +0000 Subject: Re: [PATCH 00/33] fbcon notifier begone v3! Message-Id: List-Id: References: <20190528090304.9388-1-daniel.vetter@ffwll.ch> In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: Bartlomiej Zolnierkiewicz Cc: Intel Graphics Development , Daniel Thompson , LKML , DRI Development , Linux Fbdev development list On Fri, Jun 7, 2019 at 12:07 PM Bartlomiej Zolnierkiewicz wrote: > > > On 6/6/19 9:38 AM, Daniel Vetter wrote: > > Hi Bart, > > Hi Daniel, > > > On Tue, May 28, 2019 at 11:02:31AM +0200, Daniel Vetter wrote: > >> Hi all, > >> > >> I think we're slowly getting there. Previous cover letters with more > >> context: > >> > >> https://lists.freedesktop.org/archives/dri-devel/2019-May/218362.html > >> > >> tldr; I have a multi-year plan to improve fbcon locking, because the > >> current thing is a bit a mess. > >> > >> Cover letter of this version, where I detail a bit more the details > >> fixed in this one here: > >> > >> https://lists.freedesktop.org/archives/dri-devel/2019-May/218984.html > >> > >> Note that the locking plan in this one is already outdated, I overlooked a > >> few fun issues around any printk() going back to console_lock. > >> > >> I think remaining bits: > >> > >> - Ack from Daniel Thompson for the backlight bits, he wanted to check the > >> big picture. > > > > I think Daniel is still on vacation until next week or so. > > > >> - Hash out actual merge plan. > > > > I'd like to stuff this into drm.git somehow, I guess topic branch works > > too. > > I would like to have topic branch for this patchset. Do you plan to prep that, or should I? Doesn't really matter to me, and assuming Daniel Thompson doesn't have any last minute concerns should still be enough time to get it all sorted and have a few weeks of testing left before the merge window. > > Long term I think we need to reconsider how we handle fbdev, at least the > > core/fbcon pieces. Since a few years all the work in that area has been > > motivated by drm, and pushed by drm contributors. Having that maintained > > in a separate tree that doesn't regularly integrate imo doesn't make much > > sense, and we ended up merging almost everything through some drm tree. > > That one time we didn't (for some panel rotation stuff) it resulted in > > some good suprises. > > > > I think best solution is if we put the core and fbcon bits into drm-misc, > > as group maintained infrastructure piece. All the other gfx infra pieces > > are maintained in there already too. You'd obviously get commit rights. > > I think that would include > > - drivers/video/fbdev > > - drivers/video/*c > > - drivers/video/console > > Sounds fine to me. > > > I don't really care about what happens with the actual fbdev drivers > > (aside from the drm one in drm_fb_helper.c, but that's already maintained > > as part of drm). I guess we could also put those into drm-misc, or as a > > separate tree, depending what you want. > > > > Thoughts? > > I would like to handle fbdev changes for v5.3 merge window using fbdev > tree but after that everything (including changes to fbdev drivers) can go > through drm-misc tree. Fully agreed, no need to rush anything here. For the drm-misc account you need to request an SSH legacy account here by filing a issue: https://gitlab.freedesktop.org/freedesktop/freedesktop/issues/new Select the "New SSH account" template, it has instructions with everything that's needed. For the getting started howto, see https://drm.pages.freedesktop.org/maintainer-tools/getting-started.html If that all looks good and you're set up I think best to test-drive the entire process with the MAINTAINERS patch to change the git repo for 5.4. Cheers, Daniel > Best regards, > -- > Bartlomiej Zolnierkiewicz > Samsung R&D Institute Poland > Samsung Electronics > > > Cheers, Daniel > > > > > >> > >> I'm also cc'ing the entire pile to a lot more people on request. > >> > >> Thanks, Daniel > >> > >> Daniel Vetter (33): > >> dummycon: Sprinkle locking checks > >> fbdev: locking check for fb_set_suspend > >> vt: might_sleep() annotation for do_blank_screen > >> vt: More locking checks > >> fbdev/sa1100fb: Remove dead code > >> fbdev/cyber2000: Remove struct display > >> fbdev/aty128fb: Remove dead code > >> fbcon: s/struct display/struct fbcon_display/ > >> fbcon: Remove fbcon_has_exited > >> fbcon: call fbcon_fb_(un)registered directly > >> fbdev/sh_mobile: remove sh_mobile_lcdc_display_notify > >> fbdev/omap: sysfs files can't disappear before the device is gone > >> fbdev: sysfs files can't disappear before the device is gone > >> staging/olpc: lock_fb_info can't fail > >> fbdev/atyfb: lock_fb_info can't fail > >> fbdev: lock_fb_info cannot fail > >> fbcon: call fbcon_fb_bind directly > >> fbdev: make unregister/unlink functions not fail > >> fbdev: unify unlink_framebuffer paths > >> fbdev/sh_mob: Remove fb notifier callback > >> fbdev: directly call fbcon_suspended/resumed > >> fbcon: Call fbcon_mode_deleted/new_modelist directly > >> fbdev: Call fbcon_get_requirement directly > >> Revert "backlight/fbcon: Add FB_EVENT_CONBLANK" > >> fbmem: pull fbcon_fb_blanked out of fb_blank > >> fbdev: remove FBINFO_MISC_USEREVENT around fb_blank > >> fb: Flatten control flow in fb_set_var > >> fbcon: replace FB_EVENT_MODE_CHANGE/_ALL with direct calls > >> vgaswitcheroo: call fbcon_remap_all directly > >> fbcon: Call con2fb_map functions directly > >> fbcon: Document what I learned about fbcon locking > >> staging/olpc_dcon: Add drm conversion to TODO > >> backlight: simplify lcd notifier > >> > >> arch/arm/mach-pxa/am200epd.c | 13 +- > >> drivers/gpu/vga/vga_switcheroo.c | 11 +- > >> drivers/media/pci/ivtv/ivtvfb.c | 6 +- > >> drivers/staging/fbtft/fbtft-core.c | 4 +- > >> drivers/staging/olpc_dcon/TODO | 7 + > >> drivers/staging/olpc_dcon/olpc_dcon.c | 6 +- > >> drivers/tty/vt/vt.c | 18 + > >> drivers/video/backlight/backlight.c | 2 +- > >> drivers/video/backlight/lcd.c | 12 - > >> drivers/video/console/dummycon.c | 6 + > >> drivers/video/fbdev/aty/aty128fb.c | 64 --- > >> drivers/video/fbdev/aty/atyfb_base.c | 3 +- > >> drivers/video/fbdev/core/fbcmap.c | 6 +- > >> drivers/video/fbdev/core/fbcon.c | 313 ++++++-------- > >> drivers/video/fbdev/core/fbcon.h | 6 +- > >> drivers/video/fbdev/core/fbmem.c | 399 +++++++----------- > >> drivers/video/fbdev/core/fbsysfs.c | 20 +- > >> drivers/video/fbdev/cyber2000fb.c | 1 - > >> drivers/video/fbdev/neofb.c | 9 +- > >> .../video/fbdev/omap2/omapfb/omapfb-sysfs.c | 21 +- > >> drivers/video/fbdev/sa1100fb.c | 25 -- > >> drivers/video/fbdev/savage/savagefb_driver.c | 9 +- > >> drivers/video/fbdev/sh_mobile_lcdcfb.c | 132 +----- > >> drivers/video/fbdev/sh_mobile_lcdcfb.h | 5 - > >> include/linux/console_struct.h | 5 +- > >> include/linux/fb.h | 45 +- > >> include/linux/fbcon.h | 30 ++ > >> 27 files changed, 396 insertions(+), 782 deletions(-) > >> > >> -- > >> 2.20.1 > >> > > > > -- > > Daniel Vetter > > Software Engineer, Intel Corporation > > http://blog.ffwll.ch -- Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 00/33] fbcon notifier begone v3! Date: Fri, 7 Jun 2019 16:43:54 +0200 Message-ID: References: <20190528090304.9388-1-daniel.vetter@ffwll.ch> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Bartlomiej Zolnierkiewicz Cc: Intel Graphics Development , Daniel Thompson , LKML , DRI Development , Linux Fbdev development list List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBKdW4gNywgMjAxOSBhdCAxMjowNyBQTSBCYXJ0bG9taWVqIFpvbG5pZXJraWV3aWN6 CjxiLnpvbG5pZXJraWVAc2Ftc3VuZy5jb20+IHdyb3RlOgo+Cj4KPiBPbiA2LzYvMTkgOTozOCBB TSwgRGFuaWVsIFZldHRlciB3cm90ZToKPiA+IEhpIEJhcnQsCj4KPiBIaSBEYW5pZWwsCj4KPiA+ IE9uIFR1ZSwgTWF5IDI4LCAyMDE5IGF0IDExOjAyOjMxQU0gKzAyMDAsIERhbmllbCBWZXR0ZXIg d3JvdGU6Cj4gPj4gSGkgYWxsLAo+ID4+Cj4gPj4gSSB0aGluayB3ZSdyZSBzbG93bHkgZ2V0dGlu ZyB0aGVyZS4gUHJldmlvdXMgY292ZXIgbGV0dGVycyB3aXRoIG1vcmUKPiA+PiBjb250ZXh0Ogo+ ID4+Cj4gPj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvYXJjaGl2ZXMvZHJpLWRldmVs LzIwMTktTWF5LzIxODM2Mi5odG1sCj4gPj4KPiA+PiB0bGRyOyBJIGhhdmUgYSBtdWx0aS15ZWFy IHBsYW4gdG8gaW1wcm92ZSBmYmNvbiBsb2NraW5nLCBiZWNhdXNlIHRoZQo+ID4+IGN1cnJlbnQg dGhpbmcgaXMgYSBiaXQgYSBtZXNzLgo+ID4+Cj4gPj4gQ292ZXIgbGV0dGVyIG9mIHRoaXMgdmVy c2lvbiwgd2hlcmUgSSBkZXRhaWwgYSBiaXQgbW9yZSB0aGUgZGV0YWlscwo+ID4+IGZpeGVkIGlu IHRoaXMgb25lIGhlcmU6Cj4gPj4KPiA+PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9h cmNoaXZlcy9kcmktZGV2ZWwvMjAxOS1NYXkvMjE4OTg0Lmh0bWwKPiA+Pgo+ID4+IE5vdGUgdGhh dCB0aGUgbG9ja2luZyBwbGFuIGluIHRoaXMgb25lIGlzIGFscmVhZHkgb3V0ZGF0ZWQsIEkgb3Zl cmxvb2tlZCBhCj4gPj4gZmV3IGZ1biBpc3N1ZXMgYXJvdW5kIGFueSBwcmludGsoKSBnb2luZyBi YWNrIHRvIGNvbnNvbGVfbG9jay4KPiA+Pgo+ID4+IEkgdGhpbmsgcmVtYWluaW5nIGJpdHM6Cj4g Pj4KPiA+PiAtIEFjayBmcm9tIERhbmllbCBUaG9tcHNvbiBmb3IgdGhlIGJhY2tsaWdodCBiaXRz LCBoZSB3YW50ZWQgdG8gY2hlY2sgdGhlCj4gPj4gICBiaWcgcGljdHVyZS4KPiA+Cj4gPiBJIHRo aW5rIERhbmllbCBpcyBzdGlsbCBvbiB2YWNhdGlvbiB1bnRpbCBuZXh0IHdlZWsgb3Igc28uCj4g Pgo+ID4+IC0gSGFzaCBvdXQgYWN0dWFsIG1lcmdlIHBsYW4uCj4gPgo+ID4gSSdkIGxpa2UgdG8g c3R1ZmYgdGhpcyBpbnRvIGRybS5naXQgc29tZWhvdywgSSBndWVzcyB0b3BpYyBicmFuY2ggd29y a3MKPiA+IHRvby4KPgo+IEkgd291bGQgbGlrZSB0byBoYXZlIHRvcGljIGJyYW5jaCBmb3IgdGhp cyBwYXRjaHNldC4KCkRvIHlvdSBwbGFuIHRvIHByZXAgdGhhdCwgb3Igc2hvdWxkIEk/IERvZXNu J3QgcmVhbGx5IG1hdHRlciB0byBtZSwKYW5kIGFzc3VtaW5nIERhbmllbCBUaG9tcHNvbiBkb2Vz bid0IGhhdmUgYW55IGxhc3QgbWludXRlIGNvbmNlcm5zCnNob3VsZCBzdGlsbCBiZSBlbm91Z2gg dGltZSB0byBnZXQgaXQgYWxsIHNvcnRlZCBhbmQgaGF2ZSBhIGZldyB3ZWVrcwpvZiB0ZXN0aW5n IGxlZnQgYmVmb3JlIHRoZSBtZXJnZSB3aW5kb3cuCgo+ID4gTG9uZyB0ZXJtIEkgdGhpbmsgd2Ug bmVlZCB0byByZWNvbnNpZGVyIGhvdyB3ZSBoYW5kbGUgZmJkZXYsIGF0IGxlYXN0IHRoZQo+ID4g Y29yZS9mYmNvbiBwaWVjZXMuIFNpbmNlIGEgZmV3IHllYXJzIGFsbCB0aGUgd29yayBpbiB0aGF0 IGFyZWEgaGFzIGJlZW4KPiA+IG1vdGl2YXRlZCBieSBkcm0sIGFuZCBwdXNoZWQgYnkgZHJtIGNv bnRyaWJ1dG9ycy4gSGF2aW5nIHRoYXQgbWFpbnRhaW5lZAo+ID4gaW4gYSBzZXBhcmF0ZSB0cmVl IHRoYXQgZG9lc24ndCByZWd1bGFybHkgaW50ZWdyYXRlIGltbyBkb2Vzbid0IG1ha2UgbXVjaAo+ ID4gc2Vuc2UsIGFuZCB3ZSBlbmRlZCB1cCBtZXJnaW5nIGFsbW9zdCBldmVyeXRoaW5nIHRocm91 Z2ggc29tZSBkcm0gdHJlZS4KPiA+IFRoYXQgb25lIHRpbWUgd2UgZGlkbid0IChmb3Igc29tZSBw YW5lbCByb3RhdGlvbiBzdHVmZikgaXQgcmVzdWx0ZWQgaW4KPiA+IHNvbWUgZ29vZCBzdXByaXNl cy4KPiA+Cj4gPiBJIHRoaW5rIGJlc3Qgc29sdXRpb24gaXMgaWYgd2UgcHV0IHRoZSBjb3JlIGFu ZCBmYmNvbiBiaXRzIGludG8gZHJtLW1pc2MsCj4gPiBhcyBncm91cCBtYWludGFpbmVkIGluZnJh c3RydWN0dXJlIHBpZWNlLiBBbGwgdGhlIG90aGVyIGdmeCBpbmZyYSBwaWVjZXMKPiA+IGFyZSBt YWludGFpbmVkIGluIHRoZXJlIGFscmVhZHkgdG9vLiBZb3UnZCBvYnZpb3VzbHkgZ2V0IGNvbW1p dCByaWdodHMuCj4gPiBJIHRoaW5rIHRoYXQgd291bGQgaW5jbHVkZQo+ID4gLSBkcml2ZXJzL3Zp ZGVvL2ZiZGV2Cj4gPiAtIGRyaXZlcnMvdmlkZW8vKmMKPiA+IC0gZHJpdmVycy92aWRlby9jb25z b2xlCj4KPiBTb3VuZHMgZmluZSB0byBtZS4KPgo+ID4gSSBkb24ndCByZWFsbHkgY2FyZSBhYm91 dCB3aGF0IGhhcHBlbnMgd2l0aCB0aGUgYWN0dWFsIGZiZGV2IGRyaXZlcnMKPiA+IChhc2lkZSBm cm9tIHRoZSBkcm0gb25lIGluIGRybV9mYl9oZWxwZXIuYywgYnV0IHRoYXQncyBhbHJlYWR5IG1h aW50YWluZWQKPiA+IGFzIHBhcnQgb2YgZHJtKS4gSSBndWVzcyB3ZSBjb3VsZCBhbHNvIHB1dCB0 aG9zZSBpbnRvIGRybS1taXNjLCBvciBhcyBhCj4gPiBzZXBhcmF0ZSB0cmVlLCBkZXBlbmRpbmcg d2hhdCB5b3Ugd2FudC4KPiA+Cj4gPiBUaG91Z2h0cz8KPgo+IEkgd291bGQgbGlrZSB0byBoYW5k bGUgZmJkZXYgY2hhbmdlcyBmb3IgdjUuMyBtZXJnZSB3aW5kb3cgdXNpbmcgZmJkZXYKPiB0cmVl IGJ1dCBhZnRlciB0aGF0IGV2ZXJ5dGhpbmcgKGluY2x1ZGluZyBjaGFuZ2VzIHRvIGZiZGV2IGRy aXZlcnMpIGNhbiBnbwo+IHRocm91Z2ggZHJtLW1pc2MgdHJlZS4KCkZ1bGx5IGFncmVlZCwgbm8g bmVlZCB0byBydXNoIGFueXRoaW5nIGhlcmUuIEZvciB0aGUgZHJtLW1pc2MgYWNjb3VudAp5b3Ug bmVlZCB0byByZXF1ZXN0IGFuIFNTSCBsZWdhY3kgYWNjb3VudCBoZXJlIGJ5IGZpbGluZyBhIGlz c3VlOgoKaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL2ZyZWVkZXNrdG9wL2ZyZWVkZXNr dG9wL2lzc3Vlcy9uZXcKClNlbGVjdCB0aGUgIk5ldyBTU0ggYWNjb3VudCIgdGVtcGxhdGUsIGl0 IGhhcyBpbnN0cnVjdGlvbnMgd2l0aApldmVyeXRoaW5nIHRoYXQncyBuZWVkZWQuCgpGb3IgdGhl IGdldHRpbmcgc3RhcnRlZCBob3d0bywgc2VlCmh0dHBzOi8vZHJtLnBhZ2VzLmZyZWVkZXNrdG9w Lm9yZy9tYWludGFpbmVyLXRvb2xzL2dldHRpbmctc3RhcnRlZC5odG1sCgpJZiB0aGF0IGFsbCBs b29rcyBnb29kIGFuZCB5b3UncmUgc2V0IHVwIEkgdGhpbmsgYmVzdCB0byB0ZXN0LWRyaXZlCnRo ZSBlbnRpcmUgcHJvY2VzcyB3aXRoIHRoZSBNQUlOVEFJTkVSUyBwYXRjaCB0byBjaGFuZ2UgdGhl IGdpdCByZXBvCmZvciA1LjQuCgpDaGVlcnMsIERhbmllbAoKCj4gQmVzdCByZWdhcmRzLAo+IC0t Cj4gQmFydGxvbWllaiBab2xuaWVya2lld2ljego+IFNhbXN1bmcgUiZEIEluc3RpdHV0ZSBQb2xh bmQKPiBTYW1zdW5nIEVsZWN0cm9uaWNzCj4KPiA+IENoZWVycywgRGFuaWVsCj4gPgo+ID4KPiA+ Pgo+ID4+IEknbSBhbHNvIGNjJ2luZyB0aGUgZW50aXJlIHBpbGUgdG8gYSBsb3QgbW9yZSBwZW9w bGUgb24gcmVxdWVzdC4KPiA+Pgo+ID4+IFRoYW5rcywgRGFuaWVsCj4gPj4KPiA+PiBEYW5pZWwg VmV0dGVyICgzMyk6Cj4gPj4gICBkdW1teWNvbjogU3ByaW5rbGUgbG9ja2luZyBjaGVja3MKPiA+ PiAgIGZiZGV2OiBsb2NraW5nIGNoZWNrIGZvciBmYl9zZXRfc3VzcGVuZAo+ID4+ICAgdnQ6IG1p Z2h0X3NsZWVwKCkgYW5ub3RhdGlvbiBmb3IgZG9fYmxhbmtfc2NyZWVuCj4gPj4gICB2dDogTW9y ZSBsb2NraW5nIGNoZWNrcwo+ID4+ICAgZmJkZXYvc2ExMTAwZmI6IFJlbW92ZSBkZWFkIGNvZGUK PiA+PiAgIGZiZGV2L2N5YmVyMjAwMDogUmVtb3ZlIHN0cnVjdCBkaXNwbGF5Cj4gPj4gICBmYmRl di9hdHkxMjhmYjogUmVtb3ZlIGRlYWQgY29kZQo+ID4+ICAgZmJjb246IHMvc3RydWN0IGRpc3Bs YXkvc3RydWN0IGZiY29uX2Rpc3BsYXkvCj4gPj4gICBmYmNvbjogUmVtb3ZlIGZiY29uX2hhc19l eGl0ZWQKPiA+PiAgIGZiY29uOiBjYWxsIGZiY29uX2ZiXyh1bilyZWdpc3RlcmVkIGRpcmVjdGx5 Cj4gPj4gICBmYmRldi9zaF9tb2JpbGU6IHJlbW92ZSBzaF9tb2JpbGVfbGNkY19kaXNwbGF5X25v dGlmeQo+ID4+ICAgZmJkZXYvb21hcDogc3lzZnMgZmlsZXMgY2FuJ3QgZGlzYXBwZWFyIGJlZm9y ZSB0aGUgZGV2aWNlIGlzIGdvbmUKPiA+PiAgIGZiZGV2OiBzeXNmcyBmaWxlcyBjYW4ndCBkaXNh cHBlYXIgYmVmb3JlIHRoZSBkZXZpY2UgaXMgZ29uZQo+ID4+ICAgc3RhZ2luZy9vbHBjOiBsb2Nr X2ZiX2luZm8gY2FuJ3QgZmFpbAo+ID4+ICAgZmJkZXYvYXR5ZmI6IGxvY2tfZmJfaW5mbyBjYW4n dCBmYWlsCj4gPj4gICBmYmRldjogbG9ja19mYl9pbmZvIGNhbm5vdCBmYWlsCj4gPj4gICBmYmNv bjogY2FsbCBmYmNvbl9mYl9iaW5kIGRpcmVjdGx5Cj4gPj4gICBmYmRldjogbWFrZSB1bnJlZ2lz dGVyL3VubGluayBmdW5jdGlvbnMgbm90IGZhaWwKPiA+PiAgIGZiZGV2OiB1bmlmeSB1bmxpbmtf ZnJhbWVidWZmZXIgcGF0aHMKPiA+PiAgIGZiZGV2L3NoX21vYjogUmVtb3ZlIGZiIG5vdGlmaWVy IGNhbGxiYWNrCj4gPj4gICBmYmRldjogZGlyZWN0bHkgY2FsbCBmYmNvbl9zdXNwZW5kZWQvcmVz dW1lZAo+ID4+ICAgZmJjb246IENhbGwgZmJjb25fbW9kZV9kZWxldGVkL25ld19tb2RlbGlzdCBk aXJlY3RseQo+ID4+ICAgZmJkZXY6IENhbGwgZmJjb25fZ2V0X3JlcXVpcmVtZW50IGRpcmVjdGx5 Cj4gPj4gICBSZXZlcnQgImJhY2tsaWdodC9mYmNvbjogQWRkIEZCX0VWRU5UX0NPTkJMQU5LIgo+ ID4+ICAgZmJtZW06IHB1bGwgZmJjb25fZmJfYmxhbmtlZCBvdXQgb2YgZmJfYmxhbmsKPiA+PiAg IGZiZGV2OiByZW1vdmUgRkJJTkZPX01JU0NfVVNFUkVWRU5UIGFyb3VuZCBmYl9ibGFuawo+ID4+ ICAgZmI6IEZsYXR0ZW4gY29udHJvbCBmbG93IGluIGZiX3NldF92YXIKPiA+PiAgIGZiY29uOiBy ZXBsYWNlIEZCX0VWRU5UX01PREVfQ0hBTkdFL19BTEwgd2l0aCBkaXJlY3QgY2FsbHMKPiA+PiAg IHZnYXN3aXRjaGVyb286IGNhbGwgZmJjb25fcmVtYXBfYWxsIGRpcmVjdGx5Cj4gPj4gICBmYmNv bjogQ2FsbCBjb24yZmJfbWFwIGZ1bmN0aW9ucyBkaXJlY3RseQo+ID4+ICAgZmJjb246IERvY3Vt ZW50IHdoYXQgSSBsZWFybmVkIGFib3V0IGZiY29uIGxvY2tpbmcKPiA+PiAgIHN0YWdpbmcvb2xw Y19kY29uOiBBZGQgZHJtIGNvbnZlcnNpb24gdG8gVE9ETwo+ID4+ICAgYmFja2xpZ2h0OiBzaW1w bGlmeSBsY2Qgbm90aWZpZXIKPiA+Pgo+ID4+ICBhcmNoL2FybS9tYWNoLXB4YS9hbTIwMGVwZC5j ICAgICAgICAgICAgICAgICAgfCAgMTMgKy0KPiA+PiAgZHJpdmVycy9ncHUvdmdhL3ZnYV9zd2l0 Y2hlcm9vLmMgICAgICAgICAgICAgIHwgIDExICstCj4gPj4gIGRyaXZlcnMvbWVkaWEvcGNpL2l2 dHYvaXZ0dmZiLmMgICAgICAgICAgICAgICB8ICAgNiArLQo+ID4+ICBkcml2ZXJzL3N0YWdpbmcv ZmJ0ZnQvZmJ0ZnQtY29yZS5jICAgICAgICAgICAgfCAgIDQgKy0KPiA+PiAgZHJpdmVycy9zdGFn aW5nL29scGNfZGNvbi9UT0RPICAgICAgICAgICAgICAgIHwgICA3ICsKPiA+PiAgZHJpdmVycy9z dGFnaW5nL29scGNfZGNvbi9vbHBjX2Rjb24uYyAgICAgICAgIHwgICA2ICstCj4gPj4gIGRyaXZl cnMvdHR5L3Z0L3Z0LmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxOCArCj4gPj4gIGRy aXZlcnMvdmlkZW8vYmFja2xpZ2h0L2JhY2tsaWdodC5jICAgICAgICAgICB8ICAgMiArLQo+ID4+ ICBkcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9sY2QuYyAgICAgICAgICAgICAgICAgfCAgMTIgLQo+ ID4+ICBkcml2ZXJzL3ZpZGVvL2NvbnNvbGUvZHVtbXljb24uYyAgICAgICAgICAgICAgfCAgIDYg Kwo+ID4+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2F0eS9hdHkxMjhmYi5jICAgICAgICAgICAgfCAg NjQgLS0tCj4gPj4gIGRyaXZlcnMvdmlkZW8vZmJkZXYvYXR5L2F0eWZiX2Jhc2UuYyAgICAgICAg ICB8ICAgMyArLQo+ID4+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjbWFwLmMgICAgICAg ICAgICAgfCAgIDYgKy0KPiA+PiAgZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiY29uLmMgICAg ICAgICAgICAgIHwgMzEzICsrKysrKy0tLS0tLS0tCj4gPj4gIGRyaXZlcnMvdmlkZW8vZmJkZXYv Y29yZS9mYmNvbi5oICAgICAgICAgICAgICB8ICAgNiArLQo+ID4+ICBkcml2ZXJzL3ZpZGVvL2Zi ZGV2L2NvcmUvZmJtZW0uYyAgICAgICAgICAgICAgfCAzOTkgKysrKysrKy0tLS0tLS0tLS0tCj4g Pj4gIGRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYnN5c2ZzLmMgICAgICAgICAgICB8ICAyMCAr LQo+ID4+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2N5YmVyMjAwMGZiLmMgICAgICAgICAgICAgfCAg IDEgLQo+ID4+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L25lb2ZiLmMgICAgICAgICAgICAgICAgICAg fCAgIDkgKy0KPiA+PiAgLi4uL3ZpZGVvL2ZiZGV2L29tYXAyL29tYXBmYi9vbWFwZmItc3lzZnMu YyAgIHwgIDIxICstCj4gPj4gIGRyaXZlcnMvdmlkZW8vZmJkZXYvc2ExMTAwZmIuYyAgICAgICAg ICAgICAgICB8ICAyNSAtLQo+ID4+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L3NhdmFnZS9zYXZhZ2Vm Yl9kcml2ZXIuYyAgfCAgIDkgKy0KPiA+PiAgZHJpdmVycy92aWRlby9mYmRldi9zaF9tb2JpbGVf bGNkY2ZiLmMgICAgICAgIHwgMTMyICstLS0tLQo+ID4+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L3No X21vYmlsZV9sY2RjZmIuaCAgICAgICAgfCAgIDUgLQo+ID4+ICBpbmNsdWRlL2xpbnV4L2NvbnNv bGVfc3RydWN0LmggICAgICAgICAgICAgICAgfCAgIDUgKy0KPiA+PiAgaW5jbHVkZS9saW51eC9m Yi5oICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQ1ICstCj4gPj4gIGluY2x1ZGUvbGlu dXgvZmJjb24uaCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzMCArKwo+ID4+ICAyNyBmaWxl cyBjaGFuZ2VkLCAzOTYgaW5zZXJ0aW9ucygrKSwgNzgyIGRlbGV0aW9ucygtKQo+ID4+Cj4gPj4g LS0KPiA+PiAyLjIwLjEKPiA+Pgo+ID4KPiA+IC0tCj4gPiBEYW5pZWwgVmV0dGVyCj4gPiBTb2Z0 d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KPiA+IGh0dHA6Ly9ibG9nLmZmd2xsLmNo CgoKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlv bgorNDEgKDApIDc5IDM2NSA1NyA0OCAtIGh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxp c3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==