Re: [Luv] Results and a few questions

Loucaides, John <[email protected]> Wed, 02 Dec 2015 23:09:01 +0000
Newsgroups dev.linux.lists.oe-chipsec
Message-ID <F2C8915217E2664AB33302D7A9ED9C0A35DA73C4@hasmsx107.ger.corp.intel.com>
--===============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 <[email protected]>; Ricardo Neri <ricardo.ner=
[email protected]>; 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<http://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 <john.loucaides(a)intel.com=
<mailto:[email protected]>> 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<mailto:chipsec-bounces=
@lists.01.org>] On Behalf Of Darren Bilby
Sent: Wednesday, October 28, 2015 5:55 PM
To: Ricardo Neri <ricardo.neri-calderon(a)linux.intel.com<mailto:ricardo.ne=
[email protected]>>; kusuriya(a)corrupted.io<mailto:kusuriya@=
corrupted.io>
Cc: chipsec(a)lists.01.org<mailto:[email protected]>; luv(a)lists.01.o=
rg<mailto:[email protected]>
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 <ricardo.neri-calderon(a)linux=
.intel.com<mailto:[email protected]>> 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<mailto:[email protected]>
> > https://lists.01.org/mailman/listinfo/luv
>
> _______________________________________________
> Luv mailing list
> Luv(a)lists.01.org<mailto:[email protected]>
> https://lists.01.org/mailman/listinfo/luv


_______________________________________________
chipsec mailing list
chipsec(a)lists.01.org<mailto:[email protected]>
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==--