From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============7977190062049002466==" MIME-Version: 1.0 From: Mario Limonciello To: kbuild-all@lists.01.org Subject: Re: drivers/platform/x86/dell/dell-smbios-smm.c:27:35: warning: unused variable 'dell_device_table' Date: Wed, 09 Jun 2021 02:57:30 +0000 Message-ID: < > In-Reply-To: List-Id: --===============7977190062049002466== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Apologies for top post, I'm on mobile. I agree it sounds like a corner case to support someone not compiling dell-= laptop, but there are actually desktops and workstations that are also supp= orted by dell-smbios-smm. But then the intersection of systems supporting only smm and not wmi is ver= y small and wmi will load based on the bus. So I'm in agreement with you. Get Outlook for Android ________________________________ From: Hans de Goede Sent: Tuesday, June 8, 2021 3:36:27 AM To: kernel test robot ; Mario Limonciello Cc: kbuild-all(a)lists.01.org ; clang-built-linu= x(a)googlegroups.com ; linux-kernel(a= )vger.kernel.org Subject: Re: drivers/platform/x86/dell/dell-smbios-smm.c:27:35: warning: un= used variable 'dell_device_table' Hi all, On 6/8/21 12:41 AM, kernel test robot wrote: > Hi Mario, > > FYI, the error/warning still remains. > > tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.gi= t master > head: 614124bea77e452aa6df7a8714e8bc820b489922 > commit: f1e1ea516721d1ea0b21327ff9e6cb2c2bb86e28 platform/x86: Move all d= ell drivers to their own subdirectory > date: 4 months ago > config: x86_64-randconfig-r023-20210608 (attached as .config) > compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project ae97= 3380c5f6be77ce395022be40350942260be9) > reproduce (this is a W=3D1 build): > wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbi= n/make.cross -O ~/bin/make.cross > chmod +x ~/bin/make.cross > # install x86_64 cross compiling tool for clang build > # apt-get install binutils-x86-64-linux-gnu > # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.= git/commit/?id=3Df1e1ea516721d1ea0b21327ff9e6cb2c2bb86e28 > git remote add linus https://git.kernel.org/pub/scm/linux/kernel/= git/torvalds/linux.git > git fetch --no-tags linus master > git checkout f1e1ea516721d1ea0b21327ff9e6cb2c2bb86e28 > # save the attached .config to linux build tree > COMPILER_INSTALL_PATH=3D$HOME/0day COMPILER=3Dclang make.cross AR= CH=3Dx86_64 > > If you fix the issue, kindly add following tag as appropriate > Reported-by: kernel test robot > > All warnings (new ones prefixed by >>): > >>> drivers/platform/x86/dell/dell-smbios-smm.c:27:35: warning: unused vari= able 'dell_device_table' [-Wunused-const-variable] > static const struct dmi_system_id dell_device_table[] __initconst =3D { > ^ > 1 warning generated. > > > vim +/dell_device_table +27 drivers/platform/x86/dell/dell-smbios-smm.c > > 549b4930f05765 drivers/platform/x86/dell-smbios-smm.c Mario Limonciello 2= 017-11-01 26 > 549b4930f05765 drivers/platform/x86/dell-smbios-smm.c Mario Limonciello 2= 017-11-01 @27 static const struct dmi_system_id dell_device_table[] __init= const =3D { > 549b4930f05765 drivers/platform/x86/dell-smbios-smm.c Mario Limonciello 2= 017-11-01 28 { > 549b4930f05765 drivers/platform/x86/dell-smbios-smm.c Mario Limonciello 2= 017-11-01 29 .ident =3D "Dell laptop", > 549b4930f05765 drivers/platform/x86/dell-smbios-smm.c Mario Limonciello 2= 017-11-01 30 .matches =3D { > 549b4930f05765 drivers/platform/x86/dell-smbios-smm.c Mario Limonciello 2= 017-11-01 31 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."= ), > 549b4930f05765 drivers/platform/x86/dell-smbios-smm.c Mario Limonciello 2= 017-11-01 32 DMI_MATCH(DMI_CHASSIS_TYPE, "8"), > 549b4930f05765 drivers/platform/x86/dell-smbios-smm.c Mario Limonciello 2= 017-11-01 33 }, > 549b4930f05765 drivers/platform/x86/dell-smbios-smm.c Mario Limonciello 2= 017-11-01 34 }, > 549b4930f05765 drivers/platform/x86/dell-smbios-smm.c Mario Limonciello 2= 017-11-01 35 { > 549b4930f05765 drivers/platform/x86/dell-smbios-smm.c Mario Limonciello 2= 017-11-01 36 .matches =3D { > 549b4930f05765 drivers/platform/x86/dell-smbios-smm.c Mario Limonciello 2= 017-11-01 37 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."= ), > 549b4930f05765 drivers/platform/x86/dell-smbios-smm.c Mario Limonciello 2= 017-11-01 38 DMI_MATCH(DMI_CHASSIS_TYPE, "9"), /*L= aptop*/ > 549b4930f05765 drivers/platform/x86/dell-smbios-smm.c Mario Limonciello 2= 017-11-01 39 }, > 549b4930f05765 drivers/platform/x86/dell-smbios-smm.c Mario Limonciello 2= 017-11-01 40 }, > 549b4930f05765 drivers/platform/x86/dell-smbios-smm.c Mario Limonciello 2= 017-11-01 41 { > 549b4930f05765 drivers/platform/x86/dell-smbios-smm.c Mario Limonciello 2= 017-11-01 42 .matches =3D { > 549b4930f05765 drivers/platform/x86/dell-smbios-smm.c Mario Limonciello 2= 017-11-01 43 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."= ), > 549b4930f05765 drivers/platform/x86/dell-smbios-smm.c Mario Limonciello 2= 017-11-01 44 DMI_MATCH(DMI_CHASSIS_TYPE, "10"), /*= Notebook*/ > 549b4930f05765 drivers/platform/x86/dell-smbios-smm.c Mario Limonciello 2= 017-11-01 45 }, > 549b4930f05765 drivers/platform/x86/dell-smbios-smm.c Mario Limonciello 2= 017-11-01 46 }, > 549b4930f05765 drivers/platform/x86/dell-smbios-smm.c Mario Limonciello 2= 017-11-01 47 { > 549b4930f05765 drivers/platform/x86/dell-smbios-smm.c Mario Limonciello 2= 017-11-01 48 .ident =3D "Dell Computer Corporation", > 549b4930f05765 drivers/platform/x86/dell-smbios-smm.c Mario Limonciello 2= 017-11-01 49 .matches =3D { > 549b4930f05765 drivers/platform/x86/dell-smbios-smm.c Mario Limonciello 2= 017-11-01 50 DMI_MATCH(DMI_SYS_VENDOR, "Dell Compu= ter Corporation"), > 549b4930f05765 drivers/platform/x86/dell-smbios-smm.c Mario Limonciello 2= 017-11-01 51 DMI_MATCH(DMI_CHASSIS_TYPE, "8"), > 549b4930f05765 drivers/platform/x86/dell-smbios-smm.c Mario Limonciello 2= 017-11-01 52 }, > 549b4930f05765 drivers/platform/x86/dell-smbios-smm.c Mario Limonciello 2= 017-11-01 53 }, > 549b4930f05765 drivers/platform/x86/dell-smbios-smm.c Mario Limonciello 2= 017-11-01 54 { } > 549b4930f05765 drivers/platform/x86/dell-smbios-smm.c Mario Limonciello 2= 017-11-01 55 }; > 549b4930f05765 drivers/platform/x86/dell-smbios-smm.c Mario Limonciello 2= 017-11-01 56 MODULE_DEVICE_TABLE(dmi, dell_device_table); Note the MODULE_DEVICE_TABLE() here; and I checked and CONFIG_DMI=3Dy in th= e config used here as expected, so this seems like a false-positive warnings, with that s= aid I was still a bit surprised about the presence of this table since dell-smbios is= depended on by dell-laptop and that has this same table + same extra entries for cha= ssis-type 30, 31 and 32. Since dell-laptop will already auto-load based on the DMI table in there (w= hich also is more complete) and since dell-laptop will then bring in the dell-smbios mod= ule, the only scenario I can think of where this DMI table inside dell-smbios-smm.c is us= eful is if users have the dell-laptop module disabled and they want to use the sysfs i= nterface offered by dell-smbios-smm.c. But that seems such a corner case that I beli= eve it would be fair to tell users to do a modprobe themselves in this case ? This would allow removing the dupplicate table from dell-smbios-smm.c, whic= h would be a good thing, because as the differences between the 2 copies which have ac= cumulated over time show, having the same table in 2 places seems like a bad idea. Mario, even though you are no longer at Dell, I would still very much appre= ciate your thoughts on this. Regards, Hans > 549b4930f05765 drivers/platform/x86/dell-smbios-smm.c Mario Limonciello 2= 017-11-01 57 > > :::::: The code at line 27 was first introduced by commit > :::::: 549b4930f057658dc50d8010e66219233119a4d8 platform/x86: dell-smbios= : Introduce dispatcher for SMM calls > > :::::: TO: Mario Limonciello > :::::: CC: Darren Hart (VMware) > > --- > 0-DAY CI Kernel Test Service, Intel Corporation > https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org > --===============7977190062049002466== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.htm" PGh0bWw+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRl eHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+CjwvaGVhZD4KPGJvZHk+CjxkaXYgc3R5bGU9ImNv bG9yOiByZ2IoMzMsIDMzLCAzMyk7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1 KTsiIGRpcj0iYXV0byI+CkFwb2xvZ2llcyBmb3IgdG9wIHBvc3QsIEknbSBvbiBtb2JpbGUuPC9k aXY+CjxkaXYgc3R5bGU9ImNvbG9yOiByZ2IoMzMsIDMzLCAzMyk7IGJhY2tncm91bmQtY29sb3I6 IHJnYigyNTUsIDI1NSwgMjU1KTsiIGRpcj0iYXV0byI+Cjxicj4KPC9kaXY+CjxkaXYgc3R5bGU9 ImNvbG9yOiByZ2IoMzMsIDMzLCAzMyk7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwg MjU1KTsiIGRpcj0iYXV0byI+CkkgYWdyZWUgaXQgc291bmRzIGxpa2UgYSBjb3JuZXIgY2FzZSB0 byBzdXBwb3J0IHNvbWVvbmUgbm90IGNvbXBpbGluZyBkZWxsLWxhcHRvcCwgYnV0IHRoZXJlIGFy ZSBhY3R1YWxseSBkZXNrdG9wcyBhbmQgd29ya3N0YXRpb25zIHRoYXQgYXJlIGFsc28gc3VwcG9y dGVkIGJ5IGRlbGwtc21iaW9zLXNtbS48L2Rpdj4KPGRpdiBzdHlsZT0iY29sb3I6IHJnYigzMywg MzMsIDMzKTsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUpOyIgZGlyPSJhdXRv Ij4KPGJyPgo8L2Rpdj4KPGRpdiBzdHlsZT0iY29sb3I6IHJnYigzMywgMzMsIDMzKTsgYmFja2dy b3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUpOyIgZGlyPSJhdXRvIj4KQnV0IHRoZW4gdGhl IGludGVyc2VjdGlvbiBvZiBzeXN0ZW1zIHN1cHBvcnRpbmcgb25seSBzbW0gYW5kIG5vdCB3bWkg aXMgdmVyeSBzbWFsbCBhbmQgd21pIHdpbGwgbG9hZCBiYXNlZCBvbiB0aGUgYnVzLiBTbyBJJ20g aW4gYWdyZWVtZW50IHdpdGggeW91LjwvZGl2Pgo8ZGl2IGlkPSJtcy1vdXRsb29rLW1vYmlsZS1z aWduYXR1cmUiPgo8ZGl2Pjxicj4KPC9kaXY+CkdldCA8YSBocmVmPSJodHRwczovL2FrYS5tcy9B QWI5eXNnIj5PdXRsb29rIGZvciBBbmRyb2lkPC9hPjwvZGl2Pgo8aHIgc3R5bGU9ImRpc3BsYXk6 aW5saW5lLWJsb2NrO3dpZHRoOjk4JSIgdGFiaW5kZXg9Ii0xIj4KPGRpdiBpZD0iZGl2UnBseUZ3 ZE1zZyIgZGlyPSJsdHIiPjxmb250IGZhY2U9IkNhbGlicmksIHNhbnMtc2VyaWYiIHN0eWxlPSJm b250LXNpemU6MTFwdCIgY29sb3I9IiMwMDAwMDAiPjxiPkZyb206PC9iPiBIYW5zIGRlIEdvZWRl ICZsdDtoZGVnb2VkZUByZWRoYXQuY29tJmd0Ozxicj4KPGI+U2VudDo8L2I+IFR1ZXNkYXksIEp1 bmUgOCwgMjAyMSAzOjM2OjI3IEFNPGJyPgo8Yj5Ubzo8L2I+IGtlcm5lbCB0ZXN0IHJvYm90ICZs dDtsa3BAaW50ZWwuY29tJmd0OzsgTWFyaW8gTGltb25jaWVsbG8gJmx0O21hcmlvLmxpbW9uY2ll bGxvQG91dGxvb2suY29tJmd0Ozxicj4KPGI+Q2M6PC9iPiBrYnVpbGQtYWxsQGxpc3RzLjAxLm9y ZyAmbHQ7a2J1aWxkLWFsbEBsaXN0cy4wMS5vcmcmZ3Q7OyBjbGFuZy1idWlsdC1saW51eEBnb29n bGVncm91cHMuY29tICZsdDtjbGFuZy1idWlsdC1saW51eEBnb29nbGVncm91cHMuY29tJmd0Ozsg bGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZyAmbHQ7bGludXgta2VybmVsQHZnZXIua2VybmVs Lm9yZyZndDs8YnI+CjxiPlN1YmplY3Q6PC9iPiBSZTogZHJpdmVycy9wbGF0Zm9ybS94ODYvZGVs bC9kZWxsLXNtYmlvcy1zbW0uYzoyNzozNTogd2FybmluZzogdW51c2VkIHZhcmlhYmxlICdkZWxs X2RldmljZV90YWJsZSc8L2ZvbnQ+CjxkaXY+Jm5ic3A7PC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNz PSJCb2R5RnJhZ21lbnQiPjxmb250IHNpemU9IjIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTFw dDsiPgo8ZGl2IGNsYXNzPSJQbGFpblRleHQiPiZsdDtyZXBsYWNlZCBNYXJpbydzIG9sZCBEZWxs IGVtYWlsIGFkZHJlc3Mgd2hpY2ggb25lIHdoaWNoIHdvcmtzJmd0Ozxicj4KPGJyPgpIaSBhbGws PGJyPgo8YnI+Ck9uIDYvOC8yMSAxMjo0MSBBTSwga2VybmVsIHRlc3Qgcm9ib3Qgd3JvdGU6PGJy PgomZ3Q7IEhpIE1hcmlvLDxicj4KJmd0OyA8YnI+CiZndDsgRllJLCB0aGUgZXJyb3Ivd2Fybmlu ZyBzdGlsbCByZW1haW5zLjxicj4KJmd0OyA8YnI+CiZndDsgdHJlZTombmJzcDsmbmJzcDsgPGEg aHJlZj0iaHR0cHM6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvdG9y dmFsZHMvbGludXguZ2l0Ij4KaHR0cHM6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tl cm5lbC9naXQvdG9ydmFsZHMvbGludXguZ2l0PC9hPiBtYXN0ZXI8YnI+CiZndDsgaGVhZDombmJz cDsmbmJzcDsgNjE0MTI0YmVhNzdlNDUyYWE2ZGY3YTg3MTRlOGJjODIwYjQ4OTkyMjxicj4KJmd0 OyBjb21taXQ6IGYxZTFlYTUxNjcyMWQxZWEwYjIxMzI3ZmY5ZTZjYjJjMmJiODZlMjggcGxhdGZv cm0veDg2OiBNb3ZlIGFsbCBkZWxsIGRyaXZlcnMgdG8gdGhlaXIgb3duIHN1YmRpcmVjdG9yeTxi cj4KJmd0OyBkYXRlOiZuYnNwOyZuYnNwOyA0IG1vbnRocyBhZ288YnI+CiZndDsgY29uZmlnOiB4 ODZfNjQtcmFuZGNvbmZpZy1yMDIzLTIwMjEwNjA4IChhdHRhY2hlZCBhcyAuY29uZmlnKTxicj4K Jmd0OyBjb21waWxlcjogY2xhbmcgdmVyc2lvbiAxMy4wLjAgKDxhIGhyZWY9IiI+PC9hPmh0dHBz Oi8vZ2l0aHViLmNvbS9sbHZtL2xsdm0tcHJvamVjdCBhZTk3MzM4MGM1ZjZiZTc3Y2UzOTUwMjJi ZTQwMzUwOTQyMjYwYmU5KTxicj4KJmd0OyByZXByb2R1Y2UgKHRoaXMgaXMgYSBXPTEgYnVpbGQp Ojxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyB3Z2V0IDxhIGhyZWY9Imh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9pbnRlbC9s a3AtdGVzdHMvbWFzdGVyL3NiaW4vbWFrZS5jcm9zcyI+Cmh0dHBzOi8vcmF3LmdpdGh1YnVzZXJj b250ZW50LmNvbS9pbnRlbC9sa3AtdGVzdHMvbWFzdGVyL3NiaW4vbWFrZS5jcm9zczwvYT4gLU8g fi9iaW4vbWFrZS5jcm9zczxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyBjaG1vZCAreCB+L2Jpbi9tYWtlLmNyb3NzPGJyPgomZ3Q7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICMgaW5zdGFsbCB4ODZf NjQgY3Jvc3MgY29tcGlsaW5nIHRvb2wgZm9yIGNsYW5nIGJ1aWxkPGJyPgomZ3Q7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICMgYXB0LWdldCBpbnN0YWxs IGJpbnV0aWxzLXg4Ni02NC1saW51eC1nbnU8YnI+CiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgIyA8YSBocmVmPSJodHRwczovL2dpdC5rZXJuZWwu b3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC90b3J2YWxkcy9saW51eC5naXQvY29tbWl0Lz9p ZD1mMWUxZWE1MTY3MjFkMWVhMGIyMTMyN2ZmOWU2Y2IyYzJiYjg2ZTI4Ij4KaHR0cHM6Ly9naXQu a2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvdG9ydmFsZHMvbGludXguZ2l0L2Nv bW1pdC8/aWQ9ZjFlMWVhNTE2NzIxZDFlYTBiMjEzMjdmZjllNmNiMmMyYmI4NmUyODwvYT48YnI+ CiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgZ2l0 IHJlbW90ZSBhZGQgbGludXMgPGEgaHJlZj0iaHR0cHM6Ly9naXQua2VybmVsLm9yZy9wdWIvc2Nt L2xpbnV4L2tlcm5lbC9naXQvdG9ydmFsZHMvbGludXguZ2l0Ij4KaHR0cHM6Ly9naXQua2VybmVs Lm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvdG9ydmFsZHMvbGludXguZ2l0PC9hPjxicj4K Jmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBnaXQg ZmV0Y2ggLS1uby10YWdzIGxpbnVzIG1hc3Rlcjxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBnaXQgY2hlY2tvdXQgZjFlMWVhNTE2NzIxZDFl YTBiMjEzMjdmZjllNmNiMmMyYmI4NmUyODxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAjIHNhdmUgdGhlIGF0dGFjaGVkIC5jb25maWcgdG8g bGludXggYnVpbGQgdHJlZTxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyBDT01QSUxFUl9JTlNUQUxMX1BBVEg9JEhPTUUvMGRheSBDT01QSUxF Uj1jbGFuZyBtYWtlLmNyb3NzIEFSQ0g9eDg2XzY0IDxicj4KJmd0OyA8YnI+CiZndDsgSWYgeW91 IGZpeCB0aGUgaXNzdWUsIGtpbmRseSBhZGQgZm9sbG93aW5nIHRhZyBhcyBhcHByb3ByaWF0ZTxi cj4KJmd0OyBSZXBvcnRlZC1ieToga2VybmVsIHRlc3Qgcm9ib3QgJmx0O2xrcEBpbnRlbC5jb20m Z3Q7PGJyPgomZ3Q7IDxicj4KJmd0OyBBbGwgd2FybmluZ3MgKG5ldyBvbmVzIHByZWZpeGVkIGJ5 ICZndDsmZ3Q7KTo8YnI+CiZndDsgPGJyPgomZ3Q7Jmd0OyZndDsgZHJpdmVycy9wbGF0Zm9ybS94 ODYvZGVsbC9kZWxsLXNtYmlvcy1zbW0uYzoyNzozNTogd2FybmluZzogdW51c2VkIHZhcmlhYmxl ICdkZWxsX2RldmljZV90YWJsZScgWy1XdW51c2VkLWNvbnN0LXZhcmlhYmxlXTxicj4KJmd0OyZu YnNwOyZuYnNwOyZuYnNwOyBzdGF0aWMgY29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQgZGVsbF9k ZXZpY2VfdGFibGVbXSBfX2luaXRjb25zdCA9IHs8YnI+CiZndDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgXjxicj4KJmd0OyZuYnNwOyZuYnNwOyZu YnNwOyAxIHdhcm5pbmcgZ2VuZXJhdGVkLjxicj4KJmd0OyA8YnI+CiZndDsgPGJyPgomZ3Q7IHZp bSArL2RlbGxfZGV2aWNlX3RhYmxlICsyNyBkcml2ZXJzL3BsYXRmb3JtL3g4Ni9kZWxsL2RlbGwt c21iaW9zLXNtbS5jPGJyPgomZ3Q7IDxicj4KJmd0OyA1NDliNDkzMGYwNTc2NSBkcml2ZXJzL3Bs YXRmb3JtL3g4Ni9kZWxsLXNtYmlvcy1zbW0uYyBNYXJpbyBMaW1vbmNpZWxsbyAyMDE3LTExLTAx Jm5ic3A7IDI2Jm5ic3A7Cjxicj4KJmd0OyA1NDliNDkzMGYwNTc2NSBkcml2ZXJzL3BsYXRmb3Jt L3g4Ni9kZWxsLXNtYmlvcy1zbW0uYyBNYXJpbyBMaW1vbmNpZWxsbyAyMDE3LTExLTAxIEAyNyZu YnNwOyBzdGF0aWMgY29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQgZGVsbF9kZXZpY2VfdGFibGVb XSBfX2luaXRjb25zdCA9IHs8YnI+CiZndDsgNTQ5YjQ5MzBmMDU3NjUgZHJpdmVycy9wbGF0Zm9y bS94ODYvZGVsbC1zbWJpb3Mtc21tLmMgTWFyaW8gTGltb25jaWVsbG8gMjAxNy0xMS0wMSZuYnNw OyAyOCZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB7PGJy PgomZ3Q7IDU0OWI0OTMwZjA1NzY1IGRyaXZlcnMvcGxhdGZvcm0veDg2L2RlbGwtc21iaW9zLXNt bS5jIE1hcmlvIExpbW9uY2llbGxvIDIwMTctMTEtMDEmbmJzcDsgMjkmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgLmlkZW50ID0gJnF1b3Q7RGVsbCBsYXB0b3AmcXVvdDss PGJyPgomZ3Q7IDU0OWI0OTMwZjA1NzY1IGRyaXZlcnMvcGxhdGZvcm0veDg2L2RlbGwtc21iaW9z LXNtbS5jIE1hcmlvIExpbW9uY2llbGxvIDIwMTctMTEtMDEmbmJzcDsgMzAmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgLm1hdGNoZXMgPSB7PGJyPgomZ3Q7IDU0OWI0OTMw ZjA1NzY1IGRyaXZlcnMvcGxhdGZvcm0veDg2L2RlbGwtc21iaW9zLXNtbS5jIE1hcmlvIExpbW9u Y2llbGxvIDIwMTctMTEtMDEmbmJzcDsgMzEmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsg RE1JX01BVENIKERNSV9TWVNfVkVORE9SLCAmcXVvdDtEZWxsIEluYy4mcXVvdDspLDxicj4KJmd0 OyA1NDliNDkzMGYwNTc2NSBkcml2ZXJzL3BsYXRmb3JtL3g4Ni9kZWxsLXNtYmlvcy1zbW0uYyBN YXJpbyBMaW1vbmNpZWxsbyAyMDE3LTExLTAxJm5ic3A7IDMyJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7IERNSV9NQVRDSChETUlfQ0hBU1NJU19UWVBFLCAmcXVvdDs4JnF1b3Q7KSw8YnI+ CiZndDsgNTQ5YjQ5MzBmMDU3NjUgZHJpdmVycy9wbGF0Zm9ybS94ODYvZGVsbC1zbWJpb3Mtc21t LmMgTWFyaW8gTGltb25jaWVsbG8gMjAxNy0xMS0wMSZuYnNwOyAzMyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB9LDxicj4KJmd0OyA1NDliNDkzMGYwNTc2NSBkcml2ZXJz L3BsYXRmb3JtL3g4Ni9kZWxsLXNtYmlvcy1zbW0uYyBNYXJpbyBMaW1vbmNpZWxsbyAyMDE3LTEx LTAxJm5ic3A7IDM0Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7IH0sPGJyPgomZ3Q7IDU0OWI0OTMwZjA1NzY1IGRyaXZlcnMvcGxhdGZvcm0veDg2L2RlbGwt c21iaW9zLXNtbS5jIE1hcmlvIExpbW9uY2llbGxvIDIwMTctMTEtMDEmbmJzcDsgMzUmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgezxicj4KJmd0OyA1NDli NDkzMGYwNTc2NSBkcml2ZXJzL3BsYXRmb3JtL3g4Ni9kZWxsLXNtYmlvcy1zbW0uYyBNYXJpbyBM aW1vbmNpZWxsbyAyMDE3LTExLTAxJm5ic3A7IDM2Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7IC5tYXRjaGVzID0gezxicj4KJmd0OyA1NDliNDkzMGYwNTc2NSBkcml2ZXJz L3BsYXRmb3JtL3g4Ni9kZWxsLXNtYmlvcy1zbW0uYyBNYXJpbyBMaW1vbmNpZWxsbyAyMDE3LTEx LTAxJm5ic3A7IDM3Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IERNSV9NQVRDSChETUlf U1lTX1ZFTkRPUiwgJnF1b3Q7RGVsbCBJbmMuJnF1b3Q7KSw8YnI+CiZndDsgNTQ5YjQ5MzBmMDU3 NjUgZHJpdmVycy9wbGF0Zm9ybS94ODYvZGVsbC1zbWJpb3Mtc21tLmMgTWFyaW8gTGltb25jaWVs bG8gMjAxNy0xMS0wMSZuYnNwOyAzOCZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBETUlf TUFUQ0goRE1JX0NIQVNTSVNfVFlQRSwgJnF1b3Q7OSZxdW90OyksIC8qTGFwdG9wKi88YnI+CiZn dDsgNTQ5YjQ5MzBmMDU3NjUgZHJpdmVycy9wbGF0Zm9ybS94ODYvZGVsbC1zbWJpb3Mtc21tLmMg TWFyaW8gTGltb25jaWVsbG8gMjAxNy0xMS0wMSZuYnNwOyAzOSZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyB9LDxicj4KJmd0OyA1NDliNDkzMGYwNTc2NSBkcml2ZXJzL3Bs YXRmb3JtL3g4Ni9kZWxsLXNtYmlvcy1zbW0uYyBNYXJpbyBMaW1vbmNpZWxsbyAyMDE3LTExLTAx Jm5ic3A7IDQwJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 IH0sPGJyPgomZ3Q7IDU0OWI0OTMwZjA1NzY1IGRyaXZlcnMvcGxhdGZvcm0veDg2L2RlbGwtc21i aW9zLXNtbS5jIE1hcmlvIExpbW9uY2llbGxvIDIwMTctMTEtMDEmbmJzcDsgNDEmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgezxicj4KJmd0OyA1NDliNDkz MGYwNTc2NSBkcml2ZXJzL3BsYXRmb3JtL3g4Ni9kZWxsLXNtYmlvcy1zbW0uYyBNYXJpbyBMaW1v bmNpZWxsbyAyMDE3LTExLTAxJm5ic3A7IDQyJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7IC5tYXRjaGVzID0gezxicj4KJmd0OyA1NDliNDkzMGYwNTc2NSBkcml2ZXJzL3Bs YXRmb3JtL3g4Ni9kZWxsLXNtYmlvcy1zbW0uYyBNYXJpbyBMaW1vbmNpZWxsbyAyMDE3LTExLTAx Jm5ic3A7IDQzJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IERNSV9NQVRDSChETUlfU1lT X1ZFTkRPUiwgJnF1b3Q7RGVsbCBJbmMuJnF1b3Q7KSw8YnI+CiZndDsgNTQ5YjQ5MzBmMDU3NjUg ZHJpdmVycy9wbGF0Zm9ybS94ODYvZGVsbC1zbWJpb3Mtc21tLmMgTWFyaW8gTGltb25jaWVsbG8g MjAxNy0xMS0wMSZuYnNwOyA0NCZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBETUlfTUFU Q0goRE1JX0NIQVNTSVNfVFlQRSwgJnF1b3Q7MTAmcXVvdDspLCAvKk5vdGVib29rKi88YnI+CiZn dDsgNTQ5YjQ5MzBmMDU3NjUgZHJpdmVycy9wbGF0Zm9ybS94ODYvZGVsbC1zbWJpb3Mtc21tLmMg TWFyaW8gTGltb25jaWVsbG8gMjAxNy0xMS0wMSZuYnNwOyA0NSZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyB9LDxicj4KJmd0OyA1NDliNDkzMGYwNTc2NSBkcml2ZXJzL3Bs YXRmb3JtL3g4Ni9kZWxsLXNtYmlvcy1zbW0uYyBNYXJpbyBMaW1vbmNpZWxsbyAyMDE3LTExLTAx Jm5ic3A7IDQ2Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 IH0sPGJyPgomZ3Q7IDU0OWI0OTMwZjA1NzY1IGRyaXZlcnMvcGxhdGZvcm0veDg2L2RlbGwtc21i aW9zLXNtbS5jIE1hcmlvIExpbW9uY2llbGxvIDIwMTctMTEtMDEmbmJzcDsgNDcmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgezxicj4KJmd0OyA1NDliNDkz MGYwNTc2NSBkcml2ZXJzL3BsYXRmb3JtL3g4Ni9kZWxsLXNtYmlvcy1zbW0uYyBNYXJpbyBMaW1v bmNpZWxsbyAyMDE3LTExLTAxJm5ic3A7IDQ4Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7IC5pZGVudCA9ICZxdW90O0RlbGwgQ29tcHV0ZXIgQ29ycG9yYXRpb24mcXVvdDss PGJyPgomZ3Q7IDU0OWI0OTMwZjA1NzY1IGRyaXZlcnMvcGxhdGZvcm0veDg2L2RlbGwtc21iaW9z LXNtbS5jIE1hcmlvIExpbW9uY2llbGxvIDIwMTctMTEtMDEmbmJzcDsgNDkmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgLm1hdGNoZXMgPSB7PGJyPgomZ3Q7IDU0OWI0OTMw ZjA1NzY1IGRyaXZlcnMvcGxhdGZvcm0veDg2L2RlbGwtc21iaW9zLXNtbS5jIE1hcmlvIExpbW9u Y2llbGxvIDIwMTctMTEtMDEmbmJzcDsgNTAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsg RE1JX01BVENIKERNSV9TWVNfVkVORE9SLCAmcXVvdDtEZWxsIENvbXB1dGVyIENvcnBvcmF0aW9u JnF1b3Q7KSw8YnI+CiZndDsgNTQ5YjQ5MzBmMDU3NjUgZHJpdmVycy9wbGF0Zm9ybS94ODYvZGVs bC1zbWJpb3Mtc21tLmMgTWFyaW8gTGltb25jaWVsbG8gMjAxNy0xMS0wMSZuYnNwOyA1MSZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBETUlfTUFUQ0goRE1JX0NIQVNTSVNfVFlQRSwgJnF1 b3Q7OCZxdW90OyksPGJyPgomZ3Q7IDU0OWI0OTMwZjA1NzY1IGRyaXZlcnMvcGxhdGZvcm0veDg2 L2RlbGwtc21iaW9zLXNtbS5jIE1hcmlvIExpbW9uY2llbGxvIDIwMTctMTEtMDEmbmJzcDsgNTIm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgfSw8YnI+CiZndDsgNTQ5YjQ5 MzBmMDU3NjUgZHJpdmVycy9wbGF0Zm9ybS94ODYvZGVsbC1zbWJpb3Mtc21tLmMgTWFyaW8gTGlt b25jaWVsbG8gMjAxNy0xMS0wMSZuYnNwOyA1MyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyB9LDxicj4KJmd0OyA1NDliNDkzMGYwNTc2NSBkcml2ZXJzL3Bs YXRmb3JtL3g4Ni9kZWxsLXNtYmlvcy1zbW0uYyBNYXJpbyBMaW1vbmNpZWxsbyAyMDE3LTExLTAx Jm5ic3A7IDU0Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 IHsgfTxicj4KJmd0OyA1NDliNDkzMGYwNTc2NSBkcml2ZXJzL3BsYXRmb3JtL3g4Ni9kZWxsLXNt Ymlvcy1zbW0uYyBNYXJpbyBMaW1vbmNpZWxsbyAyMDE3LTExLTAxJm5ic3A7IDU1Jm5ic3A7IH07 PGJyPgomZ3Q7IDU0OWI0OTMwZjA1NzY1IGRyaXZlcnMvcGxhdGZvcm0veDg2L2RlbGwtc21iaW9z LXNtbS5jIE1hcmlvIExpbW9uY2llbGxvIDIwMTctMTEtMDEmbmJzcDsgNTYmbmJzcDsgTU9EVUxF X0RFVklDRV9UQUJMRShkbWksIGRlbGxfZGV2aWNlX3RhYmxlKTs8YnI+Cjxicj4KTm90ZSB0aGUg TU9EVUxFX0RFVklDRV9UQUJMRSgpIGhlcmU7IGFuZCBJIGNoZWNrZWQgYW5kIENPTkZJR19ETUk9 eSBpbiB0aGUgY29uZmlnIHVzZWQ8YnI+CmhlcmUgYXMgZXhwZWN0ZWQsIHNvIHRoaXMgc2VlbXMg bGlrZSBhIGZhbHNlLXBvc2l0aXZlIHdhcm5pbmdzLCB3aXRoIHRoYXQgc2FpZCBJIHdhczxicj4K c3RpbGwgYSBiaXQgc3VycHJpc2VkIGFib3V0IHRoZSBwcmVzZW5jZSBvZiB0aGlzIHRhYmxlIHNp bmNlIGRlbGwtc21iaW9zIGlzIGRlcGVuZGVkPGJyPgpvbiBieSBkZWxsLWxhcHRvcCBhbmQgdGhh dCBoYXMgdGhpcyBzYW1lIHRhYmxlICsgc2FtZSBleHRyYSBlbnRyaWVzIGZvciBjaGFzc2lzLXR5 cGU8YnI+CjMwLCAzMSBhbmQgMzIuPGJyPgo8YnI+ClNpbmNlIGRlbGwtbGFwdG9wIHdpbGwgYWxy ZWFkeSBhdXRvLWxvYWQgYmFzZWQgb24gdGhlIERNSSB0YWJsZSBpbiB0aGVyZSAod2hpY2ggYWxz byBpczxicj4KbW9yZSBjb21wbGV0ZSkgYW5kIHNpbmNlIGRlbGwtbGFwdG9wIHdpbGwgdGhlbiBi cmluZyBpbiB0aGUgZGVsbC1zbWJpb3MgbW9kdWxlLCB0aGUgb25seTxicj4Kc2NlbmFyaW8gSSBj YW4gdGhpbmsgb2Ygd2hlcmUgdGhpcyBETUkgdGFibGUgaW5zaWRlIGRlbGwtc21iaW9zLXNtbS5j IGlzIHVzZWZ1bCBpcyBpZjxicj4KdXNlcnMgaGF2ZSB0aGUgZGVsbC1sYXB0b3AgbW9kdWxlIGRp c2FibGVkIGFuZCB0aGV5IHdhbnQgdG8gdXNlIHRoZSBzeXNmcyBpbnRlcmZhY2U8YnI+Cm9mZmVy ZWQgYnkgZGVsbC1zbWJpb3Mtc21tLmMuIEJ1dCB0aGF0IHNlZW1zIHN1Y2ggYSBjb3JuZXIgY2Fz ZSB0aGF0IEkgYmVsaWV2ZSBpdDxicj4Kd291bGQgYmUgZmFpciB0byB0ZWxsIHVzZXJzIHRvIGRv IGEgbW9kcHJvYmUgdGhlbXNlbHZlcyBpbiB0aGlzIGNhc2UgPzxicj4KPGJyPgpUaGlzIHdvdWxk IGFsbG93IHJlbW92aW5nIHRoZSBkdXBwbGljYXRlIHRhYmxlIGZyb20gZGVsbC1zbWJpb3Mtc21t LmMsIHdoaWNoIHdvdWxkIGJlPGJyPgphIGdvb2QgdGhpbmcsIGJlY2F1c2UgYXMgdGhlIGRpZmZl cmVuY2VzIGJldHdlZW4gdGhlIDIgY29waWVzIHdoaWNoIGhhdmUgYWNjdW11bGF0ZWQ8YnI+Cm92 ZXIgdGltZSBzaG93LCBoYXZpbmcgdGhlIHNhbWUgdGFibGUgaW4gMiBwbGFjZXMgc2VlbXMgbGlr ZSBhIGJhZCBpZGVhLjxicj4KPGJyPgpNYXJpbywgZXZlbiB0aG91Z2ggeW91IGFyZSBubyBsb25n ZXIgYXQgRGVsbCwgSSB3b3VsZCBzdGlsbCB2ZXJ5IG11Y2ggYXBwcmVjaWF0ZSB5b3VyPGJyPgp0 aG91Z2h0cyBvbiB0aGlzLjxicj4KPGJyPgpSZWdhcmRzLDxicj4KPGJyPgpIYW5zPGJyPgo8YnI+ Cjxicj4KPGJyPgomZ3Q7IDU0OWI0OTMwZjA1NzY1IGRyaXZlcnMvcGxhdGZvcm0veDg2L2RlbGwt c21iaW9zLXNtbS5jIE1hcmlvIExpbW9uY2llbGxvIDIwMTctMTEtMDEmbmJzcDsgNTcmbmJzcDsK PGJyPgomZ3Q7IDxicj4KJmd0OyA6Ojo6OjogVGhlIGNvZGUgYXQgbGluZSAyNyB3YXMgZmlyc3Qg aW50cm9kdWNlZCBieSBjb21taXQ8YnI+CiZndDsgOjo6Ojo6IDU0OWI0OTMwZjA1NzY1OGRjNTBk ODAxMGU2NjIxOTIzMzExOWE0ZDggcGxhdGZvcm0veDg2OiBkZWxsLXNtYmlvczogSW50cm9kdWNl IGRpc3BhdGNoZXIgZm9yIFNNTSBjYWxsczxicj4KJmd0OyA8YnI+CiZndDsgOjo6Ojo6IFRPOiBN YXJpbyBMaW1vbmNpZWxsbyAmbHQ7bWFyaW8ubGltb25jaWVsbG9AZGVsbC5jb20mZ3Q7PGJyPgom Z3Q7IDo6Ojo6OiBDQzogRGFycmVuIEhhcnQgKFZNd2FyZSkgJmx0O2R2aGFydEBpbmZyYWRlYWQu b3JnJmd0Ozxicj4KJmd0OyA8YnI+CiZndDsgLS0tPGJyPgomZ3Q7IDAtREFZIENJIEtlcm5lbCBU ZXN0IFNlcnZpY2UsIEludGVsIENvcnBvcmF0aW9uPGJyPgomZ3Q7IDxhIGhyZWY9Imh0dHBzOi8v bGlzdHMuMDEub3JnL2h5cGVya2l0dHkvbGlzdC9rYnVpbGQtYWxsQGxpc3RzLjAxLm9yZyI+aHR0 cHM6Ly9saXN0cy4wMS5vcmcvaHlwZXJraXR0eS9saXN0L2tidWlsZC1hbGxAbGlzdHMuMDEub3Jn PC9hPjxicj4KJmd0OyA8YnI+Cjxicj4KPC9kaXY+Cjwvc3Bhbj48L2ZvbnQ+PC9kaXY+CjwvYm9k eT4KPC9odG1sPgo= --===============7977190062049002466==--