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 kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5A351C021A0 for ; Sat, 15 Feb 2025 19:52:41 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 7AFFF280018; Sat, 15 Feb 2025 14:52:40 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 75F45280016; Sat, 15 Feb 2025 14:52:40 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 53D16280018; Sat, 15 Feb 2025 14:52:40 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 15EE7280016 for ; Sat, 15 Feb 2025 14:52:40 -0500 (EST) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id B80A982004 for ; Sat, 15 Feb 2025 19:52:39 +0000 (UTC) X-FDA: 83123226438.24.F6C3070 Received: from mail-lj1-f173.google.com (mail-lj1-f173.google.com [209.85.208.173]) by imf18.hostedemail.com (Postfix) with ESMTP id 1A3591C0004 for ; Sat, 15 Feb 2025 19:52:36 +0000 (UTC) Authentication-Results: imf18.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=VsXcTZQ2; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf18.hostedemail.com: domain of tamird@gmail.com designates 209.85.208.173 as permitted sender) smtp.mailfrom=tamird@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1739649157; a=rsa-sha256; cv=none; b=a7yAyehS7zCd4dDTqGrq/tGOhnsEvOylQCJO0nLtarZ8LE7ux3IGYBEyKGATRyVAgCXnUu xtIXUj+Pu8fCtbQfsAgvbbCo+JQCKn1sTTkdIYtaidTKu/2rS7NirgJ+7lLyJ0VQgRuZEF WSBJQGOgt3z5//l1/loRECJEbEtTubU= ARC-Authentication-Results: i=1; imf18.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=VsXcTZQ2; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf18.hostedemail.com: domain of tamird@gmail.com designates 209.85.208.173 as permitted sender) smtp.mailfrom=tamird@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1739649157; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=ad7CMnp9fqn0MQfvnbiE1uDmVF8frBp6hXwMNEN1aIg=; b=KSR7ApnJd79ZCtEE8Go4fvfikDt9RVSHQ0dsewYYmJ1n2R/i6+K+s19Vb12we8+Zi2lB2X En+MfiPk9gvqDtNl13oYu+O5CWSfOulzoiSvGi8n3i4aes92rLwrRAcfh6SBGODm1wY6oQ mxUHYslqW/FKrArsuBw79uqmSGeOLnI= Received: by mail-lj1-f173.google.com with SMTP id 38308e7fff4ca-30797730cbdso33139881fa.3 for ; Sat, 15 Feb 2025 11:52:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739649155; x=1740253955; darn=kvack.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=ad7CMnp9fqn0MQfvnbiE1uDmVF8frBp6hXwMNEN1aIg=; b=VsXcTZQ2ER+CgwSeRoFs4c6c8SSlI6bDudeIC/cyCjKlnGQyIhCHVSKoNY6Vc9DiWC iNKZxCyIvkQ54W+LSbRRhbmv3c6rIKI9ewueZCBmnWQ9J8i6KKSzz1LllPkJ9EoE13HJ xPGzURkwVLzQd4gY8wC5waJYJ7gxbi4W5vodMnyC+snmv8u0EPG6t3+XM5YMetFNrvwO vqVFtOrh9h4ndPAZdYOj3lNXa026xiIFQe43W0OnfN1Vn+X0iQSxv62kcjHwQKLI/n7j hiYnAFQqhFLg4FmKUXatoi3j3DDk497lEIWIvcMHQpaL17VhUK2AMfmNzJflRwvEZ3rY AH/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739649155; x=1740253955; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=ad7CMnp9fqn0MQfvnbiE1uDmVF8frBp6hXwMNEN1aIg=; b=RUG5G/NTDMRBHLDc/li0iDNPNBIee/+P4T67Hun/nL0no6vp3F0kBCctDefca/cYfG +IR1tNcdTmMjnZMafJZvz3PI92rdvdD+F6BD28ulPh0uzp+0C0fIGzvHF7wBbua3IC7l 86vLDb9Wj2SeLkZp1EdoRfLGDWu8dbKgNBybaSTMheITq2gzrUpyvlk9bVs1BIOAKN41 1yJr8WrDMPYaMkZKYHxcAgKXJSkrnm+rq6Gv3npYIqLiquynHYVgGiudF2TJQVjPKpPS ZuQboS+SNgTmwTxhjRCO0vU8UN8UQD/fSNYgIbxNJWVWcxLDHfFV8J7R2GpFPmafiNJH MJMA== X-Forwarded-Encrypted: i=1; AJvYcCWkKR9/5pMypYJ30aX8gn5/dQXYzucrlMAcvEL/l7yBDa4oMxEIrzSXVheVMDXfPoHh288Iig04/A==@kvack.org X-Gm-Message-State: AOJu0YxXVLwV/8mqiSWcu5tIj+Tp7uKiQUy6XBR8rsKIyPj850Ew8LU4 +LqsHNEt12KedMc1Rnj2pNGa0Jv+vmYe3BVjOYwKNQiVchSjCddvhE3ZYeKFI/ExPvXOAfeiE1w nT1U8DaHkgOBY1kkPtuQM5TZUs0w= X-Gm-Gg: ASbGncv+6NfH/6/J9kDpBuWoFCmpnTfed+sJXbGE283uaNylv/19mks1M6J8DV9AxKc vDS2DFArH2HUkC7SkUxBiK0yERuiQ0AbXGn7PKuLD/HgmMH6dYKEo/IdtCWe/3gwea4bHDfgtmZ xSiV3GXfyC7SlerXEiXivyAmH4UyWi4w== X-Google-Smtp-Source: AGHT+IHAm8YUt/hN4+n7JB8TyHNUuVOdMpt5ggT9ZAd3RwtFmRn4p2aMNtYt9jnp6z1D8AR1kjT7YNplR2a8ab6Ae1k= X-Received: by 2002:a2e:380f:0:b0:308:f5f0:c438 with SMTP id 38308e7fff4ca-30927b26c49mr11204361fa.31.1739649154098; Sat, 15 Feb 2025 11:52:34 -0800 (PST) MIME-Version: 1.0 References: <20250214-scanf-kunit-convert-v8-3-5ea50f95f83c@gmail.com> <202502160245.KUrryBJR-lkp@intel.com> In-Reply-To: <202502160245.KUrryBJR-lkp@intel.com> From: Tamir Duberstein Date: Sat, 15 Feb 2025 14:52:22 -0500 X-Gm-Features: AWEUYZlPwu2hKwQp_uUAdexnFMRPGnYeSAEaMbw6LQQpYC01qcPaSD9ouHfRSPU Message-ID: Subject: Re: [PATCH v8 3/4] scanf: convert self-test to KUnit To: kernel test robot Cc: David Gow , Petr Mladek , Steven Rostedt , Andy Shevchenko , Rasmus Villemoes , Sergey Senozhatsky , Andrew Morton , Shuah Khan , oe-kbuild-all@lists.linux.dev, Linux Memory Management List , Geert Uytterhoeven , linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org Content-Type: multipart/alternative; boundary="000000000000dd2ecf062e33a18b" X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: 1A3591C0004 X-Stat-Signature: a4jgk5nwh6nir67ezufs4zetjegeywpo X-Rspam-User: X-HE-Tag: 1739649156-262399 X-HE-Meta: U2FsdGVkX1++QN+yKZoZ18kMDdeEV8OD3tIDAayWfwq2jOp7rYXCwxqJIIztUkNVPgF+bMyhR3L88bJHDThDNeHgEVu66vot4kzyswvETsFwlcUh5zUl9mfquiMM9jbMCXTwWUc8JPVYGc9IK4tk/RpccxXj8UVLmE8zQIj4HGZjP+Gd511wtIAgKHNO1p853VuIj0//uQstTsJ2UbdOmMdGyo6idBowjH48FFh1PfjKQ6tce9zBgv4ckX3TrxZe/++aKXIVVhRyl0f1PXptUDrYyMsjNl9hYLKwGlOAI652AbrWlcXyByfP01AmggrF8FYBaLxTc/x1gGmVqwdUDvwufCuEGUJeP1nejB5K0ADthKJkzy1qOEsv/8jZw7NVoT4W8ZV8ABeUCoxLDHK0Q+M2AgC07gJpBTcMx/eHangUWDE6ypIwYsrJ07z6j9UEeN9oewXsJT7pivn1fYzuS6iS/sLdFc7JRk9S7dvHnR+dnQRAON6StC/ww2ler2nop9N+XkwIBEswLRfHXEvVUXE9/H3wKZqDV4/yJId45ZgPOoyBIrlu1ZCXWVxy/l4WdIalrgL0ep9usaFwtz7UpXPklzpVthyQMp1NeVlFzd4ew4UKTk0zojJqp6FGakmfela7VC0RhlbkTlAoly3OoFxLmKM4aPe1uWoLMaeuXd3fBQejUWTTqWFKOFLRZxyCMJME3duQcXcurkmdml6p3jHtkt9IApuKmc6xWKTU05HBq13av82UwvaVFoG5Bk/4DU8yNO8iNWw+5H7jsB6NamZiV6j50ahgN/s42qJWFTKzqsVK+NzIuVkrkWqtxsAW4xiqP0HKH9ndHAs4Ubch2PE2FpaPIme35AUuswDTrZ01YwekdgvIpGkuF8Se9smImjqHIqNkR/RYomlPO05PfyfoA5XeMr4vMqo2hjabrTV5LEqHjPoXpI7nePwjIbKQldCEk5gj39aBFKZc4VW V84dwTKC z+eeJ80tSNm79Ox/A/MeYKKzPlqnJtpbxuaIlrXTbX3gqBf0upRtAL1DdyNVeQnUJcbKwG8T3QiSSLyOgMVpTLWNAv4NKAx1/9JGBrKgBZ86JOFZY95xz6htueyGUC96N7mx4y59DV20+e+YhfOMBUbFsuJTyKnCtayCGSP64ArfPwEr65RWxSg763Nubjf0x13CZ2zDVKc5X8ThPj5u1ePgF9BuD5o1tcZJIisWOmBRfd6O8WZeroP9xerQjyGGWx7mJ6JVqfqx9g4f5G9AJDmbDNzvN4tMOYuR+ogAcX+wfjj4d0H3yx1JwdnQ/oRMOIFIo9HIlXw4UvuSzpgZTuSPjIgEQf0jvFr8SUq0V7rlSzyWNVLuxlyj9wHfjVdYYOHXlf4XjQxrdVYEJNrQrCKNWryaknVknLAiHP3Je1JyU5wPYC7K+xunBw7TlNp/8rUlgNhE6IZZWgrIOQX28TXoXBCxZD2iL48CBsp68/He3lnhhClgM23dHnq1jfr70ALk1vUun+z2tj1iTnQN61DmEEtLVytkTwfYcfcsl3w7vX9J3sW1jJP7m72stuAcHL7sL6uMvgcYKTyg= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000009, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: --000000000000dd2ecf062e33a18b Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sat, Feb 15, 2025 at 1:51=E2=80=AFPM kernel test robot w= rote: > > Hi Tamir, > > kernel test robot noticed the following build warnings: > > [auto build test WARNING on 7b7a883c7f4de1ee5040bd1c32aabaafde54d209] > > url: https://github.com/intel-lab-lkp/linux/commits/Tamir-Duberstein/scanf-impli= cate-test-line-in-failure-messages/20250215-002302 > base: 7b7a883c7f4de1ee5040bd1c32aabaafde54d209 > patch link: https://lore.kernel.org/r/20250214-scanf-kunit-convert-v8-3-5ea50f95f83c%40= gmail.com > patch subject: [PATCH v8 3/4] scanf: convert self-test to KUnit > config: sh-randconfig-002-20250216 ( https://download.01.org/0day-ci/archive/20250216/202502160245.KUrryBJR-lkp@= intel.com/config ) > compiler: sh4-linux-gcc (GCC) 14.2.0 > reproduce (this is a W=3D1 build): ( https://download.01.org/0day-ci/archive/20250216/202502160245.KUrryBJR-lkp@= intel.com/reproduce ) > > If you fix the issue in a separate patch/commit (i.e. not just a new version of > the same patch/commit), kindly add following tags > | Reported-by: kernel test robot > | Closes: https://lore.kernel.org/oe-kbuild-all/202502160245.KUrryBJR-lkp@intel.com/ > > All warnings (new ones prefixed by >>): > > In file included from : > lib/tests/scanf_kunit.c: In function 'numbers_list_ll': > >> include/linux/compiler.h:197:61: warning: function 'numbers_list_ll' might be a candidate for 'gnu_scanf' format attribute [-Wsuggest-attribute=3Dformat] > 197 | #define __BUILD_BUG_ON_ZERO_MSG(e, msg) ((int)sizeof(struct {_Static_assert(!(e), msg);})) > | ^ > include/linux/compiler_types.h:522:23: note: in definition of macro '__compiletime_assert' > 522 | if (!(condition)) \ > | ^~~~~~~~~ > include/linux/compiler_types.h:542:9: note: in expansion of macro '_compiletime_assert' > 542 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) > | ^~~~~~~~~~~~~~~~~~~ > include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert' > 39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) > | ^~~~~~~~~~~~~~~~~~ > include/linux/build_bug.h:50:9: note: in expansion of macro 'BUILD_BUG_ON_MSG' > 50 | BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition) > | ^~~~~~~~~~~~~~~~ > lib/tests/scanf_kunit.c:333:9: note: in expansion of macro 'BUILD_BUG_ON' > 333 | BUILD_BUG_ON(ARRAY_SIZE(arr) !=3D 8); \ > | ^~~~~~~~~~~~ > include/linux/compiler.h:202:33: note: in expansion of macro '__BUILD_BUG_ON_ZERO_MSG' > 202 | #define __must_be_array(a) __BUILD_BUG_ON_ZERO_MSG(!__is_array(a), \ > | ^~~~~~~~~~~~~~~~~~~~~~~ > include/linux/array_size.h:11:59: note: in expansion of macro '__must_be_array' > 11 | #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr)) > | ^~~~~~~~~~~~~~~ > lib/tests/scanf_kunit.c:333:22: note: in expansion of macro 'ARRAY_SIZE' > 333 | BUILD_BUG_ON(ARRAY_SIZE(arr) !=3D 8); \ > | ^~~~~~~~~~ > lib/tests/scanf_kunit.c:356:9: note: in expansion of macro 'test_array_8' > 356 | test_array_8(fn, expect, test_buffer, fmt_buffer, result); \ > | ^~~~~~~~~~~~ > lib/tests/scanf_kunit.c:390:9: note: in expansion of macro 'numbers_list_8' > 390 | numbers_list_8(unsigned long long, "%llu", delim, "llu", check_ull); > | ^~~~~~~~~~~~~~ > >> include/linux/compiler.h:197:61: warning: function 'numbers_list_ll' might be a candidate for 'gnu_scanf' format attribute [-Wsuggest-attribute=3Dformat] > 197 | #define __BUILD_BUG_ON_ZERO_MSG(e, msg) ((int)sizeof(struct {_Static_assert(!(e), msg);})) > | ^ > include/linux/compiler_types.h:522:23: note: in definition of macro '__compiletime_assert' > 522 | if (!(condition)) \ > | ^~~~~~~~~ > include/linux/compiler_types.h:542:9: note: in expansion of macro '_compiletime_assert' > 542 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) > | ^~~~~~~~~~~~~~~~~~~ > include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert' > 39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) > | ^~~~~~~~~~~~~~~~~~ > include/linux/build_bug.h:50:9: note: in expansion of macro 'BUILD_BUG_ON_MSG' > 50 | BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition) > | ^~~~~~~~~~~~~~~~ > lib/tests/scanf_kunit.c:333:9: note: in expansion of macro 'BUILD_BUG_ON' > 333 | BUILD_BUG_ON(ARRAY_SIZE(arr) !=3D 8); \ > | ^~~~~~~~~~~~ > include/linux/compiler.h:202:33: note: in expansion of macro '__BUILD_BUG_ON_ZERO_MSG' > 202 | #define __must_be_array(a) __BUILD_BUG_ON_ZERO_MSG(!__is_array(a), \ > | ^~~~~~~~~~~~~~~~~~~~~~~ > include/linux/array_size.h:11:59: note: in expansion of macro '__must_be_array' > 11 | #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr)) > | ^~~~~~~~~~~~~~~ > lib/tests/scanf_kunit.c:333:22: note: in expansion of macro 'ARRAY_SIZE' > 333 | BUILD_BUG_ON(ARRAY_SIZE(arr) !=3D 8); \ > | ^~~~~~~~~~ > lib/tests/scanf_kunit.c:356:9: note: in expansion of macro 'test_array_8' > 356 | test_array_8(fn, expect, test_buffer, fmt_buffer, result); \ > | ^~~~~~~~~~~~ > lib/tests/scanf_kunit.c:391:9: note: in expansion of macro 'numbers_list_8' > 391 | numbers_list_8(long long, "%lld", delim, "lld", check_ll); > | ^~~~~~~~~~~~~~ > >> include/linux/compiler.h:197:61: warning: function 'numbers_list_ll' might be a candidate for 'gnu_scanf' format attribute [-Wsuggest-attribute=3Dformat] > 197 | #define __BUILD_BUG_ON_ZERO_MSG(e, msg) ((int)sizeof(struct {_Static_assert(!(e), msg);})) > | ^ > include/linux/compiler_types.h:522:23: note: in definition of macro '__compiletime_assert' > 522 | if (!(condition)) \ > | ^~~~~~~~~ > include/linux/compiler_types.h:542:9: note: in expansion of macro '_compiletime_assert' > 542 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) > | ^~~~~~~~~~~~~~~~~~~ > include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert' > 39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) > | ^~~~~~~~~~~~~~~~~~ > include/linux/build_bug.h:50:9: note: in expansion of macro 'BUILD_BUG_ON_MSG' > 50 | BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition) > | ^~~~~~~~~~~~~~~~ > lib/tests/scanf_kunit.c:333:9: note: in expansion of macro 'BUILD_BUG_ON' > 333 | BUILD_BUG_ON(ARRAY_SIZE(arr) !=3D 8); \ > | ^~~~~~~~~~~~ > include/linux/compiler.h:202:33: note: in expansion of macro '__BUILD_BUG_ON_ZERO_MSG' > 202 | #define __must_be_array(a) __BUILD_BUG_ON_ZERO_MSG(!__is_array(a), \ > | ^~~~~~~~~~~~~~~~~~~~~~~ > include/linux/array_size.h:11:59: note: in expansion of macro '__must_be_array' > 11 | #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr)) > | ^~~~~~~~~~~~~~~ > lib/tests/scanf_kunit.c:333:22: note: in expansion of macro 'ARRAY_SIZE' > 333 | BUILD_BUG_ON(ARRAY_SIZE(arr) !=3D 8); \ > | ^~~~~~~~~~ > lib/tests/scanf_kunit.c:356:9: note: in expansion of macro 'test_array_8' > 356 | test_array_8(fn, expect, test_buffer, fmt_buffer, result); \ > | ^~~~~~~~~~~~ > lib/tests/scanf_kunit.c:392:9: note: in expansion of macro 'numbers_list_8' > 392 | numbers_list_8(long long, "%lld", delim, "lli", check_ll); > | ^~~~~~~~~~~~~~ > >> include/linux/compiler.h:197:61: warning: function 'numbers_list_ll' might be a candidate for 'gnu_scanf' format attribute [-Wsuggest-attribute=3Dformat] > 197 | #define __BUILD_BUG_ON_ZERO_MSG(e, msg) ((int)sizeof(struct {_Static_assert(!(e), msg);})) > | ^ > include/linux/compiler_types.h:522:23: note: in definition of macro '__compiletime_assert' > 522 | if (!(condition)) \ > | ^~~~~~~~~ > include/linux/compiler_types.h:542:9: note: in expansion of macro '_compiletime_assert' > 542 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) > | ^~~~~~~~~~~~~~~~~~~ > include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert' > 39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) > | ^~~~~~~~~~~~~~~~~~ > include/linux/build_bug.h:50:9: note: in expansion of macro 'BUILD_BUG_ON_MSG' > 50 | BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition) > | ^~~~~~~~~~~~~~~~ > lib/tests/scanf_kunit.c:333:9: note: in expansion of macro 'BUILD_BUG_ON' > 333 | BUILD_BUG_ON(ARRAY_SIZE(arr) !=3D 8); \ > | ^~~~~~~~~~~~ > include/linux/compiler.h:202:33: note: in expansion of macro '__BUILD_BUG_ON_ZERO_MSG' > 202 | #define __must_be_array(a) __BUILD_BUG_ON_ZERO_MSG(!__is_array(a), \ > | ^~~~~~~~~~~~~~~~~~~~~~~ > include/linux/array_size.h:11:59: note: in expansion of macro '__must_be_array' > 11 | #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr)) > | ^~~~~~~~~~~~~~~ > lib/tests/scanf_kunit.c:333:22: note: in expansion of macro 'ARRAY_SIZE' > 333 | BUILD_BUG_ON(ARRAY_SIZE(arr) !=3D 8); \ > | ^~~~~~~~~~ > lib/tests/scanf_kunit.c:356:9: note: in expansion of macro 'test_array_8' > 356 | test_array_8(fn, expect, test_buffer, fmt_buffer, result); \ > | ^~~~~~~~~~~~ > lib/tests/scanf_kunit.c:393:9: note: in expansion of macro 'numbers_list_8' > 393 | numbers_list_8(unsigned long long, "%llx", delim, "llx", check_ull); > | ^~~~~~~~~~~~~~ > >> include/linux/compiler.h:197:61: warning: function 'numbers_list_ll' might be a candidate for 'gnu_scanf' format attribute [-Wsuggest-attribute=3Dformat] > 197 | #define __BUILD_BUG_ON_ZERO_MSG(e, msg) ((int)sizeof(struct {_Static_assert(!(e), msg);})) > | ^ > include/linux/compiler_types.h:522:23: note: in definition of macro '__compiletime_assert' > 522 | if (!(condition)) \ > | ^~~~~~~~~ > include/linux/compiler_types.h:542:9: note: in expansion of macro '_compiletime_assert' > 542 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) > | ^~~~~~~~~~~~~~~~~~~ > include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert' > 39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) > | ^~~~~~~~~~~~~~~~~~ > include/linux/build_bug.h:50:9: note: in expansion of macro 'BUILD_BUG_ON_MSG' > 50 | BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition) > | ^~~~~~~~~~~~~~~~ > lib/tests/scanf_kunit.c:333:9: note: in expansion of macro 'BUILD_BUG_ON' > 333 | BUILD_BUG_ON(ARRAY_SIZE(arr) !=3D 8); \ > | ^~~~~~~~~~~~ > include/linux/compiler.h:202:33: note: in expansion of macro '__BUILD_BUG_ON_ZERO_MSG' > 202 | #define __must_be_array(a) __BUILD_BUG_ON_ZERO_MSG(!__is_array(a), \ > | ^~~~~~~~~~~~~~~~~~~~~~~ > include/linux/array_size.h:11:59: note: in expansion of macro '__must_be_array' > 11 | #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr)) > | ^~~~~~~~~~~~~~~ > lib/tests/scanf_kunit.c:333:22: note: in expansion of macro 'ARRAY_SIZE' > 333 | BUILD_BUG_ON(ARRAY_SIZE(arr) !=3D 8); \ > | ^~~~~~~~~~ > lib/tests/scanf_kunit.c:356:9: note: in expansion of macro 'test_array_8' > 356 | test_array_8(fn, expect, test_buffer, fmt_buffer, result); \ > | ^~~~~~~~~~~~ > lib/tests/scanf_kunit.c:394:9: note: in expansion of macro 'numbers_list_8' > 394 | numbers_list_8(unsigned long long, "0x%llx", delim, "llx", check_ull); > | ^~~~~~~~~~~~~~ > >> include/linux/compiler.h:197:61: warning: function 'numbers_list_ll' might be a candidate for 'gnu_scanf' format attribute [-Wsuggest-attribute=3Dformat] > 197 | #define __BUILD_BUG_ON_ZERO_MSG(e, msg) ((int)sizeof(struct {_Static_assert(!(e), msg);})) > | ^ > include/linux/compiler_types.h:522:23: note: in definition of macro '__compiletime_assert' > 522 | if (!(condition)) \ > | ^~~~~~~~~ > include/linux/compiler_types.h:542:9: note: in expansion of macro '_compiletime_assert' > 542 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) > | ^~~~~~~~~~~~~~~~~~~ > include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert' > 39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) > | ^~~~~~~~~~~~~~~~~~ > include/linux/build_bug.h:50:9: note: in expansion of macro 'BUILD_BUG_ON_MSG' > 50 | BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition) > | ^~~~~~~~~~~~~~~~ > lib/tests/scanf_kunit.c:333:9: note: in expansion of macro 'BUILD_BUG_ON' > 333 | BUILD_BUG_ON(ARRAY_SIZE(arr) !=3D 8); \ > | ^~~~~~~~~~~~ > include/linux/compiler.h:202:33: note: in expansion of macro '__BUILD_BUG_ON_ZERO_MSG' > 202 | #define __must_be_array(a) __BUILD_BUG_ON_ZERO_MSG(!__is_array(a), \ > | ^~~~~~~~~~~~~~~~~~~~~~~ > include/linux/array_size.h:11:59: note: in expansion of macro '__must_be_array' > 11 | #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr)) > | ^~~~~~~~~~~~~~~ > lib/tests/scanf_kunit.c:333:22: note: in expansion of macro 'ARRAY_SIZE' > 333 | BUILD_BUG_ON(ARRAY_SIZE(arr) !=3D 8); \ > | ^~~~~~~~~~ > lib/tests/scanf_kunit.c:356:9: note: in expansion of macro 'test_array_8' > 356 | test_array_8(fn, expect, test_buffer, fmt_buffer, result); \ > | ^~~~~~~~~~~~ > lib/tests/scanf_kunit.c:395:9: note: in expansion of macro 'numbers_list_8' > 395 | numbers_list_8(long long, "0x%llx", delim, "lli", check_ll); > | ^~~~~~~~~~~~~~ > lib/tests/scanf_kunit.c: In function 'numbers_list_l': > >> include/linux/compiler.h:197:61: warning: function 'numbers_list_l' might be a candidate for 'gnu_scanf' format attribute [-Wsuggest-attribute=3Dformat] > 197 | #define __BUILD_BUG_ON_ZERO_MSG(e, msg) ((int)sizeof(struct {_Static_assert(!(e), msg);})) > | ^ > include/linux/compiler_types.h:522:23: note: in definition of macro '__compiletime_assert' > 522 | if (!(condition)) \ > | ^~~~~~~~~ > include/linux/compiler_types.h:542:9: note: in expansion of macro '_compiletime_assert' > 542 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) > | ^~~~~~~~~~~~~~~~~~~ > include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert' > 39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) > | ^~~~~~~~~~~~~~~~~~ > include/linux/build_bug.h:50:9: note: in expansion of macro 'BUILD_BUG_ON_MSG' > 50 | BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition) > | ^~~~~~~~~~~~~~~~ > lib/tests/scanf_kunit.c:333:9: note: in expansion of macro 'BUILD_BUG_ON' > 333 | BUILD_BUG_ON(ARRAY_SIZE(arr) !=3D 8); \ > | ^~~~~~~~~~~~ > include/linux/compiler.h:202:33: note: in expansion of macro '__BUILD_BUG_ON_ZERO_MSG' > 202 | #define __must_be_array(a) __BUILD_BUG_ON_ZERO_MSG(!__is_array(a), \ > | ^~~~~~~~~~~~~~~~~~~~~~~ > include/linux/array_size.h:11:59: note: in expansion of macro '__must_be_array' > 11 | #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr)) > | ^~~~~~~~~~~~~~~ > lib/tests/scanf_kunit.c:333:22: note: in expansion of macro 'ARRAY_SIZE' > 333 | BUILD_BUG_ON(ARRAY_SIZE(arr) !=3D 8); \ > | ^~~~~~~~~~ > lib/tests/scanf_kunit.c:356:9: note: in expansion of macro 'test_array_8' > 356 | test_array_8(fn, expect, test_buffer, fmt_buffer, result); \ > | ^~~~~~~~~~~~ > lib/tests/scanf_kunit.c:400:9: note: in expansion of macro 'numbers_list_8' > 400 | numbers_list_8(unsigned long, "%lu", delim, "lu", check_ulong); > | ^~~~~~~~~~~~~~ > >> include/linux/compiler.h:197:61: warning: function 'numbers_list_l' might be a candidate for 'gnu_scanf' format attribute [-Wsuggest-attribute=3Dformat] > 197 | #define __BUILD_BUG_ON_ZERO_MSG(e, msg) ((int)sizeof(struct {_Static_assert(!(e), msg);})) > | ^ > include/linux/compiler_types.h:522:23: note: in definition of macro '__compiletime_assert' > 522 | if (!(condition)) \ > | ^~~~~~~~~ > include/linux/compiler_types.h:542:9: note: in expansion of macro '_compiletime_assert' > 542 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) > | ^~~~~~~~~~~~~~~~~~~ > include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert' > 39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) > | ^~~~~~~~~~~~~~~~~~ > include/linux/build_bug.h:50:9: note: in expansion of macro 'BUILD_BUG_ON_MSG' > 50 | BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition) > | ^~~~~~~~~~~~~~~~ > lib/tests/scanf_kunit.c:333:9: note: in expansion of macro 'BUILD_BUG_ON' > 333 | BUILD_BUG_ON(ARRAY_SIZE(arr) !=3D 8); \ > | ^~~~~~~~~~~~ > include/linux/compiler.h:202:33: note: in expansion of macro '__BUILD_BUG_ON_ZERO_MSG' > 202 | #define __must_be_array(a) __BUILD_BUG_ON_ZERO_MSG(!__is_array(a), \ > | ^~~~~~~~~~~~~~~~~~~~~~~ > include/linux/array_size.h:11:59: note: in expansion of macro '__must_be_array' > 11 | #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr)) > | ^~~~~~~~~~~~~~~ > lib/tests/scanf_kunit.c:333:22: note: in expansion of macro 'ARRAY_SIZE' > 333 | BUILD_BUG_ON(ARRAY_SIZE(arr) !=3D 8); \ > | ^~~~~~~~~~ > lib/tests/scanf_kunit.c:356:9: note: in expansion of macro 'test_array_8' > 356 | test_array_8(fn, expect, test_buffer, fmt_buffer, result); \ > | ^~~~~~~~~~~~ > lib/tests/scanf_kunit.c:401:9: note: in expansion of macro 'numbers_list_8' > 401 | numbers_list_8(long, "%ld", delim, "ld", check_long); > | ^~~~~~~~~~~~~~ > >> include/linux/compiler.h:197:61: warning: function 'numbers_list_l' might be a candidate for 'gnu_scanf' format attribute [-Wsuggest-attribute=3Dformat] > 197 | #define __BUILD_BUG_ON_ZERO_MSG(e, msg) ((int)sizeof(struct {_Static_assert(!(e), msg);})) > | ^ > include/linux/compiler_types.h:522:23: note: in definition of macro '__compiletime_assert' > 522 | if (!(condition)) \ > | ^~~~~~~~~ > include/linux/compiler_types.h:542:9: note: in expansion of macro '_compiletime_assert' > 542 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) > | ^~~~~~~~~~~~~~~~~~~ > include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert' > 39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) > | ^~~~~~~~~~~~~~~~~~ > include/linux/build_bug.h:50:9: note: in expansion of macro 'BUILD_BUG_ON_MSG' > 50 | BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition) > | ^~~~~~~~~~~~~~~~ > lib/tests/scanf_kunit.c:333:9: note: in expansion of macro 'BUILD_BUG_ON' > 333 | BUILD_BUG_ON(ARRAY_SIZE(arr) !=3D 8); \ > | ^~~~~~~~~~~~ > include/linux/compiler.h:202:33: note: in expansion of macro '__BUILD_BUG_ON_ZERO_MSG' > 202 | #define __must_be_array(a) __BUILD_BUG_ON_ZERO_MSG(!__is_array(a), \ > | ^~~~~~~~~~~~~~~~~~~~~~~ > include/linux/array_size.h:11:59: note: in expansion of macro '__must_be_array' > 11 | #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr)) > | ^~~~~~~~~~~~~~~ > lib/tests/scanf_kunit.c:333:22: note: in expansion of macro 'ARRAY_SIZE' > 333 | BUILD_BUG_ON(ARRAY_SIZE(arr) !=3D 8); \ > | ^~~~~~~~~~ > lib/tests/scanf_kunit.c:356:9: note: in expansion of macro 'test_array_8' > 356 | test_array_8(fn, expect, test_buffer, fmt_buffer, result); \ > | ^~~~~~~~~~~~ > lib/tests/scanf_kunit.c:402:9: note: in expansion of macro 'numbers_list_8' > 402 | numbers_list_8(long, "%ld", delim, "li", check_long); > | ^~~~~~~~~~~~~~ > >> include/linux/compiler.h:197:61: warning: function 'numbers_list_l' might be a candidate for 'gnu_scanf' format attribute [-Wsuggest-attribute=3Dformat] > 197 | #define __BUILD_BUG_ON_ZERO_MSG(e, msg) ((int)sizeof(struct {_Static_assert(!(e), msg);})) > | ^ > include/linux/compiler_types.h:522:23: note: in definition of macro '__compiletime_assert' > 522 | if (!(condition)) \ > | ^~~~~~~~~ > include/linux/compiler_types.h:542:9: note: in expansion of macro '_compiletime_assert' > 542 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) > | ^~~~~~~~~~~~~~~~~~~ > include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert' > 39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) > | ^~~~~~~~~~~~~~~~~~ > include/linux/build_bug.h:50:9: note: in expansion of macro 'BUILD_BUG_ON_MSG' > 50 | BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition) > | ^~~~~~~~~~~~~~~~ > lib/tests/scanf_kunit.c:333:9: note: in expansion of macro 'BUILD_BUG_ON' > 333 | BUILD_BUG_ON(ARRAY_SIZE(arr) !=3D 8); \ > | ^~~~~~~~~~~~ > include/linux/compiler.h:202:33: note: in expansion of macro '__BUILD_BUG_ON_ZERO_MSG' > 202 | #define __must_be_array(a) __BUILD_BUG_ON_ZERO_MSG(!__is_array(a), \ > | ^~~~~~~~~~~~~~~~~~~~~~~ > include/linux/array_size.h:11:59: note: in expansion of macro '__must_be_array' > 11 | #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr)) > | ^~~~~~~~~~~~~~~ > lib/tests/scanf_kunit.c:333:22: note: in expansion of macro 'ARRAY_SIZE' > 333 | BUILD_BUG_ON(ARRAY_SIZE(arr) !=3D 8); \ > | ^~~~~~~~~~ > lib/tests/scanf_kunit.c:356:9: note: in expansion of macro 'test_array_8' > 356 | test_array_8(fn, expect, test_buffer, fmt_buffer, result); \ > | ^~~~~~~~~~~~ > lib/tests/scanf_kunit.c:403:9: note: in expansion of macro 'numbers_list_8' > 403 | numbers_list_8(unsigned long, "%lx", delim, "lx", check_ulong); > | ^~~~~~~~~~~~~~ > >> include/linux/compiler.h:197:61: warning: function 'numbers_list_l' might be a candidate for 'gnu_scanf' format attribute [-Wsuggest-attribute=3Dformat] > 197 | #define __BUILD_BUG_ON_ZERO_MSG(e, msg) ((int)sizeof(struct {_Static_assert(!(e), msg);})) > | ^ > include/linux/compiler_types.h:522:23: note: in definition of macro '__compiletime_assert' > 522 | if (!(condition)) \ > | ^~~~~~~~~ > include/linux/compiler_types.h:542:9: note: in expansion of macro '_compiletime_assert' > 542 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) > | ^~~~~~~~~~~~~~~~~~~ > include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert' > 39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) > | ^~~~~~~~~~~~~~~~~~ > include/linux/build_bug.h:50:9: note: in expansion of macro 'BUILD_BUG_ON_MSG' > 50 | BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition) > | ^~~~~~~~~~~~~~~~ > lib/tests/scanf_kunit.c:333:9: note: in expansion of macro 'BUILD_BUG_ON' > 333 | BUILD_BUG_ON(ARRAY_SIZE(arr) !=3D 8); \ > | ^~~~~~~~~~~~ > include/linux/compiler.h:202:33: note: in expansion of macro '__BUILD_BUG_ON_ZERO_MSG' > 202 | #define __must_be_array(a) __BUILD_BUG_ON_ZERO_MSG(!__is_array(a), \ > | ^~~~~~~~~~~~~~~~~~~~~~~ > include/linux/array_size.h:11:59: note: in expansion of macro '__must_be_array' > 11 | #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr)) > | ^~~~~~~~~~~~~~~ > lib/tests/scanf_kunit.c:333:22: note: in expansion of macro 'ARRAY_SIZE' > 333 | BUILD_BUG_ON(ARRAY_SIZE(arr) !=3D 8); \ > | ^~~~~~~~~~ > lib/tests/scanf_kunit.c:356:9: note: in expansion of macro 'test_array_8' > 356 | test_array_8(fn, expect, test_buffer, fmt_buffer, result); \ > | ^~~~~~~~~~~~ > lib/tests/scanf_kunit.c:404:9: note: in expansion of macro 'numbers_list_8' > 404 | numbers_list_8(unsigned long, "0x%lx", delim, "lx", check_ulong); > | ^~~~~~~~~~~~~~ > >> include/linux/compiler.h:197:61: warning: function 'numbers_list_l' might be a candidate for 'gnu_scanf' format attribute [-Wsuggest-attribute=3Dformat] > 197 | #define __BUILD_BUG_ON_ZERO_MSG(e, msg) ((int)sizeof(struct {_Static_assert(!(e), msg);})) > | ^ > include/linux/compiler_types.h:522:23: note: in definition of macro '__compiletime_assert' > 522 | if (!(condition)) \ > | ^~~~~~~~~ > include/linux/compiler_types.h:542:9: note: in expansion of macro '_compiletime_assert' > 542 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) > | ^~~~~~~~~~~~~~~~~~~ > include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert' > 39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) > | ^~~~~~~~~~~~~~~~~~ > include/linux/build_bug.h:50:9: note: in expansion of macro 'BUILD_BUG_ON_MSG' > 50 | BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition) > | ^~~~~~~~~~~~~~~~ > lib/tests/scanf_kunit.c:333:9: note: in expansion of macro 'BUILD_BUG_ON' > 333 | BUILD_BUG_ON(ARRAY_SIZE(arr) !=3D 8); \ > | ^~~~~~~~~~~~ > include/linux/compiler.h:202:33: note: in expansion of macro '__BUILD_BUG_ON_ZERO_MSG' > 202 | #define __must_be_array(a) __BUILD_BUG_ON_ZERO_MSG(!__is_array(a), \ > | ^~~~~~~~~~~~~~~~~~~~~~~ > include/linux/array_size.h:11:59: note: in expansion of macro '__must_be_array' > 11 | #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr)) > | ^~~~~~~~~~~~~~~ > lib/tests/scanf_kunit.c:333:22: note: in expansion of macro 'ARRAY_SIZE' > 333 | BUILD_BUG_ON(ARRAY_SIZE(arr) !=3D 8); \ > | ^~~~~~~~~~ > lib/tests/scanf_kunit.c:356:9: note: in expansion of macro 'test_array_8' > 356 | test_array_8(fn, expect, test_buffer, fmt_buffer, result); \ > | ^~~~~~~~~~~~ > lib/tests/scanf_kunit.c:405:9: note: in expansion of macro 'numbers_list_8' > 405 | numbers_list_8(long, "0x%lx", delim, "li", check_long); > | ^~~~~~~~~~~~~~ > lib/tests/scanf_kunit.c: In function 'numbers_list_d': > >> include/linux/compiler.h:197:61: warning: function 'numbers_list_d' might be a candidate for 'gnu_scanf' format attribute [-Wsuggest-attribute=3Dformat] > 197 | #define __BUILD_BUG_ON_ZERO_MSG(e, msg) ((int)sizeof(struct {_Static_assert(!(e), msg);})) > | ^ > include/linux/compiler_types.h:522:23: note: in definition of macro '__compiletime_assert' > 522 | if (!(condition)) \ > | ^~~~~~~~~ > include/linux/compiler_types.h:542:9: note: in expansion of macro '_compiletime_assert' > 542 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) > | ^~~~~~~~~~~~~~~~~~~ > include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert' > 39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) > | ^~~~~~~~~~~~~~~~~~ > include/linux/build_bug.h:50:9: note: in expansion of macro 'BUILD_BUG_ON_MSG' > 50 | BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition) > | ^~~~~~~~~~~~~~~~ > lib/tests/scanf_kunit.c:333:9: note: in expansion of macro 'BUILD_BUG_ON' > 333 | BUILD_BUG_ON(ARRAY_SIZE(arr) !=3D 8); \ > | ^~~~~~~~~~~~ > include/linux/compiler.h:202:33: note: in expansion of macro '__BUILD_BUG_ON_ZERO_MSG' > 202 | #define __must_be_array(a) __BUILD_BUG_ON_ZERO_MSG(!__is_array(a), \ > | ^~~~~~~~~~~~~~~~~~~~~~~ > include/linux/array_size.h:11:59: note: in expansion of macro '__must_be_array' > 11 | #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr)) > | ^~~~~~~~~~~~~~~ > lib/tests/scanf_kunit.c:333:22: note: in expansion of macro 'ARRAY_SIZE' > 333 | BUILD_BUG_ON(ARRAY_SIZE(arr) !=3D 8); \ > | ^~~~~~~~~~ > lib/tests/scanf_kunit.c:356:9: note: in expansion of macro 'test_array_8' > 356 | test_array_8(fn, expect, test_buffer, fmt_buffer, result); \ > | ^~~~~~~~~~~~ > lib/tests/scanf_kunit.c:410:9: note: in expansion of macro 'numbers_list_8' > 410 | numbers_list_8(unsigned int, "%u", delim, "u", check_uint); > | ^~~~~~~~~~~~~~ > >> include/linux/compiler.h:197:61: warning: function 'numbers_list_d' might be a candidate for 'gnu_scanf' format attribute [-Wsuggest-attribute=3Dformat] > 197 | #define __BUILD_BUG_ON_ZERO_MSG(e, msg) ((int)sizeof(struct {_Static_assert(!(e), msg);})) > | ^ > include/linux/compiler_types.h:522:23: note: in definition of macro '__compiletime_assert' > 522 | if (!(condition)) \ > | ^~~~~~~~~ > include/linux/compiler_types.h:542:9: note: in expansion of macro '_compiletime_assert' > 542 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) > | ^~~~~~~~~~~~~~~~~~~ > include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert' > 39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) > | ^~~~~~~~~~~~~~~~~~ > include/linux/build_bug.h:50:9: note: in expansion of macro 'BUILD_BUG_ON_MSG' > 50 | BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition) > | ^~~~~~~~~~~~~~~~ > lib/tests/scanf_kunit.c:333:9: note: in expansion of macro 'BUILD_BUG_ON' > 333 | BUILD_BUG_ON(ARRAY_SIZE(arr) !=3D 8); \ > | ^~~~~~~~~~~~ > include/linux/compiler.h:202:33: note: in expansion of macro '__BUILD_BUG_ON_ZERO_MSG' > 202 | #define __must_be_array(a) __BUILD_BUG_ON_ZERO_MSG(!__is_array(a), \ > | ^~~~~~~~~~~~~~~~~~~~~~~ > include/linux/array_size.h:11:59: note: in expansion of macro '__must_be_array' > 11 | #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr)) > | ^~~~~~~~~~~~~~~ > lib/tests/scanf_kunit.c:333:22: note: in expansion of macro 'ARRAY_SIZE' > 333 | BUILD_BUG_ON(ARRAY_SIZE(arr) !=3D 8); \ > | ^~~~~~~~~~ > lib/tests/scanf_kunit.c:356:9: note: in expansion of macro 'test_array_8' > 356 | test_array_8(fn, expect, test_buffer, fmt_buffer, result); \ > | ^~~~~~~~~~~~ > lib/tests/scanf_kunit.c:411:9: note: in expansion of macro 'numbers_list_8' > 411 | numbers_list_8(int, "%d", delim, "d", check_int); > | ^~~~~~~~~~~~~~ > >> include/linux/compiler.h:197:61: warning: function 'numbers_list_d' might be a candidate for 'gnu_scanf' format attribute [-Wsuggest-attribute=3Dformat] > 197 | #define __BUILD_BUG_ON_ZERO_MSG(e, msg) ((int)sizeof(struct {_Static_assert(!(e), msg);})) > | ^ > include/linux/compiler_types.h:522:23: note: in definition of macro '__compiletime_assert' > 522 | if (!(condition)) \ > | ^~~~~~~~~ > include/linux/compiler_types.h:542:9: note: in expansion of macro '_compiletime_assert' > 542 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) > | ^~~~~~~~~~~~~~~~~~~ > include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert' > 39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) > | ^~~~~~~~~~~~~~~~~~ > include/linux/build_bug.h:50:9: note: in expansion of macro 'BUILD_BUG_ON_MSG' > 50 | BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition) > | ^~~~~~~~~~~~~~~~ > lib/tests/scanf_kunit.c:333:9: note: in expansion of macro 'BUILD_BUG_ON' > 333 | BUILD_BUG_ON(ARRAY_SIZE(arr) !=3D 8); \ > | ^~~~~~~~~~~~ > include/linux/compiler.h:202:33: note: in expansion of macro '__BUILD_BUG_ON_ZERO_MSG' > 202 | #define __must_be_array(a) __BUILD_BUG_ON_ZERO_MSG(!__is_array(a), \ > | ^~~~~~~~~~~~~~~~~~~~~~~ > include/linux/array_size.h:11:59: note: in expansion of macro '__must_be_array' > 11 | #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr)) > | ^~~~~~~~~~~~~~~ > lib/tests/scanf_kunit.c:333:22: note: in expansion of macro 'ARRAY_SIZE' > 333 | BUILD_BUG_ON(ARRAY_SIZE(arr) !=3D 8); \ > | ^~~~~~~~~~ > lib/tests/scanf_kunit.c:356:9: note: in expansion of macro 'test_array_8' > 356 | test_array_8(fn, expect, test_buffer, fmt_buffer, result); \ > | ^~~~~~~~~~~~ > lib/tests/scanf_kunit.c:412:9: note: in expansion of macro 'numbers_list_8' > 412 | numbers_list_8(int, "%d", delim, "i", check_int); > | ^~~~~~~~~~~~~~ > >> include/linux/compiler.h:197:61: warning: function 'numbers_list_d' might be a candidate for 'gnu_scanf' format attribute [-Wsuggest-attribute=3Dformat] > 197 | #define __BUILD_BUG_ON_ZERO_MSG(e, msg) ((int)sizeof(struct {_Static_assert(!(e), msg);})) > | ^ > include/linux/compiler_types.h:522:23: note: in definition of macro '__compiletime_assert' > 522 | if (!(condition)) \ > | ^~~~~~~~~ > include/linux/compiler_types.h:542:9: note: in expansion of macro '_compiletime_assert' > 542 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) > | ^~~~~~~~~~~~~~~~~~~ > include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert' > 39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) > | ^~~~~~~~~~~~~~~~~~ > include/linux/build_bug.h:50:9: note: in expansion of macro 'BUILD_BUG_ON_MSG' > 50 | BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition) > | ^~~~~~~~~~~~~~~~ > lib/tests/scanf_kunit.c:333:9: note: in expansion of macro 'BUILD_BUG_ON' > 333 | BUILD_BUG_ON(ARRAY_SIZE(arr) !=3D 8); \ > | ^~~~~~~~~~~~ > include/linux/compiler.h:202:33: note: in expansion of macro '__BUILD_BUG_ON_ZERO_MSG' > 202 | #define __must_be_array(a) __BUILD_BUG_ON_ZERO_MSG(!__is_array(a), \ > | ^~~~~~~~~~~~~~~~~~~~~~~ > include/linux/array_size.h:11:59: note: in expansion of macro '__must_be_array' > 11 | #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr)) > | ^~~~~~~~~~~~~~~ > lib/tests/scanf_kunit.c:333:22: note: in expansion of macro 'ARRAY_SIZE' > 333 | BUILD_BUG_ON(ARRAY_SIZE(arr) !=3D 8); \ > | ^~~~~~~~~~ > lib/tests/scanf_kunit.c:356:9: note: in expansion of macro 'test_array_8' > 356 | test_array_8(fn, expect, test_buffer, fmt_buffer, result); \ > | ^~~~~~~~~~~~ > lib/tests/scanf_kunit.c:413:9: note: in expansion of macro 'numbers_list_8' > 413 | numbers_list_8(unsigned int, "%x", delim, "x", check_uint); > | ^~~~~~~~~~~~~~ > >> include/linux/compiler.h:197:61: warning: function 'numbers_list_d' might be a candidate for 'gnu_scanf' format attribute [-Wsuggest-attribute=3Dformat] > 197 | #define __BUILD_BUG_ON_ZERO_MSG(e, msg) ((int)sizeof(struct {_Static_assert(!(e), msg);})) > | ^ > include/linux/compiler_types.h:522:23: note: in definition of macro '__compiletime_assert' > 522 | if (!(condition)) \ > | ^~~~~~~~~ > include/linux/compiler_types.h:542:9: note: in expansion of macro '_compiletime_assert' > 542 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) > | ^~~~~~~~~~~~~~~~~~~ > include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert' > 39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) > | ^~~~~~~~~~~~~~~~~~ > include/linux/build_bug.h:50:9: note: in expansion of macro 'BUILD_BUG_ON_MSG' > 50 | BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition) > | ^~~~~~~~~~~~~~~~ > lib/tests/scanf_kunit.c:333:9: note: in expansion of macro 'BUILD_BUG_ON' > 333 | BUILD_BUG_ON(ARRAY_SIZE(arr) !=3D 8); \ > | ^~~~~~~~~~~~ > include/linux/compiler.h:202:33: note: in expansion of macro '__BUILD_BUG_ON_ZERO_MSG' > 202 | #define __must_be_array(a) __BUILD_BUG_ON_ZERO_MSG(!__is_array(a), \ > | ^~~~~~~~~~~~~~~~~~~~~~~ > include/linux/array_size.h:11:59: note: in expansion of macro '__must_be_array' > 11 | #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr)) > | ^~~~~~~~~~~~~~~ > lib/tests/scanf_kunit.c:333:22: note: in expansion of macro 'ARRAY_SIZE' > 333 | BUILD_BUG_ON(ARRAY_SIZE(arr) !=3D 8); \ > | ^~~~~~~~~~ > lib/tests/scanf_kunit.c:356:9: note: in expansion of macro 'test_array_8' > 356 | test_array_8(fn, expect, test_buffer, fmt_buffer, result); \ > | ^~~~~~~~~~~~ > lib/tests/scanf_kunit.c:414:9: note: in expansion of macro 'numbers_list_8' > 414 | numbers_list_8(unsigned int, "0x%x", delim, "x", check_uint); > | ^~~~~~~~~~~~~~ > >> include/linux/compiler.h:197:61: warning: function 'numbers_list_d' might be a candidate for 'gnu_scanf' format attribute [-Wsuggest-attribute=3Dformat] > 197 | #define __BUILD_BUG_ON_ZERO_MSG(e, msg) ((int)sizeof(struct {_Static_assert(!(e), msg);})) > | ^ > include/linux/compiler_types.h:522:23: note: in definition of macro '__compiletime_assert' > 522 | if (!(condition)) \ > | ^~~~~~~~~ > include/linux/compiler_types.h:542:9: note: in expansion of macro '_compiletime_assert' > 542 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) > | ^~~~~~~~~~~~~~~~~~~ > include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert' > 39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) > | ^~~~~~~~~~~~~~~~~~ > include/linux/build_bug.h:50:9: note: in expansion of macro 'BUILD_BUG_ON_MSG' > 50 | BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition) > | ^~~~~~~~~~~~~~~~ > lib/tests/scanf_kunit.c:333:9: note: in expansion of macro 'BUILD_BUG_ON' > 333 | BUILD_BUG_ON(ARRAY_SIZE(arr) !=3D 8); \ > | ^~~~~~~~~~~~ > include/linux/compiler.h:202:33: note: in expansion of macro '__BUILD_BUG_ON_ZERO_MSG' > 202 | #define __must_be_array(a) __BUILD_BUG_ON_ZERO_MSG(!__is_array(a), \ > | ^~~~~~~~~~~~~~~~~~~~~~~ > include/linux/array_size.h:11:59: note: in expansion of macro '__must_be_array' > 11 | #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr)) > | ^~~~~~~~~~~~~~~ > lib/tests/scanf_kunit.c:333:22: note: in expansion of macro 'ARRAY_SIZE' > 333 | BUILD_BUG_ON(ARRAY_SIZE(arr) !=3D 8); \ > | ^~~~~~~~~~ > lib/tests/scanf_kunit.c:356:9: note: in expansion of macro 'test_array_8' > 356 | test_array_8(fn, expect, test_buffer, fmt_buffer, result); \ > | ^~~~~~~~~~~~ > lib/tests/scanf_kunit.c:415:9: note: in expansion of macro 'numbers_list_8' > 415 | numbers_list_8(int, "0x%x", delim, "i", check_int); > | ^~~~~~~~~~~~~~ > lib/tests/scanf_kunit.c: In function 'numbers_list_h': > >> include/linux/compiler.h:197:61: warning: function 'numbers_list_h' might be a candidate for 'gnu_scanf' format attribute [-Wsuggest-attribute=3Dformat] > 197 | #define __BUILD_BUG_ON_ZERO_MSG(e, msg) ((int)sizeof(struct {_Static_assert(!(e), msg);})) > | ^ > include/linux/compiler_types.h:522:23: note: in definition of macro '__compiletime_assert' > 522 | if (!(condition)) \ > | ^~~~~~~~~ > include/linux/compiler_types.h:542:9: note: in expansion of macro '_compiletime_assert' > 542 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) > | ^~~~~~~~~~~~~~~~~~~ > include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert' > 39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) > | ^~~~~~~~~~~~~~~~~~ > include/linux/build_bug.h:50:9: note: in expansion of macro 'BUILD_BUG_ON_MSG' > 50 | BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition) > | ^~~~~~~~~~~~~~~~ > lib/tests/scanf_kunit.c:333:9: note: in expansion of macro 'BUILD_BUG_ON' > 333 | BUILD_BUG_ON(ARRAY_SIZE(arr) !=3D 8); \ > | ^~~~~~~~~~~~ > include/linux/compiler.h:202:33: note: in expansion of macro '__BUILD_BUG_ON_ZERO_MSG' > 202 | #define __must_be_array(a) __BUILD_BUG_ON_ZERO_MSG(!__is_array(a), \ > | ^~~~~~~~~~~~~~~~~~~~~~~ > include/linux/array_size.h:11:59: note: in expansion of macro '__must_be_array' > 11 | #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr)) > | ^~~~~~~~~~~~~~~ > lib/tests/scanf_kunit.c:333:22: note: in expansion of macro 'ARRAY_SIZE' > 333 | BUILD_BUG_ON(ARRAY_SIZE(arr) !=3D 8); \ > | ^~~~~~~~~~ > lib/tests/scanf_kunit.c:356:9: note: in expansion of macro 'test_array_8' > 356 | test_array_8(fn, expect, test_buffer, fmt_buffer, result); \ > | ^~~~~~~~~~~~ > lib/tests/scanf_kunit.c:420:9: note: in expansion of macro 'numbers_list_8' > 420 | numbers_list_8(unsigned short, "%hu", delim, "hu", check_ushort); > | ^~~~~~~~~~~~~~ > >> include/linux/compiler.h:197:61: warning: function 'numbers_list_h' might be a candidate for 'gnu_scanf' format attribute [-Wsuggest-attribute=3Dformat] > 197 | #define __BUILD_BUG_ON_ZERO_MSG(e, msg) ((int)sizeof(struct {_Static_assert(!(e), msg);})) > | ^ > include/linux/compiler_types.h:522:23: note: in definition of macro '__compiletime_assert' > 522 | if (!(condition)) \ > | ^~~~~~~~~ > include/linux/compiler_types.h:542:9: note: in expansion of macro '_compiletime_assert' > 542 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) > | ^~~~~~~~~~~~~~~~~~~ > include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert' > 39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) > | ^~~~~~~~~~~~~~~~~~ > include/linux/build_bug.h:50:9: note: in expansion of macro 'BUILD_BUG_ON_MSG' > 50 | BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition) > | ^~~~~~~~~~~~~~~~ > lib/tests/scanf_kunit.c:333:9: note: in expansion of macro 'BUILD_BUG_ON' > 333 | BUILD_BUG_ON(ARRAY_SIZE(arr) !=3D 8); \ > | ^~~~~~~~~~~~ > include/linux/compiler.h:202:33: note: in expansion of macro '__BUILD_BUG_ON_ZERO_MSG' > 202 | #define __must_be_array(a) __BUILD_BUG_ON_ZERO_MSG(!__is_array(a), \ > | ^~~~~~~~~~~~~~~~~~~~~~~ > include/linux/array_size.h:11:59: note: in expansion of macro '__must_be_array' > 11 | #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr)) > | ^~~~~~~~~~~~~~~ > lib/tests/scanf_kunit.c:333:22: note: in expansion of macro 'ARRAY_SIZE' > 333 | BUILD_BUG_ON(ARRAY_SIZE(arr) !=3D 8); \ > | ^~~~~~~~~~ > lib/tests/scanf_kunit.c:356:9: note: in expansion of macro 'test_array_8' > 356 | test_array_8(fn, expect, test_buffer, fmt_buffer, result); \ > | ^~~~~~~~~~~~ > lib/tests/scanf_kunit.c:421:9: note: in expansion of macro 'numbers_list_8' > 421 | numbers_list_8(short, "%hd", delim, "hd", check_short); > | ^~~~~~~~~~~~~~ > include/linux/compiler.h:197:61: warning: function 'numbers_list_h' might be a candidate for 'gnu_scanf' format attribute [-Wsuggest-attribute=3Dformat] > 197 | #define __BUILD_BUG_ON_ZERO_MSG(e, msg) ((int)sizeof(struct {_Static_assert(!(e), msg);})) > | ^ > include/linux/compiler_types.h:522:23: note: in definition of macro '__compiletime_assert' > 522 | if (!(condition)) \ > | ^~~~~~~~~ > include/linux/compiler_types.h:542:9: note: in expansion of macro '_compiletime_assert' > 542 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) > | ^~~~~~~~~~~~~~~~~~~ > include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert' > 39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) > | ^~~~~~~~~~~~~~~~~~ > include/linux/build_bug.h:50:9: note: in expansion of macro 'BUILD_BUG_ON_MSG' > 50 | BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition) > | ^~~~~~~~~~~~~~~~ > lib/tests/scanf_kunit.c:333:9: note: in expansion of macro 'BUILD_BUG_ON' > 333 | BUILD_BUG_ON(ARRAY_SIZE(arr) !=3D 8); \ > | ^~~~~~~~~~~~ > include/linux/compiler.h:202:33: note: in expansion of macro '__BUILD_BUG_ON_ZERO_MSG' > 202 | #define __must_be_array(a) __BUILD_BUG_ON_ZERO_MSG(!__is_array(a), \ > | ^~~~~~~~~~~~~~~~~~~~~~~ > include/linux/array_size.h:11:59: note: in expansion of macro '__must_be_array' > 11 | #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr)) > | ^~~~~~~~~~~~~~~ > lib/tests/scanf_kunit.c:333:22: note: in expansion of macro 'ARRAY_SIZE' > 333 | BUILD_BUG_ON(ARRAY_SIZE(arr) !=3D 8); \ > | ^~~~~~~~~~ > lib/tests/scanf_kunit.c:356:9: note: in expansion of macro 'test_array_8' > 356 | test_array_8(fn, expect, test_buffer, fmt_buffer, result); \ > | ^~~~~~~~~~~~ > lib/tests/scanf_kunit.c:422:9: note: in expansion of macro 'numbers_list_8' > 422 | numbers_list_8(short, "%hd", delim, "hi", check_short); > | ^~~~~~~~~~~~~~ > include/linux/compiler.h:197:61: warning: function 'numbers_list_h' might be a candidate for 'gnu_scanf' format attribute [-Wsuggest-attribute=3Dformat] > 197 | #define __BUILD_BUG_ON_ZERO_MSG(e, msg) ((int)sizeof(struct {_Static_assert(!(e), msg);})) > | ^ > include/linux/compiler_types.h:522:23: note: in definition of macro '__compiletime_assert' > 522 | if (!(condition)) \ > | ^~~~~~~~~ > include/linux/compiler_types.h:542:9: note: in expansion of macro '_compiletime_assert' > 542 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) > | ^~~~~~~~~~~~~~~~~~~ > include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert' > 39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) > | ^~~~~~~~~~~~~~~~~~ > include/linux/build_bug.h:50:9: note: in expansion of macro 'BUILD_BUG_ON_MSG' > 50 | BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition) > | ^~~~~~~~~~~~~~~~ > lib/tests/scanf_kunit.c:333:9: note: in expansion of macro 'BUILD_BUG_ON' > 333 | BUILD_BUG_ON(ARRAY_SIZE(arr) !=3D 8); \ > | ^~~~~~~~~~~~ > include/linux/compiler.h:202:33: note: in expansion of macro '__BUILD_BUG_ON_ZERO_MSG' > 202 | #define __must_be_array(a) __BUILD_BUG_ON_ZERO_MSG(!__is_array(a), \ > | ^~~~~~~~~~~~~~~~~~~~~~~ > include/linux/array_size.h:11:59: note: in expansion of macro '__must_be_array' > 11 | #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr)) > | ^~~~~~~~~~~~~~~ > lib/tests/scanf_kunit.c:333:22: note: in expansion of macro 'ARRAY_SIZE' > 333 | BUILD_BUG_ON(ARRAY_SIZE(arr) !=3D 8); \ > | ^~~~~~~~~~ > lib/tests/scanf_kunit.c:356:9: note: in expansion of macro 'test_array_8' > 356 | test_array_8(fn, expect, test_buffer, fmt_buffer, result); \ > | ^~~~~~~~~~~~ > lib/tests/scanf_kunit.c:423:9: note: in expansion of macro 'numbers_list_8' > 423 | numbers_list_8(unsigned short, "%hx", delim, "hx", check_ushort); > | ^~~~~~~~~~~~~~ > include/linux/compiler.h:197:61: warning: function 'numbers_list_h' might be a candidate for 'gnu_scanf' format attribute [-Wsuggest-attribute=3Dformat] > 197 | #define __BUILD_BUG_ON_ZERO_MSG(e, msg) ((int)sizeof(struct {_Static_assert(!(e), msg);})) > > > vim +197 include/linux/compiler.h > > 230fa253df6352a Christian Borntraeger 2014-11-25 193 > cb7380de9e4cbc9 Kees Cook 2025-02-05 194 #ifdef __CHECKER__ > cb7380de9e4cbc9 Kees Cook 2025-02-05 195 #define __BUILD_BUG_ON_ZERO_MSG(e, msg) (0) > cb7380de9e4cbc9 Kees Cook 2025-02-05 196 #else /* __CHECKER__ */ > cb7380de9e4cbc9 Kees Cook 2025-02-05 @197 #define __BUILD_BUG_ON_ZERO_MSG(e, msg) ((int)sizeof(struct {_Static_assert(!(e), msg);})) > cb7380de9e4cbc9 Kees Cook 2025-02-05 198 #endif /* __CHECKER__ */ > cb7380de9e4cbc9 Kees Cook 2025-02-05 199 > > -- > 0-DAY CI Kernel Test Service > https://github.com/intel/lkp-tests/wiki I am not able to reproduce these warnings with clang 19.1.7. They also don't obviously make sense to me. --000000000000dd2ecf062e33a18b Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: base64 PGRpdiBkaXI9ImF1dG8iPk9uIFNhdCwgRmViIDE1LCAyMDI1IGF0IDE6NTHigK9QTSBrZXJuZWwg dGVzdCByb2JvdCAmbHQ7PGEgaHJlZj0ibWFpbHRvOmxrcEBpbnRlbC5jb20iIHRhcmdldD0iX2Js YW5rIiByZWw9Im5vcmVmZXJyZXIiPmxrcEBpbnRlbC5jb208L2E+Jmd0OyB3cm90ZTo8YnI+DQom Z3Q7PGJyPg0KJmd0OyBIaSBUYW1pciw8YnI+DQomZ3Q7PGJyPg0KJmd0OyBrZXJuZWwgdGVzdCBy b2JvdCBub3RpY2VkIHRoZSBmb2xsb3dpbmcgYnVpbGQgd2FybmluZ3M6PGJyPg0KJmd0Ozxicj4N CiZndDsgW2F1dG8gYnVpbGQgdGVzdCBXQVJOSU5HIG9uIDdiN2E4ODNjN2Y0ZGUxZWU1MDQwYmQx YzMyYWFiYWFmZGU1NGQyMDldPGJyPg0KJmd0Ozxicj4NCiZndDsgdXJsOsKgIMKgIDxhIGhyZWY9 Imh0dHBzOi8vZ2l0aHViLmNvbS9pbnRlbC1sYWItbGtwL2xpbnV4L2NvbW1pdHMvVGFtaXItRHVi ZXJzdGVpbi9zY2FuZi1pbXBsaWNhdGUtdGVzdC1saW5lLWluLWZhaWx1cmUtbWVzc2FnZXMvMjAy NTAyMTUtMDAyMzAyIiByZWw9Im5vcmVmZXJyZXIgbm9yZWZlcnJlciIgdGFyZ2V0PSJfYmxhbmsi Pmh0dHBzOi8vZ2l0aHViLmNvbS9pbnRlbC1sYWItbGtwL2xpbnV4L2NvbW1pdHMvVGFtaXItRHVi ZXJzdGVpbi9zY2FuZi1pbXBsaWNhdGUtdGVzdC1saW5lLWluLWZhaWx1cmUtbWVzc2FnZXMvMjAy NTAyMTUtMDAyMzAyPC9hPjxicj4NCiZndDsgYmFzZTrCoCDCoDdiN2E4ODNjN2Y0ZGUxZWU1MDQw YmQxYzMyYWFiYWFmZGU1NGQyMDk8YnI+DQomZ3Q7IHBhdGNoIGxpbms6wqAgwqAgPGEgaHJlZj0i aHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvci8yMDI1MDIxNC1zY2FuZi1rdW5pdC1jb252ZXJ0LXY4 LTMtNWVhNTBmOTVmODNjJTQwZ21haWwuY29tIiByZWw9Im5vcmVmZXJyZXIgbm9yZWZlcnJlciIg dGFyZ2V0PSJfYmxhbmsiPmh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL3IvMjAyNTAyMTQtc2NhbmYt a3VuaXQtY29udmVydC12OC0zLTVlYTUwZjk1ZjgzYyU0MGdtYWlsLmNvbTwvYT48YnI+DQomZ3Q7 IHBhdGNoIHN1YmplY3Q6IFtQQVRDSCB2OCAzLzRdIHNjYW5mOiBjb252ZXJ0IHNlbGYtdGVzdCB0 byBLVW5pdDxicj4NCiZndDsgY29uZmlnOiBzaC1yYW5kY29uZmlnLTAwMi0yMDI1MDIxNiAoPGEg aHJlZj0iaHR0cHM6Ly9kb3dubG9hZC4wMS5vcmcvMGRheS1jaS9hcmNoaXZlLzIwMjUwMjE2LzIw MjUwMjE2MDI0NS5LVXJyeUJKUi1sa3BAaW50ZWwuY29tL2NvbmZpZyIgcmVsPSJub3JlZmVycmVy IG5vcmVmZXJyZXIiIHRhcmdldD0iX2JsYW5rIj5odHRwczovL2Rvd25sb2FkLjAxLm9yZy8wZGF5 LWNpL2FyY2hpdmUvMjAyNTAyMTYvMjAyNTAyMTYwMjQ1LktVcnJ5QkpSLWxrcEBpbnRlbC5jb20v Y29uZmlnPC9hPik8YnI+DQomZ3Q7IGNvbXBpbGVyOiBzaDQtbGludXgtZ2NjIChHQ0MpIDE0LjIu MDxicj4NCiZndDsgcmVwcm9kdWNlICh0aGlzIGlzIGEgVz0xIGJ1aWxkKTogKDxhIGhyZWY9Imh0 dHBzOi8vZG93bmxvYWQuMDEub3JnLzBkYXktY2kvYXJjaGl2ZS8yMDI1MDIxNi8yMDI1MDIxNjAy NDUuS1VycnlCSlItbGtwQGludGVsLmNvbS9yZXByb2R1Y2UiIHJlbD0ibm9yZWZlcnJlciBub3Jl ZmVycmVyIiB0YXJnZXQ9Il9ibGFuayI+aHR0cHM6Ly9kb3dubG9hZC4wMS5vcmcvMGRheS1jaS9h cmNoaXZlLzIwMjUwMjE2LzIwMjUwMjE2MDI0NS5LVXJyeUJKUi1sa3BAaW50ZWwuY29tL3JlcHJv ZHVjZTwvYT4pPGJyPg0KJmd0Ozxicj4NCiZndDsgSWYgeW91IGZpeCB0aGUgaXNzdWUgaW4gYSBz ZXBhcmF0ZSBwYXRjaC9jb21taXQgKGkuZS4gbm90IGp1c3QgYSBuZXcgdmVyc2lvbiBvZjxicj4N CiZndDsgdGhlIHNhbWUgcGF0Y2gvY29tbWl0KSwga2luZGx5IGFkZCBmb2xsb3dpbmcgdGFnczxi cj4NCiZndDsgfCBSZXBvcnRlZC1ieToga2VybmVsIHRlc3Qgcm9ib3QgJmx0OzxhIGhyZWY9Im1h aWx0bzpsa3BAaW50ZWwuY29tIiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub3JlZmVycmVyIj5sa3BA aW50ZWwuY29tPC9hPiZndDs8YnI+DQomZ3Q7IHwgQ2xvc2VzOiA8YSBocmVmPSJodHRwczovL2xv cmUua2VybmVsLm9yZy9vZS1rYnVpbGQtYWxsLzIwMjUwMjE2MDI0NS5LVXJyeUJKUi1sa3BAaW50 ZWwuY29tLyIgcmVsPSJub3JlZmVycmVyIG5vcmVmZXJyZXIiIHRhcmdldD0iX2JsYW5rIj5odHRw czovL2xvcmUua2VybmVsLm9yZy9vZS1rYnVpbGQtYWxsLzIwMjUwMjE2MDI0NS5LVXJyeUJKUi1s a3BAaW50ZWwuY29tLzwvYT48YnI+DQomZ3Q7PGJyPg0KJmd0OyBBbGwgd2FybmluZ3MgKG5ldyBv bmVzIHByZWZpeGVkIGJ5ICZndDsmZ3Q7KTo8YnI+DQomZ3Q7PGJyPg0KJmd0O8KgIMKgIEluIGZp bGUgaW5jbHVkZWQgZnJvbSAmbHQ7Y29tbWFuZC1saW5lJmd0Ozo8YnI+DQomZ3Q7wqAgwqAgbGli L3Rlc3RzL3NjYW5mX2t1bml0LmM6IEluIGZ1bmN0aW9uICYjMzk7bnVtYmVyc19saXN0X2xsJiMz OTs6PGJyPg0KJmd0OyAmZ3Q7Jmd0OyBpbmNsdWRlL2xpbnV4L2NvbXBpbGVyLmg6MTk3OjYxOiB3 YXJuaW5nOiBmdW5jdGlvbiAmIzM5O251bWJlcnNfbGlzdF9sbCYjMzk7IG1pZ2h0IGJlIGEgY2Fu ZGlkYXRlIGZvciAmIzM5O2dudV9zY2FuZiYjMzk7IGZvcm1hdCBhdHRyaWJ1dGUgWy1Xc3VnZ2Vz dC1hdHRyaWJ1dGU9Zm9ybWF0XTxicj4NCiZndDvCoCDCoCDCoCAxOTcgfCAjZGVmaW5lIF9fQlVJ TERfQlVHX09OX1pFUk9fTVNHKGUsIG1zZykgKChpbnQpc2l6ZW9mKHN0cnVjdCB7X1N0YXRpY19h c3NlcnQoIShlKSwgbXNnKTt9KSk8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAgfMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgXjxicj4NCiZndDvCoCDCoCBpbmNsdWRlL2xpbnV4L2Nv bXBpbGVyX3R5cGVzLmg6NTIyOjIzOiBub3RlOiBpbiBkZWZpbml0aW9uIG9mIG1hY3JvICYjMzk7 X19jb21waWxldGltZV9hc3NlcnQmIzM5Ozxicj4NCiZndDvCoCDCoCDCoCA1MjIgfMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgaWYgKCEoY29uZGl0aW9uKSnCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoFw8YnI+DQomZ3Q7wqAgwqAgwqAg wqAgwqAgfMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgXn5+fn5+fn5+PGJyPg0K Jmd0O8KgIMKgIGluY2x1ZGUvbGludXgvY29tcGlsZXJfdHlwZXMuaDo1NDI6OTogbm90ZTogaW4g ZXhwYW5zaW9uIG9mIG1hY3JvICYjMzk7X2NvbXBpbGV0aW1lX2Fzc2VydCYjMzk7PGJyPg0KJmd0 O8KgIMKgIMKgIDU0MiB8wqAgwqAgwqAgwqAgwqBfY29tcGlsZXRpbWVfYXNzZXJ0KGNvbmRpdGlv biwgbXNnLCBfX2NvbXBpbGV0aW1lX2Fzc2VydF8sIF9fQ09VTlRFUl9fKTxicj4NCiZndDvCoCDC oCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAgwqBefn5+fn5+fn5+fn5+fn5+fn5+PGJyPg0KJmd0O8Kg IMKgIGluY2x1ZGUvbGludXgvYnVpbGRfYnVnLmg6Mzk6Mzc6IG5vdGU6IGluIGV4cGFuc2lvbiBv ZiBtYWNybyAmIzM5O2NvbXBpbGV0aW1lX2Fzc2VydCYjMzk7PGJyPg0KJmd0O8KgIMKgIMKgIMKg MzkgfCAjZGVmaW5lIEJVSUxEX0JVR19PTl9NU0coY29uZCwgbXNnKSBjb21waWxldGltZV9hc3Nl cnQoIShjb25kKSwgbXNnKTxicj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBefn5+fn5+fn5+fn5+fn5+ fn48YnI+DQomZ3Q7wqAgwqAgaW5jbHVkZS9saW51eC9idWlsZF9idWcuaDo1MDo5OiBub3RlOiBp biBleHBhbnNpb24gb2YgbWFjcm8gJiMzOTtCVUlMRF9CVUdfT05fTVNHJiMzOTs8YnI+DQomZ3Q7 wqAgwqAgwqAgwqA1MCB8wqAgwqAgwqAgwqAgwqBCVUlMRF9CVUdfT05fTVNHKGNvbmRpdGlvbiwg JnF1b3Q7QlVJTERfQlVHX09OIGZhaWxlZDogJnF1b3Q7ICNjb25kaXRpb24pPGJyPg0KJmd0O8Kg IMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDCoF5+fn5+fn5+fn5+fn5+fn48YnI+DQomZ3Q7wqAg wqAgbGliL3Rlc3RzL3NjYW5mX2t1bml0LmM6MzMzOjk6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBt YWNybyAmIzM5O0JVSUxEX0JVR19PTiYjMzk7PGJyPg0KJmd0O8KgIMKgIMKgIDMzMyB8wqAgwqAg wqAgwqAgwqBCVUlMRF9CVUdfT04oQVJSQVlfU0laRShhcnIpICE9IDgpO8KgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgXDxicj4NCiZndDvCoCDC oCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAgwqBefn5+fn5+fn5+fn48YnI+DQomZ3Q7wqAgwqAgaW5j bHVkZS9saW51eC9jb21waWxlci5oOjIwMjozMzogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3Jv ICYjMzk7X19CVUlMRF9CVUdfT05fWkVST19NU0cmIzM5Ozxicj4NCiZndDvCoCDCoCDCoCAyMDIg fCAjZGVmaW5lIF9fbXVzdF9iZV9hcnJheShhKcKgIMKgIMKgIF9fQlVJTERfQlVHX09OX1pFUk9f TVNHKCFfX2lzX2FycmF5KGEpLCBcPGJyPg0KJmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoF5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+PGJyPg0KJmd0O8KgIMKgIGluY2x1ZGUvbGludXgvYXJyYXlfc2l6ZS5oOjExOjU5OiBu b3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJiMzOTtfX211c3RfYmVfYXJyYXkmIzM5Ozxicj4N CiZndDvCoCDCoCDCoCDCoDExIHwgI2RlZmluZSBBUlJBWV9TSVpFKGFycikgKHNpemVvZihhcnIp IC8gc2l6ZW9mKChhcnIpWzBdKSArIF9fbXVzdF9iZV9hcnJheShhcnIpKTxicj4NCiZndDvCoCDC oCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBefn5+fn5+fn5+fn5+ fn48YnI+DQomZ3Q7wqAgwqAgbGliL3Rlc3RzL3NjYW5mX2t1bml0LmM6MzMzOjIyOiBub3RlOiBp biBleHBhbnNpb24gb2YgbWFjcm8gJiMzOTtBUlJBWV9TSVpFJiMzOTs8YnI+DQomZ3Q7wqAgwqAg wqAgMzMzIHzCoCDCoCDCoCDCoCDCoEJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGFycikgIT0gOCk7 wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBc PGJyPg0KJmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCBefn5+fn5+fn5+PGJyPg0KJmd0O8KgIMKgIGxpYi90ZXN0cy9zY2FuZl9rdW5pdC5jOjM1Njo5 OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJiMzOTt0ZXN0X2FycmF5XzgmIzM5Ozxicj4N CiZndDvCoCDCoCDCoCAzNTYgfMKgIMKgIMKgIMKgIMKgdGVzdF9hcnJheV84KGZuLCBleHBlY3Qs IHRlc3RfYnVmZmVyLCBmbXRfYnVmZmVyLCByZXN1bHQpO8KgIMKgIMKgIMKgIMKgIMKgIMKgIFw8 YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAgfMKgIMKgIMKgIMKgIMKgXn5+fn5+fn5+fn5+PGJyPg0K Jmd0O8KgIMKgIGxpYi90ZXN0cy9zY2FuZl9rdW5pdC5jOjM5MDo5OiBub3RlOiBpbiBleHBhbnNp b24gb2YgbWFjcm8gJiMzOTtudW1iZXJzX2xpc3RfOCYjMzk7PGJyPg0KJmd0O8KgIMKgIMKgIDM5 MCB8wqAgwqAgwqAgwqAgwqBudW1iZXJzX2xpc3RfOCh1bnNpZ25lZCBsb25nIGxvbmcsICZxdW90 OyVsbHUmcXVvdDsswqAgwqBkZWxpbSwgJnF1b3Q7bGx1JnF1b3Q7LCBjaGVja191bGwpOzxicj4N CiZndDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAgwqBefn5+fn5+fn5+fn5+fjxicj4NCiZn dDsgJmd0OyZndDsgaW5jbHVkZS9saW51eC9jb21waWxlci5oOjE5Nzo2MTogd2FybmluZzogZnVu Y3Rpb24gJiMzOTtudW1iZXJzX2xpc3RfbGwmIzM5OyBtaWdodCBiZSBhIGNhbmRpZGF0ZSBmb3Ig JiMzOTtnbnVfc2NhbmYmIzM5OyBmb3JtYXQgYXR0cmlidXRlIFstV3N1Z2dlc3QtYXR0cmlidXRl PWZvcm1hdF08YnI+DQomZ3Q7wqAgwqAgwqAgMTk3IHwgI2RlZmluZSBfX0JVSUxEX0JVR19PTl9a RVJPX01TRyhlLCBtc2cpICgoaW50KXNpemVvZihzdHJ1Y3Qge19TdGF0aWNfYXNzZXJ0KCEoZSks IG1zZyk7fSkpPGJyPg0KJmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoF48YnI+DQomZ3Q7wqAgwqAgaW5jbHVkZS9saW51eC9jb21waWxlcl90eXBl cy5oOjUyMjoyMzogbm90ZTogaW4gZGVmaW5pdGlvbiBvZiBtYWNybyAmIzM5O19fY29tcGlsZXRp bWVfYXNzZXJ0JiMzOTs8YnI+DQomZ3Q7wqAgwqAgwqAgNTIyIHzCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoGlmICghKGNvbmRpdGlvbikpwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBcPGJyPg0KJmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoF5+fn5+fn5+fjxicj4NCiZndDvCoCDCoCBp bmNsdWRlL2xpbnV4L2NvbXBpbGVyX3R5cGVzLmg6NTQyOjk6IG5vdGU6IGluIGV4cGFuc2lvbiBv ZiBtYWNybyAmIzM5O19jb21waWxldGltZV9hc3NlcnQmIzM5Ozxicj4NCiZndDvCoCDCoCDCoCA1 NDIgfMKgIMKgIMKgIMKgIMKgX2NvbXBpbGV0aW1lX2Fzc2VydChjb25kaXRpb24sIG1zZywgX19j b21waWxldGltZV9hc3NlcnRfLCBfX0NPVU5URVJfXyk8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAg fMKgIMKgIMKgIMKgIMKgXn5+fn5+fn5+fn5+fn5+fn5+fjxicj4NCiZndDvCoCDCoCBpbmNsdWRl L2xpbnV4L2J1aWxkX2J1Zy5oOjM5OjM3OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJiMz OTtjb21waWxldGltZV9hc3NlcnQmIzM5Ozxicj4NCiZndDvCoCDCoCDCoCDCoDM5IHwgI2RlZmlu ZSBCVUlMRF9CVUdfT05fTVNHKGNvbmQsIG1zZykgY29tcGlsZXRpbWVfYXNzZXJ0KCEoY29uZCks IG1zZyk8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAgfMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgXn5+fn5+fn5+fn5+fn5+fn5+PGJyPg0KJmd0 O8KgIMKgIGluY2x1ZGUvbGludXgvYnVpbGRfYnVnLmg6NTA6OTogbm90ZTogaW4gZXhwYW5zaW9u IG9mIG1hY3JvICYjMzk7QlVJTERfQlVHX09OX01TRyYjMzk7PGJyPg0KJmd0O8KgIMKgIMKgIMKg NTAgfMKgIMKgIMKgIMKgIMKgQlVJTERfQlVHX09OX01TRyhjb25kaXRpb24sICZxdW90O0JVSUxE X0JVR19PTiBmYWlsZWQ6ICZxdW90OyAjY29uZGl0aW9uKTxicj4NCiZndDvCoCDCoCDCoCDCoCDC oCB8wqAgwqAgwqAgwqAgwqBefn5+fn5+fn5+fn5+fn5+PGJyPg0KJmd0O8KgIMKgIGxpYi90ZXN0 cy9zY2FuZl9rdW5pdC5jOjMzMzo5OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJiMzOTtC VUlMRF9CVUdfT04mIzM5Ozxicj4NCiZndDvCoCDCoCDCoCAzMzMgfMKgIMKgIMKgIMKgIMKgQlVJ TERfQlVHX09OKEFSUkFZX1NJWkUoYXJyKSAhPSA4KTvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoFw8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAg fMKgIMKgIMKgIMKgIMKgXn5+fn5+fn5+fn5+PGJyPg0KJmd0O8KgIMKgIGluY2x1ZGUvbGludXgv Y29tcGlsZXIuaDoyMDI6MzM6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyAmIzM5O19fQlVJ TERfQlVHX09OX1pFUk9fTVNHJiMzOTs8YnI+DQomZ3Q7wqAgwqAgwqAgMjAyIHwgI2RlZmluZSBf X211c3RfYmVfYXJyYXkoYSnCoCDCoCDCoCBfX0JVSUxEX0JVR19PTl9aRVJPX01TRyghX19pc19h cnJheShhKSwgXDxicj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBefn5+fn5+fn5+fn5+fn5+fn5+fn5+fjxicj4N CiZndDvCoCDCoCBpbmNsdWRlL2xpbnV4L2FycmF5X3NpemUuaDoxMTo1OTogbm90ZTogaW4gZXhw YW5zaW9uIG9mIG1hY3JvICYjMzk7X19tdXN0X2JlX2FycmF5JiMzOTs8YnI+DQomZ3Q7wqAgwqAg wqAgwqAxMSB8ICNkZWZpbmUgQVJSQVlfU0laRShhcnIpIChzaXplb2YoYXJyKSAvIHNpemVvZigo YXJyKVswXSkgKyBfX211c3RfYmVfYXJyYXkoYXJyKSk8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAg fMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgXn5+fn5+fn5+fn5+fn5+PGJyPg0KJmd0 O8KgIMKgIGxpYi90ZXN0cy9zY2FuZl9rdW5pdC5jOjMzMzoyMjogbm90ZTogaW4gZXhwYW5zaW9u IG9mIG1hY3JvICYjMzk7QVJSQVlfU0laRSYjMzk7PGJyPg0KJmd0O8KgIMKgIMKgIDMzMyB8wqAg wqAgwqAgwqAgwqBCVUlMRF9CVUdfT04oQVJSQVlfU0laRShhcnIpICE9IDgpO8KgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgXDxicj4NCiZndDvC oCDCoCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgXn5+fn5+fn5+ fjxicj4NCiZndDvCoCDCoCBsaWIvdGVzdHMvc2NhbmZfa3VuaXQuYzozNTY6OTogbm90ZTogaW4g ZXhwYW5zaW9uIG9mIG1hY3JvICYjMzk7dGVzdF9hcnJheV84JiMzOTs8YnI+DQomZ3Q7wqAgwqAg wqAgMzU2IHzCoCDCoCDCoCDCoCDCoHRlc3RfYXJyYXlfOChmbiwgZXhwZWN0LCB0ZXN0X2J1ZmZl ciwgZm10X2J1ZmZlciwgcmVzdWx0KTvCoCDCoCDCoCDCoCDCoCDCoCDCoCBcPGJyPg0KJmd0O8Kg IMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDCoF5+fn5+fn5+fn5+fjxicj4NCiZndDvCoCDCoCBs aWIvdGVzdHMvc2NhbmZfa3VuaXQuYzozOTE6OTogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3Jv ICYjMzk7bnVtYmVyc19saXN0XzgmIzM5Ozxicj4NCiZndDvCoCDCoCDCoCAzOTEgfMKgIMKgIMKg IMKgIMKgbnVtYmVyc19saXN0XzgobG9uZyBsb25nLMKgIMKgIMKgIMKgIMKgICZxdW90OyVsbGQm cXVvdDsswqAgwqBkZWxpbSwgJnF1b3Q7bGxkJnF1b3Q7LCBjaGVja19sbCk7PGJyPg0KJmd0O8Kg IMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDCoF5+fn5+fn5+fn5+fn5+PGJyPg0KJmd0OyAmZ3Q7 Jmd0OyBpbmNsdWRlL2xpbnV4L2NvbXBpbGVyLmg6MTk3OjYxOiB3YXJuaW5nOiBmdW5jdGlvbiAm IzM5O251bWJlcnNfbGlzdF9sbCYjMzk7IG1pZ2h0IGJlIGEgY2FuZGlkYXRlIGZvciAmIzM5O2du dV9zY2FuZiYjMzk7IGZvcm1hdCBhdHRyaWJ1dGUgWy1Xc3VnZ2VzdC1hdHRyaWJ1dGU9Zm9ybWF0 XTxicj4NCiZndDvCoCDCoCDCoCAxOTcgfCAjZGVmaW5lIF9fQlVJTERfQlVHX09OX1pFUk9fTVNH KGUsIG1zZykgKChpbnQpc2l6ZW9mKHN0cnVjdCB7X1N0YXRpY19hc3NlcnQoIShlKSwgbXNnKTt9 KSk8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAgfMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgXjxicj4NCiZndDvCoCDCoCBpbmNsdWRlL2xpbnV4L2NvbXBpbGVyX3R5cGVzLmg6NTIy OjIzOiBub3RlOiBpbiBkZWZpbml0aW9uIG9mIG1hY3JvICYjMzk7X19jb21waWxldGltZV9hc3Nl cnQmIzM5Ozxicj4NCiZndDvCoCDCoCDCoCA1MjIgfMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg aWYgKCEoY29uZGl0aW9uKSnCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoFw8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAgfMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgXn5+fn5+fn5+PGJyPg0KJmd0O8KgIMKgIGluY2x1ZGUv bGludXgvY29tcGlsZXJfdHlwZXMuaDo1NDI6OTogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3Jv ICYjMzk7X2NvbXBpbGV0aW1lX2Fzc2VydCYjMzk7PGJyPg0KJmd0O8KgIMKgIMKgIDU0MiB8wqAg wqAgwqAgwqAgwqBfY29tcGlsZXRpbWVfYXNzZXJ0KGNvbmRpdGlvbiwgbXNnLCBfX2NvbXBpbGV0 aW1lX2Fzc2VydF8sIF9fQ09VTlRFUl9fKTxicj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAg wqAgwqAgwqBefn5+fn5+fn5+fn5+fn5+fn5+PGJyPg0KJmd0O8KgIMKgIGluY2x1ZGUvbGludXgv YnVpbGRfYnVnLmg6Mzk6Mzc6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyAmIzM5O2NvbXBp bGV0aW1lX2Fzc2VydCYjMzk7PGJyPg0KJmd0O8KgIMKgIMKgIMKgMzkgfCAjZGVmaW5lIEJVSUxE X0JVR19PTl9NU0coY29uZCwgbXNnKSBjb21waWxldGltZV9hc3NlcnQoIShjb25kKSwgbXNnKTxi cj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBefn5+fn5+fn5+fn5+fn5+fn48YnI+DQomZ3Q7wqAgwqAg aW5jbHVkZS9saW51eC9idWlsZF9idWcuaDo1MDo5OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFj cm8gJiMzOTtCVUlMRF9CVUdfT05fTVNHJiMzOTs8YnI+DQomZ3Q7wqAgwqAgwqAgwqA1MCB8wqAg wqAgwqAgwqAgwqBCVUlMRF9CVUdfT05fTVNHKGNvbmRpdGlvbiwgJnF1b3Q7QlVJTERfQlVHX09O IGZhaWxlZDogJnF1b3Q7ICNjb25kaXRpb24pPGJyPg0KJmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDC oCDCoCDCoCDCoF5+fn5+fn5+fn5+fn5+fn48YnI+DQomZ3Q7wqAgwqAgbGliL3Rlc3RzL3NjYW5m X2t1bml0LmM6MzMzOjk6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyAmIzM5O0JVSUxEX0JV R19PTiYjMzk7PGJyPg0KJmd0O8KgIMKgIMKgIDMzMyB8wqAgwqAgwqAgwqAgwqBCVUlMRF9CVUdf T04oQVJSQVlfU0laRShhcnIpICE9IDgpO8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgXDxicj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAg wqAgwqAgwqBefn5+fn5+fn5+fn48YnI+DQomZ3Q7wqAgwqAgaW5jbHVkZS9saW51eC9jb21waWxl ci5oOjIwMjozMzogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvICYjMzk7X19CVUlMRF9CVUdf T05fWkVST19NU0cmIzM5Ozxicj4NCiZndDvCoCDCoCDCoCAyMDIgfCAjZGVmaW5lIF9fbXVzdF9i ZV9hcnJheShhKcKgIMKgIMKgIF9fQlVJTERfQlVHX09OX1pFUk9fTVNHKCFfX2lzX2FycmF5KGEp LCBcPGJyPg0KJmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoF5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+PGJyPg0KJmd0O8Kg IMKgIGluY2x1ZGUvbGludXgvYXJyYXlfc2l6ZS5oOjExOjU5OiBub3RlOiBpbiBleHBhbnNpb24g b2YgbWFjcm8gJiMzOTtfX211c3RfYmVfYXJyYXkmIzM5Ozxicj4NCiZndDvCoCDCoCDCoCDCoDEx IHwgI2RlZmluZSBBUlJBWV9TSVpFKGFycikgKHNpemVvZihhcnIpIC8gc2l6ZW9mKChhcnIpWzBd KSArIF9fbXVzdF9iZV9hcnJheShhcnIpKTxicj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBefn5+fn5+fn5+fn5+fn48YnI+DQomZ3Q7wqAgwqAg bGliL3Rlc3RzL3NjYW5mX2t1bml0LmM6MzMzOjIyOiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFj cm8gJiMzOTtBUlJBWV9TSVpFJiMzOTs8YnI+DQomZ3Q7wqAgwqAgwqAgMzMzIHzCoCDCoCDCoCDC oCDCoEJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGFycikgIT0gOCk7wqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBcPGJyPg0KJmd0O8KgIMKgIMKg IMKgIMKgIHzCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBefn5+fn5+fn5+PGJyPg0K Jmd0O8KgIMKgIGxpYi90ZXN0cy9zY2FuZl9rdW5pdC5jOjM1Njo5OiBub3RlOiBpbiBleHBhbnNp b24gb2YgbWFjcm8gJiMzOTt0ZXN0X2FycmF5XzgmIzM5Ozxicj4NCiZndDvCoCDCoCDCoCAzNTYg fMKgIMKgIMKgIMKgIMKgdGVzdF9hcnJheV84KGZuLCBleHBlY3QsIHRlc3RfYnVmZmVyLCBmbXRf YnVmZmVyLCByZXN1bHQpO8KgIMKgIMKgIMKgIMKgIMKgIMKgIFw8YnI+DQomZ3Q7wqAgwqAgwqAg wqAgwqAgfMKgIMKgIMKgIMKgIMKgXn5+fn5+fn5+fn5+PGJyPg0KJmd0O8KgIMKgIGxpYi90ZXN0 cy9zY2FuZl9rdW5pdC5jOjM5Mjo5OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJiMzOTtu dW1iZXJzX2xpc3RfOCYjMzk7PGJyPg0KJmd0O8KgIMKgIMKgIDM5MiB8wqAgwqAgwqAgwqAgwqBu dW1iZXJzX2xpc3RfOChsb25nIGxvbmcswqAgwqAgwqAgwqAgwqAgJnF1b3Q7JWxsZCZxdW90OyzC oCDCoGRlbGltLCAmcXVvdDtsbGkmcXVvdDssIGNoZWNrX2xsKTs8YnI+DQomZ3Q7wqAgwqAgwqAg wqAgwqAgfMKgIMKgIMKgIMKgIMKgXn5+fn5+fn5+fn5+fn48YnI+DQomZ3Q7ICZndDsmZ3Q7IGlu Y2x1ZGUvbGludXgvY29tcGlsZXIuaDoxOTc6NjE6IHdhcm5pbmc6IGZ1bmN0aW9uICYjMzk7bnVt YmVyc19saXN0X2xsJiMzOTsgbWlnaHQgYmUgYSBjYW5kaWRhdGUgZm9yICYjMzk7Z251X3NjYW5m JiMzOTsgZm9ybWF0IGF0dHJpYnV0ZSBbLVdzdWdnZXN0LWF0dHJpYnV0ZT1mb3JtYXRdPGJyPg0K Jmd0O8KgIMKgIMKgIDE5NyB8ICNkZWZpbmUgX19CVUlMRF9CVUdfT05fWkVST19NU0coZSwgbXNn KSAoKGludClzaXplb2Yoc3RydWN0IHtfU3RhdGljX2Fzc2VydCghKGUpLCBtc2cpO30pKTxicj4N CiZndDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBe PGJyPg0KJmd0O8KgIMKgIGluY2x1ZGUvbGludXgvY29tcGlsZXJfdHlwZXMuaDo1MjI6MjM6IG5v dGU6IGluIGRlZmluaXRpb24gb2YgbWFjcm8gJiMzOTtfX2NvbXBpbGV0aW1lX2Fzc2VydCYjMzk7 PGJyPg0KJmd0O8KgIMKgIMKgIDUyMiB8wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBpZiAoIShj b25kaXRpb24pKcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgXDxicj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqBefn5+fn5+fn48YnI+DQomZ3Q7wqAgwqAgaW5jbHVkZS9saW51eC9j b21waWxlcl90eXBlcy5oOjU0Mjo5OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJiMzOTtf Y29tcGlsZXRpbWVfYXNzZXJ0JiMzOTs8YnI+DQomZ3Q7wqAgwqAgwqAgNTQyIHzCoCDCoCDCoCDC oCDCoF9jb21waWxldGltZV9hc3NlcnQoY29uZGl0aW9uLCBtc2csIF9fY29tcGlsZXRpbWVfYXNz ZXJ0XywgX19DT1VOVEVSX18pPGJyPg0KJmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDC oF5+fn5+fn5+fn5+fn5+fn5+fn48YnI+DQomZ3Q7wqAgwqAgaW5jbHVkZS9saW51eC9idWlsZF9i dWcuaDozOTozNzogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvICYjMzk7Y29tcGlsZXRpbWVf YXNzZXJ0JiMzOTs8YnI+DQomZ3Q7wqAgwqAgwqAgwqAzOSB8ICNkZWZpbmUgQlVJTERfQlVHX09O X01TRyhjb25kLCBtc2cpIGNvbXBpbGV0aW1lX2Fzc2VydCghKGNvbmQpLCBtc2cpPGJyPg0KJmd0 O8KgIMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoF5+fn5+fn5+fn5+fn5+fn5+fjxicj4NCiZndDvCoCDCoCBpbmNsdWRl L2xpbnV4L2J1aWxkX2J1Zy5oOjUwOjk6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyAmIzM5 O0JVSUxEX0JVR19PTl9NU0cmIzM5Ozxicj4NCiZndDvCoCDCoCDCoCDCoDUwIHzCoCDCoCDCoCDC oCDCoEJVSUxEX0JVR19PTl9NU0coY29uZGl0aW9uLCAmcXVvdDtCVUlMRF9CVUdfT04gZmFpbGVk OiAmcXVvdDsgI2NvbmRpdGlvbik8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAgfMKgIMKgIMKgIMKg IMKgXn5+fn5+fn5+fn5+fn5+fjxicj4NCiZndDvCoCDCoCBsaWIvdGVzdHMvc2NhbmZfa3VuaXQu YzozMzM6OTogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvICYjMzk7QlVJTERfQlVHX09OJiMz OTs8YnI+DQomZ3Q7wqAgwqAgwqAgMzMzIHzCoCDCoCDCoCDCoCDCoEJVSUxEX0JVR19PTihBUlJB WV9TSVpFKGFycikgIT0gOCk7wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqBcPGJyPg0KJmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDC oF5+fn5+fn5+fn5+fjxicj4NCiZndDvCoCDCoCBpbmNsdWRlL2xpbnV4L2NvbXBpbGVyLmg6MjAy OjMzOiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJiMzOTtfX0JVSUxEX0JVR19PTl9aRVJP X01TRyYjMzk7PGJyPg0KJmd0O8KgIMKgIMKgIDIwMiB8ICNkZWZpbmUgX19tdXN0X2JlX2FycmF5 KGEpwqAgwqAgwqAgX19CVUlMRF9CVUdfT05fWkVST19NU0coIV9faXNfYXJyYXkoYSksIFw8YnI+ DQomZ3Q7wqAgwqAgwqAgwqAgwqAgfMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgXn5+fn5+fn5+fn5+fn5+fn5+fn5+fn48YnI+DQomZ3Q7wqAgwqAgaW5j bHVkZS9saW51eC9hcnJheV9zaXplLmg6MTE6NTk6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNy byAmIzM5O19fbXVzdF9iZV9hcnJheSYjMzk7PGJyPg0KJmd0O8KgIMKgIMKgIMKgMTEgfCAjZGVm aW5lIEFSUkFZX1NJWkUoYXJyKSAoc2l6ZW9mKGFycikgLyBzaXplb2YoKGFycilbMF0pICsgX19t dXN0X2JlX2FycmF5KGFycikpPGJyPg0KJmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoF5+fn5+fn5+fn5+fn5+fjxicj4NCiZndDvCoCDCoCBsaWIvdGVz dHMvc2NhbmZfa3VuaXQuYzozMzM6MjI6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyAmIzM5 O0FSUkFZX1NJWkUmIzM5Ozxicj4NCiZndDvCoCDCoCDCoCAzMzMgfMKgIMKgIMKgIMKgIMKgQlVJ TERfQlVHX09OKEFSUkFZX1NJWkUoYXJyKSAhPSA4KTvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoFw8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAg fMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIF5+fn5+fn5+fn48YnI+DQomZ3Q7wqAg wqAgbGliL3Rlc3RzL3NjYW5mX2t1bml0LmM6MzU2Ojk6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBt YWNybyAmIzM5O3Rlc3RfYXJyYXlfOCYjMzk7PGJyPg0KJmd0O8KgIMKgIMKgIDM1NiB8wqAgwqAg wqAgwqAgwqB0ZXN0X2FycmF5XzgoZm4sIGV4cGVjdCwgdGVzdF9idWZmZXIsIGZtdF9idWZmZXIs IHJlc3VsdCk7wqAgwqAgwqAgwqAgwqAgwqAgwqAgXDxicj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8 wqAgwqAgwqAgwqAgwqBefn5+fn5+fn5+fn48YnI+DQomZ3Q7wqAgwqAgbGliL3Rlc3RzL3NjYW5m X2t1bml0LmM6MzkzOjk6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyAmIzM5O251bWJlcnNf bGlzdF84JiMzOTs8YnI+DQomZ3Q7wqAgwqAgwqAgMzkzIHzCoCDCoCDCoCDCoCDCoG51bWJlcnNf bGlzdF84KHVuc2lnbmVkIGxvbmcgbG9uZywgJnF1b3Q7JWxseCZxdW90OyzCoCDCoGRlbGltLCAm cXVvdDtsbHgmcXVvdDssIGNoZWNrX3VsbCk7PGJyPg0KJmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDC oCDCoCDCoCDCoF5+fn5+fn5+fn5+fn5+PGJyPg0KJmd0OyAmZ3Q7Jmd0OyBpbmNsdWRlL2xpbnV4 L2NvbXBpbGVyLmg6MTk3OjYxOiB3YXJuaW5nOiBmdW5jdGlvbiAmIzM5O251bWJlcnNfbGlzdF9s bCYjMzk7IG1pZ2h0IGJlIGEgY2FuZGlkYXRlIGZvciAmIzM5O2dudV9zY2FuZiYjMzk7IGZvcm1h dCBhdHRyaWJ1dGUgWy1Xc3VnZ2VzdC1hdHRyaWJ1dGU9Zm9ybWF0XTxicj4NCiZndDvCoCDCoCDC oCAxOTcgfCAjZGVmaW5lIF9fQlVJTERfQlVHX09OX1pFUk9fTVNHKGUsIG1zZykgKChpbnQpc2l6 ZW9mKHN0cnVjdCB7X1N0YXRpY19hc3NlcnQoIShlKSwgbXNnKTt9KSk8YnI+DQomZ3Q7wqAgwqAg wqAgwqAgwqAgfMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgXjxicj4NCiZndDvC oCDCoCBpbmNsdWRlL2xpbnV4L2NvbXBpbGVyX3R5cGVzLmg6NTIyOjIzOiBub3RlOiBpbiBkZWZp bml0aW9uIG9mIG1hY3JvICYjMzk7X19jb21waWxldGltZV9hc3NlcnQmIzM5Ozxicj4NCiZndDvC oCDCoCDCoCA1MjIgfMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaWYgKCEoY29uZGl0aW9uKSnC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oFw8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAgfMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgXn5+fn5+fn5+PGJyPg0KJmd0O8KgIMKgIGluY2x1ZGUvbGludXgvY29tcGlsZXJfdHlw ZXMuaDo1NDI6OTogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvICYjMzk7X2NvbXBpbGV0aW1l X2Fzc2VydCYjMzk7PGJyPg0KJmd0O8KgIMKgIMKgIDU0MiB8wqAgwqAgwqAgwqAgwqBfY29tcGls ZXRpbWVfYXNzZXJ0KGNvbmRpdGlvbiwgbXNnLCBfX2NvbXBpbGV0aW1lX2Fzc2VydF8sIF9fQ09V TlRFUl9fKTxicj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAgwqBefn5+fn5+fn5+ fn5+fn5+fn5+PGJyPg0KJmd0O8KgIMKgIGluY2x1ZGUvbGludXgvYnVpbGRfYnVnLmg6Mzk6Mzc6 IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyAmIzM5O2NvbXBpbGV0aW1lX2Fzc2VydCYjMzk7 PGJyPg0KJmd0O8KgIMKgIMKgIMKgMzkgfCAjZGVmaW5lIEJVSUxEX0JVR19PTl9NU0coY29uZCwg bXNnKSBjb21waWxldGltZV9hc3NlcnQoIShjb25kKSwgbXNnKTxicj4NCiZndDvCoCDCoCDCoCDC oCDCoCB8wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqBefn5+fn5+fn5+fn5+fn5+fn48YnI+DQomZ3Q7wqAgwqAgaW5jbHVkZS9saW51eC9idWls ZF9idWcuaDo1MDo5OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJiMzOTtCVUlMRF9CVUdf T05fTVNHJiMzOTs8YnI+DQomZ3Q7wqAgwqAgwqAgwqA1MCB8wqAgwqAgwqAgwqAgwqBCVUlMRF9C VUdfT05fTVNHKGNvbmRpdGlvbiwgJnF1b3Q7QlVJTERfQlVHX09OIGZhaWxlZDogJnF1b3Q7ICNj b25kaXRpb24pPGJyPg0KJmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDCoF5+fn5+fn5+ fn5+fn5+fn48YnI+DQomZ3Q7wqAgwqAgbGliL3Rlc3RzL3NjYW5mX2t1bml0LmM6MzMzOjk6IG5v dGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyAmIzM5O0JVSUxEX0JVR19PTiYjMzk7PGJyPg0KJmd0 O8KgIMKgIMKgIDMzMyB8wqAgwqAgwqAgwqAgwqBCVUlMRF9CVUdfT04oQVJSQVlfU0laRShhcnIp ICE9IDgpO8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgXDxicj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAgwqBefn5+fn5+fn5+ fn48YnI+DQomZ3Q7wqAgwqAgaW5jbHVkZS9saW51eC9jb21waWxlci5oOjIwMjozMzogbm90ZTog aW4gZXhwYW5zaW9uIG9mIG1hY3JvICYjMzk7X19CVUlMRF9CVUdfT05fWkVST19NU0cmIzM5Ozxi cj4NCiZndDvCoCDCoCDCoCAyMDIgfCAjZGVmaW5lIF9fbXVzdF9iZV9hcnJheShhKcKgIMKgIMKg IF9fQlVJTERfQlVHX09OX1pFUk9fTVNHKCFfX2lzX2FycmF5KGEpLCBcPGJyPg0KJmd0O8KgIMKg IMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoF5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+PGJyPg0KJmd0O8KgIMKgIGluY2x1ZGUvbGludXgv YXJyYXlfc2l6ZS5oOjExOjU5OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJiMzOTtfX211 c3RfYmVfYXJyYXkmIzM5Ozxicj4NCiZndDvCoCDCoCDCoCDCoDExIHwgI2RlZmluZSBBUlJBWV9T SVpFKGFycikgKHNpemVvZihhcnIpIC8gc2l6ZW9mKChhcnIpWzBdKSArIF9fbXVzdF9iZV9hcnJh eShhcnIpKTxicj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqBefn5+fn5+fn5+fn5+fn48YnI+DQomZ3Q7wqAgwqAgbGliL3Rlc3RzL3NjYW5mX2t1 bml0LmM6MzMzOjIyOiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJiMzOTtBUlJBWV9TSVpF JiMzOTs8YnI+DQomZ3Q7wqAgwqAgwqAgMzMzIHzCoCDCoCDCoCDCoCDCoEJVSUxEX0JVR19PTihB UlJBWV9TSVpFKGFycikgIT0gOCk7wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqBcPGJyPg0KJmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBefn5+fn5+fn5+PGJyPg0KJmd0O8KgIMKgIGxpYi90ZXN0 cy9zY2FuZl9rdW5pdC5jOjM1Njo5OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJiMzOTt0 ZXN0X2FycmF5XzgmIzM5Ozxicj4NCiZndDvCoCDCoCDCoCAzNTYgfMKgIMKgIMKgIMKgIMKgdGVz dF9hcnJheV84KGZuLCBleHBlY3QsIHRlc3RfYnVmZmVyLCBmbXRfYnVmZmVyLCByZXN1bHQpO8Kg IMKgIMKgIMKgIMKgIMKgIMKgIFw8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAgfMKgIMKgIMKgIMKg IMKgXn5+fn5+fn5+fn5+PGJyPg0KJmd0O8KgIMKgIGxpYi90ZXN0cy9zY2FuZl9rdW5pdC5jOjM5 NDo5OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJiMzOTtudW1iZXJzX2xpc3RfOCYjMzk7 PGJyPg0KJmd0O8KgIMKgIMKgIDM5NCB8wqAgwqAgwqAgwqAgwqBudW1iZXJzX2xpc3RfOCh1bnNp Z25lZCBsb25nIGxvbmcsICZxdW90OzB4JWxseCZxdW90OywgZGVsaW0sICZxdW90O2xseCZxdW90 OywgY2hlY2tfdWxsKTs8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAgfMKgIMKgIMKgIMKgIMKgXn5+ fn5+fn5+fn5+fn48YnI+DQomZ3Q7ICZndDsmZ3Q7IGluY2x1ZGUvbGludXgvY29tcGlsZXIuaDox OTc6NjE6IHdhcm5pbmc6IGZ1bmN0aW9uICYjMzk7bnVtYmVyc19saXN0X2xsJiMzOTsgbWlnaHQg YmUgYSBjYW5kaWRhdGUgZm9yICYjMzk7Z251X3NjYW5mJiMzOTsgZm9ybWF0IGF0dHJpYnV0ZSBb LVdzdWdnZXN0LWF0dHJpYnV0ZT1mb3JtYXRdPGJyPg0KJmd0O8KgIMKgIMKgIDE5NyB8ICNkZWZp bmUgX19CVUlMRF9CVUdfT05fWkVST19NU0coZSwgbXNnKSAoKGludClzaXplb2Yoc3RydWN0IHtf U3RhdGljX2Fzc2VydCghKGUpLCBtc2cpO30pKTxicj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8wqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBePGJyPg0KJmd0O8KgIMKgIGluY2x1ZGUv bGludXgvY29tcGlsZXJfdHlwZXMuaDo1MjI6MjM6IG5vdGU6IGluIGRlZmluaXRpb24gb2YgbWFj cm8gJiMzOTtfX2NvbXBpbGV0aW1lX2Fzc2VydCYjMzk7PGJyPg0KJmd0O8KgIMKgIMKgIDUyMiB8 wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBpZiAoIShjb25kaXRpb24pKcKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgXDxicj4NCiZndDvC oCDCoCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBefn5+fn5+ fn48YnI+DQomZ3Q7wqAgwqAgaW5jbHVkZS9saW51eC9jb21waWxlcl90eXBlcy5oOjU0Mjo5OiBu b3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJiMzOTtfY29tcGlsZXRpbWVfYXNzZXJ0JiMzOTs8 YnI+DQomZ3Q7wqAgwqAgwqAgNTQyIHzCoCDCoCDCoCDCoCDCoF9jb21waWxldGltZV9hc3NlcnQo Y29uZGl0aW9uLCBtc2csIF9fY29tcGlsZXRpbWVfYXNzZXJ0XywgX19DT1VOVEVSX18pPGJyPg0K Jmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDCoF5+fn5+fn5+fn5+fn5+fn5+fn48YnI+ DQomZ3Q7wqAgwqAgaW5jbHVkZS9saW51eC9idWlsZF9idWcuaDozOTozNzogbm90ZTogaW4gZXhw YW5zaW9uIG9mIG1hY3JvICYjMzk7Y29tcGlsZXRpbWVfYXNzZXJ0JiMzOTs8YnI+DQomZ3Q7wqAg wqAgwqAgwqAzOSB8ICNkZWZpbmUgQlVJTERfQlVHX09OX01TRyhjb25kLCBtc2cpIGNvbXBpbGV0 aW1lX2Fzc2VydCghKGNvbmQpLCBtc2cpPGJyPg0KJmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoF5+fn5+fn5+ fn5+fn5+fn5+fjxicj4NCiZndDvCoCDCoCBpbmNsdWRlL2xpbnV4L2J1aWxkX2J1Zy5oOjUwOjk6 IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyAmIzM5O0JVSUxEX0JVR19PTl9NU0cmIzM5Ozxi cj4NCiZndDvCoCDCoCDCoCDCoDUwIHzCoCDCoCDCoCDCoCDCoEJVSUxEX0JVR19PTl9NU0coY29u ZGl0aW9uLCAmcXVvdDtCVUlMRF9CVUdfT04gZmFpbGVkOiAmcXVvdDsgI2NvbmRpdGlvbik8YnI+ DQomZ3Q7wqAgwqAgwqAgwqAgwqAgfMKgIMKgIMKgIMKgIMKgXn5+fn5+fn5+fn5+fn5+fjxicj4N CiZndDvCoCDCoCBsaWIvdGVzdHMvc2NhbmZfa3VuaXQuYzozMzM6OTogbm90ZTogaW4gZXhwYW5z aW9uIG9mIG1hY3JvICYjMzk7QlVJTERfQlVHX09OJiMzOTs8YnI+DQomZ3Q7wqAgwqAgwqAgMzMz IHzCoCDCoCDCoCDCoCDCoEJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGFycikgIT0gOCk7wqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBcPGJyPg0K Jmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDCoF5+fn5+fn5+fn5+fjxicj4NCiZndDvC oCDCoCBpbmNsdWRlL2xpbnV4L2NvbXBpbGVyLmg6MjAyOjMzOiBub3RlOiBpbiBleHBhbnNpb24g b2YgbWFjcm8gJiMzOTtfX0JVSUxEX0JVR19PTl9aRVJPX01TRyYjMzk7PGJyPg0KJmd0O8KgIMKg IMKgIDIwMiB8ICNkZWZpbmUgX19tdXN0X2JlX2FycmF5KGEpwqAgwqAgwqAgX19CVUlMRF9CVUdf T05fWkVST19NU0coIV9faXNfYXJyYXkoYSksIFw8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAgfMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgXn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn48YnI+DQomZ3Q7wqAgwqAgaW5jbHVkZS9saW51eC9hcnJheV9zaXplLmg6 MTE6NTk6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyAmIzM5O19fbXVzdF9iZV9hcnJheSYj Mzk7PGJyPg0KJmd0O8KgIMKgIMKgIMKgMTEgfCAjZGVmaW5lIEFSUkFZX1NJWkUoYXJyKSAoc2l6 ZW9mKGFycikgLyBzaXplb2YoKGFycilbMF0pICsgX19tdXN0X2JlX2FycmF5KGFycikpPGJyPg0K Jmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoF5+fn5+ fn5+fn5+fn5+fjxicj4NCiZndDvCoCDCoCBsaWIvdGVzdHMvc2NhbmZfa3VuaXQuYzozMzM6MjI6 IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyAmIzM5O0FSUkFZX1NJWkUmIzM5Ozxicj4NCiZn dDvCoCDCoCDCoCAzMzMgfMKgIMKgIMKgIMKgIMKgQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoYXJy KSAhPSA4KTvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoFw8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAgfMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIF5+fn5+fn5+fn48YnI+DQomZ3Q7wqAgwqAgbGliL3Rlc3RzL3NjYW5mX2t1bml0 LmM6MzU2Ojk6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyAmIzM5O3Rlc3RfYXJyYXlfOCYj Mzk7PGJyPg0KJmd0O8KgIMKgIMKgIDM1NiB8wqAgwqAgwqAgwqAgwqB0ZXN0X2FycmF5XzgoZm4s IGV4cGVjdCwgdGVzdF9idWZmZXIsIGZtdF9idWZmZXIsIHJlc3VsdCk7wqAgwqAgwqAgwqAgwqAg wqAgwqAgXDxicj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAgwqBefn5+fn5+fn5+ fn48YnI+DQomZ3Q7wqAgwqAgbGliL3Rlc3RzL3NjYW5mX2t1bml0LmM6Mzk1Ojk6IG5vdGU6IGlu IGV4cGFuc2lvbiBvZiBtYWNybyAmIzM5O251bWJlcnNfbGlzdF84JiMzOTs8YnI+DQomZ3Q7wqAg wqAgwqAgMzk1IHzCoCDCoCDCoCDCoCDCoG51bWJlcnNfbGlzdF84KGxvbmcgbG9uZyzCoCDCoCDC oCDCoCDCoCAmcXVvdDsweCVsbHgmcXVvdDssIGRlbGltLCAmcXVvdDtsbGkmcXVvdDssIGNoZWNr X2xsKTs8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAgfMKgIMKgIMKgIMKgIMKgXn5+fn5+fn5+fn5+ fn48YnI+DQomZ3Q7wqAgwqAgbGliL3Rlc3RzL3NjYW5mX2t1bml0LmM6IEluIGZ1bmN0aW9uICYj Mzk7bnVtYmVyc19saXN0X2wmIzM5Ozo8YnI+DQomZ3Q7ICZndDsmZ3Q7IGluY2x1ZGUvbGludXgv Y29tcGlsZXIuaDoxOTc6NjE6IHdhcm5pbmc6IGZ1bmN0aW9uICYjMzk7bnVtYmVyc19saXN0X2wm IzM5OyBtaWdodCBiZSBhIGNhbmRpZGF0ZSBmb3IgJiMzOTtnbnVfc2NhbmYmIzM5OyBmb3JtYXQg YXR0cmlidXRlIFstV3N1Z2dlc3QtYXR0cmlidXRlPWZvcm1hdF08YnI+DQomZ3Q7wqAgwqAgwqAg MTk3IHwgI2RlZmluZSBfX0JVSUxEX0JVR19PTl9aRVJPX01TRyhlLCBtc2cpICgoaW50KXNpemVv ZihzdHJ1Y3Qge19TdGF0aWNfYXNzZXJ0KCEoZSksIG1zZyk7fSkpPGJyPg0KJmd0O8KgIMKgIMKg IMKgIMKgIHzCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoF48YnI+DQomZ3Q7wqAg wqAgaW5jbHVkZS9saW51eC9jb21waWxlcl90eXBlcy5oOjUyMjoyMzogbm90ZTogaW4gZGVmaW5p dGlvbiBvZiBtYWNybyAmIzM5O19fY29tcGlsZXRpbWVfYXNzZXJ0JiMzOTs8YnI+DQomZ3Q7wqAg wqAgwqAgNTIyIHzCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGlmICghKGNvbmRpdGlvbikpwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBc PGJyPg0KJmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoF5+fn5+fn5+fjxicj4NCiZndDvCoCDCoCBpbmNsdWRlL2xpbnV4L2NvbXBpbGVyX3R5cGVz Lmg6NTQyOjk6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyAmIzM5O19jb21waWxldGltZV9h c3NlcnQmIzM5Ozxicj4NCiZndDvCoCDCoCDCoCA1NDIgfMKgIMKgIMKgIMKgIMKgX2NvbXBpbGV0 aW1lX2Fzc2VydChjb25kaXRpb24sIG1zZywgX19jb21waWxldGltZV9hc3NlcnRfLCBfX0NPVU5U RVJfXyk8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAgfMKgIMKgIMKgIMKgIMKgXn5+fn5+fn5+fn5+ fn5+fn5+fjxicj4NCiZndDvCoCDCoCBpbmNsdWRlL2xpbnV4L2J1aWxkX2J1Zy5oOjM5OjM3OiBu b3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJiMzOTtjb21waWxldGltZV9hc3NlcnQmIzM5Ozxi cj4NCiZndDvCoCDCoCDCoCDCoDM5IHwgI2RlZmluZSBCVUlMRF9CVUdfT05fTVNHKGNvbmQsIG1z ZykgY29tcGlsZXRpbWVfYXNzZXJ0KCEoY29uZCksIG1zZyk8YnI+DQomZ3Q7wqAgwqAgwqAgwqAg wqAgfMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgXn5+fn5+fn5+fn5+fn5+fn5+PGJyPg0KJmd0O8KgIMKgIGluY2x1ZGUvbGludXgvYnVpbGRf YnVnLmg6NTA6OTogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvICYjMzk7QlVJTERfQlVHX09O X01TRyYjMzk7PGJyPg0KJmd0O8KgIMKgIMKgIMKgNTAgfMKgIMKgIMKgIMKgIMKgQlVJTERfQlVH X09OX01TRyhjb25kaXRpb24sICZxdW90O0JVSUxEX0JVR19PTiBmYWlsZWQ6ICZxdW90OyAjY29u ZGl0aW9uKTxicj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAgwqBefn5+fn5+fn5+ fn5+fn5+PGJyPg0KJmd0O8KgIMKgIGxpYi90ZXN0cy9zY2FuZl9rdW5pdC5jOjMzMzo5OiBub3Rl OiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJiMzOTtCVUlMRF9CVUdfT04mIzM5Ozxicj4NCiZndDvC oCDCoCDCoCAzMzMgfMKgIMKgIMKgIMKgIMKgQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoYXJyKSAh PSA4KTvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoFw8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAgfMKgIMKgIMKgIMKgIMKgXn5+fn5+fn5+fn5+ PGJyPg0KJmd0O8KgIMKgIGluY2x1ZGUvbGludXgvY29tcGlsZXIuaDoyMDI6MzM6IG5vdGU6IGlu IGV4cGFuc2lvbiBvZiBtYWNybyAmIzM5O19fQlVJTERfQlVHX09OX1pFUk9fTVNHJiMzOTs8YnI+ DQomZ3Q7wqAgwqAgwqAgMjAyIHwgI2RlZmluZSBfX211c3RfYmVfYXJyYXkoYSnCoCDCoCDCoCBf X0JVSUxEX0JVR19PTl9aRVJPX01TRyghX19pc19hcnJheShhKSwgXDxicj4NCiZndDvCoCDCoCDC oCDCoCDCoCB8wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqBefn5+fn5+fn5+fn5+fn5+fn5+fn5+fjxicj4NCiZndDvCoCDCoCBpbmNsdWRlL2xpbnV4L2Fy cmF5X3NpemUuaDoxMTo1OTogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvICYjMzk7X19tdXN0 X2JlX2FycmF5JiMzOTs8YnI+DQomZ3Q7wqAgwqAgwqAgwqAxMSB8ICNkZWZpbmUgQVJSQVlfU0la RShhcnIpIChzaXplb2YoYXJyKSAvIHNpemVvZigoYXJyKVswXSkgKyBfX211c3RfYmVfYXJyYXko YXJyKSk8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAgfMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgXn5+fn5+fn5+fn5+fn5+PGJyPg0KJmd0O8KgIMKgIGxpYi90ZXN0cy9zY2FuZl9rdW5p dC5jOjMzMzoyMjogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvICYjMzk7QVJSQVlfU0laRSYj Mzk7PGJyPg0KJmd0O8KgIMKgIMKgIDMzMyB8wqAgwqAgwqAgwqAgwqBCVUlMRF9CVUdfT04oQVJS QVlfU0laRShhcnIpICE9IDgpO8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgXDxicj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgXn5+fn5+fn5+fjxicj4NCiZndDvCoCDCoCBsaWIvdGVzdHMv c2NhbmZfa3VuaXQuYzozNTY6OTogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvICYjMzk7dGVz dF9hcnJheV84JiMzOTs8YnI+DQomZ3Q7wqAgwqAgwqAgMzU2IHzCoCDCoCDCoCDCoCDCoHRlc3Rf YXJyYXlfOChmbiwgZXhwZWN0LCB0ZXN0X2J1ZmZlciwgZm10X2J1ZmZlciwgcmVzdWx0KTvCoCDC oCDCoCDCoCDCoCDCoCDCoCBcPGJyPg0KJmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDC oF5+fn5+fn5+fn5+fjxicj4NCiZndDvCoCDCoCBsaWIvdGVzdHMvc2NhbmZfa3VuaXQuYzo0MDA6 OTogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvICYjMzk7bnVtYmVyc19saXN0XzgmIzM5Ozxi cj4NCiZndDvCoCDCoCDCoCA0MDAgfMKgIMKgIMKgIMKgIMKgbnVtYmVyc19saXN0XzgodW5zaWdu ZWQgbG9uZyzCoCDCoCDCoCAmcXVvdDslbHUmcXVvdDsswqAgwqAgZGVsaW0sICZxdW90O2x1JnF1 b3Q7LCBjaGVja191bG9uZyk7PGJyPg0KJmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDC oF5+fn5+fn5+fn5+fn5+PGJyPg0KJmd0OyAmZ3Q7Jmd0OyBpbmNsdWRlL2xpbnV4L2NvbXBpbGVy Lmg6MTk3OjYxOiB3YXJuaW5nOiBmdW5jdGlvbiAmIzM5O251bWJlcnNfbGlzdF9sJiMzOTsgbWln aHQgYmUgYSBjYW5kaWRhdGUgZm9yICYjMzk7Z251X3NjYW5mJiMzOTsgZm9ybWF0IGF0dHJpYnV0 ZSBbLVdzdWdnZXN0LWF0dHJpYnV0ZT1mb3JtYXRdPGJyPg0KJmd0O8KgIMKgIMKgIDE5NyB8ICNk ZWZpbmUgX19CVUlMRF9CVUdfT05fWkVST19NU0coZSwgbXNnKSAoKGludClzaXplb2Yoc3RydWN0 IHtfU3RhdGljX2Fzc2VydCghKGUpLCBtc2cpO30pKTxicj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8 wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBePGJyPg0KJmd0O8KgIMKgIGluY2x1 ZGUvbGludXgvY29tcGlsZXJfdHlwZXMuaDo1MjI6MjM6IG5vdGU6IGluIGRlZmluaXRpb24gb2Yg bWFjcm8gJiMzOTtfX2NvbXBpbGV0aW1lX2Fzc2VydCYjMzk7PGJyPg0KJmd0O8KgIMKgIMKgIDUy MiB8wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBpZiAoIShjb25kaXRpb24pKcKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgXDxicj4NCiZn dDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBefn5+ fn5+fn48YnI+DQomZ3Q7wqAgwqAgaW5jbHVkZS9saW51eC9jb21waWxlcl90eXBlcy5oOjU0Mjo5 OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJiMzOTtfY29tcGlsZXRpbWVfYXNzZXJ0JiMz OTs8YnI+DQomZ3Q7wqAgwqAgwqAgNTQyIHzCoCDCoCDCoCDCoCDCoF9jb21waWxldGltZV9hc3Nl cnQoY29uZGl0aW9uLCBtc2csIF9fY29tcGlsZXRpbWVfYXNzZXJ0XywgX19DT1VOVEVSX18pPGJy Pg0KJmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDCoF5+fn5+fn5+fn5+fn5+fn5+fn48 YnI+DQomZ3Q7wqAgwqAgaW5jbHVkZS9saW51eC9idWlsZF9idWcuaDozOTozNzogbm90ZTogaW4g ZXhwYW5zaW9uIG9mIG1hY3JvICYjMzk7Y29tcGlsZXRpbWVfYXNzZXJ0JiMzOTs8YnI+DQomZ3Q7 wqAgwqAgwqAgwqAzOSB8ICNkZWZpbmUgQlVJTERfQlVHX09OX01TRyhjb25kLCBtc2cpIGNvbXBp bGV0aW1lX2Fzc2VydCghKGNvbmQpLCBtc2cpPGJyPg0KJmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoF5+fn5+ fn5+fn5+fn5+fn5+fjxicj4NCiZndDvCoCDCoCBpbmNsdWRlL2xpbnV4L2J1aWxkX2J1Zy5oOjUw Ojk6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyAmIzM5O0JVSUxEX0JVR19PTl9NU0cmIzM5 Ozxicj4NCiZndDvCoCDCoCDCoCDCoDUwIHzCoCDCoCDCoCDCoCDCoEJVSUxEX0JVR19PTl9NU0co Y29uZGl0aW9uLCAmcXVvdDtCVUlMRF9CVUdfT04gZmFpbGVkOiAmcXVvdDsgI2NvbmRpdGlvbik8 YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAgfMKgIMKgIMKgIMKgIMKgXn5+fn5+fn5+fn5+fn5+fjxi cj4NCiZndDvCoCDCoCBsaWIvdGVzdHMvc2NhbmZfa3VuaXQuYzozMzM6OTogbm90ZTogaW4gZXhw YW5zaW9uIG9mIG1hY3JvICYjMzk7QlVJTERfQlVHX09OJiMzOTs8YnI+DQomZ3Q7wqAgwqAgwqAg MzMzIHzCoCDCoCDCoCDCoCDCoEJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGFycikgIT0gOCk7wqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBcPGJy Pg0KJmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDCoF5+fn5+fn5+fn5+fjxicj4NCiZn dDvCoCDCoCBpbmNsdWRlL2xpbnV4L2NvbXBpbGVyLmg6MjAyOjMzOiBub3RlOiBpbiBleHBhbnNp b24gb2YgbWFjcm8gJiMzOTtfX0JVSUxEX0JVR19PTl9aRVJPX01TRyYjMzk7PGJyPg0KJmd0O8Kg IMKgIMKgIDIwMiB8ICNkZWZpbmUgX19tdXN0X2JlX2FycmF5KGEpwqAgwqAgwqAgX19CVUlMRF9C VUdfT05fWkVST19NU0coIV9faXNfYXJyYXkoYSksIFw8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAg fMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgXn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn48YnI+DQomZ3Q7wqAgwqAgaW5jbHVkZS9saW51eC9hcnJheV9zaXpl Lmg6MTE6NTk6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyAmIzM5O19fbXVzdF9iZV9hcnJh eSYjMzk7PGJyPg0KJmd0O8KgIMKgIMKgIMKgMTEgfCAjZGVmaW5lIEFSUkFZX1NJWkUoYXJyKSAo c2l6ZW9mKGFycikgLyBzaXplb2YoKGFycilbMF0pICsgX19tdXN0X2JlX2FycmF5KGFycikpPGJy Pg0KJmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoF5+ fn5+fn5+fn5+fn5+fjxicj4NCiZndDvCoCDCoCBsaWIvdGVzdHMvc2NhbmZfa3VuaXQuYzozMzM6 MjI6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyAmIzM5O0FSUkFZX1NJWkUmIzM5Ozxicj4N CiZndDvCoCDCoCDCoCAzMzMgfMKgIMKgIMKgIMKgIMKgQlVJTERfQlVHX09OKEFSUkFZX1NJWkUo YXJyKSAhPSA4KTvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoFw8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAgfMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIF5+fn5+fn5+fn48YnI+DQomZ3Q7wqAgwqAgbGliL3Rlc3RzL3NjYW5mX2t1 bml0LmM6MzU2Ojk6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyAmIzM5O3Rlc3RfYXJyYXlf OCYjMzk7PGJyPg0KJmd0O8KgIMKgIMKgIDM1NiB8wqAgwqAgwqAgwqAgwqB0ZXN0X2FycmF5Xzgo Zm4sIGV4cGVjdCwgdGVzdF9idWZmZXIsIGZtdF9idWZmZXIsIHJlc3VsdCk7wqAgwqAgwqAgwqAg wqAgwqAgwqAgXDxicj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAgwqBefn5+fn5+ fn5+fn48YnI+DQomZ3Q7wqAgwqAgbGliL3Rlc3RzL3NjYW5mX2t1bml0LmM6NDAxOjk6IG5vdGU6 IGluIGV4cGFuc2lvbiBvZiBtYWNybyAmIzM5O251bWJlcnNfbGlzdF84JiMzOTs8YnI+DQomZ3Q7 wqAgwqAgwqAgNDAxIHzCoCDCoCDCoCDCoCDCoG51bWJlcnNfbGlzdF84KGxvbmcswqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAmcXVvdDslbGQmcXVvdDsswqAgwqAgZGVsaW0sICZxdW90O2xkJnF1b3Q7 LCBjaGVja19sb25nKTs8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAgfMKgIMKgIMKgIMKgIMKgXn5+ fn5+fn5+fn5+fn48YnI+DQomZ3Q7ICZndDsmZ3Q7IGluY2x1ZGUvbGludXgvY29tcGlsZXIuaDox OTc6NjE6IHdhcm5pbmc6IGZ1bmN0aW9uICYjMzk7bnVtYmVyc19saXN0X2wmIzM5OyBtaWdodCBi ZSBhIGNhbmRpZGF0ZSBmb3IgJiMzOTtnbnVfc2NhbmYmIzM5OyBmb3JtYXQgYXR0cmlidXRlIFst V3N1Z2dlc3QtYXR0cmlidXRlPWZvcm1hdF08YnI+DQomZ3Q7wqAgwqAgwqAgMTk3IHwgI2RlZmlu ZSBfX0JVSUxEX0JVR19PTl9aRVJPX01TRyhlLCBtc2cpICgoaW50KXNpemVvZihzdHJ1Y3Qge19T dGF0aWNfYXNzZXJ0KCEoZSksIG1zZyk7fSkpPGJyPg0KJmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoF48YnI+DQomZ3Q7wqAgwqAgaW5jbHVkZS9s aW51eC9jb21waWxlcl90eXBlcy5oOjUyMjoyMzogbm90ZTogaW4gZGVmaW5pdGlvbiBvZiBtYWNy byAmIzM5O19fY29tcGlsZXRpbWVfYXNzZXJ0JiMzOTs8YnI+DQomZ3Q7wqAgwqAgwqAgNTIyIHzC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGlmICghKGNvbmRpdGlvbikpwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBcPGJyPg0KJmd0O8Kg IMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoF5+fn5+fn5+ fjxicj4NCiZndDvCoCDCoCBpbmNsdWRlL2xpbnV4L2NvbXBpbGVyX3R5cGVzLmg6NTQyOjk6IG5v dGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyAmIzM5O19jb21waWxldGltZV9hc3NlcnQmIzM5Ozxi cj4NCiZndDvCoCDCoCDCoCA1NDIgfMKgIMKgIMKgIMKgIMKgX2NvbXBpbGV0aW1lX2Fzc2VydChj b25kaXRpb24sIG1zZywgX19jb21waWxldGltZV9hc3NlcnRfLCBfX0NPVU5URVJfXyk8YnI+DQom Z3Q7wqAgwqAgwqAgwqAgwqAgfMKgIMKgIMKgIMKgIMKgXn5+fn5+fn5+fn5+fn5+fn5+fjxicj4N CiZndDvCoCDCoCBpbmNsdWRlL2xpbnV4L2J1aWxkX2J1Zy5oOjM5OjM3OiBub3RlOiBpbiBleHBh bnNpb24gb2YgbWFjcm8gJiMzOTtjb21waWxldGltZV9hc3NlcnQmIzM5Ozxicj4NCiZndDvCoCDC oCDCoCDCoDM5IHwgI2RlZmluZSBCVUlMRF9CVUdfT05fTVNHKGNvbmQsIG1zZykgY29tcGlsZXRp bWVfYXNzZXJ0KCEoY29uZCksIG1zZyk8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAgfMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgXn5+fn5+fn5+ fn5+fn5+fn5+PGJyPg0KJmd0O8KgIMKgIGluY2x1ZGUvbGludXgvYnVpbGRfYnVnLmg6NTA6OTog bm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvICYjMzk7QlVJTERfQlVHX09OX01TRyYjMzk7PGJy Pg0KJmd0O8KgIMKgIMKgIMKgNTAgfMKgIMKgIMKgIMKgIMKgQlVJTERfQlVHX09OX01TRyhjb25k aXRpb24sICZxdW90O0JVSUxEX0JVR19PTiBmYWlsZWQ6ICZxdW90OyAjY29uZGl0aW9uKTxicj4N CiZndDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAgwqBefn5+fn5+fn5+fn5+fn5+PGJyPg0K Jmd0O8KgIMKgIGxpYi90ZXN0cy9zY2FuZl9rdW5pdC5jOjMzMzo5OiBub3RlOiBpbiBleHBhbnNp b24gb2YgbWFjcm8gJiMzOTtCVUlMRF9CVUdfT04mIzM5Ozxicj4NCiZndDvCoCDCoCDCoCAzMzMg fMKgIMKgIMKgIMKgIMKgQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoYXJyKSAhPSA4KTvCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoFw8YnI+DQom Z3Q7wqAgwqAgwqAgwqAgwqAgfMKgIMKgIMKgIMKgIMKgXn5+fn5+fn5+fn5+PGJyPg0KJmd0O8Kg IMKgIGluY2x1ZGUvbGludXgvY29tcGlsZXIuaDoyMDI6MzM6IG5vdGU6IGluIGV4cGFuc2lvbiBv ZiBtYWNybyAmIzM5O19fQlVJTERfQlVHX09OX1pFUk9fTVNHJiMzOTs8YnI+DQomZ3Q7wqAgwqAg wqAgMjAyIHwgI2RlZmluZSBfX211c3RfYmVfYXJyYXkoYSnCoCDCoCDCoCBfX0JVSUxEX0JVR19P Tl9aRVJPX01TRyghX19pc19hcnJheShhKSwgXDxicj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8wqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBefn5+fn5+fn5+ fn5+fn5+fn5+fn5+fjxicj4NCiZndDvCoCDCoCBpbmNsdWRlL2xpbnV4L2FycmF5X3NpemUuaDox MTo1OTogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvICYjMzk7X19tdXN0X2JlX2FycmF5JiMz OTs8YnI+DQomZ3Q7wqAgwqAgwqAgwqAxMSB8ICNkZWZpbmUgQVJSQVlfU0laRShhcnIpIChzaXpl b2YoYXJyKSAvIHNpemVvZigoYXJyKVswXSkgKyBfX211c3RfYmVfYXJyYXkoYXJyKSk8YnI+DQom Z3Q7wqAgwqAgwqAgwqAgwqAgfMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgXn5+fn5+ fn5+fn5+fn5+PGJyPg0KJmd0O8KgIMKgIGxpYi90ZXN0cy9zY2FuZl9rdW5pdC5jOjMzMzoyMjog bm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvICYjMzk7QVJSQVlfU0laRSYjMzk7PGJyPg0KJmd0 O8KgIMKgIMKgIDMzMyB8wqAgwqAgwqAgwqAgwqBCVUlMRF9CVUdfT04oQVJSQVlfU0laRShhcnIp ICE9IDgpO8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgXDxicj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgXn5+fn5+fn5+fjxicj4NCiZndDvCoCDCoCBsaWIvdGVzdHMvc2NhbmZfa3VuaXQu YzozNTY6OTogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvICYjMzk7dGVzdF9hcnJheV84JiMz OTs8YnI+DQomZ3Q7wqAgwqAgwqAgMzU2IHzCoCDCoCDCoCDCoCDCoHRlc3RfYXJyYXlfOChmbiwg ZXhwZWN0LCB0ZXN0X2J1ZmZlciwgZm10X2J1ZmZlciwgcmVzdWx0KTvCoCDCoCDCoCDCoCDCoCDC oCDCoCBcPGJyPg0KJmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDCoF5+fn5+fn5+fn5+ fjxicj4NCiZndDvCoCDCoCBsaWIvdGVzdHMvc2NhbmZfa3VuaXQuYzo0MDI6OTogbm90ZTogaW4g ZXhwYW5zaW9uIG9mIG1hY3JvICYjMzk7bnVtYmVyc19saXN0XzgmIzM5Ozxicj4NCiZndDvCoCDC oCDCoCA0MDIgfMKgIMKgIMKgIMKgIMKgbnVtYmVyc19saXN0XzgobG9uZyzCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCZxdW90OyVsZCZxdW90OyzCoCDCoCBkZWxpbSwgJnF1b3Q7bGkmcXVvdDssIGNo ZWNrX2xvbmcpOzxicj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAgwqBefn5+fn5+ fn5+fn5+fjxicj4NCiZndDsgJmd0OyZndDsgaW5jbHVkZS9saW51eC9jb21waWxlci5oOjE5Nzo2 MTogd2FybmluZzogZnVuY3Rpb24gJiMzOTtudW1iZXJzX2xpc3RfbCYjMzk7IG1pZ2h0IGJlIGEg Y2FuZGlkYXRlIGZvciAmIzM5O2dudV9zY2FuZiYjMzk7IGZvcm1hdCBhdHRyaWJ1dGUgWy1Xc3Vn Z2VzdC1hdHRyaWJ1dGU9Zm9ybWF0XTxicj4NCiZndDvCoCDCoCDCoCAxOTcgfCAjZGVmaW5lIF9f QlVJTERfQlVHX09OX1pFUk9fTVNHKGUsIG1zZykgKChpbnQpc2l6ZW9mKHN0cnVjdCB7X1N0YXRp Y19hc3NlcnQoIShlKSwgbXNnKTt9KSk8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAgfMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgXjxicj4NCiZndDvCoCDCoCBpbmNsdWRlL2xpbnV4 L2NvbXBpbGVyX3R5cGVzLmg6NTIyOjIzOiBub3RlOiBpbiBkZWZpbml0aW9uIG9mIG1hY3JvICYj Mzk7X19jb21waWxldGltZV9hc3NlcnQmIzM5Ozxicj4NCiZndDvCoCDCoCDCoCA1MjIgfMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgaWYgKCEoY29uZGl0aW9uKSnCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoFw8YnI+DQomZ3Q7wqAgwqAg wqAgwqAgwqAgfMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgXn5+fn5+fn5+PGJy Pg0KJmd0O8KgIMKgIGluY2x1ZGUvbGludXgvY29tcGlsZXJfdHlwZXMuaDo1NDI6OTogbm90ZTog aW4gZXhwYW5zaW9uIG9mIG1hY3JvICYjMzk7X2NvbXBpbGV0aW1lX2Fzc2VydCYjMzk7PGJyPg0K Jmd0O8KgIMKgIMKgIDU0MiB8wqAgwqAgwqAgwqAgwqBfY29tcGlsZXRpbWVfYXNzZXJ0KGNvbmRp dGlvbiwgbXNnLCBfX2NvbXBpbGV0aW1lX2Fzc2VydF8sIF9fQ09VTlRFUl9fKTxicj4NCiZndDvC oCDCoCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAgwqBefn5+fn5+fn5+fn5+fn5+fn5+PGJyPg0KJmd0 O8KgIMKgIGluY2x1ZGUvbGludXgvYnVpbGRfYnVnLmg6Mzk6Mzc6IG5vdGU6IGluIGV4cGFuc2lv biBvZiBtYWNybyAmIzM5O2NvbXBpbGV0aW1lX2Fzc2VydCYjMzk7PGJyPg0KJmd0O8KgIMKgIMKg IMKgMzkgfCAjZGVmaW5lIEJVSUxEX0JVR19PTl9NU0coY29uZCwgbXNnKSBjb21waWxldGltZV9h c3NlcnQoIShjb25kKSwgbXNnKTxicj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBefn5+fn5+fn5+fn5+ fn5+fn48YnI+DQomZ3Q7wqAgwqAgaW5jbHVkZS9saW51eC9idWlsZF9idWcuaDo1MDo5OiBub3Rl OiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJiMzOTtCVUlMRF9CVUdfT05fTVNHJiMzOTs8YnI+DQom Z3Q7wqAgwqAgwqAgwqA1MCB8wqAgwqAgwqAgwqAgwqBCVUlMRF9CVUdfT05fTVNHKGNvbmRpdGlv biwgJnF1b3Q7QlVJTERfQlVHX09OIGZhaWxlZDogJnF1b3Q7ICNjb25kaXRpb24pPGJyPg0KJmd0 O8KgIMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDCoF5+fn5+fn5+fn5+fn5+fn48YnI+DQomZ3Q7 wqAgwqAgbGliL3Rlc3RzL3NjYW5mX2t1bml0LmM6MzMzOjk6IG5vdGU6IGluIGV4cGFuc2lvbiBv ZiBtYWNybyAmIzM5O0JVSUxEX0JVR19PTiYjMzk7PGJyPg0KJmd0O8KgIMKgIMKgIDMzMyB8wqAg wqAgwqAgwqAgwqBCVUlMRF9CVUdfT04oQVJSQVlfU0laRShhcnIpICE9IDgpO8KgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgXDxicj4NCiZndDvC oCDCoCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAgwqBefn5+fn5+fn5+fn48YnI+DQomZ3Q7wqAgwqAg aW5jbHVkZS9saW51eC9jb21waWxlci5oOjIwMjozMzogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1h Y3JvICYjMzk7X19CVUlMRF9CVUdfT05fWkVST19NU0cmIzM5Ozxicj4NCiZndDvCoCDCoCDCoCAy MDIgfCAjZGVmaW5lIF9fbXVzdF9iZV9hcnJheShhKcKgIMKgIMKgIF9fQlVJTERfQlVHX09OX1pF Uk9fTVNHKCFfX2lzX2FycmF5KGEpLCBcPGJyPg0KJmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoF5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+PGJyPg0KJmd0O8KgIMKgIGluY2x1ZGUvbGludXgvYXJyYXlfc2l6ZS5oOjExOjU5 OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJiMzOTtfX211c3RfYmVfYXJyYXkmIzM5Ozxi cj4NCiZndDvCoCDCoCDCoCDCoDExIHwgI2RlZmluZSBBUlJBWV9TSVpFKGFycikgKHNpemVvZihh cnIpIC8gc2l6ZW9mKChhcnIpWzBdKSArIF9fbXVzdF9iZV9hcnJheShhcnIpKTxicj4NCiZndDvC oCDCoCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBefn5+fn5+fn5+ fn5+fn48YnI+DQomZ3Q7wqAgwqAgbGliL3Rlc3RzL3NjYW5mX2t1bml0LmM6MzMzOjIyOiBub3Rl OiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJiMzOTtBUlJBWV9TSVpFJiMzOTs8YnI+DQomZ3Q7wqAg wqAgwqAgMzMzIHzCoCDCoCDCoCDCoCDCoEJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGFycikgIT0g OCk7wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqBcPGJyPg0KJmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCBefn5+fn5+fn5+PGJyPg0KJmd0O8KgIMKgIGxpYi90ZXN0cy9zY2FuZl9rdW5pdC5jOjM1 Njo5OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJiMzOTt0ZXN0X2FycmF5XzgmIzM5Ozxi cj4NCiZndDvCoCDCoCDCoCAzNTYgfMKgIMKgIMKgIMKgIMKgdGVzdF9hcnJheV84KGZuLCBleHBl Y3QsIHRlc3RfYnVmZmVyLCBmbXRfYnVmZmVyLCByZXN1bHQpO8KgIMKgIMKgIMKgIMKgIMKgIMKg IFw8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAgfMKgIMKgIMKgIMKgIMKgXn5+fn5+fn5+fn5+PGJy Pg0KJmd0O8KgIMKgIGxpYi90ZXN0cy9zY2FuZl9rdW5pdC5jOjQwMzo5OiBub3RlOiBpbiBleHBh bnNpb24gb2YgbWFjcm8gJiMzOTtudW1iZXJzX2xpc3RfOCYjMzk7PGJyPg0KJmd0O8KgIMKgIMKg IDQwMyB8wqAgwqAgwqAgwqAgwqBudW1iZXJzX2xpc3RfOCh1bnNpZ25lZCBsb25nLMKgIMKgIMKg ICZxdW90OyVseCZxdW90OyzCoCDCoCBkZWxpbSwgJnF1b3Q7bHgmcXVvdDssIGNoZWNrX3Vsb25n KTs8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAgfMKgIMKgIMKgIMKgIMKgXn5+fn5+fn5+fn5+fn48 YnI+DQomZ3Q7ICZndDsmZ3Q7IGluY2x1ZGUvbGludXgvY29tcGlsZXIuaDoxOTc6NjE6IHdhcm5p bmc6IGZ1bmN0aW9uICYjMzk7bnVtYmVyc19saXN0X2wmIzM5OyBtaWdodCBiZSBhIGNhbmRpZGF0 ZSBmb3IgJiMzOTtnbnVfc2NhbmYmIzM5OyBmb3JtYXQgYXR0cmlidXRlIFstV3N1Z2dlc3QtYXR0 cmlidXRlPWZvcm1hdF08YnI+DQomZ3Q7wqAgwqAgwqAgMTk3IHwgI2RlZmluZSBfX0JVSUxEX0JV R19PTl9aRVJPX01TRyhlLCBtc2cpICgoaW50KXNpemVvZihzdHJ1Y3Qge19TdGF0aWNfYXNzZXJ0 KCEoZSksIG1zZyk7fSkpPGJyPg0KJmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoF48YnI+DQomZ3Q7wqAgwqAgaW5jbHVkZS9saW51eC9jb21waWxl cl90eXBlcy5oOjUyMjoyMzogbm90ZTogaW4gZGVmaW5pdGlvbiBvZiBtYWNybyAmIzM5O19fY29t cGlsZXRpbWVfYXNzZXJ0JiMzOTs8YnI+DQomZ3Q7wqAgwqAgwqAgNTIyIHzCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoGlmICghKGNvbmRpdGlvbikpwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBcPGJyPg0KJmd0O8KgIMKgIMKgIMKgIMKg IHzCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoF5+fn5+fn5+fjxicj4NCiZndDvC oCDCoCBpbmNsdWRlL2xpbnV4L2NvbXBpbGVyX3R5cGVzLmg6NTQyOjk6IG5vdGU6IGluIGV4cGFu c2lvbiBvZiBtYWNybyAmIzM5O19jb21waWxldGltZV9hc3NlcnQmIzM5Ozxicj4NCiZndDvCoCDC oCDCoCA1NDIgfMKgIMKgIMKgIMKgIMKgX2NvbXBpbGV0aW1lX2Fzc2VydChjb25kaXRpb24sIG1z ZywgX19jb21waWxldGltZV9hc3NlcnRfLCBfX0NPVU5URVJfXyk8YnI+DQomZ3Q7wqAgwqAgwqAg wqAgwqAgfMKgIMKgIMKgIMKgIMKgXn5+fn5+fn5+fn5+fn5+fn5+fjxicj4NCiZndDvCoCDCoCBp bmNsdWRlL2xpbnV4L2J1aWxkX2J1Zy5oOjM5OjM3OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFj cm8gJiMzOTtjb21waWxldGltZV9hc3NlcnQmIzM5Ozxicj4NCiZndDvCoCDCoCDCoCDCoDM5IHwg I2RlZmluZSBCVUlMRF9CVUdfT05fTVNHKGNvbmQsIG1zZykgY29tcGlsZXRpbWVfYXNzZXJ0KCEo Y29uZCksIG1zZyk8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAgfMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgXn5+fn5+fn5+fn5+fn5+fn5+PGJy Pg0KJmd0O8KgIMKgIGluY2x1ZGUvbGludXgvYnVpbGRfYnVnLmg6NTA6OTogbm90ZTogaW4gZXhw YW5zaW9uIG9mIG1hY3JvICYjMzk7QlVJTERfQlVHX09OX01TRyYjMzk7PGJyPg0KJmd0O8KgIMKg IMKgIMKgNTAgfMKgIMKgIMKgIMKgIMKgQlVJTERfQlVHX09OX01TRyhjb25kaXRpb24sICZxdW90 O0JVSUxEX0JVR19PTiBmYWlsZWQ6ICZxdW90OyAjY29uZGl0aW9uKTxicj4NCiZndDvCoCDCoCDC oCDCoCDCoCB8wqAgwqAgwqAgwqAgwqBefn5+fn5+fn5+fn5+fn5+PGJyPg0KJmd0O8KgIMKgIGxp Yi90ZXN0cy9zY2FuZl9rdW5pdC5jOjMzMzo5OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8g JiMzOTtCVUlMRF9CVUdfT04mIzM5Ozxicj4NCiZndDvCoCDCoCDCoCAzMzMgfMKgIMKgIMKgIMKg IMKgQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoYXJyKSAhPSA4KTvCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoFw8YnI+DQomZ3Q7wqAgwqAgwqAg wqAgwqAgfMKgIMKgIMKgIMKgIMKgXn5+fn5+fn5+fn5+PGJyPg0KJmd0O8KgIMKgIGluY2x1ZGUv bGludXgvY29tcGlsZXIuaDoyMDI6MzM6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyAmIzM5 O19fQlVJTERfQlVHX09OX1pFUk9fTVNHJiMzOTs8YnI+DQomZ3Q7wqAgwqAgwqAgMjAyIHwgI2Rl ZmluZSBfX211c3RfYmVfYXJyYXkoYSnCoCDCoCDCoCBfX0JVSUxEX0JVR19PTl9aRVJPX01TRygh X19pc19hcnJheShhKSwgXDxicj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBefn5+fn5+fn5+fn5+fn5+fn5+fn5+ fjxicj4NCiZndDvCoCDCoCBpbmNsdWRlL2xpbnV4L2FycmF5X3NpemUuaDoxMTo1OTogbm90ZTog aW4gZXhwYW5zaW9uIG9mIG1hY3JvICYjMzk7X19tdXN0X2JlX2FycmF5JiMzOTs8YnI+DQomZ3Q7 wqAgwqAgwqAgwqAxMSB8ICNkZWZpbmUgQVJSQVlfU0laRShhcnIpIChzaXplb2YoYXJyKSAvIHNp emVvZigoYXJyKVswXSkgKyBfX211c3RfYmVfYXJyYXkoYXJyKSk8YnI+DQomZ3Q7wqAgwqAgwqAg wqAgwqAgfMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgXn5+fn5+fn5+fn5+fn5+PGJy Pg0KJmd0O8KgIMKgIGxpYi90ZXN0cy9zY2FuZl9rdW5pdC5jOjMzMzoyMjogbm90ZTogaW4gZXhw YW5zaW9uIG9mIG1hY3JvICYjMzk7QVJSQVlfU0laRSYjMzk7PGJyPg0KJmd0O8KgIMKgIMKgIDMz MyB8wqAgwqAgwqAgwqAgwqBCVUlMRF9CVUdfT04oQVJSQVlfU0laRShhcnIpICE9IDgpO8KgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgXDxicj4N CiZndDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgXn5+ fn5+fn5+fjxicj4NCiZndDvCoCDCoCBsaWIvdGVzdHMvc2NhbmZfa3VuaXQuYzozNTY6OTogbm90 ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvICYjMzk7dGVzdF9hcnJheV84JiMzOTs8YnI+DQomZ3Q7 wqAgwqAgwqAgMzU2IHzCoCDCoCDCoCDCoCDCoHRlc3RfYXJyYXlfOChmbiwgZXhwZWN0LCB0ZXN0 X2J1ZmZlciwgZm10X2J1ZmZlciwgcmVzdWx0KTvCoCDCoCDCoCDCoCDCoCDCoCDCoCBcPGJyPg0K Jmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDCoF5+fn5+fn5+fn5+fjxicj4NCiZndDvC oCDCoCBsaWIvdGVzdHMvc2NhbmZfa3VuaXQuYzo0MDQ6OTogbm90ZTogaW4gZXhwYW5zaW9uIG9m IG1hY3JvICYjMzk7bnVtYmVyc19saXN0XzgmIzM5Ozxicj4NCiZndDvCoCDCoCDCoCA0MDQgfMKg IMKgIMKgIMKgIMKgbnVtYmVyc19saXN0XzgodW5zaWduZWQgbG9uZyzCoCDCoCDCoCAmcXVvdDsw eCVseCZxdW90OyzCoCBkZWxpbSwgJnF1b3Q7bHgmcXVvdDssIGNoZWNrX3Vsb25nKTs8YnI+DQom Z3Q7wqAgwqAgwqAgwqAgwqAgfMKgIMKgIMKgIMKgIMKgXn5+fn5+fn5+fn5+fn48YnI+DQomZ3Q7 ICZndDsmZ3Q7IGluY2x1ZGUvbGludXgvY29tcGlsZXIuaDoxOTc6NjE6IHdhcm5pbmc6IGZ1bmN0 aW9uICYjMzk7bnVtYmVyc19saXN0X2wmIzM5OyBtaWdodCBiZSBhIGNhbmRpZGF0ZSBmb3IgJiMz OTtnbnVfc2NhbmYmIzM5OyBmb3JtYXQgYXR0cmlidXRlIFstV3N1Z2dlc3QtYXR0cmlidXRlPWZv cm1hdF08YnI+DQomZ3Q7wqAgwqAgwqAgMTk3IHwgI2RlZmluZSBfX0JVSUxEX0JVR19PTl9aRVJP X01TRyhlLCBtc2cpICgoaW50KXNpemVvZihzdHJ1Y3Qge19TdGF0aWNfYXNzZXJ0KCEoZSksIG1z Zyk7fSkpPGJyPg0KJmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoF48YnI+DQomZ3Q7wqAgwqAgaW5jbHVkZS9saW51eC9jb21waWxlcl90eXBlcy5o OjUyMjoyMzogbm90ZTogaW4gZGVmaW5pdGlvbiBvZiBtYWNybyAmIzM5O19fY29tcGlsZXRpbWVf YXNzZXJ0JiMzOTs8YnI+DQomZ3Q7wqAgwqAgwqAgNTIyIHzCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoGlmICghKGNvbmRpdGlvbikpwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBcPGJyPg0KJmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoF5+fn5+fn5+fjxicj4NCiZndDvCoCDCoCBpbmNs dWRlL2xpbnV4L2NvbXBpbGVyX3R5cGVzLmg6NTQyOjk6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBt YWNybyAmIzM5O19jb21waWxldGltZV9hc3NlcnQmIzM5Ozxicj4NCiZndDvCoCDCoCDCoCA1NDIg fMKgIMKgIMKgIMKgIMKgX2NvbXBpbGV0aW1lX2Fzc2VydChjb25kaXRpb24sIG1zZywgX19jb21w aWxldGltZV9hc3NlcnRfLCBfX0NPVU5URVJfXyk8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAgfMKg IMKgIMKgIMKgIMKgXn5+fn5+fn5+fn5+fn5+fn5+fjxicj4NCiZndDvCoCDCoCBpbmNsdWRlL2xp bnV4L2J1aWxkX2J1Zy5oOjM5OjM3OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJiMzOTtj b21waWxldGltZV9hc3NlcnQmIzM5Ozxicj4NCiZndDvCoCDCoCDCoCDCoDM5IHwgI2RlZmluZSBC VUlMRF9CVUdfT05fTVNHKGNvbmQsIG1zZykgY29tcGlsZXRpbWVfYXNzZXJ0KCEoY29uZCksIG1z Zyk8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAgfMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgXn5+fn5+fn5+fn5+fn5+fn5+PGJyPg0KJmd0O8Kg IMKgIGluY2x1ZGUvbGludXgvYnVpbGRfYnVnLmg6NTA6OTogbm90ZTogaW4gZXhwYW5zaW9uIG9m IG1hY3JvICYjMzk7QlVJTERfQlVHX09OX01TRyYjMzk7PGJyPg0KJmd0O8KgIMKgIMKgIMKgNTAg fMKgIMKgIMKgIMKgIMKgQlVJTERfQlVHX09OX01TRyhjb25kaXRpb24sICZxdW90O0JVSUxEX0JV R19PTiBmYWlsZWQ6ICZxdW90OyAjY29uZGl0aW9uKTxicj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8 wqAgwqAgwqAgwqAgwqBefn5+fn5+fn5+fn5+fn5+PGJyPg0KJmd0O8KgIMKgIGxpYi90ZXN0cy9z Y2FuZl9rdW5pdC5jOjMzMzo5OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJiMzOTtCVUlM RF9CVUdfT04mIzM5Ozxicj4NCiZndDvCoCDCoCDCoCAzMzMgfMKgIMKgIMKgIMKgIMKgQlVJTERf QlVHX09OKEFSUkFZX1NJWkUoYXJyKSAhPSA4KTvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoFw8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAgfMKg IMKgIMKgIMKgIMKgXn5+fn5+fn5+fn5+PGJyPg0KJmd0O8KgIMKgIGluY2x1ZGUvbGludXgvY29t cGlsZXIuaDoyMDI6MzM6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyAmIzM5O19fQlVJTERf QlVHX09OX1pFUk9fTVNHJiMzOTs8YnI+DQomZ3Q7wqAgwqAgwqAgMjAyIHwgI2RlZmluZSBfX211 c3RfYmVfYXJyYXkoYSnCoCDCoCDCoCBfX0JVSUxEX0JVR19PTl9aRVJPX01TRyghX19pc19hcnJh eShhKSwgXDxicj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBefn5+fn5+fn5+fn5+fn5+fn5+fn5+fjxicj4NCiZn dDvCoCDCoCBpbmNsdWRlL2xpbnV4L2FycmF5X3NpemUuaDoxMTo1OTogbm90ZTogaW4gZXhwYW5z aW9uIG9mIG1hY3JvICYjMzk7X19tdXN0X2JlX2FycmF5JiMzOTs8YnI+DQomZ3Q7wqAgwqAgwqAg wqAxMSB8ICNkZWZpbmUgQVJSQVlfU0laRShhcnIpIChzaXplb2YoYXJyKSAvIHNpemVvZigoYXJy KVswXSkgKyBfX211c3RfYmVfYXJyYXkoYXJyKSk8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAgfMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgXn5+fn5+fn5+fn5+fn5+PGJyPg0KJmd0O8Kg IMKgIGxpYi90ZXN0cy9zY2FuZl9rdW5pdC5jOjMzMzoyMjogbm90ZTogaW4gZXhwYW5zaW9uIG9m IG1hY3JvICYjMzk7QVJSQVlfU0laRSYjMzk7PGJyPg0KJmd0O8KgIMKgIMKgIDMzMyB8wqAgwqAg wqAgwqAgwqBCVUlMRF9CVUdfT04oQVJSQVlfU0laRShhcnIpICE9IDgpO8KgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgXDxicj4NCiZndDvCoCDC oCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgXn5+fn5+fn5+fjxi cj4NCiZndDvCoCDCoCBsaWIvdGVzdHMvc2NhbmZfa3VuaXQuYzozNTY6OTogbm90ZTogaW4gZXhw YW5zaW9uIG9mIG1hY3JvICYjMzk7dGVzdF9hcnJheV84JiMzOTs8YnI+DQomZ3Q7wqAgwqAgwqAg MzU2IHzCoCDCoCDCoCDCoCDCoHRlc3RfYXJyYXlfOChmbiwgZXhwZWN0LCB0ZXN0X2J1ZmZlciwg Zm10X2J1ZmZlciwgcmVzdWx0KTvCoCDCoCDCoCDCoCDCoCDCoCDCoCBcPGJyPg0KJmd0O8KgIMKg IMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDCoF5+fn5+fn5+fn5+fjxicj4NCiZndDvCoCDCoCBsaWIv dGVzdHMvc2NhbmZfa3VuaXQuYzo0MDU6OTogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvICYj Mzk7bnVtYmVyc19saXN0XzgmIzM5Ozxicj4NCiZndDvCoCDCoCDCoCA0MDUgfMKgIMKgIMKgIMKg IMKgbnVtYmVyc19saXN0XzgobG9uZyzCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCZxdW90OzB4JWx4 JnF1b3Q7LMKgIGRlbGltLCAmcXVvdDtsaSZxdW90OywgY2hlY2tfbG9uZyk7PGJyPg0KJmd0O8Kg IMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDCoF5+fn5+fn5+fn5+fn5+PGJyPg0KJmd0O8KgIMKg IGxpYi90ZXN0cy9zY2FuZl9rdW5pdC5jOiBJbiBmdW5jdGlvbiAmIzM5O251bWJlcnNfbGlzdF9k JiMzOTs6PGJyPg0KJmd0OyAmZ3Q7Jmd0OyBpbmNsdWRlL2xpbnV4L2NvbXBpbGVyLmg6MTk3OjYx OiB3YXJuaW5nOiBmdW5jdGlvbiAmIzM5O251bWJlcnNfbGlzdF9kJiMzOTsgbWlnaHQgYmUgYSBj YW5kaWRhdGUgZm9yICYjMzk7Z251X3NjYW5mJiMzOTsgZm9ybWF0IGF0dHJpYnV0ZSBbLVdzdWdn ZXN0LWF0dHJpYnV0ZT1mb3JtYXRdPGJyPg0KJmd0O8KgIMKgIMKgIDE5NyB8ICNkZWZpbmUgX19C VUlMRF9CVUdfT05fWkVST19NU0coZSwgbXNnKSAoKGludClzaXplb2Yoc3RydWN0IHtfU3RhdGlj X2Fzc2VydCghKGUpLCBtc2cpO30pKTxicj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBePGJyPg0KJmd0O8KgIMKgIGluY2x1ZGUvbGludXgv Y29tcGlsZXJfdHlwZXMuaDo1MjI6MjM6IG5vdGU6IGluIGRlZmluaXRpb24gb2YgbWFjcm8gJiMz OTtfX2NvbXBpbGV0aW1lX2Fzc2VydCYjMzk7PGJyPg0KJmd0O8KgIMKgIMKgIDUyMiB8wqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqBpZiAoIShjb25kaXRpb24pKcKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgXDxicj4NCiZndDvCoCDCoCDC oCDCoCDCoCB8wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBefn5+fn5+fn48YnI+ DQomZ3Q7wqAgwqAgaW5jbHVkZS9saW51eC9jb21waWxlcl90eXBlcy5oOjU0Mjo5OiBub3RlOiBp biBleHBhbnNpb24gb2YgbWFjcm8gJiMzOTtfY29tcGlsZXRpbWVfYXNzZXJ0JiMzOTs8YnI+DQom Z3Q7wqAgwqAgwqAgNTQyIHzCoCDCoCDCoCDCoCDCoF9jb21waWxldGltZV9hc3NlcnQoY29uZGl0 aW9uLCBtc2csIF9fY29tcGlsZXRpbWVfYXNzZXJ0XywgX19DT1VOVEVSX18pPGJyPg0KJmd0O8Kg IMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDCoF5+fn5+fn5+fn5+fn5+fn5+fn48YnI+DQomZ3Q7 wqAgwqAgaW5jbHVkZS9saW51eC9idWlsZF9idWcuaDozOTozNzogbm90ZTogaW4gZXhwYW5zaW9u IG9mIG1hY3JvICYjMzk7Y29tcGlsZXRpbWVfYXNzZXJ0JiMzOTs8YnI+DQomZ3Q7wqAgwqAgwqAg wqAzOSB8ICNkZWZpbmUgQlVJTERfQlVHX09OX01TRyhjb25kLCBtc2cpIGNvbXBpbGV0aW1lX2Fz c2VydCghKGNvbmQpLCBtc2cpPGJyPg0KJmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoF5+fn5+fn5+fn5+fn5+ fn5+fjxicj4NCiZndDvCoCDCoCBpbmNsdWRlL2xpbnV4L2J1aWxkX2J1Zy5oOjUwOjk6IG5vdGU6 IGluIGV4cGFuc2lvbiBvZiBtYWNybyAmIzM5O0JVSUxEX0JVR19PTl9NU0cmIzM5Ozxicj4NCiZn dDvCoCDCoCDCoCDCoDUwIHzCoCDCoCDCoCDCoCDCoEJVSUxEX0JVR19PTl9NU0coY29uZGl0aW9u LCAmcXVvdDtCVUlMRF9CVUdfT04gZmFpbGVkOiAmcXVvdDsgI2NvbmRpdGlvbik8YnI+DQomZ3Q7 wqAgwqAgwqAgwqAgwqAgfMKgIMKgIMKgIMKgIMKgXn5+fn5+fn5+fn5+fn5+fjxicj4NCiZndDvC oCDCoCBsaWIvdGVzdHMvc2NhbmZfa3VuaXQuYzozMzM6OTogbm90ZTogaW4gZXhwYW5zaW9uIG9m IG1hY3JvICYjMzk7QlVJTERfQlVHX09OJiMzOTs8YnI+DQomZ3Q7wqAgwqAgwqAgMzMzIHzCoCDC oCDCoCDCoCDCoEJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGFycikgIT0gOCk7wqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBcPGJyPg0KJmd0O8Kg IMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDCoF5+fn5+fn5+fn5+fjxicj4NCiZndDvCoCDCoCBp bmNsdWRlL2xpbnV4L2NvbXBpbGVyLmg6MjAyOjMzOiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFj cm8gJiMzOTtfX0JVSUxEX0JVR19PTl9aRVJPX01TRyYjMzk7PGJyPg0KJmd0O8KgIMKgIMKgIDIw MiB8ICNkZWZpbmUgX19tdXN0X2JlX2FycmF5KGEpwqAgwqAgwqAgX19CVUlMRF9CVUdfT05fWkVS T19NU0coIV9faXNfYXJyYXkoYSksIFw8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAgfMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgXn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn48YnI+DQomZ3Q7wqAgwqAgaW5jbHVkZS9saW51eC9hcnJheV9zaXplLmg6MTE6NTk6 IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyAmIzM5O19fbXVzdF9iZV9hcnJheSYjMzk7PGJy Pg0KJmd0O8KgIMKgIMKgIMKgMTEgfCAjZGVmaW5lIEFSUkFZX1NJWkUoYXJyKSAoc2l6ZW9mKGFy cikgLyBzaXplb2YoKGFycilbMF0pICsgX19tdXN0X2JlX2FycmF5KGFycikpPGJyPg0KJmd0O8Kg IMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoF5+fn5+fn5+fn5+ fn5+fjxicj4NCiZndDvCoCDCoCBsaWIvdGVzdHMvc2NhbmZfa3VuaXQuYzozMzM6MjI6IG5vdGU6 IGluIGV4cGFuc2lvbiBvZiBtYWNybyAmIzM5O0FSUkFZX1NJWkUmIzM5Ozxicj4NCiZndDvCoCDC oCDCoCAzMzMgfMKgIMKgIMKgIMKgIMKgQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoYXJyKSAhPSA4 KTvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oFw8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAgfMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIF5+fn5+fn5+fn48YnI+DQomZ3Q7wqAgwqAgbGliL3Rlc3RzL3NjYW5mX2t1bml0LmM6MzU2 Ojk6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyAmIzM5O3Rlc3RfYXJyYXlfOCYjMzk7PGJy Pg0KJmd0O8KgIMKgIMKgIDM1NiB8wqAgwqAgwqAgwqAgwqB0ZXN0X2FycmF5XzgoZm4sIGV4cGVj dCwgdGVzdF9idWZmZXIsIGZtdF9idWZmZXIsIHJlc3VsdCk7wqAgwqAgwqAgwqAgwqAgwqAgwqAg XDxicj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAgwqBefn5+fn5+fn5+fn48YnI+ DQomZ3Q7wqAgwqAgbGliL3Rlc3RzL3NjYW5mX2t1bml0LmM6NDEwOjk6IG5vdGU6IGluIGV4cGFu c2lvbiBvZiBtYWNybyAmIzM5O251bWJlcnNfbGlzdF84JiMzOTs8YnI+DQomZ3Q7wqAgwqAgwqAg NDEwIHzCoCDCoCDCoCDCoCDCoG51bWJlcnNfbGlzdF84KHVuc2lnbmVkIGludCzCoCDCoCDCoCDC oCZxdW90OyV1JnF1b3Q7LMKgIMKgIMKgZGVsaW0sICZxdW90O3UmcXVvdDssIGNoZWNrX3VpbnQp Ozxicj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAgwqBefn5+fn5+fn5+fn5+fjxi cj4NCiZndDsgJmd0OyZndDsgaW5jbHVkZS9saW51eC9jb21waWxlci5oOjE5Nzo2MTogd2Fybmlu ZzogZnVuY3Rpb24gJiMzOTtudW1iZXJzX2xpc3RfZCYjMzk7IG1pZ2h0IGJlIGEgY2FuZGlkYXRl IGZvciAmIzM5O2dudV9zY2FuZiYjMzk7IGZvcm1hdCBhdHRyaWJ1dGUgWy1Xc3VnZ2VzdC1hdHRy aWJ1dGU9Zm9ybWF0XTxicj4NCiZndDvCoCDCoCDCoCAxOTcgfCAjZGVmaW5lIF9fQlVJTERfQlVH X09OX1pFUk9fTVNHKGUsIG1zZykgKChpbnQpc2l6ZW9mKHN0cnVjdCB7X1N0YXRpY19hc3NlcnQo IShlKSwgbXNnKTt9KSk8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAgfMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgXjxicj4NCiZndDvCoCDCoCBpbmNsdWRlL2xpbnV4L2NvbXBpbGVy X3R5cGVzLmg6NTIyOjIzOiBub3RlOiBpbiBkZWZpbml0aW9uIG9mIG1hY3JvICYjMzk7X19jb21w aWxldGltZV9hc3NlcnQmIzM5Ozxicj4NCiZndDvCoCDCoCDCoCA1MjIgfMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgaWYgKCEoY29uZGl0aW9uKSnCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoFw8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAg fMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgXn5+fn5+fn5+PGJyPg0KJmd0O8Kg IMKgIGluY2x1ZGUvbGludXgvY29tcGlsZXJfdHlwZXMuaDo1NDI6OTogbm90ZTogaW4gZXhwYW5z aW9uIG9mIG1hY3JvICYjMzk7X2NvbXBpbGV0aW1lX2Fzc2VydCYjMzk7PGJyPg0KJmd0O8KgIMKg IMKgIDU0MiB8wqAgwqAgwqAgwqAgwqBfY29tcGlsZXRpbWVfYXNzZXJ0KGNvbmRpdGlvbiwgbXNn LCBfX2NvbXBpbGV0aW1lX2Fzc2VydF8sIF9fQ09VTlRFUl9fKTxicj4NCiZndDvCoCDCoCDCoCDC oCDCoCB8wqAgwqAgwqAgwqAgwqBefn5+fn5+fn5+fn5+fn5+fn5+PGJyPg0KJmd0O8KgIMKgIGlu Y2x1ZGUvbGludXgvYnVpbGRfYnVnLmg6Mzk6Mzc6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNy byAmIzM5O2NvbXBpbGV0aW1lX2Fzc2VydCYjMzk7PGJyPg0KJmd0O8KgIMKgIMKgIMKgMzkgfCAj ZGVmaW5lIEJVSUxEX0JVR19PTl9NU0coY29uZCwgbXNnKSBjb21waWxldGltZV9hc3NlcnQoIShj b25kKSwgbXNnKTxicj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBefn5+fn5+fn5+fn5+fn5+fn48YnI+ DQomZ3Q7wqAgwqAgaW5jbHVkZS9saW51eC9idWlsZF9idWcuaDo1MDo5OiBub3RlOiBpbiBleHBh bnNpb24gb2YgbWFjcm8gJiMzOTtCVUlMRF9CVUdfT05fTVNHJiMzOTs8YnI+DQomZ3Q7wqAgwqAg wqAgwqA1MCB8wqAgwqAgwqAgwqAgwqBCVUlMRF9CVUdfT05fTVNHKGNvbmRpdGlvbiwgJnF1b3Q7 QlVJTERfQlVHX09OIGZhaWxlZDogJnF1b3Q7ICNjb25kaXRpb24pPGJyPg0KJmd0O8KgIMKgIMKg IMKgIMKgIHzCoCDCoCDCoCDCoCDCoF5+fn5+fn5+fn5+fn5+fn48YnI+DQomZ3Q7wqAgwqAgbGli L3Rlc3RzL3NjYW5mX2t1bml0LmM6MzMzOjk6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyAm IzM5O0JVSUxEX0JVR19PTiYjMzk7PGJyPg0KJmd0O8KgIMKgIMKgIDMzMyB8wqAgwqAgwqAgwqAg wqBCVUlMRF9CVUdfT04oQVJSQVlfU0laRShhcnIpICE9IDgpO8KgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgXDxicj4NCiZndDvCoCDCoCDCoCDC oCDCoCB8wqAgwqAgwqAgwqAgwqBefn5+fn5+fn5+fn48YnI+DQomZ3Q7wqAgwqAgaW5jbHVkZS9s aW51eC9jb21waWxlci5oOjIwMjozMzogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvICYjMzk7 X19CVUlMRF9CVUdfT05fWkVST19NU0cmIzM5Ozxicj4NCiZndDvCoCDCoCDCoCAyMDIgfCAjZGVm aW5lIF9fbXVzdF9iZV9hcnJheShhKcKgIMKgIMKgIF9fQlVJTERfQlVHX09OX1pFUk9fTVNHKCFf X2lzX2FycmF5KGEpLCBcPGJyPg0KJmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoF5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ PGJyPg0KJmd0O8KgIMKgIGluY2x1ZGUvbGludXgvYXJyYXlfc2l6ZS5oOjExOjU5OiBub3RlOiBp biBleHBhbnNpb24gb2YgbWFjcm8gJiMzOTtfX211c3RfYmVfYXJyYXkmIzM5Ozxicj4NCiZndDvC oCDCoCDCoCDCoDExIHwgI2RlZmluZSBBUlJBWV9TSVpFKGFycikgKHNpemVvZihhcnIpIC8gc2l6 ZW9mKChhcnIpWzBdKSArIF9fbXVzdF9iZV9hcnJheShhcnIpKTxicj4NCiZndDvCoCDCoCDCoCDC oCDCoCB8wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBefn5+fn5+fn5+fn5+fn48YnI+ DQomZ3Q7wqAgwqAgbGliL3Rlc3RzL3NjYW5mX2t1bml0LmM6MzMzOjIyOiBub3RlOiBpbiBleHBh bnNpb24gb2YgbWFjcm8gJiMzOTtBUlJBWV9TSVpFJiMzOTs8YnI+DQomZ3Q7wqAgwqAgwqAgMzMz IHzCoCDCoCDCoCDCoCDCoEJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGFycikgIT0gOCk7wqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBcPGJyPg0K Jmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBefn5+ fn5+fn5+PGJyPg0KJmd0O8KgIMKgIGxpYi90ZXN0cy9zY2FuZl9rdW5pdC5jOjM1Njo5OiBub3Rl OiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJiMzOTt0ZXN0X2FycmF5XzgmIzM5Ozxicj4NCiZndDvC oCDCoCDCoCAzNTYgfMKgIMKgIMKgIMKgIMKgdGVzdF9hcnJheV84KGZuLCBleHBlY3QsIHRlc3Rf YnVmZmVyLCBmbXRfYnVmZmVyLCByZXN1bHQpO8KgIMKgIMKgIMKgIMKgIMKgIMKgIFw8YnI+DQom Z3Q7wqAgwqAgwqAgwqAgwqAgfMKgIMKgIMKgIMKgIMKgXn5+fn5+fn5+fn5+PGJyPg0KJmd0O8Kg IMKgIGxpYi90ZXN0cy9zY2FuZl9rdW5pdC5jOjQxMTo5OiBub3RlOiBpbiBleHBhbnNpb24gb2Yg bWFjcm8gJiMzOTtudW1iZXJzX2xpc3RfOCYjMzk7PGJyPg0KJmd0O8KgIMKgIMKgIDQxMSB8wqAg wqAgwqAgwqAgwqBudW1iZXJzX2xpc3RfOChpbnQswqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgJnF1 b3Q7JWQmcXVvdDsswqAgwqAgwqBkZWxpbSwgJnF1b3Q7ZCZxdW90OywgY2hlY2tfaW50KTs8YnI+ DQomZ3Q7wqAgwqAgwqAgwqAgwqAgfMKgIMKgIMKgIMKgIMKgXn5+fn5+fn5+fn5+fn48YnI+DQom Z3Q7ICZndDsmZ3Q7IGluY2x1ZGUvbGludXgvY29tcGlsZXIuaDoxOTc6NjE6IHdhcm5pbmc6IGZ1 bmN0aW9uICYjMzk7bnVtYmVyc19saXN0X2QmIzM5OyBtaWdodCBiZSBhIGNhbmRpZGF0ZSBmb3Ig JiMzOTtnbnVfc2NhbmYmIzM5OyBmb3JtYXQgYXR0cmlidXRlIFstV3N1Z2dlc3QtYXR0cmlidXRl PWZvcm1hdF08YnI+DQomZ3Q7wqAgwqAgwqAgMTk3IHwgI2RlZmluZSBfX0JVSUxEX0JVR19PTl9a RVJPX01TRyhlLCBtc2cpICgoaW50KXNpemVvZihzdHJ1Y3Qge19TdGF0aWNfYXNzZXJ0KCEoZSks IG1zZyk7fSkpPGJyPg0KJmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoF48YnI+DQomZ3Q7wqAgwqAgaW5jbHVkZS9saW51eC9jb21waWxlcl90eXBl cy5oOjUyMjoyMzogbm90ZTogaW4gZGVmaW5pdGlvbiBvZiBtYWNybyAmIzM5O19fY29tcGlsZXRp bWVfYXNzZXJ0JiMzOTs8YnI+DQomZ3Q7wqAgwqAgwqAgNTIyIHzCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoGlmICghKGNvbmRpdGlvbikpwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBcPGJyPg0KJmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoF5+fn5+fn5+fjxicj4NCiZndDvCoCDCoCBp bmNsdWRlL2xpbnV4L2NvbXBpbGVyX3R5cGVzLmg6NTQyOjk6IG5vdGU6IGluIGV4cGFuc2lvbiBv ZiBtYWNybyAmIzM5O19jb21waWxldGltZV9hc3NlcnQmIzM5Ozxicj4NCiZndDvCoCDCoCDCoCA1 NDIgfMKgIMKgIMKgIMKgIMKgX2NvbXBpbGV0aW1lX2Fzc2VydChjb25kaXRpb24sIG1zZywgX19j b21waWxldGltZV9hc3NlcnRfLCBfX0NPVU5URVJfXyk8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAg fMKgIMKgIMKgIMKgIMKgXn5+fn5+fn5+fn5+fn5+fn5+fjxicj4NCiZndDvCoCDCoCBpbmNsdWRl L2xpbnV4L2J1aWxkX2J1Zy5oOjM5OjM3OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJiMz OTtjb21waWxldGltZV9hc3NlcnQmIzM5Ozxicj4NCiZndDvCoCDCoCDCoCDCoDM5IHwgI2RlZmlu ZSBCVUlMRF9CVUdfT05fTVNHKGNvbmQsIG1zZykgY29tcGlsZXRpbWVfYXNzZXJ0KCEoY29uZCks IG1zZyk8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAgfMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgXn5+fn5+fn5+fn5+fn5+fn5+PGJyPg0KJmd0 O8KgIMKgIGluY2x1ZGUvbGludXgvYnVpbGRfYnVnLmg6NTA6OTogbm90ZTogaW4gZXhwYW5zaW9u IG9mIG1hY3JvICYjMzk7QlVJTERfQlVHX09OX01TRyYjMzk7PGJyPg0KJmd0O8KgIMKgIMKgIMKg NTAgfMKgIMKgIMKgIMKgIMKgQlVJTERfQlVHX09OX01TRyhjb25kaXRpb24sICZxdW90O0JVSUxE X0JVR19PTiBmYWlsZWQ6ICZxdW90OyAjY29uZGl0aW9uKTxicj4NCiZndDvCoCDCoCDCoCDCoCDC oCB8wqAgwqAgwqAgwqAgwqBefn5+fn5+fn5+fn5+fn5+PGJyPg0KJmd0O8KgIMKgIGxpYi90ZXN0 cy9zY2FuZl9rdW5pdC5jOjMzMzo5OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJiMzOTtC VUlMRF9CVUdfT04mIzM5Ozxicj4NCiZndDvCoCDCoCDCoCAzMzMgfMKgIMKgIMKgIMKgIMKgQlVJ TERfQlVHX09OKEFSUkFZX1NJWkUoYXJyKSAhPSA4KTvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoFw8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAg fMKgIMKgIMKgIMKgIMKgXn5+fn5+fn5+fn5+PGJyPg0KJmd0O8KgIMKgIGluY2x1ZGUvbGludXgv Y29tcGlsZXIuaDoyMDI6MzM6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyAmIzM5O19fQlVJ TERfQlVHX09OX1pFUk9fTVNHJiMzOTs8YnI+DQomZ3Q7wqAgwqAgwqAgMjAyIHwgI2RlZmluZSBf X211c3RfYmVfYXJyYXkoYSnCoCDCoCDCoCBfX0JVSUxEX0JVR19PTl9aRVJPX01TRyghX19pc19h cnJheShhKSwgXDxicj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBefn5+fn5+fn5+fn5+fn5+fn5+fn5+fjxicj4N CiZndDvCoCDCoCBpbmNsdWRlL2xpbnV4L2FycmF5X3NpemUuaDoxMTo1OTogbm90ZTogaW4gZXhw YW5zaW9uIG9mIG1hY3JvICYjMzk7X19tdXN0X2JlX2FycmF5JiMzOTs8YnI+DQomZ3Q7wqAgwqAg wqAgwqAxMSB8ICNkZWZpbmUgQVJSQVlfU0laRShhcnIpIChzaXplb2YoYXJyKSAvIHNpemVvZigo YXJyKVswXSkgKyBfX211c3RfYmVfYXJyYXkoYXJyKSk8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAg fMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgXn5+fn5+fn5+fn5+fn5+PGJyPg0KJmd0 O8KgIMKgIGxpYi90ZXN0cy9zY2FuZl9rdW5pdC5jOjMzMzoyMjogbm90ZTogaW4gZXhwYW5zaW9u IG9mIG1hY3JvICYjMzk7QVJSQVlfU0laRSYjMzk7PGJyPg0KJmd0O8KgIMKgIMKgIDMzMyB8wqAg wqAgwqAgwqAgwqBCVUlMRF9CVUdfT04oQVJSQVlfU0laRShhcnIpICE9IDgpO8KgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgXDxicj4NCiZndDvC oCDCoCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgXn5+fn5+fn5+ fjxicj4NCiZndDvCoCDCoCBsaWIvdGVzdHMvc2NhbmZfa3VuaXQuYzozNTY6OTogbm90ZTogaW4g ZXhwYW5zaW9uIG9mIG1hY3JvICYjMzk7dGVzdF9hcnJheV84JiMzOTs8YnI+DQomZ3Q7wqAgwqAg wqAgMzU2IHzCoCDCoCDCoCDCoCDCoHRlc3RfYXJyYXlfOChmbiwgZXhwZWN0LCB0ZXN0X2J1ZmZl ciwgZm10X2J1ZmZlciwgcmVzdWx0KTvCoCDCoCDCoCDCoCDCoCDCoCDCoCBcPGJyPg0KJmd0O8Kg IMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDCoF5+fn5+fn5+fn5+fjxicj4NCiZndDvCoCDCoCBs aWIvdGVzdHMvc2NhbmZfa3VuaXQuYzo0MTI6OTogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3Jv ICYjMzk7bnVtYmVyc19saXN0XzgmIzM5Ozxicj4NCiZndDvCoCDCoCDCoCA0MTIgfMKgIMKgIMKg IMKgIMKgbnVtYmVyc19saXN0XzgoaW50LMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICZxdW90OyVk JnF1b3Q7LMKgIMKgIMKgZGVsaW0sICZxdW90O2kmcXVvdDssIGNoZWNrX2ludCk7PGJyPg0KJmd0 O8KgIMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDCoF5+fn5+fn5+fn5+fn5+PGJyPg0KJmd0OyAm Z3Q7Jmd0OyBpbmNsdWRlL2xpbnV4L2NvbXBpbGVyLmg6MTk3OjYxOiB3YXJuaW5nOiBmdW5jdGlv biAmIzM5O251bWJlcnNfbGlzdF9kJiMzOTsgbWlnaHQgYmUgYSBjYW5kaWRhdGUgZm9yICYjMzk7 Z251X3NjYW5mJiMzOTsgZm9ybWF0IGF0dHJpYnV0ZSBbLVdzdWdnZXN0LWF0dHJpYnV0ZT1mb3Jt YXRdPGJyPg0KJmd0O8KgIMKgIMKgIDE5NyB8ICNkZWZpbmUgX19CVUlMRF9CVUdfT05fWkVST19N U0coZSwgbXNnKSAoKGludClzaXplb2Yoc3RydWN0IHtfU3RhdGljX2Fzc2VydCghKGUpLCBtc2cp O30pKTxicj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqBePGJyPg0KJmd0O8KgIMKgIGluY2x1ZGUvbGludXgvY29tcGlsZXJfdHlwZXMuaDo1 MjI6MjM6IG5vdGU6IGluIGRlZmluaXRpb24gb2YgbWFjcm8gJiMzOTtfX2NvbXBpbGV0aW1lX2Fz c2VydCYjMzk7PGJyPg0KJmd0O8KgIMKgIMKgIDUyMiB8wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqBpZiAoIShjb25kaXRpb24pKcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgXDxicj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBefn5+fn5+fn48YnI+DQomZ3Q7wqAgwqAgaW5jbHVk ZS9saW51eC9jb21waWxlcl90eXBlcy5oOjU0Mjo5OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFj cm8gJiMzOTtfY29tcGlsZXRpbWVfYXNzZXJ0JiMzOTs8YnI+DQomZ3Q7wqAgwqAgwqAgNTQyIHzC oCDCoCDCoCDCoCDCoF9jb21waWxldGltZV9hc3NlcnQoY29uZGl0aW9uLCBtc2csIF9fY29tcGls ZXRpbWVfYXNzZXJ0XywgX19DT1VOVEVSX18pPGJyPg0KJmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDC oCDCoCDCoCDCoF5+fn5+fn5+fn5+fn5+fn5+fn48YnI+DQomZ3Q7wqAgwqAgaW5jbHVkZS9saW51 eC9idWlsZF9idWcuaDozOTozNzogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvICYjMzk7Y29t cGlsZXRpbWVfYXNzZXJ0JiMzOTs8YnI+DQomZ3Q7wqAgwqAgwqAgwqAzOSB8ICNkZWZpbmUgQlVJ TERfQlVHX09OX01TRyhjb25kLCBtc2cpIGNvbXBpbGV0aW1lX2Fzc2VydCghKGNvbmQpLCBtc2cp PGJyPg0KJmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoF5+fn5+fn5+fn5+fn5+fn5+fjxicj4NCiZndDvCoCDC oCBpbmNsdWRlL2xpbnV4L2J1aWxkX2J1Zy5oOjUwOjk6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBt YWNybyAmIzM5O0JVSUxEX0JVR19PTl9NU0cmIzM5Ozxicj4NCiZndDvCoCDCoCDCoCDCoDUwIHzC oCDCoCDCoCDCoCDCoEJVSUxEX0JVR19PTl9NU0coY29uZGl0aW9uLCAmcXVvdDtCVUlMRF9CVUdf T04gZmFpbGVkOiAmcXVvdDsgI2NvbmRpdGlvbik8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAgfMKg IMKgIMKgIMKgIMKgXn5+fn5+fn5+fn5+fn5+fjxicj4NCiZndDvCoCDCoCBsaWIvdGVzdHMvc2Nh bmZfa3VuaXQuYzozMzM6OTogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvICYjMzk7QlVJTERf QlVHX09OJiMzOTs8YnI+DQomZ3Q7wqAgwqAgwqAgMzMzIHzCoCDCoCDCoCDCoCDCoEJVSUxEX0JV R19PTihBUlJBWV9TSVpFKGFycikgIT0gOCk7wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBcPGJyPg0KJmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDC oCDCoCDCoCDCoF5+fn5+fn5+fn5+fjxicj4NCiZndDvCoCDCoCBpbmNsdWRlL2xpbnV4L2NvbXBp bGVyLmg6MjAyOjMzOiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJiMzOTtfX0JVSUxEX0JV R19PTl9aRVJPX01TRyYjMzk7PGJyPg0KJmd0O8KgIMKgIMKgIDIwMiB8ICNkZWZpbmUgX19tdXN0 X2JlX2FycmF5KGEpwqAgwqAgwqAgX19CVUlMRF9CVUdfT05fWkVST19NU0coIV9faXNfYXJyYXko YSksIFw8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAgfMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgXn5+fn5+fn5+fn5+fn5+fn5+fn5+fn48YnI+DQomZ3Q7 wqAgwqAgaW5jbHVkZS9saW51eC9hcnJheV9zaXplLmg6MTE6NTk6IG5vdGU6IGluIGV4cGFuc2lv biBvZiBtYWNybyAmIzM5O19fbXVzdF9iZV9hcnJheSYjMzk7PGJyPg0KJmd0O8KgIMKgIMKgIMKg MTEgfCAjZGVmaW5lIEFSUkFZX1NJWkUoYXJyKSAoc2l6ZW9mKGFycikgLyBzaXplb2YoKGFycilb MF0pICsgX19tdXN0X2JlX2FycmF5KGFycikpPGJyPg0KJmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoF5+fn5+fn5+fn5+fn5+fjxicj4NCiZndDvCoCDC oCBsaWIvdGVzdHMvc2NhbmZfa3VuaXQuYzozMzM6MjI6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBt YWNybyAmIzM5O0FSUkFZX1NJWkUmIzM5Ozxicj4NCiZndDvCoCDCoCDCoCAzMzMgfMKgIMKgIMKg IMKgIMKgQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoYXJyKSAhPSA4KTvCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoFw8YnI+DQomZ3Q7wqAgwqAg wqAgwqAgwqAgfMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIF5+fn5+fn5+fn48YnI+ DQomZ3Q7wqAgwqAgbGliL3Rlc3RzL3NjYW5mX2t1bml0LmM6MzU2Ojk6IG5vdGU6IGluIGV4cGFu c2lvbiBvZiBtYWNybyAmIzM5O3Rlc3RfYXJyYXlfOCYjMzk7PGJyPg0KJmd0O8KgIMKgIMKgIDM1 NiB8wqAgwqAgwqAgwqAgwqB0ZXN0X2FycmF5XzgoZm4sIGV4cGVjdCwgdGVzdF9idWZmZXIsIGZt dF9idWZmZXIsIHJlc3VsdCk7wqAgwqAgwqAgwqAgwqAgwqAgwqAgXDxicj4NCiZndDvCoCDCoCDC oCDCoCDCoCB8wqAgwqAgwqAgwqAgwqBefn5+fn5+fn5+fn48YnI+DQomZ3Q7wqAgwqAgbGliL3Rl c3RzL3NjYW5mX2t1bml0LmM6NDEzOjk6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyAmIzM5 O251bWJlcnNfbGlzdF84JiMzOTs8YnI+DQomZ3Q7wqAgwqAgwqAgNDEzIHzCoCDCoCDCoCDCoCDC oG51bWJlcnNfbGlzdF84KHVuc2lnbmVkIGludCzCoCDCoCDCoCDCoCZxdW90OyV4JnF1b3Q7LMKg IMKgIMKgZGVsaW0sICZxdW90O3gmcXVvdDssIGNoZWNrX3VpbnQpOzxicj4NCiZndDvCoCDCoCDC oCDCoCDCoCB8wqAgwqAgwqAgwqAgwqBefn5+fn5+fn5+fn5+fjxicj4NCiZndDsgJmd0OyZndDsg aW5jbHVkZS9saW51eC9jb21waWxlci5oOjE5Nzo2MTogd2FybmluZzogZnVuY3Rpb24gJiMzOTtu dW1iZXJzX2xpc3RfZCYjMzk7IG1pZ2h0IGJlIGEgY2FuZGlkYXRlIGZvciAmIzM5O2dudV9zY2Fu ZiYjMzk7IGZvcm1hdCBhdHRyaWJ1dGUgWy1Xc3VnZ2VzdC1hdHRyaWJ1dGU9Zm9ybWF0XTxicj4N CiZndDvCoCDCoCDCoCAxOTcgfCAjZGVmaW5lIF9fQlVJTERfQlVHX09OX1pFUk9fTVNHKGUsIG1z ZykgKChpbnQpc2l6ZW9mKHN0cnVjdCB7X1N0YXRpY19hc3NlcnQoIShlKSwgbXNnKTt9KSk8YnI+ DQomZ3Q7wqAgwqAgwqAgwqAgwqAgfMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg Xjxicj4NCiZndDvCoCDCoCBpbmNsdWRlL2xpbnV4L2NvbXBpbGVyX3R5cGVzLmg6NTIyOjIzOiBu b3RlOiBpbiBkZWZpbml0aW9uIG9mIG1hY3JvICYjMzk7X19jb21waWxldGltZV9hc3NlcnQmIzM5 Ozxicj4NCiZndDvCoCDCoCDCoCA1MjIgfMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaWYgKCEo Y29uZGl0aW9uKSnCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoFw8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAgfMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgXn5+fn5+fn5+PGJyPg0KJmd0O8KgIMKgIGluY2x1ZGUvbGludXgv Y29tcGlsZXJfdHlwZXMuaDo1NDI6OTogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvICYjMzk7 X2NvbXBpbGV0aW1lX2Fzc2VydCYjMzk7PGJyPg0KJmd0O8KgIMKgIMKgIDU0MiB8wqAgwqAgwqAg wqAgwqBfY29tcGlsZXRpbWVfYXNzZXJ0KGNvbmRpdGlvbiwgbXNnLCBfX2NvbXBpbGV0aW1lX2Fz c2VydF8sIF9fQ09VTlRFUl9fKTxicj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAg wqBefn5+fn5+fn5+fn5+fn5+fn5+PGJyPg0KJmd0O8KgIMKgIGluY2x1ZGUvbGludXgvYnVpbGRf YnVnLmg6Mzk6Mzc6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyAmIzM5O2NvbXBpbGV0aW1l X2Fzc2VydCYjMzk7PGJyPg0KJmd0O8KgIMKgIMKgIMKgMzkgfCAjZGVmaW5lIEJVSUxEX0JVR19P Tl9NU0coY29uZCwgbXNnKSBjb21waWxldGltZV9hc3NlcnQoIShjb25kKSwgbXNnKTxicj4NCiZn dDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqBefn5+fn5+fn5+fn5+fn5+fn48YnI+DQomZ3Q7wqAgwqAgaW5jbHVk ZS9saW51eC9idWlsZF9idWcuaDo1MDo5OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJiMz OTtCVUlMRF9CVUdfT05fTVNHJiMzOTs8YnI+DQomZ3Q7wqAgwqAgwqAgwqA1MCB8wqAgwqAgwqAg wqAgwqBCVUlMRF9CVUdfT05fTVNHKGNvbmRpdGlvbiwgJnF1b3Q7QlVJTERfQlVHX09OIGZhaWxl ZDogJnF1b3Q7ICNjb25kaXRpb24pPGJyPg0KJmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDC oCDCoF5+fn5+fn5+fn5+fn5+fn48YnI+DQomZ3Q7wqAgwqAgbGliL3Rlc3RzL3NjYW5mX2t1bml0 LmM6MzMzOjk6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyAmIzM5O0JVSUxEX0JVR19PTiYj Mzk7PGJyPg0KJmd0O8KgIMKgIMKgIDMzMyB8wqAgwqAgwqAgwqAgwqBCVUlMRF9CVUdfT04oQVJS QVlfU0laRShhcnIpICE9IDgpO8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgXDxicj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAg wqBefn5+fn5+fn5+fn48YnI+DQomZ3Q7wqAgwqAgaW5jbHVkZS9saW51eC9jb21waWxlci5oOjIw MjozMzogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvICYjMzk7X19CVUlMRF9CVUdfT05fWkVS T19NU0cmIzM5Ozxicj4NCiZndDvCoCDCoCDCoCAyMDIgfCAjZGVmaW5lIF9fbXVzdF9iZV9hcnJh eShhKcKgIMKgIMKgIF9fQlVJTERfQlVHX09OX1pFUk9fTVNHKCFfX2lzX2FycmF5KGEpLCBcPGJy Pg0KJmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoF5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+PGJyPg0KJmd0O8KgIMKgIGlu Y2x1ZGUvbGludXgvYXJyYXlfc2l6ZS5oOjExOjU5OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFj cm8gJiMzOTtfX211c3RfYmVfYXJyYXkmIzM5Ozxicj4NCiZndDvCoCDCoCDCoCDCoDExIHwgI2Rl ZmluZSBBUlJBWV9TSVpFKGFycikgKHNpemVvZihhcnIpIC8gc2l6ZW9mKChhcnIpWzBdKSArIF9f bXVzdF9iZV9hcnJheShhcnIpKTxicj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqBefn5+fn5+fn5+fn5+fn48YnI+DQomZ3Q7wqAgwqAgbGliL3Rl c3RzL3NjYW5mX2t1bml0LmM6MzMzOjIyOiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJiMz OTtBUlJBWV9TSVpFJiMzOTs8YnI+DQomZ3Q7wqAgwqAgwqAgMzMzIHzCoCDCoCDCoCDCoCDCoEJV SUxEX0JVR19PTihBUlJBWV9TSVpFKGFycikgIT0gOCk7wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBcPGJyPg0KJmd0O8KgIMKgIMKgIMKgIMKg IHzCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBefn5+fn5+fn5+PGJyPg0KJmd0O8Kg IMKgIGxpYi90ZXN0cy9zY2FuZl9rdW5pdC5jOjM1Njo5OiBub3RlOiBpbiBleHBhbnNpb24gb2Yg bWFjcm8gJiMzOTt0ZXN0X2FycmF5XzgmIzM5Ozxicj4NCiZndDvCoCDCoCDCoCAzNTYgfMKgIMKg IMKgIMKgIMKgdGVzdF9hcnJheV84KGZuLCBleHBlY3QsIHRlc3RfYnVmZmVyLCBmbXRfYnVmZmVy LCByZXN1bHQpO8KgIMKgIMKgIMKgIMKgIMKgIMKgIFw8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAg fMKgIMKgIMKgIMKgIMKgXn5+fn5+fn5+fn5+PGJyPg0KJmd0O8KgIMKgIGxpYi90ZXN0cy9zY2Fu Zl9rdW5pdC5jOjQxNDo5OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJiMzOTtudW1iZXJz X2xpc3RfOCYjMzk7PGJyPg0KJmd0O8KgIMKgIMKgIDQxNCB8wqAgwqAgwqAgwqAgwqBudW1iZXJz X2xpc3RfOCh1bnNpZ25lZCBpbnQswqAgwqAgwqAgwqAmcXVvdDsweCV4JnF1b3Q7LMKgIMKgZGVs aW0sICZxdW90O3gmcXVvdDssIGNoZWNrX3VpbnQpOzxicj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8 wqAgwqAgwqAgwqAgwqBefn5+fn5+fn5+fn5+fjxicj4NCiZndDsgJmd0OyZndDsgaW5jbHVkZS9s aW51eC9jb21waWxlci5oOjE5Nzo2MTogd2FybmluZzogZnVuY3Rpb24gJiMzOTtudW1iZXJzX2xp c3RfZCYjMzk7IG1pZ2h0IGJlIGEgY2FuZGlkYXRlIGZvciAmIzM5O2dudV9zY2FuZiYjMzk7IGZv cm1hdCBhdHRyaWJ1dGUgWy1Xc3VnZ2VzdC1hdHRyaWJ1dGU9Zm9ybWF0XTxicj4NCiZndDvCoCDC oCDCoCAxOTcgfCAjZGVmaW5lIF9fQlVJTERfQlVHX09OX1pFUk9fTVNHKGUsIG1zZykgKChpbnQp c2l6ZW9mKHN0cnVjdCB7X1N0YXRpY19hc3NlcnQoIShlKSwgbXNnKTt9KSk8YnI+DQomZ3Q7wqAg wqAgwqAgwqAgwqAgfMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgXjxicj4NCiZn dDvCoCDCoCBpbmNsdWRlL2xpbnV4L2NvbXBpbGVyX3R5cGVzLmg6NTIyOjIzOiBub3RlOiBpbiBk ZWZpbml0aW9uIG9mIG1hY3JvICYjMzk7X19jb21waWxldGltZV9hc3NlcnQmIzM5Ozxicj4NCiZn dDvCoCDCoCDCoCA1MjIgfMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaWYgKCEoY29uZGl0aW9u KSnCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoFw8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAgfMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgXn5+fn5+fn5+PGJyPg0KJmd0O8KgIMKgIGluY2x1ZGUvbGludXgvY29tcGlsZXJf dHlwZXMuaDo1NDI6OTogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvICYjMzk7X2NvbXBpbGV0 aW1lX2Fzc2VydCYjMzk7PGJyPg0KJmd0O8KgIMKgIMKgIDU0MiB8wqAgwqAgwqAgwqAgwqBfY29t cGlsZXRpbWVfYXNzZXJ0KGNvbmRpdGlvbiwgbXNnLCBfX2NvbXBpbGV0aW1lX2Fzc2VydF8sIF9f Q09VTlRFUl9fKTxicj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAgwqBefn5+fn5+ fn5+fn5+fn5+fn5+PGJyPg0KJmd0O8KgIMKgIGluY2x1ZGUvbGludXgvYnVpbGRfYnVnLmg6Mzk6 Mzc6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyAmIzM5O2NvbXBpbGV0aW1lX2Fzc2VydCYj Mzk7PGJyPg0KJmd0O8KgIMKgIMKgIMKgMzkgfCAjZGVmaW5lIEJVSUxEX0JVR19PTl9NU0coY29u ZCwgbXNnKSBjb21waWxldGltZV9hc3NlcnQoIShjb25kKSwgbXNnKTxicj4NCiZndDvCoCDCoCDC oCDCoCDCoCB8wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqBefn5+fn5+fn5+fn5+fn5+fn48YnI+DQomZ3Q7wqAgwqAgaW5jbHVkZS9saW51eC9i dWlsZF9idWcuaDo1MDo5OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJiMzOTtCVUlMRF9C VUdfT05fTVNHJiMzOTs8YnI+DQomZ3Q7wqAgwqAgwqAgwqA1MCB8wqAgwqAgwqAgwqAgwqBCVUlM RF9CVUdfT05fTVNHKGNvbmRpdGlvbiwgJnF1b3Q7QlVJTERfQlVHX09OIGZhaWxlZDogJnF1b3Q7 ICNjb25kaXRpb24pPGJyPg0KJmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDCoF5+fn5+ fn5+fn5+fn5+fn48YnI+DQomZ3Q7wqAgwqAgbGliL3Rlc3RzL3NjYW5mX2t1bml0LmM6MzMzOjk6 IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyAmIzM5O0JVSUxEX0JVR19PTiYjMzk7PGJyPg0K Jmd0O8KgIMKgIMKgIDMzMyB8wqAgwqAgwqAgwqAgwqBCVUlMRF9CVUdfT04oQVJSQVlfU0laRShh cnIpICE9IDgpO8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgXDxicj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAgwqBefn5+fn5+ fn5+fn48YnI+DQomZ3Q7wqAgwqAgaW5jbHVkZS9saW51eC9jb21waWxlci5oOjIwMjozMzogbm90 ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvICYjMzk7X19CVUlMRF9CVUdfT05fWkVST19NU0cmIzM5 Ozxicj4NCiZndDvCoCDCoCDCoCAyMDIgfCAjZGVmaW5lIF9fbXVzdF9iZV9hcnJheShhKcKgIMKg IMKgIF9fQlVJTERfQlVHX09OX1pFUk9fTVNHKCFfX2lzX2FycmF5KGEpLCBcPGJyPg0KJmd0O8Kg IMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoF5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+PGJyPg0KJmd0O8KgIMKgIGluY2x1ZGUvbGlu dXgvYXJyYXlfc2l6ZS5oOjExOjU5OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJiMzOTtf X211c3RfYmVfYXJyYXkmIzM5Ozxicj4NCiZndDvCoCDCoCDCoCDCoDExIHwgI2RlZmluZSBBUlJB WV9TSVpFKGFycikgKHNpemVvZihhcnIpIC8gc2l6ZW9mKChhcnIpWzBdKSArIF9fbXVzdF9iZV9h cnJheShhcnIpKTxicj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqBefn5+fn5+fn5+fn5+fn48YnI+DQomZ3Q7wqAgwqAgbGliL3Rlc3RzL3NjYW5m X2t1bml0LmM6MzMzOjIyOiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJiMzOTtBUlJBWV9T SVpFJiMzOTs8YnI+DQomZ3Q7wqAgwqAgwqAgMzMzIHzCoCDCoCDCoCDCoCDCoEJVSUxEX0JVR19P TihBUlJBWV9TSVpFKGFycikgIT0gOCk7wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBcPGJyPg0KJmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBefn5+fn5+fn5+PGJyPg0KJmd0O8KgIMKgIGxpYi90 ZXN0cy9zY2FuZl9rdW5pdC5jOjM1Njo5OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJiMz OTt0ZXN0X2FycmF5XzgmIzM5Ozxicj4NCiZndDvCoCDCoCDCoCAzNTYgfMKgIMKgIMKgIMKgIMKg dGVzdF9hcnJheV84KGZuLCBleHBlY3QsIHRlc3RfYnVmZmVyLCBmbXRfYnVmZmVyLCByZXN1bHQp O8KgIMKgIMKgIMKgIMKgIMKgIMKgIFw8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAgfMKgIMKgIMKg IMKgIMKgXn5+fn5+fn5+fn5+PGJyPg0KJmd0O8KgIMKgIGxpYi90ZXN0cy9zY2FuZl9rdW5pdC5j OjQxNTo5OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJiMzOTtudW1iZXJzX2xpc3RfOCYj Mzk7PGJyPg0KJmd0O8KgIMKgIMKgIDQxNSB8wqAgwqAgwqAgwqAgwqBudW1iZXJzX2xpc3RfOChp bnQswqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgJnF1b3Q7MHgleCZxdW90OyzCoCDCoGRlbGltLCAm cXVvdDtpJnF1b3Q7LCBjaGVja19pbnQpOzxicj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAg wqAgwqAgwqBefn5+fn5+fn5+fn5+fjxicj4NCiZndDvCoCDCoCBsaWIvdGVzdHMvc2NhbmZfa3Vu aXQuYzogSW4gZnVuY3Rpb24gJiMzOTtudW1iZXJzX2xpc3RfaCYjMzk7Ojxicj4NCiZndDsgJmd0 OyZndDsgaW5jbHVkZS9saW51eC9jb21waWxlci5oOjE5Nzo2MTogd2FybmluZzogZnVuY3Rpb24g JiMzOTtudW1iZXJzX2xpc3RfaCYjMzk7IG1pZ2h0IGJlIGEgY2FuZGlkYXRlIGZvciAmIzM5O2du dV9zY2FuZiYjMzk7IGZvcm1hdCBhdHRyaWJ1dGUgWy1Xc3VnZ2VzdC1hdHRyaWJ1dGU9Zm9ybWF0 XTxicj4NCiZndDvCoCDCoCDCoCAxOTcgfCAjZGVmaW5lIF9fQlVJTERfQlVHX09OX1pFUk9fTVNH KGUsIG1zZykgKChpbnQpc2l6ZW9mKHN0cnVjdCB7X1N0YXRpY19hc3NlcnQoIShlKSwgbXNnKTt9 KSk8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAgfMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgXjxicj4NCiZndDvCoCDCoCBpbmNsdWRlL2xpbnV4L2NvbXBpbGVyX3R5cGVzLmg6NTIy OjIzOiBub3RlOiBpbiBkZWZpbml0aW9uIG9mIG1hY3JvICYjMzk7X19jb21waWxldGltZV9hc3Nl cnQmIzM5Ozxicj4NCiZndDvCoCDCoCDCoCA1MjIgfMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg aWYgKCEoY29uZGl0aW9uKSnCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoFw8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAgfMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgXn5+fn5+fn5+PGJyPg0KJmd0O8KgIMKgIGluY2x1ZGUv bGludXgvY29tcGlsZXJfdHlwZXMuaDo1NDI6OTogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3Jv ICYjMzk7X2NvbXBpbGV0aW1lX2Fzc2VydCYjMzk7PGJyPg0KJmd0O8KgIMKgIMKgIDU0MiB8wqAg wqAgwqAgwqAgwqBfY29tcGlsZXRpbWVfYXNzZXJ0KGNvbmRpdGlvbiwgbXNnLCBfX2NvbXBpbGV0 aW1lX2Fzc2VydF8sIF9fQ09VTlRFUl9fKTxicj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAg wqAgwqAgwqBefn5+fn5+fn5+fn5+fn5+fn5+PGJyPg0KJmd0O8KgIMKgIGluY2x1ZGUvbGludXgv YnVpbGRfYnVnLmg6Mzk6Mzc6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyAmIzM5O2NvbXBp bGV0aW1lX2Fzc2VydCYjMzk7PGJyPg0KJmd0O8KgIMKgIMKgIMKgMzkgfCAjZGVmaW5lIEJVSUxE X0JVR19PTl9NU0coY29uZCwgbXNnKSBjb21waWxldGltZV9hc3NlcnQoIShjb25kKSwgbXNnKTxi cj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBefn5+fn5+fn5+fn5+fn5+fn48YnI+DQomZ3Q7wqAgwqAg aW5jbHVkZS9saW51eC9idWlsZF9idWcuaDo1MDo5OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFj cm8gJiMzOTtCVUlMRF9CVUdfT05fTVNHJiMzOTs8YnI+DQomZ3Q7wqAgwqAgwqAgwqA1MCB8wqAg wqAgwqAgwqAgwqBCVUlMRF9CVUdfT05fTVNHKGNvbmRpdGlvbiwgJnF1b3Q7QlVJTERfQlVHX09O IGZhaWxlZDogJnF1b3Q7ICNjb25kaXRpb24pPGJyPg0KJmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDC oCDCoCDCoCDCoF5+fn5+fn5+fn5+fn5+fn48YnI+DQomZ3Q7wqAgwqAgbGliL3Rlc3RzL3NjYW5m X2t1bml0LmM6MzMzOjk6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyAmIzM5O0JVSUxEX0JV R19PTiYjMzk7PGJyPg0KJmd0O8KgIMKgIMKgIDMzMyB8wqAgwqAgwqAgwqAgwqBCVUlMRF9CVUdf T04oQVJSQVlfU0laRShhcnIpICE9IDgpO8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgXDxicj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAg wqAgwqAgwqBefn5+fn5+fn5+fn48YnI+DQomZ3Q7wqAgwqAgaW5jbHVkZS9saW51eC9jb21waWxl ci5oOjIwMjozMzogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvICYjMzk7X19CVUlMRF9CVUdf T05fWkVST19NU0cmIzM5Ozxicj4NCiZndDvCoCDCoCDCoCAyMDIgfCAjZGVmaW5lIF9fbXVzdF9i ZV9hcnJheShhKcKgIMKgIMKgIF9fQlVJTERfQlVHX09OX1pFUk9fTVNHKCFfX2lzX2FycmF5KGEp LCBcPGJyPg0KJmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoF5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+PGJyPg0KJmd0O8Kg IMKgIGluY2x1ZGUvbGludXgvYXJyYXlfc2l6ZS5oOjExOjU5OiBub3RlOiBpbiBleHBhbnNpb24g b2YgbWFjcm8gJiMzOTtfX211c3RfYmVfYXJyYXkmIzM5Ozxicj4NCiZndDvCoCDCoCDCoCDCoDEx IHwgI2RlZmluZSBBUlJBWV9TSVpFKGFycikgKHNpemVvZihhcnIpIC8gc2l6ZW9mKChhcnIpWzBd KSArIF9fbXVzdF9iZV9hcnJheShhcnIpKTxicj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBefn5+fn5+fn5+fn5+fn48YnI+DQomZ3Q7wqAgwqAg bGliL3Rlc3RzL3NjYW5mX2t1bml0LmM6MzMzOjIyOiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFj cm8gJiMzOTtBUlJBWV9TSVpFJiMzOTs8YnI+DQomZ3Q7wqAgwqAgwqAgMzMzIHzCoCDCoCDCoCDC oCDCoEJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGFycikgIT0gOCk7wqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBcPGJyPg0KJmd0O8KgIMKgIMKg IMKgIMKgIHzCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBefn5+fn5+fn5+PGJyPg0K Jmd0O8KgIMKgIGxpYi90ZXN0cy9zY2FuZl9rdW5pdC5jOjM1Njo5OiBub3RlOiBpbiBleHBhbnNp b24gb2YgbWFjcm8gJiMzOTt0ZXN0X2FycmF5XzgmIzM5Ozxicj4NCiZndDvCoCDCoCDCoCAzNTYg fMKgIMKgIMKgIMKgIMKgdGVzdF9hcnJheV84KGZuLCBleHBlY3QsIHRlc3RfYnVmZmVyLCBmbXRf YnVmZmVyLCByZXN1bHQpO8KgIMKgIMKgIMKgIMKgIMKgIMKgIFw8YnI+DQomZ3Q7wqAgwqAgwqAg wqAgwqAgfMKgIMKgIMKgIMKgIMKgXn5+fn5+fn5+fn5+PGJyPg0KJmd0O8KgIMKgIGxpYi90ZXN0 cy9zY2FuZl9rdW5pdC5jOjQyMDo5OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJiMzOTtu dW1iZXJzX2xpc3RfOCYjMzk7PGJyPg0KJmd0O8KgIMKgIMKgIDQyMCB8wqAgwqAgwqAgwqAgwqBu dW1iZXJzX2xpc3RfOCh1bnNpZ25lZCBzaG9ydCzCoCDCoCDCoCZxdW90OyVodSZxdW90OyzCoCDC oCBkZWxpbSwgJnF1b3Q7aHUmcXVvdDssIGNoZWNrX3VzaG9ydCk7PGJyPg0KJmd0O8KgIMKgIMKg IMKgIMKgIHzCoCDCoCDCoCDCoCDCoF5+fn5+fn5+fn5+fn5+PGJyPg0KJmd0OyAmZ3Q7Jmd0OyBp bmNsdWRlL2xpbnV4L2NvbXBpbGVyLmg6MTk3OjYxOiB3YXJuaW5nOiBmdW5jdGlvbiAmIzM5O251 bWJlcnNfbGlzdF9oJiMzOTsgbWlnaHQgYmUgYSBjYW5kaWRhdGUgZm9yICYjMzk7Z251X3NjYW5m JiMzOTsgZm9ybWF0IGF0dHJpYnV0ZSBbLVdzdWdnZXN0LWF0dHJpYnV0ZT1mb3JtYXRdPGJyPg0K Jmd0O8KgIMKgIMKgIDE5NyB8ICNkZWZpbmUgX19CVUlMRF9CVUdfT05fWkVST19NU0coZSwgbXNn KSAoKGludClzaXplb2Yoc3RydWN0IHtfU3RhdGljX2Fzc2VydCghKGUpLCBtc2cpO30pKTxicj4N CiZndDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBe PGJyPg0KJmd0O8KgIMKgIGluY2x1ZGUvbGludXgvY29tcGlsZXJfdHlwZXMuaDo1MjI6MjM6IG5v dGU6IGluIGRlZmluaXRpb24gb2YgbWFjcm8gJiMzOTtfX2NvbXBpbGV0aW1lX2Fzc2VydCYjMzk7 PGJyPg0KJmd0O8KgIMKgIMKgIDUyMiB8wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBpZiAoIShj b25kaXRpb24pKcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgXDxicj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqBefn5+fn5+fn48YnI+DQomZ3Q7wqAgwqAgaW5jbHVkZS9saW51eC9j b21waWxlcl90eXBlcy5oOjU0Mjo5OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJiMzOTtf Y29tcGlsZXRpbWVfYXNzZXJ0JiMzOTs8YnI+DQomZ3Q7wqAgwqAgwqAgNTQyIHzCoCDCoCDCoCDC oCDCoF9jb21waWxldGltZV9hc3NlcnQoY29uZGl0aW9uLCBtc2csIF9fY29tcGlsZXRpbWVfYXNz ZXJ0XywgX19DT1VOVEVSX18pPGJyPg0KJmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDC oF5+fn5+fn5+fn5+fn5+fn5+fn48YnI+DQomZ3Q7wqAgwqAgaW5jbHVkZS9saW51eC9idWlsZF9i dWcuaDozOTozNzogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvICYjMzk7Y29tcGlsZXRpbWVf YXNzZXJ0JiMzOTs8YnI+DQomZ3Q7wqAgwqAgwqAgwqAzOSB8ICNkZWZpbmUgQlVJTERfQlVHX09O X01TRyhjb25kLCBtc2cpIGNvbXBpbGV0aW1lX2Fzc2VydCghKGNvbmQpLCBtc2cpPGJyPg0KJmd0 O8KgIMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoF5+fn5+fn5+fn5+fn5+fn5+fjxicj4NCiZndDvCoCDCoCBpbmNsdWRl L2xpbnV4L2J1aWxkX2J1Zy5oOjUwOjk6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyAmIzM5 O0JVSUxEX0JVR19PTl9NU0cmIzM5Ozxicj4NCiZndDvCoCDCoCDCoCDCoDUwIHzCoCDCoCDCoCDC oCDCoEJVSUxEX0JVR19PTl9NU0coY29uZGl0aW9uLCAmcXVvdDtCVUlMRF9CVUdfT04gZmFpbGVk OiAmcXVvdDsgI2NvbmRpdGlvbik8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAgfMKgIMKgIMKgIMKg IMKgXn5+fn5+fn5+fn5+fn5+fjxicj4NCiZndDvCoCDCoCBsaWIvdGVzdHMvc2NhbmZfa3VuaXQu YzozMzM6OTogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvICYjMzk7QlVJTERfQlVHX09OJiMz OTs8YnI+DQomZ3Q7wqAgwqAgwqAgMzMzIHzCoCDCoCDCoCDCoCDCoEJVSUxEX0JVR19PTihBUlJB WV9TSVpFKGFycikgIT0gOCk7wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqBcPGJyPg0KJmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDC oF5+fn5+fn5+fn5+fjxicj4NCiZndDvCoCDCoCBpbmNsdWRlL2xpbnV4L2NvbXBpbGVyLmg6MjAy OjMzOiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJiMzOTtfX0JVSUxEX0JVR19PTl9aRVJP X01TRyYjMzk7PGJyPg0KJmd0O8KgIMKgIMKgIDIwMiB8ICNkZWZpbmUgX19tdXN0X2JlX2FycmF5 KGEpwqAgwqAgwqAgX19CVUlMRF9CVUdfT05fWkVST19NU0coIV9faXNfYXJyYXkoYSksIFw8YnI+ DQomZ3Q7wqAgwqAgwqAgwqAgwqAgfMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgXn5+fn5+fn5+fn5+fn5+fn5+fn5+fn48YnI+DQomZ3Q7wqAgwqAgaW5j bHVkZS9saW51eC9hcnJheV9zaXplLmg6MTE6NTk6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNy byAmIzM5O19fbXVzdF9iZV9hcnJheSYjMzk7PGJyPg0KJmd0O8KgIMKgIMKgIMKgMTEgfCAjZGVm aW5lIEFSUkFZX1NJWkUoYXJyKSAoc2l6ZW9mKGFycikgLyBzaXplb2YoKGFycilbMF0pICsgX19t dXN0X2JlX2FycmF5KGFycikpPGJyPg0KJmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoF5+fn5+fn5+fn5+fn5+fjxicj4NCiZndDvCoCDCoCBsaWIvdGVz dHMvc2NhbmZfa3VuaXQuYzozMzM6MjI6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyAmIzM5 O0FSUkFZX1NJWkUmIzM5Ozxicj4NCiZndDvCoCDCoCDCoCAzMzMgfMKgIMKgIMKgIMKgIMKgQlVJ TERfQlVHX09OKEFSUkFZX1NJWkUoYXJyKSAhPSA4KTvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoFw8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAg fMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIF5+fn5+fn5+fn48YnI+DQomZ3Q7wqAg wqAgbGliL3Rlc3RzL3NjYW5mX2t1bml0LmM6MzU2Ojk6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBt YWNybyAmIzM5O3Rlc3RfYXJyYXlfOCYjMzk7PGJyPg0KJmd0O8KgIMKgIMKgIDM1NiB8wqAgwqAg wqAgwqAgwqB0ZXN0X2FycmF5XzgoZm4sIGV4cGVjdCwgdGVzdF9idWZmZXIsIGZtdF9idWZmZXIs IHJlc3VsdCk7wqAgwqAgwqAgwqAgwqAgwqAgwqAgXDxicj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8 wqAgwqAgwqAgwqAgwqBefn5+fn5+fn5+fn48YnI+DQomZ3Q7wqAgwqAgbGliL3Rlc3RzL3NjYW5m X2t1bml0LmM6NDIxOjk6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyAmIzM5O251bWJlcnNf bGlzdF84JiMzOTs8YnI+DQomZ3Q7wqAgwqAgwqAgNDIxIHzCoCDCoCDCoCDCoCDCoG51bWJlcnNf bGlzdF84KHNob3J0LMKgIMKgIMKgIMKgIMKgIMKgIMKgICZxdW90OyVoZCZxdW90OyzCoCDCoCBk ZWxpbSwgJnF1b3Q7aGQmcXVvdDssIGNoZWNrX3Nob3J0KTs8YnI+DQomZ3Q7wqAgwqAgwqAgwqAg wqAgfMKgIMKgIMKgIMKgIMKgXn5+fn5+fn5+fn5+fn48YnI+DQomZ3Q7wqAgwqAgaW5jbHVkZS9s aW51eC9jb21waWxlci5oOjE5Nzo2MTogd2FybmluZzogZnVuY3Rpb24gJiMzOTtudW1iZXJzX2xp c3RfaCYjMzk7IG1pZ2h0IGJlIGEgY2FuZGlkYXRlIGZvciAmIzM5O2dudV9zY2FuZiYjMzk7IGZv cm1hdCBhdHRyaWJ1dGUgWy1Xc3VnZ2VzdC1hdHRyaWJ1dGU9Zm9ybWF0XTxicj4NCiZndDvCoCDC oCDCoCAxOTcgfCAjZGVmaW5lIF9fQlVJTERfQlVHX09OX1pFUk9fTVNHKGUsIG1zZykgKChpbnQp c2l6ZW9mKHN0cnVjdCB7X1N0YXRpY19hc3NlcnQoIShlKSwgbXNnKTt9KSk8YnI+DQomZ3Q7wqAg wqAgwqAgwqAgwqAgfMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgXjxicj4NCiZn dDvCoCDCoCBpbmNsdWRlL2xpbnV4L2NvbXBpbGVyX3R5cGVzLmg6NTIyOjIzOiBub3RlOiBpbiBk ZWZpbml0aW9uIG9mIG1hY3JvICYjMzk7X19jb21waWxldGltZV9hc3NlcnQmIzM5Ozxicj4NCiZn dDvCoCDCoCDCoCA1MjIgfMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaWYgKCEoY29uZGl0aW9u KSnCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoFw8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAgfMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgXn5+fn5+fn5+PGJyPg0KJmd0O8KgIMKgIGluY2x1ZGUvbGludXgvY29tcGlsZXJf dHlwZXMuaDo1NDI6OTogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvICYjMzk7X2NvbXBpbGV0 aW1lX2Fzc2VydCYjMzk7PGJyPg0KJmd0O8KgIMKgIMKgIDU0MiB8wqAgwqAgwqAgwqAgwqBfY29t cGlsZXRpbWVfYXNzZXJ0KGNvbmRpdGlvbiwgbXNnLCBfX2NvbXBpbGV0aW1lX2Fzc2VydF8sIF9f Q09VTlRFUl9fKTxicj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAgwqBefn5+fn5+ fn5+fn5+fn5+fn5+PGJyPg0KJmd0O8KgIMKgIGluY2x1ZGUvbGludXgvYnVpbGRfYnVnLmg6Mzk6 Mzc6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyAmIzM5O2NvbXBpbGV0aW1lX2Fzc2VydCYj Mzk7PGJyPg0KJmd0O8KgIMKgIMKgIMKgMzkgfCAjZGVmaW5lIEJVSUxEX0JVR19PTl9NU0coY29u ZCwgbXNnKSBjb21waWxldGltZV9hc3NlcnQoIShjb25kKSwgbXNnKTxicj4NCiZndDvCoCDCoCDC oCDCoCDCoCB8wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqBefn5+fn5+fn5+fn5+fn5+fn48YnI+DQomZ3Q7wqAgwqAgaW5jbHVkZS9saW51eC9i dWlsZF9idWcuaDo1MDo5OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJiMzOTtCVUlMRF9C VUdfT05fTVNHJiMzOTs8YnI+DQomZ3Q7wqAgwqAgwqAgwqA1MCB8wqAgwqAgwqAgwqAgwqBCVUlM RF9CVUdfT05fTVNHKGNvbmRpdGlvbiwgJnF1b3Q7QlVJTERfQlVHX09OIGZhaWxlZDogJnF1b3Q7 ICNjb25kaXRpb24pPGJyPg0KJmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDCoF5+fn5+ fn5+fn5+fn5+fn48YnI+DQomZ3Q7wqAgwqAgbGliL3Rlc3RzL3NjYW5mX2t1bml0LmM6MzMzOjk6 IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyAmIzM5O0JVSUxEX0JVR19PTiYjMzk7PGJyPg0K Jmd0O8KgIMKgIMKgIDMzMyB8wqAgwqAgwqAgwqAgwqBCVUlMRF9CVUdfT04oQVJSQVlfU0laRShh cnIpICE9IDgpO8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgXDxicj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAgwqBefn5+fn5+ fn5+fn48YnI+DQomZ3Q7wqAgwqAgaW5jbHVkZS9saW51eC9jb21waWxlci5oOjIwMjozMzogbm90 ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvICYjMzk7X19CVUlMRF9CVUdfT05fWkVST19NU0cmIzM5 Ozxicj4NCiZndDvCoCDCoCDCoCAyMDIgfCAjZGVmaW5lIF9fbXVzdF9iZV9hcnJheShhKcKgIMKg IMKgIF9fQlVJTERfQlVHX09OX1pFUk9fTVNHKCFfX2lzX2FycmF5KGEpLCBcPGJyPg0KJmd0O8Kg IMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoF5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+PGJyPg0KJmd0O8KgIMKgIGluY2x1ZGUvbGlu dXgvYXJyYXlfc2l6ZS5oOjExOjU5OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJiMzOTtf X211c3RfYmVfYXJyYXkmIzM5Ozxicj4NCiZndDvCoCDCoCDCoCDCoDExIHwgI2RlZmluZSBBUlJB WV9TSVpFKGFycikgKHNpemVvZihhcnIpIC8gc2l6ZW9mKChhcnIpWzBdKSArIF9fbXVzdF9iZV9h cnJheShhcnIpKTxicj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqBefn5+fn5+fn5+fn5+fn48YnI+DQomZ3Q7wqAgwqAgbGliL3Rlc3RzL3NjYW5m X2t1bml0LmM6MzMzOjIyOiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJiMzOTtBUlJBWV9T SVpFJiMzOTs8YnI+DQomZ3Q7wqAgwqAgwqAgMzMzIHzCoCDCoCDCoCDCoCDCoEJVSUxEX0JVR19P TihBUlJBWV9TSVpFKGFycikgIT0gOCk7wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBcPGJyPg0KJmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBefn5+fn5+fn5+PGJyPg0KJmd0O8KgIMKgIGxpYi90 ZXN0cy9zY2FuZl9rdW5pdC5jOjM1Njo5OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJiMz OTt0ZXN0X2FycmF5XzgmIzM5Ozxicj4NCiZndDvCoCDCoCDCoCAzNTYgfMKgIMKgIMKgIMKgIMKg dGVzdF9hcnJheV84KGZuLCBleHBlY3QsIHRlc3RfYnVmZmVyLCBmbXRfYnVmZmVyLCByZXN1bHQp O8KgIMKgIMKgIMKgIMKgIMKgIMKgIFw8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAgfMKgIMKgIMKg IMKgIMKgXn5+fn5+fn5+fn5+PGJyPg0KJmd0O8KgIMKgIGxpYi90ZXN0cy9zY2FuZl9rdW5pdC5j OjQyMjo5OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJiMzOTtudW1iZXJzX2xpc3RfOCYj Mzk7PGJyPg0KJmd0O8KgIMKgIMKgIDQyMiB8wqAgwqAgwqAgwqAgwqBudW1iZXJzX2xpc3RfOChz aG9ydCzCoCDCoCDCoCDCoCDCoCDCoCDCoCAmcXVvdDslaGQmcXVvdDsswqAgwqAgZGVsaW0sICZx dW90O2hpJnF1b3Q7LCBjaGVja19zaG9ydCk7PGJyPg0KJmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDC oCDCoCDCoCDCoF5+fn5+fn5+fn5+fn5+PGJyPg0KJmd0O8KgIMKgIGluY2x1ZGUvbGludXgvY29t cGlsZXIuaDoxOTc6NjE6IHdhcm5pbmc6IGZ1bmN0aW9uICYjMzk7bnVtYmVyc19saXN0X2gmIzM5 OyBtaWdodCBiZSBhIGNhbmRpZGF0ZSBmb3IgJiMzOTtnbnVfc2NhbmYmIzM5OyBmb3JtYXQgYXR0 cmlidXRlIFstV3N1Z2dlc3QtYXR0cmlidXRlPWZvcm1hdF08YnI+DQomZ3Q7wqAgwqAgwqAgMTk3 IHwgI2RlZmluZSBfX0JVSUxEX0JVR19PTl9aRVJPX01TRyhlLCBtc2cpICgoaW50KXNpemVvZihz dHJ1Y3Qge19TdGF0aWNfYXNzZXJ0KCEoZSksIG1zZyk7fSkpPGJyPg0KJmd0O8KgIMKgIMKgIMKg IMKgIHzCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoF48YnI+DQomZ3Q7wqAgwqAg aW5jbHVkZS9saW51eC9jb21waWxlcl90eXBlcy5oOjUyMjoyMzogbm90ZTogaW4gZGVmaW5pdGlv biBvZiBtYWNybyAmIzM5O19fY29tcGlsZXRpbWVfYXNzZXJ0JiMzOTs8YnI+DQomZ3Q7wqAgwqAg wqAgNTIyIHzCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGlmICghKGNvbmRpdGlvbikpwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBcPGJy Pg0KJmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oF5+fn5+fn5+fjxicj4NCiZndDvCoCDCoCBpbmNsdWRlL2xpbnV4L2NvbXBpbGVyX3R5cGVzLmg6 NTQyOjk6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyAmIzM5O19jb21waWxldGltZV9hc3Nl cnQmIzM5Ozxicj4NCiZndDvCoCDCoCDCoCA1NDIgfMKgIMKgIMKgIMKgIMKgX2NvbXBpbGV0aW1l X2Fzc2VydChjb25kaXRpb24sIG1zZywgX19jb21waWxldGltZV9hc3NlcnRfLCBfX0NPVU5URVJf Xyk8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAgfMKgIMKgIMKgIMKgIMKgXn5+fn5+fn5+fn5+fn5+ fn5+fjxicj4NCiZndDvCoCDCoCBpbmNsdWRlL2xpbnV4L2J1aWxkX2J1Zy5oOjM5OjM3OiBub3Rl OiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJiMzOTtjb21waWxldGltZV9hc3NlcnQmIzM5Ozxicj4N CiZndDvCoCDCoCDCoCDCoDM5IHwgI2RlZmluZSBCVUlMRF9CVUdfT05fTVNHKGNvbmQsIG1zZykg Y29tcGlsZXRpbWVfYXNzZXJ0KCEoY29uZCksIG1zZyk8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAg fMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg Xn5+fn5+fn5+fn5+fn5+fn5+PGJyPg0KJmd0O8KgIMKgIGluY2x1ZGUvbGludXgvYnVpbGRfYnVn Lmg6NTA6OTogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvICYjMzk7QlVJTERfQlVHX09OX01T RyYjMzk7PGJyPg0KJmd0O8KgIMKgIMKgIMKgNTAgfMKgIMKgIMKgIMKgIMKgQlVJTERfQlVHX09O X01TRyhjb25kaXRpb24sICZxdW90O0JVSUxEX0JVR19PTiBmYWlsZWQ6ICZxdW90OyAjY29uZGl0 aW9uKTxicj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAgwqBefn5+fn5+fn5+fn5+ fn5+PGJyPg0KJmd0O8KgIMKgIGxpYi90ZXN0cy9zY2FuZl9rdW5pdC5jOjMzMzo5OiBub3RlOiBp biBleHBhbnNpb24gb2YgbWFjcm8gJiMzOTtCVUlMRF9CVUdfT04mIzM5Ozxicj4NCiZndDvCoCDC oCDCoCAzMzMgfMKgIMKgIMKgIMKgIMKgQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoYXJyKSAhPSA4 KTvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oFw8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAgfMKgIMKgIMKgIMKgIMKgXn5+fn5+fn5+fn5+PGJy Pg0KJmd0O8KgIMKgIGluY2x1ZGUvbGludXgvY29tcGlsZXIuaDoyMDI6MzM6IG5vdGU6IGluIGV4 cGFuc2lvbiBvZiBtYWNybyAmIzM5O19fQlVJTERfQlVHX09OX1pFUk9fTVNHJiMzOTs8YnI+DQom Z3Q7wqAgwqAgwqAgMjAyIHwgI2RlZmluZSBfX211c3RfYmVfYXJyYXkoYSnCoCDCoCDCoCBfX0JV SUxEX0JVR19PTl9aRVJPX01TRyghX19pc19hcnJheShhKSwgXDxicj4NCiZndDvCoCDCoCDCoCDC oCDCoCB8wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBe fn5+fn5+fn5+fn5+fn5+fn5+fn5+fjxicj4NCiZndDvCoCDCoCBpbmNsdWRlL2xpbnV4L2FycmF5 X3NpemUuaDoxMTo1OTogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvICYjMzk7X19tdXN0X2Jl X2FycmF5JiMzOTs8YnI+DQomZ3Q7wqAgwqAgwqAgwqAxMSB8ICNkZWZpbmUgQVJSQVlfU0laRShh cnIpIChzaXplb2YoYXJyKSAvIHNpemVvZigoYXJyKVswXSkgKyBfX211c3RfYmVfYXJyYXkoYXJy KSk8YnI+DQomZ3Q7wqAgwqAgwqAgwqAgwqAgfMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgXn5+fn5+fn5+fn5+fn5+PGJyPg0KJmd0O8KgIMKgIGxpYi90ZXN0cy9zY2FuZl9rdW5pdC5j OjMzMzoyMjogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvICYjMzk7QVJSQVlfU0laRSYjMzk7 PGJyPg0KJmd0O8KgIMKgIMKgIDMzMyB8wqAgwqAgwqAgwqAgwqBCVUlMRF9CVUdfT04oQVJSQVlf U0laRShhcnIpICE9IDgpO8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgXDxicj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgXn5+fn5+fn5+fjxicj4NCiZndDvCoCDCoCBsaWIvdGVzdHMvc2Nh bmZfa3VuaXQuYzozNTY6OTogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvICYjMzk7dGVzdF9h cnJheV84JiMzOTs8YnI+DQomZ3Q7wqAgwqAgwqAgMzU2IHzCoCDCoCDCoCDCoCDCoHRlc3RfYXJy YXlfOChmbiwgZXhwZWN0LCB0ZXN0X2J1ZmZlciwgZm10X2J1ZmZlciwgcmVzdWx0KTvCoCDCoCDC oCDCoCDCoCDCoCDCoCBcPGJyPg0KJmd0O8KgIMKgIMKgIMKgIMKgIHzCoCDCoCDCoCDCoCDCoF5+ fn5+fn5+fn5+fjxicj4NCiZndDvCoCDCoCBsaWIvdGVzdHMvc2NhbmZfa3VuaXQuYzo0MjM6OTog bm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvICYjMzk7bnVtYmVyc19saXN0XzgmIzM5Ozxicj4N CiZndDvCoCDCoCDCoCA0MjMgfMKgIMKgIMKgIMKgIMKgbnVtYmVyc19saXN0XzgodW5zaWduZWQg c2hvcnQswqAgwqAgwqAmcXVvdDslaHgmcXVvdDsswqAgwqAgZGVsaW0sICZxdW90O2h4JnF1b3Q7 LCBjaGVja191c2hvcnQpOzxicj4NCiZndDvCoCDCoCDCoCDCoCDCoCB8wqAgwqAgwqAgwqAgwqBe fn5+fn5+fn5+fn5+fjxicj4NCiZndDvCoCDCoCBpbmNsdWRlL2xpbnV4L2NvbXBpbGVyLmg6MTk3 OjYxOiB3YXJuaW5nOiBmdW5jdGlvbiAmIzM5O251bWJlcnNfbGlzdF9oJiMzOTsgbWlnaHQgYmUg YSBjYW5kaWRhdGUgZm9yICYjMzk7Z251X3NjYW5mJiMzOTsgZm9ybWF0IGF0dHJpYnV0ZSBbLVdz dWdnZXN0LWF0dHJpYnV0ZT1mb3JtYXRdPGJyPg0KJmd0O8KgIMKgIMKgIDE5NyB8ICNkZWZpbmUg X19CVUlMRF9CVUdfT05fWkVST19NU0coZSwgbXNnKSAoKGludClzaXplb2Yoc3RydWN0IHtfU3Rh dGljX2Fzc2VydCghKGUpLCBtc2cpO30pKTxicj4NCiZndDs8YnI+DQomZ3Q7PGJyPg0KJmd0OyB2 aW0gKzE5NyBpbmNsdWRlL2xpbnV4L2NvbXBpbGVyLmg8YnI+DQomZ3Q7PGJyPg0KJmd0OyAyMzBm YTI1M2RmNjM1MmEgQ2hyaXN0aWFuIEJvcm50cmFlZ2VyIDIwMTQtMTEtMjXCoCAxOTM8YnI+DQom Z3Q7IGNiNzM4MGRlOWU0Y2JjOSBLZWVzIENvb2vCoCDCoCDCoCDCoCDCoCDCoCDCoDIwMjUtMDIt MDXCoCAxOTTCoCAjaWZkZWYgX19DSEVDS0VSX188YnI+DQomZ3Q7IGNiNzM4MGRlOWU0Y2JjOSBL ZWVzIENvb2vCoCDCoCDCoCDCoCDCoCDCoCDCoDIwMjUtMDItMDXCoCAxOTXCoCAjZGVmaW5lIF9f QlVJTERfQlVHX09OX1pFUk9fTVNHKGUsIG1zZykgKDApPGJyPg0KJmd0OyBjYjczODBkZTllNGNi YzkgS2VlcyBDb29rwqAgwqAgwqAgwqAgwqAgwqAgwqAyMDI1LTAyLTA1wqAgMTk2wqAgI2Vsc2Ug LyogX19DSEVDS0VSX18gKi88YnI+DQomZ3Q7IGNiNzM4MGRlOWU0Y2JjOSBLZWVzIENvb2vCoCDC oCDCoCDCoCDCoCDCoCDCoDIwMjUtMDItMDUgQDE5N8KgICNkZWZpbmUgX19CVUlMRF9CVUdfT05f WkVST19NU0coZSwgbXNnKSAoKGludClzaXplb2Yoc3RydWN0IHtfU3RhdGljX2Fzc2VydCghKGUp LCBtc2cpO30pKTxicj4NCiZndDsgY2I3MzgwZGU5ZTRjYmM5IEtlZXMgQ29va8KgIMKgIMKgIMKg IMKgIMKgIMKgMjAyNS0wMi0wNcKgIDE5OMKgICNlbmRpZiAvKiBfX0NIRUNLRVJfXyAqLzxicj4N CiZndDsgY2I3MzgwZGU5ZTRjYmM5IEtlZXMgQ29va8KgIMKgIMKgIMKgIMKgIMKgIMKgMjAyNS0w Mi0wNcKgIDE5OTxicj4NCiZndDs8YnI+DQomZ3Q7IC0tPGJyPg0KJmd0OyAwLURBWSBDSSBLZXJu ZWwgVGVzdCBTZXJ2aWNlPGJyPg0KJmd0OyA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vaW50 ZWwvbGtwLXRlc3RzL3dpa2kiIHJlbD0ibm9yZWZlcnJlciBub3JlZmVycmVyIiB0YXJnZXQ9Il9i bGFuayI+aHR0cHM6Ly9naXRodWIuY29tL2ludGVsL2xrcC10ZXN0cy93aWtpPC9hPjxicj4NCjxi cj4NCkkgYW0gbm90IGFibGUgdG8gcmVwcm9kdWNlIHRoZXNlIHdhcm5pbmdzIHdpdGggY2xhbmcg MTkuMS43LiBUaGV5IGFsc28gZG9uJiMzOTt0IG9idmlvdXNseSBtYWtlIHNlbnNlIHRvIG1lLjxi cj48L2Rpdj4NCg== --000000000000dd2ecf062e33a18b--