<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>88332</bug_id>
          
          <creation_ts>2012-06-05 08:13:52 -0700</creation_ts>
          <short_desc>REGRESSION(r119467): it broke chromium-mac static initializers test.\ (Requested by loislo on #webkit).</short_desc>
          <delta_ts>2012-06-05 08:44:45 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>69826</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>bashi</cc>
    
    <cc>loislo</cc>
    
    <cc>rniwa</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>641568</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-05 08:13:52 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/119467 broke the build:
it broke chromium-mac static initializers test.\ (Requested by loislo on #webkit).

This is an automatic bug report generated by the sheriff-bot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641572</commentid>
    <comment_count>1</comment_count>
      <attachid>145801</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-05 08:14:33 -0700</bug_when>
    <thetext>Created attachment 145801
ROLLOUT of r119467

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641576</commentid>
    <comment_count>2</comment_count>
      <attachid>145801</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-06-05 08:17:42 -0700</bug_when>
    <thetext>Comment on attachment 145801
ROLLOUT of r119467

Clearing flags on attachment: 145801

Committed r119489: &lt;http://trac.webkit.org/changeset/119489&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641578</commentid>
    <comment_count>3</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-06-05 08:17:50 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641600</commentid>
    <comment_count>4</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-06-05 08:44:24 -0700</bug_when>
    <thetext>Unfortunately chromium-mac bot failed after roll on static initializers test.

RESULT chrome-si: initializers= 28 files

The expected value is 20.

http://build.chromium.org/p/chromium/builders/Mac/builds/14990/steps/sizes/logs/stdio</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145801</attachid>
            <date>2012-06-05 08:14:33 -0700</date>
            <delta_ts>2012-06-05 08:17:42 -0700</delta_ts>
            <desc>ROLLOUT of r119467</desc>
            <filename>bug-88332-20120605151905.patch</filename>
            <type>text/plain</type>
            <size>60308</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5NDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTlmOTVlNWMxZjliZDQz
NmM4YjcxNGQ4Mzc4NjI5M2U0NjVkZmMzZi4uNWMzYWY4YTE5ZjEzOWU3NzVlN2EyMzYyYTBjZTJl
NzlkODU3YWFkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTA2LTA1ICBTaGVy
aWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByMTE5NDY3LCByMTE5NDcxLCBhbmQgcjExOTQ3Ni4KKyAgICAgICAg
aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTE5NDY3CisgICAgICAgIGh0dHA6Ly90
cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzExOTQ3MQorICAgICAgICBodHRwOi8vdHJhYy53ZWJr
aXQub3JnL2NoYW5nZXNldC8xMTk0NzYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTg4MzMyCisKKyAgICAgICAgaXQgYnJva2UgY2hyb21pdW0tbWFjIHN0
YXRpYyBpbml0aWFsaXplcnMgdGVzdC5cIChSZXF1ZXN0ZWQgYnkKKyAgICAgICAgbG9pc2xvIG9u
ICN3ZWJraXQpLgorCisgICAgICAgICogV2ViQ29yZS5neXAvV2ViQ29yZS5neXA6CisgICAgICAg
ICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9y
bURhdGEuaDoKKyAgICAgICAgKEZvbnRQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtRGF0YUluaXQpOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1EYXRhQXNzaWduKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9uZy9IYXJmQnV6ekZhY2UuY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L25nL0hhcmZCdXp6RmFjZS5oOiBSZW1v
dmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L25nL0hhcmZCdXp6RmFj
ZUNvcmVUZXh0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9oYXJm
YnV6ei9uZy9IYXJmQnV6elNoYXBlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvaGFyZmJ1enovbmcvSGFyZkJ1enpTaGFwZXIuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udENvbXBsZXhUZXh0TWFjLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnQ6OnNlbGVjdGlvblJlY3RGb3JDb21wbGV4VGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpGb250OjpkcmF3Q29tcGxleFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6
ZmxvYXRXaWR0aEZvckNvbXBsZXhUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6Om9mZnNl
dEZvclBvc2l0aW9uRm9yQ29tcGxleFRleHQpOgorCiAyMDEyLTA2LTA1ICBBbGV4YW5kZXIgUGF2
bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogU0hJ
RlQga2V5IGFzIGhlbHBlciB0byBjb2xvciBhZGp1c3RtZW50IGluIGNvbG9yIHBpY2tlcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAppbmRleCA2NjIxYzM3YzdjYmEzMGEwYTRm
YWNkNWM1ZjQwYWEzNzBjNjc5NDNkLi43ZDhkN2JlYTg1MjRiNWUwY2QzY2I2YzczM2MwNDkzMWJm
YWFhNTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cApAQCAtMjA4LDgg
KzIwOCw2IEBACiAgICAgICAgICAgJy4uL3BsYXRmb3JtL2dyYXBoaWNzL21hYycsCiAgICAgICAg
ICAgJy4uL3BsYXRmb3JtL21hYycsCiAgICAgICAgICAgJy4uL3BsYXRmb3JtL3RleHQvbWFjJywK
LSAgICAgICAgICAnLi4vcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enonLAotICAgICAgICAgICcu
Li9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9uZycsCiAgICAgICAgIF0sCiAgICAgICB9XSwK
ICAgICAgIFsnT1M9PSJ3aW4iJywgewpAQCAtMTU1OSw3ICsxNTU3LDYgQEAKICAgICAgICAgICBd
LAogICAgICAgICAgICdkZXBlbmRlbmNpZXMnOiBbCiAgICAgICAgICAgICAnd2Via2l0X3N5c3Rl
bV9pbnRlcmZhY2UnLAotICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2RpcikvdGhpcmRfcGFy
dHkvaGFyZmJ1enotbmcvaGFyZmJ1enouZ3lwOmhhcmZidXp6LW5nJywKICAgICAgICAgICBdLAog
ICAgICAgICAgICdhY3Rpb25zJzogWwogICAgICAgICAgICAgewpAQCAtMTY1NSwxMiArMTY1Miw2
IEBACiAgICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAncGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HbHlw
aFBhZ2VUcmVlTm9kZVNraWFcXC5jcHAkJ10sCiAgICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAncGxh
dGZvcm0vZ3JhcGhpY3Mvc2tpYS9TaW1wbGVGb250RGF0YVNraWFcXC5jcHAkJ10sCiAgICAgICAg
ICAgICBbJ2V4Y2x1ZGUnLCAncGxhdGZvcm0vY2hyb21pdW0vRHJhZ0ltYWdlQ2hyb21pdW1NYWNc
XC5jcHAkJ10sCi0KLSAgICAgICAgICAgICMgTWFjIHVzZXMgSGFyZmJ1enotbmcuCi0gICAgICAg
ICAgICBbJ2luY2x1ZGUnLCAncGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpTaGFw
ZXJCYXNlXFwuKGNwcHxoKSQnXSwKLSAgICAgICAgICAgIFsnaW5jbHVkZScsICdwbGF0Zm9ybS9n
cmFwaGljcy9oYXJmYnV6ei9uZy9IYXJmQnV6ekZhY2VDb3JlVGV4dFxcLmNwcCQnXSwKLSAgICAg
ICAgICAgIFsnaW5jbHVkZScsICdwbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9uZy9IYXJmQnV6
ekZhY2VcXC4oY3BwfGgpJCddLAotICAgICAgICAgICAgWydpbmNsdWRlJywgJ3BsYXRmb3JtL2dy
YXBoaWNzL2hhcmZidXp6L25nL0hhcmZCdXp6U2hhcGVyXFwuKGNwcHxoKSQnXSwgICAgICAgICAg
ICAKICAgICAgICAgICBdLAogICAgICAgICB9LHsgIyBPUyE9Im1hYyIKICAgICAgICAgICAnc291
cmNlcy8nOiBbCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNmYyMzE2MGMzY2RlZGE4Y2QxMTIzMWJjNTIy
OTJhOTg5ZDA2ZmY5MS4uZGEzZDM4ZGJmNzdhYmJmYWIxMmIyOTI5Njk0MWU0NzA4YWExOWJkMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzkwNiwxMSArMzkwNiw2IEBACiAgICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpTa2lhLmgnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6U2hhcGVyQmFzZS5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6U2hhcGVyQmFzZS5oJywK
LSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9uZy9IYXJmQnV6ekZhY2VD
b3JlVGV4dC5jcHAnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L25n
L0hhcmZCdXp6RmFjZS5jcHAnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZi
dXp6L25nL0hhcmZCdXp6RmFjZS5oJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9o
YXJmYnV6ei9uZy9IYXJmQnV6elNoYXBlci5jcHAnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2hhcmZidXp6L25nL0hhcmZCdXp6U2hhcGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbScsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXIuaCcsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKaW5kZXggNjNh
OTFhNDI0MWEwNDM4OGI2ZDk0ZWRkY2RmOThlMjNhNGE2OTMxNi4uZTgyMmU1MDZkNzcwZjk3Zjgz
MTg1ZmM5YmZmYmY2MzY3MTQ2YmNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaApAQCAtNzIsNyArNzIsNiBAQCB0eXBlZGVm
IGNvbnN0IHN0cnVjdCBfX0NURm9udCogQ1RGb250UmVmOwogCiAjaWYgUExBVEZPUk0oQ0hST01J
VU0pICYmIE9TKERBUldJTikKICNpbmNsdWRlICJDcm9zc1Byb2Nlc3NGb250TG9hZGluZy5oIiAg
Ci0jaW5jbHVkZSAiSGFyZkJ1enpGYWNlLmgiCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFdJTikK
QEAgLTI1NiwxMCArMjU1LDYgQEAgcHVibGljOgogICAgIGNhaXJvX3NjYWxlZF9mb250X3QqIHNj
YWxlZEZvbnQoKSBjb25zdCB7IHJldHVybiBtX3NjYWxlZEZvbnQ7IH0KICNlbmRpZgogCi0jaWYg
UExBVEZPUk0oQ0hST01JVU0pICYmIE9TKERBUldJTikKLSAgICBIYXJmQnV6ekZhY2UqIGhhcmZi
dXp6RmFjZSgpOwotI2VuZGlmCi0KICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKICAgICB7CiAj
aWYgUExBVEZPUk0oV0lOKSAmJiAhVVNFKENBSVJPKQpAQCAtMzYzLDcgKzM1OCw2IEBAIHByaXZh
dGU6CiAKICNpZiBQTEFURk9STShDSFJPTUlVTSkgJiYgT1MoREFSV0lOKQogICAgIFJlZlB0cjxN
ZW1vcnlBY3RpdmF0ZWRGb250PiBtX2luTWVtb3J5Rm9udDsKLSAgICBSZWZQdHI8SGFyZkJ1enpG
YWNlPiBtX2hhcmZidXp6RmFjZTsKICNlbmRpZgogCiAgICAgYm9vbCBtX2lzQ29sb3JCaXRtYXBG
b250OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
Rm9udFBsYXRmb3JtRGF0YUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCmluZGV4IGYzMGIxODFmNjkyNzUyOGFj
MDdjZWM5MmZjN2I0N2MxMjMwZjgyNzIuLmQxMDk5NjY5YWQzMGQ1OWU0N2ZmY2M5MWM2MWRmMjBh
ODM2MGM1YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0KQEAgLTkyLDcgKzkyLDYg
QEAgdm9pZCBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybURhdGFJbml0KGNvbnN0IEZvbnRQbGF0
Zm9ybURhdGEmIGYpCiAKICNpZiBQTEFURk9STShDSFJPTUlVTSkgJiYgT1MoREFSV0lOKQogICAg
IG1faW5NZW1vcnlGb250ID0gZi5tX2luTWVtb3J5Rm9udDsKLSAgICBtX2hhcmZidXp6RmFjZSA9
IGYubV9oYXJmYnV6ekZhY2U7CiAjZW5kaWYKIH0KIApAQCAtMTA5LDcgKzEwOCw2IEBAIGNvbnN0
IEZvbnRQbGF0Zm9ybURhdGEmIEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtRGF0YUFzc2lnbihj
b25zdCBGb250UGxhdGZvcm1ECiAgICAgbV9DVEZvbnQgPSBmLm1fQ1RGb250OwogI2lmIFBMQVRG
T1JNKENIUk9NSVVNKSAmJiBPUyhEQVJXSU4pCiAgICAgbV9pbk1lbW9yeUZvbnQgPSBmLm1faW5N
ZW1vcnlGb250OwotICAgIG1faGFyZmJ1enpGYWNlID0gZi5tX2hhcmZidXp6RmFjZTsKICNlbmRp
ZgogICAgIHJldHVybiAqdGhpczsKIH0KQEAgLTI5OSwzNyArMjk3LDYgQEAgQ1RGb250UmVmIEZv
bnRQbGF0Zm9ybURhdGE6OmN0Rm9udCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fQ1RGb250LmdldCgp
OwogfQogCi0jaWYgUExBVEZPUk0oQ0hST01JVU0pICYmIE9TKERBUldJTikKLXN0YXRpYyBib29s
IGlzQUFURm9udChDVEZvbnRSZWYgY3RGb250KQotewotICAgIENGRGF0YVJlZiB0YWJsZSA9IENU
Rm9udENvcHlUYWJsZShjdEZvbnQsIGtDVEZvbnRUYWJsZU1vcnQsIDApOwotICAgIGlmICh0YWJs
ZSkgewotICAgICAgICBDRlJlbGVhc2UodGFibGUpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICB9Ci0gICAgdGFibGUgPSBDVEZvbnRDb3B5VGFibGUoY3RGb250LCBrQ1RGb250VGFibGVNb3J4
LCAwKTsKLSAgICBpZiAodGFibGUpIHsKLSAgICAgICAgQ0ZSZWxlYXNlKHRhYmxlKTsKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotSGFyZkJ1enpG
YWNlKiBGb250UGxhdGZvcm1EYXRhOjpoYXJmYnV6ekZhY2UoKQotewotICAgIENURm9udFJlZiBm
b250ID0gY3RGb250KCk7Ci0gICAgLy8gSGFyZkJ1enogY2FuJ3QgaGFuZGxlIEFBVCBmb250Ci0g
ICAgaWYgKGlzQUFURm9udChmb250KSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAoIW1f
aGFyZmJ1enpGYWNlKSB7Ci0gICAgICAgIHVpbnQ2NF90IHVuaXF1ZUlEID0gcmVpbnRlcnByZXRf
Y2FzdDx1aW50cHRyX3Q+KGZvbnQpOwotICAgICAgICBtX2hhcmZidXp6RmFjZSA9IEhhcmZCdXp6
RmFjZTo6Y3JlYXRlKGNvbnN0X2Nhc3Q8Rm9udFBsYXRmb3JtRGF0YSo+KHRoaXMpLCB1bmlxdWVJ
RCk7Ci0gICAgfQotICAgIHJldHVybiBtX2hhcmZidXp6RmFjZS5nZXQoKTsKLX0KLSNlbmRpZgot
CiAjaWZuZGVmIE5ERUJVRwogU3RyaW5nIEZvbnRQbGF0Zm9ybURhdGE6OmRlc2NyaXB0aW9uKCkg
Y29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hh
cmZidXp6L25nL0hhcmZCdXp6RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9oYXJmYnV6ei9uZy9IYXJmQnV6ekZhY2UuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA0OWRkYmFiYjIyYmRhOTY3N2E1NTg3MTBhNTE3OTJmYjViYWExNDFlLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L25nL0hhcmZCdXp6RmFjZS5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSw4MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDEyIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
Ci0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
Ci0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkhhcmZCdXp6
RmFjZS5oIgotCi0jaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0YS5oIgotI2luY2x1ZGUgImhiLmgi
Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBU
aG91Z2ggd2UgaGF2ZSBGb250Q2FjaGUgY2xhc3MsIHdoaWNoIHByb3ZpZGVzIHRoZSBjYWNoZSBt
ZWNoYW5pc20gZm9yCi0vLyBXZWJLaXQncyBmb250IG9iamVjdHMsIHdlIGFsc28gbmVlZCBhZGRp
dGlvbmFsIGNhY2hpbmcgbGF5ZXIgZm9yIEhhcmZCdXp6Ci0vLyB0byByZWR1Y2UgdGhlIG1lbW9y
eSBjb25zdW1wdGlvbiBiZWNhdXNlIGhiX2ZhY2VfdCBzaG91bGQgYmUgYXNzb2NpYXRlZCB3aXRo
Ci0vLyB1bmRlcmxpbmcgZm9udCBkYXRhIChlLmcuIENURm9udFJlZiwgRlRGYWNlKS4KLXR5cGVk
ZWYgcGFpcjxoYl9mYWNlX3QqLCB1bnNpZ25lZD4gRmFjZUNhY2hlRW50cnk7Ci10eXBlZGVmIEhh
c2hNYXA8dWludDY0X3QsIEZhY2VDYWNoZUVudHJ5LCBXVEY6OkludEhhc2g8dWludDY0X3Q+LCBX
VEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVpbnQ2NF90PiA+IEhhcmZCdXp6RmFj
ZUNhY2hlOwotCi1zdGF0aWMgSGFyZkJ1enpGYWNlQ2FjaGUqIGhhcmZidXp6RmFjZUNhY2hlKCkK
LXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEhhcmZCdXp6RmFjZUNhY2hlLCBzX2hhcmZidXp6
RmFjZUNhY2hlLCAoKSk7Ci0gICAgcmV0dXJuICZzX2hhcmZidXp6RmFjZUNhY2hlOwotfQotCi1I
YXJmQnV6ekZhY2U6OkhhcmZCdXp6RmFjZShGb250UGxhdGZvcm1EYXRhKiBwbGF0Zm9ybURhdGEs
IHVpbnQ2NF90IHVuaXF1ZUlEKQotICAgIDogbV9wbGF0Zm9ybURhdGEocGxhdGZvcm1EYXRhKQot
ICAgICwgbV91bmlxdWVJRCh1bmlxdWVJRCkKLXsKLSAgICBIYXJmQnV6ekZhY2VDYWNoZTo6aXRl
cmF0b3IgcmVzdWx0ID0gaGFyZmJ1enpGYWNlQ2FjaGUoKS0+ZmluZChtX3VuaXF1ZUlEKTsKLSAg
ICBpZiAocmVzdWx0ID09IGhhcmZidXp6RmFjZUNhY2hlKCktPmVuZCgpKSB7Ci0gICAgICAgIG1f
ZmFjZSA9IGNyZWF0ZUZhY2UoKTsKLSAgICAgICAgQVNTRVJUKG1fZmFjZSk7Ci0gICAgICAgIGhh
cmZidXp6RmFjZUNhY2hlKCktPnNldChtX3VuaXF1ZUlELCBGYWNlQ2FjaGVFbnRyeShtX2ZhY2Us
IDEpKTsKLSAgICB9IGVsc2UgewotICAgICAgICArKyhyZXN1bHQuZ2V0KCktPnNlY29uZC5zZWNv
bmQpOwotICAgICAgICBtX2ZhY2UgPSByZXN1bHQuZ2V0KCktPnNlY29uZC5maXJzdDsKLSAgICB9
Ci19Ci0KLUhhcmZCdXp6RmFjZTo6fkhhcmZCdXp6RmFjZSgpCi17Ci0gICAgSGFyZkJ1enpGYWNl
Q2FjaGU6Oml0ZXJhdG9yIHJlc3VsdCA9IGhhcmZidXp6RmFjZUNhY2hlKCktPmZpbmQobV91bmlx
dWVJRCk7Ci0gICAgQVNTRVJUKHJlc3VsdCAhPSBoYXJmYnV6ekZhY2VDYWNoZSgpLT5lbmQoKSk7
Ci0gICAgQVNTRVJUKHJlc3VsdC5nZXQoKS0+c2Vjb25kLnNlY29uZCA+IDApOwotICAgIC0tKHJl
c3VsdC5nZXQoKS0+c2Vjb25kLnNlY29uZCk7Ci0gICAgaWYgKCEocmVzdWx0LmdldCgpLT5zZWNv
bmQuc2Vjb25kKSkgewotICAgICAgICBoYl9mYWNlX2Rlc3Ryb3kocmVzdWx0LmdldCgpLT5zZWNv
bmQuZmlyc3QpOwotICAgICAgICBoYXJmYnV6ekZhY2VDYWNoZSgpLT5yZW1vdmUobV91bmlxdWVJ
RCk7Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9uZy9IYXJmQnV6ekZhY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L25nL0hhcmZCdXp6RmFj
ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZmMyNmIxYjFmMjBjM2ZmYTc5Yjg4
ZmI2OGQ5OWNhZDc5MmY0ODRiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L25nL0hh
cmZCdXp6RmFjZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoYykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRp
b24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0g
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgSGFyZkJ1
enpGYWNlX2gKLSNkZWZpbmUgSGFyZkJ1enpGYWNlX2gKLQotI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+Ci0KLXN0cnVjdCBfaGJfZmFjZV90OwotdHlwZWRlZiBfaGJfZmFjZV90IGhiX2ZhY2VfdDsK
LXN0cnVjdCBfaGJfZm9udF90OwotdHlwZWRlZiBfaGJfZm9udF90IGhiX2ZvbnRfdDsKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBGb250UGxhdGZvcm1EYXRhOwotCi1jbGFzcyBIYXJm
QnV6ekZhY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxIYXJmQnV6ekZhY2U+IHsKLXB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxIYXJmQnV6ekZhY2U+IGNyZWF0ZShGb250UGxhdGZvcm1EYXRh
KiBwbGF0Zm9ybURhdGEsIHVpbnQ2NF90IHVuaXF1ZUlEKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBIYXJmQnV6ekZhY2UocGxhdGZvcm1EYXRhLCB1bmlxdWVJRCkpOwotICAg
IH0KLSAgICB+SGFyZkJ1enpGYWNlKCk7Ci0KLSAgICBoYl9mb250X3QqIGNyZWF0ZUZvbnQoKTsK
LQotcHJpdmF0ZToKLSAgICBIYXJmQnV6ekZhY2UoRm9udFBsYXRmb3JtRGF0YSosIHVpbnQ2NF90
KTsKLQotICAgIGhiX2ZhY2VfdCogY3JlYXRlRmFjZSgpOwotCi0gICAgRm9udFBsYXRmb3JtRGF0
YSogbV9wbGF0Zm9ybURhdGE7Ci0gICAgdWludDY0X3QgbV91bmlxdWVJRDsKLSAgICBoYl9mYWNl
X3QqIG1fZmFjZTsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIEhhcmZCdXp6RmFjZV9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9uZy9IYXJmQnV6
ekZhY2VDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJm
YnV6ei9uZy9IYXJmQnV6ekZhY2VDb3JlVGV4dC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDk2Y2ViNDUxNzk2Yzc3MmNkNzE3YzE5ZDdhZDQzZGFhOWMzODA3NTkuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovbmcvSGFyZkJ1enpGYWNlQ29yZVRleHQuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsMTQ4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTIgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
SGFyZkJ1enpGYWNlLmgiCi0KLSNpbmNsdWRlICJDb3JlVGV4dC9Db3JlVGV4dC5oIgotI2luY2x1
ZGUgIkZvbnRQbGF0Zm9ybURhdGEuaCIKLSNpbmNsdWRlICJIYXJmQnV6elNoYXBlci5oIgotI2lu
Y2x1ZGUgIlNpbXBsZUZvbnREYXRhLmgiCi0KLSNpbmNsdWRlICJoYi5oIgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLXN0YXRpYyBoYl9wb3NpdGlvbl90IGZsb2F0VG9IYXJmQnV6elBvc2l0aW9u
KENHRmxvYXQgdmFsdWUpCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGhiX3Bvc2l0aW9uX3Q+
KHZhbHVlICogKDEgPDwgMTYpKTsKLX0KLQotc3RhdGljIGhiX2Jvb2xfdCBnZXRHbHlwaChoYl9m
b250X3QqIGhiRm9udCwgdm9pZCogZm9udERhdGEsIGhiX2NvZGVwb2ludF90IHVuaWNvZGUsIGhi
X2NvZGVwb2ludF90IHZhcmlhdGlvblNlbGVjdG9yLCBoYl9jb2RlcG9pbnRfdCogZ2x5cGgsIHZv
aWQqIHVzZXJEYXRhKQotewotICAgIENURm9udFJlZiBjdEZvbnQgPSByZWludGVycHJldF9jYXN0
PEZvbnRQbGF0Zm9ybURhdGEqPihmb250RGF0YSktPmN0Rm9udCgpOwotICAgIFVuaUNoYXIgY2hh
cmFjdGVyc1s0XTsKLSAgICBDR0dseXBoIGNnR2x5cGhzWzRdOwotICAgIHNpemVfdCBsZW5ndGgg
PSAwOwotICAgIFUxNl9BUFBFTkRfVU5TQUZFKGNoYXJhY3RlcnMsIGxlbmd0aCwgdW5pY29kZSk7
Ci0gICAgaWYgKCFDVEZvbnRHZXRHbHlwaHNGb3JDaGFyYWN0ZXJzKGN0Rm9udCwgY2hhcmFjdGVy
cywgY2dHbHlwaHMsIGxlbmd0aCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAqZ2x5cGgg
PSBjZ0dseXBoc1swXTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIGhiX3Bvc2l0aW9u
X3QgZ2V0R2x5cGhIb3Jpem9udGFsQWR2YW5jZShoYl9mb250X3QqIGhiRm9udCwgdm9pZCogZm9u
dERhdGEsIGhiX2NvZGVwb2ludF90IGdseXBoLCB2b2lkKiB1c2VyRGF0YSkKLXsKLSAgICBDVEZv
bnRSZWYgY3RGb250ID0gcmVpbnRlcnByZXRfY2FzdDxGb250UGxhdGZvcm1EYXRhKj4oZm9udERh
dGEpLT5jdEZvbnQoKTsKLSAgICBDR0dseXBoIGNnR2x5cGggPSBnbHlwaDsKLSAgICBDR0Zsb2F0
IGFkdmFuY2UgPSBDVEZvbnRHZXRBZHZhbmNlc0ZvckdseXBocyhjdEZvbnQsIGtDVEZvbnRIb3Jp
em9udGFsT3JpZW50YXRpb24sICZjZ0dseXBoLCAwLCAxKTsKLSAgICByZXR1cm4gZmxvYXRUb0hh
cmZCdXp6UG9zaXRpb24oYWR2YW5jZSk7Ci19Ci0KLXN0YXRpYyBoYl9ib29sX3QgZ2V0R2x5cGhI
b3Jpem9udGFsT3JpZ2luKGhiX2ZvbnRfdCogaGJGb250LCB2b2lkKiBmb250RGF0YSwgaGJfY29k
ZXBvaW50X3QgZ2x5cGgsIGhiX3Bvc2l0aW9uX3QqIHgsIGhiX3Bvc2l0aW9uX3QqIHksIHZvaWQq
IHVzZXJEYXRhKQotewotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgaGJfYm9vbF90IGdl
dEdseXBoRXh0ZW50cyhoYl9mb250X3QqIGhiRm9udCwgdm9pZCogZm9udERhdGEsIGhiX2NvZGVw
b2ludF90IGdseXBoLCBoYl9nbHlwaF9leHRlbnRzX3QqIGV4dGVudHMsIHZvaWQqIHVzZXJEYXRh
KQotewotICAgIENURm9udFJlZiBjdEZvbnQgPSByZWludGVycHJldF9jYXN0PEZvbnRQbGF0Zm9y
bURhdGEqPihmb250RGF0YSktPmN0Rm9udCgpOwotICAgIENHUmVjdCBjZ1JlY3Q7Ci0gICAgQ0dH
bHlwaCBjZ0dseXBoID0gZ2x5cGg7Ci0gICAgaWYgKENURm9udEdldEJvdW5kaW5nUmVjdHNGb3JH
bHlwaHMoY3RGb250LCBrQ1RGb250RGVmYXVsdE9yaWVudGF0aW9uLCAmY2dHbHlwaCwgJmNnUmVj
dCwgMSkgPT0gQ0dSZWN0TnVsbCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGV4dGVudHMt
PnhfYmVhcmluZyA9IGZsb2F0VG9IYXJmQnV6elBvc2l0aW9uKGNnUmVjdC5vcmlnaW4ueCk7Ci0g
ICAgZXh0ZW50cy0+eV9iZWFyaW5nID0gLWZsb2F0VG9IYXJmQnV6elBvc2l0aW9uKGNnUmVjdC5v
cmlnaW4ueSk7Ci0gICAgZXh0ZW50cy0+d2lkdGggPSBmbG9hdFRvSGFyZkJ1enpQb3NpdGlvbihj
Z1JlY3Quc2l6ZS53aWR0aCk7Ci0gICAgZXh0ZW50cy0+aGVpZ2h0ID0gZmxvYXRUb0hhcmZCdXp6
UG9zaXRpb24oY2dSZWN0LnNpemUuaGVpZ2h0KTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3Rh
dGljIGhiX2ZvbnRfZnVuY3NfdCogaGFyZmJ1enpDb3JlVGV4dEdldEZvbnRGdW5jcygpCi17Ci0g
ICAgc3RhdGljIGhiX2ZvbnRfZnVuY3NfdCogaGFyZmJ1enpDb3JlVGV4dEZvbnRGdW5jcyA9IDA7
Ci0KLSAgICBpZiAoIWhhcmZidXp6Q29yZVRleHRGb250RnVuY3MpIHsKLSAgICAgICAgaGFyZmJ1
enpDb3JlVGV4dEZvbnRGdW5jcyA9IGhiX2ZvbnRfZnVuY3NfY3JlYXRlKCk7Ci0gICAgICAgIGhi
X2ZvbnRfZnVuY3Nfc2V0X2dseXBoX2Z1bmMoaGFyZmJ1enpDb3JlVGV4dEZvbnRGdW5jcywgZ2V0
R2x5cGgsIDAsIDApOwotICAgICAgICBoYl9mb250X2Z1bmNzX3NldF9nbHlwaF9oX2FkdmFuY2Vf
ZnVuYyhoYXJmYnV6ekNvcmVUZXh0Rm9udEZ1bmNzLCBnZXRHbHlwaEhvcml6b250YWxBZHZhbmNl
LCAwLCAwKTsKLSAgICAgICAgaGJfZm9udF9mdW5jc19zZXRfZ2x5cGhfaF9vcmlnaW5fZnVuYyho
YXJmYnV6ekNvcmVUZXh0Rm9udEZ1bmNzLCBnZXRHbHlwaEhvcml6b250YWxPcmlnaW4sIDAsIDAp
OwotICAgICAgICBoYl9mb250X2Z1bmNzX3NldF9nbHlwaF9leHRlbnRzX2Z1bmMoaGFyZmJ1enpD
b3JlVGV4dEZvbnRGdW5jcywgZ2V0R2x5cGhFeHRlbnRzLCAwLCAwKTsKLSAgICAgICAgaGJfZm9u
dF9mdW5jc19tYWtlX2ltbXV0YWJsZShoYXJmYnV6ekNvcmVUZXh0Rm9udEZ1bmNzKTsKLSAgICB9
Ci0gICAgcmV0dXJuIGhhcmZidXp6Q29yZVRleHRGb250RnVuY3M7Ci19Ci0KLXN0YXRpYyB2b2lk
IHJlbGVhc2VUYWJsZURhdGEodm9pZCogdXNlckRhdGEpCi17Ci0gICAgQ0ZEYXRhUmVmIGNmRGF0
YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZEYXRhUmVmPih1c2VyRGF0YSk7Ci0gICAgQ0ZSZWxlYXNl
KGNmRGF0YSk7Ci19Ci0KLXN0YXRpYyBoYl9ibG9iX3QqIGhhcmZidXp6Q29yZVRleHRHZXRUYWJs
ZShoYl9mYWNlX3QqIGZhY2UsIGhiX3RhZ190IHRhZywgdm9pZCogdXNlckRhdGEpCi17Ci0gICAg
Rm9udFBsYXRmb3JtRGF0YSogcGxhdGZvcm1EYXRhID0gcmVpbnRlcnByZXRfY2FzdDxGb250UGxh
dGZvcm1EYXRhKj4odXNlckRhdGEpOwotICAgIENURm9udFJlZiBjdEZvbnQgPSBwbGF0Zm9ybURh
dGEtPmN0Rm9udCgpOwotICAgIENGRGF0YVJlZiBjZkRhdGEgPSBDVEZvbnRDb3B5VGFibGUoY3RG
b250LCB0YWcsIGtDVEZvbnRUYWJsZU9wdGlvbk5vT3B0aW9ucyk7Ci0gICAgaWYgKCFjZkRhdGEp
Ci0gICAgICAgIHJldHVybiAwOwotCi0gICAgY29uc3QgY2hhciogZGF0YSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgY2hhcio+KENGRGF0YUdldEJ5dGVQdHIoY2ZEYXRhKSk7Ci0gICAgY29uc3Qg
c2l6ZV90IGxlbmd0aCA9IENGRGF0YUdldExlbmd0aChjZkRhdGEpOwotICAgIGlmICghZGF0YSB8
fCAhbGVuZ3RoKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gaGJfYmxvYl9jcmVhdGUo
ZGF0YSwgbGVuZ3RoLCBIQl9NRU1PUllfTU9ERV9SRUFET05MWSwgcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4oY29uc3RfY2FzdDxfX0NGRGF0YSo+KGNmRGF0YSkpLCByZWxlYXNlVGFibGVEYXRhKTsK
LX0KLQotaGJfZmFjZV90KiBIYXJmQnV6ekZhY2U6OmNyZWF0ZUZhY2UoKQotewotICAgIGhiX2Zh
Y2VfdCogZmFjZSA9IGhiX2ZhY2VfY3JlYXRlX2Zvcl90YWJsZXMoaGFyZmJ1enpDb3JlVGV4dEdl
dFRhYmxlLCBtX3BsYXRmb3JtRGF0YSwgMCk7Ci0gICAgQVNTRVJUKGZhY2UpOwotICAgIHJldHVy
biBmYWNlOwotfQotCi1oYl9mb250X3QqIEhhcmZCdXp6RmFjZTo6Y3JlYXRlRm9udCgpCi17Ci0g
ICAgaGJfZm9udF90KiBmb250ID0gaGJfZm9udF9jcmVhdGUobV9mYWNlKTsKLSAgICBoYl9mb250
X3NldF9mdW5jcyhmb250LCBoYXJmYnV6ekNvcmVUZXh0R2V0Rm9udEZ1bmNzKCksIG1fcGxhdGZv
cm1EYXRhLCAwKTsKLSAgICBjb25zdCBmbG9hdCBzaXplID0gbV9wbGF0Zm9ybURhdGEtPm1fc2l6
ZTsKLSAgICBoYl9mb250X3NldF9wcGVtKGZvbnQsIHNpemUsIHNpemUpOwotICAgIGNvbnN0IGlu
dCBzY2FsZSA9ICgxIDw8IDE2KSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZSk7Ci0gICAgaGJfZm9u
dF9zZXRfc2NhbGUoZm9udCwgc2NhbGUsIHNjYWxlKTsKLSAgICBoYl9mb250X21ha2VfaW1tdXRh
YmxlKGZvbnQpOwotICAgIHJldHVybiBmb250OwotfQotCi1HbHlwaEJ1ZmZlckFkdmFuY2UgSGFy
ZkJ1enpTaGFwZXI6OmNyZWF0ZUdseXBoQnVmZmVyQWR2YW5jZShmbG9hdCB3aWR0aCwgZmxvYXQg
aGVpZ2h0KQotewotICAgIHJldHVybiBDR1NpemVNYWtlKHdpZHRoLCBoZWlnaHQpOwotfQotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9oYXJmYnV6ei9uZy9IYXJmQnV6elNoYXBlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9uZy9IYXJmQnV6elNoYXBlci5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlZWQ4OTdiYTZhMTFhNzBmMDY0NzI5YmQ4OTIzYzVk
NzkyNTc3MzYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovbmcvSGFyZkJ1enpTaGFw
ZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzYwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KGMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgot
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiSGFyZkJ1enpTaGFwZXIuaCIKLQotI2luY2x1ZGUgIkZvbnQuaCIKLSNpbmNs
dWRlICJTdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3IuaCIKLSNpbmNsdWRlICJUZXh0UnVu
LmgiCi0jaW5jbHVkZSAiaGItaWN1LmgiCi0jaW5jbHVkZSA8dW5pY29kZS9ub3JtbHpyLmg+Ci0j
aW5jbHVkZSA8dW5pY29kZS91Y2hhci5oPgotI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Ci0j
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VuaWNvZGUuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgaW5saW5lIGZsb2F0IGhhcmZidXp6UG9z
aXRpb25Ub0Zsb2F0KGhiX3Bvc2l0aW9uX3QgdmFsdWUpCi17Ci0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PGZsb2F0Pih2YWx1ZSkgLyAoMSA8PCAxNik7Ci19Ci0KLUhhcmZCdXp6U2hhcGVyOjpIYXJm
QnV6elJ1bjo6SGFyZkJ1enpSdW4odW5zaWduZWQgbnVtQ2hhcmFjdGVycywgVGV4dERpcmVjdGlv
biBkaXJlY3Rpb24sIGhiX2J1ZmZlcl90KiBoYXJmYnV6ekJ1ZmZlcikKLSAgICA6IG1fbnVtQ2hh
cmFjdGVycyhudW1DaGFyYWN0ZXJzKQotICAgICwgbV9kaXJlY3Rpb24oZGlyZWN0aW9uKQotewot
ICAgIG1fbnVtR2x5cGhzID0gaGJfYnVmZmVyX2dldF9sZW5ndGgoaGFyZmJ1enpCdWZmZXIpOwot
ICAgIG1fZ2x5cGhzLnJlc2l6ZShtX251bUdseXBocyk7Ci0gICAgbV9hZHZhbmNlcy5yZXNpemUo
bV9udW1HbHlwaHMpOwotICAgIG1fb2Zmc2V0cy5yZXNpemUobV9udW1HbHlwaHMpOwotICAgIG1f
Z2x5cGhUb0NoYXJhY3RlckluZGV4LnJlc2l6ZShtX251bUdseXBocyk7Ci0gICAgbV9sb2dDbHVz
dGVycy5yZXNpemUobV9udW1DaGFyYWN0ZXJzKTsKLQotICAgIGhiX2dseXBoX2luZm9fdCogaW5m
b3MgPSBoYl9idWZmZXJfZ2V0X2dseXBoX2luZm9zKGhhcmZidXp6QnVmZmVyLCAwKTsKLSAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9udW1HbHlwaHM7ICsraSkKLSAgICAgICAgbV9nbHlw
aFRvQ2hhcmFjdGVySW5kZXhbaV0gPSBpbmZvc1tpXS5jbHVzdGVyOwotCi0gICAgLy8gRmlsbCBs
b2dpY2FsIGNsdXN0ZXJzCi0gICAgdW5zaWduZWQgaW5kZXggPSAwOwotICAgIHdoaWxlIChpbmRl
eCA8IG1fbnVtR2x5cGhzKSB7Ci0gICAgICAgIHVuc2lnbmVkIG5leHRJbmRleCA9IGluZGV4ICsg
MTsKLSAgICAgICAgd2hpbGUgKG5leHRJbmRleCA8IG1fbnVtR2x5cGhzICYmIGluZm9zW2luZGV4
XS5jbHVzdGVyID09IGluZm9zW25leHRJbmRleF0uY2x1c3RlcikKLSAgICAgICAgICAgICsrbmV4
dEluZGV4OwotICAgICAgICBpZiAocnRsKCkpIHsKLSAgICAgICAgICAgIGludCBuZXh0Q2x1c3Rl
ciA9IG5leHRJbmRleCA8IG1fbnVtR2x5cGhzID8gaW5mb3NbbmV4dEluZGV4XS5jbHVzdGVyIDog
LTE7Ci0gICAgICAgICAgICBmb3IgKGludCBqID0gaW5mb3NbaW5kZXhdLmNsdXN0ZXI7IGogPiBu
ZXh0Q2x1c3RlcjsgLS1qKQotICAgICAgICAgICAgICAgIG1fbG9nQ2x1c3RlcnNbal0gPSBpbmRl
eDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIG5leHRDbHVzdGVyID0g
bmV4dEluZGV4IDwgbV9udW1HbHlwaHMgPyBpbmZvc1tuZXh0SW5kZXhdLmNsdXN0ZXIgOiBtX251
bUNoYXJhY3RlcnM7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSBpbmZvc1tpbmRleF0u
Y2x1c3RlcjsgaiA8IG5leHRDbHVzdGVyOyArK2opCi0gICAgICAgICAgICAgICAgbV9sb2dDbHVz
dGVyc1tqXSA9IGluZGV4OwotICAgICAgICB9Ci0gICAgICAgIGluZGV4ID0gbmV4dEluZGV4Owot
ICAgIH0KLX0KLQotdm9pZCBIYXJmQnV6elNoYXBlcjo6SGFyZkJ1enpSdW46OnNldEdseXBoQW5k
UG9zaXRpb25zKHVuc2lnbmVkIGluZGV4LCB1aW50MTZfdCBnbHlwaElkLCBmbG9hdCB4LCBmbG9h
dCB5LCBmbG9hdCBhZHZhbmNlKQotewotICAgIG1fZ2x5cGhzW2luZGV4XSA9IGdseXBoSWQ7Ci0g
ICAgbV9vZmZzZXRzW2luZGV4XS5zZXQoeCwgeSk7Ci0gICAgbV9hZHZhbmNlc1tpbmRleF0gPSBh
ZHZhbmNlOwotfQotCi1pbnQgSGFyZkJ1enpTaGFwZXI6OkhhcmZCdXp6UnVuOjpjaGFyYWN0ZXJJ
bmRleEZvclhQb3NpdGlvbihpbnQgdGFyZ2V0WCkKLXsKLSAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHRhcmdldFgpIDw9IG1fd2lkdGgpOwotICAgIGludCBjdXJyZW50WCA9IDA7Ci0g
ICAgZmxvYXQgcHJldkFkdmFuY2UgPSAwOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X251bUdseXBoczsgKytpKSB7Ci0gICAgICAgIGZsb2F0IGN1cnJlbnRBZHZhbmNlID0gbV9hZHZh
bmNlc1tpXSAvIDIuMDsKLSAgICAgICAgaW50IG5leHRYID0gY3VycmVudFggKyByb3VuZGYocHJl
dkFkdmFuY2UgKyBjdXJyZW50QWR2YW5jZSk7Ci0gICAgICAgIGlmIChjdXJyZW50WCA8PSB0YXJn
ZXRYICYmIHRhcmdldFggPD0gbmV4dFgpCi0gICAgICAgICAgICByZXR1cm4gbV9nbHlwaFRvQ2hh
cmFjdGVySW5kZXhbaV0gKyAocnRsKCkgPyAxIDogMCk7Ci0gICAgICAgIGN1cnJlbnRYID0gbmV4
dFg7Ci0gICAgICAgIHByZXZBZHZhbmNlID0gY3VycmVudEFkdmFuY2U7Ci0gICAgfQotCi0gICAg
cmV0dXJuIHJ0bCgpID8gMCA6IG1fbnVtQ2hhcmFjdGVyczsKLX0KLQotaW50IEhhcmZCdXp6U2hh
cGVyOjpIYXJmQnV6elJ1bjo6eFBvc2l0aW9uRm9yT2Zmc2V0KHVuc2lnbmVkIG9mZnNldCkKLXsK
LSAgICBBU1NFUlQob2Zmc2V0IDwgbV9udW1DaGFyYWN0ZXJzKTsKLSAgICB1bnNpZ25lZCBnbHlw
aEluZGV4ID0gbV9sb2dDbHVzdGVyc1tvZmZzZXRdOwotICAgIEFTU0VSVChnbHlwaEluZGV4IDwg
bV9udW1HbHlwaHMpOwotICAgIGZsb2F0IHBvc2l0aW9uID0gbV9vZmZzZXRzW2dseXBoSW5kZXhd
LngoKTsKLSAgICBpZiAocnRsKCkpCi0gICAgICAgIHBvc2l0aW9uICs9IG1fYWR2YW5jZXNbZ2x5
cGhJbmRleF07Ci0gICAgcmV0dXJuIHJvdW5kZihwb3NpdGlvbik7Ci19Ci0KLUhhcmZCdXp6U2hh
cGVyOjpIYXJmQnV6elNoYXBlcihjb25zdCBGb250KiBmb250LCBjb25zdCBUZXh0UnVuJiBydW4p
Ci0gICAgOiBIYXJmQnV6elNoYXBlckJhc2UoZm9udCwgcnVuKQotICAgICwgbV9zdGFydEluZGV4
T2ZDdXJyZW50UnVuKDApCi0gICAgLCBtX251bUNoYXJhY3RlcnNPZkN1cnJlbnRSdW4oMCkKLSAg
ICAsIG1faGFyZmJ1enpCdWZmZXIoMCkKLXsKLSAgICBzZXROb3JtYWxpemVkQnVmZmVyKCk7Ci0g
ICAgc2V0Rm9udEZlYXR1cmVzKCk7Ci19Ci0KLUhhcmZCdXp6U2hhcGVyOjp+SGFyZkJ1enpTaGFw
ZXIoKQotewotICAgIGlmIChtX2hhcmZidXp6QnVmZmVyKQotICAgICAgICBoYl9idWZmZXJfZGVz
dHJveShtX2hhcmZidXp6QnVmZmVyKTsKLX0KLQotdm9pZCBIYXJmQnV6elNoYXBlcjo6c2V0Rm9u
dEZlYXR1cmVzKCkKLXsKLSAgICBGb250RmVhdHVyZVNldHRpbmdzKiBzZXR0aW5ncyA9IG1fZm9u
dC0+Zm9udERlc2NyaXB0aW9uKCkuZmVhdHVyZVNldHRpbmdzKCk7Ci0gICAgaWYgKCFzZXR0aW5n
cykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgdW5zaWduZWQgbnVtRmVhdHVyZXMgPSBzZXR0aW5n
cy0+c2l6ZSgpOwotICAgIG1fZmVhdHVyZXMucmVzaXplKG51bUZlYXR1cmVzKTsKLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtRmVhdHVyZXM7ICsraSkgewotICAgICAgICBjb25zdCBV
Q2hhciogdGFnID0gc2V0dGluZ3MtPmF0KGkpLnRhZygpLmNoYXJhY3RlcnMoKTsKLSAgICAgICAg
bV9mZWF0dXJlc1tpXS50YWcgPSBIQl9UQUcodGFnWzBdLCB0YWdbMV0sIHRhZ1syXSwgdGFnWzNd
KTsKLSAgICAgICAgbV9mZWF0dXJlc1tpXS52YWx1ZSA9IHNldHRpbmdzLT5hdChpKS52YWx1ZSgp
OwotICAgICAgICBtX2ZlYXR1cmVzW2ldLnN0YXJ0ID0gMDsKLSAgICAgICAgbV9mZWF0dXJlc1tp
XS5lbmQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oLTEpOwotICAgIH0KLX0KLQotYm9vbCBIYXJm
QnV6elNoYXBlcjo6c2hhcGUoR2x5cGhCdWZmZXIqIGdseXBoQnVmZmVyKQotewotICAgIG1fdG90
YWxXaWR0aCA9IDA7Ci0gICAgd2hpbGUgKHNldHVwSGFyZkJ1enpSdW4oKSkgewotICAgICAgICBp
ZiAoIXNoYXBlSGFyZkJ1enpSdW4oKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgc2V0R2x5cGhQb3NpdGlvbnNGb3JIYXJmQnV6elJ1bihnbHlwaEJ1ZmZlcik7Ci0gICAgfQot
Ci0gICAgaWYgKCFtX2hhcmZidXp6UnVucy5zaXplKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIEhhcmZCdXp6U2hhcGVyOjpzZXR1cEhhcmZC
dXp6UnVuKCkKLXsKLSAgICBtX3N0YXJ0SW5kZXhPZkN1cnJlbnRSdW4gKz0gbV9udW1DaGFyYWN0
ZXJzT2ZDdXJyZW50UnVuOwotCi0gICAgLy8gSXRlcmF0ZSB0aHJvdWdoIHRoZSB0ZXh0IHRvIHRh
a2UgdGhlIGxhcmdlc3QgcmFuZ2UgdGhhdCBzdGF5cyB3aXRoaW4KLSAgICAvLyBhIHNpbmdsZSBm
b250LgotICAgIGludCBlbmRPZlJ1bkluZGV4ID0gbV9ub3JtYWxpemVkQnVmZmVyTGVuZ3RoIC0g
bV9zdGFydEluZGV4T2ZDdXJyZW50UnVuOwotICAgIFN1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVy
YXRvciBpdGVyYXRvcihtX25vcm1hbGl6ZWRCdWZmZXIuZ2V0KCkgKyBtX3N0YXJ0SW5kZXhPZkN1
cnJlbnRSdW4sIDAsIGVuZE9mUnVuSW5kZXgsIGVuZE9mUnVuSW5kZXgpOwotICAgIFVDaGFyMzIg
Y2hhcmFjdGVyOwotICAgIHVuc2lnbmVkIGNsdXN0ZXJMZW5ndGggPSAwOwotICAgIGlmICghaXRl
cmF0b3IuY29uc3VtZShjaGFyYWN0ZXIsIGNsdXN0ZXJMZW5ndGgpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBtX2N1cnJlbnRGb250RGF0YSA9IG1fZm9udC0+Z2x5cGhEYXRhRm9yQ2hh
cmFjdGVyKGNoYXJhY3RlciwgZmFsc2UpLmZvbnREYXRhOwotICAgIFVFcnJvckNvZGUgZXJyb3JD
b2RlID0gVV9aRVJPX0VSUk9SOwotICAgIFVTY3JpcHRDb2RlIGN1cnJlbnRTY3JpcHQgPSB1c2Ny
aXB0X2dldFNjcmlwdChjaGFyYWN0ZXIsICZlcnJvckNvZGUpOwotICAgIGlmIChVX0ZBSUxVUkUo
ZXJyb3JDb2RlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChjdXJyZW50U2NyaXB0
ID09IFVTQ1JJUFRfSU5IRVJJVEVEKQotICAgICAgICBjdXJyZW50U2NyaXB0ID0gVVNDUklQVF9D
T01NT047Ci0gICAgZm9yIChpdGVyYXRvci5hZHZhbmNlKGNsdXN0ZXJMZW5ndGgpOyBpdGVyYXRv
ci5jb25zdW1lKGNoYXJhY3RlciwgY2x1c3Rlckxlbmd0aCk7IGl0ZXJhdG9yLmFkdmFuY2UoY2x1
c3Rlckxlbmd0aCkpIHsKLSAgICAgICAgY29uc3QgU2ltcGxlRm9udERhdGEqIG5leHRGb250RGF0
YSA9IG1fZm9udC0+Z2x5cGhEYXRhRm9yQ2hhcmFjdGVyKGNoYXJhY3RlciwgZmFsc2UpLmZvbnRE
YXRhOwotICAgICAgICBpZiAobmV4dEZvbnREYXRhICE9IG1fY3VycmVudEZvbnREYXRhKQotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIFVTY3JpcHRDb2RlIG5leHRTY3JpcHQgPSB1c2NyaXB0
X2dldFNjcmlwdChjaGFyYWN0ZXIsICZlcnJvckNvZGUpOwotICAgICAgICBpZiAoVV9GQUlMVVJF
KGVycm9yQ29kZSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmIChjdXJy
ZW50U2NyaXB0ID09IG5leHRTY3JpcHQgfHwgbmV4dFNjcmlwdCA9PSBVU0NSSVBUX0lOSEVSSVRF
RCB8fCBuZXh0U2NyaXB0ID09IFVTQ1JJUFRfQ09NTU9OKQotICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgIGlmIChjdXJyZW50U2NyaXB0ID09IFVTQ1JJUFRfQ09NTU9OKQotICAgICAgICAg
ICAgY3VycmVudFNjcmlwdCA9IG5leHRTY3JpcHQ7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IGJyZWFrOwotICAgIH0KLSAgICBtX251bUNoYXJhY3RlcnNPZkN1cnJlbnRSdW4gPSBpdGVyYXRv
ci5jdXJyZW50Q2hhcmFjdGVyKCk7Ci0KLSAgICBpZiAoIW1faGFyZmJ1enpCdWZmZXIpIHsKLSAg
ICAgICAgbV9oYXJmYnV6ekJ1ZmZlciA9IGhiX2J1ZmZlcl9jcmVhdGUoKTsKLSAgICAgICAgaGJf
YnVmZmVyX3NldF91bmljb2RlX2Z1bmNzKG1faGFyZmJ1enpCdWZmZXIsIGhiX2ljdV9nZXRfdW5p
Y29kZV9mdW5jcygpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgaGJfYnVmZmVyX3Jlc2V0KG1faGFy
ZmJ1enpCdWZmZXIpOwotICAgIGhiX2J1ZmZlcl9zZXRfc2NyaXB0KG1faGFyZmJ1enpCdWZmZXIs
IGhiX2ljdV9zY3JpcHRfdG9fc2NyaXB0KGN1cnJlbnRTY3JpcHQpKTsKLQotICAgIC8vIFdlYktp
dCBhbHdheXMgc2V0cyBkaXJlY3Rpb24gdG8gTFRSIGR1cmluZyB3aWR0aCBjYWxjdWxhdGlvbi4K
LSAgICAvLyBXZSBvbmx5IHNldCBkaXJlY3Rpb24gd2hlbiBkaXJlY3Rpb24gaXMgZXhwbGljaXRs
eSBzZXQgdG8gUlRMIHNvIHRoYXQKLSAgICAvLyBwcmV2ZW50bmcgd3Jvbmcgd2lkdGggY2FsY3Vs
YXRpb24uCi0gICAgaWYgKG1fcnVuLnJ0bCgpKQotICAgICAgICBoYl9idWZmZXJfc2V0X2RpcmVj
dGlvbihtX2hhcmZidXp6QnVmZmVyLCBIQl9ESVJFQ1RJT05fUlRMKTsKLQotICAgIC8vIERldGVy
bWluZSB3aGV0aGVyIHRoaXMgcnVuIG5lZWRzIHRvIGJlIGNvbnZlcnRlZCB0byBzbWFsbCBjYXBz
LgotICAgIC8vIG5leHRTY3JpcHRSdW4oKSB3aWxsIGFsd2F5cyBzZW5kIHVzIGEgcnVuIG9mIHRo
ZSBzYW1lIGNhc2UsIGJlY2F1c2UgYQotICAgIC8vIGNhc2UgY2hhbmdlIHdoaWxlIGluIHNtYWxs
LWNhcHMgbW9kZSBhbHdheXMgcmVzdWx0cyBpbiBkaWZmZXJlbnQKLSAgICAvLyBGb250RGF0YSwg
c28gd2Ugb25seSBuZWVkIHRvIGNoZWNrIHRoZSBmaXJzdCBjaGFyYWN0ZXIncyBjYXNlLgotICAg
IGlmIChtX2ZvbnQtPmlzU21hbGxDYXBzKCkgJiYgdV9pc2xvd2VyKG1fbm9ybWFsaXplZEJ1ZmZl
clttX3N0YXJ0SW5kZXhPZkN1cnJlbnRSdW5dKSkgewotICAgICAgICBTdHJpbmcgdXBwZXJUZXh0
ID0gU3RyaW5nKG1fbm9ybWFsaXplZEJ1ZmZlci5nZXQoKSArIG1fc3RhcnRJbmRleE9mQ3VycmVu
dFJ1biwgbV9udW1DaGFyYWN0ZXJzT2ZDdXJyZW50UnVuKTsKLSAgICAgICAgdXBwZXJUZXh0Lm1h
a2VVcHBlcigpOwotICAgICAgICBtX2N1cnJlbnRGb250RGF0YSA9IG1fZm9udC0+Z2x5cGhEYXRh
Rm9yQ2hhcmFjdGVyKHVwcGVyVGV4dFswXSwgZmFsc2UsIFNtYWxsQ2Fwc1ZhcmlhbnQpLmZvbnRE
YXRhOwotICAgICAgICBoYl9idWZmZXJfYWRkX3V0ZjE2KG1faGFyZmJ1enpCdWZmZXIsIHVwcGVy
VGV4dC5jaGFyYWN0ZXJzKCksIG1fbnVtQ2hhcmFjdGVyc09mQ3VycmVudFJ1biwgMCwgbV9udW1D
aGFyYWN0ZXJzT2ZDdXJyZW50UnVuKTsKLSAgICB9IGVsc2UKLSAgICAgICAgaGJfYnVmZmVyX2Fk
ZF91dGYxNihtX2hhcmZidXp6QnVmZmVyLCBtX25vcm1hbGl6ZWRCdWZmZXIuZ2V0KCkgKyBtX3N0
YXJ0SW5kZXhPZkN1cnJlbnRSdW4sIG1fbnVtQ2hhcmFjdGVyc09mQ3VycmVudFJ1biwgMCwgbV9u
dW1DaGFyYWN0ZXJzT2ZDdXJyZW50UnVuKTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29s
IEhhcmZCdXp6U2hhcGVyOjpzaGFwZUhhcmZCdXp6UnVuKCkKLXsKLSAgICBGb250UGxhdGZvcm1E
YXRhKiBwbGF0Zm9ybURhdGEgPSBjb25zdF9jYXN0PEZvbnRQbGF0Zm9ybURhdGEqPigmbV9jdXJy
ZW50Rm9udERhdGEtPnBsYXRmb3JtRGF0YSgpKTsKLSAgICBIYXJmQnV6ekZhY2UqIGZhY2UgPSBw
bGF0Zm9ybURhdGEtPmhhcmZidXp6RmFjZSgpOwotICAgIGlmICghZmFjZSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGhiX2ZvbnRfdCogaGFyZmJ1enpGb250ID0gZmFjZS0+Y3JlYXRlRm9u
dCgpOwotICAgIGhiX3NoYXBlKGhhcmZidXp6Rm9udCwgbV9oYXJmYnV6ekJ1ZmZlciwgbV9mZWF0
dXJlcy5zaXplKCkgPiAwID8gbV9mZWF0dXJlcy5kYXRhKCkgOiAwLCBtX2ZlYXR1cmVzLnNpemUo
KSk7Ci0gICAgaGJfZm9udF9kZXN0cm95KGhhcmZidXp6Rm9udCk7Ci0gICAgbV9oYXJmYnV6elJ1
bnMuYXBwZW5kKEhhcmZCdXp6UnVuOjpjcmVhdGUobV9udW1DaGFyYWN0ZXJzT2ZDdXJyZW50UnVu
LCBtX3J1bi5kaXJlY3Rpb24oKSwgbV9oYXJmYnV6ekJ1ZmZlcikpOwotICAgIHJldHVybiB0cnVl
OwotfQotCi12b2lkIEhhcmZCdXp6U2hhcGVyOjpzZXRHbHlwaFBvc2l0aW9uc0ZvckhhcmZCdXp6
UnVuKEdseXBoQnVmZmVyKiBnbHlwaEJ1ZmZlcikKLXsKLSAgICBoYl9nbHlwaF9pbmZvX3QqIGds
eXBoSW5mb3MgPSBoYl9idWZmZXJfZ2V0X2dseXBoX2luZm9zKG1faGFyZmJ1enpCdWZmZXIsIDAp
OwotICAgIGhiX2dseXBoX3Bvc2l0aW9uX3QqIGdseXBoUG9zaXRpb25zID0gaGJfYnVmZmVyX2dl
dF9nbHlwaF9wb3NpdGlvbnMobV9oYXJmYnV6ekJ1ZmZlciwgMCk7Ci0gICAgSGFyZkJ1enpSdW4q
IGN1cnJlbnRSdW4gPSBtX2hhcmZidXp6UnVucy5sYXN0KCkuZ2V0KCk7Ci0KLSAgICB1bnNpZ25l
ZCBudW1HbHlwaHMgPSBjdXJyZW50UnVuLT5udW1HbHlwaHMoKTsKLSAgICBmbG9hdCB0b3RhbEFk
dmFuY2UgPSAwOwotICAgIGZsb2F0IG5leHRPZmZzZXRYID0gaGFyZmJ1enpQb3NpdGlvblRvRmxv
YXQoZ2x5cGhQb3NpdGlvbnNbMF0ueF9vZmZzZXQpOwotICAgIGZsb2F0IG5leHRPZmZzZXRZID0g
LWhhcmZidXp6UG9zaXRpb25Ub0Zsb2F0KGdseXBoUG9zaXRpb25zWzBdLnlfb2Zmc2V0KTsKLSAg
ICAvLyBIYXJmQnV6eiByZXR1cm5zIHRoZSBzaGFwaW5nIHJlc3VsdCBpbiB2aXN1YWwgb3JkZXIu
IFdlIG5lZWQgbm90IHRvIGZsaXAgdGhlbSBmb3IgUlRMLgotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbnVtR2x5cGhzOyArK2kpIHsKLSAgICAgICAgYm9vbCBydW5FbmQgPSBpICsgMSA9PSBu
dW1HbHlwaHM7Ci0gICAgICAgIHVpbnQxNl90IGdseXBoID0gZ2x5cGhJbmZvc1tpXS5jb2RlcG9p
bnQ7Ci0gICAgICAgIGZsb2F0IG9mZnNldFggPSBuZXh0T2Zmc2V0WDsKLSAgICAgICAgZmxvYXQg
b2Zmc2V0WSA9IG5leHRPZmZzZXRZOwotICAgICAgICBmbG9hdCBhZHZhbmNlID0gaGFyZmJ1enpQ
b3NpdGlvblRvRmxvYXQoZ2x5cGhQb3NpdGlvbnNbaV0ueF9hZHZhbmNlKTsKLSAgICAgICAgbmV4
dE9mZnNldFggPSBydW5FbmQgPyAwIDogaGFyZmJ1enpQb3NpdGlvblRvRmxvYXQoZ2x5cGhQb3Np
dGlvbnNbaSArIDFdLnhfb2Zmc2V0KTsKLSAgICAgICAgbmV4dE9mZnNldFkgPSBydW5FbmQgPyAw
IDogLWhhcmZidXp6UG9zaXRpb25Ub0Zsb2F0KGdseXBoUG9zaXRpb25zW2kgKyAxXS55X29mZnNl
dCk7Ci0KLSAgICAgICAgdW5zaWduZWQgY3VycmVudENoYXJhY3RlckluZGV4ID0gbV9zdGFydElu
ZGV4T2ZDdXJyZW50UnVuICsgZ2x5cGhJbmZvc1tpXS5jbHVzdGVyOwotICAgICAgICBib29sIGlz
Q2x1c3RlckVuZCA9IHJ1bkVuZCB8fCBnbHlwaEluZm9zW2ldLmNsdXN0ZXIgIT0gZ2x5cGhJbmZv
c1tpICsgMV0uY2x1c3RlcjsKLSAgICAgICAgZmxvYXQgc3BhY2luZyA9IGlzQ2x1c3RlckVuZCA/
IG1fbGV0dGVyU3BhY2luZyA6IDA7Ci0KLSAgICAgICAgaWYgKGlzQ2x1c3RlckVuZCAmJiBpc1dv
cmRFbmQoY3VycmVudENoYXJhY3RlckluZGV4KSkKLSAgICAgICAgICAgIHNwYWNpbmcgKz0gZGV0
ZXJtaW5lV29yZEJyZWFrU3BhY2luZygpOwotCi0gICAgICAgIGlmIChtX2N1cnJlbnRGb250RGF0
YS0+aXNaZXJvV2lkdGhTcGFjZUdseXBoKGdseXBoKSkgewotICAgICAgICAgICAgY3VycmVudFJ1
bi0+c2V0R2x5cGhBbmRQb3NpdGlvbnMoaSwgZ2x5cGgsIDAsIDAsIDApOwotICAgICAgICAgICAg
aWYgKGdseXBoQnVmZmVyKQotICAgICAgICAgICAgICAgIGdseXBoQnVmZmVyLT5hZGQoZ2x5cGgs
IG1fY3VycmVudEZvbnREYXRhLCBjcmVhdGVHbHlwaEJ1ZmZlckFkdmFuY2UoMCwgMCkpOwotICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBhZHZhbmNlICs9IHNwYWNp
bmc7Ci0gICAgICAgIGN1cnJlbnRSdW4tPnNldEdseXBoQW5kUG9zaXRpb25zKGksIGdseXBoLCB0
b3RhbEFkdmFuY2UgKyBvZmZzZXRYLCBvZmZzZXRZLCBhZHZhbmNlKTsKLSAgICAgICAgaWYgKGds
eXBoQnVmZmVyKSB7Ci0gICAgICAgICAgICBmbG9hdCBnbHlwaEFkdmFuY2VYID0gYWR2YW5jZSAr
IG5leHRPZmZzZXRYIC0gb2Zmc2V0WDsKLSAgICAgICAgICAgIGZsb2F0IGdseXBoQWR2YW5jZVkg
PSBuZXh0T2Zmc2V0WSAtIG9mZnNldFk7Ci0gICAgICAgICAgICBnbHlwaEJ1ZmZlci0+YWRkKGds
eXBoLCBtX2N1cnJlbnRGb250RGF0YSwgY3JlYXRlR2x5cGhCdWZmZXJBZHZhbmNlKGdseXBoQWR2
YW5jZVgsIGdseXBoQWR2YW5jZVkpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRvdGFsQWR2YW5j
ZSArPSBhZHZhbmNlOwotICAgIH0KLSAgICBjdXJyZW50UnVuLT5zZXRXaWR0aCh0b3RhbEFkdmFu
Y2UgPiAwLjAgPyB0b3RhbEFkdmFuY2UgOiAwLjApOwotICAgIG1fdG90YWxXaWR0aCArPSBjdXJy
ZW50UnVuLT53aWR0aCgpOwotfQotCi1pbnQgSGFyZkJ1enpTaGFwZXI6Om9mZnNldEZvclBvc2l0
aW9uKGZsb2F0IHRhcmdldFgpCi17Ci0gICAgaW50IGNoYXJhY3RlcnNTb0ZhciA9IDA7Ci0gICAg
aW50IGN1cnJlbnRYID0gMDsKLQotICAgIGlmIChtX3J1bi5ydGwoKSkgewotICAgICAgICBjaGFy
YWN0ZXJzU29GYXIgPSBtX25vcm1hbGl6ZWRCdWZmZXJMZW5ndGg7Ci0gICAgICAgIGZvciAoaW50
IGkgPSBtX2hhcmZidXp6UnVucy5zaXplKCkgLSAxOyBpID49IDA7IC0taSkgewotICAgICAgICAg
ICAgY2hhcmFjdGVyc1NvRmFyIC09IG1faGFyZmJ1enpSdW5zW2ldLT5udW1DaGFyYWN0ZXJzKCk7
Ci0gICAgICAgICAgICBpbnQgbmV4dFggPSBjdXJyZW50WCArIG1faGFyZmJ1enpSdW5zW2ldLT53
aWR0aCgpOwotICAgICAgICAgICAgaWYgKGN1cnJlbnRYIDw9IHRhcmdldFggJiYgdGFyZ2V0WCA8
PSBuZXh0WCkgewotICAgICAgICAgICAgICAgIC8vIFRoZSB4IHZhbHVlIGluIHF1ZXN0aW9uIGlz
IHdpdGhpbiB0aGlzIHNjcmlwdCBydW4uCi0gICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQg
aW5kZXggPSBtX2hhcmZidXp6UnVuc1tpXS0+Y2hhcmFjdGVySW5kZXhGb3JYUG9zaXRpb24odGFy
Z2V0WCAtIGN1cnJlbnRYKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gY2hhcmFjdGVyc1NvRmFy
ICsgaW5kZXg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjdXJyZW50WCA9IG5leHRYOwot
ICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG1faGFyZmJ1enpSdW5zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBpbnQgbmV4dFggPSBj
dXJyZW50WCArIG1faGFyZmJ1enpSdW5zW2ldLT53aWR0aCgpOwotICAgICAgICAgICAgaWYgKGN1
cnJlbnRYIDw9IHRhcmdldFggJiYgdGFyZ2V0WCA8PSBuZXh0WCkgewotICAgICAgICAgICAgICAg
IGNvbnN0IHVuc2lnbmVkIGluZGV4ID0gbV9oYXJmYnV6elJ1bnNbaV0tPmNoYXJhY3RlckluZGV4
Rm9yWFBvc2l0aW9uKHRhcmdldFggLSBjdXJyZW50WCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGNoYXJhY3RlcnNTb0ZhciArIGluZGV4OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY2hh
cmFjdGVyc1NvRmFyICs9IG1faGFyZmJ1enpSdW5zW2ldLT5udW1DaGFyYWN0ZXJzKCk7Ci0gICAg
ICAgICAgICBjdXJyZW50WCA9IG5leHRYOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJu
IGNoYXJhY3RlcnNTb0ZhcjsKLX0KLQotRmxvYXRSZWN0IEhhcmZCdXp6U2hhcGVyOjpzZWxlY3Rp
b25SZWN0KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgaGVpZ2h0LCBpbnQgZnJvbSwgaW50
IHRvKQotewotICAgIGludCBmcm9tWCA9IC0xLCB0b1ggPSAtMTsKLSAgICBpbnQgY3VycmVudFgg
PSAwOwotICAgIC8vIEl0ZXJhdGUgdGhyb3VnaCB0aGUgc2NyaXB0IHJ1bnMgaW4gbG9naWNhbCBv
cmRlciwgc2VhcmNoaW5nIGZvciB0aGUgcnVuIGNvdmVyaW5nIHRoZSBwb3NpdGlvbnMgb2YgaW50
ZXJlc3QuCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1faGFyZmJ1enpSdW5zLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgIGludCBudW1DaGFyYWN0ZXJzID0gbV9oYXJmYnV6elJ1bnNbaV0t
Pm51bUNoYXJhY3RlcnMoKTsKLSAgICAgICAgaWYgKGZyb21YID09IC0xICYmIGZyb20gPj0gMCAm
JiBmcm9tIDwgbnVtQ2hhcmFjdGVycykKLSAgICAgICAgICAgIGZyb21YID0gbV9oYXJmYnV6elJ1
bnNbaV0tPnhQb3NpdGlvbkZvck9mZnNldChmcm9tKSArIGN1cnJlbnRYOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBmcm9tIC09IG51bUNoYXJhY3RlcnM7Ci0KLSAgICAgICAgaWYgKHRvWCA9
PSAtMSAmJiB0byA+PSAwICYmIHRvIDwgbnVtQ2hhcmFjdGVycykKLSAgICAgICAgICAgIHRvWCA9
IG1faGFyZmJ1enpSdW5zW2ldLT54UG9zaXRpb25Gb3JPZmZzZXQodG8pICsgY3VycmVudFg7Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRvIC09IG51bUNoYXJhY3RlcnM7Ci0KLSAgICAgICAg
aWYgKGZyb21YICE9IC0xICYmIHRvWCAhPSAtMSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjdXJyZW50WCArPSBtX2hhcmZidXp6UnVuc1tpXS0+d2lkdGgoKTsKLSAgICB9Ci0KLSAgICAv
LyBUaGUgcG9zaXRpb24gaW4gcXVlc3Rpb24gbWlnaHQgYmUganVzdCBhZnRlciB0aGUgdGV4dC4K
LSAgICBpZiAoZnJvbVggPT0gLTEpCi0gICAgICAgIGZyb21YID0gMDsKLSAgICBpZiAodG9YID09
IC0xKQotICAgICAgICB0b1ggPSBtX3J1bi5ydGwoKSA/IDAgOiBtX3RvdGFsV2lkdGg7Ci0KLSAg
ICBBU1NFUlQoZnJvbVggIT0gLTEgJiYgdG9YICE9IC0xKTsKLQotICAgIGlmIChmcm9tWCA8IHRv
WCkKLSAgICAgICAgcmV0dXJuIEZsb2F0UmVjdChwb2ludC54KCkgKyBmcm9tWCwgcG9pbnQueSgp
LCB0b1ggLSBmcm9tWCwgaGVpZ2h0KTsKLSAgICByZXR1cm4gRmxvYXRSZWN0KHBvaW50LngoKSAr
IHRvWCwgcG9pbnQueSgpLCBmcm9tWCAtIHRvWCwgaGVpZ2h0KTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aGFyZmJ1enovbmcvSGFyZkJ1enpTaGFwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2hhcmZidXp6L25nL0hhcmZCdXp6U2hhcGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDdiZWZmNWQ3MmNkYzU0Zjg4ODhkNmMyMGFjYTFkNmVkYjAzMzIzMWMuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovbmcvSGFyZkJ1enpTaGFwZXIuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDExMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
LSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBIYXJmQnV6elNoYXBlcl9oCi0jZGVmaW5lIEhh
cmZCdXp6U2hhcGVyX2gKLQotI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKLSNpbmNsdWRlICJHbHlw
aEJ1ZmZlci5oIgotI2luY2x1ZGUgIkhhcmZCdXp6U2hhcGVyQmFzZS5oIgotI2luY2x1ZGUgIlRl
eHRSdW4uaCIKLSNpbmNsdWRlICJoYi5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5j
bHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0jaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEZvbnQ7Ci1j
bGFzcyBTaW1wbGVGb250RGF0YTsKLQotY2xhc3MgSGFyZkJ1enpTaGFwZXIgOiBwdWJsaWMgSGFy
ZkJ1enpTaGFwZXJCYXNlIHsKLXB1YmxpYzoKLSAgICBIYXJmQnV6elNoYXBlcihjb25zdCBGb250
KiwgY29uc3QgVGV4dFJ1biYpOwotICAgIHZpcnR1YWwgfkhhcmZCdXp6U2hhcGVyKCk7Ci0KLSAg
ICBib29sIHNoYXBlKEdseXBoQnVmZmVyKiA9IDApOwotICAgIGZsb2F0IHRvdGFsV2lkdGgoKSB7
IHJldHVybiBtX3RvdGFsV2lkdGg7IH0KLSAgICBpbnQgb2Zmc2V0Rm9yUG9zaXRpb24oZmxvYXQg
dGFyZ2V0WCk7Ci0gICAgRmxvYXRSZWN0IHNlbGVjdGlvblJlY3QoY29uc3QgRmxvYXRQb2ludCYs
IGludCBoZWlnaHQsIGludCBmcm9tLCBpbnQgdG8pOwotCi1wcml2YXRlOgotICAgIGNsYXNzIEhh
cmZCdXp6UnVuIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPEhhcmZC
dXp6UnVuPiBjcmVhdGUodW5zaWduZWQgbnVtQ2hhcmFjdGVycywgVGV4dERpcmVjdGlvbiBkaXJl
Y3Rpb24sIGhiX2J1ZmZlcl90KiBidWZmZXIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biBhZG9wdFB0cihuZXcgSGFyZkJ1enpSdW4obnVtQ2hhcmFjdGVycywgZGlyZWN0aW9uLCBidWZm
ZXIpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgc2V0R2x5cGhBbmRQb3NpdGlvbnModW5z
aWduZWQgaW5kZXgsIHVpbnQxNl90IGdseXBoSWQsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0KTsK
LSAgICAgICAgdm9pZCBzZXRXaWR0aChmbG9hdCB3aWR0aCkgeyBtX3dpZHRoID0gd2lkdGg7IH0K
LQotICAgICAgICBpbnQgY2hhcmFjdGVySW5kZXhGb3JYUG9zaXRpb24oaW50IHRhcmdldFgpOwot
ICAgICAgICBpbnQgeFBvc2l0aW9uRm9yT2Zmc2V0KHVuc2lnbmVkIG9mZnNldCk7Ci0KLSAgICAg
ICAgdW5zaWduZWQgbnVtQ2hhcmFjdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtQ2hhcmFjdGVy
czsgfQotICAgICAgICB1bnNpZ25lZCBudW1HbHlwaHMoKSBjb25zdCB7IHJldHVybiBtX251bUds
eXBoczsgfQotICAgICAgICBmbG9hdCB3aWR0aCgpIHsgcmV0dXJuIG1fd2lkdGg7IH0KLQotICAg
IHByaXZhdGU6Ci0gICAgICAgIEhhcmZCdXp6UnVuKHVuc2lnbmVkIG51bUNoYXJhY3RlcnMsIFRl
eHREaXJlY3Rpb24sIGhiX2J1ZmZlcl90Kik7Ci0gICAgICAgIGJvb2wgcnRsKCkgeyByZXR1cm4g
bV9kaXJlY3Rpb24gPT0gUlRMOyB9Ci0KLSAgICAgICAgc2l6ZV90IG1fbnVtQ2hhcmFjdGVyczsK
LSAgICAgICAgdW5zaWduZWQgbV9udW1HbHlwaHM7Ci0gICAgICAgIFRleHREaXJlY3Rpb24gbV9k
aXJlY3Rpb247Ci0gICAgICAgIFZlY3Rvcjx1aW50MTZfdCwgMjU2PiBtX2dseXBoczsKLSAgICAg
ICAgVmVjdG9yPGZsb2F0LCAyNTY+IG1fYWR2YW5jZXM7Ci0gICAgICAgIFZlY3RvcjxGbG9hdFBv
aW50LCAyNTY+IG1fb2Zmc2V0czsKLSAgICAgICAgVmVjdG9yPHVpbnQxNl90LCAyNTY+IG1fbG9n
Q2x1c3RlcnM7Ci0gICAgICAgIFZlY3Rvcjx1aW50MTZfdCwgMjU2PiBtX2dseXBoVG9DaGFyYWN0
ZXJJbmRleDsKLSAgICAgICAgZmxvYXQgbV93aWR0aDsKLSAgICB9OwotCi0gICAgdm9pZCBzZXRG
b250RmVhdHVyZXMoKTsKLQotICAgIGJvb2wgc2V0dXBIYXJmQnV6elJ1bigpOwotICAgIGJvb2wg
c2hhcGVIYXJmQnV6elJ1bigpOwotICAgIHZvaWQgc2V0R2x5cGhQb3NpdGlvbnNGb3JIYXJmQnV6
elJ1bihHbHlwaEJ1ZmZlciopOwotCi0gICAgR2x5cGhCdWZmZXJBZHZhbmNlIGNyZWF0ZUdseXBo
QnVmZmVyQWR2YW5jZShmbG9hdCwgZmxvYXQpOwotCi0gICAgVmVjdG9yPGhiX2ZlYXR1cmVfdCwg
ND4gbV9mZWF0dXJlczsKLSAgICB1bnNpZ25lZCBtX3N0YXJ0SW5kZXhPZkN1cnJlbnRSdW47Ci0g
ICAgdW5zaWduZWQgbV9udW1DaGFyYWN0ZXJzT2ZDdXJyZW50UnVuOwotICAgIGNvbnN0IFNpbXBs
ZUZvbnREYXRhKiBtX2N1cnJlbnRGb250RGF0YTsKLSAgICBoYl9idWZmZXJfdCogbV9oYXJmYnV6
ekJ1ZmZlcjsKLSAgICBWZWN0b3I8T3duUHRyPEhhcmZCdXp6UnVuPiwgMTY+IG1faGFyZmJ1enpS
dW5zOwotCi0gICAgZmxvYXQgbV90b3RhbFdpZHRoOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gSGFyZkJ1enpTaGFwZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDb21wbGV4VGV4dE1hYy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udENvbXBsZXhUZXh0TWFjLmNwcApp
bmRleCBhNzI2ZGMzNGMyZmFlMmRmNWZiNmUzYjRkMjZhZTExMjE0NWUzYjEyLi5jM2RkYTE1NWE0
ZjdmYTUzNTlkMjdkNjFhYjUxNTBmY2M1YTg5ZmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udENvbXBsZXhUZXh0TWFjLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udENvbXBsZXhUZXh0TWFjLmNwcApA
QCAtMzQsMzIgKzM0LDEzIEBACiAjaW5jbHVkZSAiVGV4dFJ1bi5oIgogI2luY2x1ZGUgPHd0Zi9N
YXRoRXh0cmFzLmg+CiAKLSNpZiBQTEFURk9STShDSFJPTUlVTSkKLSNpbmNsdWRlICJIYXJmQnV6
elNoYXBlci5oIgotI2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotI2lmIFBMQVRGT1JNKENIUk9NSVVNKQotc3RhdGljIGJvb2wgcHJlZmVySGFy
ZkJ1enooY29uc3QgRm9udCogZm9udCkKLXsKLSAgICBjb25zdCBGb250RGVzY3JpcHRpb24mIGRl
c2NyaXB0aW9uID0gZm9udC0+Zm9udERlc2NyaXB0aW9uKCk7Ci0gICAgcmV0dXJuIGRlc2NyaXB0
aW9uLmZlYXR1cmVTZXR0aW5ncygpICYmIGRlc2NyaXB0aW9uLmZlYXR1cmVTZXR0aW5ncygpLT5z
aXplKCkgPiAwOwotfQotI2VuZGlmCi0KIEZsb2F0UmVjdCBGb250OjpzZWxlY3Rpb25SZWN0Rm9y
Q29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwg
aW50IGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBm
cm9tLCBpbnQgdG8pIGNvbnN0CiB7Ci0jaWYgUExBVEZPUk0oQ0hST01JVU0pCi0gICAgaWYgKHBy
ZWZlckhhcmZCdXp6KHRoaXMpKSB7Ci0gICAgICAgIEhhcmZCdXp6U2hhcGVyIHNoYXBlcih0aGlz
LCBydW4pOwotICAgICAgICBpZiAoc2hhcGVyLnNoYXBlKCkpCi0gICAgICAgICAgICByZXR1cm4g
c2hhcGVyLnNlbGVjdGlvblJlY3QocG9pbnQsIGgsIGZyb20sIHRvKTsKLSAgICB9Ci0jZW5kaWYK
ICAgICBDb21wbGV4VGV4dENvbnRyb2xsZXIgY29udHJvbGxlcih0aGlzLCBydW4pOwogICAgIGNv
bnRyb2xsZXIuYWR2YW5jZShmcm9tKTsKICAgICBmbG9hdCBiZWZvcmVXaWR0aCA9IGNvbnRyb2xs
ZXIucnVuV2lkdGhTb0ZhcigpOwpAQCAtMTAxLDE2ICs4Miw2IEBAIGZsb2F0IEZvbnQ6OmdldEds
eXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBpbnQgZnJv
bSwgaW50CiAKIHZvaWQgRm9udDo6ZHJhd0NvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGZy
b20sIGludCB0bykgY29uc3QKIHsKLSNpZiBQTEFURk9STShDSFJPTUlVTSkKLSAgICBpZiAocHJl
ZmVySGFyZkJ1enoodGhpcykpIHsKLSAgICAgICAgR2x5cGhCdWZmZXIgZ2x5cGhCdWZmZXI7Ci0g
ICAgICAgIEhhcmZCdXp6U2hhcGVyIHNoYXBlcih0aGlzLCBydW4pOwotICAgICAgICBpZiAoc2hh
cGVyLnNoYXBlKCZnbHlwaEJ1ZmZlcikpIHsKLSAgICAgICAgICAgIGRyYXdHbHlwaEJ1ZmZlcihj
b250ZXh0LCBydW4sIGdseXBoQnVmZmVyLCBwb2ludCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLSAgICB9Ci0jZW5kaWYKICAgICAvLyBUaGlzIGdseXBoIGJ1ZmZlciBob2xkcyBv
dXIgZ2x5cGhzICsgYWR2YW5jZXMgKyBmb250IGRhdGEgZm9yIGVhY2ggZ2x5cGguCiAgICAgR2x5
cGhCdWZmZXIgZ2x5cGhCdWZmZXI7CiAKQEAgLTEzOCwxMyArMTA5LDYgQEAgdm9pZCBGb250Ojpk
cmF3RW1waGFzaXNNYXJrc0ZvckNvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgVGV4dFIKIAogZmxvYXQgRm9udDo6ZmxvYXRXaWR0aEZvckNvbXBsZXhUZXh0KGNvbnN0
IFRleHRSdW4mIHJ1biwgSGFzaFNldDxjb25zdCBTaW1wbGVGb250RGF0YSo+KiBmYWxsYmFja0Zv
bnRzLCBHbHlwaE92ZXJmbG93KiBnbHlwaE92ZXJmbG93KSBjb25zdAogewotI2lmIFBMQVRGT1JN
KENIUk9NSVVNKQotICAgIGlmIChwcmVmZXJIYXJmQnV6eih0aGlzKSkgewotICAgICAgICBIYXJm
QnV6elNoYXBlciBzaGFwZXIodGhpcywgcnVuKTsKLSAgICAgICAgaWYgKHNoYXBlci5zaGFwZSgp
KQotICAgICAgICAgICAgcmV0dXJuIHNoYXBlci50b3RhbFdpZHRoKCk7Ci0gICAgfQotI2VuZGlm
CiAgICAgQ29tcGxleFRleHRDb250cm9sbGVyIGNvbnRyb2xsZXIodGhpcywgcnVuLCB0cnVlLCBm
YWxsYmFja0ZvbnRzKTsKICAgICBpZiAoZ2x5cGhPdmVyZmxvdykgewogICAgICAgICBnbHlwaE92
ZXJmbG93LT50b3AgPSBtYXg8aW50PihnbHlwaE92ZXJmbG93LT50b3AsIGNlaWxmKC1jb250cm9s
bGVyLm1pbkdseXBoQm91bmRpbmdCb3hZKCkpIC0gKGdseXBoT3ZlcmZsb3ctPmNvbXB1dGVCb3Vu
ZHMgPyAwIDogZm9udE1ldHJpY3MoKS5hc2NlbnQoKSkpOwpAQCAtMTU3LDEzICsxMjEsNiBAQCBm
bG9hdCBGb250OjpmbG9hdFdpZHRoRm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBI
YXNoU2V0PGNvbnN0IFNpbXBsZUZvbgogCiBpbnQgRm9udDo6b2Zmc2V0Rm9yUG9zaXRpb25Gb3JD
b21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIGZsb2F0IHgsIGJvb2wgaW5jbHVkZVBhcnRp
YWxHbHlwaHMpIGNvbnN0CiB7Ci0jaWYgUExBVEZPUk0oQ0hST01JVU0pCi0gICAgaWYgKHByZWZl
ckhhcmZCdXp6KHRoaXMpKSB7Ci0gICAgICAgIEhhcmZCdXp6U2hhcGVyIHNoYXBlcih0aGlzLCBy
dW4pOwotICAgICAgICBpZiAoc2hhcGVyLnNoYXBlKCkpCi0gICAgICAgICAgICByZXR1cm4gc2hh
cGVyLm9mZnNldEZvclBvc2l0aW9uKHgpOwotICAgIH0KLSNlbmRpZgogICAgIENvbXBsZXhUZXh0
Q29udHJvbGxlciBjb250cm9sbGVyKHRoaXMsIHJ1bik7CiAgICAgcmV0dXJuIGNvbnRyb2xsZXIu
b2Zmc2V0Rm9yUG9zaXRpb24oeCwgaW5jbHVkZVBhcnRpYWxHbHlwaHMpOwogfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDA1
ZWJmYjdmZTczNWVhZGRmZDc1NWEzZTFkNTEyZDJhYzE3ZDJmNTMuLjY2MTYxMDE5ZTczMDUzNjA4
NTBiMTBhNzQ2YmNlZGFiMTlhYjAzMWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wNi0w
NSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CisKKyAgICAgICAg
VW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjExOTQ2NywgcjExOTQ3MSwgYW5kIHIxMTk0NzYuCisg
ICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzExOTQ2NworICAgICAgICBo
dHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMTk0NzEKKyAgICAgICAgaHR0cDovL3Ry
YWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTE5NDc2CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODMzMgorCisgICAgICAgIGl0IGJyb2tlIGNocm9taXVt
LW1hYyBzdGF0aWMgaW5pdGlhbGl6ZXJzIHRlc3QuXCAoUmVxdWVzdGVkIGJ5CisgICAgICAgIGxv
aXNsbyBvbiAjd2Via2l0KS4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLW1hYy9jc3Mz
L2ZvbnQtZmVhdHVyZS1zZXR0aW5ncy1yZW5kZXJpbmctZXhwZWN0ZWQucG5nOiBSZW1vdmVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLW1hYy9jc3MzL2ZvbnQtZmVhdHVyZS1zZXR0aW5n
cy1yZW5kZXJpbmctZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2No
cm9taXVtL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTItMDYtMDUgIFJvYiBCdWlzICA8cndsYnVp
c0B3ZWJraXQub3JnPgogCiAgICAgICAgIEhpdCBBU1NFUlQgd2hlbiBlZGl0aW5nIGF0dHJpYnV0
ZSB2YWx1ZSBpbiBFbGVtZW50IGluIFNWRyBEb2N1bWVudApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjL2NzczMvZm9udC1mZWF0dXJlLXNldHRpbmdzLXJlbmRl
cmluZy1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMvY3Nz
My9mb250LWZlYXR1cmUtc2V0dGluZ3MtcmVuZGVyaW5nLWV4cGVjdGVkLnBuZwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMTQ4MmZiOTU0MzlhMThhNWFhOGJiMjQzY2FjMGViYWNkYjhm
NjNlYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMApHSVQgYmluYXJ5
IHBhdGNoCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKbGl0ZXJhbCAxNDk4MQp6Y21lSHRkMDNOWW57
UkNVKW9IMHZzKD1mTil6MnlAQWVEV0t7WGBLRVExK2IpRDRQTTwqQVRtKTJtKTRGNmE9YW0KemtT
Jm9WVkpFRXVRNHhfZjVTQTFvSjBYTX1MWHZZbyVyfHErb05zMlhZdiM7OT1lcWlibW98a3JAQjYm
Pntrd241CnplZnkkP0B2aEpKZX4hVW1jQTE8dnZjaDBLSzhWNDU8blR8USFZNWhiS1ZGQnc2aHFI
Q2duSWcxQCQ/U34hKHB5Pwp6VWNJY05zb2AtJilBUThIRTA8NHRZRzN1eHk2a256ISVNXktxfVI5
S00qUk42YVNZfWwjPkQ3NW81KTk7O2gyVz4KenVwSEZ8P3p6KnktUHhvND9CS3pmT0x4YDNKbXBw
T3lII249d30oR0ROQGxDMmhnS1hiSmFQMkV0SWtlK0hDK3BgCnpOfHdBLWRncGhRNzste2xnM3Nr
QVBkYD1zUlhTbmxAPUlZM0huIVg/Q2FeRWVKPGgzLU1ZYm9xXyM1eXlUPVE2IQp6aE5hI0hCYFU8
VWtLb0lINjZjMmYxJXRVa2xsJG5PRnFwZl44MkhmWkBDfHNEZnF5IVAhSk85bzQ/WlRTP2VKPHoK
emw7WFdWQmhnWjlUT3ZIUCU4eWZDNlpuazNOJDJyZEI0SCF4KTh0YTtZOEFIXzRuPWQ9bzI/XmFY
aWZ9TGFZLWBuCnp2RXt3fHFBUlhHVCh4NGFySE9XNF5LUSR1KnJDNFFqKSR2THRoR3ZOKjJfVWtn
dmQ1NEZyOFQkRmtJKEF6MitFVwp6Z1MlQlI9cj5QWVE/b05BSGVHV2dQakg1N2Y7PisrUnk7TUlz
a3I+fHJiQko7NihiYG15UnZOM2woPSFYR0M0aF4KemRtOz9pcnNKUz9MemJ8YEUxJTRiWCpEXlR2
JlZoMkU3UE1lQ3A7MHFIbXFlfnUrcFF3K1ZBTihuRz0hWHpCTUw7Cnp2d0NQSDxjYjZ8OSFuJShw
PDhTSTxNKkZEO1dvTG1mK3FKaUpnc2k3cUhTeWBQcVk9fG5vTnVDbTJabX00enIpRAp6b3kta2RZ
UypmRTlCN34xQjQpYTYrTWstfUZ5dnA4amg9Y09HKyNTT159fHcxI2RLUHF4b2oqPWNCRCFrS0RW
ZCEKemAzOElTWmIqKCNzdH1MJEZWU2dtamFoUmlackJ3V1VffjFwYE5wYThMMnlecHNOdXgpVmQp
U3B4fC1idVYkJXNiCnpheDE1aUtWUDQzblAoVyh1RUQ0PiFJTnF5dmI1S1JMZjk9Yj9zczs0e0hZ
TmhrMmYtTWlRNT9PQiR7UFR5Pz1hVwp6PT0jZkRsOUR7T2Y9SWhBZi00XnU3OFcjY0M5QD9AeExs
WiF1LT1efit+WTE+JSorcCZlODxaWlpSQX5QRF5hKDwKeitNWHEpQVg9eUFsU25FeiNwVSkjMzxW
aCo4TkpRY1FXZUs7RSVabEM9Q0hGX1RVU3JHKUk0OSVOfW83V3EpRGF0CnpyRjZIMztnKW5CREQ2
RlVeQDA8eyZ2ckJAUV5tRHdwWkI5bmsrRjJTaF5HZXZZOTRuNW1eeEpseFlsdS1fQCsldwp6QEk1
X25uPzNLfS0/Y0tHaE5KVGZhXnk2IU9tViltITZrfVohTEx5VSo7cUdQOTZwK3p0VG1FVSt7bVNq
P19+c14KemtkVzhjSHFUTm9HSm03MklxN19BZj1pRFFySVRaaSRsO2VlbTQkcjJ6VzUxRjBGPkI9
RVBzK29XNllZJE1vayVJCnpPfThed3p8WmBaNT5pdlVJIWBsUUR6bDEjKlBwdWxRYkc5S3BxUDRR
MEgrWiMkbHJVTVh5dlgrd3FJSjZrTldWLQp6Xmx8cU0pOWp2Y3RkTmNFYWBldGdBQmtpcVNJdl5A
SEtSQ1ZOdmFsLXpldWFQeGtTenpWPmQ0KUNhOHhAeSF+ZC0KemFRJTs7ZTgtd14rb243RWw3XnR2
NmMyVFVGPGs4PD1oTi1vT2NhQyp4NEtWdD12VGc2WlJaem1GcyhfK3hVI013CnpXJjtWUXYtNWJ8
TjVQJEVXbSpGMklkK1JIOXIqYld3YX1eZSgoIXI5JmVVZWIhYmV8cT1yM0ooam1zcW5Ifk9oSwp6
PWJxbCl2cXNHI0F4bCgkXzZsViF1RWZ7T0lsfnpqI2lkTkZvVXIzVTFEKWxMR19wI1JuZ1NeKz0t
P3ZlYHBadW0KekpEMm83M1k+bUdWQD1AQ29IPTc7Ryp7SmEoZlJtSDhgLUM8TkBiNktMYD4/WEJr
Z1UwWkpUPyNiN3pmVyowXzh9Cno9bDBQRlgxJk9pTHUwTzE4NEZDKWh3VmJOKSpmQitiPU0zR0VW
UmdCbVg3ZX1EbE0wMThMSDgxXkt2YG9CZnIxVAp6WGopN3M4e0hDQCVXX0UlWTJEey1SMj91cFIq
KVV3U0hZP0I/SCpHUWp3JSFAUmEoKXdiK2FVTUEpKWloUysjKG4Kem5pQEQ8a04pU0VeeyVtTTIj
STl8PElNZyhCfSY8YjE5ZT1zdzEjO3tSO09aYUhiKnhzRipSO0VVeT9WIV4zdDhwCnpXUTxNYXI9
fGNEWHcrS0ZRM25IKHB3Xy03KXkpKVprMGwmRmJqYWdQbnhkTTJVK0Zya2FCYTl6UHI+R2pgS3E4
WQp6UGpFdG93emIkXzd2fUYwSVUzSnY0fiNvPz11bHMmPEw9JHhUdTJDdldnaUd5ZTBgTXVeSmx3
MUMrRyFeRy15dmcKejNLe0QlUSUmWClNRXVUNT9+Y2ZzcUMhQn1vZUhyaFRUfG8/eFFqTCFZJnVw
TEcqezFVM2lAcncmZ0skd2xhc0NVCnpueztPcTN3NCFmSEJjbU4/OzIoYyYrJT5DUVp7UmtHSXRf
N0Z2U3FSKl9AX200WXhZZVE/Jmh5blk2OSgzVntgQQp6JkxjNnx2c1AxYEpsU2pTS0t5fSl6SXB3
M2lNVEhuYDJGPGFuYVBCTm0wMVNldz1oUnEjeD9aUDllRCM/YlIra1YKelRCWnpDZFN7ay1kWS0h
YUhsZl47LVV7dXRmQT4qfkowcCFUIztoajFYWH5BUFNOSjdFdlBEJUwhMitBb2hURlQzCnpZRUdB
QTJoPUhrRGpfZFJTMEtiVEVPKGl+Ml9LKlhXSHNsZjhham0hOXJEeDVJNlRyZ3pjJERjaE5ISkZ0
fj5RPgp6PGFvTmg1O2VjcEJQNEYxOyk7MXxnTj1LJlM5PVloP2kyNWhUOzRfcCFPKUtFQ1AhT3VR
R0hAaGJfPCMtciVUVT4KenB6VGhrPSp+UVFhcGF0YHFoKCoydmtYOTwrbDU/eDloSTZ0ZXZJNmxF
XkolSClxWlBRQ1lHRzs3Wkg8dWlLdUl6CnpLZzQzX1RDYDdJYTR5fGxIcUZXP0UkbUk5XlJJfjhT
RWtyOE5rZHlGPj9pZk80Vjd+bnI0TzdeVW5mTE56NS1tNwp6MXE0OH4oWCFObWImbzh8Mj1UMH4k
bkZAbiFyUWZQPGt3bnBCPzQlSSl4Xm9mVjI7MHVkeG4zWVhOU1I+JU5HaVUKemBjMXMjeiYkaDBY
Nl9RUSs5eDtIeEMpWXojJlRnY19aZ3BsdkcrXjVlOVgwPjs1T3g3dFA8Z1M5MDdNeHRDeHAhCnpt
PGI3fW89IU1iOVROdkFjKV93T0sydXhVKSZKdlAjS3hlfWtfSDNuJWNpZyYpVlg7Y3srNnx4OFF1
M05obzNBNQp6SXIqTF9uWGF6ejZURXU1YXBrflpGTjBDWVBTSH4tZ0VefDl1S3JYXnJSTHp1Uk9q
SWBtKWRWfTB+SlNoOW5kVSYKeiZTQjdtRF48OGJZTVBibCREZSsyOV5TZiY8QV98dSZAWn43UXhf
d0wwOVI5PjE0M3Vacy1AcV5zZCpVZkg7NHszCnpSVX5Abk10eUBXQ0t2cWJZdjBZfj5GRm0pRHlI
T3lNYm5ac3t2PWtVQk56Rns1N1dQV0VPN3k5PVhfZyt2ZXszYwp6P2xTZXghLXJwMU5NfkE9NGgw
TFN6VEV7P0BQWjMmRGEyX0wpNEpCMCkqNkBMTUteZ3g7clhrJCNZQGJvJml3OE4KellNIVI2WkR5
KkNIV2hPb3JsXmVmbHo2bDBDM2E8fCZ8bHtiVnBkRCpeMm0qPSV3PGNfdlpXJDElPytBeGtLe0Mo
Cnp6dW9AaU0hUnM1I19IeFF4ZSNpJEBRMDZnN0RPI2c1UmN9P2VrJXV+d0ZzdSo1JnJDV3JuYCFz
dUBhfSExKUg4Iwp6LU9kbF9kM01QY3srTGc2JFRUZylLVmpSTjZuV3xwKTZsekV7dnxjYHVrRT04
ZFN3cGZoanoqOSpQUSRgeXx1bn0KekJCV3tLZnM4KnROd3VrZU9vUlJXck1RMD0kdWYzcV93O2hO
cksqMEArREpeZFk4KT5xJjhtJVl6Y2Imc3V6dFItCno8YXVmbm8/cWFacUVxMDVTNHpLQm53c2M0
R1FUUkQ/PkRvUnVPSythRFd9VnlSal4tTHF1akF9Q2hzb2V1JCZtKAp6UElQdS0/I29fTXt5Nm5H
Z1Y2Z25IRiZaekUmTElJQjcxKnU0ZVJ5bHR+enczeTcjK0JSamZFWjV5dHNiITJLUzUKenhBOFh0
aDdvMmZqPklNN0J+QU5pIW9fKSlPR1M5Zj5KQGdoTXFyPytCQVI+Q0ZUXytZQz0lN0x5aCNoP2JF
PnQ5Cno/M01BWj8oUl9We2Ewe1dCYXhubzNDcGh6ciM/Kl5ZNG49OVhRcEJ6YEFnaHRXZ2FvallJ
Qjg1ODFAUlZNUCspPQp6JTJZeXM7ZEVqYD1zVFVzcnhJfXNLbHc3TmUyPyZwOVlwSHhGLW55M01e
MWV5WD5Tdz9UVnxNJXJUJWpENlVAMSMKektJZ3pqNFFqeWZlbUpQVzNwdShQaDZfSlBHYH5xZD96
dVdRZkk0RUc2Ryg3Z3xFZEYrbEpvZ08keEdkSTlZOGwjCnpjMlF3JnFNQiFgUUZGYiomWVpBNU5C
SC1oTkkoYUt8Snh2Vl92PHJiS2t2M2tmTGhTfVI5dj15TXo5S0h5RUA+Vgp6eDR2KS1Efm96P2o+
MiRMXlhxeCQmPTQ3UFUobURKWDtUfEZKNShGO0N+RCRpZTQ3WDJKVzB+Wk57KChvTXpad2gKem5I
MnhncHpecWZkSnpHeUUwUHA3UXBUQVZpYH1XJTVuVDFLJE5PS3Vpe0gzdGolN2gjQlhtemwqc0pi
eWFlMDFOCnprQlM/VmhRY24+Vz45Q2wzb1Z5OWdJWDUpeWtfbVc9UCQ9Ujc1RU1wdmVYcWJsJTF1
O1dLPlF0LU8oNVJPSEYyMQp6Qy1kaF4reSNGNmk/MHNIM25RMDFqb0hBdUxPWGVXV2dXMi1yLURC
R1YlI2JwR2JmcFVFP0hebEZUXmFLTitHSm8Kejdfd1dWUV5Rc0M3YCQwYGt1SkllTmxBaWVqaTNO
R2tQM3hpV1lxbGo7VkpmcWA8NXZROEQmUz9HRjRMQEUzZFl3CnooUGdjbG5ib1IydnBKYG5SYkFp
TWBpdjRybiZBNUhFMk8jfEg3JWtOezlQXm08eDx6OCNxSH02WVRBZndQaHNFVwp6Yll4fHBeMHFM
aWUrVnpraTtJP3huSlpUZHtfdmAxRWIrTDw+dzhEa2ZaMWZWbVJKR0I0SmF9ITJeSVF+eTcpZkAK
elotYl88ZHhsQDJDdzZPOCFaUSFRZEsrZXFiWipIP3w1U2d1PVVmd2lVUStVYHN5fX5kKG9pTnhG
RzlzN1NPWkAyCnpkTTA1YnZwPEkwRDMqRDNJRjhSamdGa0VMcTh+fH1gdSo9ZVBXMlI3eUlsWU1G
R3NqMVk+TnE1PyhkdlAkPlRqMAp6O24oYkV3M1czb0IrSVpKUmdSYl83YDsjMlg+c0t1QSloWWZh
fjBzYXd9RH5QVTtUMn1iOFI+eHdjOFNGJjsmRTUKemIpQ25+aGUxQHtaSntTNnEtSlB3RVV8Km48
KGJ+Jnk1VnlVa0BFe0xCfmxZMnUqe14kaHx3OG5afVMhTVJUfVZRCnpeTz87YkJ4MWs2clBwJGVm
RkZHa0FKaWdjemVsKFJzeip3PitKKUJKK3VRUWc8bz1paFZmfkI/e0o7M3JfTX4rQwp6PGNhTj55
YGw9MHdRNjBRbzI7UDRXdGErdjVMZWpaKFp5MEBtWnZWUUtkOSgoQHBycWAlQWc+VSo7eU1oOE0q
TkwKeiZaSmQpTzMyZTUhe2FOfk1OeHdfcylrRHNKQiZtXmZtcDt3NFlieEVoamM4dGpSUk9YeHxy
YkNUQXpqMmxJVGJ0Cno5TGRzUHImKEx2dTRjdjZVd15DWVFnZjFlWlF2X0Y/cWdNdG92UTtSSjFi
VmFwYnlvMi12N0coJDQ7ejZCbmR0fQp6R0hZWUx1VTlFVDc2PihrYG1UMml1Z3REJEVXPVNPKHlW
WnpiM040REszI2U0aVl6SHl1NTRUekgkPWNpVTlqb1MKendXN0xMRG9EbitVMnV5VVBsdE5Rc3lO
V204O3JNYGUkP1lZVC0hUFJQSExSVj1tTCNhSnV3TElZKFEjUWQ/VGthCno+Nl40PDt5R0wmaz9O
VWhwZzlrOCYhT2h9V3pATGtPWWlqUEg5X3BMUEdnMVNPdDxMbTl6c09ZSm5XYzt7cj51Pwp6Q3JL
V0ZLanAjV1o/czIkLVc/dUV2bSs2aEdjaSZXUWJ+SlRLK2AqXmxHKlN3eCUhbEp0KWgxQGBGQVQ0
d1VeKFkKek5vbz9fJilmUno+Uj0kUDIxeiErb2dgcEdHUXpPcGoxKTROb1R8bCZKJXVRViFzaCMx
el99THdfYE1VIyleNTFDCnp2fjBEJFE1bVNCcUQjeV4tYU9AWWlfSl9tTkF5d2ZhMlRVeW0pNmt4
ND9pPCY4WndVQXVhMzFPQ0gyd3p3ZTlAUQp6bHQpdHdNbnFkM0IzVnkqTjsyWXRiKW5OPTBtYnlN
YyRTeytLT1Z8cVlTZXx6UWVYYUY+dU5TfW97aEtid3JvK0sKekZBPG0xWlFodjdRQHtlQjgoVkJz
TypQTmZKaTloTz85WClmciZQJk57SEMrWWZpMUxyY0okR2dhS3xCWWFCe298CnohZGdUcCNoKzJM
KCZ4PFBSST5zVyR5bnVtLVEjVlVedV9WRSFeRW5XKj5ebWMhUl5KWEhOS3BHZVlaVmRyVDUrVAp6
VkVQLUJoM1N0LWd3IXlAcypjUiFvYiV9WjJIengyMUU4UjVxYzdgS2NULWxaWEZgaXhENkkqOTlq
YmxlIWU+NUYKelAxMmNvOzVvKmxFMk1eVzctKnFhXytwNkBXVmpFYy1jU1MhQUg/KTZaMjlvfHte
M0pvSj1UYFYkSEApZlRJZ31BCnpVS3xabkU8M31uP0hVNDMlJlVRNDh4dzhpaUZVSztzaWBzWndT
fnBtZFI0WDxVdjN6c3lmNEt5OH47JVMlKUooSgp6Kyk5Wjw8eUdfMVN8QzVJZjtFLWBQeXtFQ2Ar
cnJie2MhSUFBYT9eaWRrYFd1KVo7NVczJC0maHpxcC1kMUBlQDwKekZqUjQrJjExSCZPYnYjcUc9
c01OSFYrJTgreVR1Izg4NkJTZXhyRHtUOXB3ZkNWaz5xWXwhKGI1NyROX3BjfjVTCnpOYUpyKj5f
az48aFg1PmIjPEFeem1YPTN6ZjtQOGQkcGVnemF2KGMzcGpiYUEraCtOWEghUXBtRTAxMjhjfG1L
fAp6VkJGS2BpcD1YPndwTUhCJnktZmFPSDRrWCllMzM+JHFgYTk0cCY2dkpVaT5weE8ze0FfRipC
UENla0MoZ3F6eXoKekpFejhnUyl7X2IpNSEkRT5eR3YlTkE5VXtTVHNVfFYwR3thP2ROX01YT2Qm
RHlqR2M5ZXFVY0xsU1U0STxuJn1uCnpfbVppOUEyQXB8YSpyM09JKGVOaz50bl9rXnFZMHpZP1N0
U1J5K1Y5LTNuRmF2QSFePmshKVhmaDAqMGJ7PzRTZwp6MGVkV3JiZDFxTm9xfU4pJmVATCY9Pm9L
Nyt+V05fOHs1bmJUYClUR3RxVSM2TCNNbWVLT0R2R2xheiFDekFoWDMKent5UX5MSmFWTXsmblYp
X2xjczdRZUpvcjtKSUBBajhgb04hWnxeUUM0KU8ySG9uVkh6O3p9dT1fU1RwSVY3PUV5Cno4Z3hj
dG0paG1yXys2UHpkKkE+cT9pfG9rJHZFTm9SZyNRcTNLYEd3NTkrXnN0MGhhcmUrPTMpSDZoe2du
T20odgp6YlU3SXExYCRSTHtHYm5Rc3goPGVxQz5leWkjUSgtT2VYKkY8SHkoNmUhT3BLcn4/I1dG
Q3E/TmdLelYmU2FGPlgKemNWOEZ7UiRNV0FvIWFENyQlNXtZQjkkYVh0fnRHSDYqKlpLRFl2eylX
JnskcCphfWRWd355dX5wcUdRblhfaTR3CnotUTMqdEAkdTxAKyVXcGA3WDVJbHsjWDdDUXU1Zyg9
QCNoZz80SkI2VEg1alkyVCV7YiohSjBoRWdzTVlxIzVJIwp6Z3w7KTNwcDt0WT4kJm9JVE9XP0hW
Uns1RWxFdWErb1lheUQhPWEhWmdOQjBXRW5uWX53V157T0tSaTZYPlI2UFEKeipnb2hIUVZnflo4
Z3ZnZGFaYnBWR04tYmhVcTE1KXc3ZTd7dGFfK2ltTilOdWs9b0o4TnYmcC1eK2syWnpCNnRYCnpf
WiheOWxzU1NaSihuc2tyP0NGcCZMP257YT9yQEZoJEleV04kP059KSZoZW8wJHhYZDNtNHh1WEok
JnNERzNxVwp6Z0IzN0w5aHpkSnRedUZBUmNCKjt1SDRYJTZqZVZNYTtMYXhzV3RnUHcjI0RBZEp1
KGZOQDRGUVhGdXw3Klg/OHEKemxiXyliTzg4QUB1UmkkU1QoemdSWW9uQUdUZTkrQ0QxYVp2bGpP
UGB6e1lLQEJZdEdnd2x5Q31vKHYjMURNd2lOCno0TmFKR0JAVVY5OWUrYjFBSGZnQURqJWFaWHtv
Qz5LZm5CUHRmRWFOTmxkbGpyMVN9Z2l7JmNIRH5+MWMkSWQxMQp6bSZ5WnJAQzBmd2V2K1BpS3hV
XzA9ekRSTjdeeSY8SUFMbkVONXpwVEphYkRAKCV1fihDTDZhdGlrej16IVdOeU4KenUxSm0mKkBS
ZE8ySnt4JjI3JHJRezg5cXo1fWZWUypLMGNLdlEoIWpLV21yallVXiVtc2ZlYXg0bHBUalZvM0cj
CnpTIWdVUiFATikqbX1vcl5jKV8oaysrNlkoWGxkS14lanVKTzFqQWk+UGFicTcydigrWlc5Q2la
Z0UlSVhIc35nOQp6PzQleEMwe0JHNGBvdERnPFU9SHtLKEhXd0h5VTZeO30zSllmVXxaMTZuMjll
JW1nWCE5TFdLSlohdWdLVyhHUmMKenFJeCpveHN6SnVNVSVqOFU3dndqJklDYTFNd2lPUHVNVmhS
fEtxbkZVO3tgOEI7cGs5MUImN1hwK0AlV2hXZ0JPCno1elkydjw2QCkjXytoNk5JNE5CcXVEWEQ3
aDlCY1R6OW55SjVXUmRKPntrME0/SH5fYlh1R2JYaFA+UDhHV1BebAp6I2Q5OFNLenM/KiRzb1E/
ZEIzez1xQWhZJVRtJH1EK1RTcnF4YVB3YmdAWSo9SWBQb0VwZ21nKVQhV0M4dzxJamoKeishOG0+
Yk98PXVvUjZTbzg/Rj50TzJzYFIrWXIqVDUydnA+bEpaUWA/Zm9vfW4jemZ1RGJsTiZqK2IjZTU0
MzMtCnpFRkxBRGw9UEpHQkowOGVtfmxAKG1lNDxgP0N8YGMhUDQ3UCg+RmRBS00kazl4KD9LJVFj
OHFwJWZ1RzJfM1MkIQp6OSkoTUMlI2tqUXtCbWZwZj11X2dTYCZCYWBvbkghZWZJJT9pU3h0dGc+
aXlTOyUqRD11WDk0WE9ye2VLcjx8YEkKejNPNEprT0ZOJDVRfV5ENTlXR2lmI05ycmcjV3NfMGh5
PyZHMXF0Vl4zb2UrWDhtdjBwcilPJmdrfE0hUE0rU21GCno8OTZSX3BqbHRIUXk8ZjV2IUtnPzsp
VkVkMjl1UGZAdzk4fVNjSVghcC0zfXUjQVFpc0wlPTBxY2tOZHtDWVlyTwp6e2o9MTR0P0pndGxE
ZVVQb1ludFhuZ1Eoe3hRQlAxLXxCMj1GUj5AOUBQKiZrVE9uPi1MUjN2RWAlQ2c1QTktfFUKel4+
WTx3YCVpdjxJdlVXWjN5aCZHYm0lPzYzYDAyLU0mQSZsY2U0WG4jNDszOUAjXyVQcmdlfGF6VW42
MVA9MFhPCnpGKWUhLWl0YT0oVnhBX1BoWCVQPTJoN1JaUjhjVVlNS2VLT089NXpMeT95Mzh0WX5X
KTFUKilmMD1vQVY5YzV3fgp6cztlRzJpcU5VWXc9I3hGUyhOOzN4M1EmZnF3a0p1ZC1aNlU3YnlI
YHVxSiZnOUI/I2M3TGNZS2FBVEBwdmJMcnoKejM0V0l4WCg5byk4KlowYmt4MT4xYjdwM0UyJmx0
MWNPQSZPVz4wRT5hKj80MUhzUT9QMWVBN1pYQUR7e01OX050Cnp0VzEzdUtmTHpramtRY3koKihG
XlY3fWR8Z3BJYVBhQ0hoRnA3T1JVXzRHcykyN3kyakBgS3d+Nmc3O0MyZlFoUQp6TSVRd3w3SzAk
TEE1RkZrMzJhPWt2KnFLO29DWXI/UTV7WmM7K1F0OEtfTHxSSDMkPXFfdkdecVdLdkokKkUmdTUK
ekleVmhFS2tHOGheX01JM09Mc25NPmYyc2Q8eXZiPDJDYEc0PEhGSChZS3dMQHQ8X35qOH5WUmkr
a2w9PWxUQ0dNCnpFbiF4KXR2SCYhR1pgT0ljeG9lYnhrU1AlUHErMj8lcjNwJlQkIzFUO3wxYSFU
QjJKXlBCUncrTkw2O3F7djkqRAp6Q0Vje0dIZEArbkwxU085aG0mcjJtP0M4fi11d04jSTJiY3Zh
dH0hJmBGd3hVYHxTZnNhT3dsK2ZSKT5GWFRlZlAKeiUxX1pQVWJxekU/MzBTdXE9RzJrTXJ5PkNe
eVh7V2ZuJTlqa0xfQF43Tj1Fa1FOcnRfXzFQNjxQOHgxQHJjITVPCnpJPURNPTtXOCYpVTJhYTAz
PnVBPlhAJVkmMTA5bCNDUiVvMig+XyFJPTdDRTRfd1Y9RVNSQl9JSSFEJUVkZ2Rofgp6M3skKU87
XiEkS2N3NWpLVlNvR0tFMmR4MDRIeEYoKX5FfVEhRmhWJExNZUpEaUtjRzJWXm5wVUt0bmFBZkxt
fUYKelY3ZDIrKSpofGxRMG9UYT1CJVdvOGJIJUdTa29SV1BJKlZHVTczPjw7Qnw1YlNQMTB8dzsw
TkYoPHM+LU91NCZlCnomYmlufSRKZm1jWnBUUGYxNj1nQ09fJDBKRkYtJlopMU9TQ2xib002JlFe
a3o2QTY2KURGRkNhay1RY2V2ISo2Ngp6dGlNP2syQUgrQ3hrMDRVIWIqNXtqO0w5a1heSjBeUiFU
TkBycl9ERiQ+bTxKP2BmOUVWMTlHfFFCJmdKelhAUGcKend5JTdPQWwleGs9RnUhcEUzRi1fPkBZ
bFZPRnI3PzV6eClFP3ZTa3o8Tit4WWtWKTcrWWdhbmdyY3ooKDx5dkF9CnopWG85aHBCaXQ8P3pG
P3Z7IVBaeGhgfFcwcyFUQUJrVkF+aG45fjtHUmdHd0kwO1dlYj9uJmU5c28zPn1iKVkmbgp6aXp8
cjlUciFyRWxHQnI+anJLcUUmZk56bGE3PXdxblp0bFI9cTImJGY+UFVtXkVkKUh7XkR1clhwVzkw
MXszVFQKemg1YDR+Pj1BSE8tckd8aGR2YSZ7JWh+KUhZOVBsbyZ4KzN5Y0NSNFYxWWZWTldIM0xE
Xyt9b082cyhFKlVWZXVgCnpZd3prNj1WdmBzcyRVRzRAcVd3PktCd2oqakwrQGprPUpGOG1FVX1H
O2xZPXpeO1dHaDxRMDZqYDxyR2NANUJHLQp6aWk+cHc0cE5ueTFlYCEpYykrbj1lLWlmIzR4RSli
WnI5OWNUQlRAalBVVSs3ayUqdDJvQH4jUypgfFpoKD9sTFoKeiRMUTYkZVU9NipIYmRjcXhTKkgy
dzM9PTBVOFJnPWdOJEJCWEFGe0RATlh6d3NJRUt6elJQYFkjUWBBVFFOJjE7CnpUR1prUEBQNVV7
clZIfih7ZEMwQno/MEtQaU5lZDl5T0xsTUgrY3x4b21QUzVrTHw+K2UtfUlGc2M/TUlgIyo4Rwp6
a0ZAMXpffWdzXyhnZTtmVlpGQTwocFUkUmY0OEowRy1re2ZrUnpwRmgzaz0hSnNtblUyM2ljSWJL
NiNUSWtNTV4KenFTTzVSNn58bGlHcm5iei00JDRYJDc5N01xKG9+QW9nO2B0Sm1FKHx6SzBrJElL
e0V+dVVRTiRhX35+Kj8/MylVCnpFcVp4c3VZVGxwZUtAcG9VfTQlSD93LWtWJCNNdmdeXyRraSte
QTN6KmhFQTJxNl9ndlM2VEgpbVgmRXlRPEd1eAp6VWJSRVhAJjxMIStpJmRuNz9COUVSRWRBYnck
I282TlJPdnMwWE1wVUBtcy0jPmZxRkBRc29XMHo7IzNFKHRZXjsKelVsMmk3JDhSbkpYX3B9YSlU
KFdwIyN8JmhkO3ZrdjU8WU0wMl9LKWFIc14xeWE8YWNNJiQ1WnNodT40YmB1NCNLCnp3dGBeRipj
YXhlJipHK1EjSVM4WTBXeVBiPFNrWENeNUxnJWV6RVQhe007YFNaeSgtQUkkUW53LSk+WjBZMEli
KAp6Kmp9aXV1ckc1O2hvWlgrYj5UP3VhMDN8WHNnS3x5Y0IybE9WajBTPztFYVRVYFUpckBwS0w4
MEdpYE0hcSs9UFYKemJScFEwQldxMldoUn5gcVI1PVlsb0JpLS1HemplViVAO0NGN3VVSmxMJCQz
cGVgeEYzNkA1UChmMUJzUE1acDNgCnpwKTB0WUFnJG1zeF5WS3tLdUkzSkVRMHVGOGc1ZTZEYkhg
bHdwfjlDRUheOG9yPVUyciVzfm02S20zLXM7OFl2Kgp6akw1fWNsIzEzcmR4Yl83Tl9JVG5LMlU9
STxqTyhzb0c/NTFfaElucSUzcC1IdE0xeCg+dXRFKFNVJD1OKyk4PDUKektmY0lHM1RSeUVMKGN5
WVR2I25eclUlSG47Z2BxbE5xNHx7cGQ8UFYpRjxLVkdkRykmbyhJc3hBcXkmd0tnZkMkCnpWcno9
UT49IzQzME1icGQwOUJMY2xvcT4+ZkZ4MF9jUC1rcT4yNllTdHlBfVBYT0xYWSsmJX18X1VIanJ3
UVJeKwp6d2ZNTFZ6OylONlkmSF48JFgrPkBCRD5HdENGbV5EJVU5biRhLWBEeWx3KksoQ1ZsdFFy
JjYwbG4+O3g1cXd1fkQKejlMPGdOa1BZdkAlcXZnRHBNYU9ZMldVVzJ5cUxgViNlbTZvSWMkS1NK
QWkyQ2pFdW1NQFB1JEtvPFpCfUNBVDgyCnpncnI8VGcwVFg9PkxNQjUyU3BYJE43dlN+YUQ2e1RA
Q2hINWAqYzEqJk0zNmhWVEZ6SkM/KE9gST4tZDA+fTVacwp6MnAka1o5K3xaK2FfZkR8UDZjX2ta
NjA3bk9JU01pZShiSEs0JU5CcEE/K1MhMU9fdjFeVG9seG57XzN4V2VDOFQKejdaTWBaRHRfVCko
WV9BY3MpPD5mazJtYCs3d0cye155ZUgrQi19T3dWTEV5VXc+RDYtISV3JXpMMF4xTXMwVUR8Cnox
RnAhVXNOWnZJb3JldEdlI3AoanBMcjhHcm9EeUNSYV5nbUBYNGdlIXp7PmQjWUJ5UXVaalQwaTNv
cWZVMHEjQQp6Z0s3OytOPXAwfVU2YkhNelNXSkdtcW8yQUtIbTMjKkA4UzZAaCNBJHBPWG1fcn1B
eksxJDtYQU5NQX15QkN+dXsKeiNjR15zQDkmO2JWb1hgYHNrZFRaR0o2T29zUTh4MUxGKTxZP3s2
N0dQZUtkVkVXU0NPP0lMWSZRNTA+Zm1yOTBZCnpHWkh4QzctVlNJQEFIKGsjM2AkQ25BMTheZmsk
b0otNHoweEhtO1ZzSFAkVihgdV5TN2RQWEx6VWJFKzlkYUB3OQp6S2Q7eVZpb3ElRDJtdmdCV15p
OStHRmAoUl48aiVaRW9PQ1kzYVR9IStUVm08T29gb0NNQyRRclQ2aVNleSRwZGoKemheUEphOUlD
VXFwIVoleTM4I3xlVDdNMy0kUEA1VCZhUERvY0hhWUdzdUVCJGRVTTxCQiFeQUN7fkElIT9ZdDVR
CnplYmhCKGxfR05GQ0M0WXZtX2hVe3VsIUkhKHdxK1gzalBlMTRpVlgjZEh3Xj5sLW9kUF54cWsq
NFdUcXhzZ0cjVwp6aDtzTWgzMHtHRF84Mzd4N0Q9SEplKn0/MUMtQ2lyWFIkOFNEcm54VTVAPXF+
VXgkYyRVfkEqSmUpWUExM2U9SkoKejJOVWRLT2peO1NxOGojUyYoZXNXK3p1PlExVlNncjlmWHJa
Z19ucy1AYXJSTDUlV1dsVUBlVjdzRGF+IUU4fCEmCnpXPXM2cyFHPVh7bitsJmVaa25PdXgqdDVJ
QihNJGBKP0BrWVNGXm12em5lbUchbjRAMVZPOHh3VEZ+akQ+KH4xbgp6eTwwI2hjKXN9Z3ZtaH0z
V3BZJitPLV9VOHhwViZoKyZqVjJGdzBjSVMmNmByaD1qME5FVmNlMFQkKChPbUV2JUQKeiFkZzht
OFJjIV5FZDFJITVQISRXclhsVUJnNiMrMmQpbVRxPEhLSTw+KSgkPzcjPG9DczhQPnw+LV5QbDxG
KTB2Cno9SzlSKWhPTmFtTkdqMVJNOztNfU5yfnEkJUFEPE1QSz13bVooMjJnbm4yYkJJKXhLJTRj
YWo3JHhAe0lFWmAmZQp6K2FnZE5qPmFYfUdrUllGJCN0MSlUcFE4cnNUfSZ9O2MtKCFLfFdQfkBx
RFJreXs1RlgoO2tFbEBJYHk1RVpFWFAKemhSfnJ5YTBXOEt4azZtPEU0PWB5IWAwdmJlMkRASm1g
R2BKbE1yVT81eWsqPXNRdWtpWGM3OUFXPm87KDlZN3I1Cno9Rk9YbF9gIUFpWUh2dTsoZjcralpt
Q3piMHBRX2pXQ1N0SD8oIWdaWVlwVDgkZkxPZ3A7cncpMEdpJW9zM3U0YQp6JEU/eTh1Q3ZBWCU1
ZTFqM0tzK0xlTy1JP2lgQ15SUlJaTGp5TV8tT1gtIXA3ZldFczhmenBYNEZxcjd5P1ViYFEKejJG
fXlocG1VXkFkIVkzSURYZn5KRSFsNV5odD9NJDxudmh1Q2BEVGFITjRnWHA2PyMlTllOaDs9QDB6
ZilJcUNJCnpQMWhRQ1VfTE0yREE/cjJ0PHxmZWdieWZBRDctJStfe3t8ZlAhPXtMbndFMCpOY3NY
S08mNE1YekI5MTJxcjMzaQp6JEtCOGtVMSpleFl5V1dyZkAzYCo0MkdrU3daYmFRMTkwLVA0am8j
NzBXdThzRDxyMUBPJmIkRXB4ViUhNElSVykKekwjYEpzKz9lYn1MfUc+RW8oRDR9SHh4YzdnckF3
ZU5WZ2deJihXb0w7RlQhPHhxRn12P1Z0YFRDfiR1O00xNyZGCnpQIyN6V3oqX3stJVFSJGo9YTEl
dVQ1YTxmPD8xMTtEZ3NpQWcpblB+MU9iQyFlKllWRFF6WWAzUHpzfGZSQD53Tgp6cmJ7OzNCbD8l
MTdkWDBlTWNeJDdnPFJNKiUwZUZSQC1SMH0zcU5DPlhOc2E/TVdQKEQwbyltTUE4MWBqOWcxV2IK
eigmP3VsN2w7clU/d09aT3c9eEFadzx2XkJBUmVYeUZNMlo9MjstNGk5PyVMfmpaX2QxV2pMNClk
fX47VHV7TF4mCnoqMXlgcEw0P0RFazwrYkdLWChyentreXAhTlM0N25EP2xaJkdCPEZfNkBXb0c+
Kik5ZD88V2J2MlhHN05YbDNKUgp6bnczK1AmIXJqMngwbz5NeVRRSV9PRjJ7UHgkdTcpQVdxKHg4
eHUyRCNsbW4rUm9ZZkNUQ3BoeWVsb1lmTHtAWWIKej1gJDJWMDB+ZnJ5I25gRHY5ZXZlY0VKa0hF
ci1WRnUrVyh2TWRTP0Y7cHtESFM1ZXJIdk9oNFhrXnYlNkhhMzhWCnpqZXVzQHloSDAxJGVmLTZa
PlZMRjEtfFAmX2t9VztfPUAhfGQyJXFAZ0wqQyp3P0lOSmU/VGpzKWJFO0J6fGRafQp6aiZlX1Js
ITlRTGohbDd4eGZ1d0l2byt0Myk4P19fXkxwITttVjlxb3QqZmN4TmMzISg9RWphIXo/Y0gkP1g5
bEsKekR5PEJvckxoK2dDV3N7fC1kTCNpaktLYFZaQ0x4RyN0JEVmbiQld0R2NCkrNmAzMyhHNDJK
TnNjPUpmOGtnNSoxCnozYypDdU5JMkR3O1pER1phel9rU3A9aS02JkNlM0JkPkNaNzxNUGdiKXRT
OGNvSlc4Ymo0XnpmNkdmQE9CND5ZfAp6Vjl3aFU1Jip2dnJIP1FSR056YXY3KShYYlhWVStiam03
XzlrP3xpczJEKlg3TUVZXzJgR3FaSE01e0l8e0xNRTAKeitFOSZKZm59YU5HTFJaP1ZuQk4pQytf
JXc3IzlTdG9RMTY7bkohO0pGSkl9VCl1TjA4VnI/YjtJOU9SNTB9WCEtCnpQS1BSRzN3eEhyRjU1
Mi1lIU5yczRyQyN6bDlGaHt1ZUd7cXI3UiU8dHZOMXBTK3BxQDc+dW1qaComTXVrVnh+eAp6Rkxa
MGgjTmFuR1klaEYqPzFVM1EwfW1hVjBRcUk5Jm9lU2dsUTs7T1lDdiRVWjdwVUlRaFdvSE5yUThL
KjJvQ2EKenpaOGdeX2gtWCNaNT8/d3YtPlYqaHUzciR2RH5rPjdAWTN9NWMmQ0RtfXd7ezc/USs9
bmtiQjhVOHBZX2YjdEJNCno2YlV5c0hXSV5DekUlJlU5P2QxXmt3WH5GQU5aMDIlaFBFN0F6b1dP
NWBCRFRjRDYrTGlCfi1rJDUhbXRPWUFuRQp6dXIlRThMUXd7PEVEKFIoNE1aWlcqJV40dTU3cU1L
RG16LUNubXF2UGRDK09waVlQY3V6S0o8JjJse3EyaFJXZX4Kem98VGomZnp7WFlCM19MQnFuSnY5
WHA8fmJpaygzQD42NSUwVGY7MVl0M0plaEwyJCZhdSRRITd6K1gkMWFmfCU9Cno5WWliSiFASGco
MiM1dHs0SjtLbyNkcDkwYy1EVTQzazs/cXFJbU5ZRlBRJWpGQ19ORWN0YTJsRH0xdG10PT14cwp6
P20+e2woJFM3eSZFYHlyPU80ZlF6PUxhJUsxN15PZmRtWmNMPTxvLUg+YHJFK1h9QWp6SENpZ0F7
YmgmMExwdE0KekNERz40NzhAKHtKZkowbSE5PVJVM2tTdHVpfj5NLTtAdjsobHR7QG5oLW5RWkBD
VDwqK3lrc0c9IzY0d0dmRXwzCnpYJkAyZ0pSTUM2KWE5a0g+MD8qd0FnTV9GOHdTMz87eCRYJDd2
NVYhMD9iUyFCZVlEJUVLV3dKWFZpa1J2YlVFKAp6bTQlY0JART8+QiNBN018dS0xVmdldTt1eyRo
RDFPNzAmfjdBM0RZd0lCQz5XaTYtfklrXjFOcktwN2tNVTlUKzsKenI9KGZrN29sN05iXy1pVHZr
JUYwcG1heWgqYX1ZNGZCV0hNSGxSaClQdld9SVVMUVJPJXF4WWtTeDg4UCQkbTs2CnpSKSRjamlf
I3VNaFZ3UmkzZGhoVTl5bHh+Z2gxfCRqaFoxZVZ1UHVXWGkzPVk9N0FwNVFxMVFhSj9MNSZzYHhX
Pgp6XkItaG0rWnxwbzhrMz14cXohak8zMDReUzFkJVdaNERWTDdVeGN+QEM0YW1ZKWleYUVnMz9n
P0RNIXBRbmdMRFoKejR4aFZ8O01OI0B3ejxBfnZKb3VrdjM0IWlvc2Y0cmcobXczdXsjRH17Sj18
fkJ4aXBISEsxVDRgMFBCMDx9ZGJyCnpgJlo7I05KXyU7KWJAXnZoM0Bwenkqan5PWCF9Y0NafD9j
fW9IekNXU35mKDw1T1ZqPjUpX1B+dU1zfFBGRXtgYgp6M1c2SkAhJUU4Vig+dDhKOCRBcSQlcDM1
JGdtcGJjailGbmUzdCl9JSRaJl8hSF5mfiFpWFBNXmA7I3dXQDdtOE0KejQ4aG9HPVB5c2dlX2hr
SFZ9MWAtZzNpbyRwVFY5bWZte010ITQtQH1vWmdiQiRGJGpwVmxlQ2VWXyUocyNxOSQtCnpLRVlz
S28hZHIyJD9lfW8qWlhnTVQ7TklFSFBNbG1tb0U+YyNKVytKV35FZzlgQC1uVWtseSUxcFRNUHNT
JThWKQp6PmV0VHZPO1lPU1BXYSUteTcrJS1UbF5uRF84KWYzeVVWKmlnKHZRfkJtc3ZMY3A4UkpC
T0BJaVVaYDJ+MzgzSHEKeiUhQkBxb1l0UWdzcll9YXc/OXd0Jmw5fEg/WXw5SWYwb2FtPEAwQ3h7
UCN4dnBTfDtFQEJHPDJ7fno+RHduIyR0ClkrNUwwaGAra0szN0t8fURZaGd0Qyt4SXtJRks1JUVH
eW5ocQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy9jc3Mz
L2ZvbnQtZmVhdHVyZS1zZXR0aW5ncy1yZW5kZXJpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjL2NzczMvZm9udC1mZWF0dXJlLXNldHRpbmdzLXJlbmRl
cmluZy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3YmUwZGZl
ZTg0MDMxZTRlYzg3YTU3YjUyYjI0ZTQxNTgxNTA1NWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFj
L2NzczMvZm9udC1mZWF0dXJlLXNldHRpbmdzLXJlbmRlcmluZy1leHBlY3RlZC50eHQKKysrIC9k
ZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1sYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKLSAg
UmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKLWxheWVyIGF0ICgwLDApIHNpemUgODAw
eDYwMAotICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCi0gICAgUmVu
ZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTg0Ci0gICAgICBSZW5kZXJCbG9jayB7
UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MzYKLSAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgw
LDApIHNpemUgNzgzeDM2Ci0gICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMjQzOiAi
VGVzdCBmb3IgZm9udC1mZWF0dXJlLXNldHRpbmdzIHByb3BlcnR5LiAiCi0gICAgICAgICAgdGV4
dCBydW4gYXQgKDI0MywwKSB3aWR0aCA1NDA6ICJUaGUgZmlyc3Qgd29yZCBvZiB0aGUgZm9sbG93
aW5nIHRocmVlIHdvcmRzIHNob3VsZCBiZSBkaXNwbGF5ZWQgbGlrZSBcIldlYktpdFwiLCB3aGls
ZSIKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxOCkgd2lkdGggMjY3OiAib3RoZXJzIHNob3Vs
ZCBiZSBkaXNwbGF5ZWQgYXMgYmxhY2sgYm94ZXMuIgotICAgICAgUmVuZGVyQmxvY2sge0RJVn0g
YXQgKDAsNTIpIHNpemUgNzg0eDE3Ci0gICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCww
KSBzaXplIDMxeDE2Ci0gICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMzE6ICJXZWJL
aXQiCi0gICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCw2OSkgc2l6ZSA3ODR4MTcKLSAgICAg
ICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgOTZ4MTYKLSAgICAgICAgICB0ZXh0
IHJ1biBhdCAoMCwwKSB3aWR0aCA5NjogIldlYktpdCIKLSAgICAgIFJlbmRlckJsb2NrIHtESVZ9
IGF0ICgwLDg2KSBzaXplIDc4NHgxNwotICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAs
MCkgc2l6ZSA5NngxNgotICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDk2OiAiV2Vi
S2l0IgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVj
dGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMK
aW5kZXggN2M0NzdkMTVjZjRmY2RmNmFjNzE4ZDdmYTNiMTA4ZTI4ZDc2NzE4Ni4uNjgxYTc2ODZk
YTgyZjJiYmQzNGI2N2ExYTU2ZDk1ODk3YWI5MTMzOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCkBAIC0yODcxLDYgKzI4NzEsOCBAQCBCVUdD
Ujk3NzE2IDogZmFzdC9jbGlwL292ZXJmbG93LWJvcmRlci1yYWRpdXMtY29tYmluYXRpb25zLmh0
bWwgPSBJTUFHRQogLy8gQ2F1c2VkIGJ5IHI5MjYxOAogQlVHV0s2NTg3NCA6IGZhc3QvanMvcHJl
dmVudEV4dGVuc2lvbnMuaHRtbCA9IFRFWFQKIAorQlVHV0s2Mzc5NiBNQUMgOiBjc3MzL2ZvbnQt
ZmVhdHVyZS1zZXR0aW5ncy1yZW5kZXJpbmcuaHRtbCA9IE1JU1NJTkcgRkFJTAorCiBCVUdXSzY2
NDE3IFdJTiBMSU5VWCA6IGZhc3QvdGV4dC9taWR3b3JkLWJyZWFrLWJlZm9yZS1zdXJyb2dhdGUt
cGFpci0yLmh0bWwgPSBJTUFHRStURVhUCiAKIEJVR1dLNjY0MTkgOiBodHRwL3Rlc3RzL21pc2Mv
YXV0aGVudGljYXRpb24tcmVkaXJlY3QtMS9hdXRoZW50aWNhdGlvbi1zZW50LXRvLXJlZGlyZWN0
LWNyb3NzLW9yaWdpbi5odG1sID0gVEVYVApAQCAtMzgxMyw1ICszODE1LDMgQEAgQlVHX2VhZSBX
SU4gTUFDIDogdGFibGVzL21vemlsbGEvYnVncy9idWcxMzE4Lmh0bWwgPSBQQVNTIEZBSUwKIEJV
R19lYWUgV0lOIE1BQyA6IHRhYmxlcy9tb3ppbGxhL2J1Z3MvYnVnNDUyNy5odG1sID0gUEFTUyBG
QUlMCiAKIEJVR19lYWUgV0lOIE1BQyA6IGZhc3Qvc3ViLXBpeGVsL2Zsb2F0LWNvbnRhaW5pbmct
YmxvY2std2l0aC1tYXJnaW4uaHRtbCA9IFBBU1MgRkFJTAotCi1CVUdXSzY5ODI2IE1BQyA6IGNz
czMvZm9udC1mZWF0dXJlLXNldHRpbmdzLXJlbmRlcmluZy5odG1sID0gSU1BR0UgSU1BR0UrVEVY
VAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>