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 Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id E2482C4167B for ; Thu, 29 Dec 2022 15:49:21 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231325AbiL2PtV (ORCPT ); Thu, 29 Dec 2022 10:49:21 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39878 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229831AbiL2PtT (ORCPT ); Thu, 29 Dec 2022 10:49:19 -0500 Received: from mail-wm1-x32b.google.com (mail-wm1-x32b.google.com [IPv6:2a00:1450:4864:20::32b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5269D13DD2 for ; Thu, 29 Dec 2022 07:49:17 -0800 (PST) Received: by mail-wm1-x32b.google.com with SMTP id g25-20020a7bc4d9000000b003d97c8d4941so7940531wmk.4 for ; Thu, 29 Dec 2022 07:49:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=OcHD+68JKivFTNKn8cO/CBcZZAARu6aqYEBF3jaYXXY=; b=wov4t/Dp6UbuGwqLvgc4vMkRfInBScyFz5VfMRxkFh9qxszC85YMpmSHny1gXPrVsS g32f4reKOVtWQMJ8tXOoxbkRbjZCZ1m5SUTFsEeNVyo3qe4fzbUv7mzyONTfBVWN/ygF VCv0lEJwgaS8OQpQtH1AmoCHEbO8WSsmtXkJwQMKbTVyQhOUnzPNh5aURydy23AIStHq 7IW6dSqOnW/cLTthbtNHuMUuvGcSnsN4MUGA1Z6MgEXnnWMIIXtkOr33tpHLHB4icRu/ EKo8oFJTgXBFfNfzRgvO95/Kqn05D0Qao4eQAzZ4kyo7nkuPJ1BIRmhp7+wC87dbet08 SVKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=OcHD+68JKivFTNKn8cO/CBcZZAARu6aqYEBF3jaYXXY=; b=V+5fJa0ltiqbq20VDBnyYlH7zU5ytN9AvK/QKG4AHzykwIbBkEN7mtq7+dKcNlEmyJ h4RkmTTqqo8/QaPpRwCXHFInF7XfRJgG8u5GvZEKA5T21zCx0vwFV0lO8/KYHq9ioRuu cXb565NOoRYUsrX2CCdZEdksQNeYUNPq5GzRa3mqnA7HUiDhrCM/hR3UIju+W2mPi8FS L/B2AfiLPMi3oTW3vHPp/E8d/TqjxCVWWnXX9EaCtBnK02g1y9ECotQe+dRBorzVe+Qh b+89O74sJFHLWlBhtseS9t6u30RzCoXDECSSEgpDIuMNEl7pVljLCT+uhxvCPlywISMa qsCA== X-Gm-Message-State: AFqh2kraoPJjeQLKtj1kKN49QZnzzemH7WgWamC353zhcOv9D54PaXE8 wcgjo+szyHj9F5IT63omdzuPMg== X-Google-Smtp-Source: AMrXdXtGRRh5vsIthQvg5P5kw1KkeD+SE+4wsU583Cr1cJtcHYeGo9tuCyPGsdjApkph9RNzbdVSaQ== X-Received: by 2002:a05:600c:3b02:b0:3c7:18:b339 with SMTP id m2-20020a05600c3b0200b003c70018b339mr25804533wms.37.1672328955770; Thu, 29 Dec 2022 07:49:15 -0800 (PST) Received: from [192.168.10.46] (146725694.box.freepro.com. [130.180.211.218]) by smtp.googlemail.com with ESMTPSA id d10-20020a05600c3aca00b003d34faca949sm24381530wms.39.2022.12.29.07.49.14 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 29 Dec 2022 07:49:15 -0800 (PST) Message-ID: <0644aede-c281-3919-50e0-4466f6587d81@linaro.org> Date: Thu, 29 Dec 2022 16:49:13 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.2 Subject: Re: [PATCH v7 4/4] thermal: mediatek: add another get_temp ops for thermal sensors Content-Language: en-US To: Amjad Ouled-Ameur , "Rafael J. Wysocki" , Amit Kucheria , Rob Herring , Krzysztof Kozlowski , Zhang Rui Cc: AngeloGioacchino Del Regno , Fabien Parent , Matthias Brugger , Markus Schneider-Pargmann , linux-pm@vger.kernel.org, Rob Herring , Michael Kao , linux-kernel@vger.kernel.org, Hsin-Yi Wang , linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, devicetree@vger.kernel.org References: <20221018-up-i350-thermal-bringup-v7-0-ebf08ff2eddb@baylibre.com> <20221018-up-i350-thermal-bringup-v7-4-ebf08ff2eddb@baylibre.com> <4121bb6b-30db-7a23-f4c8-40afdda7a0b5@linaro.org> From: Daniel Lezcano In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 06/12/2022 10:18, Amjad Ouled-Ameur wrote: > Hi Daniel, > On Mon Dec 5, 2022 at 8:39 PM CET, Daniel Lezcano wrote: >> >> Hi Amjad, >> >> >> On 05/12/2022 11:41, Amjad Ouled-Ameur wrote: >> >> [ ... ] >> >>>>> @@ -1161,11 +1197,24 @@ static int mtk_thermal_probe(struct platform_device *pdev) >>>>> >>>>> platform_set_drvdata(pdev, mt); >>>>> >>>>> - tzdev = devm_thermal_of_zone_register(&pdev->dev, 0, mt, >>>>> - &mtk_thermal_ops); >>>>> - if (IS_ERR(tzdev)) { >>>>> - ret = PTR_ERR(tzdev); >>>>> - goto err_disable_clk_peri_therm; >>>>> + for (i = 0; i < mt->conf->num_sensors + 1; i++) { >>>>> + tz = devm_kmalloc(&pdev->dev, sizeof(*tz), GFP_KERNEL); >>>>> + if (!tz) >>>>> + return -ENOMEM; >>>>> + >>>>> + tz->mt = mt; >>>>> + tz->id = i; >>>>> + >>>>> + tzdev = devm_thermal_of_zone_register(&pdev->dev, i, tz, (i == 0) ? >>>>> + &mtk_thermal_ops : >>>>> + &mtk_thermal_sensor_ops); >>>> >>>> Here you use again the aggregation >>> I addressed this concern in V6, could you please take a look and let me >>> know what you think [0]. >>> >>> [0]: https://lore.kernel.org/all/5eb0cdc2-e9f9-dd42-bf80-b7dcd8bcc196@baylibre.com/ >> >> May I misunderstanding but AFAICS, this patch is setting the >> mtk_thermal_ops if the sensor id is zero. The get_temp is computing the >> max temperature in this ops which is what we don't want to do. > > Correct, but I think that is out of scope of this patchset, as the current > driver already uses mtk_thermal_ops for sensor 0. The focus of this patchset > is to add support for the other sensors. > > Besides, what do you suggest as a clean implementation if the current one > no longer meets thermal core requirements ? IIUC, there is a sensor per couple of cores. 1 x 2Bigs, 1 x 2Bigs, 1 x 4 Little, right ? If it is the case, then a thermal zone per sensor with the trip points and a cooling device for each of them. The two thermal zones for the big will share the same cooling device. The little thermal zone will have its own cooling device. If there is the GPU, then its own cooling device also with devfreq. >> Linaro.org │ Open source software for ARM SoCs >> >> Follow Linaro: Facebook | >> Twitter | >> Blog > -- 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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id B9CA2C4332F for ; Thu, 29 Dec 2022 15:50:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:From:References:Cc:To:Subject: MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=yJalU9m7IXt9QxWs0/P4+cq8DdSXB8Ex8dw8j9imHqw=; b=Gr91OMuyTCZeo2 /pFf/8t5Eje0JgRxKqGbvj9Psu+TISLkZoY9t85fb6li8pQGAtOWbcPtfhwoykEZnN5EErD/GuidR qV48gp5A5XaaxZ/1A+RU9DGSlnnkyXwEI5ZdFfgpcZka1hTeGE36rSjOQNFNFykgnJvgCz1OgrhN2 ZkbiOzC/xQyhCD2KfoB+OyKGASjgLkjRTOFfR3M+/Hx4JH6ekIITLSKiG7hSlqbMcr83Ya6xGMuuU Nn7XpLMUBPFXNzmm4fSMyBMRPVc/NgCQU34uEzU6Q7kQEhAwD6i0pB66AFwYldFWuW32vPfnB0okm TzxUMTYc2lAIx0JhIqWA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1pAv9o-00HA3B-F7; Thu, 29 Dec 2022 15:49:24 +0000 Received: from mail-wm1-x333.google.com ([2a00:1450:4864:20::333]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1pAv9j-00HA0T-6X for linux-arm-kernel@lists.infradead.org; Thu, 29 Dec 2022 15:49:21 +0000 Received: by mail-wm1-x333.google.com with SMTP id ay40so13426186wmb.2 for ; Thu, 29 Dec 2022 07:49:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=OcHD+68JKivFTNKn8cO/CBcZZAARu6aqYEBF3jaYXXY=; b=wov4t/Dp6UbuGwqLvgc4vMkRfInBScyFz5VfMRxkFh9qxszC85YMpmSHny1gXPrVsS g32f4reKOVtWQMJ8tXOoxbkRbjZCZ1m5SUTFsEeNVyo3qe4fzbUv7mzyONTfBVWN/ygF VCv0lEJwgaS8OQpQtH1AmoCHEbO8WSsmtXkJwQMKbTVyQhOUnzPNh5aURydy23AIStHq 7IW6dSqOnW/cLTthbtNHuMUuvGcSnsN4MUGA1Z6MgEXnnWMIIXtkOr33tpHLHB4icRu/ EKo8oFJTgXBFfNfzRgvO95/Kqn05D0Qao4eQAzZ4kyo7nkuPJ1BIRmhp7+wC87dbet08 SVKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=OcHD+68JKivFTNKn8cO/CBcZZAARu6aqYEBF3jaYXXY=; b=6ISNOP/bwvwMJrLYZnMIlVmxUMZD5NPHAUFkFtRLvMSxHNFuFZUy4hf1eFM7RV0NXQ qKBF7ER2jXiIo3abQua6RGNxCZfrHDTUJV+jFOOxLd28XgPbMMgUPw8SN6GkYwpPx+sc dWMbxsKIpa0OejGITKapl/cyPdjHD4bO5SsEtJQTGpgAD/xorc8NvCKwbadodj+XNFyH y0oAHlhJDPm64/cauR39vkZJvUn9OfvPKMCEQCR7cEvQF9+4zKm/DsVTIh0q/HFJpv+2 h8XB1E8fO+C3AmaGdIRhikdC3UigLqRB/I8A60MrE2phAIdVU6K160q7eUts6hp8Z4/n 966A== X-Gm-Message-State: AFqh2kpMzkvP1AU6jP0de3rZMZ9b31toquHDtKePxzy7T5Qt6ABIK/Xp 5VnJ9y3hmqmpe/zUECh/epXegA== X-Google-Smtp-Source: AMrXdXtGRRh5vsIthQvg5P5kw1KkeD+SE+4wsU583Cr1cJtcHYeGo9tuCyPGsdjApkph9RNzbdVSaQ== X-Received: by 2002:a05:600c:3b02:b0:3c7:18:b339 with SMTP id m2-20020a05600c3b0200b003c70018b339mr25804533wms.37.1672328955770; Thu, 29 Dec 2022 07:49:15 -0800 (PST) Received: from [192.168.10.46] (146725694.box.freepro.com. [130.180.211.218]) by smtp.googlemail.com with ESMTPSA id d10-20020a05600c3aca00b003d34faca949sm24381530wms.39.2022.12.29.07.49.14 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 29 Dec 2022 07:49:15 -0800 (PST) Message-ID: <0644aede-c281-3919-50e0-4466f6587d81@linaro.org> Date: Thu, 29 Dec 2022 16:49:13 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.2 Subject: Re: [PATCH v7 4/4] thermal: mediatek: add another get_temp ops for thermal sensors Content-Language: en-US To: Amjad Ouled-Ameur , "Rafael J. Wysocki" , Amit Kucheria , Rob Herring , Krzysztof Kozlowski , Zhang Rui Cc: AngeloGioacchino Del Regno , Fabien Parent , Matthias Brugger , Markus Schneider-Pargmann , linux-pm@vger.kernel.org, Rob Herring , Michael Kao , linux-kernel@vger.kernel.org, Hsin-Yi Wang , linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, devicetree@vger.kernel.org References: <20221018-up-i350-thermal-bringup-v7-0-ebf08ff2eddb@baylibre.com> <20221018-up-i350-thermal-bringup-v7-4-ebf08ff2eddb@baylibre.com> <4121bb6b-30db-7a23-f4c8-40afdda7a0b5@linaro.org> From: Daniel Lezcano In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221229_074919_346002_B3FAFEA2 X-CRM114-Status: GOOD ( 23.46 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gMDYvMTIvMjAyMiAxMDoxOCwgQW1qYWQgT3VsZWQtQW1ldXIgd3JvdGU6Cj4gSGkgRGFuaWVs LAo+IE9uIE1vbiBEZWMgNSwgMjAyMiBhdCA4OjM5IFBNIENFVCwgRGFuaWVsIExlemNhbm8gd3Jv dGU6Cj4+Cj4+IEhpIEFtamFkLAo+Pgo+Pgo+PiBPbiAwNS8xMi8yMDIyIDExOjQxLCBBbWphZCBP dWxlZC1BbWV1ciB3cm90ZToKPj4KPj4gWyAuLi4gXQo+Pgo+Pj4+PiBAQCAtMTE2MSwxMSArMTE5 NywyNCBAQCBzdGF0aWMgaW50IG10a190aGVybWFsX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2UgKnBkZXYpCj4+Pj4+ICAgICAKPj4+Pj4gICAgIAlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2 LCBtdCk7Cj4+Pj4+ICAgICAKPj4+Pj4gLQl0emRldiA9IGRldm1fdGhlcm1hbF9vZl96b25lX3Jl Z2lzdGVyKCZwZGV2LT5kZXYsIDAsIG10LAo+Pj4+PiAtCQkJCQkgICAgICAmbXRrX3RoZXJtYWxf b3BzKTsKPj4+Pj4gLQlpZiAoSVNfRVJSKHR6ZGV2KSkgewo+Pj4+PiAtCQlyZXQgPSBQVFJfRVJS KHR6ZGV2KTsKPj4+Pj4gLQkJZ290byBlcnJfZGlzYWJsZV9jbGtfcGVyaV90aGVybTsKPj4+Pj4g Kwlmb3IgKGkgPSAwOyBpIDwgbXQtPmNvbmYtPm51bV9zZW5zb3JzICsgMTsgaSsrKSB7Cj4+Pj4+ ICsJCXR6ID0gZGV2bV9rbWFsbG9jKCZwZGV2LT5kZXYsIHNpemVvZigqdHopLCBHRlBfS0VSTkVM KTsKPj4+Pj4gKwkJaWYgKCF0eikKPj4+Pj4gKwkJCXJldHVybiAtRU5PTUVNOwo+Pj4+PiArCj4+ Pj4+ICsJCXR6LT5tdCA9IG10Owo+Pj4+PiArCQl0ei0+aWQgPSBpOwo+Pj4+PiArCj4+Pj4+ICsJ CXR6ZGV2ID0gZGV2bV90aGVybWFsX29mX3pvbmVfcmVnaXN0ZXIoJnBkZXYtPmRldiwgaSwgdHos IChpID09IDApID8KPj4+Pj4gKwkJCQkJCQkgICAgICZtdGtfdGhlcm1hbF9vcHMgOgo+Pj4+PiAr CQkJCQkJCSAgICAgJm10a190aGVybWFsX3NlbnNvcl9vcHMpOwo+Pj4+Cj4+Pj4gSGVyZSB5b3Ug dXNlIGFnYWluIHRoZSBhZ2dyZWdhdGlvbgo+Pj4gSSBhZGRyZXNzZWQgdGhpcyBjb25jZXJuIGlu IFY2LCBjb3VsZCB5b3UgcGxlYXNlIHRha2UgYSBsb29rIGFuZCBsZXQgbWUKPj4+IGtub3cgd2hh dCB5b3UgdGhpbmsgWzBdLgo+Pj4KPj4+IFswXTogaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvYWxs LzVlYjBjZGMyLWU5ZjktZGQ0Mi1iZjgwLWI3ZGNkOGJjYzE5NkBiYXlsaWJyZS5jb20vCj4+Cj4+ IE1heSBJIG1pc3VuZGVyc3RhbmRpbmcgYnV0IEFGQUlDUywgdGhpcyBwYXRjaCBpcyBzZXR0aW5n IHRoZQo+PiBtdGtfdGhlcm1hbF9vcHMgaWYgdGhlIHNlbnNvciBpZCBpcyB6ZXJvLiBUaGUgZ2V0 X3RlbXAgaXMgY29tcHV0aW5nIHRoZQo+PiBtYXggdGVtcGVyYXR1cmUgaW4gdGhpcyBvcHMgd2hp Y2ggaXMgd2hhdCB3ZSBkb24ndCB3YW50IHRvIGRvLgo+IAo+IENvcnJlY3QsIGJ1dCBJIHRoaW5r IHRoYXQgaXMgb3V0IG9mIHNjb3BlIG9mIHRoaXMgcGF0Y2hzZXQsIGFzIHRoZSBjdXJyZW50Cj4g ZHJpdmVyIGFscmVhZHkgdXNlcyBtdGtfdGhlcm1hbF9vcHMgZm9yIHNlbnNvciAwLiBUaGUgZm9j dXMgb2YgdGhpcyBwYXRjaHNldAo+IGlzIHRvIGFkZCBzdXBwb3J0IGZvciB0aGUgb3RoZXIgc2Vu c29ycy4KPiAKPiBCZXNpZGVzLCB3aGF0IGRvIHlvdSBzdWdnZXN0IGFzIGEgY2xlYW4gaW1wbGVt ZW50YXRpb24gaWYgdGhlIGN1cnJlbnQgb25lCj4gbm8gbG9uZ2VyIG1lZXRzIHRoZXJtYWwgY29y ZSByZXF1aXJlbWVudHMgPwoKSUlVQywgdGhlcmUgaXMgYSBzZW5zb3IgcGVyIGNvdXBsZSBvZiBj b3Jlcy4gMSB4IDJCaWdzLCAxIHggMkJpZ3MsIDEgeCA0IApMaXR0bGUsIHJpZ2h0ID8KCklmIGl0 IGlzIHRoZSBjYXNlLCB0aGVuIGEgdGhlcm1hbCB6b25lIHBlciBzZW5zb3Igd2l0aCB0aGUgdHJp cCBwb2ludHMgCmFuZCBhIGNvb2xpbmcgZGV2aWNlIGZvciBlYWNoIG9mIHRoZW0uCgpUaGUgdHdv IHRoZXJtYWwgem9uZXMgZm9yIHRoZSBiaWcgd2lsbCBzaGFyZSB0aGUgc2FtZSBjb29saW5nIGRl dmljZS4gClRoZSBsaXR0bGUgdGhlcm1hbCB6b25lIHdpbGwgaGF2ZSBpdHMgb3duIGNvb2xpbmcg ZGV2aWNlLgoKSWYgdGhlcmUgaXMgdGhlIEdQVSwgdGhlbiBpdHMgb3duIGNvb2xpbmcgZGV2aWNl IGFsc28gd2l0aCBkZXZmcmVxLgoKCj4+IDxodHRwOi8vd3d3LmxpbmFyby5vcmcvPiBMaW5hcm8u b3JnIOKUgiBPcGVuIHNvdXJjZSBzb2Z0d2FyZSBmb3IgQVJNIFNvQ3MKPj4KPj4gRm9sbG93IExp bmFybzogIDxodHRwOi8vd3d3LmZhY2Vib29rLmNvbS9wYWdlcy9MaW5hcm8+IEZhY2Vib29rIHwK Pj4gPGh0dHA6Ly90d2l0dGVyLmNvbS8jIS9saW5hcm9vcmc+IFR3aXR0ZXIgfAo+PiA8aHR0cDov L3d3dy5saW5hcm8ub3JnL2xpbmFyby1ibG9nLz4gQmxvZwo+IAoKLS0gCjxodHRwOi8vd3d3Lmxp bmFyby5vcmcvPiBMaW5hcm8ub3JnIOKUgiBPcGVuIHNvdXJjZSBzb2Z0d2FyZSBmb3IgQVJNIFNv Q3MKCkZvbGxvdyBMaW5hcm86ICA8aHR0cDovL3d3dy5mYWNlYm9vay5jb20vcGFnZXMvTGluYXJv PiBGYWNlYm9vayB8CjxodHRwOi8vdHdpdHRlci5jb20vIyEvbGluYXJvb3JnPiBUd2l0dGVyIHwK PGh0dHA6Ly93d3cubGluYXJvLm9yZy9saW5hcm8tYmxvZy8+IEJsb2cKCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxp bmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3Rz LmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==