From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dmitry Osipenko Subject: Re: [PATCH] media: staging: tegra-vde: add missing pm_runtime_put_autosuspend Date: Fri, 5 Jun 2020 17:05:46 +0300 Message-ID: References: <20200602054841.15746-1-navid.emamdoost@gmail.com> <7061eb81-c00c-9978-5e4b-f9896c0ffd5e@nvidia.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Return-path: In-Reply-To: <7061eb81-c00c-9978-5e4b-f9896c0ffd5e-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> Content-Language: en-US Sender: linux-tegra-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: Jon Hunter , Navid Emamdoost , Mauro Carvalho Chehab , Greg Kroah-Hartman , Thierry Reding , linux-media-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, devel-gWbeCf7V1WCQmaza687I9mD2FQJk+8+b@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Cc: emamd001-OJFnDUYgAso@public.gmane.org, wu000273-OJFnDUYgAso@public.gmane.org, kjlu-OJFnDUYgAso@public.gmane.org, smccaman-OJFnDUYgAso@public.gmane.org List-Id: linux-tegra@vger.kernel.org 05.06.2020 09:00, Jon Hunter пишет: > > On 02/06/2020 06:48, Navid Emamdoost wrote: >> Call to pm_runtime_get_sync increments counter even in case of >> failure leading to incorrect ref count. >> Call pm_runtime_put_autosuspend if pm_runtime_get_sync fails. >> >> Signed-off-by: Navid Emamdoost >> --- >> drivers/staging/media/tegra-vde/vde.c | 4 +++- >> 1 file changed, 3 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/staging/media/tegra-vde/vde.c b/drivers/staging/media/tegra-vde/vde.c >> index d3e63512a765..52cdd4a91e93 100644 >> --- a/drivers/staging/media/tegra-vde/vde.c >> +++ b/drivers/staging/media/tegra-vde/vde.c >> @@ -776,8 +776,10 @@ static int tegra_vde_ioctl_decode_h264(struct tegra_vde *vde, >> goto release_dpb_frames; >> >> ret = pm_runtime_get_sync(dev); >> - if (ret < 0) >> + if (ret < 0) { >> + pm_runtime_put_autosuspend(dev); >> goto unlock; >> + } >> >> /* >> * We rely on the VDE registers reset value, otherwise VDE > > Please use the put in the error path. This is a third version of the patch [1][2]. [1] https://patchwork.ozlabs.org/project/linux-tegra/patch/20200514210847.9269-2-digetx-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org/ [2] https://patchwork.ozlabs.org/project/linux-tegra/patch/20200520095148.10995-1-dinghao.liu-Y5EWUtBUdg4nDS1+zs4M5A@public.gmane.org/ I'd prefer to stick with my variant of the patch [1] because in my opinion it's most straightforward variant and I actually tested that it works properly. Navid, anyways thank you for the patch. Next time please check if somebody else already sent similar patches before you. 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.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 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 37609C433E0 for ; Fri, 5 Jun 2020 14:06:00 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 101502074B for ; Fri, 5 Jun 2020 14:06:00 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="D/wJ7NyA" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727854AbgFEOF7 (ORCPT ); Fri, 5 Jun 2020 10:05:59 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46668 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726553AbgFEOF6 (ORCPT ); Fri, 5 Jun 2020 10:05:58 -0400 Received: from mail-lj1-x243.google.com (mail-lj1-x243.google.com [IPv6:2a00:1450:4864:20::243]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3D807C08C5C2; Fri, 5 Jun 2020 07:05:58 -0700 (PDT) Received: by mail-lj1-x243.google.com with SMTP id a25so11901869ljp.3; Fri, 05 Jun 2020 07:05:58 -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-language:content-transfer-encoding; bh=E2imZowYcWsqMuYyPOGiSh8Vkqqat7rhLhXVyMR2k0w=; b=D/wJ7NyAluy19hD4lOArO9SudJkVEhvukrBzFKZOOidCtGQr8L7Zz5q/SToiDFhpSb p5UTbi5gebuWIbN8mFJ80H3cJ+qyXanlpYp6tAHrZnkCfsCkbTwF1pe0eHBrfooqhwlU lpiMA4Yehiqnot+x/r0IkPCAWzTBw/N1Xos/ndEeL78XLizAf9w1AGm+gMTtpRc64OZH mtHx+WeQepSOZP6of5WOZkXFBatcKPwQuk8aBMzg4/tBJcTerQNqSLHw6ddo540CyJgG iM1hrslBg2I3UsbIqpUSRl2OdYaIQLPTJBXg6hK8wDEeQv8sPB2PZpXzEjhIeR0jUM0d g8mQ== 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-language :content-transfer-encoding; bh=E2imZowYcWsqMuYyPOGiSh8Vkqqat7rhLhXVyMR2k0w=; b=KG8jhXBpuPxdAspOVP+TA7DyLrL8yxAEP6D3sudjYr2SLPXMWMohYfyOIvLXJUW2Kw zF+ya/b4fip+OCmEhuVzE7+YH2vdqyhSV6JDfXMD+bFZC6a7HJ1zlrfGHaHUGXRMfDAH oQJz/N8mbtumpMmeiAc6hLhZntAX1WIv51l6R5zZQ7L7XjS0oneRJ7QL/d77P78wO6Hb JljU8VqK6Pl4WthWkRzMgtLp+6RLeVXCNfo7+vL9/zu8TWIZyAxyYvVs29H6lLFjuOXm gvfIXnAU6LJewePeEdMww+VTzFPilCeM64XuIuezOEPIS1B67ObOOE+Lhz/Lp1pdLdqF nJBQ== X-Gm-Message-State: AOAM533FUVdAYhZASJC3IpV0Si/u5twza8QIwz8w7/M0/VLBbyEJrHKg SUKQDIt42wEaclfRxcm5aIM= X-Google-Smtp-Source: ABdhPJyhDQJ3TrPRcEnQIaSKKUFiV1lqR92HYbBU8YHDoEyM3qNNPqHz0h+AjVhHM+ruxqLhmDTBYg== X-Received: by 2002:a2e:975a:: with SMTP id f26mr4974996ljj.302.1591365956611; Fri, 05 Jun 2020 07:05:56 -0700 (PDT) Received: from [192.168.2.145] (109-252-173-94.dynamic.spd-mgts.ru. [109.252.173.94]) by smtp.googlemail.com with ESMTPSA id z133sm980669lfa.41.2020.06.05.07.05.46 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 05 Jun 2020 07:05:47 -0700 (PDT) Subject: Re: [PATCH] media: staging: tegra-vde: add missing pm_runtime_put_autosuspend To: Jon Hunter , Navid Emamdoost , Mauro Carvalho Chehab , Greg Kroah-Hartman , Thierry Reding , linux-media@vger.kernel.org, linux-tegra@vger.kernel.org, devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org Cc: emamd001@umn.edu, wu000273@umn.edu, kjlu@umn.edu, smccaman@umn.edu References: <20200602054841.15746-1-navid.emamdoost@gmail.com> <7061eb81-c00c-9978-5e4b-f9896c0ffd5e@nvidia.com> From: Dmitry Osipenko Message-ID: Date: Fri, 5 Jun 2020 17:05:46 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.7.0 MIME-Version: 1.0 In-Reply-To: <7061eb81-c00c-9978-5e4b-f9896c0ffd5e@nvidia.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 05.06.2020 09:00, Jon Hunter пишет: > > On 02/06/2020 06:48, Navid Emamdoost wrote: >> Call to pm_runtime_get_sync increments counter even in case of >> failure leading to incorrect ref count. >> Call pm_runtime_put_autosuspend if pm_runtime_get_sync fails. >> >> Signed-off-by: Navid Emamdoost >> --- >> drivers/staging/media/tegra-vde/vde.c | 4 +++- >> 1 file changed, 3 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/staging/media/tegra-vde/vde.c b/drivers/staging/media/tegra-vde/vde.c >> index d3e63512a765..52cdd4a91e93 100644 >> --- a/drivers/staging/media/tegra-vde/vde.c >> +++ b/drivers/staging/media/tegra-vde/vde.c >> @@ -776,8 +776,10 @@ static int tegra_vde_ioctl_decode_h264(struct tegra_vde *vde, >> goto release_dpb_frames; >> >> ret = pm_runtime_get_sync(dev); >> - if (ret < 0) >> + if (ret < 0) { >> + pm_runtime_put_autosuspend(dev); >> goto unlock; >> + } >> >> /* >> * We rely on the VDE registers reset value, otherwise VDE > > Please use the put in the error path. This is a third version of the patch [1][2]. [1] https://patchwork.ozlabs.org/project/linux-tegra/patch/20200514210847.9269-2-digetx@gmail.com/ [2] https://patchwork.ozlabs.org/project/linux-tegra/patch/20200520095148.10995-1-dinghao.liu@zju.edu.cn/ I'd prefer to stick with my variant of the patch [1] because in my opinion it's most straightforward variant and I actually tested that it works properly. Navid, anyways thank you for the patch. Next time please check if somebody else already sent similar patches before you. 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=-7.8 required=3.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 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 33800C433DF for ; Fri, 5 Jun 2020 14:06:03 +0000 (UTC) Received: from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 01D202074B for ; Fri, 5 Jun 2020 14:06:02 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="D/wJ7NyA" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 01D202074B Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=driverdev-devel-bounces@linuxdriverproject.org Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id BD5468714B; Fri, 5 Jun 2020 14:06:02 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Su1CF0vaVG47; Fri, 5 Jun 2020 14:06:00 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by fraxinus.osuosl.org (Postfix) with ESMTP id 8D65D87060; Fri, 5 Jun 2020 14:06:00 +0000 (UTC) Received: from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138]) by ash.osuosl.org (Postfix) with ESMTP id 6AFB91BF5F4 for ; Fri, 5 Jun 2020 14:05:59 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id 67885883E7 for ; Fri, 5 Jun 2020 14:05:59 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id kYYJzqMjkkDV for ; Fri, 5 Jun 2020 14:05:58 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail-lj1-f193.google.com (mail-lj1-f193.google.com [209.85.208.193]) by whitealder.osuosl.org (Postfix) with ESMTPS id 75C2D87E3E for ; Fri, 5 Jun 2020 14:05:58 +0000 (UTC) Received: by mail-lj1-f193.google.com with SMTP id n23so11898690ljh.7 for ; Fri, 05 Jun 2020 07:05:58 -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-language:content-transfer-encoding; bh=E2imZowYcWsqMuYyPOGiSh8Vkqqat7rhLhXVyMR2k0w=; b=D/wJ7NyAluy19hD4lOArO9SudJkVEhvukrBzFKZOOidCtGQr8L7Zz5q/SToiDFhpSb p5UTbi5gebuWIbN8mFJ80H3cJ+qyXanlpYp6tAHrZnkCfsCkbTwF1pe0eHBrfooqhwlU lpiMA4Yehiqnot+x/r0IkPCAWzTBw/N1Xos/ndEeL78XLizAf9w1AGm+gMTtpRc64OZH mtHx+WeQepSOZP6of5WOZkXFBatcKPwQuk8aBMzg4/tBJcTerQNqSLHw6ddo540CyJgG iM1hrslBg2I3UsbIqpUSRl2OdYaIQLPTJBXg6hK8wDEeQv8sPB2PZpXzEjhIeR0jUM0d g8mQ== 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-language :content-transfer-encoding; bh=E2imZowYcWsqMuYyPOGiSh8Vkqqat7rhLhXVyMR2k0w=; b=WO2QIS0PTljf6vcVf20PnfL5Spl6doC+/ejqKjJigbcjhuNw46bFTOJqNlhOEKwpzT cHgzyH8tm2fSPXAD/JSukOUm8tqe+QxQDAZ0GiosgxHhx3MHc+4dfmqSft7eMcnfM07i 8EKcJZmXeHU8TodqcfIhq5TrMudCqO1j4yYWD84B/QZgdn1IVOBnbgGJylxUb/vwgYsP XAs9/0JetE2Ay6Pu/R/rNYmck8XfLwa2jcjki2Sk/Jp5MdiswGHiIarGEDKIo+voRtGk SY/HZaA/WKvOgf9VitMl1kgnW+96GtLfChLDIaZkEO2GQUnyMy+a2+6q/FlW6y6MpKID S+jw== X-Gm-Message-State: AOAM530ISPa97oe65L2KY6apKBXE5hUp/qPs+qHxAaiOJEagYHLsX42N nmAn6aXbSDn5sfqZLNx+d+o= X-Google-Smtp-Source: ABdhPJyhDQJ3TrPRcEnQIaSKKUFiV1lqR92HYbBU8YHDoEyM3qNNPqHz0h+AjVhHM+ruxqLhmDTBYg== X-Received: by 2002:a2e:975a:: with SMTP id f26mr4974996ljj.302.1591365956611; Fri, 05 Jun 2020 07:05:56 -0700 (PDT) Received: from [192.168.2.145] (109-252-173-94.dynamic.spd-mgts.ru. [109.252.173.94]) by smtp.googlemail.com with ESMTPSA id z133sm980669lfa.41.2020.06.05.07.05.46 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 05 Jun 2020 07:05:47 -0700 (PDT) Subject: Re: [PATCH] media: staging: tegra-vde: add missing pm_runtime_put_autosuspend To: Jon Hunter , Navid Emamdoost , Mauro Carvalho Chehab , Greg Kroah-Hartman , Thierry Reding , linux-media@vger.kernel.org, linux-tegra@vger.kernel.org, devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org References: <20200602054841.15746-1-navid.emamdoost@gmail.com> <7061eb81-c00c-9978-5e4b-f9896c0ffd5e@nvidia.com> From: Dmitry Osipenko Message-ID: Date: Fri, 5 Jun 2020 17:05:46 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.7.0 MIME-Version: 1.0 In-Reply-To: <7061eb81-c00c-9978-5e4b-f9896c0ffd5e@nvidia.com> Content-Language: en-US X-BeenThere: driverdev-devel@linuxdriverproject.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux Driver Project Developer List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: emamd001@umn.edu, kjlu@umn.edu, wu000273@umn.edu, smccaman@umn.edu Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: driverdev-devel-bounces@linuxdriverproject.org Sender: "devel" MDUuMDYuMjAyMCAwOTowMCwgSm9uIEh1bnRlciDQv9C40YjQtdGCOgo+IAo+IE9uIDAyLzA2LzIw MjAgMDY6NDgsIE5hdmlkIEVtYW1kb29zdCB3cm90ZToKPj4gQ2FsbCB0byBwbV9ydW50aW1lX2dl dF9zeW5jIGluY3JlbWVudHMgY291bnRlciBldmVuIGluIGNhc2Ugb2YKPj4gZmFpbHVyZSBsZWFk aW5nIHRvIGluY29ycmVjdCByZWYgY291bnQuCj4+IENhbGwgcG1fcnVudGltZV9wdXRfYXV0b3N1 c3BlbmQgaWYgcG1fcnVudGltZV9nZXRfc3luYyBmYWlscy4KPj4KPj4gU2lnbmVkLW9mZi1ieTog TmF2aWQgRW1hbWRvb3N0IDxuYXZpZC5lbWFtZG9vc3RAZ21haWwuY29tPgo+PiAtLS0KPj4gIGRy aXZlcnMvc3RhZ2luZy9tZWRpYS90ZWdyYS12ZGUvdmRlLmMgfCA0ICsrKy0KPj4gIDEgZmlsZSBj aGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPj4KPj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvc3RhZ2luZy9tZWRpYS90ZWdyYS12ZGUvdmRlLmMgYi9kcml2ZXJzL3N0YWdpbmcv bWVkaWEvdGVncmEtdmRlL3ZkZS5jCj4+IGluZGV4IGQzZTYzNTEyYTc2NS4uNTJjZGQ0YTkxZTkz IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvdGVncmEtdmRlL3ZkZS5jCj4+ ICsrKyBiL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS90ZWdyYS12ZGUvdmRlLmMKPj4gQEAgLTc3Niw4 ICs3NzYsMTAgQEAgc3RhdGljIGludCB0ZWdyYV92ZGVfaW9jdGxfZGVjb2RlX2gyNjQoc3RydWN0 IHRlZ3JhX3ZkZSAqdmRlLAo+PiAgCQlnb3RvIHJlbGVhc2VfZHBiX2ZyYW1lczsKPj4gIAo+PiAg CXJldCA9IHBtX3J1bnRpbWVfZ2V0X3N5bmMoZGV2KTsKPj4gLQlpZiAocmV0IDwgMCkKPj4gKwlp ZiAocmV0IDwgMCkgewo+PiArCQlwbV9ydW50aW1lX3B1dF9hdXRvc3VzcGVuZChkZXYpOwo+PiAg CQlnb3RvIHVubG9jazsKPj4gKwl9Cj4+ICAKPj4gIAkvKgo+PiAgCSAqIFdlIHJlbHkgb24gdGhl IFZERSByZWdpc3RlcnMgcmVzZXQgdmFsdWUsIG90aGVyd2lzZSBWREUKPiAKPiBQbGVhc2UgdXNl IHRoZSBwdXQgaW4gdGhlIGVycm9yIHBhdGguCgpUaGlzIGlzIGEgdGhpcmQgdmVyc2lvbiBvZiB0 aGUgcGF0Y2ggWzFdWzJdLgoKWzFdCmh0dHBzOi8vcGF0Y2h3b3JrLm96bGFicy5vcmcvcHJvamVj dC9saW51eC10ZWdyYS9wYXRjaC8yMDIwMDUxNDIxMDg0Ny45MjY5LTItZGlnZXR4QGdtYWlsLmNv bS8KWzJdCmh0dHBzOi8vcGF0Y2h3b3JrLm96bGFicy5vcmcvcHJvamVjdC9saW51eC10ZWdyYS9w YXRjaC8yMDIwMDUyMDA5NTE0OC4xMDk5NS0xLWRpbmdoYW8ubGl1QHpqdS5lZHUuY24vCgpJJ2Qg cHJlZmVyIHRvIHN0aWNrIHdpdGggbXkgdmFyaWFudCBvZiB0aGUgcGF0Y2ggWzFdIGJlY2F1c2Ug aW4gbXkKb3BpbmlvbiBpdCdzIG1vc3Qgc3RyYWlnaHRmb3J3YXJkIHZhcmlhbnQgYW5kIEkgYWN0 dWFsbHkgdGVzdGVkIHRoYXQgaXQKd29ya3MgcHJvcGVybHkuCgpOYXZpZCwgYW55d2F5cyB0aGFu ayB5b3UgZm9yIHRoZSBwYXRjaC4gTmV4dCB0aW1lIHBsZWFzZSBjaGVjayBpZgpzb21lYm9keSBl bHNlIGFscmVhZHkgc2VudCBzaW1pbGFyIHBhdGNoZXMgYmVmb3JlIHlvdS4KX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZGV2ZWwgbWFpbGluZyBsaXN0CmRl dmVsQGxpbnV4ZHJpdmVycHJvamVjdC5vcmcKaHR0cDovL2RyaXZlcmRldi5saW51eGRyaXZlcnBy b2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vZHJpdmVyZGV2LWRldmVsCg==