From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lee Jones Subject: Re: [PATCH v16 00/11] Convert PWM period and duty cycle to u64 Date: Thu, 11 Jun 2020 18:57:57 +0100 Message-ID: <20200611175757.GB4106@dell> References: <20200611165505.GA9335@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Return-path: Content-Disposition: inline In-Reply-To: <20200611165505.GA9335@codeaurora.org> Sender: linux-kernel-owner@vger.kernel.org To: Guru Das Srinagesh Cc: linux-pwm@vger.kernel.org, Thierry Reding , Uwe =?iso-8859-1?Q?Kleine-K=F6nig?= , Subbaraman Narayanamurthy , David Collins , linux-kernel@vger.kernel.org, Joe Perches , Stephen Boyd , Arnd Bergmann , Geert Uytterhoeven , Guenter Roeck , Daniel Thompson , Dan Carpenter , linux-arm-kernel@lists.infradead.org List-Id: linux-pwm@vger.kernel.org On Thu, 11 Jun 2020, Guru Das Srinagesh wrote: > On Tue, Jun 02, 2020 at 03:31:04PM -0700, Guru Das Srinagesh wrote: > > Because period and duty cycle are defined in the PWM framework structs as ints > > with units of nanoseconds, the maximum time duration that can be set is limited > > to ~2.147 seconds. Consequently, applications desiring to set greater time > > periods via the PWM framework are not be able to do so - like, for instance, > > causing an LED to blink at an interval of 5 seconds. > > > > Redefining the period and duty cycle struct members in the core PWM framework > > structs as u64 values will enable larger time durations to be set and solve > > this problem. Such a change to the framework mandates that drivers using these > > struct members (and corresponding helper functions) also be modified correctly > > in order to prevent compilation errors. > > > > This patch series introduces the changes to all the drivers first, followed by > > the framework change at the very end so that when the latter is applied, all > > the drivers are in good shape and there are no compilation errors. > > > > Changes from v15: > > - Rebased to tip of for-next. > > > > Changes from v14: > > - Collected Uwe's Acked-by for the pwm core patch. > > - Addressed comments in pwm-clps711x.c. > > > > Changes from v13: > > - Pruned cc-list and added same (reduced) set of reviewers to all patches. > > - Added Lee Jones' Acked-by to the pwm_bl.c patch. > > - Added Jani Nikula's Acked-by to intel-panel.c patch. > > - Added Stephen Boyd's Acked-by to pwm-clk.c patch. > > - Addressed Geert's review comments in clps711x.c patch. > > > > Changes from v12: > > - Rebased to tip of for-next > > - Collected Acked-by for sun4i > > - Reworked patch for intel-panel.c due to rebase, dropped Jani's Acked-by as > > a result > > > > Changes from v11: > > - Rebased to tip of for-next. > > - Collected "Acked-by:" for v7 (unchanged) of pwm: sifive: [4] > > - Squished stm32-lp.c change with final patch in series > > - sun4i: Used nsecs_to_jiffies() > > - imx27: Added overflow handling logic > > - clps711x: Corrected the if condition for skipping the division > > - clk: pwm: Reverted to v8 version, added check to prevent division-by-zero > > > > Changes from v10: > > - Carefully added back all the "Reviewed-by: " and "Acked-by: " tags received > > so far that had gotten missed in v9. No other changes. > > > > Changes from v9: > > - Gathered the received "Reviewed-by: " tag > > - Added back the clk-pwm.c patch because kbuild test robot complained [3] > > and addressed received review comments. > > - clps711x: Addressed review comments. > > > > Changes from v8: > > - Gathered all received "Acked-by: " and "Reviewed-by: " tags > > - Dropped patch to clk-pwm.c for reasons mentiond in [2] > > - Expanded audience of unreviewed patches > > > > Changes from v7: > > - Changed commit messages of all patches to be brief and to the point. > > - Added explanation of change in cover letter. > > - Dropped change to pwm-sti.c as upon review it was unnecessary as struct > > pwm_capture is not being modified in the PWM core. > > > > Changes from v6: > > - Split out the driver changes out into separate patches, one patch per file > > for ease of reviewing. > > > > Changes from v5: > > - Dropped the conversion of struct pwm_capture to u64 for reasons mentioned > > in https://www.spinics.net/lists/linux-pwm/msg11541.html > > > > Changes from v4: > > - Split the patch into two: one for changes to the drivers, and the actual > > switch to u64 for ease of reverting should the need arise. > > - Re-examined the patch and made the following corrections: > > * intel_panel.c: > > DIV64_U64_ROUND_UP -> DIV_ROUND_UP_ULL (as only the numerator would be > > 64-bit in this case). > > * pwm-sti.c: > > do_div -> div_u64 (do_div is optimized only for x86 architectures, and > > div_u64's comment block suggests to use this as much as possible). > > > > Changes from v3: > > - Rebased to current tip of for-next. > > > > Changes from v2: > > - Fixed %u -> %llu in a dev_dbg in pwm-stm32-lp.c, thanks to kbuild test robot > > - Added a couple of fixes to pwm-imx-tpm.c and pwm-sifive.c > > > > Changes from v1: > > - Fixed compilation errors seen when compiling for different archs. > > > > v1: > > - Reworked the change pushed upstream earlier [1] so as to not add an > > extension to an obsolete API. With this change, pwm_ops->apply() can be > > used to set pwm_state parameters as usual. > > > > [1] https://lore.kernel.org/lkml/20190916140048.GB7488@ulmo/ > > [2] https://lore.kernel.org/lkml/20200312190859.GA19605@xxxxxxxxxxxxxx/ > > [3] https://www.spinics.net/lists/linux-pwm/msg11906.html > > [4] https://www.spinics.net/lists/linux-pwm/msg11986.html > > > > Guru Das Srinagesh (11): > > drm/i915: Use 64-bit division macro > > hwmon: pwm-fan: Use 64-bit division macro > > ir-rx51: Use 64-bit division macro > > pwm: clps711x: Use 64-bit division macro > > pwm: pwm-imx-tpm: Use 64-bit division macro > > pwm: imx27: Use 64-bit division macro and function > > pwm: sifive: Use 64-bit division macro > > pwm: sun4i: Use nsecs_to_jiffies to avoid a division > > backlight: pwm_bl: Use 64-bit division function > > clk: pwm: Use 64-bit division function > > pwm: core: Convert period and duty cycle to u64 > > > > drivers/clk/clk-pwm.c | 7 ++++- > > drivers/gpu/drm/i915/display/intel_panel.c | 2 +- > > drivers/hwmon/pwm-fan.c | 2 +- > > drivers/media/rc/ir-rx51.c | 3 +- > > drivers/pwm/core.c | 14 ++++----- > > drivers/pwm/pwm-clps711x.c | 2 +- > > drivers/pwm/pwm-imx-tpm.c | 2 +- > > drivers/pwm/pwm-imx27.c | 48 ++++++++++++++++++++++++++---- > > drivers/pwm/pwm-sifive.c | 2 +- > > drivers/pwm/pwm-stm32-lp.c | 2 +- > > drivers/pwm/pwm-sun4i.c | 2 +- > > drivers/pwm/sysfs.c | 8 ++--- > > drivers/video/backlight/pwm_bl.c | 3 +- > > include/linux/pwm.h | 12 ++++---- > > 14 files changed, 77 insertions(+), 32 deletions(-) > > > > -- > > Hello Thierry, Uwe, Lee, > > Gentle reminder for this patch series :) Earlier discussions on next > steps were as per [1] and [2]. > > [1] https://lore.kernel.org/lkml/20200522125028.GG2163848@ulmo/ > [2] https://lore.kernel.org/lkml/20200526065935.GA3628@dell/ Not much happens during the merge-window. I don't have insider info on this, but my best guess is that Thierry will pick this up once -rc1 has been released. -- Lee Jones [李琼斯] Senior Technical Lead - Developer Services Linaro.org │ Open source software for Arm SoCs Follow Linaro: Facebook | Twitter | Blog 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=-0.8 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E0432C433E0 for ; Thu, 11 Jun 2020 17:58:11 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 B3D6720792 for ; Thu, 11 Jun 2020 17:58:11 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="bU/cryOk"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="RMBV6f6V" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B3D6720792 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=z8KBSpIuC+ZlWvVcYZD94/FF0vtls1oV8OkySv2qo58=; b=bU/cryOkab+wie JgpprLYBr1zzc4FF60tPeVI7atmBkxQi+mFpxWPGZfDcpp+O4OJTlsovNrha/W+hiYQz/PmX3rOeW idpc8qgHsa1PNf18pnDNFfrqmhlLN1toCKzVUIr0CPucRLtFrPWhEGEghJdBqq4RwalgFZVIsCyW0 M4hPlI6AwXacJ4VJvjuvTIySUy7Le5vwye98xJx8Gh6UPpitz3rQXTKoUZ6mpb1NxXfWu+2z+pVD3 xEzFtNAtKS9WiYSIm3BBUvCuHzg64/EtV12Igu9YQIiGGZqqycOy2RtPTfhPsG7q65KI+lumbqbpw w267Qag5CwRSwFPMSxzg==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jjRSs-0001uB-3i; Thu, 11 Jun 2020 17:58:10 +0000 Received: from mail-wr1-x443.google.com ([2a00:1450:4864:20::443]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jjRSo-0001t2-AG for linux-arm-kernel@lists.infradead.org; Thu, 11 Jun 2020 17:58:08 +0000 Received: by mail-wr1-x443.google.com with SMTP id e1so7105934wrt.5 for ; Thu, 11 Jun 2020 10:58:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to; bh=qqQFrQ3hX/shpvXWwGDhgGnBTSC3S+c/PjVDVDzS3rE=; b=RMBV6f6Vh3v68zzMMHOq3d5aiyVunV3JQHjQMLCK5mcpOiReTC01XShfGzGrwrQ9le a4+jjLn21/X563twetGXCugC9XtXko++QhuEG+0XaUmOcHXbW86y6YWyI0SOV7Azz0l7 W2tymZ5SNSJ/jocsB7hHRw3qS6PhW57rMECOhlc86I/a4T8dxlY7kAM5iLRfgsjbxAFO R5NMtjlIia1/y5Gxb/WOAds91fNOnixD4OHfzKqvWw9iYCyIxyZ8F8ID8w7XL3IeqyiQ igq2mb4Bl2nogRTuPNp3f9UoK3AS5ItEK82wtNms1G63k/FPVEsO2L4y2JcDRgt8EO1w aRqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to; bh=qqQFrQ3hX/shpvXWwGDhgGnBTSC3S+c/PjVDVDzS3rE=; b=r+VZNUIfGl9XcBE6+x5L6OA0GPHrEpl64XAEUL2WOzIfdoHOWJ/1B7jNVx+qdKJJHe 2S42pTcykgqvVrt6FvqHh0qt7apO5WmpJRAHhiR60bebM1bCMZqKQHI+CpaT1HF/d285 nppyGR6w4MdihVVRMHDBoV0W5QQu97xgbt3Q1aihaond4RAxUv/uRPV8RTrK7+2aHHO0 w16rVE7QpT15KP2g3J91JiYttWSOhj3nc9W7Rnq4Y4XU293eocYoDvEZTlwwH1+UqEMl VhEPLxPueq5fbD9ti1WXmUYa8c5HDhNm3uPmOa3JQ/DGxNmJh46isKy/7FV7Mwr1TVIB KMpg== X-Gm-Message-State: AOAM533ZK8TFlt6kUCbO/NBJmg93j6PMrJdlCsR4tXJs/xgVRhQ07lcL 8coLA7nrSnqwJTEYHVkhw/AUpA== X-Google-Smtp-Source: ABdhPJwF+ldQ32ipjGqMh+nSh0lfcFoy4UZXkOMJ83ncLJVxf71MRIhMXWJgqpQ0qjiTsPT0o/sTXg== X-Received: by 2002:adf:a1c1:: with SMTP id v1mr11031281wrv.205.1591898280460; Thu, 11 Jun 2020 10:58:00 -0700 (PDT) Received: from dell ([2.27.167.101]) by smtp.gmail.com with ESMTPSA id c81sm5358903wmd.42.2020.06.11.10.57.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Jun 2020 10:57:59 -0700 (PDT) Date: Thu, 11 Jun 2020 18:57:57 +0100 From: Lee Jones To: Guru Das Srinagesh Subject: Re: [PATCH v16 00/11] Convert PWM period and duty cycle to u64 Message-ID: <20200611175757.GB4106@dell> References: <20200611165505.GA9335@codeaurora.org> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20200611165505.GA9335@codeaurora.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200611_105806_423546_98F87C5D X-CRM114-Status: GOOD ( 27.49 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-arm-kernel@lists.infradead.org, linux-pwm@vger.kernel.org, Daniel Thompson , Arnd Bergmann , David Collins , Stephen Boyd , linux-kernel@vger.kernel.org, Thierry Reding , Geert Uytterhoeven , Dan Carpenter , Uwe =?iso-8859-1?Q?Kleine-K=F6nig?= , Joe Perches , Subbaraman Narayanamurthy , Guenter Roeck Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gVGh1LCAxMSBKdW4gMjAyMCwgR3VydSBEYXMgU3JpbmFnZXNoIHdyb3RlOgoKPiBPbiBUdWUs IEp1biAwMiwgMjAyMCBhdCAwMzozMTowNFBNIC0wNzAwLCBHdXJ1IERhcyBTcmluYWdlc2ggd3Jv dGU6Cj4gPiBCZWNhdXNlIHBlcmlvZCBhbmQgZHV0eSBjeWNsZSBhcmUgZGVmaW5lZCBpbiB0aGUg UFdNIGZyYW1ld29yayBzdHJ1Y3RzIGFzIGludHMKPiA+IHdpdGggdW5pdHMgb2YgbmFub3NlY29u ZHMsIHRoZSBtYXhpbXVtIHRpbWUgZHVyYXRpb24gdGhhdCBjYW4gYmUgc2V0IGlzIGxpbWl0ZWQK PiA+IHRvIH4yLjE0NyBzZWNvbmRzLiBDb25zZXF1ZW50bHksIGFwcGxpY2F0aW9ucyBkZXNpcmlu ZyB0byBzZXQgZ3JlYXRlciB0aW1lCj4gPiBwZXJpb2RzIHZpYSB0aGUgUFdNIGZyYW1ld29yayBh cmUgbm90IGJlIGFibGUgdG8gZG8gc28gLSBsaWtlLCBmb3IgaW5zdGFuY2UsCj4gPiBjYXVzaW5n IGFuIExFRCB0byBibGluayBhdCBhbiBpbnRlcnZhbCBvZiA1IHNlY29uZHMuCj4gPiAKPiA+IFJl ZGVmaW5pbmcgdGhlIHBlcmlvZCBhbmQgZHV0eSBjeWNsZSBzdHJ1Y3QgbWVtYmVycyBpbiB0aGUg Y29yZSBQV00gZnJhbWV3b3JrCj4gPiBzdHJ1Y3RzIGFzIHU2NCB2YWx1ZXMgd2lsbCBlbmFibGUg bGFyZ2VyIHRpbWUgZHVyYXRpb25zIHRvIGJlIHNldCBhbmQgc29sdmUKPiA+IHRoaXMgcHJvYmxl bS4gU3VjaCBhIGNoYW5nZSB0byB0aGUgZnJhbWV3b3JrIG1hbmRhdGVzIHRoYXQgZHJpdmVycyB1 c2luZyB0aGVzZQo+ID4gc3RydWN0IG1lbWJlcnMgKGFuZCBjb3JyZXNwb25kaW5nIGhlbHBlciBm dW5jdGlvbnMpIGFsc28gYmUgbW9kaWZpZWQgY29ycmVjdGx5Cj4gPiBpbiBvcmRlciB0byBwcmV2 ZW50IGNvbXBpbGF0aW9uIGVycm9ycy4KPiA+IAo+ID4gVGhpcyBwYXRjaCBzZXJpZXMgaW50cm9k dWNlcyB0aGUgY2hhbmdlcyB0byBhbGwgdGhlIGRyaXZlcnMgZmlyc3QsIGZvbGxvd2VkIGJ5Cj4g PiB0aGUgZnJhbWV3b3JrIGNoYW5nZSBhdCB0aGUgdmVyeSBlbmQgc28gdGhhdCB3aGVuIHRoZSBs YXR0ZXIgaXMgYXBwbGllZCwgYWxsCj4gPiB0aGUgZHJpdmVycyBhcmUgaW4gZ29vZCBzaGFwZSBh bmQgdGhlcmUgYXJlIG5vIGNvbXBpbGF0aW9uIGVycm9ycy4KPiA+IAo+ID4gQ2hhbmdlcyBmcm9t IHYxNToKPiA+ICAgLSAgUmViYXNlZCB0byB0aXAgb2YgZm9yLW5leHQuCj4gPiAKPiA+IENoYW5n ZXMgZnJvbSB2MTQ6Cj4gPiAgIC0gQ29sbGVjdGVkIFV3ZSdzIEFja2VkLWJ5IGZvciB0aGUgcHdt IGNvcmUgcGF0Y2guCj4gPiAgIC0gQWRkcmVzc2VkIGNvbW1lbnRzIGluIHB3bS1jbHBzNzExeC5j Lgo+ID4gCj4gPiBDaGFuZ2VzIGZyb20gdjEzOgo+ID4gICAtIFBydW5lZCBjYy1saXN0IGFuZCBh ZGRlZCBzYW1lIChyZWR1Y2VkKSBzZXQgb2YgcmV2aWV3ZXJzIHRvIGFsbCBwYXRjaGVzLgo+ID4g ICAtIEFkZGVkIExlZSBKb25lcycgQWNrZWQtYnkgdG8gdGhlIHB3bV9ibC5jIHBhdGNoLgo+ID4g ICAtIEFkZGVkIEphbmkgTmlrdWxhJ3MgQWNrZWQtYnkgdG8gaW50ZWwtcGFuZWwuYyBwYXRjaC4K PiA+ICAgLSBBZGRlZCBTdGVwaGVuIEJveWQncyBBY2tlZC1ieSB0byBwd20tY2xrLmMgcGF0Y2gu Cj4gPiAgIC0gQWRkcmVzc2VkIEdlZXJ0J3MgcmV2aWV3IGNvbW1lbnRzIGluIGNscHM3MTF4LmMg cGF0Y2guCj4gPiAKPiA+IENoYW5nZXMgZnJvbSB2MTI6Cj4gPiAgIC0gUmViYXNlZCB0byB0aXAg b2YgZm9yLW5leHQKPiA+ICAgLSBDb2xsZWN0ZWQgQWNrZWQtYnkgZm9yIHN1bjRpCj4gPiAgIC0g UmV3b3JrZWQgcGF0Y2ggZm9yIGludGVsLXBhbmVsLmMgZHVlIHRvIHJlYmFzZSwgZHJvcHBlZCBK YW5pJ3MgQWNrZWQtYnkgYXMKPiA+ICAgICBhIHJlc3VsdAo+ID4gCj4gPiBDaGFuZ2VzIGZyb20g djExOgo+ID4gICAtIFJlYmFzZWQgdG8gdGlwIG9mIGZvci1uZXh0Lgo+ID4gICAtIENvbGxlY3Rl ZCAiQWNrZWQtYnk6IiBmb3IgdjcgKHVuY2hhbmdlZCkgb2YgcHdtOiBzaWZpdmU6IFs0XQo+ID4g ICAtIFNxdWlzaGVkIHN0bTMyLWxwLmMgY2hhbmdlIHdpdGggZmluYWwgcGF0Y2ggaW4gc2VyaWVz Cj4gPiAgIC0gc3VuNGk6IFVzZWQgbnNlY3NfdG9famlmZmllcygpCj4gPiAgIC0gaW14Mjc6IEFk ZGVkIG92ZXJmbG93IGhhbmRsaW5nIGxvZ2ljCj4gPiAgIC0gY2xwczcxMXg6IENvcnJlY3RlZCB0 aGUgaWYgY29uZGl0aW9uIGZvciBza2lwcGluZyB0aGUgZGl2aXNpb24KPiA+ICAgLSBjbGs6IHB3 bTogUmV2ZXJ0ZWQgdG8gdjggdmVyc2lvbiwgYWRkZWQgY2hlY2sgdG8gcHJldmVudCBkaXZpc2lv bi1ieS16ZXJvCj4gPiAKPiA+IENoYW5nZXMgZnJvbSB2MTA6Cj4gPiAgIC0gQ2FyZWZ1bGx5IGFk ZGVkIGJhY2sgYWxsIHRoZSAiUmV2aWV3ZWQtYnk6ICIgYW5kICJBY2tlZC1ieTogIiB0YWdzIHJl Y2VpdmVkCj4gPiAgICAgc28gZmFyIHRoYXQgaGFkIGdvdHRlbiBtaXNzZWQgaW4gdjkuIE5vIG90 aGVyIGNoYW5nZXMuCj4gPiAKPiA+IENoYW5nZXMgZnJvbSB2OToKPiA+ICAgLSBHYXRoZXJlZCB0 aGUgcmVjZWl2ZWQgIlJldmlld2VkLWJ5OiAiIHRhZwo+ID4gICAtIEFkZGVkIGJhY2sgdGhlIGNs ay1wd20uYyBwYXRjaCBiZWNhdXNlIGtidWlsZCB0ZXN0IHJvYm90IGNvbXBsYWluZWQgWzNdCj4g PiAgICAgYW5kIGFkZHJlc3NlZCByZWNlaXZlZCByZXZpZXcgY29tbWVudHMuCj4gPiAgIC0gY2xw czcxMXg6IEFkZHJlc3NlZCByZXZpZXcgY29tbWVudHMuCj4gPiAKPiA+IENoYW5nZXMgZnJvbSB2 ODoKPiA+ICAgLSBHYXRoZXJlZCBhbGwgcmVjZWl2ZWQgIkFja2VkLWJ5OiAiIGFuZCAiUmV2aWV3 ZWQtYnk6ICIgdGFncwo+ID4gICAtIERyb3BwZWQgcGF0Y2ggdG8gY2xrLXB3bS5jIGZvciByZWFz b25zIG1lbnRpb25kIGluIFsyXQo+ID4gICAtIEV4cGFuZGVkIGF1ZGllbmNlIG9mIHVucmV2aWV3 ZWQgcGF0Y2hlcwo+ID4gCj4gPiBDaGFuZ2VzIGZyb20gdjc6Cj4gPiAgIC0gQ2hhbmdlZCBjb21t aXQgbWVzc2FnZXMgb2YgYWxsIHBhdGNoZXMgdG8gYmUgYnJpZWYgYW5kIHRvIHRoZSBwb2ludC4K PiA+ICAgLSBBZGRlZCBleHBsYW5hdGlvbiBvZiBjaGFuZ2UgaW4gY292ZXIgbGV0dGVyLgo+ID4g ICAtIERyb3BwZWQgY2hhbmdlIHRvIHB3bS1zdGkuYyBhcyB1cG9uIHJldmlldyBpdCB3YXMgdW5u ZWNlc3NhcnkgYXMgc3RydWN0Cj4gPiAgICAgcHdtX2NhcHR1cmUgaXMgbm90IGJlaW5nIG1vZGlm aWVkIGluIHRoZSBQV00gY29yZS4KPiA+IAo+ID4gQ2hhbmdlcyBmcm9tIHY2Ogo+ID4gICAtIFNw bGl0IG91dCB0aGUgZHJpdmVyIGNoYW5nZXMgb3V0IGludG8gc2VwYXJhdGUgcGF0Y2hlcywgb25l IHBhdGNoIHBlciBmaWxlCj4gPiAgICAgZm9yIGVhc2Ugb2YgcmV2aWV3aW5nLgo+ID4gCj4gPiBD aGFuZ2VzIGZyb20gdjU6Cj4gPiAgIC0gRHJvcHBlZCB0aGUgY29udmVyc2lvbiBvZiBzdHJ1Y3Qg cHdtX2NhcHR1cmUgdG8gdTY0IGZvciByZWFzb25zIG1lbnRpb25lZAo+ID4gICAgIGluIGh0dHBz Oi8vd3d3LnNwaW5pY3MubmV0L2xpc3RzL2xpbnV4LXB3bS9tc2cxMTU0MS5odG1sCj4gPiAKPiA+ IENoYW5nZXMgZnJvbSB2NDoKPiA+ICAgLSBTcGxpdCB0aGUgcGF0Y2ggaW50byB0d286IG9uZSBm b3IgY2hhbmdlcyB0byB0aGUgZHJpdmVycywgYW5kIHRoZSBhY3R1YWwKPiA+ICAgICBzd2l0Y2gg dG8gdTY0IGZvciBlYXNlIG9mIHJldmVydGluZyBzaG91bGQgdGhlIG5lZWQgYXJpc2UuCj4gPiAg IC0gUmUtZXhhbWluZWQgdGhlIHBhdGNoIGFuZCBtYWRlIHRoZSBmb2xsb3dpbmcgY29ycmVjdGlv bnM6Cj4gPiAgICAgICAqIGludGVsX3BhbmVsLmM6Cj4gPiAJRElWNjRfVTY0X1JPVU5EX1VQIC0+ IERJVl9ST1VORF9VUF9VTEwgKGFzIG9ubHkgdGhlIG51bWVyYXRvciB3b3VsZCBiZQo+ID4gCTY0 LWJpdCBpbiB0aGlzIGNhc2UpLgo+ID4gICAgICAgKiBwd20tc3RpLmM6Cj4gPiAJZG9fZGl2IC0+ IGRpdl91NjQgKGRvX2RpdiBpcyBvcHRpbWl6ZWQgb25seSBmb3IgeDg2IGFyY2hpdGVjdHVyZXMs IGFuZAo+ID4gCWRpdl91NjQncyBjb21tZW50IGJsb2NrIHN1Z2dlc3RzIHRvIHVzZSB0aGlzIGFz IG11Y2ggYXMgcG9zc2libGUpLgo+ID4gCj4gPiBDaGFuZ2VzIGZyb20gdjM6Cj4gPiAgIC0gUmVi YXNlZCB0byBjdXJyZW50IHRpcCBvZiBmb3ItbmV4dC4KPiA+IAo+ID4gQ2hhbmdlcyBmcm9tIHYy Ogo+ID4gICAtIEZpeGVkICV1IC0+ICVsbHUgaW4gYSBkZXZfZGJnIGluIHB3bS1zdG0zMi1scC5j LCB0aGFua3MgdG8ga2J1aWxkIHRlc3Qgcm9ib3QKPiA+ICAgLSBBZGRlZCBhIGNvdXBsZSBvZiBm aXhlcyB0byBwd20taW14LXRwbS5jIGFuZCBwd20tc2lmaXZlLmMKPiA+IAo+ID4gQ2hhbmdlcyBm cm9tIHYxOgo+ID4gICAtIEZpeGVkIGNvbXBpbGF0aW9uIGVycm9ycyBzZWVuIHdoZW4gY29tcGls aW5nIGZvciBkaWZmZXJlbnQgYXJjaHMuCj4gPiAKPiA+IHYxOgo+ID4gICAtIFJld29ya2VkIHRo ZSBjaGFuZ2UgcHVzaGVkIHVwc3RyZWFtIGVhcmxpZXIgWzFdIHNvIGFzIHRvIG5vdCBhZGQgYW4K PiA+ICAgICBleHRlbnNpb24gdG8gYW4gb2Jzb2xldGUgQVBJLiBXaXRoIHRoaXMgY2hhbmdlLCBw d21fb3BzLT5hcHBseSgpIGNhbiBiZQo+ID4gICAgIHVzZWQgdG8gc2V0IHB3bV9zdGF0ZSBwYXJh bWV0ZXJzIGFzIHVzdWFsLgo+ID4gCj4gPiBbMV0gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGtt bC8yMDE5MDkxNjE0MDA0OC5HQjc0ODhAdWxtby8KPiA+IFsyXSBodHRwczovL2xvcmUua2VybmVs Lm9yZy9sa21sLzIwMjAwMzEyMTkwODU5LkdBMTk2MDVAeHh4eHh4eHh4eHh4eHgvCj4gPiBbM10g aHR0cHM6Ly93d3cuc3Bpbmljcy5uZXQvbGlzdHMvbGludXgtcHdtL21zZzExOTA2Lmh0bWwKPiA+ IFs0XSBodHRwczovL3d3dy5zcGluaWNzLm5ldC9saXN0cy9saW51eC1wd20vbXNnMTE5ODYuaHRt bAo+ID4gCj4gPiBHdXJ1IERhcyBTcmluYWdlc2ggKDExKToKPiA+ICAgZHJtL2k5MTU6IFVzZSA2 NC1iaXQgZGl2aXNpb24gbWFjcm8KPiA+ICAgaHdtb246IHB3bS1mYW46IFVzZSA2NC1iaXQgZGl2 aXNpb24gbWFjcm8KPiA+ICAgaXItcng1MTogVXNlIDY0LWJpdCBkaXZpc2lvbiBtYWNybwo+ID4g ICBwd206IGNscHM3MTF4OiBVc2UgNjQtYml0IGRpdmlzaW9uIG1hY3JvCj4gPiAgIHB3bTogcHdt LWlteC10cG06IFVzZSA2NC1iaXQgZGl2aXNpb24gbWFjcm8KPiA+ICAgcHdtOiBpbXgyNzogVXNl IDY0LWJpdCBkaXZpc2lvbiBtYWNybyBhbmQgZnVuY3Rpb24KPiA+ICAgcHdtOiBzaWZpdmU6IFVz ZSA2NC1iaXQgZGl2aXNpb24gbWFjcm8KPiA+ICAgcHdtOiBzdW40aTogVXNlIG5zZWNzX3RvX2pp ZmZpZXMgdG8gYXZvaWQgYSBkaXZpc2lvbgo+ID4gICBiYWNrbGlnaHQ6IHB3bV9ibDogVXNlIDY0 LWJpdCBkaXZpc2lvbiBmdW5jdGlvbgo+ID4gICBjbGs6IHB3bTogVXNlIDY0LWJpdCBkaXZpc2lv biBmdW5jdGlvbgo+ID4gICBwd206IGNvcmU6IENvbnZlcnQgcGVyaW9kIGFuZCBkdXR5IGN5Y2xl IHRvIHU2NAo+ID4gCj4gPiAgZHJpdmVycy9jbGsvY2xrLXB3bS5jICAgICAgICAgICAgICAgICAg ICAgIHwgIDcgKysrKy0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Bh bmVsLmMgfCAgMiArLQo+ID4gIGRyaXZlcnMvaHdtb24vcHdtLWZhbi5jICAgICAgICAgICAgICAg ICAgICB8ICAyICstCj4gPiAgZHJpdmVycy9tZWRpYS9yYy9pci1yeDUxLmMgICAgICAgICAgICAg ICAgIHwgIDMgKy0KPiA+ICBkcml2ZXJzL3B3bS9jb3JlLmMgICAgICAgICAgICAgICAgICAgICAg ICAgfCAxNCArKysrLS0tLS0KPiA+ICBkcml2ZXJzL3B3bS9wd20tY2xwczcxMXguYyAgICAgICAg ICAgICAgICAgfCAgMiArLQo+ID4gIGRyaXZlcnMvcHdtL3B3bS1pbXgtdHBtLmMgICAgICAgICAg ICAgICAgICB8ICAyICstCj4gPiAgZHJpdmVycy9wd20vcHdtLWlteDI3LmMgICAgICAgICAgICAg ICAgICAgIHwgNDggKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tCj4gPiAgZHJpdmVycy9w d20vcHdtLXNpZml2ZS5jICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KPiA+ICBkcml2ZXJzL3B3 bS9wd20tc3RtMzItbHAuYyAgICAgICAgICAgICAgICAgfCAgMiArLQo+ID4gIGRyaXZlcnMvcHdt L3B3bS1zdW40aS5jICAgICAgICAgICAgICAgICAgICB8ICAyICstCj4gPiAgZHJpdmVycy9wd20v c3lzZnMuYyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDggKystLS0KPiA+ICBkcml2ZXJzL3Zp ZGVvL2JhY2tsaWdodC9wd21fYmwuYyAgICAgICAgICAgfCAgMyArLQo+ID4gIGluY2x1ZGUvbGlu dXgvcHdtLmggICAgICAgICAgICAgICAgICAgICAgICB8IDEyICsrKystLS0tCj4gPiAgMTQgZmls ZXMgY2hhbmdlZCwgNzcgaW5zZXJ0aW9ucygrKSwgMzIgZGVsZXRpb25zKC0pCj4gPiAKPiA+IC0t IAo+IAo+IEhlbGxvIFRoaWVycnksIFV3ZSwgTGVlLAo+IAo+IEdlbnRsZSByZW1pbmRlciBmb3Ig dGhpcyBwYXRjaCBzZXJpZXMgOikgRWFybGllciBkaXNjdXNzaW9ucyBvbiBuZXh0Cj4gc3RlcHMg d2VyZSBhcyBwZXIgWzFdIGFuZCBbMl0uCj4gCj4gWzFdIGh0dHBzOi8vbG9yZS5rZXJuZWwub3Jn L2xrbWwvMjAyMDA1MjIxMjUwMjguR0cyMTYzODQ4QHVsbW8vCj4gWzJdIGh0dHBzOi8vbG9yZS5r ZXJuZWwub3JnL2xrbWwvMjAyMDA1MjYwNjU5MzUuR0EzNjI4QGRlbGwvCgpOb3QgbXVjaCBoYXBw ZW5zIGR1cmluZyB0aGUgbWVyZ2Utd2luZG93LgoKSSBkb24ndCBoYXZlIGluc2lkZXIgaW5mbyBv biB0aGlzLCBidXQgbXkgYmVzdCBndWVzcyBpcyB0aGF0IFRoaWVycnkKd2lsbCBwaWNrIHRoaXMg dXAgb25jZSAtcmMxIGhhcyBiZWVuIHJlbGVhc2VkLgoKLS0gCkxlZSBKb25lcyBb5p2O55C85pav XQpTZW5pb3IgVGVjaG5pY2FsIExlYWQgLSBEZXZlbG9wZXIgU2VydmljZXMKTGluYXJvLm9yZyDi lIIgT3BlbiBzb3VyY2Ugc29mdHdhcmUgZm9yIEFybSBTb0NzCkZvbGxvdyBMaW5hcm86IEZhY2Vi b29rIHwgVHdpdHRlciB8IEJsb2cKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJu ZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK