From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============3889182088196409346==" MIME-Version: 1.0 From: Loucaides, John Subject: Re: [Luv] Results and a few questions Date: Wed, 02 Dec 2015 23:09:01 +0000 Message-ID: In-Reply-To: List-Id: To: chipsec@lists.01.org --===============3889182088196409346== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Darren, would you mind checking 1.2.2 to see if setup.py works, now? I see a pull request that does more=E2=80=A6 trying to figure out if 1.2.2 = is still broken, though. Thanks, - John From: Darren Bilby [mailto:darrenbilby(a)gmail.com] Sent: Wednesday, October 28, 2015 11:13 PM To: Loucaides, John ; Ricardo Neri ; kusuriya(a)corrupted.io Cc: chipsec(a)lists.01.org; luv(a)lists.01.org Subject: Re: [chipsec] [Luv] Results and a few questions I originally discovered the issue when attempting to build a chipsec egg fi= le as part of work to make it useful in github.com/google/grr. Build of an egg uses the same setup.py so had the same is= sue with the lack of xml files. On Thu, Oct 29, 2015 at 4:54 PM Loucaides, John > wrote: Interesting=E2=80=A6 I=E2=80=99m looking into this. We=E2=80=99re trying to= finish up a 1.2.2 release, and I plan to go through the pull requests over= the next day or two. Btw, have you seen bugs related to setup.py outside LUV as well? Thanks, - John From: chipsec [mailto:chipsec-bounces(a)lists.01.org] On Behalf Of Darren Bilby Sent: Wednesday, October 28, 2015 5:55 PM To: Ricardo Neri >; kusuriya(a)corrupted.io Cc: chipsec(a)lists.01.org; luv(a)lists.01.o= rg Subject: Re: [chipsec] [Luv] Results and a few questions I'm actually not convinced Chipsec on LUV has ever worked. The configuration in setup.py for Chipsec doesn't include the XML files in = the deployment, thus no XML files in LUV, and therefore the errors. There is a fix for it in a pull request here https://github.com/chipsec/chi= psec/pull/7 but there are a bunch of other very old pull requests that don'= t seem to be being looked at. On Thu, Oct 29, 2015 at 9:26 AM Ricardo Neri > wrote: Actually including the CHIPSEC mailing list this time. On Mon, 2015-10-26 at 19:51 +0000, Neri, Ricardo wrote: > +CHIPSEC mailing list > > Hi Jason, > > Thanks for your report. > > On Mon, 2015-10-26 at 12:04 -0700, Jason Barbier wrote: > > Hey all, > > I ran LUV-Live and my results are attached as a zip, I sort of was > > wondering about the errors in the chipsec log though, > > These were similar errors that I got last week that caused some issues > > with my clock being reset using version 1.2, the latest RC seems to not > > do that but It still can not seem to run all the tests. > > > > -- > > WARNING: 'SPIBAR' MMIO BAR definition not found/correct in XML config > > [pci] reading B/D/F: 0/31/0, offset: 0xF0, value: 0xFED1C001 > > [spi] SPI MMIO base: 0x00000000FED1F800 (assuming below 4GB) > > [spi] SPI MMIO base: 0x00000000FED1F800 (assuming below 4GB) > > [-] Traceback (most recent call last): > > File "/usr/lib/python2.7/site-packages/chipsec_main.py", line 291, in > > run_module > > result =3D modx.run( module_argv ) > > File "/usr/lib/python2.7/site-packages/chipsec/module.py", line 69, in > > run > > result =3D self.get_module_object() > > File "/usr/lib/python2.7/site-packages/chipsec/module.py", line 101, > > in get_module_object > > self.mod_obj =3D iref() > > File > > "/usr/lib/python2.7/site-packages/chipsec/modules/common/bios_wp.py", > > line 51, in __init__ > > self.spi =3D SPI( self.cs ) > > File "/usr/lib/python2.7/site-packages/chipsec/hal/spi.py", line 176, > > in __init__ > > self.hsfs_off =3D int(chipsec.chipset.get_register_def( self.cs, > > "HSFS" )['offset'],16) > > File "/usr/lib/python2.7/site-packages/chipsec/chipset.py", line 467, > > in get_register_def > > return _cs.Cfg.REGISTERS[ reg_name ] > > KeyError: 'HSFS' > > -- > > [-] Traceback (most recent call last): > > File "/usr/lib/python2.7/site-packages/chipsec_main.py", line 291, in > > run_module > > result =3D modx.run( module_argv ) > > File "/usr/lib/python2.7/site-packages/chipsec/module.py", line 80, in > > run > > result =3D self.mod_obj.run(module_argv) > > File > > "/usr/lib/python2.7/site-packages/chipsec/modules/common/spi_desc.py", > > line 68, in run > > return self.check_flash_access_permissions() > > File > > "/usr/lib/python2.7/site-packages/chipsec/modules/common/spi_desc.py", > > line 48, in check_flash_access_permissions > > frap =3D chipsec.chipset.read_register( self.cs, 'FRAP' ) > > File "/usr/lib/python2.7/site-packages/chipsec/chipset.py", line 470, > > in read_register > > reg =3D _cs.Cfg.REGISTERS[ reg_name ] > > KeyError: 'FRAP' > > > > ERROR: Exception occurred during chipsec.modules.common.spi_desc.run(): > > ''FRAP'' > > -- > > [-] Traceback (most recent call last): > > File "/usr/lib/python2.7/site-packages/chipsec_main.py", line 291, in > > run_module > > result =3D modx.run( module_argv ) > > File "/usr/lib/python2.7/site-packages/chipsec/module.py", line 80, in > > run > > result =3D self.mod_obj.run(module_argv) > > File > > "/usr/lib/python2.7/site-packages/chipsec/modules/common/spi_lock.py", > > line 59, in run > > return self.check_spi_lock() > > File > > "/usr/lib/python2.7/site-packages/chipsec/modules/common/spi_lock.py", > > line 46, in check_spi_lock > > hsfs_reg =3D chipsec.chipset.read_register( self.cs, 'HSFS' ) > > File "/usr/lib/python2.7/site-packages/chipsec/chipset.py", line 470, > > in read_register > > reg =3D _cs.Cfg.REGISTERS[ reg_name ] > > KeyError: 'HSFS' > > > > ERROR: Exception occurred during chipsec.modules.common.spi_lock.run(): > > ''HSFS'' > > -- > > > I added the CHIPSEC mailing list. Perhaps they can give further insight > on what the problem might be. > > As per LUV, it seems that this exception somehow caused a crash in the > LUV test manager and it prevented it from running the tests of the > tests. It seems we need to add some safeguards so that LUV can handle > these errors more gracefully. > > Thanks and BR, > Ricardo > > > > > _______________________________________________ > > Luv mailing list > > Luv(a)lists.01.org > > https://lists.01.org/mailman/listinfo/luv > > _______________________________________________ > Luv mailing list > Luv(a)lists.01.org > https://lists.01.org/mailman/listinfo/luv _______________________________________________ chipsec mailing list chipsec(a)lists.01.org https://lists.01.org/mailman/listinfo/chipsec --===============3889182088196409346== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" PGh0bWwgeG1sbnM6dj0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTp2bWwiIHhtbG5zOm89InVy bjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOm9mZmljZSIgeG1sbnM6dz0idXJuOnNjaGVt YXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6d29yZCIgeG1sbnM6bT0iaHR0cDovL3NjaGVtYXMubWlj cm9zb2Z0LmNvbS9vZmZpY2UvMjAwNC8xMi9vbW1sIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv VFIvUkVDLWh0bWw0MCI+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIg Y29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4NCjxtZXRhIG5hbWU9IkdlbmVyYXRv ciIgY29udGVudD0iTWljcm9zb2Z0IFdvcmQgMTUgKGZpbHRlcmVkIG1lZGl1bSkiPg0KPHN0eWxl PjwhLS0NCi8qIEZvbnQgRGVmaW5pdGlvbnMgKi8NCkBmb250LWZhY2UNCgl7Zm9udC1mYW1pbHk6 V2luZ2RpbmdzOw0KCXBhbm9zZS0xOjUgMCAwIDAgMCAwIDAgMCAwIDA7fQ0KQGZvbnQtZmFjZQ0K CXtmb250LWZhbWlseToiQ2FtYnJpYSBNYXRoIjsNCglwYW5vc2UtMToyIDQgNSAzIDUgNCA2IDMg MiA0O30NCkBmb250LWZhY2UNCgl7Zm9udC1mYW1pbHk6Q2FsaWJyaTsNCglwYW5vc2UtMToyIDE1 IDUgMiAyIDIgNCAzIDIgNDt9DQovKiBTdHlsZSBEZWZpbml0aW9ucyAqLw0KcC5Nc29Ob3JtYWws IGxpLk1zb05vcm1hbCwgZGl2Lk1zb05vcm1hbA0KCXttYXJnaW46MGluOw0KCW1hcmdpbi1ib3R0 b206LjAwMDFwdDsNCglmb250LXNpemU6MTIuMHB0Ow0KCWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcg Um9tYW4iLHNlcmlmO30NCmE6bGluaywgc3Bhbi5Nc29IeXBlcmxpbmsNCgl7bXNvLXN0eWxlLXBy aW9yaXR5Ojk5Ow0KCWNvbG9yOmJsdWU7DQoJdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9DQph OnZpc2l0ZWQsIHNwYW4uTXNvSHlwZXJsaW5rRm9sbG93ZWQNCgl7bXNvLXN0eWxlLXByaW9yaXR5 Ojk5Ow0KCWNvbG9yOnB1cnBsZTsNCgl0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO30NCnANCgl7 bXNvLXN0eWxlLXByaW9yaXR5Ojk5Ow0KCW1zby1tYXJnaW4tdG9wLWFsdDphdXRvOw0KCW1hcmdp bi1yaWdodDowaW47DQoJbXNvLW1hcmdpbi1ib3R0b20tYWx0OmF1dG87DQoJbWFyZ2luLWxlZnQ6 MGluOw0KCWZvbnQtc2l6ZToxMi4wcHQ7DQoJZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiIs c2VyaWY7fQ0KcC5Nc29MaXN0UGFyYWdyYXBoLCBsaS5Nc29MaXN0UGFyYWdyYXBoLCBkaXYuTXNv TGlzdFBhcmFncmFwaA0KCXttc28tc3R5bGUtcHJpb3JpdHk6MzQ7DQoJbWFyZ2luLXRvcDowaW47 DQoJbWFyZ2luLXJpZ2h0OjBpbjsNCgltYXJnaW4tYm90dG9tOjBpbjsNCgltYXJnaW4tbGVmdDou NWluOw0KCW1hcmdpbi1ib3R0b206LjAwMDFwdDsNCglmb250LXNpemU6MTIuMHB0Ow0KCWZvbnQt ZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iLHNlcmlmO30NCnNwYW4uRW1haWxTdHlsZTE4DQoJe21z by1zdHlsZS10eXBlOnBlcnNvbmFsLXJlcGx5Ow0KCWZvbnQtZmFtaWx5OiJDYWxpYnJpIixzYW5z LXNlcmlmOw0KCWNvbG9yOiMxRjQ5N0Q7fQ0KLk1zb0NocERlZmF1bHQNCgl7bXNvLXN0eWxlLXR5 cGU6ZXhwb3J0LW9ubHk7DQoJZm9udC1mYW1pbHk6IkNhbGlicmkiLHNhbnMtc2VyaWY7fQ0KQHBh Z2UgV29yZFNlY3Rpb24xDQoJe3NpemU6OC41aW4gMTEuMGluOw0KCW1hcmdpbjoxLjBpbiAxLjBp biAxLjBpbiAxLjBpbjt9DQpkaXYuV29yZFNlY3Rpb24xDQoJe3BhZ2U6V29yZFNlY3Rpb24xO30N Ci8qIExpc3QgRGVmaW5pdGlvbnMgKi8NCkBsaXN0IGwwDQoJe21zby1saXN0LWlkOjE5MTkzNjM3 NjI7DQoJbXNvLWxpc3QtdHlwZTpoeWJyaWQ7DQoJbXNvLWxpc3QtdGVtcGxhdGUtaWRzOi0yMDQ1 NDk3NzIgLTEyOTQ1NzkwOTYgNjc2OTg2OTEgNjc2OTg2OTMgNjc2OTg2ODkgNjc2OTg2OTEgNjc2 OTg2OTMgNjc2OTg2ODkgNjc2OTg2OTEgNjc2OTg2OTM7fQ0KQGxpc3QgbDA6bGV2ZWwxDQoJe21z by1sZXZlbC1zdGFydC1hdDoyOw0KCW1zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsNCglt c28tbGV2ZWwtdGV4dDotOw0KCW1zby1sZXZlbC10YWItc3RvcDpub25lOw0KCW1zby1sZXZlbC1u dW1iZXItcG9zaXRpb246bGVmdDsNCgltYXJnaW4tbGVmdDoyMC4yNXB0Ow0KCXRleHQtaW5kZW50 Oi0uMjVpbjsNCglmb250LWZhbWlseToiQ2FsaWJyaSIsc2Fucy1zZXJpZjsNCgltc28tZmFyZWFz dC1mb250LWZhbWlseTpDYWxpYnJpOw0KCW1zby1iaWRpLWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcg Um9tYW4iO30NCkBsaXN0IGwwOmxldmVsMg0KCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxs ZXQ7DQoJbXNvLWxldmVsLXRleHQ6bzsNCgltc28tbGV2ZWwtdGFiLXN0b3A6bm9uZTsNCgltc28t bGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7DQoJbWFyZ2luLWxlZnQ6NTYuMjVwdDsNCgl0ZXh0 LWluZGVudDotLjI1aW47DQoJZm9udC1mYW1pbHk6IkNvdXJpZXIgTmV3Ijt9DQpAbGlzdCBsMDps ZXZlbDMNCgl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0Ow0KCW1zby1sZXZlbC10ZXh0 Ou+CpzsNCgltc28tbGV2ZWwtdGFiLXN0b3A6bm9uZTsNCgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0 aW9uOmxlZnQ7DQoJbWFyZ2luLWxlZnQ6OTIuMjVwdDsNCgl0ZXh0LWluZGVudDotLjI1aW47DQoJ Zm9udC1mYW1pbHk6V2luZ2RpbmdzO30NCkBsaXN0IGwwOmxldmVsNA0KCXttc28tbGV2ZWwtbnVt YmVyLWZvcm1hdDpidWxsZXQ7DQoJbXNvLWxldmVsLXRleHQ674K3Ow0KCW1zby1sZXZlbC10YWIt c3RvcDpub25lOw0KCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsNCgltYXJnaW4tbGVm dDoxMjguMjVwdDsNCgl0ZXh0LWluZGVudDotLjI1aW47DQoJZm9udC1mYW1pbHk6U3ltYm9sO30N CkBsaXN0IGwwOmxldmVsNQ0KCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7DQoJbXNv LWxldmVsLXRleHQ6bzsNCgltc28tbGV2ZWwtdGFiLXN0b3A6bm9uZTsNCgltc28tbGV2ZWwtbnVt YmVyLXBvc2l0aW9uOmxlZnQ7DQoJbWFyZ2luLWxlZnQ6MTY0LjI1cHQ7DQoJdGV4dC1pbmRlbnQ6 LS4yNWluOw0KCWZvbnQtZmFtaWx5OiJDb3VyaWVyIE5ldyI7fQ0KQGxpc3QgbDA6bGV2ZWw2DQoJ e21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsNCgltc28tbGV2ZWwtdGV4dDrvgqc7DQoJ bXNvLWxldmVsLXRhYi1zdG9wOm5vbmU7DQoJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0 Ow0KCW1hcmdpbi1sZWZ0OjIwMC4yNXB0Ow0KCXRleHQtaW5kZW50Oi0uMjVpbjsNCglmb250LWZh bWlseTpXaW5nZGluZ3M7fQ0KQGxpc3QgbDA6bGV2ZWw3DQoJe21zby1sZXZlbC1udW1iZXItZm9y bWF0OmJ1bGxldDsNCgltc28tbGV2ZWwtdGV4dDrvgrc7DQoJbXNvLWxldmVsLXRhYi1zdG9wOm5v bmU7DQoJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0Ow0KCW1hcmdpbi1sZWZ0OjIzNi4y NXB0Ow0KCXRleHQtaW5kZW50Oi0uMjVpbjsNCglmb250LWZhbWlseTpTeW1ib2w7fQ0KQGxpc3Qg bDA6bGV2ZWw4DQoJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsNCgltc28tbGV2ZWwt dGV4dDpvOw0KCW1zby1sZXZlbC10YWItc3RvcDpub25lOw0KCW1zby1sZXZlbC1udW1iZXItcG9z aXRpb246bGVmdDsNCgltYXJnaW4tbGVmdDoyNzIuMjVwdDsNCgl0ZXh0LWluZGVudDotLjI1aW47 DQoJZm9udC1mYW1pbHk6IkNvdXJpZXIgTmV3Ijt9DQpAbGlzdCBsMDpsZXZlbDkNCgl7bXNvLWxl dmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0Ow0KCW1zby1sZXZlbC10ZXh0Ou+CpzsNCgltc28tbGV2 ZWwtdGFiLXN0b3A6bm9uZTsNCgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7DQoJbWFy Z2luLWxlZnQ6MzA4LjI1cHQ7DQoJdGV4dC1pbmRlbnQ6LS4yNWluOw0KCWZvbnQtZmFtaWx5Oldp bmdkaW5nczt9DQpvbA0KCXttYXJnaW4tYm90dG9tOjBpbjt9DQp1bA0KCXttYXJnaW4tYm90dG9t OjBpbjt9DQotLT48L3N0eWxlPjwhLS1baWYgZ3RlIG1zbyA5XT48eG1sPg0KPG86c2hhcGVkZWZh dWx0cyB2OmV4dD0iZWRpdCIgc3BpZG1heD0iMTAyNiIgLz4NCjwveG1sPjwhW2VuZGlmXS0tPjwh LS1baWYgZ3RlIG1zbyA5XT48eG1sPg0KPG86c2hhcGVsYXlvdXQgdjpleHQ9ImVkaXQiPg0KPG86 aWRtYXAgdjpleHQ9ImVkaXQiIGRhdGE9IjEiIC8+DQo8L286c2hhcGVsYXlvdXQ+PC94bWw+PCFb ZW5kaWZdLS0+DQo8L2hlYWQ+DQo8Ym9keSBsYW5nPSJFTi1VUyIgbGluaz0iYmx1ZSIgdmxpbms9 InB1cnBsZSI+DQo8ZGl2IGNsYXNzPSJXb3JkU2VjdGlvbjEiPg0KPHAgY2xhc3M9Ik1zb05vcm1h bCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJy aSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOiMxRjQ5N0QiPkRhcnJlbiwgd291bGQgeW91IG1pbmQg Y2hlY2tpbmcgMS4yLjIgdG8gc2VlIGlmIHNldHVwLnB5IHdvcmtzLCBub3c/PG86cD48L286cD48 L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTox MS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOiMx RjQ5N0QiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwi PjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkm cXVvdDssc2Fucy1zZXJpZjtjb2xvcjojMUY0OTdEIj5JIHNlZSBhIHB1bGwgcmVxdWVzdCB0aGF0 IGRvZXMgbW9yZeKApiB0cnlpbmcgdG8gZmlndXJlIG91dCBpZiAxLjIuMiBpcyBzdGlsbCBicm9r ZW4sIHRob3VnaC48bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48 c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1 b3Q7LHNhbnMtc2VyaWY7Y29sb3I6IzFGNDk3RCI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9w Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9u dC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOiMxRjQ5N0QiPlRo YW5rcyw8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTGlzdFBhcmFncmFwaCIg c3R5bGU9Im1hcmdpbi1sZWZ0OjIwLjI1cHQ7dGV4dC1pbmRlbnQ6LS4yNWluO21zby1saXN0Omww IGxldmVsMSBsZm8xIj4NCjwhW2lmICFzdXBwb3J0TGlzdHNdPjxzcGFuIHN0eWxlPSJmb250LXNp emU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xv cjojMUY0OTdEIj48c3BhbiBzdHlsZT0ibXNvLWxpc3Q6SWdub3JlIj4tPHNwYW4gc3R5bGU9ImZv bnQ6Ny4wcHQgJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7Ij4mbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCjwvc3Bhbj48L3NwYW4+PC9zcGFu PjwhW2VuZGlmXT48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVv dDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6IzFGNDk3RCI+Sm9objxvOnA+PC9vOnA+ PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6 MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjoj MUY0OTdEIj48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+DQo8ZGl2IHN0eWxlPSJib3JkZXI6 bm9uZTtib3JkZXItbGVmdDpzb2xpZCBibHVlIDEuNXB0O3BhZGRpbmc6MGluIDBpbiAwaW4gNC4w cHQiPg0KPGRpdj4NCjxkaXYgc3R5bGU9ImJvcmRlcjpub25lO2JvcmRlci10b3A6c29saWQgI0Ux RTFFMSAxLjBwdDtwYWRkaW5nOjMuMHB0IDBpbiAwaW4gMGluIj4NCjxwIGNsYXNzPSJNc29Ob3Jt YWwiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0Nh bGlicmkmcXVvdDssc2Fucy1zZXJpZiI+RnJvbTo8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250 LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZiI+ IERhcnJlbiBCaWxieSBbbWFpbHRvOmRhcnJlbmJpbGJ5QGdtYWlsLmNvbV0NCjxicj4NCjxiPlNl bnQ6PC9iPiBXZWRuZXNkYXksIE9jdG9iZXIgMjgsIDIwMTUgMTE6MTMgUE08YnI+DQo8Yj5Ubzo8 L2I+IExvdWNhaWRlcywgSm9obiAmbHQ7am9obi5sb3VjYWlkZXNAaW50ZWwuY29tJmd0OzsgUmlj YXJkbyBOZXJpICZsdDtyaWNhcmRvLm5lcmktY2FsZGVyb25AbGludXguaW50ZWwuY29tJmd0Ozsg a3VzdXJpeWFAY29ycnVwdGVkLmlvPGJyPg0KPGI+Q2M6PC9iPiBjaGlwc2VjQGxpc3RzLjAxLm9y ZzsgbHV2QGxpc3RzLjAxLm9yZzxicj4NCjxiPlN1YmplY3Q6PC9iPiBSZTogW2NoaXBzZWNdIFtM dXZdIFJlc3VsdHMgYW5kIGEgZmV3IHF1ZXN0aW9uczxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjwv ZGl2Pg0KPC9kaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48bzpwPiZuYnNwOzwvbzpwPjwvcD4N CjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5JIG9yaWdpbmFsbHkgZGlzY292ZXJlZCB0aGUg aXNzdWUgd2hlbiBhdHRlbXB0aW5nIHRvIGJ1aWxkIGEgY2hpcHNlYyBlZ2cgZmlsZSBhcyBwYXJ0 IG9mIHdvcmsgdG8gbWFrZSBpdCB1c2VmdWwgaW4NCjxhIGhyZWY9Imh0dHA6Ly9naXRodWIuY29t L2dvb2dsZS9ncnIiPmdpdGh1Yi5jb20vZ29vZ2xlL2dycjwvYT4uIEJ1aWxkIG9mIGFuIGVnZyB1 c2VzIHRoZSBzYW1lIHNldHVwLnB5IHNvIGhhZCB0aGUgc2FtZSBpc3N1ZSB3aXRoIHRoZSBsYWNr IG9mIHhtbCBmaWxlcy4mbmJzcDs8bzpwPjwvbzpwPjwvcD4NCjxkaXY+DQo8cCBjbGFzcz0iTXNv Tm9ybWFsIj48bzpwPiZuYnNwOzwvbzpwPjwvcD4NCjwvZGl2Pg0KPC9kaXY+DQo8cCBjbGFzcz0i TXNvTm9ybWFsIj48bzpwPiZuYnNwOzwvbzpwPjwvcD4NCjxkaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9 Ik1zb05vcm1hbCI+T24gVGh1LCBPY3QgMjksIDIwMTUgYXQgNDo1NCBQTSBMb3VjYWlkZXMsIEpv aG4gJmx0OzxhIGhyZWY9Im1haWx0bzpqb2huLmxvdWNhaWRlc0BpbnRlbC5jb20iPmpvaG4ubG91 Y2FpZGVzQGludGVsLmNvbTwvYT4mZ3Q7IHdyb3RlOjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8 YmxvY2txdW90ZSBzdHlsZT0iYm9yZGVyOm5vbmU7Ym9yZGVyLWxlZnQ6c29saWQgI0NDQ0NDQyAx LjBwdDtwYWRkaW5nOjBpbiAwaW4gMGluIDYuMHB0O21hcmdpbi1sZWZ0OjQuOHB0O21hcmdpbi1y aWdodDowaW4iPg0KPGRpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibXNv LW1hcmdpbi10b3AtYWx0OmF1dG87bXNvLW1hcmdpbi1ib3R0b20tYWx0OmF1dG8iPjxzcGFuIHN0 eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fu cy1zZXJpZjtjb2xvcjojMUY0OTdEIj5JbnRlcmVzdGluZ+KApiBJ4oCZbSBsb29raW5nIGludG8g dGhpcy4gV2XigJlyZSB0cnlpbmcgdG8gZmluaXNoIHVwIGEgMS4yLjIgcmVsZWFzZSwgYW5kIEkg cGxhbiB0byBnbyB0aHJvdWdoDQogdGhlIHB1bGwgcmVxdWVzdHMgb3ZlciB0aGUgbmV4dCBkYXkg b3IgdHdvLiA8L3NwYW4+PG86cD48L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHls ZT0ibXNvLW1hcmdpbi10b3AtYWx0OmF1dG87bXNvLW1hcmdpbi1ib3R0b20tYWx0OmF1dG8iPjxz cGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVv dDssc2Fucy1zZXJpZjtjb2xvcjojMUY0OTdEIj4mbmJzcDs8L3NwYW4+PG86cD48L286cD48L3A+ DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibXNvLW1hcmdpbi10b3AtYWx0OmF1dG87bXNv LW1hcmdpbi1ib3R0b20tYWx0OmF1dG8iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2Zv bnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjojMUY0OTdEIj5C dHcsIGhhdmUgeW91IHNlZW4gYnVncyByZWxhdGVkIHRvIHNldHVwLnB5IG91dHNpZGUgTFVWIGFz IHdlbGw/PC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9 Im1zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDphdXRvIj48c3Bh biBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7 LHNhbnMtc2VyaWY7Y29sb3I6IzFGNDk3RCI+Jm5ic3A7PC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0K PHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1t YXJnaW4tYm90dG9tLWFsdDphdXRvIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250 LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6IzFGNDk3RCI+VGhh bmtzLDwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjxwIHN0eWxlPSJtYXJnaW4tbGVmdDoyMC4yNXB0 Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJp JnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6IzFGNDk3RCI+LTwvc3Bhbj48c3BhbiBzdHlsZT0iZm9u dC1zaXplOjcuMHB0O2NvbG9yOiMxRjQ5N0QiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0KPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6 MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjoj MUY0OTdEIj5Kb2huPC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIg c3R5bGU9Im1zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDphdXRv Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJp JnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6IzFGNDk3RCI+Jm5ic3A7PC9zcGFuPjxvOnA+PC9vOnA+ PC9wPg0KPGRpdiBzdHlsZT0iYm9yZGVyOm5vbmU7Ym9yZGVyLWxlZnQ6c29saWQgYmx1ZSAxLjVw dDtwYWRkaW5nOjBpbiAwaW4gMGluIDQuMHB0Ij4NCjxkaXY+DQo8ZGl2IHN0eWxlPSJib3JkZXI6 bm9uZTtib3JkZXItdG9wOnNvbGlkICNFMUUxRTEgMS4wcHQ7cGFkZGluZzozLjBwdCAwaW4gMGlu IDBpbiI+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibXNvLW1hcmdpbi10b3AtYWx0OmF1 dG87bXNvLW1hcmdpbi1ib3R0b20tYWx0OmF1dG8iPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6 MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZiI+RnJvbTo8 L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90 O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZiI+IGNoaXBzZWMgW21haWx0bzo8YSBocmVmPSJtYWls dG86Y2hpcHNlYy1ib3VuY2VzQGxpc3RzLjAxLm9yZyIgdGFyZ2V0PSJfYmxhbmsiPmNoaXBzZWMt Ym91bmNlc0BsaXN0cy4wMS5vcmc8L2E+XQ0KPGI+T24gQmVoYWxmIE9mIDwvYj5EYXJyZW4gQmls Ynk8YnI+DQo8Yj5TZW50OjwvYj4gV2VkbmVzZGF5LCBPY3RvYmVyIDI4LCAyMDE1IDU6NTUgUE08 YnI+DQo8Yj5Ubzo8L2I+IFJpY2FyZG8gTmVyaSAmbHQ7PGEgaHJlZj0ibWFpbHRvOnJpY2FyZG8u bmVyaS1jYWxkZXJvbkBsaW51eC5pbnRlbC5jb20iIHRhcmdldD0iX2JsYW5rIj5yaWNhcmRvLm5l cmktY2FsZGVyb25AbGludXguaW50ZWwuY29tPC9hPiZndDs7DQo8YSBocmVmPSJtYWlsdG86a3Vz dXJpeWFAY29ycnVwdGVkLmlvIiB0YXJnZXQ9Il9ibGFuayI+a3VzdXJpeWFAY29ycnVwdGVkLmlv PC9hPjxicj4NCjxiPkNjOjwvYj4gPGEgaHJlZj0ibWFpbHRvOmNoaXBzZWNAbGlzdHMuMDEub3Jn IiB0YXJnZXQ9Il9ibGFuayI+Y2hpcHNlY0BsaXN0cy4wMS5vcmc8L2E+Ow0KPGEgaHJlZj0ibWFp bHRvOmx1dkBsaXN0cy4wMS5vcmciIHRhcmdldD0iX2JsYW5rIj5sdXZAbGlzdHMuMDEub3JnPC9h Pjxicj4NCjxiPlN1YmplY3Q6PC9iPiBSZTogW2NoaXBzZWNdIFtMdXZdIFJlc3VsdHMgYW5kIGEg ZmV3IHF1ZXN0aW9uczwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPC9kaXY+DQo8L2Rp dj4NCjwvZGl2Pg0KPC9kaXY+DQo8ZGl2Pg0KPGRpdj4NCjxkaXYgc3R5bGU9ImJvcmRlcjpub25l O2JvcmRlci1sZWZ0OnNvbGlkIGJsdWUgMS41cHQ7cGFkZGluZzowaW4gMGluIDBpbiA0LjBwdCI+ DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibXNvLW1hcmdpbi10b3AtYWx0OmF1dG87bXNv LW1hcmdpbi1ib3R0b20tYWx0OmF1dG8iPiZuYnNwOzxvOnA+PC9vOnA+PC9wPg0KPGRpdj4NCjxw IGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFy Z2luLWJvdHRvbS1hbHQ6YXV0byI+SSdtIGFjdHVhbGx5IG5vdCBjb252aW5jZWQgQ2hpcHNlYyBv biBMVVYgaGFzIGV2ZXIgd29ya2VkLiZuYnNwOzxvOnA+PC9vOnA+PC9wPg0KPGRpdj4NCjxwIGNs YXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2lu LWJvdHRvbS1hbHQ6YXV0byI+VGhlIGNvbmZpZ3VyYXRpb24gaW4gc2V0dXAucHkgZm9yIENoaXBz ZWMgZG9lc24ndCBpbmNsdWRlIHRoZSBYTUwgZmlsZXMgaW4gdGhlIGRlcGxveW1lbnQsIHRodXMg bm8gWE1MIGZpbGVzIGluIExVViwgYW5kIHRoZXJlZm9yZSB0aGUgZXJyb3JzLiZuYnNwOzxvOnA+ PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1z by1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDphdXRvIj5UaGVyZSBp cyBhIGZpeCBmb3IgaXQgaW4gYSBwdWxsIHJlcXVlc3QgaGVyZQ0KPGEgaHJlZj0iaHR0cHM6Ly9n aXRodWIuY29tL2NoaXBzZWMvY2hpcHNlYy9wdWxsLzciIHRhcmdldD0iX2JsYW5rIj5odHRwczov L2dpdGh1Yi5jb20vY2hpcHNlYy9jaGlwc2VjL3B1bGwvNzwvYT4mbmJzcDtidXQgdGhlcmUgYXJl IGEgYnVuY2ggb2Ygb3RoZXIgdmVyeSBvbGQgcHVsbCByZXF1ZXN0cyB0aGF0IGRvbid0IHNlZW0g dG8gYmUgYmVpbmcgbG9va2VkIGF0LiZuYnNwOzxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8L2Rp dj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtc28tbWFyZ2luLXRvcC1hbHQ6YXV0bztt c28tbWFyZ2luLWJvdHRvbS1hbHQ6YXV0byI+Jm5ic3A7PG86cD48L286cD48L3A+DQo8ZGl2Pg0K PGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtc28tbWFyZ2luLXRvcC1hbHQ6YXV0 bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6YXV0byI+T24gVGh1LCBPY3QgMjksIDIwMTUgYXQgOToy NiBBTSBSaWNhcmRvIE5lcmkgJmx0OzxhIGhyZWY9Im1haWx0bzpyaWNhcmRvLm5lcmktY2FsZGVy b25AbGludXguaW50ZWwuY29tIiB0YXJnZXQ9Il9ibGFuayI+cmljYXJkby5uZXJpLWNhbGRlcm9u QGxpbnV4LmludGVsLmNvbTwvYT4mZ3Q7IHdyb3RlOjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8 YmxvY2txdW90ZSBzdHlsZT0iYm9yZGVyOm5vbmU7Ym9yZGVyLWxlZnQ6c29saWQgI0NDQ0NDQyAx LjBwdDtwYWRkaW5nOjBpbiAwaW4gMGluIDYuMHB0O21hcmdpbi1sZWZ0OjQuOHB0O21hcmdpbi10 b3A6NS4wcHQ7bWFyZ2luLXJpZ2h0OjBpbjttYXJnaW4tYm90dG9tOjUuMHB0Ij4NCjxwIGNsYXNz PSJNc29Ob3JtYWwiIHN0eWxlPSJtc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJv dHRvbS1hbHQ6YXV0byI+QWN0dWFsbHkgaW5jbHVkaW5nIHRoZSBDSElQU0VDIG1haWxpbmcgbGlz dCB0aGlzIHRpbWUuPGJyPg0KT24gTW9uLCAyMDE1LTEwLTI2IGF0IDE5OjUxICYjNDM7MDAwMCwg TmVyaSwgUmljYXJkbyB3cm90ZTo8YnI+DQomZ3Q7ICYjNDM7Q0hJUFNFQyBtYWlsaW5nIGxpc3Q8 YnI+DQomZ3Q7PGJyPg0KJmd0OyBIaSBKYXNvbiw8YnI+DQomZ3Q7PGJyPg0KJmd0OyBUaGFua3Mg Zm9yIHlvdXIgcmVwb3J0Ljxicj4NCiZndDs8YnI+DQomZ3Q7IE9uIE1vbiwgMjAxNS0xMC0yNiBh dCAxMjowNCAtMDcwMCwgSmFzb24gQmFyYmllciB3cm90ZTo8YnI+DQomZ3Q7ICZndDsgSGV5IGFs bCw8YnI+DQomZ3Q7ICZndDsgSSByYW4gTFVWLUxpdmUgYW5kIG15IHJlc3VsdHMgYXJlIGF0dGFj aGVkIGFzIGEgemlwLCBJIHNvcnQgb2Ygd2FzPGJyPg0KJmd0OyAmZ3Q7IHdvbmRlcmluZyBhYm91 dCB0aGUgZXJyb3JzIGluIHRoZSBjaGlwc2VjIGxvZyB0aG91Z2gsPGJyPg0KJmd0OyAmZ3Q7IFRo ZXNlIHdlcmUgc2ltaWxhciBlcnJvcnMgdGhhdCBJIGdvdCBsYXN0IHdlZWsgdGhhdCBjYXVzZWQg c29tZSBpc3N1ZXM8YnI+DQomZ3Q7ICZndDsgd2l0aCBteSBjbG9jayBiZWluZyByZXNldCB1c2lu ZyB2ZXJzaW9uIDEuMiwgdGhlIGxhdGVzdCBSQyBzZWVtcyB0byBub3Q8YnI+DQomZ3Q7ICZndDsg ZG8gdGhhdCBidXQgSXQgc3RpbGwgY2FuIG5vdCBzZWVtIHRvIHJ1biBhbGwgdGhlIHRlc3RzLjxi cj4NCiZndDsgJmd0Ozxicj4NCiZndDsgJmd0OyAtLTxicj4NCiZndDsgJmd0OyBXQVJOSU5HOiAn U1BJQkFSJyBNTUlPIEJBUiBkZWZpbml0aW9uIG5vdCBmb3VuZC9jb3JyZWN0IGluIFhNTCBjb25m aWc8YnI+DQomZ3Q7ICZndDsgW3BjaV0gcmVhZGluZyBCL0QvRjogMC8zMS8wLCBvZmZzZXQ6IDB4 RjAsIHZhbHVlOiAweEZFRDFDMDAxPGJyPg0KJmd0OyAmZ3Q7IFtzcGldIFNQSSBNTUlPIGJhc2U6 IDB4MDAwMDAwMDBGRUQxRjgwMCAoYXNzdW1pbmcgYmVsb3cgNEdCKTxicj4NCiZndDsgJmd0OyBb c3BpXSBTUEkgTU1JTyBiYXNlOiAweDAwMDAwMDAwRkVEMUY4MDAgKGFzc3VtaW5nIGJlbG93IDRH Qik8YnI+DQomZ3Q7ICZndDsgWy1dIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTo8 YnI+DQomZ3Q7ICZndDsmbmJzcDsgJm5ic3A7RmlsZSAmcXVvdDsvdXNyL2xpYi9weXRob24yLjcv c2l0ZS1wYWNrYWdlcy9jaGlwc2VjX21haW4ucHkmcXVvdDssIGxpbmUgMjkxLCBpbjxicj4NCiZn dDsgJmd0OyZuYnNwOyAmbmJzcDtydW5fbW9kdWxlPGJyPg0KJmd0OyAmZ3Q7Jm5ic3A7ICZuYnNw OyAmbmJzcDtyZXN1bHQgPSBtb2R4LnJ1biggbW9kdWxlX2FyZ3YgKTxicj4NCiZndDsgJmd0OyZu YnNwOyAmbmJzcDtGaWxlICZxdW90Oy91c3IvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL2No aXBzZWMvbW9kdWxlLnB5JnF1b3Q7LCBsaW5lIDY5LCBpbjxicj4NCiZndDsgJmd0OyZuYnNwOyAm bmJzcDtydW48YnI+DQomZ3Q7ICZndDsmbmJzcDsgJm5ic3A7ICZuYnNwO3Jlc3VsdCA9IHNlbGYu Z2V0X21vZHVsZV9vYmplY3QoKTxicj4NCiZndDsgJmd0OyZuYnNwOyAmbmJzcDtGaWxlICZxdW90 Oy91c3IvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL2NoaXBzZWMvbW9kdWxlLnB5JnF1b3Q7 LCBsaW5lIDEwMSw8YnI+DQomZ3Q7ICZndDsmbmJzcDsgJm5ic3A7aW4gZ2V0X21vZHVsZV9vYmpl Y3Q8YnI+DQomZ3Q7ICZndDsmbmJzcDsgJm5ic3A7ICZuYnNwO3NlbGYubW9kX29iaiA9IGlyZWYo KTxicj4NCiZndDsgJmd0OyZuYnNwOyAmbmJzcDtGaWxlPGJyPg0KJmd0OyAmZ3Q7Jm5ic3A7ICZu YnNwOyZxdW90Oy91c3IvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL2NoaXBzZWMvbW9kdWxl cy9jb21tb24vYmlvc193cC5weSZxdW90Oyw8YnI+DQomZ3Q7ICZndDsmbmJzcDsgJm5ic3A7bGlu ZSA1MSwgaW4gX19pbml0X188YnI+DQomZ3Q7ICZndDsmbmJzcDsgJm5ic3A7ICZuYnNwO3NlbGYu c3BpJm5ic3A7ICZuYnNwOyA9IFNQSSggc2VsZi5jcyApPGJyPg0KJmd0OyAmZ3Q7Jm5ic3A7ICZu YnNwO0ZpbGUgJnF1b3Q7L3Vzci9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvY2hpcHNlYy9o YWwvc3BpLnB5JnF1b3Q7LCBsaW5lIDE3Niw8YnI+DQomZ3Q7ICZndDsmbmJzcDsgJm5ic3A7aW4g X19pbml0X188YnI+DQomZ3Q7ICZndDsmbmJzcDsgJm5ic3A7ICZuYnNwO3NlbGYuaHNmc19vZmYm bmJzcDsgJm5ic3A7PSBpbnQoY2hpcHNlYy5jaGlwc2V0LmdldF9yZWdpc3Rlcl9kZWYoIHNlbGYu Y3MsPGJyPg0KJmd0OyAmZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDsmcXVvdDtIU0ZTJnF1b3Q7IClb J29mZnNldCddLDE2KTxicj4NCiZndDsgJmd0OyZuYnNwOyAmbmJzcDtGaWxlICZxdW90Oy91c3Iv bGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL2NoaXBzZWMvY2hpcHNldC5weSZxdW90OywgbGlu ZSA0NjcsPGJyPg0KJmd0OyAmZ3Q7Jm5ic3A7ICZuYnNwO2luIGdldF9yZWdpc3Rlcl9kZWY8YnI+ DQomZ3Q7ICZndDsmbmJzcDsgJm5ic3A7ICZuYnNwO3JldHVybiBfY3MuQ2ZnLlJFR0lTVEVSU1sg cmVnX25hbWUgXTxicj4NCiZndDsgJmd0OyBLZXlFcnJvcjogJ0hTRlMnPGJyPg0KJmd0OyAmZ3Q7 IC0tPGJyPg0KJmd0OyAmZ3Q7IFstXSBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6 PGJyPg0KJmd0OyAmZ3Q7Jm5ic3A7ICZuYnNwO0ZpbGUgJnF1b3Q7L3Vzci9saWIvcHl0aG9uMi43 L3NpdGUtcGFja2FnZXMvY2hpcHNlY19tYWluLnB5JnF1b3Q7LCBsaW5lIDI5MSwgaW48YnI+DQom Z3Q7ICZndDsmbmJzcDsgJm5ic3A7cnVuX21vZHVsZTxicj4NCiZndDsgJmd0OyZuYnNwOyAmbmJz cDsgJm5ic3A7cmVzdWx0ID0gbW9keC5ydW4oIG1vZHVsZV9hcmd2ICk8YnI+DQomZ3Q7ICZndDsm bmJzcDsgJm5ic3A7RmlsZSAmcXVvdDsvdXNyL2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9j aGlwc2VjL21vZHVsZS5weSZxdW90OywgbGluZSA4MCwgaW48YnI+DQomZ3Q7ICZndDsmbmJzcDsg Jm5ic3A7cnVuPGJyPg0KJmd0OyAmZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDtyZXN1bHQgPSBzZWxm Lm1vZF9vYmoucnVuKG1vZHVsZV9hcmd2KTxicj4NCiZndDsgJmd0OyZuYnNwOyAmbmJzcDtGaWxl PGJyPg0KJmd0OyAmZ3Q7Jm5ic3A7ICZuYnNwOyZxdW90Oy91c3IvbGliL3B5dGhvbjIuNy9zaXRl LXBhY2thZ2VzL2NoaXBzZWMvbW9kdWxlcy9jb21tb24vc3BpX2Rlc2MucHkmcXVvdDssPGJyPg0K Jmd0OyAmZ3Q7Jm5ic3A7ICZuYnNwO2xpbmUgNjgsIGluIHJ1bjxicj4NCiZndDsgJmd0OyZuYnNw OyAmbmJzcDsgJm5ic3A7cmV0dXJuIHNlbGYuY2hlY2tfZmxhc2hfYWNjZXNzX3Blcm1pc3Npb25z KCk8YnI+DQomZ3Q7ICZndDsmbmJzcDsgJm5ic3A7RmlsZTxicj4NCiZndDsgJmd0OyZuYnNwOyAm bmJzcDsmcXVvdDsvdXNyL2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9jaGlwc2VjL21vZHVs ZXMvY29tbW9uL3NwaV9kZXNjLnB5JnF1b3Q7LDxicj4NCiZndDsgJmd0OyZuYnNwOyAmbmJzcDts aW5lIDQ4LCBpbiBjaGVja19mbGFzaF9hY2Nlc3NfcGVybWlzc2lvbnM8YnI+DQomZ3Q7ICZndDsm bmJzcDsgJm5ic3A7ICZuYnNwO2ZyYXAgPSBjaGlwc2VjLmNoaXBzZXQucmVhZF9yZWdpc3Rlcigg c2VsZi5jcywgJ0ZSQVAnICk8YnI+DQomZ3Q7ICZndDsmbmJzcDsgJm5ic3A7RmlsZSAmcXVvdDsv dXNyL2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9jaGlwc2VjL2NoaXBzZXQucHkmcXVvdDss IGxpbmUgNDcwLDxicj4NCiZndDsgJmd0OyZuYnNwOyAmbmJzcDtpbiByZWFkX3JlZ2lzdGVyPGJy Pg0KJmd0OyAmZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDtyZWcgPSBfY3MuQ2ZnLlJFR0lTVEVSU1sg cmVnX25hbWUgXTxicj4NCiZndDsgJmd0OyBLZXlFcnJvcjogJ0ZSQVAnPGJyPg0KJmd0OyAmZ3Q7 PGJyPg0KJmd0OyAmZ3Q7IEVSUk9SOiBFeGNlcHRpb24gb2NjdXJyZWQgZHVyaW5nIGNoaXBzZWMu bW9kdWxlcy5jb21tb24uc3BpX2Rlc2MucnVuKCk6PGJyPg0KJmd0OyAmZ3Q7ICcnRlJBUCcnPGJy Pg0KJmd0OyAmZ3Q7IC0tPGJyPg0KJmd0OyAmZ3Q7IFstXSBUcmFjZWJhY2sgKG1vc3QgcmVjZW50 IGNhbGwgbGFzdCk6PGJyPg0KJmd0OyAmZ3Q7Jm5ic3A7ICZuYnNwO0ZpbGUgJnF1b3Q7L3Vzci9s aWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvY2hpcHNlY19tYWluLnB5JnF1b3Q7LCBsaW5lIDI5 MSwgaW48YnI+DQomZ3Q7ICZndDsmbmJzcDsgJm5ic3A7cnVuX21vZHVsZTxicj4NCiZndDsgJmd0 OyZuYnNwOyAmbmJzcDsgJm5ic3A7cmVzdWx0ID0gbW9keC5ydW4oIG1vZHVsZV9hcmd2ICk8YnI+ DQomZ3Q7ICZndDsmbmJzcDsgJm5ic3A7RmlsZSAmcXVvdDsvdXNyL2xpYi9weXRob24yLjcvc2l0 ZS1wYWNrYWdlcy9jaGlwc2VjL21vZHVsZS5weSZxdW90OywgbGluZSA4MCwgaW48YnI+DQomZ3Q7 ICZndDsmbmJzcDsgJm5ic3A7cnVuPGJyPg0KJmd0OyAmZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDty ZXN1bHQgPSBzZWxmLm1vZF9vYmoucnVuKG1vZHVsZV9hcmd2KTxicj4NCiZndDsgJmd0OyZuYnNw OyAmbmJzcDtGaWxlPGJyPg0KJmd0OyAmZ3Q7Jm5ic3A7ICZuYnNwOyZxdW90Oy91c3IvbGliL3B5 dGhvbjIuNy9zaXRlLXBhY2thZ2VzL2NoaXBzZWMvbW9kdWxlcy9jb21tb24vc3BpX2xvY2sucHkm cXVvdDssPGJyPg0KJmd0OyAmZ3Q7Jm5ic3A7ICZuYnNwO2xpbmUgNTksIGluIHJ1bjxicj4NCiZn dDsgJmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7cmV0dXJuIHNlbGYuY2hlY2tfc3BpX2xvY2soKTxi cj4NCiZndDsgJmd0OyZuYnNwOyAmbmJzcDtGaWxlPGJyPg0KJmd0OyAmZ3Q7Jm5ic3A7ICZuYnNw OyZxdW90Oy91c3IvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL2NoaXBzZWMvbW9kdWxlcy9j b21tb24vc3BpX2xvY2sucHkmcXVvdDssPGJyPg0KJmd0OyAmZ3Q7Jm5ic3A7ICZuYnNwO2xpbmUg NDYsIGluIGNoZWNrX3NwaV9sb2NrPGJyPg0KJmd0OyAmZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDto c2ZzX3JlZyA9IGNoaXBzZWMuY2hpcHNldC5yZWFkX3JlZ2lzdGVyKCBzZWxmLmNzLCAnSFNGUycg KTxicj4NCiZndDsgJmd0OyZuYnNwOyAmbmJzcDtGaWxlICZxdW90Oy91c3IvbGliL3B5dGhvbjIu Ny9zaXRlLXBhY2thZ2VzL2NoaXBzZWMvY2hpcHNldC5weSZxdW90OywgbGluZSA0NzAsPGJyPg0K Jmd0OyAmZ3Q7Jm5ic3A7ICZuYnNwO2luIHJlYWRfcmVnaXN0ZXI8YnI+DQomZ3Q7ICZndDsmbmJz cDsgJm5ic3A7ICZuYnNwO3JlZyA9IF9jcy5DZmcuUkVHSVNURVJTWyByZWdfbmFtZSBdPGJyPg0K Jmd0OyAmZ3Q7IEtleUVycm9yOiAnSFNGUyc8YnI+DQomZ3Q7ICZndDs8YnI+DQomZ3Q7ICZndDsg RVJST1I6IEV4Y2VwdGlvbiBvY2N1cnJlZCBkdXJpbmcgY2hpcHNlYy5tb2R1bGVzLmNvbW1vbi5z cGlfbG9jay5ydW4oKTo8YnI+DQomZ3Q7ICZndDsgJydIU0ZTJyc8YnI+DQomZ3Q7ICZndDsgLS08 YnI+DQomZ3Q7ICZndDs8YnI+DQomZ3Q7IEkgYWRkZWQgdGhlIENISVBTRUMgbWFpbGluZyBsaXN0 LiBQZXJoYXBzIHRoZXkgY2FuIGdpdmUgZnVydGhlciBpbnNpZ2h0PGJyPg0KJmd0OyBvbiB3aGF0 IHRoZSBwcm9ibGVtIG1pZ2h0IGJlLjxicj4NCiZndDs8YnI+DQomZ3Q7IEFzIHBlciBMVVYsIGl0 IHNlZW1zIHRoYXQgdGhpcyBleGNlcHRpb24gc29tZWhvdyBjYXVzZWQgYSBjcmFzaCBpbiB0aGU8 YnI+DQomZ3Q7IExVViB0ZXN0IG1hbmFnZXIgYW5kIGl0IHByZXZlbnRlZCBpdCBmcm9tIHJ1bm5p bmcgdGhlIHRlc3RzIG9mIHRoZTxicj4NCiZndDsgdGVzdHMuIEl0IHNlZW1zIHdlIG5lZWQgdG8g YWRkIHNvbWUgc2FmZWd1YXJkcyBzbyB0aGF0IExVViBjYW4gaGFuZGxlPGJyPg0KJmd0OyB0aGVz ZSBlcnJvcnMgbW9yZSBncmFjZWZ1bGx5Ljxicj4NCiZndDs8YnI+DQomZ3Q7IFRoYW5rcyBhbmQg QlIsPGJyPg0KJmd0OyBSaWNhcmRvPGJyPg0KJmd0Ozxicj4NCiZndDsgJmd0Ozxicj4NCiZndDsg Jmd0OyBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXzxicj4N CiZndDsgJmd0OyBMdXYgbWFpbGluZyBsaXN0PGJyPg0KJmd0OyAmZ3Q7IDxhIGhyZWY9Im1haWx0 bzpMdXZAbGlzdHMuMDEub3JnIiB0YXJnZXQ9Il9ibGFuayI+THV2QGxpc3RzLjAxLm9yZzwvYT48 YnI+DQomZ3Q7ICZndDsgPGEgaHJlZj0iaHR0cHM6Ly9saXN0cy4wMS5vcmcvbWFpbG1hbi9saXN0 aW5mby9sdXYiIHRhcmdldD0iX2JsYW5rIj5odHRwczovL2xpc3RzLjAxLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2x1djwvYT48YnI+DQomZ3Q7PGJyPg0KJmd0OyBfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXzxicj4NCiZndDsgTHV2IG1haWxpbmcgbGlzdDxicj4N CiZndDsgPGEgaHJlZj0ibWFpbHRvOkx1dkBsaXN0cy4wMS5vcmciIHRhcmdldD0iX2JsYW5rIj5M dXZAbGlzdHMuMDEub3JnPC9hPjxicj4NCiZndDsgPGEgaHJlZj0iaHR0cHM6Ly9saXN0cy4wMS5v cmcvbWFpbG1hbi9saXN0aW5mby9sdXYiIHRhcmdldD0iX2JsYW5rIj5odHRwczovL2xpc3RzLjAx Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2x1djwvYT48YnI+DQo8YnI+DQo8YnI+DQpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXzxicj4NCmNoaXBzZWMgbWFpbGlu ZyBsaXN0PGJyPg0KPGEgaHJlZj0ibWFpbHRvOmNoaXBzZWNAbGlzdHMuMDEub3JnIiB0YXJnZXQ9 Il9ibGFuayI+Y2hpcHNlY0BsaXN0cy4wMS5vcmc8L2E+PGJyPg0KPGEgaHJlZj0iaHR0cHM6Ly9s aXN0cy4wMS5vcmcvbWFpbG1hbi9saXN0aW5mby9jaGlwc2VjIiB0YXJnZXQ9Il9ibGFuayI+aHR0 cHM6Ly9saXN0cy4wMS5vcmcvbWFpbG1hbi9saXN0aW5mby9jaGlwc2VjPC9hPjxvOnA+PC9vOnA+ PC9wPg0KPC9ibG9ja3F1b3RlPg0KPC9kaXY+DQo8L2Rpdj4NCjwvZGl2Pg0KPC9kaXY+DQo8L2Js b2NrcXVvdGU+DQo8L2Rpdj4NCjwvZGl2Pg0KPC9kaXY+DQo8L2JvZHk+DQo8L2h0bWw+DQo= --===============3889182088196409346==--