<?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>53360</bug_id>
          
          <creation_ts>2011-01-28 19:44:09 -0800</creation_ts>
          <short_desc>REGRESSION(r77006): &quot;Broke Windows tests&quot; (Requested by rniwa on #webkit).</short_desc>
          <delta_ts>2022-02-28 03:41:50 -0800</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>Other</rep_platform>
          <op_sys>OS X 10.5</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>53219</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>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>ggaren</cc>
    
    <cc>oliver</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>341966</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-28 19:44:09 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/77006 broke the build:
&quot;Broke Windows tests&quot; (Requested by rniwa 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>341967</commentid>
    <comment_count>1</comment_count>
      <attachid>80537</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-28 19:44:33 -0800</bug_when>
    <thetext>Created attachment 80537
ROLLOUT of r77006

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 --ignore-builders

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341970</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-01-28 20:06:18 -0800</bug_when>
    <thetext>Committed r77044: &lt;http://trac.webkit.org/changeset/77044&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341998</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-28 22:48:46 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/77044 might have broken Leopard Intel Debug (Tests)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342352</commentid>
    <comment_count>4</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-01-30 12:04:10 -0800</bug_when>
    <thetext>Looks like broken windows may actually be &quot;broken 32bit&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342406</commentid>
    <comment_count>5</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-01-30 17:14:33 -0800</bug_when>
    <thetext>
Rolled back in with 32bit fix in r77098</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80537</attachid>
            <date>2011-01-28 19:44:33 -0800</date>
            <delta_ts>2022-02-28 03:41:50 -0800</delta_ts>
            <desc>ROLLOUT of r77006</desc>
            <filename>bug-53360-20110129034351.patch</filename>
            <type>text/plain</type>
            <size>280192</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKaW5kZXggZDZj
MzFkODU0MjU0YzMzMmVhMmVjMTVmNjVjNmU0NjQ0MTcyNjZmMS4uODM0NDJiMmUwMjI2YTg2NjEx
YTVkNmE4ZDA0OWVhYmFmMDAyZDg5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NhbGxiYWNrT2JqZWN0LmgKQEAgLTU0LDExICs1NCwxMSBAQCBzdHJ1Y3QgSlNDYWxsYmFja09i
amVjdERhdGEgewogICAgICAgICByZXR1cm4gbV9wcml2YXRlUHJvcGVydGllcy0+Z2V0UHJpdmF0
ZVByb3BlcnR5KHByb3BlcnR5TmFtZSk7CiAgICAgfQogICAgIAotICAgIHZvaWQgc2V0UHJpdmF0
ZVByb3BlcnR5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25lciwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQorICAgIHZvaWQgc2V0UHJp
dmF0ZVByb3BlcnR5KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSkKICAgICB7CiAgICAgICAgIGlmICghbV9wcml2YXRlUHJvcGVydGllcykKICAgICAgICAgICAg
IG1fcHJpdmF0ZVByb3BlcnRpZXMgPSBhZG9wdFB0cihuZXcgSlNQcml2YXRlUHJvcGVydHlNYXAp
OwotICAgICAgICBtX3ByaXZhdGVQcm9wZXJ0aWVzLT5zZXRQcml2YXRlUHJvcGVydHkoZ2xvYmFs
RGF0YSwgb3duZXIsIHByb3BlcnR5TmFtZSwgdmFsdWUpOworICAgICAgICBtX3ByaXZhdGVQcm9w
ZXJ0aWVzLT5zZXRQcml2YXRlUHJvcGVydHkocHJvcGVydHlOYW1lLCB2YWx1ZSk7CiAgICAgfQog
ICAgIAogICAgIHZvaWQgZGVsZXRlUHJpdmF0ZVByb3BlcnR5KGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSkKQEAgLTgzLDEzICs4MywxMiBAQCBzdHJ1Y3QgSlNDYWxsYmFja09iamVjdERh
dGEgewogICAgICAgICAgICAgUHJpdmF0ZVByb3BlcnR5TWFwOjpjb25zdF9pdGVyYXRvciBsb2Nh
dGlvbiA9IG1fcHJvcGVydHlNYXAuZmluZChwcm9wZXJ0eU5hbWUuaW1wbCgpKTsKICAgICAgICAg
ICAgIGlmIChsb2NhdGlvbiA9PSBtX3Byb3BlcnR5TWFwLmVuZCgpKQogICAgICAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlKCk7Ci0gICAgICAgICAgICByZXR1cm4gbG9jYXRpb24tPnNlY29uZC5n
ZXQoKTsKKyAgICAgICAgICAgIHJldHVybiBsb2NhdGlvbi0+c2Vjb25kOwogICAgICAgICB9CiAg
ICAgICAgIAotICAgICAgICB2b2lkIHNldFByaXZhdGVQcm9wZXJ0eShKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIEpTQ2VsbCogb3duZXIsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSkKKyAgICAgICAgdm9pZCBzZXRQcml2YXRlUHJvcGVydHkoY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gZW1wdHk7Ci0gICAgICAgICAgICBtX3Byb3BlcnR5
TWFwLmFkZChwcm9wZXJ0eU5hbWUuaW1wbCgpLCBlbXB0eSkuZmlyc3QtPnNlY29uZC5zZXQoZ2xv
YmFsRGF0YSwgb3duZXIsIHZhbHVlKTsKKyAgICAgICAgICAgIG1fcHJvcGVydHlNYXAuc2V0KHBy
b3BlcnR5TmFtZS5pbXBsKCksIHZhbHVlKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAg
dm9pZCBkZWxldGVQcml2YXRlUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
KQpAQCAtMTAxLDEyICsxMDAsMTIgQEAgc3RydWN0IEpTQ2FsbGJhY2tPYmplY3REYXRhIHsKICAg
ICAgICAgewogICAgICAgICAgICAgZm9yIChQcml2YXRlUHJvcGVydHlNYXA6Oml0ZXJhdG9yIHB0
ciA9IG1fcHJvcGVydHlNYXAuYmVnaW4oKTsgcHRyICE9IG1fcHJvcGVydHlNYXAuZW5kKCk7ICsr
cHRyKSB7CiAgICAgICAgICAgICAgICAgaWYgKHB0ci0+c2Vjb25kKQotICAgICAgICAgICAgICAg
ICAgICBtYXJrU3RhY2suYXBwZW5kKCZwdHItPnNlY29uZCk7CisgICAgICAgICAgICAgICAgICAg
IG1hcmtTdGFjay5hcHBlbmQocHRyLT5zZWNvbmQpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAKICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmluZ0lt
cGw+LCBXcml0ZUJhcnJpZXI8VW5rbm93bj4sIElkZW50aWZpZXJSZXBIYXNoPiBQcml2YXRlUHJv
cGVydHlNYXA7CisgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIEpT
VmFsdWUsIElkZW50aWZpZXJSZXBIYXNoPiBQcml2YXRlUHJvcGVydHlNYXA7CiAgICAgICAgIFBy
aXZhdGVQcm9wZXJ0eU1hcCBtX3Byb3BlcnR5TWFwOwogICAgIH07CiAgICAgT3duUHRyPEpTUHJp
dmF0ZVByb3BlcnR5TWFwPiBtX3ByaXZhdGVQcm9wZXJ0aWVzOwpAQCAtMTM4LDkgKzEzNyw5IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fY2FsbGJhY2tPYmplY3REYXRhLT5nZXRQcml2YXRl
UHJvcGVydHkocHJvcGVydHlOYW1lKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzZXRQcml2YXRl
UHJvcGVydHkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUpCisgICAgdm9pZCBzZXRQcml2YXRlUHJvcGVydHkoY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQogICAgIHsKLSAgICAg
ICAgbV9jYWxsYmFja09iamVjdERhdGEtPnNldFByaXZhdGVQcm9wZXJ0eShnbG9iYWxEYXRhLCB0
aGlzLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKKyAgICAgICAgbV9jYWxsYmFja09iamVjdERhdGEt
PnNldFByaXZhdGVQcm9wZXJ0eShwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKICAgICB9CiAgICAgCiAg
ICAgdm9pZCBkZWxldGVQcml2YXRlUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2Jq
ZWN0RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmpl
Y3RGdW5jdGlvbnMuaAppbmRleCBmMDM0NDNmNGViM2Y4YWRmOTRkNGY1ODRjYjA1YTViMGFhNWFl
ZmExLi5kZTVkODQyMTY0NDNhNDRhZDQwZjk1MWZmMDVmNDg1MDVmYjE3MjVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aApAQCAtMjM4LDcgKzIzOCw3IEBAIHZvaWQgSlNDYWxsYmFja09iamVjdDxCYXNlPjo6cHV0KEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lCiAgICAgICAgICAg
ICBpZiAoU3RhdGljRnVuY3Rpb25FbnRyeSogZW50cnkgPSBzdGF0aWNGdW5jdGlvbnMtPmdldChw
cm9wZXJ0eU5hbWUuaW1wbCgpKSkgewogICAgICAgICAgICAgICAgIGlmIChlbnRyeS0+YXR0cmli
dXRlcyAmIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkpCiAgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgICAgICBKU0NhbGxiYWNrT2JqZWN0PEJhc2U+OjpwdXREaXJl
Y3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsgLy8gcHV0IGFzIG92
ZXJyaWRlIHByb3BlcnR5CisgICAgICAgICAgICAgICAgSlNDYWxsYmFja09iamVjdDxCYXNlPjo6
cHV0RGlyZWN0KHByb3BlcnR5TmFtZSwgdmFsdWUpOyAvLyBwdXQgYXMgb3ZlcnJpZGUgcHJvcGVy
dHkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAg
LTU2NSw3ICs1NjUsNyBAQCBKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8QmFzZT46OnN0YXRpY0Z1
bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbAogICAgICAgICAgICAgICAg
IGlmIChKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJhY2sgY2FsbEFzRnVuY3Rpb24gPSBlbnRy
eS0+Y2FsbEFzRnVuY3Rpb24pIHsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgICAgIEpTT2JqZWN0KiBvID0gbmV3IChleGVjKSBKU0NhbGxiYWNrRnVuY3Rpb24oZXhlYywg
YXNHbG9iYWxPYmplY3QodGhpc09iai0+Z2V0QW5vbnltb3VzVmFsdWUoMCkpLCBjYWxsQXNGdW5j
dGlvbiwgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgICAgICAgICAgICAgdGhpc09iai0+cHV0RGly
ZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lLCBvLCBlbnRyeS0+YXR0cmlidXRl
cyk7CisgICAgICAgICAgICAgICAgICAgIHRoaXNPYmotPnB1dERpcmVjdChwcm9wZXJ0eU5hbWUs
IG8sIGVudHJ5LT5hdHRyaWJ1dGVzKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG87CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTT2JqZWN0UmVmLmNwcAppbmRleCBkM2MxOTkzMTg4MmU1ZWY1MDYwNTc0OGQ4ZWVlYzI1YTQ1
MDJkN2Y3Li5kNmRlNDI2ODJmNDQ0NzBhNmExNWU5ODQ5MzM3NGQ0ZTJiMmVjODc2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcApAQCAtMTA4LDcgKzEwOCw3IEBA
IEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUNvbnN0cnVjdG9yKEpTQ29udGV4dFJlZiBjdHgsIEpT
Q2xhc3NSZWYganNDbGFzcywgSlNPYmplCiAgICAgICAgIGpzUHJvdG90eXBlID0gZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLT5vYmplY3RQcm90b3R5cGUoKTsKIAogICAgIEpTQ2FsbGJhY2tD
b25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rv
cihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KS0+Y2FsbGJhY2tDb25zdHJ1Y3RvclN0cnVjdHVyZSgpLCBqc0NsYXNzLCBjYWxsQXNDb25zdHJ1
Y3Rvcik7Ci0gICAgY29uc3RydWN0b3ItPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIGpzUHJvdG90eXBlLCBEb250RW51bSB8IERv
bnREZWxldGUgfCBSZWFkT25seSk7CisgICAgY29uc3RydWN0b3ItPnB1dERpcmVjdChleGVjLT5w
cm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBqc1Byb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkpOwogICAgIHJldHVybiB0b1JlZihjb25zdHJ1Y3Rvcik7CiB9CiAKQEAg
LTM4NSwxMSArMzg1LDExIEBAIGJvb2wgSlNPYmplY3RTZXRQcml2YXRlUHJvcGVydHkoSlNDb250
ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0cmluZ1JlCiAgICAgSlNWYWx1ZSBq
c1ZhbHVlID0gdmFsdWUgPyB0b0pTKGV4ZWMsIHZhbHVlKSA6IEpTVmFsdWUoKTsKICAgICBJZGVu
dGlmaWVyIG5hbWUocHJvcGVydHlOYW1lLT5pZGVudGlmaWVyKCZleGVjLT5nbG9iYWxEYXRhKCkp
KTsKICAgICBpZiAoanNPYmplY3QtPmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFs
T2JqZWN0Pjo6aW5mbykpIHsKLSAgICAgICAgc3RhdGljX2Nhc3Q8SlNDYWxsYmFja09iamVjdDxK
U0dsb2JhbE9iamVjdD4qPihqc09iamVjdCktPnNldFByaXZhdGVQcm9wZXJ0eShleGVjLT5nbG9i
YWxEYXRhKCksIG5hbWUsIGpzVmFsdWUpOworICAgICAgICBzdGF0aWNfY2FzdDxKU0NhbGxiYWNr
T2JqZWN0PEpTR2xvYmFsT2JqZWN0Pio+KGpzT2JqZWN0KS0+c2V0UHJpdmF0ZVByb3BlcnR5KG5h
bWUsIGpzVmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgaWYgKGpzT2Jq
ZWN0LT5pbmhlcml0cygmSlNDYWxsYmFja09iamVjdDxKU09iamVjdFdpdGhHbG9iYWxPYmplY3Q+
OjppbmZvKSkgewotICAgICAgICBzdGF0aWNfY2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTT2JqZWN0
V2l0aEdsb2JhbE9iamVjdD4qPihqc09iamVjdCktPnNldFByaXZhdGVQcm9wZXJ0eShleGVjLT5n
bG9iYWxEYXRhKCksIG5hbWUsIGpzVmFsdWUpOworICAgICAgICBzdGF0aWNfY2FzdDxKU0NhbGxi
YWNrT2JqZWN0PEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdD4qPihqc09iamVjdCktPnNldFByaXZh
dGVQcm9wZXJ0eShuYW1lLCBqc1ZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
ICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNXZWFrT2JqZWN0TWFwUmVmSW50ZXJuYWwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNXZWFrT2JqZWN0TWFwUmVmSW50ZXJuYWwuaAppbmRleCBmN2I5MWRhNTFkMzI2ZGIyYTQ1ZjY3
N2ViZmVmNmY3ZjBlYzViNzcwLi42NGUxZjRkNTNiN2U4YjE4Mzk1MjQ2ZWU4MmJiODQwOWJjMDcy
MDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV2Vha09iamVjdE1h
cFJlZkludGVybmFsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dlYWtPYmpl
Y3RNYXBSZWZJbnRlcm5hbC5oCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNzIEpTT2JqZWN0OwogCiB0
eXBlZGVmIHZvaWQgKCpKU1dlYWtNYXBEZXN0cm95ZWRDYWxsYmFjaykoc3RydWN0IE9wYXF1ZUpT
V2Vha09iamVjdE1hcCosIHZvaWQqKTsKIAotdHlwZWRlZiBKU0M6OldlYWtHQ01hcDx2b2lkKiwg
SlNDOjpKU09iamVjdD4gV2Vha01hcFR5cGU7Cit0eXBlZGVmIEpTQzo6V2Vha0dDTWFwPHZvaWQq
LCBKU0M6OkpTT2JqZWN0Kj4gV2Vha01hcFR5cGU7CiAKIHN0cnVjdCBPcGFxdWVKU1dlYWtPYmpl
Y3RNYXAgOiBwdWJsaWMgUmVmQ291bnRlZDxPcGFxdWVKU1dlYWtPYmplY3RNYXA+IHsKIHB1Ymxp
YzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDU4YTI1YmRjYWMxYjhiM2M0OGMzZjc3ZDQw
NzJmMjZiN2U0ZTZiNzIuLmQ2MjM2OTM3MzA3YzQ0MmYxOGVmOTJlMGYyYmQ0MzA0MDQ1M2ZlOWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwOCBAQAorMjAxMS0wMS0yOCAg
U2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CisKKyAgICAgICAgVW5y
ZXZpZXdlZCwgcm9sbGluZyBvdXQgcjc3MDA2IGFuZCByNzcwMjAuCisgICAgICAgIGh0dHA6Ly90
cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0Lzc3MDA2CisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtp
dC5vcmcvY2hhbmdlc2V0Lzc3MDIwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01MzM2MAorCisgICAgICAgICJCcm9rZSBXaW5kb3dzIHRlc3RzIiAoUmVx
dWVzdGVkIGJ5IHJuaXdhIG9uICN3ZWJraXQpLgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tP
YmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdERhdGE6OnNldFByaXZhdGVQ
cm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3REYXRhOjpKU1ByaXZhdGVQ
cm9wZXJ0eU1hcDo6Z2V0UHJpdmF0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFj
a09iamVjdERhdGE6OkpTUHJpdmF0ZVByb3BlcnR5TWFwOjpzZXRQcml2YXRlUHJvcGVydHkpOgor
ICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0RGF0YTo6SlNQcml2YXRlUHJvcGVydHlNYXA6
Om1hcmtDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q6OnNldFByaXZh
dGVQcm9wZXJ0eSk6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaDoK
KyAgICAgICAgKEpTQzo6OjpwdXQpOgorICAgICAgICAoSlNDOjo6OnN0YXRpY0Z1bmN0aW9uR2V0
dGVyKToKKyAgICAgICAgKiBBUEkvSlNPYmplY3RSZWYuY3BwOgorICAgICAgICAoSlNPYmplY3RN
YWtlQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNPYmplY3RTZXRQcml2YXRlUHJvcGVydHkpOgor
ICAgICAgICAqIEFQSS9KU1dlYWtPYmplY3RNYXBSZWZJbnRlcm5hbC5oOgorICAgICAgICAqIEph
dmFTY3JpcHRDb3JlLmV4cDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjptYXJrQWdncmVnYXRlKToKKyAgICAgICAgKiBi
eXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpnbG9iYWxPYmpl
Y3QpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SnVtcElmTm90RnVuY3Rpb25DYWxsKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRKdW1wSWZOb3RGdW5jdGlvbkFwcGx5
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmZpbmRTY29wZWRQcm9wZXJ0eSk6
CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXIuY3BwOgorICAgICAgICAoSlNDOjpldmFsdWF0
ZUluR2xvYmFsQ2FsbEZyYW1lKToKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRp
b24uY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlckFjdGl2YXRpb246OkRlYnVnZ2VyQWN0aXZh
dGlvbik6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyQWN0aXZhdGlvbjo6bWFya0NoaWxkcmVuKToK
KyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaDoKKyAgICAgICAgKiBkZWJ1
Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHA6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyQ2FsbEZy
YW1lOjpldmFsdWF0ZSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg6CisgICAg
ICAgIChKU0M6OkV4ZWNTdGF0ZTo6ZXhjZXB0aW9uKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpyZXNvbHZlKToKKyAg
ICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnJlc29sdmVTa2lwKToKKyAgICAgICAgKEpTQzo6SW50
ZXJwcmV0ZXI6OnJlc29sdmVHbG9iYWwpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6cmVz
b2x2ZUdsb2JhbER5bmFtaWMpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6cmVzb2x2ZUJh
c2VBbmRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjp1bndpbmRDYWxsRnJh
bWUpOgorICAgICAgICAoSlNDOjphcHBlbmRTb3VyY2VUb0Vycm9yKToKKyAgICAgICAgKEpTQzo6
SW50ZXJwcmV0ZXI6OmV4ZWN1dGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dHJ5Q2Fj
aGVHZXRCeUlEKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKToK
KyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAgICAoSlNDOjpKSVRUaHVua3M6OnRy
eUNhY2hlR2V0QnlJRCk6CisgICAgICAgIChKU0M6OkRFRklORV9TVFVCX0ZVTkNUSU9OKToKKyAg
ICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoR2xvYmFsT2JqZWN0OjpHbG9iYWxPYmplY3QpOgor
ICAgICAgICAqIHJ1bnRpbWUvQXJnTGlzdC5jcHA6CisgICAgICAgIChKU0M6Ok1hcmtlZEFyZ3Vt
ZW50QnVmZmVyOjptYXJrTGlzdHMpOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzLmNwcDoK
KyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjptYXJrQ2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpB
cmd1bWVudHM6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkFyZ3VtZW50czo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpwdXQp
OgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzLmg6CisgICAgICAgIChKU0M6OkFyZ3VtZW50
czo6c2V0QWN0aXZhdGlvbik6CisgICAgICAgIChKU0M6OkFyZ3VtZW50czo6QXJndW1lbnRzKToK
KyAgICAgICAgKiBydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpB
cnJheUNvbnN0cnVjdG9yOjpBcnJheUNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6Y29uc3Ry
dWN0QXJyYXlXaXRoU2l6ZVF1aXJrKToKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBl
LmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNTcGxpY2UpOgorICAgICAgICAqIHJ1
bnRpbWUvQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaDoKKyAgICAgICAgKEpTQzo6QmF0Y2hl
ZFRyYW5zaXRpb25PcHRpbWl6ZXI6OkJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyKToKKyAgICAg
ICAgKEpTQzo6QmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXI6On5CYXRjaGVkVHJhbnNpdGlvbk9w
dGltaXplcik6CisgICAgICAgICogcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3IuY3BwOgorICAg
ICAgICAoSlNDOjpCb29sZWFuQ29uc3RydWN0b3I6OkJvb2xlYW5Db25zdHJ1Y3Rvcik6CisgICAg
ICAgIChKU0M6OmNvbnN0cnVjdEJvb2xlYW4pOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RCb29s
ZWFuRnJvbUltbWVkaWF0ZUJvb2xlYW4pOgorICAgICAgICAqIHJ1bnRpbWUvQm9vbGVhblByb3Rv
dHlwZS5jcHA6CisgICAgICAgIChKU0M6OkJvb2xlYW5Qcm90b3R5cGU6OkJvb2xlYW5Qcm90b3R5
cGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29uc2VydmF0aXZlU2V0LmNwcDoKKyAgICAgICAgKEpT
Qzo6Q29uc2VydmF0aXZlU2V0Ojpncm93KToKKyAgICAgICAgKiBydW50aW1lL0NvbnNlcnZhdGl2
ZVNldC5oOgorICAgICAgICAoSlNDOjpDb25zZXJ2YXRpdmVTZXQ6On5Db25zZXJ2YXRpdmVTZXQp
OgorICAgICAgICAoSlNDOjpDb25zZXJ2YXRpdmVTZXQ6Om1hcmspOgorICAgICAgICAqIHJ1bnRp
bWUvRGF0ZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6RGF0ZUNvbnN0cnVjdG9yOjpE
YXRlQ29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZUluc3RhbmNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6RGF0ZUluc3RhbmNlOjpEYXRlSW5zdGFuY2UpOgorICAgICAgICAqIHJ1bnRp
bWUvRGF0ZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNTZXRUaW1l
KToKKyAgICAgICAgKEpTQzo6c2V0TmV3VmFsdWVGcm9tVGltZUFyZ3MpOgorICAgICAgICAoSlND
OjpzZXROZXdWYWx1ZUZyb21EYXRlQXJncyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNT
ZXRZZWFyKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpFcnJvckNvbnN0cnVjdG9yOjpFcnJvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBy
dW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpFcnJvckluc3RhbmNlOjpF
cnJvckluc3RhbmNlKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6RXJyb3JQcm90b3R5cGU6OkVycm9yUHJvdG90eXBlKToKKyAgICAgICAgKiBy
dW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNv
bnN0cnVjdG9yOjpGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0
aW9uUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Qcm90b3R5cGU6OkZ1bmN0
aW9uUHJvdG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL0dldHRlclNldHRlci5jcHA6CisgICAg
ICAgIChKU0M6OkdldHRlclNldHRlcjo6bWFya0NoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1l
L0dldHRlclNldHRlci5oOgorICAgICAgICAoSlNDOjpHZXR0ZXJTZXR0ZXI6OkdldHRlclNldHRl
cik6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlcjo6Z2V0dGVyKToKKyAgICAgICAgKEpTQzo6
R2V0dGVyU2V0dGVyOjpzZXRHZXR0ZXIpOgorICAgICAgICAoSlNDOjpHZXR0ZXJTZXR0ZXI6OnNl
dHRlcik6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlcjo6c2V0U2V0dGVyKToKKyAgICAgICAg
KiBydW50aW1lL0dsb2JhbEV2YWxGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6Okdsb2JhbEV2
YWxGdW5jdGlvbjo6R2xvYmFsRXZhbEZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6R2xvYmFsRXZh
bEZ1bmN0aW9uOjptYXJrQ2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvR2xvYmFsRXZhbEZ1
bmN0aW9uLmg6CisgICAgICAgIChKU0M6Okdsb2JhbEV2YWxGdW5jdGlvbjo6Y2FjaGVkR2xvYmFs
T2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFw
OjptYXJrUHJvdGVjdGVkT2JqZWN0cyk6CisgICAgICAgIChKU0M6OkhlYXA6Om1hcmtUZW1wU29y
dFZlY3RvcnMpOgorICAgICAgICAoSlNDOjpIZWFwOjptYXJrUm9vdHMpOgorICAgICAgICAqIHJ1
bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkludGVybmFsRnVuY3Rp
b246OkludGVybmFsRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNBUElWYWx1ZVdyYXBw
ZXIuaDoKKyAgICAgICAgKEpTQzo6SlNBUElWYWx1ZVdyYXBwZXI6OnZhbHVlKToKKyAgICAgICAg
KEpTQzo6SlNBUElWYWx1ZVdyYXBwZXI6OkpTQVBJVmFsdWVXcmFwcGVyKToKKyAgICAgICAgKiBy
dW50aW1lL0pTQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6bWFy
a0NoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpwdXQpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OkpTQXJyYXkpOgor
ICAgICAgICAoSlNDOjpKU0FycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlND
OjpKU0FycmF5OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoSlNDOjpKU0Fy
cmF5OjpwdXQpOgorICAgICAgICAoSlNDOjpKU0FycmF5OjpwdXRTbG93Q2FzZSk6CisgICAgICAg
IChKU0M6OkpTQXJyYXk6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6
aW5jcmVhc2VWZWN0b3JMZW5ndGgpOgorICAgICAgICAoSlNDOjpKU0FycmF5OjpzZXRMZW5ndGgp
OgorICAgICAgICAoSlNDOjpKU0FycmF5Ojpwb3ApOgorICAgICAgICAoSlNDOjpKU0FycmF5Ojpw
dXNoKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6dW5zaGlmdENvdW50KToKKyAgICAgICAgKEpT
Qzo6SlNBcnJheTo6c29ydCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmZpbGxBcmdMaXN0KToK
KyAgICAgICAgKEpTQzo6SlNBcnJheTo6Y29weVRvUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6
SlNBcnJheTo6Y29tcGFjdEZvclNvcnRpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5o
OgorICAgICAgICAoSlNDOjpKU0FycmF5OjpnZXRJbmRleCk6CisgICAgICAgIChKU0M6OkpTQXJy
YXk6OnNldEluZGV4KToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6dW5jaGVja2VkU2V0SW5kZXgp
OgorICAgICAgICAoSlNDOjpKU0FycmF5OjptYXJrQ2hpbGRyZW5EaXJlY3QpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNCeXRlQXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpKU0J5dGVBcnJheTo6SlNC
eXRlQXJyYXkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgIChKU0M6OkpT
Q2VsbDo6SlNWYWx1ZTo6dG9UaGlzT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpNYXJr
U3RhY2s6OmFwcGVuZCk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNGdW5jdGlvbjo6SlNGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTRnVuY3Rp
b246OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEu
aDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6
bWFya0lmTmVlZGVkKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJlc2V0KToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJlc2V0UHJvdG90eXBlKToKKyAgICAgICAgKEpT
Qzo6SlNHbG9iYWxPYmplY3Q6Om1hcmtDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6SlNHbG9iYWxPYmpl
Y3REYXRhOjpKU0dsb2JhbE9iamVjdERhdGEpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVj
dDo6cmVnRXhwQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6ZXJy
b3JDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpldmFsRXJyb3JD
b25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyYW5nZUVycm9yQ29u
c3RydWN0b3IpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVmZXJlbmNlRXJyb3JD
b25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpzeW50YXhFcnJvckNv
bnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnR5cGVFcnJvckNvbnN0
cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OlVSSUVycm9yQ29uc3RydWN0
b3IpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6ZXZhbEZ1bmN0aW9uKToKKyAgICAg
ICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om9iamVjdFByb3RvdHlwZSk6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0OjpmdW5jdGlvblByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0OjphcnJheVByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
Ojpib29sZWFuUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnN0cmlu
Z1Byb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpudW1iZXJQcm90b3R5
cGUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6ZGF0ZVByb3RvdHlwZSk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZWdFeHBQcm90b3R5cGUpOgorICAgICAgICAoSlND
OjpKU0dsb2JhbE9iamVjdDo6bWV0aG9kQ2FsbER1bW15KToKKyAgICAgICAgKEpTQzo6U3RydWN0
dXJlOjpwcm90b3R5cGVGb3JMb29rdXApOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RBcnJheSk6
CisgICAgICAgICogcnVudGltZS9KU09OT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5n
aWZpZXI6OkhvbGRlcjo6b2JqZWN0KToKKyAgICAgICAgKEpTQzo6U3RyaW5naWZpZXI6Om1hcmtB
Z2dyZWdhdGUpOgorICAgICAgICAoSlNDOjpTdHJpbmdpZmllcjo6c3RyaW5naWZ5KToKKyAgICAg
ICAgKEpTQzo6U3RyaW5naWZpZXI6OkhvbGRlcjo6YXBwZW5kTmV4dFByb3BlcnR5KToKKyAgICAg
ICAgKEpTQzo6V2Fsa2VyOjpjYWxsUmV2aXZlcik6CisgICAgICAgIChKU0M6OldhbGtlcjo6d2Fs
ayk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpkZWZpbmVHZXR0ZXIpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZGVmaW5lU2V0dGVy
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnJlbW92ZURpcmVjdCk6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpwdXREaXJlY3RGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpw
dXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6cHV0RGVz
Y3JpcHRvcik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eSk6Cisg
ICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0
RGlyZWN0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdE9mZnNldCk6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpmbGF0dGVuRGljdGlvbmFyeU9iamVjdCk6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjpwdXREaXJlY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0RnVu
Y3Rpb24pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJh
bnNpdGlvbik6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnB1dERpcmVjdCk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjphbGxvY2F0ZVByb3BlcnR5U3RvcmFnZUlubGluZSk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjptYXJrQ2hpbGRyZW5EaXJlY3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlOYW1lSXRl
cmF0b3I6OkpTUHJvcGVydHlOYW1lSXRlcmF0b3IpOgorICAgICAgICAoSlNDOjpKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yOjpnZXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5jcHA6CisgICAg
ICAgIChKU0M6OkpTU3RhdGljU2NvcGVPYmplY3Q6Om1hcmtDaGlsZHJlbik6CisgICAgICAgICog
cnVudGltZS9KU1N0cmluZy5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ09iamVjdDo6Y3JlYXRl
KToKKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTV3Jh
cHBlck9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTV3JhcHBlck9iamVjdDo6bWFya0NoaWxk
cmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTV3JhcHBlck9iamVjdC5oOgorICAgICAgICAoSlND
OjpKU1dyYXBwZXJPYmplY3Q6OmludGVybmFsVmFsdWUpOgorICAgICAgICAoSlNDOjpKU1dyYXBw
ZXJPYmplY3Q6OnNldEludGVybmFsVmFsdWUpOgorICAgICAgICAqIHJ1bnRpbWUvTGl0ZXJhbFBh
cnNlci5jcHA6CisgICAgICAgIChKU0M6OkxpdGVyYWxQYXJzZXI6OnBhcnNlKToKKyAgICAgICAg
KiBydW50aW1lL0xvb2t1cC5jcHA6CisgICAgICAgIChKU0M6OnNldFVwU3RhdGljRnVuY3Rpb25T
bG90KToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5oOgorICAgICAgICAoSlNDOjpsb29rdXBQ
dXQpOgorICAgICAgICAqIHJ1bnRpbWUvTWFya1N0YWNrLmg6CisgICAgICAgIChKU0M6Ok1hcmtT
dGFjazo6YXBwZW5kVmFsdWVzKToKKyAgICAgICAgKiBydW50aW1lL01hdGhPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpNYXRoT2JqZWN0OjpNYXRoT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1l
L05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpOYXRpdmVFcnJvckNv
bnN0cnVjdG9yOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL05h
dGl2ZUVycm9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRXJyb3JQcm90b3R5
cGU6Ok5hdGl2ZUVycm9yUHJvdG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL051bWJlckNvbnN0
cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6TnVtYmVyQ29uc3RydWN0b3I6Ok51bWJlckNvbnN0
cnVjdG9yKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0V2l0aE51bWJlckNvbnN0cnVjdG9yKToK
KyAgICAgICAgKiBydW50aW1lL051bWJlck9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0
cnVjdE51bWJlcik6CisgICAgICAgICogcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpOdW1iZXJQcm90b3R5cGU6Ok51bWJlclByb3RvdHlwZSk6CisgICAgICAgICog
cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Ok9iamVjdENvbnN0
cnVjdG9yOjpPYmplY3RDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVj
dG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKiBydW50aW1lL09wZXJhdGlv
bnMuaDoKKyAgICAgICAgKEpTQzo6bm9ybWFsaXplUHJvdG90eXBlQ2hhaW4pOgorICAgICAgICAo
SlNDOjpyZXNvbHZlQmFzZSk6CisgICAgICAgICogcnVudGltZS9Qcm90b3R5cGVGdW5jdGlvbi5j
cHA6CisgICAgICAgIChKU0M6OlByb3RvdHlwZUZ1bmN0aW9uOjpQcm90b3R5cGVGdW5jdGlvbik6
CisgICAgICAgICogcnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaDoKKyAgICAgICAgKEpTQzo6UHV0
UHJvcGVydHlTbG90OjpzZXRFeGlzdGluZ1Byb3BlcnR5KToKKyAgICAgICAgKEpTQzo6UHV0UHJv
cGVydHlTbG90OjpzZXROZXdQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlB1dFByb3BlcnR5U2xv
dDo6YmFzZSk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHA6CisgICAg
ICAgIChKU0M6OlJlZ0V4cENvbnN0cnVjdG9yOjpSZWdFeHBDb25zdHJ1Y3Rvcik6CisgICAgICAg
ICogcnVudGltZS9TY29wZUNoYWluLmNwcDoKKyAgICAgICAgKEpTQzo6U2NvcGVDaGFpbk5vZGU6
OnByaW50KToKKyAgICAgICAgKiBydW50aW1lL1Njb3BlQ2hhaW4uaDoKKyAgICAgICAgKEpTQzo6
U2NvcGVDaGFpbk5vZGU6On5TY29wZUNoYWluTm9kZSk6CisgICAgICAgIChKU0M6OlNjb3BlQ2hh
aW5JdGVyYXRvcjo6b3BlcmF0b3IqKToKKyAgICAgICAgKEpTQzo6U2NvcGVDaGFpbkl0ZXJhdG9y
OjpvcGVyYXRvci0+KToKKyAgICAgICAgKEpTQzo6U2NvcGVDaGFpbjo6dG9wKToKKyAgICAgICAg
KiBydW50aW1lL1Njb3BlQ2hhaW5NYXJrLmg6CisgICAgICAgIChKU0M6OlNjb3BlQ2hhaW46Om1h
cmtBZ2dyZWdhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvU21hbGxTdHJpbmdzLmNwcDoKKyAgICAg
ICAgKEpTQzo6aXNNYXJrZWQpOgorICAgICAgICAoSlNDOjpTbWFsbFN0cmluZ3M6Om1hcmtDaGls
ZHJlbik6CisgICAgICAgICogcnVudGltZS9TbWFsbFN0cmluZ3MuaDoKKyAgICAgICAgKEpTQzo6
U21hbGxTdHJpbmdzOjplbXB0eVN0cmluZyk6CisgICAgICAgIChKU0M6OlNtYWxsU3RyaW5nczo6
c2luZ2xlQ2hhcmFjdGVyU3RyaW5nKToKKyAgICAgICAgKEpTQzo6U21hbGxTdHJpbmdzOjpzaW5n
bGVDaGFyYWN0ZXJTdHJpbmdzKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5nQ29uc3RydWN0b3I6OlN0cmluZ0NvbnN0cnVjdG9y
KToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlN0
cmluZ09iamVjdDo6U3RyaW5nT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ09iamVj
dC5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpT
Qzo6U3RyaW5nUHJvdG90eXBlOjpTdHJpbmdQcm90b3R5cGUpOgorICAgICAgICAqIHJ1bnRpbWUv
U3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpTdHJ1Y3R1cmUpOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbik6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZTo6dG9EaWN0aW9uYXJ5VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6ZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUv
U3RydWN0dXJlLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6c3RvcmVkUHJvdG90eXBlKToK
KyAgICAgICAgKiBydW50aW1lL1dlYWtHQ01hcC5oOgorICAgICAgICAoSlNDOjpXZWFrR0NNYXA6
OnVuY2hlY2tlZEdldCk6CisgICAgICAgIChKU0M6OldlYWtHQ01hcDo6aXNWYWxpZCk6CisgICAg
ICAgIChKU0M6Ojo6Z2V0KToKKyAgICAgICAgKEpTQzo6Ojp0YWtlKToKKyAgICAgICAgKEpTQzo6
OjpzZXQpOgorICAgICAgICAoSlNDOjo6OnVuY2hlY2tlZFJlbW92ZSk6CisgICAgICAgICogcnVu
dGltZS9Xcml0ZUJhcnJpZXIuaDogUmVtb3ZlZC4KKwogMjAxMS0wMS0yOCAgR2F2aW4gQmFycmFj
bG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2Vv
ZmYgR2FyZW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUuZXhwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAppbmRleCA5
ODJhZTE5ZWM4NzM3MjBkMzk1YmNlNmQ3NWRjZTJkNjM1OTFkYmYwLi4xOTljMzdmMGMyYjY0MmJm
MWM2OTk0NDM5ZDM5OWFhOWNmNGI1ZDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUuZXhwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS5leHAKQEAgLTE4Myw3ICsxODMsNyBAQCBfX1pOM0pTQzE3Qnl0ZWNvZGVHZW5lcmF0
b3IyMXNldER1bXBzR2VuZXJhdGVkQ29kZUViCiBfX1pOM0pTQzE3UHJvcGVydHlOYW1lQXJyYXkz
YWRkRVBOM1dURjEwU3RyaW5nSW1wbEUKIF9fWk4zSlNDMTdjb25zdHJ1Y3RGdW5jdGlvbkVQTlNf
OUV4ZWNTdGF0ZUVSS05TXzdBcmdMaXN0RVJLTlNfMTBJZGVudGlmaWVyRVJLTlNfN1VTdHJpbmdF
aQogX19aTjNKU0MxN2NyZWF0ZVN5bnRheEVycm9yRVBOU185RXhlY1N0YXRlRVJLTlNfN1VTdHJp
bmdFCi1fX1pOM0pTQzE4RGVidWdnZXJBY3RpdmF0aW9uQzFFUk5TXzEySlNHbG9iYWxEYXRhRVBO
U184SlNPYmplY3RFCitfX1pOM0pTQzE4RGVidWdnZXJBY3RpdmF0aW9uQzFFUE5TXzhKU09iamVj
dEUKIF9fWk4zSlNDMThQcm9wZXJ0eURlc2NyaXB0b3IxMXNldFdyaXRhYmxlRWIKIF9fWk4zSlND
MThQcm9wZXJ0eURlc2NyaXB0b3IxMnNldFVuZGVmaW5lZEV2CiBfX1pOM0pTQzE4UHJvcGVydHlE
ZXNjcmlwdG9yMTNzZXREZXNjcmlwdG9yRU5TXzdKU1ZhbHVlRWoKQEAgLTI1MSw3ICsyNTEsNyBA
QCBfX1pOM0pTQzdKU0FycmF5MThnZXRPd25Qcm9wZXJ0eVNsb3RFUE5TXzlFeGVjU3RhdGVFalJO
U18xMlByb3BlcnR5U2xvdEUKIF9fWk4zSlNDN0pTQXJyYXk0aW5mb0UKIF9fWk4zSlNDN0pTQXJy
YXk5c2V0TGVuZ3RoRWoKIF9fWk4zSlNDN0pTQXJyYXlDMUVOM1dURjE3Tm9uTnVsbFBhc3NSZWZQ
dHJJTlNfOVN0cnVjdHVyZUVFRQotX19aTjNKU0M3SlNBcnJheUMxRVJOU18xMkpTR2xvYmFsRGF0
YUVOM1dURjE3Tm9uTnVsbFBhc3NSZWZQdHJJTlNfOVN0cnVjdHVyZUVFRVJLTlNfN0FyZ0xpc3RF
CitfX1pOM0pTQzdKU0FycmF5QzFFTjNXVEYxN05vbk51bGxQYXNzUmVmUHRySU5TXzlTdHJ1Y3R1
cmVFRUVSS05TXzdBcmdMaXN0RQogX19aTjNKU0M3SlNBcnJheUMyRU4zV1RGMTdOb25OdWxsUGFz
c1JlZlB0cklOU185U3RydWN0dXJlRUVFCiBfX1pOM0pTQzdKU0FycmF5RDJFdgogX19aTjNKU0M3
SlNWYWx1ZTEzaXNWYWxpZENhbGxlZUV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRl
ZiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCmluZGV4IDUzMmNjZmUwOGY2MzgxNTFhMjkwNDIyZTBk
ODJlNjFmMDczMzc4MzguLmY4Nzg2YjUyZjJhMTgwZDdhNDVhYTRlMGNmNGQxMjFlYmQ4MTYzMGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ov
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
ZGVmCkBAIC0xMCw3ICsxMCw3IEBAIEVYUE9SVFMKICAgICA/PzBEeW5hbWljR2xvYmFsT2JqZWN0
U2NvcGVASlNDQEBRQUVAUEFWRXhlY1N0YXRlQDFAUEFWSlNHbG9iYWxPYmplY3RAMUBAWgogICAg
ID8/MEludGVybmFsRnVuY3Rpb25ASlNDQEBJQUVAUEFWSlNHbG9iYWxEYXRhQDFAUEFWSlNHbG9i
YWxPYmplY3RAMUBWPyROb25OdWxsUGFzc1JlZlB0ckBWU3RydWN0dXJlQEpTQ0BAQFdURkBAQUJW
SWRlbnRpZmllckAxQEBaCiAgICAgPz8wSlNBcnJheUBKU0NAQFFBRUBWPyROb25OdWxsUGFzc1Jl
ZlB0ckBWU3RydWN0dXJlQEpTQ0BAQFdURkBAQFoKLSAgICA/PzBKU0FycmF5QEpTQ0BAUUFFQEFB
VkpTR2xvYmFsRGF0YUAxQFY/JE5vbk51bGxQYXNzUmVmUHRyQFZTdHJ1Y3R1cmVASlNDQEBAV1RG
QEBBQlZBcmdMaXN0QDFAQFogIAorICAgID8/MEpTQXJyYXlASlNDQEBRQUVAVj8kTm9uTnVsbFBh
c3NSZWZQdHJAVlN0cnVjdHVyZUBKU0NAQEBXVEZAQEFCVkFyZ0xpc3RAMUBAWgogICAgID8/MEpT
Qnl0ZUFycmF5QEpTQ0BAUUFFQFBBVkV4ZWNTdGF0ZUAxQFY/JE5vbk51bGxQYXNzUmVmUHRyQFZT
dHJ1Y3R1cmVASlNDQEBAV1RGQEBQQVZCeXRlQXJyYXlANEBQQlVDbGFzc0luZm9AMUBAWgogICAg
ID8/MEpTRnVuY3Rpb25ASlNDQEBRQUVAUEFWRXhlY1N0YXRlQDFAUEFWSlNHbG9iYWxPYmplY3RA
MUBWPyROb25OdWxsUGFzc1JlZlB0ckBWU3RydWN0dXJlQEpTQ0BAQFdURkBASEFCVklkZW50aWZp
ZXJAMUBQNklfSjBAWkBaCiAgICAgPz8wSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0QEpTQ0BASUFF
QFBBVkpTR2xvYmFsT2JqZWN0QDFAVj8kTm9uTnVsbFBhc3NSZWZQdHJAVlN0cnVjdHVyZUBKU0NA
QEBXVEZAQEBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDA5ODVlMWU5ODk1NTVi
NWU1ZTcwZmY4YzJlZDZkMzZhMTRiZTgzMjUuLmFlMzVmNmVhOTcyZWQ3MTA1NDBlZmRhMDRlYTg2
YjU0M2QzNmI4YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNzIsNyArMzcy
LDYgQEAKIAkJQTdDMUU4RTQxMTJFNzJFRjAwQTM3Rjk4IC8qIEpJVFByb3BlcnR5QWNjZXNzMzJf
NjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdD
MUU4QzgxMTJFNzAxQzAwQTM3Rjk4IC8qIEpJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwICovOyB9
OwogCQlBN0M1MzBFNDEwMkEzODEzMDA1QkM3NDEgLyogTWFya1N0YWNrUG9zaXguY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdDNTMwRTMxMDJBMzgx
MzAwNUJDNzQxIC8qIE1hcmtTdGFja1Bvc2l4LmNwcCAqLzsgfTsKIAkJQTdENjQ5QUExMDE1MjI0
RTAwOUIyRTFCIC8qIFBvc3NpYmx5TnVsbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTdENjQ5QTkxMDE1MjI0RTAwOUIyRTFCIC8qIFBvc3NpYmx5TnVs
bC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUE3
RENCOTczMTJFNTE5M0YwMDkxMTk0MCAvKiBXcml0ZUJhcnJpZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RENCNzc5MTJFM0Q5MDUwMDkxMTk0MCAv
KiBXcml0ZUJhcnJpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlBN0UyRUE2QjBGQjQ2MENGMDA2MDFGMDYgLyogTGl0ZXJhbFBhcnNlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdFMkVBNjkwRkI0
NjBDRjAwNjAxRjA2IC8qIExpdGVyYWxQYXJzZXIuaCAqLzsgfTsKIAkJQTdFMkVBNkMwRkI0NjBD
RjAwNjAxRjA2IC8qIExpdGVyYWxQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTdFMkVBNkEwRkI0NjBDRjAwNjAxRjA2IC8qIExpdGVyYWxQ
YXJzZXIuY3BwICovOyB9OwogCQlBN0YxOUVDRTExREQ0OTA5MDA5MzFFNzAgLyogRml4ZWRBcnJh
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdGMTlF
Q0QxMURENDkwOTAwOTMxRTcwIC8qIEZpeGVkQXJyYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTA0Myw3ICsxMDQyLDYgQEAKIAkJQTdDMUU4
QzgxMTJFNzAxQzAwQTM3Rjk4IC8qIEpJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3QzUzMEUzMTAyQTM4MTMwMDVCQzc0MSAv
KiBNYXJrU3RhY2tQb3NpeC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBNYXJrU3RhY2tQb3NpeC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3RDY0
OUE5MTAxNTIyNEUwMDlCMkUxQiAvKiBQb3NzaWJseU51bGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUG9zc2libHlOdWxsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUE3RENCNzc5MTJFM0Q5MDUwMDkxMTk0MCAvKiBXcml0ZUJhcnJpZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV3JpdGVCYXJyaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE3RTJFQTY5MEZCNDYwQ0YwMDYwMUYwNiAvKiBMaXRlcmFsUGFyc2VyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpdGVyYWxQYXJzZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdFMkVBNkEwRkI0NjBDRjAwNjAxRjA2IC8qIExpdGVy
YWxQYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGl0ZXJh
bFBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3RTQyQzE4MEUzOTM4
ODMwMDY1QTU0NCAvKiBKU1N0YXRpY1Njb3BlT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTU3RhdGljU2NvcGVPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE5MDYsNyArMTkwNCw2IEBACiAJCQkJMTRCRkNFNjgxMENEQjFGQzAwMzY0Q0NF
IC8qIFdlYWtHQ01hcC5oICovLAogCQkJCTE0MDM1REIwMTBEQkZCMkEwMEZGRkZFNyAvKiBXZWFr
R0NQdHIuaCAqLywKIAkJCQkxNDIwQkU3QTEwQUE2RERCMDBGNDU1RDIgLyogV2Vha1JhbmRvbS5o
ICovLAotCQkJCUE3RENCNzc5MTJFM0Q5MDUwMDkxMTk0MCAvKiBXcml0ZUJhcnJpZXIuaCAqLywK
IAkJCSk7CiAJCQlwYXRoID0gcnVudGltZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBA
IC0yNDMwLDcgKzI0MjcsNiBAQAogCQkJCTg2NzA0QjQzMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJy
U3ludGF4Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNURFNkU1QjMwRTE3MjhFQzAwMTgw
NDA3IC8qIGNyZWF0ZV9oYXNoX3RhYmxlIGluIEhlYWRlcnMgKi8sCiAJCQkJNDUxNTM5QjkxMkRD
OTk0NTAwRUY3QUM0IC8qIFlhcnIuaCBpbiBIZWFkZXJzICovLAotCQkJCUE3RENCOTczMTJFNTE5
M0YwMDkxMTk0MCAvKiBXcml0ZUJhcnJpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0OURDMTZD
MTJFRjI5NEUwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFNDlEQzE2RDEyRUYyOTUzMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0u
aCBpbiBIZWFkZXJzICovLAogCQkJKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAKaW5kZXggYjQxNzM4MjllMjRmNzc1MzZkZjk4MWRkOTVkYmYyMDYyZTc5
NTQ0ZS4uZjNmNWYyNzFhZTIzZmViZTAyOGRhMzc3YjY4ZWM2NjkyMmQyM2FlYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTE1MjksMTIgKzE1
MjksMTIgQEAgdm9pZCBDb2RlQmxvY2s6OnJlZlN0cnVjdHVyZXMoSW5zdHJ1Y3Rpb24qIHZQQykg
Y29uc3QKIHZvaWQgQ29kZUJsb2NrOjptYXJrQWdncmVnYXRlKE1hcmtTdGFjayYgbWFya1N0YWNr
KQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jb25zdGFudFJlZ2lzdGVycy5zaXpl
KCk7ICsraSkKLSAgICAgICAgbWFya1N0YWNrLmRlcHJlY2F0ZWRBcHBlbmQoJm1fY29uc3RhbnRS
ZWdpc3RlcnNbaV0pOworICAgICAgICBtYXJrU3RhY2suYXBwZW5kKG1fY29uc3RhbnRSZWdpc3Rl
cnNbaV0uanNWYWx1ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZnVuY3Rpb25F
eHBycy5zaXplKCk7ICsraSkKICAgICAgICAgbV9mdW5jdGlvbkV4cHJzW2ldLT5tYXJrQWdncmVn
YXRlKG1hcmtTdGFjayk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Z1bmN0aW9uRGVj
bHMuc2l6ZSgpOyArK2kpCiAgICAgICAgIG1fZnVuY3Rpb25EZWNsc1tpXS0+bWFya0FnZ3JlZ2F0
ZShtYXJrU3RhY2spOwotICAgIG1hcmtTdGFjay5hcHBlbmQoJm1fZ2xvYmFsT2JqZWN0KTsKKyAg
ICBtYXJrU3RhY2suYXBwZW5kKG1fZ2xvYmFsT2JqZWN0KTsKIH0KIAogSGFuZGxlckluZm8qIENv
ZGVCbG9jazo6aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IGFkMmVm
YTY2OGQwMDM2YmJmZmQ3ZTU1MzdlMDRiMDdkY2U1MmQxOTcuLjFjZDA4NjM2MDhlNGVmMDI0NjY5
YThmYzZiNjAxNzAyZGY4ZjQxMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmgKQEAgLTI0OCw3ICsyNDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcm90
ZWN0ZWQ6CiAgICAgICAgIENvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFi
bGUsIENvZGVUeXBlLCBKU0dsb2JhbE9iamVjdCosIFBhc3NSZWZQdHI8U291cmNlUHJvdmlkZXI+
LCB1bnNpZ25lZCBzb3VyY2VPZmZzZXQsIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSwgYm9vbCBp
c0NvbnN0cnVjdG9yKTsKIAotICAgICAgICBEZXByZWNhdGVkUHRyPEpTR2xvYmFsT2JqZWN0PiBt
X2dsb2JhbE9iamVjdDsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIG1fZ2xvYmFsT2JqZWN0Owog
CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5Db2RlQmxvY2soKTsKQEAgLTQ4NSw3ICs0
ODUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdW5zaWduZWQgYWRkUmVnRXhwKFJlZ0V4
cCogcikgeyBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7IHVuc2lnbmVkIHNpemUgPSBtX3Jh
cmVEYXRhLT5tX3JlZ2V4cHMuc2l6ZSgpOyBtX3JhcmVEYXRhLT5tX3JlZ2V4cHMuYXBwZW5kKHIp
OyByZXR1cm4gc2l6ZTsgfQogICAgICAgICBSZWdFeHAqIHJlZ2V4cChpbnQgaW5kZXgpIGNvbnN0
IHsgQVNTRVJUKG1fcmFyZURhdGEpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9yZWdleHBzW2luZGV4
XS5nZXQoKTsgfQogCi0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKSB7IHJl
dHVybiBtX2dsb2JhbE9iamVjdC5nZXQoKTsgfQorICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KCkgeyByZXR1cm4gbV9nbG9iYWxPYmplY3Q7IH0KIAogICAgICAgICAvLyBKdW1w
IFRhYmxlcwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDA5NjQzNDQ4MDNhMTBkZGQyMWYyMmQ2MTVl
YzRkZGRiYjhiODE0MTkuLjc4YzM3M2E2YWU1NWE2ZDQ4ZjIyNTBhNDY4ZDBlMDY2ODMwMzE2MGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0yNTEsNyArMjUxLDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6
OkJ5dGVjb2RlR2VuZXJhdG9yKFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSwgY29uc3QgU2NvcGVD
aGFpbiYKICAgICBmb3IgKFN5bWJvbFRhYmxlOjppdGVyYXRvciBpdCA9IHN5bWJvbFRhYmxlLT5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCiAgICAgICAgIHJlZ2lzdGVyRm9yKGl0LT5zZWNvbmQu
Z2V0SW5kZXgoKSkuc2V0SW5kZXgoaXQtPnNlY29uZC5nZXRJbmRleCgpICsgbV9nbG9iYWxWYXJT
dG9yYWdlT2Zmc2V0KTsKICAgICAgICAgCi0gICAgQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIg
b3B0aW1pemVyKCptX2dsb2JhbERhdGEsIGdsb2JhbE9iamVjdCk7CisgICAgQmF0Y2hlZFRyYW5z
aXRpb25PcHRpbWl6ZXIgb3B0aW1pemVyKGdsb2JhbE9iamVjdCk7CiAKICAgICBjb25zdCBWYXJT
dGFjayYgdmFyU3RhY2sgPSBwcm9ncmFtTm9kZS0+dmFyU3RhY2soKTsKICAgICBjb25zdCBGdW5j
dGlvblN0YWNrJiBmdW5jdGlvblN0YWNrID0gcHJvZ3JhbU5vZGUtPmZ1bmN0aW9uU3RhY2soKTsK
QEAgLTkwMyw3ICs5MDMsNyBAQCBQYXNzUmVmUHRyPExhYmVsPiBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQ2FsbChSZWdpc3RlcklEKiBjb25kLAogCiAgICAgZW1pdE9w
Y29kZShvcF9qbmVxX3B0cik7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNvbmQtPmluZGV4
KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX3Njb3BlQ2hhaW4tPmdsb2JhbE9iamVj
dCgpLT5kKCktPmNhbGxGdW5jdGlvbi5nZXQoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KG1fc2NvcGVDaGFpbi0+Z2xvYmFsT2JqZWN0KCktPmQoKS0+Y2FsbEZ1bmN0aW9uKTsKICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQodGFyZ2V0LT5iaW5kKGJlZ2luLCBpbnN0cnVjdGlvbnMoKS5z
aXplKCkpKTsKICAgICByZXR1cm4gdGFyZ2V0OwogfQpAQCAtOTE0LDcgKzkxNCw3IEBAIFBhc3NS
ZWZQdHI8TGFiZWw+IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SnVtcElmTm90RnVuY3Rpb25BcHBs
eShSZWdpc3RlcklEKiBjb25kCiAKICAgICBlbWl0T3Bjb2RlKG9wX2puZXFfcHRyKTsKICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoY29uZC0+aW5kZXgoKSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKG1fc2NvcGVDaGFpbi0+Z2xvYmFsT2JqZWN0KCktPmQoKS0+YXBwbHlGdW5jdGlvbi5n
ZXQoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fc2NvcGVDaGFpbi0+Z2xvYmFsT2Jq
ZWN0KCktPmQoKS0+YXBwbHlGdW5jdGlvbik7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRh
cmdldC0+YmluZChiZWdpbiwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKSk7CiAgICAgcmV0dXJuIHRh
cmdldDsKIH0KQEAgLTExMTcsNyArMTExNyw3IEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmZp
bmRTY29wZWRQcm9wZXJ0eShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgaW50JiBpbmRlCiAK
ICAgICAgICAgaWYgKHNob3VsZE9wdGltaXplTG9jYWxzKCkgJiYgbV9jb2RlVHlwZSA9PSBHbG9i
YWxDb2RlKSB7CiAgICAgICAgICAgICBTY29wZUNoYWluSXRlcmF0b3IgaXRlciA9IG1fc2NvcGVD
aGFpbi0+YmVnaW4oKTsKLSAgICAgICAgICAgIGdsb2JhbE9iamVjdCA9IGl0ZXItPmdldCgpOwor
ICAgICAgICAgICAgZ2xvYmFsT2JqZWN0ID0gKml0ZXI7CiAgICAgICAgICAgICBBU1NFUlQoKCsr
aXRlcikgPT0gbV9zY29wZUNoYWluLT5lbmQoKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMTEyOCw3ICsxMTI4LDcgQEAgYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6Zmlu
ZFNjb3BlZFByb3BlcnR5KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBpbnQmIGluZGUKICAg
ICBTY29wZUNoYWluSXRlcmF0b3IgaXRlciA9IG1fc2NvcGVDaGFpbi0+YmVnaW4oKTsKICAgICBT
Y29wZUNoYWluSXRlcmF0b3IgZW5kID0gbV9zY29wZUNoYWluLT5lbmQoKTsKICAgICBmb3IgKDsg
aXRlciAhPSBlbmQ7ICsraXRlciwgKytkZXB0aCkgewotICAgICAgICBKU09iamVjdCogY3VycmVu
dFNjb3BlID0gaXRlci0+Z2V0KCk7CisgICAgICAgIEpTT2JqZWN0KiBjdXJyZW50U2NvcGUgPSAq
aXRlcjsKICAgICAgICAgaWYgKCFjdXJyZW50U2NvcGUtPmlzVmFyaWFibGVPYmplY3QoKSkKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBKU1ZhcmlhYmxlT2JqZWN0KiBjdXJyZW50VmFyaWFi
bGVPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1ZhcmlhYmxlT2JqZWN0Kj4oY3VycmVudFNjb3BlKTsK
QEAgLTExNTcsNyArMTE1Nyw3IEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmZpbmRTY29wZWRQ
cm9wZXJ0eShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgaW50JiBpbmRlCiAgICAgLy8gQ2Fu
J3QgbG9jYXRlIHRoZSBwcm9wZXJ0eSBidXQgd2UncmUgYWJsZSB0byBhdm9pZCBhIGZldyBsb29r
dXBzLgogICAgIHN0YWNrRGVwdGggPSBkZXB0aCArIG1fY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29w
ZUNoYWluKCk7CiAgICAgaW5kZXggPSBtaXNzaW5nU3ltYm9sTWFya2VyKCk7Ci0gICAgSlNPYmpl
Y3QqIHNjb3BlID0gaXRlci0+Z2V0KCk7CisgICAgSlNPYmplY3QqIHNjb3BlID0gKml0ZXI7CiAg
ICAgaWYgKCsraXRlciA9PSBlbmQpCiAgICAgICAgIGdsb2JhbE9iamVjdCA9IHNjb3BlOwogICAg
IHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2Vy
L0RlYnVnZ2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5j
cHAKaW5kZXggZTIxZDYxZDNmYzZhZTg4YjUwOTU0NGI5MzExNThkYmNlNWIzNDU2OC4uMjNiOTM2
MTE4NmM2MDFhMzk3ZDEyNmVlN2I3NTNhODA0ODU1NzMyYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgSlNWYWx1ZSBl
dmFsdWF0ZUluR2xvYmFsQ2FsbEZyYW1lKGNvbnN0IFVTdHJpbmcmIHNjcmlwdCwgSlNWYWx1ZSYg
ZXhjZXB0aW9uLCBKU0cKICAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBnbG9iYWxPYmpl
Y3QtPmdsb2JhbERhdGEoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGdsb2JhbERhdGEuaW50ZXJw
cmV0ZXItPmV4ZWN1dGUoZXZhbC5nZXQoKSwgZ2xvYmFsQ2FsbEZyYW1lLCBnbG9iYWxPYmplY3Qs
IGdsb2JhbENhbGxGcmFtZS0+c2NvcGVDaGFpbigpKTsKICAgICBpZiAoZ2xvYmFsRGF0YS5leGNl
cHRpb24pIHsKLSAgICAgICAgZXhjZXB0aW9uID0gZ2xvYmFsRGF0YS5leGNlcHRpb24uZ2V0KCk7
CisgICAgICAgIGV4Y2VwdGlvbiA9IGdsb2JhbERhdGEuZXhjZXB0aW9uOwogICAgICAgICBnbG9i
YWxEYXRhLmV4Y2VwdGlvbiA9IEpTVmFsdWUoKTsKICAgICB9CiAgICAgQVNTRVJUKHJlc3VsdCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3Rp
dmF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2
YXRpb24uY3BwCmluZGV4IGZjZDI1N2MyZjdiNDg4ZDVlNDc1NGY5ZDRlMWEzNWYzZTQ4MzVmYTUu
LjA0NDRkMjNkMjA0ZjgzMThhMzkyNTU1YzVjNTdjNTY5MDZhM2I5MTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3BwCkBA
IC0zMCwxMiArMzAsMTIgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLURlYnVnZ2VyQWN0aXZhdGlv
bjo6RGVidWdnZXJBY3RpdmF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNPYmplY3Qq
IGFjdGl2YXRpb24pCitEZWJ1Z2dlckFjdGl2YXRpb246OkRlYnVnZ2VyQWN0aXZhdGlvbihKU09i
amVjdCogYWN0aXZhdGlvbikKICAgICA6IEpTT2JqZWN0KERlYnVnZ2VyQWN0aXZhdGlvbjo6Y3Jl
YXRlU3RydWN0dXJlKGpzTnVsbCgpKSkKIHsKICAgICBBU1NFUlQoYWN0aXZhdGlvbik7CiAgICAg
QVNTRVJUKGFjdGl2YXRpb24tPmlzQWN0aXZhdGlvbk9iamVjdCgpKTsKLSAgICBtX2FjdGl2YXRp
b24uc2V0KGdsb2JhbERhdGEsIHRoaXMsIHN0YXRpY19jYXN0PEpTQWN0aXZhdGlvbio+KGFjdGl2
YXRpb24pKTsKKyAgICBtX2FjdGl2YXRpb24gPSBzdGF0aWNfY2FzdDxKU0FjdGl2YXRpb24qPihh
Y3RpdmF0aW9uKTsKIH0KIAogdm9pZCBEZWJ1Z2dlckFjdGl2YXRpb246Om1hcmtDaGlsZHJlbihN
YXJrU3RhY2smIG1hcmtTdGFjaykKQEAgLTQzLDcgKzQzLDcgQEAgdm9pZCBEZWJ1Z2dlckFjdGl2
YXRpb246Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtTdGFjaykKICAgICBKU09iamVjdDo6
bWFya0NoaWxkcmVuKG1hcmtTdGFjayk7CiAKICAgICBpZiAobV9hY3RpdmF0aW9uKQotICAgICAg
ICBtYXJrU3RhY2suYXBwZW5kKCZtX2FjdGl2YXRpb24pOworICAgICAgICBtYXJrU3RhY2suYXBw
ZW5kKG1fYWN0aXZhdGlvbik7CiB9CiAKIFVTdHJpbmcgRGVidWdnZXJBY3RpdmF0aW9uOjpjbGFz
c05hbWUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2Vy
L0RlYnVnZ2VyQWN0aXZhdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0Rl
YnVnZ2VyQWN0aXZhdGlvbi5oCmluZGV4IGI2NDA2MGRjZjg0N2M5YTc3ZTk5YzMxZjQxMzJmZTY5
ODZmNTgyZTguLjM5MjcwMTc0MWJhNzY0YjNmNDQzOTJkYTk5YzcwMDZkY2M1YzRjNWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24u
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9u
LmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBEZWJ1Z2dl
ckFjdGl2YXRpb24gOiBwdWJsaWMgSlNPYmplY3QgewogICAgIHB1YmxpYzoKLSAgICAgICAgRGVi
dWdnZXJBY3RpdmF0aW9uKEpTR2xvYmFsRGF0YSYsIEpTT2JqZWN0Kik7CisgICAgICAgIERlYnVn
Z2VyQWN0aXZhdGlvbihKU09iamVjdCopOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBtYXJrQ2hp
bGRyZW4oTWFya1N0YWNrJik7CiAgICAgICAgIHZpcnR1YWwgVVN0cmluZyBjbGFzc05hbWUoKSBj
b25zdDsKQEAgLTU4LDcgKzU4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xv
dCB8IE92ZXJyaWRlc01hcmtDaGlsZHJlbiB8IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKIAog
ICAgIHByaXZhdGU6Ci0gICAgICAgIFdyaXRlQmFycmllcjxKU0FjdGl2YXRpb24+IG1fYWN0aXZh
dGlvbjsKKyAgICAgICAgSlNBY3RpdmF0aW9uKiBtX2FjdGl2YXRpb247CiAgICAgfTsKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdn
ZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2Vy
L0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAppbmRleCBjYjQ1OTJjYzExYzZjZjQwYzc2MWQ2MGQ3ZjYx
OTJhNTJmMjIyNWM1Li5lZDY3M2NiYWZmYWVhMTAyN2I4MTFjZjU0NDVkZTgxOWYyMDI5ZjU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJh
bWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxG
cmFtZS5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgSlNWYWx1ZSBEZWJ1Z2dlckNhbGxGcmFtZTo6ZXZh
bHVhdGUoY29uc3QgVVN0cmluZyYgc2NyaXB0LCBKU1ZhbHVlJiBleGNlcHRpb24pIGMKICAgICBK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBtX2NhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpOwogICAg
IEpTVmFsdWUgcmVzdWx0ID0gZ2xvYmFsRGF0YS5pbnRlcnByZXRlci0+ZXhlY3V0ZShldmFsLmdl
dCgpLCBtX2NhbGxGcmFtZSwgdGhpc09iamVjdCgpLCBtX2NhbGxGcmFtZS0+c2NvcGVDaGFpbigp
KTsKICAgICBpZiAoZ2xvYmFsRGF0YS5leGNlcHRpb24pIHsKLSAgICAgICAgZXhjZXB0aW9uID0g
Z2xvYmFsRGF0YS5leGNlcHRpb24uZ2V0KCk7CisgICAgICAgIGV4Y2VwdGlvbiA9IGdsb2JhbERh
dGEuZXhjZXB0aW9uOwogICAgICAgICBnbG9iYWxEYXRhLmV4Y2VwdGlvbiA9IEpTVmFsdWUoKTsK
ICAgICB9CiAgICAgQVNTRVJUKHJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKaW5kZXggMTkwYTdjMWQyNTA5YzEzNzg1MmEyNmZmYzFhODM3
M2M1YjVkMmRkNy4uMjc5N2VmM2Y5ZmNhYmMwZTkxMDM2YjE3MjhhZDgzMjA5MzU4OWJhMSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaApAQCAtNzUs
NyArNzUsNyBAQCBuYW1lc3BhY2UgSlNDICB7CiAgICAgICAgIC8vIEJ1dCB0aGV5J3JlIHVzZWQg
aW4gbWFueSBwbGFjZXMgaW4gbGVnYWN5IGNvZGUsIHNvIHRoZXkncmUgbm90IGdvaW5nIGF3YXkg
YW55IHRpbWUgc29vbi4KIAogICAgICAgICB2b2lkIGNsZWFyRXhjZXB0aW9uKCkgeyBnbG9iYWxE
YXRhKCkuZXhjZXB0aW9uID0gSlNWYWx1ZSgpOyB9Ci0gICAgICAgIEpTVmFsdWUgZXhjZXB0aW9u
KCkgY29uc3QgeyByZXR1cm4gZ2xvYmFsRGF0YSgpLmV4Y2VwdGlvbi5nZXQoKTsgfQorICAgICAg
ICBKU1ZhbHVlIGV4Y2VwdGlvbigpIGNvbnN0IHsgcmV0dXJuIGdsb2JhbERhdGEoKS5leGNlcHRp
b247IH0KICAgICAgICAgYm9vbCBoYWRFeGNlcHRpb24oKSBjb25zdCB7IHJldHVybiBnbG9iYWxE
YXRhKCkuZXhjZXB0aW9uOyB9CiAKICAgICAgICAgY29uc3QgQ29tbW9uSWRlbnRpZmllcnMmIHBy
b3BlcnR5TmFtZXMoKSBjb25zdCB7IHJldHVybiAqZ2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXM7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwCmluZGV4IGRjYWQ1ODM2NzliMGE1ZTNhMGUzNDRiNDg3N2E0YTQ4OTFmYjU1NmUuLjM5MmU4
YjhiNWIxMzk1ZGMyYmUwNTI3YjIzMDk2ZWRkNWNkNjA4ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtMTAzLDExICsxMDMs
MTEgQEAgTkVWRVJfSU5MSU5FIGJvb2wgSW50ZXJwcmV0ZXI6OnJlc29sdmUoQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIEluc3RydWN0aW9uKiB2UEMsIEoKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CiAgICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxv
Y2stPmlkZW50aWZpZXIocHJvcGVydHkpOwogICAgIGRvIHsKLSAgICAgICAgSlNPYmplY3QqIG8g
PSBpdGVyLT5nZXQoKTsKKyAgICAgICAgSlNPYmplY3QqIG8gPSAqaXRlcjsKICAgICAgICAgUHJv
cGVydHlTbG90IHNsb3Qobyk7CiAgICAgICAgIGlmIChvLT5nZXRQcm9wZXJ0eVNsb3QoY2FsbEZy
YW1lLCBpZGVudCwgc2xvdCkpIHsKICAgICAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gc2xvdC5n
ZXRWYWx1ZShjYWxsRnJhbWUsIGlkZW50KTsKLSAgICAgICAgICAgIGV4Y2VwdGlvblZhbHVlID0g
Y2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uLmdldCgpOworICAgICAgICAgICAgZXhj
ZXB0aW9uVmFsdWUgPSBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5leGNlcHRpb247CiAgICAgICAg
ICAgICBpZiAoZXhjZXB0aW9uVmFsdWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGRzdCkgPSBKU1ZhbHVlKHJlc3VsdCk7
CkBAIC0xNDIsMTEgKzE0MiwxMSBAQCBORVZFUl9JTkxJTkUgYm9vbCBJbnRlcnByZXRlcjo6cmVz
b2x2ZVNraXAoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEluc3RydWN0aW9uKiB2UAogICAgIH0KICAg
ICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwcm9wZXJ0eSk7CiAg
ICAgZG8gewotICAgICAgICBKU09iamVjdCogbyA9IGl0ZXItPmdldCgpOworICAgICAgICBKU09i
amVjdCogbyA9ICppdGVyOwogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChvKTsKICAgICAgICAg
aWYgKG8tPmdldFByb3BlcnR5U2xvdChjYWxsRnJhbWUsIGlkZW50LCBzbG90KSkgewogICAgICAg
ICAgICAgSlNWYWx1ZSByZXN1bHQgPSBzbG90LmdldFZhbHVlKGNhbGxGcmFtZSwgaWRlbnQpOwot
ICAgICAgICAgICAgZXhjZXB0aW9uVmFsdWUgPSBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5leGNl
cHRpb24uZ2V0KCk7CisgICAgICAgICAgICBleGNlcHRpb25WYWx1ZSA9IGNhbGxGcmFtZS0+Z2xv
YmFsRGF0YSgpLmV4Y2VwdGlvbjsKICAgICAgICAgICAgIGlmIChleGNlcHRpb25WYWx1ZSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBBU1NFUlQocmVzdWx0KTsK
QEAgLTE4Nyw3ICsxODcsNyBAQCBORVZFUl9JTkxJTkUgYm9vbCBJbnRlcnByZXRlcjo6cmVzb2x2
ZUdsb2JhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSW5zdHJ1Y3Rpb24qCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCi0gICAgICAgIGV4Y2VwdGlvblZhbHVlID0gY2FsbEZy
YW1lLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uLmdldCgpOworICAgICAgICBleGNlcHRpb25WYWx1
ZSA9IGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbjsKICAgICAgICAgaWYgKGV4Y2Vw
dGlvblZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBjYWxsRnJhbWUt
PnVuY2hlY2tlZFIoZHN0KSA9IEpTVmFsdWUocmVzdWx0KTsKQEAgLTIyMCwxNCArMjIwLDE0IEBA
IE5FVkVSX0lOTElORSBib29sIEludGVycHJldGVyOjpyZXNvbHZlR2xvYmFsRHluYW1pYyhDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgSW5zdHJ1CiAgICAgICAgICAgICArK2l0ZXI7CiAgICAgfQogICAg
IHdoaWxlIChza2lwLS0pIHsKLSAgICAgICAgSlNPYmplY3QqIG8gPSBpdGVyLT5nZXQoKTsKKyAg
ICAgICAgSlNPYmplY3QqIG8gPSAqaXRlcjsKICAgICAgICAgaWYgKG8tPmhhc0N1c3RvbVByb3Bl
cnRpZXMoKSkgewogICAgICAgICAgICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlk
ZW50aWZpZXIocHJvcGVydHkpOwogICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgIFBy
b3BlcnR5U2xvdCBzbG90KG8pOwogICAgICAgICAgICAgICAgIGlmIChvLT5nZXRQcm9wZXJ0eVNs
b3QoY2FsbEZyYW1lLCBpZGVudCwgc2xvdCkpIHsKICAgICAgICAgICAgICAgICAgICAgSlNWYWx1
ZSByZXN1bHQgPSBzbG90LmdldFZhbHVlKGNhbGxGcmFtZSwgaWRlbnQpOwotICAgICAgICAgICAg
ICAgICAgICBleGNlcHRpb25WYWx1ZSA9IGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlv
bi5nZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uVmFsdWUgPSBjYWxsRnJhbWUt
Pmdsb2JhbERhdGEoKS5leGNlcHRpb247CiAgICAgICAgICAgICAgICAgICAgIGlmIChleGNlcHRp
b25WYWx1ZSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCk7CkBAIC0yMzYsNyArMjM2LDcgQEAgTkVWRVJfSU5M
SU5FIGJvb2wgSW50ZXJwcmV0ZXI6OnJlc29sdmVHbG9iYWxEeW5hbWljKENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBJbnN0cnUKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKGl0
ZXIgPT0gZW5kKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBv
ID0gaXRlci0+Z2V0KCk7CisgICAgICAgICAgICAgICAgbyA9ICppdGVyOwogICAgICAgICAgICAg
ICAgICsraXRlcjsKICAgICAgICAgICAgIH0gd2hpbGUgKHRydWUpOwogICAgICAgICAgICAgZXhj
ZXB0aW9uVmFsdWUgPSBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKGNhbGxGcmFtZSwgaWRl
bnQpOwpAQCAtMjY2LDcgKzI2Niw3IEBAIE5FVkVSX0lOTElORSBib29sIEludGVycHJldGVyOjpy
ZXNvbHZlR2xvYmFsRHluYW1pYyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSW5zdHJ1CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgZXhjZXB0aW9u
VmFsdWUgPSBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5leGNlcHRpb24uZ2V0KCk7CisgICAgICAg
IGV4Y2VwdGlvblZhbHVlID0gY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uOwogICAg
ICAgICBpZiAoZXhjZXB0aW9uVmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIEFTU0VSVChyZXN1bHQpOwpAQCAtMzEwLDExICszMTAsMTEgQEAgTkVWRVJfSU5MSU5FIGJv
b2wgSW50ZXJwcmV0ZXI6OnJlc29sdmVCYXNlQW5kUHJvcGVydHkoQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIEluc3QKICAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihw
cm9wZXJ0eSk7CiAgICAgSlNPYmplY3QqIGJhc2U7CiAgICAgZG8gewotICAgICAgICBiYXNlID0g
aXRlci0+Z2V0KCk7CisgICAgICAgIGJhc2UgPSAqaXRlcjsKICAgICAgICAgUHJvcGVydHlTbG90
IHNsb3QoYmFzZSk7CiAgICAgICAgIGlmIChiYXNlLT5nZXRQcm9wZXJ0eVNsb3QoY2FsbEZyYW1l
LCBpZGVudCwgc2xvdCkpIHsKICAgICAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gc2xvdC5nZXRW
YWx1ZShjYWxsRnJhbWUsIGlkZW50KTsKLSAgICAgICAgICAgIGV4Y2VwdGlvblZhbHVlID0gY2Fs
bEZyYW1lLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uLmdldCgpOworICAgICAgICAgICAgZXhjZXB0
aW9uVmFsdWUgPSBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5leGNlcHRpb247CiAgICAgICAgICAg
ICBpZiAoZXhjZXB0aW9uVmFsdWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKHByb3BEc3QpID0gSlNWYWx1ZShyZXN1bHQp
OwpAQCAtNTY2LDExICs1NjYsMTEgQEAgTkVWRVJfSU5MSU5FIGJvb2wgSW50ZXJwcmV0ZXI6OnVu
d2luZENhbGxGcmFtZShDYWxsRnJhbWUqJiBjYWxsRnJhbWUsIEpTVmFsdWUgZXgKICAgICAgICAg
fQogICAgICAgICB3aGlsZSAoIXNjb3BlQ2hhaW4tPm9iamVjdC0+aW5oZXJpdHMoJkpTQWN0aXZh
dGlvbjo6aW5mbykpCiAgICAgICAgICAgICBzY29wZUNoYWluID0gc2NvcGVDaGFpbi0+cG9wKCk7
Ci0gICAgICAgIEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9IGFzQWN0aXZhdGlvbihzY29wZUNo
YWluLT5vYmplY3QuZ2V0KCkpOworICAgICAgICBKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBh
c0FjdGl2YXRpb24oc2NvcGVDaGFpbi0+b2JqZWN0KTsKICAgICAgICAgYWN0aXZhdGlvbi0+Y29w
eVJlZ2lzdGVycygpOwogICAgICAgICBpZiAoSlNWYWx1ZSBhcmd1bWVudHMgPSBjYWxsRnJhbWUt
PnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKG9sZENvZGVCbG9jay0+YXJn
dW1lbnRzUmVnaXN0ZXIoKSkpLmpzVmFsdWUoKSkgewogICAgICAgICAgICAgaWYgKCFvbGRDb2Rl
QmxvY2stPmlzU3RyaWN0TW9kZSgpKQotICAgICAgICAgICAgICAgIGFzQXJndW1lbnRzKGFyZ3Vt
ZW50cyktPnNldEFjdGl2YXRpb24oY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIGFjdGl2YXRpb24p
OworICAgICAgICAgICAgICAgIGFzQXJndW1lbnRzKGFyZ3VtZW50cyktPnNldEFjdGl2YXRpb24o
YWN0aXZhdGlvbik7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKG9sZENvZGVCbG9jay0+dXNl
c0FyZ3VtZW50cygpICYmICFvbGRDb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKSB7CiAgICAgICAg
IGlmIChKU1ZhbHVlIGFyZ3VtZW50cyA9IGNhbGxGcmFtZS0+dW5jaGVja2VkUih1bm1vZGlmaWVk
QXJndW1lbnRzUmVnaXN0ZXIob2xkQ29kZUJsb2NrLT5hcmd1bWVudHNSZWdpc3RlcigpKSkuanNW
YWx1ZSgpKQpAQCAtNjQ4LDcgKzY0OCw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFNvdXJjZVRvRXJy
b3IoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEVycm9ySW5zdGFuY2UqIGV4Y2VwdGlvbiwKICAgICAg
ICAgbWVzc2FnZSA9IG1ha2VVU3RyaW5nKG1lc3NhZ2UsICIgKG5lYXIgJy4uLiIsIGNvZGVCbG9j
ay0+c291cmNlKCktPmdldFJhbmdlKHN0YXJ0LCBzdG9wKSwgIi4uLicpIik7CiAgICAgfQogCi0g
ICAgZXhjZXB0aW9uLT5wdXREaXJlY3QoKmdsb2JhbERhdGEsIGdsb2JhbERhdGEtPnByb3BlcnR5
TmFtZXMtPm1lc3NhZ2UsIGpzU3RyaW5nKGdsb2JhbERhdGEsIG1lc3NhZ2UpKTsKKyAgICBleGNl
cHRpb24tPnB1dERpcmVjdChnbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5tZXNzYWdlLCBqc1N0
cmluZyhnbG9iYWxEYXRhLCBtZXNzYWdlKSk7CiB9CiAKIE5FVkVSX0lOTElORSBIYW5kbGVySW5m
byogSW50ZXJwcmV0ZXI6OnRocm93RXhjZXB0aW9uKENhbGxGcmFtZSomIGNhbGxGcmFtZSwgSlNW
YWx1ZSYgZXhjZXB0aW9uVmFsdWUsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQpAQCAtMTA4NSw3
ICsxMDg1LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSog
ZXZhbCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTT2JqZWMKICAgICBmb3IgKFNjb3BlQ2hhaW5O
b2RlKiBub2RlID0gc2NvcGVDaGFpbjsgOyBub2RlID0gbm9kZS0+bmV4dCkgewogICAgICAgICBB
U1NFUlQobm9kZSk7CiAgICAgICAgIGlmIChub2RlLT5vYmplY3QtPmlzVmFyaWFibGVPYmplY3Qo
KSkgewotICAgICAgICAgICAgdmFyaWFibGVPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1ZhcmlhYmxl
T2JqZWN0Kj4obm9kZS0+b2JqZWN0LmdldCgpKTsKKyAgICAgICAgICAgIHZhcmlhYmxlT2JqZWN0
ID0gc3RhdGljX2Nhc3Q8SlNWYXJpYWJsZU9iamVjdCo+KG5vZGUtPm9iamVjdCk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KQEAgLTExMDAsNyArMTEwMCw3IEBAIEpTVmFs
dWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqIGV2YWwsIENhbGxGcmFtZSog
Y2FsbEZyYW1lLCBKU09iamVjCiAgICAgICAgICAgICBwdXNoZWRTY29wZSA9IHRydWU7CiAgICAg
ICAgIH0KICAgICAgICAgLy8gU2NvcGUgZm9yIEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyCi0g
ICAgICAgIEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyIG9wdGltaXplcihjYWxsRnJhbWUtPmds
b2JhbERhdGEoKSwgdmFyaWFibGVPYmplY3QpOworICAgICAgICBCYXRjaGVkVHJhbnNpdGlvbk9w
dGltaXplciBvcHRpbWl6ZXIodmFyaWFibGVPYmplY3QpOwogCiAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBudW1WYXJpYWJsZXM7ICsraSkgewogICAgICAgICAgICAgY29uc3QgSWRl
bnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPnZhcmlhYmxlKGkpOwpAQCAtMTM3MSw3ICsxMzcx
LDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSW50ZXJwcmV0ZXI6OnRyeUNhY2hlR2V0QnlJRChDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKgogICAgICAgICAvLyBTaW5jZSB3ZSdyZSBhY2Nl
c3NpbmcgYSBwcm90b3R5cGUgaW4gYSBsb29wLCBpdCdzIGEgZ29vZCBiZXQgdGhhdCBpdAogICAg
ICAgICAvLyBzaG91bGQgbm90IGJlIHRyZWF0ZWQgYXMgYSBkaWN0aW9uYXJ5LgogICAgICAgICBp
ZiAoYmFzZU9iamVjdC0+c3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKSB7Ci0gICAgICAgICAg
ICBiYXNlT2JqZWN0LT5mbGF0dGVuRGljdGlvbmFyeU9iamVjdChjYWxsRnJhbWUtPmdsb2JhbERh
dGEoKSk7CisgICAgICAgICAgICBiYXNlT2JqZWN0LT5mbGF0dGVuRGljdGlvbmFyeU9iamVjdCgp
OwogICAgICAgICAgICAgb2Zmc2V0ID0gYmFzZU9iamVjdC0+c3RydWN0dXJlKCktPmdldChwcm9w
ZXJ0eU5hbWUpOwogICAgICAgICB9CiAKQEAgLTE0NzUsOCArMTQ3NSw4IEBAIEpTVmFsdWUgSW50
ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKEV4ZWN1dGlvbkZsYWcgZmxhZywgUmVnaXN0ZXJGaWxl
KiByZWdpc3RlckZpCiAKICNkZWZpbmUgQ0hFQ0tfRk9SX0VYQ0VQVElPTigpIFwKICAgICBkbyB7
IFwKLSAgICAgICAgaWYgKFVOTElLRUxZKGdsb2JhbERhdGEtPmV4Y2VwdGlvbi5nZXQoKSAhPSBK
U1ZhbHVlKCkpKSB7IFwKLSAgICAgICAgICAgIGV4Y2VwdGlvblZhbHVlID0gZ2xvYmFsRGF0YS0+
ZXhjZXB0aW9uLmdldCgpOyBcCisgICAgICAgIGlmIChVTkxJS0VMWShnbG9iYWxEYXRhLT5leGNl
cHRpb24gIT0gSlNWYWx1ZSgpKSkgeyBcCisgICAgICAgICAgICBleGNlcHRpb25WYWx1ZSA9IGds
b2JhbERhdGEtPmV4Y2VwdGlvbjsgXAogICAgICAgICAgICAgZ290byB2bV90aHJvdzsgXAogICAg
ICAgICB9IFwKICAgICB9IHdoaWxlICgwKQpAQCAtMjQwOCw3ICsyNDA4LDcgQEAgSlNWYWx1ZSBJ
bnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUoRXhlY3V0aW9uRmxhZyBmbGFnLCBSZWdpc3RlckZp
bGUqIHJlZ2lzdGVyRmkKICAgICAgICAgICAgIEFTU0VSVChpdGVyICE9IGVuZCk7CiAgICAgICAg
IH0KICAgICAgICAgQVNTRVJUKCgqaXRlciktPmlzVmFyaWFibGVPYmplY3QoKSk7Ci0gICAgICAg
IEpTVmFyaWFibGVPYmplY3QqIHNjb3BlID0gc3RhdGljX2Nhc3Q8SlNWYXJpYWJsZU9iamVjdCo+
KGl0ZXItPmdldCgpKTsKKyAgICAgICAgSlNWYXJpYWJsZU9iamVjdCogc2NvcGUgPSBzdGF0aWNf
Y2FzdDxKU1ZhcmlhYmxlT2JqZWN0Kj4oKml0ZXIpOwogICAgICAgICBjYWxsRnJhbWUtPnVuY2hl
Y2tlZFIoZHN0KSA9IHNjb3BlLT5yZWdpc3RlckF0KGluZGV4KTsKICAgICAgICAgQVNTRVJUKGNh
bGxGcmFtZS0+cihkc3QpLmpzVmFsdWUoKSk7CiAgICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RI
KG9wX2dldF9zY29wZWRfdmFyKTsKQEAgLTI0MzksNyArMjQzOSw3IEBAIEpTVmFsdWUgSW50ZXJw
cmV0ZXI6OnByaXZhdGVFeGVjdXRlKEV4ZWN1dGlvbkZsYWcgZmxhZywgUmVnaXN0ZXJGaWxlKiBy
ZWdpc3RlckZpCiAgICAgICAgIH0KIAogICAgICAgICBBU1NFUlQoKCppdGVyKS0+aXNWYXJpYWJs
ZU9iamVjdCgpKTsKLSAgICAgICAgSlNWYXJpYWJsZU9iamVjdCogc2NvcGUgPSBzdGF0aWNfY2Fz
dDxKU1ZhcmlhYmxlT2JqZWN0Kj4oaXRlci0+Z2V0KCkpOworICAgICAgICBKU1ZhcmlhYmxlT2Jq
ZWN0KiBzY29wZSA9IHN0YXRpY19jYXN0PEpTVmFyaWFibGVPYmplY3QqPigqaXRlcik7CiAgICAg
ICAgIEFTU0VSVChjYWxsRnJhbWUtPnIodmFsdWUpLmpzVmFsdWUoKSk7CiAgICAgICAgIHNjb3Bl
LT5yZWdpc3RlckF0KGluZGV4KSA9IEpTVmFsdWUoY2FsbEZyYW1lLT5yKHZhbHVlKS5qc1ZhbHVl
KCkpOwogICAgICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9wdXRfc2NvcGVkX3Zhcik7CkBA
IC0zMDgwLDcgKzMwODAsNyBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogICAgICAgICAgICAgICAg
IGludCB2YWx1ZSA9IHZQQ1szXS51Lm9wZXJhbmQ7CiAgICAgICAgICAgICAgICAgdW5zaWduZWQg
b2Zmc2V0ID0gdlBDWzddLnUub3BlcmFuZDsKICAgICAgICAgICAgICAgICBBU1NFUlQoYmFzZU9i
amVjdC0+b2Zmc2V0Rm9yTG9jYXRpb24oYmFzZU9iamVjdC0+Z2V0RGlyZWN0TG9jYXRpb24oY29k
ZUJsb2NrLT5pZGVudGlmaWVyKHZQQ1syXS51Lm9wZXJhbmQpKSkgPT0gb2Zmc2V0KTsKLSAgICAg
ICAgICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RPZmZzZXQoY2FsbEZyYW1lLT5nbG9iYWxE
YXRhKCksIG9mZnNldCwgY2FsbEZyYW1lLT5yKHZhbHVlKS5qc1ZhbHVlKCkpOworICAgICAgICAg
ICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdE9mZnNldChvZmZzZXQsIGNhbGxGcmFtZS0+cih2
YWx1ZSkuanNWYWx1ZSgpKTsKIAogICAgICAgICAgICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RI
KG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uKTsKICAgICAgICAgICAgICAgICBORVhUX0lOU1RSVUNU
SU9OKCk7CkBAIC0zMTE1LDcgKzMxMTUsNyBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IHZQQ1s1XS51Lm9wZXJhbmQ7CiAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgQVNTRVJUKGJhc2VPYmplY3QtPm9mZnNldEZvckxvY2F0
aW9uKGJhc2VPYmplY3QtPmdldERpcmVjdExvY2F0aW9uKGNvZGVCbG9jay0+aWRlbnRpZmllcih2
UENbMl0udS5vcGVyYW5kKSkpID09IG9mZnNldCk7Ci0gICAgICAgICAgICAgICAgYmFzZU9iamVj
dC0+cHV0RGlyZWN0T2Zmc2V0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBvZmZzZXQsIGNhbGxG
cmFtZS0+cih2YWx1ZSkuanNWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBiYXNlT2JqZWN0LT5w
dXREaXJlY3RPZmZzZXQob2Zmc2V0LCBjYWxsRnJhbWUtPnIodmFsdWUpLmpzVmFsdWUoKSk7CiAK
ICAgICAgICAgICAgICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9wdXRfYnlfaWRfcmVwbGFj
ZSk7CiAgICAgICAgICAgICAgICAgTkVYVF9JTlNUUlVDVElPTigpOwpAQCAtMzMwOSw3ICszMzA5
LDcgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAgICAgICAgIGlmIChpc0pTQXJyYXkoZ2xv
YmFsRGF0YSwgYmFzZVZhbHVlKSkgewogICAgICAgICAgICAgICAgIEpTQXJyYXkqIGpzQXJyYXkg
PSBhc0FycmF5KGJhc2VWYWx1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKGpzQXJyYXktPmNhblNl
dEluZGV4KGkpKQotICAgICAgICAgICAgICAgICAgICBqc0FycmF5LT5zZXRJbmRleCgqZ2xvYmFs
RGF0YSwgaSwgY2FsbEZyYW1lLT5yKHZhbHVlKS5qc1ZhbHVlKCkpOworICAgICAgICAgICAgICAg
ICAgICBqc0FycmF5LT5zZXRJbmRleChpLCBjYWxsRnJhbWUtPnIodmFsdWUpLmpzVmFsdWUoKSk7
CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBqc0FycmF5LT5KU0Fy
cmF5OjpwdXQoY2FsbEZyYW1lLCBpLCBjYWxsRnJhbWUtPnIodmFsdWUpLmpzVmFsdWUoKSk7CiAg
ICAgICAgICAgICB9IGVsc2UgaWYgKGlzSlNCeXRlQXJyYXkoZ2xvYmFsRGF0YSwgYmFzZVZhbHVl
KSAmJiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5jYW5BY2Nlc3NJbmRleChpKSkgewpAQCAtMzgz
NSw3ICszODM1LDcgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKIAogICAgICAgICBpZiAodGhpc1Zh
bHVlID09IGdsb2JhbE9iamVjdCAmJiBmdW5jVmFsID09IGdsb2JhbE9iamVjdC0+ZXZhbEZ1bmN0
aW9uKCkpIHsKICAgICAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FsbEV2YWwoY2FsbEZyYW1l
LCByZWdpc3RlckZpbGUsIGFyZ3YsIGFyZ0NvdW50LCByZWdpc3Rlck9mZnNldCk7Ci0gICAgICAg
ICAgICBpZiAoKGV4Y2VwdGlvblZhbHVlID0gZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLmdldCgpKSkK
KyAgICAgICAgICAgIGlmICgoZXhjZXB0aW9uVmFsdWUgPSBnbG9iYWxEYXRhLT5leGNlcHRpb24p
KQogICAgICAgICAgICAgICAgIGdvdG8gdm1fdGhyb3c7CiAgICAgICAgICAgICBmdW5jdGlvblJl
dHVyblZhbHVlID0gcmVzdWx0OwogCkBAIC00MTAzLDcgKzQxMDMsNyBAQCBza2lwX2lkX2N1c3Rv
bV9zZWxmOgogCiAgICAgICAgICAgICBpZiAoSlNWYWx1ZSBhcmd1bWVudHNWYWx1ZSA9IGNhbGxG
cmFtZS0+cih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoYXJndW1lbnRzKSkuanNWYWx1ZSgp
KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQotICAg
ICAgICAgICAgICAgICAgICBhc0FyZ3VtZW50cyhhcmd1bWVudHNWYWx1ZSktPnNldEFjdGl2YXRp
b24oKmdsb2JhbERhdGEsIGFzQWN0aXZhdGlvbihhY3RpdmF0aW9uVmFsdWUpKTsKKyAgICAgICAg
ICAgICAgICAgICAgYXNBcmd1bWVudHMoYXJndW1lbnRzVmFsdWUpLT5zZXRBY3RpdmF0aW9uKGFz
QWN0aXZhdGlvbihhY3RpdmF0aW9uVmFsdWUpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBl
bHNlIGlmIChKU1ZhbHVlIGFyZ3VtZW50c1ZhbHVlID0gY2FsbEZyYW1lLT5yKHVubW9kaWZpZWRB
cmd1bWVudHNSZWdpc3Rlcihhcmd1bWVudHMpKS5qc1ZhbHVlKCkpIHsKICAgICAgICAgICAgIGlm
ICghY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRT
dHVicy5jcHAKaW5kZXggNzRmNTA1Zjg5ZGYxNDEyMWYwNzMxYjZiYzYyMWQxZDFmMjMwZDVhZi4u
ZjUyMWFhNTM0N2VmNGI0MWQ2MzJiOThkOTRiMGEwMjk5OTc5N2EwOCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKQEAgLTg0NSw3ICs4NDUsNyBAQCBORVZFUl9JTkxJTkUg
dm9pZCBKSVRUaHVua3M6OnRyeUNhY2hlR2V0QnlJRChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29k
ZUJsb2NrKiBjbwogICAgICAgICAvLyBTaW5jZSB3ZSdyZSBhY2Nlc3NpbmcgYSBwcm90b3R5cGUg
aW4gYSBsb29wLCBpdCdzIGEgZ29vZCBiZXQgdGhhdCBpdAogICAgICAgICAvLyBzaG91bGQgbm90
IGJlIHRyZWF0ZWQgYXMgYSBkaWN0aW9uYXJ5LgogICAgICAgICBpZiAoc2xvdEJhc2VPYmplY3Qt
PnN0cnVjdHVyZSgpLT5pc0RpY3Rpb25hcnkoKSkgewotICAgICAgICAgICAgc2xvdEJhc2VPYmpl
Y3QtPmZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpKTsKKyAg
ICAgICAgICAgIHNsb3RCYXNlT2JqZWN0LT5mbGF0dGVuRGljdGlvbmFyeU9iamVjdCgpOwogICAg
ICAgICAgICAgb2Zmc2V0ID0gc2xvdEJhc2VPYmplY3QtPnN0cnVjdHVyZSgpLT5nZXQocHJvcGVy
dHlOYW1lKTsKICAgICAgICAgfQogICAgICAgICAKQEAgLTk0MiwxNyArOTQyLDE3IEBAIHN0YXRp
YyBORVZFUl9JTkxJTkUgdm9pZCB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgSlNHbG9iYWxECiAKICNkZWZpbmUgQ0hFQ0tfRk9SX0VYQ0VQVElPTigpIFwKICAg
ICBkbyB7IFwKLSAgICAgICAgaWYgKFVOTElLRUxZKHN0YWNrRnJhbWUuZ2xvYmFsRGF0YS0+ZXhj
ZXB0aW9uLmdldCgpKSkgXAorICAgICAgICBpZiAoVU5MSUtFTFkoc3RhY2tGcmFtZS5nbG9iYWxE
YXRhLT5leGNlcHRpb24pKSBcCiAgICAgICAgICAgICBWTV9USFJPV19FWENFUFRJT04oKTsgXAog
ICAgIH0gd2hpbGUgKDApCiAjZGVmaW5lIENIRUNLX0ZPUl9FWENFUFRJT05fQVRfRU5EKCkgXAog
ICAgIGRvIHsgXAotICAgICAgICBpZiAoVU5MSUtFTFkoc3RhY2tGcmFtZS5nbG9iYWxEYXRhLT5l
eGNlcHRpb24uZ2V0KCkpKSBcCisgICAgICAgIGlmIChVTkxJS0VMWShzdGFja0ZyYW1lLmdsb2Jh
bERhdGEtPmV4Y2VwdGlvbikpIFwKICAgICAgICAgICAgIFZNX1RIUk9XX0VYQ0VQVElPTl9BVF9F
TkQoKTsgXAogICAgIH0gd2hpbGUgKDApCiAjZGVmaW5lIENIRUNLX0ZPUl9FWENFUFRJT05fVk9J
RCgpIFwKICAgICBkbyB7IFwKLSAgICAgICAgaWYgKFVOTElLRUxZKHN0YWNrRnJhbWUuZ2xvYmFs
RGF0YS0+ZXhjZXB0aW9uLmdldCgpKSkgeyBcCisgICAgICAgIGlmIChVTkxJS0VMWShzdGFja0Zy
YW1lLmdsb2JhbERhdGEtPmV4Y2VwdGlvbikpIHsgXAogICAgICAgICAgICAgVk1fVEhST1dfRVhD
RVBUSU9OX0FUX0VORCgpOyBcCiAgICAgICAgICAgICByZXR1cm47IFwKICAgICAgICAgfSBcCkBA
IC0xNDY2LDcgKzE0NjYsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwg
b3BfZ2V0X2J5X2lkX21ldGhvZF9jaGVjaykKICAgICAgICAgLy8gU2luY2Ugd2UncmUgYWNjZXNz
aW5nIGEgcHJvdG90eXBlIGluIGEgbG9vcCwgaXQncyBhIGdvb2QgYmV0IHRoYXQgaXQKICAgICAg
ICAgLy8gc2hvdWxkIG5vdCBiZSB0cmVhdGVkIGFzIGEgZGljdGlvbmFyeS4KICAgICAgICAgaWYg
KHNsb3RCYXNlT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkpCi0gICAgICAgICAg
ICBzbG90QmFzZU9iamVjdC0+ZmxhdHRlbkRpY3Rpb25hcnlPYmplY3QoY2FsbEZyYW1lLT5nbG9i
YWxEYXRhKCkpOworICAgICAgICAgICAgc2xvdEJhc2VPYmplY3QtPmZsYXR0ZW5EaWN0aW9uYXJ5
T2JqZWN0KCk7CiAKICAgICAgICAgLy8gVGhlIHJlc3VsdCBmZXRjaGVkIHNob3VsZCBhbHdheXMg
YmUgdGhlIGNhbGxlZSEKICAgICAgICAgQVNTRVJUKHJlc3VsdCA9PSBKU1ZhbHVlKGNhbGxlZSkp
OwpAQCAtMTY1Niw3ICsxNjU2LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFs
dWUsIG9wX2dldF9ieV9pZF9wcm90b19saXN0KQogICAgICAgICAvLyBTaW5jZSB3ZSdyZSBhY2Nl
c3NpbmcgYSBwcm90b3R5cGUgaW4gYSBsb29wLCBpdCdzIGEgZ29vZCBiZXQgdGhhdCBpdAogICAg
ICAgICAvLyBzaG91bGQgbm90IGJlIHRyZWF0ZWQgYXMgYSBkaWN0aW9uYXJ5LgogICAgICAgICBp
ZiAoc2xvdEJhc2VPYmplY3QtPnN0cnVjdHVyZSgpLT5pc0RpY3Rpb25hcnkoKSkgewotICAgICAg
ICAgICAgc2xvdEJhc2VPYmplY3QtPmZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KGNhbGxGcmFtZS0+
Z2xvYmFsRGF0YSgpKTsKKyAgICAgICAgICAgIHNsb3RCYXNlT2JqZWN0LT5mbGF0dGVuRGljdGlv
bmFyeU9iamVjdCgpOwogICAgICAgICAgICAgb2Zmc2V0ID0gc2xvdEJhc2VPYmplY3QtPnN0cnVj
dHVyZSgpLT5nZXQocHJvcGVydHlOYW1lKTsKICAgICAgICAgfQogCkBAIC0yMTQ3LDcgKzIxNDcs
NyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcF90ZWFyX29mZl9hY3RpdmF0aW9uKQog
ICAgIGFjdGl2YXRpb24tPmNvcHlSZWdpc3RlcnMoKTsKICAgICBpZiAoSlNWYWx1ZSB2ID0gc3Rh
Y2tGcmFtZS5hcmdzWzFdLmpzVmFsdWUoKSkgewogICAgICAgICBpZiAoIXN0YWNrRnJhbWUuY2Fs
bEZyYW1lLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpCi0gICAgICAgICAgICBhc0FyZ3Vt
ZW50cyh2KS0+c2V0QWN0aXZhdGlvbigqc3RhY2tGcmFtZS5nbG9iYWxEYXRhLCBhY3RpdmF0aW9u
KTsKKyAgICAgICAgICAgIGFzQXJndW1lbnRzKHYpLT5zZXRBY3RpdmF0aW9uKGFjdGl2YXRpb24p
OwogICAgIH0KIH0KIApAQCAtMjIwNCw3ICsyMjA0LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04o
RW5jb2RlZEpTVmFsdWUsIG9wX3Jlc29sdmUpCiAKICAgICBJZGVudGlmaWVyJiBpZGVudCA9IHN0
YWNrRnJhbWUuYXJnc1swXS5pZGVudGlmaWVyKCk7CiAgICAgZG8gewotICAgICAgICBKU09iamVj
dCogbyA9IGl0ZXItPmdldCgpOworICAgICAgICBKU09iamVjdCogbyA9ICppdGVyOwogICAgICAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdChvKTsKICAgICAgICAgaWYgKG8tPmdldFByb3BlcnR5U2xvdChj
YWxsRnJhbWUsIGlkZW50LCBzbG90KSkgewogICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBz
bG90LmdldFZhbHVlKGNhbGxGcmFtZSwgaWRlbnQpOwpAQCAtMjM5Nyw3ICsyMzk3LDcgQEAgREVG
SU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3BfcHV0X2J5X3ZhbCkKICAgICAgICAgaWYgKGlzSlNB
cnJheShnbG9iYWxEYXRhLCBiYXNlVmFsdWUpKSB7CiAgICAgICAgICAgICBKU0FycmF5KiBqc0Fy
cmF5ID0gYXNBcnJheShiYXNlVmFsdWUpOwogICAgICAgICAgICAgaWYgKGpzQXJyYXktPmNhblNl
dEluZGV4KGkpKQotICAgICAgICAgICAgICAgIGpzQXJyYXktPnNldEluZGV4KCpnbG9iYWxEYXRh
LCBpLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAganNBcnJheS0+c2V0SW5kZXgoaSwgdmFsdWUp
OwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGpzQXJyYXktPkpTQXJyYXk6OnB1
dChjYWxsRnJhbWUsIGksIHZhbHVlKTsKICAgICAgICAgfSBlbHNlIGlmIChpc0pTQnl0ZUFycmF5
KGdsb2JhbERhdGEsIGJhc2VWYWx1ZSkgJiYgYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Y2FuQWNj
ZXNzSW5kZXgoaSkpIHsKQEAgLTI2NDUsNyArMjY0NSw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9O
KEVuY29kZWRKU1ZhbHVlLCBvcF9yZXNvbHZlX3NraXApCiAgICAgfQogICAgIElkZW50aWZpZXIm
IGlkZW50ID0gc3RhY2tGcmFtZS5hcmdzWzBdLmlkZW50aWZpZXIoKTsKICAgICBkbyB7Ci0gICAg
ICAgIEpTT2JqZWN0KiBvID0gaXRlci0+Z2V0KCk7CisgICAgICAgIEpTT2JqZWN0KiBvID0gKml0
ZXI7CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KG8pOwogICAgICAgICBpZiAoby0+Z2V0UHJv
cGVydHlTbG90KGNhbGxGcmFtZSwgaWRlbnQsIHNsb3QpKSB7CiAgICAgICAgICAgICBKU1ZhbHVl
IHJlc3VsdCA9IHNsb3QuZ2V0VmFsdWUoY2FsbEZyYW1lLCBpZGVudCk7CkBAIC0yOTc0LDcgKzI5
NzQsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfcmVzb2x2ZV93
aXRoX2Jhc2UpCiAgICAgSWRlbnRpZmllciYgaWRlbnQgPSBzdGFja0ZyYW1lLmFyZ3NbMF0uaWRl
bnRpZmllcigpOwogICAgIEpTT2JqZWN0KiBiYXNlOwogICAgIGRvIHsKLSAgICAgICAgYmFzZSA9
IGl0ZXItPmdldCgpOworICAgICAgICBiYXNlID0gKml0ZXI7CiAgICAgICAgIFByb3BlcnR5U2xv
dCBzbG90KGJhc2UpOwogICAgICAgICBpZiAoYmFzZS0+Z2V0UHJvcGVydHlTbG90KGNhbGxGcmFt
ZSwgaWRlbnQsIHNsb3QpKSB7CiAgICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IHNsb3QuZ2V0
VmFsdWUoY2FsbEZyYW1lLCBpZGVudCk7CkBAIC0zNDgwLDcgKzM0ODAsNyBAQCBERUZJTkVfU1RV
Ql9GVU5DVElPTih2b2lkKiwgdm1fdGhyb3cpCiB7CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1F
KHN0YWNrRnJhbWUpOwogICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9IHN0YWNrRnJhbWUu
Z2xvYmFsRGF0YTsKLSAgICBFeGNlcHRpb25IYW5kbGVyIGhhbmRsZXIgPSBqaXRUaHJvdyhnbG9i
YWxEYXRhLCBzdGFja0ZyYW1lLmNhbGxGcmFtZSwgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLmdldCgp
LCBnbG9iYWxEYXRhLT5leGNlcHRpb25Mb2NhdGlvbik7CisgICAgRXhjZXB0aW9uSGFuZGxlciBo
YW5kbGVyID0gaml0VGhyb3coZ2xvYmFsRGF0YSwgc3RhY2tGcmFtZS5jYWxsRnJhbWUsIGdsb2Jh
bERhdGEtPmV4Y2VwdGlvbiwgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uTG9jYXRpb24pOwogICAgIFNU
VUJfU0VUX1JFVFVSTl9BRERSRVNTKGhhbmRsZXIuY2F0Y2hSb3V0aW5lKTsKICAgICByZXR1cm4g
aGFuZGxlci5jYWxsRnJhbWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IDkxMmI1MWE4MDgz
ZTZjMjZjNzlhN2YzMWFjMGM2YWI0NjYxMzViOTguLmRkNGI2NzdhNDEzZTY5Y2QxZjM2NDI1Zjdh
ZDljZTA4YmJlMmU0NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0xNjksNyArMTY5LDcgQEAg
R2xvYmFsT2JqZWN0OjpHbG9iYWxPYmplY3QoY29uc3QgVmVjdG9yPFVTdHJpbmc+JiBhcmd1bWVu
dHMpCiAgICAgSlNPYmplY3QqIGFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJheShnbG9iYWxFeGVj
KCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRzLnNpemUoKTsgKytpKQog
ICAgICAgICBhcnJheS0+cHV0KGdsb2JhbEV4ZWMoKSwgaSwganNTdHJpbmcoZ2xvYmFsRXhlYygp
LCBhcmd1bWVudHNbaV0pKTsKLSAgICBwdXREaXJlY3QoZ2xvYmFsRXhlYygpLT5nbG9iYWxEYXRh
KCksIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAiYXJndW1lbnRzIiksIGFycmF5KTsKKyAgICBw
dXREaXJlY3QoSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJhcmd1bWVudHMiKSwgYXJyYXkpOwog
fQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJpbnQoRXhlY1N0YXRl
KiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlz
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmNwcAppbmRleCBh
ODYyZWEwMWU1MmQ3NjFmZDM1MThjM2Q4ODE2ZDU2YWZjYmQ1ZTJkLi5hYjJiNWQ3ZGFlNzE0M2M1
MTY2YWE5NDNjYjhhYmNlMzdlNGJhNjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcmdMaXN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcmdMaXN0LmNwcApAQCAtNDIsNyArNDIsNyBAQCB2b2lkIE1hcmtlZEFyZ3VtZW50QnVmZmVy
OjptYXJrTGlzdHMoTWFya1N0YWNrJiBtYXJrU3RhY2ssIExpc3RTZXQmIG1hcmtTZXQpCiAgICAg
TGlzdFNldDo6aXRlcmF0b3IgZW5kID0gbWFya1NldC5lbmQoKTsKICAgICBmb3IgKExpc3RTZXQ6
Oml0ZXJhdG9yIGl0ID0gbWFya1NldC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAg
ICAgTWFya2VkQXJndW1lbnRCdWZmZXIqIGxpc3QgPSAqaXQ7Ci0gICAgICAgIG1hcmtTdGFjay5k
ZXByZWNhdGVkQXBwZW5kVmFsdWVzKGxpc3QtPm1fYnVmZmVyLCBsaXN0LT5tX3NpemUpOworICAg
ICAgICBtYXJrU3RhY2suYXBwZW5kVmFsdWVzKHJlaW50ZXJwcmV0X2Nhc3Q8SlNWYWx1ZSo+KGxp
c3QtPm1fYnVmZmVyKSwgbGlzdC0+bV9zaXplKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCmluZGV4IGY2YWZlYzdkZGEyNDM5NjQ4ZjRm
ZjA5NzE0OWE1NjVlN2ZlZTEzZWMuLjM5ODg2YTg2OTU4MGVkMjdhN2QzNjRhODFkNWUzMzdlMDQx
NDkwZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcApA
QCAtNDgsMTcgKzQ4LDE3IEBAIHZvaWQgQXJndW1lbnRzOjptYXJrQ2hpbGRyZW4oTWFya1N0YWNr
JiBtYXJrU3RhY2spCiAgICAgSlNPYmplY3Q6Om1hcmtDaGlsZHJlbihtYXJrU3RhY2spOwogCiAg
ICAgaWYgKGQtPnJlZ2lzdGVyQXJyYXkpCi0gICAgICAgIG1hcmtTdGFjay5kZXByZWNhdGVkQXBw
ZW5kVmFsdWVzKGQtPnJlZ2lzdGVyQXJyYXkuZ2V0KCksIGQtPm51bVBhcmFtZXRlcnMpOworICAg
ICAgICBtYXJrU3RhY2suYXBwZW5kVmFsdWVzKHJlaW50ZXJwcmV0X2Nhc3Q8SlNWYWx1ZSo+KGQt
PnJlZ2lzdGVyQXJyYXkuZ2V0KCkpLCBkLT5udW1QYXJhbWV0ZXJzKTsKIAogICAgIGlmIChkLT5l
eHRyYUFyZ3VtZW50cykgewogICAgICAgICB1bnNpZ25lZCBudW1FeHRyYUFyZ3VtZW50cyA9IGQt
Pm51bUFyZ3VtZW50cyAtIGQtPm51bVBhcmFtZXRlcnM7Ci0gICAgICAgIG1hcmtTdGFjay5kZXBy
ZWNhdGVkQXBwZW5kVmFsdWVzKGQtPmV4dHJhQXJndW1lbnRzLCBudW1FeHRyYUFyZ3VtZW50cyk7
CisgICAgICAgIG1hcmtTdGFjay5hcHBlbmRWYWx1ZXMocmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVl
Kj4oZC0+ZXh0cmFBcmd1bWVudHMpLCBudW1FeHRyYUFyZ3VtZW50cyk7CiAgICAgfQogCi0gICAg
bWFya1N0YWNrLmFwcGVuZCgmZC0+Y2FsbGVlKTsKKyAgICBtYXJrU3RhY2suYXBwZW5kKGQtPmNh
bGxlZSk7CiAKICAgICBpZiAoZC0+YWN0aXZhdGlvbikKLSAgICAgICAgbWFya1N0YWNrLmFwcGVu
ZCgmZC0+YWN0aXZhdGlvbik7CisgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoZC0+YWN0aXZhdGlv
bik7CiB9CiAKIHZvaWQgQXJndW1lbnRzOjpjb3B5VG9SZWdpc3RlcnMoRXhlY1N0YXRlKiBleGVj
LCBSZWdpc3RlciogYnVmZmVyLCB1aW50MzJfdCBtYXhTaXplKQpAQCAtMTk3LDcgKzE5Nyw3IEBA
IGJvb2wgQXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hCiAKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5jYWxsZWUgJiYgTElLRUxZKCFkLT5vdmVycm9kZUNhbGxlZSkpIHsK
ICAgICAgICAgaWYgKCFkLT5pc1N0cmljdE1vZGUpIHsKLSAgICAgICAgICAgIHNsb3Quc2V0VmFs
dWUoZC0+Y2FsbGVlLmdldCgpKTsKKyAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUoZC0+Y2FsbGVl
KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIGNyZWF0ZVN0
cmljdE1vZGVDYWxsZWVJZk5lY2Vzc2FyeShleGVjKTsKQEAgLTIyOCw3ICsyMjgsNyBAQCBib29s
IEFyZ3VtZW50czo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYgcHJvcAogICAgIAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+
cHJvcGVydHlOYW1lcygpLmNhbGxlZSAmJiBMSUtFTFkoIWQtPm92ZXJyb2RlQ2FsbGVlKSkgewog
ICAgICAgICBpZiAoIWQtPmlzU3RyaWN0TW9kZSkgewotICAgICAgICAgICAgZGVzY3JpcHRvci5z
ZXREZXNjcmlwdG9yKGQtPmNhbGxlZS5nZXQoKSwgRG9udEVudW0pOworICAgICAgICAgICAgZGVz
Y3JpcHRvci5zZXREZXNjcmlwdG9yKGQtPmNhbGxlZSwgRG9udEVudW0pOwogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgY3JlYXRlU3RyaWN0TW9kZUNhbGxlZUlm
TmVjZXNzYXJ5KGV4ZWMpOwpAQCAtMjgwLDE0ICsyODAsMTQgQEAgdm9pZCBBcmd1bWVudHM6OnB1
dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWwKIAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxl
bmd0aCAmJiAhZC0+b3ZlcnJvZGVMZW5ndGgpIHsKICAgICAgICAgZC0+b3ZlcnJvZGVMZW5ndGgg
PSB0cnVlOwotICAgICAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCBEb250RW51bSk7CisgICAgICAgIHB1dERpcmVjdChwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBEb250RW51bSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAocHJvcGVy
dHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxsZWUgJiYgIWQtPm92ZXJyb2RlQ2Fs
bGVlKSB7CiAgICAgICAgIGlmICghZC0+aXNTdHJpY3RNb2RlKSB7CiAgICAgICAgICAgICBkLT5v
dmVycm9kZUNhbGxlZSA9IHRydWU7Ci0gICAgICAgICAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBEb250RW51bSk7CisgICAgICAgICAgICBwdXRE
aXJlY3QocHJvcGVydHlOYW1lLCB2YWx1ZSwgRG9udEVudW0pOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgICAgIGNyZWF0ZVN0cmljdE1vZGVDYWxsZWVJZk5lY2Vzc2FyeShl
eGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKaW5kZXggYTNk
N2ZlNDU3OTRjMzJjOTJiMTc4NGQxMTk4YTEwNDNkODNmZjk4ZC4uZmU5MDBhMjc4OWE2OTU3YmZh
M2ZlM2RlZDBmZjhjZmQ0ZjYwNWE5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJndW1lbnRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJndW1lbnRzLmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKEFyZ3VtZW50c0RhdGEpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKICAgICBwdWJsaWM6CiAgICAgICAgIEFyZ3VtZW50c0RhdGEoKSB7IH0KLSAgICAgICAgV3Jp
dGVCYXJyaWVyPEpTQWN0aXZhdGlvbj4gYWN0aXZhdGlvbjsKKyAgICAgICAgSlNBY3RpdmF0aW9u
KiBhY3RpdmF0aW9uOwogCiAgICAgICAgIHVuc2lnbmVkIG51bVBhcmFtZXRlcnM7CiAgICAgICAg
IHB0cmRpZmZfdCBmaXJzdFBhcmFtZXRlckluZGV4OwpAQCAtNTAsNyArNTAsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgT3duQXJyYXlQdHI8Ym9vbD4gZGVsZXRlZEFyZ3VtZW50czsKICAg
ICAgICAgUmVnaXN0ZXIgZXh0cmFBcmd1bWVudHNGaXhlZEJ1ZmZlcls0XTsKIAotICAgICAgICBX
cml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gY2FsbGVlOworICAgICAgICBKU0Z1bmN0aW9uKiBjYWxs
ZWU7CiAgICAgICAgIGJvb2wgb3ZlcnJvZGVMZW5ndGggOiAxOwogICAgICAgICBib29sIG92ZXJy
b2RlQ2FsbGVlIDogMTsKICAgICAgICAgYm9vbCBvdmVycm9kZUNhbGxlciA6IDE7CkBAIC04Niw5
ICs4Niw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGNvcHlUb1JlZ2lzdGVycyhF
eGVjU3RhdGUqIGV4ZWMsIFJlZ2lzdGVyKiBidWZmZXIsIHVpbnQzMl90IG1heFNpemUpOwogICAg
ICAgICB2b2lkIGNvcHlSZWdpc3RlcnMoKTsKICAgICAgICAgYm9vbCBpc1Rvcm5PZmYoKSBjb25z
dCB7IHJldHVybiBkLT5yZWdpc3RlckFycmF5OyB9Ci0gICAgICAgIHZvaWQgc2V0QWN0aXZhdGlv
bihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbikKKyAg
ICAgICAgdm9pZCBzZXRBY3RpdmF0aW9uKEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbikKICAgICAg
ICAgewotICAgICAgICAgICAgZC0+YWN0aXZhdGlvbi5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgYWN0
aXZhdGlvbik7CisgICAgICAgICAgICBkLT5hY3RpdmF0aW9uID0gYWN0aXZhdGlvbjsKICAgICAg
ICAgICAgIGQtPnJlZ2lzdGVycyA9ICZhY3RpdmF0aW9uLT5yZWdpc3RlckF0KDApOwogICAgICAg
ICB9CiAKQEAgLTE1OCw2ICsxNTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZC0+Zmly
c3RQYXJhbWV0ZXJJbmRleCA9IGZpcnN0UGFyYW1ldGVySW5kZXg7CiAgICAgICAgIGQtPm51bUFy
Z3VtZW50cyA9IG51bUFyZ3VtZW50czsKIAorICAgICAgICBkLT5hY3RpdmF0aW9uID0gMDsKICAg
ICAgICAgZC0+cmVnaXN0ZXJzID0gY2FsbEZyYW1lLT5yZWdpc3RlcnMoKTsKIAogICAgICAgICBS
ZWdpc3RlciogZXh0cmFBcmd1bWVudHM7CkBAIC0xNzUsNyArMTc2LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICAgICAgZC0+ZXh0cmFBcmd1bWVudHMgPSBleHRyYUFyZ3VtZW50czsKIAotICAg
ICAgICBkLT5jYWxsZWUuc2V0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBjYWxsZWUp
OworICAgICAgICBkLT5jYWxsZWUgPSBjYWxsZWU7CiAgICAgICAgIGQtPm92ZXJyb2RlTGVuZ3Ro
ID0gZmFsc2U7CiAgICAgICAgIGQtPm92ZXJyb2RlQ2FsbGVlID0gZmFsc2U7CiAgICAgICAgIGQt
Pm92ZXJyb2RlQ2FsbGVyID0gZmFsc2U7CkBAIC0xOTQsNiArMTk1LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICAgICAgZC0+bnVtUGFyYW1ldGVycyA9IDA7CiAgICAgICAgIGQtPm51bUFyZ3Vt
ZW50cyA9IG51bUFyZ3VtZW50czsKKyAgICAgICAgZC0+YWN0aXZhdGlvbiA9IDA7CiAKICAgICAg
ICAgUmVnaXN0ZXIqIGV4dHJhQXJndW1lbnRzOwogICAgICAgICBpZiAobnVtQXJndW1lbnRzID4g
c2l6ZW9mKGQtPmV4dHJhQXJndW1lbnRzRml4ZWRCdWZmZXIpIC8gc2l6ZW9mKFJlZ2lzdGVyKSkK
QEAgLTIwNyw3ICsyMDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBkLT5leHRyYUFy
Z3VtZW50cyA9IGV4dHJhQXJndW1lbnRzOwogCi0gICAgICAgIGQtPmNhbGxlZS5zZXQoY2FsbEZy
YW1lLT5nbG9iYWxEYXRhKCksIHRoaXMsIGFzRnVuY3Rpb24oY2FsbEZyYW1lLT5jYWxsZWUoKSkp
OworICAgICAgICBkLT5jYWxsZWUgPSBhc0Z1bmN0aW9uKGNhbGxGcmFtZS0+Y2FsbGVlKCkpOwog
ICAgICAgICBkLT5vdmVycm9kZUxlbmd0aCA9IGZhbHNlOwogICAgICAgICBkLT5vdmVycm9kZUNh
bGxlZSA9IGZhbHNlOwogICAgICAgICBkLT5vdmVycm9kZUNhbGxlciA9IGZhbHNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAppbmRl
eCA1ZDBhZGJkYTYwYWNkNzg2MjA1ZGI2OWZjYTVlNmFhOGJjMWUwNmM1Li42MzJkNDY2ZTIyOWY0
MmJkMWIzOWIyZmIwOTZkNGQ3NTFjY2MxZDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcApAQCAtNDIsMTAgKzQyLDEwIEBAIEFy
cmF5Q29uc3RydWN0b3I6OkFycmF5Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0CiAgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKCZleGVjLT5nbG9i
YWxEYXRhKCksIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBJZGVudGlmaWVyKGV4ZWMsIGFycmF5
UHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKSkKIHsKICAgICAvLyBFQ01BIDE1LjQu
My4xIEFycmF5LnByb3RvdHlwZQotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMt
Pmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgYXJyYXlQcm90
b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBhcnJheVBy
b3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogCiAgICAgLy8gbm8u
IG9mIGFyZ3VtZW50cyBmb3IgY29uc3RydWN0b3IKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpz
TnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CisgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1i
ZXIoMSksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKIAogICAgIC8vIEVTNQog
ICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBO
YXRpdmVGdW5jdGlvbldyYXBwZXIoZXhlYywgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGVGdW5jdGlv
blN0cnVjdHVyZSwgMSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmlzQXJyYXksIGFycmF5Q29uc3Ry
dWN0b3JJc0FycmF5KSwgRG9udEVudW0pOwpAQCAtNjIsNyArNjIsNyBAQCBzdGF0aWMgaW5saW5l
IEpTT2JqZWN0KiBjb25zdHJ1Y3RBcnJheVdpdGhTaXplUXVpcmsoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBBcmdMaQogICAgIH0KIAogICAgIC8vIG90aGVyd2lzZSB0aGUgYXJyYXkgaXMgY29uc3Ry
dWN0ZWQgd2l0aCB0aGUgYXJndW1lbnRzIGluIGl0Ci0gICAgcmV0dXJuIG5ldyAoZXhlYykgSlNB
cnJheShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+YXJy
YXlTdHJ1Y3R1cmUoKSwgYXJncyk7CisgICAgcmV0dXJuIG5ldyAoZXhlYykgSlNBcnJheShleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmFycmF5U3RydWN0dXJlKCksIGFyZ3MpOwogfQogCiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoQXJyYXlDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheVByb3RvdHlwZS5jcHAKaW5kZXggMjczZDQ1MDdjYmZmNjAxMjA3YjQ3ZWMxMTVi
ZDEyMjc5MzRiOWM1Yi4uNzYxNWZmY2E0NWU2ZjlkZmIyYTcxMThhYjM4MGFkNjg4ZmFiMjA4OSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNw
cApAQCAtNTQ1LDkgKzU0NSw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQ
cm90b0Z1bmNTcGxpY2UoRXhlY1N0YXRlKiBleGVjKQogCiAgICAgSlNBcnJheSogcmVzT2JqID0g
bmV3IChleGVjKSBKU0FycmF5KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+YXJyYXlTdHJ1
Y3R1cmUoKSwgZGVsZXRlQ291bnQsIENyZWF0ZUNvbXBhY3QpOwogICAgIEpTVmFsdWUgcmVzdWx0
ID0gcmVzT2JqOwotICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERh
dGEoKTsKKwogICAgIGZvciAodW5zaWduZWQgayA9IDA7IGsgPCBkZWxldGVDb3VudDsgaysrKQot
ICAgICAgICByZXNPYmotPnVuY2hlY2tlZFNldEluZGV4KGdsb2JhbERhdGEsIGssIGdldFByb3Bl
cnR5KGV4ZWMsIHRoaXNPYmosIGsgKyBiZWdpbikpOworICAgICAgICByZXNPYmotPnVuY2hlY2tl
ZFNldEluZGV4KGssIGdldFByb3BlcnR5KGV4ZWMsIHRoaXNPYmosIGsgKyBiZWdpbikpOwogCiAg
ICAgcmVzT2JqLT5zZXRMZW5ndGgoZGVsZXRlQ291bnQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9CYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaApp
bmRleCAwZjZhNjQ2NTRkOGQzYjJjMGUzMWFkMjFhZGE3ZjI4MjQzODBmMzdjLi5kYjJkMWQ3Y2Mx
YmRmN2JlNjM1ZDE5NjAxMzNjMDkzNDNlNzMzMGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9CYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyLmgKQEAg
LTM0LDkgKzM0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgQmF0Y2hlZFRyYW5zaXRp
b25PcHRpbWl6ZXIgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShCYXRjaGVkVHJhbnNp
dGlvbk9wdGltaXplcik7CiAgICAgcHVibGljOgotICAgICAgICBCYXRjaGVkVHJhbnNpdGlvbk9w
dGltaXplcihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTT2JqZWN0KiBvYmplY3QpCi0gICAg
ICAgICAgICA6IG1fZ2xvYmFsRGF0YSgmZ2xvYmFsRGF0YSkKLSAgICAgICAgICAgICwgbV9vYmpl
Y3Qob2JqZWN0KQorICAgICAgICBCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplcihKU09iamVjdCog
b2JqZWN0KQorICAgICAgICAgICAgOiBtX29iamVjdChvYmplY3QpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIGlmICghbV9vYmplY3QtPnN0cnVjdHVyZSgpLT5pc0RpY3Rpb25hcnkoKSkKICAgICAg
ICAgICAgICAgICBtX29iamVjdC0+c2V0U3RydWN0dXJlKFN0cnVjdHVyZTo6dG9DYWNoZWFibGVE
aWN0aW9uYXJ5VHJhbnNpdGlvbihtX29iamVjdC0+c3RydWN0dXJlKCkpKTsKQEAgLTQ0LDExICs0
MywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB+QmF0Y2hlZFRyYW5zaXRpb25PcHRp
bWl6ZXIoKQogICAgICAgICB7Ci0gICAgICAgICAgICBtX29iamVjdC0+ZmxhdHRlbkRpY3Rpb25h
cnlPYmplY3QoKm1fZ2xvYmFsRGF0YSk7CisgICAgICAgICAgICBtX29iamVjdC0+ZmxhdHRlbkRp
Y3Rpb25hcnlPYmplY3QoKTsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgSlNH
bG9iYWxEYXRhKiBtX2dsb2JhbERhdGE7CiAgICAgICAgIEpTT2JqZWN0KiBtX29iamVjdDsKICAg
ICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFu
Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbkNv
bnN0cnVjdG9yLmNwcAppbmRleCBjMzZiZTgyYjJhODhiODUyYmQ2MzkyNmE5YzY1NjUxMmE3YzNm
YmU1Li4wMTY3ZTAzN2U3MzkxOTU2ZWFiMjc4YTM3MWUzY2FiNmMyZTUwYTAwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5jcHAK
QEAgLTMxLDE3ICszMSwxNyBAQCBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEJvb2xlYW5Db25z
dHJ1Y3Rvcik7CiBCb29sZWFuQ29uc3RydWN0b3I6OkJvb2xlYW5Db25zdHJ1Y3RvcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRy
PFN0cnVjdHVyZT4gc3RydWN0dXJlLCBCb29sZWFuUHJvdG90eXBlKiBib29sZWFuUHJvdG90eXBl
KQogICAgIDogSW50ZXJuYWxGdW5jdGlvbigmZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmpl
Y3QsIHN0cnVjdHVyZSwgSWRlbnRpZmllcihleGVjLCBib29sZWFuUHJvdG90eXBlLT5jbGFzc0lu
Zm8oKS0+Y2xhc3NOYW1lKSkKIHsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVj
LT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIGJvb2xlYW5Q
cm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBib29s
ZWFuUHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CiAKICAgICAv
LyBuby4gb2YgYXJndW1lbnRzIGZvciBjb25zdHJ1Y3RvcgotICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0
aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsKKyAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBq
c051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0pOwogfQogCiAvLyBF
Q01BIDE1LjYuMgogSlNPYmplY3QqIGNvbnN0cnVjdEJvb2xlYW4oRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBBcmdMaXN0JiBhcmdzKQogewogICAgIEJvb2xlYW5PYmplY3QqIG9iaiA9IG5ldyAoZXhl
YykgQm9vbGVhbk9iamVjdChleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmJvb2xlYW5PYmpl
Y3RTdHJ1Y3R1cmUoKSk7Ci0gICAgb2JqLT5zZXRJbnRlcm5hbFZhbHVlKGV4ZWMtPmdsb2JhbERh
dGEoKSwganNCb29sZWFuKGFyZ3MuYXQoMCkudG9Cb29sZWFuKGV4ZWMpKSk7CisgICAgb2JqLT5z
ZXRJbnRlcm5hbFZhbHVlKGpzQm9vbGVhbihhcmdzLmF0KDApLnRvQm9vbGVhbihleGVjKSkpOwog
ICAgIHJldHVybiBvYmo7CiB9CiAKQEAgLTcyLDcgKzcyLDcgQEAgQ2FsbFR5cGUgQm9vbGVhbkNv
bnN0cnVjdG9yOjpnZXRDYWxsRGF0YShDYWxsRGF0YSYgY2FsbERhdGEpCiBKU09iamVjdCogY29u
c3RydWN0Qm9vbGVhbkZyb21JbW1lZGlhdGVCb29sZWFuKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBpbW1lZGlhdGVCb29sZWFuVmFsdWUpCiB7CiAgICAgQm9vbGVhbk9iamVjdCogb2JqID0gbmV3
IChleGVjKSBCb29sZWFuT2JqZWN0KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Ym9vbGVh
bk9iamVjdFN0cnVjdHVyZSgpKTsKLSAgICBvYmotPnNldEludGVybmFsVmFsdWUoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBpbW1lZGlhdGVCb29sZWFuVmFsdWUpOworICAgIG9iai0+c2V0SW50ZXJuYWxW
YWx1ZShpbW1lZGlhdGVCb29sZWFuVmFsdWUpOwogICAgIHJldHVybiBvYmo7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAKaW5k
ZXggNzMxNDU2ZWUxYjgyNDA1NmVlYzgzOGViYjZmNWRkMTQxZGQ0NmExMC4uN2ZmZDA5NTg4YTMz
MTk0Njc5OTM0NjVhN2Q2OGQwYTY0YmZkNTc4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm9vbGVhblByb3RvRnVuY1ZhbHVlT2Yo
RXhlY1N0YXRlKik7CiBCb29sZWFuUHJvdG90eXBlOjpCb29sZWFuUHJvdG90eXBlKEV4ZWNTdGF0
ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8
U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1
cmUpCiAgICAgOiBCb29sZWFuT2JqZWN0KHN0cnVjdHVyZSkKIHsKLSAgICBzZXRJbnRlcm5hbFZh
bHVlKGV4ZWMtPmdsb2JhbERhdGEoKSwganNCb29sZWFuKGZhbHNlKSk7CisgICAgc2V0SW50ZXJu
YWxWYWx1ZShqc0Jvb2xlYW4oZmFsc2UpKTsKIAogICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91
dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZXhlYywg
Z2xvYmFsT2JqZWN0LCBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSwgMCwgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLnRvU3RyaW5nLCBib29sZWFuUHJvdG9GdW5jVG9TdHJpbmcpLCBEb250RW51bSk7
CiAgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMp
IE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZUZ1bmN0
aW9uU3RydWN0dXJlLCAwLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudmFsdWVPZiwgYm9vbGVhblBy
b3RvRnVuY1ZhbHVlT2YpLCBEb250RW51bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db25zZXJ2YXRpdmVTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29uc2VydmF0aXZlU2V0LmNwcAppbmRleCBiYzhiZDZkZmVhOTgyNzQxMWNjMmI5
OWM4Yjk4ODZmZWYzYzllZDIyLi45MzBmZTRhYTIxOTViZDg4NjliYjU3MTQ2YmQ0N2I2N2M3NTQ4
YzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zZXJ2YXRp
dmVTZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNlcnZhdGl2
ZVNldC5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgaW5saW5lIGJvb2wgaXNQb2ludGVyQWxpZ25lZCh2
b2lkKiBwKQogdm9pZCBDb25zZXJ2YXRpdmVTZXQ6Omdyb3coKQogewogICAgIHNpemVfdCBuZXdD
YXBhY2l0eSA9IG1fY2FwYWNpdHkgPT0gaW5saW5lQ2FwYWNpdHkgPyBub25JbmxpbmVDYXBhY2l0
eSA6IG1fY2FwYWNpdHkgKiAyOwotICAgIERlcHJlY2F0ZWRQdHI8SlNDZWxsPiogbmV3U2V0ID0g
c3RhdGljX2Nhc3Q8RGVwcmVjYXRlZFB0cjxKU0NlbGw+Kj4oT1NBbGxvY2F0b3I6OnJlc2VydmVB
bmRDb21taXQobmV3Q2FwYWNpdHkgKiBzaXplb2YoSlNDZWxsKikpKTsKKyAgICBKU0NlbGwqKiBu
ZXdTZXQgPSBzdGF0aWNfY2FzdDxKU0NlbGwqKj4oT1NBbGxvY2F0b3I6OnJlc2VydmVBbmRDb21t
aXQobmV3Q2FwYWNpdHkgKiBzaXplb2YoSlNDZWxsKikpKTsKICAgICBtZW1jcHkobmV3U2V0LCBt
X3NldCwgbV9zaXplICogc2l6ZW9mKEpTQ2VsbCopKTsKICAgICBpZiAobV9zZXQgIT0gbV9pbmxp
bmVTZXQpCiAgICAgICAgIE9TQWxsb2NhdG9yOjpkZWNvbW1pdEFuZFJlbGVhc2UobV9zZXQsIG1f
Y2FwYWNpdHkgKiBzaXplb2YoSlNDZWxsKikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29uc2VydmF0aXZlU2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db25zZXJ2YXRpdmVTZXQuaAppbmRleCBlN2MyYzRhYjFjNTdmZmI5ZWQ4NDAyZjAy
OGZlMzk3NjMzMjI4ZTBjLi4yNzZiZTg5YTI1YzRmYWQ4N2UzMWFjMWJjMGY1NjA3MjFjNjViOWNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zZXJ2YXRpdmVT
ZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zZXJ2YXRpdmVTZXQu
aApAQCAtNDksMTAgKzQ5LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBncm93KCk7CiAKICAgICBI
ZWFwKiBtX2hlYXA7Ci0gICAgRGVwcmVjYXRlZFB0cjxKU0NlbGw+KiBtX3NldDsKKyAgICBKU0Nl
bGwqKiBtX3NldDsKICAgICBzaXplX3QgbV9zaXplOwogICAgIHNpemVfdCBtX2NhcGFjaXR5Owot
ICAgIERlcHJlY2F0ZWRQdHI8SlNDZWxsPiBtX2lubGluZVNldFtpbmxpbmVDYXBhY2l0eV07Cisg
ICAgSlNDZWxsKiBtX2lubGluZVNldFtpbmxpbmVDYXBhY2l0eV07CiB9OwogCiBpbmxpbmUgQ29u
c2VydmF0aXZlU2V0OjpDb25zZXJ2YXRpdmVTZXQoSGVhcCogaGVhcCkKQEAgLTY2LDEzICs2Niwx
MyBAQCBpbmxpbmUgQ29uc2VydmF0aXZlU2V0OjpDb25zZXJ2YXRpdmVTZXQoSGVhcCogaGVhcCkK
IGlubGluZSBDb25zZXJ2YXRpdmVTZXQ6On5Db25zZXJ2YXRpdmVTZXQoKQogewogICAgIGlmICht
X3NldCAhPSBtX2lubGluZVNldCkKLSAgICAgICAgT1NBbGxvY2F0b3I6OmRlY29tbWl0QW5kUmVs
ZWFzZShtX3NldCwgbV9jYXBhY2l0eSAqIHNpemVvZihEZXByZWNhdGVkUHRyPEpTQ2VsbD4qKSk7
CisgICAgICAgIE9TQWxsb2NhdG9yOjpkZWNvbW1pdEFuZFJlbGVhc2UobV9zZXQsIG1fY2FwYWNp
dHkgKiBzaXplb2YoSlNDZWxsKikpOwogfQogCiBpbmxpbmUgdm9pZCBDb25zZXJ2YXRpdmVTZXQ6
Om1hcmsoTWFya1N0YWNrJiBtYXJrU3RhY2spCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtX3NpemU7ICsraSkKLSAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmbV9zZXRbaV0pOworICAg
ICAgICBtYXJrU3RhY2suYXBwZW5kKG1fc2V0W2ldKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNw
cAppbmRleCBmMWYzOTU2YTgzZDU2Y2EzZjlmMGVkZTM5MzMzMjU3ZjM4ZDcwZTlmLi5kY2JlMTJk
YTIzNjE3Njc0YTc3MjhjMTc3OTI4M2FjYTc0M2RmYTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKQEAgLTYxLDEzICs2MSwxMyBA
QCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlVVRDKEV4ZWNTdGF0ZSop
OwogRGF0ZUNvbnN0cnVjdG9yOjpEYXRlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0
cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSwgRGF0ZVByb3Rv
dHlwZSogZGF0ZVByb3RvdHlwZSkKICAgICA6IEludGVybmFsRnVuY3Rpb24oJmV4ZWMtPmdsb2Jh
bERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIElkZW50aWZpZXIoZXhlYywgZGF0ZVBy
b3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSkpCiB7Ci0gICAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5w
cm90b3R5cGUsIGRhdGVQcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
KTsKKyAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5wcm90b3R5cGUsIGRhdGVQcm90b3R5cGUsIERvbnRFbnVtfERvbnREZWxldGV8UmVhZE9ubHkp
OwogCiAgICAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAo
ZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKGV4ZWMsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
RnVuY3Rpb25TdHJ1Y3R1cmUsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wYXJzZSwgZGF0ZVBh
cnNlKSwgRG9udEVudW0pOwogICAgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlv
bihleGVjLCBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLCA3LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
VVRDLCBkYXRlVVRDKSwgRG9udEVudW0pOwogICAgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0
VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLCAwLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkubm93LCBkYXRlTm93KSwgRG9udEVudW0pOwogCi0gICAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5s
ZW5ndGgsIGpzTnVtYmVyKDcpLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7Cisg
ICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVu
Z3RoLCBqc051bWJlcig3KSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOwogfQog
CiAvLyBFQ01BIDE1LjkuMwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGF0ZUluc3RhbmNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJ
bnN0YW5jZS5jcHAKaW5kZXggODAzOGFmNTM4N2I5N2I5ZTgyODYxOTI1OWMyODg4NGVjZTA3ZGMz
Mi4uODU2MmUyZDQ2Mzc2NmI2OWVkNGRhODI2NDEwNjZmNzJjNDk3YzcyNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuY3BwCkBAIC0zNCwyMiArMzQs
MjIgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBEYXRlSW5zdGFuY2U6Omlu
Zm8gPSB7IkRhdGUiLCAwLCAwLCAwfTsKIAotRGF0ZUluc3RhbmNlOjpEYXRlSW5zdGFuY2UoRXhl
Y1N0YXRlKiBleGVjLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSkKK0Rh
dGVJbnN0YW5jZTo6RGF0ZUluc3RhbmNlKEV4ZWNTdGF0ZSosIE5vbk51bGxQYXNzUmVmUHRyPFN0
cnVjdHVyZT4gc3RydWN0dXJlKQogICAgIDogSlNXcmFwcGVyT2JqZWN0KHN0cnVjdHVyZSkKIHsK
LSAgICBzZXRJbnRlcm5hbFZhbHVlKGV4ZWMtPmdsb2JhbERhdGEoKSwganNOYU4oKSk7CisgICAg
c2V0SW50ZXJuYWxWYWx1ZShqc05hTigpKTsKIH0KIAotRGF0ZUluc3RhbmNlOjpEYXRlSW5zdGFu
Y2UoRXhlY1N0YXRlKiBleGVjLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVy
ZSwgZG91YmxlIHRpbWUpCitEYXRlSW5zdGFuY2U6OkRhdGVJbnN0YW5jZShFeGVjU3RhdGUqLCBO
b25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgZG91YmxlIHRpbWUpCiAgICAg
OiBKU1dyYXBwZXJPYmplY3Qoc3RydWN0dXJlKQogewotICAgIHNldEludGVybmFsVmFsdWUoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBqc051bWJlcih0aW1lQ2xpcCh0aW1lKSkpOworICAgIHNldEludGVy
bmFsVmFsdWUoanNOdW1iZXIodGltZUNsaXAodGltZSkpKTsKIH0KIAogRGF0ZUluc3RhbmNlOjpE
YXRlSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBkb3VibGUgdGltZSkKICAgICA6IEpTV3JhcHBl
ck9iamVjdChleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmRhdGVTdHJ1Y3R1cmUoKSkKIHsK
LSAgICBzZXRJbnRlcm5hbFZhbHVlKGV4ZWMtPmdsb2JhbERhdGEoKSwganNOdW1iZXIodGltZUNs
aXAodGltZSkpKTsKKyAgICBzZXRJbnRlcm5hbFZhbHVlKGpzTnVtYmVyKHRpbWVDbGlwKHRpbWUp
KSk7CiB9CiAKIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBEYXRlSW5zdGFuY2U6OmNhbGN1bGF0
ZUdyZWdvcmlhbkRhdGVUaW1lKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKaW5kZXggOTRiNjlhODVkNGIy
Y2UyNGI5YmE5ZjgxNzEzMzNlZTk1OGExOGVkYS4uMDg1Y2IzM2MxNTQ2ODVkNTFlZDI2NjM1N2Jh
Y2UzMWFiNTJlMjViZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGF0ZVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0
ZVByb3RvdHlwZS5jcHAKQEAgLTg0NSw3ICs4NDUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRUaW1lKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIGRvdWJs
ZSBtaWxsaSA9IHRpbWVDbGlwKGV4ZWMtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGV4ZWMpKTsKICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKG1pbGxpKTsKLSAgICB0aGlzRGF0ZU9iai0+c2V0
SW50ZXJuYWxWYWx1ZShleGVjLT5nbG9iYWxEYXRhKCksIHJlc3VsdCk7CisgICAgdGhpc0RhdGVP
YmotPnNldEludGVybmFsVmFsdWUocmVzdWx0KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7CiB9CiAKQEAgLTg2MCw3ICs4NjAsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
c2V0TmV3VmFsdWVGcm9tVGltZUFyZ3MoRXhlY1N0YXRlKiBleGVjLCBpbnQgbnVtQXJnc1RvVXNl
LAogICAgIAogICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgpIHx8IGlzbmFuKG1pbGxpKSkg
ewogICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTmFOKCk7Ci0gICAgICAgIHRoaXNEYXRlT2Jq
LT5zZXRJbnRlcm5hbFZhbHVlKGV4ZWMtPmdsb2JhbERhdGEoKSwgcmVzdWx0KTsKKyAgICAgICAg
dGhpc0RhdGVPYmotPnNldEludGVybmFsVmFsdWUocmVzdWx0KTsKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgIH0KICAgICAgCkBAIC04NzcsMTIgKzg3NywxMiBA
QCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgc2V0TmV3VmFsdWVGcm9tVGltZUFyZ3MoRXhlY1N0YXRl
KiBleGVjLCBpbnQgbnVtQXJnc1RvVXNlLAogICAgIGdyZWdvcmlhbkRhdGVUaW1lLmNvcHlGcm9t
KCpvdGhlcik7CiAgICAgaWYgKCFmaWxsU3RydWN0dXJlc1VzaW5nVGltZUFyZ3MoZXhlYywgbnVt
QXJnc1RvVXNlLCAmbXMsICZncmVnb3JpYW5EYXRlVGltZSkpIHsKICAgICAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc05hTigpOwotICAgICAgICB0aGlzRGF0ZU9iai0+c2V0SW50ZXJuYWxWYWx1ZShl
eGVjLT5nbG9iYWxEYXRhKCksIHJlc3VsdCk7CisgICAgICAgIHRoaXNEYXRlT2JqLT5zZXRJbnRl
cm5hbFZhbHVlKHJlc3VsdCk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKICAgICB9IAogICAgIAogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoZ3JlZ29yaWFu
RGF0ZVRpbWVUb01TKGV4ZWMsIGdyZWdvcmlhbkRhdGVUaW1lLCBtcywgaW5wdXRJc1VUQykpOwot
ICAgIHRoaXNEYXRlT2JqLT5zZXRJbnRlcm5hbFZhbHVlKGV4ZWMtPmdsb2JhbERhdGEoKSwgcmVz
dWx0KTsKKyAgICB0aGlzRGF0ZU9iai0+c2V0SW50ZXJuYWxWYWx1ZShyZXN1bHQpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIApAQCAtODk1LDcgKzg5NSw3IEBAIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBzZXROZXdWYWx1ZUZyb21EYXRlQXJncyhFeGVjU3RhdGUqIGV4
ZWMsIGludCBudW1BcmdzVG9Vc2UsCiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFz
RGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFleGVjLT5hcmd1bWVudENvdW50KCkp
IHsKICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc05hTigpOwotICAgICAgICB0aGlzRGF0ZU9i
ai0+c2V0SW50ZXJuYWxWYWx1ZShleGVjLT5nbG9iYWxEYXRhKCksIHJlc3VsdCk7CisgICAgICAg
IHRoaXNEYXRlT2JqLT5zZXRJbnRlcm5hbFZhbHVlKHJlc3VsdCk7CiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICB9ICAgICAgCiAgICAgCkBAIC05MTcsMTIgKzkx
NywxMiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgc2V0TmV3VmFsdWVGcm9tRGF0ZUFyZ3MoRXhl
Y1N0YXRlKiBleGVjLCBpbnQgbnVtQXJnc1RvVXNlLAogICAgIAogICAgIGlmICghZmlsbFN0cnVj
dHVyZXNVc2luZ0RhdGVBcmdzKGV4ZWMsIG51bUFyZ3NUb1VzZSwgJm1zLCAmZ3JlZ29yaWFuRGF0
ZVRpbWUpKSB7CiAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOYU4oKTsKLSAgICAgICAgdGhp
c0RhdGVPYmotPnNldEludGVybmFsVmFsdWUoZXhlYy0+Z2xvYmFsRGF0YSgpLCByZXN1bHQpOwor
ICAgICAgICB0aGlzRGF0ZU9iai0+c2V0SW50ZXJuYWxWYWx1ZShyZXN1bHQpOwogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgfSAKICAgICAgICAgICAgCiAgICAg
SlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihncmVnb3JpYW5EYXRlVGltZVRvTVMoZXhlYywgZ3Jl
Z29yaWFuRGF0ZVRpbWUsIG1zLCBpbnB1dElzVVRDKSk7Ci0gICAgdGhpc0RhdGVPYmotPnNldElu
dGVybmFsVmFsdWUoZXhlYy0+Z2xvYmFsRGF0YSgpLCByZXN1bHQpOworICAgIHRoaXNEYXRlT2Jq
LT5zZXRJbnRlcm5hbFZhbHVlKHJlc3VsdCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwogfQogCkBAIC0xMDE5LDcgKzEwMTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRZZWFyKEV4ZWNTdGF0ZSogZXhlYykKICAgICBEYXRlSW5z
dGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgICAgIAogICAg
IGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgpKSB7IAogICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9
IGpzTmFOKCk7Ci0gICAgICAgIHRoaXNEYXRlT2JqLT5zZXRJbnRlcm5hbFZhbHVlKGV4ZWMtPmds
b2JhbERhdGEoKSwgcmVzdWx0KTsKKyAgICAgICAgdGhpc0RhdGVPYmotPnNldEludGVybmFsVmFs
dWUocmVzdWx0KTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAg
IH0KICAgICAKQEAgLTEwNDEsMTMgKzEwNDEsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBkYXRlUHJvdG9GdW5jU2V0WWVhcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgZG91YmxlIHll
YXIgPSBleGVjLT5hcmd1bWVudCgwKS50b0ludGVnZXJQcmVzZXJ2ZU5hTihleGVjKTsKICAgICBp
ZiAoIWlzZmluaXRlKHllYXIpKSB7CiAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOYU4oKTsK
LSAgICAgICAgdGhpc0RhdGVPYmotPnNldEludGVybmFsVmFsdWUoZXhlYy0+Z2xvYmFsRGF0YSgp
LCByZXN1bHQpOworICAgICAgICB0aGlzRGF0ZU9iai0+c2V0SW50ZXJuYWxWYWx1ZShyZXN1bHQp
OwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgfQogICAgICAg
ICAgICAgCiAgICAgZ3JlZ29yaWFuRGF0ZVRpbWUueWVhciA9IHRvSW50MzIoKHllYXIgPiA5OSB8
fCB5ZWFyIDwgMCkgPyB5ZWFyIC0gMTkwMCA6IHllYXIpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0g
anNOdW1iZXIoZ3JlZ29yaWFuRGF0ZVRpbWVUb01TKGV4ZWMsIGdyZWdvcmlhbkRhdGVUaW1lLCBt
cywgZmFsc2UpKTsKLSAgICB0aGlzRGF0ZU9iai0+c2V0SW50ZXJuYWxWYWx1ZShleGVjLT5nbG9i
YWxEYXRhKCksIHJlc3VsdCk7CisgICAgdGhpc0RhdGVPYmotPnNldEludGVybmFsVmFsdWUocmVz
dWx0KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAKaW5kZXgg
MmU1M2I5NTQwMGU3MmNhZWExMzgwZWNlODFiNWQ1NWZhZDgyOTVkOS4uNDMyNmE0ZGYyMzM4YmNj
ZTk0YTA1MTZkNGI1NGM4M2YwZjEzNGJkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTMzLDggKzMzLDggQEAgRXJyb3JD
b25zdHJ1Y3Rvcjo6RXJyb3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QKICAgICA6IEludGVybmFsRnVuY3Rpb24oJmV4ZWMtPmdsb2JhbERh
dGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIElkZW50aWZpZXIoZXhlYywgZXJyb3JQcm90
b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUpKQogewogICAgIC8vIEVDTUEgMTUuMTEuMy4x
IEVycm9yLnByb3RvdHlwZQotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmds
b2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgZXJyb3JQcm90b3R5
cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKLSAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5s
ZW5ndGgsIGpzTnVtYmVyKDEpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7Cisg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3Rv
dHlwZSwgZXJyb3JQcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsK
KyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVu
Z3RoLCBqc051bWJlcigxKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQog
CiAvLyBFQ01BIDE1LjkuMwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXJyb3JJbnN0YW5jZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJv
ckluc3RhbmNlLmNwcAppbmRleCBhNjIwOGQ1MjY4OWEzZmU5NzYxMGEzY2JjZTc2ZjBhMDY1YzFl
MGExLi4wZjMxNTNjNTA2ZDk4YTllMDhiMGJhMGFiZTM0ZGIxNjk2OThhYjZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcApAQCAtMjksMTQg
KzI5LDE0IEBAIEVycm9ySW5zdGFuY2U6OkVycm9ySW5zdGFuY2UoSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1CiAgICAgOiBKU09iamVjdChzdHJ1Y3R1
cmUpCiAgICAgLCBtX2FwcGVuZFNvdXJjZVRvTWVzc2FnZShmYWxzZSkKIHsKLSAgICBwdXREaXJl
Y3QoKmdsb2JhbERhdGEsIGdsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPm1lc3NhZ2UsIGpzU3Ry
aW5nKGdsb2JhbERhdGEsICIiKSk7CisgICAgcHV0RGlyZWN0KGdsb2JhbERhdGEtPnByb3BlcnR5
TmFtZXMtPm1lc3NhZ2UsIGpzU3RyaW5nKGdsb2JhbERhdGEsICIiKSk7CiB9CiAKIEVycm9ySW5z
dGFuY2U6OkVycm9ySW5zdGFuY2UoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBOb25OdWxsUGFz
c1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkKICAg
ICA6IEpTT2JqZWN0KHN0cnVjdHVyZSkKICAgICAsIG1fYXBwZW5kU291cmNlVG9NZXNzYWdlKGZh
bHNlKQogewotICAgIHB1dERpcmVjdCgqZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+cHJvcGVydHlO
YW1lcy0+bWVzc2FnZSwganNTdHJpbmcoZ2xvYmFsRGF0YSwgbWVzc2FnZSkpOworICAgIHB1dERp
cmVjdChnbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5tZXNzYWdlLCBqc1N0cmluZyhnbG9iYWxE
YXRhLCBtZXNzYWdlKSk7CiB9CiAKIEVycm9ySW5zdGFuY2UqIEVycm9ySW5zdGFuY2U6OmNyZWF0
ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4g
c3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCmluZGV4IGI0ZTBhN2NlNmNkMDVlMzg5
MDAwN2Q1NjVmOGM5NGFkNWZkNDMzMjEuLmQ4ZmM4MjlkNzk4N2E3ZDgwYWIxN2YyOTk5NGZkM2I4
MGRmNTBmYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclBy
b3RvdHlwZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgRXJyb3JQcm90b3R5cGU6OkVycm9yUHJvdG90
eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm8KIHsK
ICAgICAvLyBUaGUgY29uc3RydWN0b3Igd2lsbCBiZSBhZGRlZCBsYXRlciBpbiBFcnJvckNvbnN0
cnVjdG9yJ3MgY29uc3RydWN0b3IKIAotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4
ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLm5hbWUsIGpzTm9udHJpdmlh
bFN0cmluZyhleGVjLCAiRXJyb3IiKSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmco
ZXhlYywgIkVycm9yIiksIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRU
cmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKGV4ZWMsIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIDAsIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS50b1N0cmluZywgZXJyb3JQcm90b0Z1bmNUb1N0cmluZyksIERvbnRFbnVtKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25z
dHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0
cnVjdG9yLmNwcAppbmRleCA5MzNiMTFmOTljNGI2YjNkNGVlZTQyODI5NWVjZjZmZTJmZmExNWNk
Li40NWI0ODAyM2Y4MGViZDZkYTcyMTQ1MmQ4ODhhYjI2N2RmN2Q0ZmM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcApA
QCAtNDAsMTAgKzQwLDEwIEBAIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoRnVuY3Rpb25Db25z
dHJ1Y3Rvcik7CiBGdW5jdGlvbkNvbnN0cnVjdG9yOjpGdW5jdGlvbkNvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQ
dHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIEZ1bmN0aW9uUHJvdG90eXBlKiBmdW5jdGlvblByb3Rv
dHlwZSkKICAgICA6IEludGVybmFsRnVuY3Rpb24oJmV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFs
T2JqZWN0LCBzdHJ1Y3R1cmUsIElkZW50aWZpZXIoZXhlYywgZnVuY3Rpb25Qcm90b3R5cGUtPmNs
YXNzSW5mbygpLT5jbGFzc05hbWUpKQogewotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgZnVu
Y3Rpb25Qcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBl
LCBmdW5jdGlvblByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwog
CiAgICAgLy8gTnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgY29uc3RydWN0b3IKLSAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250RW51
bSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+cHJvcGVydHlOYW1lcygp
Lmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsK
IH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0aEZ1
bmN0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCmluZGV4IGU2NTE1MzgxMTEw
MzE4ZDNhZDc4NjU5OWFkNTY5YTZjYWM0NGY0YTAuLmNkNzczOWQxOWNmN2I4ODc2ZmNlNzEyYzAx
NjIwODdmMDlkYmY1M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Qcm90b0Z1bmNDYWxsKEV4ZWNTdGF0ZSopOwog
RnVuY3Rpb25Qcm90b3R5cGU6OkZ1bmN0aW9uUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBz
dHJ1Y3R1cmUpCiAgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRhKCksIGds
b2JhbE9iamVjdCwgc3RydWN0dXJlLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubnVsbElkZW50aWZp
ZXIpCiB7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgp
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigwKSwgRG9udERlbGV0ZSB8
IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDApLCBEb250RGVsZXRlIHwgUmVh
ZE9ubHkgfCBEb250RW51bSk7CiB9CiAKIHZvaWQgRnVuY3Rpb25Qcm90b3R5cGU6OmFkZEZ1bmN0
aW9uUHJvcGVydGllcyhFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIE5hdGl2ZUZ1bmN0aW9u
V3JhcHBlcioqIGNhbGxGdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKiogYXBwbHlGdW5j
dGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNl
dHRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3Bw
CmluZGV4IDJiOWY0NDQyMzFmOGE1ZDNlMjk4OTU0OGVkOTg0MGIwYzczMDE1NzcuLjdlNTQwNTNm
OTZjY2U3M2I1NTYwYTgyZTVlODEwZTFlNWQyODBmNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcApAQCAtMzMsOSArMzMsOSBAQCB2b2lkIEdl
dHRlclNldHRlcjo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQogICAgIEpTQ2Vs
bDo6bWFya0NoaWxkcmVuKG1hcmtTdGFjayk7CiAKICAgICBpZiAobV9nZXR0ZXIpCi0gICAgICAg
IG1hcmtTdGFjay5hcHBlbmQoJm1fZ2V0dGVyKTsKKyAgICAgICAgbWFya1N0YWNrLmFwcGVuZCht
X2dldHRlcik7CiAgICAgaWYgKG1fc2V0dGVyKQotICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZt
X3NldHRlcik7CisgICAgICAgIG1hcmtTdGFjay5hcHBlbmQobV9zZXR0ZXIpOwogfQogCiBib29s
IEdldHRlclNldHRlcjo6aXNHZXR0ZXJTZXR0ZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaAppbmRleCBmZmFiOTRkZmIyNWZiZjg0MDBhYjBl
OWY4NmIxOGViZjI0M2Y4YzkzLi5lN2IxOTM4Y2U5NmJjMGI1MmYxNjRlOWQzYmEzNzI3NTlhODYz
YWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaApA
QCAtMzgsMTUgKzM4LDE3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAg
R2V0dGVyU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIDogSlNDZWxsKGV4ZWMt
Pmdsb2JhbERhdGEoKS5nZXR0ZXJTZXR0ZXJTdHJ1Y3R1cmUuZ2V0KCkpCisgICAgICAgICAgICAs
IG1fZ2V0dGVyKDApCisgICAgICAgICAgICAsIG1fc2V0dGVyKDApCiAgICAgICAgIHsKICAgICAg
ICAgfQogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBtYXJrQ2hpbGRyZW4oTWFya1N0YWNrJik7CiAK
LSAgICAgICAgSlNPYmplY3QqIGdldHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fZ2V0dGVyLmdldCgp
OyB9Ci0gICAgICAgIHZvaWQgc2V0R2V0dGVyKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNP
YmplY3QqIGdldHRlcikgeyBtX2dldHRlci5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgZ2V0dGVyKTsg
fQotICAgICAgICBKU09iamVjdCogc2V0dGVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXR0ZXIuZ2V0
KCk7IH0KLSAgICAgICAgdm9pZCBzZXRTZXR0ZXIoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBK
U09iamVjdCogc2V0dGVyKSB7IG1fc2V0dGVyLnNldChnbG9iYWxEYXRhLCB0aGlzLCBzZXR0ZXIp
OyB9CisgICAgICAgIEpTT2JqZWN0KiBnZXR0ZXIoKSBjb25zdCB7IHJldHVybiBtX2dldHRlcjsg
fQorICAgICAgICB2b2lkIHNldEdldHRlcihKU09iamVjdCogZ2V0dGVyKSB7IG1fZ2V0dGVyID0g
Z2V0dGVyOyB9CisgICAgICAgIEpTT2JqZWN0KiBzZXR0ZXIoKSBjb25zdCB7IHJldHVybiBtX3Nl
dHRlcjsgfQorICAgICAgICB2b2lkIHNldFNldHRlcihKU09iamVjdCogc2V0dGVyKSB7IG1fc2V0
dGVyID0gc2V0dGVyOyB9CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3Jl
YXRlU3RydWN0dXJlKEpTVmFsdWUgcHJvdG90eXBlKQogICAgICAgICB7CiAgICAgICAgICAgICBy
ZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUocHJvdG90eXBlLCBUeXBlSW5mbyhHZXR0ZXJTZXR0ZXJU
eXBlLCBPdmVycmlkZXNNYXJrQ2hpbGRyZW4pLCBBbm9ueW1vdXNTbG90Q291bnQpOwpAQCAtNTQs
OCArNTYsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFs
IGJvb2wgaXNHZXR0ZXJTZXR0ZXIoKSBjb25zdDsKIAotICAgICAgICBXcml0ZUJhcnJpZXI8SlNP
YmplY3Q+IG1fZ2V0dGVyOwotICAgICAgICBXcml0ZUJhcnJpZXI8SlNPYmplY3Q+IG1fc2V0dGVy
OyAgCisgICAgICAgIEpTT2JqZWN0KiBtX2dldHRlcjsKKyAgICAgICAgSlNPYmplY3QqIG1fc2V0
dGVyOyAgCiAgICAgfTsKIAogICAgIEdldHRlclNldHRlciogYXNHZXR0ZXJTZXR0ZXIoSlNWYWx1
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HbG9iYWxFdmFs
RnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2xvYmFsRXZhbEZ1
bmN0aW9uLmNwcAppbmRleCAyNzIwN2UyODRmNGEzMjc5MDk4ZmU0MTc2MTc1MjU2YjlhOGIzZjZi
Li4zYWQ0NjQ0NWQ1NzZlZTUzZjVjNGIyNzhkNzdiOTJlY2NkZTdhZmE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HbG9iYWxFdmFsRnVuY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dsb2JhbEV2YWxGdW5jdGlvbi5jcHAKQEAg
LTM0LDcgKzM0LDcgQEAgQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChHbG9iYWxFdmFsRnVuY3Rp
b24pOwogCiBHbG9iYWxFdmFsRnVuY3Rpb246Okdsb2JhbEV2YWxGdW5jdGlvbihFeGVjU3RhdGUq
IGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPFN0
cnVjdHVyZT4gc3RydWN0dXJlLCBpbnQgbGVuLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBOYXRp
dmVGdW5jdGlvbiBmdW5jdGlvbiwgSlNHbG9iYWxPYmplY3QqIGNhY2hlZEdsb2JhbE9iamVjdCkK
ICAgICA6IFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBs
ZW4sIG5hbWUsIGZ1bmN0aW9uKQotICAgICwgbV9jYWNoZWRHbG9iYWxPYmplY3QoZXhlYy0+Z2xv
YmFsRGF0YSgpLCB0aGlzLCBjYWNoZWRHbG9iYWxPYmplY3QpCisgICAgLCBtX2NhY2hlZEdsb2Jh
bE9iamVjdChjYWNoZWRHbG9iYWxPYmplY3QpCiB7CiAgICAgQVNTRVJUX0FSRyhjYWNoZWRHbG9i
YWxPYmplY3QsIGNhY2hlZEdsb2JhbE9iamVjdCk7CiB9CkBAIC00Miw3ICs0Miw3IEBAIEdsb2Jh
bEV2YWxGdW5jdGlvbjo6R2xvYmFsRXZhbEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iCiB2b2lkIEdsb2JhbEV2YWxGdW5jdGlvbjo6bWFya0NoaWxkcmVu
KE1hcmtTdGFjayYgbWFya1N0YWNrKQogewogICAgIFByb3RvdHlwZUZ1bmN0aW9uOjptYXJrQ2hp
bGRyZW4obWFya1N0YWNrKTsKLSAgICBtYXJrU3RhY2suYXBwZW5kKCZtX2NhY2hlZEdsb2JhbE9i
amVjdCk7CisgICAgbWFya1N0YWNrLmFwcGVuZChtX2NhY2hlZEdsb2JhbE9iamVjdCk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2xvYmFsRXZhbEZ1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HbG9iYWxFdmFsRnVuY3Rpb24uaAppbmRleCAxM2YwOTQ2ZmEzMTBhNjM0NjhiZTA4YTIyODBh
NjMyNmZiYzZiMDQ2Li5iODg5Y2E5OGE5YzU1OTFmNGM5OTBhMjllNDI5NjMwOTUyNjEzNWExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HbG9iYWxFdmFsRnVuY3Rp
b24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HbG9iYWxFdmFsRnVuY3Rp
b24uaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBHbG9iYWxF
dmFsRnVuY3Rpb24gOiBwdWJsaWMgUHJvdG90eXBlRnVuY3Rpb24gewogICAgIHB1YmxpYzoKICAg
ICAgICAgR2xvYmFsRXZhbEZ1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgTm9u
TnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgaW50IGxlbiwgY29uc3QgSWRlbnRpZmllciYsIE5h
dGl2ZUZ1bmN0aW9uLCBKU0dsb2JhbE9iamVjdCogZXhwZWN0ZWRUaGlzT2JqZWN0KTsKLSAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIGNhY2hlZEdsb2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2FjaGVkR2xvYmFsT2JqZWN0LmdldCgpOyB9CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBjYWNo
ZWRHbG9iYWxPYmplY3QoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEdsb2JhbE9iamVjdDsgfQog
CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpT
VmFsdWUgcHJvdG90eXBlKSAKICAgICAgICAgeyAKQEAgLTQ2LDcgKzQ2LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCB2b2lkIG1hcmtDaGlsZHJlbihN
YXJrU3RhY2smKTsKIAotICAgICAgICBXcml0ZUJhcnJpZXI8SlNHbG9iYWxPYmplY3Q+IG1fY2Fj
aGVkR2xvYmFsT2JqZWN0OworICAgICAgICBKU0dsb2JhbE9iamVjdCogbV9jYWNoZWRHbG9iYWxP
YmplY3Q7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0hlYXAuY3BwCmluZGV4IDIzNzQ0NDhkMGQyNjMzYmI0MjYzYzI2N2U2OWRhYTZmYzNl
ODFhZmQuLjllYzM3OTliMDRjYjBhNWRhYmM0ZjU5NGEwN2QzMDM4MTRmOWU5NTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0hlYXAuY3BwCkBAIC0yMDQsNyArMjA0LDcgQEAgdm9pZCBI
ZWFwOjptYXJrUHJvdGVjdGVkT2JqZWN0cyhNYXJrU3RhY2smIG1hcmtTdGFjaykKIHsKICAgICBQ
cm90ZWN0Q291bnRTZXQ6Oml0ZXJhdG9yIGVuZCA9IG1fcHJvdGVjdGVkVmFsdWVzLmVuZCgpOwog
ICAgIGZvciAoUHJvdGVjdENvdW50U2V0OjppdGVyYXRvciBpdCA9IG1fcHJvdGVjdGVkVmFsdWVz
LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgbWFya1N0YWNrLmRlcHJlY2F0ZWRB
cHBlbmQoJml0LT5maXJzdCk7CisgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoaXQtPmZpcnN0KTsK
IH0KIAogdm9pZCBIZWFwOjpwdXNoVGVtcFNvcnRWZWN0b3IoVmVjdG9yPFZhbHVlU3RyaW5nUGFp
cj4qIHRlbXBWZWN0b3IpCkBAIC0yMjksNyArMjI5LDcgQEAgdm9pZCBIZWFwOjptYXJrVGVtcFNv
cnRWZWN0b3JzKE1hcmtTdGFjayYgbWFya1N0YWNrKQogICAgICAgICBWZWN0b3I8VmFsdWVTdHJp
bmdQYWlyPjo6aXRlcmF0b3IgdmVjdG9yRW5kID0gdGVtcFNvcnRpbmdWZWN0b3ItPmVuZCgpOwog
ICAgICAgICBmb3IgKFZlY3RvcjxWYWx1ZVN0cmluZ1BhaXI+OjppdGVyYXRvciB2ZWN0b3JJdCA9
IHRlbXBTb3J0aW5nVmVjdG9yLT5iZWdpbigpOyB2ZWN0b3JJdCAhPSB2ZWN0b3JFbmQ7ICsrdmVj
dG9ySXQpIHsKICAgICAgICAgICAgIGlmICh2ZWN0b3JJdC0+Zmlyc3QpCi0gICAgICAgICAgICAg
ICAgbWFya1N0YWNrLmRlcHJlY2F0ZWRBcHBlbmQoJnZlY3Rvckl0LT5maXJzdCk7CisgICAgICAg
ICAgICAgICAgbWFya1N0YWNrLmFwcGVuZCh2ZWN0b3JJdC0+Zmlyc3QpOwogICAgICAgICB9CiAg
ICAgfQogfQpAQCAtMjgwLDcgKzI4MCw3IEBAIHZvaWQgSGVhcDo6bWFya1Jvb3RzKCkKICAgICBp
ZiAobV9tYXJrTGlzdFNldCAmJiBtX21hcmtMaXN0U2V0LT5zaXplKCkpCiAgICAgICAgIE1hcmtl
ZEFyZ3VtZW50QnVmZmVyOjptYXJrTGlzdHMobWFya1N0YWNrLCAqbV9tYXJrTGlzdFNldCk7CiAg
ICAgaWYgKG1fZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uKQotICAgICAgICBtYXJrU3RhY2suYXBwZW5k
KCZtX2dsb2JhbERhdGEtPmV4Y2VwdGlvbik7CisgICAgICAgIG1hcmtTdGFjay5hcHBlbmQobV9n
bG9iYWxEYXRhLT5leGNlcHRpb24pOwogICAgIGlmIChtX2dsb2JhbERhdGEtPmZpcnN0U3RyaW5n
aWZpZXJUb01hcmspCiAgICAgICAgIEpTT05PYmplY3Q6Om1hcmtTdHJpbmdpZmllcnMobWFya1N0
YWNrLCBtX2dsb2JhbERhdGEtPmZpcnN0U3RyaW5naWZpZXJUb01hcmspOwogICAgIG1hcmtTdGFj
ay5kcmFpbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
ZXJuYWxGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5h
bEZ1bmN0aW9uLmNwcAppbmRleCBmMTlhZTBkOGFiMGI5YTM1MzZiZjBiZWU4YzcxOTVjZDVhOGFl
MGI4Li4wYThkOWRlZmNkNGNmYTNlMmExYmY1M2Y0NzFhNWM5ODJjOWEwNmM3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcApAQCAt
NDYsNyArNDYsNyBAQCBJbnRlcm5hbEZ1bmN0aW9uOjpJbnRlcm5hbEZ1bmN0aW9uKE5vbk51bGxQ
YXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlKQogSW50ZXJuYWxGdW5jdGlvbjo6SW50ZXJu
YWxGdW5jdGlvbihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBjb25zdCBJ
ZGVudGlmaWVyJiBuYW1lKQogICAgIDogSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0KGdsb2JhbE9i
amVjdCwgc3RydWN0dXJlKQogewotICAgIHB1dERpcmVjdCgqZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0
YS0+cHJvcGVydHlOYW1lcy0+bmFtZSwganNTdHJpbmcoZ2xvYmFsRGF0YSwgbmFtZS5pc051bGwo
KSA/ICIiIDogbmFtZS51c3RyaW5nKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51
bSk7CisgICAgcHV0RGlyZWN0KGdsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzU3Ry
aW5nKGdsb2JhbERhdGEsIG5hbWUuaXNOdWxsKCkgPyAiIiA6IG5hbWUudXN0cmluZygpKSwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQogCiBjb25zdCBVU3RyaW5nJiBJbnRl
cm5hbEZ1bmN0aW9uOjpuYW1lKEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQVBJVmFsdWVXcmFwcGVyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FQSVZhbHVlV3JhcHBlci5oCmluZGV4IGExMTNlOTE5ODY0ZDU4
NTIxMmUzNzUxZWY4MDg1OGI3NjE5ZTI4ZTguLjEwZGVkNGNkNDQxOGJkOWJjZDhmM2MxMGM1N2Q5
YmFlNTBmNmY4MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QVBJVmFsdWVXcmFwcGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
UElWYWx1ZVdyYXBwZXIuaApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBj
bGFzcyBKU0FQSVZhbHVlV3JhcHBlciA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBmcmllbmQg
SlNWYWx1ZSBqc0FQSVZhbHVlV3JhcHBlcihFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKICAgICBwdWJs
aWM6Ci0gICAgICAgIEpTVmFsdWUgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlLmdldCgp
OyB9CisgICAgICAgIEpTVmFsdWUgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CiAK
ICAgICAgICAgdmlydHVhbCBib29sIGlzQVBJVmFsdWVXcmFwcGVyKCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQogCkBAIC00NCwxMiArNDQsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0
ZToKICAgICAgICAgSlNBUElWYWx1ZVdyYXBwZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZh
bHVlKQogICAgICAgICAgICAgOiBKU0NlbGwoZXhlYy0+Z2xvYmFsRGF0YSgpLmFwaVdyYXBwZXJT
dHJ1Y3R1cmUuZ2V0KCkpCisgICAgICAgICAgICAsIG1fdmFsdWUodmFsdWUpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIG1fdmFsdWUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgdmFsdWUp
OwogICAgICAgICAgICAgQVNTRVJUKCF2YWx1ZS5pc0NlbGwoKSk7CiAgICAgICAgIH0KIAotICAg
ICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gbV92YWx1ZTsKKyAgICAgICAgSlNWYWx1ZSBtX3Zh
bHVlOwogICAgIH07CiAKICAgICBpbmxpbmUgSlNWYWx1ZSBqc0FQSVZhbHVlV3JhcHBlcihFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBY3RpdmF0aW9uLmNwcAppbmRleCAyZjc5NGY5ZjI2MzAxNTFlOGVjMjI2MjA2Y2Q0
MjZmN2NmYjhjN2FmLi40Mjg0MDNkMjU4ZjU1YTlmODg0YzZjNjJlZTc4MWYyMDExMTllZGY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAKQEAg
LTYxLDEyICs2MSwxMiBAQCB2b2lkIEpTQWN0aXZhdGlvbjo6bWFya0NoaWxkcmVuKE1hcmtTdGFj
ayYgbWFya1N0YWNrKQogICAgIHNpemVfdCBudW1QYXJhbWV0ZXJzTWludXNUaGlzID0gZCgpLT5m
dW5jdGlvbkV4ZWN1dGFibGUtPnBhcmFtZXRlckNvdW50KCk7CiAKICAgICBzaXplX3QgY291bnQg
PSBudW1QYXJhbWV0ZXJzTWludXNUaGlzOwotICAgIG1hcmtTdGFjay5kZXByZWNhdGVkQXBwZW5k
VmFsdWVzKHJlZ2lzdGVyQXJyYXksIGNvdW50KTsKKyAgICBtYXJrU3RhY2suYXBwZW5kVmFsdWVz
KHJlZ2lzdGVyQXJyYXksIGNvdW50KTsKIAogICAgIHNpemVfdCBudW1WYXJzID0gZCgpLT5mdW5j
dGlvbkV4ZWN1dGFibGUtPmNhcHR1cmVkVmFyaWFibGVDb3VudCgpOwogCiAgICAgLy8gU2tpcCB0
aGUgY2FsbCBmcmFtZSwgd2hpY2ggc2l0cyBiZXR3ZWVuIHRoZSBwYXJhbWV0ZXJzIGFuZCB2YXJz
LgotICAgIG1hcmtTdGFjay5kZXByZWNhdGVkQXBwZW5kVmFsdWVzKHJlZ2lzdGVyQXJyYXkgKyBj
b3VudCArIFJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSwgbnVtVmFycywgTWF5Q29u
dGFpbk51bGxWYWx1ZXMpOworICAgIG1hcmtTdGFjay5hcHBlbmRWYWx1ZXMocmVnaXN0ZXJBcnJh
eSArIGNvdW50ICsgUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplLCBudW1WYXJzLCBN
YXlDb250YWluTnVsbFZhbHVlcyk7CiB9CiAKIGlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3lt
Ym9sVGFibGVHZXQoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
IHNsb3QpCkBAIC0xNDQsNyArMTQ0LDcgQEAgYm9vbCBKU0FjdGl2YXRpb246OmdldE93blByb3Bl
cnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnQKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSlNBY3RpdmF0aW9uOjpwdXQoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYgc2xvdCkKK3ZvaWQgSlNBY3RpdmF0aW9uOjpwdXQoRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7CiAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZh
bHVlKSA9PSBIZWFwOjpoZWFwKHRoaXMpKTsKIApAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgSlNB
Y3RpdmF0aW9uOjpwdXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUKICAgICAvLyBwcm9wZXJ0aWVzIGFyZSBub24tc3RhbmRhcmQgZXh0ZW5z
aW9ucyB0aGF0IG90aGVyIGltcGxlbWVudGF0aW9ucyBkbyBub3QKICAgICAvLyBleHBvc2UgaW4g
dGhlIGFjdGl2YXRpb24gb2JqZWN0LgogICAgIEFTU0VSVCghaGFzR2V0dGVyU2V0dGVyUHJvcGVy
dGllcygpKTsKLSAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCAwLCB0cnVlLCBzbG90KTsKKyAgICBwdXREaXJlY3QocHJvcGVydHlOYW1lLCB2YWx1
ZSwgMCwgdHJ1ZSwgc2xvdCk7CiB9CiAKIC8vIEZJWE1FOiBNYWtlIHRoaXMgZnVuY3Rpb24gaG9u
b3IgUmVhZE9ubHkgKGNvbnN0KSBhbmQgRG9udEVudW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheS5jcHAKaW5kZXggY2UyNWY3YjNlMzJmMjlhM2ZkZjhlYTZmYWMzNGVlNWJk
MDNlYzNmNS4uNTU2NjAzYmRjZGM3YzEwMWQ2NTdhM2NkNjk2ODE5YTA1ZDE4NjczMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKQEAgLTE4OCw5ICsxODgsOSBA
QCBKU0FycmF5OjpKU0FycmF5KE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJl
LCB1bnNpZ25lZCBpbml0aWFsTGVuZ3RoLAogI2VuZGlmCiAgICAgICAgIG1fc3RvcmFnZS0+bV9s
ZW5ndGggPSBpbml0aWFsTGVuZ3RoOwogICAgICAgICBtX3N0b3JhZ2UtPm1fbnVtVmFsdWVzSW5W
ZWN0b3IgPSAwOwotICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHZlY3RvciA9IG1fc3Rv
cmFnZS0+bV92ZWN0b3I7CisgICAgICAgIEpTVmFsdWUqIHZlY3RvciA9IG1fc3RvcmFnZS0+bV92
ZWN0b3I7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5pdGlhbENhcGFjaXR5OyAr
K2kpCi0gICAgICAgICAgICB2ZWN0b3JbaV0uY2xlYXIoKTsKKyAgICAgICAgICAgIHZlY3Rvcltp
XSA9IEpTVmFsdWUoKTsKICAgICB9CiAKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CkBAIC0xOTgs
NyArMTk4LDcgQEAgSlNBcnJheTo6SlNBcnJheShOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+
IHN0cnVjdHVyZSwgdW5zaWduZWQgaW5pdGlhbExlbmd0aCwKICAgICBIZWFwOjpoZWFwKHRoaXMp
LT5yZXBvcnRFeHRyYU1lbW9yeUNvc3Qoc3RvcmFnZVNpemUoaW5pdGlhbENhcGFjaXR5KSk7CiB9
CiAKLUpTQXJyYXk6OkpTQXJyYXkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBOb25OdWxsUGFz
c1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgY29uc3QgQXJnTGlzdCYgbGlzdCkKK0pTQXJy
YXk6OkpTQXJyYXkoTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIGNvbnN0
IEFyZ0xpc3QmIGxpc3QpCiAgICAgOiBKU09iamVjdChzdHJ1Y3R1cmUpCiB7CiAgICAgdW5zaWdu
ZWQgaW5pdGlhbENhcGFjaXR5ID0gbGlzdC5zaXplKCk7CkBAIC0yMjUsMTIgKzIyNSwxMiBAQCBK
U0FycmF5OjpKU0FycmF5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgTm9uTnVsbFBhc3NSZWZQ
dHI8U3RydWN0dXJlPiBzdHJ1Y3R1cgogI2VuZGlmCiAKICAgICBzaXplX3QgaSA9IDA7Ci0gICAg
V3JpdGVCYXJyaWVyPFVua25vd24+KiB2ZWN0b3IgPSBtX3N0b3JhZ2UtPm1fdmVjdG9yOworICAg
IEpTVmFsdWUqIHZlY3RvciA9IG1fc3RvcmFnZS0+bV92ZWN0b3I7CiAgICAgQXJnTGlzdDo6Y29u
c3RfaXRlcmF0b3IgZW5kID0gbGlzdC5lbmQoKTsKICAgICBmb3IgKEFyZ0xpc3Q6OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gbGlzdC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQsICsraSkKLSAgICAgICAg
dmVjdG9yW2ldLnNldChnbG9iYWxEYXRhLCB0aGlzLCAqaXQpOworICAgICAgICB2ZWN0b3JbaV0g
PSAqaXQ7CiAgICAgZm9yICg7IGkgPCBpbml0aWFsU3RvcmFnZTsgaSsrKQotICAgICAgICB2ZWN0
b3JbaV0uY2xlYXIoKTsKKyAgICAgICAgdmVjdG9yW2ldID0gSlNWYWx1ZSgpOwogCiAgICAgY2hl
Y2tDb25zaXN0ZW5jeSgpOwogCkBAIC0yNTcsMTYgKzI1NywxNiBAQCBib29sIEpTQXJyYXk6Omdl
dE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIFByb3BlcnR5U2xv
dCYgc2xvdAogICAgIH0KIAogICAgIGlmIChpIDwgbV92ZWN0b3JMZW5ndGgpIHsKLSAgICAgICAg
V3JpdGVCYXJyaWVyPFVua25vd24+JiB2YWx1ZVNsb3QgPSBzdG9yYWdlLT5tX3ZlY3RvcltpXTsK
KyAgICAgICAgSlNWYWx1ZSYgdmFsdWVTbG90ID0gc3RvcmFnZS0+bV92ZWN0b3JbaV07CiAgICAg
ICAgIGlmICh2YWx1ZVNsb3QpIHsKLSAgICAgICAgICAgIHNsb3Quc2V0VmFsdWVTbG90KHZhbHVl
U2xvdC5zbG90KCkpOworICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZVNsb3QoJnZhbHVlU2xvdCk7
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoU3Bh
cnNlQXJyYXlWYWx1ZU1hcCogbWFwID0gc3RvcmFnZS0+bV9zcGFyc2VWYWx1ZU1hcCkgewogICAg
ICAgICBpZiAoaSA+PSBNSU5fU1BBUlNFX0FSUkFZX0lOREVYKSB7CiAgICAgICAgICAgICBTcGFy
c2VBcnJheVZhbHVlTWFwOjppdGVyYXRvciBpdCA9IG1hcC0+ZmluZChpKTsKICAgICAgICAgICAg
IGlmIChpdCAhPSBtYXAtPmVuZCgpKSB7Ci0gICAgICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZVNs
b3QoaXQtPnNlY29uZC5zbG90KCkpOworICAgICAgICAgICAgICAgIHNsb3Quc2V0VmFsdWVTbG90
KCZpdC0+c2Vjb25kKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQpAQCAtMzA1LDE2ICszMDUsMTYgQEAgYm9vbCBKU0FycmF5OjpnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXIKICAgICAgICAgaWYgKGkgPj0gc3RvcmFnZS0+bV9sZW5ndGgpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIGlmIChpIDwgbV92ZWN0b3JMZW5ndGgpIHsKLSAgICAgICAgICAg
IFdyaXRlQmFycmllcjxVbmtub3duPiYgdmFsdWUgPSBzdG9yYWdlLT5tX3ZlY3RvcltpXTsKKyAg
ICAgICAgICAgIEpTVmFsdWUmIHZhbHVlID0gc3RvcmFnZS0+bV92ZWN0b3JbaV07CiAgICAgICAg
ICAgICBpZiAodmFsdWUpIHsKLSAgICAgICAgICAgICAgICBkZXNjcmlwdG9yLnNldERlc2NyaXB0
b3IodmFsdWUuZ2V0KCksIDApOworICAgICAgICAgICAgICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3Jp
cHRvcih2YWx1ZSwgMCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0gZWxzZSBpZiAoU3BhcnNlQXJyYXlWYWx1ZU1hcCogbWFwID0gc3RvcmFn
ZS0+bV9zcGFyc2VWYWx1ZU1hcCkgewogICAgICAgICAgICAgaWYgKGkgPj0gTUlOX1NQQVJTRV9B
UlJBWV9JTkRFWCkgewogICAgICAgICAgICAgICAgIFNwYXJzZUFycmF5VmFsdWVNYXA6Oml0ZXJh
dG9yIGl0ID0gbWFwLT5maW5kKGkpOwogICAgICAgICAgICAgICAgIGlmIChpdCAhPSBtYXAtPmVu
ZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihpdC0+
c2Vjb25kLmdldCgpLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRvci5zZXREZXNj
cmlwdG9yKGl0LT5zZWNvbmQsIDApOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0zNTksMTMgKzM1OSwxMyBAQCB2
b2lkIEpTQXJyYXk6OnB1dChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFs
dWUpCiAgICAgfQogCiAgICAgaWYgKGkgPCBtX3ZlY3Rvckxlbmd0aCkgewotICAgICAgICBXcml0
ZUJhcnJpZXI8VW5rbm93bj4mIHZhbHVlU2xvdCA9IHN0b3JhZ2UtPm1fdmVjdG9yW2ldOworICAg
ICAgICBKU1ZhbHVlJiB2YWx1ZVNsb3QgPSBzdG9yYWdlLT5tX3ZlY3RvcltpXTsKICAgICAgICAg
aWYgKHZhbHVlU2xvdCkgewotICAgICAgICAgICAgdmFsdWVTbG90LnNldChleGVjLT5nbG9iYWxE
YXRhKCksIHRoaXMsIHZhbHVlKTsKKyAgICAgICAgICAgIHZhbHVlU2xvdCA9IHZhbHVlOwogICAg
ICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9Ci0gICAgICAgIHZhbHVlU2xvdC5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCB2YWx1
ZSk7CisgICAgICAgIHZhbHVlU2xvdCA9IHZhbHVlOwogICAgICAgICArK3N0b3JhZ2UtPm1fbnVt
VmFsdWVzSW5WZWN0b3I7CiAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICAgICAgcmV0
dXJuOwpAQCAtMzk1LDExICszOTUsMTEgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSlNBcnJheTo6cHV0
U2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHUKICAgICAg
ICAgICAgICAgICBzdG9yYWdlLT5tX3NwYXJzZVZhbHVlTWFwID0gbWFwOwogICAgICAgICAgICAg
fQogCi0gICAgICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gdGVtcDsKLSAgICAgICAgICAg
IHBhaXI8U3BhcnNlQXJyYXlWYWx1ZU1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1hcC0+
YWRkKGksIHRlbXApOwotICAgICAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQuc2V0KGV4ZWMt
Pmdsb2JhbERhdGEoKSwgdGhpcywgdmFsdWUpOwotICAgICAgICAgICAgaWYgKCFyZXN1bHQuc2Vj
b25kKSAvLyBwcmUtZXhpc3RpbmcgZW50cnkKKyAgICAgICAgICAgIHBhaXI8U3BhcnNlQXJyYXlW
YWx1ZU1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1hcC0+YWRkKGksIHZhbHVlKTsKKyAg
ICAgICAgICAgIGlmICghcmVzdWx0LnNlY29uZCkgeyAvLyBwcmUtZXhpc3RpbmcgZW50cnkKKyAg
ICAgICAgICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IHZhbHVlOwogICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgc2l6ZV90IGNhcGFjaXR5
ID0gbWFwLT5jYXBhY2l0eSgpOwogICAgICAgICAgICAgaWYgKGNhcGFjaXR5ICE9IHN0b3JhZ2Ut
PnJlcG9ydGVkTWFwQ2FwYWNpdHkpIHsKQEAgLTQxNSw3ICs0MTUsNyBAQCBORVZFUl9JTkxJTkUg
dm9pZCBKU0FycmF5OjpwdXRTbG93Q2FzZShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIEpT
VmFsdWUgdmFsdQogICAgIGlmICghbWFwIHx8IG1hcC0+aXNFbXB0eSgpKSB7CiAgICAgICAgIGlm
IChpbmNyZWFzZVZlY3Rvckxlbmd0aChpICsgMSkpIHsKICAgICAgICAgICAgIHN0b3JhZ2UgPSBt
X3N0b3JhZ2U7Ci0gICAgICAgICAgICBzdG9yYWdlLT5tX3ZlY3RvcltpXS5zZXQoZXhlYy0+Z2xv
YmFsRGF0YSgpLCB0aGlzLCB2YWx1ZSk7CisgICAgICAgICAgICBzdG9yYWdlLT5tX3ZlY3Rvcltp
XSA9IHZhbHVlOwogICAgICAgICAgICAgKytzdG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yOwog
ICAgICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogICAgICAgICB9IGVsc2UKQEAgLTQ1Nywx
OSArNDU3LDE4IEBAIE5FVkVSX0lOTElORSB2b2lkIEpTQXJyYXk6OnB1dFNsb3dDYXNlKEV4ZWNT
dGF0ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1CiAgICAgc3RvcmFnZSA9IG1fc3Rv
cmFnZTsKICAgICAKICAgICB1bnNpZ25lZCB2ZWN0b3JMZW5ndGggPSBtX3ZlY3Rvckxlbmd0aDsK
LSAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHZlY3RvciA9IHN0b3JhZ2UtPm1fdmVjdG9yOwor
ICAgIEpTVmFsdWUqIHZlY3RvciA9IHN0b3JhZ2UtPm1fdmVjdG9yOwogCiAgICAgaWYgKG5ld051
bVZhbHVlc0luVmVjdG9yID09IHN0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3IgKyAxKSB7CiAg
ICAgICAgIGZvciAodW5zaWduZWQgaiA9IHZlY3Rvckxlbmd0aDsgaiA8IG5ld1ZlY3Rvckxlbmd0
aDsgKytqKQotICAgICAgICAgICAgdmVjdG9yW2pdLmNsZWFyKCk7CisgICAgICAgICAgICB2ZWN0
b3Jbal0gPSBKU1ZhbHVlKCk7CiAgICAgICAgIGlmIChpID4gTUlOX1NQQVJTRV9BUlJBWV9JTkRF
WCkKICAgICAgICAgICAgIG1hcC0+cmVtb3ZlKGkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGZv
ciAodW5zaWduZWQgaiA9IHZlY3Rvckxlbmd0aDsgaiA8IG1heCh2ZWN0b3JMZW5ndGgsIE1JTl9T
UEFSU0VfQVJSQVlfSU5ERVgpOyArK2opCi0gICAgICAgICAgICB2ZWN0b3Jbal0uY2xlYXIoKTsK
LSAgICAgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOwor
ICAgICAgICAgICAgdmVjdG9yW2pdID0gSlNWYWx1ZSgpOwogICAgICAgICBmb3IgKHVuc2lnbmVk
IGogPSBtYXgodmVjdG9yTGVuZ3RoLCBNSU5fU1BBUlNFX0FSUkFZX0lOREVYKTsgaiA8IG5ld1Zl
Y3Rvckxlbmd0aDsgKytqKQotICAgICAgICAgICAgdmVjdG9yW2pdLnNldChnbG9iYWxEYXRhLCB0
aGlzLCBtYXAtPnRha2UoaikuZ2V0KCkpOworICAgICAgICAgICAgdmVjdG9yW2pdID0gbWFwLT50
YWtlKGopOwogICAgIH0KIAogICAgIEFTU0VSVChpIDwgbmV3VmVjdG9yTGVuZ3RoKTsKQEAgLTQ3
Nyw3ICs0NzYsNyBAQCBORVZFUl9JTkxJTkUgdm9pZCBKU0FycmF5OjpwdXRTbG93Q2FzZShFeGVj
U3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdQogICAgIG1fdmVjdG9yTGVuZ3Ro
ID0gbmV3VmVjdG9yTGVuZ3RoOwogICAgIHN0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3IgPSBu
ZXdOdW1WYWx1ZXNJblZlY3RvcjsKIAotICAgIHN0b3JhZ2UtPm1fdmVjdG9yW2ldLnNldChleGVj
LT5nbG9iYWxEYXRhKCksIHRoaXMsIHZhbHVlKTsKKyAgICBzdG9yYWdlLT5tX3ZlY3RvcltpXSA9
IHZhbHVlOwogCiAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogCkBAIC01MDQsMTIgKzUwMywxMiBA
QCBib29sIEpTQXJyYXk6OmRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQg
aSkKICAgICBBcnJheVN0b3JhZ2UqIHN0b3JhZ2UgPSBtX3N0b3JhZ2U7CiAgICAgCiAgICAgaWYg
KGkgPCBtX3ZlY3Rvckxlbmd0aCkgewotICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIHZh
bHVlU2xvdCA9IHN0b3JhZ2UtPm1fdmVjdG9yW2ldOworICAgICAgICBKU1ZhbHVlJiB2YWx1ZVNs
b3QgPSBzdG9yYWdlLT5tX3ZlY3RvcltpXTsKICAgICAgICAgaWYgKCF2YWx1ZVNsb3QpIHsKICAg
ICAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgfQotICAgICAgICB2YWx1ZVNsb3QuY2xlYXIoKTsKKyAgICAgICAgdmFsdWVTbG90
ID0gSlNWYWx1ZSgpOwogICAgICAgICAtLXN0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3I7CiAg
ICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC02MDYs
OSArNjA1LDkgQEAgYm9vbCBKU0FycmF5OjppbmNyZWFzZVZlY3Rvckxlbmd0aCh1bnNpZ25lZCBu
ZXdMZW5ndGgpCiAgICAgc3RvcmFnZSA9IG1fc3RvcmFnZSA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRy
PEFycmF5U3RvcmFnZSo+KHN0YXRpY19jYXN0PGNoYXIqPihiYXNlU3RvcmFnZSkgKyBtX2luZGV4
QmlhcyAqIHNpemVvZihKU1ZhbHVlKSk7CiAgICAgbV9zdG9yYWdlLT5tX2FsbG9jQmFzZSA9IGJh
c2VTdG9yYWdlOwogCi0gICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiB2ZWN0b3IgPSBzdG9yYWdl
LT5tX3ZlY3RvcjsKKyAgICBKU1ZhbHVlKiB2ZWN0b3IgPSBzdG9yYWdlLT5tX3ZlY3RvcjsKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSB2ZWN0b3JMZW5ndGg7IGkgPCBuZXdWZWN0b3JMZW5ndGg7ICsr
aSkKLSAgICAgICAgdmVjdG9yW2ldLmNsZWFyKCk7CisgICAgICAgIHZlY3RvcltpXSA9IEpTVmFs
dWUoKTsKIAogICAgIG1fdmVjdG9yTGVuZ3RoID0gbmV3VmVjdG9yTGVuZ3RoOwogICAgIApAQCAt
NjY3LDkgKzY2Niw5IEBAIHZvaWQgSlNBcnJheTo6c2V0TGVuZ3RoKHVuc2lnbmVkIG5ld0xlbmd0
aCkKICAgICBpZiAobmV3TGVuZ3RoIDwgbGVuZ3RoKSB7CiAgICAgICAgIHVuc2lnbmVkIHVzZWRW
ZWN0b3JMZW5ndGggPSBtaW4obGVuZ3RoLCBtX3ZlY3Rvckxlbmd0aCk7CiAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IG5ld0xlbmd0aDsgaSA8IHVzZWRWZWN0b3JMZW5ndGg7ICsraSkgewotICAg
ICAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+JiB2YWx1ZVNsb3QgPSBzdG9yYWdlLT5tX3Zl
Y3RvcltpXTsKKyAgICAgICAgICAgIEpTVmFsdWUmIHZhbHVlU2xvdCA9IHN0b3JhZ2UtPm1fdmVj
dG9yW2ldOwogICAgICAgICAgICAgYm9vbCBoYWRWYWx1ZSA9IHZhbHVlU2xvdDsKLSAgICAgICAg
ICAgIHZhbHVlU2xvdC5jbGVhcigpOworICAgICAgICAgICAgdmFsdWVTbG90ID0gSlNWYWx1ZSgp
OwogICAgICAgICAgICAgc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvciAtPSBoYWRWYWx1ZTsK
ICAgICAgICAgfQogCkBAIC03MDcsMTEgKzcwNiwxMSBAQCBKU1ZhbHVlIEpTQXJyYXk6OnBvcCgp
CiAgICAgSlNWYWx1ZSByZXN1bHQ7CiAKICAgICBpZiAobGVuZ3RoIDwgbV92ZWN0b3JMZW5ndGgp
IHsKLSAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+JiB2YWx1ZVNsb3QgPSBzdG9yYWdlLT5t
X3ZlY3RvcltsZW5ndGhdOworICAgICAgICBKU1ZhbHVlJiB2YWx1ZVNsb3QgPSBzdG9yYWdlLT5t
X3ZlY3RvcltsZW5ndGhdOwogICAgICAgICBpZiAodmFsdWVTbG90KSB7CiAgICAgICAgICAgICAt
LXN0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3I7Ci0gICAgICAgICAgICByZXN1bHQgPSB2YWx1
ZVNsb3QuZ2V0KCk7Ci0gICAgICAgICAgICB2YWx1ZVNsb3QuY2xlYXIoKTsKKyAgICAgICAgICAg
IHJlc3VsdCA9IHZhbHVlU2xvdDsKKyAgICAgICAgICAgIHZhbHVlU2xvdCA9IEpTVmFsdWUoKTsK
ICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICByZXN1bHQgPSBqc1VuZGVmaW5lZCgpOwogICAg
IH0gZWxzZSB7CkBAIC03MTksNyArNzE4LDcgQEAgSlNWYWx1ZSBKU0FycmF5Ojpwb3AoKQogICAg
ICAgICBpZiAoU3BhcnNlQXJyYXlWYWx1ZU1hcCogbWFwID0gc3RvcmFnZS0+bV9zcGFyc2VWYWx1
ZU1hcCkgewogICAgICAgICAgICAgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6aXRlcmF0b3IgaXQgPSBt
YXAtPmZpbmQobGVuZ3RoKTsKICAgICAgICAgICAgIGlmIChpdCAhPSBtYXAtPmVuZCgpKSB7Ci0g
ICAgICAgICAgICAgICAgcmVzdWx0ID0gaXQtPnNlY29uZC5nZXQoKTsKKyAgICAgICAgICAgICAg
ICByZXN1bHQgPSBpdC0+c2Vjb25kOwogICAgICAgICAgICAgICAgIG1hcC0+cmVtb3ZlKGl0KTsK
ICAgICAgICAgICAgICAgICBpZiAobWFwLT5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgZGVsZXRlIG1hcDsKQEAgLTc0Myw3ICs3NDIsNyBAQCB2b2lkIEpTQXJyYXk6OnB1c2goRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogICAgIEFycmF5U3RvcmFnZSogc3RvcmFnZSA9
IG1fc3RvcmFnZTsKIAogICAgIGlmIChzdG9yYWdlLT5tX2xlbmd0aCA8IG1fdmVjdG9yTGVuZ3Ro
KSB7Ci0gICAgICAgIHN0b3JhZ2UtPm1fdmVjdG9yW3N0b3JhZ2UtPm1fbGVuZ3RoXS5zZXQoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCB2YWx1ZSk7CisgICAgICAgIHN0b3JhZ2UtPm1fdmVjdG9y
W3N0b3JhZ2UtPm1fbGVuZ3RoXSA9IHZhbHVlOwogICAgICAgICArK3N0b3JhZ2UtPm1fbnVtVmFs
dWVzSW5WZWN0b3I7CiAgICAgICAgICsrc3RvcmFnZS0+bV9sZW5ndGg7CiAgICAgICAgIGNoZWNr
Q29uc2lzdGVuY3koKTsKQEAgLTc1NSw3ICs3NTQsNyBAQCB2b2lkIEpTQXJyYXk6OnB1c2goRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICBpZiAoIW1hcCB8fCBtYXAtPmlz
RW1wdHkoKSkgewogICAgICAgICAgICAgaWYgKGluY3JlYXNlVmVjdG9yTGVuZ3RoKHN0b3JhZ2Ut
Pm1fbGVuZ3RoICsgMSkpIHsKICAgICAgICAgICAgICAgICBzdG9yYWdlID0gbV9zdG9yYWdlOwot
ICAgICAgICAgICAgICAgIHN0b3JhZ2UtPm1fdmVjdG9yW3N0b3JhZ2UtPm1fbGVuZ3RoXS5zZXQo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgc3RvcmFn
ZS0+bV92ZWN0b3Jbc3RvcmFnZS0+bV9sZW5ndGhdID0gdmFsdWU7CiAgICAgICAgICAgICAgICAg
KytzdG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yOwogICAgICAgICAgICAgICAgICsrc3RvcmFn
ZS0+bV9sZW5ndGg7CiAgICAgICAgICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwpAQCAtODU4
LDkgKzg1Nyw5IEBAIHZvaWQgSlNBcnJheTo6dW5zaGlmdENvdW50KEV4ZWNTdGF0ZSogZXhlYywg
aW50IGNvdW50KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgV3JpdGVCYXJyaWVyPFVu
a25vd24+KiB2ZWN0b3IgPSBtX3N0b3JhZ2UtPm1fdmVjdG9yOworICAgIEpTVmFsdWUqIHZlY3Rv
ciA9IG1fc3RvcmFnZS0+bV92ZWN0b3I7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsg
aSsrKQotICAgICAgICB2ZWN0b3JbaV0uY2xlYXIoKTsKKyAgICAgICAgdmVjdG9yW2ldID0gSlNW
YWx1ZSgpOwogfQogCiB2b2lkIEpTQXJyYXk6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtT
dGFjaykKQEAgLTk0Miw3ICs5NDEsNyBAQCB2b2lkIEpTQXJyYXk6OnNvcnQoRXhlY1N0YXRlKiBl
eGVjKQogICAgIEhlYXA6OmhlYXAodGhpcyktPnB1c2hUZW1wU29ydFZlY3RvcigmdmFsdWVzKTsK
IAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoTm90SW5jbHVkaW5nVW5kZWZpbmVk
OyBpKyspIHsKLSAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IHN0b3JhZ2UtPm1fdmVjdG9yW2ldLmdl
dCgpOworICAgICAgICBKU1ZhbHVlIHZhbHVlID0gc3RvcmFnZS0+bV92ZWN0b3JbaV07CiAgICAg
ICAgIEFTU0VSVCghdmFsdWUuaXNVbmRlZmluZWQoKSk7CiAgICAgICAgIHZhbHVlc1tpXS5maXJz
dCA9IHZhbHVlOwogICAgIH0KQEAgLTk3NSwxMCArOTc0LDkgQEAgdm9pZCBKU0FycmF5Ojpzb3J0
KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgaW5jcmVhc2VWZWN0b3JMZW5ndGgobGVuZ3RoTm90
SW5jbHVkaW5nVW5kZWZpbmVkKTsKICAgICBpZiAoc3RvcmFnZS0+bV9sZW5ndGggPCBsZW5ndGhO
b3RJbmNsdWRpbmdVbmRlZmluZWQpCiAgICAgICAgIHN0b3JhZ2UtPm1fbGVuZ3RoID0gbGVuZ3Ro
Tm90SW5jbHVkaW5nVW5kZWZpbmVkOwotCi0gICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0g
ZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgICAgICAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGxlbmd0aE5vdEluY2x1ZGluZ1VuZGVmaW5lZDsgaSsrKQotICAgICAgICBzdG9yYWdlLT5tX3Zl
Y3RvcltpXS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgdmFsdWVzW2ldLmZpcnN0KTsKKyAgICAgICAg
c3RvcmFnZS0+bV92ZWN0b3JbaV0gPSB2YWx1ZXNbaV0uZmlyc3Q7CiAKICAgICBIZWFwOjpoZWFw
KHRoaXMpLT5wb3BUZW1wU29ydFZlY3RvcigmdmFsdWVzKTsKICAgICAKQEAgLTExMDcsMTQgKzEx
MDUsMTQgQEAgdm9pZCBKU0FycmF5Ojpzb3J0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBjb21w
YXJlRnVuY3Rpb24sIENhbGxUeXBlIGNhbGxUeXBlLAogCiAgICAgLy8gSXRlcmF0ZSBvdmVyIHRo
ZSBhcnJheSwgaWdub3JpbmcgbWlzc2luZyB2YWx1ZXMsIGNvdW50aW5nIHVuZGVmaW5lZCBvbmVz
LCBhbmQgaW5zZXJ0aW5nIGFsbCBvdGhlciBvbmVzIGludG8gdGhlIHRyZWUuCiAgICAgZm9yICg7
IG51bURlZmluZWQgPCB1c2VkVmVjdG9yTGVuZ3RoOyArK251bURlZmluZWQpIHsKLSAgICAgICAg
SlNWYWx1ZSB2ID0gc3RvcmFnZS0+bV92ZWN0b3JbbnVtRGVmaW5lZF0uZ2V0KCk7CisgICAgICAg
IEpTVmFsdWUgdiA9IHN0b3JhZ2UtPm1fdmVjdG9yW251bURlZmluZWRdOwogICAgICAgICBpZiAo
IXYgfHwgdi5pc1VuZGVmaW5lZCgpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIHRyZWUu
YWJzdHJhY3RvcigpLm1fbm9kZXNbbnVtRGVmaW5lZF0udmFsdWUgPSB2OwogICAgICAgICB0cmVl
Lmluc2VydChudW1EZWZpbmVkKTsKICAgICB9CiAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtRGVm
aW5lZDsgaSA8IHVzZWRWZWN0b3JMZW5ndGg7ICsraSkgewotICAgICAgICBKU1ZhbHVlIHYgPSBz
dG9yYWdlLT5tX3ZlY3RvcltpXS5nZXQoKTsKKyAgICAgICAgSlNWYWx1ZSB2ID0gc3RvcmFnZS0+
bV92ZWN0b3JbaV07CiAgICAgICAgIGlmICh2KSB7CiAgICAgICAgICAgICBpZiAodi5pc1VuZGVm
aW5lZCgpKQogICAgICAgICAgICAgICAgICsrbnVtVW5kZWZpbmVkOwpAQCAtMTE0Miw3ICsxMTQw
LDcgQEAgdm9pZCBKU0FycmF5Ojpzb3J0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBjb21wYXJl
RnVuY3Rpb24sIENhbGxUeXBlIGNhbGxUeXBlLAogCiAgICAgICAgIFNwYXJzZUFycmF5VmFsdWVN
YXA6Oml0ZXJhdG9yIGVuZCA9IG1hcC0+ZW5kKCk7CiAgICAgICAgIGZvciAoU3BhcnNlQXJyYXlW
YWx1ZU1hcDo6aXRlcmF0b3IgaXQgPSBtYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewot
ICAgICAgICAgICAgdHJlZS5hYnN0cmFjdG9yKCkubV9ub2Rlc1tudW1EZWZpbmVkXS52YWx1ZSA9
IGl0LT5zZWNvbmQuZ2V0KCk7CisgICAgICAgICAgICB0cmVlLmFic3RyYWN0b3IoKS5tX25vZGVz
W251bURlZmluZWRdLnZhbHVlID0gaXQtPnNlY29uZDsKICAgICAgICAgICAgIHRyZWUuaW5zZXJ0
KG51bURlZmluZWQpOwogICAgICAgICAgICAgKytudW1EZWZpbmVkOwogICAgICAgICB9CkBAIC0x
MTU5LDE5ICsxMTU3LDE4IEBAIHZvaWQgSlNBcnJheTo6c29ydChFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgY29tcGFyZUZ1bmN0aW9uLCBDYWxsVHlwZSBjYWxsVHlwZSwKICAgICAvLyBDb3B5IHRo
ZSB2YWx1ZXMgYmFjayBpbnRvIG1fc3RvcmFnZS4KICAgICBBVkxUcmVlPEFWTFRyZWVBYnN0cmFj
dG9yRm9yQXJyYXlDb21wYXJlLCA0ND46Okl0ZXJhdG9yIGl0ZXI7CiAgICAgaXRlci5zdGFydF9p
dGVyX2xlYXN0KHRyZWUpOwotICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmds
b2JhbERhdGEoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtRGVmaW5lZDsgKytp
KSB7Ci0gICAgICAgIHN0b3JhZ2UtPm1fdmVjdG9yW2ldLnNldChnbG9iYWxEYXRhLCB0aGlzLCB0
cmVlLmFic3RyYWN0b3IoKS5tX25vZGVzWyppdGVyXS52YWx1ZSk7CisgICAgICAgIHN0b3JhZ2Ut
Pm1fdmVjdG9yW2ldID0gdHJlZS5hYnN0cmFjdG9yKCkubV9ub2Rlc1sqaXRlcl0udmFsdWU7CiAg
ICAgICAgICsraXRlcjsKICAgICB9CiAKICAgICAvLyBQdXQgdW5kZWZpbmVkIHZhbHVlcyBiYWNr
IGluLgogICAgIGZvciAodW5zaWduZWQgaSA9IG51bURlZmluZWQ7IGkgPCBuZXdVc2VkVmVjdG9y
TGVuZ3RoOyArK2kpCi0gICAgICAgIHN0b3JhZ2UtPm1fdmVjdG9yW2ldLnNldFVuZGVmaW5lZCgp
OworICAgICAgICBzdG9yYWdlLT5tX3ZlY3RvcltpXSA9IGpzVW5kZWZpbmVkKCk7CiAKICAgICAv
LyBFbnN1cmUgdGhhdCB1bnVzZWQgdmFsdWVzIGluIHRoZSB2ZWN0b3IgYXJlIHplcm9lZCBvdXQu
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gbmV3VXNlZFZlY3Rvckxlbmd0aDsgaSA8IHVzZWRWZWN0
b3JMZW5ndGg7ICsraSkKLSAgICAgICAgc3RvcmFnZS0+bV92ZWN0b3JbaV0uY2xlYXIoKTsKKyAg
ICAgICAgc3RvcmFnZS0+bV92ZWN0b3JbaV0gPSBKU1ZhbHVlKCk7CiAKICAgICBzdG9yYWdlLT5t
X251bVZhbHVlc0luVmVjdG9yID0gbmV3VXNlZFZlY3Rvckxlbmd0aDsKIApAQCAtMTE4MiwxNCAr
MTE3OSwxNCBAQCB2b2lkIEpTQXJyYXk6OmZpbGxBcmdMaXN0KEV4ZWNTdGF0ZSogZXhlYywgTWFy
a2VkQXJndW1lbnRCdWZmZXImIGFyZ3MpCiB7CiAgICAgQXJyYXlTdG9yYWdlKiBzdG9yYWdlID0g
bV9zdG9yYWdlOwogCi0gICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiB2ZWN0b3IgPSBzdG9yYWdl
LT5tX3ZlY3RvcjsKKyAgICBKU1ZhbHVlKiB2ZWN0b3IgPSBzdG9yYWdlLT5tX3ZlY3RvcjsKICAg
ICB1bnNpZ25lZCB2ZWN0b3JFbmQgPSBtaW4oc3RvcmFnZS0+bV9sZW5ndGgsIG1fdmVjdG9yTGVu
Z3RoKTsKICAgICB1bnNpZ25lZCBpID0gMDsKICAgICBmb3IgKDsgaSA8IHZlY3RvckVuZDsgKytp
KSB7Ci0gICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiYgdiA9IHZlY3RvcltpXTsKKyAgICAg
ICAgSlNWYWx1ZSYgdiA9IHZlY3RvcltpXTsKICAgICAgICAgaWYgKCF2KQogICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGFyZ3MuYXBwZW5kKHYuZ2V0KCkpOworICAgICAgICBhcmdzLmFwcGVu
ZCh2KTsKICAgICB9CiAKICAgICBmb3IgKDsgaSA8IHN0b3JhZ2UtPm1fbGVuZ3RoOyArK2kpCkBA
IC0xMjAwLDE0ICsxMTk3LDE0IEBAIHZvaWQgSlNBcnJheTo6Y29weVRvUmVnaXN0ZXJzKEV4ZWNT
dGF0ZSogZXhlYywgUmVnaXN0ZXIqIGJ1ZmZlciwgdWludDMyX3QgbWF4U2l6CiB7CiAgICAgQVNT
RVJUKG1fc3RvcmFnZS0+bV9sZW5ndGggPj0gbWF4U2l6ZSk7CiAgICAgVU5VU0VEX1BBUkFNKG1h
eFNpemUpOwotICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogdmVjdG9yID0gbV9zdG9yYWdlLT5t
X3ZlY3RvcjsKKyAgICBKU1ZhbHVlKiB2ZWN0b3IgPSBtX3N0b3JhZ2UtPm1fdmVjdG9yOwogICAg
IHVuc2lnbmVkIHZlY3RvckVuZCA9IG1pbihtYXhTaXplLCBtX3ZlY3Rvckxlbmd0aCk7CiAgICAg
dW5zaWduZWQgaSA9IDA7CiAgICAgZm9yICg7IGkgPCB2ZWN0b3JFbmQ7ICsraSkgewotICAgICAg
ICBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIHYgPSB2ZWN0b3JbaV07CisgICAgICAgIEpTVmFsdWUm
IHYgPSB2ZWN0b3JbaV07CiAgICAgICAgIGlmICghdikKICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBidWZmZXJbaV0gPSB2LmdldCgpOworICAgICAgICBidWZmZXJbaV0gPSB2OwogICAgIH0K
IAogICAgIGZvciAoOyBpIDwgbWF4U2l6ZTsgKytpKQpAQCAtMTIyNiwxOCArMTIyMywxNyBAQCB1
bnNpZ25lZCBKU0FycmF5Ojpjb21wYWN0Rm9yU29ydGluZygpCiAgICAgdW5zaWduZWQgbnVtVW5k
ZWZpbmVkID0gMDsKIAogICAgIGZvciAoOyBudW1EZWZpbmVkIDwgdXNlZFZlY3Rvckxlbmd0aDsg
KytudW1EZWZpbmVkKSB7Ci0gICAgICAgIEpTVmFsdWUgdiA9IHN0b3JhZ2UtPm1fdmVjdG9yW251
bURlZmluZWRdLmdldCgpOworICAgICAgICBKU1ZhbHVlIHYgPSBzdG9yYWdlLT5tX3ZlY3Rvcltu
dW1EZWZpbmVkXTsKICAgICAgICAgaWYgKCF2IHx8IHYuaXNVbmRlZmluZWQoKSkKICAgICAgICAg
ICAgIGJyZWFrOwogICAgIH0KLQogICAgIGZvciAodW5zaWduZWQgaSA9IG51bURlZmluZWQ7IGkg
PCB1c2VkVmVjdG9yTGVuZ3RoOyArK2kpIHsKLSAgICAgICAgSlNWYWx1ZSB2ID0gc3RvcmFnZS0+
bV92ZWN0b3JbaV0uZ2V0KCk7CisgICAgICAgIEpTVmFsdWUgdiA9IHN0b3JhZ2UtPm1fdmVjdG9y
W2ldOwogICAgICAgICBpZiAodikgewogICAgICAgICAgICAgaWYgKHYuaXNVbmRlZmluZWQoKSkK
ICAgICAgICAgICAgICAgICArK251bVVuZGVmaW5lZDsKICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICBzdG9yYWdlLT5tX3ZlY3RvcltudW1EZWZpbmVkKytdLnNldFdpdGhvdXRXcml0
ZUJhcnJpZXIodik7CisgICAgICAgICAgICAgICAgc3RvcmFnZS0+bV92ZWN0b3JbbnVtRGVmaW5l
ZCsrXSA9IHY7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTEyNTYsMTYgKzEyNTIsMTYgQEAgdW5z
aWduZWQgSlNBcnJheTo6Y29tcGFjdEZvclNvcnRpbmcoKQogCiAgICAgICAgIFNwYXJzZUFycmF5
VmFsdWVNYXA6Oml0ZXJhdG9yIGVuZCA9IG1hcC0+ZW5kKCk7CiAgICAgICAgIGZvciAoU3BhcnNl
QXJyYXlWYWx1ZU1hcDo6aXRlcmF0b3IgaXQgPSBtYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytp
dCkKLSAgICAgICAgICAgIHN0b3JhZ2UtPm1fdmVjdG9yW251bURlZmluZWQrK10uc2V0V2l0aG91
dFdyaXRlQmFycmllcihpdC0+c2Vjb25kLmdldCgpKTsKKyAgICAgICAgICAgIHN0b3JhZ2UtPm1f
dmVjdG9yW251bURlZmluZWQrK10gPSBpdC0+c2Vjb25kOwogCiAgICAgICAgIGRlbGV0ZSBtYXA7
CiAgICAgICAgIHN0b3JhZ2UtPm1fc3BhcnNlVmFsdWVNYXAgPSAwOwogICAgIH0KIAogICAgIGZv
ciAodW5zaWduZWQgaSA9IG51bURlZmluZWQ7IGkgPCBuZXdVc2VkVmVjdG9yTGVuZ3RoOyArK2kp
Ci0gICAgICAgIHN0b3JhZ2UtPm1fdmVjdG9yW2ldLnNldFVuZGVmaW5lZCgpOworICAgICAgICBz
dG9yYWdlLT5tX3ZlY3RvcltpXSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gbmV3VXNlZFZlY3Rvckxlbmd0aDsgaSA8IHVzZWRWZWN0b3JMZW5ndGg7ICsraSkKLSAgICAg
ICAgc3RvcmFnZS0+bV92ZWN0b3JbaV0uY2xlYXIoKTsKKyAgICAgICAgc3RvcmFnZS0+bV92ZWN0
b3JbaV0gPSBKU1ZhbHVlKCk7CiAKICAgICBzdG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yID0g
bmV3VXNlZFZlY3Rvckxlbmd0aDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eS5oCmluZGV4IGFhNWVkZjAyZDM4ZTQ4ZWZjZDcxY2RmOWIxOTg2NzdmN2RlNWYwMjQuLmRlMjhi
NjViYjgzZGYxZTc0NzFjNjkyOTQ4YmZjZDM1N2NmYTQ5MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5LmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8dW5zaWduZWQsIFdyaXRlQmFycmllcjxVbmtub3duPiA+
IFNwYXJzZUFycmF5VmFsdWVNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPHVuc2lnbmVkLCBKU1Zh
bHVlPiBTcGFyc2VBcnJheVZhbHVlTWFwOwogCiAgICAgLy8gVGhpcyBzdHJ1Y3QgaG9sZHMgdGhl
IGFjdHVhbCBkYXRhIHZhbHVlcyBvZiBhbiBhcnJheS4gIEEgSlNBcnJheSBvYmplY3QgcG9pbnRz
IHRvIGl0J3MgY29udGFpbmVkIEFycmF5U3RvcmFnZQogICAgIC8vIHN0cnVjdCBieSBwb2ludGlu
ZyB0byBtX3ZlY3Rvci4gIFRvIGFjY2VzcyB0aGUgY29udGFpbmVkIEFycmF5U3RvcmFnZSBzdHJ1
Y3QsIHVzZSB0aGUgZ2V0U3RvcmFnZSgpIGFuZCAKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAjaWYgQ0hFQ0tfQVJSQVlfQ09OU0lTVEVOQ1kKICAgICAgICAgYm9vbCBtX2luQ29t
cGFjdEluaXRpYWxpemF0aW9uOwogI2VuZGlmCi0gICAgICAgIFdyaXRlQmFycmllcjxVbmtub3du
PiBtX3ZlY3RvclsxXTsKKyAgICAgICAgSlNWYWx1ZSBtX3ZlY3RvclsxXTsKICAgICB9OwogCiAg
ICAgLy8gVGhlIENyZWF0ZUNvbXBhY3QgY3JlYXRpb24gbW9kZSBpcyB1c2VkIGZvciBmYXN0IGNv
bnN0cnVjdGlvbiBvZiBhcnJheXMKQEAgLTY3LDcgKzY3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICAgICAgZXhwbGljaXQgSlNBcnJheShOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+KTsK
ICAgICAgICAgSlNBcnJheShOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCB1bnNpZ25lZCBp
bml0aWFsTGVuZ3RoLCBBcnJheUNyZWF0aW9uTW9kZSk7Ci0gICAgICAgIEpTQXJyYXkoSlNHbG9i
YWxEYXRhJiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgY29uc3QgQXJnTGlzdCYgaW5p
dGlhbFZhbHVlcyk7CisgICAgICAgIEpTQXJyYXkoTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJl
PiwgY29uc3QgQXJnTGlzdCYgaW5pdGlhbFZhbHVlcyk7CiAgICAgICAgIHZpcnR1YWwgfkpTQXJy
YXkoKTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CkBAIC05
NCwzMiArOTQsMzIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTVmFsdWUgZ2V0SW5kZXgo
dW5zaWduZWQgaSkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGNhbkdldEluZGV4KGkp
KTsKLSAgICAgICAgICAgIHJldHVybiBtX3N0b3JhZ2UtPm1fdmVjdG9yW2ldLmdldCgpOworICAg
ICAgICAgICAgcmV0dXJuIG1fc3RvcmFnZS0+bV92ZWN0b3JbaV07CiAgICAgICAgIH0KIAogICAg
ICAgICBib29sIGNhblNldEluZGV4KHVuc2lnbmVkIGkpIHsgcmV0dXJuIGkgPCBtX3ZlY3Rvckxl
bmd0aDsgfQotICAgICAgICB2b2lkIHNldEluZGV4KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
dW5zaWduZWQgaSwgSlNWYWx1ZSB2KQorICAgICAgICB2b2lkIHNldEluZGV4KHVuc2lnbmVkIGks
IEpTVmFsdWUgdikKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGNhblNldEluZGV4KGkp
KTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+JiB4ID0g
bV9zdG9yYWdlLT5tX3ZlY3RvcltpXTsKKyAgICAgICAgICAgIEpTVmFsdWUmIHggPSBtX3N0b3Jh
Z2UtPm1fdmVjdG9yW2ldOwogICAgICAgICAgICAgaWYgKCF4KSB7CiAgICAgICAgICAgICAgICAg
QXJyYXlTdG9yYWdlICpzdG9yYWdlID0gbV9zdG9yYWdlOwogICAgICAgICAgICAgICAgICsrc3Rv
cmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvcjsKICAgICAgICAgICAgICAgICBpZiAoaSA+PSBzdG9y
YWdlLT5tX2xlbmd0aCkKICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZS0+bV9sZW5ndGggPSBp
ICsgMTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHguc2V0KGdsb2JhbERhdGEsIHRoaXMs
IHYpOworICAgICAgICAgICAgeCA9IHY7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHZv
aWQgdW5jaGVja2VkU2V0SW5kZXgoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCB1bnNpZ25lZCBp
LCBKU1ZhbHVlIHYpCisgICAgICAgIHZvaWQgdW5jaGVja2VkU2V0SW5kZXgodW5zaWduZWQgaSwg
SlNWYWx1ZSB2KQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoY2FuU2V0SW5kZXgoaSkp
OwogICAgICAgICAgICAgQXJyYXlTdG9yYWdlICpzdG9yYWdlID0gbV9zdG9yYWdlOwogI2lmIENI
RUNLX0FSUkFZX0NPTlNJU1RFTkNZCiAgICAgICAgICAgICBBU1NFUlQoc3RvcmFnZS0+bV9pbkNv
bXBhY3RJbml0aWFsaXphdGlvbik7CiAjZW5kaWYKLSAgICAgICAgICAgIHN0b3JhZ2UtPm1fdmVj
dG9yW2ldLnNldChnbG9iYWxEYXRhLCB0aGlzLCB2KTsKKyAgICAgICAgICAgIHN0b3JhZ2UtPm1f
dmVjdG9yW2ldID0gdjsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgZmlsbEFyZ0xpc3QoRXhl
Y1N0YXRlKiwgTWFya2VkQXJndW1lbnRCdWZmZXImKTsKQEAgLTE5NCw3ICsxOTQsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgaWYgKFNwYXJzZUFycmF5VmFsdWVNYXAqIG1hcCA9IHN0b3Jh
Z2UtPm1fc3BhcnNlVmFsdWVNYXApIHsKICAgICAgICAgICAgIFNwYXJzZUFycmF5VmFsdWVNYXA6
Oml0ZXJhdG9yIGVuZCA9IG1hcC0+ZW5kKCk7CiAgICAgICAgICAgICBmb3IgKFNwYXJzZUFycmF5
VmFsdWVNYXA6Oml0ZXJhdG9yIGl0ID0gbWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0g
ICAgICAgICAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmaXQtPnNlY29uZCk7CisgICAgICAgICAg
ICAgICAgbWFya1N0YWNrLmFwcGVuZChpdC0+c2Vjb25kKTsKICAgICAgICAgfQogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuY3BwCmluZGV4IDNm
N2Q4MDZhYzhjN2IzNjQ4YmMxYzJmZmU4YzczMjdhNzE1MDUxNGEuLjZhZjlkNzVmMTM0ZWI5NTlm
YzBiNzk4OGM0ZDJlZTdjYjhjZDFjOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQnl0ZUFycmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0J5dGVBcnJheS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgSlNCeXRlQXJyYXk6OkpTQnl0
ZUFycmF5KEV4ZWNTdGF0ZSogZXhlYywgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1
Y3R1cmUKICAgICAsIG1fc3RvcmFnZShzdG9yYWdlKQogICAgICwgbV9jbGFzc0luZm8oY2xhc3NJ
bmZvKQogewotICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2JhbERh
dGEoKS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKG1fc3RvcmFnZS0+bGVuZ3RoKCkp
LCBSZWFkT25seSB8IERvbnREZWxldGUpOworICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRh
KCkucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcihtX3N0b3JhZ2UtPmxlbmd0aCgpKSwg
UmVhZE9ubHkgfCBEb250RGVsZXRlKTsKIH0KIAogI2lmICFBU1NFUlRfRElTQUJMRUQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKaW5kZXggZjIzYjQ4YTUwOTYxZWIwZWRhYzZi
ODExNDIwOWRiNzVmMjFkNmNlMC4uZjdlODgxMDUxMmMyOTM5MjI1ZmMyYjNmMWJjZTAwYWQ2YWQ3
OThmZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKQEAgLTMzNiwxOCAr
MzM2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgICAgICByZXR1cm4gaXNDZWxsKCkg
PyBhc0NlbGwoKS0+dG9UaGlzT2JqZWN0KGV4ZWMpIDogdG9UaGlzT2JqZWN0U2xvd0Nhc2UoZXhl
Yyk7CiAgICAgfQotICAgIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIE1hcmtTdGFj
azo6YXBwZW5kKERlcHJlY2F0ZWRQdHI8VD4qIHNsb3QpCi0gICAgewotICAgICAgICBpbnRlcm5h
bEFwcGVuZChzbG90LT5nZXQoKSk7Ci0gICAgfQotICAgIAotICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPiB2b2lkIE1hcmtTdGFjazo6YXBwZW5kKFdyaXRlQmFycmllckJhc2U8VD4qIHNsb3QpCi0g
ICAgewotICAgICAgICBpbnRlcm5hbEFwcGVuZChzbG90LT5nZXQoKSk7Ci0gICAgfQogCi0gICAg
QUxXQVlTX0lOTElORSB2b2lkIE1hcmtTdGFjazo6aW50ZXJuYWxBcHBlbmQoSlNDZWxsKiBjZWxs
KQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBNYXJrU3RhY2s6OmFwcGVuZChKU0NlbGwqIGNlbGwp
CiAgICAgewogICAgICAgICBBU1NFUlQoIW1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0
aW9uKTsKICAgICAgICAgQVNTRVJUKGNlbGwpOwpAQCAtMzU3LDI5ICszNDcsMTEgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICBtX3ZhbHVlcy5hcHBlbmQoY2VsbCk7CiAgICAgfQogCi0g
ICAgQUxXQVlTX0lOTElORSB2b2lkIE1hcmtTdGFjazo6ZGVwcmVjYXRlZEFwcGVuZChKU0NlbGwq
KiB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCh2YWx1ZSk7Ci0gICAgICAgIGludGVybmFs
QXBwZW5kKCp2YWx1ZSk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIE1hcmtTdGFj
azo6ZGVwcmVjYXRlZEFwcGVuZChKU1ZhbHVlKiB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIEFTU0VS
VCh2YWx1ZSk7Ci0gICAgICAgIGludGVybmFsQXBwZW5kKCp2YWx1ZSk7Ci0gICAgfQotICAgIAot
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBNYXJrU3RhY2s6OmRlcHJlY2F0ZWRBcHBlbmQoUmVnaXN0
ZXIqIHZhbHVlKQotICAgIHsKLSAgICAgICAgQVNTRVJUKHZhbHVlKTsKLSAgICAgICAgaW50ZXJu
YWxBcHBlbmQodmFsdWUtPmpzVmFsdWUoKSk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2
b2lkIE1hcmtTdGFjazo6aW50ZXJuYWxBcHBlbmQoSlNWYWx1ZSB2YWx1ZSkKKyAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgTWFya1N0YWNrOjphcHBlbmQoSlNWYWx1ZSB2YWx1ZSkKICAgICB7CiAgICAg
ICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAgICAgIGlmICh2YWx1ZS5pc0NlbGwoKSkKLSAgICAgICAg
ICAgIGludGVybmFsQXBwZW5kKHZhbHVlLmFzQ2VsbCgpKTsKKyAgICAgICAgICAgIGFwcGVuZCh2
YWx1ZS5hc0NlbGwoKSk7CiAgICAgfQogCiAgICAgaW5saW5lIEhlYXAqIEhlYXA6OmhlYXAoSlNW
YWx1ZSB2KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApp
bmRleCA0ZmY1OWUzOWZlZDM1ZTMyYTBlMmY1Mzc5OGNmOGFiMjYyMmEyY2U2Li45OWY4ZTZmOTUz
YWU3NzM5ZWQwNGIxNWEzYTNmYjVhNWZkMTUwNzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtNzEsOCArNzEsOCBAQCBKU0Z1bmN0aW9uOjpK
U0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Tm9uTnVsbFBhcwogICAgICwgbV9leGVjdXRhYmxlKHRodW5rKQogICAgICwgbV9zY29wZUNoYWlu
KGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGVDaGFpbigpKQogewotICAgIHB1dERpcmVjdChleGVj
LT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBq
c1N0cmluZyhleGVjLCBuYW1lLmlzTnVsbCgpID8gIiIgOiBuYW1lLnVzdHJpbmcoKSksIERvbnRE
ZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcihsZW5ndGgpLCBE
b250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0KGV4ZWMtPmds
b2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZyhleGVjLCBuYW1lLmlzTnVs
bCgpID8gIiIgOiBuYW1lLnVzdHJpbmcoKSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRF
bnVtKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1i
ZXIobGVuZ3RoKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQogI2VuZGlm
CiAKQEAgLTgzLDkgKzgzLDkgQEAgSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihFeGVjU3RhdGUqIGV4
ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vbk51bGxQYXMKICNlbmRpZgogICAg
ICwgbV9zY29wZUNoYWluKGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGVDaGFpbigpKQogewotICAg
IHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0
eU5hbWVzLT5uYW1lLCBqc1N0cmluZyhleGVjLCBuYW1lLmlzTnVsbCgpID8gIiIgOiBuYW1lLnVz
dHJpbmcoKSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJl
Y3QoZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzU3RyaW5nKGV4ZWMs
IG5hbWUuaXNOdWxsKCkgPyAiIiA6IG5hbWUudXN0cmluZygpKSwgRG9udERlbGV0ZSB8IFJlYWRP
bmx5IHwgRG9udEVudW0pOwogI2lmIEVOQUJMRShKSVQpCi0gICAgcHV0RGlyZWN0KGV4ZWMtPmds
b2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIobGVuZ3Ro
KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdChleGVj
LT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcihsZW5ndGgpLCBEb250RGVsZXRlIHwg
UmVhZE9ubHkgfCBEb250RW51bSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShsZW5ndGgpOwog
ICAgIFVOVVNFRF9QQVJBTShmdW5jKTsKQEAgLTk5LDcgKzk5LDcgQEAgSlNGdW5jdGlvbjo6SlNG
dW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIE5vbk51bGxQYXNzUmVmUHRyPEZ1bmN0aW9uRXhlY3V0
YWJsZT4gZXgKICAgICAsIG1fc2NvcGVDaGFpbihzY29wZUNoYWluTm9kZSkKIHsKICAgICBjb25z
dCBJZGVudGlmaWVyJiBuYW1lID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4obV9l
eGVjdXRhYmxlLmdldCgpKS0+bmFtZSgpOwotICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRh
KCksIGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZyhleGVj
LCBuYW1lLmlzTnVsbCgpID8gIiIgOiBuYW1lLnVzdHJpbmcoKSksIERvbnREZWxldGUgfCBSZWFk
T25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3Bl
cnR5TmFtZXMtPm5hbWUsIGpzU3RyaW5nKGV4ZWMsIG5hbWUuaXNOdWxsKCkgPyAiIiA6IG5hbWUu
dXN0cmluZygpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQogCiBKU0Z1
bmN0aW9uOjp+SlNGdW5jdGlvbigpCkBAIC0yMDcsOCArMjA3LDggQEAgYm9vbCBKU0Z1bmN0aW9u
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU4KIAogICAgICAgICBpZiAoIWxvY2F0aW9uKSB7CiAgICAgICAgICAgICBKU09iamVj
dCogcHJvdG90eXBlID0gbmV3IChleGVjKSBKU09iamVjdChzY29wZSgpLmdsb2JhbE9iamVjdCgp
LT5lbXB0eU9iamVjdFN0cnVjdHVyZSgpKTsKLSAgICAgICAgICAgIHByb3RvdHlwZS0+cHV0RGly
ZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9y
LCB0aGlzLCBEb250RW51bSk7Ci0gICAgICAgICAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBwcm90b3R5cGUsIERvbnREZWxl
dGUgfCBEb250RW51bSk7CisgICAgICAgICAgICBwcm90b3R5cGUtPnB1dERpcmVjdChleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHRoaXMsIERvbnRFbnVtKTsKKyAgICAgICAgICAg
IHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBwcm90b3R5cGUsIERv
bnREZWxldGUgfCBEb250RW51bSk7CiAgICAgICAgICAgICBsb2NhdGlvbiA9IGdldERpcmVjdExv
Y2F0aW9uKHByb3BlcnR5TmFtZSk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAppbmRleCBlODQ2OWRkYWJiMjhkYzkzYzdjODE4NmNm
MDA1ZjZhY2U2ZjFkMDU4Li4zMWY0MWU5YzQyNWVjMTg1NjU0MThmZDhlNzdkMTk5MDBhNzFjMmEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaApAQCAt
MjAzLDcgKzIwMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBUZXJtaW5hdG9yIHRlcm1p
bmF0b3I7CiAgICAgICAgIEhlYXAgaGVhcDsKIAotICAgICAgICBEZXByZWNhdGVkUHRyPFVua25v
d24+IGV4Y2VwdGlvbjsKKyAgICAgICAgSlNWYWx1ZSBleGNlcHRpb247CiAjaWYgRU5BQkxFKEpJ
VCkKICAgICAgICAgUmV0dXJuQWRkcmVzc1B0ciBleGNlcHRpb25Mb2NhdGlvbjsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmlu
ZGV4IDcxNWZmMGQwNWNiY2ViMTBhNjE1NzZlMDZiMTA0MGM4MWQ2NjgwNjIuLjliNjdkYmI3MzRm
NTBmYTI5MDEyZjc2ZDdkZTQyOTUzNTVmNjJiNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTgwLDE2ICs4MCwxNiBAQCBzdGF0
aWMgY29uc3QgaW50IGluaXRpYWxUaWNrQ291bnRUaHJlc2hvbGQgPSAyNTU7CiAvLyBQcmVmZXJy
ZWQgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBiZXR3ZWVuIGVhY2ggdGltZW91dCBjaGVjawogc3Rh
dGljIGNvbnN0IGludCBwcmVmZXJyZWRTY3JpcHRDaGVja1RpbWVJbnRlcnZhbCA9IDEwMDA7CiAK
LXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgaW5saW5lIHZvaWQgbWFya0lmTmVlZGVkKE1h
cmtTdGFjayYgbWFya1N0YWNrLCBXcml0ZUJhcnJpZXI8VD4qIHYpCitzdGF0aWMgaW5saW5lIHZv
aWQgbWFya0lmTmVlZGVkKE1hcmtTdGFjayYgbWFya1N0YWNrLCBKU1ZhbHVlIHYpCiB7Ci0gICAg
aWYgKCp2KQorICAgIGlmICh2KQogICAgICAgICBtYXJrU3RhY2suYXBwZW5kKHYpOwogfQogCiBz
dGF0aWMgaW5saW5lIHZvaWQgbWFya0lmTmVlZGVkKE1hcmtTdGFjayYgbWFya1N0YWNrLCBjb25z
dCBSZWZQdHI8U3RydWN0dXJlPiYgcykKIHsKLSAgICBpZiAocyAmJiBzLT5zdG9yZWRQcm90b3R5
cGUoKSkKLSAgICAgICAgbWFya1N0YWNrLmFwcGVuZChzLT5zdG9yZWRQcm90b3R5cGVTbG90KCkp
OworICAgIGlmIChzKQorICAgICAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCBzLT5zdG9yZWRQ
cm90b3R5cGUoKSk7CiB9CiAKIEpTR2xvYmFsT2JqZWN0Ojp+SlNHbG9iYWxPYmplY3QoKQpAQCAt
MjAyLDExNyArMjAyLDExNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNldChKU1ZhbHVlIHBy
b3RvdHlwZSkKIAogICAgIC8vIFByb3RvdHlwZXMKIAotICAgIGQoKS0+ZnVuY3Rpb25Qcm90b3R5
cGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBGdW5jdGlvblByb3Rv
dHlwZShleGVjLCB0aGlzLCBGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGpzTnVs
bCgpKSkpOyAvLyBUaGUgcmVhbCBwcm90b3R5cGUgd2lsbCBiZSBzZXQgb25jZSBPYmplY3RQcm90
b3R5cGUgaXMgY3JlYXRlZC4KLSAgICBkKCktPnByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlID0g
UHJvdG90eXBlRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBl
LmdldCgpKTsKLSAgICBkKCktPmludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1
bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5mdW5jdGlvblByb3RvdHlwZS5nZXQoKSk7Cisg
ICAgZCgpLT5mdW5jdGlvblByb3RvdHlwZSA9IG5ldyAoZXhlYykgRnVuY3Rpb25Qcm90b3R5cGUo
ZXhlYywgdGhpcywgRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShqc051bGwoKSkp
OyAvLyBUaGUgcmVhbCBwcm90b3R5cGUgd2lsbCBiZSBzZXQgb25jZSBPYmplY3RQcm90b3R5cGUg
aXMgY3JlYXRlZC4KKyAgICBkKCktPnByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlID0gUHJvdG90
eXBlRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBlKTsKKyAg
ICBkKCktPmludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVh
dGVTdHJ1Y3R1cmUoZCgpLT5mdW5jdGlvblByb3RvdHlwZSk7CiAgICAgTmF0aXZlRnVuY3Rpb25X
cmFwcGVyKiBjYWxsRnVuY3Rpb24gPSAwOwogICAgIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlciogYXBw
bHlGdW5jdGlvbiA9IDA7CiAgICAgZCgpLT5mdW5jdGlvblByb3RvdHlwZS0+YWRkRnVuY3Rpb25Q
cm9wZXJ0aWVzKGV4ZWMsIHRoaXMsIGQoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0
KCksICZjYWxsRnVuY3Rpb24sICZhcHBseUZ1bmN0aW9uKTsKLSAgICBkKCktPmNhbGxGdW5jdGlv
bi5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBjYWxsRnVuY3Rpb24pOwotICAgIGQoKS0+
YXBwbHlGdW5jdGlvbi5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBhcHBseUZ1bmN0aW9u
KTsKLSAgICBkKCktPm9iamVjdFByb3RvdHlwZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlz
LCBuZXcgKGV4ZWMpIE9iamVjdFByb3RvdHlwZShleGVjLCB0aGlzLCBPYmplY3RQcm90b3R5cGU6
OmNyZWF0ZVN0cnVjdHVyZShqc051bGwoKSksIGQoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1
cmUuZ2V0KCkpKTsKLSAgICBkKCktPmZ1bmN0aW9uUHJvdG90eXBlLT5zdHJ1Y3R1cmUoKS0+c2V0
UHJvdG90eXBlV2l0aG91dFRyYW5zaXRpb24oZCgpLT5vYmplY3RQcm90b3R5cGUuZ2V0KCkpOwor
ICAgIGQoKS0+Y2FsbEZ1bmN0aW9uID0gY2FsbEZ1bmN0aW9uOworICAgIGQoKS0+YXBwbHlGdW5j
dGlvbiA9IGFwcGx5RnVuY3Rpb247CisgICAgZCgpLT5vYmplY3RQcm90b3R5cGUgPSBuZXcgKGV4
ZWMpIE9iamVjdFByb3RvdHlwZShleGVjLCB0aGlzLCBPYmplY3RQcm90b3R5cGU6OmNyZWF0ZVN0
cnVjdHVyZShqc051bGwoKSksIGQoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCkp
OworICAgIGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUtPnN0cnVjdHVyZSgpLT5zZXRQcm90b3R5cGVX
aXRob3V0VHJhbnNpdGlvbihkKCktPm9iamVjdFByb3RvdHlwZSk7CiAKICAgICBkKCktPmVtcHR5
T2JqZWN0U3RydWN0dXJlID0gZCgpLT5vYmplY3RQcm90b3R5cGUtPmluaGVyaXRvcklEKCk7CiAK
LSAgICBkKCktPmZ1bmN0aW9uU3RydWN0dXJlID0gSlNGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJl
KGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpOwotICAgIGQoKS0+Y2FsbGJhY2tGdW5jdGlv
blN0cnVjdHVyZSA9IEpTQ2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+ZnVu
Y3Rpb25Qcm90b3R5cGUuZ2V0KCkpOwotICAgIGQoKS0+YXJndW1lbnRzU3RydWN0dXJlID0gQXJn
dW1lbnRzOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5vYmplY3RQcm90b3R5cGUuZ2V0KCkpOwotICAg
IGQoKS0+Y2FsbGJhY2tDb25zdHJ1Y3RvclN0cnVjdHVyZSA9IEpTQ2FsbGJhY2tDb25zdHJ1Y3Rv
cjo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+b2JqZWN0UHJvdG90eXBlLmdldCgpKTsKLSAgICBkKCkt
PmNhbGxiYWNrT2JqZWN0U3RydWN0dXJlID0gSlNDYWxsYmFja09iamVjdDxKU09iamVjdFdpdGhH
bG9iYWxPYmplY3Q+OjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5vYmplY3RQcm90b3R5cGUuZ2V0KCkp
OworICAgIGQoKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUgPSBKU0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1
cmUoZCgpLT5mdW5jdGlvblByb3RvdHlwZSk7CisgICAgZCgpLT5jYWxsYmFja0Z1bmN0aW9uU3Ry
dWN0dXJlID0gSlNDYWxsYmFja0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5mdW5jdGlv
blByb3RvdHlwZSk7CisgICAgZCgpLT5hcmd1bWVudHNTdHJ1Y3R1cmUgPSBBcmd1bWVudHM6OmNy
ZWF0ZVN0cnVjdHVyZShkKCktPm9iamVjdFByb3RvdHlwZSk7CisgICAgZCgpLT5jYWxsYmFja0Nv
bnN0cnVjdG9yU3RydWN0dXJlID0gSlNDYWxsYmFja0NvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1
cmUoZCgpLT5vYmplY3RQcm90b3R5cGUpOworICAgIGQoKS0+Y2FsbGJhY2tPYmplY3RTdHJ1Y3R1
cmUgPSBKU0NhbGxiYWNrT2JqZWN0PEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdD46OmNyZWF0ZVN0
cnVjdHVyZShkKCktPm9iamVjdFByb3RvdHlwZSk7CiAKLSAgICBkKCktPmFycmF5UHJvdG90eXBl
LnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykgQXJyYXlQcm90b3R5cGUo
dGhpcywgQXJyYXlQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShkKCktPm9iamVjdFByb3RvdHlw
ZS5nZXQoKSkpKTsKLSAgICBkKCktPmFycmF5U3RydWN0dXJlID0gSlNBcnJheTo6Y3JlYXRlU3Ry
dWN0dXJlKGQoKS0+YXJyYXlQcm90b3R5cGUuZ2V0KCkpOwotICAgIGQoKS0+cmVnRXhwTWF0Y2hl
c0FycmF5U3RydWN0dXJlID0gUmVnRXhwTWF0Y2hlc0FycmF5OjpjcmVhdGVTdHJ1Y3R1cmUoZCgp
LT5hcnJheVByb3RvdHlwZS5nZXQoKSk7CisgICAgZCgpLT5hcnJheVByb3RvdHlwZSA9IG5ldyAo
ZXhlYykgQXJyYXlQcm90b3R5cGUodGhpcywgQXJyYXlQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVy
ZShkKCktPm9iamVjdFByb3RvdHlwZSkpOworICAgIGQoKS0+YXJyYXlTdHJ1Y3R1cmUgPSBKU0Fy
cmF5OjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5hcnJheVByb3RvdHlwZSk7CisgICAgZCgpLT5yZWdF
eHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUgPSBSZWdFeHBNYXRjaGVzQXJyYXk6OmNyZWF0ZVN0cnVj
dHVyZShkKCktPmFycmF5UHJvdG90eXBlKTsKIAotICAgIGQoKS0+c3RyaW5nUHJvdG90eXBlLnNl
dChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykgU3RyaW5nUHJvdG90eXBlKGV4
ZWMsIHRoaXMsIFN0cmluZ1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+b2JqZWN0UHJv
dG90eXBlLmdldCgpKSkpOwotICAgIGQoKS0+c3RyaW5nT2JqZWN0U3RydWN0dXJlID0gU3RyaW5n
T2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5zdHJpbmdQcm90b3R5cGUuZ2V0KCkpOworICAg
IGQoKS0+c3RyaW5nUHJvdG90eXBlID0gbmV3IChleGVjKSBTdHJpbmdQcm90b3R5cGUoZXhlYywg
dGhpcywgU3RyaW5nUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5vYmplY3RQcm90b3R5
cGUpKTsKKyAgICBkKCktPnN0cmluZ09iamVjdFN0cnVjdHVyZSA9IFN0cmluZ09iamVjdDo6Y3Jl
YXRlU3RydWN0dXJlKGQoKS0+c3RyaW5nUHJvdG90eXBlKTsKIAotICAgIGQoKS0+Ym9vbGVhblBy
b3RvdHlwZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIEJvb2xlYW5Q
cm90b3R5cGUoZXhlYywgdGhpcywgQm9vbGVhblByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGQo
KS0+b2JqZWN0UHJvdG90eXBlLmdldCgpKSwgZCgpLT5wcm90b3R5cGVGdW5jdGlvblN0cnVjdHVy
ZS5nZXQoKSkpOwotICAgIGQoKS0+Ym9vbGVhbk9iamVjdFN0cnVjdHVyZSA9IEJvb2xlYW5PYmpl
Y3Q6OmNyZWF0ZVN0cnVjdHVyZShkKCktPmJvb2xlYW5Qcm90b3R5cGUuZ2V0KCkpOworICAgIGQo
KS0+Ym9vbGVhblByb3RvdHlwZSA9IG5ldyAoZXhlYykgQm9vbGVhblByb3RvdHlwZShleGVjLCB0
aGlzLCBCb29sZWFuUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5vYmplY3RQcm90b3R5
cGUpLCBkKCktPnByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLmdldCgpKTsKKyAgICBkKCktPmJv
b2xlYW5PYmplY3RTdHJ1Y3R1cmUgPSBCb29sZWFuT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoZCgp
LT5ib29sZWFuUHJvdG90eXBlKTsKIAotICAgIGQoKS0+bnVtYmVyUHJvdG90eXBlLnNldChleGVj
LT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykgTnVtYmVyUHJvdG90eXBlKGV4ZWMsIHRo
aXMsIE51bWJlclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+b2JqZWN0UHJvdG90eXBl
LmdldCgpKSwgZCgpLT5wcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZS5nZXQoKSkpOwotICAgIGQo
KS0+bnVtYmVyT2JqZWN0U3RydWN0dXJlID0gTnVtYmVyT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUo
ZCgpLT5udW1iZXJQcm90b3R5cGUuZ2V0KCkpOworICAgIGQoKS0+bnVtYmVyUHJvdG90eXBlID0g
bmV3IChleGVjKSBOdW1iZXJQcm90b3R5cGUoZXhlYywgdGhpcywgTnVtYmVyUHJvdG90eXBlOjpj
cmVhdGVTdHJ1Y3R1cmUoZCgpLT5vYmplY3RQcm90b3R5cGUpLCBkKCktPnByb3RvdHlwZUZ1bmN0
aW9uU3RydWN0dXJlLmdldCgpKTsKKyAgICBkKCktPm51bWJlck9iamVjdFN0cnVjdHVyZSA9IE51
bWJlck9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+bnVtYmVyUHJvdG90eXBlKTsKIAotICAg
IGQoKS0+ZGF0ZVByb3RvdHlwZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBuZXcgKGV4
ZWMpIERhdGVQcm90b3R5cGUoZXhlYywgdGhpcywgRGF0ZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0
dXJlKGQoKS0+b2JqZWN0UHJvdG90eXBlLmdldCgpKSkpOwotICAgIGQoKS0+ZGF0ZVN0cnVjdHVy
ZSA9IERhdGVJbnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+ZGF0ZVByb3RvdHlwZS5nZXQo
KSk7CisgICAgZCgpLT5kYXRlUHJvdG90eXBlID0gbmV3IChleGVjKSBEYXRlUHJvdG90eXBlKGV4
ZWMsIHRoaXMsIERhdGVQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShkKCktPm9iamVjdFByb3Rv
dHlwZSkpOworICAgIGQoKS0+ZGF0ZVN0cnVjdHVyZSA9IERhdGVJbnN0YW5jZTo6Y3JlYXRlU3Ry
dWN0dXJlKGQoKS0+ZGF0ZVByb3RvdHlwZSk7CiAKLSAgICBkKCktPnJlZ0V4cFByb3RvdHlwZS5z
ZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIFJlZ0V4cFByb3RvdHlwZShl
eGVjLCB0aGlzLCBSZWdFeHBQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShkKCktPm9iamVjdFBy
b3RvdHlwZS5nZXQoKSksIGQoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCkpKTsK
LSAgICBkKCktPnJlZ0V4cFN0cnVjdHVyZSA9IFJlZ0V4cE9iamVjdDo6Y3JlYXRlU3RydWN0dXJl
KGQoKS0+cmVnRXhwUHJvdG90eXBlLmdldCgpKTsKKyAgICBkKCktPnJlZ0V4cFByb3RvdHlwZSA9
IG5ldyAoZXhlYykgUmVnRXhwUHJvdG90eXBlKGV4ZWMsIHRoaXMsIFJlZ0V4cFByb3RvdHlwZTo6
Y3JlYXRlU3RydWN0dXJlKGQoKS0+b2JqZWN0UHJvdG90eXBlKSwgZCgpLT5wcm90b3R5cGVGdW5j
dGlvblN0cnVjdHVyZS5nZXQoKSk7CisgICAgZCgpLT5yZWdFeHBTdHJ1Y3R1cmUgPSBSZWdFeHBP
YmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShkKCktPnJlZ0V4cFByb3RvdHlwZSk7CiAKLSAgICBkKCkt
Pm1ldGhvZENhbGxEdW1teS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBjb25zdHJ1Y3RF
bXB0eU9iamVjdChleGVjKSk7CisgICAgZCgpLT5tZXRob2RDYWxsRHVtbXkgPSBjb25zdHJ1Y3RF
bXB0eU9iamVjdChleGVjKTsKIAotICAgIEVycm9yUHJvdG90eXBlKiBlcnJvclByb3RvdHlwZSA9
IG5ldyAoZXhlYykgRXJyb3JQcm90b3R5cGUoZXhlYywgdGhpcywgRXJyb3JQcm90b3R5cGU6OmNy
ZWF0ZVN0cnVjdHVyZShkKCktPm9iamVjdFByb3RvdHlwZS5nZXQoKSksIGQoKS0+cHJvdG90eXBl
RnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCkpOworICAgIEVycm9yUHJvdG90eXBlKiBlcnJvclByb3Rv
dHlwZSA9IG5ldyAoZXhlYykgRXJyb3JQcm90b3R5cGUoZXhlYywgdGhpcywgRXJyb3JQcm90b3R5
cGU6OmNyZWF0ZVN0cnVjdHVyZShkKCktPm9iamVjdFByb3RvdHlwZSksIGQoKS0+cHJvdG90eXBl
RnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCkpOwogICAgIGQoKS0+ZXJyb3JTdHJ1Y3R1cmUgPSBFcnJv
ckluc3RhbmNlOjpjcmVhdGVTdHJ1Y3R1cmUoZXJyb3JQcm90b3R5cGUpOwogCiAgICAgLy8gQ29u
c3RydWN0b3JzCiAKLSAgICBKU0NlbGwqIG9iamVjdENvbnN0cnVjdG9yID0gbmV3IChleGVjKSBP
YmplY3RDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3Ry
dWN0dXJlKGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBkKCktPm9iamVjdFByb3RvdHlw
ZS5nZXQoKSwgZCgpLT5wcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZS5nZXQoKSk7Ci0gICAgSlND
ZWxsKiBmdW5jdGlvbkNvbnN0cnVjdG9yID0gbmV3IChleGVjKSBGdW5jdGlvbkNvbnN0cnVjdG9y
KGV4ZWMsIHRoaXMsIEZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1
bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgZCgpLT5mdW5jdGlvblByb3RvdHlwZS5nZXQoKSk7Ci0g
ICAgSlNDZWxsKiBhcnJheUNvbnN0cnVjdG9yID0gbmV3IChleGVjKSBBcnJheUNvbnN0cnVjdG9y
KGV4ZWMsIHRoaXMsIEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0
aW9uUHJvdG90eXBlLmdldCgpKSwgZCgpLT5hcnJheVByb3RvdHlwZS5nZXQoKSwgZCgpLT5wcm90
b3R5cGVGdW5jdGlvblN0cnVjdHVyZS5nZXQoKSk7Ci0gICAgSlNDZWxsKiBzdHJpbmdDb25zdHJ1
Y3RvciA9IG5ldyAoZXhlYykgU3RyaW5nQ29uc3RydWN0b3IoZXhlYywgdGhpcywgU3RyaW5nQ29u
c3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwg
ZCgpLT5wcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgZCgpLT5zdHJpbmdQcm90b3R5
cGUuZ2V0KCkpOwotICAgIEpTQ2VsbCogYm9vbGVhbkNvbnN0cnVjdG9yID0gbmV3IChleGVjKSBC
b29sZWFuQ29uc3RydWN0b3IoZXhlYywgdGhpcywgQm9vbGVhbkNvbnN0cnVjdG9yOjpjcmVhdGVT
dHJ1Y3R1cmUoZCgpLT5mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIGQoKS0+Ym9vbGVhblByb3Rv
dHlwZS5nZXQoKSk7Ci0gICAgSlNDZWxsKiBudW1iZXJDb25zdHJ1Y3RvciA9IG5ldyAoZXhlYykg
TnVtYmVyQ29uc3RydWN0b3IoZXhlYywgdGhpcywgTnVtYmVyQ29uc3RydWN0b3I6OmNyZWF0ZVN0
cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgZCgpLT5udW1iZXJQcm90b3R5
cGUuZ2V0KCkpOwotICAgIEpTQ2VsbCogZGF0ZUNvbnN0cnVjdG9yID0gbmV3IChleGVjKSBEYXRl
Q29uc3RydWN0b3IoZXhlYywgdGhpcywgRGF0ZUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUo
ZCgpLT5mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIGQoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1
Y3R1cmUuZ2V0KCksIGQoKS0+ZGF0ZVByb3RvdHlwZS5nZXQoKSk7CisgICAgSlNDZWxsKiBvYmpl
Y3RDb25zdHJ1Y3RvciA9IG5ldyAoZXhlYykgT2JqZWN0Q29uc3RydWN0b3IoZXhlYywgdGhpcywg
T2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBl
KSwgZCgpLT5vYmplY3RQcm90b3R5cGUsIGQoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUu
Z2V0KCkpOworICAgIEpTQ2VsbCogZnVuY3Rpb25Db25zdHJ1Y3RvciA9IG5ldyAoZXhlYykgRnVu
Y3Rpb25Db25zdHJ1Y3RvcihleGVjLCB0aGlzLCBGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGVT
dHJ1Y3R1cmUoZCgpLT5mdW5jdGlvblByb3RvdHlwZSksIGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUp
OworICAgIEpTQ2VsbCogYXJyYXlDb25zdHJ1Y3RvciA9IG5ldyAoZXhlYykgQXJyYXlDb25zdHJ1
Y3RvcihleGVjLCB0aGlzLCBBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5m
dW5jdGlvblByb3RvdHlwZSksIGQoKS0+YXJyYXlQcm90b3R5cGUsIGQoKS0+cHJvdG90eXBlRnVu
Y3Rpb25TdHJ1Y3R1cmUuZ2V0KCkpOworICAgIEpTQ2VsbCogc3RyaW5nQ29uc3RydWN0b3IgPSBu
ZXcgKGV4ZWMpIFN0cmluZ0NvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIFN0cmluZ0NvbnN0cnVjdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5mdW5jdGlvblByb3RvdHlwZSksIGQoKS0+cHJvdG90eXBl
RnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIGQoKS0+c3RyaW5nUHJvdG90eXBlKTsKKyAgICBKU0Nl
bGwqIGJvb2xlYW5Db25zdHJ1Y3RvciA9IG5ldyAoZXhlYykgQm9vbGVhbkNvbnN0cnVjdG9yKGV4
ZWMsIHRoaXMsIEJvb2xlYW5Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+ZnVuY3Rp
b25Qcm90b3R5cGUpLCBkKCktPmJvb2xlYW5Qcm90b3R5cGUpOworICAgIEpTQ2VsbCogbnVtYmVy
Q29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIE51bWJlckNvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIE51
bWJlckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5mdW5jdGlvblByb3RvdHlwZSks
IGQoKS0+bnVtYmVyUHJvdG90eXBlKTsKKyAgICBKU0NlbGwqIGRhdGVDb25zdHJ1Y3RvciA9IG5l
dyAoZXhlYykgRGF0ZUNvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIERhdGVDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlU3RydWN0dXJlKGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUpLCBkKCktPnByb3RvdHlwZUZ1bmN0
aW9uU3RydWN0dXJlLmdldCgpLCBkKCktPmRhdGVQcm90b3R5cGUpOwogCi0gICAgZCgpLT5yZWdF
eHBDb25zdHJ1Y3Rvci5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIFJl
Z0V4cENvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIFJlZ0V4cENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1
Y3R1cmUoZCgpLT5mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIGQoKS0+cmVnRXhwUHJvdG90eXBl
LmdldCgpKSk7CisgICAgZCgpLT5yZWdFeHBDb25zdHJ1Y3RvciA9IG5ldyAoZXhlYykgUmVnRXhw
Q29uc3RydWN0b3IoZXhlYywgdGhpcywgUmVnRXhwQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVy
ZShkKCktPmZ1bmN0aW9uUHJvdG90eXBlKSwgZCgpLT5yZWdFeHBQcm90b3R5cGUpOwogCi0gICAg
ZCgpLT5lcnJvckNvbnN0cnVjdG9yLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAo
ZXhlYykgRXJyb3JDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBFcnJvckNvbnN0cnVjdG9yOjpjcmVh
dGVTdHJ1Y3R1cmUoZCgpLT5mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIGVycm9yUHJvdG90eXBl
KSk7CisgICAgZCgpLT5lcnJvckNvbnN0cnVjdG9yID0gbmV3IChleGVjKSBFcnJvckNvbnN0cnVj
dG9yKGV4ZWMsIHRoaXMsIEVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1
bmN0aW9uUHJvdG90eXBlKSwgZXJyb3JQcm90b3R5cGUpOwogCiAgICAgUmVmUHRyPFN0cnVjdHVy
ZT4gbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUgPSBOYXRpdmVFcnJvclByb3RvdHlwZTo6
Y3JlYXRlU3RydWN0dXJlKGVycm9yUHJvdG90eXBlKTsKLSAgICBSZWZQdHI8U3RydWN0dXJlPiBu
YXRpdmVFcnJvclN0cnVjdHVyZSA9IE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVj
dHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBlLmdldCgpKTsKLSAgICBkKCktPmV2YWxFcnJvckNv
bnN0cnVjdG9yLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykgTmF0aXZl
RXJyb3JDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZl
RXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsICJFdmFsRXJyb3IiKSk7Ci0gICAgZCgpLT5yYW5nZUVy
cm9yQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBO
YXRpdmVFcnJvckNvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBu
YXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgIlJhbmdlRXJyb3IiKSk7Ci0gICAgZCgpLT5y
ZWZlcmVuY2VFcnJvckNvbnN0cnVjdG9yLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG5l
dyAoZXhlYykgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBuYXRpdmVFcnJvclN0
cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsICJSZWZlcmVuY2VFcnJvciIp
KTsKLSAgICBkKCktPnN5bnRheEVycm9yQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPmdsb2JhbERhdGEo
KSwgdGhpcywgbmV3IChleGVjKSBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIG5h
dGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgIlN5bnRh
eEVycm9yIikpOwotICAgIGQoKS0+dHlwZUVycm9yQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKGV4ZWMsIHRo
aXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwg
IlR5cGVFcnJvciIpKTsKLSAgICBkKCktPlVSSUVycm9yQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPmds
b2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKGV4ZWMs
IHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVy
ZSwgIlVSSUVycm9yIikpOwotCi0gICAgZCgpLT5vYmplY3RQcm90b3R5cGUtPnB1dERpcmVjdEZ1
bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkuY29uc3RydWN0b3IsIG9iamVjdENvbnN0cnVjdG9yLCBEb250RW51bSk7Ci0gICAg
ZCgpLT5mdW5jdGlvblByb3RvdHlwZS0+cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlv
bihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3Rvciwg
ZnVuY3Rpb25Db25zdHJ1Y3RvciwgRG9udEVudW0pOwotICAgIGQoKS0+YXJyYXlQcm90b3R5cGUt
PnB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIGFycmF5Q29uc3RydWN0b3IsIERvbnRF
bnVtKTsKLSAgICBkKCktPmJvb2xlYW5Qcm90b3R5cGUtPnB1dERpcmVjdEZ1bmN0aW9uV2l0aG91
dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29u
c3RydWN0b3IsIGJvb2xlYW5Db25zdHJ1Y3RvciwgRG9udEVudW0pOwotICAgIGQoKS0+c3RyaW5n
UHJvdG90eXBlLT5wdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2Jh
bERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCBzdHJpbmdDb25zdHJ1
Y3RvciwgRG9udEVudW0pOwotICAgIGQoKS0+bnVtYmVyUHJvdG90eXBlLT5wdXREaXJlY3RGdW5j
dGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlO
YW1lcygpLmNvbnN0cnVjdG9yLCBudW1iZXJDb25zdHJ1Y3RvciwgRG9udEVudW0pOwotICAgIGQo
KS0+ZGF0ZVByb3RvdHlwZS0+cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVj
LT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgZGF0ZUNv
bnN0cnVjdG9yLCBEb250RW51bSk7Ci0gICAgZCgpLT5yZWdFeHBQcm90b3R5cGUtPnB1dERpcmVj
dEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIGQoKS0+cmVnRXhwQ29uc3RydWN0b3IuZ2V0KCksIERv
bnRFbnVtKTsKLSAgICBlcnJvclByb3RvdHlwZS0+cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJh
bnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1
Y3RvciwgZCgpLT5lcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7CisgICAgUmVmUHRy
PFN0cnVjdHVyZT4gbmF0aXZlRXJyb3JTdHJ1Y3R1cmUgPSBOYXRpdmVFcnJvckNvbnN0cnVjdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5mdW5jdGlvblByb3RvdHlwZSk7CisgICAgZCgpLT5ldmFs
RXJyb3JDb25zdHJ1Y3RvciA9IG5ldyAoZXhlYykgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihleGVj
LCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1
cmUsICJFdmFsRXJyb3IiKTsKKyAgICBkKCktPnJhbmdlRXJyb3JDb25zdHJ1Y3RvciA9IG5ldyAo
ZXhlYykgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVj
dHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsICJSYW5nZUVycm9yIik7CisgICAg
ZCgpLT5yZWZlcmVuY2VFcnJvckNvbnN0cnVjdG9yID0gbmV3IChleGVjKSBOYXRpdmVFcnJvckNv
bnN0cnVjdG9yKGV4ZWMsIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclBy
b3RvdHlwZVN0cnVjdHVyZSwgIlJlZmVyZW5jZUVycm9yIik7CisgICAgZCgpLT5zeW50YXhFcnJv
ckNvbnN0cnVjdG9yID0gbmV3IChleGVjKSBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKGV4ZWMsIHRo
aXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwg
IlN5bnRheEVycm9yIik7CisgICAgZCgpLT50eXBlRXJyb3JDb25zdHJ1Y3RvciA9IG5ldyAoZXhl
YykgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVy
ZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsICJUeXBlRXJyb3IiKTsKKyAgICBkKCkt
PlVSSUVycm9yQ29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIE5hdGl2ZUVycm9yQ29uc3RydWN0b3Io
ZXhlYywgdGhpcywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3Ry
dWN0dXJlLCAiVVJJRXJyb3IiKTsKKworICAgIGQoKS0+b2JqZWN0UHJvdG90eXBlLT5wdXREaXJl
Y3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1
Y3Rvciwgb2JqZWN0Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyAgICBkKCktPmZ1bmN0aW9uUHJv
dG90eXBlLT5wdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5jb25zdHJ1Y3RvciwgZnVuY3Rpb25Db25zdHJ1Y3RvciwgRG9udEVudW0pOworICAg
IGQoKS0+YXJyYXlQcm90b3R5cGUtPnB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24o
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCBhcnJheUNvbnN0cnVjdG9yLCBEb250
RW51bSk7CisgICAgZCgpLT5ib29sZWFuUHJvdG90eXBlLT5wdXREaXJlY3RGdW5jdGlvbldpdGhv
dXRUcmFuc2l0aW9uKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgYm9vbGVhbkNv
bnN0cnVjdG9yLCBEb250RW51bSk7CisgICAgZCgpLT5zdHJpbmdQcm90b3R5cGUtPnB1dERpcmVj
dEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVj
dG9yLCBzdHJpbmdDb25zdHJ1Y3RvciwgRG9udEVudW0pOworICAgIGQoKS0+bnVtYmVyUHJvdG90
eXBlLT5wdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5jb25zdHJ1Y3RvciwgbnVtYmVyQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyAgICBkKCkt
PmRhdGVQcm90b3R5cGUtPnB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+
cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCBkYXRlQ29uc3RydWN0b3IsIERvbnRFbnVtKTsK
KyAgICBkKCktPnJlZ0V4cFByb3RvdHlwZS0+cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNp
dGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIGQoKS0+cmVnRXhwQ29uc3Ry
dWN0b3IsIERvbnRFbnVtKTsKKyAgICBlcnJvclByb3RvdHlwZS0+cHV0RGlyZWN0RnVuY3Rpb25X
aXRob3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIGQoKS0+
ZXJyb3JDb25zdHJ1Y3RvciwgRG9udEVudW0pOwogCiAgICAgLy8gU2V0IGdsb2JhbCBjb25zdHJ1
Y3RvcnMKIAogICAgIC8vIEZJWE1FOiBUaGVzZSBwcm9wZXJ0aWVzIGNvdWxkIGJlIGhhbmRsZWQg
YnkgYSBzdGF0aWMgaGFzaCB0YWJsZS4KIAotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRy
YW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJPYmplY3QiKSwg
b2JqZWN0Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhv
dXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAiRnVuY3Rp
b24iKSwgZnVuY3Rpb25Db25zdHJ1Y3RvciwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0
aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMs
ICJBcnJheSIpLCBhcnJheUNvbnN0cnVjdG9yLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVu
Y3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhl
YywgIkJvb2xlYW4iKSwgYm9vbGVhbkNvbnN0cnVjdG9yLCBEb250RW51bSk7Ci0gICAgcHV0RGly
ZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZp
ZXIoZXhlYywgIlN0cmluZyIpLCBzdHJpbmdDb25zdHJ1Y3RvciwgRG9udEVudW0pOwotICAgIHB1
dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVu
dGlmaWVyKGV4ZWMsICJOdW1iZXIiKSwgbnVtYmVyQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKLSAg
ICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwg
SWRlbnRpZmllcihleGVjLCAiRGF0ZSIpLCBkYXRlQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKLSAg
ICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwg
SWRlbnRpZmllcihleGVjLCAiUmVnRXhwIiksIGQoKS0+cmVnRXhwQ29uc3RydWN0b3IuZ2V0KCks
IERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMt
Pmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAiRXJyb3IiKSwgZCgpLT5lcnJvckNvbnN0
cnVjdG9yLmdldCgpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJh
bnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgIkV2YWxFcnJvciIp
LCBkKCktPmV2YWxFcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7Ci0gICAgcHV0RGly
ZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZp
ZXIoZXhlYywgIlJhbmdlRXJyb3IiKSwgZCgpLT5yYW5nZUVycm9yQ29uc3RydWN0b3IuZ2V0KCks
IERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMt
Pmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAiUmVmZXJlbmNlRXJyb3IiKSwgZCgpLT5y
ZWZlcmVuY2VFcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIo
ZXhlYywgIlN5bnRheEVycm9yIiksIGQoKS0+c3ludGF4RXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwg
RG9udEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+
Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJUeXBlRXJyb3IiKSwgZCgpLT50eXBlRXJy
b3JDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0
aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJVUklF
cnJvciIpLCBkKCktPlVSSUVycm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsKKyAgICBw
dXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKElkZW50aWZpZXIoZXhlYywgIk9iamVj
dCIpLCBvYmplY3RDb25zdHJ1Y3RvciwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9u
V2l0aG91dFRyYW5zaXRpb24oSWRlbnRpZmllcihleGVjLCAiRnVuY3Rpb24iKSwgZnVuY3Rpb25D
b25zdHJ1Y3RvciwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5z
aXRpb24oSWRlbnRpZmllcihleGVjLCAiQXJyYXkiKSwgYXJyYXlDb25zdHJ1Y3RvciwgRG9udEVu
dW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oSWRlbnRpZmllcihl
eGVjLCAiQm9vbGVhbiIpLCBib29sZWFuQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyAgICBwdXRE
aXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKElkZW50aWZpZXIoZXhlYywgIlN0cmluZyIp
LCBzdHJpbmdDb25zdHJ1Y3RvciwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0
aG91dFRyYW5zaXRpb24oSWRlbnRpZmllcihleGVjLCAiTnVtYmVyIiksIG51bWJlckNvbnN0cnVj
dG9yLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihJ
ZGVudGlmaWVyKGV4ZWMsICJEYXRlIiksIGRhdGVDb25zdHJ1Y3RvciwgRG9udEVudW0pOworICAg
IHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oSWRlbnRpZmllcihleGVjLCAiUmVn
RXhwIiksIGQoKS0+cmVnRXhwQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RG
dW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKElkZW50aWZpZXIoZXhlYywgIkVycm9yIiksIGQoKS0+
ZXJyb3JDb25zdHJ1Y3RvciwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91
dFRyYW5zaXRpb24oSWRlbnRpZmllcihleGVjLCAiRXZhbEVycm9yIiksIGQoKS0+ZXZhbEVycm9y
Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFu
c2l0aW9uKElkZW50aWZpZXIoZXhlYywgIlJhbmdlRXJyb3IiKSwgZCgpLT5yYW5nZUVycm9yQ29u
c3RydWN0b3IsIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0
aW9uKElkZW50aWZpZXIoZXhlYywgIlJlZmVyZW5jZUVycm9yIiksIGQoKS0+cmVmZXJlbmNlRXJy
b3JDb25zdHJ1Y3RvciwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRy
YW5zaXRpb24oSWRlbnRpZmllcihleGVjLCAiU3ludGF4RXJyb3IiKSwgZCgpLT5zeW50YXhFcnJv
ckNvbnN0cnVjdG9yLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJh
bnNpdGlvbihJZGVudGlmaWVyKGV4ZWMsICJUeXBlRXJyb3IiKSwgZCgpLT50eXBlRXJyb3JDb25z
dHJ1Y3RvciwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRp
b24oSWRlbnRpZmllcihleGVjLCAiVVJJRXJyb3IiKSwgZCgpLT5VUklFcnJvckNvbnN0cnVjdG9y
LCBEb250RW51bSk7CiAKICAgICAvLyBTZXQgZ2xvYmFsIHZhbHVlcy4KICAgICBHbG9iYWxQcm9w
ZXJ0eUluZm8gc3RhdGljR2xvYmFsc1tdID0gewotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8o
SWRlbnRpZmllcihleGVjLCAiTWF0aCIpLCBuZXcgKGV4ZWMpIE1hdGhPYmplY3QoZXhlYywgdGhp
cywgTWF0aE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+b2JqZWN0UHJvdG90eXBlLmdldCgp
KSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyhJ
ZGVudGlmaWVyKGV4ZWMsICJNYXRoIiksIG5ldyAoZXhlYykgTWF0aE9iamVjdChleGVjLCB0aGlz
LCBNYXRoT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5vYmplY3RQcm90b3R5cGUpKSwgRG9u
dEVudW0gfCBEb250RGVsZXRlKSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKElkZW50aWZp
ZXIoZXhlYywgIk5hTiIpLCBqc05hTigpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25s
eSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyhJZGVudGlmaWVyKGV4ZWMsICJJbmZpbml0
eSIpLCBqc051bWJlcihJbmYpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAg
ICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyhJZGVudGlmaWVyKGV4ZWMsICJ1bmRlZmluZWQiKSwg
anNVbmRlZmluZWQoKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAotICAgICAg
ICBHbG9iYWxQcm9wZXJ0eUluZm8oSWRlbnRpZmllcihleGVjLCAiSlNPTiIpLCBuZXcgKGV4ZWMp
IEpTT05PYmplY3QodGhpcywgSlNPTk9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+b2JqZWN0
UHJvdG90eXBlLmdldCgpKSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSkKKyAgICAgICAgR2xvYmFs
UHJvcGVydHlJbmZvKElkZW50aWZpZXIoZXhlYywgIkpTT04iKSwgbmV3IChleGVjKSBKU09OT2Jq
ZWN0KHRoaXMsIEpTT05PYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShkKCktPm9iamVjdFByb3RvdHlw
ZSkpLCBEb250RW51bSB8IERvbnREZWxldGUpCiAgICAgfTsKIAogICAgIGFkZFN0YXRpY0dsb2Jh
bHMoc3RhdGljR2xvYmFscywgV1RGX0FSUkFZX0xFTkdUSChzdGF0aWNHbG9iYWxzKSk7CiAKICAg
ICAvLyBTZXQgZ2xvYmFsIGZ1bmN0aW9ucy4KIAotICAgIGQoKS0+ZXZhbEZ1bmN0aW9uLnNldChl
eGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykgR2xvYmFsRXZhbEZ1bmN0aW9uKGV4
ZWMsIHRoaXMsIEdsb2JhbEV2YWxGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+ZnVuY3Rp
b25Qcm90b3R5cGUuZ2V0KCkpLCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZXZhbCwgZ2xvYmFs
RnVuY0V2YWwsIHRoaXMpKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9u
KGV4ZWMsIGQoKS0+ZXZhbEZ1bmN0aW9uLmdldCgpLCBEb250RW51bSk7CisgICAgZCgpLT5ldmFs
RnVuY3Rpb24gPSBuZXcgKGV4ZWMpIEdsb2JhbEV2YWxGdW5jdGlvbihleGVjLCB0aGlzLCBHbG9i
YWxFdmFsRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBlKSwg
MSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmV2YWwsIGdsb2JhbEZ1bmNFdmFsLCB0aGlzKTsKKyAg
ICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIGQoKS0+ZXZhbEZ1bmN0
aW9uLCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihl
eGVjLCBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCB0aGlzLCBkKCktPnBy
b3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLmdldCgpLCAyLCBJZGVudGlmaWVyKGV4ZWMsICJwYXJz
ZUludCIpLCBnbG9iYWxGdW5jUGFyc2VJbnQpLCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0RnVu
Y3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3Jh
cHBlcihleGVjLCB0aGlzLCBkKCktPnByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLmdldCgpLCAx
LCBJZGVudGlmaWVyKGV4ZWMsICJwYXJzZUZsb2F0IiksIGdsb2JhbEZ1bmNQYXJzZUZsb2F0KSwg
RG9udEVudW0pOwogICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywg
bmV3IChleGVjKSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZXhlYywgdGhpcywgZCgpLT5wcm90b3R5
cGVGdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgMSwgSWRlbnRpZmllcihleGVjLCAiaXNOYU4iKSwg
Z2xvYmFsRnVuY0lzTmFOKSwgRG9udEVudW0pOwpAQCAtMzM2LDcgKzMzNiw3IEBAIHZvaWQgSlNH
bG9iYWxPYmplY3Q6OnJlc2V0UHJvdG90eXBlKEpTVmFsdWUgcHJvdG90eXBlKQogICAgIHNldFBy
b3RvdHlwZShwcm90b3R5cGUpOwogCiAgICAgSlNPYmplY3QqIG9sZExhc3RJblByb3RvdHlwZUNo
YWluID0gbGFzdEluUHJvdG90eXBlQ2hhaW4odGhpcyk7Ci0gICAgSlNPYmplY3QqIG9iamVjdFBy
b3RvdHlwZSA9IGQoKS0+b2JqZWN0UHJvdG90eXBlLmdldCgpOworICAgIEpTT2JqZWN0KiBvYmpl
Y3RQcm90b3R5cGUgPSBkKCktPm9iamVjdFByb3RvdHlwZTsKICAgICBpZiAob2xkTGFzdEluUHJv
dG90eXBlQ2hhaW4gIT0gb2JqZWN0UHJvdG90eXBlKQogICAgICAgICBvbGRMYXN0SW5Qcm90b3R5
cGVDaGFpbi0+c2V0UHJvdG90eXBlKG9iamVjdFByb3RvdHlwZSk7CiB9CkBAIC0zNDksMjkgKzM0
OSwyOSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJr
U3RhY2spCiAgICAgZm9yIChIYXNoU2V0PEdsb2JhbENvZGVCbG9jayo+Ojpjb25zdF9pdGVyYXRv
ciBpdCA9IGNvZGVCbG9ja3MoKS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCiAgICAgICAgICgq
aXQpLT5tYXJrQWdncmVnYXRlKG1hcmtTdGFjayk7CiAKLSAgICBtYXJrSWZOZWVkZWQobWFya1N0
YWNrLCAmZCgpLT5yZWdFeHBDb25zdHJ1Y3Rvcik7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFj
aywgJmQoKS0+ZXJyb3JDb25zdHJ1Y3Rvcik7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywg
JmQoKS0+ZXZhbEVycm9yQ29uc3RydWN0b3IpOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ss
ICZkKCktPnJhbmdlRXJyb3JDb25zdHJ1Y3Rvcik7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFj
aywgJmQoKS0+cmVmZXJlbmNlRXJyb3JDb25zdHJ1Y3Rvcik7Ci0gICAgbWFya0lmTmVlZGVkKG1h
cmtTdGFjaywgJmQoKS0+c3ludGF4RXJyb3JDb25zdHJ1Y3Rvcik7Ci0gICAgbWFya0lmTmVlZGVk
KG1hcmtTdGFjaywgJmQoKS0+dHlwZUVycm9yQ29uc3RydWN0b3IpOwotICAgIG1hcmtJZk5lZWRl
ZChtYXJrU3RhY2ssICZkKCktPlVSSUVycm9yQ29uc3RydWN0b3IpOwotCi0gICAgbWFya0lmTmVl
ZGVkKG1hcmtTdGFjaywgJmQoKS0+ZXZhbEZ1bmN0aW9uKTsKLSAgICBtYXJrSWZOZWVkZWQobWFy
a1N0YWNrLCAmZCgpLT5jYWxsRnVuY3Rpb24pOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ss
ICZkKCktPmFwcGx5RnVuY3Rpb24pOwotCi0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgJmQo
KS0+b2JqZWN0UHJvdG90eXBlKTsKLSAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCAmZCgpLT5m
dW5jdGlvblByb3RvdHlwZSk7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgJmQoKS0+YXJy
YXlQcm90b3R5cGUpOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssICZkKCktPmJvb2xlYW5Q
cm90b3R5cGUpOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssICZkKCktPnN0cmluZ1Byb3Rv
dHlwZSk7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgJmQoKS0+bnVtYmVyUHJvdG90eXBl
KTsKLSAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCAmZCgpLT5kYXRlUHJvdG90eXBlKTsKLSAg
ICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCAmZCgpLT5yZWdFeHBQcm90b3R5cGUpOwotCi0gICAg
bWFya0lmTmVlZGVkKG1hcmtTdGFjaywgJmQoKS0+bWV0aG9kQ2FsbER1bW15KTsKKyAgICBtYXJr
SWZOZWVkZWQobWFya1N0YWNrLCBkKCktPnJlZ0V4cENvbnN0cnVjdG9yKTsKKyAgICBtYXJrSWZO
ZWVkZWQobWFya1N0YWNrLCBkKCktPmVycm9yQ29uc3RydWN0b3IpOworICAgIG1hcmtJZk5lZWRl
ZChtYXJrU3RhY2ssIGQoKS0+ZXZhbEVycm9yQ29uc3RydWN0b3IpOworICAgIG1hcmtJZk5lZWRl
ZChtYXJrU3RhY2ssIGQoKS0+cmFuZ2VFcnJvckNvbnN0cnVjdG9yKTsKKyAgICBtYXJrSWZOZWVk
ZWQobWFya1N0YWNrLCBkKCktPnJlZmVyZW5jZUVycm9yQ29uc3RydWN0b3IpOworICAgIG1hcmtJ
Zk5lZWRlZChtYXJrU3RhY2ssIGQoKS0+c3ludGF4RXJyb3JDb25zdHJ1Y3Rvcik7CisgICAgbWFy
a0lmTmVlZGVkKG1hcmtTdGFjaywgZCgpLT50eXBlRXJyb3JDb25zdHJ1Y3Rvcik7CisgICAgbWFy
a0lmTmVlZGVkKG1hcmtTdGFjaywgZCgpLT5VUklFcnJvckNvbnN0cnVjdG9yKTsKKworICAgIG1h
cmtJZk5lZWRlZChtYXJrU3RhY2ssIGQoKS0+ZXZhbEZ1bmN0aW9uKTsKKyAgICBtYXJrSWZOZWVk
ZWQobWFya1N0YWNrLCBkKCktPmNhbGxGdW5jdGlvbik7CisgICAgbWFya0lmTmVlZGVkKG1hcmtT
dGFjaywgZCgpLT5hcHBseUZ1bmN0aW9uKTsKKworICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ss
IGQoKS0+b2JqZWN0UHJvdG90eXBlKTsKKyAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCBkKCkt
PmZ1bmN0aW9uUHJvdG90eXBlKTsKKyAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCBkKCktPmFy
cmF5UHJvdG90eXBlKTsKKyAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCBkKCktPmJvb2xlYW5Q
cm90b3R5cGUpOworICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssIGQoKS0+c3RyaW5nUHJvdG90
eXBlKTsKKyAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCBkKCktPm51bWJlclByb3RvdHlwZSk7
CisgICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgZCgpLT5kYXRlUHJvdG90eXBlKTsKKyAgICBt
YXJrSWZOZWVkZWQobWFya1N0YWNrLCBkKCktPnJlZ0V4cFByb3RvdHlwZSk7CisKKyAgICBtYXJr
SWZOZWVkZWQobWFya1N0YWNrLCBkKCktPm1ldGhvZENhbGxEdW1teSk7CiAKICAgICBtYXJrSWZO
ZWVkZWQobWFya1N0YWNrLCBkKCktPmVycm9yU3RydWN0dXJlKTsKICAgICBtYXJrSWZOZWVkZWQo
bWFya1N0YWNrLCBkKCktPmFyZ3VtZW50c1N0cnVjdHVyZSk7CkBAIC0zOTYsMTIgKzM5NiwxMiBA
QCB2b2lkIEpTR2xvYmFsT2JqZWN0OjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2sp
CiAgICAgaWYgKGQoKS0+cmVnaXN0ZXJBcnJheSkgewogICAgICAgICAvLyBPdXRzaWRlIHRoZSBl
eGVjdXRpb24gb2YgZ2xvYmFsIGNvZGUsIHdoZW4gb3VyIHZhcmlhYmxlcyBhcmUgdG9ybiBvZmYs
CiAgICAgICAgIC8vIHdlIGNhbiBtYXJrIHRoZSB0b3JuLW9mZiBhcnJheS4KLSAgICAgICAgbWFy
a1N0YWNrLmRlcHJlY2F0ZWRBcHBlbmRWYWx1ZXMoZCgpLT5yZWdpc3RlckFycmF5LmdldCgpLCBk
KCktPnJlZ2lzdGVyQXJyYXlTaXplKTsKKyAgICAgICAgbWFya1N0YWNrLmFwcGVuZFZhbHVlcyhk
KCktPnJlZ2lzdGVyQXJyYXkuZ2V0KCksIGQoKS0+cmVnaXN0ZXJBcnJheVNpemUpOwogICAgIH0g
ZWxzZSBpZiAoZCgpLT5yZWdpc3RlcnMpIHsKICAgICAgICAgLy8gRHVyaW5nIGV4ZWN1dGlvbiBv
ZiBnbG9iYWwgY29kZSwgd2hlbiBvdXIgdmFyaWFibGVzIGFyZSBpbiB0aGUgcmVnaXN0ZXIgZmls
ZSwKICAgICAgICAgLy8gdGhlIHN5bWJvbCB0YWJsZSB0ZWxscyB1cyBob3cgbWFueSB2YXJpYWJs
ZXMgdGhlcmUgYXJlLCBhbmQgcmVnaXN0ZXJzCiAgICAgICAgIC8vIHBvaW50cyB0byB3aGVyZSB0
aGV5IGVuZCwgYW5kIHRoZSByZWdpc3RlcnMgdXNlZCBmb3IgZXhlY3V0aW9uIGJlZ2luLgotICAg
ICAgICBtYXJrU3RhY2suZGVwcmVjYXRlZEFwcGVuZFZhbHVlcyhkKCktPnJlZ2lzdGVycyAtIHN5
bWJvbFRhYmxlKCkuc2l6ZSgpLCBzeW1ib2xUYWJsZSgpLnNpemUoKSk7CisgICAgICAgIG1hcmtT
dGFjay5hcHBlbmRWYWx1ZXMoZCgpLT5yZWdpc3RlcnMgLSBzeW1ib2xUYWJsZSgpLnNpemUoKSwg
c3ltYm9sVGFibGUoKS5zaXplKCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggMmI1MDY1MWU4Y2IwYTMwOTMxOTRl
YmQyNzUzNTBkNDE1ZDllNDkwYy4uMjRiYzJmODhiNzFjMjNmNWNlMGFhMDlhOWYxZmVkZmE5NTMz
ZjU4MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCkBAIC03Myw2ICs3MywyNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICAs
IGRlc3RydWN0b3IoZGVzdHJ1Y3RvcikKICAgICAgICAgICAgICAgICAsIHJlZ2lzdGVyQXJyYXlT
aXplKDApCiAgICAgICAgICAgICAgICAgLCBnbG9iYWxTY29wZUNoYWluKE5vU2NvcGVDaGFpbigp
KQorICAgICAgICAgICAgICAgICwgcmVnRXhwQ29uc3RydWN0b3IoMCkKKyAgICAgICAgICAgICAg
ICAsIGVycm9yQ29uc3RydWN0b3IoMCkKKyAgICAgICAgICAgICAgICAsIGV2YWxFcnJvckNvbnN0
cnVjdG9yKDApCisgICAgICAgICAgICAgICAgLCByYW5nZUVycm9yQ29uc3RydWN0b3IoMCkKKyAg
ICAgICAgICAgICAgICAsIHJlZmVyZW5jZUVycm9yQ29uc3RydWN0b3IoMCkKKyAgICAgICAgICAg
ICAgICAsIHN5bnRheEVycm9yQ29uc3RydWN0b3IoMCkKKyAgICAgICAgICAgICAgICAsIHR5cGVF
cnJvckNvbnN0cnVjdG9yKDApCisgICAgICAgICAgICAgICAgLCBVUklFcnJvckNvbnN0cnVjdG9y
KDApCisgICAgICAgICAgICAgICAgLCBldmFsRnVuY3Rpb24oMCkKKyAgICAgICAgICAgICAgICAs
IGNhbGxGdW5jdGlvbigwKQorICAgICAgICAgICAgICAgICwgYXBwbHlGdW5jdGlvbigwKQorICAg
ICAgICAgICAgICAgICwgb2JqZWN0UHJvdG90eXBlKDApCisgICAgICAgICAgICAgICAgLCBmdW5j
dGlvblByb3RvdHlwZSgwKQorICAgICAgICAgICAgICAgICwgYXJyYXlQcm90b3R5cGUoMCkKKyAg
ICAgICAgICAgICAgICAsIGJvb2xlYW5Qcm90b3R5cGUoMCkKKyAgICAgICAgICAgICAgICAsIHN0
cmluZ1Byb3RvdHlwZSgwKQorICAgICAgICAgICAgICAgICwgbnVtYmVyUHJvdG90eXBlKDApCisg
ICAgICAgICAgICAgICAgLCBkYXRlUHJvdG90eXBlKDApCisgICAgICAgICAgICAgICAgLCByZWdF
eHBQcm90b3R5cGUoMCkKKyAgICAgICAgICAgICAgICAsIG1ldGhvZENhbGxEdW1teSgwKQogICAg
ICAgICAgICAgICAgICwgd2Vha1JhbmRvbShzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmFuZG9tTnVt
YmVyKCkgKiAoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpICsgMS4wKSkpCiAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICB9CkBAIC04OSwyOSArMTA5LDI5IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAgICAgU2NvcGVDaGFpbiBnbG9iYWxTY29wZUNoYWluOwogICAgICAg
ICAgICAgUmVnaXN0ZXIgZ2xvYmFsQ2FsbEZyYW1lW1JlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVh
ZGVyU2l6ZV07CiAKLSAgICAgICAgICAgIFdyaXRlQmFycmllcjxSZWdFeHBDb25zdHJ1Y3Rvcj4g
cmVnRXhwQ29uc3RydWN0b3I7Ci0gICAgICAgICAgICBXcml0ZUJhcnJpZXI8RXJyb3JDb25zdHJ1
Y3Rvcj4gZXJyb3JDb25zdHJ1Y3RvcjsKLSAgICAgICAgICAgIFdyaXRlQmFycmllcjxOYXRpdmVF
cnJvckNvbnN0cnVjdG9yPiBldmFsRXJyb3JDb25zdHJ1Y3RvcjsKLSAgICAgICAgICAgIFdyaXRl
QmFycmllcjxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPiByYW5nZUVycm9yQ29uc3RydWN0b3I7Ci0g
ICAgICAgICAgICBXcml0ZUJhcnJpZXI8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4gcmVmZXJlbmNl
RXJyb3JDb25zdHJ1Y3RvcjsKLSAgICAgICAgICAgIFdyaXRlQmFycmllcjxOYXRpdmVFcnJvckNv
bnN0cnVjdG9yPiBzeW50YXhFcnJvckNvbnN0cnVjdG9yOwotICAgICAgICAgICAgV3JpdGVCYXJy
aWVyPE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+IHR5cGVFcnJvckNvbnN0cnVjdG9yOwotICAgICAg
ICAgICAgV3JpdGVCYXJyaWVyPE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+IFVSSUVycm9yQ29uc3Ry
dWN0b3I7Ci0KLSAgICAgICAgICAgIFdyaXRlQmFycmllcjxHbG9iYWxFdmFsRnVuY3Rpb24+IGV2
YWxGdW5jdGlvbjsKLSAgICAgICAgICAgIFdyaXRlQmFycmllcjxOYXRpdmVGdW5jdGlvbldyYXBw
ZXI+IGNhbGxGdW5jdGlvbjsKLSAgICAgICAgICAgIFdyaXRlQmFycmllcjxOYXRpdmVGdW5jdGlv
bldyYXBwZXI+IGFwcGx5RnVuY3Rpb247Ci0KLSAgICAgICAgICAgIFdyaXRlQmFycmllcjxPYmpl
Y3RQcm90b3R5cGU+IG9iamVjdFByb3RvdHlwZTsKLSAgICAgICAgICAgIFdyaXRlQmFycmllcjxG
dW5jdGlvblByb3RvdHlwZT4gZnVuY3Rpb25Qcm90b3R5cGU7Ci0gICAgICAgICAgICBXcml0ZUJh
cnJpZXI8QXJyYXlQcm90b3R5cGU+IGFycmF5UHJvdG90eXBlOwotICAgICAgICAgICAgV3JpdGVC
YXJyaWVyPEJvb2xlYW5Qcm90b3R5cGU+IGJvb2xlYW5Qcm90b3R5cGU7Ci0gICAgICAgICAgICBX
cml0ZUJhcnJpZXI8U3RyaW5nUHJvdG90eXBlPiBzdHJpbmdQcm90b3R5cGU7Ci0gICAgICAgICAg
ICBXcml0ZUJhcnJpZXI8TnVtYmVyUHJvdG90eXBlPiBudW1iZXJQcm90b3R5cGU7Ci0gICAgICAg
ICAgICBXcml0ZUJhcnJpZXI8RGF0ZVByb3RvdHlwZT4gZGF0ZVByb3RvdHlwZTsKLSAgICAgICAg
ICAgIFdyaXRlQmFycmllcjxSZWdFeHBQcm90b3R5cGU+IHJlZ0V4cFByb3RvdHlwZTsKLQotICAg
ICAgICAgICAgV3JpdGVCYXJyaWVyPEpTT2JqZWN0PiBtZXRob2RDYWxsRHVtbXk7CisgICAgICAg
ICAgICBSZWdFeHBDb25zdHJ1Y3RvciogcmVnRXhwQ29uc3RydWN0b3I7CisgICAgICAgICAgICBF
cnJvckNvbnN0cnVjdG9yKiBlcnJvckNvbnN0cnVjdG9yOworICAgICAgICAgICAgTmF0aXZlRXJy
b3JDb25zdHJ1Y3RvciogZXZhbEVycm9yQ29uc3RydWN0b3I7CisgICAgICAgICAgICBOYXRpdmVF
cnJvckNvbnN0cnVjdG9yKiByYW5nZUVycm9yQ29uc3RydWN0b3I7CisgICAgICAgICAgICBOYXRp
dmVFcnJvckNvbnN0cnVjdG9yKiByZWZlcmVuY2VFcnJvckNvbnN0cnVjdG9yOworICAgICAgICAg
ICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvciogc3ludGF4RXJyb3JDb25zdHJ1Y3RvcjsKKyAgICAg
ICAgICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIHR5cGVFcnJvckNvbnN0cnVjdG9yOworICAg
ICAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogVVJJRXJyb3JDb25zdHJ1Y3RvcjsKKwor
ICAgICAgICAgICAgR2xvYmFsRXZhbEZ1bmN0aW9uKiBldmFsRnVuY3Rpb247CisgICAgICAgICAg
ICBOYXRpdmVGdW5jdGlvbldyYXBwZXIqIGNhbGxGdW5jdGlvbjsKKyAgICAgICAgICAgIE5hdGl2
ZUZ1bmN0aW9uV3JhcHBlciogYXBwbHlGdW5jdGlvbjsKKworICAgICAgICAgICAgT2JqZWN0UHJv
dG90eXBlKiBvYmplY3RQcm90b3R5cGU7CisgICAgICAgICAgICBGdW5jdGlvblByb3RvdHlwZSog
ZnVuY3Rpb25Qcm90b3R5cGU7CisgICAgICAgICAgICBBcnJheVByb3RvdHlwZSogYXJyYXlQcm90
b3R5cGU7CisgICAgICAgICAgICBCb29sZWFuUHJvdG90eXBlKiBib29sZWFuUHJvdG90eXBlOwor
ICAgICAgICAgICAgU3RyaW5nUHJvdG90eXBlKiBzdHJpbmdQcm90b3R5cGU7CisgICAgICAgICAg
ICBOdW1iZXJQcm90b3R5cGUqIG51bWJlclByb3RvdHlwZTsKKyAgICAgICAgICAgIERhdGVQcm90
b3R5cGUqIGRhdGVQcm90b3R5cGU7CisgICAgICAgICAgICBSZWdFeHBQcm90b3R5cGUqIHJlZ0V4
cFByb3RvdHlwZTsKKworICAgICAgICAgICAgSlNPYmplY3QqIG1ldGhvZENhbGxEdW1teTsKIAog
ICAgICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gYXJndW1lbnRzU3RydWN0dXJlOwogICAgICAg
ICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gYXJyYXlTdHJ1Y3R1cmU7CkBAIC0xODksMjggKzIwOSwy
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBhY2Nlc3NvcnMg
cmV0dXJuIHByaXN0aW5lIHZhbHVlcywgZXZlbiBpZiBhIHNjcmlwdCAKICAgICAgICAgLy8gcmVw
bGFjZXMgdGhlIGdsb2JhbCBvYmplY3QncyBhc3NvY2lhdGVkIHByb3BlcnR5LgogCi0gICAgICAg
IFJlZ0V4cENvbnN0cnVjdG9yKiByZWdFeHBDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIGQo
KS0+cmVnRXhwQ29uc3RydWN0b3IuZ2V0KCk7IH0KKyAgICAgICAgUmVnRXhwQ29uc3RydWN0b3Iq
IHJlZ0V4cENvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gZCgpLT5yZWdFeHBDb25zdHJ1Y3Rv
cjsgfQogCi0gICAgICAgIEVycm9yQ29uc3RydWN0b3IqIGVycm9yQ29uc3RydWN0b3IoKSBjb25z
dCB7IHJldHVybiBkKCktPmVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KLSAgICAgICAgTmF0aXZl
RXJyb3JDb25zdHJ1Y3RvciogZXZhbEVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBk
KCktPmV2YWxFcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9Ci0gICAgICAgIE5hdGl2ZUVycm9yQ29u
c3RydWN0b3IqIHJhbmdlRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIGQoKS0+cmFu
Z2VFcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9Ci0gICAgICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0
b3IqIHJlZmVyZW5jZUVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBkKCktPnJlZmVy
ZW5jZUVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KLSAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1
Y3Rvciogc3ludGF4RXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIGQoKS0+c3ludGF4
RXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQotICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9y
KiB0eXBlRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIGQoKS0+dHlwZUVycm9yQ29u
c3RydWN0b3IuZ2V0KCk7IH0KLSAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogVVJJRXJy
b3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIGQoKS0+VVJJRXJyb3JDb25zdHJ1Y3Rvci5n
ZXQoKTsgfQorICAgICAgICBFcnJvckNvbnN0cnVjdG9yKiBlcnJvckNvbnN0cnVjdG9yKCkgY29u
c3QgeyByZXR1cm4gZCgpLT5lcnJvckNvbnN0cnVjdG9yOyB9CisgICAgICAgIE5hdGl2ZUVycm9y
Q29uc3RydWN0b3IqIGV2YWxFcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gZCgpLT5l
dmFsRXJyb3JDb25zdHJ1Y3RvcjsgfQorICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBy
YW5nZUVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBkKCktPnJhbmdlRXJyb3JDb25z
dHJ1Y3RvcjsgfQorICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiByZWZlcmVuY2VFcnJv
ckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gZCgpLT5yZWZlcmVuY2VFcnJvckNvbnN0cnVj
dG9yOyB9CisgICAgICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIHN5bnRheEVycm9yQ29uc3Ry
dWN0b3IoKSBjb25zdCB7IHJldHVybiBkKCktPnN5bnRheEVycm9yQ29uc3RydWN0b3I7IH0KKyAg
ICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogdHlwZUVycm9yQ29uc3RydWN0b3IoKSBjb25z
dCB7IHJldHVybiBkKCktPnR5cGVFcnJvckNvbnN0cnVjdG9yOyB9CisgICAgICAgIE5hdGl2ZUVy
cm9yQ29uc3RydWN0b3IqIFVSSUVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBkKCkt
PlVSSUVycm9yQ29uc3RydWN0b3I7IH0KIAotICAgICAgICBHbG9iYWxFdmFsRnVuY3Rpb24qIGV2
YWxGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGQoKS0+ZXZhbEZ1bmN0aW9uLmdldCgpOyB9Cisg
ICAgICAgIEdsb2JhbEV2YWxGdW5jdGlvbiogZXZhbEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4g
ZCgpLT5ldmFsRnVuY3Rpb247IH0KIAotICAgICAgICBPYmplY3RQcm90b3R5cGUqIG9iamVjdFBy
b3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIGQoKS0+b2JqZWN0UHJvdG90eXBlLmdldCgpOyB9Ci0g
ICAgICAgIEZ1bmN0aW9uUHJvdG90eXBlKiBmdW5jdGlvblByb3RvdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCk7IH0KLSAgICAgICAgQXJyYXlQcm90b3R5
cGUqIGFycmF5UHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gZCgpLT5hcnJheVByb3RvdHlwZS5n
ZXQoKTsgfQotICAgICAgICBCb29sZWFuUHJvdG90eXBlKiBib29sZWFuUHJvdG90eXBlKCkgY29u
c3QgeyByZXR1cm4gZCgpLT5ib29sZWFuUHJvdG90eXBlLmdldCgpOyB9Ci0gICAgICAgIFN0cmlu
Z1Byb3RvdHlwZSogc3RyaW5nUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gZCgpLT5zdHJpbmdQ
cm90b3R5cGUuZ2V0KCk7IH0KLSAgICAgICAgTnVtYmVyUHJvdG90eXBlKiBudW1iZXJQcm90b3R5
cGUoKSBjb25zdCB7IHJldHVybiBkKCktPm51bWJlclByb3RvdHlwZS5nZXQoKTsgfQotICAgICAg
ICBEYXRlUHJvdG90eXBlKiBkYXRlUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gZCgpLT5kYXRl
UHJvdG90eXBlLmdldCgpOyB9Ci0gICAgICAgIFJlZ0V4cFByb3RvdHlwZSogcmVnRXhwUHJvdG90
eXBlKCkgY29uc3QgeyByZXR1cm4gZCgpLT5yZWdFeHBQcm90b3R5cGUuZ2V0KCk7IH0KKyAgICAg
ICAgT2JqZWN0UHJvdG90eXBlKiBvYmplY3RQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBkKCkt
Pm9iamVjdFByb3RvdHlwZTsgfQorICAgICAgICBGdW5jdGlvblByb3RvdHlwZSogZnVuY3Rpb25Q
cm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBkKCktPmZ1bmN0aW9uUHJvdG90eXBlOyB9CisgICAg
ICAgIEFycmF5UHJvdG90eXBlKiBhcnJheVByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIGQoKS0+
YXJyYXlQcm90b3R5cGU7IH0KKyAgICAgICAgQm9vbGVhblByb3RvdHlwZSogYm9vbGVhblByb3Rv
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIGQoKS0+Ym9vbGVhblByb3RvdHlwZTsgfQorICAgICAgICBT
dHJpbmdQcm90b3R5cGUqIHN0cmluZ1Byb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIGQoKS0+c3Ry
aW5nUHJvdG90eXBlOyB9CisgICAgICAgIE51bWJlclByb3RvdHlwZSogbnVtYmVyUHJvdG90eXBl
KCkgY29uc3QgeyByZXR1cm4gZCgpLT5udW1iZXJQcm90b3R5cGU7IH0KKyAgICAgICAgRGF0ZVBy
b3RvdHlwZSogZGF0ZVByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIGQoKS0+ZGF0ZVByb3RvdHlw
ZTsgfQorICAgICAgICBSZWdFeHBQcm90b3R5cGUqIHJlZ0V4cFByb3RvdHlwZSgpIGNvbnN0IHsg
cmV0dXJuIGQoKS0+cmVnRXhwUHJvdG90eXBlOyB9CiAKLSAgICAgICAgSlNPYmplY3QqIG1ldGhv
ZENhbGxEdW1teSgpIGNvbnN0IHsgcmV0dXJuIGQoKS0+bWV0aG9kQ2FsbER1bW15LmdldCgpOyB9
CisgICAgICAgIEpTT2JqZWN0KiBtZXRob2RDYWxsRHVtbXkoKSBjb25zdCB7IHJldHVybiBkKCkt
Pm1ldGhvZENhbGxEdW1teTsgfQogCiAgICAgICAgIFN0cnVjdHVyZSogYXJndW1lbnRzU3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gZCgpLT5hcmd1bWVudHNTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAg
ICAgICAgU3RydWN0dXJlKiBhcnJheVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIGQoKS0+YXJy
YXlTdHJ1Y3R1cmUuZ2V0KCk7IH0KQEAgLTM2NSw3ICszODUsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICBpbmxpbmUgSlNWYWx1ZSBTdHJ1Y3R1cmU6OnByb3RvdHlwZUZvckxvb2t1cChFeGVjU3Rh
dGUqIGV4ZWMpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAodHlwZUluZm8oKS50eXBlKCkgPT0g
T2JqZWN0VHlwZSkKLSAgICAgICAgICAgIHJldHVybiBtX3Byb3RvdHlwZS5nZXQoKTsKKyAgICAg
ICAgICAgIHJldHVybiBtX3Byb3RvdHlwZTsKIAogICAgICAgICBBU1NFUlQodHlwZUluZm8oKS50
eXBlKCkgPT0gU3RyaW5nVHlwZSk7CiAgICAgICAgIHJldHVybiBleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCktPnN0cmluZ1Byb3RvdHlwZSgpOwpAQCAtNDM3LDEyICs0NTcsMTIgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgewogICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciB2YWx1ZXM7CiAg
ICAgICAgIHZhbHVlcy5hcHBlbmQoc2luZ2xlSXRlbVZhbHVlKTsKLSAgICAgICAgcmV0dXJuIG5l
dyAoZXhlYykgSlNBcnJheShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKS0+YXJyYXlTdHJ1Y3R1cmUoKSwgdmFsdWVzKTsKKyAgICAgICAgcmV0dXJuIG5ldyAo
ZXhlYykgSlNBcnJheShleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmFycmF5U3RydWN0dXJl
KCksIHZhbHVlcyk7CiAgICAgfQogCiAgICAgaW5saW5lIEpTQXJyYXkqIGNvbnN0cnVjdEFycmF5
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgdmFsdWVzKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIG5ldyAoZXhlYykgSlNBcnJheShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKS0+YXJyYXlTdHJ1Y3R1cmUoKSwgdmFsdWVzKTsKKyAgICAgICAgcmV0
dXJuIG5ldyAoZXhlYykgSlNBcnJheShleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmFycmF5
U3RydWN0dXJlKCksIHZhbHVlcyk7CiAgICAgfQogCiAgICAgY2xhc3MgRHluYW1pY0dsb2JhbE9i
amVjdFNjb3BlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T05PYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5j
cHAKaW5kZXggMGY3YTU3NjE5N2MzZjNiZWQ5MzU4YWYyODFhNzg1ZGE2MmQ3M2IzYi4uNWE4MjUw
ZjA3N2M2M2VkZjAzNzU4ZDFlNWQzZWE1MDFjNTQ1YThhZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKQEAgLTg0LDEzICs4NCwxMiBAQCBwcml2YXRl
OgogICAgIHB1YmxpYzoKICAgICAgICAgSG9sZGVyKEpTT2JqZWN0Kik7CiAKLSAgICAgICAgSlNP
YmplY3QqIG9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0LmdldCgpOyB9Ci0gICAgICAg
IERlcHJlY2F0ZWRQdHI8SlNPYmplY3Q+KiBvYmplY3RTbG90KCkgeyByZXR1cm4gJm1fb2JqZWN0
OyB9CisgICAgICAgIEpTT2JqZWN0KiBvYmplY3QoKSBjb25zdCB7IHJldHVybiBtX29iamVjdDsg
fQogCiAgICAgICAgIGJvb2wgYXBwZW5kTmV4dFByb3BlcnR5KFN0cmluZ2lmaWVyJiwgVVN0cmlu
Z0J1aWxkZXImKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIERlcHJlY2F0ZWRQdHI8SlNPYmpl
Y3Q+IG1fb2JqZWN0OworICAgICAgICBKU09iamVjdCogY29uc3QgbV9vYmplY3Q7CiAgICAgICAg
IGNvbnN0IGJvb2wgbV9pc0FycmF5OwogICAgICAgICBib29sIG1faXNKU0FycmF5OwogICAgICAg
ICB1bnNpZ25lZCBtX2luZGV4OwpAQCAtMjU5LDcgKzI1OCw3IEBAIHZvaWQgU3RyaW5naWZpZXI6
Om1hcmtBZ2dyZWdhdGUoTWFya1N0YWNrJiBtYXJrU3RhY2spCiAgICAgZm9yIChTdHJpbmdpZmll
ciogc3RyaW5naWZpZXIgPSB0aGlzOyBzdHJpbmdpZmllcjsgc3RyaW5naWZpZXIgPSBzdHJpbmdp
Zmllci0+bV9uZXh0U3RyaW5naWZpZXJUb01hcmspIHsKICAgICAgICAgc2l6ZV90IHNpemUgPSBt
X2hvbGRlclN0YWNrLnNpemUoKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXpl
OyArK2kpCi0gICAgICAgICAgICBtYXJrU3RhY2suYXBwZW5kKG1faG9sZGVyU3RhY2tbaV0ub2Jq
ZWN0U2xvdCgpKTsKKyAgICAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQobV9ob2xkZXJTdGFja1tp
XS5vYmplY3QoKSk7CiAgICAgfQogfQogCkBAIC0yNzAsNyArMjY5LDcgQEAgSlNWYWx1ZSBTdHJp
bmdpZmllcjo6c3RyaW5naWZ5KEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIHJldHVybiBqc051bGwo
KTsKIAogICAgIFByb3BlcnR5TmFtZUZvckZ1bmN0aW9uQ2FsbCBlbXB0eVByb3BlcnR5TmFtZSht
X2V4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5lbXB0eUlkZW50aWZpZXIpOwotICAg
IG9iamVjdC0+cHV0RGlyZWN0KG1fZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX2V4ZWMtPmdsb2JhbERh
dGEoKS5wcm9wZXJ0eU5hbWVzLT5lbXB0eUlkZW50aWZpZXIsIHZhbHVlKTsKKyAgICBvYmplY3Qt
PnB1dERpcmVjdChtX2V4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5lbXB0eUlkZW50
aWZpZXIsIHZhbHVlKTsKIAogICAgIFVTdHJpbmdCdWlsZGVyIHJlc3VsdDsKICAgICBpZiAoYXBw
ZW5kU3RyaW5naWZpZWRWYWx1ZShyZXN1bHQsIHZhbHVlLCBvYmplY3QsIGVtcHR5UHJvcGVydHlO
YW1lKSAhPSBTdHJpbmdpZnlTdWNjZWVkZWQpCkBAIC01MDAsNyArNDk5LDcgQEAgYm9vbCBTdHJp
bmdpZmllcjo6SG9sZGVyOjphcHBlbmROZXh0UHJvcGVydHkoU3RyaW5naWZpZXImIHN0cmluZ2lm
aWVyLCBVU3RyaW5nQnUKICAgICAvLyBGaXJzdCB0aW1lIHRocm91Z2gsIGluaXRpYWxpemUuCiAg
ICAgaWYgKCFtX2luZGV4KSB7CiAgICAgICAgIGlmIChtX2lzQXJyYXkpIHsKLSAgICAgICAgICAg
IG1faXNKU0FycmF5ID0gaXNKU0FycmF5KCZleGVjLT5nbG9iYWxEYXRhKCksIG1fb2JqZWN0Lmdl
dCgpKTsKKyAgICAgICAgICAgIG1faXNKU0FycmF5ID0gaXNKU0FycmF5KCZleGVjLT5nbG9iYWxE
YXRhKCksIG1fb2JqZWN0KTsKICAgICAgICAgICAgIG1fc2l6ZSA9IG1fb2JqZWN0LT5nZXQoZXhl
YywgZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPmxlbmd0aCkudG9VSW50MzIoZXhl
Yyk7CiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnWycpOwogICAgICAgICB9IGVsc2UgewpA
QCAtNTMzLDEwICs1MzIsMTAgQEAgYm9vbCBTdHJpbmdpZmllcjo6SG9sZGVyOjphcHBlbmROZXh0
UHJvcGVydHkoU3RyaW5naWZpZXImIHN0cmluZ2lmaWVyLCBVU3RyaW5nQnUKICAgICBpZiAobV9p
c0FycmF5KSB7CiAgICAgICAgIC8vIEdldCB0aGUgdmFsdWUuCiAgICAgICAgIEpTVmFsdWUgdmFs
dWU7Ci0gICAgICAgIGlmIChtX2lzSlNBcnJheSAmJiBhc0FycmF5KG1fb2JqZWN0LmdldCgpKS0+
Y2FuR2V0SW5kZXgoaW5kZXgpKQotICAgICAgICAgICAgdmFsdWUgPSBhc0FycmF5KG1fb2JqZWN0
LmdldCgpKS0+Z2V0SW5kZXgoaW5kZXgpOworICAgICAgICBpZiAobV9pc0pTQXJyYXkgJiYgYXNB
cnJheShtX29iamVjdCktPmNhbkdldEluZGV4KGluZGV4KSkKKyAgICAgICAgICAgIHZhbHVlID0g
YXNBcnJheShtX29iamVjdCktPmdldEluZGV4KGluZGV4KTsKICAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChtX29iamVjdC5nZXQoKSk7CisgICAgICAgICAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdChtX29iamVjdCk7CiAgICAgICAgICAgICBpZiAoIW1fb2JqZWN0LT5n
ZXRPd25Qcm9wZXJ0eVNsb3QoZXhlYywgaW5kZXgsIHNsb3QpKQogICAgICAgICAgICAgICAgIHNs
b3Quc2V0VW5kZWZpbmVkKCk7CiAgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CkBAIC01NTAsMTAgKzU0OSwxMCBAQCBib29sIFN0cmluZ2lmaWVyOjpIb2xkZXI6OmFwcGVuZE5l
eHRQcm9wZXJ0eShTdHJpbmdpZmllciYgc3RyaW5naWZpZXIsIFVTdHJpbmdCdQogICAgICAgICBz
dHJpbmdpZmllci5zdGFydE5ld0xpbmUoYnVpbGRlcik7CiAKICAgICAgICAgLy8gQXBwZW5kIHRo
ZSBzdHJpbmdpZmllZCB2YWx1ZS4KLSAgICAgICAgc3RyaW5naWZ5UmVzdWx0ID0gc3RyaW5naWZp
ZXIuYXBwZW5kU3RyaW5naWZpZWRWYWx1ZShidWlsZGVyLCB2YWx1ZSwgbV9vYmplY3QuZ2V0KCks
IGluZGV4KTsKKyAgICAgICAgc3RyaW5naWZ5UmVzdWx0ID0gc3RyaW5naWZpZXIuYXBwZW5kU3Ry
aW5naWZpZWRWYWx1ZShidWlsZGVyLCB2YWx1ZSwgbV9vYmplY3QsIGluZGV4KTsKICAgICB9IGVs
c2UgewogICAgICAgICAvLyBHZXQgdGhlIHZhbHVlLgotICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xv
dChtX29iamVjdC5nZXQoKSk7CisgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KG1fb2JqZWN0KTsK
ICAgICAgICAgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lID0gbV9wcm9wZXJ0eU5hbWVzLT5wcm9w
ZXJ0eU5hbWVWZWN0b3IoKVtpbmRleF07CiAgICAgICAgIGlmICghbV9vYmplY3QtPmdldE93blBy
b3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CkBAIC01NzUsNyArNTc0LDcgQEAgYm9vbCBTdHJpbmdpZmllcjo6SG9sZGVyOjphcHBl
bmROZXh0UHJvcGVydHkoU3RyaW5naWZpZXImIHN0cmluZ2lmaWVyLCBVU3RyaW5nQnUKICAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CiAKICAgICAgICAgLy8gQXBwZW5kIHRoZSBzdHJp
bmdpZmllZCB2YWx1ZS4KLSAgICAgICAgc3RyaW5naWZ5UmVzdWx0ID0gc3RyaW5naWZpZXIuYXBw
ZW5kU3RyaW5naWZpZWRWYWx1ZShidWlsZGVyLCB2YWx1ZSwgbV9vYmplY3QuZ2V0KCksIHByb3Bl
cnR5TmFtZSk7CisgICAgICAgIHN0cmluZ2lmeVJlc3VsdCA9IHN0cmluZ2lmaWVyLmFwcGVuZFN0
cmluZ2lmaWVkVmFsdWUoYnVpbGRlciwgdmFsdWUsIG1fb2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwog
ICAgIH0KIAogICAgIC8vIEZyb20gdGhpcyBwb2ludCBvbiwgbm8gYWNjZXNzIHRvIHRoZSB0aGlz
IHBvaW50ZXIgb3IgdG8gYW55IG1lbWJlcnMsIGJlY2F1c2UgdGhlCkBAIC02NDIsMTMgKzY0MSwx
MyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgSlNWYWx1ZSBhcmdzW10gPSB7IHByb3BlcnR5
LCB1bmZpbHRlcmVkIH07CiAgICAgICAgIEFyZ0xpc3QgYXJnTGlzdChhcmdzLCAyKTsKLSAgICAg
ICAgcmV0dXJuIGNhbGwobV9leGVjLCBtX2Z1bmN0aW9uLmdldCgpLCBtX2NhbGxUeXBlLCBtX2Nh
bGxEYXRhLCB0aGlzT2JqLCBhcmdMaXN0KTsKKyAgICAgICAgcmV0dXJuIGNhbGwobV9leGVjLCBt
X2Z1bmN0aW9uLCBtX2NhbGxUeXBlLCBtX2NhbGxEYXRhLCB0aGlzT2JqLCBhcmdMaXN0KTsKICAg
ICB9CiAKICAgICBmcmllbmQgY2xhc3MgSG9sZGVyOwogCiAgICAgRXhlY1N0YXRlKiBtX2V4ZWM7
Ci0gICAgRGVwcmVjYXRlZFB0cjxKU09iamVjdD4gbV9mdW5jdGlvbjsKKyAgICBKU09iamVjdCog
bV9mdW5jdGlvbjsKICAgICBDYWxsVHlwZSBtX2NhbGxUeXBlOwogICAgIENhbGxEYXRhIG1fY2Fs
bERhdGE7CiB9OwpAQCAtNzI3LDcgKzcyNiw3IEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIFdhbGtl
cjo6d2FsayhKU1ZhbHVlIHVuZmlsdGVyZWQpCiAgICAgICAgICAgICAgICAgICAgIGFycmF5LT5k
ZWxldGVQcm9wZXJ0eShtX2V4ZWMsIGluZGV4U3RhY2subGFzdCgpKTsKICAgICAgICAgICAgICAg
ICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGlzSlNBcnJheSgmbV9leGVjLT5nbG9i
YWxEYXRhKCksIGFycmF5KSAmJiBhcnJheS0+Y2FuU2V0SW5kZXgoaW5kZXhTdGFjay5sYXN0KCkp
KQotICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXktPnNldEluZGV4KG1fZXhlYy0+Z2xvYmFs
RGF0YSgpLCBpbmRleFN0YWNrLmxhc3QoKSwgZmlsdGVyZWRWYWx1ZSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBhcnJheS0+c2V0SW5kZXgoaW5kZXhTdGFjay5sYXN0KCksIGZpbHRlcmVkVmFs
dWUpOwogICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICBh
cnJheS0+cHV0KG1fZXhlYywgaW5kZXhTdGFjay5sYXN0KCksIGZpbHRlcmVkVmFsdWUpOwogICAg
ICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNw
cAppbmRleCA3YTFlN2UxMDVjODgzOTI3NmJlMjZhNTFlN2NiYWRmY2QyZDU2ZWY2Li42ZWNjNzNm
OGM3YmRkYzBhZTY4MzUxMmNhNTYyNjliN2NmNmQ3NDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC0zMTIsNyArMzEyLDcgQEAgdm9pZCBKU09iamVj
dDo6ZGVmaW5lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBKU08KICAgICBKU1ZhbHVlIG9iamVjdCA9IGdldERpcmVjdChwcm9wZXJ0eU5hbWUp
OwogICAgIGlmIChvYmplY3QgJiYgb2JqZWN0LmlzR2V0dGVyU2V0dGVyKCkpIHsKICAgICAgICAg
QVNTRVJUKG1fc3RydWN0dXJlLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkpOwotICAgICAg
ICBhc0dldHRlclNldHRlcihvYmplY3QpLT5zZXRHZXR0ZXIoZXhlYy0+Z2xvYmFsRGF0YSgpLCBn
ZXR0ZXJGdW5jdGlvbik7CisgICAgICAgIGFzR2V0dGVyU2V0dGVyKG9iamVjdCktPnNldEdldHRl
cihnZXR0ZXJGdW5jdGlvbik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTMzMSw3ICsz
MzEsNyBAQCB2b2lkIEpTT2JqZWN0OjpkZWZpbmVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTTwogICAgIH0KIAogICAgIG1fc3RydWN0dXJl
LT5zZXRIYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKHRydWUpOwotICAgIGdldHRlclNldHRlci0+
c2V0R2V0dGVyKGV4ZWMtPmdsb2JhbERhdGEoKSwgZ2V0dGVyRnVuY3Rpb24pOworICAgIGdldHRl
clNldHRlci0+c2V0R2V0dGVyKGdldHRlckZ1bmN0aW9uKTsKIH0KIAogdm9pZCBKU09iamVjdDo6
ZGVmaW5lU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBKU09iamVjdCogc2V0dGVyRnVuY3Rpb24sIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCkBAIC0z
MzksNyArMzM5LDcgQEAgdm9pZCBKU09iamVjdDo6ZGVmaW5lU2V0dGVyKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU08KICAgICBKU1ZhbHVlIG9iamVj
dCA9IGdldERpcmVjdChwcm9wZXJ0eU5hbWUpOwogICAgIGlmIChvYmplY3QgJiYgb2JqZWN0Lmlz
R2V0dGVyU2V0dGVyKCkpIHsKICAgICAgICAgQVNTRVJUKG1fc3RydWN0dXJlLT5oYXNHZXR0ZXJT
ZXR0ZXJQcm9wZXJ0aWVzKCkpOwotICAgICAgICBhc0dldHRlclNldHRlcihvYmplY3QpLT5zZXRT
ZXR0ZXIoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzZXR0ZXJGdW5jdGlvbik7CisgICAgICAgIGFzR2V0
dGVyU2V0dGVyKG9iamVjdCktPnNldFNldHRlcihzZXR0ZXJGdW5jdGlvbik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTM1OCw3ICszNTgsNyBAQCB2b2lkIEpTT2JqZWN0OjpkZWZpbmVT
ZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpT
TwogICAgIH0KIAogICAgIG1fc3RydWN0dXJlLT5zZXRIYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVz
KHRydWUpOwotICAgIGdldHRlclNldHRlci0+c2V0U2V0dGVyKGV4ZWMtPmdsb2JhbERhdGEoKSwg
c2V0dGVyRnVuY3Rpb24pOworICAgIGdldHRlclNldHRlci0+c2V0U2V0dGVyKHNldHRlckZ1bmN0
aW9uKTsKIH0KIAogSlNWYWx1ZSBKU09iamVjdDo6bG9va3VwR2V0dGVyKEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKQEAgLTUxMiwzNCArNTEyLDM0IEBAIHZvaWQg
SlNPYmplY3Q6OnJlbW92ZURpcmVjdChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCiAg
ICAgaWYgKG1fc3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKSB7CiAgICAgICAg
IG9mZnNldCA9IG1fc3RydWN0dXJlLT5yZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKHBy
b3BlcnR5TmFtZSk7CiAgICAgICAgIGlmIChvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCkKLSAgICAg
ICAgICAgIHB1dFVuZGVmaW5lZEF0RGlyZWN0T2Zmc2V0KG9mZnNldCk7CisgICAgICAgICAgICBw
dXREaXJlY3RPZmZzZXQob2Zmc2V0LCBqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSA9IFN0cnVjdHVyZTo6cmVt
b3ZlUHJvcGVydHlUcmFuc2l0aW9uKG1fc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCk7
CiAgICAgc2V0U3RydWN0dXJlKHN0cnVjdHVyZS5yZWxlYXNlKCkpOwogICAgIGlmIChvZmZzZXQg
IT0gV1RGOjpub3RGb3VuZCkKLSAgICAgICAgcHV0VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQob2Zm
c2V0KTsKKyAgICAgICAgcHV0RGlyZWN0T2Zmc2V0KG9mZnNldCwganNVbmRlZmluZWQoKSk7CiB9
CiAKIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSW50
ZXJuYWxGdW5jdGlvbiogZnVuY3Rpb24sIHVuc2lnbmVkIGF0dHIpCiB7Ci0gICAgcHV0RGlyZWN0
RnVuY3Rpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIGZ1bmN0aW9uLT5u
YW1lKGV4ZWMpKSwgZnVuY3Rpb24sIGF0dHIpOworICAgIHB1dERpcmVjdEZ1bmN0aW9uKElkZW50
aWZpZXIoZXhlYywgZnVuY3Rpb24tPm5hbWUoZXhlYykpLCBmdW5jdGlvbiwgYXR0cik7CiB9CiAK
IHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNGdW5j
dGlvbiogZnVuY3Rpb24sIHVuc2lnbmVkIGF0dHIpCiB7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb24o
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIGZ1bmN0aW9uLT5uYW1lKGV4ZWMp
KSwgZnVuY3Rpb24sIGF0dHIpOworICAgIHB1dERpcmVjdEZ1bmN0aW9uKElkZW50aWZpZXIoZXhl
YywgZnVuY3Rpb24tPm5hbWUoZXhlYykpLCBmdW5jdGlvbiwgYXR0cik7CiB9CiAKIHZvaWQgSlNP
YmplY3Q6OnB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oRXhlY1N0YXRlKiBleGVj
LCBJbnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlvbiwgdW5zaWduZWQgYXR0cikKIHsKLSAgICBwdXRE
aXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRp
ZmllcihleGVjLCBmdW5jdGlvbi0+bmFtZShleGVjKSksIGZ1bmN0aW9uLCBhdHRyKTsKKyAgICBw
dXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKElkZW50aWZpZXIoZXhlYywgZnVuY3Rp
b24tPm5hbWUoZXhlYykpLCBmdW5jdGlvbiwgYXR0cik7CiB9CiAKIHZvaWQgSlNPYmplY3Q6OnB1
dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oRXhlY1N0YXRlKiBleGVjLCBKU0Z1bmN0
aW9uKiBmdW5jdGlvbiwgdW5zaWduZWQgYXR0cikKIHsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldp
dGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCBmdW5j
dGlvbi0+bmFtZShleGVjKSksIGZ1bmN0aW9uLCBhdHRyKTsKKyAgICBwdXREaXJlY3RGdW5jdGlv
bldpdGhvdXRUcmFuc2l0aW9uKElkZW50aWZpZXIoZXhlYywgZnVuY3Rpb24tPm5hbWUoZXhlYykp
LCBmdW5jdGlvbiwgYXR0cik7CiB9CiAKIE5FVkVSX0lOTElORSB2b2lkIEpTT2JqZWN0OjpmaWxs
R2V0dGVyUHJvcGVydHlTbG90KFByb3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1ZSogbG9jYXRpb24p
CkBAIC01OTUsMTEgKzU5NSwxMSBAQCBzdGF0aWMgYm9vbCBwdXREZXNjcmlwdG9yKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIHRhcmdldCwgY29uc3QgSWRlbnRpZmllciYgcAogICAgICAgICAg
ICAgR2V0dGVyU2V0dGVyKiBhY2Nlc3NvciA9IG5ldyAoZXhlYykgR2V0dGVyU2V0dGVyKGV4ZWMp
OwogICAgICAgICAgICAgaWYgKG9sZERlc2NyaXB0b3IuZ2V0dGVyKCkpIHsKICAgICAgICAgICAg
ICAgICBhdHRyaWJ1dGVzIHw9IEdldHRlcjsKLSAgICAgICAgICAgICAgICBhY2Nlc3Nvci0+c2V0
R2V0dGVyKGV4ZWMtPmdsb2JhbERhdGEoKSwgYXNPYmplY3Qob2xkRGVzY3JpcHRvci5nZXR0ZXIo
KSkpOworICAgICAgICAgICAgICAgIGFjY2Vzc29yLT5zZXRHZXR0ZXIoYXNPYmplY3Qob2xkRGVz
Y3JpcHRvci5nZXR0ZXIoKSkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKG9sZERl
c2NyaXB0b3Iuc2V0dGVyKCkpIHsKICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzIHw9IFNldHRl
cjsKLSAgICAgICAgICAgICAgICBhY2Nlc3Nvci0+c2V0U2V0dGVyKGV4ZWMtPmdsb2JhbERhdGEo
KSwgYXNPYmplY3Qob2xkRGVzY3JpcHRvci5zZXR0ZXIoKSkpOworICAgICAgICAgICAgICAgIGFj
Y2Vzc29yLT5zZXRTZXR0ZXIoYXNPYmplY3Qob2xkRGVzY3JpcHRvci5zZXR0ZXIoKSkpOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgdGFyZ2V0LT5wdXRXaXRoQXR0cmlidXRlcyhleGVjLCBw
cm9wZXJ0eU5hbWUsIGFjY2Vzc29yLCBhdHRyaWJ1dGVzKTsKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwpAQCAtNzIwLDkgKzcyMCw5IEBAIGJvb2wgSlNPYmplY3Q6OmRlZmluZU93blByb3BlcnR5
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lCiAgICAgR2V0
dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXIgPSBhc0dldHRlclNldHRlcihhY2Nlc3Nvcik7CiAgICAg
aWYgKGN1cnJlbnQuYXR0cmlidXRlc0VxdWFsKGRlc2NyaXB0b3IpKSB7CiAgICAgICAgIGlmIChk
ZXNjcmlwdG9yLnNldHRlcigpKQotICAgICAgICAgICAgZ2V0dGVyU2V0dGVyLT5zZXRTZXR0ZXIo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBhc09iamVjdChkZXNjcmlwdG9yLnNldHRlcigpKSk7CisgICAg
ICAgICAgICBnZXR0ZXJTZXR0ZXItPnNldFNldHRlcihhc09iamVjdChkZXNjcmlwdG9yLnNldHRl
cigpKSk7CiAgICAgICAgIGlmIChkZXNjcmlwdG9yLmdldHRlcigpKQotICAgICAgICAgICAgZ2V0
dGVyU2V0dGVyLT5zZXRHZXR0ZXIoZXhlYy0+Z2xvYmFsRGF0YSgpLCBhc09iamVjdChkZXNjcmlw
dG9yLmdldHRlcigpKSk7CisgICAgICAgICAgICBnZXR0ZXJTZXR0ZXItPnNldEdldHRlcihhc09i
amVjdChkZXNjcmlwdG9yLmdldHRlcigpKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
ICAgICBkZWxldGVQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUpOwpAQCAtNzMxLDcgKzczMSw3
IEBAIGJvb2wgSlNPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lCiAgICAgICAgIGF0dHJzIHw9IFNldHRlcjsKICAg
ICBpZiAoZGVzY3JpcHRvci5nZXR0ZXIoKSkKICAgICAgICAgYXR0cnMgfD0gR2V0dGVyOwotICAg
IHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgZ2V0dGVyU2V0dGVy
LCBhdHRycyk7CisgICAgcHV0RGlyZWN0KHByb3BlcnR5TmFtZSwgZ2V0dGVyU2V0dGVyLCBhdHRy
cyk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5oCmluZGV4IGRjZGM5M2Y3MjA5ODA3MTUzMTdiM2IxZTVkMjY5YTJlNDFkNjhmZWYu
LjgwM2FiZmQ3M2I0YzQ5YmVlYTM1ZGUxYTExYzg4MzJiYTA1ZTk3NGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtNzAsOCArNzAsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgU2V0dGVyICAgICAgID0gMSA8PCA2ICAgLy8gcHJvcGVydHkgaXMgYSBz
ZXR0ZXIKICAgICB9OwogCi0gICAgdHlwZWRlZiBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBQ
cm9wZXJ0eVN0b3JhZ2U7Ci0gICAgdHlwZWRlZiBjb25zdCBXcml0ZUJhcnJpZXJCYXNlPFVua25v
d24+KiBDb25zdFByb3BlcnR5U3RvcmFnZTsKKyAgICB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlKiBQ
cm9wZXJ0eVN0b3JhZ2U7CisgICAgdHlwZWRlZiBjb25zdCBFbmNvZGVkSlNWYWx1ZSogQ29uc3RQ
cm9wZXJ0eVN0b3JhZ2U7CiAKICAgICBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewog
ICAgICAgICBmcmllbmQgY2xhc3MgQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXI7CkBAIC0xNzks
MjQgKzE3OSwyMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBoYXNDdXN0b21Qcm9w
ZXJ0aWVzKCkgeyByZXR1cm4gIW1fc3RydWN0dXJlLT5pc0VtcHR5KCk7IH0KICAgICAgICAgYm9v
bCBoYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkgeyByZXR1cm4gbV9zdHJ1Y3R1cmUtPmhhc0dl
dHRlclNldHRlclByb3BlcnRpZXMoKTsgfQogCi0gICAgICAgIGJvb2wgcHV0RGlyZWN0KEpTR2xv
YmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWdu
ZWQgYXR0ciwgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAg
dm9pZCBwdXREaXJlY3QoSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyID0gMCk7Ci0gICAgICAgIGJvb2wgcHV0RGlyZWN0
KEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
UHV0UHJvcGVydHlTbG90Jik7CisgICAgICAgIGJvb2wgcHV0RGlyZWN0KGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0ciwgYm9vbCBjaGVj
a1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpOworICAgICAgICB2b2lkIHB1dERpcmVj
dChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVk
IGF0dHIgPSAwKTsKKyAgICAgICAgYm9vbCBwdXREaXJlY3QoY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAotICAgICAgICB2
b2lkIHB1dERpcmVjdEZ1bmN0aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgSlNDZWxsKiwgdW5zaWduZWQgYXR0ciA9IDApOwotICAgICAgICB2b2lkIHB1
dERpcmVjdEZ1bmN0aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNDZWxsKiwgdW5zaWduZWQgYXR0ciwgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9w
ZXJ0eVNsb3QmKTsKKyAgICAgICAgdm9pZCBwdXREaXJlY3RGdW5jdGlvbihjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTQ2VsbCogdmFsdWUsIHVuc2lnbmVkIGF0dHIgPSAwKTsKKyAg
ICAgICAgdm9pZCBwdXREaXJlY3RGdW5jdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIEpTQ2VsbCogdmFsdWUsIHVuc2lnbmVkIGF0dHIsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0
UHJvcGVydHlTbG90JiBzbG90KTsKICAgICAgICAgdm9pZCBwdXREaXJlY3RGdW5jdGlvbihFeGVj
U3RhdGUqIGV4ZWMsIEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyID0g
MCk7CiAgICAgICAgIHZvaWQgcHV0RGlyZWN0RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0Z1
bmN0aW9uKiBmdW5jdGlvbiwgdW5zaWduZWQgYXR0ciA9IDApOwogCi0gICAgICAgIHZvaWQgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyID0gMCk7Ci0gICAgICAgIHZvaWQg
cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQ2VsbCogdmFsdWUsIHVuc2lnbmVkIGF0dHIgPSAw
KTsKKyAgICAgICAgdm9pZCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHIgPSAwKTsKKyAg
ICAgICAgdm9pZCBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDZWxsKiB2YWx1ZSwgdW5zaWduZWQgYXR0ciA9IDApOwog
ICAgICAgICB2b2lkIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oRXhlY1N0YXRl
KiBleGVjLCBJbnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlvbiwgdW5zaWduZWQgYXR0ciA9IDApOwog
ICAgICAgICB2b2lkIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oRXhlY1N0YXRl
KiBleGVjLCBKU0Z1bmN0aW9uKiBmdW5jdGlvbiwgdW5zaWduZWQgYXR0ciA9IDApOwogCiAgICAg
ICAgIC8vIEZhc3QgYWNjZXNzIHRvIGtub3duIHByb3BlcnR5IG9mZnNldHMuCi0gICAgICAgIEpT
VmFsdWUgZ2V0RGlyZWN0T2Zmc2V0KHNpemVfdCBvZmZzZXQpIGNvbnN0IHsgcmV0dXJuIHByb3Bl
cnR5U3RvcmFnZSgpW29mZnNldF0uZ2V0KCk7IH0KLSAgICAgICAgdm9pZCBwdXREaXJlY3RPZmZz
ZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBzaXplX3Qgb2Zmc2V0LCBKU1ZhbHVlIHZhbHVl
KSB7IHByb3BlcnR5U3RvcmFnZSgpW29mZnNldF0uc2V0KGdsb2JhbERhdGEsIHRoaXMsIHZhbHVl
KTsgfQotICAgICAgICB2b2lkIHB1dFVuZGVmaW5lZEF0RGlyZWN0T2Zmc2V0KHNpemVfdCBvZmZz
ZXQpIHsgcHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XS5zZXRVbmRlZmluZWQoKTsgfQorICAgICAg
ICBKU1ZhbHVlIGdldERpcmVjdE9mZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBK
U1ZhbHVlOjpkZWNvZGUocHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XSk7IH0KKyAgICAgICAgdm9p
ZCBwdXREaXJlY3RPZmZzZXQoc2l6ZV90IG9mZnNldCwgSlNWYWx1ZSB2YWx1ZSkgeyBwcm9wZXJ0
eVN0b3JhZ2UoKVtvZmZzZXRdID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsgfQogCiAgICAgICAg
IHZvaWQgZmlsbEdldHRlclByb3BlcnR5U2xvdChQcm9wZXJ0eVNsb3QmLCBKU1ZhbHVlKiBsb2Nh
dGlvbik7CiAKQEAgLTIyNiw5ICsyMjUsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50KTsKICAgICAgICAgfQogCi0gICAg
ICAgIHZvaWQgZmxhdHRlbkRpY3Rpb25hcnlPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
KQorICAgICAgICB2b2lkIGZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KCkKICAgICAgICAgewotICAg
ICAgICAgICAgbV9zdHJ1Y3R1cmUtPmZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKGdsb2JhbERh
dGEsIHRoaXMpOworICAgICAgICAgICAgbV9zdHJ1Y3R1cmUtPmZsYXR0ZW5EaWN0aW9uYXJ5U3Ry
dWN0dXJlKHRoaXMpOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBwdXRBbm9ueW1vdXNWYWx1
ZSh1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSB2YWx1ZSkKQEAgLTI2OCw4ICsyNjcsOCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEpTVmFsdWUq
PigmcHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XSk7CiAgICAgICAgIH0KIAotICAgICAgICBib29s
IHB1dERpcmVjdEludGVybmFsKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0ciwgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQ
cm9wZXJ0eVNsb3QmLCBKU0NlbGwqKTsKLSAgICAgICAgYm9vbCBwdXREaXJlY3RJbnRlcm5hbChK
U0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVu
c2lnbmVkIGF0dHIsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAg
ICAgIGJvb2wgcHV0RGlyZWN0SW50ZXJuYWwoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyLCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFBy
b3BlcnR5U2xvdCYgc2xvdCwgSlNDZWxsKik7CisgICAgICAgIGJvb2wgcHV0RGlyZWN0SW50ZXJu
YWwoSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCB1bnNpZ25lZCBhdHRyLCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5U2xv
dCYgc2xvdCk7CiAgICAgICAgIHZvaWQgcHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBh
dHRyID0gMCk7CiAKICAgICAgICAgYm9vbCBpbmxpbmVHZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKQEAg
LTI3OSw3ICsyNzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB1bmlvbiB7CiAgICAg
ICAgICAgICBQcm9wZXJ0eVN0b3JhZ2UgbV9leHRlcm5hbFN0b3JhZ2U7Ci0gICAgICAgICAgICBX
cml0ZUJhcnJpZXJCYXNlPFVua25vd24+IG1faW5saW5lU3RvcmFnZVtpbmxpbmVTdG9yYWdlQ2Fw
YWNpdHldOworICAgICAgICAgICAgRW5jb2RlZEpTVmFsdWUgbV9pbmxpbmVTdG9yYWdlW2lubGlu
ZVN0b3JhZ2VDYXBhY2l0eV07CiAgICAgICAgIH07CiAKICAgICAgICAgUmVmUHRyPFN0cnVjdHVy
ZT4gbV9pbmhlcml0b3JJRDsKQEAgLTQ1MSw3ICs0NTAsNyBAQCBpbmxpbmUgSlNWYWx1ZSBKU09i
amVjdDo6Z2V0KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lKSBjb25zdAog
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCi1pbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0
RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIGJvb2wg
Y2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90JiBzbG90LCBKU0NlbGwqIHNwZWNpZmljRnVu
Y3Rpb24pCitpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
LCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYgc2xvdCwgSlNDZWxsKiBzcGVj
aWZpY0Z1bmN0aW9uKQogewogICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAgQVNTRVJUKCFIZWFwOjpo
ZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFwKHRoaXMpKTsKQEAg
LTQ2OCw3ICs0NjcsNyBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaQogICAgICAgICAgICAgaWYg
KGNoZWNrUmVhZE9ubHkgJiYgY3VycmVudEF0dHJpYnV0ZXMgJiBSZWFkT25seSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgICAgIHB1dERpcmVjdE9mZnNldChnbG9i
YWxEYXRhLCBvZmZzZXQsIHZhbHVlKTsKKyAgICAgICAgICAgIHB1dERpcmVjdE9mZnNldChvZmZz
ZXQsIHZhbHVlKTsKICAgICAgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQsIHRoZSBvYmplY3RzIHN0
cnVjdHVyZSBvbmx5IGhhcyBhIHNwZWNpZmljIHZhbHVlIHNldCBpZiBwcmV2aW91c2x5IHRoZXJl
CiAgICAgICAgICAgICAvLyBoYWQgYmVlbiBvbmUgc2V0LCBhbmQgaWYgdGhlIG5ldyB2YWx1ZSBi
ZWluZyBzcGVjaWZpZWQgaXMgdGhlIHNhbWUgKG90aGVyd2lzZSB3ZSB3b3VsZAogICAgICAgICAg
ICAgLy8gaGF2ZSBkZXNwZWNpZmllZCwgYWJvdmUpLiAgU28sIGlmIGN1cnJlbnRTcGVjaWZpY0Z1
bmN0aW9uIGlzIG5vdCBzZXQsIG9yIGlmIHRoZSBuZXcKQEAgLTQ4Niw3ICs0ODUsNyBAQCBpbmxp
bmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBjb25zdCBJZGVudGlmaQogICAgICAgICAgICAgYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2Uo
Y3VycmVudENhcGFjaXR5LCBtX3N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7
CiAKICAgICAgICAgQVNTRVJUKG9mZnNldCA8IG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VD
YXBhY2l0eSgpKTsKLSAgICAgICAgcHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERhdGEsIG9mZnNldCwg
dmFsdWUpOworICAgICAgICBwdXREaXJlY3RPZmZzZXQob2Zmc2V0LCB2YWx1ZSk7CiAgICAgICAg
IC8vIFNlZSBjb21tZW50IG9uIHNldE5ld1Byb3BlcnR5IGNhbGwgYmVsb3cuCiAgICAgICAgIGlm
ICghc3BlY2lmaWNGdW5jdGlvbikKICAgICAgICAgICAgIHNsb3Quc2V0TmV3UHJvcGVydHkodGhp
cywgb2Zmc2V0KTsKQEAgLTUwMSw3ICs1MDAsNyBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0
RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaQog
CiAgICAgICAgIEFTU0VSVChvZmZzZXQgPCBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFj
aXR5KCkpOwogICAgICAgICBzZXRTdHJ1Y3R1cmUoc3RydWN0dXJlLnJlbGVhc2UoKSk7Ci0gICAg
ICAgIHB1dERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBvZmZzZXQsIHZhbHVlKTsKKyAgICAgICAg
cHV0RGlyZWN0T2Zmc2V0KG9mZnNldCwgdmFsdWUpOwogICAgICAgICAvLyBUaGlzIGlzIGEgbmV3
IHByb3BlcnR5OyB0cmFuc2l0aW9ucyB3aXRoIHNwZWNpZmljIHZhbHVlcyBhcmUgbm90IGN1cnJl
bnRseSBjYWNoYWJsZSwKICAgICAgICAgLy8gc28gbGVhdmUgdGhlIHNsb3QgaW4gYW4gdW5jYWNo
YWJsZSBzdGF0ZS4KICAgICAgICAgaWYgKCFzcGVjaWZpY0Z1bmN0aW9uKQpAQCAtNTI4LDcgKzUy
Nyw3IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbChKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpCiAgICAgICAgIGlmIChjdXJyZW50U3BlY2lm
aWNGdW5jdGlvbikgewogICAgICAgICAgICAgLy8gY2FzZSAoMSkgRG8gdGhlIHB1dCwgdGhlbiBy
ZXR1cm4gbGVhdmluZyB0aGUgc2xvdCB1bmNhY2hhYmxlLgogICAgICAgICAgICAgaWYgKHNwZWNp
ZmljRnVuY3Rpb24gPT0gY3VycmVudFNwZWNpZmljRnVuY3Rpb24pIHsKLSAgICAgICAgICAgICAg
ICBwdXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwgb2Zmc2V0LCB2YWx1ZSk7CisgICAgICAgICAg
ICAgICAgcHV0RGlyZWN0T2Zmc2V0KG9mZnNldCwgdmFsdWUpOwogICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gY2FzZSAoMikgRGVzcGVj
aWZ5LCBmYWxsIHRocm91Z2ggdG8gKDMpLgpAQCAtNTM3LDcgKzUzNiw3IEBAIGlubGluZSBib29s
IEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNv
bnN0IElkZW50aWZpCiAKICAgICAgICAgLy8gY2FzZSAoMykgc2V0IHRoZSBzbG90LCBkbyB0aGUg
cHV0LCByZXR1cm4uCiAgICAgICAgIHNsb3Quc2V0RXhpc3RpbmdQcm9wZXJ0eSh0aGlzLCBvZmZz
ZXQpOwotICAgICAgICBwdXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwgb2Zmc2V0LCB2YWx1ZSk7
CisgICAgICAgIHB1dERpcmVjdE9mZnNldChvZmZzZXQsIHZhbHVlKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogCkBAIC01NTgsNyArNTU3LDcgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6
OnB1dERpcmVjdEludGVybmFsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRp
ZmkKIAogICAgIEFTU0VSVChvZmZzZXQgPCBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFj
aXR5KCkpOwogICAgIHNldFN0cnVjdHVyZShzdHJ1Y3R1cmUucmVsZWFzZSgpKTsKLSAgICBwdXRE
aXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwgb2Zmc2V0LCB2YWx1ZSk7CisgICAgcHV0RGlyZWN0T2Zm
c2V0KG9mZnNldCwgdmFsdWUpOwogICAgIC8vIFRoaXMgaXMgYSBuZXcgcHJvcGVydHk7IHRyYW5z
aXRpb25zIHdpdGggc3BlY2lmaWMgdmFsdWVzIGFyZSBub3QgY3VycmVudGx5IGNhY2hhYmxlLAog
ICAgIC8vIHNvIGxlYXZlIHRoZSBzbG90IGluIGFuIHVuY2FjaGFibGUgc3RhdGUuCiAgICAgaWYg
KCFzcGVjaWZpY0Z1bmN0aW9uKQpAQCAtNTcxLDYxICs1NzAsNjEgQEAgaW5saW5lIGJvb2wgSlNP
YmplY3Q6OnB1dERpcmVjdEludGVybmFsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3Qg
SWRlbnRpZmkKICAgICBBU1NFUlQodmFsdWUpOwogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1
ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlzKSk7CiAKLSAgICByZXR1
cm4gcHV0RGlyZWN0SW50ZXJuYWwoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0
cmlidXRlcywgY2hlY2tSZWFkT25seSwgc2xvdCwgZ2V0SlNGdW5jdGlvbihnbG9iYWxEYXRhLCB2
YWx1ZSkpOworICAgIHJldHVybiBwdXREaXJlY3RJbnRlcm5hbChwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBhdHRyaWJ1dGVzLCBjaGVja1JlYWRPbmx5LCBzbG90LCBnZXRKU0Z1bmN0aW9uKGdsb2JhbERh
dGEsIHZhbHVlKSk7CiB9CiAKIGlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5h
bChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBQdXRQcm9wZXJ0
eVNsb3Qgc2xvdDsKLSAgICBwdXREaXJlY3RJbnRlcm5hbChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBmYWxzZSwgc2xvdCwgZ2V0SlNGdW5jdGlvbihnbG9iYWxE
YXRhLCB2YWx1ZSkpOworICAgIHB1dERpcmVjdEludGVybmFsKHByb3BlcnR5TmFtZSwgdmFsdWUs
IGF0dHJpYnV0ZXMsIGZhbHNlLCBzbG90LCBnZXRKU0Z1bmN0aW9uKGdsb2JhbERhdGEsIHZhbHVl
KSk7CiB9CiAKLWlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3QoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUs
IHVuc2lnbmVkIGF0dHJpYnV0ZXMsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90
JiBzbG90KQoraW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdChjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIGJvb2wg
Y2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEFTU0VSVCh2YWx1
ZSk7CiAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZhbHVlKSA9
PSBIZWFwOjpoZWFwKHRoaXMpKTsKIAotICAgIHJldHVybiBwdXREaXJlY3RJbnRlcm5hbChnbG9i
YWxEYXRhLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBjaGVja1JlYWRPbmx5LCBz
bG90LCAwKTsKKyAgICByZXR1cm4gcHV0RGlyZWN0SW50ZXJuYWwocHJvcGVydHlOYW1lLCB2YWx1
ZSwgYXR0cmlidXRlcywgY2hlY2tSZWFkT25seSwgc2xvdCwgMCk7CiB9CiAKLWlubGluZSB2b2lk
IEpTT2JqZWN0OjpwdXREaXJlY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMp
CitpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0KGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBQdXRQ
cm9wZXJ0eVNsb3Qgc2xvdDsKLSAgICBwdXREaXJlY3RJbnRlcm5hbChnbG9iYWxEYXRhLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBmYWxzZSwgc2xvdCwgMCk7CisgICAgcHV0RGly
ZWN0SW50ZXJuYWwocHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgZmFsc2UsIHNsb3Qs
IDApOwogfQogCi1pbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0KEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0
KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVy
dHlTbG90JiBzbG90KQogewotICAgIHJldHVybiBwdXREaXJlY3RJbnRlcm5hbChnbG9iYWxEYXRh
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBmYWxzZSwgc2xvdCwgMCk7CisgICAgcmV0dXJuIHB1
dERpcmVjdEludGVybmFsKHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIGZhbHNlLCBzbG90LCAwKTsK
IH0KIAotaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdEZ1bmN0aW9uKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0NlbGwqIHZh
bHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5
U2xvdCYgc2xvdCkKK2lubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RGdW5jdGlvbihjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQ2VsbCogdmFsdWUsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewotICAg
IHB1dERpcmVjdEludGVybmFsKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJp
YnV0ZXMsIGNoZWNrUmVhZE9ubHksIHNsb3QsIHZhbHVlKTsKKyAgICBwdXREaXJlY3RJbnRlcm5h
bChwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBjaGVja1JlYWRPbmx5LCBzbG90LCB2
YWx1ZSk7CiB9CiAKLWlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RGdW5jdGlvbihKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlND
ZWxsKiB2YWx1ZSwgdW5zaWduZWQgYXR0cikKK2lubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJl
Y3RGdW5jdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQ2VsbCogdmFsdWUs
IHVuc2lnbmVkIGF0dHIpCiB7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Q7Ci0gICAgcHV0RGly
ZWN0SW50ZXJuYWwoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0ciwgZmFsc2Us
IHNsb3QsIHZhbHVlKTsKKyAgICBwdXREaXJlY3RJbnRlcm5hbChwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBhdHRyLCBmYWxzZSwgc2xvdCwgdmFsdWUpOwogfQogCi1pbmxpbmUgdm9pZCBKU09iamVjdDo6
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMpCitpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzKQogewogICAgIHNpemVfdCBjdXJyZW50Q2FwYWNpdHkgPSBtX3N0cnVjdHVyZS0+
cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKICAgICBzaXplX3Qgb2Zmc2V0ID0gbV9zdHJ1Y3R1
cmUtPmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24ocHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVz
LCAwKTsKICAgICBpZiAoY3VycmVudENhcGFjaXR5ICE9IG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0
b3JhZ2VDYXBhY2l0eSgpKQogICAgICAgICBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShjdXJyZW50
Q2FwYWNpdHksIG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKLSAgICBw
dXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwgb2Zmc2V0LCB2YWx1ZSk7CisgICAgcHV0RGlyZWN0
T2Zmc2V0KG9mZnNldCwgdmFsdWUpOwogfQogCi1pbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGly
ZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDZWxsKiB2YWx1ZSwgdW5zaWduZWQgYXR0
cmlidXRlcykKK2lubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRU
cmFuc2l0aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDZWxsKiB2YWx1ZSwg
dW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBzaXplX3QgY3VycmVudENhcGFjaXR5ID0gbV9z
dHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7CiAgICAgc2l6ZV90IG9mZnNldCA9
IG1fc3RydWN0dXJlLT5hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKHByb3BlcnR5TmFtZSwg
YXR0cmlidXRlcywgdmFsdWUpOwogICAgIGlmIChjdXJyZW50Q2FwYWNpdHkgIT0gbV9zdHJ1Y3R1
cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpCiAgICAgICAgIGFsbG9jYXRlUHJvcGVydHlT
dG9yYWdlKGN1cnJlbnRDYXBhY2l0eSwgbV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFj
aXR5KCkpOwotICAgIHB1dERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBvZmZzZXQsIHZhbHVlKTsK
KyAgICBwdXREaXJlY3RPZmZzZXQob2Zmc2V0LCB2YWx1ZSk7CiB9CiAKIGlubGluZSB2b2lkIEpT
T2JqZWN0Ojp0cmFuc2l0aW9uVG8oU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUpCkBAIC03MDQsNyAr
NzAzLDcgQEAgaW5saW5lIHZvaWQgSlNWYWx1ZTo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHUKIGlubGluZSB2b2lkIEpTVmFsdWU6OnB1
dERpcmVjdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEFTU0VSVChpc0Nl
bGwoKSAmJiBpc09iamVjdCgpKTsKLSAgICBpZiAoIWFzT2JqZWN0KGFzQ2VsbCgpKS0+cHV0RGly
ZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkgJiYgc2xv
dC5pc1N0cmljdE1vZGUoKSkKKyAgICBpZiAoIWFzT2JqZWN0KGFzQ2VsbCgpKS0+cHV0RGlyZWN0
KHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpICYmIHNsb3QuaXNTdHJpY3RNb2RlKCkpCiAgICAg
ICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVF
cnJvcik7CiB9CiAKQEAgLTcyNiw3ICs3MjUsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSlNPYmpl
Y3Q6OmFsbG9jYXRlUHJvcGVydHlTdG9yYWdlSW5saW5lKHNpemVfdCBvbGRTaXplLCBzaXplXwog
ICAgIGJvb2wgd2FzSW5saW5lID0gKG9sZFNpemUgPT0gSlNPYmplY3Q6OmlubGluZVN0b3JhZ2VD
YXBhY2l0eSk7CiAKICAgICBQcm9wZXJ0eVN0b3JhZ2Ugb2xkUHJvcGVydHlTdG9yYWdlID0gKHdh
c0lubGluZSA/IG1faW5saW5lU3RvcmFnZSA6IG1fZXh0ZXJuYWxTdG9yYWdlKTsKLSAgICBQcm9w
ZXJ0eVN0b3JhZ2UgbmV3UHJvcGVydHlTdG9yYWdlID0gbmV3IFdyaXRlQmFycmllckJhc2U8VW5r
bm93bj5bbmV3U2l6ZV07CisgICAgUHJvcGVydHlTdG9yYWdlIG5ld1Byb3BlcnR5U3RvcmFnZSA9
IG5ldyBFbmNvZGVkSlNWYWx1ZVtuZXdTaXplXTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBvbGRTaXplOyArK2kpCiAgICAgICAgbmV3UHJvcGVydHlTdG9yYWdlW2ldID0gb2xkUHJv
cGVydHlTdG9yYWdlW2ldOwpAQCAtNzQxLDEwICs3NDAsMTEgQEAgQUxXQVlTX0lOTElORSB2b2lk
IEpTT2JqZWN0OjptYXJrQ2hpbGRyZW5EaXJlY3QoTWFya1N0YWNrJiBtYXJrU3RhY2spCiB7CiAg
ICAgSlNDZWxsOjptYXJrQ2hpbGRyZW4obWFya1N0YWNrKTsKIAotICAgIG1hcmtTdGFjay5hcHBl
bmQobV9zdHJ1Y3R1cmUtPnN0b3JlZFByb3RvdHlwZVNsb3QoKSk7CisgICAgbWFya1N0YWNrLmFw
cGVuZChwcm90b3R5cGUoKSk7CisgICAgCiAgICAgUHJvcGVydHlTdG9yYWdlIHN0b3JhZ2UgPSBw
cm9wZXJ0eVN0b3JhZ2UoKTsKICAgICBzaXplX3Qgc3RvcmFnZVNpemUgPSBtX3N0cnVjdHVyZS0+
cHJvcGVydHlTdG9yYWdlU2l6ZSgpOwotICAgIG1hcmtTdGFjay5hcHBlbmRWYWx1ZXMoc3RvcmFn
ZSwgc3RvcmFnZVNpemUpOworICAgIG1hcmtTdGFjay5hcHBlbmRWYWx1ZXMocmVpbnRlcnByZXRf
Y2FzdDxKU1ZhbHVlKj4oc3RvcmFnZSksIHN0b3JhZ2VTaXplKTsKIH0KIAogLy8gLS0tIEpTVmFs
dWUgaW5saW5lcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCmlu
ZGV4IGQwOGQ4ZmU4MDRjYjM2MzFmYmQ4MzBkZTQ4YTljMzU1MjZjYjZhNWIuLmE1ZDRkYTAxYjY3
Y2E0OTg0ODAyYjAyYzQyNjEzNDU5YWMxZTFjNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCkBAIC00MCwx
MSArNDAsMTEgQEAgaW5saW5lIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OkpTUHJvcGVydHlOYW1l
SXRlcmF0b3IoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU4KICAgICAsIG1fY2FjaGVkU3RydWN0
dXJlKDApCiAgICAgLCBtX251bUNhY2hlYWJsZVNsb3RzKG51bUNhY2hlYWJsZVNsb3RzKQogICAg
ICwgbV9qc1N0cmluZ3NTaXplKHByb3BlcnR5TmFtZUFycmF5RGF0YS0+cHJvcGVydHlOYW1lVmVj
dG9yKCkuc2l6ZSgpKQotICAgICwgbV9qc1N0cmluZ3MobmV3IFdyaXRlQmFycmllcjxVbmtub3du
PlttX2pzU3RyaW5nc1NpemVdKQorICAgICwgbV9qc1N0cmluZ3MobmV3IEpTVmFsdWVbbV9qc1N0
cmluZ3NTaXplXSkKIHsKICAgICBQcm9wZXJ0eU5hbWVBcnJheURhdGE6OlByb3BlcnR5TmFtZVZl
Y3RvciYgcHJvcGVydHlOYW1lVmVjdG9yID0gcHJvcGVydHlOYW1lQXJyYXlEYXRhLT5wcm9wZXJ0
eU5hbWVWZWN0b3IoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fanNTdHJpbmdzU2l6
ZTsgKytpKQotICAgICAgICBtX2pzU3RyaW5nc1tpXS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0
aGlzLCBqc093bmVkU3RyaW5nKGV4ZWMsIHByb3BlcnR5TmFtZVZlY3RvcltpXS51c3RyaW5nKCkp
KTsKKyAgICAgICAgbV9qc1N0cmluZ3NbaV0gPSBqc093bmVkU3RyaW5nKGV4ZWMsIHByb3BlcnR5
TmFtZVZlY3RvcltpXS51c3RyaW5nKCkpOwogfQogCiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjp+
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcigpCkBAIC05MSw3ICs5MSw3IEBAIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3IqIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0CiAKIEpTVmFsdWUgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Z2V0KEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIGJhc2UsIHNpemVfdCBpKQogewotICAgIEpTVmFsdWUgaWRlbnRp
ZmllciA9IG1fanNTdHJpbmdzW2ldLmdldCgpOworICAgIEpTVmFsdWUmIGlkZW50aWZpZXIgPSBt
X2pzU3RyaW5nc1tpXTsKICAgICBpZiAobV9jYWNoZWRTdHJ1Y3R1cmUgPT0gYmFzZS0+c3RydWN0
dXJlKCkgJiYgbV9jYWNoZWRQcm90b3R5cGVDaGFpbiA9PSBiYXNlLT5zdHJ1Y3R1cmUoKS0+cHJv
dG90eXBlQ2hhaW4oZXhlYykpCiAgICAgICAgIHJldHVybiBpZGVudGlmaWVyOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmgKaW5kZXggY2Q0NjI0M2E4MDkxYzIxMGE3NDYyNTU3M2I3NzkzNGUzM2RjYTcyNy4uMDE3MDBh
YzIxMjE1NWI0ZmU5Yjk3ZmFhYWQxYmZkY2M3NDA0MmZmYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaApAQCAtODUs
NyArODUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZUNoYWlu
PiBtX2NhY2hlZFByb3RvdHlwZUNoYWluOwogICAgICAgICB1aW50MzJfdCBtX251bUNhY2hlYWJs
ZVNsb3RzOwogICAgICAgICB1aW50MzJfdCBtX2pzU3RyaW5nc1NpemU7Ci0gICAgICAgIE93bkFy
cmF5UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+IG1fanNTdHJpbmdzOworICAgICAgICBPd25B
cnJheVB0cjxKU1ZhbHVlPiBtX2pzU3RyaW5nczsKICAgICB9OwogCiAgICAgaW5saW5lIHZvaWQg
U3RydWN0dXJlOjpzZXRFbnVtZXJhdGlvbkNhY2hlKEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGVu
dW1lcmF0aW9uQ2FjaGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RhdGljU2NvcGVPYmplY3QuY3BwCmluZGV4IDgwYjA0OGUwYTMwODQ2NDU1OGE3OTY3ZDIw
YmJkNzQ3ZmViN2U5NjguLjdhYjFkMWMxMDc0NGY1MDNiZmE4MWQxNzlhN2IzZjRiM2RiMDY0NDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2Nv
cGVPYmplY3QuY3BwCkBAIC0zNCw3ICszNCw3IEBAIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwo
SlNTdGF0aWNTY29wZU9iamVjdCk7CiB2b2lkIEpTU3RhdGljU2NvcGVPYmplY3Q6Om1hcmtDaGls
ZHJlbihNYXJrU3RhY2smIG1hcmtTdGFjaykKIHsKICAgICBKU1ZhcmlhYmxlT2JqZWN0OjptYXJr
Q2hpbGRyZW4obWFya1N0YWNrKTsKLSAgICBtYXJrU3RhY2suZGVwcmVjYXRlZEFwcGVuZCgmZCgp
LT5yZWdpc3RlclN0b3JlKTsKKyAgICBtYXJrU3RhY2suYXBwZW5kKGQoKS0+cmVnaXN0ZXJTdG9y
ZS5qc1ZhbHVlKCkpOwogfQogCiBKU09iamVjdCogSlNTdGF0aWNTY29wZU9iamVjdDo6dG9UaGlz
T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RyaW5nLmNwcAppbmRleCA4NDhjNDMxYWMwYzRiNDBmZDQ2YzdmNzQ4MWU0OTcxMzcy
OGQ3YjVhLi5iYTI4MTM5YTRjYWVkMjIyYmMxY2JiZjg0YjRhZmMzYTc0YjgyYTlhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCkBAIC0yNTUsNyArMjU1LDcg
QEAgVVN0cmluZyBKU1N0cmluZzo6dG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogCiBp
bmxpbmUgU3RyaW5nT2JqZWN0KiBTdHJpbmdPYmplY3Q6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMs
IEpTU3RyaW5nKiBzdHJpbmcpCiB7Ci0gICAgcmV0dXJuIG5ldyAoZXhlYykgU3RyaW5nT2JqZWN0
KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5zdHJpbmdP
YmplY3RTdHJ1Y3R1cmUoKSwgc3RyaW5nKTsKKyAgICByZXR1cm4gbmV3IChleGVjKSBTdHJpbmdP
YmplY3QoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5zdHJpbmdPYmplY3RTdHJ1Y3R1cmUo
KSwgc3RyaW5nKTsKIH0KIAogSlNPYmplY3QqIEpTU3RyaW5nOjp0b09iamVjdChFeGVjU3RhdGUq
IGV4ZWMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgKaW5kZXgg
YjJlN2E1MWU1ODExOTg4NjJkYmJkODZlZDk1OGVlZjZjMGVlZTFlOS4uY2FkOTY2MjgxZGI3Y2Q3
YjBlNjY3YTY5YjkwZDJkYmM0ZDhmN2NlNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVmFsdWUuaApAQCAtNDcsOSArNDcsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBzdHJ1Y3Qg
Q2xhc3NJbmZvOwogICAgIHN0cnVjdCBJbnN0cnVjdGlvbjsKIAotICAgIHRlbXBsYXRlIDxjbGFz
cyBUPiBjbGFzcyBEZXByZWNhdGVkUHRyOwotICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBjbGFzcyBX
cml0ZUJhcnJpZXJCYXNlOwotCiAgICAgZW51bSBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIHsgTm9Q
cmVmZXJlbmNlLCBQcmVmZXJOdW1iZXIsIFByZWZlclN0cmluZyB9OwogCiAjaWYgVVNFKEpTVkFM
VUUzMl82NCkKQEAgLTIxNSw5ICsyMTIsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICNlbmRpZgogCiAg
ICAgcHJpdmF0ZToKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IEpTVmFsdWUoRGVwcmVjYXRl
ZFB0cjxUPik7Ci0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBKU1ZhbHVlKFdyaXRlQmFycmll
ckJhc2U8VD4pOwotCiAgICAgICAgIGVudW0gSGFzaFRhYmxlRGVsZXRlZFZhbHVlVGFnIHsgSGFz
aFRhYmxlRGVsZXRlZFZhbHVlIH07CiAgICAgICAgIEpTVmFsdWUoSGFzaFRhYmxlRGVsZXRlZFZh
bHVlVGFnKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNX
cmFwcGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBl
ck9iamVjdC5jcHAKaW5kZXggNmM3M2IyZjBkYThhNTgwZTFlMTBkMWJjZThlMzA4ZDRmYzE4NmM0
MC4uMmMzOWY1YzIzODQ5ZmVlMmFmZmExOTRkNGM2ZWU1OTM5OWFiYTc0MSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuY3BwCkBAIC0zMCw3
ICszMCw3IEBAIHZvaWQgSlNXcmFwcGVyT2JqZWN0OjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBt
YXJrU3RhY2spCiB7CiAgICAgSlNPYmplY3Q6Om1hcmtDaGlsZHJlbihtYXJrU3RhY2spOwogICAg
IGlmIChtX2ludGVybmFsVmFsdWUpCi0gICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJm1faW50ZXJu
YWxWYWx1ZSk7CisgICAgICAgIG1hcmtTdGFjay5hcHBlbmQobV9pbnRlcm5hbFZhbHVlKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1dyYXBwZXJPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTV3JhcHBlck9iamVjdC5oCmluZGV4IDRlYWYyYzA0MDllMzc4ZjU5ZjQ3OGI3OTdlMzUwOTU3
MWFlYTg5MWYuLmYxOWNkMzBjODUwNDk0MDlhMzM4Y2NlMjdmNjE3ZTg5OWVkZTM0MGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5oCkBAIC0z
Myw4ICszMyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBleHBsaWNpdCBKU1dyYXBwZXJP
YmplY3QoTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPik7CiAKICAgICBwdWJsaWM6Ci0gICAg
ICAgIEpTVmFsdWUgaW50ZXJuYWxWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJuYWxWYWx1
ZS5nZXQoKTsgfQotICAgICAgICB2b2lkIHNldEludGVybmFsVmFsdWUoSlNHbG9iYWxEYXRhJiwg
SlNWYWx1ZSk7CisgICAgICAgIEpTVmFsdWUgaW50ZXJuYWxWYWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IG1faW50ZXJuYWxWYWx1ZTsgfQorICAgICAgICB2b2lkIHNldEludGVybmFsVmFsdWUoSlNWYWx1
ZSk7CiAKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1
cmUoSlNWYWx1ZSBwcm90b3R5cGUpIAogICAgICAgICB7IApAQCAtNDcsNyArNDcsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIHZvaWQgbWFya0NoaWxk
cmVuKE1hcmtTdGFjayYpOwogICAgICAgICAKLSAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+
IG1faW50ZXJuYWxWYWx1ZTsKKyAgICAgICAgSlNWYWx1ZSBtX2ludGVybmFsVmFsdWU7CiAgICAg
fTsKIAogICAgIGlubGluZSBKU1dyYXBwZXJPYmplY3Q6OkpTV3JhcHBlck9iamVjdChOb25OdWxs
UGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSkKQEAgLTU2LDExICs1NiwxMSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgcHV0QW5vbnltb3VzVmFsdWUoMCwganNOdWxsKCkpOwogICAg
IH0KIAotICAgIGlubGluZSB2b2lkIEpTV3JhcHBlck9iamVjdDo6c2V0SW50ZXJuYWxWYWx1ZShK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgdmFsdWUpCisgICAgaW5saW5lIHZvaWQg
SlNXcmFwcGVyT2JqZWN0OjpzZXRJbnRlcm5hbFZhbHVlKEpTVmFsdWUgdmFsdWUpCiAgICAgewog
ICAgICAgICBBU1NFUlQodmFsdWUpOwogICAgICAgICBBU1NFUlQoIXZhbHVlLmlzT2JqZWN0KCkp
OwotICAgICAgICBtX2ludGVybmFsVmFsdWUuc2V0KGdsb2JhbERhdGEsIHRoaXMsIHZhbHVlKTsK
KyAgICAgICAgbV9pbnRlcm5hbFZhbHVlID0gdmFsdWU7CiAgICAgICAgIHB1dEFub255bW91c1Zh
bHVlKDAsIHZhbHVlKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTGl0ZXJhbFBhcnNlci5jcHAKaW5kZXggYmMyZTczNjI0Njk1ODNiZGJmNWMzNTA0NGUxMGM3
ZGQ3YTgxNDY1Zi4uZGY4N2U3Zjg2YjU2ZWQwNTcxODkyMGFkMDI2ZTFlNWMyYjY3ZmUyOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAKQEAg
LTM3Myw3ICszNzMsNyBAQCBKU1ZhbHVlIExpdGVyYWxQYXJzZXI6OnBhcnNlKFBhcnNlclN0YXRl
IGluaXRpYWxTdGF0ZSkKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgRG9QYXJzZU9i
amVjdEVuZEV4cHJlc3Npb246CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYXNPYmpl
Y3Qob2JqZWN0U3RhY2subGFzdCgpKS0+cHV0RGlyZWN0KG1fZXhlYy0+Z2xvYmFsRGF0YSgpLCBp
ZGVudGlmaWVyU3RhY2subGFzdCgpLCBsYXN0VmFsdWUpOworICAgICAgICAgICAgICAgIGFzT2Jq
ZWN0KG9iamVjdFN0YWNrLmxhc3QoKSktPnB1dERpcmVjdChpZGVudGlmaWVyU3RhY2subGFzdCgp
LCBsYXN0VmFsdWUpOwogICAgICAgICAgICAgICAgIGlkZW50aWZpZXJTdGFjay5yZW1vdmVMYXN0
KCk7CiAgICAgICAgICAgICAgICAgaWYgKG1fbGV4ZXIuY3VycmVudFRva2VuKCkudHlwZSA9PSBU
b2tDb21tYSkKICAgICAgICAgICAgICAgICAgICAgZ290byBkb1BhcnNlT2JqZWN0U3RhcnRFeHBy
ZXNzaW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3Vw
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAKaW5kZXggMTNl
YTkyMzAzMDU5ZDVlOTZjNzcxM2RiNmEwNTc2MGFjYzJiMTA5NC4uZGFjMWM5NGRjNWViMzJjYTYw
ZDc4ZTc2NmU4N2FiMjgxN2JhZGIyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTG9va3VwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9M
b29rdXAuY3BwCkBAIC04Niw3ICs4Niw3IEBAIHZvaWQgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3Qo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoRW50cnkqIGVudHJ5LCBKU09iamVjdCoKICNlbmRp
ZgogICAgICAgICAgICAgZnVuY3Rpb24gPSBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBl
cihleGVjLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1
Y3R1cmUoKSwgZW50cnktPmZ1bmN0aW9uTGVuZ3RoKCksIHByb3BlcnR5TmFtZSwgZW50cnktPmZ1
bmN0aW9uKCkpOwogCi0gICAgICAgIHRoaXNPYmotPnB1dERpcmVjdEZ1bmN0aW9uKGV4ZWMtPmds
b2JhbERhdGEoKSwgcHJvcGVydHlOYW1lLCBmdW5jdGlvbiwgZW50cnktPmF0dHJpYnV0ZXMoKSk7
CisgICAgICAgIHRoaXNPYmotPnB1dERpcmVjdEZ1bmN0aW9uKHByb3BlcnR5TmFtZSwgZnVuY3Rp
b24sIGVudHJ5LT5hdHRyaWJ1dGVzKCkpOwogICAgICAgICBsb2NhdGlvbiA9IHRoaXNPYmotPmdl
dERpcmVjdExvY2F0aW9uKHByb3BlcnR5TmFtZSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0xvb2t1cC5oCmluZGV4IDQzMTg0ZTU2ZGNhYWVkNWU1NGEzZGFhYTMxNjVlN2Jj
NDVmOWEwMzEuLjBkNmQ5OGZiNGFjNDQzMzJjMjk2YjE3Y2VkZTEwOGM5YTA2ZTYzYzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCkBAIC0zMTIsOSArMzEyLDkgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlv
bikgeyAvLyBmdW5jdGlvbjogcHV0IGFzIG92ZXJyaWRlIHByb3BlcnR5CiAgICAgICAgICAgICBp
ZiAoTElLRUxZKHZhbHVlLmlzQ2VsbCgpKSkKLSAgICAgICAgICAgICAgICB0aGlzT2JqLT5wdXRE
aXJlY3RGdW5jdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgdmFsdWUuYXND
ZWxsKCkpOworICAgICAgICAgICAgICAgIHRoaXNPYmotPnB1dERpcmVjdEZ1bmN0aW9uKHByb3Bl
cnR5TmFtZSwgdmFsdWUuYXNDZWxsKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIHRoaXNPYmotPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwg
dmFsdWUpOworICAgICAgICAgICAgICAgIHRoaXNPYmotPnB1dERpcmVjdChwcm9wZXJ0eU5hbWUs
IHZhbHVlKTsKICAgICAgICAgfSBlbHNlIGlmICghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBSZWFk
T25seSkpCiAgICAgICAgICAgICBlbnRyeS0+cHJvcGVydHlQdXR0ZXIoKShleGVjLCB0aGlzT2Jq
LCB2YWx1ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01h
cmtTdGFjay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya1N0YWNrLmgKaW5k
ZXggMGI3OTQxZTk2OGU0MjAzMTI0NDM5MjNjN2I1ZWEwNGI4MWJlZjM0YS4uYzNjYjRmMmQ3MmE4
NGRmZDY1NWRjYzk4YmU1NGE3NjVlZTU4ODllNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTWFya1N0YWNrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTWFya1N0YWNrLmgKQEAgLTI3LDcgKzI3LDYgQEAKICNkZWZpbmUgTWFya1N0YWNrX2gK
IAogI2luY2x1ZGUgIkpTVmFsdWUuaCIKLSNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVk
ZSA8d3RmL09TQWxsb2NhdG9yLmg+CkBAIC01MCwyMyArNDksMTcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAjZW5kaWYKICAgICAgICAgewogICAgICAgICB9CisKKyAgICAgICAgQUxXQVlTX0lOTElORSB2
b2lkIGFwcGVuZChKU1ZhbHVlKTsKKyAgICAgICAgdm9pZCBhcHBlbmQoSlNDZWxsKik7CiAgICAg
ICAgIAotICAgICAgICB2b2lkIGRlcHJlY2F0ZWRBcHBlbmQoSlNWYWx1ZSopOwotICAgICAgICB2
b2lkIGRlcHJlY2F0ZWRBcHBlbmQoSlNDZWxsKiopOwotICAgICAgICB2b2lkIGRlcHJlY2F0ZWRB
cHBlbmQoUmVnaXN0ZXIqKTsKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgYXBw
ZW5kKFdyaXRlQmFycmllckJhc2U8VD4qKTsKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IHZvaWQgYXBwZW5kKERlcHJlY2F0ZWRQdHI8VD4qKTsKLSAgICAgICAgCi0gICAgICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBkZXByZWNhdGVkQXBwZW5kVmFsdWVzKFJlZ2lzdGVyKiByZWdpc3RlcnMs
IHNpemVfdCBjb3VudCwgTWFya1NldFByb3BlcnRpZXMgcHJvcGVydGllcyA9IE5vTnVsbFZhbHVl
cykKKyAgICAgICAgQUxXQVlTX0lOTElORSB2b2lkIGFwcGVuZFZhbHVlcyhSZWdpc3RlciogdmFs
dWVzLCBzaXplX3QgY291bnQsIE1hcmtTZXRQcm9wZXJ0aWVzIHByb3BlcnRpZXMgPSBOb051bGxW
YWx1ZXMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEpTVmFsdWUqIHZhbHVlcyA9IHJlaW50ZXJw
cmV0X2Nhc3Q8SlNWYWx1ZSo+KHJlZ2lzdGVycyk7Ci0gICAgICAgICAgICBpZiAoY291bnQpCi0g
ICAgICAgICAgICAgICAgbV9tYXJrU2V0cy5hcHBlbmQoTWFya1NldCh2YWx1ZXMsIHZhbHVlcyAr
IGNvdW50LCBwcm9wZXJ0aWVzKSk7CisgICAgICAgICAgICBhcHBlbmRWYWx1ZXMocmVpbnRlcnBy
ZXRfY2FzdDxKU1ZhbHVlKj4odmFsdWVzKSwgY291bnQsIHByb3BlcnRpZXMpOwogICAgICAgICB9
CiAKLSAgICAgICAgdm9pZCBhcHBlbmRWYWx1ZXMoV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiog
YmFycmllcnMsIHNpemVfdCBjb3VudCwgTWFya1NldFByb3BlcnRpZXMgcHJvcGVydGllcyA9IE5v
TnVsbFZhbHVlcykKKyAgICAgICAgQUxXQVlTX0lOTElORSB2b2lkIGFwcGVuZFZhbHVlcyhKU1Zh
bHVlKiB2YWx1ZXMsIHNpemVfdCBjb3VudCwgTWFya1NldFByb3BlcnRpZXMgcHJvcGVydGllcyA9
IE5vTnVsbFZhbHVlcykKICAgICAgICAgewotICAgICAgICAgICAgSlNWYWx1ZSogdmFsdWVzID0g
YmFycmllcnMtPnNsb3QoKTsKICAgICAgICAgICAgIGlmIChjb3VudCkKICAgICAgICAgICAgICAg
ICBtX21hcmtTZXRzLmFwcGVuZChNYXJrU2V0KHZhbHVlcywgdmFsdWVzICsgY291bnQsIHByb3Bl
cnRpZXMpKTsKICAgICAgICAgfQpAQCAtODEsOCArNzQsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBpbnRlcm5hbEFwcGVuZChKU0Nl
bGwqKTsKLSAgICAgICAgdm9pZCBpbnRlcm5hbEFwcGVuZChKU1ZhbHVlKTsKICAgICAgICAgdm9p
ZCBtYXJrQ2hpbGRyZW4oSlNDZWxsKik7CiAKICAgICAgICAgc3RydWN0IE1hcmtTZXQgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmNwcAppbmRleCBjNzkzMTZi
ZWE2Yzk1MDcxMDU5YmY2YWM2YWFmOTI3ZDU2YzYzMzJlLi4wODBkN2QyMWU5MTRlNDI4YTM1MGM4
NDEyMDNmYzRhMTk4NmU5YzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9NYXRoT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
YXRoT2JqZWN0LmNwcApAQCAtODksMTQgKzg5LDE0IEBAIGNvbnN0IENsYXNzSW5mbyBNYXRoT2Jq
ZWN0OjppbmZvID0geyAiTWF0aCIsIDAsIDAsIEV4ZWNTdGF0ZTo6bWF0aFRhYmxlIH07CiBNYXRo
T2JqZWN0OjpNYXRoT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUpCiAgICAgOiBK
U09iamVjdFdpdGhHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiB7Ci0gICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVy
KGV4ZWMsICJFIiksIGpzTnVtYmVyKGV4cCgxLjApKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwg
UmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERh
dGEoKSwgSWRlbnRpZmllcihleGVjLCAiTE4yIiksIGpzTnVtYmVyKGxvZygyLjApKSwgRG9udERl
bGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAiTE4xMCIpLCBqc051bWJl
cihsb2coMTAuMCkpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7Ci0gICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4
ZWMsICJMT0cyRSIpLCBqc051bWJlcigxLjAgLyBsb2coMi4wKSksIERvbnREZWxldGUgfCBEb250
RW51bSB8IFJlYWRPbmx5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5n
bG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgIkxPRzEwRSIpLCBqc051bWJlcigxLjAgLyBs
b2coMTAuMCkpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7Ci0gICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMs
ICJQSSIpLCBqc051bWJlcihwaURvdWJsZSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRP
bmx5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCks
IElkZW50aWZpZXIoZXhlYywgIlNRUlQxXzIiKSwganNOdW1iZXIoc3FydCgwLjUpKSwgRG9udERl
bGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAiU1FSVDIiKSwganNOdW1i
ZXIoc3FydCgyLjApKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKElkZW50aWZpZXIoZXhlYywgIkUiKSwganNOdW1iZXIo
ZXhwKDEuMCkpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7CisgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24oSWRlbnRpZmllcihleGVjLCAiTE4yIiksIGpzTnVtYmVyKGxv
ZygyLjApKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKElkZW50aWZpZXIoZXhlYywgIkxOMTAiKSwganNOdW1iZXIobG9n
KDEwLjApKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKElkZW50aWZpZXIoZXhlYywgIkxPRzJFIiksIGpzTnVtYmVyKDEu
MCAvIGxvZygyLjApKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKElkZW50aWZpZXIoZXhlYywgIkxPRzEwRSIpLCBqc051
bWJlcigxLjAgLyBsb2coMTAuMCkpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7
CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oSWRlbnRpZmllcihleGVjLCAiUEkiKSwg
anNOdW1iZXIocGlEb3VibGUpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7Cisg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oSWRlbnRpZmllcihleGVjLCAiU1FSVDFfMiIp
LCBqc051bWJlcihzcXJ0KDAuNSkpLCBEb250RGVsZXRlIHwgRG9udEVudW0gfCBSZWFkT25seSk7
CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oSWRlbnRpZmllcihleGVjLCAiU1FSVDIi
KSwganNOdW1iZXIoc3FydCgyLjApKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkp
OwogfQogCiAvLyBFQ01BIDE1LjgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNDIxZWVjZmQwZGJkYzc5
ZmNlMmViMDQwNTViZDg0MTgxMzllMDJkMC4uZWI1MDhlYmQzYTg4YWJlZGQ2MmVhZjk0M2JmMTdl
ZTQyYWUwMGQxNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0
aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTM3LDggKzM3LDggQEAgTmF0aXZlRXJy
b3JDb25zdHJ1Y3Rvcjo6TmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KgogewogICAgIE5hdGl2ZUVycm9yUHJvdG90eXBlKiBwcm90b3R5cGUgPSBu
ZXcgKGV4ZWMpIE5hdGl2ZUVycm9yUHJvdG90eXBlKGV4ZWMsIGdsb2JhbE9iamVjdCwgcHJvdG90
eXBlU3RydWN0dXJlLCBuYW1lQW5kTWVzc2FnZSwgdGhpcyk7CiAKLSAgICBwdXREaXJlY3QoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigx
KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOyAvLyBFQ01BIDE1LjExLjcuNQot
ICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5w
cm90b3R5cGUsIHByb3RvdHlwZSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwor
ICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigxKSwg
RG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOyAvLyBFQ01BIDE1LjExLjcuNQorICAg
IHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBwcm90b3R5cGUsIERv
bnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBtX2Vycm9yU3RydWN0dXJlID0g
RXJyb3JJbnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJlKHByb3RvdHlwZSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmNw
cAppbmRleCA0ZTEwMjY4ZWViMmZlMGU2Yjc1MGUwYWRkMTQ2ZjdjZDcyNmRiZWIyLi41NDAyMjBh
NjIyYzZiN2Y2ZDQ0ZDJiNmI2ZWZkYTliNGE0Nzk1MmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuY3BwCkBAIC0zNCw5
ICszNCw5IEBAIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoTmF0aXZlRXJyb3JQcm90b3R5cGUp
OwogTmF0aXZlRXJyb3JQcm90b3R5cGU6Ok5hdGl2ZUVycm9yUHJvdG90eXBlKEV4ZWNTdGF0ZSog
ZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8U3Ry
dWN0dXJlPiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG5hbWVBbmRNZXNzYWdlLCBOYXRpdmVF
cnJvckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvcikKICAgICA6IEpTT2JqZWN0V2l0aEdsb2JhbE9i
amVjdChnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKIHsKLSAgICBwdXREaXJlY3QoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubmFtZSwganNTdHJpbmcoZXhlYywgbmFt
ZUFuZE1lc3NhZ2UpLCAwKTsKLSAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkubWVzc2FnZSwganNTdHJpbmcoZXhlYywgbmFtZUFuZE1lc3NhZ2Up
LCAwKTsKLSAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuY29uc3RydWN0b3IsIGNvbnN0cnVjdG9yLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0
KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5uYW1lLCBqc1N0cmluZyhleGVjLCBuYW1lQW5kTWVzc2Fn
ZSksIDApOworICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubWVzc2FnZSwganNT
dHJpbmcoZXhlYywgbmFtZUFuZE1lc3NhZ2UpLCAwKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+cHJv
cGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCBjb25zdHJ1Y3RvciwgRG9udEVudW0pOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL051bWJlckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L051bWJlckNvbnN0cnVjdG9yLmNwcAppbmRleCAyMzhkYzkzYzM2NjNlNTM2YTkyYjZmODQxYjc3
M2FlMDY4ZDljMWYyLi41MzY5Y2EwY2ZkZDJhYjA0YjQwNjA3NjljMjIyZjIxNmJmMzhhNzE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0
b3IuY3BwCkBAIC01OCwxMCArNTgsMTAgQEAgTnVtYmVyQ29uc3RydWN0b3I6Ok51bWJlckNvbnN0
cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamUKICAgICA6
IEludGVybmFsRnVuY3Rpb24oJmV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUsIElkZW50aWZpZXIoZXhlYywgbnVtYmVyUHJvdG90eXBlLT5pbmZvLmNsYXNzTmFtZSkp
CiB7CiAgICAgLy8gTnVtYmVyLlByb3RvdHlwZQotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwg
bnVtYmVyUHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlw
ZSwgbnVtYmVyUHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CiAK
ICAgICAvLyBuby4gb2YgYXJndW1lbnRzIGZvciBjb25zdHJ1Y3RvcgotICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygp
Lmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsK
KyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVu
Z3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOwogfQog
CiBib29sIE51bWJlckNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkK
QEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zdHJ1Y3RXaXRoTnVtYmVyQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleAogewogICAgIE51bWJl
ck9iamVjdCogb2JqZWN0ID0gbmV3IChleGVjKSBOdW1iZXJPYmplY3QoZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpLT5udW1iZXJPYmplY3RTdHJ1Y3R1cmUoKSk7CiAgICAgZG91YmxlIG4gPSBl
eGVjLT5hcmd1bWVudENvdW50KCkgPyBleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKSA6
IDA7Ci0gICAgb2JqZWN0LT5zZXRJbnRlcm5hbFZhbHVlKGV4ZWMtPmdsb2JhbERhdGEoKSwganNO
dW1iZXIobikpOworICAgIG9iamVjdC0+c2V0SW50ZXJuYWxWYWx1ZShqc051bWJlcihuKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShvYmplY3QpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJPYmplY3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyT2JqZWN0LmNwcAppbmRleCA1NjlkYmVkYjY2OTgwODEz
NmM1MDVjNjYyMDAzYzIxN2E0YThlNDU0Li4xYTdlNDRjY2VkZmQ5MjVlYjFhNTk0MWE5M2QxNzc1
ZTIxZDJmMmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1i
ZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9i
amVjdC5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgSlNWYWx1ZSBOdW1iZXJPYmplY3Q6OmdldEpTTnVt
YmVyKCkKIE51bWJlck9iamVjdCogY29uc3RydWN0TnVtYmVyKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBudW1iZXIpCiB7CiAgICAgTnVtYmVyT2JqZWN0KiBvYmplY3QgPSBuZXcgKGV4ZWMpIE51
bWJlck9iamVjdChleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPm51bWJlck9iamVjdFN0cnVj
dHVyZSgpKTsKLSAgICBvYmplY3QtPnNldEludGVybmFsVmFsdWUoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBudW1iZXIpOworICAgIG9iamVjdC0+c2V0SW50ZXJuYWxWYWx1ZShudW1iZXIpOwogICAgIHJl
dHVybiBvYmplY3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL051bWJlclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
dW1iZXJQcm90b3R5cGUuY3BwCmluZGV4IDM1NTA4OTQ3MDlkMjhiNzgwNDg5ZTVhMDcyYzVlOTI5
ZjY5MmM2YWYuLjBiODZjMDA0YWEwYTA2ZTgzNDI5NGRhNjZmZGZjN2ZjZmQ1N2FiN2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcApA
QCAtNDksNyArNDksNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1i
ZXJQcm90b0Z1bmNUb1ByZWNpc2lvbihFeGVjU3RhdGUqKTsKIE51bWJlclByb3RvdHlwZTo6TnVt
YmVyUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJv
dG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUpCiAgICAgOiBOdW1iZXJPYmplY3Qoc3RydWN0dXJlKQog
ewotICAgIHNldEludGVybmFsVmFsdWUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBqc051bWJlcigwKSk7
CisgICAgc2V0SW50ZXJuYWxWYWx1ZShqc051bWJlcigwKSk7CiAKICAgICAvLyBUaGUgY29uc3Ry
dWN0b3Igd2lsbCBiZSBhZGRlZCBsYXRlciwgYWZ0ZXIgTnVtYmVyQ29uc3RydWN0b3IgaGFzIGJl
ZW4gY29uc3RydWN0ZWQKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4IGYzMWRhNjdlNWYxN2Q3NTcyZjljNTI4ZTIyMTM3
ZmI0ZmI5MjIyNjguLmNhM2RjZDdjMmQ1MzkzY2E4OGUxNWQ0MWI5YzNkZTRkZGM3ZjIyZWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rv
ci5jcHAKQEAgLTQ3LDEwICs0NywxMCBAQCBPYmplY3RDb25zdHJ1Y3Rvcjo6T2JqZWN0Q29uc3Ry
dWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogOiBJbnRl
cm5hbEZ1bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
LCBJZGVudGlmaWVyKGV4ZWMsICJPYmplY3QiKSkKIHsKICAgICAvLyBFQ01BIDE1LjIuMy4xCi0g
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBvYmplY3RQcm90b3R5cGUsIERvbnRFbnVtIHwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVj
LT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBvYmplY3RQcm90b3R5cGUsIERvbnRFbnVtIHwg
RG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKICAgICAKICAgICAvLyBuby4gb2YgYXJndW1lbnRzIGZv
ciBjb25zdHJ1Y3RvcgotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2Jh
bERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRP
bmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkg
fCBEb250RW51bSB8IERvbnREZWxldGUpOwogICAgIAogICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0
aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZXhl
YywgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSwgMSwgZXhlYy0+cHJv
cGVydHlOYW1lcygpLmdldFByb3RvdHlwZU9mLCBvYmplY3RDb25zdHJ1Y3RvckdldFByb3RvdHlw
ZU9mKSwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24o
ZXhlYywgbmV3IChleGVjKSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZXhlYywgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSwgMiwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdl
dE93blByb3BlcnR5RGVzY3JpcHRvciwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IpLCBEb250RW51bSk7CkBAIC0xMTcsMTUgKzExNywxNSBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEV4ZWNTdGF0ZQogCiAgICAgSlNPYmplY3QqIGRlc2NyaXB0aW9uID0gY29uc3RydWN0RW1wdHlP
YmplY3QoZXhlYyk7CiAgICAgaWYgKCFkZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkp
IHsKLSAgICAgICAgZGVzY3JpcHRpb24tPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS52YWx1ZSwgZGVzY3JpcHRvci52YWx1ZSgpID8gZGVzY3JpcHRv
ci52YWx1ZSgpIDoganNVbmRlZmluZWQoKSwgMCk7Ci0gICAgICAgIGRlc2NyaXB0aW9uLT5wdXRE
aXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkud3JpdGFibGUs
IGpzQm9vbGVhbihkZXNjcmlwdG9yLndyaXRhYmxlKCkpLCAwKTsKKyAgICAgICAgZGVzY3JpcHRp
b24tPnB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkudmFsdWUsIGRlc2NyaXB0b3IudmFs
dWUoKSA/IGRlc2NyaXB0b3IudmFsdWUoKSA6IGpzVW5kZWZpbmVkKCksIDApOworICAgICAgICBk
ZXNjcmlwdGlvbi0+cHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS53cml0YWJsZSwganNC
b29sZWFuKGRlc2NyaXB0b3Iud3JpdGFibGUoKSksIDApOwogICAgIH0gZWxzZSB7Ci0gICAgICAg
IGRlc2NyaXB0aW9uLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkuZ2V0LCBkZXNjcmlwdG9yLmdldHRlcigpID8gZGVzY3JpcHRvci5nZXR0ZXIoKSA6
IGpzVW5kZWZpbmVkKCksIDApOwotICAgICAgICBkZXNjcmlwdGlvbi0+cHV0RGlyZWN0KGV4ZWMt
Pmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnNldCwgZGVzY3JpcHRvci5zZXR0
ZXIoKSA/IGRlc2NyaXB0b3Iuc2V0dGVyKCkgOiBqc1VuZGVmaW5lZCgpLCAwKTsKKyAgICAgICAg
ZGVzY3JpcHRpb24tPnB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2V0LCBkZXNjcmlw
dG9yLmdldHRlcigpID8gZGVzY3JpcHRvci5nZXR0ZXIoKSA6IGpzVW5kZWZpbmVkKCksIDApOwor
ICAgICAgICBkZXNjcmlwdGlvbi0+cHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5zZXQs
IGRlc2NyaXB0b3Iuc2V0dGVyKCkgPyBkZXNjcmlwdG9yLnNldHRlcigpIDoganNVbmRlZmluZWQo
KSwgMCk7CiAgICAgfQogICAgIAotICAgIGRlc2NyaXB0aW9uLT5wdXREaXJlY3QoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZW51bWVyYWJsZSwganNCb29sZWFuKGRl
c2NyaXB0b3IuZW51bWVyYWJsZSgpKSwgMCk7Ci0gICAgZGVzY3JpcHRpb24tPnB1dERpcmVjdChl
eGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25maWd1cmFibGUsIGpz
Qm9vbGVhbihkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSgpKSwgMCk7CisgICAgZGVzY3JpcHRpb24t
PnB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZW51bWVyYWJsZSwganNCb29sZWFuKGRl
c2NyaXB0b3IuZW51bWVyYWJsZSgpKSwgMCk7CisgICAgZGVzY3JpcHRpb24tPnB1dERpcmVjdChl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uZmlndXJhYmxlLCBqc0Jvb2xlYW4oZGVzY3JpcHRvci5j
b25maWd1cmFibGUoKSksIDApOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShkZXNjcmlw
dGlvbik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVy
YXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKaW5k
ZXggNmU4NDEyMzlhZWQ3Njc2OWQxODdkNzQzMTlhZmJiNmFmMTdmOWRlMC4uMTI1MjM0NTM3MTQx
NTAyYTViZjM2NWM3MTc4ZDFlNzliNGFiMDI3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wZXJhdGlvbnMuaApAQCAtNDI5LDcgKzQyOSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgLy8gU2luY2Ugd2UncmUgYWNjZXNzaW5nIGEgcHJvdG90eXBlIGluIGEgbG9v
cCwgaXQncyBhIGdvb2QgYmV0IHRoYXQgaXQKICAgICAgICAgICAgIC8vIHNob3VsZCBub3QgYmUg
dHJlYXRlZCBhcyBhIGRpY3Rpb25hcnkuCiAgICAgICAgICAgICBpZiAoY2VsbC0+c3RydWN0dXJl
KCktPmlzRGljdGlvbmFyeSgpKSB7Ci0gICAgICAgICAgICAgICAgYXNPYmplY3QoY2VsbCktPmZs
YXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpKTsKKyAgICAgICAg
ICAgICAgICBhc09iamVjdChjZWxsKS0+ZmxhdHRlbkRpY3Rpb25hcnlPYmplY3QoKTsKICAgICAg
ICAgICAgICAgICBpZiAoc2xvdEJhc2UgPT0gY2VsbCkKICAgICAgICAgICAgICAgICAgICAgc2xv
dE9mZnNldCA9IGNlbGwtPnN0cnVjdHVyZSgpLT5nZXQocHJvcGVydHlOYW1lKTsgCiAgICAgICAg
ICAgICB9CkBAIC00NTQsNyArNDU0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAv
LyBTaW5jZSB3ZSdyZSBhY2Nlc3NpbmcgYSBwcm90b3R5cGUgaW4gYSBsb29wLCBpdCdzIGEgZ29v
ZCBiZXQgdGhhdCBpdAogICAgICAgICAgICAgLy8gc2hvdWxkIG5vdCBiZSB0cmVhdGVkIGFzIGEg
ZGljdGlvbmFyeS4KICAgICAgICAgICAgIGlmIChiYXNlLT5zdHJ1Y3R1cmUoKS0+aXNEaWN0aW9u
YXJ5KCkpCi0gICAgICAgICAgICAgICAgYXNPYmplY3QoYmFzZSktPmZsYXR0ZW5EaWN0aW9uYXJ5
T2JqZWN0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpKTsKKyAgICAgICAgICAgICAgICBhc09iamVj
dChiYXNlKS0+ZmxhdHRlbkRpY3Rpb25hcnlPYmplY3QoKTsKIAogICAgICAgICAgICAgKytjb3Vu
dDsKICAgICAgICAgfQpAQCAtNDcxLDcgKzQ3MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgSlNPYmplY3QqIGJhc2U7CiAgICAgICAgIHdo
aWxlICh0cnVlKSB7Ci0gICAgICAgICAgICBiYXNlID0gaXRlci0+Z2V0KCk7CisgICAgICAgICAg
ICBiYXNlID0gKml0ZXI7CiAgICAgICAgICAgICBpZiAobmV4dCA9PSBlbmQpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGlzU3RyaWN0UHV0ID8gSlNWYWx1ZSgpIDogYmFzZTsKICAgICAgICAgICAg
IGlmIChiYXNlLT5nZXRQcm9wZXJ0eVNsb3QoY2FsbEZyYW1lLCBwcm9wZXJ0eSwgc2xvdCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVGdW5jdGlv
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVGdW5jdGlvbi5j
cHAKaW5kZXggOTVlMTAzMzg0ODFlZDA1MWQ1ZjcyODJjYTc4YTA1YTAzYTllMzBkNi4uMzUyOTA4
MDVjYzkxNjIxOWEwMmE4ZGNiNDJmM2ZkNWUyOGVmZjVmMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZUZ1bmN0aW9uLmNwcApAQCAtMzcsNyArMzcs
NyBAQCBQcm90b3R5cGVGdW5jdGlvbjo6UHJvdG90eXBlRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVj
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogICAgICwgbV9mdW5jdGlvbihmdW5jdGlvbikK
IHsKICAgICBBU1NFUlRfQVJHKGZ1bmN0aW9uLCBmdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0KGV4
ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIo
bGVuZ3RoKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVj
dChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcihsZW5ndGgpLCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CiAKIFByb3RvdHlwZUZ1bmN0aW9uOjpQcm90
b3R5cGVGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1
cmUsIGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uIGZ1
bmN0aW9uKQpAQCAtNDUsNyArNDUsNyBAQCBQcm90b3R5cGVGdW5jdGlvbjo6UHJvdG90eXBlRnVu
Y3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogICAgICwg
bV9mdW5jdGlvbihmdW5jdGlvbikKIHsKICAgICBBU1NFUlRfQVJHKGZ1bmN0aW9uLCBmdW5jdGlv
bik7Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1l
cygpLmxlbmd0aCwganNOdW1iZXIobGVuZ3RoKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9u
dEVudW0pOworICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051
bWJlcihsZW5ndGgpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CiAgICAg
CiBDYWxsVHlwZSBQcm90b3R5cGVGdW5jdGlvbjo6Z2V0Q2FsbERhdGEoQ2FsbERhdGEmIGNhbGxE
YXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHV0UHJvcGVy
dHlTbG90LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QdXRQcm9wZXJ0eVNsb3Qu
aAppbmRleCA0YzllMGU2MmZjZWU4YTEwOTMxNDVhNWQ2ZWJjNDQxMmQ2OTE2OTY1Li40YjBiMzk0
OGZiYjI5ZjA4MmEzMTYyMWQ2NjVkMzVjM2RjMjZmNzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaApAQCAtNDUsMTQgKzQ1LDE0IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHNldEV4
aXN0aW5nUHJvcGVydHkoRGVwcmVjYXRlZFB0cjxKU09iamVjdD4gYmFzZSwgc2l6ZV90IG9mZnNl
dCkKKyAgICAgICAgdm9pZCBzZXRFeGlzdGluZ1Byb3BlcnR5KEpTT2JqZWN0KiBiYXNlLCBzaXpl
X3Qgb2Zmc2V0KQogICAgICAgICB7CiAgICAgICAgICAgICBtX3R5cGUgPSBFeGlzdGluZ1Byb3Bl
cnR5OwogICAgICAgICAgICAgbV9iYXNlID0gYmFzZTsKICAgICAgICAgICAgIG1fb2Zmc2V0ID0g
b2Zmc2V0OwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBzZXROZXdQcm9wZXJ0eShEZXByZWNh
dGVkUHRyPEpTT2JqZWN0PiBiYXNlLCBzaXplX3Qgb2Zmc2V0KQorICAgICAgICB2b2lkIHNldE5l
d1Byb3BlcnR5KEpTT2JqZWN0KiBiYXNlLCBzaXplX3Qgb2Zmc2V0KQogICAgICAgICB7CiAgICAg
ICAgICAgICBtX3R5cGUgPSBOZXdQcm9wZXJ0eTsKICAgICAgICAgICAgIG1fYmFzZSA9IGJhc2U7
CkBAIC02MCw3ICs2MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICAgICAg
VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9Ci0gICAgICAgIEpTT2JqZWN0KiBi
YXNlKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlLmdldCgpOyB9CisgICAgICAgIEpTT2JqZWN0KiBi
YXNlKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlOyB9CiAKICAgICAgICAgYm9vbCBpc1N0cmljdE1v
ZGUoKSBjb25zdCB7IHJldHVybiBtX2lzU3RyaWN0TW9kZTsgfQogICAgICAgICBib29sIGlzQ2Fj
aGVhYmxlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlICE9IFVuY2FjaGFibGU7IH0KQEAgLTcwLDcg
KzcwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KICAgICBwcml2YXRlOgogICAgICAg
ICBUeXBlIG1fdHlwZTsKLSAgICAgICAgRGVwcmVjYXRlZFB0cjxKU09iamVjdD4gbV9iYXNlOwor
ICAgICAgICBKU09iamVjdCogbV9iYXNlOwogICAgICAgICBzaXplX3QgbV9vZmZzZXQ7CiAgICAg
ICAgIGJvb2wgbV9pc1N0cmljdE1vZGU7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAppbmRleCAxYjMwNTE0OWZkNGJj
MDgyYzQ5ZmEyNzA4ZGU0NzNiZTk2ZDFlMjMzLi4zMGQzZWFiNTNhNjRhZDcyNzMxMzkyMDQzNTYz
YmU4ZDViMzEzZTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwQ29uc3RydWN0b3IuY3BwCkBAIC0xMDAsMTAgKzEwMCwxMCBAQCBSZWdFeHBDb25zdHJ1
Y3Rvcjo6UmVnRXhwQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZQogICAgICwgZChhZG9wdFB0cihuZXcgUmVnRXhwQ29uc3RydWN0b3JQcml2YXRl
KSkKIHsKICAgICAvLyBFQ01BIDE1LjEwLjUuMSBSZWdFeHAucHJvdG90eXBlCi0gICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkucHJvdG90eXBlLCByZWdFeHBQcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8
IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0
eU5hbWVzKCkucHJvdG90eXBlLCByZWdFeHBQcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0
ZSB8IFJlYWRPbmx5KTsKIAogICAgIC8vIG5vLiBvZiBhcmd1bWVudHMgZm9yIGNvbnN0cnVjdG9y
Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigyKSwgUmVhZE9ubHkgfCBEb250RGVs
ZXRlIHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDIpLCBSZWFkT25seSB8IERvbnREZWxldGUg
fCBEb250RW51bSk7CiB9CiAKIFJlZ0V4cE1hdGNoZXNBcnJheTo6UmVnRXhwTWF0Y2hlc0FycmF5
KEV4ZWNTdGF0ZSogZXhlYywgUmVnRXhwQ29uc3RydWN0b3JQcml2YXRlKiBkYXRhKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmNwcAppbmRleCA5NzZjZmY2NGI0
OTljZWIwOWFmYzFiMmEyODcxMzg2NzY0MWJjMWQzLi41NGM1MDgyYzVlNGNiZGNiZWIxYmI3ZjQ2
YTU4Yjk5ZjdlZWFkNmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TY29wZUNoYWluLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29w
ZUNoYWluLmNwcApAQCAtMzUsMTIgKzM1LDEyIEBAIHZvaWQgU2NvcGVDaGFpbk5vZGU6OnByaW50
KCkgY29uc3QKIHsKICAgICBTY29wZUNoYWluSXRlcmF0b3Igc2NvcGVFbmQgPSBlbmQoKTsKICAg
ICBmb3IgKFNjb3BlQ2hhaW5JdGVyYXRvciBzY29wZUl0ZXIgPSBiZWdpbigpOyBzY29wZUl0ZXIg
IT0gc2NvcGVFbmQ7ICsrc2NvcGVJdGVyKSB7Ci0gICAgICAgIERlcHJlY2F0ZWRQdHI8SlNPYmpl
Y3Q+IG8gPSAqc2NvcGVJdGVyOworICAgICAgICBKU09iamVjdCogbyA9ICpzY29wZUl0ZXI7CiAg
ICAgICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZXMoZ2xvYmFsT2JqZWN0LT5nbG9i
YWxFeGVjKCkpOwogICAgICAgICBvLT5nZXRQcm9wZXJ0eU5hbWVzKGdsb2JhbE9iamVjdC0+Z2xv
YmFsRXhlYygpLCBwcm9wZXJ0eU5hbWVzKTsKICAgICAgICAgUHJvcGVydHlOYW1lQXJyYXk6OmNv
bnN0X2l0ZXJhdG9yIHByb3BFbmQgPSBwcm9wZXJ0eU5hbWVzLmVuZCgpOwogCi0gICAgICAgIGZw
cmludGYoc3RkZXJyLCAiLS0tLS0gW3Njb3BlICVwXSAtLS0tLVxuIiwgby5nZXQoKSk7CisgICAg
ICAgIGZwcmludGYoc3RkZXJyLCAiLS0tLS0gW3Njb3BlICVwXSAtLS0tLVxuIiwgbyk7CiAgICAg
ICAgIGZvciAoUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIHByb3BJdGVyID0gcHJv
cGVydHlOYW1lcy5iZWdpbigpOyBwcm9wSXRlciAhPSBwcm9wRW5kOyBwcm9wSXRlcisrKSB7CiAg
ICAgICAgICAgICBJZGVudGlmaWVyIG5hbWUgPSAqcHJvcEl0ZXI7CiAgICAgICAgICAgICBmcHJp
bnRmKHN0ZGVyciwgIiVzLCAiLCBuYW1lLnVzdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAppbmRleCAxMWYzNjkyODU5MDFm
ODhhZWJhNDkwNmI5YWY0M2FhYmUxOGM1OTM0Li5iMTA0ZTc1M2MyM2ZjYjM2YjcyNDBmOTJlYjc5
MjZmNDNjYTQyYTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
Y29wZUNoYWluLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFp
bi5oCkBAIC0yMSw3ICsyMSw2IEBACiAjaWZuZGVmIFNjb3BlQ2hhaW5faAogI2RlZmluZSBTY29w
ZUNoYWluX2gKIAotI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0
QWxsb2NCYXNlLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNTMsNiArNTIsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgflNjb3BlQ2hhaW5Ob2RlKCkKICAgICAgICAgewogICAgICAgICAg
ICAgbmV4dCA9IDA7CisgICAgICAgICAgICBvYmplY3QgPSAwOwogICAgICAgICAgICAgZ2xvYmFs
RGF0YSA9IDA7CiAgICAgICAgICAgICBnbG9iYWxPYmplY3QgPSAwOwogICAgICAgICAgICAgZ2xv
YmFsVGhpcyA9IDA7CkBAIC02MCw3ICs2MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlmCiAK
ICAgICAgICAgU2NvcGVDaGFpbk5vZGUqIG5leHQ7Ci0gICAgICAgIERlcHJlY2F0ZWRQdHI8SlNP
YmplY3Q+IG9iamVjdDsKKyAgICAgICAgSlNPYmplY3QqIG9iamVjdDsKICAgICAgICAgSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhOwogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
OwogICAgICAgICBKU09iamVjdCogZ2xvYmFsVGhpczsKQEAgLTEzMSw4ICsxMzEsOCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgRGVwcmVjYXRlZFB0
cjxKU09iamVjdD4gY29uc3QgJiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiBtX25vZGUtPm9i
amVjdDsgfQotICAgICAgICBEZXByZWNhdGVkUHRyPEpTT2JqZWN0PiBjb25zdCAqIG9wZXJhdG9y
LT4oKSBjb25zdCB7IHJldHVybiAmKG9wZXJhdG9yKigpKTsgfQorICAgICAgICBKU09iamVjdCog
Y29uc3QgJiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiBtX25vZGUtPm9iamVjdDsgfQorICAg
ICAgICBKU09iamVjdCogY29uc3QgKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gJihvcGVy
YXRvciooKSk7IH0KICAgICAKICAgICAgICAgU2NvcGVDaGFpbkl0ZXJhdG9yJiBvcGVyYXRvcisr
KCkgeyBtX25vZGUgPSBtX25vZGUtPm5leHQ7IHJldHVybiAqdGhpczsgfQogCkBAIC0xOTUsNyAr
MTk1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgU2NvcGVDaGFpbk5vZGUqIG5vZGUo
KSBjb25zdCB7IHJldHVybiBtX25vZGU7IH0KIAotICAgICAgICBKU09iamVjdCogdG9wKCkgY29u
c3QgeyByZXR1cm4gbV9ub2RlLT5vYmplY3QuZ2V0KCk7IH0KKyAgICAgICAgSlNPYmplY3QqIHRv
cCgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZS0+b2JqZWN0OyB9CiAKICAgICAgICAgU2NvcGVDaGFp
bkl0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9ub2RlLT5iZWdpbigpOyB9CiAgICAg
ICAgIFNjb3BlQ2hhaW5JdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBtX25vZGUtPmVuZCgp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWlu
TWFyay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbk1hcmsuaApp
bmRleCBmYWE0ODI0Y2RmY2NmN2YyMjRkYWI2MGMzMGI0MTM0ZmMzZDZmOGY3Li45ODRkMTAxMzY4
YTliYzljYTA3OGRhMjdhY2NiMDJmNzVhMWRlZWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluTWFyay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW5NYXJrLmgKQEAgLTI4LDcgKzI4LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgaW5saW5lIHZvaWQgU2NvcGVDaGFpbjo6bWFya0FnZ3JlZ2F0ZShNYXJrU3Rh
Y2smIG1hcmtTdGFjaykgY29uc3QKICAgICB7CiAgICAgICAgIGZvciAoU2NvcGVDaGFpbk5vZGUq
IG4gPSBtX25vZGU7IG47IG4gPSBuLT5uZXh0KQotICAgICAgICAgICAgbWFya1N0YWNrLmFwcGVu
ZCgmbi0+b2JqZWN0KTsKKyAgICAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQobi0+b2JqZWN0KTsK
ICAgICB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1NtYWxsU3RyaW5ncy5jcHAKaW5kZXggYzYzYTIwZGExMGIxZDA5NDc2MTkxOGI2MjJl
MmFkNGMxNDFkNjg1ZC4uNTYxNDkzMmZmZTAwZWY5YmZiNjkyZmE0YzcyZWMzMWJlNGRiZGYxMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuY3BwCkBA
IC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBzdGF0aWMgY29uc3QgdW5zaWduZWQg
bnVtQ2hhcmFjdGVyc1RvU3RvcmUgPSAweDEwMDsKIAotc3RhdGljIGlubGluZSBib29sIGlzTWFy
a2VkKEpTQ2VsbCogc3RyaW5nKQorc3RhdGljIGlubGluZSBib29sIGlzTWFya2VkKEpTU3RyaW5n
KiBzdHJpbmcpCiB7CiAgICAgcmV0dXJuIHN0cmluZyAmJiBIZWFwOjppc0NlbGxNYXJrZWQoc3Ry
aW5nKTsKIH0KQEAgLTgzLDkgKzgzLDkgQEAgdm9pZCBTbWFsbFN0cmluZ3M6Om1hcmtDaGlsZHJl
bihNYXJrU3RhY2smIG1hcmtTdGFjaykKICAgICAgICBzbywgaXQncyBwcm9iYWJseSByZWFzb25h
YmxlIHRvIG1hcmsgdGhlIHJlc3QuIElmIG5vdCwgd2UgY2xlYXIgdGhlIGNhY2hlLgogICAgICAq
LwogCi0gICAgYm9vbCBpc0FueVN0cmluZ01hcmtlZCA9IGlzTWFya2VkKG1fZW1wdHlTdHJpbmcu
Z2V0KCkpOworICAgIGJvb2wgaXNBbnlTdHJpbmdNYXJrZWQgPSBpc01hcmtlZChtX2VtcHR5U3Ry
aW5nKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtQ2hhcmFjdGVyc1RvU3RvcmUg
JiYgIWlzQW55U3RyaW5nTWFya2VkOyArK2kpCi0gICAgICAgIGlzQW55U3RyaW5nTWFya2VkID0g
aXNNYXJrZWQobV9zaW5nbGVDaGFyYWN0ZXJTdHJpbmdzW2ldLmdldCgpKTsKKyAgICAgICAgaXNB
bnlTdHJpbmdNYXJrZWQgPSBpc01hcmtlZChtX3NpbmdsZUNoYXJhY3RlclN0cmluZ3NbaV0pOwog
ICAgIAogICAgIGlmICghaXNBbnlTdHJpbmdNYXJrZWQpIHsKICAgICAgICAgY2xlYXIoKTsKQEAg
LTkzLDEwICs5MywxMCBAQCB2b2lkIFNtYWxsU3RyaW5nczo6bWFya0NoaWxkcmVuKE1hcmtTdGFj
ayYgbWFya1N0YWNrKQogICAgIH0KICAgICAKICAgICBpZiAobV9lbXB0eVN0cmluZykKLSAgICAg
ICAgbWFya1N0YWNrLmFwcGVuZCgmbV9lbXB0eVN0cmluZyk7CisgICAgICAgIG1hcmtTdGFjay5h
cHBlbmQobV9lbXB0eVN0cmluZyk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUNo
YXJhY3RlcnNUb1N0b3JlOyArK2kpIHsKICAgICAgICAgaWYgKG1fc2luZ2xlQ2hhcmFjdGVyU3Ry
aW5nc1tpXSkKLSAgICAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJm1fc2luZ2xlQ2hhcmFjdGVy
U3RyaW5nc1tpXSk7CisgICAgICAgICAgICBtYXJrU3RhY2suYXBwZW5kKG1fc2luZ2xlQ2hhcmFj
dGVyU3RyaW5nc1tpXSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NtYWxsU3RyaW5ncy5oCmluZGV4IGVlNzk1YjYyMjM4MTU0ODRmY2JhZmNjMWJjZmQ2Yzlk
NzA0ODU3YmEuLmFjODRmZTg4NzM1NTE2OThjZTY5ODkzMTNiNmVlMTdmMTg4YjY0MjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5oCkBAIC0yNyw3ICsy
Nyw2IEBACiAjZGVmaW5lIFNtYWxsU3RyaW5nc19oCiAKICNpbmNsdWRlICJVU3RyaW5nLmgiCi0j
aW5jbHVkZSAiV3JpdGVCYXJyaWVyLmgiCiAjaW5jbHVkZSA8d3RmL0ZpeGVkQXJyYXkuaD4KICNp
bmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKQEAgLTQ4LDEzICs0NywxMyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2VtcHR5U3RyaW5nKQogICAgICAgICAg
ICAgICAgIGNyZWF0ZUVtcHR5U3RyaW5nKGdsb2JhbERhdGEpOwotICAgICAgICAgICAgcmV0dXJu
IG1fZW1wdHlTdHJpbmcuZ2V0KCk7CisgICAgICAgICAgICByZXR1cm4gbV9lbXB0eVN0cmluZzsK
ICAgICAgICAgfQogICAgICAgICBKU1N0cmluZyogc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSwgdW5zaWduZWQgY2hhciBjaGFyYWN0ZXIpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIGlmICghbV9zaW5nbGVDaGFyYWN0ZXJTdHJpbmdzW2NoYXJhY3Rlcl0pCiAg
ICAgICAgICAgICAgICAgY3JlYXRlU2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGdsb2JhbERhdGEsIGNo
YXJhY3Rlcik7Ci0gICAgICAgICAgICByZXR1cm4gbV9zaW5nbGVDaGFyYWN0ZXJTdHJpbmdzW2No
YXJhY3Rlcl0uZ2V0KCk7CisgICAgICAgICAgICByZXR1cm4gbV9zaW5nbGVDaGFyYWN0ZXJTdHJp
bmdzW2NoYXJhY3Rlcl07CiAgICAgICAgIH0KIAogICAgICAgICBTdHJpbmdJbXBsKiBzaW5nbGVD
aGFyYWN0ZXJTdHJpbmdSZXAodW5zaWduZWQgY2hhciBjaGFyYWN0ZXIpOwpAQCAtNjQsMTQgKzYz
LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHVuc2lnbmVkIGNvdW50KCkgY29uc3Q7
CiAjaWYgRU5BQkxFKEpJVCkKLSAgICAgICAgSlNDZWxsKiogc2luZ2xlQ2hhcmFjdGVyU3RyaW5n
cygpIHsgcmV0dXJuIG1fc2luZ2xlQ2hhcmFjdGVyU3RyaW5nc1swXS5zbG90KCk7IH0KKyAgICAg
ICAgSlNTdHJpbmcqKiBzaW5nbGVDaGFyYWN0ZXJTdHJpbmdzKCkgeyByZXR1cm4gbV9zaW5nbGVD
aGFyYWN0ZXJTdHJpbmdzLmRhdGEoKTsgfQogI2VuZGlmCiAgICAgcHJpdmF0ZToKICAgICAgICAg
dm9pZCBjcmVhdGVFbXB0eVN0cmluZyhKU0dsb2JhbERhdGEqKTsKICAgICAgICAgdm9pZCBjcmVh
dGVTaW5nbGVDaGFyYWN0ZXJTdHJpbmcoSlNHbG9iYWxEYXRhKiwgdW5zaWduZWQgY2hhcik7CiAK
LSAgICAgICAgRGVwcmVjYXRlZFB0cjxKU1N0cmluZz4gbV9lbXB0eVN0cmluZzsKLSAgICAgICAg
Rml4ZWRBcnJheTxEZXByZWNhdGVkUHRyPEpTU3RyaW5nPiwgMHgxMDA+IG1fc2luZ2xlQ2hhcmFj
dGVyU3RyaW5nczsKKyAgICAgICAgSlNTdHJpbmcqIG1fZW1wdHlTdHJpbmc7CisgICAgICAgIEZp
eGVkQXJyYXk8SlNTdHJpbmcqLCAweDEwMD4gbV9zaW5nbGVDaGFyYWN0ZXJTdHJpbmdzOwogICAg
ICAgICBPd25QdHI8U21hbGxTdHJpbmdzU3RvcmFnZT4gbV9zdG9yYWdlOwogICAgIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNw
cAppbmRleCA2MDQ0NzNiZGMyODM4MjVlNjY4MDVmNDFkYjlkYTYwMzhiMTNlNGQwLi4xMDE2NTBj
M2MyMWI1ZGIyODJhZDA4NjdkNjMzZjQ3NWI5ODkxZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwCkBAIC01Myw3ICs1Myw3
IEBAIFN0cmluZ0NvbnN0cnVjdG9yOjpTdHJpbmdDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiAgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKCZleGVj
LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBJZGVudGlmaWVyKGV4ZWMs
IHN0cmluZ1Byb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSkpCiB7CiAgICAgLy8gRUNN
QSAxNS41LjMuMSBTdHJpbmcucHJvdG90eXBlCi0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBz
dHJpbmdQcm90b3R5cGUsIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKKyAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBl
LCBzdHJpbmdQcm90b3R5cGUsIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKIAog
ICAgIC8vIEVDTUEgMTUuNS4zLjIgZnJvbUNoYXJDb2RlKCkKICNpZiBFTkFCTEUoSklUKSAmJiBF
TkFCTEUoSklUX09QVElNSVpFX05BVElWRV9DQUxMKQpAQCAtNjIsNyArNjIsNyBAQCBTdHJpbmdD
b25zdHJ1Y3Rvcjo6U3RyaW5nQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZQogICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24o
ZXhlYywgbmV3IChleGVjKSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZXhlYywgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSwgMSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmZy
b21DaGFyQ29kZSwgc3RyaW5nRnJvbUNoYXJDb2RlKSwgRG9udEVudW0pOwogI2VuZGlmCiAgICAg
Ly8gbm8uIG9mIGFyZ3VtZW50cyBmb3IgY29uc3RydWN0b3IKLSAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5n
dGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CisgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwg
anNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKIH0KIAogLy8g
RUNNQSAxNS41LjIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cmluZ09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmpl
Y3QuY3BwCmluZGV4IDYzZTQxNDQ1NjMxZDU0MTgyM2RkNTU4YWEyODExMzliNmIzNDQ5MGYuLmRj
Mjc2MTg4MWE0NjFiNGM1MGFkZDc1NGNiZmIxNjZhYWUyOTBiZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcApAQCAtMzIsMTkgKzMyLDE5IEBA
IGNvbnN0IENsYXNzSW5mbyBTdHJpbmdPYmplY3Q6OmluZm8gPSB7ICJTdHJpbmciLCAwLCAwLCAw
IH07CiBTdHJpbmdPYmplY3Q6OlN0cmluZ09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIE5vbk51bGxQ
YXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlKQogICAgIDogSlNXcmFwcGVyT2JqZWN0KHN0
cnVjdHVyZSkKIHsKLSAgICBzZXRJbnRlcm5hbFZhbHVlKGV4ZWMtPmdsb2JhbERhdGEoKSwganNF
bXB0eVN0cmluZyhleGVjKSk7CisgICAgc2V0SW50ZXJuYWxWYWx1ZShqc0VtcHR5U3RyaW5nKGV4
ZWMpKTsKIH0KIAotU3RyaW5nT2JqZWN0OjpTdHJpbmdPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgSlNTdHJpbmcq
IHN0cmluZykKK1N0cmluZ09iamVjdDo6U3RyaW5nT2JqZWN0KE5vbk51bGxQYXNzUmVmUHRyPFN0
cnVjdHVyZT4gc3RydWN0dXJlLCBKU1N0cmluZyogc3RyaW5nKQogICAgIDogSlNXcmFwcGVyT2Jq
ZWN0KHN0cnVjdHVyZSkKIHsKLSAgICBzZXRJbnRlcm5hbFZhbHVlKGdsb2JhbERhdGEsIHN0cmlu
Zyk7CisgICAgc2V0SW50ZXJuYWxWYWx1ZShzdHJpbmcpOwogfQogCiBTdHJpbmdPYmplY3Q6OlN0
cmluZ09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4g
c3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBzdHJpbmcpCiAgICAgOiBKU1dyYXBwZXJPYmplY3Qo
c3RydWN0dXJlKQogewotICAgIHNldEludGVybmFsVmFsdWUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBq
c1N0cmluZyhleGVjLCBzdHJpbmcpKTsKKyAgICBzZXRJbnRlcm5hbFZhbHVlKGpzU3RyaW5nKGV4
ZWMsIHN0cmluZykpOwogfQogCiBib29sIFN0cmluZ09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmIHNsb3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVj
dC5oCmluZGV4IDAzNDg4ZjU3MWU3MDc1Mzc5ZGY4ZGVmMzg1YmNiNzUwMDRlOWQwNTIuLmUzYWRk
NzdiOTJiYmZmNTg0MzE4NmI0NmRlYzRlZDVjZWRjMDc3MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCkBAIC01Myw3ICs1Myw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNN
YXJrQ2hpbGRyZW4gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNXcmFwcGVyT2JqZWN0
OjpTdHJ1Y3R1cmVGbGFnczsKLSAgICAgICAgU3RyaW5nT2JqZWN0KEpTR2xvYmFsRGF0YSYsIE5v
bk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIEpTU3RyaW5nKik7CisgICAgICAgIFN0cmluZ09i
amVjdChOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBKU1N0cmluZyopOwogICB9OwogCiAg
ICAgU3RyaW5nT2JqZWN0KiBhc1N0cmluZ09iamVjdChKU1ZhbHVlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCmluZGV4IDZjZjA3OTIx
OWI5NzI2NzkzNDYzYTRiMzZjMDNmZDQyMmZkZTQ5ZjQuLjhiM2QwNTZjOGVhYWM4NmJiYjQzZGY0
MTlkZjU5MzRkNThhZDZkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nUHJvdG90eXBlLmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIFN0cmluZ1Byb3RvdHlw
ZTo6U3RyaW5nUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwKIHsKICAgICBwdXRBbm9ueW1vdXNWYWx1ZSgwLCBnbG9iYWxPYmplY3QpOwogICAg
IC8vIFRoZSBjb25zdHJ1Y3RvciB3aWxsIGJlIGFkZGVkIGxhdGVyLCBhZnRlciBTdHJpbmdDb25z
dHJ1Y3RvciBoYXMgYmVlbiBidWlsdAotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4
ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIo
MCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigwKSwg
RG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQogCiBib29sIFN0cmluZ1Byb3Rv
dHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCBlOGY1ZDdhOTk3OTEwZDZiZmNhOTcyOTFk
N2NhNDkyODRlNGViN2M1Li4wMTc5ZWVkYjBjNDljZTE3ZDdhY2E1OWM2OTRmZDliNWI5OWViZWRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTI0
Miw3ICsyNDIsNyBAQCBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShKU1ZhbHVlIHByb3RvdHlwZSwgY29u
c3QgVHlwZUluZm8mIHR5cGVJbmZvLCB1bnNpZ25lZCBhbm9ueQogICAgIG1fdHJhbnNpdGlvbnMu
bV9zaW5nbGVUcmFuc2l0aW9uID0gMDsKIAogICAgIEFTU0VSVChtX3Byb3RvdHlwZSk7Ci0gICAg
QVNTRVJUKG1fcHJvdG90eXBlLT5pc09iamVjdCgpIHx8IG1fcHJvdG90eXBlLT5pc051bGwoKSk7
CisgICAgQVNTRVJUKG1fcHJvdG90eXBlLmlzT2JqZWN0KCkgfHwgbV9wcm90b3R5cGUuaXNOdWxs
KCkpOwogCiAjaWZuZGVmIE5ERUJVRwogI2lmIEVOQUJMRShKU0NfTVVMVElQTEVfVEhSRUFEUykK
QEAgLTQ3Niw3ICs0NzYsNyBAQCBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjphZGRQ
cm9wZXJ0eVRyYW5zaXRpb24oU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbgogICAgICAgICByZXR1
cm4gdHJhbnNpdGlvbi5yZWxlYXNlKCk7CiAgICAgfQogCi0gICAgUmVmUHRyPFN0cnVjdHVyZT4g
dHJhbnNpdGlvbiA9IGNyZWF0ZShzdHJ1Y3R1cmUtPm1fcHJvdG90eXBlLmdldCgpLCBzdHJ1Y3R1
cmUtPnR5cGVJbmZvKCksIHN0cnVjdHVyZS0+YW5vbnltb3VzU2xvdENvdW50KCkpOworICAgIFJl
ZlB0cjxTdHJ1Y3R1cmU+IHRyYW5zaXRpb24gPSBjcmVhdGUoc3RydWN0dXJlLT5tX3Byb3RvdHlw
ZSwgc3RydWN0dXJlLT50eXBlSW5mbygpLCBzdHJ1Y3R1cmUtPmFub255bW91c1Nsb3RDb3VudCgp
KTsKIAogICAgIHRyYW5zaXRpb24tPm1fY2FjaGVkUHJvdG90eXBlQ2hhaW4gPSBzdHJ1Y3R1cmUt
Pm1fY2FjaGVkUHJvdG90eXBlQ2hhaW47CiAgICAgdHJhbnNpdGlvbi0+bV9wcmV2aW91cyA9IHN0
cnVjdHVyZTsKQEAgLTU5NSw3ICs1OTUsNyBAQCBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0
dXJlOjp0b0RpY3Rpb25hcnlUcmFuc2l0aW9uKFN0cnVjdHVyZSogc3RydWN0dXJlLCBEaQogewog
ICAgIEFTU0VSVCghc3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKTsKICAgICAK
LSAgICBSZWZQdHI8U3RydWN0dXJlPiB0cmFuc2l0aW9uID0gY3JlYXRlKHN0cnVjdHVyZS0+bV9w
cm90b3R5cGUuZ2V0KCksIHN0cnVjdHVyZS0+dHlwZUluZm8oKSwgc3RydWN0dXJlLT5hbm9ueW1v
dXNTbG90Q291bnQoKSk7CisgICAgUmVmUHRyPFN0cnVjdHVyZT4gdHJhbnNpdGlvbiA9IGNyZWF0
ZShzdHJ1Y3R1cmUtPm1fcHJvdG90eXBlLCBzdHJ1Y3R1cmUtPnR5cGVJbmZvKCksIHN0cnVjdHVy
ZS0+YW5vbnltb3VzU2xvdENvdW50KCkpOwogICAgIHRyYW5zaXRpb24tPm1fZGljdGlvbmFyeUtp
bmQgPSBraW5kOwogICAgIHRyYW5zaXRpb24tPm1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkgPSBz
dHJ1Y3R1cmUtPm1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHk7CiAgICAgdHJhbnNpdGlvbi0+bV9o
YXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzID0gc3RydWN0dXJlLT5tX2hhc0dldHRlclNldHRlclBy
b3BlcnRpZXM7CkBAIC02MjAsNyArNjIwLDcgQEAgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVj
dHVyZTo6dG9VbmNhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKFN0cnVjdHVyZSogc3QKICAg
ICByZXR1cm4gdG9EaWN0aW9uYXJ5VHJhbnNpdGlvbihzdHJ1Y3R1cmUsIFVuY2FjaGVkRGljdGlv
bmFyeUtpbmQpOwogfQogCi1QYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjpmbGF0dGVu
RGljdGlvbmFyeVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTT2JqZWN0KiBv
YmplY3QpCitQYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjpmbGF0dGVuRGljdGlvbmFy
eVN0cnVjdHVyZShKU09iamVjdCogb2JqZWN0KQogewogICAgIEFTU0VSVChpc0RpY3Rpb25hcnko
KSk7CiAgICAgaWYgKGlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpIHsKQEAgLTY1MSw3ICs2NTEs
NyBAQCBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjpmbGF0dGVuRGljdGlvbmFyeVN0
cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbAogICAgICAgICAKICAgICAgICAgLy8gQ29weSB0
aGUgb3JpZ2luYWwgcHJvcGVydHkgdmFsdWVzIGludG8gdGhlaXIgZmluYWwgbG9jYXRpb25zCiAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwcm9wZXJ0eUNvdW50OyBpKyspCi0gICAg
ICAgICAgICBvYmplY3QtPnB1dERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBhbm9ueW1vdXNTbG90
Q291bnQgKyBpLCB2YWx1ZXNbaV0pOworICAgICAgICAgICAgb2JqZWN0LT5wdXREaXJlY3RPZmZz
ZXQoYW5vbnltb3VzU2xvdENvdW50ICsgaSwgdmFsdWVzW2ldKTsKIAogICAgICAgICBpZiAobV9w
cm9wZXJ0eVRhYmxlLT5kZWxldGVkT2Zmc2V0cykgewogICAgICAgICAgICAgZGVsZXRlIG1fcHJv
cGVydHlUYWJsZS0+ZGVsZXRlZE9mZnNldHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5oCmluZGV4IDc3NzI0YWNmZjM1NDY2MGM4MjUyMmE3YTU3NTE0OGY2ZTg5Zjc4
NDcuLmY0ODAwNTFlMGI4Njg4MTQ5NjE4YjM3MWFmNTdjZTE4YjcxNmE0YzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCkBAIC04MCw3ICs4MCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHRvQ2FjaGVh
YmxlRGljdGlvbmFyeVRyYW5zaXRpb24oU3RydWN0dXJlKik7CiAgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFN0cnVjdHVyZT4gdG9VbmNhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKFN0cnVj
dHVyZSopOwogCi0gICAgICAgIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBmbGF0dGVuRGljdGlvbmFy
eVN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBKU09iamVjdCopOworICAgICAgICBQYXNzUmVmUHRy
PFN0cnVjdHVyZT4gZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUoSlNPYmplY3QqKTsKIAogICAg
ICAgICB+U3RydWN0dXJlKCk7CiAKQEAgLTk0LDggKzk0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICAgICAgY29uc3QgVHlwZUluZm8mIHR5cGVJbmZvKCkgY29uc3QgeyByZXR1cm4gbV90eXBl
SW5mbzsgfQogCi0gICAgICAgIEpTVmFsdWUgc3RvcmVkUHJvdG90eXBlKCkgY29uc3QgeyByZXR1
cm4gbV9wcm90b3R5cGUuZ2V0KCk7IH0KLSAgICAgICAgRGVwcmVjYXRlZFB0cjxVbmtub3duPiog
c3RvcmVkUHJvdG90eXBlU2xvdCgpIHsgcmV0dXJuICZtX3Byb3RvdHlwZTsgfQorICAgICAgICBK
U1ZhbHVlIHN0b3JlZFByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdG90eXBlOyB9CiAg
ICAgICAgIEpTVmFsdWUgcHJvdG90eXBlRm9yTG9va3VwKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAg
ICAgICBTdHJ1Y3R1cmVDaGFpbiogcHJvdG90eXBlQ2hhaW4oRXhlY1N0YXRlKikgY29uc3Q7CiAK
QEAgLTIwNyw3ICsyMDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBUeXBlSW5mbyBt
X3R5cGVJbmZvOwogCi0gICAgICAgIERlcHJlY2F0ZWRQdHI8VW5rbm93bj4gbV9wcm90b3R5cGU7
CisgICAgICAgIEpTVmFsdWUgbV9wcm90b3R5cGU7CiAgICAgICAgIG11dGFibGUgUmVmUHRyPFN0
cnVjdHVyZUNoYWluPiBtX2NhY2hlZFByb3RvdHlwZUNoYWluOwogCiAgICAgICAgIFJlZlB0cjxT
dHJ1Y3R1cmU+IG1fcHJldmlvdXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9XZWFrR0NNYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtH
Q01hcC5oCmluZGV4IDkxNWFkMGY2ZTIwZDc5MWQ4YTc3OTAyZTA4NDExNDU5NzExNTIyMGEuLmMw
NjNkZDI3OGE2MWRkZDQ0NGU2YTUyZWMzOTAxMGI1NDJjY2QwOWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcC5oCkBAIC00NiwyOSArNDYsMjIgQEAgY2xhc3MgV2Vh
a0dDTWFwIHsKICAgICAqLwogCiBwdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNoTWFw
PEtleVR5cGUsIERlcHJlY2F0ZWRQdHI8TWFwcGVkVHlwZT4gPjo6aXRlcmF0b3IgaXRlcmF0b3I7
Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNoTWFwPEtleVR5cGUsIERlcHJlY2F0ZWRQdHI8TWFw
cGVkVHlwZT4gPjo6Y29uc3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7CisgICAgdHlwZWRlZiB0
eXBlbmFtZSBIYXNoTWFwPEtleVR5cGUsIE1hcHBlZFR5cGU+OjppdGVyYXRvciBpdGVyYXRvcjsK
KyAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXA8S2V5VHlwZSwgTWFwcGVkVHlwZT46OmNvbnN0
X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwogICAgIAogICAgIGJvb2wgaXNFbXB0eSgpIHsgcmV0
dXJuIG1fbWFwLmlzRW1wdHkoKTsgfQogICAgIHZvaWQgY2xlYXIoKSB7IG1fbWFwLmNsZWFyKCk7
IH0KIAotICAgIE1hcHBlZFR5cGUqIGdldChjb25zdCBLZXlUeXBlJikgY29uc3Q7Ci0gICAgcGFp
cjxpdGVyYXRvciwgYm9vbD4gc2V0KGNvbnN0IEtleVR5cGUmLCBNYXBwZWRUeXBlKik7IAotICAg
IE1hcHBlZFR5cGUqIHRha2UoY29uc3QgS2V5VHlwZSYpOworICAgIE1hcHBlZFR5cGUgZ2V0KGNv
bnN0IEtleVR5cGUmIGtleSkgY29uc3Q7CisgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gc2V0KGNv
bnN0IEtleVR5cGUmLCBjb25zdCBNYXBwZWRUeXBlJik7IAorICAgIE1hcHBlZFR5cGUgdGFrZShj
b25zdCBLZXlUeXBlJiBrZXkpOwogCiAgICAgLy8gVGhlc2UgdW5jaGVja2VkIGZ1bmN0aW9ucyBw
cm92aWRlIGFjY2VzcyB0byBhIHZhbHVlIGV2ZW4gaWYgdGhlIHZhbHVlJ3MKICAgICAvLyBtYXJr
IGJpdCBpcyBub3Qgc2V0LiBUaGlzIGlzIHVzZWQsIGFtb25nIG90aGVyIHRoaW5ncywgdG8gcmV0
cmlldmUgdmFsdWVzCiAgICAgLy8gZHVyaW5nIHRoZSBHQyBtYXJrIHBoYXNlLCB3aGljaCBiZWdp
bnMgYnkgY2xlYXJpbmcgYWxsIG1hcmsgYml0cy4KIAotICAgIE1hcHBlZFR5cGUqIHVuY2hlY2tl
ZEdldChjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLmdldChrZXkpLmdl
dCgpOyB9Ci0gICAgRGVwcmVjYXRlZFB0cjxNYXBwZWRUeXBlPiogdW5jaGVja2VkR2V0U2xvdChj
b25zdCBLZXlUeXBlJiBrZXkpCi0gICAgewotICAgICAgICBpdGVyYXRvciBpdGVyID0gbV9tYXAu
ZmluZChrZXkpOwotICAgICAgICBpZiAoaXRlciA9PSBtX21hcC5lbmQoKSkKLSAgICAgICAgICAg
IHJldHVybiAwOwotICAgICAgICByZXR1cm4gJml0ZXItPnNlY29uZDsKLSAgICB9Ci0gICAgYm9v
bCB1bmNoZWNrZWRSZW1vdmUoY29uc3QgS2V5VHlwZSYsIE1hcHBlZFR5cGUqKTsKKyAgICBNYXBw
ZWRUeXBlIHVuY2hlY2tlZEdldChjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0IHsgcmV0dXJuIG1f
bWFwLmdldChrZXkpOyB9CisgICAgYm9vbCB1bmNoZWNrZWRSZW1vdmUoY29uc3QgS2V5VHlwZSYs
IGNvbnN0IE1hcHBlZFR5cGUmKTsKIAogICAgIGl0ZXJhdG9yIHVuY2hlY2tlZEJlZ2luKCkgeyBy
ZXR1cm4gbV9tYXAuYmVnaW4oKTsgfQogICAgIGl0ZXJhdG9yIHVuY2hlY2tlZEVuZCgpIHsgcmV0
dXJuIG1fbWFwLmVuZCgpOyB9CkBAIC03Niw1NCArNjksNTQgQEAgcHVibGljOgogICAgIGNvbnN0
X2l0ZXJhdG9yIHVuY2hlY2tlZEJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuYmVnaW4oKTsg
fQogICAgIGNvbnN0X2l0ZXJhdG9yIHVuY2hlY2tlZEVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFw
LmVuZCgpOyB9CiAKLSAgICBib29sIGlzVmFsaWQoaXRlcmF0b3IgaXQpIGNvbnN0IHsgcmV0dXJu
IEhlYXA6OmlzQ2VsbE1hcmtlZChpdC0+c2Vjb25kLmdldCgpKTsgfQotICAgIGJvb2wgaXNWYWxp
ZChjb25zdF9pdGVyYXRvciBpdCkgY29uc3QgeyByZXR1cm4gSGVhcDo6aXNDZWxsTWFya2VkKGl0
LT5zZWNvbmQuZ2V0KCkpOyB9CisgICAgYm9vbCBpc1ZhbGlkKGl0ZXJhdG9yIGl0KSBjb25zdCB7
IHJldHVybiBIZWFwOjppc0NlbGxNYXJrZWQoaXQtPnNlY29uZCk7IH0KKyAgICBib29sIGlzVmFs
aWQoY29uc3RfaXRlcmF0b3IgaXQpIGNvbnN0IHsgcmV0dXJuIEhlYXA6OmlzQ2VsbE1hcmtlZChp
dC0+c2Vjb25kKTsgfQogCiBwcml2YXRlOgotICAgIEhhc2hNYXA8S2V5VHlwZSwgRGVwcmVjYXRl
ZFB0cjxNYXBwZWRUeXBlPiA+IG1fbWFwOworICAgIEhhc2hNYXA8S2V5VHlwZSwgTWFwcGVkVHlw
ZT4gbV9tYXA7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBNYXBw
ZWRUeXBlPgotaW5saW5lIE1hcHBlZFR5cGUqIFdlYWtHQ01hcDxLZXlUeXBlLCBNYXBwZWRUeXBl
Pjo6Z2V0KGNvbnN0IEtleVR5cGUmIGtleSkgY29uc3QKK2lubGluZSBNYXBwZWRUeXBlIFdlYWtH
Q01hcDxLZXlUeXBlLCBNYXBwZWRUeXBlPjo6Z2V0KGNvbnN0IEtleVR5cGUmIGtleSkgY29uc3QK
IHsKLSAgICBNYXBwZWRUeXBlKiByZXN1bHQgPSBtX21hcC5nZXQoa2V5KS5nZXQoKTsKLSAgICBp
ZiAocmVzdWx0ID09IEhhc2hUcmFpdHM8TWFwcGVkVHlwZSo+OjplbXB0eVZhbHVlKCkpCisgICAg
TWFwcGVkVHlwZSByZXN1bHQgPSBtX21hcC5nZXQoa2V5KTsKKyAgICBpZiAocmVzdWx0ID09IEhh
c2hUcmFpdHM8TWFwcGVkVHlwZT46OmVtcHR5VmFsdWUoKSkKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICBpZiAoIUhlYXA6OmlzQ2VsbE1hcmtlZChyZXN1bHQpKQotICAgICAgICByZXR1cm4g
SGFzaFRyYWl0czxNYXBwZWRUeXBlKj46OmVtcHR5VmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIEhh
c2hUcmFpdHM8TWFwcGVkVHlwZT46OmVtcHR5VmFsdWUoKTsKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBNYXBwZWRUeXBlPgotTWFw
cGVkVHlwZSogV2Vha0dDTWFwPEtleVR5cGUsIE1hcHBlZFR5cGU+Ojp0YWtlKGNvbnN0IEtleVR5
cGUmIGtleSkKK01hcHBlZFR5cGUgV2Vha0dDTWFwPEtleVR5cGUsIE1hcHBlZFR5cGU+Ojp0YWtl
KGNvbnN0IEtleVR5cGUmIGtleSkKIHsKLSAgICBNYXBwZWRUeXBlKiByZXN1bHQgPSBtX21hcC50
YWtlKGtleSkuZ2V0KCk7Ci0gICAgaWYgKHJlc3VsdCA9PSBIYXNoVHJhaXRzPE1hcHBlZFR5cGUq
Pjo6ZW1wdHlWYWx1ZSgpKQorICAgIE1hcHBlZFR5cGUgcmVzdWx0ID0gbV9tYXAudGFrZShrZXkp
OworICAgIGlmIChyZXN1bHQgPT0gSGFzaFRyYWl0czxNYXBwZWRUeXBlPjo6ZW1wdHlWYWx1ZSgp
KQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIGlmICghSGVhcDo6aXNDZWxsTWFya2VkKHJl
c3VsdCkpCi0gICAgICAgIHJldHVybiBIYXNoVHJhaXRzPE1hcHBlZFR5cGUqPjo6ZW1wdHlWYWx1
ZSgpOworICAgICAgICByZXR1cm4gSGFzaFRyYWl0czxNYXBwZWRUeXBlPjo6ZW1wdHlWYWx1ZSgp
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEtleVR5cGUsIHR5
cGVuYW1lIE1hcHBlZFR5cGU+Ci1wYWlyPHR5cGVuYW1lIFdlYWtHQ01hcDxLZXlUeXBlLCBNYXBw
ZWRUeXBlPjo6aXRlcmF0b3IsIGJvb2w+IFdlYWtHQ01hcDxLZXlUeXBlLCBNYXBwZWRUeXBlPjo6
c2V0KGNvbnN0IEtleVR5cGUmIGtleSwgTWFwcGVkVHlwZSogdmFsdWUpCitwYWlyPHR5cGVuYW1l
IEhhc2hNYXA8S2V5VHlwZSwgTWFwcGVkVHlwZT46Oml0ZXJhdG9yLCBib29sPiBXZWFrR0NNYXA8
S2V5VHlwZSwgTWFwcGVkVHlwZT46OnNldChjb25zdCBLZXlUeXBlJiBrZXksIGNvbnN0IE1hcHBl
ZFR5cGUmIHZhbHVlKQogewogICAgIEhlYXA6Om1hcmtDZWxsKHZhbHVlKTsgLy8gSWYgdmFsdWUg
aXMgbmV3bHkgYWxsb2NhdGVkLCBpdCdzIG5vdCBtYXJrZWQsIHNvIG1hcmsgaXQgbm93LgogICAg
IHBhaXI8aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fbWFwLmFkZChrZXksIHZhbHVlKTsKICAg
ICBpZiAoIXJlc3VsdC5zZWNvbmQpIHsgLy8gcHJlLWV4aXN0aW5nIGVudHJ5Ci0gICAgICAgIHJl
c3VsdC5zZWNvbmQgPSAhSGVhcDo6aXNDZWxsTWFya2VkKHJlc3VsdC5maXJzdC0+c2Vjb25kLmdl
dCgpKTsKKyAgICAgICAgcmVzdWx0LnNlY29uZCA9ICFIZWFwOjppc0NlbGxNYXJrZWQocmVzdWx0
LmZpcnN0LT5zZWNvbmQpOwogICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IHZhbHVlOwog
ICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlUeXBl
LCB0eXBlbmFtZSBNYXBwZWRUeXBlPgotYm9vbCBXZWFrR0NNYXA8S2V5VHlwZSwgTWFwcGVkVHlw
ZT46OnVuY2hlY2tlZFJlbW92ZShjb25zdCBLZXlUeXBlJiBrZXksIE1hcHBlZFR5cGUqIHZhbHVl
KQorYm9vbCBXZWFrR0NNYXA8S2V5VHlwZSwgTWFwcGVkVHlwZT46OnVuY2hlY2tlZFJlbW92ZShj
b25zdCBLZXlUeXBlJiBrZXksIGNvbnN0IE1hcHBlZFR5cGUmIHZhbHVlKQogewogICAgIGl0ZXJh
dG9yIGl0ID0gbV9tYXAuZmluZChrZXkpOwogICAgIGlmIChpdCA9PSBtX21hcC5lbmQoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChpdC0+c2Vjb25kLmdldCgpICE9IHZhbHVlKQor
ICAgIGlmIChpdC0+c2Vjb25kICE9IHZhbHVlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
bV9tYXAucmVtb3ZlKGl0KTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1dyaXRlQmFycmllci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvV3JpdGVCYXJyaWVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDY1NTg2MTQxMDZhMDY5NTE4MTY0YmFiZDgzM2NkNWUyNmM1MWY3ZGUuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvV3JpdGVCYXJyaWVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNjAgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpZm5kZWYgV3JpdGVCYXJyaWVyX2gKLSNkZWZpbmUgV3JpdGVCYXJyaWVyX2gK
LQotI2luY2x1ZGUgIkpTVmFsdWUuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBKU0NlbGw7
Ci1jbGFzcyBKU0dsb2JhbERhdGE7Ci0KLXR5cGVkZWYgZW51bSB7IH0gVW5rbm93bjsKLQotdGVt
cGxhdGUgPGNsYXNzIFQ+IGNsYXNzIERlcHJlY2F0ZWRQdHIgewotcHVibGljOgotICAgIERlcHJl
Y2F0ZWRQdHIoKSA6IG1fY2VsbCgwKSB7IH0KLSAgICBEZXByZWNhdGVkUHRyKFQqIGNlbGwpIDog
bV9jZWxsKHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4oY2VsbCkpIHsgfQotICAgIFQqIGdldCgp
IGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KG1fY2VsbCk7IH0KLSAgICBUKiBv
cGVyYXRvciooKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUKj4obV9jZWxsKTsgfQotICAg
IFQqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUKj4obV9jZWxsKTsg
fQotICAgIAotICAgIEpTQ2VsbCoqIHNsb3QoKSB7IHJldHVybiAmbV9jZWxsOyB9Ci0gICAgCi0g
ICAgdHlwZWRlZiBUKiAoRGVwcmVjYXRlZFB0cjo6KlVuc3BlY2lmaWVkQm9vbFR5cGUpOwotICAg
IG9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUqKCkgY29uc3QgeyByZXR1cm4gbV9jZWxsID8g
cmVpbnRlcnByZXRfY2FzdDxVbnNwZWNpZmllZEJvb2xUeXBlKj4oMSkgOiAwOyB9Ci0KLSAgICBi
b29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX2NlbGw7IH0KLQotcHJvdGVjdGVkOgot
ICAgIEpTQ2VsbCogbV9jZWxsOwotfTsKLQotdGVtcGxhdGUgPD4gY2xhc3MgRGVwcmVjYXRlZFB0
cjxVbmtub3duPiB7Ci1wdWJsaWM6Ci0gICAgRGVwcmVjYXRlZFB0cigpIHsgfQotICAgIERlcHJl
Y2F0ZWRQdHIoSlNWYWx1ZSB2YWx1ZSkgOiBtX3ZhbHVlKHZhbHVlKSB7IH0KLSAgICBEZXByZWNh
dGVkUHRyKEpTQ2VsbCogdmFsdWUpIDogbV92YWx1ZSh2YWx1ZSkgeyB9Ci0gICAgY29uc3QgSlNW
YWx1ZSYgZ2V0KCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQotICAgIGNvbnN0IEpTVmFsdWUq
IG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuICZtX3ZhbHVlOyB9Ci0gICAgY29uc3QgSlNWYWx1
ZSogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuICZtX3ZhbHVlOyB9Ci0gICAgCi0gICAgSlNW
YWx1ZSogc2xvdCgpIHsgcmV0dXJuICZtX3ZhbHVlOyB9Ci0gICAgCi0gICAgdHlwZWRlZiBKU1Zh
bHVlIChEZXByZWNhdGVkUHRyOjoqVW5zcGVjaWZpZWRCb29sVHlwZSk7Ci0gICAgb3BlcmF0b3Ig
VW5zcGVjaWZpZWRCb29sVHlwZSooKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID8gcmVpbnRlcnBy
ZXRfY2FzdDxVbnNwZWNpZmllZEJvb2xUeXBlKj4oMSkgOiAwOyB9Ci0gICAgYm9vbCBvcGVyYXRv
ciEoKSBjb25zdCB7IHJldHVybiAhbV92YWx1ZTsgfQotICAgIAotcHJpdmF0ZToKLSAgICBKU1Zh
bHVlIG1fdmFsdWU7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IFdyaXRlQmFy
cmllckNoZWNrIHsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBJc0pTVmFsdWUgPSBmYWxzZTsKLX07
Ci0KLXRlbXBsYXRlIDw+IHN0cnVjdCBXcml0ZUJhcnJpZXJDaGVjazxKU1ZhbHVlPiB7Ci0gICAg
c3RhdGljIGNvbnN0IGJvb2wgSXNKU1ZhbHVlID0gdHJ1ZTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBjbGFzcyBXcml0ZUJhcnJpZXJCYXNlIHsKLXB1YmxpYzoKLSAgICBDT01QSUxFX0FT
U0VSVCghV3JpdGVCYXJyaWVyQ2hlY2s8VD46OklzSlNWYWx1ZSwgV3JpdGVCYXJyaWVyX0pTVmFs
dWVfaXNfaW52YWxpZF9fdXNlX3Vua25vd24pOwotICAgIHZvaWQgc2V0KEpTR2xvYmFsRGF0YSYs
IGNvbnN0IEpTQ2VsbCosIFQqIHZhbHVlKSB7IHRoaXMtPm1fY2VsbCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8SlNDZWxsKj4odmFsdWUpOyB9Ci0gICAgCi0gICAgVCogZ2V0KCkgY29uc3QgeyByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxUKj4obV9jZWxsKTsgfQotICAgIFQqIG9wZXJhdG9yKigpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PFQqPihtX2NlbGwpOyB9Ci0gICAgVCogb3BlcmF0b3ItPigp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFQqPihtX2NlbGwpOyB9Ci0gICAgCi0gICAgSlND
ZWxsKiogc2xvdCgpIHsgcmV0dXJuICZtX2NlbGw7IH0KLSAgICAKLSAgICB0eXBlZGVmIFQqIChX
cml0ZUJhcnJpZXJCYXNlOjoqVW5zcGVjaWZpZWRCb29sVHlwZSk7Ci0gICAgb3BlcmF0b3IgVW5z
cGVjaWZpZWRCb29sVHlwZSooKSBjb25zdCB7IHJldHVybiBtX2NlbGwgPyByZWludGVycHJldF9j
YXN0PFVuc3BlY2lmaWVkQm9vbFR5cGUqPigxKSA6IDA7IH0KLSAgICAKLSAgICBib29sIG9wZXJh
dG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX2NlbGw7IH0KLQotcHJvdGVjdGVkOgotICAgIEpTQ2Vs
bCogbV9jZWxsOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFdyaXRlQmFycmll
ciA6IHB1YmxpYyBXcml0ZUJhcnJpZXJCYXNlPFQ+IHsKLXB1YmxpYzoKLSAgICBXcml0ZUJhcnJp
ZXIoKSB7IHRoaXMtPm1fY2VsbCA9IDA7IH0KLSAgICBXcml0ZUJhcnJpZXIoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBjb25zdCBKU0NlbGwqIG93bmVyLCBUKiB2YWx1ZSkKLSAgICB7Ci0gICAg
ICAgIHNldChnbG9iYWxEYXRhLCBvd25lciwgdmFsdWUpOwotICAgIH0KLQotfTsKLQotdGVtcGxh
dGUgPD4gY2xhc3MgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiB7Ci1wdWJsaWM6Ci0gICAgdm9p
ZCBzZXQoSlNHbG9iYWxEYXRhJiwgY29uc3QgSlNDZWxsKiwgSlNWYWx1ZSB2YWx1ZSkgeyBtX3Zh
bHVlID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsgfQotICAgIHZvaWQgc2V0V2l0aG91dFdyaXRl
QmFycmllcihKU1ZhbHVlIHZhbHVlKSB7IG1fdmFsdWUgPSBKU1ZhbHVlOjplbmNvZGUodmFsdWUp
OyB9Ci0gICAgSlNWYWx1ZSBnZXQoKSBjb25zdCB7IHJldHVybiBKU1ZhbHVlOjpkZWNvZGUobV92
YWx1ZSk7IH0KLSAgICB2b2lkIGNsZWFyKCkgeyBtX3ZhbHVlID0gSlNWYWx1ZTo6ZW5jb2RlKEpT
VmFsdWUoKSk7IH0KLSAgICB2b2lkIHNldFVuZGVmaW5lZCgpIHsgbV92YWx1ZSA9IEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsgfQotICAgIGJvb2wgaXNOdW1iZXIoKSBjb25zdCB7IHJl
dHVybiBnZXQoKS5pc051bWJlcigpOyB9Ci0gICAgSlNWYWx1ZSogc2xvdCgpCi0gICAgeyAKLSAg
ICAgICAgdW5pb24gewotICAgICAgICAgICAgRW5jb2RlZEpTVmFsdWUqIHY7Ci0gICAgICAgICAg
ICBKU1ZhbHVlKiBzbG90OwotICAgICAgICB9IHU7Ci0gICAgICAgIHUudiA9ICZtX3ZhbHVlOwot
ICAgICAgICByZXR1cm4gdS5zbG90OwotICAgIH0KLSAgICAKLSAgICB0eXBlZGVmIEpTVmFsdWUg
KFdyaXRlQmFycmllckJhc2U6OipVbnNwZWNpZmllZEJvb2xUeXBlKTsKLSAgICBvcGVyYXRvciBV
bnNwZWNpZmllZEJvb2xUeXBlKigpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgPyByZWludGVycHJl
dF9jYXN0PFVuc3BlY2lmaWVkQm9vbFR5cGUqPigxKSA6IDA7IH0KLSAgICBib29sIG9wZXJhdG9y
ISgpIGNvbnN0IHsgcmV0dXJuICFtX3ZhbHVlOyB9IAotICAgIAotcHJvdGVjdGVkOgotICAgIEVu
Y29kZWRKU1ZhbHVlIG1fdmFsdWU7Ci19OwotCi10ZW1wbGF0ZSA8PiBjbGFzcyBXcml0ZUJhcnJp
ZXI8VW5rbm93bj4gOiBwdWJsaWMgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiB7Ci1wdWJsaWM6
Ci0gICAgV3JpdGVCYXJyaWVyKCkgeyBtX3ZhbHVlID0gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUo
KSk7IH0KLSAgICBXcml0ZUJhcnJpZXIoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBK
U0NlbGwqIG93bmVyLCBKU1ZhbHVlIHZhbHVlKQotICAgIHsKLSAgICAgICAgc2V0KGdsb2JhbERh
dGEsIG93bmVyLCB2YWx1ZSk7Ci0gICAgfQotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFUsIHR5
cGVuYW1lIFY+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgRGVwcmVjYXRlZFB0cjxVPiYg
bGhzLCBjb25zdCBEZXByZWNhdGVkUHRyPFY+JiByaHMpCi17Ci0gICAgcmV0dXJuIGxocy5nZXQo
KSA9PSByaHMuZ2V0KCk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPiBp
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFdyaXRlQmFycmllckJhc2U8VT4mIGxocywgY29u
c3QgV3JpdGVCYXJyaWVyQmFzZTxWPiYgcmhzKQotewotICAgIHJldHVybiBsaHMuZ2V0KCkgPT0g
cmhzLmdldCgpOwotfQotCi19Ci0KLSNlbmRpZiAvLyBXcml0ZUJhcnJpZXJfaApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1
ZS9DaGFuZ2VMb2cKaW5kZXggMGZjYzY4Y2E4MjZjMzRiNWYyN2Q3OTY1YjkxNzRlZjFjMjc3Mzkz
ZS4uYjVkZDg0ODdkMGI3NGQ4N2Y0OTdmNWE2ZTEzYWMxNjU0MWI5NmVmYiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdEds
dWUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDEtMjggIFNoZXJpZmYgQm90ICA8
d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxp
bmcgb3V0IHI3NzAwNiBhbmQgcjc3MDIwLgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC83NzAwNgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNl
dC83NzAyMAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTMzNjAKKworICAgICAgICAiQnJva2UgV2luZG93cyB0ZXN0cyIgKFJlcXVlc3RlZCBieSBybml3
YSBvbiAjd2Via2l0KS4KKworICAgICAgICAqIEpTVmFsdWVXcmFwcGVyLmNwcDoKKyAgICAgICAg
KEpTVmFsdWVXcmFwcGVyOjpKU09iamVjdE1hcmspOgorCiAyMDExLTAxLTI3ICBPbGl2ZXIgSHVu
dCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2Fy
ZW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvSlNWYWx1ZVdyYXBwZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRHbHVlL0pTVmFsdWVXcmFwcGVyLmNwcAppbmRleCBkOWFjNDk3
ZDkxOTQyZGNiYWU3Nzg1Y2Q3YzNiMWE1NDUyNzY4Zjk5Li5lMDg3OWEwMGViMjY4Y2M1YjM3Y2Q2
OWFhNTAyODAxNWQ1OTI4ZThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvSlNW
YWx1ZVdyYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9KU1ZhbHVlV3JhcHBl
ci5jcHAKQEAgLTE5NCw0ICsxOTQsMTUgQEAgQ0ZUeXBlUmVmIEpTVmFsdWVXcmFwcGVyOjpKU09i
amVjdENvcHlDRlZhbHVlKHZvaWQgKmRhdGEpCiAKIHZvaWQgSlNWYWx1ZVdyYXBwZXI6OkpTT2Jq
ZWN0TWFyayh2b2lkICpkYXRhKQogeworICAgIEpTVmFsdWVXcmFwcGVyKiBwdHIgPSAoSlNWYWx1
ZVdyYXBwZXIqKWRhdGE7CisgICAgaWYgKHB0cikKKyAgICB7CisgICAgICAgIC8vIFRoaXMgcmVz
dWx0cyBpbiByZWN1cnNpdmUgbWFya2luZyBidXQgd2lsbCBiZSBvdGhlcndpc2Ugc2FmZSBhbmQg
Y29ycmVjdC4KKyAgICAgICAgLy8gV2UgY2xhaW0gdGhlIGFycmF5IHZwdHIgaXMgMCBiZWNhdXNl
IHdlIGRvbid0IGhhdmUgYWNjZXNzIHRvIGl0IGhlcmUsIGFuZAorICAgICAgICAvLyBjbGFpbWlu
ZyAwIGlzIGZ1bmN0aW9uYWxseSBoYXJtbGVzcyAtLSBpdCBtZXJlbHkgbWVhbnMgdGhhdCB3ZSBj
YW4ndAorICAgICAgICAvLyBkZXZpcnR1YWxpc2UgbWFya2luZyBvZiBhcnJheXMgd2hlbiByZWN1
cnNpbmcgZnJvbSB0aGlzIHBvaW50LgorICAgICAgICBNYXJrU3RhY2sgbWFya1N0YWNrKDApOwor
ICAgICAgICBtYXJrU3RhY2suYXBwZW5kKHB0ci0+ZlZhbHVlLmdldCgpKTsKKyAgICAgICAgbWFy
a1N0YWNrLmRyYWluKCk7CisgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDE0ZGM1ZmVlOWI2YjFlODZm
N2MwZjczODc1NTMwNWE3YjE2Mjk4MWMuLjljMThlNzk4ZjY4NDQ2ZTBlNWJhNTI4MzQ1ZjM2MGQ2
MjAxMWViMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MyBAQAorMjAxMS0wMS0yOCAgU2hlcmlm
ZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CisKKyAgICAgICAgVW5yZXZpZXdl
ZCwgcm9sbGluZyBvdXQgcjc3MDA2IGFuZCByNzcwMjAuCisgICAgICAgIGh0dHA6Ly90cmFjLndl
YmtpdC5vcmcvY2hhbmdlc2V0Lzc3MDA2CisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcv
Y2hhbmdlc2V0Lzc3MDIwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01MzM2MAorCisgICAgICAgICJCcm9rZSBXaW5kb3dzIHRlc3RzIiAoUmVxdWVzdGVk
IGJ5IHJuaXdhIG9uICN3ZWJraXQpLgorCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvcnVu
dGltZS9Xcml0ZUJhcnJpZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuaDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0F1ZGlvQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNBdWRp
b0NvbnN0cnVjdG9yOjpKU0F1ZGlvQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NQmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYXJrRE9NTm9kZXNGb3JEb2N1
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjptYXJrRE9NT2JqZWN0V3JhcHBlcik6CisgICAgICAg
IChXZWJDb3JlOjptYXJrRE9NTm9kZVdyYXBwZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFsT2JqZWN0
OjptYXJrQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNET01HbG9iYWxPYmplY3Q6OnNl
dEluamVjdGVkU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFsT2JqZWN0Ojpp
bmplY3RlZFNjcmlwdCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFsT2JqZWN0OjpKU0RPTUdsb2JhbE9iamVj
dERhdGE6OkpTRE9NR2xvYmFsT2JqZWN0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRET01D
b25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnNldExvY2F0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpYWxvZ0hhbmRsZXI6OmRpYWxvZ0NyZWF0ZWQpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5k
b3dTaGVsbDo6SlNET01XaW5kb3dTaGVsbCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRv
d1NoZWxsOjpzZXRXaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dTaGVsbDo6
bWFya0NoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93U2hlbGw6OnVud3Jh
cHBlZE9iamVjdCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oOgor
ICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dTaGVsbDo6d2luZG93KToKKyAgICAgICAgKFdl
YkNvcmU6OkpTRE9NV2luZG93U2hlbGw6OnNldFdpbmRvdyk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVBY2NlbGVyYXRpb25PYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUm90YXRpb25S
YXRlT2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNFdmVudExpc3RlbmVyOjpKU0V2ZW50TGlzdGVuZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNFdmVudExpc3RlbmVyOjptYXJrSlNGdW5jdGlvbik6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpKU0V2
ZW50TGlzdGVuZXI6OmpzRnVuY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTERv
Y3VtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTERvY3VtZW50OjpzZXRB
bGwpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU0ltYWdlQ29uc3RydWN0b3I6OkpTSW1hZ2VDb25zdHJ1Y3Rvcik6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNJbWFnZURhdGFDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6dG9KUyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNKYXZhU2NyaXB0Q2FsbEZyYW1l
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSmF2YVNjcmlwdENhbGxGcmFtZTo6c2Nv
cGVDaGFpbik6CisgICAgICAgIChXZWJDb3JlOjpKU0phdmFTY3JpcHRDYWxsRnJhbWU6OnNjb3Bl
VHlwZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZUZpbHRlckNvbmRpdGlvbjo6bWFya0FnZ3JlZ2F0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpKU05vZGVGaWx0ZXJDb25kaXRpb246OmFjY2VwdE5vZGUpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5oOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNPcHRpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU09wdGlvbkNv
bnN0cnVjdG9yOjpKU09wdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNTUUxS
ZXN1bHRTZXRSb3dMaXN0OjppdGVtKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDYWNo
ZWRGcmFtZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q2FjaGVkRnJhbWVEYXRh
OjpyZXN0b3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0R2xvYmFsT2JqZWN0OjpzZXQpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9u
ZURlc2VyaWFsaXplcjo6cHV0UHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAqIGJyaWRnZS9xdC9xdF9ydW50aW1lLmNwcDoK
KyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlF0UnVudGltZU1ldGFNZXRob2Q6OlF0UnVudGltZU1l
dGFNZXRob2QpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UXRSdW50aW1lTWV0YU1ldGhvZDo6
bWFya0NoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlF0UnVudGltZU1ldGFNZXRo
b2Q6OmNvbm5lY3RHZXR0ZXIpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UXRSdW50aW1lTWV0
YU1ldGhvZDo6ZGlzY29ubmVjdEdldHRlcik6CisgICAgICAgICogYnJpZGdlL3F0L3F0X3J1bnRp
bWUuaDoKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9yb290LmNwcDoKKyAgICAgICAgKEpTQzo6
QmluZGluZ3M6OlJvb3RPYmplY3Q6OmludmFsaWRhdGUpOgorICAgICAgICAqIGJyaWRnZS9ydW50
aW1lX3Jvb3QuaDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKwogMjAxMS0wMS0yOCAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMg
U2VpZGVsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVu
dGltZS9Xcml0ZUJhcnJpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1
bnRpbWUvV3JpdGVCYXJyaWVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4NTdk
MmZmNjZmYjVjM2VkZDhhZGI4YjI3YTk2ODg4ZjE1YWViNGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRl
cnMvcnVudGltZS9Xcml0ZUJhcnJpZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAot
I2lmbmRlZiBXZWJDb3JlX0ZXRF9Xcml0ZUJhcnJpZXJfaAotI2RlZmluZSBXZWJDb3JlX0ZXRF9X
cml0ZUJhcnJpZXJfaAotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1dyaXRlQmFycmllci5oPgot
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDAzNTQ0YTZjYzM0Zjk4ZmIzN2FkNDY5Yjgx
NGFiNzQxMTY1NGQ3NmIuLjkzNmRjMDkzZTFmY2Q2M2QzZGNhMTM3Mjk1NDc0YjhjMzU4MTYzZmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC00NDYsNiArNDQ2LDcgQEAgX19aTjdXZWJDb3JlMTZj
cmVhdGVGdWxsTWFya3VwRVBLTlNfNVJhbmdlRQogX19aTjdXZWJDb3JlMTZlbmNsb3NpbmdJbnRS
ZWN0RVJLN19OU1JlY3QKIF9fWk43V2ViQ29yZTE2ZW5jbG9zaW5nSW50UmVjdEVSS05TXzlGbG9h
dFJlY3RFCiBfX1pON1dlYkNvcmUxNmlzRW5kT2ZQYXJhZ3JhcGhFUktOU18xNVZpc2libGVQb3Np
dGlvbkVOU18yN0VkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZUUKK19fWk43V2ViQ29yZTE2anNT
dHJpbmdTbG93Q2FzZUVQTjNKU0M5RXhlY1N0YXRlRVJOUzBfOVdlYWtHQ01hcElQTjNXVEYxMFN0
cmluZ0ltcGxFUE5TMF84SlNTdHJpbmdFRUVTNl8KIF9fWk43V2ViQ29yZTE3Q3JlZGVudGlhbFN0
b3JhZ2UzZ2V0RVJLTlNfMTVQcm90ZWN0aW9uU3BhY2VFCiBfX1pON1dlYkNvcmUxN0RPTUltcGxl
bWVudGF0aW9uMTNpc1hNTE1JTUVUeXBlRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTdE
T01JbXBsZW1lbnRhdGlvbjE0aXNUZXh0TUlNRVR5cGVFUktOM1dURjZTdHJpbmdFCkBAIC0xNDMz
LDcgKzE0MzQsNiBAQCBfX05QTl9TZXRQcm9wZXJ0eQogX19OUE5fVVRGOEZyb21JZGVudGlmaWVy
CiBfX1pON1dlYkNvcmUxNlNjcmlwdENvbnRyb2xsZXIyMHdpbmRvd1NjcmlwdE5QT2JqZWN0RXYK
IF9fWk43V2ViQ29yZTE2U2NyaXB0Q29udHJvbGxlcjI5Y2xlYW51cFNjcmlwdE9iamVjdHNGb3JQ
bHVnaW5FUHYKLV9fWk43V2ViQ29yZTE2anNTdHJpbmdTbG93Q2FzZUVQTjNKU0M5RXhlY1N0YXRl
RVJOUzBfOVdlYWtHQ01hcElQTjNXVEYxMFN0cmluZ0ltcGxFTlMwXzhKU1N0cmluZ0VFRVM2Xwog
X19aTjdXZWJDb3JlMTdIVE1MUGx1Z0luRWxlbWVudDExZ2V0TlBPYmplY3RFdgogX19aTks3V2Vi
Q29yZTEyUmVuZGVyT2JqZWN0NHZpZXdFdgogX19aTks3V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW45
Y2FuQWNjZXNzRVBLUzBfCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9E
T01XcmFwcGVyV29ybGQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVdyYXBwZXJX
b3JsZC5oCmluZGV4IDk4MjVhMDhmMzBhZDlmNWYzNTRhNDQ5YzE3Yjc2ZjRmODAwZmMyMjYuLjVl
N2I1NTEzZmU2MjY1YzljMGQ1NmZlZDIxNTY5ZjBiMGViM2U4N2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5oCkBAIC0zMiw4ICszMiw4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2NyaXB0Q29udHJvbGxlcjsKIAotdHlwZWRlZiBKU0M6
OldlYWtHQ01hcDx2b2lkKiwgRE9NT2JqZWN0PiBET01PYmplY3RXcmFwcGVyTWFwOwotdHlwZWRl
ZiBKU0M6OldlYWtHQ01hcDxTdHJpbmdJbXBsKiwgSlNDOjpKU1N0cmluZz4gSlNTdHJpbmdDYWNo
ZTsgCit0eXBlZGVmIEpTQzo6V2Vha0dDTWFwPHZvaWQqLCBET01PYmplY3QqPiBET01PYmplY3RX
cmFwcGVyTWFwOwordHlwZWRlZiBKU0M6OldlYWtHQ01hcDxTdHJpbmdJbXBsKiwgSlNDOjpKU1N0
cmluZyo+IEpTU3RyaW5nQ2FjaGU7IAogCiBjbGFzcyBET01XcmFwcGVyV29ybGQgOiBwdWJsaWMg
UmVmQ291bnRlZDxET01XcmFwcGVyV29ybGQ+IHsKIHB1YmxpYzoKQEAgLTU4LDggKzU4LDYgQEAg
cHVibGljOgogCiAgICAgYm9vbCBpc05vcm1hbCgpIGNvbnN0IHsgcmV0dXJuIG1faXNOb3JtYWw7
IH0KIAotICAgIEpTQzo6SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9nbG9iYWxEYXRhOyB9Ci0KIHByb3RlY3RlZDoKICAgICBET01XcmFwcGVyV29ybGQoSlNDOjpK
U0dsb2JhbERhdGEqLCBib29sIGlzTm9ybWFsKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQXVkaW9Db25zdHJ1Y3Rvci5jcHAKaW5kZXggYzE5ZDc5NTdkNzljNTlhODU0
OWVkNTE5NDA5MmZmMjVhZGRjOTAzNi4uMWVhNWFlNDAxZGRkMGE0NjdkMTNjODY1YmVkNzA5Njcw
NDg3MzhjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0Nv
bnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29u
c3RydWN0b3IuY3BwCkBAIC00Miw4ICs0Miw4IEBAIGNvbnN0IENsYXNzSW5mbyBKU0F1ZGlvQ29u
c3RydWN0b3I6OnNfaW5mbyA9IHsgIkF1ZGlvQ29uc3RydWN0b3IiLCAwLCAwLCAwIH07CiBKU0F1
ZGlvQ29uc3RydWN0b3I6OkpTQXVkaW9Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgOiBET01Db25zdHJ1Y3RvcldpdGhEb2N1
bWVudChKU0F1ZGlvQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShnbG9iYWxPYmplY3QtPm9i
amVjdFByb3RvdHlwZSgpKSwgZ2xvYmFsT2JqZWN0KQogewotICAgIHB1dERpcmVjdChleGVjLT5n
bG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIEpTSFRNTEF1ZGlv
RWxlbWVudFByb3RvdHlwZTo6c2VsZihleGVjLCBnbG9iYWxPYmplY3QpLCBOb25lKTsKLSAgICBw
dXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3Ro
LCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0pOworICAgIHB1
dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBKU0hUTUxBdWRpb0VsZW1l
bnRQcm90b3R5cGU6OnNlbGYoZXhlYywgZ2xvYmFsT2JqZWN0KSwgTm9uZSk7CisgICAgcHV0RGly
ZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8
IERvbnREZWxldGUgfCBEb250RW51bSk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdEF1ZGlvKEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCmluZGV4IDdkZTI3MTllNzcxZjA0MjFkMTk5
ZmRiYzcyMTc0MjRhZGM4ODIyYWUuLmU1M2RjZmI2MDFhYTJiOTJmYTFlNWIwOGY0NDY2MmY3MzQy
M2M3NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcApA
QCAtMzM1LDkgKzMzNSw5IEBAIHZvaWQgbWFya0RPTU5vZGVzRm9yRG9jdW1lbnQoTWFya1N0YWNr
JiBtYXJrU3RhY2ssIERvY3VtZW50KiBkb2N1bWVudCkKIAogICAgICAgICBKU1dyYXBwZXJDYWNo
ZTo6aXRlcmF0b3Igbm9kZUVuZCA9IG5vZGVEaWN0LT51bmNoZWNrZWRFbmQoKTsKICAgICAgICAg
Zm9yIChKU1dyYXBwZXJDYWNoZTo6aXRlcmF0b3Igbm9kZUl0ID0gbm9kZURpY3QtPnVuY2hlY2tl
ZEJlZ2luKCk7IG5vZGVJdCAhPSBub2RlRW5kOyArK25vZGVJdCkgewotICAgICAgICAgICAgRGVw
cmVjYXRlZFB0cjxKU05vZGU+JiBqc05vZGUgPSBub2RlSXQtPnNlY29uZDsKLSAgICAgICAgICAg
IGlmIChpc09ic2VydmFibGVUaHJvdWdoRE9NKGpzTm9kZS5nZXQoKSwgd29ybGQpKQotICAgICAg
ICAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJmpzTm9kZSk7CisgICAgICAgICAgICBKU05vZGUq
IGpzTm9kZSA9IG5vZGVJdC0+c2Vjb25kOworICAgICAgICAgICAgaWYgKGlzT2JzZXJ2YWJsZVRo
cm91Z2hET00oanNOb2RlLCB3b3JsZCkpCisgICAgICAgICAgICAgICAgbWFya1N0YWNrLmFwcGVu
ZChqc05vZGUpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtNDE2LDggKzQxNiw4IEBAIHZvaWQg
bWFya0RPTU9iamVjdFdyYXBwZXIoTWFya1N0YWNrJiBtYXJrU3RhY2ssIEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgdm9pZCoKICAgICAgICAgcmV0dXJuOwogCiAgICAgZm9yIChKU0dsb2JhbERh
dGFXb3JsZEl0ZXJhdG9yIHdvcmxkSXRlcigmZ2xvYmFsRGF0YSk7IHdvcmxkSXRlcjsgKyt3b3Js
ZEl0ZXIpIHsKLSAgICAgICAgaWYgKERlcHJlY2F0ZWRQdHI8RE9NT2JqZWN0Piogd3JhcHBlclNs
b3QgPSB3b3JsZEl0ZXItPm1fd3JhcHBlcnMudW5jaGVja2VkR2V0U2xvdChvYmplY3QpKQotICAg
ICAgICAgICAgbWFya1N0YWNrLmFwcGVuZCh3cmFwcGVyU2xvdCk7CisgICAgICAgIGlmIChET01P
YmplY3QqIHdyYXBwZXIgPSB3b3JsZEl0ZXItPm1fd3JhcHBlcnMudW5jaGVja2VkR2V0KG9iamVj
dCkpCisgICAgICAgICAgICBtYXJrU3RhY2suYXBwZW5kKHdyYXBwZXIpOwogICAgIH0KIH0KIApA
QCAtNDI2LDE1ICs0MjYsMTUgQEAgdm9pZCBtYXJrRE9NTm9kZVdyYXBwZXIoTWFya1N0YWNrJiBt
YXJrU3RhY2ssIERvY3VtZW50KiBkb2N1bWVudCwgTm9kZSogbm9kZSkKICAgICBpZiAoZG9jdW1l
bnQpIHsKICAgICAgICAgSlNXcmFwcGVyQ2FjaGVNYXAmIHdyYXBwZXJDYWNoZU1hcCA9IGRvY3Vt
ZW50LT53cmFwcGVyQ2FjaGVNYXAoKTsKICAgICAgICAgZm9yIChKU1dyYXBwZXJDYWNoZU1hcDo6
aXRlcmF0b3IgaXRlciA9IHdyYXBwZXJDYWNoZU1hcC5iZWdpbigpOyBpdGVyICE9IHdyYXBwZXJD
YWNoZU1hcC5lbmQoKTsgKytpdGVyKSB7Ci0gICAgICAgICAgICBpZiAoRGVwcmVjYXRlZFB0cjxK
U05vZGU+KiB3cmFwcGVyU2xvdCA9IGl0ZXItPnNlY29uZC0+dW5jaGVja2VkR2V0U2xvdChub2Rl
KSkKLSAgICAgICAgICAgICAgICBtYXJrU3RhY2suYXBwZW5kKHdyYXBwZXJTbG90KTsKKyAgICAg
ICAgICAgIGlmIChKU05vZGUqIHdyYXBwZXIgPSBpdGVyLT5zZWNvbmQtPnVuY2hlY2tlZEdldChu
b2RlKSkKKyAgICAgICAgICAgICAgICBtYXJrU3RhY2suYXBwZW5kKHdyYXBwZXIpOwogICAgICAg
ICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBmb3IgKEpTR2xvYmFsRGF0YVdvcmxk
SXRlcmF0b3Igd29ybGRJdGVyKEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKSk7IHdv
cmxkSXRlcjsgKyt3b3JsZEl0ZXIpIHsKLSAgICAgICAgaWYgKERlcHJlY2F0ZWRQdHI8RE9NT2Jq
ZWN0Piogd3JhcHBlclNsb3QgPSB3b3JsZEl0ZXItPm1fd3JhcHBlcnMudW5jaGVja2VkR2V0U2xv
dChub2RlKSkKLSAgICAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQod3JhcHBlclNsb3QpOworICAg
ICAgICBpZiAoRE9NT2JqZWN0KiB3cmFwcGVyID0gd29ybGRJdGVyLT5tX3dyYXBwZXJzLnVuY2hl
Y2tlZEdldChub2RlKSkKKyAgICAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQod3JhcHBlcik7CiAg
ICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUds
b2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9i
amVjdC5jcHAKaW5kZXggYTMyOGVlOTQ2YTg5YzY5NjdjNmNiNjhlMWU0OTRiNWE4ZjIzNzg5MC4u
ZTBiNWI4OTFkNDBiZmMwMDdiOTNhYjdiZmMxYjc2NjRjOWEzOGZlNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApAQCAtNTMsMTQgKzUz
LDE0IEBAIHZvaWQgSlNET01HbG9iYWxPYmplY3Q6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1h
cmtTdGFjaykKIAogICAgIEpTRE9NU3RydWN0dXJlTWFwOjppdGVyYXRvciBlbmQgPSBzdHJ1Y3R1
cmVzKCkuZW5kKCk7CiAgICAgZm9yIChKU0RPTVN0cnVjdHVyZU1hcDo6aXRlcmF0b3IgaXQgPSBz
dHJ1Y3R1cmVzKCkuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBtYXJrU3RhY2su
YXBwZW5kKGl0LT5zZWNvbmQtPnN0b3JlZFByb3RvdHlwZVNsb3QoKSk7CisgICAgICAgIG1hcmtT
dGFjay5hcHBlbmQoaXQtPnNlY29uZC0+c3RvcmVkUHJvdG90eXBlKCkpOwogCiAgICAgSlNET01D
b25zdHJ1Y3Rvck1hcDo6aXRlcmF0b3IgZW5kMiA9IGNvbnN0cnVjdG9ycygpLmVuZCgpOwogICAg
IGZvciAoSlNET01Db25zdHJ1Y3Rvck1hcDo6aXRlcmF0b3IgaXQyID0gY29uc3RydWN0b3JzKCku
YmVnaW4oKTsgaXQyICE9IGVuZDI7ICsraXQyKQotICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZp
dDItPnNlY29uZCk7CisgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoaXQyLT5zZWNvbmQpOwogCiAg
ICAgaWYgKGQoKS0+bV9pbmplY3RlZFNjcmlwdCkKLSAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgm
ZCgpLT5tX2luamVjdGVkU2NyaXB0KTsKKyAgICAgICAgbWFya1N0YWNrLmFwcGVuZChkKCktPm1f
aW5qZWN0ZWRTY3JpcHQpOwogfQogCiB2b2lkIEpTRE9NR2xvYmFsT2JqZWN0OjpzZXRDdXJyZW50
RXZlbnQoRXZlbnQqIGV2dCkKQEAgLTc1LDEyICs3NSwxMiBAQCBFdmVudCogSlNET01HbG9iYWxP
YmplY3Q6OmN1cnJlbnRFdmVudCgpIGNvbnN0CiAKIHZvaWQgSlNET01HbG9iYWxPYmplY3Q6OnNl
dEluamVjdGVkU2NyaXB0KEpTT2JqZWN0KiBpbmplY3RlZFNjcmlwdCkKIHsKLSAgICBkKCktPm1f
aW5qZWN0ZWRTY3JpcHQuc2V0KGdsb2JhbERhdGEoKSwgdGhpcywgaW5qZWN0ZWRTY3JpcHQpOwor
ICAgIGQoKS0+bV9pbmplY3RlZFNjcmlwdCA9IGluamVjdGVkU2NyaXB0OwogfQogCiBKU09iamVj
dCogSlNET01HbG9iYWxPYmplY3Q6OmluamVjdGVkU2NyaXB0KCkgY29uc3QKIHsKLSAgICByZXR1
cm4gZCgpLT5tX2luamVjdGVkU2NyaXB0LmdldCgpOworICAgIHJldHVybiBkKCktPm1faW5qZWN0
ZWRTY3JpcHQ7CiB9CiAKIHZvaWQgSlNET01HbG9iYWxPYmplY3Q6OmRlc3Ryb3lKU0RPTUdsb2Jh
bE9iamVjdERhdGEodm9pZCoganNET01HbG9iYWxPYmplY3REYXRhKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKaW5kZXggNGRjZTdhNTE1YzNkYmEy
MzMwNWFmNDQ2YjczN2E2NmRkOThmZjBhNC4uOGViNTVjMTQ4NDdjYmU5N2Q0MTgyNDJiMzdmYjc0
ZDQzN2Q1Y2U3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01H
bG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2Jh
bE9iamVjdC5oCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFz
cyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IEpT
Qzo6Q2xhc3NJbmZvKiwgUmVmUHRyPEpTQzo6U3RydWN0dXJlPiA+IEpTRE9NU3RydWN0dXJlTWFw
OwotICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBKU0M6OkNsYXNzSW5mbyosIEpTQzo6V3JpdGVC
YXJyaWVyPEpTQzo6SlNPYmplY3Q+ID4gSlNET01Db25zdHJ1Y3Rvck1hcDsKKyAgICB0eXBlZGVm
IEhhc2hNYXA8Y29uc3QgSlNDOjpDbGFzc0luZm8qLCBKU0M6OkpTT2JqZWN0Kj4gSlNET01Db25z
dHJ1Y3Rvck1hcDsKIAogICAgIGNsYXNzIEpTRE9NR2xvYmFsT2JqZWN0IDogcHVibGljIEpTQzo6
SlNHbG9iYWxPYmplY3QgewogICAgICAgICB0eXBlZGVmIEpTQzo6SlNHbG9iYWxPYmplY3QgQmFz
ZTsKQEAgLTc2LDYgKzc2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgICAg
IDogSlNHbG9iYWxPYmplY3REYXRhKGRlc3RydWN0b3IpCiAgICAgICAgICAgICAgICAgLCBldnQo
MCkKICAgICAgICAgICAgICAgICAsIG1fd29ybGQod29ybGQpCisgICAgICAgICAgICAgICAgLCBt
X2luamVjdGVkU2NyaXB0KDApCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICB9CiAKQEAgLTg0
LDcgKzg1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgICAgICBFdmVudCogZXZ0
OwogICAgICAgICAgICAgUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4gbV93b3JsZDsKLSAgICAgICAg
ICAgIEpTQzo6V3JpdGVCYXJyaWVyPEpTT2JqZWN0PiBtX2luamVjdGVkU2NyaXB0OworICAgICAg
ICAgICAgSlNPYmplY3QqIG1faW5qZWN0ZWRTY3JpcHQ7CiAgICAgICAgIH07CiAKICAgICBwcml2
YXRlOgpAQCAtOTYsMTIgKzk3LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICB0ZW1wbGF0
ZTxjbGFzcyBDb25zdHJ1Y3RvckNsYXNzPgogICAgIGlubGluZSBKU0M6OkpTT2JqZWN0KiBnZXRE
T01Db25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKICAgICB7Ci0gICAgICAgIGlmIChKU0M6OkpTT2JqZWN0KiBjb25z
dHJ1Y3RvciA9IGdsb2JhbE9iamVjdC0+Y29uc3RydWN0b3JzKCkuZ2V0KCZDb25zdHJ1Y3RvckNs
YXNzOjpzX2luZm8pLmdldCgpKQorICAgICAgICBpZiAoSlNDOjpKU09iamVjdCogY29uc3RydWN0
b3IgPSBnbG9iYWxPYmplY3QtPmNvbnN0cnVjdG9ycygpLmdldCgmQ29uc3RydWN0b3JDbGFzczo6
c19pbmZvKSkKICAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICAgICAgSlNDOjpK
U09iamVjdCogY29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIENvbnN0cnVjdG9yQ2xhc3MoZXhlYywg
Y29uc3RfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogICAgICAgICBB
U1NFUlQoIWdsb2JhbE9iamVjdC0+Y29uc3RydWN0b3JzKCkuY29udGFpbnMoJkNvbnN0cnVjdG9y
Q2xhc3M6OnNfaW5mbykpOwotICAgICAgICBKU0M6OldyaXRlQmFycmllcjxKU0M6OkpTT2JqZWN0
PiB0ZW1wOwotICAgICAgICBnbG9iYWxPYmplY3QtPmNvbnN0cnVjdG9ycygpLmFkZCgmQ29uc3Ry
dWN0b3JDbGFzczo6c19pbmZvLCB0ZW1wKS5maXJzdC0+c2Vjb25kLnNldChleGVjLT5nbG9iYWxE
YXRhKCksIGdsb2JhbE9iamVjdCwgY29uc3RydWN0b3IpOworICAgICAgICBnbG9iYWxPYmplY3Qt
PmNvbnN0cnVjdG9ycygpLnNldCgmQ29uc3RydWN0b3JDbGFzczo6c19pbmZvLCBjb25zdHJ1Y3Rv
cik7CiAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCAyNWY5NWZhNmIx
ZDVjZWQzZmU2Zjk2Y2QyODIyZGFkNWJlZGRmYTRiLi42YWZiZGJlYjEwODhjMjU2ZGUwZWQwOTkx
MTVjN2UxNGFlNzJhNjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dDdXN0b20uY3BwCkBAIC00NzUsNyArNDc1LDcgQEAgdm9pZCBKU0RPTVdpbmRvdzo6
c2V0TG9jYXRpb24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICBpZiAo
U2V0dGluZ3MqIHNldHRpbmdzID0gYWN0aXZlRnJhbWUtPnNldHRpbmdzKCkpIHsKICAgICAgICAg
ICAgIGlmIChzZXR0aW5ncy0+dXNlc0Rhc2hib2FyZEJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUo
KSAmJiAhYWN0aXZlRnJhbWUtPnRyZWUoKS0+cGFyZW50KCkpIHsKICAgICAgICAgICAgICAgICBp
ZiAoYWxsb3dzQWNjZXNzRnJvbShleGVjKSkKLSAgICAgICAgICAgICAgICAgICAgcHV0RGlyZWN0
KGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAibG9jYXRpb24iKSwgdmFsdWUp
OworICAgICAgICAgICAgICAgICAgICBwdXREaXJlY3QoSWRlbnRpZmllcihleGVjLCAibG9jYXRp
b24iKSwgdmFsdWUpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQpAQCAtNjgyLDcgKzY4Miw3IEBAIGlubGluZSB2b2lkIERpYWxvZ0hhbmRsZXI6OmRp
YWxvZ0NyZWF0ZWQoRE9NV2luZG93KiBkaWFsb2cpCiAgICAgLy8gICAgICAgIHdvcmxkIGlmIGRp
YWxvZ0FyZ3VtZW50cyBjb21lcyBmcm9tIGFuIGlzb2xhdGVkIHdvcmxkLgogICAgIG1fZ2xvYmFs
T2JqZWN0ID0gdG9KU0RPTVdpbmRvdyhkaWFsb2ctPmZyYW1lKCksIG5vcm1hbFdvcmxkKG1fZXhl
Yy0+Z2xvYmFsRGF0YSgpKSk7CiAgICAgaWYgKEpTVmFsdWUgZGlhbG9nQXJndW1lbnRzID0gbV9l
eGVjLT5hcmd1bWVudCgxKSkKLSAgICAgICAgbV9nbG9iYWxPYmplY3QtPnB1dERpcmVjdChtX2V4
ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihtX2V4ZWMsICJkaWFsb2dBcmd1bWVudHMiKSwg
ZGlhbG9nQXJndW1lbnRzKTsKKyAgICAgICAgbV9nbG9iYWxPYmplY3QtPnB1dERpcmVjdChJZGVu
dGlmaWVyKG1fZXhlYywgImRpYWxvZ0FyZ3VtZW50cyIpLCBkaWFsb2dBcmd1bWVudHMpOwogfQog
CiBpbmxpbmUgSlNWYWx1ZSBEaWFsb2dIYW5kbGVyOjpyZXR1cm5WYWx1ZSgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwCmluZGV4IGIz
ZTBiODhlN2NkMjRmMWY4OTY3ZWM0NDI5YzkwM2Y1MGM3MjRjMzguLjY1MDk2YjkzYzA2ZDgzN2E0
MTRhZDdhODNmYjZhNjE5ZDIxN2ZhZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93U2hlbGwuY3BwCkBAIC00NSw2ICs0NSw3IEBAIGNvbnN0IENsYXNzSW5m
byBKU0RPTVdpbmRvd1NoZWxsOjpzX2luZm8gPSB7ICJKU0RPTVdpbmRvd1NoZWxsIiwgMCwgMCwg
MCB9OwogCiBKU0RPTVdpbmRvd1NoZWxsOjpKU0RPTVdpbmRvd1NoZWxsKFBhc3NSZWZQdHI8RE9N
V2luZG93PiB3aW5kb3csIERPTVdyYXBwZXJXb3JsZCogd29ybGQpCiAgICAgOiBCYXNlKEpTRE9N
V2luZG93U2hlbGw6OmNyZWF0ZVN0cnVjdHVyZShqc051bGwoKSkpCisgICAgLCBtX3dpbmRvdygw
KQogICAgICwgbV93b3JsZCh3b3JsZCkKIHsKICAgICBzZXRXaW5kb3cod2luZG93KTsKQEAgLTY1
LDcgKzY2LDcgQEAgdm9pZCBKU0RPTVdpbmRvd1NoZWxsOjpzZXRXaW5kb3coUGFzc1JlZlB0cjxE
T01XaW5kb3c+IGRvbVdpbmRvdykKICAgICBSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUgPSBK
U0RPTVdpbmRvdzo6Y3JlYXRlU3RydWN0dXJlKHByb3RvdHlwZSk7CiAgICAgSlNET01XaW5kb3cq
IGpzRE9NV2luZG93ID0gbmV3IChKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCkpIEpT
RE9NV2luZG93KHN0cnVjdHVyZS5yZWxlYXNlKCksIGRvbVdpbmRvdywgdGhpcyk7CiAgICAgcHJv
dG90eXBlLT5wdXRBbm9ueW1vdXNWYWx1ZSgwLCBqc0RPTVdpbmRvdyk7Ci0gICAgc2V0V2luZG93
KCpKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCksIGpzRE9NV2luZG93KTsKKyAgICBz
ZXRXaW5kb3coanNET01XaW5kb3cpOwogfQogCiAvLyAtLS0tCkBAIC03Niw3ICs3Nyw3IEBAIHZv
aWQgSlNET01XaW5kb3dTaGVsbDo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQog
ewogICAgIEJhc2U6Om1hcmtDaGlsZHJlbihtYXJrU3RhY2spOwogICAgIGlmIChtX3dpbmRvdykK
LSAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmbV93aW5kb3cpOworICAgICAgICBtYXJrU3RhY2su
YXBwZW5kKG1fd2luZG93KTsKIH0KIAogVVN0cmluZyBKU0RPTVdpbmRvd1NoZWxsOjpjbGFzc05h
bWUoKSBjb25zdApAQCAtMTQ2LDcgKzE0Nyw3IEBAIEpTVmFsdWUgSlNET01XaW5kb3dTaGVsbDo6
bG9va3VwU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVyCiAK
IEpTT2JqZWN0KiBKU0RPTVdpbmRvd1NoZWxsOjp1bndyYXBwZWRPYmplY3QoKQogewotICAgIHJl
dHVybiBtX3dpbmRvdy5nZXQoKTsKKyAgICByZXR1cm4gbV93aW5kb3c7CiB9CiAKIC8vIC0tLS0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaAppbmRleCBk
NTg1ZmQ0OTNlMTljZmIwNWNmMTE3NzZjZGMyZDFjNTI4ZTdlZWI5Li44ODgzMjVkMDNmY2M4ZjM0
YzllMzNhYTI1ZmFhZDAzMzI1NDgzZjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dTaGVsbC5oCkBAIC00MywxMSArNDMsMTEgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBKU0RPTVdpbmRvd1NoZWxsKFBhc3NSZWZQdHI8RE9NV2luZG93PiwgRE9N
V3JhcHBlcldvcmxkKiB3b3JsZCk7CiAgICAgICAgIHZpcnR1YWwgfkpTRE9NV2luZG93U2hlbGwo
KTsKIAotICAgICAgICBKU0RPTVdpbmRvdyogd2luZG93KCkgY29uc3QgeyByZXR1cm4gbV93aW5k
b3cuZ2V0KCk7IH0KLSAgICAgICAgdm9pZCBzZXRXaW5kb3coSlNDOjpKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIEpTRE9NV2luZG93KiB3aW5kb3cpCisgICAgICAgIEpTRE9NV2luZG93KiB3aW5k
b3coKSBjb25zdCB7IHJldHVybiBtX3dpbmRvdzsgfQorICAgICAgICB2b2lkIHNldFdpbmRvdyhK
U0RPTVdpbmRvdyogd2luZG93KQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlRfQVJHKHdp
bmRvdywgd2luZG93KTsKLSAgICAgICAgICAgIG1fd2luZG93LnNldChnbG9iYWxEYXRhLCB0aGlz
LCB3aW5kb3cpOworICAgICAgICAgICAgbV93aW5kb3cgPSB3aW5kb3c7CiAgICAgICAgICAgICBz
ZXRQcm90b3R5cGUod2luZG93LT5wcm90b3R5cGUoKSk7CiAgICAgICAgIH0KICAgICAgICAgdm9p
ZCBzZXRXaW5kb3coUGFzc1JlZlB0cjxET01XaW5kb3c+KTsKQEAgLTg1LDcgKzg1LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIEpTQzo6SlNPYmplY3QqIHVud3JhcHBl
ZE9iamVjdCgpOwogICAgICAgICB2aXJ0dWFsIGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiBjbGFzc0lu
Zm8oKSBjb25zdCB7IHJldHVybiAmc19pbmZvOyB9CiAKLSAgICAgICAgSlNDOjpXcml0ZUJhcnJp
ZXI8SlNET01XaW5kb3c+IG1fd2luZG93OworICAgICAgICBKU0RPTVdpbmRvdyogbV93aW5kb3c7
CiAgICAgICAgIFJlZlB0cjxET01XcmFwcGVyV29ybGQ+IG1fd29ybGQ7CiAgICAgfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VNb3Rpb25FdmVudEN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU1vdGlvbkV2ZW50
Q3VzdG9tLmNwcAppbmRleCA5MTQyYWEyZjMxMGJkOWZjMjlmM2JkMWQ4NTI5MzFlM2RlYzc5MTcy
Li41MDNkNjRmNmIxYjZhYTY1OWM2ZTkzNzhhN2QwZDc3NzYzMzA0MjI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9t
LmNwcApAQCAtMTE0LDE4ICsxMTQsMTggQEAgc3RhdGljIFBhc3NSZWZQdHI8RGV2aWNlTW90aW9u
RGF0YTo6Um90YXRpb25SYXRlPiByZWFkUm90YXRpb25SYXRlQXJndW1lbnQoSlNWYWwKIHN0YXRp
YyBKU09iamVjdCogY3JlYXRlQWNjZWxlcmF0aW9uT2JqZWN0KGNvbnN0IERldmljZU1vdGlvbkRh
dGE6OkFjY2VsZXJhdGlvbiogYWNjZWxlcmF0aW9uLCBFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAg
SlNPYmplY3QqIG9iamVjdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOwotICAgIG9iamVj
dC0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAieCIpLCBh
Y2NlbGVyYXRpb24tPmNhblByb3ZpZGVYKCkgPyBqc051bWJlcihhY2NlbGVyYXRpb24tPngoKSkg
OiBqc051bGwoKSk7Ci0gICAgb2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBJ
ZGVudGlmaWVyKGV4ZWMsICJ5IiksIGFjY2VsZXJhdGlvbi0+Y2FuUHJvdmlkZVkoKSA/IGpzTnVt
YmVyKGFjY2VsZXJhdGlvbi0+eSgpKSA6IGpzTnVsbCgpKTsKLSAgICBvYmplY3QtPnB1dERpcmVj
dChleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgInoiKSwgYWNjZWxlcmF0aW9u
LT5jYW5Qcm92aWRlWigpID8ganNOdW1iZXIoYWNjZWxlcmF0aW9uLT56KCkpIDoganNOdWxsKCkp
OworICAgIG9iamVjdC0+cHV0RGlyZWN0KElkZW50aWZpZXIoZXhlYywgIngiKSwgYWNjZWxlcmF0
aW9uLT5jYW5Qcm92aWRlWCgpID8ganNOdW1iZXIoYWNjZWxlcmF0aW9uLT54KCkpIDoganNOdWxs
KCkpOworICAgIG9iamVjdC0+cHV0RGlyZWN0KElkZW50aWZpZXIoZXhlYywgInkiKSwgYWNjZWxl
cmF0aW9uLT5jYW5Qcm92aWRlWSgpID8ganNOdW1iZXIoYWNjZWxlcmF0aW9uLT55KCkpIDoganNO
dWxsKCkpOworICAgIG9iamVjdC0+cHV0RGlyZWN0KElkZW50aWZpZXIoZXhlYywgInoiKSwgYWNj
ZWxlcmF0aW9uLT5jYW5Qcm92aWRlWigpID8ganNOdW1iZXIoYWNjZWxlcmF0aW9uLT56KCkpIDog
anNOdWxsKCkpOwogICAgIHJldHVybiBvYmplY3Q7CiB9CiAKIHN0YXRpYyBKU09iamVjdCogY3Jl
YXRlUm90YXRpb25SYXRlT2JqZWN0KGNvbnN0IERldmljZU1vdGlvbkRhdGE6OlJvdGF0aW9uUmF0
ZSogcm90YXRpb25SYXRlLCBFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNPYmplY3QqIG9iamVj
dCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOwotICAgIG9iamVjdC0+cHV0RGlyZWN0KGV4
ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAiYWxwaGEiKSwgcm90YXRpb25SYXRl
LT5jYW5Qcm92aWRlQWxwaGEoKSA/IGpzTnVtYmVyKHJvdGF0aW9uUmF0ZS0+YWxwaGEoKSkgOiBq
c051bGwoKSk7Ci0gICAgb2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVu
dGlmaWVyKGV4ZWMsICJiZXRhIiksICByb3RhdGlvblJhdGUtPmNhblByb3ZpZGVCZXRhKCkgID8g
anNOdW1iZXIocm90YXRpb25SYXRlLT5iZXRhKCkpICA6IGpzTnVsbCgpKTsKLSAgICBvYmplY3Qt
PnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgImdhbW1hIiks
IHJvdGF0aW9uUmF0ZS0+Y2FuUHJvdmlkZUdhbW1hKCkgPyBqc051bWJlcihyb3RhdGlvblJhdGUt
PmdhbW1hKCkpIDoganNOdWxsKCkpOworICAgIG9iamVjdC0+cHV0RGlyZWN0KElkZW50aWZpZXIo
ZXhlYywgImFscGhhIiksIHJvdGF0aW9uUmF0ZS0+Y2FuUHJvdmlkZUFscGhhKCkgPyBqc051bWJl
cihyb3RhdGlvblJhdGUtPmFscGhhKCkpIDoganNOdWxsKCkpOworICAgIG9iamVjdC0+cHV0RGly
ZWN0KElkZW50aWZpZXIoZXhlYywgImJldGEiKSwgIHJvdGF0aW9uUmF0ZS0+Y2FuUHJvdmlkZUJl
dGEoKSAgPyBqc051bWJlcihyb3RhdGlvblJhdGUtPmJldGEoKSkgIDoganNOdWxsKCkpOworICAg
IG9iamVjdC0+cHV0RGlyZWN0KElkZW50aWZpZXIoZXhlYywgImdhbW1hIiksIHJvdGF0aW9uUmF0
ZS0+Y2FuUHJvdmlkZUdhbW1hKCkgPyBqc051bWJlcihyb3RhdGlvblJhdGUtPmdhbW1hKCkpIDog
anNOdWxsKCkpOwogICAgIHJldHVybiBvYmplY3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCmluZGV4IDY0Mjc2ODNmNDJlNjM0OGI2YjNm
YmI3ZTMxMGM4MGZiYTZkYWRkOTguLjU2MDQzNzRjMmYzZDdhZGRlY2I1N2M4NjI3MzM4YzYzNTVm
YjJkNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0
ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVy
LmNwcApAQCAtMzQsMTIgKzM0LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSlNFdmVudExp
c3RlbmVyOjpKU0V2ZW50TGlzdGVuZXIoSlNPYmplY3QqIGZ1bmN0aW9uLCBKU09iamVjdCogd3Jh
cHBlciwgYm9vbCBpc0F0dHJpYnV0ZSwgRE9NV3JhcHBlcldvcmxkKiBpc29sYXRlZFdvcmxkKQog
ICAgIDogRXZlbnRMaXN0ZW5lcihKU0V2ZW50TGlzdGVuZXJUeXBlKQorICAgICwgbV9qc0Z1bmN0
aW9uKGZ1bmN0aW9uKQogICAgICwgbV9pc0F0dHJpYnV0ZShpc0F0dHJpYnV0ZSkKICAgICAsIG1f
aXNvbGF0ZWRXb3JsZChpc29sYXRlZFdvcmxkKQogewogICAgIGlmICh3cmFwcGVyKQogICAgICAg
ICBtX3dyYXBwZXIgPSB3cmFwcGVyOwotICAgIG1fanNGdW5jdGlvbi5zZXQoKm1faXNvbGF0ZWRX
b3JsZC0+Z2xvYmFsRGF0YSgpLCB3cmFwcGVyLCBmdW5jdGlvbik7CiB9CiAKIEpTRXZlbnRMaXN0
ZW5lcjo6fkpTRXZlbnRMaXN0ZW5lcigpCkBAIC01NSw3ICs1NSw3IEBAIEpTT2JqZWN0KiBKU0V2
ZW50TGlzdGVuZXI6OmluaXRpYWxpemVKU0Z1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
KSBjb25zdAogdm9pZCBKU0V2ZW50TGlzdGVuZXI6Om1hcmtKU0Z1bmN0aW9uKE1hcmtTdGFjayYg
bWFya1N0YWNrKQogewogICAgIGlmIChtX2pzRnVuY3Rpb24pCi0gICAgICAgIG1hcmtTdGFjay5h
cHBlbmQoJm1fanNGdW5jdGlvbik7CisgICAgICAgIG1hcmtTdGFjay5hcHBlbmQobV9qc0Z1bmN0
aW9uKTsKIH0KIAogdm9pZCBKU0V2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEV2ZW50KiBldmVudCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmgKaW5kZXggNDdmZjQ0ZWM3
NmUyMzgxMjNkZTJiYTM3NWY2NTAxMzMxYTA3YTYwYi4uODNkMGQyZWU5YjhjY2ZkYzRhMDA4MTIx
YzU2YTJhNzY4MTk5MGY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNFdmVudExpc3RlbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVu
dExpc3RlbmVyLmgKQEAgLTY2LDcgKzY2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50
Kik7CiAKICAgICBwcml2YXRlOgotICAgICAgICBtdXRhYmxlIEpTQzo6V3JpdGVCYXJyaWVyPEpT
Qzo6SlNPYmplY3Q+IG1fanNGdW5jdGlvbjsKKyAgICAgICAgbXV0YWJsZSBKU0M6OkpTT2JqZWN0
KiBtX2pzRnVuY3Rpb247CiAgICAgICAgIG11dGFibGUgSlNDOjpXZWFrR0NQdHI8SlNDOjpKU09i
amVjdD4gbV93cmFwcGVyOwogCiAgICAgICAgIGJvb2wgbV9pc0F0dHJpYnV0ZTsKQEAgLTc2LDcg
Kzc2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGlubGluZSBKU0M6OkpTT2JqZWN0KiBK
U0V2ZW50TGlzdGVuZXI6OmpzRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmICghbV9qc0Z1bmN0aW9u
KQotICAgICAgICAgICAgbV9qc0Z1bmN0aW9uLnNldCgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+
Z2xvYmFsRGF0YSgpLCBtX3dyYXBwZXIuZ2V0KCksIGluaXRpYWxpemVKU0Z1bmN0aW9uKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQpKTsKKyAgICAgICAgICAgIG1fanNGdW5jdGlvbiA9IGluaXRpYWxp
emVKU0Z1bmN0aW9uKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogCiAgICAgICAgIC8vIFZlcmlm
eSB0aGF0IHdlIGhhdmUgYSB2YWxpZCB3cmFwcGVyIHByb3RlY3Rpbmcgb3VyIGZ1bmN0aW9uIGZy
b20KICAgICAgICAgLy8gZ2FyYmFnZSBjb2xsZWN0aW9uLgpAQCAtODYsOSArODYsOSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgLy8gVHJ5IHRvIHZlcmlmeSB0aGF0IG1fanNGdW5j
dGlvbiB3YXNuJ3QgcmVjeWNsZWQuIChOb3QgZXhhY3QsIHNpbmNlIGFuCiAgICAgICAgIC8vIGV2
ZW50IGxpc3RlbmVyIGNhbiBiZSBhbG1vc3QgYW55dGhpbmcsIGJ1dCB0aGlzIG1ha2VzIHRlc3Qt
d3JpdGluZyBlYXNpZXIpLgotICAgICAgICBBU1NFUlQoIW1fanNGdW5jdGlvbiB8fCBzdGF0aWNf
Y2FzdDxKU0M6OkpTQ2VsbCo+KG1fanNGdW5jdGlvbi5nZXQoKSktPmlzT2JqZWN0KCkpOworICAg
ICAgICBBU1NFUlQoIW1fanNGdW5jdGlvbiB8fCBzdGF0aWNfY2FzdDxKU0M6OkpTQ2VsbCo+KG1f
anNGdW5jdGlvbiktPmlzT2JqZWN0KCkpOwogCi0gICAgICAgIHJldHVybiBtX2pzRnVuY3Rpb24u
Z2V0KCk7CisgICAgICAgIHJldHVybiBtX2pzRnVuY3Rpb247CiAgICAgfQogCiAgICAgaW5saW5l
IHZvaWQgSlNFdmVudExpc3RlbmVyOjppbnZhbGlkYXRlSlNGdW5jdGlvbihKU0M6OkpTT2JqZWN0
KiB3cmFwcGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1M
RG9jdW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRG9j
dW1lbnRDdXN0b20uY3BwCmluZGV4IDI4MTdhZTY5M2YwOGFhNGJlMTUzNmJhNzIyMTlmMjJjYjE0
ZjUzNTMuLjBiNDBlZjA0NGQ1Y2FkZGYyM2U5OWQ0MDM3YTc3NjAzOTIyZGFkYzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAK
QEAgLTk2LDcgKzk2LDcgQEAgSlNWYWx1ZSBKU0hUTUxEb2N1bWVudDo6YWxsKEV4ZWNTdGF0ZSog
ZXhlYykgY29uc3QKIHZvaWQgSlNIVE1MRG9jdW1lbnQ6OnNldEFsbChFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgLy8gQWRkICJhbGwiIHRvIHRoZSBwcm9wZXJ0eSBtYXAu
Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAiYWxs
IiksIHZhbHVlKTsKKyAgICBwdXREaXJlY3QoSWRlbnRpZmllcihleGVjLCAiYWxsIiksIHZhbHVl
KTsKIH0KIAogLy8gQ3VzdG9tIGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNTE5MmUxMmUyYTQ3MjlmMTA2MzNl
MzU0YzlhNTAzNTRmMTRiYTY2ZS4uZjJhZDgwMzcyZDAzZmFmYTdmZmQwZWZhZDcxZjQyOTgzN2Fl
NWQwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0
cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3Ry
dWN0b3IuY3BwCkBAIC0zNyw3ICszNyw3IEBAIGNvbnN0IENsYXNzSW5mbyBKU0ltYWdlQ29uc3Ry
dWN0b3I6OnNfaW5mbyA9IHsgIkltYWdlQ29uc3RydWN0b3IiLCAwLCAwLCAwIH07CiBKU0ltYWdl
Q29uc3RydWN0b3I6OkpTSW1hZ2VDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgOiBET01Db25zdHJ1Y3RvcldpdGhEb2N1bWVu
dChKU0ltYWdlQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShnbG9iYWxPYmplY3QtPm9iamVj
dFByb3RvdHlwZSgpKSwgZ2xvYmFsT2JqZWN0KQogewotICAgIHB1dERpcmVjdChleGVjLT5nbG9i
YWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIEpTSFRNTEltYWdlRWxl
bWVudFByb3RvdHlwZTo6c2VsZihleGVjLCBnbG9iYWxPYmplY3QpLCBOb25lKTsKKyAgICBwdXRE
aXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgSlNIVE1MSW1hZ2VFbGVtZW50
UHJvdG90eXBlOjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCksIE5vbmUpOwogfQogCiBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbWFnZShFeGVjU3RhdGUqIGV4
ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlRGF0YUN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlRGF0YUN1c3RvbS5j
cHAKaW5kZXggODc4ZTFkZWVhNjBhOTYwMzk4NzRjOTU2NjAzMTc1ZmQ0ZTA1MDFmZS4uNjFjNTEx
MjhlNDhkOTQyNjYwMDg1MTcwYzc3MjkzMjQzM2YzNzM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZURhdGFDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNwcApAQCAtNDksNyArNDksNyBAQCBK
U1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBJbWFnZURhdGEqIGltYWdlRAogICAgIElkZW50aWZpZXIgZGF0YU5hbWUoZXhlYywgImRh
dGEiKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFJlZlB0cjxTdHJ1Y3R1cmU+LCBjcGFTdHJ1
Y3R1cmUsIChKU0J5dGVBcnJheTo6Y3JlYXRlU3RydWN0dXJlKGpzTnVsbCgpKSkpOwogICAgIHN0
YXRpYyBjb25zdCBDbGFzc0luZm8gY3BhQ2xhc3NJbmZvID0geyAiQ2FudmFzUGl4ZWxBcnJheSIs
IDAsIDAsIDAgfTsKLSAgICB3cmFwcGVyLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBk
YXRhTmFtZSwgbmV3IChleGVjKSBKU0J5dGVBcnJheShleGVjLCBjcGFTdHJ1Y3R1cmUsIGltYWdl
RGF0YS0+ZGF0YSgpLT5kYXRhKCksICZjcGFDbGFzc0luZm8pLCBEb250RGVsZXRlIHwgUmVhZE9u
bHkpOworICAgIHdyYXBwZXItPnB1dERpcmVjdChkYXRhTmFtZSwgbmV3IChleGVjKSBKU0J5dGVB
cnJheShleGVjLCBjcGFTdHJ1Y3R1cmUsIGltYWdlRGF0YS0+ZGF0YSgpLT5kYXRhKCksICZjcGFD
bGFzc0luZm8pLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogICAgIGV4ZWMtPmhlYXAoKS0+cmVw
b3J0RXh0cmFNZW1vcnlDb3N0KGltYWdlRGF0YS0+ZGF0YSgpLT5sZW5ndGgoKSk7CiAgICAgCiAg
ICAgcmV0dXJuIHdyYXBwZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0phdmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNwcAppbmRleCA3YzAwYmQ0M2FjM2Yx
NDdkNWQwODI4ZGQyMDkyNTk1ODVlNTBmNTI4Li4wZjQ3YjdiMjMyMjk3MGZlNzAzOTAzNzZhYzAz
MjA3ZDlmMDJjMzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ph
dmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgSlNW
YWx1ZSBKU0phdmFTY3JpcHRDYWxsRnJhbWU6OnNjb3BlQ2hhaW4oRXhlY1N0YXRlKiBleGVjKSBj
b25zdAogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgbGlzdDsKICAgICBkbyB7Ci0gICAgICAg
IGxpc3QuYXBwZW5kKGl0ZXItPmdldCgpKTsKKyAgICAgICAgbGlzdC5hcHBlbmQoKml0ZXIpOwog
ICAgICAgICArK2l0ZXI7CiAgICAgfSB3aGlsZSAoaXRlciAhPSBlbmQpOwogCkBAIC0xMDAsNyAr
MTAwLDcgQEAgSlNWYWx1ZSBKU0phdmFTY3JpcHRDYWxsRnJhbWU6OnNjb3BlVHlwZShFeGVjU3Rh
dGUqIGV4ZWMpCiAKICAgICBib29sIGZvdW5kTG9jYWxTY29wZSA9IGZhbHNlOwogICAgIGZvciAo
U2NvcGVDaGFpbkl0ZXJhdG9yIGl0ZXIgPSBzY29wZUNoYWluLT5iZWdpbigpOyBpdGVyICE9IGVu
ZDsgKytpdGVyKSB7Ci0gICAgICAgIEpTQzo6RGVwcmVjYXRlZFB0cjxKU09iamVjdD4gc2NvcGUg
PSAqaXRlcjsKKyAgICAgICAgSlNPYmplY3QqIHNjb3BlID0gKml0ZXI7CiAgICAgICAgIGlmIChz
Y29wZS0+aXNBY3RpdmF0aW9uT2JqZWN0KCkpIHsKICAgICAgICAgICAgIGlmICghZm91bmRMb2Nh
bFNjb3BlKSB7CiAgICAgICAgICAgICAgICAgLy8gRmlyc3QgYWN0aXZhdGlvbiBvYmplY3QgaXMg
bG9jYWwgc2NvcGUsIGVhY2ggc3VjY2Vzc2l2ZSBhY3RpdmF0aW9uIG9iamVjdCBpcyBjbG9zdXJl
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ29u
ZGl0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRp
dGlvbi5jcHAKaW5kZXggMWNmNzJhNWJjMjE2OGM0OGI2Y2U2ODZhNTBlZmE5Y2Y2MzFkZTljYS4u
YjI2OWU1ZmE1OTE4OTk4ZDc4MGU5ZWQwZWEyMzJjOGY3NzlmZGI2MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24uY3BwCkBAIC0z
OSwxNCArMzksMTQgQEAgSlNOb2RlRmlsdGVyQ29uZGl0aW9uOjpKU05vZGVGaWx0ZXJDb25kaXRp
b24oSlNWYWx1ZSBmaWx0ZXIpCiAKIHZvaWQgSlNOb2RlRmlsdGVyQ29uZGl0aW9uOjptYXJrQWdn
cmVnYXRlKE1hcmtTdGFjayYgbWFya1N0YWNrKQogewotICAgIG1hcmtTdGFjay5hcHBlbmQoJm1f
ZmlsdGVyKTsKKyAgICBtYXJrU3RhY2suYXBwZW5kKG1fZmlsdGVyKTsKIH0KIAogc2hvcnQgSlNO
b2RlRmlsdGVyQ29uZGl0aW9uOjphY2NlcHROb2RlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBOb2Rl
KiBmaWx0ZXJOb2RlKSBjb25zdAogewogICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25z
T25seSk7CiAKLSAgICBpZiAoIW1fZmlsdGVyLT5pc09iamVjdCgpKQorICAgIGlmICghbV9maWx0
ZXIuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIE5vZGVGaWx0ZXI6OkZJTFRFUl9BQ0NFUFQ7
CiAKICAgIC8vIFRoZSBleGVjIGFyZ3VtZW50IGhlcmUgc2hvdWxkIG9ubHkgYmUgbnVsbCBpZiB0
aGlzIHdhcyBjYWxsZWQgZnJvbSBhCkBAIC01OCwxMSArNTgsMTEgQEAgc2hvcnQgSlNOb2RlRmls
dGVyQ29uZGl0aW9uOjphY2NlcHROb2RlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBOb2RlKiBmaWx0
ZXJOb2RlKQogICAgIGlmICghZXhlYykKICAgICAgICAgcmV0dXJuIE5vZGVGaWx0ZXI6OkZJTFRF
Ul9SRUpFQ1Q7CiAKLSAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gbV9maWx0ZXIuZ2V0KCk7CisgICAg
SlNWYWx1ZSBmdW5jdGlvbiA9IG1fZmlsdGVyOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAg
IENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAg
ICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKSB7Ci0gICAgICAgIGZ1bmN0aW9uID0gbV9m
aWx0ZXItPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJhY2NlcHROb2RlIikpOworICAgICAg
ICBmdW5jdGlvbiA9IG1fZmlsdGVyLmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJhY2NlcHRO
b2RlIikpOwogICAgICAgICBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0
YSk7CiAgICAgICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpIHsKICAgICAgICAgICAg
IHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJOb2RlRmlsdGVyIG9iamVj
dCBkb2VzIG5vdCBoYXZlIGFuIGFjY2VwdE5vZGUgZnVuY3Rpb24iKSk7CkBAIC03Nyw3ICs3Nyw3
IEBAIHNob3J0IEpTTm9kZUZpbHRlckNvbmRpdGlvbjo6YWNjZXB0Tm9kZShKU0M6OkV4ZWNTdGF0
ZSogZXhlYywgTm9kZSogZmlsdGVyTm9kZSkKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CiAgICAgICAgIHJldHVybiBOb2RlRmlsdGVyOjpGSUxURVJfUkVKRUNUOwogCi0gICAgSlNWYWx1
ZSByZXN1bHQgPSBKU0M6OmNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwg
bV9maWx0ZXIuZ2V0KCksIGFyZ3MpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gSlNDOjpjYWxsKGV4
ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIG1fZmlsdGVyLCBhcmdzKTsKICAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBOb2RlRmlsdGVyOjpGSUxU
RVJfUkVKRUNUOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05v
ZGVGaWx0ZXJDb25kaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZp
bHRlckNvbmRpdGlvbi5oCmluZGV4IDE0YjBjMWQyNWFmYzZlZDUyYmViNjM1MDEwMDFmYjBmN2Ni
ZjMyYTAuLmI5NjUzNGEwY2Y0ZTM5MmVkYTAzMzEwNDhmYjdmMWNlMDhmNzQ3Y2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5oCkBA
IC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBzaG9y
dCBhY2NlcHROb2RlKFNjcmlwdFN0YXRlKiwgTm9kZSopIGNvbnN0OwogICAgICAgICB2aXJ0dWFs
IHZvaWQgbWFya0FnZ3JlZ2F0ZShKU0M6Ok1hcmtTdGFjayYpOwogCi0gICAgICAgIG11dGFibGUg
SlNDOjpEZXByZWNhdGVkUHRyPEpTQzo6VW5rbm93bj4gbV9maWx0ZXI7CisgICAgICAgIG11dGFi
bGUgSlNDOjpKU1ZhbHVlIG1fZmlsdGVyOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDdXN0b20u
Y3BwCmluZGV4IGJjNzllOTk2Nzk3YjE2OGJjNzk2OTQwMjc5ZWE2NzM1N2M5YzI5YWIuLmJiOTBj
NGY3ZjBiNmRjYzlmZGQ0NWI5OWUyZjhjMTk0OWIyYTE3MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcApAQCAtMjYsNyArMjYsNiBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTTm9kZUZpbHRlci5oIgogCi0jaW5j
bHVkZSAiSlNET01XaW5kb3dCYXNlLmgiCiAjaW5jbHVkZSAiSlNOb2RlLmgiCiAjaW5jbHVkZSAi
SlNOb2RlRmlsdGVyQ29uZGl0aW9uLmgiCiAjaW5jbHVkZSAiTm9kZUZpbHRlci5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNPcHRpb25Db25zdHJ1Y3Rvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU09wdGlvbkNvbnN0cnVjdG9yLmNwcAppbmRl
eCBlMTRmYjZkYTViZDM5NzRlZjgxYmE3ZDViYTczYmJmNzliOTk3MThiLi40ZWNmZTU4NTJjODM4
NDQ5NmFhMzhjNjcxN2JmYmEzYjRlZTQ0NDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU09wdGlvbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU09wdGlvbkNvbnN0cnVjdG9yLmNwcApAQCAtMzgsOCArMzgsOCBAQCBjb25z
dCBDbGFzc0luZm8gSlNPcHRpb25Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiT3B0aW9uQ29uc3Ry
dWN0b3IiLCAwLCAwLCAwIH07CiBKU09wdGlvbkNvbnN0cnVjdG9yOjpKU09wdGlvbkNvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAg
ICA6IERPTUNvbnN0cnVjdG9yV2l0aERvY3VtZW50KEpTT3B0aW9uQ29uc3RydWN0b3I6OmNyZWF0
ZVN0cnVjdHVyZShnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSwgZ2xvYmFsT2JqZWN0
KQogewotICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5wcm90b3R5cGUsIEpTSFRNTE9wdGlvbkVsZW1lbnRQcm90b3R5cGU6OnNlbGYoZXhlYywg
Z2xvYmFsT2JqZWN0KSwgTm9uZSk7Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoNCksIFJlYWRPbmx5IHwgRG9u
dERlbGV0ZSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygp
LnByb3RvdHlwZSwgSlNIVE1MT3B0aW9uRWxlbWVudFByb3RvdHlwZTo6c2VsZihleGVjLCBnbG9i
YWxPYmplY3QpLCBOb25lKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxl
bmd0aCwganNOdW1iZXIoNCksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsKIH0K
IAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SFRNTE9wdGlv
bkVsZW1lbnQoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTU1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAKaW5kZXggMGZjZDFl
YTdmMmQ2MmU0YzhlYmVkZDdhYTZmYWUyNzhmY2IzMDQ4ZS4uNzI3NGNkMGYyYTRhZDJlMDZmMzQw
ZmNkNWE2YjUyOGZlZGYyNTYyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwCkBAIC03NCw3ICs3NCw3
IEBAIEpTVmFsdWUgSlNTUUxSZXN1bHRTZXRSb3dMaXN0OjppdGVtKEV4ZWNTdGF0ZSogZXhlYykK
ICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KIAotICAgICAg
ICBvYmplY3QtPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywg
c3RyaW5nVG9VU3RyaW5nKG1faW1wbC0+Y29sdW1uTmFtZXMoKVtpXSkpLCBqc1ZhbHVlLCBEb250
RGVsZXRlIHwgUmVhZE9ubHkpOworICAgICAgICBvYmplY3QtPnB1dERpcmVjdChJZGVudGlmaWVy
KGV4ZWMsIHN0cmluZ1RvVVN0cmluZyhtX2ltcGwtPmNvbHVtbk5hbWVzKClbaV0pKSwganNWYWx1
ZSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKICAgICB9CiAKICAgICByZXR1cm4gb2JqZWN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVE
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0
YS5jcHAKaW5kZXggZDY1YmNlMjYwMTM4ZjkxODY5MGVjZTg2ZmQyNGNiYjQ4OGVjYzBkZC4uMTZm
MThkMzVhMDZmYTBhZGRiMGUzYjE3Y2IyZTA0YzBlZDU3YmFkNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwCkBAIC04NCw3
ICs4NCw3IEBAIHZvaWQgU2NyaXB0Q2FjaGVkRnJhbWVEYXRhOjpyZXN0b3JlKEZyYW1lKiBmcmFt
ZSkKICAgICAgICAgSlNET01XaW5kb3dTaGVsbCogd2luZG93U2hlbGwgPSBpdGVyLT5zZWNvbmQu
Z2V0KCk7CiAKICAgICAgICAgaWYgKEpTRE9NV2luZG93KiB3aW5kb3cgPSBtX3dpbmRvd3MuZ2V0
KHdvcmxkKSkKLSAgICAgICAgICAgIHdpbmRvd1NoZWxsLT5zZXRXaW5kb3cod2luZG93LT5nbG9i
YWxEYXRhKCksIHdpbmRvdyk7CisgICAgICAgICAgICB3aW5kb3dTaGVsbC0+c2V0V2luZG93KHdp
bmRvdyk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgd2luZG93U2hlbGwtPnNldFdpbmRv
dyhmcmFtZS0+ZG9tV2luZG93KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0T2JqZWN0LmNwcAppbmRleCBiNWMxZjAxMTk2NDYwODM1MjYyZGMyMDk2MzNkMGI3NGMzOGE2
NmY5Li5lMDZlY2NiN2I1MjY2MmU4Y2RjN2MwY2YwZDQ2ZjNhOWNkMmVmZjRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5jcHAKQEAgLTYyLDcgKzYyLDcgQEAg
c3RhdGljIGJvb2wgaGFuZGxlRXhjZXB0aW9uKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSkKIGJv
b2wgU2NyaXB0R2xvYmFsT2JqZWN0OjpzZXQoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBjb25z
dCBjaGFyKiBuYW1lLCBjb25zdCBTY3JpcHRPYmplY3QmIHZhbHVlKQogewogICAgIEpTTG9jayBs
b2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7Ci0gICAgc2NyaXB0U3RhdGUtPmxleGljYWxHbG9i
YWxPYmplY3QoKS0+cHV0RGlyZWN0KHNjcmlwdFN0YXRlLT5nbG9iYWxEYXRhKCksIElkZW50aWZp
ZXIoc2NyaXB0U3RhdGUsIG5hbWUpLCB2YWx1ZS5qc09iamVjdCgpKTsKKyAgICBzY3JpcHRTdGF0
ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5wdXREaXJlY3QoSWRlbnRpZmllcihzY3JpcHRTdGF0
ZSwgbmFtZSksIHZhbHVlLmpzT2JqZWN0KCkpOwogICAgIHJldHVybiBoYW5kbGVFeGNlcHRpb24o
c2NyaXB0U3RhdGUpOwogfQogCkBAIC03MSw3ICs3MSw3IEBAIGJvb2wgU2NyaXB0R2xvYmFsT2Jq
ZWN0OjpzZXQoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBjaGFyKiBuYW1lLCBJbnNw
ZWN0CiB7CiAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKLSAgICBnbG9iYWxPYmpl
Y3QtPnB1dERpcmVjdChzY3JpcHRTdGF0ZS0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKHNjcmlw
dFN0YXRlLCBuYW1lKSwgdG9KUyhzY3JpcHRTdGF0ZSwgZ2xvYmFsT2JqZWN0LCB2YWx1ZSkpOwor
ICAgIGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0KElkZW50aWZpZXIoc2NyaXB0U3RhdGUsIG5hbWUp
LCB0b0pTKHNjcmlwdFN0YXRlLCBnbG9iYWxPYmplY3QsIHZhbHVlKSk7CiAgICAgcmV0dXJuIGhh
bmRsZUV4Y2VwdGlvbihzY3JpcHRTdGF0ZSk7CiB9CiAKQEAgLTc5LDcgKzc5LDcgQEAgYm9vbCBT
Y3JpcHRHbG9iYWxPYmplY3Q6OnNldChTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IGNo
YXIqIG5hbWUsIEluamVjdGUKIHsKICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09u
bHkpOwogICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzdGF0aWNfY2FzdDxK
U0RPTUdsb2JhbE9iamVjdCo+KHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwot
ICAgIGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0KHNjcmlwdFN0YXRlLT5nbG9iYWxEYXRhKCksIElk
ZW50aWZpZXIoc2NyaXB0U3RhdGUsIG5hbWUpLCB0b0pTKHNjcmlwdFN0YXRlLCBnbG9iYWxPYmpl
Y3QsIHZhbHVlKSk7CisgICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3QoSWRlbnRpZmllcihzY3Jp
cHRTdGF0ZSwgbmFtZSksIHRvSlMoc2NyaXB0U3RhdGUsIGdsb2JhbE9iamVjdCwgdmFsdWUpKTsK
ICAgICByZXR1cm4gaGFuZGxlRXhjZXB0aW9uKHNjcmlwdFN0YXRlKTsKIH0KICNlbmRpZiAvLyBF
TkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggZjcyMTMzNGMxZjdhN2RiNmVmYzA1NmE1ZTFj
Zjc0ZTQyYjQ3ZjZmOC4uYjAyYTRiYjM4MDBkNDY0MTQ1NjEwNGVkNTA5NWQ3OTkzMTJhZDJhZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwCkBAIC0xMDQwLDE0ICsxMDQwLDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwdXRQ
cm9wZXJ0eShKU0FycmF5KiBhcnJheSwgdW5zaWduZWQgaW5kZXgsIEpTVmFsdWUgdmFsdWUpCiAg
ICAgewogICAgICAgICBpZiAoYXJyYXktPmNhblNldEluZGV4KGluZGV4KSkKLSAgICAgICAgICAg
IGFycmF5LT5zZXRJbmRleChtX2V4ZWMtPmdsb2JhbERhdGEoKSwgaW5kZXgsIHZhbHVlKTsKKyAg
ICAgICAgICAgIGFycmF5LT5zZXRJbmRleChpbmRleCwgdmFsdWUpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBhcnJheS0+cHV0KG1fZXhlYywgaW5kZXgsIHZhbHVlKTsKICAgICB9CiAKICAg
ICB2b2lkIHB1dFByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5LCBKU1ZhbHVlIHZhbHVlKQogICAgIHsKLSAgICAgICAgb2JqZWN0LT5wdXREaXJlY3Qo
bV9leGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5LCB2YWx1ZSk7CisgICAgICAgIG9iamVjdC0+
cHV0RGlyZWN0KHByb3BlcnR5LCB2YWx1ZSk7CiAgICAgfQogCiAgICAgYm9vbCByZWFkRmlsZShS
ZWZQdHI8RmlsZT4mIGZpbGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDQ2YTQ0ZDE5NzczYjRkNzRlM2JjMTdlNTBkMjBl
ZGU4ZjkzMjFlNDAuLmFiZWYwNGU4N2Y3YzY4ZDQ5MDM1ODE2MDc2NmM3OGY5ZDg5YjljOWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtCkBAIC0xNzM1LDEzICsxNzM1LDEzIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVj
dG9yXG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGludGVyZmFjZU5hbWUg
ZXEgIkRPTVdpbmRvdyIgJiYgJGNsYXNzTmFtZSBlcSAiSlNibGFoIikgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBzdGF0aWNfY2FzdDwk
Y2xhc3NOYW1lKj4odGhpc09iamVjdCktPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpO1xuIik7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHN0YXRpY19jYXN0
PCRjbGFzc05hbWUqPih0aGlzT2JqZWN0KS0+cHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5jb25zdHJ1Y3RvciwgdmFsdWUpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgc3RhdGljX2Nhc3Q8JGNsYXNzTmFtZSo+KHRoaXNPYmplY3QpLT5wdXREaXJlY3Qo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIFwiJG5hbWVcIiksIHZhbHVlKTtc
biIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBzdGF0aWNfY2FzdDwkY2xhc3NOYW1lKj4odGhpc09iamVjdCktPnB1dERpcmVjdChJZGVu
dGlmaWVyKGV4ZWMsIFwiJG5hbWVcIiksIHZhbHVlKTtcbiIpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUt
PnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlJlcGxhY2VhYmxlIn0pIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAvLyBTaGFkb3dp
bmcgYSBidWlsdC1pbiBvYmplY3RcbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIHN0YXRpY19jYXN0PCRjbGFzc05hbWUqPih0aGlzT2JqZWN0
KS0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCBcIiRuYW1l
XCIpLCB2YWx1ZSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBzdGF0aWNfY2FzdDwkY2xhc3NOYW1lKj4odGhpc09iamVjdCktPnB1dERp
cmVjdChJZGVudGlmaWVyKGV4ZWMsIFwiJG5hbWVcIiksIHZhbHVlKTtcbiIpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAkY2xhc3NOYW1lKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8
JGNsYXNzTmFtZSo+KHRoaXNPYmplY3QpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGltcGxUeXBlKiBpbXAgPSBzdGF0aWNfY2FzdDwk
aW1wbFR5cGUqPihjYXN0ZWRUaGlzLT5pbXBsKCkpO1xuIik7CkBAIC0xODI0LDkgKzE4MjQsOSBA
QCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yXG4iKTsKIAog
ICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IikgewotICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBzdGF0aWNfY2FzdDwkY2xh
c3NOYW1lKj4odGhpc09iamVjdCktPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpO1xuIik7CisgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHN0YXRpY19jYXN0PCRjbGFzc05hbWUqPih0
aGlzT2JqZWN0KS0+cHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3Rvciwg
dmFsdWUpO1xuIik7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgc3RhdGljX2Nhc3Q8JGNsYXNzTmFtZSo+KHRoaXNP
YmplY3QpLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIFwi
JG5hbWVcIiksIHZhbHVlKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBzdGF0aWNfY2FzdDwkY2xhc3NOYW1lKj4odGhpc09iamVjdCktPnB1dERpcmVj
dChJZGVudGlmaWVyKGV4ZWMsIFwiJG5hbWVcIiksIHZhbHVlKTtcbiIpOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cbiIpOwogICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4iKTsKQEAgLTI5NDIsMTEgKzI5NDIsMTEg
QEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uCiAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIDogRE9NQ29uc3RydWN0b3JPYmplY3QoJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06
OmNyZWF0ZVN0cnVjdHVyZShnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSwgZ2xvYmFs
T2JqZWN0KVxuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAie1xuIik7CiAgICAgaWYgKCRp
bnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkucHJvdG90eXBlLCBnbG9iYWxPYmplY3QtPnByb3RvdHlwZSgpLCBEb250RGVsZXRlIHwgUmVh
ZE9ubHkpO1xuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBwdXREaXJlY3Qo
ZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgZ2xvYmFsT2JqZWN0LT5wcm90b3R5cGUo
KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTtcbiIpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCAke3Byb3RvQ2xhc3NOYW1lfTo6c2VsZihleGVj
LCBnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpO1xuIik7CisgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLnBy
b3RvdHlwZSwgJHtwcm90b0NsYXNzTmFtZX06OnNlbGYoZXhlYywgZ2xvYmFsT2JqZWN0KSwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5KTtcbiIpOwogICAgIH0KLSAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygp
Lmxlbmd0aCwganNOdW1iZXIoJHtudW1iZXJPZmNvbnN0cnVjdFBhcmFtZXRlcnN9KSwgUmVhZE9u
bHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0pO1xuIikgaWYgJG51bWJlck9mY29uc3RydWN0UGFy
YW1ldGVyczsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcHV0RGlyZWN0KGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKCR7bnVtYmVyT2Zjb25zdHJ1Y3RQYXJhbWV0
ZXJzfSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTtcbiIpIGlmICRudW1iZXJP
ZmNvbnN0cnVjdFBhcmFtZXRlcnM7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuXG4iKTsK
IAogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgImJvb2wgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06
OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KVxuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
cXQvcXRfcnVudGltZS5jcHAKaW5kZXggM2NlYTI2MTU0MmRlZjQ0MWU5MGM5N2E3NzkzYTExNDdl
NTI3ZmVlNS4uMGZiODExYjRkYjE3ZWJmNDY3ZjI3MDUwYWI3OGJiOWM5Y2ExZDBmYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcApAQCAtMTQwMSw2ICsxNDAxLDggQEAg
UXRSdW50aW1lTWV0YU1ldGhvZDo6UXRSdW50aW1lTWV0YU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IElkZW50aWZpZXImIGlkZW4KICAgICBRV19EKFF0UnVudGltZU1ldGFNZXRob2QpOwog
ICAgIGQtPm1fc2lnbmF0dXJlID0gc2lnbmF0dXJlOwogICAgIGQtPm1faW5kZXggPSBpbmRleDsK
KyAgICBkLT5tX2Nvbm5lY3QgPSAwOworICAgIGQtPm1fZGlzY29ubmVjdCA9IDA7CiAgICAgZC0+
bV9hbGxvd1ByaXZhdGUgPSBhbGxvd1ByaXZhdGU7CiB9CiAKQEAgLTE0MDksOSArMTQxMSw5IEBA
IHZvaWQgUXRSdW50aW1lTWV0YU1ldGhvZDo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0
YWNrKQogICAgIFF0UnVudGltZU1ldGhvZDo6bWFya0NoaWxkcmVuKG1hcmtTdGFjayk7CiAgICAg
UVdfRChRdFJ1bnRpbWVNZXRhTWV0aG9kKTsKICAgICBpZiAoZC0+bV9jb25uZWN0KQotICAgICAg
ICBtYXJrU3RhY2suYXBwZW5kKCZkLT5tX2Nvbm5lY3QpOworICAgICAgICBtYXJrU3RhY2suYXBw
ZW5kKGQtPm1fY29ubmVjdCk7CiAgICAgaWYgKGQtPm1fZGlzY29ubmVjdCkKLSAgICAgICAgbWFy
a1N0YWNrLmFwcGVuZCgmZC0+bV9kaXNjb25uZWN0KTsKKyAgICAgICAgbWFya1N0YWNrLmFwcGVu
ZChkLT5tX2Rpc2Nvbm5lY3QpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBRdFJ1bnRpbWVNZXRhTWV0
aG9kOjpjYWxsKEV4ZWNTdGF0ZSogZXhlYykKQEAgLTE1MjEsNyArMTUyMyw3IEBAIEpTVmFsdWUg
UXRSdW50aW1lTWV0YU1ldGhvZDo6Y29ubmVjdEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgc2xvdEJhc2UsIGNvCiAgICAgUVdfRFMoUXRSdW50aW1lTWV0YU1ldGhvZCwgdGhpc09iaik7
CiAKICAgICBpZiAoIWQtPm1fY29ubmVjdCkKLSAgICAgICAgZC0+bV9jb25uZWN0LnNldChleGVj
LT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykgUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhv
ZChleGVjLCBpZGVudCwgdHJ1ZSwgZC0+bV9pbnN0YW5jZSwgZC0+bV9pbmRleCwgZC0+bV9zaWdu
YXR1cmUpKTsKKyAgICAgICAgZC0+bV9jb25uZWN0ID0gbmV3IChleGVjKSBRdFJ1bnRpbWVDb25u
ZWN0aW9uTWV0aG9kKGV4ZWMsIGlkZW50LCB0cnVlLCBkLT5tX2luc3RhbmNlLCBkLT5tX2luZGV4
LCBkLT5tX3NpZ25hdHVyZSk7CiAgICAgcmV0dXJuIGQtPm1fY29ubmVjdDsKIH0KIApAQCAtMTUz
MSw3ICsxNTMzLDcgQEAgSlNWYWx1ZSBRdFJ1bnRpbWVNZXRhTWV0aG9kOjpkaXNjb25uZWN0R2V0
dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwKICAgICBRV19EUyhRdFJ1bnRp
bWVNZXRhTWV0aG9kLCB0aGlzT2JqKTsKIAogICAgIGlmICghZC0+bV9kaXNjb25uZWN0KQotICAg
ICAgICBkLT5tX2Rpc2Nvbm5lY3Quc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChl
eGVjKSBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kKGV4ZWMsIGlkZW50LCBmYWxzZSwgZC0+bV9p
bnN0YW5jZSwgZC0+bV9pbmRleCwgZC0+bV9zaWduYXR1cmUpKTsKKyAgICAgICAgZC0+bV9kaXNj
b25uZWN0ID0gbmV3IChleGVjKSBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kKGV4ZWMsIGlkZW50
LCBmYWxzZSwgZC0+bV9pbnN0YW5jZSwgZC0+bV9pbmRleCwgZC0+bV9zaWduYXR1cmUpOwogICAg
IHJldHVybiBkLT5tX2Rpc2Nvbm5lY3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9xdC9xdF9ydW50aW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVu
dGltZS5oCmluZGV4IDUzZDlhMzFjOTlkYzVmN2VjZmVmNjVkOTg1ZDZjZjExZGU5YmM2NmEuLjY4
YmY4NjUzZWY3MmU2OThkZTAxMDk0NmI5M2JmNDYyMzNkZDQ4MWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3F0L3F0X3J1bnRpbWUuaApAQCAtMTI5LDggKzEyOSw4IEBAIGNsYXNzIFF0UnVudGltZU1l
dGFNZXRob2REYXRhIDogcHVibGljIFF0UnVudGltZU1ldGhvZERhdGEgewogICAgICAgICBRQnl0
ZUFycmF5IG1fc2lnbmF0dXJlOwogICAgICAgICBib29sIG1fYWxsb3dQcml2YXRlOwogICAgICAg
ICBpbnQgbV9pbmRleDsKLSAgICAgICAgV3JpdGVCYXJyaWVyPFF0UnVudGltZUNvbm5lY3Rpb25N
ZXRob2Q+IG1fY29ubmVjdDsKLSAgICAgICAgV3JpdGVCYXJyaWVyPFF0UnVudGltZUNvbm5lY3Rp
b25NZXRob2Q+IG1fZGlzY29ubmVjdDsKKyAgICAgICAgUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhv
ZCAqbV9jb25uZWN0OworICAgICAgICBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kICptX2Rpc2Nv
bm5lY3Q7CiB9OwogCiBjbGFzcyBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kRGF0YSA6IHB1Ymxp
YyBRdFJ1bnRpbWVNZXRob2REYXRhIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9ydW50aW1lX3Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfcm9vdC5j
cHAKaW5kZXggMTBmNzdiNDkzNGE5MzY2Zjc5Y2RlOWFiZDg3NmRhMmM2ODVjZjlhMy4uM2M4YjMx
MzlhOWNhZmZlZDVhZWY5MGZhY2RjY2QyMTRkZGUzNjk4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYnJpZGdlL3J1bnRpbWVfcm9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdl
L3J1bnRpbWVfcm9vdC5jcHAKQEAgLTEwMSw4ICsxMDEsOCBAQCB2b2lkIFJvb3RPYmplY3Q6Omlu
dmFsaWRhdGUoKQogICAgICAgICByZXR1cm47CiAKICAgICB7Ci0gICAgICAgIFdlYWtHQ01hcDxS
dW50aW1lT2JqZWN0KiwgUnVudGltZU9iamVjdD46Oml0ZXJhdG9yIGVuZCA9IG1fcnVudGltZU9i
amVjdHMudW5jaGVja2VkRW5kKCk7Ci0gICAgICAgIGZvciAoV2Vha0dDTWFwPFJ1bnRpbWVPYmpl
Y3QqLCBSdW50aW1lT2JqZWN0Pjo6aXRlcmF0b3IgaXQgPSBtX3J1bnRpbWVPYmplY3RzLnVuY2hl
Y2tlZEJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBXZWFrR0NNYXA8UnVudGlt
ZU9iamVjdCosIFJ1bnRpbWVPYmplY3QqPjo6aXRlcmF0b3IgZW5kID0gbV9ydW50aW1lT2JqZWN0
cy51bmNoZWNrZWRFbmQoKTsKKyAgICAgICAgZm9yIChXZWFrR0NNYXA8UnVudGltZU9iamVjdCos
IFJ1bnRpbWVPYmplY3QqPjo6aXRlcmF0b3IgaXQgPSBtX3J1bnRpbWVPYmplY3RzLnVuY2hlY2tl
ZEJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICAgICAgaWYgKG1fcnVudGltZU9i
amVjdHMuaXNWYWxpZChpdCkpCiAgICAgICAgICAgICAgICAgaXQtPnNlY29uZC0+aW52YWxpZGF0
ZSgpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGlt
ZV9yb290LmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9yb290LmgKaW5kZXggZGRl
OGE0ODA4NTQ5YTAxZGM1MzEzMGJjM2U5YzIyYzVlNjQ4ODM2Mi4uODI5MGU3YzMxZTNlODEzMTEx
ZjUyMDE5NjAwZWQwYjUxOWYxYjFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdl
L3J1bnRpbWVfcm9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX3Jvb3Qu
aApAQCAtODksNyArODksNyBAQCBwcml2YXRlOgogICAgIFByb3RlY3RlZFB0cjxKU0dsb2JhbE9i
amVjdD4gbV9nbG9iYWxPYmplY3Q7CiAKICAgICBQcm90ZWN0Q291bnRTZXQgbV9wcm90ZWN0Q291
bnRTZXQ7Ci0gICAgV2Vha0dDTWFwPFJ1bnRpbWVPYmplY3QqLCBSdW50aW1lT2JqZWN0PiBtX3J1
bnRpbWVPYmplY3RzOyAvLyBSZWFsbHkgbmVlZCBhIFdlYWtHQ1NldCwgYnV0IHRoaXMgd2lsbCBk
by4KKyAgICBXZWFrR0NNYXA8UnVudGltZU9iamVjdCosIFJ1bnRpbWVPYmplY3QqPiBtX3J1bnRp
bWVPYmplY3RzOyAvLyBSZWFsbHkgbmVlZCBhIFdlYWtHQ1NldCwgYnV0IHRoaXMgd2lsbCBkby4K
IAogICAgIEhhc2hTZXQ8SW52YWxpZGF0aW9uQ2FsbGJhY2sqPiBtX2ludmFsaWRhdGlvbkNhbGxi
YWNrczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGJlN2UwMGEzZWI0M2NiYzMxZjlmYzRl
OWFlODZlYTcxZDUwOTBlMmQuLmYzZDhlNzdlOWExOGQ5YWUyNzFjNDAzNjhlN2Q3ZmY0NzE4M2Rh
ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC05NDAsNyArOTQwLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBwb3N0VGFzayhQYXNzT3duUHRyPFRhc2s+KTsgLy8gRXhlY3V0ZXMgdGhl
IHRhc2sgb24gY29udGV4dCdzIHRocmVhZCBhc3luY2hyb25vdXNseS4KIAogI2lmIFVTRShKU0Mp
Ci0gICAgdHlwZWRlZiBKU0M6OldlYWtHQ01hcDxXZWJDb3JlOjpOb2RlKiwgSlNOb2RlPiBKU1dy
YXBwZXJDYWNoZTsKKyAgICB0eXBlZGVmIEpTQzo6V2Vha0dDTWFwPFdlYkNvcmU6Ok5vZGUqLCBK
U05vZGUqPiBKU1dyYXBwZXJDYWNoZTsKICAgICB0eXBlZGVmIEhhc2hNYXA8RE9NV3JhcHBlcldv
cmxkKiwgSlNXcmFwcGVyQ2FjaGUqPiBKU1dyYXBwZXJDYWNoZU1hcDsKICAgICBKU1dyYXBwZXJD
YWNoZU1hcCYgd3JhcHBlckNhY2hlTWFwKCkgeyByZXR1cm4gbV93cmFwcGVyQ2FjaGVNYXA7IH0K
ICAgICBKU1dyYXBwZXJDYWNoZSogZ2V0V3JhcHBlckNhY2hlKERPTVdyYXBwZXJXb3JsZCogd29y
bGQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDczMGU4NWEyZDVlYTZlNDI5NGQ3NTMyYWVkY2NjZjVm
MmQ2MjM1NzYuLjgyMWE4ZmQzZDIwNjI0NWYwNzY1NTJiMjdhYzQwOTA0ZjMxNGI4ZDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0wMS0yOCAgU2hlcmlmZiBCb3QgIDx3
ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGlu
ZyBvdXQgcjc3MDA2IGFuZCByNzcwMjAuCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcv
Y2hhbmdlc2V0Lzc3MDA2CisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0
Lzc3MDIwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
MzM2MAorCisgICAgICAgICJCcm9rZSBXaW5kb3dzIHRlc3RzIiAoUmVxdWVzdGVkIGJ5IHJuaXdh
IG9uICN3ZWJraXQpLgorCisgICAgICAgICogV2ViVmlldy9XZWJTY3JpcHREZWJ1Z0RlbGVnYXRl
Lm1tOgorICAgICAgICAoLVtXZWJTY3JpcHRDYWxsRnJhbWUgc2NvcGVDaGFpbl0pOgorCiAyMDEx
LTAxLTI3ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlNjcmlwdERlYnVnRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlNjcmlwdERlYnVnRGVsZWdhdGUubW0KaW5kZXggOTZhMWE0MjcxYzNkNTNmZWIyM2NiOTVj
ZTgzOWNjN2NhNGVhYTQxYi4uNjNhOTFhOWUxZjM5YjQ4MDY3NGVlYWNhMzUzMGM0Mjk0Y2NhZDY5
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z0Rl
bGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdE
ZWxlZ2F0ZS5tbQpAQCAtMTg0LDkgKzE4NCw5IEBAIE5TU3RyaW5nICogY29uc3QgV2ViU2NyaXB0
RXJyb3JMaW5lTnVtYmVyS2V5ID0gQCJXZWJTY3JpcHRFcnJvckxpbmVOdW1iZXIiOwogCiAgICAg
U2NvcGVDaGFpbkl0ZXJhdG9yIGVuZCA9IHNjb3BlQ2hhaW4tPmVuZCgpOwogICAgIGZvciAoU2Nv
cGVDaGFpbkl0ZXJhdG9yIGl0ID0gc2NvcGVDaGFpbi0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KSB7Ci0gICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBpdC0+Z2V0KCk7CisgICAgICAgIEpTT2Jq
ZWN0KiBvYmplY3QgPSAqaXQ7CiAgICAgICAgIGlmIChvYmplY3QtPmlzQWN0aXZhdGlvbk9iamVj
dCgpKQotICAgICAgICAgICAgb2JqZWN0ID0gbmV3IChzY29wZUNoYWluLT5nbG9iYWxEYXRhKSBE
ZWJ1Z2dlckFjdGl2YXRpb24oKnNjb3BlQ2hhaW4tPmdsb2JhbERhdGEsIG9iamVjdCk7CisgICAg
ICAgICAgICBvYmplY3QgPSBuZXcgKHNjb3BlQ2hhaW4tPmdsb2JhbERhdGEpIERlYnVnZ2VyQWN0
aXZhdGlvbihvYmplY3QpOwogICAgICAgICBbc2NvcGVzIGFkZE9iamVjdDpbc2VsZiBfY29udmVy
dFZhbHVlVG9PYmpjVmFsdWU6b2JqZWN0XV07CiAgICAgfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>