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=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, USER_AGENT_MUTT 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 03A46C4321A for ; Tue, 11 Jun 2019 15:50:15 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id B73772089E for ; Tue, 11 Jun 2019 15:50:14 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=ffwll.ch header.i=@ffwll.ch header.b="F79k97Oe" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2391811AbfFKPuN (ORCPT ); Tue, 11 Jun 2019 11:50:13 -0400 Received: from mail-ed1-f68.google.com ([209.85.208.68]:44483 "EHLO mail-ed1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388969AbfFKPuN (ORCPT ); Tue, 11 Jun 2019 11:50:13 -0400 Received: by mail-ed1-f68.google.com with SMTP id k8so20781069edr.11 for ; Tue, 11 Jun 2019 08:50:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=sender:date:from:to:cc:subject:message-id:mail-followup-to :references:mime-version:content-disposition:in-reply-to:user-agent; bh=mtYcG3eaodNwkUXtbPzyXqU7ikePPzGFCV3x5H2Vp2w=; b=F79k97OebVwKbQu0b/nTjPSvD8DjvA/UabTNZt8JKaAmUimWDcD/CDxikIi0b/yqXb eEmazlN78vAhDXS6ONe+hHCGoZIbJZmbUOxsrnkmmkwn1mobZz3C7t7ChQbJoRRH1yZT jQREe8KZyGCr/YrJ5v8kn0pi6fzotnsIBATAw= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :mail-followup-to:references:mime-version:content-disposition :in-reply-to:user-agent; bh=mtYcG3eaodNwkUXtbPzyXqU7ikePPzGFCV3x5H2Vp2w=; b=lgLJDUldSveG+oVorkvJkpxEnGW8I3i4lgXAXDsTzfUifzTwRiTKUGSli679Eiip64 zRnXN8upp8OPI9Vxp9uGQ8zPpTDc8OUWdlCJoqf5Lm9imrknP9mR8i1LNEd7GFVn1sBm 0UuR4zqUyVJ1P8iKynnG25QIX7iozwZ/kqVVMHSc95ZAuleiteyWLvhNK2I5rzLwenlD 2aHqpGXz+gjImwGCxa/JduSKrPghPmRzxv670h8dRIvUd+HWXKFm6r0cHi79EalWBs/y DDtE45n+PGySzeSX/TaqnDUQ/S+xOBXt+/wxHwUf2WRDzUN5bXMDAHKTFq63IXUmX1kR hRLw== X-Gm-Message-State: APjAAAV7mNoxlEohwwCQ9tWW+4INJbA8cO8YXoH9sdF1obbEGSGLmzAl d3+0JBR2fwA83tn/YUm3CCkdqQ== X-Google-Smtp-Source: APXvYqzF+oOMkXwS2dfiJ2JP+6/rYmb464Q2jX7euL4tjVJdPzJfqYdLl8dEiCEbGv2dxSjPX/EAsw== X-Received: by 2002:a50:e707:: with SMTP id a7mr82330961edn.68.1560268211076; Tue, 11 Jun 2019 08:50:11 -0700 (PDT) Received: from phenom.ffwll.local ([2a02:168:569e:0:3106:d637:d723:e855]) by smtp.gmail.com with ESMTPSA id k13sm3540257edk.77.2019.06.11.08.50.09 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Tue, 11 Jun 2019 08:50:10 -0700 (PDT) Date: Tue, 11 Jun 2019 17:50:08 +0200 From: Daniel Vetter To: Daniel Thompson Cc: Bartlomiej Zolnierkiewicz , Daniel Vetter , LKML , DRI Development , Intel Graphics Development , Linux Fbdev development list , Daniel Vetter , lee.jones@linaro.org Subject: Re: [PATCH 00/33] fbcon notifier begone v3! Message-ID: <20190611155008.GI2458@phenom.ffwll.local> Mail-Followup-To: Daniel Thompson , Bartlomiej Zolnierkiewicz , LKML , DRI Development , Intel Graphics Development , Linux Fbdev development list , lee.jones@linaro.org References: <20190528090304.9388-1-daniel.vetter@ffwll.ch> <20190611141635.rowolr37vhalophr@holly.lan> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20190611141635.rowolr37vhalophr@holly.lan> X-Operating-System: Linux phenom 4.14.0-3-amd64 User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Jun 11, 2019 at 03:16:35PM +0100, Daniel Thompson wrote: > On Fri, Jun 07, 2019 at 12:07:55PM +0200, 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. > > Thanks for spotting that. As it happens the e-mail asking for extra detail > was just about the last thing I sent before going on holiday (exactly to > try and avoid round trips this wee ;-) ). Vacations notices are sometimes indeed useful :-) > > >> - 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. > > From a backlight perspective its Lee Jones who hoovers up the patches > and worries about hiding merge conflicts from Linus. > > I'll let him follow up if needed but I suspect he'd like an immutable > branch to work from also. Ok I'll build the topic branch, get it tested a bit and then send the pull around to everyone. Thanks for taking a look at the backlight side. -Daniel > > > Daniel. > > > > > > > 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. > > > > 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 http://blog.ffwll.ch From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Date: Tue, 11 Jun 2019 15:50:08 +0000 Subject: Re: [PATCH 00/33] fbcon notifier begone v3! Message-Id: <20190611155008.GI2458@phenom.ffwll.local> List-Id: References: <20190528090304.9388-1-daniel.vetter@ffwll.ch> <20190611141635.rowolr37vhalophr@holly.lan> In-Reply-To: <20190611141635.rowolr37vhalophr@holly.lan> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: Daniel Thompson Cc: Linux Fbdev development list , Bartlomiej Zolnierkiewicz , Daniel Vetter , Intel Graphics Development , LKML , DRI Development , lee.jones@linaro.org On Tue, Jun 11, 2019 at 03:16:35PM +0100, Daniel Thompson wrote: > On Fri, Jun 07, 2019 at 12:07:55PM +0200, 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. > > Thanks for spotting that. As it happens the e-mail asking for extra detail > was just about the last thing I sent before going on holiday (exactly to > try and avoid round trips this wee ;-) ). Vacations notices are sometimes indeed useful :-) > > >> - 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. > > From a backlight perspective its Lee Jones who hoovers up the patches > and worries about hiding merge conflicts from Linus. > > I'll let him follow up if needed but I suspect he'd like an immutable > branch to work from also. Ok I'll build the topic branch, get it tested a bit and then send the pull around to everyone. Thanks for taking a look at the backlight side. -Daniel > > > Daniel. > > > > > > > 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. > > > > 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 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: Tue, 11 Jun 2019 17:50:08 +0200 Message-ID: <20190611155008.GI2458@phenom.ffwll.local> References: <20190528090304.9388-1-daniel.vetter@ffwll.ch> <20190611141635.rowolr37vhalophr@holly.lan> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x543.google.com (mail-ed1-x543.google.com [IPv6:2a00:1450:4864:20::543]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6D1B789238 for ; Tue, 11 Jun 2019 15:50:12 +0000 (UTC) Received: by mail-ed1-x543.google.com with SMTP id h9so20847830edr.0 for ; Tue, 11 Jun 2019 08:50:12 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20190611141635.rowolr37vhalophr@holly.lan> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Thompson Cc: Linux Fbdev development list , Bartlomiej Zolnierkiewicz , Daniel Vetter , Intel Graphics Development , LKML , DRI Development , lee.jones@linaro.org List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBKdW4gMTEsIDIwMTkgYXQgMDM6MTY6MzVQTSArMDEwMCwgRGFuaWVsIFRob21wc29u IHdyb3RlOgo+IE9uIEZyaSwgSnVuIDA3LCAyMDE5IGF0IDEyOjA3OjU1UE0gKzAyMDAsIEJhcnRs b21pZWogWm9sbmllcmtpZXdpY3ogd3JvdGU6Cj4gPiAKPiA+IE9uIDYvNi8xOSA5OjM4IEFNLCBE YW5pZWwgVmV0dGVyIHdyb3RlOgo+ID4gPiBIaSBCYXJ0LAo+ID4gCj4gPiBIaSBEYW5pZWwsCj4g PiAKPiA+ID4gT24gVHVlLCBNYXkgMjgsIDIwMTkgYXQgMTE6MDI6MzFBTSArMDIwMCwgRGFuaWVs IFZldHRlciB3cm90ZToKPiA+ID4+IEhpIGFsbCwKPiA+ID4+Cj4gPiA+PiBJIHRoaW5rIHdlJ3Jl IHNsb3dseSBnZXR0aW5nIHRoZXJlLiBQcmV2aW91cyBjb3ZlciBsZXR0ZXJzIHdpdGggbW9yZQo+ ID4gPj4gY29udGV4dDoKPiA+ID4+Cj4gPiA+PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9hcmNoaXZlcy9kcmktZGV2ZWwvMjAxOS1NYXkvMjE4MzYyLmh0bWwKPiA+ID4+Cj4gPiA+PiB0 bGRyOyBJIGhhdmUgYSBtdWx0aS15ZWFyIHBsYW4gdG8gaW1wcm92ZSBmYmNvbiBsb2NraW5nLCBi ZWNhdXNlIHRoZQo+ID4gPj4gY3VycmVudCB0aGluZyBpcyBhIGJpdCBhIG1lc3MuCj4gPiA+Pgo+ ID4gPj4gQ292ZXIgbGV0dGVyIG9mIHRoaXMgdmVyc2lvbiwgd2hlcmUgSSBkZXRhaWwgYSBiaXQg bW9yZSB0aGUgZGV0YWlscwo+ID4gPj4gZml4ZWQgaW4gdGhpcyBvbmUgaGVyZToKPiA+ID4+Cj4g PiA+PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9hcmNoaXZlcy9kcmktZGV2ZWwvMjAx OS1NYXkvMjE4OTg0Lmh0bWwKPiA+ID4+Cj4gPiA+PiBOb3RlIHRoYXQgdGhlIGxvY2tpbmcgcGxh biBpbiB0aGlzIG9uZSBpcyBhbHJlYWR5IG91dGRhdGVkLCBJIG92ZXJsb29rZWQgYQo+ID4gPj4g ZmV3IGZ1biBpc3N1ZXMgYXJvdW5kIGFueSBwcmludGsoKSBnb2luZyBiYWNrIHRvIGNvbnNvbGVf bG9jay4KPiA+ID4+Cj4gPiA+PiBJIHRoaW5rIHJlbWFpbmluZyBiaXRzOgo+ID4gPj4KPiA+ID4+ IC0gQWNrIGZyb20gRGFuaWVsIFRob21wc29uIGZvciB0aGUgYmFja2xpZ2h0IGJpdHMsIGhlIHdh bnRlZCB0byBjaGVjayB0aGUKPiA+ID4+ICAgYmlnIHBpY3R1cmUuCj4gPiA+IAo+ID4gPiBJIHRo aW5rIERhbmllbCBpcyBzdGlsbCBvbiB2YWNhdGlvbiB1bnRpbCBuZXh0IHdlZWsgb3Igc28uCj4g Cj4gVGhhbmtzIGZvciBzcG90dGluZyB0aGF0LiBBcyBpdCBoYXBwZW5zIHRoZSBlLW1haWwgYXNr aW5nIGZvciBleHRyYSBkZXRhaWwKPiB3YXMganVzdCBhYm91dCB0aGUgbGFzdCB0aGluZyBJIHNl bnQgYmVmb3JlIGdvaW5nIG9uIGhvbGlkYXkgKGV4YWN0bHkgdG8KPiB0cnkgYW5kIGF2b2lkIHJv dW5kIHRyaXBzIHRoaXMgd2VlIDstKSApLgoKVmFjYXRpb25zIG5vdGljZXMgYXJlIHNvbWV0aW1l cyBpbmRlZWQgdXNlZnVsIDotKQoKPiA+ID4+IC0gSGFzaCBvdXQgYWN0dWFsIG1lcmdlIHBsYW4u Cj4gPiA+IAo+ID4gPiBJJ2QgbGlrZSB0byBzdHVmZiB0aGlzIGludG8gZHJtLmdpdCBzb21laG93 LCBJIGd1ZXNzIHRvcGljIGJyYW5jaCB3b3Jrcwo+ID4gPiB0b28uCj4gPiAKPiA+IEkgd291bGQg bGlrZSB0byBoYXZlIHRvcGljIGJyYW5jaCBmb3IgdGhpcyBwYXRjaHNldC4KPiAKPiBGcm9tIGEg YmFja2xpZ2h0IHBlcnNwZWN0aXZlIGl0cyBMZWUgSm9uZXMgd2hvIGhvb3ZlcnMgdXAgdGhlIHBh dGNoZXMKPiBhbmQgd29ycmllcyBhYm91dCBoaWRpbmcgbWVyZ2UgY29uZmxpY3RzIGZyb20gTGlu dXMuCj4gCj4gSSdsbCBsZXQgaGltIGZvbGxvdyB1cCBpZiBuZWVkZWQgYnV0IEkgc3VzcGVjdCBo ZSdkIGxpa2UgYW4gaW1tdXRhYmxlCj4gYnJhbmNoIHRvIHdvcmsgZnJvbSBhbHNvLgoKT2sgSSds bCBidWlsZCB0aGUgdG9waWMgYnJhbmNoLCBnZXQgaXQgdGVzdGVkIGEgYml0IGFuZCB0aGVuIHNl bmQgdGhlIHB1bGwKYXJvdW5kIHRvIGV2ZXJ5b25lLiBUaGFua3MgZm9yIHRha2luZyBhIGxvb2sg YXQgdGhlIGJhY2tsaWdodCBzaWRlLgotRGFuaWVsCgo+IAo+IAo+IERhbmllbC4KPiAKPiAKPiA+ IAo+ID4gPiBMb25nIHRlcm0gSSB0aGluayB3ZSBuZWVkIHRvIHJlY29uc2lkZXIgaG93IHdlIGhh bmRsZSBmYmRldiwgYXQgbGVhc3QgdGhlCj4gPiA+IGNvcmUvZmJjb24gcGllY2VzLiBTaW5jZSBh IGZldyB5ZWFycyBhbGwgdGhlIHdvcmsgaW4gdGhhdCBhcmVhIGhhcyBiZWVuCj4gPiA+IG1vdGl2 YXRlZCBieSBkcm0sIGFuZCBwdXNoZWQgYnkgZHJtIGNvbnRyaWJ1dG9ycy4gSGF2aW5nIHRoYXQg bWFpbnRhaW5lZAo+ID4gPiBpbiBhIHNlcGFyYXRlIHRyZWUgdGhhdCBkb2Vzbid0IHJlZ3VsYXJs eSBpbnRlZ3JhdGUgaW1vIGRvZXNuJ3QgbWFrZSBtdWNoCj4gPiA+IHNlbnNlLCBhbmQgd2UgZW5k ZWQgdXAgbWVyZ2luZyBhbG1vc3QgZXZlcnl0aGluZyB0aHJvdWdoIHNvbWUgZHJtIHRyZWUuCj4g PiA+IFRoYXQgb25lIHRpbWUgd2UgZGlkbid0IChmb3Igc29tZSBwYW5lbCByb3RhdGlvbiBzdHVm ZikgaXQgcmVzdWx0ZWQgaW4KPiA+ID4gc29tZSBnb29kIHN1cHJpc2VzLgo+ID4gPiAKPiA+ID4g SSB0aGluayBiZXN0IHNvbHV0aW9uIGlzIGlmIHdlIHB1dCB0aGUgY29yZSBhbmQgZmJjb24gYml0 cyBpbnRvIGRybS1taXNjLAo+ID4gPiBhcyBncm91cCBtYWludGFpbmVkIGluZnJhc3RydWN0dXJl IHBpZWNlLiBBbGwgdGhlIG90aGVyIGdmeCBpbmZyYSBwaWVjZXMKPiA+ID4gYXJlIG1haW50YWlu ZWQgaW4gdGhlcmUgYWxyZWFkeSB0b28uIFlvdSdkIG9idmlvdXNseSBnZXQgY29tbWl0IHJpZ2h0 cy4KPiA+ID4gSSB0aGluayB0aGF0IHdvdWxkIGluY2x1ZGUKPiA+ID4gLSBkcml2ZXJzL3ZpZGVv L2ZiZGV2Cj4gPiA+IC0gZHJpdmVycy92aWRlby8qYwo+ID4gPiAtIGRyaXZlcnMvdmlkZW8vY29u c29sZQo+ID4gCj4gPiBTb3VuZHMgZmluZSB0byBtZS4KPiA+IAo+ID4gPiBJIGRvbid0IHJlYWxs eSBjYXJlIGFib3V0IHdoYXQgaGFwcGVucyB3aXRoIHRoZSBhY3R1YWwgZmJkZXYgZHJpdmVycwo+ ID4gPiAoYXNpZGUgZnJvbSB0aGUgZHJtIG9uZSBpbiBkcm1fZmJfaGVscGVyLmMsIGJ1dCB0aGF0 J3MgYWxyZWFkeSBtYWludGFpbmVkCj4gPiA+IGFzIHBhcnQgb2YgZHJtKS4gSSBndWVzcyB3ZSBj b3VsZCBhbHNvIHB1dCB0aG9zZSBpbnRvIGRybS1taXNjLCBvciBhcyBhCj4gPiA+IHNlcGFyYXRl IHRyZWUsIGRlcGVuZGluZyB3aGF0IHlvdSB3YW50Lgo+ID4gPiAKPiA+ID4gVGhvdWdodHM/Cj4g PiAKPiA+IEkgd291bGQgbGlrZSB0byBoYW5kbGUgZmJkZXYgY2hhbmdlcyBmb3IgdjUuMyBtZXJn ZSB3aW5kb3cgdXNpbmcgZmJkZXYKPiA+IHRyZWUgYnV0IGFmdGVyIHRoYXQgZXZlcnl0aGluZyAo aW5jbHVkaW5nIGNoYW5nZXMgdG8gZmJkZXYgZHJpdmVycykgY2FuIGdvCj4gPiB0aHJvdWdoIGRy bS1taXNjIHRyZWUuCj4gPiAKPiA+IEJlc3QgcmVnYXJkcywKPiA+IC0tCj4gPiBCYXJ0bG9taWVq IFpvbG5pZXJraWV3aWN6Cj4gPiBTYW1zdW5nIFImRCBJbnN0aXR1dGUgUG9sYW5kCj4gPiBTYW1z dW5nIEVsZWN0cm9uaWNzCj4gPiAKPiA+ID4gQ2hlZXJzLCBEYW5pZWwKPiA+ID4gCj4gPiA+IAo+ ID4gPj4KPiA+ID4+IEknbSBhbHNvIGNjJ2luZyB0aGUgZW50aXJlIHBpbGUgdG8gYSBsb3QgbW9y ZSBwZW9wbGUgb24gcmVxdWVzdC4KPiA+ID4+Cj4gPiA+PiBUaGFua3MsIERhbmllbAo+ID4gPj4K PiA+ID4+IERhbmllbCBWZXR0ZXIgKDMzKToKPiA+ID4+ICAgZHVtbXljb246IFNwcmlua2xlIGxv Y2tpbmcgY2hlY2tzCj4gPiA+PiAgIGZiZGV2OiBsb2NraW5nIGNoZWNrIGZvciBmYl9zZXRfc3Vz cGVuZAo+ID4gPj4gICB2dDogbWlnaHRfc2xlZXAoKSBhbm5vdGF0aW9uIGZvciBkb19ibGFua19z Y3JlZW4KPiA+ID4+ICAgdnQ6IE1vcmUgbG9ja2luZyBjaGVja3MKPiA+ID4+ICAgZmJkZXYvc2Ex MTAwZmI6IFJlbW92ZSBkZWFkIGNvZGUKPiA+ID4+ICAgZmJkZXYvY3liZXIyMDAwOiBSZW1vdmUg c3RydWN0IGRpc3BsYXkKPiA+ID4+ICAgZmJkZXYvYXR5MTI4ZmI6IFJlbW92ZSBkZWFkIGNvZGUK PiA+ID4+ICAgZmJjb246IHMvc3RydWN0IGRpc3BsYXkvc3RydWN0IGZiY29uX2Rpc3BsYXkvCj4g PiA+PiAgIGZiY29uOiBSZW1vdmUgZmJjb25faGFzX2V4aXRlZAo+ID4gPj4gICBmYmNvbjogY2Fs bCBmYmNvbl9mYl8odW4pcmVnaXN0ZXJlZCBkaXJlY3RseQo+ID4gPj4gICBmYmRldi9zaF9tb2Jp bGU6IHJlbW92ZSBzaF9tb2JpbGVfbGNkY19kaXNwbGF5X25vdGlmeQo+ID4gPj4gICBmYmRldi9v bWFwOiBzeXNmcyBmaWxlcyBjYW4ndCBkaXNhcHBlYXIgYmVmb3JlIHRoZSBkZXZpY2UgaXMgZ29u ZQo+ID4gPj4gICBmYmRldjogc3lzZnMgZmlsZXMgY2FuJ3QgZGlzYXBwZWFyIGJlZm9yZSB0aGUg ZGV2aWNlIGlzIGdvbmUKPiA+ID4+ICAgc3RhZ2luZy9vbHBjOiBsb2NrX2ZiX2luZm8gY2FuJ3Qg ZmFpbAo+ID4gPj4gICBmYmRldi9hdHlmYjogbG9ja19mYl9pbmZvIGNhbid0IGZhaWwKPiA+ID4+ ICAgZmJkZXY6IGxvY2tfZmJfaW5mbyBjYW5ub3QgZmFpbAo+ID4gPj4gICBmYmNvbjogY2FsbCBm YmNvbl9mYl9iaW5kIGRpcmVjdGx5Cj4gPiA+PiAgIGZiZGV2OiBtYWtlIHVucmVnaXN0ZXIvdW5s aW5rIGZ1bmN0aW9ucyBub3QgZmFpbAo+ID4gPj4gICBmYmRldjogdW5pZnkgdW5saW5rX2ZyYW1l YnVmZmVyIHBhdGhzCj4gPiA+PiAgIGZiZGV2L3NoX21vYjogUmVtb3ZlIGZiIG5vdGlmaWVyIGNh bGxiYWNrCj4gPiA+PiAgIGZiZGV2OiBkaXJlY3RseSBjYWxsIGZiY29uX3N1c3BlbmRlZC9yZXN1 bWVkCj4gPiA+PiAgIGZiY29uOiBDYWxsIGZiY29uX21vZGVfZGVsZXRlZC9uZXdfbW9kZWxpc3Qg ZGlyZWN0bHkKPiA+ID4+ICAgZmJkZXY6IENhbGwgZmJjb25fZ2V0X3JlcXVpcmVtZW50IGRpcmVj dGx5Cj4gPiA+PiAgIFJldmVydCAiYmFja2xpZ2h0L2ZiY29uOiBBZGQgRkJfRVZFTlRfQ09OQkxB TksiCj4gPiA+PiAgIGZibWVtOiBwdWxsIGZiY29uX2ZiX2JsYW5rZWQgb3V0IG9mIGZiX2JsYW5r Cj4gPiA+PiAgIGZiZGV2OiByZW1vdmUgRkJJTkZPX01JU0NfVVNFUkVWRU5UIGFyb3VuZCBmYl9i bGFuawo+ID4gPj4gICBmYjogRmxhdHRlbiBjb250cm9sIGZsb3cgaW4gZmJfc2V0X3Zhcgo+ID4g Pj4gICBmYmNvbjogcmVwbGFjZSBGQl9FVkVOVF9NT0RFX0NIQU5HRS9fQUxMIHdpdGggZGlyZWN0 IGNhbGxzCj4gPiA+PiAgIHZnYXN3aXRjaGVyb286IGNhbGwgZmJjb25fcmVtYXBfYWxsIGRpcmVj dGx5Cj4gPiA+PiAgIGZiY29uOiBDYWxsIGNvbjJmYl9tYXAgZnVuY3Rpb25zIGRpcmVjdGx5Cj4g PiA+PiAgIGZiY29uOiBEb2N1bWVudCB3aGF0IEkgbGVhcm5lZCBhYm91dCBmYmNvbiBsb2NraW5n Cj4gPiA+PiAgIHN0YWdpbmcvb2xwY19kY29uOiBBZGQgZHJtIGNvbnZlcnNpb24gdG8gVE9ETwo+ ID4gPj4gICBiYWNrbGlnaHQ6IHNpbXBsaWZ5IGxjZCBub3RpZmllcgo+ID4gPj4KPiA+ID4+ICBh cmNoL2FybS9tYWNoLXB4YS9hbTIwMGVwZC5jICAgICAgICAgICAgICAgICAgfCAgMTMgKy0KPiA+ ID4+ICBkcml2ZXJzL2dwdS92Z2EvdmdhX3N3aXRjaGVyb28uYyAgICAgICAgICAgICAgfCAgMTEg Ky0KPiA+ID4+ICBkcml2ZXJzL21lZGlhL3BjaS9pdnR2L2l2dHZmYi5jICAgICAgICAgICAgICAg fCAgIDYgKy0KPiA+ID4+ICBkcml2ZXJzL3N0YWdpbmcvZmJ0ZnQvZmJ0ZnQtY29yZS5jICAgICAg ICAgICAgfCAgIDQgKy0KPiA+ID4+ICBkcml2ZXJzL3N0YWdpbmcvb2xwY19kY29uL1RPRE8gICAg ICAgICAgICAgICAgfCAgIDcgKwo+ID4gPj4gIGRyaXZlcnMvc3RhZ2luZy9vbHBjX2Rjb24vb2xw Y19kY29uLmMgICAgICAgICB8ICAgNiArLQo+ID4gPj4gIGRyaXZlcnMvdHR5L3Z0L3Z0LmMgICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAxOCArCj4gPiA+PiAgZHJpdmVycy92aWRlby9iYWNr bGlnaHQvYmFja2xpZ2h0LmMgICAgICAgICAgIHwgICAyICstCj4gPiA+PiAgZHJpdmVycy92aWRl by9iYWNrbGlnaHQvbGNkLmMgICAgICAgICAgICAgICAgIHwgIDEyIC0KPiA+ID4+ICBkcml2ZXJz L3ZpZGVvL2NvbnNvbGUvZHVtbXljb24uYyAgICAgICAgICAgICAgfCAgIDYgKwo+ID4gPj4gIGRy aXZlcnMvdmlkZW8vZmJkZXYvYXR5L2F0eTEyOGZiLmMgICAgICAgICAgICB8ICA2NCAtLS0KPiA+ ID4+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2F0eS9hdHlmYl9iYXNlLmMgICAgICAgICAgfCAgIDMg Ky0KPiA+ID4+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjbWFwLmMgICAgICAgICAgICAg fCAgIDYgKy0KPiA+ID4+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb24uYyAgICAgICAg ICAgICAgfCAzMTMgKysrKysrLS0tLS0tLS0KPiA+ID4+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2Nv cmUvZmJjb24uaCAgICAgICAgICAgICAgfCAgIDYgKy0KPiA+ID4+ICBkcml2ZXJzL3ZpZGVvL2Zi ZGV2L2NvcmUvZmJtZW0uYyAgICAgICAgICAgICAgfCAzOTkgKysrKysrKy0tLS0tLS0tLS0tCj4g PiA+PiAgZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2Zic3lzZnMuYyAgICAgICAgICAgIHwgIDIw ICstCj4gPiA+PiAgZHJpdmVycy92aWRlby9mYmRldi9jeWJlcjIwMDBmYi5jICAgICAgICAgICAg IHwgICAxIC0KPiA+ID4+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L25lb2ZiLmMgICAgICAgICAgICAg ICAgICAgfCAgIDkgKy0KPiA+ID4+ICAuLi4vdmlkZW8vZmJkZXYvb21hcDIvb21hcGZiL29tYXBm Yi1zeXNmcy5jICAgfCAgMjEgKy0KPiA+ID4+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L3NhMTEwMGZi LmMgICAgICAgICAgICAgICAgfCAgMjUgLS0KPiA+ID4+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L3Nh dmFnZS9zYXZhZ2VmYl9kcml2ZXIuYyAgfCAgIDkgKy0KPiA+ID4+ICBkcml2ZXJzL3ZpZGVvL2Zi ZGV2L3NoX21vYmlsZV9sY2RjZmIuYyAgICAgICAgfCAxMzIgKy0tLS0tCj4gPiA+PiAgZHJpdmVy cy92aWRlby9mYmRldi9zaF9tb2JpbGVfbGNkY2ZiLmggICAgICAgIHwgICA1IC0KPiA+ID4+ICBp bmNsdWRlL2xpbnV4L2NvbnNvbGVfc3RydWN0LmggICAgICAgICAgICAgICAgfCAgIDUgKy0KPiA+ ID4+ICBpbmNsdWRlL2xpbnV4L2ZiLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNDUg Ky0KPiA+ID4+ICBpbmNsdWRlL2xpbnV4L2ZiY29uLmggICAgICAgICAgICAgICAgICAgICAgICAg fCAgMzAgKysKPiA+ID4+ICAyNyBmaWxlcyBjaGFuZ2VkLCAzOTYgaW5zZXJ0aW9ucygrKSwgNzgy IGRlbGV0aW9ucygtKQo+ID4gPj4KPiA+ID4+IC0tCj4gPiA+PiAyLjIwLjEKPiA+ID4+Cj4gPiA+ IAo+ID4gPiAtLQo+ID4gPiBEYW5pZWwgVmV0dGVyCj4gPiA+IFNvZnR3YXJlIEVuZ2luZWVyLCBJ bnRlbCBDb3Jwb3JhdGlvbgo+ID4gPiBodHRwOi8vYmxvZy5mZndsbC5jaAoKLS0gCkRhbmllbCBW ZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZm d2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRy aS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==