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=-8.2 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED, 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 2EE22C00449 for ; Wed, 3 Oct 2018 15:51:36 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id EB07D213A2 for ; Wed, 3 Oct 2018 15:51:35 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org EB07D213A2 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727561AbeJCWka (ORCPT ); Wed, 3 Oct 2018 18:40:30 -0400 Received: from mga09.intel.com ([134.134.136.24]:14596 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726748AbeJCWka (ORCPT ); Wed, 3 Oct 2018 18:40:30 -0400 X-Amp-Result: UNSCANNABLE X-Amp-File-Uploaded: False Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 03 Oct 2018 08:51:29 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.54,336,1534834800"; d="scan'208";a="91856341" Received: from stinkbox.fi.intel.com (HELO stinkbox) ([10.237.72.174]) by fmsmga002.fm.intel.com with SMTP; 03 Oct 2018 08:51:24 -0700 Received: by stinkbox (sSMTP sendmail emulation); Wed, 03 Oct 2018 18:51:23 +0300 Date: Wed, 3 Oct 2018 18:51:23 +0300 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= To: Daniel Vetter Cc: Eugeniy Paltsev , Linux Kernel Mailing List , Alexey Brodkin , linux-snps-arc@lists.infradead.org, stable , dri-devel , Sean Paul , Dave Airlie Subject: Re: [PATCH] drm: fb-helper: Validate requested pixel format against bpp Message-ID: <20181003155123.GJ9144@intel.com> References: <20181003110457.9318-1-Eugeniy.Paltsev@synopsys.com> <20181003123047.GK9144@intel.com> <1538577004.11140.5.camel@synopsys.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: 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 Wed, Oct 03, 2018 at 05:29:34PM +0200, Daniel Vetter wrote: > On Wed, Oct 3, 2018 at 4:30 PM Eugeniy Paltsev > wrote: > > > > On Wed, 2018-10-03 at 15:30 +0300, Ville Syrjälä wrote: > > > On Wed, Oct 03, 2018 at 01:36:00PM +0200, Daniel Vetter wrote: > > > > On Wed, Oct 3, 2018 at 1:05 PM Eugeniy Paltsev > > > > wrote: > > > > > > > > > > Validate requested pixel format against bits_per_pixel to reject > > > > > invalid formats with subcomponents length sum is greater than requested > > > > > bits_per_pixel. > > > > > > > > > > weston 5.0.0 with fbdev backend tries to set up an ARGB x8r8g8b8 pixel > > > > > format without bits_per_pixel updating. So it can request > > > > > x8r8g8b8 with 16 bpp which is obviously incorrect and should be > > > > > rejected. > > > > > > > > > > Cc: stable@vger.kernel.org > > > > > Signed-off-by: Eugeniy Paltsev > > > > > > > > drm fbdev emulation doesn't support changing the pixel format at all. > > > > I think we should reject all such request, not just the invalid ones. > > > > Can you pls respin? > > > > > > FYI I once posted a patch to tighten up the fb-helper pixel format > > > stuff: > > > https://patchwork.freedesktop.org/patch/203189/ > > > > > > Hi Daniel, > > > > will you take Ville's patch or should I create the new one which is only related > > to new pixel format validation in drm_fb_helper_check_var() ? > > Ville's patch isn't the bugfix we're looking for, but a draft version > of what adding proper format support in drm's fbdev emulation could > look like. With lots&lots of open questions. Actually it does pretty much what you seem to be asking for. Ie. reject any attempt to change the pixel format. Not really sure how to do it much more minimally. Hmm. Oh there is a more minimal way actually. I mistakenly remembered that fbdev clobbers info->var already before check_var(), but actually it only does that before set_par(). So I guess all we really need is to compare the fb_bitfields/bits_per_pixel/etc. between info->var and the passed in var. > Not anywhere near ready > for merging, and definitely not stable backport material. > > So yes, still want the minimal bugfix. > -Daniel > > > > > > > > > Thanks, Daniel > > > > > > > > > --- > > > > > drivers/gpu/drm/drm_fb_helper.c | 7 +++++++ > > > > > 1 file changed, 7 insertions(+) > > > > > > > > > > diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c > > > > > index 16ec93b75dbf..4f39da07f053 100644 > > > > > --- a/drivers/gpu/drm/drm_fb_helper.c > > > > > +++ b/drivers/gpu/drm/drm_fb_helper.c > > > > > @@ -1610,6 +1610,13 @@ int drm_fb_helper_check_var(struct fb_var_screeninfo *var, > > > > > return -EINVAL; > > > > > } > > > > > > > > > > + if ((var->green.length + var->blue.length + var->red.length + > > > > > + var->transp.length) > var->bits_per_pixel) { > > > > > + DRM_DEBUG("fb requested pixel format can't fit in %d bpp\n", > > > > > + var->bits_per_pixel); > > > > > + return -EINVAL; > > > > > + } > > > > > + > > > > > switch (var->bits_per_pixel) { > > > > > case 16: > > > > > depth = (var->green.length == 6) ? 16 : 15; > > > > > -- > > > > > 2.14.4 > > > > > > > > > > _______________________________________________ > > > > > dri-devel mailing list > > > > > dri-devel@lists.freedesktop.org > > > > > https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.freedesktop.org_mailman_listinfo_dri-2Ddevel&d=DwIDAw&c=DPL6_X_6JkXFx7AXWqB0tg&r=ZlJN > > > > > 1MriPUTkBKCrPSx67GmaplEUGcAEk9yPtCLdUXI&m=f12ZyEESIeavtqCUKutiZ9F6xtRFC2UUvdqnM4ywBx8&s=CPS8taMiYbIgXo-fxhqErOJXvO6PMTzmr-BNnGJIoy0&e= > > > > > > > > > > > > > > > > -- > > > > Daniel Vetter > > > > Software Engineer, Intel Corporation > > > > +41 (0) 79 365 57 48 - https://urldefense.proofpoint.com/v2/url?u=http-3A__blog.ffwll.ch&d=DwIDAw&c=DPL6_X_6JkXFx7AXWqB0tg&r=ZlJN1MriPUTkBKCrPSx67 > > > > GmaplEUGcAEk9yPtCLdUXI&m=f12ZyEESIeavtqCUKutiZ9F6xtRFC2UUvdqnM4ywBx8&s=Vt8OX9s9ljSK6GDgbnwsF-Yd35fbBUfe8SBV2jPnVaQ&e= > > > > _______________________________________________ > > > > dri-devel mailing list > > > > dri-devel@lists.freedesktop.org > > > > https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.freedesktop.org_mailman_listinfo_dri-2Ddevel&d=DwIDAw&c=DPL6_X_6JkXFx7AXWqB0tg&r=ZlJN1M > > > > riPUTkBKCrPSx67GmaplEUGcAEk9yPtCLdUXI&m=f12ZyEESIeavtqCUKutiZ9F6xtRFC2UUvdqnM4ywBx8&s=CPS8taMiYbIgXo-fxhqErOJXvO6PMTzmr-BNnGJIoy0&e= > > > > > > > > -- > > Eugeniy Paltsev > > > > -- > Daniel Vetter > Software Engineer, Intel Corporation > +41 (0) 79 365 57 48 - http://blog.ffwll.ch -- Ville Syrjälä Intel From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com ([134.134.136.24]:14596 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726748AbeJCWka (ORCPT ); Wed, 3 Oct 2018 18:40:30 -0400 Date: Wed, 3 Oct 2018 18:51:23 +0300 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= To: Daniel Vetter Cc: Eugeniy Paltsev , Linux Kernel Mailing List , Alexey Brodkin , linux-snps-arc@lists.infradead.org, stable , dri-devel , Sean Paul , Dave Airlie Subject: Re: [PATCH] drm: fb-helper: Validate requested pixel format against bpp Message-ID: <20181003155123.GJ9144@intel.com> References: <20181003110457.9318-1-Eugeniy.Paltsev@synopsys.com> <20181003123047.GK9144@intel.com> <1538577004.11140.5.camel@synopsys.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: Sender: stable-owner@vger.kernel.org List-ID: On Wed, Oct 03, 2018 at 05:29:34PM +0200, Daniel Vetter wrote: > On Wed, Oct 3, 2018 at 4:30 PM Eugeniy Paltsev > wrote: > > > > On Wed, 2018-10-03 at 15:30 +0300, Ville Syrj�l� wrote: > > > On Wed, Oct 03, 2018 at 01:36:00PM +0200, Daniel Vetter wrote: > > > > On Wed, Oct 3, 2018 at 1:05 PM Eugeniy Paltsev > > > > wrote: > > > > > > > > > > Validate requested pixel format against bits_per_pixel to reject > > > > > invalid formats with subcomponents length sum is greater than requested > > > > > bits_per_pixel. > > > > > > > > > > weston 5.0.0 with fbdev backend tries to set up an ARGB x8r8g8b8 pixel > > > > > format without bits_per_pixel updating. So it can request > > > > > x8r8g8b8 with 16 bpp which is obviously incorrect and should be > > > > > rejected. > > > > > > > > > > Cc: stable@vger.kernel.org > > > > > Signed-off-by: Eugeniy Paltsev > > > > > > > > drm fbdev emulation doesn't support changing the pixel format at all. > > > > I think we should reject all such request, not just the invalid ones. > > > > Can you pls respin? > > > > > > FYI I once posted a patch to tighten up the fb-helper pixel format > > > stuff: > > > https://patchwork.freedesktop.org/patch/203189/ > > > > > > Hi Daniel, > > > > will you take Ville's patch or should I create the new one which is only related > > to new pixel format validation in drm_fb_helper_check_var() ? > > Ville's patch isn't the bugfix we're looking for, but a draft version > of what adding proper format support in drm's fbdev emulation could > look like. With lots&lots of open questions. Actually it does pretty much what you seem to be asking for. Ie. reject any attempt to change the pixel format. Not really sure how to do it much more minimally. Hmm. Oh there is a more minimal way actually. I mistakenly remembered that fbdev clobbers info->var already before check_var(), but actually it only does that before set_par(). So I guess all we really need is to compare the fb_bitfields/bits_per_pixel/etc. between info->var and the passed in var. > Not anywhere near ready > for merging, and definitely not stable backport material. > > So yes, still want the minimal bugfix. > -Daniel > > > > > > > > > Thanks, Daniel > > > > > > > > > --- > > > > > drivers/gpu/drm/drm_fb_helper.c | 7 +++++++ > > > > > 1 file changed, 7 insertions(+) > > > > > > > > > > diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c > > > > > index 16ec93b75dbf..4f39da07f053 100644 > > > > > --- a/drivers/gpu/drm/drm_fb_helper.c > > > > > +++ b/drivers/gpu/drm/drm_fb_helper.c > > > > > @@ -1610,6 +1610,13 @@ int drm_fb_helper_check_var(struct fb_var_screeninfo *var, > > > > > return -EINVAL; > > > > > } > > > > > > > > > > + if ((var->green.length + var->blue.length + var->red.length + > > > > > + var->transp.length) > var->bits_per_pixel) { > > > > > + DRM_DEBUG("fb requested pixel format can't fit in %d bpp\n", > > > > > + var->bits_per_pixel); > > > > > + return -EINVAL; > > > > > + } > > > > > + > > > > > switch (var->bits_per_pixel) { > > > > > case 16: > > > > > depth = (var->green.length == 6) ? 16 : 15; > > > > > -- > > > > > 2.14.4 > > > > > > > > > > _______________________________________________ > > > > > dri-devel mailing list > > > > > dri-devel@lists.freedesktop.org > > > > > https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.freedesktop.org_mailman_listinfo_dri-2Ddevel&d=DwIDAw&c=DPL6_X_6JkXFx7AXWqB0tg&r=ZlJN > > > > > 1MriPUTkBKCrPSx67GmaplEUGcAEk9yPtCLdUXI&m=f12ZyEESIeavtqCUKutiZ9F6xtRFC2UUvdqnM4ywBx8&s=CPS8taMiYbIgXo-fxhqErOJXvO6PMTzmr-BNnGJIoy0&e= > > > > > > > > > > > > > > > > -- > > > > Daniel Vetter > > > > Software Engineer, Intel Corporation > > > > +41 (0) 79 365 57 48 - https://urldefense.proofpoint.com/v2/url?u=http-3A__blog.ffwll.ch&d=DwIDAw&c=DPL6_X_6JkXFx7AXWqB0tg&r=ZlJN1MriPUTkBKCrPSx67 > > > > GmaplEUGcAEk9yPtCLdUXI&m=f12ZyEESIeavtqCUKutiZ9F6xtRFC2UUvdqnM4ywBx8&s=Vt8OX9s9ljSK6GDgbnwsF-Yd35fbBUfe8SBV2jPnVaQ&e= > > > > _______________________________________________ > > > > dri-devel mailing list > > > > dri-devel@lists.freedesktop.org > > > > https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.freedesktop.org_mailman_listinfo_dri-2Ddevel&d=DwIDAw&c=DPL6_X_6JkXFx7AXWqB0tg&r=ZlJN1M > > > > riPUTkBKCrPSx67GmaplEUGcAEk9yPtCLdUXI&m=f12ZyEESIeavtqCUKutiZ9F6xtRFC2UUvdqnM4ywBx8&s=CPS8taMiYbIgXo-fxhqErOJXvO6PMTzmr-BNnGJIoy0&e= > > > > > > > > -- > > Eugeniy Paltsev > > > > -- > Daniel Vetter > Software Engineer, Intel Corporation > +41 (0) 79 365 57 48 - http://blog.ffwll.ch -- Ville Syrj�l� Intel From mboxrd@z Thu Jan 1 00:00:00 1970 From: ville.syrjala@linux.intel.com (Ville =?iso-8859-1?Q?Syrj=E4l=E4?=) Date: Wed, 3 Oct 2018 18:51:23 +0300 Subject: [PATCH] drm: fb-helper: Validate requested pixel format against bpp In-Reply-To: References: <20181003110457.9318-1-Eugeniy.Paltsev@synopsys.com> <20181003123047.GK9144@intel.com> <1538577004.11140.5.camel@synopsys.com> List-ID: Message-ID: <20181003155123.GJ9144@intel.com> To: linux-snps-arc@lists.infradead.org On Wed, Oct 03, 2018@05:29:34PM +0200, Daniel Vetter wrote: > On Wed, Oct 3, 2018 at 4:30 PM Eugeniy Paltsev > wrote: > > > > On Wed, 2018-10-03@15:30 +0300, Ville Syrj?l? wrote: > > > On Wed, Oct 03, 2018@01:36:00PM +0200, Daniel Vetter wrote: > > > > On Wed, Oct 3, 2018 at 1:05 PM Eugeniy Paltsev > > > > wrote: > > > > > > > > > > Validate requested pixel format against bits_per_pixel to reject > > > > > invalid formats with subcomponents length sum is greater than requested > > > > > bits_per_pixel. > > > > > > > > > > weston 5.0.0 with fbdev backend tries to set up an ARGB x8r8g8b8 pixel > > > > > format without bits_per_pixel updating. So it can request > > > > > x8r8g8b8 with 16 bpp which is obviously incorrect and should be > > > > > rejected. > > > > > > > > > > Cc: stable at vger.kernel.org > > > > > Signed-off-by: Eugeniy Paltsev > > > > > > > > drm fbdev emulation doesn't support changing the pixel format at all. > > > > I think we should reject all such request, not just the invalid ones. > > > > Can you pls respin? > > > > > > FYI I once posted a patch to tighten up the fb-helper pixel format > > > stuff: > > > https://patchwork.freedesktop.org/patch/203189/ > > > > > > Hi Daniel, > > > > will you take Ville's patch or should I create the new one which is only related > > to new pixel format validation in drm_fb_helper_check_var() ? > > Ville's patch isn't the bugfix we're looking for, but a draft version > of what adding proper format support in drm's fbdev emulation could > look like. With lots&lots of open questions. Actually it does pretty much what you seem to be asking for. Ie. reject any attempt to change the pixel format. Not really sure how to do it much more minimally. Hmm. Oh there is a more minimal way actually. I mistakenly remembered that fbdev clobbers info->var already before check_var(), but actually it only does that before set_par(). So I guess all we really need is to compare the fb_bitfields/bits_per_pixel/etc. between info->var and the passed in var. > Not anywhere near ready > for merging, and definitely not stable backport material. > > So yes, still want the minimal bugfix. > -Daniel > > > > > > > > > Thanks, Daniel > > > > > > > > > --- > > > > > drivers/gpu/drm/drm_fb_helper.c | 7 +++++++ > > > > > 1 file changed, 7 insertions(+) > > > > > > > > > > diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c > > > > > index 16ec93b75dbf..4f39da07f053 100644 > > > > > --- a/drivers/gpu/drm/drm_fb_helper.c > > > > > +++ b/drivers/gpu/drm/drm_fb_helper.c > > > > > @@ -1610,6 +1610,13 @@ int drm_fb_helper_check_var(struct fb_var_screeninfo *var, > > > > > return -EINVAL; > > > > > } > > > > > > > > > > + if ((var->green.length + var->blue.length + var->red.length + > > > > > + var->transp.length) > var->bits_per_pixel) { > > > > > + DRM_DEBUG("fb requested pixel format can't fit in %d bpp\n", > > > > > + var->bits_per_pixel); > > > > > + return -EINVAL; > > > > > + } > > > > > + > > > > > switch (var->bits_per_pixel) { > > > > > case 16: > > > > > depth = (var->green.length == 6) ? 16 : 15; > > > > > -- > > > > > 2.14.4 > > > > > > > > > > _______________________________________________ > > > > > dri-devel mailing list > > > > > dri-devel at lists.freedesktop.org > > > > > https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.freedesktop.org_mailman_listinfo_dri-2Ddevel&d=DwIDAw&c=DPL6_X_6JkXFx7AXWqB0tg&r=ZlJN > > > > > 1MriPUTkBKCrPSx67GmaplEUGcAEk9yPtCLdUXI&m=f12ZyEESIeavtqCUKutiZ9F6xtRFC2UUvdqnM4ywBx8&s=CPS8taMiYbIgXo-fxhqErOJXvO6PMTzmr-BNnGJIoy0&e= > > > > > > > > > > > > > > > > -- > > > > Daniel Vetter > > > > Software Engineer, Intel Corporation > > > > +41 (0) 79 365 57 48 - https://urldefense.proofpoint.com/v2/url?u=http-3A__blog.ffwll.ch&d=DwIDAw&c=DPL6_X_6JkXFx7AXWqB0tg&r=ZlJN1MriPUTkBKCrPSx67 > > > > GmaplEUGcAEk9yPtCLdUXI&m=f12ZyEESIeavtqCUKutiZ9F6xtRFC2UUvdqnM4ywBx8&s=Vt8OX9s9ljSK6GDgbnwsF-Yd35fbBUfe8SBV2jPnVaQ&e= > > > > _______________________________________________ > > > > dri-devel mailing list > > > > dri-devel at lists.freedesktop.org > > > > https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.freedesktop.org_mailman_listinfo_dri-2Ddevel&d=DwIDAw&c=DPL6_X_6JkXFx7AXWqB0tg&r=ZlJN1M > > > > riPUTkBKCrPSx67GmaplEUGcAEk9yPtCLdUXI&m=f12ZyEESIeavtqCUKutiZ9F6xtRFC2UUvdqnM4ywBx8&s=CPS8taMiYbIgXo-fxhqErOJXvO6PMTzmr-BNnGJIoy0&e= > > > > > > > > -- > > Eugeniy Paltsev > > > > -- > Daniel Vetter > Software Engineer, Intel Corporation > +41 (0) 79 365 57 48 - http://blog.ffwll.ch -- Ville Syrj?l? Intel From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH] drm: fb-helper: Validate requested pixel format against bpp Date: Wed, 3 Oct 2018 18:51:23 +0300 Message-ID: <20181003155123.GJ9144@intel.com> References: <20181003110457.9318-1-Eugeniy.Paltsev@synopsys.com> <20181003123047.GK9144@intel.com> <1538577004.11140.5.camel@synopsys.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id E75526E156 for ; Wed, 3 Oct 2018 15:51:29 +0000 (UTC) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter Cc: Dave Airlie , Sean Paul , Alexey Brodkin , Linux Kernel Mailing List , dri-devel , stable , linux-snps-arc@lists.infradead.org, Eugeniy Paltsev List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBPY3QgMDMsIDIwMTggYXQgMDU6Mjk6MzRQTSArMDIwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBPbiBXZWQsIE9jdCAzLCAyMDE4IGF0IDQ6MzAgUE0gRXVnZW5peSBQYWx0c2V2Cj4g PGV1Z2VuaXkucGFsdHNldkBzeW5vcHN5cy5jb20+IHdyb3RlOgo+ID4KPiA+IE9uIFdlZCwgMjAx OC0xMC0wMyBhdCAxNTozMCArMDMwMCwgVmlsbGUgU3lyasOkbMOkIHdyb3RlOgo+ID4gPiBPbiBX ZWQsIE9jdCAwMywgMjAxOCBhdCAwMTozNjowMFBNICswMjAwLCBEYW5pZWwgVmV0dGVyIHdyb3Rl Ogo+ID4gPiA+IE9uIFdlZCwgT2N0IDMsIDIwMTggYXQgMTowNSBQTSBFdWdlbml5IFBhbHRzZXYK PiA+ID4gPiA8RXVnZW5peS5QYWx0c2V2QHN5bm9wc3lzLmNvbT4gd3JvdGU6Cj4gPiA+ID4gPgo+ ID4gPiA+ID4gVmFsaWRhdGUgcmVxdWVzdGVkIHBpeGVsIGZvcm1hdCBhZ2FpbnN0IGJpdHNfcGVy X3BpeGVsIHRvIHJlamVjdAo+ID4gPiA+ID4gaW52YWxpZCBmb3JtYXRzIHdpdGggc3ViY29tcG9u ZW50cyBsZW5ndGggc3VtIGlzIGdyZWF0ZXIgdGhhbiByZXF1ZXN0ZWQKPiA+ID4gPiA+IGJpdHNf cGVyX3BpeGVsLgo+ID4gPiA+ID4KPiA+ID4gPiA+IHdlc3RvbiA1LjAuMCB3aXRoIGZiZGV2IGJh Y2tlbmQgdHJpZXMgdG8gc2V0IHVwIGFuIEFSR0IgeDhyOGc4YjggcGl4ZWwKPiA+ID4gPiA+IGZv cm1hdCB3aXRob3V0IGJpdHNfcGVyX3BpeGVsIHVwZGF0aW5nLiBTbyBpdCBjYW4gcmVxdWVzdAo+ ID4gPiA+ID4geDhyOGc4Yjggd2l0aCAxNiBicHAgd2hpY2ggaXMgb2J2aW91c2x5IGluY29ycmVj dCBhbmQgc2hvdWxkIGJlCj4gPiA+ID4gPiByZWplY3RlZC4KPiA+ID4gPiA+Cj4gPiA+ID4gPiBD Yzogc3RhYmxlQHZnZXIua2VybmVsLm9yZwo+ID4gPiA+ID4gU2lnbmVkLW9mZi1ieTogRXVnZW5p eSBQYWx0c2V2IDxFdWdlbml5LlBhbHRzZXZAc3lub3BzeXMuY29tPgo+ID4gPiA+Cj4gPiA+ID4g ZHJtIGZiZGV2IGVtdWxhdGlvbiBkb2Vzbid0IHN1cHBvcnQgY2hhbmdpbmcgdGhlIHBpeGVsIGZv cm1hdCBhdCBhbGwuCj4gPiA+ID4gSSB0aGluayB3ZSBzaG91bGQgcmVqZWN0IGFsbCBzdWNoIHJl cXVlc3QsIG5vdCBqdXN0IHRoZSBpbnZhbGlkIG9uZXMuCj4gPiA+ID4gQ2FuIHlvdSBwbHMgcmVz cGluPwo+ID4gPgo+ID4gPiBGWUkgSSBvbmNlIHBvc3RlZCBhIHBhdGNoIHRvIHRpZ2h0ZW4gdXAg dGhlIGZiLWhlbHBlciBwaXhlbCBmb3JtYXQKPiA+ID4gc3R1ZmY6Cj4gPiA+IGh0dHBzOi8vcGF0 Y2h3b3JrLmZyZWVkZXNrdG9wLm9yZy9wYXRjaC8yMDMxODkvCj4gPgo+ID4KPiA+IEhpIERhbmll bCwKPiA+Cj4gPiB3aWxsIHlvdSB0YWtlIFZpbGxlJ3MgcGF0Y2ggb3Igc2hvdWxkIEkgY3JlYXRl IHRoZSBuZXcgb25lIHdoaWNoIGlzIG9ubHkgcmVsYXRlZAo+ID4gdG8gbmV3IHBpeGVsIGZvcm1h dCB2YWxpZGF0aW9uIGluIGRybV9mYl9oZWxwZXJfY2hlY2tfdmFyKCkgPwo+IAo+IFZpbGxlJ3Mg cGF0Y2ggaXNuJ3QgdGhlIGJ1Z2ZpeCB3ZSdyZSBsb29raW5nIGZvciwgYnV0IGEgZHJhZnQgdmVy c2lvbgo+IG9mIHdoYXQgYWRkaW5nIHByb3BlciBmb3JtYXQgc3VwcG9ydCBpbiBkcm0ncyBmYmRl diBlbXVsYXRpb24gY291bGQKPiBsb29rIGxpa2UuIFdpdGggbG90cyZsb3RzIG9mIG9wZW4gcXVl c3Rpb25zLgoKQWN0dWFsbHkgaXQgZG9lcyBwcmV0dHkgbXVjaCB3aGF0IHlvdSBzZWVtIHRvIGJl IGFza2luZyBmb3IuCkllLiByZWplY3QgYW55IGF0dGVtcHQgdG8gY2hhbmdlIHRoZSBwaXhlbCBm b3JtYXQuIE5vdCByZWFsbHkKc3VyZSBob3cgdG8gZG8gaXQgbXVjaCBtb3JlIG1pbmltYWxseS4K CkhtbS4gT2ggdGhlcmUgaXMgYSBtb3JlIG1pbmltYWwgd2F5IGFjdHVhbGx5LiBJIG1pc3Rha2Vu bHkgcmVtZW1iZXJlZAp0aGF0IGZiZGV2IGNsb2JiZXJzIGluZm8tPnZhciBhbHJlYWR5IGJlZm9y ZSBjaGVja192YXIoKSwgYnV0IGFjdHVhbGx5Cml0IG9ubHkgZG9lcyB0aGF0IGJlZm9yZSBzZXRf cGFyKCkuIFNvIEkgZ3Vlc3MgYWxsIHdlIHJlYWxseSBuZWVkIGlzCnRvIGNvbXBhcmUgdGhlIGZi X2JpdGZpZWxkcy9iaXRzX3Blcl9waXhlbC9ldGMuIGJldHdlZW4gaW5mby0+dmFyCmFuZCB0aGUg cGFzc2VkIGluIHZhci4KCj4gTm90IGFueXdoZXJlIG5lYXIgcmVhZHkKPiBmb3IgbWVyZ2luZywg YW5kIGRlZmluaXRlbHkgbm90IHN0YWJsZSBiYWNrcG9ydCBtYXRlcmlhbC4KPiAKPiBTbyB5ZXMs IHN0aWxsIHdhbnQgdGhlIG1pbmltYWwgYnVnZml4Lgo+IC1EYW5pZWwKPiAKPiA+Cj4gPgo+ID4g PiA+IFRoYW5rcywgRGFuaWVsCj4gPiA+ID4KPiA+ID4gPiA+IC0tLQo+ID4gPiA+ID4gIGRyaXZl cnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMgfCA3ICsrKysrKysKPiA+ID4gPiA+ICAxIGZpbGUg Y2hhbmdlZCwgNyBpbnNlcnRpb25zKCspCj4gPiA+ID4gPgo+ID4gPiA+ID4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2Zi X2hlbHBlci5jCj4gPiA+ID4gPiBpbmRleCAxNmVjOTNiNzVkYmYuLjRmMzlkYTA3ZjA1MyAxMDA2 NDQKPiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMKPiA+ID4g PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMKPiA+ID4gPiA+IEBAIC0x NjEwLDYgKzE2MTAsMTMgQEAgaW50IGRybV9mYl9oZWxwZXJfY2hlY2tfdmFyKHN0cnVjdCBmYl92 YXJfc2NyZWVuaW5mbyAqdmFyLAo+ID4gPiA+ID4gICAgICAgICAgICAgICAgIHJldHVybiAtRUlO VkFMOwo+ID4gPiA+ID4gICAgICAgICB9Cj4gPiA+ID4gPgo+ID4gPiA+ID4gKyAgICAgICBpZiAo KHZhci0+Z3JlZW4ubGVuZ3RoICsgdmFyLT5ibHVlLmxlbmd0aCArIHZhci0+cmVkLmxlbmd0aCAr Cj4gPiA+ID4gPiArICAgICAgICAgICB2YXItPnRyYW5zcC5sZW5ndGgpID4gdmFyLT5iaXRzX3Bl cl9waXhlbCkgewo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgIERSTV9ERUJVRygiZmIgcmVxdWVz dGVkIHBpeGVsIGZvcm1hdCBjYW4ndCBmaXQgaW4gJWQgYnBwXG4iLAo+ID4gPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICB2YXItPmJpdHNfcGVyX3BpeGVsKTsKPiA+ID4gPiA+ICsgICAg ICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiA+ID4gPiA+ICsgICAgICAgfQo+ID4gPiA+ID4g Kwo+ID4gPiA+ID4gICAgICAgICBzd2l0Y2ggKHZhci0+Yml0c19wZXJfcGl4ZWwpIHsKPiA+ID4g PiA+ICAgICAgICAgY2FzZSAxNjoKPiA+ID4gPiA+ICAgICAgICAgICAgICAgICBkZXB0aCA9ICh2 YXItPmdyZWVuLmxlbmd0aCA9PSA2KSA/IDE2IDogMTU7Cj4gPiA+ID4gPiAtLQo+ID4gPiA+ID4g Mi4xNC40Cj4gPiA+ID4gPgo+ID4gPiA+ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KPiA+ID4gPiA+IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKPiA+ID4g PiA+IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiA+ID4gPiA+IGh0dHBzOi8vdXJs ZGVmZW5zZS5wcm9vZnBvaW50LmNvbS92Mi91cmw/dT1odHRwcy0zQV9fbGlzdHMuZnJlZWRlc2t0 b3Aub3JnX21haWxtYW5fbGlzdGluZm9fZHJpLTJEZGV2ZWwmZD1Ed0lEQXcmYz1EUEw2X1hfNkpr WEZ4N0FYV3FCMHRnJnI9WmxKTgo+ID4gPiA+ID4gMU1yaVBVVGtCS0NyUFN4NjdHbWFwbEVVR2NB RWs5eVB0Q0xkVVhJJm09ZjEyWnlFRVNJZWF2dHFDVUt1dGlaOUY2eHRSRkMyVVV2ZHFuTTR5d0J4 OCZzPUNQUzh0YU1pWWJJZ1hvLWZ4aHFFck9KWHZPNlBNVHptci1CTm5HSklveTAmZT0KPiA+ID4g Pgo+ID4gPiA+Cj4gPiA+ID4KPiA+ID4gPiAtLQo+ID4gPiA+IERhbmllbCBWZXR0ZXIKPiA+ID4g PiBTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KPiA+ID4gPiArNDEgKDApIDc5 IDM2NSA1NyA0OCAtIGh0dHBzOi8vdXJsZGVmZW5zZS5wcm9vZnBvaW50LmNvbS92Mi91cmw/dT1o dHRwLTNBX19ibG9nLmZmd2xsLmNoJmQ9RHdJREF3JmM9RFBMNl9YXzZKa1hGeDdBWFdxQjB0ZyZy PVpsSk4xTXJpUFVUa0JLQ3JQU3g2Nwo+ID4gPiA+IEdtYXBsRVVHY0FFazl5UHRDTGRVWEkmbT1m MTJaeUVFU0llYXZ0cUNVS3V0aVo5RjZ4dFJGQzJVVXZkcW5NNHl3Qng4JnM9VnQ4T1g5czlsalNL NkdEZ2Jud3NGLVlkMzVmYkJVZmU4U0JWMmpQblZhUSZlPQo+ID4gPiA+IF9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gPiA+ID4gZHJpLWRldmVsIG1haWxp bmcgbGlzdAo+ID4gPiA+IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiA+ID4gPiBo dHRwczovL3VybGRlZmVuc2UucHJvb2Zwb2ludC5jb20vdjIvdXJsP3U9aHR0cHMtM0FfX2xpc3Rz LmZyZWVkZXNrdG9wLm9yZ19tYWlsbWFuX2xpc3RpbmZvX2RyaS0yRGRldmVsJmQ9RHdJREF3JmM9 RFBMNl9YXzZKa1hGeDdBWFdxQjB0ZyZyPVpsSk4xTQo+ID4gPiA+IHJpUFVUa0JLQ3JQU3g2N0dt YXBsRVVHY0FFazl5UHRDTGRVWEkmbT1mMTJaeUVFU0llYXZ0cUNVS3V0aVo5RjZ4dFJGQzJVVXZk cW5NNHl3Qng4JnM9Q1BTOHRhTWlZYklnWG8tZnhocUVyT0pYdk82UE1Uem1yLUJObkdKSW95MCZl PQo+ID4gPgo+ID4gPgo+ID4gLS0KPiA+ICBFdWdlbml5IFBhbHRzZXYKPiAKPiAKPiAKPiAtLSAK PiBEYW5pZWwgVmV0dGVyCj4gU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCj4g KzQxICgwKSA3OSAzNjUgNTcgNDggLSBodHRwOi8vYmxvZy5mZndsbC5jaAoKLS0gClZpbGxlIFN5 cmrDpGzDpApJbnRlbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2 ZWwK