From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============0213159298928982381==" MIME-Version: 1.0 From: Verkamp, Daniel Subject: Re: [SPDK] Building spdk on CentOS6 Date: Wed, 09 May 2018 16:43:07 +0000 Message-ID: In-Reply-To: AM3PR04MB370CBA55BA085B42CE4DA7689990@AM3PR04MB370.eurprd04.prod.outlook.com List-ID: To: spdk@lists.01.org --===============0213159298928982381== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable I agree with Paul's review; it looks like it shouldn't be a big problem to = carry a patch for this in our DPDK submodule, at least while CentOS 6 is st= ill officially supported. (I posted a few review comments on the patch, but= the general approach looks fine.) The Intel build pool had a CentOS 6 test machine in the pool until recently= , and we should be able to resurrect it to provide test coverage again. Thanks, -- Daniel From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of Shahar Salzman Sent: Wednesday, May 9, 2018 6:12 AM To: Storage Performance Development Kit Subject: Re: [SPDK] Building spdk on CentOS6 Hi Paul, Thanks for the review. We are now working on CentOS7 support, but it is not complete yet, so we wi= ll be on CentOS6 about 6-12 months. Shahar ________________________________ From: SPDK = > on behalf of Luse, Paul E > Sent: Wednesday, May 9, 2018 3:51:23 PM To: Storage Performance Development Kit Subject: Re: [SPDK] Building spdk on CentOS6 Thanks for doing that! I put my 2 cents on the review, one more data point = for the maintainers might help - help long do you believe your team will be= on CentOS6? Don't need a specific date but are we talking months, years, i= ndefinitely? I think the other implication of accepting this in the community would be t= o spin up a CentOS6 VM for some basic testing for as long as we hold that p= atch in our DPDK fork which is not a huge thing but want to make sure that'= s clear as well. If nothing else we'll know if something else breaks it soo= ner than later and will need to decide, again, at that time if we pull it o= r if it's a high enough priority for anyone to dig in and find a potential = solution like you did here. Assuming, of course, that this one is accepted= :) Thanks, Paul From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of Shahar Salzman Sent: Wednesday, May 9, 2018 2:01 AM To: spdk(a)lists.01.org Subject: Re: [SPDK] Building spdk on CentOS6 Hi Ben, Pushed the fix to gerrithub - https://review.gerrithub.io/#/c/spdk/dpdk/+/4= 10559/ We are currently using a "frozen" dpdk tree based version 16.07, but I am p= ushing to using the spdk fork and performing regular updates so if things b= reak, I will attempt to fix them, and post on the list. The above fixes a blunt gcc API issue, but there are more subtle inner modu= le issues which I have not investigated, simply removed the modules all tog= ether as they are not needed by spdk. I can set up a howto for users who may need CentOS6 support or we can modif= y the config (as these modules are not really needed for spdk). For the sak= e of clarity here are the modules "configed out" (as I mentioned they are n= ot used by spdk): +CONFIG_RTE_LIBRTE_PMD_BOND=3Dn +CONFIG_RTE_LIBRTE_CRYPTODEV=3Dn +CONFIG_RTE_LIBRTE_SECURITY=3Dn +CONFIG_RTE_LIBRTE_PMD_SW_EVENTDEV=3Dn +CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF=3Dn +CONFIG_RTE_LIBRTE_LPM=3Dn +CONFIG_RTE_LIBRTE_FLOW_CLASSIFY=3Dn +CONFIG_RTE_LIBRTE_TABLE=3Dn +CONFIG_RTE_LIBRTE_PIPELINE=3Dn +CONFIG_RTE_TEST_PMD=3Dn +CONFIG_RTE_LIBRTE_PMD_TAP=3Dn +CONFIG_RTE_LIBRTE_AVP_PMD=3Dn Regarding the -fn-strict-aliasing issue, I'll see if I can do the same tric= k I did for the gcc alias in the Makefile, and push the fix for review. Shahar ________________________________ From: SPDK = > on behalf of Walker, Benjamin > Sent: Tuesday, May 8, 2018 7:49:44 PM To: spdk(a)lists.01.org Subject: Re: [SPDK] Building spdk on CentOS6 On Tue, 2018-05-08 at 14:34 +0000, Shahar Salzman wrote: > Got it. > > I was tracking the dpdk project, and focused on the branch that Daniel to= ld me > to work on. > So would the correct process be to push the patch to the spdk/dpdk gerrit= hub > and discuss the commit, or the other way around? Yes - go ahead and push to spdk/dpdk on GerritHub so we can all review it. = The SPDK project has never written out a policy on which versions of DPDK are supported for any given SPDK release. The code is always tested using the l= atest released DPDK, and then attempts to support older versions of DPDK are done= in an ad hoc manner. Similarly, the project never explicitly states which oper= ating systems are supported. Instead, we indicate which operating systems the cod= e is regularly tested on (Fedora N and N-1, Ubuntu latest, Ubuntu LTS, CentOS 7, FreeBSD 11). I see that CentOS 6 is no longer receiving full updates and is in maintenan= ce only mode. It will stop receiving even maintenance updates in 2020. I think= that is indicative of the level of support SPDK should provide here. Given the above, if this patch can be applied to the DPDK fork and doesn't = have any additional impact, I'm not opposed to applying it. That wouldn't, in my mind, mean that SPDK is committed to supporting CentOS 6 indefinitely. But certainly that support could continue while it is relatively easy and convenient. > > From: SPDK > on behalf of Luse, Paul E > intel.com> > Sent: Tuesday, May 8, 2018 5:14:10 PM > To: Storage Performance Development Kit > Subject: Re: [SPDK] Building spdk on CentOS6 > > Sure, I understand that. SPDK maintains a fork of dpdk in github at http= s://g > ithub.com/spdk/dpdk for the purpose of temporarily putting things in that= we > need that can't make it upstream yet for whatever reason - this is the > submodule in the SPDK repo. I'm not saying that it makes sense for your = patch > to land there permanently but it does make sense to talk about it. > > No problem on not being on the call, we'll get some input from the mainta= iners > and others I'm sure... > > Thx > Paul > > From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of Shahar Salzm= an > Sent: Tuesday, May 8, 2018 7:04 AM > To: Storage Performance Development Kit > > Subject: Re: [SPDK] Building spdk on CentOS6 > > Hey Paul, > > The problem is that the patch is in dpdk and not in spdk, and this is the > reason I offered to support it. > The patch (bellow) is only a few lines long modifying the deprecated attr= ibute > definition, a modification to the config, and an extra compilation flag. > All of the above are required in order to build dpdk 18.01 on CentOS6, th= ere > are no problems building spdk on CentOS6. > > I understood that you are already applying minor patches to dpdk, so ques= tion > is, whether this patch can be added? > > Unfortunately due to some personal issues, I am unable to participate in > today's meeting. > > Thanks, > Shahar > From: SPDK > on behalf of Luse, Paul E > intel.com> > Sent: Tuesday, May 8, 2018 4:25:29 PM > To: Storage Performance Development Kit > Subject: Re: [SPDK] Building spdk on CentOS6 > > Hi Shahar, > > Couple of quick things: > > * thanks for putting all this time and effort into trying to make this wo= rk! > * in the community model, patches aren't accepted based on one individual= 's > ability/desire to support them so appreciate the offer but in general any > patch that is accepted becomes the responsibly of the community (mostly t= he > maintainers) to support it long term. Otherwise we'd have what I like to= call > "the flea market model" where there's a bunch of separate individuals > supporting their own things with very little cohesiveness across everythi= ng J > > So, wrt next steps, if the patch isn't a tremendous amount of effort I wo= uld > suggest you go ahead and submit it. That's the best way to get everyone o= n the > same page wrt exactly what we're talking about. If it is some significant > effort then, as Pawel states, you can call into a community meeting (see = email > I sent out last night) or you can explain more details on this list. > > Thanks again!! > Paul > > From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of Wodkowski, P= awelX > Sent: Tuesday, May 8, 2018 5:57 AM > To: Storage Performance Development Kit > > Subject: Re: [SPDK] Building spdk on CentOS6 > > I think someone will answer you on this mailing list but there is communi= ty > meeting today too. You can raise this if you wish. > > Pawel > > From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of Shahar Salzm= an > Sent: Tuesday, May 8, 2018 2:23 PM > To: Storage Performance Development Kit > > Subject: Re: [SPDK] Building spdk on CentOS6 > > Hi, > > I attempted to push the gcc support patch to dpdk, and got rejected since= they > do not wish to support CentOS6. > Would it be possible to manually add the patch to the supported dpdk vers= ion > (currently 18.01). > I would be happy to support CentOS6 issues. > > Thanks, > Shahar > > From: Shahar Salzman > Sent: Tuesday, April 24, 2018 3:40:51 PM > To: Storage Performance Development Kit > Cc: Ilan Steinberg; Ido Benda; Yael Shavit > Subject: Re: Building spdk on CentOS6 > > OK, got everything to work. > > For DPDK, I had to to do the following: > add a patch to make the new __rte_experimental attribute to work > remove a bunch of modules via config which had some gnarly compilation er= rors, > and are not needed for spdk > use -fno-strict-aliasing in the EXTRA_CFLAGS to avoid a ton of strict ali= asing > errors. > > I tried spdk 18.01, and ran into some issues with the shared library buil= d. As > I saw that Daniel had already dealt with them, I tried cherry picking, but > eventually used the master branch. > I got these type of warnings: > > /usr/bin/ld: warning: librte_mbuf.so.3.1, needed by > /khome/shahar.salzman/Kaminario/git/dpdk/x86_64-native-linuxapp- > gcc/lib/librte_bus_pci.so, not found (try using -rpath or -rpath-link) > /usr/bin/ld: warning: librte_ethdev.so.8.1, needed by > /khome/shahar.salzman/Kaminario/git/dpdk/x86_64-native-linuxapp- > gcc/lib/librte_bus_pci.so, not found (try using -rpath or -rpath-link) > > I added the following patch bellow to make them go away. > > I'll approach the dpdk community on the mailing list in order to get the > __rte_experimental stuff to work. > My final configuration is: > CenrOS6.4 > gcc 4.4.7-17 > dpdk v18.02 > spdk master > > What are the next steps? > > Shahar > > P.S. Here is the patch to remove the warnings above. > commit d4ef744de1cc4928972b7042d1c90aff12db7867 > Author: shahar salzman > > Date: Tue Apr 24 14:31:52 2018 +0300 > > lib/env_dpdk: add required libraries > > diff --git a/lib/env_dpdk/env.mk b/lib/env_dpdk/env.mk > index 450043c..b46bfed 100644 > --- a/lib/env_dpdk/env.mk > +++ b/lib/env_dpdk/env.mk > @@ -68,6 +68,18 @@ ifneq ($(wildcard $(DPDK_ABS_DIR)/lib/librte_malloc.*)= ,) > DPDK_LIB_LIST +=3D rte_malloc > endif > > +ifneq (, $(wildcard $(DPDK_ABS_DIR)/lib/librte_mbuf.*)) > +DPDK_LIB_LIST +=3D rte_mbuf > +endif > + > +ifneq (, $(wildcard $(DPDK_ABS_DIR)/lib/librte_net.*)) > +DPDK_LIB_LIST +=3D rte_net > +endif > + > +ifneq (, $(wildcard $(DPDK_ABS_DIR)/lib/librte_ethdev.*)) > +DPDK_LIB_LIST +=3D rte_ethdev > +endif > + > # librte_pci and librte_bus_pci were added in DPDK 17.11. Link these > libraries conditionally > # based on their existence to maintain backward compatibility. > ifneq (, $(wildcard $(DPDK_ABS_DIR)/lib/librte_pci.*)) > > > > From: SPDK > on behalf of Shahar Salzman zman(a)kaminario.com> > Sent: Tuesday, April 24, 2018 9:57 AM > To: Storage Performance Development Kit > Subject: Re: [SPDK] Building spdk on CentOS6 > > Great, and thanks! > > I have been running into issues compiling dpdk 17.11 on CentOS6 (there se= ems > to be a gcc issue that does not exist in other versions), I'll focus my > efforts on dpdk 18.02. > From: SPDK > on behalf of Verkamp, Daniel rkamp(a)intel.com> > Sent: Monday, April 23, 2018 9:40:36 PM > To: Storage Performance Development Kit > Subject: Re: [SPDK] Building spdk on CentOS6 > > Hi Shahar, > > I've pushed a patch for the SPDK master branch that should allow it to co= mpile > with DPDK 16.07: https://review.gerrithub.io/#/c/spdk/spdk/+/408743/ > > Gerrit Code Review > > review.gerrithub.io > > Keep in touch. Copyright (c) 2017 | GerritForge Ltd. info(a)gerritforge.c= om > www.gerritforge.com > > > However, DPDK 16.07 is no longer supported upstream; I highly recommend t= hat > you update to a newer version. SPDK is currently tested with DPDK 18.02. > > The VFIO issue you mention has also been fixed on SPDK master, and it wil= l be > part of the SPDK v18.04 release. > > Thanks, > -- Daniel > > From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of Shahar Salzm= an > Sent: Sunday, April 22, 2018 6:41 AM > To: Storage Performance Development Kit > > Subject: [SPDK] Building spdk on CentOS6 > > Hi, > > Finally got to looking at support of spdk build on CentOS6, things look g= ood, > except for one issue. > spdk is latest 18.01.x version, dpdk is 16.07 (+3 dpdk patches to allow > compilation) and some minor patches (mainly some memory configuration stu= ff), > kernel is a patched 4.9.6. > > build succeeded except for the usage of the dpdk function pci_vfio_is_ena= bled. > I had to apply the patch bellow, removing the usage of this function and = then > compilation completed without any issues. > > It seems that I am missing some sort of dpdk configuration as I see that = the > function is built, but not packaged into the generated archive. > > I went back to square one and ran the instructions in http://www.spdk.io/= doc/g > etting_started.html, but I see no mention of dpdk there. Actually the > ./configure requires it. > > My next step is to use a more recent dpdk, but shouldn't this work with my > version? Am I missing some dpdk configuration? > BTW, as we are not using vhost, on our 17.07 version we simply use > CONFIG_VHOST=3Dn in order to skip this, but I would be happier if we used= a > better solution. > > Shahar > > P.S. Here is the patch to remove use of this function: > diff --git a/lib/env_dpdk/vtophys.c b/lib/env_dpdk/vtophys.c > index 92aa256..f38929f 100644 > --- a/lib/env_dpdk/vtophys.c > +++ b/lib/env_dpdk/vtophys.c > @@ -53,8 +53,10 @@ > #define SPDK_VFIO_ENABLED 1 > #include > > +#if 0 > /* Internal DPDK function forward declaration */ > int pci_vfio_is_enabled(void); > +#endif > > struct spdk_vfio_dma_map { > struct vfio_iommu_type1_dma_map map; > @@ -341,9 +343,11 @@ spdk_vtophys_iommu_init(void) > DIR *dir; > struct dirent *d; > > +#if 0 > if (!pci_vfio_is_enabled()) { > return; > } > +#endif > > dir =3D opendir("/proc/self/fd"); > if (!dir) { > > > _______________________________________________ > SPDK mailing list > SPDK(a)lists.01.org > https://lists.01.org/mailman/listinfo/spdk _______________________________________________ SPDK mailing list SPDK(a)lists.01.org https://lists.01.org/mailman/listinfo/spdk --===============0213159298928982381== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" PGh0bWwgeG1sbnM6dj0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTp2bWwiIHhtbG5zOm89InVy bjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOm9mZmljZSIgeG1sbnM6dz0idXJuOnNjaGVt YXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6d29yZCIgeG1sbnM6bT0iaHR0cDovL3NjaGVtYXMubWlj cm9zb2Z0LmNvbS9vZmZpY2UvMjAwNC8xMi9vbW1sIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv VFIvUkVDLWh0bWw0MCI+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNv bnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+CjxtZXRhIG5hbWU9IkdlbmVyYXRv ciIgY29udGVudD0iTWljcm9zb2Z0IFdvcmQgMTUgKGZpbHRlcmVkIG1lZGl1bSkiPgo8IS0tW2lm ICFtc29dPjxzdHlsZT52XDoqIHtiZWhhdmlvcjp1cmwoI2RlZmF1bHQjVk1MKTt9Cm9cOioge2Jl aGF2aW9yOnVybCgjZGVmYXVsdCNWTUwpO30Kd1w6KiB7YmVoYXZpb3I6dXJsKCNkZWZhdWx0I1ZN TCk7fQouc2hhcGUge2JlaGF2aW9yOnVybCgjZGVmYXVsdCNWTUwpO30KPC9zdHlsZT48IVtlbmRp Zl0tLT48c3R5bGU+PCEtLQovKiBGb250IERlZmluaXRpb25zICovCkBmb250LWZhY2UKCXtmb250 LWZhbWlseTpXaW5nZGluZ3M7CglwYW5vc2UtMTo1IDAgMCAwIDAgMCAwIDAgMCAwO30KQGZvbnQt ZmFjZQoJe2ZvbnQtZmFtaWx5OiJDYW1icmlhIE1hdGgiOwoJcGFub3NlLTE6MiA0IDUgMyA1IDQg NiAzIDIgNDt9CkBmb250LWZhY2UKCXtmb250LWZhbWlseTpDYWxpYnJpOwoJcGFub3NlLTE6MiAx NSA1IDIgMiAyIDQgMyAyIDQ7fQovKiBTdHlsZSBEZWZpbml0aW9ucyAqLwpwLk1zb05vcm1hbCwg bGkuTXNvTm9ybWFsLCBkaXYuTXNvTm9ybWFsCgl7bWFyZ2luOjBpbjsKCW1hcmdpbi1ib3R0b206 LjAwMDFwdDsKCWZvbnQtc2l6ZToxMi4wcHQ7Cglmb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFu IixzZXJpZjt9CmE6bGluaywgc3Bhbi5Nc29IeXBlcmxpbmsKCXttc28tc3R5bGUtcHJpb3JpdHk6 OTk7Cgljb2xvcjpibHVlOwoJdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9CmE6dmlzaXRlZCwg c3Bhbi5Nc29IeXBlcmxpbmtGb2xsb3dlZAoJe21zby1zdHlsZS1wcmlvcml0eTo5OTsKCWNvbG9y OnB1cnBsZTsKCXRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fQpwCgl7bXNvLXN0eWxlLXByaW9y aXR5Ojk5OwoJbWFyZ2luOjBpbjsKCW1hcmdpbi1ib3R0b206LjAwMDFwdDsKCWZvbnQtc2l6ZTox Mi4wcHQ7Cglmb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIixzZXJpZjt9CnAuTXNvTGlzdFBh cmFncmFwaCwgbGkuTXNvTGlzdFBhcmFncmFwaCwgZGl2Lk1zb0xpc3RQYXJhZ3JhcGgKCXttc28t c3R5bGUtcHJpb3JpdHk6MzQ7CgltYXJnaW4tdG9wOjBpbjsKCW1hcmdpbi1yaWdodDowaW47Cglt YXJnaW4tYm90dG9tOjBpbjsKCW1hcmdpbi1sZWZ0Oi41aW47CgltYXJnaW4tYm90dG9tOi4wMDAx cHQ7Cglmb250LXNpemU6MTIuMHB0OwoJZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiIsc2Vy aWY7fQpwLnhtc29ub3JtYWwsIGxpLnhtc29ub3JtYWwsIGRpdi54bXNvbm9ybWFsCgl7bXNvLXN0 eWxlLW5hbWU6eF9tc29ub3JtYWw7CgltYXJnaW46MGluOwoJbWFyZ2luLWJvdHRvbTouMDAwMXB0 OwoJZm9udC1zaXplOjEyLjBwdDsKCWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iLHNlcmlm O30KcC54bXNvY2hwZGVmYXVsdCwgbGkueG1zb2NocGRlZmF1bHQsIGRpdi54bXNvY2hwZGVmYXVs dAoJe21zby1zdHlsZS1uYW1lOnhfbXNvY2hwZGVmYXVsdDsKCW1hcmdpbjowaW47CgltYXJnaW4t Ym90dG9tOi4wMDAxcHQ7Cglmb250LXNpemU6MTAuMHB0OwoJZm9udC1mYW1pbHk6IlRpbWVzIE5l dyBSb21hbiIsc2VyaWY7fQpzcGFuLnhlbWFpbHN0eWxlMTgKCXttc28tc3R5bGUtbmFtZTp4X2Vt YWlsc3R5bGUxODsKCWZvbnQtZmFtaWx5OiJDYWxpYnJpIixzYW5zLXNlcmlmOwoJY29sb3I6IzFG NDk3RDt9CnNwYW4uRW1haWxTdHlsZTIxCgl7bXNvLXN0eWxlLXR5cGU6cGVyc29uYWwtcmVwbHk7 Cglmb250LWZhbWlseToiQ2FsaWJyaSIsc2Fucy1zZXJpZjsKCWNvbG9yOiMxRjQ5N0Q7fQouTXNv Q2hwRGVmYXVsdAoJe21zby1zdHlsZS10eXBlOmV4cG9ydC1vbmx5OwoJZm9udC1zaXplOjEwLjBw dDt9CkBwYWdlIFdvcmRTZWN0aW9uMQoJe3NpemU6OC41aW4gMTEuMGluOwoJbWFyZ2luOjEuMGlu IDEuMGluIDEuMGluIDEuMGluO30KZGl2LldvcmRTZWN0aW9uMQoJe3BhZ2U6V29yZFNlY3Rpb24x O30KLS0+PC9zdHlsZT48IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4KPG86c2hhcGVkZWZhdWx0cyB2 OmV4dD0iZWRpdCIgc3BpZG1heD0iMTAyNiIgLz4KPC94bWw+PCFbZW5kaWZdLS0+PCEtLVtpZiBn dGUgbXNvIDldPjx4bWw+CjxvOnNoYXBlbGF5b3V0IHY6ZXh0PSJlZGl0Ij4KPG86aWRtYXAgdjpl eHQ9ImVkaXQiIGRhdGE9IjEiIC8+CjwvbzpzaGFwZWxheW91dD48L3htbD48IVtlbmRpZl0tLT4K PC9oZWFkPgo8Ym9keSBsYW5nPSJFTi1VUyIgbGluaz0iYmx1ZSIgdmxpbms9InB1cnBsZSI+Cjxk aXYgY2xhc3M9IldvcmRTZWN0aW9uMSI+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxl PSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1z ZXJpZjtjb2xvcjojMUY0OTdEIj5JIGFncmVlIHdpdGggUGF1bCYjODIxNztzIHJldmlldzsgaXQg bG9va3MgbGlrZSBpdCBzaG91bGRuJiM4MjE3O3QgYmUgYSBiaWcgcHJvYmxlbSB0byBjYXJyeSBh IHBhdGNoIGZvciB0aGlzIGluIG91ciBEUERLIHN1Ym1vZHVsZSwgYXQgbGVhc3Qgd2hpbGUgQ2Vu dE9TIDYgaXMgc3RpbGwgb2ZmaWNpYWxseQogc3VwcG9ydGVkLiAoSSBwb3N0ZWQgYSBmZXcgcmV2 aWV3IGNvbW1lbnRzIG9uIHRoZSBwYXRjaCwgYnV0IHRoZSBnZW5lcmFsIGFwcHJvYWNoIGxvb2tz IGZpbmUuKTxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4g c3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90Oyxz YW5zLXNlcmlmO2NvbG9yOiMxRjQ5N0QiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4KPHAg Y2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1p bHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOiMxRjQ5N0QiPlRoZSBJbnRl bCBidWlsZCBwb29sIGhhZCBhIENlbnRPUyA2IHRlc3QgbWFjaGluZSBpbiB0aGUgcG9vbCB1bnRp bCByZWNlbnRseSwgYW5kIHdlIHNob3VsZCBiZSBhYmxlIHRvIHJlc3VycmVjdCBpdCB0byBwcm92 aWRlIHRlc3QgY292ZXJhZ2UgYWdhaW4uPG86cD48L286cD48L3NwYW4+PC9wPgo8cCBjbGFzcz0i TXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVv dDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6IzFGNDk3RCI+PG86cD4mbmJzcDs8L286 cD48L3NwYW4+PC9wPgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXpl OjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6 IzFGNDk3RCI+VGhhbmtzLDxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KPHAgY2xhc3M9Ik1zb05vcm1h bCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJy aSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOiMxRjQ5N0QiPi0tIERhbmllbDxvOnA+PC9vOnA+PC9z cGFuPjwvcD4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4w cHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOiMxRjQ5 N0QiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4KPGRpdiBzdHlsZT0iYm9yZGVyOm5vbmU7 Ym9yZGVyLWxlZnQ6c29saWQgYmx1ZSAxLjVwdDtwYWRkaW5nOjBpbiAwaW4gMGluIDQuMHB0Ij4K PGRpdj4KPGRpdiBzdHlsZT0iYm9yZGVyOm5vbmU7Ym9yZGVyLXRvcDpzb2xpZCAjRTFFMUUxIDEu MHB0O3BhZGRpbmc6My4wcHQgMGluIDBpbiAwaW4iPgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48YSBu YW1lPSJfX19fX3JlcGx5c2VwYXJhdG9yIj48L2E+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTox MS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmIj5Gcm9tOjwv c3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7 Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmIj4gU1BESyBbbWFpbHRvOnNwZGstYm91bmNlc0BsaXN0 cy4wMS5vcmddCjxiPk9uIEJlaGFsZiBPZiA8L2I+U2hhaGFyIFNhbHptYW48YnI+CjxiPlNlbnQ6 PC9iPiBXZWRuZXNkYXksIE1heSA5LCAyMDE4IDY6MTIgQU08YnI+CjxiPlRvOjwvYj4gU3RvcmFn ZSBQZXJmb3JtYW5jZSBEZXZlbG9wbWVudCBLaXQgJmx0O3NwZGtAbGlzdHMuMDEub3JnJmd0Ozxi cj4KPGI+U3ViamVjdDo8L2I+IFJlOiBbU1BES10gQnVpbGRpbmcgc3BkayBvbiBDZW50T1M2PG86 cD48L286cD48L3NwYW4+PC9wPgo8L2Rpdj4KPC9kaXY+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxv OnA+Jm5ic3A7PC9vOnA+PC9wPgo8ZGl2IGlkPSJkaXZ0YWdkZWZhdWx0d3JhcHBlciI+CjxwPjxz cGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29s b3I6YmxhY2siPkhpIFBhdWwsPG86cD48L286cD48L3NwYW4+PC9wPgo8cD48c3BhbiBzdHlsZT0i Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOmJsYWNrIj48 bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+CjxwPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTom cXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6YmxhY2siPlRoYW5rcyBmb3IgdGhl IHJldmlldy48bzpwPjwvbzpwPjwvc3Bhbj48L3A+CjxwPjxzcGFuIHN0eWxlPSJmb250LWZhbWls eTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6YmxhY2siPldlIGFyZSBub3cg d29ya2luZyBvbiBDZW50T1M3IHN1cHBvcnQsIGJ1dCBpdCBpcyBub3QgY29tcGxldGUgeWV0LCBz byB3ZSB3aWxsIGJlIG9uIENlbnRPUzYmbmJzcDthYm91dCA2LTEyIG1vbnRocy48bzpwPjwvbzpw Pjwvc3Bhbj48L3A+CjxwPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1 b3Q7LHNhbnMtc2VyaWY7Y29sb3I6YmxhY2siPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4K PHA+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJp Zjtjb2xvcjpibGFjayI+U2hhaGFyPG86cD48L286cD48L3NwYW4+PC9wPgo8L2Rpdj4KPGRpdiBj bGFzcz0iTXNvTm9ybWFsIiBhbGlnbj0iY2VudGVyIiBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIi Pgo8aHIgc2l6ZT0iMyIgd2lkdGg9Ijk4JSIgYWxpZ249ImNlbnRlciI+CjwvZGl2Pgo8ZGl2IGlk PSJkaXZScGx5RndkTXNnIj4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PGI+PHNwYW4gc3R5bGU9ImZv bnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlm O2NvbG9yOmJsYWNrIj5Gcm9tOjwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4w cHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOmJsYWNr Ij4gU1BESyAmbHQ7PGEgaHJlZj0ibWFpbHRvOnNwZGstYm91bmNlc0BsaXN0cy4wMS5vcmciPnNw ZGstYm91bmNlc0BsaXN0cy4wMS5vcmc8L2E+Jmd0Owogb24gYmVoYWxmIG9mIEx1c2UsIFBhdWwg RSAmbHQ7PGEgaHJlZj0ibWFpbHRvOnBhdWwuZS5sdXNlQGludGVsLmNvbSI+cGF1bC5lLmx1c2VA aW50ZWwuY29tPC9hPiZndDs8YnI+CjxiPlNlbnQ6PC9iPiBXZWRuZXNkYXksIE1heSA5LCAyMDE4 IDM6NTE6MjMgUE08YnI+CjxiPlRvOjwvYj4gU3RvcmFnZSBQZXJmb3JtYW5jZSBEZXZlbG9wbWVu dCBLaXQ8YnI+CjxiPlN1YmplY3Q6PC9iPiBSZTogW1NQREtdIEJ1aWxkaW5nIHNwZGsgb24gQ2Vu dE9TNjwvc3Bhbj4gPG86cD48L286cD48L3A+CjxkaXY+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPiZu YnNwOzxvOnA+PC9vOnA+PC9wPgo8L2Rpdj4KPC9kaXY+CjxkaXY+CjxkaXY+CjxwIGNsYXNzPSJ4 bXNvbm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVv dDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6IzFGNDk3RCI+VGhhbmtzIGZvciBkb2lu ZyB0aGF0ISBJIHB1dCBteSAyIGNlbnRzIG9uIHRoZSByZXZpZXcsIG9uZSBtb3JlIGRhdGEgcG9p bnQgZm9yIHRoZSBtYWludGFpbmVycyBtaWdodCBoZWxwICYjODIxMTsgaGVscCBsb25nIGRvIHlv dSBiZWxpZXZlIHlvdXIgdGVhbSB3aWxsIGJlIG9uIENlbnRPUzY/CiBEb24mIzgyMTc7dCBuZWVk IGEgc3BlY2lmaWMgZGF0ZSBidXQgYXJlIHdlIHRhbGtpbmcgbW9udGhzLCB5ZWFycywgaW5kZWZp bml0ZWx5Pzwvc3Bhbj48bzpwPjwvbzpwPjwvcD4KPHAgY2xhc3M9Inhtc29ub3JtYWwiPjxzcGFu IHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDss c2Fucy1zZXJpZjtjb2xvcjojMUY0OTdEIj4mbmJzcDs8L3NwYW4+PG86cD48L286cD48L3A+Cjxw IGNsYXNzPSJ4bXNvbm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZh bWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6IzFGNDk3RCI+SSB0aGlu ayB0aGUgb3RoZXIgaW1wbGljYXRpb24gb2YgYWNjZXB0aW5nIHRoaXMgaW4gdGhlIGNvbW11bml0 eSB3b3VsZCBiZSB0byBzcGluIHVwIGEgQ2VudE9TNiBWTSBmb3Igc29tZSBiYXNpYyB0ZXN0aW5n IGZvciBhcyBsb25nIGFzIHdlIGhvbGQgdGhhdCBwYXRjaCBpbgogb3VyIERQREsgZm9yayB3aGlj aCBpcyBub3QgYSBodWdlIHRoaW5nIGJ1dCB3YW50IHRvIG1ha2Ugc3VyZSB0aGF0JiM4MjE3O3Mg Y2xlYXIgYXMgd2VsbC4gSWYgbm90aGluZyBlbHNlIHdlJiM4MjE3O2xsIGtub3cgaWYgc29tZXRo aW5nIGVsc2UgYnJlYWtzIGl0IHNvb25lciB0aGFuIGxhdGVyIGFuZCB3aWxsIG5lZWQgdG8gZGVj aWRlLCBhZ2FpbiwgYXQgdGhhdCB0aW1lIGlmIHdlIHB1bGwgaXQgb3IgaWYgaXQmIzgyMTc7cyBh IGhpZ2ggZW5vdWdoIHByaW9yaXR5IGZvciBhbnlvbmUKIHRvIGRpZyBpbiBhbmQgZmluZCBhIHBv dGVudGlhbCBzb2x1dGlvbiBsaWtlIHlvdSBkaWQgaGVyZS4mbmJzcDsgQXNzdW1pbmcsIG9mIGNv dXJzZSwgdGhhdCB0aGlzIG9uZSBpcyBhY2NlcHRlZAo8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQt c2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6V2luZ2RpbmdzO2NvbG9yOiMxRjQ5N0QiPko8L3NwYW4+ PG86cD48L286cD48L3A+CjxwIGNsYXNzPSJ4bXNvbm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1z aXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29s b3I6IzFGNDk3RCI+Jm5ic3A7PC9zcGFuPjxvOnA+PC9vOnA+PC9wPgo8cCBjbGFzcz0ieG1zb25v cm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2Fs aWJyaSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOiMxRjQ5N0QiPlRoYW5rcyw8L3NwYW4+PG86cD48 L286cD48L3A+CjxwIGNsYXNzPSJ4bXNvbm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEx LjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6IzFG NDk3RCI+UGF1bDwvc3Bhbj48bzpwPjwvbzpwPjwvcD4KPHAgY2xhc3M9Inhtc29ub3JtYWwiPjxh IG5hbWU9InhfX01haWxFbmRDb21wb3NlIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtm b250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6IzFGNDk3RCI+ Jm5ic3A7PC9zcGFuPjwvYT48bzpwPjwvbzpwPjwvcD4KPGRpdj4KPGRpdiBzdHlsZT0iYm9yZGVy Om5vbmU7Ym9yZGVyLXRvcDpzb2xpZCAjRTFFMUUxIDEuMHB0O3BhZGRpbmc6My4wcHQgMGluIDBp biAwaW4iPgo8cCBjbGFzcz0ieG1zb25vcm1hbCI+PGEgbmFtZT0ieF9fX19fX3JlcGx5c2VwYXJh dG9yIj48L2E+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1 b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmIj5Gcm9tOjwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9 ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNl cmlmIj4gU1BESyBbPGEgaHJlZj0ibWFpbHRvOnNwZGstYm91bmNlc0BsaXN0cy4wMS5vcmciPm1h aWx0bzpzcGRrLWJvdW5jZXNAbGlzdHMuMDEub3JnPC9hPl0KPGI+T24gQmVoYWxmIE9mIDwvYj5T aGFoYXIgU2Fsem1hbjxicj4KPGI+U2VudDo8L2I+IFdlZG5lc2RheSwgTWF5IDksIDIwMTggMjow MSBBTTxicj4KPGI+VG86PC9iPiA8YSBocmVmPSJtYWlsdG86c3Bka0BsaXN0cy4wMS5vcmciPnNw ZGtAbGlzdHMuMDEub3JnPC9hPjxicj4KPGI+U3ViamVjdDo8L2I+IFJlOiBbU1BES10gQnVpbGRp bmcgc3BkayBvbiBDZW50T1M2PC9zcGFuPjxvOnA+PC9vOnA+PC9wPgo8L2Rpdj4KPC9kaXY+Cjxw IGNsYXNzPSJ4bXNvbm9ybWFsIj4mbmJzcDs8bzpwPjwvbzpwPjwvcD4KPGRpdiBpZD0ieF9kaXZ0 YWdkZWZhdWx0d3JhcHBlciI+CjxkaXYgaWQ9InhfZGl2dGFnZGVmYXVsdHdyYXBwZXIiPgo8cD48 c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2Nv bG9yOmJsYWNrIj5IaSBCZW4sPC9zcGFuPjxvOnA+PC9vOnA+PC9wPgo8cD48c3BhbiBzdHlsZT0i Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOmJsYWNrIj4m bmJzcDs8L3NwYW4+PG86cD48L286cD48L3A+CjxwPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTom cXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6YmxhY2siPlB1c2hlZCB0aGUgZml4 IHRvIGdlcnJpdGh1YiAtJm5ic3A7PGEgaHJlZj0iaHR0cHM6Ly9yZXZpZXcuZ2Vycml0aHViLmlv LyMvYy9zcGRrL2RwZGsvJiM0MzsvNDEwNTU5LyIgaWQ9IkxQbG5rMjAxMjgzIj5odHRwczovL3Jl dmlldy5nZXJyaXRodWIuaW8vIy9jL3NwZGsvZHBkay8mIzQzOy80MTA1NTkvPC9hPjwvc3Bhbj48 bzpwPjwvbzpwPjwvcD4KPHAgY2xhc3M9Inhtc29ub3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZh bWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6YmxhY2siPiZuYnNwOzwv c3Bhbj48bzpwPjwvbzpwPjwvcD4KPHA+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0Nh bGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjpibGFjayI+V2UgYXJlIGN1cnJlbnRseSB1c2lu ZyBhICZxdW90O2Zyb3plbiZxdW90OyBkcGRrIHRyZWUgYmFzZWQgdmVyc2lvbiAxNi4wNywgYnV0 IEkgYW0gcHVzaGluZyB0byB1c2luZyB0aGUgc3BkayBmb3JrIGFuZCBwZXJmb3JtaW5nIHJlZ3Vs YXIgdXBkYXRlcyBzbyBpZiB0aGluZ3MgYnJlYWssIEkgd2lsbCBhdHRlbXB0IHRvIGZpeCB0aGVt LCBhbmQgcG9zdCBvbgogdGhlIGxpc3QuPC9zcGFuPjxvOnA+PC9vOnA+PC9wPgo8cD48c3BhbiBz dHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOmJs YWNrIj4mbmJzcDs8L3NwYW4+PG86cD48L286cD48L3A+CjxwPjxzcGFuIHN0eWxlPSJmb250LWZh bWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6YmxhY2siPlRoZSBhYm92 ZSBmaXhlcyBhIGJsdW50IGdjYyZuYnNwO0FQSSBpc3N1ZSwgYnV0IHRoZXJlIGFyZSBtb3JlIHN1 YnRsZSBpbm5lciBtb2R1bGUgaXNzdWVzIHdoaWNoIEkgaGF2ZSBub3QgaW52ZXN0aWdhdGVkLCBz aW1wbHkgcmVtb3ZlZCB0aGUgbW9kdWxlcyBhbGwgdG9nZXRoZXIgYXMgdGhleSBhcmUgbm90IG5l ZWRlZCBieSBzcGRrLjwvc3Bhbj48bzpwPjwvbzpwPjwvcD4KPHA+PHNwYW4gc3R5bGU9ImZvbnQt ZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjpibGFjayI+Jm5ic3A7 PC9zcGFuPjxvOnA+PC9vOnA+PC9wPgo8cD48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7 Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOmJsYWNrIj5JIGNhbiBzZXQgdXAgYSBob3d0 byBmb3IgdXNlcnMgd2hvIG1heSBuZWVkIENlbnRPUzYgc3VwcG9ydCBvciB3ZSBjYW4gbW9kaWZ5 IHRoZSBjb25maWcgKGFzIHRoZXNlIG1vZHVsZXMgYXJlIG5vdCByZWFsbHkgbmVlZGVkIGZvciBz cGRrKS4gRm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkgaGVyZSBhcmUgdGhlIG1vZHVsZXMgJnF1b3Q7 Y29uZmlnZWQgb3V0JnF1b3Q7CiAoYXMgSSBtZW50aW9uZWQgdGhleSBhcmUgbm90IHVzZWQgYnkg c3Bkayk6PC9zcGFuPjxvOnA+PC9vOnA+PC9wPgo8ZGl2Pgo8cCBjbGFzcz0ieG1zb25vcm1hbCI+ PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtj b2xvcjpibGFjayI+JiM0MztDT05GSUdfUlRFX0xJQlJURV9QTURfQk9ORD1uPC9zcGFuPjxvOnA+ PC9vOnA+PC9wPgo8L2Rpdj4KPGRpdj4KPHAgY2xhc3M9Inhtc29ub3JtYWwiPjxzcGFuIHN0eWxl PSJmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6YmxhY2si PiYjNDM7Q09ORklHX1JURV9MSUJSVEVfQ1JZUFRPREVWPW48L3NwYW4+PG86cD48L286cD48L3A+ CjwvZGl2Pgo8ZGl2Pgo8cCBjbGFzcz0ieG1zb25vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFt aWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjpibGFjayI+JiM0MztDT05G SUdfUlRFX0xJQlJURV9TRUNVUklUWT1uPC9zcGFuPjxvOnA+PC9vOnA+PC9wPgo8L2Rpdj4KPGRp dj4KPHAgY2xhc3M9Inhtc29ub3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtD YWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6YmxhY2siPiYjNDM7Q09ORklHX1JURV9MSUJS VEVfUE1EX1NXX0VWRU5UREVWPW48L3NwYW4+PG86cD48L286cD48L3A+CjwvZGl2Pgo8ZGl2Pgo8 cCBjbGFzcz0ieG1zb25vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NhbGli cmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjpibGFjayI+JiM0MztDT05GSUdfUlRFX0xJQlJURV9Q TURfT0NURU9OVFhfU1NPVkY9bjwvc3Bhbj48bzpwPjwvbzpwPjwvcD4KPC9kaXY+CjxkaXY+Cjxw IGNsYXNzPSJ4bXNvbm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJy aSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOmJsYWNrIj4mIzQzO0NPTkZJR19SVEVfTElCUlRFX0xQ TT1uPC9zcGFuPjxvOnA+PC9vOnA+PC9wPgo8L2Rpdj4KPGRpdj4KPHAgY2xhc3M9Inhtc29ub3Jt YWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2Vy aWY7Y29sb3I6YmxhY2siPiYjNDM7Q09ORklHX1JURV9MSUJSVEVfRkxPV19DTEFTU0lGWT1uPC9z cGFuPjxvOnA+PC9vOnA+PC9wPgo8L2Rpdj4KPGRpdj4KPHAgY2xhc3M9Inhtc29ub3JtYWwiPjxz cGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29s b3I6YmxhY2siPiYjNDM7Q09ORklHX1JURV9MSUJSVEVfVEFCTEU9bjwvc3Bhbj48bzpwPjwvbzpw PjwvcD4KPC9kaXY+CjxkaXY+CjxwIGNsYXNzPSJ4bXNvbm9ybWFsIj48c3BhbiBzdHlsZT0iZm9u dC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOmJsYWNrIj4mIzQz O0NPTkZJR19SVEVfTElCUlRFX1BJUEVMSU5FPW48L3NwYW4+PG86cD48L286cD48L3A+CjwvZGl2 Pgo8ZGl2Pgo8cCBjbGFzcz0ieG1zb25vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZx dW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjpibGFjayI+JiM0MztDT05GSUdfUlRF X1RFU1RfUE1EPW48L3NwYW4+PG86cD48L286cD48L3A+CjwvZGl2Pgo8ZGl2Pgo8cCBjbGFzcz0i eG1zb25vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDss c2Fucy1zZXJpZjtjb2xvcjpibGFjayI+JiM0MztDT05GSUdfUlRFX0xJQlJURV9QTURfVEFQPW48 L3NwYW4+PG86cD48L286cD48L3A+CjwvZGl2Pgo8ZGl2Pgo8cCBjbGFzcz0ieG1zb25vcm1hbCI+ PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtj b2xvcjpibGFjayI+JiM0MztDT05GSUdfUlRFX0xJQlJURV9BVlBfUE1EPW48L3NwYW4+PG86cD48 L286cD48L3A+CjwvZGl2Pgo8ZGl2Pgo8cCBjbGFzcz0ieG1zb25vcm1hbCI+PHNwYW4gc3R5bGU9 ImZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjpibGFjayI+ Jm5ic3A7PC9zcGFuPjxvOnA+PC9vOnA+PC9wPgo8L2Rpdj4KPGRpdj4KPHAgY2xhc3M9Inhtc29u b3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMt c2VyaWY7Y29sb3I6YmxhY2siPlJlZ2FyZGluZyB0aGUgLWZuLXN0cmljdC1hbGlhc2luZyBpc3N1 ZSwgSSdsbCBzZWUgaWYgSSBjYW4gZG8gdGhlIHNhbWUgdHJpY2sgSSBkaWQgZm9yIHRoZSBnY2Mg YWxpYXMgaW4gdGhlIE1ha2VmaWxlLCBhbmQgcHVzaCB0aGUgZml4IGZvciByZXZpZXcuPC9zcGFu PjxvOnA+PC9vOnA+PC9wPgo8L2Rpdj4KPGRpdj4KPHAgY2xhc3M9Inhtc29ub3JtYWwiPjxzcGFu IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6 YmxhY2siPiZuYnNwOzwvc3Bhbj48bzpwPjwvbzpwPjwvcD4KPC9kaXY+CjxwPjxzcGFuIHN0eWxl PSJmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6YmxhY2si PlNoYWhhcjwvc3Bhbj48bzpwPjwvbzpwPjwvcD4KPHA+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5 OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjpibGFjayI+Jm5ic3A7PC9zcGFu PjxvOnA+PC9vOnA+PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0iTXNvTm9ybWFsIiBhbGlnbj0iY2Vu dGVyIiBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTom cXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6YmxhY2siPgo8aHIgc2l6ZT0iNCIg d2lkdGg9Ijk4JSIgYWxpZ249ImNlbnRlciI+Cjwvc3Bhbj48L2Rpdj4KPGRpdiBpZD0ieF9kaXZS cGx5RndkTXNnIj4KPHAgY2xhc3M9Inhtc29ub3JtYWwiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNp emU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xv cjpibGFjayI+RnJvbTo8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2Zv bnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjpibGFjayI+IFNQ REsgJmx0OzxhIGhyZWY9Im1haWx0bzpzcGRrLWJvdW5jZXNAbGlzdHMuMDEub3JnIj5zcGRrLWJv dW5jZXNAbGlzdHMuMDEub3JnPC9hPiZndDsKIG9uIGJlaGFsZiBvZiBXYWxrZXIsIEJlbmphbWlu ICZsdDs8YSBocmVmPSJtYWlsdG86YmVuamFtaW4ud2Fsa2VyQGludGVsLmNvbSI+YmVuamFtaW4u d2Fsa2VyQGludGVsLmNvbTwvYT4mZ3Q7PGJyPgo8Yj5TZW50OjwvYj4gVHVlc2RheSwgTWF5IDgs IDIwMTggNzo0OTo0NCBQTTxicj4KPGI+VG86PC9iPiA8YSBocmVmPSJtYWlsdG86c3Bka0BsaXN0 cy4wMS5vcmciPnNwZGtAbGlzdHMuMDEub3JnPC9hPjxicj4KPGI+U3ViamVjdDo8L2I+IFJlOiBb U1BES10gQnVpbGRpbmcgc3BkayBvbiBDZW50T1M2PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZh bWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6YmxhY2siPgo8L3NwYW4+ PG86cD48L286cD48L3A+CjxkaXY+CjxwIGNsYXNzPSJ4bXNvbm9ybWFsIj48c3BhbiBzdHlsZT0i Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOmJsYWNrIj4m bmJzcDs8L3NwYW4+PG86cD48L286cD48L3A+CjwvZGl2Pgo8L2Rpdj4KPGRpdj4KPGRpdj4KPHAg Y2xhc3M9Inhtc29ub3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFt aWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjpibGFjayI+T24gVHVlLCAy MDE4LTA1LTA4IGF0IDE0OjM0ICYjNDM7MDAwMCwgU2hhaGFyIFNhbHptYW4gd3JvdGU6PGJyPgom Z3Q7IEdvdCBpdC48YnI+CiZndDsgPGJyPgomZ3Q7IEkgd2FzIHRyYWNraW5nIHRoZSBkcGRrIHBy b2plY3QsIGFuZCBmb2N1c2VkIG9uIHRoZSBicmFuY2ggdGhhdCBEYW5pZWwgdG9sZCBtZTxicj4K Jmd0OyB0byB3b3JrIG9uLjxicj4KJmd0OyBTbyB3b3VsZCB0aGUgY29ycmVjdCBwcm9jZXNzIGJl IHRvIHB1c2ggdGhlIHBhdGNoIHRvIHRoZSBzcGRrL2RwZGsgZ2Vycml0aHViPGJyPgomZ3Q7IGFu ZCBkaXNjdXNzIHRoZSBjb21taXQsIG9yIHRoZSBvdGhlciB3YXkgYXJvdW5kPzxicj4KPGJyPgpZ ZXMgLSBnbyBhaGVhZCBhbmQgcHVzaCB0byBzcGRrL2RwZGsgb24gR2Vycml0SHViIHNvIHdlIGNh biBhbGwgcmV2aWV3IGl0LiBUaGU8YnI+ClNQREsgcHJvamVjdCBoYXMgbmV2ZXIgd3JpdHRlbiBv dXQgYSBwb2xpY3kgb24gd2hpY2ggdmVyc2lvbnMgb2YgRFBESyBhcmU8YnI+CnN1cHBvcnRlZCBm b3IgYW55IGdpdmVuIFNQREsgcmVsZWFzZS4gVGhlIGNvZGUgaXMgYWx3YXlzIHRlc3RlZCB1c2lu ZyB0aGUgbGF0ZXN0PGJyPgpyZWxlYXNlZCBEUERLLCBhbmQgdGhlbiBhdHRlbXB0cyB0byBzdXBw b3J0IG9sZGVyIHZlcnNpb25zIG9mIERQREsgYXJlIGRvbmUgaW48YnI+CmFuIGFkIGhvYyBtYW5u ZXIuIFNpbWlsYXJseSwgdGhlIHByb2plY3QgbmV2ZXIgZXhwbGljaXRseSBzdGF0ZXMgd2hpY2gg b3BlcmF0aW5nPGJyPgpzeXN0ZW1zIGFyZSBzdXBwb3J0ZWQuIEluc3RlYWQsIHdlIGluZGljYXRl IHdoaWNoIG9wZXJhdGluZyBzeXN0ZW1zIHRoZSBjb2RlIGlzPGJyPgpyZWd1bGFybHkgdGVzdGVk IG9uIChGZWRvcmEgTiBhbmQgTi0xLCBVYnVudHUgbGF0ZXN0LCBVYnVudHUgTFRTLCBDZW50T1Mg Nyw8YnI+CkZyZWVCU0QgMTEpLjxicj4KPGJyPgpJIHNlZSB0aGF0IENlbnRPUyA2IGlzIG5vIGxv bmdlciByZWNlaXZpbmcgZnVsbCB1cGRhdGVzIGFuZCBpcyBpbiBtYWludGVuYW5jZTxicj4Kb25s eSBtb2RlLiBJdCB3aWxsIHN0b3AgcmVjZWl2aW5nIGV2ZW4gbWFpbnRlbmFuY2UgdXBkYXRlcyBp biAyMDIwLiBJIHRoaW5rIHRoYXQ8YnI+CmlzIGluZGljYXRpdmUgb2YgdGhlIGxldmVsIG9mIHN1 cHBvcnQgU1BESyBzaG91bGQgcHJvdmlkZSBoZXJlLjxicj4KPGJyPgpHaXZlbiB0aGUgYWJvdmUs IGlmIHRoaXMgcGF0Y2ggY2FuIGJlIGFwcGxpZWQgdG8gdGhlIERQREsgZm9yayBhbmQgZG9lc24n dCBoYXZlPGJyPgphbnkgYWRkaXRpb25hbCBpbXBhY3QsIEknbSBub3Qgb3Bwb3NlZCB0byBhcHBs eWluZyBpdC4gVGhhdCB3b3VsZG4ndCwgaW4gbXk8YnI+Cm1pbmQsIG1lYW4gdGhhdCBTUERLIGlz IGNvbW1pdHRlZCB0byBzdXBwb3J0aW5nIENlbnRPUyA2IGluZGVmaW5pdGVseS4gQnV0PGJyPgpj ZXJ0YWlubHkgdGhhdCBzdXBwb3J0IGNvdWxkIGNvbnRpbnVlIHdoaWxlIGl0IGlzIHJlbGF0aXZl bHkgZWFzeSBhbmQ8YnI+CmNvbnZlbmllbnQuPGJyPgo8YnI+CiZndDsgPGJyPgomZ3Q7IEZyb206 IFNQREsgJmx0OzxhIGhyZWY9Im1haWx0bzpzcGRrLWJvdW5jZXNAbGlzdHMuMDEub3JnIj5zcGRr LWJvdW5jZXNAbGlzdHMuMDEub3JnPC9hPiZndDsgb24gYmVoYWxmIG9mIEx1c2UsIFBhdWwgRSAm bHQ7PGEgaHJlZj0ibWFpbHRvOnBhdWwuZS5sdXNlQCUwYiI+cGF1bC5lLmx1c2VAPGJyPgo8L2E+ Jmd0OyBpbnRlbC5jb20mZ3Q7PGJyPgomZ3Q7IFNlbnQ6IFR1ZXNkYXksIE1heSA4LCAyMDE4IDU6 MTQ6MTAgUE08YnI+CiZndDsgVG86IFN0b3JhZ2UgUGVyZm9ybWFuY2UgRGV2ZWxvcG1lbnQgS2l0 PGJyPgomZ3Q7IFN1YmplY3Q6IFJlOiBbU1BES10gQnVpbGRpbmcgc3BkayBvbiBDZW50T1M2PGJy PgomZ3Q7Jm5ic3A7IDxicj4KJmd0OyBTdXJlLCBJIHVuZGVyc3RhbmQgdGhhdC4mbmJzcDsgU1BE SyBtYWludGFpbnMgYSBmb3JrIG9mIGRwZGsgaW4gZ2l0aHViIGF0IDxhIGhyZWY9Imh0dHBzOi8v ZyI+Cmh0dHBzOi8vZzwvYT48YnI+CiZndDsgaXRodWIuY29tL3NwZGsvZHBkayBmb3IgdGhlIHB1 cnBvc2Ugb2YgdGVtcG9yYXJpbHkgcHV0dGluZyB0aGluZ3MgaW4gdGhhdCB3ZTxicj4KJmd0OyBu ZWVkIHRoYXQgY2FuJiM4MjE3O3QgbWFrZSBpdCB1cHN0cmVhbSB5ZXQgZm9yIHdoYXRldmVyIHJl YXNvbiAmIzgyMTE7IHRoaXMgaXMgdGhlPGJyPgomZ3Q7IHN1Ym1vZHVsZSBpbiB0aGUgU1BESyBy ZXBvLiZuYnNwOyBJJiM4MjE3O20gbm90IHNheWluZyB0aGF0IGl0IG1ha2VzIHNlbnNlIGZvciB5 b3VyIHBhdGNoPGJyPgomZ3Q7IHRvIGxhbmQgdGhlcmUgcGVybWFuZW50bHkgYnV0IGl0IGRvZXMg bWFrZSBzZW5zZSB0byB0YWxrIGFib3V0IGl0Ljxicj4KJmd0OyZuYnNwOyA8YnI+CiZndDsgTm8g cHJvYmxlbSBvbiBub3QgYmVpbmcgb24gdGhlIGNhbGwsIHdlJiM4MjE3O2xsIGdldCBzb21lIGlu cHV0IGZyb20gdGhlIG1haW50YWluZXJzPGJyPgomZ3Q7IGFuZCBvdGhlcnMgSSYjODIxNzttIHN1 cmUmIzgyMzA7PGJyPgomZ3Q7Jm5ic3A7IDxicj4KJmd0OyBUaHg8YnI+CiZndDsgUGF1bDxicj4K Jmd0OyZuYnNwOyA8YnI+CiZndDsgRnJvbTogU1BESyBbPGEgaHJlZj0ibWFpbHRvOnNwZGstYm91 bmNlc0BsaXN0cy4wMS5vcmciIGlkPSJMUGxuazM0MDU3NiI+bWFpbHRvOnNwZGstYm91bmNlc0Bs aXN0cy4wMS5vcmc8L2E+XSBPbiBCZWhhbGYgT2YgU2hhaGFyIFNhbHptYW48YnI+CiZndDsgU2Vu dDogVHVlc2RheSwgTWF5IDgsIDIwMTggNzowNCBBTTxicj4KJmd0OyBUbzogU3RvcmFnZSBQZXJm b3JtYW5jZSBEZXZlbG9wbWVudCBLaXQgJmx0OzxhIGhyZWY9Im1haWx0bzpzcGRrQGxpc3RzLjAx Lm9yZyI+c3Bka0BsaXN0cy4wMS5vcmc8L2E+Jmd0Ozxicj4KJmd0OyBTdWJqZWN0OiBSZTogW1NQ REtdIEJ1aWxkaW5nIHNwZGsgb24gQ2VudE9TNjxicj4KJmd0OyZuYnNwOyA8YnI+CiZndDsgSGV5 IFBhdWwsPGJyPgomZ3Q7Jm5ic3A7IDxicj4KJmd0OyBUaGUgcHJvYmxlbSBpcyB0aGF0IHRoZSBw YXRjaCBpcyBpbiBkcGRrIGFuZCBub3QgaW4gc3BkaywgYW5kIHRoaXMgaXMgdGhlPGJyPgomZ3Q7 IHJlYXNvbiBJIG9mZmVyZWQgdG8gc3VwcG9ydCBpdC48YnI+CiZndDsgVGhlIHBhdGNoIChiZWxs b3cpIGlzIG9ubHkgYSBmZXcgbGluZXMgbG9uZyBtb2RpZnlpbmcgdGhlIGRlcHJlY2F0ZWQgYXR0 cmlidXRlPGJyPgomZ3Q7IGRlZmluaXRpb24sIGEgbW9kaWZpY2F0aW9uIHRvIHRoZSBjb25maWcs IGFuZCBhbiBleHRyYSBjb21waWxhdGlvbiBmbGFnLjxicj4KJmd0OyBBbGwgb2YgdGhlIGFib3Zl IGFyZSByZXF1aXJlZCBpbiBvcmRlciB0byBidWlsZCBkcGRrIDE4LjAxIG9uIENlbnRPUzYsIHRo ZXJlPGJyPgomZ3Q7IGFyZSBubyBwcm9ibGVtcyBidWlsZGluZyBzcGRrIG9uIENlbnRPUzYuPGJy PgomZ3Q7Jm5ic3A7IDxicj4KJmd0OyBJIHVuZGVyc3Rvb2QgdGhhdCB5b3UgYXJlIGFscmVhZHkg YXBwbHlpbmcgbWlub3IgcGF0Y2hlcyB0byBkcGRrLCBzbyBxdWVzdGlvbjxicj4KJmd0OyBpcywg d2hldGhlciB0aGlzIHBhdGNoIGNhbiBiZSBhZGRlZD88YnI+CiZndDsmbmJzcDsgPGJyPgomZ3Q7 IFVuZm9ydHVuYXRlbHkgZHVlIHRvIHNvbWUgcGVyc29uYWwgaXNzdWVzLCBJIGFtIHVuYWJsZSB0 byBwYXJ0aWNpcGF0ZSBpbjxicj4KJmd0OyB0b2RheSdzIG1lZXRpbmcuPGJyPgomZ3Q7Jm5ic3A7 IDxicj4KJmd0OyBUaGFua3MsPGJyPgomZ3Q7IFNoYWhhcjxicj4KJmd0OyBGcm9tOiBTUERLICZs dDs8YSBocmVmPSJtYWlsdG86c3Bkay1ib3VuY2VzQGxpc3RzLjAxLm9yZyI+c3Bkay1ib3VuY2Vz QGxpc3RzLjAxLm9yZzwvYT4mZ3Q7IG9uIGJlaGFsZiBvZiBMdXNlLCBQYXVsIEUgJmx0OzxhIGhy ZWY9Im1haWx0bzpwYXVsLmUubHVzZUAlMGIiPnBhdWwuZS5sdXNlQDxicj4KPC9hPiZndDsgaW50 ZWwuY29tJmd0Ozxicj4KJmd0OyBTZW50OiBUdWVzZGF5LCBNYXkgOCwgMjAxOCA0OjI1OjI5IFBN PGJyPgomZ3Q7IFRvOiBTdG9yYWdlIFBlcmZvcm1hbmNlIERldmVsb3BtZW50IEtpdDxicj4KJmd0 OyBTdWJqZWN0OiBSZTogW1NQREtdIEJ1aWxkaW5nIHNwZGsgb24gQ2VudE9TNjxicj4KJmd0OyZu YnNwOyA8YnI+CiZndDsgSGkgU2hhaGFyLDxicj4KJmd0OyZuYnNwOyA8YnI+CiZndDsgQ291cGxl IG9mIHF1aWNrIHRoaW5nczo8YnI+CiZndDsmbmJzcDsgPGJyPgomZ3Q7ICogdGhhbmtzIGZvciBw dXR0aW5nIGFsbCB0aGlzIHRpbWUgYW5kIGVmZm9ydCBpbnRvIHRyeWluZyB0byBtYWtlIHRoaXMg d29yayE8YnI+CiZndDsgKiBpbiB0aGUgY29tbXVuaXR5IG1vZGVsLCBwYXRjaGVzIGFyZW4mIzgy MTc7dCBhY2NlcHRlZCBiYXNlZCBvbiBvbmUgaW5kaXZpZHVhbCYjODIxNztzPGJyPgomZ3Q7IGFi aWxpdHkvZGVzaXJlIHRvIHN1cHBvcnQgdGhlbSBzbyBhcHByZWNpYXRlIHRoZSBvZmZlciBidXQg aW4gZ2VuZXJhbCBhbnk8YnI+CiZndDsgcGF0Y2ggdGhhdCBpcyBhY2NlcHRlZCBiZWNvbWVzIHRo ZSByZXNwb25zaWJseSBvZiB0aGUgY29tbXVuaXR5IChtb3N0bHkgdGhlPGJyPgomZ3Q7IG1haW50 YWluZXJzKSB0byBzdXBwb3J0IGl0IGxvbmcgdGVybS4mbmJzcDsgT3RoZXJ3aXNlIHdlJiM4MjE3 O2QgaGF2ZSB3aGF0IEkgbGlrZSB0byBjYWxsPGJyPgomZ3Q7ICYjODIyMDt0aGUgZmxlYSBtYXJr ZXQgbW9kZWwmIzgyMjE7IHdoZXJlIHRoZXJlJiM4MjE3O3MgYSBidW5jaCBvZiBzZXBhcmF0ZSBp bmRpdmlkdWFsczxicj4KJmd0OyBzdXBwb3J0aW5nIHRoZWlyIG93biB0aGluZ3Mgd2l0aCB2ZXJ5 IGxpdHRsZSBjb2hlc2l2ZW5lc3MgYWNyb3NzIGV2ZXJ5dGhpbmcgSjxicj4KJmd0OyZuYnNwOyA8 YnI+CiZndDsgU28sIHdydCBuZXh0IHN0ZXBzLCBpZiB0aGUgcGF0Y2ggaXNuJiM4MjE3O3QgYSB0 cmVtZW5kb3VzIGFtb3VudCBvZiBlZmZvcnQgSSB3b3VsZDxicj4KJmd0OyBzdWdnZXN0IHlvdSBn byBhaGVhZCBhbmQgc3VibWl0IGl0LiBUaGF0JiM4MjE3O3MgdGhlIGJlc3Qgd2F5IHRvIGdldCBl dmVyeW9uZSBvbiB0aGU8YnI+CiZndDsgc2FtZSBwYWdlIHdydCBleGFjdGx5IHdoYXQgd2UmIzgy MTc7cmUgdGFsa2luZyBhYm91dC4mbmJzcDsgSWYgaXQgaXMgc29tZSBzaWduaWZpY2FudDxicj4K Jmd0OyBlZmZvcnQgdGhlbiwgYXMgUGF3ZWwgc3RhdGVzLCB5b3UgY2FuIGNhbGwgaW50byBhIGNv bW11bml0eSBtZWV0aW5nIChzZWUgZW1haWw8YnI+CiZndDsgSSBzZW50IG91dCBsYXN0IG5pZ2h0 KSBvciB5b3UgY2FuIGV4cGxhaW4gbW9yZSBkZXRhaWxzIG9uIHRoaXMgbGlzdC48YnI+CiZndDsm bmJzcDsgPGJyPgomZ3Q7IFRoYW5rcyBhZ2FpbiEhPGJyPgomZ3Q7IFBhdWw8YnI+CiZndDsmbmJz cDsgPGJyPgomZ3Q7IEZyb206IFNQREsgWzxhIGhyZWY9Im1haWx0bzpzcGRrLWJvdW5jZXNAbGlz dHMuMDEub3JnIiBpZD0iTFBsbmsyNzAwMDciPm1haWx0bzpzcGRrLWJvdW5jZXNAbGlzdHMuMDEu b3JnPC9hPl0gT24gQmVoYWxmIE9mIFdvZGtvd3NraSwgUGF3ZWxYPGJyPgomZ3Q7IFNlbnQ6IFR1 ZXNkYXksIE1heSA4LCAyMDE4IDU6NTcgQU08YnI+CiZndDsgVG86IFN0b3JhZ2UgUGVyZm9ybWFu Y2UgRGV2ZWxvcG1lbnQgS2l0ICZsdDs8YSBocmVmPSJtYWlsdG86c3Bka0BsaXN0cy4wMS5vcmci PnNwZGtAbGlzdHMuMDEub3JnPC9hPiZndDs8YnI+CiZndDsgU3ViamVjdDogUmU6IFtTUERLXSBC dWlsZGluZyBzcGRrIG9uIENlbnRPUzY8YnI+CiZndDsmbmJzcDsgPGJyPgomZ3Q7IEkgdGhpbmsg c29tZW9uZSB3aWxsIGFuc3dlciB5b3Ugb24gdGhpcyBtYWlsaW5nIGxpc3QgYnV0IHRoZXJlIGlz IGNvbW11bml0eTxicj4KJmd0OyBtZWV0aW5nIHRvZGF5IHRvby4gWW91IGNhbiByYWlzZSB0aGlz IGlmIHlvdSB3aXNoLjxicj4KJmd0OyZuYnNwOyA8YnI+CiZndDsgUGF3ZWw8YnI+CiZndDsmbmJz cDsgPGJyPgomZ3Q7IEZyb206IFNQREsgWzxhIGhyZWY9Im1haWx0bzpzcGRrLWJvdW5jZXNAbGlz dHMuMDEub3JnIiBpZD0iTFBsbmsyMjM0NDMiPm1haWx0bzpzcGRrLWJvdW5jZXNAbGlzdHMuMDEu b3JnPC9hPl0gT24gQmVoYWxmIE9mIFNoYWhhciBTYWx6bWFuPGJyPgomZ3Q7IFNlbnQ6IFR1ZXNk YXksIE1heSA4LCAyMDE4IDI6MjMgUE08YnI+CiZndDsgVG86IFN0b3JhZ2UgUGVyZm9ybWFuY2Ug RGV2ZWxvcG1lbnQgS2l0ICZsdDs8YSBocmVmPSJtYWlsdG86c3Bka0BsaXN0cy4wMS5vcmciPnNw ZGtAbGlzdHMuMDEub3JnPC9hPiZndDs8YnI+CiZndDsgU3ViamVjdDogUmU6IFtTUERLXSBCdWls ZGluZyBzcGRrIG9uIENlbnRPUzY8YnI+CiZndDsmbmJzcDsgPGJyPgomZ3Q7IEhpLDxicj4KJmd0 OyZuYnNwOyA8YnI+CiZndDsgSSBhdHRlbXB0ZWQgdG8gcHVzaCB0aGUgZ2NjIHN1cHBvcnQgcGF0 Y2ggdG8gZHBkaywgYW5kIGdvdCByZWplY3RlZCBzaW5jZSB0aGV5PGJyPgomZ3Q7IGRvIG5vdCB3 aXNoIHRvIHN1cHBvcnQgQ2VudE9TNi48YnI+CiZndDsgV291bGQgaXQgYmUgcG9zc2libGUgdG8g bWFudWFsbHkgYWRkIHRoZSBwYXRjaCB0byB0aGUgc3VwcG9ydGVkIGRwZGsgdmVyc2lvbjxicj4K Jmd0OyAoY3VycmVudGx5IDE4LjAxKS48YnI+CiZndDsgSSB3b3VsZCBiZSBoYXBweSB0byBzdXBw b3J0IENlbnRPUzYgaXNzdWVzLjxicj4KJmd0OyZuYnNwOyA8YnI+CiZndDsgVGhhbmtzLDxicj4K Jmd0OyBTaGFoYXI8YnI+CiZndDsmbmJzcDsgPGJyPgomZ3Q7IEZyb206IFNoYWhhciBTYWx6bWFu PGJyPgomZ3Q7IFNlbnQ6IFR1ZXNkYXksIEFwcmlsIDI0LCAyMDE4IDM6NDA6NTEgUE08YnI+CiZn dDsgVG86IFN0b3JhZ2UgUGVyZm9ybWFuY2UgRGV2ZWxvcG1lbnQgS2l0PGJyPgomZ3Q7IENjOiBJ bGFuIFN0ZWluYmVyZzsgSWRvIEJlbmRhOyBZYWVsIFNoYXZpdDxicj4KJmd0OyBTdWJqZWN0OiBS ZTogQnVpbGRpbmcgc3BkayBvbiBDZW50T1M2PGJyPgomZ3Q7Jm5ic3A7IDxicj4KJmd0OyBPSywg Z290IGV2ZXJ5dGhpbmcgdG8gd29yay48YnI+CiZndDsmbmJzcDsgPGJyPgomZ3Q7IEZvciBEUERL LCBJIGhhZCB0byB0byBkbyB0aGUgZm9sbG93aW5nOjxicj4KJmd0OyBhZGQgYSBwYXRjaCB0byBt YWtlIHRoZSBuZXcgX19ydGVfZXhwZXJpbWVudGFsIGF0dHJpYnV0ZSB0byB3b3JrPGJyPgomZ3Q7 IHJlbW92ZSBhIGJ1bmNoIG9mIG1vZHVsZXMgdmlhIGNvbmZpZyB3aGljaCBoYWQgc29tZSBnbmFy bHkgY29tcGlsYXRpb24gZXJyb3JzLDxicj4KJmd0OyBhbmQgYXJlIG5vdCBuZWVkZWQgZm9yIHNw ZGs8YnI+CiZndDsgdXNlIC1mbm8tc3RyaWN0LWFsaWFzaW5nIGluIHRoZSBFWFRSQV9DRkxBR1Mg dG8gYXZvaWQgYSB0b24gb2Ygc3RyaWN0IGFsaWFzaW5nPGJyPgomZ3Q7IGVycm9ycy48YnI+CiZn dDsmbmJzcDsgPGJyPgomZ3Q7IEkgdHJpZWQgc3BkayAxOC4wMSwgYW5kIHJhbiBpbnRvIHNvbWUg aXNzdWVzIHdpdGggdGhlIHNoYXJlZCBsaWJyYXJ5IGJ1aWxkLiBBczxicj4KJmd0OyBJIHNhdyB0 aGF0IERhbmllbCBoYWQgYWxyZWFkeSBkZWFsdCB3aXRoIHRoZW0sIEkgdHJpZWQgY2hlcnJ5IHBp Y2tpbmcsIGJ1dDxicj4KJmd0OyBldmVudHVhbGx5IHVzZWQgdGhlIG1hc3RlciBicmFuY2guPGJy PgomZ3Q7IEkgZ290IHRoZXNlIHR5cGUgb2Ygd2FybmluZ3M6PGJyPgomZ3Q7Jm5ic3A7IDxicj4K Jmd0OyAvdXNyL2Jpbi9sZDogd2FybmluZzogbGlicnRlX21idWYuc28uMy4xLCBuZWVkZWQgYnk8 YnI+CiZndDsgL2tob21lL3NoYWhhci5zYWx6bWFuL0thbWluYXJpby9naXQvZHBkay94ODZfNjQt bmF0aXZlLWxpbnV4YXBwLTxicj4KJmd0OyBnY2MvbGliL2xpYnJ0ZV9idXNfcGNpLnNvLCBub3Qg Zm91bmQgKHRyeSB1c2luZyAtcnBhdGggb3IgLXJwYXRoLWxpbmspPGJyPgomZ3Q7IC91c3IvYmlu L2xkOiB3YXJuaW5nOiBsaWJydGVfZXRoZGV2LnNvLjguMSwgbmVlZGVkIGJ5PGJyPgomZ3Q7IC9r aG9tZS9zaGFoYXIuc2Fsem1hbi9LYW1pbmFyaW8vZ2l0L2RwZGsveDg2XzY0LW5hdGl2ZS1saW51 eGFwcC08YnI+CiZndDsgZ2NjL2xpYi9saWJydGVfYnVzX3BjaS5zbywgbm90IGZvdW5kICh0cnkg dXNpbmcgLXJwYXRoIG9yIC1ycGF0aC1saW5rKTxicj4KJmd0OyZuYnNwOyA8YnI+CiZndDsgSSBh ZGRlZCB0aGUgZm9sbG93aW5nIHBhdGNoIGJlbGxvdyB0byBtYWtlIHRoZW0gZ28gYXdheS48YnI+ CiZndDsmbmJzcDsgPGJyPgomZ3Q7IEknbGwgYXBwcm9hY2ggdGhlIGRwZGsgY29tbXVuaXR5IG9u IHRoZSBtYWlsaW5nIGxpc3QgaW4gb3JkZXIgdG8gZ2V0IHRoZTxicj4KJmd0OyBfX3J0ZV9leHBl cmltZW50YWwgc3R1ZmYgdG8gd29yay48YnI+CiZndDsgTXkgZmluYWwgY29uZmlndXJhdGlvbiBp czo8YnI+CiZndDsgQ2Vuck9TNi40PGJyPgomZ3Q7IGdjYyA0LjQuNy0xNzxicj4KJmd0OyBkcGRr IHYxOC4wMjxicj4KJmd0OyBzcGRrIG1hc3Rlcjxicj4KJmd0OyZuYnNwOyA8YnI+CiZndDsgV2hh dCBhcmUgdGhlIG5leHQgc3RlcHM/PGJyPgomZ3Q7Jm5ic3A7IDxicj4KJmd0OyBTaGFoYXI8YnI+ CiZndDsmbmJzcDsgPGJyPgomZ3Q7IFAuUy4gSGVyZSBpcyB0aGUgcGF0Y2ggdG8gcmVtb3ZlIHRo ZSB3YXJuaW5ncyBhYm92ZS48YnI+CiZndDsgY29tbWl0IGQ0ZWY3NDRkZTFjYzQ5Mjg5NzJiNzA0 MmQxYzkwYWZmMTJkYjc4Njc8YnI+CiZndDsgQXV0aG9yOiBzaGFoYXIgc2Fsem1hbiAmbHQ7PGEg aHJlZj0ibWFpbHRvOnNoYWhhci5zYWx6bWFuQGthbWluYXJpby5jb20iPnNoYWhhci5zYWx6bWFu QGthbWluYXJpby5jb208L2E+Jmd0Ozxicj4KJmd0OyBEYXRlOiZuYnNwOyZuYnNwOyBUdWUgQXBy IDI0IDE0OjMxOjUyIDIwMTggJiM0MzswMzAwPGJyPgomZ3Q7Jm5ic3A7IDxicj4KJmd0OyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyBsaWIvZW52X2RwZGs6IGFkZCByZXF1aXJlZCBsaWJyYXJpZXM8 YnI+CiZndDsmbmJzcDsgPGJyPgomZ3Q7IGRpZmYgLS1naXQgYS9saWIvZW52X2RwZGsvZW52Lm1r IGIvbGliL2Vudl9kcGRrL2Vudi5tazxicj4KJmd0OyBpbmRleCA0NTAwNDNjLi5iNDZiZmVkIDEw MDY0NDxicj4KJmd0OyAtLS0gYS9saWIvZW52X2RwZGsvZW52Lm1rPGJyPgomZ3Q7ICYjNDM7JiM0 MzsmIzQzOyBiL2xpYi9lbnZfZHBkay9lbnYubWs8YnI+CiZndDsgQEAgLTY4LDYgJiM0Mzs2OCwx OCBAQCBpZm5lcSAoJCh3aWxkY2FyZCAkKERQREtfQUJTX0RJUikvbGliL2xpYnJ0ZV9tYWxsb2Mu KiksKTxicj4KJmd0OyZuYnNwOyBEUERLX0xJQl9MSVNUICYjNDM7PSBydGVfbWFsbG9jPGJyPgom Z3Q7Jm5ic3A7IGVuZGlmPGJyPgomZ3Q7Jm5ic3A7IDxicj4KJmd0OyAmIzQzO2lmbmVxICgsICQo d2lsZGNhcmQgJChEUERLX0FCU19ESVIpL2xpYi9saWJydGVfbWJ1Zi4qKSk8YnI+CiZndDsgJiM0 MztEUERLX0xJQl9MSVNUICYjNDM7PSBydGVfbWJ1Zjxicj4KJmd0OyAmIzQzO2VuZGlmPGJyPgom Z3Q7ICYjNDM7PGJyPgomZ3Q7ICYjNDM7aWZuZXEgKCwgJCh3aWxkY2FyZCAkKERQREtfQUJTX0RJ UikvbGliL2xpYnJ0ZV9uZXQuKikpPGJyPgomZ3Q7ICYjNDM7RFBES19MSUJfTElTVCAmIzQzOz0g cnRlX25ldDxicj4KJmd0OyAmIzQzO2VuZGlmPGJyPgomZ3Q7ICYjNDM7PGJyPgomZ3Q7ICYjNDM7 aWZuZXEgKCwgJCh3aWxkY2FyZCAkKERQREtfQUJTX0RJUikvbGliL2xpYnJ0ZV9ldGhkZXYuKikp PGJyPgomZ3Q7ICYjNDM7RFBES19MSUJfTElTVCAmIzQzOz0gcnRlX2V0aGRldjxicj4KJmd0OyAm IzQzO2VuZGlmPGJyPgomZ3Q7ICYjNDM7PGJyPgomZ3Q7Jm5ic3A7ICMgbGlicnRlX3BjaSBhbmQg bGlicnRlX2J1c19wY2kgd2VyZSBhZGRlZCBpbiBEUERLIDE3LjExLiBMaW5rIHRoZXNlPGJyPgom Z3Q7IGxpYnJhcmllcyBjb25kaXRpb25hbGx5PGJyPgomZ3Q7Jm5ic3A7ICMgYmFzZWQgb24gdGhl aXIgZXhpc3RlbmNlIHRvIG1haW50YWluIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuPGJyPgomZ3Q7 Jm5ic3A7IGlmbmVxICgsICQod2lsZGNhcmQgJChEUERLX0FCU19ESVIpL2xpYi9saWJydGVfcGNp LiopKTxicj4KJmd0OyZuYnNwOyA8YnI+CiZndDsmbmJzcDsgPGJyPgomZ3Q7Jm5ic3A7IDxicj4K Jmd0OyBGcm9tOiBTUERLICZsdDs8YSBocmVmPSJtYWlsdG86c3Bkay1ib3VuY2VzQGxpc3RzLjAx Lm9yZyI+c3Bkay1ib3VuY2VzQGxpc3RzLjAxLm9yZzwvYT4mZ3Q7IG9uIGJlaGFsZiBvZiBTaGFo YXIgU2Fsem1hbiAmbHQ7c2hhaGFyLnNhbDxicj4KJmd0OyA8YSBocmVmPSJtYWlsdG86em1hbkBr YW1pbmFyaW8uY29tIj56bWFuQGthbWluYXJpby5jb208L2E+Jmd0Ozxicj4KJmd0OyBTZW50OiBU dWVzZGF5LCBBcHJpbCAyNCwgMjAxOCA5OjU3IEFNPGJyPgomZ3Q7IFRvOiBTdG9yYWdlIFBlcmZv cm1hbmNlIERldmVsb3BtZW50IEtpdDxicj4KJmd0OyBTdWJqZWN0OiBSZTogW1NQREtdIEJ1aWxk aW5nIHNwZGsgb24gQ2VudE9TNjxicj4KJmd0OyZuYnNwOyA8YnI+CiZndDsgR3JlYXQsIGFuZCB0 aGFua3MhPGJyPgomZ3Q7Jm5ic3A7IDxicj4KJmd0OyBJIGhhdmUgYmVlbiBydW5uaW5nIGludG8g aXNzdWVzIGNvbXBpbGluZyBkcGRrIDE3LjExIG9uIENlbnRPUzYgKHRoZXJlIHNlZW1zPGJyPgom Z3Q7IHRvIGJlIGEgZ2NjIGlzc3VlIHRoYXQgZG9lcyBub3QgZXhpc3QgaW4gb3RoZXIgdmVyc2lv bnMpLCBJJ2xsIGZvY3VzIG15PGJyPgomZ3Q7IGVmZm9ydHMgb24gZHBkayAxOC4wMi48YnI+CiZn dDsgRnJvbTogU1BESyAmbHQ7PGEgaHJlZj0ibWFpbHRvOnNwZGstYm91bmNlc0BsaXN0cy4wMS5v cmciPnNwZGstYm91bmNlc0BsaXN0cy4wMS5vcmc8L2E+Jmd0OyBvbiBiZWhhbGYgb2YgVmVya2Ft cCwgRGFuaWVsICZsdDtkYW5pZWwudmU8YnI+CiZndDsgPGEgaHJlZj0ibWFpbHRvOnJrYW1wQGlu dGVsLmNvbSI+cmthbXBAaW50ZWwuY29tPC9hPiZndDs8YnI+CiZndDsgU2VudDogTW9uZGF5LCBB cHJpbCAyMywgMjAxOCA5OjQwOjM2IFBNPGJyPgomZ3Q7IFRvOiBTdG9yYWdlIFBlcmZvcm1hbmNl IERldmVsb3BtZW50IEtpdDxicj4KJmd0OyBTdWJqZWN0OiBSZTogW1NQREtdIEJ1aWxkaW5nIHNw ZGsgb24gQ2VudE9TNjxicj4KJmd0OyZuYnNwOyA8YnI+CiZndDsgSGkgU2hhaGFyLDxicj4KJmd0 OyZuYnNwOyA8YnI+CiZndDsgSSYjODIxNzt2ZSBwdXNoZWQgYSBwYXRjaCBmb3IgdGhlIFNQREsg bWFzdGVyIGJyYW5jaCB0aGF0IHNob3VsZCBhbGxvdyBpdCB0byBjb21waWxlPGJyPgomZ3Q7IHdp dGggRFBESyAxNi4wNzogPGEgaHJlZj0iaHR0cHM6Ly9yZXZpZXcuZ2Vycml0aHViLmlvLyMvYy9z cGRrL3NwZGsvJiM0MzsvNDA4NzQzLyIgaWQ9IkxQbG5rNTcyNzEyIj4KaHR0cHM6Ly9yZXZpZXcu Z2Vycml0aHViLmlvLyMvYy9zcGRrL3NwZGsvJiM0MzsvNDA4NzQzLzwvYT48YnI+CiZndDsmbmJz cDsgPGJyPgomZ3Q7IEdlcnJpdCBDb2RlIFJldmlldzxicj4KJmd0OyZuYnNwOyA8YnI+CiZndDsg cmV2aWV3LmdlcnJpdGh1Yi5pbzxicj4KJmd0OyZuYnNwOyA8YnI+CiZndDsgS2VlcCBpbiB0b3Vj aC4gQ29weXJpZ2h0ICZjb3B5OyAyMDE3IHwgR2Vycml0Rm9yZ2UgTHRkLiA8YSBocmVmPSJtYWls dG86aW5mb0BnZXJyaXRmb3JnZS5jb20iPgppbmZvQGdlcnJpdGZvcmdlLmNvbTwvYT48YnI+CiZn dDsgPGEgaHJlZj0iaHR0cDovL3d3dy5nZXJyaXRmb3JnZS5jb20iIGlkPSJMUGxuazMwNjMyIj53 d3cuZ2Vycml0Zm9yZ2UuY29tPC9hPjxicj4KJmd0OyZuYnNwOyA8YnI+CiZndDsmbmJzcDsgPGJy PgomZ3Q7IEhvd2V2ZXIsIERQREsgMTYuMDcgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCB1cHN0cmVh bTsgSSBoaWdobHkgcmVjb21tZW5kIHRoYXQ8YnI+CiZndDsgeW91IHVwZGF0ZSB0byBhIG5ld2Vy IHZlcnNpb24uIFNQREsgaXMgY3VycmVudGx5IHRlc3RlZCB3aXRoIERQREsgMTguMDIuPGJyPgom Z3Q7Jm5ic3A7IDxicj4KJmd0OyBUaGUgVkZJTyBpc3N1ZSB5b3UgbWVudGlvbiBoYXMgYWxzbyBi ZWVuIGZpeGVkIG9uIFNQREsgbWFzdGVyLCBhbmQgaXQgd2lsbCBiZTxicj4KJmd0OyBwYXJ0IG9m IHRoZSBTUERLIHYxOC4wNCByZWxlYXNlLjxicj4KJmd0OyZuYnNwOyA8YnI+CiZndDsgVGhhbmtz LDxicj4KJmd0OyAtLSBEYW5pZWw8YnI+CiZndDsmbmJzcDsgPGJyPgomZ3Q7IEZyb206IFNQREsg WzxhIGhyZWY9Im1haWx0bzpzcGRrLWJvdW5jZXNAbGlzdHMuMDEub3JnIiBpZD0iTFBsbms4Mjkx MDAiPm1haWx0bzpzcGRrLWJvdW5jZXNAbGlzdHMuMDEub3JnPC9hPl0gT24gQmVoYWxmIE9mIFNo YWhhciBTYWx6bWFuPGJyPgomZ3Q7IFNlbnQ6IFN1bmRheSwgQXByaWwgMjIsIDIwMTggNjo0MSBB TTxicj4KJmd0OyBUbzogU3RvcmFnZSBQZXJmb3JtYW5jZSBEZXZlbG9wbWVudCBLaXQgJmx0Ozxh IGhyZWY9Im1haWx0bzpzcGRrQGxpc3RzLjAxLm9yZyI+c3Bka0BsaXN0cy4wMS5vcmc8L2E+Jmd0 Ozxicj4KJmd0OyBTdWJqZWN0OiBbU1BES10gQnVpbGRpbmcgc3BkayBvbiBDZW50T1M2PGJyPgom Z3Q7Jm5ic3A7IDxicj4KJmd0OyBIaSw8YnI+CiZndDsmbmJzcDsgPGJyPgomZ3Q7IEZpbmFsbHkg Z290IHRvIGxvb2tpbmcgYXQgc3VwcG9ydCBvZiBzcGRrIGJ1aWxkIG9uIENlbnRPUzYsIHRoaW5n cyBsb29rIGdvb2QsPGJyPgomZ3Q7IGV4Y2VwdCBmb3Igb25lIGlzc3VlLjxicj4KJmd0OyBzcGRr IGlzIGxhdGVzdCAxOC4wMS54IHZlcnNpb24sIGRwZGsgaXMgMTYuMDcgKCYjNDM7MyBkcGRrIHBh dGNoZXMgdG8gYWxsb3c8YnI+CiZndDsgY29tcGlsYXRpb24pIGFuZCBzb21lIG1pbm9yIHBhdGNo ZXMgKG1haW5seSBzb21lIG1lbW9yeSBjb25maWd1cmF0aW9uIHN0dWZmKSw8YnI+CiZndDsga2Vy bmVsIGlzIGEgcGF0Y2hlZCA0LjkuNi48YnI+CiZndDsmbmJzcDsgPGJyPgomZ3Q7IGJ1aWxkIHN1 Y2NlZWRlZCBleGNlcHQgZm9yIHRoZSB1c2FnZSBvZiB0aGUgZHBkayBmdW5jdGlvbiBwY2lfdmZp b19pc19lbmFibGVkLjxicj4KJmd0OyBJIGhhZCB0byBhcHBseSB0aGUgcGF0Y2ggYmVsbG93LCBy ZW1vdmluZyB0aGUgdXNhZ2Ugb2YgdGhpcyBmdW5jdGlvbiBhbmQgdGhlbjxicj4KJmd0OyBjb21w aWxhdGlvbiBjb21wbGV0ZWQgd2l0aG91dCBhbnkgaXNzdWVzLjxicj4KJmd0OyZuYnNwOyA8YnI+ CiZndDsgSXQgc2VlbXMgdGhhdCBJIGFtIG1pc3Npbmcgc29tZSBzb3J0IG9mIGRwZGsgY29uZmln dXJhdGlvbiBhcyBJIHNlZSB0aGF0IHRoZTxicj4KJmd0OyBmdW5jdGlvbiBpcyBidWlsdCwgYnV0 IG5vdCBwYWNrYWdlZCBpbnRvIHRoZSBnZW5lcmF0ZWQgYXJjaGl2ZS48YnI+CiZndDsmbmJzcDsg PGJyPgomZ3Q7IEkgd2VudCBiYWNrIHRvIHNxdWFyZSBvbmUgYW5kIHJhbiB0aGUgaW5zdHJ1Y3Rp b25zIGluIDxhIGhyZWY9Imh0dHA6Ly93d3cuc3Bkay5pby9kb2MvZyIgaWQ9IkxQbG5rMjkzMzAx Ij4KaHR0cDovL3d3dy5zcGRrLmlvL2RvYy9nPC9hPjxicj4KJmd0OyBldHRpbmdfc3RhcnRlZC5o dG1sLCBidXQgSSBzZWUgbm8gbWVudGlvbiBvZiBkcGRrIHRoZXJlLiBBY3R1YWxseSB0aGU8YnI+ CiZndDsgLi9jb25maWd1cmUgcmVxdWlyZXMgaXQuPGJyPgomZ3Q7Jm5ic3A7IDxicj4KJmd0OyBN eSBuZXh0IHN0ZXAgaXMgdG8gdXNlIGEgbW9yZSByZWNlbnQgZHBkaywgYnV0IHNob3VsZG4ndCB0 aGlzIHdvcmsgd2l0aCBteTxicj4KJmd0OyB2ZXJzaW9uPyBBbSBJIG1pc3Npbmcgc29tZSBkcGRr IGNvbmZpZ3VyYXRpb24/PGJyPgomZ3Q7IEJUVywgYXMgd2UgYXJlIG5vdCB1c2luZyB2aG9zdCwg b24gb3VyIDE3LjA3IHZlcnNpb24gd2Ugc2ltcGx5IHVzZTxicj4KJmd0OyBDT05GSUdfVkhPU1Q9 biBpbiBvcmRlciB0byBza2lwIHRoaXMsIGJ1dCBJIHdvdWxkIGJlIGhhcHBpZXIgaWYgd2UgdXNl ZCBhPGJyPgomZ3Q7IGJldHRlciBzb2x1dGlvbi48YnI+CiZndDsmbmJzcDsgPGJyPgomZ3Q7IFNo YWhhcjxicj4KJmd0OyZuYnNwOyA8YnI+CiZndDsgUC5TLiBIZXJlIGlzIHRoZSBwYXRjaCB0byBy ZW1vdmUgdXNlIG9mIHRoaXMgZnVuY3Rpb246PGJyPgomZ3Q7IGRpZmYgLS1naXQgYS9saWIvZW52 X2RwZGsvdnRvcGh5cy5jIGIvbGliL2Vudl9kcGRrL3Z0b3BoeXMuYzxicj4KJmd0OyBpbmRleCA5 MmFhMjU2Li5mMzg5MjlmIDEwMDY0NDxicj4KJmd0OyAtLS0gYS9saWIvZW52X2RwZGsvdnRvcGh5 cy5jPGJyPgomZ3Q7ICYjNDM7JiM0MzsmIzQzOyBiL2xpYi9lbnZfZHBkay92dG9waHlzLmM8YnI+ CiZndDsgQEAgLTUzLDggJiM0Mzs1MywxMCBAQDxicj4KJmd0OyZuYnNwOyAjZGVmaW5lIFNQREtf VkZJT19FTkFCTEVEIDE8YnI+CiZndDsmbmJzcDsgI2luY2x1ZGUgJmx0O2xpbnV4L3ZmaW8uaCZn dDs8YnI+CiZndDsmbmJzcDsgPGJyPgomZ3Q7ICYjNDM7I2lmIDA8YnI+CiZndDsmbmJzcDsgLyog SW50ZXJuYWwgRFBESyBmdW5jdGlvbiBmb3J3YXJkIGRlY2xhcmF0aW9uICovPGJyPgomZ3Q7Jm5i c3A7IGludCBwY2lfdmZpb19pc19lbmFibGVkKHZvaWQpOzxicj4KJmd0OyAmIzQzOyNlbmRpZjxi cj4KJmd0OyZuYnNwOyA8YnI+CiZndDsmbmJzcDsgc3RydWN0IHNwZGtfdmZpb19kbWFfbWFwIHs8 YnI+CiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsg c3RydWN0IHZmaW9faW9tbXVfdHlwZTFfZG1hX21hcCBtYXA7PGJyPgomZ3Q7IEBAIC0zNDEsOSAm IzQzOzM0MywxMSBAQCBzcGRrX3Z0b3BoeXNfaW9tbXVfaW5pdCh2b2lkKTxicj4KJmd0OyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBESVIgKmRpcjs8YnI+ CiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgc3Ry dWN0IGRpcmVudCAqZDs8YnI+CiZndDsmbmJzcDsgPGJyPgomZ3Q7ICYjNDM7I2lmIDA8YnI+CiZn dDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgaWYgKCFw Y2lfdmZpb19pc19lbmFibGVkKCkpIHs8YnI+CiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsgcmV0dXJuOzxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB9PGJyPgomZ3Q7ICYjNDM7I2VuZGlmPGJyPgomZ3Q7Jm5i c3A7IDxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyBkaXIgPSBvcGVuZGlyKCZxdW90Oy9wcm9jL3NlbGYvZmQmcXVvdDspOzxicj4KJmd0OyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBpZiAoIWRpcikg ezxicj4KJmd0OyZuYnNwOyA8YnI+CiZndDsmbmJzcDsgPGJyPgomZ3Q7IF9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fPGJyPgomZ3Q7IFNQREsgbWFpbGluZyBs aXN0PGJyPgomZ3Q7IDxhIGhyZWY9Im1haWx0bzpTUERLQGxpc3RzLjAxLm9yZyI+U1BES0BsaXN0 cy4wMS5vcmc8L2E+PGJyPgomZ3Q7IDxhIGhyZWY9Imh0dHBzOi8vbGlzdHMuMDEub3JnL21haWxt YW4vbGlzdGluZm8vc3BkayIgaWQ9IkxQbG5rNjYxMzQyIj5odHRwczovL2xpc3RzLjAxLm9yZy9t YWlsbWFuL2xpc3RpbmZvL3NwZGs8L2E+PGJyPgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXzxicj4KU1BESyBtYWlsaW5nIGxpc3Q8YnI+CjxhIGhyZWY9Im1h aWx0bzpTUERLQGxpc3RzLjAxLm9yZyI+U1BES0BsaXN0cy4wMS5vcmc8L2E+PGJyPgo8YSBocmVm PSJodHRwczovL2xpc3RzLjAxLm9yZy9tYWlsbWFuL2xpc3RpbmZvL3NwZGsiIGlkPSJMUGxuazU4 OTI4MSI+aHR0cHM6Ly9saXN0cy4wMS5vcmcvbWFpbG1hbi9saXN0aW5mby9zcGRrPC9hPjwvc3Bh bj48bzpwPjwvbzpwPjwvcD4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8L2Rp dj4KPC9kaXY+CjwvYm9keT4KPC9odG1sPgo= --===============0213159298928982381==--