From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751516AbdHDFEN (ORCPT ); Fri, 4 Aug 2017 01:04:13 -0400 Received: from mail-pf0-f193.google.com ([209.85.192.193]:38403 "EHLO mail-pf0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751321AbdHDFEL (ORCPT ); Fri, 4 Aug 2017 01:04:11 -0400 From: Arvind Yadav To: daniel.vetter@intel.com, jani.nikula@linux.intel.com, airlied@linux.ie Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH 03/11] drm: i915: i915_oa_bxt: constify attribute_group structures. Date: Fri, 4 Aug 2017 10:33:28 +0530 Message-Id: <1501823016-6779-4-git-send-email-arvind.yadav.cs@gmail.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1501823016-6779-1-git-send-email-arvind.yadav.cs@gmail.com> References: <1501823016-6779-1-git-send-email-arvind.yadav.cs@gmail.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org attribute_group are not supposed to change at runtime. All functions working with attribute_group provided by work with const attribute_group. So mark the non-const structs as const. Signed-off-by: Arvind Yadav --- drivers/gpu/drm/i915/i915_oa_bxt.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_oa_bxt.c b/drivers/gpu/drm/i915/i915_oa_bxt.c index 93864d8..db80045 100644 --- a/drivers/gpu/drm/i915/i915_oa_bxt.c +++ b/drivers/gpu/drm/i915/i915_oa_bxt.c @@ -2207,7 +2207,7 @@ int i915_oa_select_metric_set_bxt(struct drm_i915_private *dev_priv) NULL, }; -static struct attribute_group group_render_basic = { +static const struct attribute_group group_render_basic = { .name = "22b9519a-e9ba-4c41-8b54-f4f8ca14fa0a", .attrs = attrs_render_basic, }; @@ -2229,7 +2229,7 @@ int i915_oa_select_metric_set_bxt(struct drm_i915_private *dev_priv) NULL, }; -static struct attribute_group group_compute_basic = { +static const struct attribute_group group_compute_basic = { .name = "012d72cf-82a9-4d25-8ddf-74076fd30797", .attrs = attrs_compute_basic, }; @@ -2251,7 +2251,7 @@ int i915_oa_select_metric_set_bxt(struct drm_i915_private *dev_priv) NULL, }; -static struct attribute_group group_render_pipe_profile = { +static const struct attribute_group group_render_pipe_profile = { .name = "ce416533-e49e-4211-80af-ec513590a914", .attrs = attrs_render_pipe_profile, }; @@ -2273,7 +2273,7 @@ int i915_oa_select_metric_set_bxt(struct drm_i915_private *dev_priv) NULL, }; -static struct attribute_group group_memory_reads = { +static const struct attribute_group group_memory_reads = { .name = "398e2452-18d7-42d0-b241-e4d0a9148ada", .attrs = attrs_memory_reads, }; @@ -2295,7 +2295,7 @@ int i915_oa_select_metric_set_bxt(struct drm_i915_private *dev_priv) NULL, }; -static struct attribute_group group_memory_writes = { +static const struct attribute_group group_memory_writes = { .name = "d324a0d6-7269-4847-a5c2-6f71ddc7fed5", .attrs = attrs_memory_writes, }; @@ -2317,7 +2317,7 @@ int i915_oa_select_metric_set_bxt(struct drm_i915_private *dev_priv) NULL, }; -static struct attribute_group group_compute_extended = { +static const struct attribute_group group_compute_extended = { .name = "caf3596a-7bb1-4dec-b3b3-2a080d283b49", .attrs = attrs_compute_extended, }; @@ -2339,7 +2339,7 @@ int i915_oa_select_metric_set_bxt(struct drm_i915_private *dev_priv) NULL, }; -static struct attribute_group group_compute_l3_cache = { +static const struct attribute_group group_compute_l3_cache = { .name = "49b956e2-d5b9-47e0-9d8a-cee5e8cec527", .attrs = attrs_compute_l3_cache, }; @@ -2361,7 +2361,7 @@ int i915_oa_select_metric_set_bxt(struct drm_i915_private *dev_priv) NULL, }; -static struct attribute_group group_hdc_and_sf = { +static const struct attribute_group group_hdc_and_sf = { .name = "f64ef50a-bdba-4b35-8f09-203c13d8ee5a", .attrs = attrs_hdc_and_sf, }; @@ -2383,7 +2383,7 @@ int i915_oa_select_metric_set_bxt(struct drm_i915_private *dev_priv) NULL, }; -static struct attribute_group group_l3_1 = { +static const struct attribute_group group_l3_1 = { .name = "00ad5a41-7eab-4f7a-9103-49d411c67219", .attrs = attrs_l3_1, }; @@ -2405,7 +2405,7 @@ int i915_oa_select_metric_set_bxt(struct drm_i915_private *dev_priv) NULL, }; -static struct attribute_group group_rasterizer_and_pixel_backend = { +static const struct attribute_group group_rasterizer_and_pixel_backend = { .name = "46dc44ca-491c-4cc1-a951-e7b3e62bf02b", .attrs = attrs_rasterizer_and_pixel_backend, }; @@ -2427,7 +2427,7 @@ int i915_oa_select_metric_set_bxt(struct drm_i915_private *dev_priv) NULL, }; -static struct attribute_group group_sampler = { +static const struct attribute_group group_sampler = { .name = "8364e2a8-af63-40af-b0d5-42969a255654", .attrs = attrs_sampler, }; @@ -2449,7 +2449,7 @@ int i915_oa_select_metric_set_bxt(struct drm_i915_private *dev_priv) NULL, }; -static struct attribute_group group_tdl_1 = { +static const struct attribute_group group_tdl_1 = { .name = "175c8092-cb25-4d1e-8dc7-b4fdd39e2d92", .attrs = attrs_tdl_1, }; @@ -2471,7 +2471,7 @@ int i915_oa_select_metric_set_bxt(struct drm_i915_private *dev_priv) NULL, }; -static struct attribute_group group_tdl_2 = { +static const struct attribute_group group_tdl_2 = { .name = "d260f03f-b34d-4b49-a44e-436819117332", .attrs = attrs_tdl_2, }; @@ -2493,7 +2493,7 @@ int i915_oa_select_metric_set_bxt(struct drm_i915_private *dev_priv) NULL, }; -static struct attribute_group group_compute_extra = { +static const struct attribute_group group_compute_extra = { .name = "fa6ecf21-2cb8-4d0b-9308-6e4a7b4ca87a", .attrs = attrs_compute_extra, }; @@ -2515,7 +2515,7 @@ int i915_oa_select_metric_set_bxt(struct drm_i915_private *dev_priv) NULL, }; -static struct attribute_group group_test_oa = { +static const struct attribute_group group_test_oa = { .name = "5ee72f5c-092f-421e-8b70-225f7c3e9612", .attrs = attrs_test_oa, }; -- 1.9.1 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Arvind Yadav Subject: [PATCH 03/11] drm: i915: i915_oa_bxt: constify attribute_group structures. Date: Fri, 4 Aug 2017 10:33:28 +0530 Message-ID: <1501823016-6779-4-git-send-email-arvind.yadav.cs@gmail.com> References: <1501823016-6779-1-git-send-email-arvind.yadav.cs@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1501823016-6779-1-git-send-email-arvind.yadav.cs@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: daniel.vetter@intel.com, jani.nikula@linux.intel.com, airlied@linux.ie Cc: intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org YXR0cmlidXRlX2dyb3VwIGFyZSBub3Qgc3VwcG9zZWQgdG8gY2hhbmdlIGF0IHJ1bnRpbWUuIEFs bCBmdW5jdGlvbnMKd29ya2luZyB3aXRoIGF0dHJpYnV0ZV9ncm91cCBwcm92aWRlZCBieSA8bGlu dXgvc3lzZnMuaD4gd29yayB3aXRoCmNvbnN0IGF0dHJpYnV0ZV9ncm91cC4gU28gbWFyayB0aGUg bm9uLWNvbnN0IHN0cnVjdHMgYXMgY29uc3QuCgpTaWduZWQtb2ZmLWJ5OiBBcnZpbmQgWWFkYXYg PGFydmluZC55YWRhdi5jc0BnbWFpbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9vYV9ieHQuYyB8IDMwICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNo YW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfYnh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X29hX2J4dC5jCmluZGV4IDkzODY0ZDguLmRiODAwNDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfb2FfYnh0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9vYV9ieHQuYwpAQCAtMjIwNyw3ICsyMjA3LDcgQEAgaW50IGk5MTVfb2Ffc2VsZWN0X21ldHJp Y19zZXRfYnh0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlOVUxMLAogfTsK IAotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfcmVuZGVyX2Jhc2ljID0gewor c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfcmVuZGVyX2Jhc2ljID0g ewogCS5uYW1lID0gIjIyYjk1MTlhLWU5YmEtNGM0MS04YjU0LWY0ZjhjYTE0ZmEwYSIsCiAJLmF0 dHJzID0gIGF0dHJzX3JlbmRlcl9iYXNpYywKIH07CkBAIC0yMjI5LDcgKzIyMjksNyBAQCBpbnQg aTkxNV9vYV9zZWxlY3RfbWV0cmljX3NldF9ieHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQogCU5VTEwsCiB9OwogCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91 cF9jb21wdXRlX2Jhc2ljID0geworc3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAg Z3JvdXBfY29tcHV0ZV9iYXNpYyA9IHsKIAkubmFtZSA9ICIwMTJkNzJjZi04MmE5LTRkMjUtOGRk Zi03NDA3NmZkMzA3OTciLAogCS5hdHRycyA9ICBhdHRyc19jb21wdXRlX2Jhc2ljLAogfTsKQEAg LTIyNTEsNyArMjI1MSw3IEBAIGludCBpOTE1X29hX3NlbGVjdF9tZXRyaWNfc2V0X2J4dChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJTlVMTCwKIH07CiAKLXN0YXRpYyBzdHJ1 Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX3JlbmRlcl9waXBlX3Byb2ZpbGUgPSB7CitzdGF0aWMg Y29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF9yZW5kZXJfcGlwZV9wcm9maWxlID0g ewogCS5uYW1lID0gImNlNDE2NTMzLWU0OWUtNDIxMS04MGFmLWVjNTEzNTkwYTkxNCIsCiAJLmF0 dHJzID0gIGF0dHJzX3JlbmRlcl9waXBlX3Byb2ZpbGUsCiB9OwpAQCAtMjI3Myw3ICsyMjczLDcg QEAgaW50IGk5MTVfb2Ffc2VsZWN0X21ldHJpY19zZXRfYnh0KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKIAlOVUxMLAogfTsKIAotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3Jv dXAgZ3JvdXBfbWVtb3J5X3JlYWRzID0geworc3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVf Z3JvdXAgZ3JvdXBfbWVtb3J5X3JlYWRzID0gewogCS5uYW1lID0gIjM5OGUyNDUyLTE4ZDctNDJk MC1iMjQxLWU0ZDBhOTE0OGFkYSIsCiAJLmF0dHJzID0gIGF0dHJzX21lbW9yeV9yZWFkcywKIH07 CkBAIC0yMjk1LDcgKzIyOTUsNyBAQCBpbnQgaTkxNV9vYV9zZWxlY3RfbWV0cmljX3NldF9ieHQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCU5VTEwsCiB9OwogCi1zdGF0aWMg c3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF9tZW1vcnlfd3JpdGVzID0geworc3RhdGljIGNv bnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfbWVtb3J5X3dyaXRlcyA9IHsKIAkubmFt ZSA9ICJkMzI0YTBkNi03MjY5LTQ4NDctYTVjMi02ZjcxZGRjN2ZlZDUiLAogCS5hdHRycyA9ICBh dHRyc19tZW1vcnlfd3JpdGVzLAogfTsKQEAgLTIzMTcsNyArMjMxNyw3IEBAIGludCBpOTE1X29h X3NlbGVjdF9tZXRyaWNfc2V0X2J4dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp CiAJTlVMTCwKIH07CiAKLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX2NvbXB1 dGVfZXh0ZW5kZWQgPSB7CitzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91 cF9jb21wdXRlX2V4dGVuZGVkID0gewogCS5uYW1lID0gImNhZjM1OTZhLTdiYjEtNGRlYy1iM2Iz LTJhMDgwZDI4M2I0OSIsCiAJLmF0dHJzID0gIGF0dHJzX2NvbXB1dGVfZXh0ZW5kZWQsCiB9OwpA QCAtMjMzOSw3ICsyMzM5LDcgQEAgaW50IGk5MTVfb2Ffc2VsZWN0X21ldHJpY19zZXRfYnh0KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlOVUxMLAogfTsKIAotc3RhdGljIHN0 cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfY29tcHV0ZV9sM19jYWNoZSA9IHsKK3N0YXRpYyBj b25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX2NvbXB1dGVfbDNfY2FjaGUgPSB7CiAJ Lm5hbWUgPSAiNDliOTU2ZTItZDViOS00N2UwLTlkOGEtY2VlNWU4Y2VjNTI3IiwKIAkuYXR0cnMg PSAgYXR0cnNfY29tcHV0ZV9sM19jYWNoZSwKIH07CkBAIC0yMzYxLDcgKzIzNjEsNyBAQCBpbnQg aTkxNV9vYV9zZWxlY3RfbWV0cmljX3NldF9ieHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQogCU5VTEwsCiB9OwogCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91 cF9oZGNfYW5kX3NmID0geworc3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3Jv dXBfaGRjX2FuZF9zZiA9IHsKIAkubmFtZSA9ICJmNjRlZjUwYS1iZGJhLTRiMzUtOGYwOS0yMDNj MTNkOGVlNWEiLAogCS5hdHRycyA9ICBhdHRyc19oZGNfYW5kX3NmLAogfTsKQEAgLTIzODMsNyAr MjM4Myw3IEBAIGludCBpOTE1X29hX3NlbGVjdF9tZXRyaWNfc2V0X2J4dChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJTlVMTCwKIH07CiAKLXN0YXRpYyBzdHJ1Y3QgYXR0cmli dXRlX2dyb3VwIGdyb3VwX2wzXzEgPSB7CitzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9n cm91cCBncm91cF9sM18xID0gewogCS5uYW1lID0gIjAwYWQ1YTQxLTdlYWItNGY3YS05MTAzLTQ5 ZDQxMWM2NzIxOSIsCiAJLmF0dHJzID0gIGF0dHJzX2wzXzEsCiB9OwpAQCAtMjQwNSw3ICsyNDA1 LDcgQEAgaW50IGk5MTVfb2Ffc2VsZWN0X21ldHJpY19zZXRfYnh0KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKIAlOVUxMLAogfTsKIAotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVf Z3JvdXAgZ3JvdXBfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZCA9IHsKK3N0YXRpYyBjb25z dCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tl bmQgPSB7CiAJLm5hbWUgPSAiNDZkYzQ0Y2EtNDkxYy00Y2MxLWE5NTEtZTdiM2U2MmJmMDJiIiwK IAkuYXR0cnMgPSAgYXR0cnNfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZCwKIH07CkBAIC0y NDI3LDcgKzI0MjcsNyBAQCBpbnQgaTkxNV9vYV9zZWxlY3RfbWV0cmljX3NldF9ieHQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCU5VTEwsCiB9OwogCi1zdGF0aWMgc3RydWN0 IGF0dHJpYnV0ZV9ncm91cCBncm91cF9zYW1wbGVyID0geworc3RhdGljIGNvbnN0IHN0cnVjdCBh dHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfc2FtcGxlciA9IHsKIAkubmFtZSA9ICI4MzY0ZTJhOC1hZjYz LTQwYWYtYjBkNS00Mjk2OWEyNTU2NTQiLAogCS5hdHRycyA9ICBhdHRyc19zYW1wbGVyLAogfTsK QEAgLTI0NDksNyArMjQ0OSw3IEBAIGludCBpOTE1X29hX3NlbGVjdF9tZXRyaWNfc2V0X2J4dChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJTlVMTCwKIH07CiAKLXN0YXRpYyBz dHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX3RkbF8xID0geworc3RhdGljIGNvbnN0IHN0cnVj dCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfdGRsXzEgPSB7CiAJLm5hbWUgPSAiMTc1YzgwOTItY2Iy NS00ZDFlLThkYzctYjRmZGQzOWUyZDkyIiwKIAkuYXR0cnMgPSAgYXR0cnNfdGRsXzEsCiB9OwpA QCAtMjQ3MSw3ICsyNDcxLDcgQEAgaW50IGk5MTVfb2Ffc2VsZWN0X21ldHJpY19zZXRfYnh0KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlOVUxMLAogfTsKIAotc3RhdGljIHN0 cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfdGRsXzIgPSB7CitzdGF0aWMgY29uc3Qgc3RydWN0 IGF0dHJpYnV0ZV9ncm91cCBncm91cF90ZGxfMiA9IHsKIAkubmFtZSA9ICJkMjYwZjAzZi1iMzRk LTRiNDktYTQ0ZS00MzY4MTkxMTczMzIiLAogCS5hdHRycyA9ICBhdHRyc190ZGxfMiwKIH07CkBA IC0yNDkzLDcgKzI0OTMsNyBAQCBpbnQgaTkxNV9vYV9zZWxlY3RfbWV0cmljX3NldF9ieHQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCU5VTEwsCiB9OwogCi1zdGF0aWMgc3Ry dWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF9jb21wdXRlX2V4dHJhID0geworc3RhdGljIGNvbnN0 IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfY29tcHV0ZV9leHRyYSA9IHsKIAkubmFtZSA9 ICJmYTZlY2YyMS0yY2I4LTRkMGItOTMwOC02ZTRhN2I0Y2E4N2EiLAogCS5hdHRycyA9ICBhdHRy c19jb21wdXRlX2V4dHJhLAogfTsKQEAgLTI1MTUsNyArMjUxNSw3IEBAIGludCBpOTE1X29hX3Nl bGVjdF9tZXRyaWNfc2V0X2J4dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJ TlVMTCwKIH07CiAKLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX3Rlc3Rfb2Eg PSB7CitzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF90ZXN0X29hID0g ewogCS5uYW1lID0gIjVlZTcyZjVjLTA5MmYtNDIxZS04YjcwLTIyNWY3YzNlOTYxMiIsCiAJLmF0 dHJzID0gIGF0dHJzX3Rlc3Rfb2EsCiB9OwotLSAKMS45LjEKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=