From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============5107251584125621564==" MIME-Version: 1.0 From: John Meneghini Subject: Re: [SPDK] SPDK Dependencies Date: Fri, 05 May 2017 06:08:31 -0400 Message-ID: <56D7A185-1372-478E-B0CE-202D8507FAB9@gmail.com> In-Reply-To: DBC9FDC8-C2B6-4217-833B-A11AA87836F3@gmail.com List-ID: To: spdk@lists.01.org --===============5107251584125621564== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable I=E2=80=99ve closed all of my prior pull requests and the process of integr= ating patches from Master Pull request for DPDK and Posix abstraction chang= es into SPDK has begun. = Ben and Daniel are working on this, and they have agreed to publish a Githu= b pull request for each patch they rework before they commit it into the ma= ster branch. = I would encourage others to watch https://github.com/spdk/spdk/pulls and participate in the process of reviewing = these changes. = John Meneghini john.a.meneghini(a)gmail.com > On May 2, 2017, at 10:23 PM, John Meneghini wrote: > = > All of the changes that we are proposing to abstract DPDK and POSIX are r= olled up in pull request #152 > = > Master Pull request for DPDK and Posix abstraction changes. > = > I don=E2=80=99t expect these changes to go in all at once. Instead, I wi= ll be cherry picking two or three patches at a time from this branch and su= bmitting separate, smaller, pull requests for each testable set of changes. > = > I encourage everyone to please review these changes and add your comments= . If you are interested in taking a whole copy into your private repo to te= st and experiment with, I encourage you to clone my Github fork at https://= github.com/johnmeneghini/spdk.git and checkout the spdk_eal10 branch. (Note: you can ignore all of the ot= her branches in this repo. I need to clean it up). Also note that very li= ttle testing has been done with this branch yet. I am still trying to repl= icate the Intel CIT environment in my test lab so only the simplest of test= ing has been done with this branch. > = > A few of these patches seem pretty invasive because they touch many files= . For example: system: Remove userspace header file dependencies . However, only the following files and libraries have been converted= . This is the complete list of applications and libraries that have been c= onverted to abstract all DPDK and POSIX dependencies. > = > [libspdk_nvmf_tgt_app.a] > spdk/app/nvmf_tgt/conf.c > spdk/app/nvmf_tgt/nvmf_tgt.c > = > [libspdk_bdev.a] > spdk/lib/bdev/bdev.c > = > [libspdk_conf.a] > spdk/lib/conf/conf.c > = > [libspdk_copy.a] > spdk/lib/copy/copy_engine.c > = > [libspdk_event.a] > spdk/lib/event/app.c > spdk/lib/event/app_config.c > spdk/lib/event/reactor.c > spdk/lib/event/subsystem.c > = > [libspdk_json.a] > spdk/lib/json/json_parse.c > spdk/lib/json/json_util.c > spdk/lib/json/json_write.c > = > [libspdk_log.a] > spdk/lib/log/log.c > = > [libspdk_nvme.a] > spdk/lib/nvme/nvme.c > spdk/lib/nvme/nvme_ctrlr.c > spdk/lib/nvme/nvme_ctrlr_cmd.c > spdk/lib/nvme/nvme_ns.c > spdk/lib/nvme/nvme_ns_cmd.c > spdk/lib/nvme/nvme_pcie.c > spdk/lib/nvme/nvme_qpair.c > spdk/lib/nvme/nvme_quirks.c > spdk/lib/nvme/nvme_rdma.c > spdk/lib/nvme/nvme_transport.c > spdk/lib/nvme/nvme_uevent.c > = > [libspdk_nvmf.a] > spdk/lib/nvmf/direct.c > spdk/lib/nvmf/discovery.c > spdk/lib/nvmf/nvmf.c > spdk/lib/nvmf/rdma.c > spdk/lib/nvmf/request.c > spdk/lib/nvmf/session.c > spdk/lib/nvmf/subsystem.c > spdk/lib/nvmf/transport.c > spdk/lib/nvmf/virtual.c > = > [libspdk_trace.a] > spdk/lib/trace/trace.c > = > [libspdk_util.a] > spdk/lib/util/bit_array.c > spdk/lib/util/fd.c > spdk/lib/util/io_channel.c > spdk/lib/util/string.c > = > John Meneghini > john.a.meneghini(a)gmail.com > = > = > = >> On Apr 29, 2017, at 7:38 AM, Rodriguez, Edwin > wrote: >> = >> Usage of printf/fprintf ought to be replaced with SPDK logging calls so = users of the library can control the UI. Then there are posix calls in the= library to abort/exit, for which the library should be reworked to elimina= te. Nobody=E2=80=99s keen on a library that aborts the app when parameter = validation fails ( I=E2=80=99d also like to see some way to avoid setting = signal handlers in the library, or at least block it out with an ifdef sect= ion so that users can manage signals on their own. >> = >> The remaining posix calls are to malloc/free/strdup/calloc, etc which ar= e harder to manage in non-posix environments. Kernel allocators take multi= ple parameters besides the size - they track what system is using memory an= d flags to manage various attributes like memory region (dma, pci, etc), sh= ould the call block, etc. Even if you get it to compile, then linking call= ers of single argument malloc with a kernel malloc that expects 3 arguments= is going to have unpleasant results. So, I=E2=80=99d prefer an spdk env a= bstraction for the allocation calls to allow implementers of new environmen= ts to better manage memory. >> = >> I like the idea of an =E2=80=9Cspdk/stdinc.h=E2=80=9D that collects all = the std system headers in one place. You could even make checking for it p= art of the format checks so that all library sources include it first. Or = better yet as you point out, use =E2=80=98-include=E2=80=99 to include it i= n all sources and have a makefile option that will allow users to replace i= t with their own version. >> = >> Ed R >> = >> On 4/26/17, 6:09 PM, "SPDK on behalf of Walker, Benjamin" on behalf of benjamin.w= alker(a)intel.com > wrote: >> = >> At the summit we did end up discussing this quite a bit. For DPDK it'= s fairly >> clear that we're going to continue to abstract away all of those depe= ndencies >> inside of the env library. There are pull requests out to finish this= up now and >> we'll get those merged relatively quickly. We're also working with th= e DPDK team >> to improve DPDK so that there are hopefully fewer reasons to forego u= sing it. >> = >> As far as POSIX, I have a proposal. Assuming POSIX is available makes= it >> significantly easier to work on SPDK itself, so I'm very hesitant to = move all >> POSIX calls inside of the env library and force people to use wrapper= functions. >> I'm concerned that it raises the barrier to contribute too much (can = I call >> malloc? what about printf?). Further, the vast majority of SPDK users= actually >> do have POSIX available to them. That said, there are probably parts = that we can >> abstract out and some other refactoring we can do here. >> = >> First, I think pthreads can be refactored into the env library. Locki= ng and >> spawning threads is rare enough in SPDK that it isn't an undue burden= to use >> wrappers, and it also requires some care regarding CPU affinity. So t= he below >> discussion excludes that. >> = >> Second, I think we can get away with moving all of our POSIX headers = to a single >> SPDK header file at spdk/stdinc.h. We can then include that file ever= ywhere >> either directly or by using a -include option in the Makefile. This w= ill even >> play nicely with precompiling spdk/stdinc.h (thanks Daniel for the su= ggestion), >> although SPDK's build times are not a concern right now. >> = >> Third, for the small subset of SPDK users that really don't have POSIX >> available, they can carry a patch on top of SPDK that simply replaces >> spdk/stdinc.h with their own implementation. Most environments have a= t least >> some part of the POSIX standard, and 90% of what we're using is just = the C >> standard library, so in reality this header shouldn't be too difficul= t to >> replace. >> = >> Thoughts? Opinions? >> = >> Thanks, >> Ben >> = >> = >> On Mon, 2017-04-17 at 18:55 +0000, Walker, Benjamin wrote: >>> Hi all, >>> = >>> There has been a lot of activity lately dealing with abstracting SPDK's >>> dependencies to allow porting SPDK to additional platforms and framewor= ks. I >>> think we'll end up talking about this extensively at the summit this we= ek. The >>> ability to use SPDK in a variety of environments is very important to u= s, so I >>> look forward to the discussions. I wanted to write a basic summary of t= he >>> current state of SPDK's dependencies for everyone to have, and so that = those >>> who are unable to attend the summit can provide feedback. I'll try to u= pdate >>> this thread with the results of the discussions at the summit for every= one's >>> benefit. >>> = >>> We've already eliminated all SPDK dependencies except for two: >>> = >>> 1) POSIX >>> 2) DPDK >>> = >>> SPDK already has a mechanism for abstracting away the "environment" it = is >>> running in. We do this by moving all calls to dependencies to the "env" >>> library, whose interface is defined by include/spdk/env.h. The build sy= stem >>> allows users to point to an alternate implementation of the env library= if >>> required. SPDK's default implementation of env is based on DPDK and run= s in >>> Linux and FreeBSD user space. >>> = >>> DPDK is a very large toolkit, of course, but until just recently SPDK o= nly >>> used DPDK's 'eal' module (environment abstraction library). The origina= l goal >>> of the SPDK env library was just to abstract all uses of DPDK's eal, bu= t not >>> all uses of POSIX APIs. We made some progress in this area, but there a= re a >>> number of remaining calls as of this writing. Fortunately, the wider co= mmunity >>> has really come through. There are at least two pull requests out from = two >>> independent users that mostly finish the job. We'll work through those = pull >>> requests and try to get them merged shortly. The only part of the code = that >>> will continue to explicitly depend on DPDK will be the newly released v= host- >>> scsi target because that relies on DPDK vhost infrastructure. This >>> infrastructure is outside of DPDK's eal and is quite extensive. We feel= this >>> is acceptable because building vhost in SPDK is optional - you can just= turn >>> it off to eliminate the dependency. >>> = >>> There are a number of legitimate reasons to want to remove the DPDK dep= endency >>> from SPDK. For instance, DPDK dictates a particular memory management m= odel, >>> requires a specific threading model, and performs PCI device management= that >>> may conflict with other libraries. However, DPDK provides tremendous va= lue to >>> SPDK in a number of areas, especially by implementing memory allocation >>> suitable for DMA in user space. Memory management is a major challenge = with >>> all sorts of hidden traps and challenges, so we see significant value i= n using >>> a production-tested library here. Re-implement the env without DPDK at = your >>> own risk! >>> = >>> Abstracting away our POSIX dependency is a similar but larger challenge= . While >>> we foresaw the need for people to replace DPDK, we didn't see any use c= ase for >>> dropping POSIX. We were definitely wrong though - people are using SPDK= in all >>> sorts of environments that we didn't predict, from embedded firmware to >>> operating system kernels and beyond. So we'll need to address this as t= ime >>> goes on. I think this will result in further expansion of the 'env' lib= rary. >>> Fortunately, we don't require too much from POSIX - mostly pthreads, th= e C >>> standard library, and maybe a couple of other miscellaneous headers. >>> = >>> There are other less obvious dependencies in SPDK. For instance, it also >>> depends on a relatively recent version of gcc or clang. This is mostly a >>> practical concern and not so much by intention. Our continuous integrat= ion >>> system (which I'll talk about at the summit - exciting developments her= e) >>> currently consists of 4 machines, 3 of which are running Fedora Linux 2= 5 while >>> the other is running FreeBSD 11.0. These are very much up to date syste= ms, so >>> we tend not to catch bugs on older systems today. We also use cutting e= dge C >>> features and tools, so we'll probably over time need to select a partic= ular >>> minimum version of the C standard that we're going to develop to. >>> = >>> I'm also concerned with the scope of the env library and I'd like to wo= rk as >>> hard as possible to limit the size of the API. This is for two reasons = - first >>> and foremost to minimize the number of calls to these wrapper functions= so >>> that it doesn't impact performance. Performance really is everything an= d we >>> can't sacrifice that. This isn't shaping up to be much of a problem so = far >>> because very few calls to our dependencies happen within the I/O path. >>> Secondarily, I'd like to make it as straightforward as possible for use= rs to >>> re-implement the env. The best way to make it easy to do that is to kee= p the >>> API small. >>> = >>> I look forward to the discussions at the summit this week. We'd love to= hear >>> about all of the different environments, platforms, and frameworks wher= e SPDK >>> is being used and how we can make it easier to integrate SPDK wherever = it is >>> valuable. >>> = >>> Thanks, >>> Ben >>> = >>> = >>> _______________________________________________ >>> 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 > = --===============5107251584125621564== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0 L2h0bWwgY2hhcnNldD11dGYtOCI+PC9oZWFkPjxib2R5IHN0eWxlPSJ3b3JkLXdyYXA6IGJyZWFr LXdvcmQ7IC13ZWJraXQtbmJzcC1tb2RlOiBzcGFjZTsgLXdlYmtpdC1saW5lLWJyZWFrOiBhZnRl ci13aGl0ZS1zcGFjZTsiIGNsYXNzPSIiPknigJl2ZSBjbG9zZWQgYWxsIG9mIG15IHByaW9yIHB1 bGwgcmVxdWVzdHMgYW5kIHRoZSBwcm9jZXNzIG9mIGludGVncmF0aW5nIHBhdGNoZXMgZnJvbSZu YnNwOzxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zcGRrL3NwZGsvcHVsbC8xNTIiIGNsYXNz PSIiPk1hc3RlciBQdWxsIHJlcXVlc3QgZm9yIERQREsgYW5kIFBvc2l4IGFic3RyYWN0aW9uIGNo YW5nZXM8L2E+Jm5ic3A7aW50byBTUERLIGhhcyBiZWd1bi4gJm5ic3A7PGRpdiBjbGFzcz0iIj48 YnIgY2xhc3M9IiI+PC9kaXY+PGRpdiBjbGFzcz0iIj5CZW4gYW5kIERhbmllbCBhcmUgd29ya2lu ZyBvbiB0aGlzLCBhbmQgdGhleSBoYXZlIGFncmVlZCB0byBwdWJsaXNoIGEgR2l0aHViIHB1bGwg cmVxdWVzdCBmb3IgZWFjaCBwYXRjaCB0aGV5IHJld29yayBiZWZvcmUgdGhleSBjb21taXQgaXQg aW50byB0aGUgbWFzdGVyIGJyYW5jaC48L2Rpdj48ZGl2IGNsYXNzPSIiPiZuYnNwOzwvZGl2Pjxk aXYgY2xhc3M9IiI+SSB3b3VsZCBlbmNvdXJhZ2Ugb3RoZXJzIHRvIHdhdGNoIDxhIGhyZWY9Imh0 dHBzOi8vZ2l0aHViLmNvbS9zcGRrL3NwZGsvcHVsbHMiIGNsYXNzPSIiPmh0dHBzOi8vZ2l0aHVi LmNvbS9zcGRrL3NwZGsvcHVsbHM8L2E+Jm5ic3A7YW5kIHBhcnRpY2lwYXRlIGluIHRoZSBwcm9j ZXNzIG9mIHJldmlld2luZyB0aGVzZSBjaGFuZ2VzLjxkaXYgY2xhc3M9IiI+Jm5ic3A7PGJyIGNs YXNzPSIiPjxkaXYgY2xhc3M9IiI+CjxkaXYgY2xhc3M9IiI+Sm9obiBNZW5lZ2hpbmk8L2Rpdj48 ZGl2IGNsYXNzPSIiPjxhIGhyZWY9Im1haWx0bzpqb2huLmEubWVuZWdoaW5pQGdtYWlsLmNvbSIg Y2xhc3M9IiI+am9obi5hLm1lbmVnaGluaUBnbWFpbC5jb208L2E+PC9kaXY+PGRpdiBjbGFzcz0i Ij48YnIgY2xhc3M9IiI+PC9kaXY+Cgo8L2Rpdj4KPGJyIGNsYXNzPSIiPjxkaXY+PGJsb2NrcXVv dGUgdHlwZT0iY2l0ZSIgY2xhc3M9IiI+PGRpdiBjbGFzcz0iIj5PbiBNYXkgMiwgMjAxNywgYXQg MTA6MjMgUE0sIEpvaG4gTWVuZWdoaW5pICZsdDs8YSBocmVmPSJtYWlsdG86am9obi5hLm1lbmVn aGluaUBnbWFpbC5jb20iIGNsYXNzPSIiPmpvaG4uYS5tZW5lZ2hpbmlAZ21haWwuY29tPC9hPiZn dDsgd3JvdGU6PC9kaXY+PGJyIGNsYXNzPSJBcHBsZS1pbnRlcmNoYW5nZS1uZXdsaW5lIj48ZGl2 IGNsYXNzPSIiPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9o dG1sIGNoYXJzZXQ9dXRmLTgiIGNsYXNzPSIiPjxkaXYgc3R5bGU9IndvcmQtd3JhcDogYnJlYWst d29yZDsgLXdlYmtpdC1uYnNwLW1vZGU6IHNwYWNlOyAtd2Via2l0LWxpbmUtYnJlYWs6IGFmdGVy LXdoaXRlLXNwYWNlOyIgY2xhc3M9IiI+QWxsIG9mIHRoZSBjaGFuZ2VzIHRoYXQgd2UgYXJlIHBy b3Bvc2luZyB0byBhYnN0cmFjdCBEUERLIGFuZCBQT1NJWCBhcmUgcm9sbGVkIHVwIGluIHB1bGwg cmVxdWVzdCAjMTUyPGRpdiBjbGFzcz0iIj48YnIgY2xhc3M9IiI+PC9kaXY+PGRpdiBjbGFzcz0i Ij48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc3Bkay9zcGRrL3B1bGwvMTUyIiBjbGFzcz0i Ij5NYXN0ZXIgUHVsbCByZXF1ZXN0IGZvciBEUERLIGFuZCBQb3NpeCBhYnN0cmFjdGlvbiBjaGFu Z2VzLjwvYT48L2Rpdj48ZGl2IGNsYXNzPSIiPjxiciBjbGFzcz0iIj48L2Rpdj48ZGl2IGNsYXNz PSIiPkkgZG9u4oCZdCBleHBlY3QgdGhlc2UgY2hhbmdlcyB0byBnbyBpbiBhbGwgYXQgb25jZS4g Jm5ic3A7SW5zdGVhZCwgSSB3aWxsIGJlIGNoZXJyeSBwaWNraW5nIHR3byBvciB0aHJlZSBwYXRj aGVzIGF0IGEgdGltZSBmcm9tIHRoaXMgYnJhbmNoIGFuZCBzdWJtaXR0aW5nIHNlcGFyYXRlLCBz bWFsbGVyLCBwdWxsIHJlcXVlc3RzIGZvciBlYWNoIHRlc3RhYmxlIHNldCBvZiBjaGFuZ2VzLjwv ZGl2PjxkaXYgY2xhc3M9IiI+PGJyIGNsYXNzPSIiPjwvZGl2PjxkaXYgY2xhc3M9IiI+SSBlbmNv dXJhZ2UgZXZlcnlvbmUgdG8gcGxlYXNlIHJldmlldyB0aGVzZSBjaGFuZ2VzIGFuZCBhZGQgeW91 ciBjb21tZW50cy4gSWYgeW91IGFyZSBpbnRlcmVzdGVkIGluIHRha2luZyBhIHdob2xlIGNvcHkg aW50byB5b3VyIHByaXZhdGUgcmVwbyB0byB0ZXN0IGFuZCBleHBlcmltZW50IHdpdGgsIEkgZW5j b3VyYWdlIHlvdSB0byBjbG9uZSBteSBHaXRodWIgZm9yayBhdCZuYnNwOzxhIGhyZWY9Imh0dHBz Oi8vZ2l0aHViLmNvbS9qb2hubWVuZWdoaW5pL3NwZGsuZ2l0IiBjbGFzcz0iIj5odHRwczovL2dp dGh1Yi5jb20vam9obm1lbmVnaGluaS9zcGRrLmdpdDwvYT4mbmJzcDthbmQmbmJzcDtjaGVja291 dCB0aGUgc3Bka19lYWwxMCBicmFuY2guICZuYnNwOyhOb3RlOiB5b3UgY2FuIGlnbm9yZSBhbGwg b2YgdGhlIG90aGVyIGJyYW5jaGVzIGluIHRoaXMgcmVwby4gJm5ic3A7SSBuZWVkIHRvIGNsZWFu IGl0IHVwKS4gJm5ic3A7QWxzbyBub3RlIHRoYXQgdmVyeSBsaXR0bGUgdGVzdGluZyBoYXMgYmVl biBkb25lIHdpdGggdGhpcyBicmFuY2ggeWV0LiAmbmJzcDtJIGFtIHN0aWxsIHRyeWluZyB0byBy ZXBsaWNhdGUgdGhlIEludGVsIENJVCBlbnZpcm9ubWVudCBpbiBteSB0ZXN0IGxhYiBzbyBvbmx5 IHRoZSBzaW1wbGVzdCBvZiB0ZXN0aW5nIGhhcyBiZWVuIGRvbmUgd2l0aCB0aGlzIGJyYW5jaC48 L2Rpdj48ZGl2IGNsYXNzPSIiPjxiciBjbGFzcz0iIj48L2Rpdj48ZGl2IGNsYXNzPSIiPkEgZmV3 IG9mIHRoZXNlIHBhdGNoZXMgc2VlbSBwcmV0dHkgaW52YXNpdmUgYmVjYXVzZSB0aGV5IHRvdWNo IG1hbnkgZmlsZXMuICZuYnNwO0ZvciBleGFtcGxlOiAmbmJzcDs8YSBocmVmPSJodHRwczovL2dp dGh1Yi5jb20vc3Bkay9zcGRrL3B1bGwvMTUyL2NvbW1pdHMvZTVmYzBiZmU1M2JhNjE4NDI1ZTNj ZmU4OWFiZDM2ODlhMmZiZGM5YiIgY2xhc3M9IiI+c3lzdGVtOiBSZW1vdmUgdXNlcnNwYWNlIGhl YWRlciBmaWxlIGRlcGVuZGVuY2llczwvYT4uICZuYnNwO0hvd2V2ZXIsIG9ubHkgdGhlIGZvbGxv d2luZyBmaWxlcyBhbmQgbGlicmFyaWVzIGhhdmUgYmVlbiBjb252ZXJ0ZWQuICZuYnNwO1RoaXMg aXMgdGhlIGNvbXBsZXRlIGxpc3Qgb2YgYXBwbGljYXRpb25zIGFuZCBsaWJyYXJpZXMgdGhhdCBo YXZlIGJlZW4gY29udmVydGVkIHRvIGFic3RyYWN0IGFsbCBEUERLIGFuZCBQT1NJWCBkZXBlbmRl bmNpZXMuPC9kaXY+PGRpdiBjbGFzcz0iIj48ZGl2IHN0eWxlPSJtYXJnaW46IDBpbiAwaW4gMC4w MDAxcHQ7IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6IENhbGlicmk7IiBjbGFzcz0iIj48 YnIgY2xhc3M9IiI+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBm b250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpOyIgY2xhc3M9IiI+PHNwYW4gc3R5 bGU9ImZvbnQtc2l6ZTogMTFwdDsiIGNsYXNzPSIiPltsaWJzcGRrX252bWZfdGd0X2FwcC5hXTxv OnAgY2xhc3M9IiI+PC9vOnA+PC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMGluIDBp biAwLjAwMDFwdDsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogQ2FsaWJyaTsiIGNsYXNz PSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDExcHQ7IiBjbGFzcz0iIj5zcGRrL2FwcC9udm1m X3RndC9jb25mLmM8L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAw MXB0OyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpOyIgY2xhc3M9IiI+PHNw YW4gc3R5bGU9ImZvbnQtc2l6ZTogMTFwdDsiIGNsYXNzPSIiPnNwZGsvYXBwL252bWZfdGd0L252 bWZfdGd0LmM8bzpwIGNsYXNzPSIiPjwvbzpwPjwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxlPSJtYXJn aW46IDBpbiAwaW4gMC4wMDAxcHQ7IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6IENhbGli cmk7IiBjbGFzcz0iIj48YnIgY2xhc3M9IiI+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4g MGluIDAuMDAwMXB0OyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpOyIgY2xh c3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTFwdDsiIGNsYXNzPSIiPltsaWJzcGRrX2Jk ZXYuYV08bzpwIGNsYXNzPSIiPjwvbzpwPjwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46 IDBpbiAwaW4gMC4wMDAxcHQ7IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6IENhbGlicmk7 IiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMXB0OyIgY2xhc3M9IiI+c3Bkay9s aWIvYmRldi9iZGV2LmM8L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAu MDAwMXB0OyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpOyIgY2xhc3M9IiI+ PGJyIGNsYXNzPSIiPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsg Zm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogQ2FsaWJyaTsiIGNsYXNzPSIiPjxzcGFuIHN0 eWxlPSJmb250LXNpemU6IDExcHQ7IiBjbGFzcz0iIj5bbGlic3Bka19jb25mLmFdPG86cCBjbGFz cz0iIj48L286cD48L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAw MXB0OyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpOyIgY2xhc3M9IiI+PHNw YW4gc3R5bGU9ImZvbnQtc2l6ZTogMTFwdDsiIGNsYXNzPSIiPnNwZGsvbGliL2NvbmYvY29uZi5j PC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1z aXplOiAxMnB0OyBmb250LWZhbWlseTogQ2FsaWJyaTsiIGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJm b250LXNpemU6IDExcHQ7IiBjbGFzcz0iIj4mbmJzcDs8L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0i bWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiBD YWxpYnJpOyIgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTFwdDsiIGNsYXNzPSIi PltsaWJzcGRrX2NvcHkuYV08bzpwIGNsYXNzPSIiPjwvbzpwPjwvc3Bhbj48L2Rpdj48ZGl2IHN0 eWxlPSJtYXJnaW46IDBpbiAwaW4gMC4wMDAxcHQ7IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1p bHk6IENhbGlicmk7IiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMXB0OyIgY2xh c3M9IiI+c3Bkay9saWIvY29weS9jb3B5X2VuZ2luZS5jPC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9 Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTog Q2FsaWJyaTsiIGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDExcHQ7IiBjbGFzcz0i Ij4mbmJzcDs8L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0 OyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpOyIgY2xhc3M9IiI+PHNwYW4g c3R5bGU9ImZvbnQtc2l6ZTogMTFwdDsiIGNsYXNzPSIiPltsaWJzcGRrX2V2ZW50LmFdPG86cCBj bGFzcz0iIj48L286cD48L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAu MDAwMXB0OyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpOyIgY2xhc3M9IiI+ PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTFwdDsiIGNsYXNzPSIiPnNwZGsvbGliL2V2ZW50L2Fw cC5jPC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9u dC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogQ2FsaWJyaTsiIGNsYXNzPSIiPjxzcGFuIHN0eWxl PSJmb250LXNpemU6IDExcHQ7IiBjbGFzcz0iIj5zcGRrL2xpYi9ldmVudC9hcHBfY29uZmlnLmM8 L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNp emU6IDEycHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpOyIgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZv bnQtc2l6ZTogMTFwdDsiIGNsYXNzPSIiPnNwZGsvbGliL2V2ZW50L3JlYWN0b3IuYzxvOnAgY2xh c3M9IiI+PC9vOnA+PC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMGluIDBpbiAwLjAw MDFwdDsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogQ2FsaWJyaTsiIGNsYXNzPSIiPjxz cGFuIHN0eWxlPSJmb250LXNpemU6IDExcHQ7IiBjbGFzcz0iIj5zcGRrL2xpYi9ldmVudC9zdWJz eXN0ZW0uYzxvOnAgY2xhc3M9IiI+PC9vOnA+PC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdp bjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogQ2FsaWJy aTsiIGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDExcHQ7IiBjbGFzcz0iIj48YnIg Y2xhc3M9IiI+PC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFw dDsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogQ2FsaWJyaTsiIGNsYXNzPSIiPjxzcGFu IHN0eWxlPSJmb250LXNpemU6IDExcHQ7IiBjbGFzcz0iIj5bbGlic3Bka19qc29uLmFdPC9zcGFu PjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAx MnB0OyBmb250LWZhbWlseTogQ2FsaWJyaTsiIGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LXNp emU6IDExcHQ7IiBjbGFzcz0iIj5zcGRrL2xpYi9qc29uL2pzb25fcGFyc2UuYzwvc3Bhbj48L2Rp dj48ZGl2IHN0eWxlPSJtYXJnaW46IDBpbiAwaW4gMC4wMDAxcHQ7IGZvbnQtc2l6ZTogMTJwdDsg Zm9udC1mYW1pbHk6IENhbGlicmk7IiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAx MXB0OyIgY2xhc3M9IiI+c3Bkay9saWIvanNvbi9qc29uX3V0aWwuYzxvOnAgY2xhc3M9IiI+PC9v OnA+PC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9u dC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogQ2FsaWJyaTsiIGNsYXNzPSIiPjxzcGFuIHN0eWxl PSJmb250LXNpemU6IDExcHQ7IiBjbGFzcz0iIj5zcGRrL2xpYi9qc29uL2pzb25fd3JpdGUuYzxv OnAgY2xhc3M9IiI+PC9vOnA+PC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMGluIDBp biAwLjAwMDFwdDsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogQ2FsaWJyaTsiIGNsYXNz PSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDExcHQ7IiBjbGFzcz0iIj4mbmJzcDs8L3NwYW4+ PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6IDEy cHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpOyIgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6 ZTogMTFwdDsiIGNsYXNzPSIiPltsaWJzcGRrX2xvZy5hXTwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxl PSJtYXJnaW46IDBpbiAwaW4gMC4wMDAxcHQ7IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6 IENhbGlicmk7IiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMXB0OyIgY2xhc3M9 IiI+c3Bkay9saWIvbG9nL2xvZy5jPC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMGlu IDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogQ2FsaWJyaTsiIGNs YXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDExcHQ7IiBjbGFzcz0iIj48YnIgY2xhc3M9 IiI+PC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9u dC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogQ2FsaWJyaTsiIGNsYXNzPSIiPjxzcGFuIHN0eWxl PSJmb250LXNpemU6IDExcHQ7IiBjbGFzcz0iIj5bbGlic3Bka19udm1lLmFdPC9zcGFuPjwvZGl2 PjxkaXYgc3R5bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMnB0OyBm b250LWZhbWlseTogQ2FsaWJyaTsiIGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEx cHQ7IiBjbGFzcz0iIj5zcGRrL2xpYi9udm1lL252bWUuYzwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxl PSJtYXJnaW46IDBpbiAwaW4gMC4wMDAxcHQ7IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6 IENhbGlicmk7IiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMXB0OyIgY2xhc3M9 IiI+c3Bkay9saWIvbnZtZS9udm1lX2N0cmxyLmM8bzpwIGNsYXNzPSIiPjwvbzpwPjwvc3Bhbj48 L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBpbiAwaW4gMC4wMDAxcHQ7IGZvbnQtc2l6ZTogMTJw dDsgZm9udC1mYW1pbHk6IENhbGlicmk7IiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXpl OiAxMXB0OyIgY2xhc3M9IiI+c3Bkay9saWIvbnZtZS9udm1lX2N0cmxyX2NtZC5jPG86cCBjbGFz cz0iIj48L286cD48L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAw MXB0OyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpOyIgY2xhc3M9IiI+PHNw YW4gc3R5bGU9ImZvbnQtc2l6ZTogMTFwdDsiIGNsYXNzPSIiPnNwZGsvbGliL252bWUvbnZtZV9u cy5jPG86cCBjbGFzcz0iIj48L286cD48L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAw aW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpOyIg Y2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTFwdDsiIGNsYXNzPSIiPnNwZGsvbGli L252bWUvbnZtZV9uc19jbWQuYzxvOnAgY2xhc3M9IiI+PC9vOnA+PC9zcGFuPjwvZGl2PjxkaXYg c3R5bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMnB0OyBmb250LWZh bWlseTogQ2FsaWJyaTsiIGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDExcHQ7IiBj bGFzcz0iIj5zcGRrL2xpYi9udm1lL252bWVfcGNpZS5jPG86cCBjbGFzcz0iIj48L286cD48L3Nw YW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6 IDEycHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpOyIgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQt c2l6ZTogMTFwdDsiIGNsYXNzPSIiPnNwZGsvbGliL252bWUvbnZtZV9xcGFpci5jPG86cCBjbGFz cz0iIj48L286cD48L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAw MXB0OyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpOyIgY2xhc3M9IiI+PHNw YW4gc3R5bGU9ImZvbnQtc2l6ZTogMTFwdDsiIGNsYXNzPSIiPnNwZGsvbGliL252bWUvbnZtZV9x dWlya3MuYzxvOnAgY2xhc3M9IiI+PC9vOnA+PC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdp bjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogQ2FsaWJy aTsiIGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDExcHQ7IiBjbGFzcz0iIj5zcGRr L2xpYi9udm1lL252bWVfcmRtYS5jPG86cCBjbGFzcz0iIj48L286cD48L3NwYW4+PC9kaXY+PGRp diBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6IDEycHQ7IGZvbnQt ZmFtaWx5OiBDYWxpYnJpOyIgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTFwdDsi IGNsYXNzPSIiPnNwZGsvbGliL252bWUvbnZtZV90cmFuc3BvcnQuYzxvOnAgY2xhc3M9IiI+PC9v OnA+PC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9u dC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogQ2FsaWJyaTsiIGNsYXNzPSIiPjxzcGFuIHN0eWxl PSJmb250LXNpemU6IDExcHQ7IiBjbGFzcz0iIj5zcGRrL2xpYi9udm1lL252bWVfdWV2ZW50LmM8 bzpwIGNsYXNzPSIiPjwvbzpwPjwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBpbiAw aW4gMC4wMDAxcHQ7IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6IENhbGlicmk7IiBjbGFz cz0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMXB0OyIgY2xhc3M9IiI+Jm5ic3A7PC9zcGFu PjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAx MnB0OyBmb250LWZhbWlseTogQ2FsaWJyaTsiIGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LXNp emU6IDExcHQ7IiBjbGFzcz0iIj5bbGlic3Bka19udm1mLmFdPC9zcGFuPjwvZGl2PjxkaXYgc3R5 bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWls eTogQ2FsaWJyaTsiIGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDExcHQ7IiBjbGFz cz0iIj5zcGRrL2xpYi9udm1mL2RpcmVjdC5jPC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdp bjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogQ2FsaWJy aTsiIGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDExcHQ7IiBjbGFzcz0iIj5zcGRr L2xpYi9udm1mL2Rpc2NvdmVyeS5jPG86cCBjbGFzcz0iIj48L286cD48L3NwYW4+PC9kaXY+PGRp diBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6IDEycHQ7IGZvbnQt ZmFtaWx5OiBDYWxpYnJpOyIgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTFwdDsi IGNsYXNzPSIiPnNwZGsvbGliL252bWYvbnZtZi5jPG86cCBjbGFzcz0iIj48L286cD48L3NwYW4+ PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6IDEy cHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpOyIgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6 ZTogMTFwdDsiIGNsYXNzPSIiPnNwZGsvbGliL252bWYvcmRtYS5jPG86cCBjbGFzcz0iIj48L286 cD48L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250 LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpOyIgY2xhc3M9IiI+PHNwYW4gc3R5bGU9 ImZvbnQtc2l6ZTogMTFwdDsiIGNsYXNzPSIiPnNwZGsvbGliL252bWYvcmVxdWVzdC5jPG86cCBj bGFzcz0iIj48L286cD48L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAu MDAwMXB0OyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpOyIgY2xhc3M9IiI+ PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTFwdDsiIGNsYXNzPSIiPnNwZGsvbGliL252bWYvc2Vz c2lvbi5jPG86cCBjbGFzcz0iIj48L286cD48L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2lu OiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJp OyIgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTFwdDsiIGNsYXNzPSIiPnNwZGsv bGliL252bWYvc3Vic3lzdGVtLmM8bzpwIGNsYXNzPSIiPjwvbzpwPjwvc3Bhbj48L2Rpdj48ZGl2 IHN0eWxlPSJtYXJnaW46IDBpbiAwaW4gMC4wMDAxcHQ7IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1m YW1pbHk6IENhbGlicmk7IiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMXB0OyIg Y2xhc3M9IiI+c3Bkay9saWIvbnZtZi90cmFuc3BvcnQuYzxvOnAgY2xhc3M9IiI+PC9vOnA+PC9z cGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXpl OiAxMnB0OyBmb250LWZhbWlseTogQ2FsaWJyaTsiIGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250 LXNpemU6IDExcHQ7IiBjbGFzcz0iIj5zcGRrL2xpYi9udm1mL3ZpcnR1YWwuYzxvOnAgY2xhc3M9 IiI+PC9vOnA+PC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFw dDsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogQ2FsaWJyaTsiIGNsYXNzPSIiPjxzcGFu IHN0eWxlPSJmb250LXNpemU6IDExcHQ7IiBjbGFzcz0iIj48YnIgY2xhc3M9IiI+PC9zcGFuPjwv ZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMnB0 OyBmb250LWZhbWlseTogQ2FsaWJyaTsiIGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6 IDExcHQ7IiBjbGFzcz0iIj5bbGlic3Bka190cmFjZS5hXTwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxl PSJtYXJnaW46IDBpbiAwaW4gMC4wMDAxcHQ7IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6 IENhbGlicmk7IiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMXB0OyIgY2xhc3M9 IiI+c3Bkay9saWIvdHJhY2UvdHJhY2UuYzwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46 IDBpbiAwaW4gMC4wMDAxcHQ7IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6IENhbGlicmk7 IiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMXB0OyIgY2xhc3M9IiI+PGJyIGNs YXNzPSIiPjwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBpbiAwaW4gMC4wMDAxcHQ7 IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6IENhbGlicmk7IiBjbGFzcz0iIj48c3BhbiBz dHlsZT0iZm9udC1zaXplOiAxMXB0OyIgY2xhc3M9IiI+W2xpYnNwZGtfdXRpbC5hXTwvc3Bhbj48 L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBpbiAwaW4gMC4wMDAxcHQ7IGZvbnQtc2l6ZTogMTJw dDsgZm9udC1mYW1pbHk6IENhbGlicmk7IiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXpl OiAxMXB0OyIgY2xhc3M9IiI+c3Bkay9saWIvdXRpbC9iaXRfYXJyYXkuYzwvc3Bhbj48L2Rpdj48 ZGl2IHN0eWxlPSJtYXJnaW46IDBpbiAwaW4gMC4wMDAxcHQ7IGZvbnQtc2l6ZTogMTJwdDsgZm9u dC1mYW1pbHk6IENhbGlicmk7IiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMXB0 OyIgY2xhc3M9IiI+c3Bkay9saWIvdXRpbC9mZC5jPG86cCBjbGFzcz0iIj48L286cD48L3NwYW4+ PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6IDEy cHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpOyIgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6 ZTogMTFwdDsiIGNsYXNzPSIiPnNwZGsvbGliL3V0aWwvaW9fY2hhbm5lbC5jPG86cCBjbGFzcz0i Ij48L286cD48L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0 OyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpOyIgY2xhc3M9IiI+PHNwYW4g c3R5bGU9ImZvbnQtc2l6ZTogMTFwdDsiIGNsYXNzPSIiPnNwZGsvbGliL3V0aWwvc3RyaW5nLmM8 L3NwYW4+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0iIj48YnIgY2xhc3M9IiI+PC9kaXY+PGRpdiBj bGFzcz0iIj48ZGl2IGNsYXNzPSIiPgo8ZGl2IGNsYXNzPSIiPkpvaG4gTWVuZWdoaW5pPC9kaXY+ PGRpdiBjbGFzcz0iIj48YSBocmVmPSJtYWlsdG86am9obi5hLm1lbmVnaGluaUBnbWFpbC5jb20i IGNsYXNzPSIiPmpvaG4uYS5tZW5lZ2hpbmlAZ21haWwuY29tPC9hPjwvZGl2PjxkaXYgY2xhc3M9 IiI+PGJyIGNsYXNzPSIiPjwvZGl2PjxiciBjbGFzcz0iQXBwbGUtaW50ZXJjaGFuZ2UtbmV3bGlu ZSI+Cgo8L2Rpdj4KPGJyIGNsYXNzPSIiPjxkaXYgY2xhc3M9IiI+PGJsb2NrcXVvdGUgdHlwZT0i Y2l0ZSIgY2xhc3M9IiI+PGRpdiBjbGFzcz0iIj5PbiBBcHIgMjksIDIwMTcsIGF0IDc6MzggQU0s IFJvZHJpZ3VleiwgRWR3aW4gJmx0OzxhIGhyZWY9Im1haWx0bzpFZC5Sb2RyaWd1ZXpAbmV0YXBw LmNvbSIgY2xhc3M9IiI+RWQuUm9kcmlndWV6QG5ldGFwcC5jb208L2E+Jmd0OyB3cm90ZTo8L2Rp dj48YnIgY2xhc3M9IkFwcGxlLWludGVyY2hhbmdlLW5ld2xpbmUiPjxkaXYgY2xhc3M9IiI+PGRp diBjbGFzcz0iIj5Vc2FnZSBvZiBwcmludGYvZnByaW50ZiBvdWdodCB0byBiZSByZXBsYWNlZCB3 aXRoIFNQREsgbG9nZ2luZyBjYWxscyBzbyB1c2VycyBvZiB0aGUgbGlicmFyeSBjYW4gY29udHJv bCB0aGUgVUkuICZuYnNwO1RoZW4gdGhlcmUgYXJlIHBvc2l4IGNhbGxzIGluIHRoZSBsaWJyYXJ5 IHRvIGFib3J0L2V4aXQsIGZvciB3aGljaCB0aGUgbGlicmFyeSBzaG91bGQgYmUgcmV3b3JrZWQg dG8gZWxpbWluYXRlLiAmbmJzcDtOb2JvZHnigJlzIGtlZW4gb24gYSBsaWJyYXJ5IHRoYXQgYWJv cnRzIHRoZSBhcHAgd2hlbiBwYXJhbWV0ZXIgdmFsaWRhdGlvbiBmYWlscyAoICZuYnNwO0nigJlk IGFsc28gbGlrZSB0byBzZWUgc29tZSB3YXkgdG8gYXZvaWQgc2V0dGluZyBzaWduYWwgaGFuZGxl cnMgaW4gdGhlIGxpYnJhcnksIG9yIGF0IGxlYXN0IGJsb2NrIGl0IG91dCB3aXRoIGFuIGlmZGVm IHNlY3Rpb24gc28gdGhhdCB1c2VycyBjYW4gbWFuYWdlIHNpZ25hbHMgb24gdGhlaXIgb3duLjxi ciBjbGFzcz0iIj48YnIgY2xhc3M9IiI+VGhlIHJlbWFpbmluZyBwb3NpeCBjYWxscyBhcmUgdG8g bWFsbG9jL2ZyZWUvc3RyZHVwL2NhbGxvYywgZXRjIHdoaWNoIGFyZSBoYXJkZXIgdG8gbWFuYWdl IGluIG5vbi1wb3NpeCBlbnZpcm9ubWVudHMuICZuYnNwO0tlcm5lbCBhbGxvY2F0b3JzIHRha2Ug bXVsdGlwbGUgcGFyYW1ldGVycyBiZXNpZGVzIHRoZSBzaXplIC0gdGhleSB0cmFjayB3aGF0IHN5 c3RlbSBpcyB1c2luZyBtZW1vcnkgYW5kIGZsYWdzIHRvIG1hbmFnZSB2YXJpb3VzIGF0dHJpYnV0 ZXMgbGlrZSBtZW1vcnkgcmVnaW9uIChkbWEsIHBjaSwgZXRjKSwgc2hvdWxkIHRoZSBjYWxsIGJs b2NrLCBldGMuICZuYnNwO0V2ZW4gaWYgeW91IGdldCBpdCB0byBjb21waWxlLCB0aGVuIGxpbmtp bmcgY2FsbGVycyBvZiBzaW5nbGUgYXJndW1lbnQgbWFsbG9jIHdpdGggYSBrZXJuZWwgbWFsbG9j IHRoYXQgZXhwZWN0cyAzIGFyZ3VtZW50cyBpcyBnb2luZyB0byBoYXZlIHVucGxlYXNhbnQgcmVz dWx0cy4gJm5ic3A7U28sIEnigJlkIHByZWZlciBhbiBzcGRrIGVudiBhYnN0cmFjdGlvbiBmb3Ig dGhlIGFsbG9jYXRpb24gY2FsbHMgdG8gYWxsb3cgaW1wbGVtZW50ZXJzIG9mIG5ldyBlbnZpcm9u bWVudHMgdG8gYmV0dGVyIG1hbmFnZSBtZW1vcnkuPGJyIGNsYXNzPSIiPjxiciBjbGFzcz0iIj5J IGxpa2UgdGhlIGlkZWEgb2YgYW4g4oCcc3Bkay9zdGRpbmMuaOKAnSB0aGF0IGNvbGxlY3RzIGFs bCB0aGUgc3RkIHN5c3RlbSBoZWFkZXJzIGluIG9uZSBwbGFjZS4gJm5ic3A7WW91IGNvdWxkIGV2 ZW4gbWFrZSBjaGVja2luZyBmb3IgaXQgcGFydCBvZiB0aGUgZm9ybWF0IGNoZWNrcyBzbyB0aGF0 IGFsbCBsaWJyYXJ5IHNvdXJjZXMgaW5jbHVkZSBpdCBmaXJzdC4gJm5ic3A7T3IgYmV0dGVyIHll dCBhcyB5b3UgcG9pbnQgb3V0LCB1c2Ug4oCYLWluY2x1ZGXigJkgdG8gaW5jbHVkZSBpdCBpbiBh bGwgc291cmNlcyBhbmQgaGF2ZSBhIG1ha2VmaWxlIG9wdGlvbiB0aGF0IHdpbGwgYWxsb3cgdXNl cnMgdG8gcmVwbGFjZSBpdCB3aXRoIHRoZWlyIG93biB2ZXJzaW9uLjxiciBjbGFzcz0iIj48YnIg Y2xhc3M9IiI+RWQgUjxiciBjbGFzcz0iIj48YnIgY2xhc3M9IiI+T24gNC8yNi8xNywgNjowOSBQ TSwgIlNQREsgb24gYmVoYWxmIG9mIFdhbGtlciwgQmVuamFtaW4iICZsdDs8YSBocmVmPSJtYWls dG86c3Bkay1ib3VuY2VzQGxpc3RzLjAxLm9yZyIgY2xhc3M9IiI+c3Bkay1ib3VuY2VzQGxpc3Rz LjAxLm9yZzwvYT4gb24gYmVoYWxmIG9mIDxhIGhyZWY9Im1haWx0bzpiZW5qYW1pbi53YWxrZXJA aW50ZWwuY29tIiBjbGFzcz0iIj5iZW5qYW1pbi53YWxrZXJAaW50ZWwuY29tPC9hPiZndDsgd3Jv dGU6PGJyIGNsYXNzPSIiPjxiciBjbGFzcz0iIj4gJm5ic3A7Jm5ic3A7Jm5ic3A7QXQgdGhlIHN1 bW1pdCB3ZSBkaWQgZW5kIHVwIGRpc2N1c3NpbmcgdGhpcyBxdWl0ZSBhIGJpdC4gRm9yIERQREsg aXQncyBmYWlybHk8YnIgY2xhc3M9IiI+ICZuYnNwOyZuYnNwOyZuYnNwO2NsZWFyIHRoYXQgd2Un cmUgZ29pbmcgdG8gY29udGludWUgdG8gYWJzdHJhY3QgYXdheSBhbGwgb2YgdGhvc2UgZGVwZW5k ZW5jaWVzPGJyIGNsYXNzPSIiPiAmbmJzcDsmbmJzcDsmbmJzcDtpbnNpZGUgb2YgdGhlIGVudiBs aWJyYXJ5LiBUaGVyZSBhcmUgcHVsbCByZXF1ZXN0cyBvdXQgdG8gZmluaXNoIHRoaXMgdXAgbm93 IGFuZDxiciBjbGFzcz0iIj4gJm5ic3A7Jm5ic3A7Jm5ic3A7d2UnbGwgZ2V0IHRob3NlIG1lcmdl ZCByZWxhdGl2ZWx5IHF1aWNrbHkuIFdlJ3JlIGFsc28gd29ya2luZyB3aXRoIHRoZSBEUERLIHRl YW08YnIgY2xhc3M9IiI+ICZuYnNwOyZuYnNwOyZuYnNwO3RvIGltcHJvdmUgRFBESyBzbyB0aGF0 IHRoZXJlIGFyZSBob3BlZnVsbHkgZmV3ZXIgcmVhc29ucyB0byBmb3JlZ28gdXNpbmcgaXQuPGJy IGNsYXNzPSIiPjxiciBjbGFzcz0iIj4gJm5ic3A7Jm5ic3A7Jm5ic3A7QXMgZmFyIGFzIFBPU0lY LCBJIGhhdmUgYSBwcm9wb3NhbC4gQXNzdW1pbmcgUE9TSVggaXMgYXZhaWxhYmxlIG1ha2VzIGl0 PGJyIGNsYXNzPSIiPiAmbmJzcDsmbmJzcDsmbmJzcDtzaWduaWZpY2FudGx5IGVhc2llciB0byB3 b3JrIG9uIFNQREsgaXRzZWxmLCBzbyBJJ20gdmVyeSBoZXNpdGFudCB0byBtb3ZlIGFsbDxiciBj bGFzcz0iIj4gJm5ic3A7Jm5ic3A7Jm5ic3A7UE9TSVggY2FsbHMgaW5zaWRlIG9mIHRoZSBlbnYg bGlicmFyeSBhbmQgZm9yY2UgcGVvcGxlIHRvIHVzZSB3cmFwcGVyIGZ1bmN0aW9ucy48YnIgY2xh c3M9IiI+ICZuYnNwOyZuYnNwOyZuYnNwO0knbSBjb25jZXJuZWQgdGhhdCBpdCByYWlzZXMgdGhl IGJhcnJpZXIgdG8gY29udHJpYnV0ZSB0b28gbXVjaCAoY2FuIEkgY2FsbDxiciBjbGFzcz0iIj4g Jm5ic3A7Jm5ic3A7Jm5ic3A7bWFsbG9jPyB3aGF0IGFib3V0IHByaW50Zj8pLiBGdXJ0aGVyLCB0 aGUgdmFzdCBtYWpvcml0eSBvZiBTUERLIHVzZXJzIGFjdHVhbGx5PGJyIGNsYXNzPSIiPiAmbmJz cDsmbmJzcDsmbmJzcDtkbyBoYXZlIFBPU0lYIGF2YWlsYWJsZSB0byB0aGVtLiBUaGF0IHNhaWQs IHRoZXJlIGFyZSBwcm9iYWJseSBwYXJ0cyB0aGF0IHdlIGNhbjxiciBjbGFzcz0iIj4gJm5ic3A7 Jm5ic3A7Jm5ic3A7YWJzdHJhY3Qgb3V0IGFuZCBzb21lIG90aGVyIHJlZmFjdG9yaW5nIHdlIGNh biBkbyBoZXJlLjxiciBjbGFzcz0iIj48YnIgY2xhc3M9IiI+ICZuYnNwOyZuYnNwOyZuYnNwO0Zp cnN0LCBJIHRoaW5rIHB0aHJlYWRzIGNhbiBiZSByZWZhY3RvcmVkIGludG8gdGhlIGVudiBsaWJy YXJ5LiBMb2NraW5nIGFuZDxiciBjbGFzcz0iIj4gJm5ic3A7Jm5ic3A7Jm5ic3A7c3Bhd25pbmcg dGhyZWFkcyBpcyByYXJlIGVub3VnaCBpbiBTUERLIHRoYXQgaXQgaXNuJ3QgYW4gdW5kdWUgYnVy ZGVuIHRvIHVzZTxiciBjbGFzcz0iIj4gJm5ic3A7Jm5ic3A7Jm5ic3A7d3JhcHBlcnMsIGFuZCBp dCBhbHNvIHJlcXVpcmVzIHNvbWUgY2FyZSByZWdhcmRpbmcgQ1BVIGFmZmluaXR5LiBTbyB0aGUg YmVsb3c8YnIgY2xhc3M9IiI+ICZuYnNwOyZuYnNwOyZuYnNwO2Rpc2N1c3Npb24gZXhjbHVkZXMg dGhhdC48YnIgY2xhc3M9IiI+PGJyIGNsYXNzPSIiPiAmbmJzcDsmbmJzcDsmbmJzcDtTZWNvbmQs IEkgdGhpbmsgd2UgY2FuIGdldCBhd2F5IHdpdGggbW92aW5nIGFsbCBvZiBvdXIgUE9TSVggaGVh ZGVycyB0byBhIHNpbmdsZTxiciBjbGFzcz0iIj4gJm5ic3A7Jm5ic3A7Jm5ic3A7U1BESyBoZWFk ZXIgZmlsZSBhdCBzcGRrL3N0ZGluYy5oLiBXZSBjYW4gdGhlbiBpbmNsdWRlIHRoYXQgZmlsZSBl dmVyeXdoZXJlPGJyIGNsYXNzPSIiPiAmbmJzcDsmbmJzcDsmbmJzcDtlaXRoZXIgZGlyZWN0bHkg b3IgYnkgdXNpbmcgYSAtaW5jbHVkZSBvcHRpb24gaW4gdGhlIE1ha2VmaWxlLiBUaGlzIHdpbGwg ZXZlbjxiciBjbGFzcz0iIj4gJm5ic3A7Jm5ic3A7Jm5ic3A7cGxheSBuaWNlbHkgd2l0aCBwcmVj b21waWxpbmcgc3Bkay9zdGRpbmMuaCAodGhhbmtzIERhbmllbCBmb3IgdGhlIHN1Z2dlc3Rpb24p LDxiciBjbGFzcz0iIj4gJm5ic3A7Jm5ic3A7Jm5ic3A7YWx0aG91Z2ggU1BESydzIGJ1aWxkIHRp bWVzIGFyZSBub3QgYSBjb25jZXJuIHJpZ2h0IG5vdy48YnIgY2xhc3M9IiI+PGJyIGNsYXNzPSIi PiAmbmJzcDsmbmJzcDsmbmJzcDtUaGlyZCwgZm9yIHRoZSBzbWFsbCBzdWJzZXQgb2YgU1BESyB1 c2VycyB0aGF0IHJlYWxseSBkb24ndCBoYXZlIFBPU0lYPGJyIGNsYXNzPSIiPiAmbmJzcDsmbmJz cDsmbmJzcDthdmFpbGFibGUsIHRoZXkgY2FuIGNhcnJ5IGEgcGF0Y2ggb24gdG9wIG9mIFNQREsg dGhhdCBzaW1wbHkgcmVwbGFjZXM8YnIgY2xhc3M9IiI+ICZuYnNwOyZuYnNwOyZuYnNwO3NwZGsv c3RkaW5jLmggd2l0aCB0aGVpciBvd24gaW1wbGVtZW50YXRpb24uIE1vc3QgZW52aXJvbm1lbnRz IGhhdmUgYXQgbGVhc3Q8YnIgY2xhc3M9IiI+ICZuYnNwOyZuYnNwOyZuYnNwO3NvbWUgcGFydCBv ZiB0aGUgUE9TSVggc3RhbmRhcmQsIGFuZCA5MCUgb2Ygd2hhdCB3ZSdyZSB1c2luZyBpcyBqdXN0 IHRoZSBDPGJyIGNsYXNzPSIiPiAmbmJzcDsmbmJzcDsmbmJzcDtzdGFuZGFyZCBsaWJyYXJ5LCBz byBpbiByZWFsaXR5IHRoaXMgaGVhZGVyIHNob3VsZG4ndCBiZSB0b28gZGlmZmljdWx0IHRvPGJy IGNsYXNzPSIiPiAmbmJzcDsmbmJzcDsmbmJzcDtyZXBsYWNlLjxiciBjbGFzcz0iIj48YnIgY2xh c3M9IiI+ICZuYnNwOyZuYnNwOyZuYnNwO1Rob3VnaHRzPyBPcGluaW9ucz88YnIgY2xhc3M9IiI+ PGJyIGNsYXNzPSIiPiAmbmJzcDsmbmJzcDsmbmJzcDtUaGFua3MsPGJyIGNsYXNzPSIiPiAmbmJz cDsmbmJzcDsmbmJzcDtCZW48YnIgY2xhc3M9IiI+PGJyIGNsYXNzPSIiPjxiciBjbGFzcz0iIj4g Jm5ic3A7Jm5ic3A7Jm5ic3A7T24gTW9uLCAyMDE3LTA0LTE3IGF0IDE4OjU1ICswMDAwLCBXYWxr ZXIsIEJlbmphbWluIHdyb3RlOjxiciBjbGFzcz0iIj48YmxvY2txdW90ZSB0eXBlPSJjaXRlIiBj bGFzcz0iIj5IaSBhbGwsPGJyIGNsYXNzPSIiPjxiciBjbGFzcz0iIj5UaGVyZSBoYXMgYmVlbiBh IGxvdCBvZiBhY3Rpdml0eSBsYXRlbHkgZGVhbGluZyB3aXRoIGFic3RyYWN0aW5nIFNQREsnczxi ciBjbGFzcz0iIj5kZXBlbmRlbmNpZXMgdG8gYWxsb3cgcG9ydGluZyBTUERLIHRvIGFkZGl0aW9u YWwgcGxhdGZvcm1zIGFuZCBmcmFtZXdvcmtzLiBJPGJyIGNsYXNzPSIiPnRoaW5rIHdlJ2xsIGVu ZCB1cCB0YWxraW5nIGFib3V0IHRoaXMgZXh0ZW5zaXZlbHkgYXQgdGhlIHN1bW1pdCB0aGlzIHdl ZWsuIFRoZTxiciBjbGFzcz0iIj5hYmlsaXR5IHRvIHVzZSBTUERLIGluIGEgdmFyaWV0eSBvZiBl bnZpcm9ubWVudHMgaXMgdmVyeSBpbXBvcnRhbnQgdG8gdXMsIHNvIEk8YnIgY2xhc3M9IiI+bG9v ayBmb3J3YXJkIHRvIHRoZSBkaXNjdXNzaW9ucy4gSSB3YW50ZWQgdG8gd3JpdGUgYSBiYXNpYyBz dW1tYXJ5IG9mIHRoZTxiciBjbGFzcz0iIj5jdXJyZW50IHN0YXRlIG9mIFNQREsncyBkZXBlbmRl bmNpZXMgZm9yIGV2ZXJ5b25lIHRvIGhhdmUsIGFuZCBzbyB0aGF0IHRob3NlPGJyIGNsYXNzPSIi PndobyBhcmUgdW5hYmxlIHRvIGF0dGVuZCB0aGUgc3VtbWl0IGNhbiBwcm92aWRlIGZlZWRiYWNr LiBJJ2xsIHRyeSB0byB1cGRhdGU8YnIgY2xhc3M9IiI+dGhpcyB0aHJlYWQgd2l0aCB0aGUgcmVz dWx0cyBvZiB0aGUgZGlzY3Vzc2lvbnMgYXQgdGhlIHN1bW1pdCBmb3IgZXZlcnlvbmUnczxiciBj bGFzcz0iIj5iZW5lZml0LjxiciBjbGFzcz0iIj48YnIgY2xhc3M9IiI+V2UndmUgYWxyZWFkeSBl bGltaW5hdGVkIGFsbCBTUERLIGRlcGVuZGVuY2llcyBleGNlcHQgZm9yIHR3bzo8YnIgY2xhc3M9 IiI+PGJyIGNsYXNzPSIiPjEpIFBPU0lYPGJyIGNsYXNzPSIiPjIpIERQREs8YnIgY2xhc3M9IiI+ PGJyIGNsYXNzPSIiPlNQREsgYWxyZWFkeSBoYXMgYSBtZWNoYW5pc20gZm9yIGFic3RyYWN0aW5n IGF3YXkgdGhlICJlbnZpcm9ubWVudCIgaXQgaXM8YnIgY2xhc3M9IiI+cnVubmluZyBpbi4gV2Ug ZG8gdGhpcyBieSBtb3ZpbmcgYWxsIGNhbGxzIHRvIGRlcGVuZGVuY2llcyB0byB0aGUgImVudiI8 YnIgY2xhc3M9IiI+bGlicmFyeSwgd2hvc2UgaW50ZXJmYWNlIGlzIGRlZmluZWQgYnkgaW5jbHVk ZS9zcGRrL2Vudi5oLiBUaGUgYnVpbGQgc3lzdGVtPGJyIGNsYXNzPSIiPmFsbG93cyB1c2VycyB0 byBwb2ludCB0byBhbiBhbHRlcm5hdGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGVudiBsaWJyYXJ5 IGlmPGJyIGNsYXNzPSIiPnJlcXVpcmVkLiBTUERLJ3MgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBv ZiBlbnYgaXMgYmFzZWQgb24gRFBESyBhbmQgcnVucyBpbjxiciBjbGFzcz0iIj5MaW51eCBhbmQg RnJlZUJTRCB1c2VyIHNwYWNlLjxiciBjbGFzcz0iIj48YnIgY2xhc3M9IiI+RFBESyBpcyBhIHZl cnkgbGFyZ2UgdG9vbGtpdCwgb2YgY291cnNlLCBidXQgdW50aWwganVzdCByZWNlbnRseSBTUERL IG9ubHk8YnIgY2xhc3M9IiI+dXNlZCBEUERLJ3MgJ2VhbCcgbW9kdWxlIChlbnZpcm9ubWVudCBh YnN0cmFjdGlvbiBsaWJyYXJ5KS4gVGhlIG9yaWdpbmFsIGdvYWw8YnIgY2xhc3M9IiI+b2YgdGhl IFNQREsgZW52IGxpYnJhcnkgd2FzIGp1c3QgdG8gYWJzdHJhY3QgYWxsIHVzZXMgb2YgRFBESydz IGVhbCwgYnV0IG5vdDxiciBjbGFzcz0iIj5hbGwgdXNlcyBvZiBQT1NJWCBBUElzLiBXZSBtYWRl IHNvbWUgcHJvZ3Jlc3MgaW4gdGhpcyBhcmVhLCBidXQgdGhlcmUgYXJlIGE8YnIgY2xhc3M9IiI+ bnVtYmVyIG9mIHJlbWFpbmluZyBjYWxscyBhcyBvZiB0aGlzIHdyaXRpbmcuIEZvcnR1bmF0ZWx5 LCB0aGUgd2lkZXIgY29tbXVuaXR5PGJyIGNsYXNzPSIiPmhhcyByZWFsbHkgY29tZSB0aHJvdWdo LiBUaGVyZSBhcmUgYXQgbGVhc3QgdHdvIHB1bGwgcmVxdWVzdHMgb3V0IGZyb20gdHdvPGJyIGNs YXNzPSIiPmluZGVwZW5kZW50IHVzZXJzIHRoYXQgbW9zdGx5IGZpbmlzaCB0aGUgam9iLiBXZSds bCB3b3JrIHRocm91Z2ggdGhvc2UgcHVsbDxiciBjbGFzcz0iIj5yZXF1ZXN0cyBhbmQgdHJ5IHRv IGdldCB0aGVtIG1lcmdlZCBzaG9ydGx5LiBUaGUgb25seSBwYXJ0IG9mIHRoZSBjb2RlIHRoYXQ8 YnIgY2xhc3M9IiI+d2lsbCBjb250aW51ZSB0byBleHBsaWNpdGx5IGRlcGVuZCBvbiBEUERLIHdp bGwgYmUgdGhlIG5ld2x5IHJlbGVhc2VkIHZob3N0LTxiciBjbGFzcz0iIj5zY3NpIHRhcmdldCBi ZWNhdXNlIHRoYXQgcmVsaWVzIG9uIERQREsgdmhvc3QgaW5mcmFzdHJ1Y3R1cmUuIFRoaXM8YnIg Y2xhc3M9IiI+aW5mcmFzdHJ1Y3R1cmUgaXMgb3V0c2lkZSBvZiBEUERLJ3MgZWFsIGFuZCBpcyBx dWl0ZSBleHRlbnNpdmUuIFdlIGZlZWwgdGhpczxiciBjbGFzcz0iIj5pcyBhY2NlcHRhYmxlIGJl Y2F1c2UgYnVpbGRpbmcgdmhvc3QgaW4gU1BESyBpcyBvcHRpb25hbCAtIHlvdSBjYW4ganVzdCB0 dXJuPGJyIGNsYXNzPSIiPml0IG9mZiB0byBlbGltaW5hdGUgdGhlIGRlcGVuZGVuY3kuPGJyIGNs YXNzPSIiPjxiciBjbGFzcz0iIj5UaGVyZSBhcmUgYSBudW1iZXIgb2YgbGVnaXRpbWF0ZSByZWFz b25zIHRvIHdhbnQgdG8gcmVtb3ZlIHRoZSBEUERLIGRlcGVuZGVuY3k8YnIgY2xhc3M9IiI+ZnJv bSBTUERLLiBGb3IgaW5zdGFuY2UsIERQREsgZGljdGF0ZXMgYSBwYXJ0aWN1bGFyIG1lbW9yeSBt YW5hZ2VtZW50IG1vZGVsLDxiciBjbGFzcz0iIj5yZXF1aXJlcyBhIHNwZWNpZmljIHRocmVhZGlu ZyBtb2RlbCwgYW5kIHBlcmZvcm1zIFBDSSBkZXZpY2UgbWFuYWdlbWVudCB0aGF0PGJyIGNsYXNz PSIiPm1heSBjb25mbGljdCB3aXRoIG90aGVyIGxpYnJhcmllcy4gSG93ZXZlciwgRFBESyBwcm92 aWRlcyB0cmVtZW5kb3VzIHZhbHVlIHRvPGJyIGNsYXNzPSIiPlNQREsgaW4gYSBudW1iZXIgb2Yg YXJlYXMsIGVzcGVjaWFsbHkgYnkgaW1wbGVtZW50aW5nIG1lbW9yeSBhbGxvY2F0aW9uPGJyIGNs YXNzPSIiPnN1aXRhYmxlIGZvciBETUEgaW4gdXNlciBzcGFjZS4gTWVtb3J5IG1hbmFnZW1lbnQg aXMgYSBtYWpvciBjaGFsbGVuZ2Ugd2l0aDxiciBjbGFzcz0iIj5hbGwgc29ydHMgb2YgaGlkZGVu IHRyYXBzIGFuZCBjaGFsbGVuZ2VzLCBzbyB3ZSBzZWUgc2lnbmlmaWNhbnQgdmFsdWUgaW4gdXNp bmc8YnIgY2xhc3M9IiI+YSBwcm9kdWN0aW9uLXRlc3RlZCBsaWJyYXJ5IGhlcmUuIFJlLWltcGxl bWVudCB0aGUgZW52IHdpdGhvdXQgRFBESyBhdCB5b3VyPGJyIGNsYXNzPSIiPm93biByaXNrITxi ciBjbGFzcz0iIj48YnIgY2xhc3M9IiI+QWJzdHJhY3RpbmcgYXdheSBvdXIgUE9TSVggZGVwZW5k ZW5jeSBpcyBhIHNpbWlsYXIgYnV0IGxhcmdlciBjaGFsbGVuZ2UuIFdoaWxlPGJyIGNsYXNzPSIi PndlIGZvcmVzYXcgdGhlIG5lZWQgZm9yIHBlb3BsZSB0byByZXBsYWNlIERQREssIHdlIGRpZG4n dCBzZWUgYW55IHVzZSBjYXNlIGZvcjxiciBjbGFzcz0iIj5kcm9wcGluZyBQT1NJWC4gV2Ugd2Vy ZSBkZWZpbml0ZWx5IHdyb25nIHRob3VnaCAtIHBlb3BsZSBhcmUgdXNpbmcgU1BESyBpbiBhbGw8 YnIgY2xhc3M9IiI+c29ydHMgb2YgZW52aXJvbm1lbnRzIHRoYXQgd2UgZGlkbid0IHByZWRpY3Qs IGZyb20gZW1iZWRkZWQgZmlybXdhcmUgdG88YnIgY2xhc3M9IiI+b3BlcmF0aW5nIHN5c3RlbSBr ZXJuZWxzIGFuZCBiZXlvbmQuIFNvIHdlJ2xsIG5lZWQgdG8gYWRkcmVzcyB0aGlzIGFzIHRpbWU8 YnIgY2xhc3M9IiI+Z29lcyBvbi4gSSB0aGluayB0aGlzIHdpbGwgcmVzdWx0IGluIGZ1cnRoZXIg ZXhwYW5zaW9uIG9mIHRoZSAnZW52JyBsaWJyYXJ5LjxiciBjbGFzcz0iIj5Gb3J0dW5hdGVseSwg d2UgZG9uJ3QgcmVxdWlyZSB0b28gbXVjaCBmcm9tIFBPU0lYIC0gbW9zdGx5IHB0aHJlYWRzLCB0 aGUgQzxiciBjbGFzcz0iIj5zdGFuZGFyZCBsaWJyYXJ5LCBhbmQgbWF5YmUgYSBjb3VwbGUgb2Yg b3RoZXIgbWlzY2VsbGFuZW91cyBoZWFkZXJzLjxiciBjbGFzcz0iIj48YnIgY2xhc3M9IiI+VGhl cmUgYXJlIG90aGVyIGxlc3Mgb2J2aW91cyBkZXBlbmRlbmNpZXMgaW4gU1BESy4gRm9yIGluc3Rh bmNlLCBpdCBhbHNvPGJyIGNsYXNzPSIiPmRlcGVuZHMgb24gYSByZWxhdGl2ZWx5IHJlY2VudCB2 ZXJzaW9uIG9mIGdjYyBvciBjbGFuZy4gVGhpcyBpcyBtb3N0bHkgYTxiciBjbGFzcz0iIj5wcmFj dGljYWwgY29uY2VybiBhbmQgbm90IHNvIG11Y2ggYnkgaW50ZW50aW9uLiBPdXIgY29udGludW91 cyBpbnRlZ3JhdGlvbjxiciBjbGFzcz0iIj5zeXN0ZW0gKHdoaWNoIEknbGwgdGFsayBhYm91dCBh dCB0aGUgc3VtbWl0IC0gZXhjaXRpbmcgZGV2ZWxvcG1lbnRzIGhlcmUpPGJyIGNsYXNzPSIiPmN1 cnJlbnRseSBjb25zaXN0cyBvZiA0IG1hY2hpbmVzLCAzIG9mIHdoaWNoIGFyZSBydW5uaW5nIEZl ZG9yYSBMaW51eCAyNSB3aGlsZTxiciBjbGFzcz0iIj50aGUgb3RoZXIgaXMgcnVubmluZyBGcmVl QlNEIDExLjAuIFRoZXNlIGFyZSB2ZXJ5IG11Y2ggdXAgdG8gZGF0ZSBzeXN0ZW1zLCBzbzxiciBj bGFzcz0iIj53ZSB0ZW5kIG5vdCB0byBjYXRjaCBidWdzIG9uIG9sZGVyIHN5c3RlbXMgdG9kYXku IFdlIGFsc28gdXNlIGN1dHRpbmcgZWRnZSBDPGJyIGNsYXNzPSIiPmZlYXR1cmVzIGFuZCB0b29s cywgc28gd2UnbGwgcHJvYmFibHkgb3ZlciB0aW1lIG5lZWQgdG8gc2VsZWN0IGEgcGFydGljdWxh cjxiciBjbGFzcz0iIj5taW5pbXVtIHZlcnNpb24gb2YgdGhlIEMgc3RhbmRhcmQgdGhhdCB3ZSdy ZSBnb2luZyB0byBkZXZlbG9wIHRvLjxiciBjbGFzcz0iIj48YnIgY2xhc3M9IiI+SSdtIGFsc28g Y29uY2VybmVkIHdpdGggdGhlIHNjb3BlIG9mIHRoZSBlbnYgbGlicmFyeSBhbmQgSSdkIGxpa2Ug dG8gd29yayBhczxiciBjbGFzcz0iIj5oYXJkIGFzIHBvc3NpYmxlIHRvIGxpbWl0IHRoZSBzaXpl IG9mIHRoZSBBUEkuIFRoaXMgaXMgZm9yIHR3byByZWFzb25zIC0gZmlyc3Q8YnIgY2xhc3M9IiI+ YW5kIGZvcmVtb3N0IHRvIG1pbmltaXplIHRoZSBudW1iZXIgb2YgY2FsbHMgdG8gdGhlc2Ugd3Jh cHBlciBmdW5jdGlvbnMgc288YnIgY2xhc3M9IiI+dGhhdCBpdCBkb2Vzbid0IGltcGFjdCBwZXJm b3JtYW5jZS4gUGVyZm9ybWFuY2UgcmVhbGx5IGlzIGV2ZXJ5dGhpbmcgYW5kIHdlPGJyIGNsYXNz PSIiPmNhbid0IHNhY3JpZmljZSB0aGF0LiBUaGlzIGlzbid0IHNoYXBpbmcgdXAgdG8gYmUgbXVj aCBvZiBhIHByb2JsZW0gc28gZmFyPGJyIGNsYXNzPSIiPmJlY2F1c2UgdmVyeSBmZXcgY2FsbHMg dG8gb3VyIGRlcGVuZGVuY2llcyBoYXBwZW4gd2l0aGluIHRoZSBJL08gcGF0aC48YnIgY2xhc3M9 IiI+U2Vjb25kYXJpbHksIEknZCBsaWtlIHRvIG1ha2UgaXQgYXMgc3RyYWlnaHRmb3J3YXJkIGFz IHBvc3NpYmxlIGZvciB1c2VycyB0bzxiciBjbGFzcz0iIj5yZS1pbXBsZW1lbnQgdGhlIGVudi4g VGhlIGJlc3Qgd2F5IHRvIG1ha2UgaXQgZWFzeSB0byBkbyB0aGF0IGlzIHRvIGtlZXAgdGhlPGJy IGNsYXNzPSIiPkFQSSBzbWFsbC48YnIgY2xhc3M9IiI+PGJyIGNsYXNzPSIiPkkgbG9vayBmb3J3 YXJkIHRvIHRoZSBkaXNjdXNzaW9ucyBhdCB0aGUgc3VtbWl0IHRoaXMgd2Vlay4gV2UnZCBsb3Zl IHRvIGhlYXI8YnIgY2xhc3M9IiI+YWJvdXQgYWxsIG9mIHRoZSBkaWZmZXJlbnQgZW52aXJvbm1l bnRzLCBwbGF0Zm9ybXMsIGFuZCBmcmFtZXdvcmtzIHdoZXJlIFNQREs8YnIgY2xhc3M9IiI+aXMg YmVpbmcgdXNlZCBhbmQgaG93IHdlIGNhbiBtYWtlIGl0IGVhc2llciB0byBpbnRlZ3JhdGUgU1BE SyB3aGVyZXZlciBpdCBpczxiciBjbGFzcz0iIj52YWx1YWJsZS48YnIgY2xhc3M9IiI+PGJyIGNs YXNzPSIiPlRoYW5rcyw8YnIgY2xhc3M9IiI+QmVuPGJyIGNsYXNzPSIiPjxiciBjbGFzcz0iIj48 YnIgY2xhc3M9IiI+X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X188YnIgY2xhc3M9IiI+U1BESyBtYWlsaW5nIGxpc3Q8YnIgY2xhc3M9IiI+PGEgaHJlZj0ibWFp bHRvOlNQREtAbGlzdHMuMDEub3JnIiBjbGFzcz0iIj5TUERLQGxpc3RzLjAxLm9yZzwvYT48YnIg Y2xhc3M9IiI+PGEgaHJlZj0iaHR0cHM6Ly9saXN0cy4wMS5vcmcvbWFpbG1hbi9saXN0aW5mby9z cGRrIiBjbGFzcz0iIj5odHRwczovL2xpc3RzLjAxLm9yZy9tYWlsbWFuL2xpc3RpbmZvL3NwZGs8 L2E+PGJyIGNsYXNzPSIiPjwvYmxvY2txdW90ZT48YnIgY2xhc3M9IiI+PGJyIGNsYXNzPSIiPl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fPGJyIGNsYXNzPSIi PlNQREsgbWFpbGluZyBsaXN0PGJyIGNsYXNzPSIiPjxhIGhyZWY9Im1haWx0bzpTUERLQGxpc3Rz LjAxLm9yZyIgY2xhc3M9IiI+U1BES0BsaXN0cy4wMS5vcmc8L2E+PGJyIGNsYXNzPSIiPjxhIGhy ZWY9Imh0dHBzOi8vbGlzdHMuMDEub3JnL21haWxtYW4vbGlzdGluZm8vc3BkayIgY2xhc3M9IiI+ aHR0cHM6Ly9saXN0cy4wMS5vcmcvbWFpbG1hbi9saXN0aW5mby9zcGRrPC9hPjxiciBjbGFzcz0i Ij48L2Rpdj48L2Rpdj48L2Jsb2NrcXVvdGU+PC9kaXY+PGJyIGNsYXNzPSIiPjwvZGl2PjwvZGl2 PjwvZGl2PjwvYmxvY2txdW90ZT48L2Rpdj48YnIgY2xhc3M9IiI+PC9kaXY+PC9kaXY+PC9ib2R5 PjwvaHRtbD4= --===============5107251584125621564==--