<?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>111447</bug_id>
          
          <creation_ts>2013-03-05 09:04:04 -0800</creation_ts>
          <short_desc>REGRESSION(r144708): random assertion crashes in inspector tests on qt+mac bots (Requested by kling on #webkit).</short_desc>
          <delta_ts>2013-03-05 10:07:45 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>110854</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>ggaren</cc>
    
    <cc>kadam</cc>
    
    <cc>kling</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>847728</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-05 09:04:04 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/144708 broke the build:
random assertion crashes in inspector tests on qt+mac bots (Requested by kling 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>847730</commentid>
    <comment_count>1</comment_count>
      <attachid>191506</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-05 09:04:41 -0800</bug_when>
    <thetext>Created attachment 191506
ROLLOUT of r144708

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

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

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847745</commentid>
    <comment_count>2</comment_count>
      <attachid>191506</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-05 09:28:53 -0800</bug_when>
    <thetext>Comment on attachment 191506
ROLLOUT of r144708

Clearing flags on attachment: 191506

Committed r144767: &lt;http://trac.webkit.org/changeset/144767&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847746</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-05 09:28:56 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847779</commentid>
    <comment_count>4</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-03-05 10:07:45 -0800</bug_when>
    <thetext>*** Bug 111416 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191506</attachid>
            <date>2013-03-05 09:04:41 -0800</date>
            <delta_ts>2013-03-05 09:28:53 -0800</delta_ts>
            <desc>ROLLOUT of r144708</desc>
            <filename>bug-111447-20130305170047.patch</filename>
            <type>text/plain</type>
            <size>53217</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0NzY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
YTIxZTJlMTViODE3YjMwNWRmOTUwOTMyYmVlNmM5NjQxOTRmYTYyLi4xNzdlMGM0ODIyMzczMjk1
YTFmZjM1MjhmOGM4ODRjMDlkMzJhNzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OSBAQAorMjAxMy0wMy0wNSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBn
bWFpbC5jb20+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE0NDcwOC4KKyAg
ICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTQ0NzA4CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE0NDcKKworICAgICAgICBy
YW5kb20gYXNzZXJ0aW9uIGNyYXNoZXMgaW4gaW5zcGVjdG9yIHRlc3RzIG9uIHF0K21hYyBib3Rz
CisgICAgICAgIChSZXF1ZXN0ZWQgYnkga2xpbmcgb24gI3dlYmtpdCkuCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLmd5cGk6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6SlNHbG9i
YWxEYXRhKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5oOgorICAgICAgICAoSlNH
bG9iYWxEYXRhKToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmg6Cisg
ICAgICAgIChQcm9wZXJ0eVRhYmxlKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlUYWJsZTo6UHJv
cGVydHlUYWJsZSk6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVRhYmxl
Ojp+UHJvcGVydHlUYWJsZSk6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OmNvcHkpOgor
ICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
cnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmR1bXBTdGF0
aXN0aWNzKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjptYXRlcmlhbGl6ZVByb3BlcnR5TWFw
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpkZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3Rpb24p
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbik6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6Y2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbik6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6ZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlOjphdHRyaWJ1dGVDaGFuZ2VUcmFuc2l0aW9uKToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlOjp0b0RpY3Rpb25hcnlUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjpzZWFsVHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6ZnJlZXpl
VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cHJldmVudEV4dGVuc2lvbnNU
cmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRp
b24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmlzU2VhbGVkKToKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlOjppc0Zyb3plbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6ZmxhdHRlbkRp
Y3Rpb25hcnlTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnBpbik6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6Y29weVByb3BlcnR5VGFibGUpOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmU6OmNvcHlQcm9wZXJ0eVRhYmxlRm9yUGlubmluZyk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6Z2V0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpkZXNwZWNpZnlGdW5jdGlv
bik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6ZGVzcGVjaWZ5QWxsRnVuY3Rpb25zKToKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlOjpwdXRTcGVjaWZpY1ZhbHVlKToKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlOjpyZW1vdmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZVByb3Bl
cnR5TWFwKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpnZXRQcm9wZXJ0eU5hbWVzRnJvbVN0
cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6dmlzaXRDaGlsZHJlbik6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6Y2hlY2tDb25zaXN0ZW5jeSk6CisgICAgICAgICogcnVudGlt
ZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6
cHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpt
YXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3NhcnkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmU6Om1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeUZvclBpbm5pbmcpOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmU6OmNoZWNrT2Zmc2V0Q29uc2lzdGVuY3kpOgorICAgICAgICAoU3Ry
dWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlOjpnZXQpOgorICAgICAgICAqIHJ1bnRpbWUvV3JpdGVCYXJyaWVyLmg6
CisgICAgICAgIChKU0M6OldyaXRlQmFycmllckJhc2U6OmdldCk6CisKIDIwMTMtMDMtMDUgIERh
dmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBCVUlMRCBGSVggKHIx
NDQ2OTgpOiBPbmx5IGVuYWJsZSBTUEVFQ0hfU1lOVEhFU0lTIGZvciBNYWMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAzYmIzOTEyYTI4YWRjYzA2Yzg0NTYwZmRiODhhOWFh
ZDZmOWEzNTE0Li4zYmQ2ODIzMDc3YzllMjIxYmI1Nzc0ZjcxYTIzNTU4NmIxZjgwMWU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yODAsNyArMjgwLDYgQEAgc2V0KEph
dmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5jcHAK
ICAgICBydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNwcAogICAgIHJ1bnRpbWUvUHJvcGVydHlT
bG90LmNwcAotICAgIHJ1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHAKICAgICBydW50aW1lL1Byb3Rv
dHlwZU1hcC5jcHAKICAgICBydW50aW1lL1JlZ0V4cC5jcHAKICAgICBydW50aW1lL1JlZ0V4cENh
Y2hlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA1
MWQ1YTQxZTg1NDJhZDE2ZGY3ZWE0NzQwOTQyMDA1YjRiNzRlYTQxLi5lOGExZjJiOTQzMWIzYzcy
ZDIwNGRlYzg3NzM2ZDUyMDUzZmNlYjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQpAQCAtNzIyLDcgKzcyMiw2IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMg
Kz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5T2Zmc2V0LmggXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5jcHAgXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oIFwKLQlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJvdG90eXBlTWFwLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvdG90eXBlTWFwLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3BlcnR5U3RvcmFnZS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS5neXBpIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5
cGkKaW5kZXggYzI3ZTdkNjk2NGFjNmMxZjdmN2MwMmVlYmU1YzgyNDlmNGUyM2E4YS4uMGE5ZmIx
NGNmYmU0YjdjYWQ2OTg2ZGJlZjdjMWU5ZmYzZjAyMmJmZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLmd5cGkKQEAgLTc1OCw3ICs3NTgsNiBAQAogICAgICAgICAgICAg
J3J1bnRpbWUvUHJvcGVydHlPZmZzZXQuaCcsCiAgICAgICAgICAgICAncnVudGltZS9Qcm9wZXJ0
eVNsb3QuY3BwJywKICAgICAgICAgICAgICdydW50aW1lL1Byb3BlcnR5U2xvdC5oJywKLSAgICAg
ICAgICAgICdydW50aW1lL1Byb3BlcnR5VGFibGUuY3BwJywKICAgICAgICAgICAgICdydW50aW1l
L1Byb3BlcnR5U3RvcmFnZS5oJywKICAgICAgICAgICAgICdydW50aW1lL1Byb3RlY3QuaCcsCiAg
ICAgICAgICAgICAncnVudGltZS9Qcm90b3R5cGVNYXAuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDBmYTkxNGZhNjkxNzU2MGRlNmYxYTc5YWVmOTljZTZl
ZDFkNDcyZWEuLjMyNWU3MjUwOTljNTdhMzA2OGZmNDk3NDUyODM0NzY0NzhmMDhjNTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtMzA1LDcgKzMwNSw2IEBACiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFByb3BlcnR5RGVzY3JpcHRvci5jcHAi
IC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxQcm9wZXJ0eU5hbWVBcnJh
eS5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxQcm9wZXJ0eVNs
b3QuY3BwIiAvPg0KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcUHJvcGVydHlU
YWJsZS5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxQcm90b3R5
cGVNYXAuY3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcUmVnRXhw
LmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFJlZ0V4cENhY2hl
LmNwcCIgLz4NCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGVhYTM5M2EwMDg4NTRi
ZDMxMjU2NjE5NjA5YTc1YTVjN2MyMTYyNmIuLmY1MGQzNmM0MTljNzNiNTVjMjc5ODljNzBmZDI3
MTllZGJhOWRmYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03MDMsNyArNzAz
LDYgQEAKIAkJQTdGQjYwQTQxMDNGN0RDMjAwMTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0ZCNjBB
MzEwM0Y3REMyMDAxN0EyODYgLyogUHJvcGVydHlEZXNjcmlwdG9yLmNwcCAqLzsgfTsKIAkJQTdG
QjYxMDAxMDQwQzM4QjAwMTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdGQjYwNEIxMDNGNUVBQjAwMTdB
Mjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUE4QTQ3NDhFMTUxQTgzMDYwMDQxMjNGRiAvKiBsaWJXVEYu
YSBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3
NDhEMTUxQTgzMDYwMDQxMjNGRiAvKiBsaWJXVEYuYSAqLzsgfTsKLQkJQURFMzlGRkYxNkREMTQ0
QjAwMDNDRDRBIC8qIFByb3BlcnR5VGFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQUQxQ0YwNjgxNkRDQUIyRDAwQjk3MTIzIC8qIFByb3BlcnR5
VGFibGUuY3BwICovOyB9OwogCQlCQzAyRTkwRDBFMTgzOURCMDAwRjkyOTcgLyogRXJyb3JDb25z
dHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkMwMkU5MDUwRTE4MzlEQjAwMEY5Mjk3IC8qIEVycm9yQ29uc3RydWN0b3IuaCAqLzsgfTsKIAkJ
QkMwMkU5MEYwRTE4MzlEQjAwMEY5Mjk3IC8qIEVycm9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAyRTkwNzBFMTgzOURCMDAwRjky
OTcgLyogRXJyb3JQcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlCQzAyRTkxMTBFMTgzOURCMDAwRjkyOTcgLyogTmF0aXZlRXJyb3JD
b25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkMwMkU5MDkwRTE4MzlEQjAwMEY5Mjk3IC8qIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCAq
LzsgfTsKQEAgLTE2MTksNyArMTYxOCw2IEBACiAJCUE4QTQ3NDhEMTUxQTgzMDYwMDQxMjNGRiAv
KiBsaWJXVEYuYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IGFyY2hpdmUuYXI7IHBhdGggPSBsaWJXVEYuYTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RV
Q1RTX0RJUjsgfTsKIAkJQThFODk0MzEwQ0QwNjAyNDAwMzY3MTc5IC8qIEpTQ2FsbGJhY2tPYmpl
Y3RGdW5jdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDYWxsYmFj
a09iamVjdEZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEU4OTQz
MzBDRDA2MDNGMDAzNjcxNzkgLyogSlNHbG9iYWxPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNHbG9iYWxPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJQUQxQ0YwNjgxNkRDQUIyRDAwQjk3MTIzIC8qIFByb3BlcnR5VGFibGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJvcGVydHlUYWJsZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMDIxQkYyMTM2OTAwQzMwMEZDNTQ2NyAvKiBUb29s
RXhlY3V0YWJsZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBUb29s
RXhlY3V0YWJsZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMwMkU5
MDQwRTE4MzlEQjAwMEY5Mjk3IC8qIEVycm9yQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXJyb3JDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUJDMDJFOTA1MEUxODM5REIwMDBGOTI5NyAvKiBFcnJvckNvbnN0
cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVycm9yQ29uc3RydWN0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1MDgsNyArMjUwNiw2IEBACiAJ
CQkJNjU2MjFFNkIwODlFODU5NzAwNzYwRjM1IC8qIFByb3BlcnR5U2xvdC5jcHAgKi8sCiAJCQkJ
NjU2MjFFNkMwODlFODU5NzAwNzYwRjM1IC8qIFByb3BlcnR5U2xvdC5oICovLAogCQkJCTBGQjdG
MzkwMTVFRDhFMzgwMEYxNjdCMiAvKiBQcm9wZXJ0eVN0b3JhZ2UuaCAqLywKLQkJCQlBRDFDRjA2
ODE2RENBQjJEMDBCOTcxMjMgLyogUHJvcGVydHlUYWJsZS5jcHAgKi8sCiAJCQkJNjVDMDJGQkIw
NjM3NDYyQTAwM0U3RUU2IC8qIFByb3RlY3QuaCAqLywKIAkJCQkxNEQ4NDRBMjE2QUEyQzcwMDBB
NjVBRjAgLyogUHJvdG90eXBlTWFwLmNwcCAqLywKIAkJCQkxNEQ4NDRBMzE2QUEyQzcwMDBBNjVB
RjAgLyogUHJvdG90eXBlTWFwLmggKi8sCkBAIC00MDI2LDcgKzQwMjMsNiBAQAogCQkJCTBGQkUw
Rjc0MTZDMURCMDkwMDgyQzVFOCAvKiBERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEZCRTBGNzYxNkMxREIwRjAwODJDNUU4IC8qIERGR1VuaWZpY2F0
aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0OTNBRkExNkQwQ0FEMzAwODQ1MDhC
IC8qIFNvdXJjZVByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUFERTM5RkZGMTZERDE0
NEIwMDAzQ0Q0QSAvKiBQcm9wZXJ0eVRhYmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvVGFyZ2V0LnByaQppbmRleCA2NjA4YTA3ZWVhMjI4ZmMxMWRiZTI0OGYxODVkMmViMGYyZjgz
Yzk1Li41ODE0MGY2ZDUwMjkxNTNkODFjZjQ0NGE5ZDE3ODZmNDI1ZTNhMGQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvVGFyZ2V0LnByaQpAQCAtMjk4LDcgKzI5OCw2IEBAIFNPVVJDRVMgKz0gXAogICAgIHJ1
bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmNwcCBcCiAgICAgcnVudGltZS9Qcm9wZXJ0eU5hbWVB
cnJheS5jcHAgXAogICAgIHJ1bnRpbWUvUHJvcGVydHlTbG90LmNwcCBcCi0gICAgcnVudGltZS9Q
cm9wZXJ0eVRhYmxlLmNwcCBcCiAgICAgcnVudGltZS9Qcm90b3R5cGVNYXAuY3BwIFwKICAgICBy
dW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcCBcCiAgICAgcnVudGltZS9SZWdFeHBDYWNoZWRS
ZXN1bHQuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsRGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERh
dGEuY3BwCmluZGV4IDUwOGE4NzZhODljNjA5ZTZmZmM5MTBmNzU4Mjk3MGIwYmVhYjAzZDIuLmMw
NmNmNWM4MWIwYmZjNGIxY2Q1MDEyNGQ3ZWY4NmMyNGVhZTY0NjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcApAQCAtMjMyLDcgKzIzMiw2IEBA
IEpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXBlIGdsb2JhbERhdGFUeXBl
LCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICB1bmxpbmtlZFByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1
cmUuc2V0KCp0aGlzLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s6OmNyZWF0ZVN0cnVjdHVyZSgq
dGhpcywgMCwganNOdWxsKCkpKTsKICAgICB1bmxpbmtlZEV2YWxDb2RlQmxvY2tTdHJ1Y3R1cmUu
c2V0KCp0aGlzLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2s6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywg
MCwganNOdWxsKCkpKTsKICAgICB1bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrU3RydWN0dXJlLnNl
dCgqdGhpcywgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRlU3RydWN0dXJlKCp0aGlz
LCAwLCBqc051bGwoKSkpOwotICAgIHByb3BlcnR5VGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBQ
cm9wZXJ0eVRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAg
c21hbGxTdHJpbmdzLmluaXRpYWxpemVDb21tb25TdHJpbmdzKCp0aGlzKTsKIAogICAgIHd0ZlRo
cmVhZERhdGEoKS5zZXRDdXJyZW50SWRlbnRpZmllclRhYmxlKGV4aXN0aW5nRW50cnlJZGVudGlm
aWVyVGFibGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxEYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEu
aAppbmRleCAxODk1YTA2ZTExZWRlZTZmODhlMDRmOWZkZmJhNDdlMjc5ZjYwMzIzLi5kYzk4ODFm
MTFjNTkyMWYwZmU4NGRhYTFjNzQ3YjA5MDI4YmVhM2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaApAQCAtMjU2LDcgKzI1Niw2IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBTdHJvbmc8U3RydWN0dXJlPiB1bmxpbmtlZFByb2dyYW1Db2RlQmxv
Y2tTdHJ1Y3R1cmU7CiAgICAgICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHVubGlua2VkRXZhbENvZGVC
bG9ja1N0cnVjdHVyZTsKICAgICAgICAgU3Ryb25nPFN0cnVjdHVyZT4gdW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9ja1N0cnVjdHVyZTsKLSAgICAgICAgU3Ryb25nPFN0cnVjdHVyZT4gcHJvcGVydHlU
YWJsZVN0cnVjdHVyZTsKIAogICAgICAgICBJZGVudGlmaWVyVGFibGUqIGlkZW50aWZpZXJUYWJs
ZTsKICAgICAgICAgQ29tbW9uSWRlbnRpZmllcnMqIHByb3BlcnR5TmFtZXM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAppbmRl
eCA1NGUyOTczYjE0YzlkMDY3ZWFlMTVjYmYzNzViNjlkODAzYmE3NzVkLi4yNDIyYzViOTlmM2U2
NzMxNWRmYWEyODQ3N2RhODE1NGRkZTg5YmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgKQEAgLTIyLDcgKzIyLDYgQEAK
ICNkZWZpbmUgUHJvcGVydHlNYXBIYXNoVGFibGVfaAogCiAjaW5jbHVkZSAiUHJvcGVydHlPZmZz
ZXQuaCIKLSNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIK
ICNpbmNsdWRlIDx3dGYvSGFzaFRhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4K
QEAgLTg2LDcgKzg1LDggQEAgc3RydWN0IFByb3BlcnR5TWFwRW50cnkgewogICAgIH0KIH07CiAK
LWNsYXNzIFByb3BlcnR5VGFibGUgOiBwdWJsaWMgSlNDZWxsIHsKK2NsYXNzIFByb3BlcnR5VGFi
bGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogCiAgICAgLy8gVGhpcyBpcyB0aGUg
aW1wbGVtZW50YXRpb24gZm9yICdpdGVyYXRvcicgYW5kICdjb25zdF9pdGVyYXRvcicsCiAgICAg
Ly8gdXNlZCBmb3IgaXRlcmF0aW5nIG92ZXIgdGhlIHRhYmxlIGluIGluc2VydGlvbiBvcmRlci4K
QEAgLTEyOSwxOSArMTI5LDYgQEAgY2xhc3MgUHJvcGVydHlUYWJsZSA6IHB1YmxpYyBKU0NlbGwg
ewogICAgIH07CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0
aW9uID0gdHJ1ZTsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJbW1vcnRhbFN0cnVjdHVyZSA9
IHRydWU7Ci0gICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKLQotICAgIHN0YXRpYyBK
U19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBzX2luZm87Ci0KLSAgICBzdGF0aWMgU3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvdHlw
ZSwgVHlwZUluZm8oQ29tcG91bmRUeXBlLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuKSwgJnNfaW5m
byk7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90
VmlzaXRvciYpOwotCiAgICAgdHlwZWRlZiBTdHJpbmdJbXBsKiBLZXlUeXBlOwogICAgIHR5cGVk
ZWYgUHJvcGVydHlNYXBFbnRyeSBWYWx1ZVR5cGU7CiAKQEAgLTE1NSw5ICsxNDIsOSBAQCBwdWJs
aWM6CiAgICAgdHlwZWRlZiBzdGQ6OnBhaXI8VmFsdWVUeXBlKiwgdW5zaWduZWQ+IGZpbmRfaXRl
cmF0b3I7CiAKICAgICAvLyBDb25zdHJ1Y3RvciBpcyBwYXNzZWQgYW4gaW5pdGlhbCBjYXBhY2l0
eSwgYSBQcm9wZXJ0eVRhYmxlIHRvIGNvcHksIG9yIGJvdGguCi0gICAgc3RhdGljIFByb3BlcnR5
VGFibGUqIGNyZWF0ZShKU0dsb2JhbERhdGEmLCB1bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHkpOwot
ICAgIHN0YXRpYyBQcm9wZXJ0eVRhYmxlKiBjbG9uZShKU0dsb2JhbERhdGEmLCBKU0NlbGwqIG93
bmVyLCBjb25zdCBQcm9wZXJ0eVRhYmxlJik7Ci0gICAgc3RhdGljIFByb3BlcnR5VGFibGUqIGNs
b25lKEpTR2xvYmFsRGF0YSYsIEpTQ2VsbCogb3duZXIsIHVuc2lnbmVkIGluaXRpYWxDYXBhY2l0
eSwgY29uc3QgUHJvcGVydHlUYWJsZSYpOworICAgIGV4cGxpY2l0IFByb3BlcnR5VGFibGUodW5z
aWduZWQgaW5pdGlhbENhcGFjaXR5KTsKKyAgICBQcm9wZXJ0eVRhYmxlKEpTR2xvYmFsRGF0YSYs
IEpTQ2VsbCosIGNvbnN0IFByb3BlcnR5VGFibGUmKTsKKyAgICBQcm9wZXJ0eVRhYmxlKEpTR2xv
YmFsRGF0YSYsIEpTQ2VsbCosIHVuc2lnbmVkIGluaXRpYWxDYXBhY2l0eSwgY29uc3QgUHJvcGVy
dHlUYWJsZSYpOwogICAgIH5Qcm9wZXJ0eVRhYmxlKCk7CiAKICAgICAvLyBPcmRlcmVkIGl0ZXJh
dGlvbiBtZXRob2RzLgpAQCAtMTk0LDcgKzE4MSw3IEBAIHB1YmxpYzoKICAgICBQcm9wZXJ0eU9m
ZnNldCBuZXh0T2Zmc2V0KFByb3BlcnR5T2Zmc2V0IGlubGluZUNhcGFjaXR5KTsKIAogICAgIC8v
IENvcHkgdGhpcyBQcm9wZXJ0eVRhYmxlLCBlbnN1cmluZyB0aGUgY29weSBoYXMgYXQgbGVhc3Qg
dGhlIGNhcGFjaXR5IHByb3ZpZGVkLgotICAgIFByb3BlcnR5VGFibGUqIGNvcHkoSlNHbG9iYWxE
YXRhJiwgSlNDZWxsKiBvd25lciwgdW5zaWduZWQgbmV3Q2FwYWNpdHkpOworICAgIFBhc3NPd25Q
dHI8UHJvcGVydHlUYWJsZT4gY29weShKU0dsb2JhbERhdGEmLCBKU0NlbGwqIG93bmVyLCB1bnNp
Z25lZCBuZXdDYXBhY2l0eSk7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgc2l6ZV90IHNpemVJbk1l
bW9yeSgpOwpAQCAtMjAyLDEwICsxODksNiBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToK
LSAgICBQcm9wZXJ0eVRhYmxlKEpTR2xvYmFsRGF0YSYsIHVuc2lnbmVkIGluaXRpYWxDYXBhY2l0
eSk7Ci0gICAgUHJvcGVydHlUYWJsZShKU0dsb2JhbERhdGEmLCBKU0NlbGwqLCBjb25zdCBQcm9w
ZXJ0eVRhYmxlJik7Ci0gICAgUHJvcGVydHlUYWJsZShKU0dsb2JhbERhdGEmLCBKU0NlbGwqLCB1
bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHksIGNvbnN0IFByb3BlcnR5VGFibGUmKTsKLQogICAgIFBy
b3BlcnR5VGFibGUoY29uc3QgUHJvcGVydHlUYWJsZSYpOwogICAgIC8vIFVzZWQgdG8gaW5zZXJ0
IGEgdmFsdWUga25vd24gbm90IHRvIGJlIGluIHRoZSB0YWJsZSwgYW5kIHdoZXJlIHdlIGtub3cg
Y2FwYWNpdHkgdG8gYmUgYXZhaWxhYmxlLgogICAgIHZvaWQgcmVpbnNlcnQoY29uc3QgVmFsdWVU
eXBlJiBlbnRyeSk7CkBAIC0yNTYsNiArMjM5LDcyIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIEVtcHR5RW50cnlJbmRleCA9IDA7CiB9OwogCitpbmxpbmUgUHJvcGVydHlU
YWJsZTo6UHJvcGVydHlUYWJsZSh1bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHkpCisgICAgOiBtX2lu
ZGV4U2l6ZShzaXplRm9yQ2FwYWNpdHkoaW5pdGlhbENhcGFjaXR5KSkKKyAgICAsIG1faW5kZXhN
YXNrKG1faW5kZXhTaXplIC0gMSkKKyAgICAsIG1faW5kZXgoc3RhdGljX2Nhc3Q8dW5zaWduZWQq
PihmYXN0WmVyb2VkTWFsbG9jKGRhdGFTaXplKCkpKSkKKyAgICAsIG1fa2V5Q291bnQoMCkKKyAg
ICAsIG1fZGVsZXRlZENvdW50KDApCit7CisgICAgQVNTRVJUKGlzUG93ZXJPZjIobV9pbmRleFNp
emUpKTsKK30KKworaW5saW5lIFByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUoSlNHbG9iYWxE
YXRhJiwgSlNDZWxsKiBvd25lciwgY29uc3QgUHJvcGVydHlUYWJsZSYgb3RoZXIpCisgICAgOiBt
X2luZGV4U2l6ZShvdGhlci5tX2luZGV4U2l6ZSkKKyAgICAsIG1faW5kZXhNYXNrKG90aGVyLm1f
aW5kZXhNYXNrKQorICAgICwgbV9pbmRleChzdGF0aWNfY2FzdDx1bnNpZ25lZCo+KGZhc3RNYWxs
b2MoZGF0YVNpemUoKSkpKQorICAgICwgbV9rZXlDb3VudChvdGhlci5tX2tleUNvdW50KQorICAg
ICwgbV9kZWxldGVkQ291bnQob3RoZXIubV9kZWxldGVkQ291bnQpCit7CisgICAgQVNTRVJUKGlz
UG93ZXJPZjIobV9pbmRleFNpemUpKTsKKworICAgIG1lbWNweShtX2luZGV4LCBvdGhlci5tX2lu
ZGV4LCBkYXRhU2l6ZSgpKTsKKworICAgIGl0ZXJhdG9yIGVuZCA9IHRoaXMtPmVuZCgpOworICAg
IGZvciAoaXRlcmF0b3IgaXRlciA9IGJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKKyAg
ICAgICAgaXRlci0+a2V5LT5yZWYoKTsKKyAgICAgICAgSGVhcDo6d3JpdGVCYXJyaWVyKG93bmVy
LCBpdGVyLT5zcGVjaWZpY1ZhbHVlLmdldCgpKTsKKyAgICB9CisKKyAgICAvLyBDb3B5IHRoZSBt
X2RlbGV0ZWRPZmZzZXRzIHZlY3Rvci4KKyAgICBWZWN0b3I8UHJvcGVydHlPZmZzZXQ+KiBvdGhl
ckRlbGV0ZWRPZmZzZXRzID0gb3RoZXIubV9kZWxldGVkT2Zmc2V0cy5nZXQoKTsKKyAgICBpZiAo
b3RoZXJEZWxldGVkT2Zmc2V0cykKKyAgICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9IGFkb3B0UHRy
KG5ldyBWZWN0b3I8UHJvcGVydHlPZmZzZXQ+KCpvdGhlckRlbGV0ZWRPZmZzZXRzKSk7Cit9CisK
K2lubGluZSBQcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKEpTR2xvYmFsRGF0YSYsIEpTQ2Vs
bCogb3duZXIsIHVuc2lnbmVkIGluaXRpYWxDYXBhY2l0eSwgY29uc3QgUHJvcGVydHlUYWJsZSYg
b3RoZXIpCisgICAgOiBtX2luZGV4U2l6ZShzaXplRm9yQ2FwYWNpdHkoaW5pdGlhbENhcGFjaXR5
KSkKKyAgICAsIG1faW5kZXhNYXNrKG1faW5kZXhTaXplIC0gMSkKKyAgICAsIG1faW5kZXgoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQqPihmYXN0WmVyb2VkTWFsbG9jKGRhdGFTaXplKCkpKSkKKyAgICAs
IG1fa2V5Q291bnQoMCkKKyAgICAsIG1fZGVsZXRlZENvdW50KDApCit7CisgICAgQVNTRVJUKGlz
UG93ZXJPZjIobV9pbmRleFNpemUpKTsKKyAgICBBU1NFUlQoaW5pdGlhbENhcGFjaXR5ID49IG90
aGVyLm1fa2V5Q291bnQpOworCisgICAgY29uc3RfaXRlcmF0b3IgZW5kID0gb3RoZXIuZW5kKCk7
CisgICAgZm9yIChjb25zdF9pdGVyYXRvciBpdGVyID0gb3RoZXIuYmVnaW4oKTsgaXRlciAhPSBl
bmQ7ICsraXRlcikgeworICAgICAgICBBU1NFUlQoY2FuSW5zZXJ0KCkpOworICAgICAgICByZWlu
c2VydCgqaXRlcik7CisgICAgICAgIGl0ZXItPmtleS0+cmVmKCk7CisgICAgICAgIEhlYXA6Ondy
aXRlQmFycmllcihvd25lciwgaXRlci0+c3BlY2lmaWNWYWx1ZS5nZXQoKSk7CisgICAgfQorCisg
ICAgLy8gQ29weSB0aGUgbV9kZWxldGVkT2Zmc2V0cyB2ZWN0b3IuCisgICAgVmVjdG9yPFByb3Bl
cnR5T2Zmc2V0Piogb3RoZXJEZWxldGVkT2Zmc2V0cyA9IG90aGVyLm1fZGVsZXRlZE9mZnNldHMu
Z2V0KCk7CisgICAgaWYgKG90aGVyRGVsZXRlZE9mZnNldHMpCisgICAgICAgIG1fZGVsZXRlZE9m
ZnNldHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPFByb3BlcnR5T2Zmc2V0Pigqb3RoZXJEZWxldGVk
T2Zmc2V0cykpOworfQorCitpbmxpbmUgUHJvcGVydHlUYWJsZTo6flByb3BlcnR5VGFibGUoKQor
eworICAgIGl0ZXJhdG9yIGVuZCA9IHRoaXMtPmVuZCgpOworICAgIGZvciAoaXRlcmF0b3IgaXRl
ciA9IGJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCisgICAgICAgIGl0ZXItPmtleS0+ZGVy
ZWYoKTsKKworICAgIGZhc3RGcmVlKG1faW5kZXgpOworfQorCiBpbmxpbmUgUHJvcGVydHlUYWJs
ZTo6aXRlcmF0b3IgUHJvcGVydHlUYWJsZTo6YmVnaW4oKQogewogICAgIHJldHVybiBpdGVyYXRv
cihza2lwRGVsZXRlZEVudHJpZXModGFibGUoKSkpOwpAQCAtNDUzLDE1ICs1MDIsMTUgQEAgaW5s
aW5lIFByb3BlcnR5T2Zmc2V0IFByb3BlcnR5VGFibGU6Om5leHRPZmZzZXQoUHJvcGVydHlPZmZz
ZXQgaW5saW5lQ2FwYWNpdHkpCiAgICAgcmV0dXJuIG9mZnNldEZvclByb3BlcnR5TnVtYmVyKHNp
emUoKSwgaW5saW5lQ2FwYWNpdHkpOwogfQogCi1pbmxpbmUgUHJvcGVydHlUYWJsZSogUHJvcGVy
dHlUYWJsZTo6Y29weShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQ2VsbCogb3duZXIsIHVu
c2lnbmVkIG5ld0NhcGFjaXR5KQoraW5saW5lIFBhc3NPd25QdHI8UHJvcGVydHlUYWJsZT4gUHJv
cGVydHlUYWJsZTo6Y29weShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQ2VsbCogb3duZXIs
IHVuc2lnbmVkIG5ld0NhcGFjaXR5KQogewogICAgIEFTU0VSVChuZXdDYXBhY2l0eSA+PSBtX2tl
eUNvdW50KTsKIAogICAgIC8vIEZhc3QgY2FzZTsgaWYgdGhlIG5ldyB0YWJsZSB3aWxsIGJlIHRo
ZSBzYW1lIG1faW5kZXhTaXplIGFzIHRoaXMgb25lLCB3ZSBjYW4gbWVtY3B5IGl0LAogICAgIC8v
IHNhdmUgcmVoYXNoaW5nIGFsbCBrZXlzLgogICAgIGlmIChzaXplRm9yQ2FwYWNpdHkobmV3Q2Fw
YWNpdHkpID09IG1faW5kZXhTaXplKQotICAgICAgICByZXR1cm4gUHJvcGVydHlUYWJsZTo6Y2xv
bmUoZ2xvYmFsRGF0YSwgb3duZXIsICp0aGlzKTsKLSAgICByZXR1cm4gUHJvcGVydHlUYWJsZTo6
Y2xvbmUoZ2xvYmFsRGF0YSwgb3duZXIsIG5ld0NhcGFjaXR5LCAqdGhpcyk7CisgICAgICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgUHJvcGVydHlUYWJsZShnbG9iYWxEYXRhLCBvd25lciwgKnRoaXMp
KTsKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFByb3BlcnR5VGFibGUoZ2xvYmFsRGF0YSwgb3du
ZXIsIG5ld0NhcGFjaXR5LCAqdGhpcykpOwogfQogCiAjaWZuZGVmIE5ERUJVRwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggOTlkMjY3NjI2NTQ3OTZlNmMwMjAzOTQ0OTQ1MTgxNDg3NjUwZGYy
YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDE0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
UHJvcGVydHlNYXBIYXNoVGFibGUuaCIKLQotI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgi
Ci0jaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgotI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5l
cy5oIgotI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0K
LWNvbnN0IENsYXNzSW5mbyBQcm9wZXJ0eVRhYmxlOjpzX2luZm8gPSB7ICJQcm9wZXJ0eVRhYmxl
IiwgMCwgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShQcm9wZXJ0eVRhYmxlKSB9OwotCi1Qcm9w
ZXJ0eVRhYmxlKiBQcm9wZXJ0eVRhYmxlOjpjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCB1bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHkpCi17Ci0gICAgUHJvcGVydHlUYWJsZSogdGFibGUg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxQcm9wZXJ0eVRhYmxlPihnbG9iYWxEYXRhLmhl
YXApKSBQcm9wZXJ0eVRhYmxlKGdsb2JhbERhdGEsIGluaXRpYWxDYXBhY2l0eSk7Ci0gICAgdGFi
bGUtPmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEpOwotICAgIHJldHVybiB0YWJsZTsKLX0KLQot
UHJvcGVydHlUYWJsZSogUHJvcGVydHlUYWJsZTo6Y2xvbmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBKU0NlbGwqIG93bmVyLCBjb25zdCBQcm9wZXJ0eVRhYmxlJiBvdGhlcikKLXsKLSAgICBQ
cm9wZXJ0eVRhYmxlKiB0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFByb3BlcnR5
VGFibGU+KGdsb2JhbERhdGEuaGVhcCkpIFByb3BlcnR5VGFibGUoZ2xvYmFsRGF0YSwgb3duZXIs
IG90aGVyKTsKLSAgICB0YWJsZS0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7Ci0gICAgcmV0
dXJuIHRhYmxlOwotfQotCi1Qcm9wZXJ0eVRhYmxlKiBQcm9wZXJ0eVRhYmxlOjpjbG9uZShKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQ2VsbCogb3duZXIsIHVuc2lnbmVkIGluaXRpYWxDYXBh
Y2l0eSwgY29uc3QgUHJvcGVydHlUYWJsZSYgb3RoZXIpCi17Ci0gICAgUHJvcGVydHlUYWJsZSog
dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxQcm9wZXJ0eVRhYmxlPihnbG9iYWxE
YXRhLmhlYXApKSBQcm9wZXJ0eVRhYmxlKGdsb2JhbERhdGEsIG93bmVyLCBpbml0aWFsQ2FwYWNp
dHksIG90aGVyKTsKLSAgICB0YWJsZS0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7Ci0gICAg
cmV0dXJuIHRhYmxlOwotfQotCi1Qcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgdW5zaWduZWQgaW5pdGlhbENhcGFjaXR5KQotICAgIDogSlNDZWxs
KGdsb2JhbERhdGEsIGdsb2JhbERhdGEucHJvcGVydHlUYWJsZVN0cnVjdHVyZS5nZXQoKSkKLSAg
ICAsIG1faW5kZXhTaXplKHNpemVGb3JDYXBhY2l0eShpbml0aWFsQ2FwYWNpdHkpKQotICAgICwg
bV9pbmRleE1hc2sobV9pbmRleFNpemUgLSAxKQotICAgICwgbV9pbmRleChzdGF0aWNfY2FzdDx1
bnNpZ25lZCo+KGZhc3RaZXJvZWRNYWxsb2MoZGF0YVNpemUoKSkpKQotICAgICwgbV9rZXlDb3Vu
dCgwKQotICAgICwgbV9kZWxldGVkQ291bnQoMCkKLXsKLSAgICBBU1NFUlQoaXNQb3dlck9mMiht
X2luZGV4U2l6ZSkpOwotfQotCi1Qcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25lciwgY29uc3QgUHJvcGVydHlUYWJsZSYgb3Ro
ZXIpCi0gICAgOiBKU0NlbGwoZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS5wcm9wZXJ0eVRhYmxlU3Ry
dWN0dXJlLmdldCgpKQotICAgICwgbV9pbmRleFNpemUob3RoZXIubV9pbmRleFNpemUpCi0gICAg
LCBtX2luZGV4TWFzayhvdGhlci5tX2luZGV4TWFzaykKLSAgICAsIG1faW5kZXgoc3RhdGljX2Nh
c3Q8dW5zaWduZWQqPihmYXN0TWFsbG9jKGRhdGFTaXplKCkpKSkKLSAgICAsIG1fa2V5Q291bnQo
b3RoZXIubV9rZXlDb3VudCkKLSAgICAsIG1fZGVsZXRlZENvdW50KG90aGVyLm1fZGVsZXRlZENv
dW50KQotewotICAgIEFTU0VSVChpc1Bvd2VyT2YyKG1faW5kZXhTaXplKSk7Ci0KLSAgICBtZW1j
cHkobV9pbmRleCwgb3RoZXIubV9pbmRleCwgZGF0YVNpemUoKSk7Ci0KLSAgICBpdGVyYXRvciBl
bmQgPSB0aGlzLT5lbmQoKTsKLSAgICBmb3IgKGl0ZXJhdG9yIGl0ZXIgPSBiZWdpbigpOyBpdGVy
ICE9IGVuZDsgKytpdGVyKSB7Ci0gICAgICAgIGl0ZXItPmtleS0+cmVmKCk7Ci0gICAgICAgIEhl
YXA6OndyaXRlQmFycmllcihvd25lciwgaXRlci0+c3BlY2lmaWNWYWx1ZS5nZXQoKSk7Ci0gICAg
fQotCi0gICAgLy8gQ29weSB0aGUgbV9kZWxldGVkT2Zmc2V0cyB2ZWN0b3IuCi0gICAgVmVjdG9y
PFByb3BlcnR5T2Zmc2V0Piogb3RoZXJEZWxldGVkT2Zmc2V0cyA9IG90aGVyLm1fZGVsZXRlZE9m
ZnNldHMuZ2V0KCk7Ci0gICAgaWYgKG90aGVyRGVsZXRlZE9mZnNldHMpCi0gICAgICAgIG1fZGVs
ZXRlZE9mZnNldHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPFByb3BlcnR5T2Zmc2V0Pigqb3RoZXJE
ZWxldGVkT2Zmc2V0cykpOwotfQotCi1Qcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25lciwgdW5zaWduZWQgaW5pdGlhbENhcGFj
aXR5LCBjb25zdCBQcm9wZXJ0eVRhYmxlJiBvdGhlcikKLSAgICA6IEpTQ2VsbChnbG9iYWxEYXRh
LCBnbG9iYWxEYXRhLnByb3BlcnR5VGFibGVTdHJ1Y3R1cmUuZ2V0KCkpCi0gICAgLCBtX2luZGV4
U2l6ZShzaXplRm9yQ2FwYWNpdHkoaW5pdGlhbENhcGFjaXR5KSkKLSAgICAsIG1faW5kZXhNYXNr
KG1faW5kZXhTaXplIC0gMSkKLSAgICAsIG1faW5kZXgoc3RhdGljX2Nhc3Q8dW5zaWduZWQqPihm
YXN0WmVyb2VkTWFsbG9jKGRhdGFTaXplKCkpKSkKLSAgICAsIG1fa2V5Q291bnQoMCkKLSAgICAs
IG1fZGVsZXRlZENvdW50KDApCi17Ci0gICAgQVNTRVJUKGlzUG93ZXJPZjIobV9pbmRleFNpemUp
KTsKLSAgICBBU1NFUlQoaW5pdGlhbENhcGFjaXR5ID49IG90aGVyLm1fa2V5Q291bnQpOwotCi0g
ICAgY29uc3RfaXRlcmF0b3IgZW5kID0gb3RoZXIuZW5kKCk7Ci0gICAgZm9yIChjb25zdF9pdGVy
YXRvciBpdGVyID0gb3RoZXIuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewotICAgICAg
ICBBU1NFUlQoY2FuSW5zZXJ0KCkpOwotICAgICAgICByZWluc2VydCgqaXRlcik7Ci0gICAgICAg
IGl0ZXItPmtleS0+cmVmKCk7Ci0gICAgICAgIEhlYXA6OndyaXRlQmFycmllcihvd25lciwgaXRl
ci0+c3BlY2lmaWNWYWx1ZS5nZXQoKSk7Ci0gICAgfQotCi0gICAgLy8gQ29weSB0aGUgbV9kZWxl
dGVkT2Zmc2V0cyB2ZWN0b3IuCi0gICAgVmVjdG9yPFByb3BlcnR5T2Zmc2V0Piogb3RoZXJEZWxl
dGVkT2Zmc2V0cyA9IG90aGVyLm1fZGVsZXRlZE9mZnNldHMuZ2V0KCk7Ci0gICAgaWYgKG90aGVy
RGVsZXRlZE9mZnNldHMpCi0gICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBhZG9wdFB0cihuZXcg
VmVjdG9yPFByb3BlcnR5T2Zmc2V0Pigqb3RoZXJEZWxldGVkT2Zmc2V0cykpOwotfQotCi12b2lk
IFByb3BlcnR5VGFibGU6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQotewotICAgIHN0YXRpY19jYXN0
PFByb3BlcnR5VGFibGUqPihjZWxsKS0+UHJvcGVydHlUYWJsZTo6flByb3BlcnR5VGFibGUoKTsK
LX0KLQotUHJvcGVydHlUYWJsZTo6flByb3BlcnR5VGFibGUoKQotewotICAgIGl0ZXJhdG9yIGVu
ZCA9IHRoaXMtPmVuZCgpOwotICAgIGZvciAoaXRlcmF0b3IgaXRlciA9IGJlZ2luKCk7IGl0ZXIg
IT0gZW5kOyArK2l0ZXIpCi0gICAgICAgIGl0ZXItPmtleS0+ZGVyZWYoKTsKLQotICAgIGZhc3RG
cmVlKG1faW5kZXgpOwotfQotCi12b2lkIFByb3BlcnR5VGFibGU6OnZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKLXsKLSAgICBQcm9wZXJ0eVRhYmxlKiB0
aGlzT2JqZWN0ID0ganNDYXN0PFByb3BlcnR5VGFibGUqPihjZWxsKTsKLSAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwotICAgIEFTU0VSVCh0aGlzT2Jq
ZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwot
Ci0gICAgSlNDZWxsOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwotCi0gICAg
UHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgZW5kID0gdGhpc09iamVjdC0+ZW5kKCk7Ci0gICAgZm9y
IChQcm9wZXJ0eVRhYmxlOjppdGVyYXRvciBwdHIgPSB0aGlzT2JqZWN0LT5iZWdpbigpOyBwdHIg
IT0gZW5kOyArK3B0cikKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJnB0ci0+c3BlY2lmaWNWYWx1
ZSk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3Bw
CmluZGV4IDk3MzE2NmZmMTZkYzFlNmI3YjYxM2E1NDcyM2FmODIzMTk2ZGI3YzMuLmI3OWMxMDZl
ZmMwYmNhOTY4ZjMyMGQxYzc2NDkwMTBlZWZlYTkxMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtMTMxLDkgKzEzMSw5IEBAIHZvaWQgU3RydWN0
dXJlOjpkdW1wU3RhdGlzdGljcygpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
IAotICAgICAgICBpZiAoc3RydWN0dXJlLT5wcm9wZXJ0eVRhYmxlKCkpIHsKKyAgICAgICAgaWYg
KHN0cnVjdHVyZS0+bV9wcm9wZXJ0eVRhYmxlKSB7CiAgICAgICAgICAgICArK251bWJlcldpdGhQ
cm9wZXJ0eU1hcHM7Ci0gICAgICAgICAgICB0b3RhbFByb3BlcnR5TWFwc1NpemUgKz0gc3RydWN0
dXJlLT5wcm9wZXJ0eVRhYmxlKCktPnNpemVJbk1lbW9yeSgpOworICAgICAgICAgICAgdG90YWxQ
cm9wZXJ0eU1hcHNTaXplICs9IHN0cnVjdHVyZS0+bV9wcm9wZXJ0eVRhYmxlLT5zaXplSW5NZW1v
cnkoKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjM0LDcgKzIzNCw3IEBAIHZvaWQgU3RydWN0
dXJlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIHZvaWQgU3RydWN0dXJlOjptYXRlcmlhbGl6ZVBy
b3BlcnR5TWFwKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKIHsKICAgICBBU1NFUlQoc3RydWN0
dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2luZm8pOwotICAgIEFTU0VSVCghcHJvcGVydHlUYWJs
ZSgpKTsKKyAgICBBU1NFUlQoIW1fcHJvcGVydHlUYWJsZSk7CiAKICAgICBWZWN0b3I8U3RydWN0
dXJlKiwgOD4gc3RydWN0dXJlczsKICAgICBzdHJ1Y3R1cmVzLmFwcGVuZCh0aGlzKTsKQEAgLTI0
NCwyNSArMjQ0LDI1IEBAIHZvaWQgU3RydWN0dXJlOjptYXRlcmlhbGl6ZVByb3BlcnR5TWFwKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKICAgICAvLyBTZWFyY2ggZm9yIHRoZSBsYXN0IFN0cnVj
dHVyZSB3aXRoIGEgcHJvcGVydHkgdGFibGUuCiAgICAgd2hpbGUgKChzdHJ1Y3R1cmUgPSBzdHJ1
Y3R1cmUtPnByZXZpb3VzSUQoKSkpIHsKICAgICAgICAgaWYgKHN0cnVjdHVyZS0+bV9pc1Bpbm5l
ZFByb3BlcnR5VGFibGUpIHsKLSAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPnByb3BlcnR5
VGFibGUoKSk7CisgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5tX3Byb3BlcnR5VGFibGUp
OwogICAgICAgICAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSk7CiAKLSAgICAg
ICAgICAgIHByb3BlcnR5VGFibGUoKS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgc3RydWN0dXJlLT5w
cm9wZXJ0eVRhYmxlKCktPmNvcHkoZ2xvYmFsRGF0YSwgMCwgbnVtYmVyT2ZTbG90c0Zvckxhc3RP
ZmZzZXQobV9vZmZzZXQsIG1faW5saW5lQ2FwYWNpdHkpKSk7CisgICAgICAgICAgICBtX3Byb3Bl
cnR5VGFibGUgPSBzdHJ1Y3R1cmUtPm1fcHJvcGVydHlUYWJsZS0+Y29weShnbG9iYWxEYXRhLCAw
LCBudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldChtX29mZnNldCwgbV9pbmxpbmVDYXBhY2l0eSkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICBzdHJ1Y3R1cmVzLmFw
cGVuZChzdHJ1Y3R1cmUpOwogICAgIH0KIAotICAgIGlmICghcHJvcGVydHlUYWJsZSgpKQotICAg
ICAgICBjcmVhdGVQcm9wZXJ0eU1hcChnbG9iYWxEYXRhLCBudW1iZXJPZlNsb3RzRm9yTGFzdE9m
ZnNldChtX29mZnNldCwgbV9pbmxpbmVDYXBhY2l0eSkpOworICAgIGlmICghbV9wcm9wZXJ0eVRh
YmxlKQorICAgICAgICBjcmVhdGVQcm9wZXJ0eU1hcChudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNl
dChtX29mZnNldCwgbV9pbmxpbmVDYXBhY2l0eSkpOwogCiAgICAgZm9yIChwdHJkaWZmX3QgaSA9
IHN0cnVjdHVyZXMuc2l6ZSgpIC0gMTsgaSA+PSAwOyAtLWkpIHsKICAgICAgICAgc3RydWN0dXJl
ID0gc3RydWN0dXJlc1tpXTsKICAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPm1fbmFtZUluUHJldmlv
dXMpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgUHJvcGVydHlNYXBFbnRyeSBlbnRy
eShnbG9iYWxEYXRhLCB0aGlzLCBzdHJ1Y3R1cmUtPm1fbmFtZUluUHJldmlvdXMuZ2V0KCksIHN0
cnVjdHVyZS0+bV9vZmZzZXQsIHN0cnVjdHVyZS0+bV9hdHRyaWJ1dGVzSW5QcmV2aW91cywgc3Ry
dWN0dXJlLT5tX3NwZWNpZmljVmFsdWVJblByZXZpb3VzLmdldCgpKTsKLSAgICAgICAgcHJvcGVy
dHlUYWJsZSgpLT5hZGQoZW50cnksIG1fb2Zmc2V0LCBQcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eU9m
ZnNldE11c3ROb3RDaGFuZ2UpOworICAgICAgICBtX3Byb3BlcnR5VGFibGUtPmFkZChlbnRyeSwg
bV9vZmZzZXQsIFByb3BlcnR5VGFibGU6OlByb3BlcnR5T2Zmc2V0TXVzdE5vdENoYW5nZSk7CiAg
ICAgfQogICAgIAogICAgIGNoZWNrT2Zmc2V0Q29uc2lzdGVuY3koKTsKQEAgLTI4Nyw5ICsyODcs
OSBAQCB2b2lkIFN0cnVjdHVyZTo6ZGVzcGVjaWZ5RGljdGlvbmFyeUZ1bmN0aW9uKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYQogICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJ
Zk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsKIAogICAgIEFTU0VSVChpc0RpY3Rpb25hcnkoKSk7Ci0g
ICAgQVNTRVJUKHByb3BlcnR5VGFibGUoKSk7CisgICAgQVNTRVJUKG1fcHJvcGVydHlUYWJsZSk7
CiAKLSAgICBQcm9wZXJ0eU1hcEVudHJ5KiBlbnRyeSA9IHByb3BlcnR5VGFibGUoKS0+ZmluZChy
ZXApLmZpcnN0OworICAgIFByb3BlcnR5TWFwRW50cnkqIGVudHJ5ID0gbV9wcm9wZXJ0eVRhYmxl
LT5maW5kKHJlcCkuZmlyc3Q7CiAgICAgQVNTRVJUKGVudHJ5KTsKICAgICBlbnRyeS0+c3BlY2lm
aWNWYWx1ZS5jbGVhcigpOwogfQpAQCAtMzczLDE5ICszNzMsMTcgQEAgU3RydWN0dXJlKiBTdHJ1
Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0
cnVjdHVyZSoKICAgICB0cmFuc2l0aW9uLT5tX2F0dHJpYnV0ZXNJblByZXZpb3VzID0gYXR0cmli
dXRlczsKICAgICB0cmFuc2l0aW9uLT5tX3NwZWNpZmljVmFsdWVJblByZXZpb3VzLnNldE1heUJl
TnVsbChnbG9iYWxEYXRhLCB0cmFuc2l0aW9uLCBzcGVjaWZpY1ZhbHVlKTsKIAotICAgIGlmIChz
dHJ1Y3R1cmUtPnByb3BlcnR5VGFibGUoKSkgeworICAgIGlmIChzdHJ1Y3R1cmUtPm1fcHJvcGVy
dHlUYWJsZSkgewogICAgICAgICBzdHJ1Y3R1cmUtPmNoZWNrT2Zmc2V0Q29uc2lzdGVuY3koKTsK
ICAgICAgICAgaWYgKHN0cnVjdHVyZS0+bV9pc1Bpbm5lZFByb3BlcnR5VGFibGUpCi0gICAgICAg
ICAgICB0cmFuc2l0aW9uLT5wcm9wZXJ0eVRhYmxlKCkuc2V0KGdsb2JhbERhdGEsIHRyYW5zaXRp
b24sIHN0cnVjdHVyZS0+cHJvcGVydHlUYWJsZSgpLT5jb3B5KGdsb2JhbERhdGEsIHRyYW5zaXRp
b24sIHN0cnVjdHVyZS0+cHJvcGVydHlUYWJsZSgpLT5zaXplKCkgKyAxKSk7Ci0gICAgICAgIGVs
c2UgewotICAgICAgICAgICAgdHJhbnNpdGlvbi0+cHJvcGVydHlUYWJsZSgpLnNldChnbG9iYWxE
YXRhLCB0cmFuc2l0aW9uLCBzdHJ1Y3R1cmUtPnByb3BlcnR5VGFibGUoKS5nZXQoKSk7Ci0gICAg
ICAgICAgICBzdHJ1Y3R1cmUtPnByb3BlcnR5VGFibGUoKS5jbGVhcigpOwotICAgICAgICB9Cisg
ICAgICAgICAgICB0cmFuc2l0aW9uLT5tX3Byb3BlcnR5VGFibGUgPSBzdHJ1Y3R1cmUtPm1fcHJv
cGVydHlUYWJsZS0+Y29weShnbG9iYWxEYXRhLCB0cmFuc2l0aW9uLCBzdHJ1Y3R1cmUtPm1fcHJv
cGVydHlUYWJsZS0+c2l6ZSgpICsgMSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRyYW5z
aXRpb24tPm1fcHJvcGVydHlUYWJsZSA9IHN0cnVjdHVyZS0+bV9wcm9wZXJ0eVRhYmxlLnJlbGVh
c2UoKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoc3RydWN0dXJlLT5wcmV2aW91c0lEKCkp
CiAgICAgICAgICAgICB0cmFuc2l0aW9uLT5tYXRlcmlhbGl6ZVByb3BlcnR5TWFwKGdsb2JhbERh
dGEpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICB0cmFuc2l0aW9uLT5jcmVhdGVQcm9wZXJ0
eU1hcChnbG9iYWxEYXRhKTsKKyAgICAgICAgICAgIHRyYW5zaXRpb24tPmNyZWF0ZVByb3BlcnR5
TWFwKCk7CiAgICAgfQogICAgIHRyYW5zaXRpb24tPm1fb2Zmc2V0ID0gc3RydWN0dXJlLT5tX29m
ZnNldDsKIApAQCAtNDE3LDcgKzQxNSw3IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjpjaGFuZ2VQ
cm90b3R5cGVUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0CiAgICAg
dHJhbnNpdGlvbi0+bV9wcm90b3R5cGUuc2V0KGdsb2JhbERhdGEsIHRyYW5zaXRpb24sIHByb3Rv
dHlwZSk7CiAKICAgICBzdHJ1Y3R1cmUtPm1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2Fy
eShnbG9iYWxEYXRhKTsKLSAgICB0cmFuc2l0aW9uLT5wcm9wZXJ0eVRhYmxlKCkuc2V0KGdsb2Jh
bERhdGEsIHRyYW5zaXRpb24sIHN0cnVjdHVyZS0+Y29weVByb3BlcnR5VGFibGVGb3JQaW5uaW5n
KGdsb2JhbERhdGEsIHRyYW5zaXRpb24pKTsKKyAgICB0cmFuc2l0aW9uLT5tX3Byb3BlcnR5VGFi
bGUgPSBzdHJ1Y3R1cmUtPmNvcHlQcm9wZXJ0eVRhYmxlRm9yUGlubmluZyhnbG9iYWxEYXRhLCB0
cmFuc2l0aW9uKTsKICAgICB0cmFuc2l0aW9uLT5tX29mZnNldCA9IHN0cnVjdHVyZS0+bV9vZmZz
ZXQ7CiAgICAgdHJhbnNpdGlvbi0+cGluKCk7CiAKQEAgLTQzMyw3ICs0MzEsNyBAQCBTdHJ1Y3R1
cmUqIFN0cnVjdHVyZTo6ZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgU3RydQogICAgICsrdHJhbnNpdGlvbi0+bV9zcGVjaWZpY0Z1bmN0aW9uVGhy
YXNoQ291bnQ7CiAKICAgICBzdHJ1Y3R1cmUtPm1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vz
c2FyeShnbG9iYWxEYXRhKTsKLSAgICB0cmFuc2l0aW9uLT5wcm9wZXJ0eVRhYmxlKCkuc2V0KGds
b2JhbERhdGEsIHRyYW5zaXRpb24sIHN0cnVjdHVyZS0+Y29weVByb3BlcnR5VGFibGVGb3JQaW5u
aW5nKGdsb2JhbERhdGEsIHRyYW5zaXRpb24pKTsKKyAgICB0cmFuc2l0aW9uLT5tX3Byb3BlcnR5
VGFibGUgPSBzdHJ1Y3R1cmUtPmNvcHlQcm9wZXJ0eVRhYmxlRm9yUGlubmluZyhnbG9iYWxEYXRh
LCB0cmFuc2l0aW9uKTsKICAgICB0cmFuc2l0aW9uLT5tX29mZnNldCA9IHN0cnVjdHVyZS0+bV9v
ZmZzZXQ7CiAgICAgdHJhbnNpdGlvbi0+cGluKCk7CiAKQEAgLTQ1NCwxNSArNDUyLDE1IEBAIFN0
cnVjdHVyZSogU3RydWN0dXJlOjphdHRyaWJ1dGVDaGFuZ2VUcmFuc2l0aW9uKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgU3RydWN0CiAgICAgICAgIFN0cnVjdHVyZSogdHJhbnNpdGlvbiA9IGNy
ZWF0ZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwogCiAgICAgICAgIHN0cnVjdHVyZS0+bWF0ZXJp
YWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEpOwotICAgICAgICB0cmFuc2l0
aW9uLT5wcm9wZXJ0eVRhYmxlKCkuc2V0KGdsb2JhbERhdGEsIHRyYW5zaXRpb24sIHN0cnVjdHVy
ZS0+Y29weVByb3BlcnR5VGFibGVGb3JQaW5uaW5nKGdsb2JhbERhdGEsIHRyYW5zaXRpb24pKTsK
KyAgICAgICAgdHJhbnNpdGlvbi0+bV9wcm9wZXJ0eVRhYmxlID0gc3RydWN0dXJlLT5jb3B5UHJv
cGVydHlUYWJsZUZvclBpbm5pbmcoZ2xvYmFsRGF0YSwgdHJhbnNpdGlvbik7CiAgICAgICAgIHRy
YW5zaXRpb24tPm1fb2Zmc2V0ID0gc3RydWN0dXJlLT5tX29mZnNldDsKICAgICAgICAgdHJhbnNp
dGlvbi0+cGluKCk7CiAgICAgICAgIAogICAgICAgICBzdHJ1Y3R1cmUgPSB0cmFuc2l0aW9uOwog
ICAgIH0KIAotICAgIEFTU0VSVChzdHJ1Y3R1cmUtPnByb3BlcnR5VGFibGUoKSk7Ci0gICAgUHJv
cGVydHlNYXBFbnRyeSogZW50cnkgPSBzdHJ1Y3R1cmUtPnByb3BlcnR5VGFibGUoKS0+ZmluZChw
cm9wZXJ0eU5hbWUudWlkKCkpLmZpcnN0OworICAgIEFTU0VSVChzdHJ1Y3R1cmUtPm1fcHJvcGVy
dHlUYWJsZSk7CisgICAgUHJvcGVydHlNYXBFbnRyeSogZW50cnkgPSBzdHJ1Y3R1cmUtPm1fcHJv
cGVydHlUYWJsZS0+ZmluZChwcm9wZXJ0eU5hbWUudWlkKCkpLmZpcnN0OwogICAgIEFTU0VSVChl
bnRyeSk7CiAgICAgZW50cnktPmF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzOwogCkBAIC00NzcsNyAr
NDc1LDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnRvRGljdGlvbmFyeVRyYW5zaXRpb24oSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUKICAgICBTdHJ1Y3R1cmUqIHRyYW5zaXRp
b24gPSBjcmVhdGUoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKIAogICAgIHN0cnVjdHVyZS0+bWF0
ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEpOwotICAgIHRyYW5zaXRp
b24tPnByb3BlcnR5VGFibGUoKS5zZXQoZ2xvYmFsRGF0YSwgdHJhbnNpdGlvbiwgc3RydWN0dXJl
LT5jb3B5UHJvcGVydHlUYWJsZUZvclBpbm5pbmcoZ2xvYmFsRGF0YSwgdHJhbnNpdGlvbikpOwor
ICAgIHRyYW5zaXRpb24tPm1fcHJvcGVydHlUYWJsZSA9IHN0cnVjdHVyZS0+Y29weVByb3BlcnR5
VGFibGVGb3JQaW5uaW5nKGdsb2JhbERhdGEsIHRyYW5zaXRpb24pOwogICAgIHRyYW5zaXRpb24t
Pm1fb2Zmc2V0ID0gc3RydWN0dXJlLT5tX29mZnNldDsKICAgICB0cmFuc2l0aW9uLT5tX2RpY3Rp
b25hcnlLaW5kID0ga2luZDsKICAgICB0cmFuc2l0aW9uLT5waW4oKTsKQEAgLTUwMSw5ICs0OTks
OSBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6c2VhbFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdAogewogICAgIFN0cnVjdHVyZSogdHJhbnNpdGlv
biA9IHByZXZlbnRFeHRlbnNpb25zVHJhbnNpdGlvbihnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwog
Ci0gICAgaWYgKHRyYW5zaXRpb24tPnByb3BlcnR5VGFibGUoKSkgewotICAgICAgICBQcm9wZXJ0
eVRhYmxlOjppdGVyYXRvciBlbmQgPSB0cmFuc2l0aW9uLT5wcm9wZXJ0eVRhYmxlKCktPmVuZCgp
OwotICAgICAgICBmb3IgKFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIGl0ZXIgPSB0cmFuc2l0aW9u
LT5wcm9wZXJ0eVRhYmxlKCktPmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCisgICAgaWYg
KHRyYW5zaXRpb24tPm1fcHJvcGVydHlUYWJsZSkgeworICAgICAgICBQcm9wZXJ0eVRhYmxlOjpp
dGVyYXRvciBlbmQgPSB0cmFuc2l0aW9uLT5tX3Byb3BlcnR5VGFibGUtPmVuZCgpOworICAgICAg
ICBmb3IgKFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIGl0ZXIgPSB0cmFuc2l0aW9uLT5tX3Byb3Bl
cnR5VGFibGUtPmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCiAgICAgICAgICAgICBpdGVy
LT5hdHRyaWJ1dGVzIHw9IERvbnREZWxldGU7CiAgICAgfQogCkBAIC01MTYsOSArNTE0LDkgQEAg
U3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmZyZWV6ZVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnUKIHsKICAgICBTdHJ1Y3R1cmUqIHRyYW5zaXRpb24gPSBw
cmV2ZW50RXh0ZW5zaW9uc1RyYW5zaXRpb24oZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKIAotICAg
IGlmICh0cmFuc2l0aW9uLT5wcm9wZXJ0eVRhYmxlKCkpIHsKLSAgICAgICAgUHJvcGVydHlUYWJs
ZTo6aXRlcmF0b3IgaXRlciA9IHRyYW5zaXRpb24tPnByb3BlcnR5VGFibGUoKS0+YmVnaW4oKTsK
LSAgICAgICAgUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgZW5kID0gdHJhbnNpdGlvbi0+cHJvcGVy
dHlUYWJsZSgpLT5lbmQoKTsKKyAgICBpZiAodHJhbnNpdGlvbi0+bV9wcm9wZXJ0eVRhYmxlKSB7
CisgICAgICAgIFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIGl0ZXIgPSB0cmFuc2l0aW9uLT5tX3By
b3BlcnR5VGFibGUtPmJlZ2luKCk7CisgICAgICAgIFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIGVu
ZCA9IHRyYW5zaXRpb24tPm1fcHJvcGVydHlUYWJsZS0+ZW5kKCk7CiAgICAgICAgIGlmIChpdGVy
ICE9IGVuZCkKICAgICAgICAgICAgIHRyYW5zaXRpb24tPm1faGFzUmVhZE9ubHlPckdldHRlclNl
dHRlclByb3BlcnRpZXNFeGNsdWRpbmdQcm90byA9IHRydWU7CiAgICAgICAgIGZvciAoOyBpdGVy
ICE9IGVuZDsgKytpdGVyKQpAQCAtNTM3LDcgKzUzNSw3IEBAIFN0cnVjdHVyZSogU3RydWN0dXJl
OjpwcmV2ZW50RXh0ZW5zaW9uc1RyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBT
dHJ1CiAgICAgLy8gRG9uJ3Qgc2V0IG1fb2Zmc2V0LCBhcyBvbmUgY2FuIG5vdCB0cmFuc2l0aW9u
IHRvIHRoaXMuCiAKICAgICBzdHJ1Y3R1cmUtPm1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vz
c2FyeShnbG9iYWxEYXRhKTsKLSAgICB0cmFuc2l0aW9uLT5wcm9wZXJ0eVRhYmxlKCkuc2V0KGds
b2JhbERhdGEsIHRyYW5zaXRpb24sIHN0cnVjdHVyZS0+Y29weVByb3BlcnR5VGFibGVGb3JQaW5u
aW5nKGdsb2JhbERhdGEsIHRyYW5zaXRpb24pKTsKKyAgICB0cmFuc2l0aW9uLT5tX3Byb3BlcnR5
VGFibGUgPSBzdHJ1Y3R1cmUtPmNvcHlQcm9wZXJ0eVRhYmxlRm9yUGlubmluZyhnbG9iYWxEYXRh
LCB0cmFuc2l0aW9uKTsKICAgICB0cmFuc2l0aW9uLT5tX29mZnNldCA9IHN0cnVjdHVyZS0+bV9v
ZmZzZXQ7CiAgICAgdHJhbnNpdGlvbi0+bV9wcmV2ZW50RXh0ZW5zaW9ucyA9IHRydWU7CiAgICAg
dHJhbnNpdGlvbi0+cGluKCk7CkBAIC01NzQsMTkgKzU3MiwxNyBAQCBTdHJ1Y3R1cmUqIFN0cnVj
dHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3Ry
dWN0dXJlKgogICAgIHRyYW5zaXRpb24tPm1fb2Zmc2V0ID0gc3RydWN0dXJlLT5tX29mZnNldDsK
ICAgICBjaGVja09mZnNldCh0cmFuc2l0aW9uLT5tX29mZnNldCwgdHJhbnNpdGlvbi0+aW5saW5l
Q2FwYWNpdHkoKSk7CiAgICAgCi0gICAgaWYgKHN0cnVjdHVyZS0+cHJvcGVydHlUYWJsZSgpKSB7
CisgICAgaWYgKHN0cnVjdHVyZS0+bV9wcm9wZXJ0eVRhYmxlKSB7CiAgICAgICAgIHN0cnVjdHVy
ZS0+Y2hlY2tPZmZzZXRDb25zaXN0ZW5jeSgpOwogICAgICAgICBpZiAoc3RydWN0dXJlLT5tX2lz
UGlubmVkUHJvcGVydHlUYWJsZSkKLSAgICAgICAgICAgIHRyYW5zaXRpb24tPnByb3BlcnR5VGFi
bGUoKS5zZXQoZ2xvYmFsRGF0YSwgdHJhbnNpdGlvbiwgc3RydWN0dXJlLT5wcm9wZXJ0eVRhYmxl
KCktPmNvcHkoZ2xvYmFsRGF0YSwgdHJhbnNpdGlvbiwgc3RydWN0dXJlLT5wcm9wZXJ0eVRhYmxl
KCktPnNpemUoKSArIDEpKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICB0cmFuc2l0aW9u
LT5wcm9wZXJ0eVRhYmxlKCkuc2V0KGdsb2JhbERhdGEsIHRyYW5zaXRpb24sIHN0cnVjdHVyZS0+
cHJvcGVydHlUYWJsZSgpLmdldCgpKTsKLSAgICAgICAgICAgIHN0cnVjdHVyZS0+cHJvcGVydHlU
YWJsZSgpLmNsZWFyKCk7Ci0gICAgICAgIH0KKyAgICAgICAgICAgIHRyYW5zaXRpb24tPm1fcHJv
cGVydHlUYWJsZSA9IHN0cnVjdHVyZS0+bV9wcm9wZXJ0eVRhYmxlLT5jb3B5KGdsb2JhbERhdGEs
IHRyYW5zaXRpb24sIHN0cnVjdHVyZS0+bV9wcm9wZXJ0eVRhYmxlLT5zaXplKCkgKyAxKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgdHJhbnNpdGlvbi0+bV9wcm9wZXJ0eVRhYmxlID0gc3Ry
dWN0dXJlLT5tX3Byb3BlcnR5VGFibGUucmVsZWFzZSgpOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IGlmIChzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSkKICAgICAgICAgICAgIHRyYW5zaXRpb24tPm1h
dGVyaWFsaXplUHJvcGVydHlNYXAoZ2xvYmFsRGF0YSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHRyYW5zaXRpb24tPmNyZWF0ZVByb3BlcnR5TWFwKGdsb2JhbERhdGEpOworICAgICAgICAg
ICAgdHJhbnNpdGlvbi0+Y3JlYXRlUHJvcGVydHlNYXAoKTsKICAgICB9CiAgICAgCiAgICAgc3Ry
dWN0dXJlLT5tX3RyYW5zaXRpb25UYWJsZS5hZGQoZ2xvYmFsRGF0YSwgdHJhbnNpdGlvbik7CkBA
IC02MDEsMTEgKzU5NywxMSBAQCBib29sIFN0cnVjdHVyZTo6aXNTZWFsZWQoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBtYXRlcmlhbGl6ZVBy
b3BlcnR5TWFwSWZOZWNlc3NhcnkoZ2xvYmFsRGF0YSk7Ci0gICAgaWYgKCFwcm9wZXJ0eVRhYmxl
KCkpCisgICAgaWYgKCFtX3Byb3BlcnR5VGFibGUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0g
ICAgUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgZW5kID0gcHJvcGVydHlUYWJsZSgpLT5lbmQoKTsK
LSAgICBmb3IgKFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIGl0ZXIgPSBwcm9wZXJ0eVRhYmxlKCkt
PmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKKyAgICBQcm9wZXJ0eVRhYmxlOjppdGVy
YXRvciBlbmQgPSBtX3Byb3BlcnR5VGFibGUtPmVuZCgpOworICAgIGZvciAoUHJvcGVydHlUYWJs
ZTo6aXRlcmF0b3IgaXRlciA9IG1fcHJvcGVydHlUYWJsZS0+YmVnaW4oKTsgaXRlciAhPSBlbmQ7
ICsraXRlcikgewogICAgICAgICBpZiAoKGl0ZXItPmF0dHJpYnV0ZXMgJiBEb250RGVsZXRlKSAh
PSBEb250RGVsZXRlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTYxOSwx
MSArNjE1LDExIEBAIGJvb2wgU3RydWN0dXJlOjppc0Zyb3plbihKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIG1hdGVyaWFsaXplUHJvcGVydHlN
YXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsKLSAgICBpZiAoIXByb3BlcnR5VGFibGUoKSkKKyAg
ICBpZiAoIW1fcHJvcGVydHlUYWJsZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBQcm9w
ZXJ0eVRhYmxlOjppdGVyYXRvciBlbmQgPSBwcm9wZXJ0eVRhYmxlKCktPmVuZCgpOwotICAgIGZv
ciAoUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgaXRlciA9IHByb3BlcnR5VGFibGUoKS0+YmVnaW4o
KTsgaXRlciAhPSBlbmQ7ICsraXRlcikgeworICAgIFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIGVu
ZCA9IG1fcHJvcGVydHlUYWJsZS0+ZW5kKCk7CisgICAgZm9yIChQcm9wZXJ0eVRhYmxlOjppdGVy
YXRvciBpdGVyID0gbV9wcm9wZXJ0eVRhYmxlLT5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVy
KSB7CiAgICAgICAgIGlmICghKGl0ZXItPmF0dHJpYnV0ZXMgJiBEb250RGVsZXRlKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKCEoaXRlci0+YXR0cmlidXRlcyAmIChS
ZWFkT25seSB8IEFjY2Vzc29yKSkpCkBAIC02MzcsMTggKzYzMywxOCBAQCBTdHJ1Y3R1cmUqIFN0
cnVjdHVyZTo6ZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBKU09iagogICAgIGNoZWNrT2Zmc2V0Q29uc2lzdGVuY3koKTsKICAgICBBU1NFUlQoaXNE
aWN0aW9uYXJ5KCkpOwogICAgIGlmIChpc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKSB7Ci0gICAg
ICAgIEFTU0VSVChwcm9wZXJ0eVRhYmxlKCkpOworICAgICAgICBBU1NFUlQobV9wcm9wZXJ0eVRh
YmxlKTsKIAotICAgICAgICBzaXplX3QgcHJvcGVydHlDb3VudCA9IHByb3BlcnR5VGFibGUoKS0+
c2l6ZSgpOworICAgICAgICBzaXplX3QgcHJvcGVydHlDb3VudCA9IG1fcHJvcGVydHlUYWJsZS0+
c2l6ZSgpOwogCiAgICAgICAgIC8vIEhvbGRzIG91ciB2YWx1ZXMgY29tcGFjdGVkIGJ5IGluc2Vy
dGlvbiBvcmRlci4KICAgICAgICAgVmVjdG9yPEpTVmFsdWU+IHZhbHVlcyhwcm9wZXJ0eUNvdW50
KTsKIAogICAgICAgICAvLyBDb3BpZXMgb3V0IG91ciB2YWx1ZXMgZnJvbSB0aGVpciBoYXNoZWQg
bG9jYXRpb25zLCBjb21wYWN0aW5nIHByb3BlcnR5IHRhYmxlIG9mZnNldHMgYXMgd2UgZ28uCiAg
ICAgICAgIHVuc2lnbmVkIGkgPSAwOwotICAgICAgICBQcm9wZXJ0eVRhYmxlOjppdGVyYXRvciBl
bmQgPSBwcm9wZXJ0eVRhYmxlKCktPmVuZCgpOworICAgICAgICBQcm9wZXJ0eVRhYmxlOjppdGVy
YXRvciBlbmQgPSBtX3Byb3BlcnR5VGFibGUtPmVuZCgpOwogICAgICAgICBtX29mZnNldCA9IGlu
dmFsaWRPZmZzZXQ7Ci0gICAgICAgIGZvciAoUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgaXRlciA9
IHByb3BlcnR5VGFibGUoKS0+YmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlciwgKytpKSB7Cisg
ICAgICAgIGZvciAoUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgaXRlciA9IG1fcHJvcGVydHlUYWJs
ZS0+YmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlciwgKytpKSB7CiAgICAgICAgICAgICB2YWx1
ZXNbaV0gPSBvYmplY3QtPmdldERpcmVjdChpdGVyLT5vZmZzZXQpOwogICAgICAgICAgICAgbV9v
ZmZzZXQgPSBpdGVyLT5vZmZzZXQgPSBvZmZzZXRGb3JQcm9wZXJ0eU51bWJlcihpLCBtX2lubGlu
ZUNhcGFjaXR5KTsKICAgICAgICAgfQpAQCAtNjU3LDcgKzY1Myw3IEBAIFN0cnVjdHVyZSogU3Ry
dWN0dXJlOjpmbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIEpTT2JqCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwcm9wZXJ0eUNvdW50
OyBpKyspCiAgICAgICAgICAgICBvYmplY3QtPnB1dERpcmVjdChnbG9iYWxEYXRhLCBvZmZzZXRG
b3JQcm9wZXJ0eU51bWJlcihpLCBtX2lubGluZUNhcGFjaXR5KSwgdmFsdWVzW2ldKTsKIAotICAg
ICAgICBwcm9wZXJ0eVRhYmxlKCktPmNsZWFyRGVsZXRlZE9mZnNldHMoKTsKKyAgICAgICAgbV9w
cm9wZXJ0eVRhYmxlLT5jbGVhckRlbGV0ZWRPZmZzZXRzKCk7CiAgICAgICAgIGNoZWNrT2Zmc2V0
Q29uc2lzdGVuY3koKTsKICAgICB9CiAKQEAgLTY5Miw3ICs2ODgsNyBAQCBQcm9wZXJ0eU9mZnNl
dCBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYQogCiB2b2lkIFN0cnVjdHVyZTo6cGluKCkKIHsKLSAgICBBU1NFUlQocHJvcGVy
dHlUYWJsZSgpKTsKKyAgICBBU1NFUlQobV9wcm9wZXJ0eVRhYmxlKTsKICAgICBtX2lzUGlubmVk
UHJvcGVydHlUYWJsZSA9IHRydWU7CiAgICAgY2xlYXJQcmV2aW91c0lEKCk7CiAgICAgbV9uYW1l
SW5QcmV2aW91cy5jbGVhcigpOwpAQCAtNzQxLDE4ICs3MzcsMTQgQEAgaW5saW5lIHZvaWQgU3Ry
dWN0dXJlOjpjaGVja0NvbnNpc3RlbmN5KCkKIAogI2VuZGlmCiAKLVByb3BlcnR5VGFibGUqIFN0
cnVjdHVyZTo6Y29weVByb3BlcnR5VGFibGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1
Y3R1cmUqIG93bmVyKQorUGFzc093blB0cjxQcm9wZXJ0eVRhYmxlPiBTdHJ1Y3R1cmU6OmNvcHlQ
cm9wZXJ0eVRhYmxlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBvd25lcikK
IHsKLSAgICBpZiAoIXByb3BlcnR5VGFibGUoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0
dXJuIFByb3BlcnR5VGFibGU6OmNsb25lKGdsb2JhbERhdGEsIG93bmVyLCAqcHJvcGVydHlUYWJs
ZSgpLmdldCgpKTsKKyAgICByZXR1cm4gYWRvcHRQdHIobV9wcm9wZXJ0eVRhYmxlID8gbmV3IFBy
b3BlcnR5VGFibGUoZ2xvYmFsRGF0YSwgb3duZXIsICptX3Byb3BlcnR5VGFibGUpIDogMCk7CiB9
CiAKLVByb3BlcnR5VGFibGUqIFN0cnVjdHVyZTo6Y29weVByb3BlcnR5VGFibGVGb3JQaW5uaW5n
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBvd25lcikKK1Bhc3NPd25QdHI8
UHJvcGVydHlUYWJsZT4gU3RydWN0dXJlOjpjb3B5UHJvcGVydHlUYWJsZUZvclBpbm5pbmcoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIG93bmVyKQogewotICAgIGlmIChwcm9w
ZXJ0eVRhYmxlKCkpCi0gICAgICAgIHJldHVybiBQcm9wZXJ0eVRhYmxlOjpjbG9uZShnbG9iYWxE
YXRhLCBvd25lciwgKnByb3BlcnR5VGFibGUoKS5nZXQoKSk7Ci0gICAgcmV0dXJuIFByb3BlcnR5
VGFibGU6OmNyZWF0ZShnbG9iYWxEYXRhLCBudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldChtX29m
ZnNldCwgbV9pbmxpbmVDYXBhY2l0eSkpOworICAgIHJldHVybiBhZG9wdFB0cihtX3Byb3BlcnR5
VGFibGUgPyBuZXcgUHJvcGVydHlUYWJsZShnbG9iYWxEYXRhLCBvd25lciwgKm1fcHJvcGVydHlU
YWJsZSkgOiBuZXcgUHJvcGVydHlUYWJsZShudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldChtX29m
ZnNldCwgbV9pbmxpbmVDYXBhY2l0eSkpKTsKIH0KIAogUHJvcGVydHlPZmZzZXQgU3RydWN0dXJl
OjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSkKQEAgLTc2MCwx
MCArNzUyLDEwIEBAIFByb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6Z2V0KEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtCiAgICAgQVNTRVJUKHN0cnVjdHVy
ZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsKIAogICAgIG1hdGVyaWFsaXplUHJvcGVydHlN
YXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsKLSAgICBpZiAoIXByb3BlcnR5VGFibGUoKSkKKyAg
ICBpZiAoIW1fcHJvcGVydHlUYWJsZSkKICAgICAgICAgcmV0dXJuIGludmFsaWRPZmZzZXQ7CiAK
LSAgICBQcm9wZXJ0eU1hcEVudHJ5KiBlbnRyeSA9IHByb3BlcnR5VGFibGUoKS0+ZmluZChwcm9w
ZXJ0eU5hbWUudWlkKCkpLmZpcnN0OworICAgIFByb3BlcnR5TWFwRW50cnkqIGVudHJ5ID0gbV9w
cm9wZXJ0eVRhYmxlLT5maW5kKHByb3BlcnR5TmFtZS51aWQoKSkuZmlyc3Q7CiAgICAgaWYgKCFl
bnRyeSkKICAgICAgICAgcmV0dXJuIGludmFsaWRPZmZzZXQ7CiAKQEAgLTc3NSwxMCArNzY3LDEw
IEBAIFByb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6Z2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtCiBib29sIFN0cnVjdHVyZTo6ZGVzcGVjaWZ5RnVu
Y3Rpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KQogewogICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsK
LSAgICBpZiAoIXByb3BlcnR5VGFibGUoKSkKKyAgICBpZiAoIW1fcHJvcGVydHlUYWJsZSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgUHJvcGVydHlNYXBFbnRyeSogZW50cnkgPSBwcm9w
ZXJ0eVRhYmxlKCktPmZpbmQocHJvcGVydHlOYW1lLnVpZCgpKS5maXJzdDsKKyAgICBQcm9wZXJ0
eU1hcEVudHJ5KiBlbnRyeSA9IG1fcHJvcGVydHlUYWJsZS0+ZmluZChwcm9wZXJ0eU5hbWUudWlk
KCkpLmZpcnN0OwogICAgIGlmICghZW50cnkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAt
NzkwLDExICs3ODIsMTEgQEAgYm9vbCBTdHJ1Y3R1cmU6OmRlc3BlY2lmeUZ1bmN0aW9uKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnQKIHZvaWQgU3RydWN0dXJl
OjpkZXNwZWNpZnlBbGxGdW5jdGlvbnMoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogewogICAg
IG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsKLSAgICBpZiAo
IXByb3BlcnR5VGFibGUoKSkKKyAgICBpZiAoIW1fcHJvcGVydHlUYWJsZSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgZW5kID0gcHJvcGVydHlUYWJsZSgp
LT5lbmQoKTsKLSAgICBmb3IgKFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIGl0ZXIgPSBwcm9wZXJ0
eVRhYmxlKCktPmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCisgICAgUHJvcGVydHlUYWJs
ZTo6aXRlcmF0b3IgZW5kID0gbV9wcm9wZXJ0eVRhYmxlLT5lbmQoKTsKKyAgICBmb3IgKFByb3Bl
cnR5VGFibGU6Oml0ZXJhdG9yIGl0ZXIgPSBtX3Byb3BlcnR5VGFibGUtPmJlZ2luKCk7IGl0ZXIg
IT0gZW5kOyArK2l0ZXIpCiAgICAgICAgIGl0ZXItPnNwZWNpZmljVmFsdWUuY2xlYXIoKTsKIH0K
IApAQCAtODA4LDEyICs4MDAsMTIgQEAgUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpwdXRTcGVj
aWZpY1ZhbHVlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW0KIAogICAgIFN0
cmluZ0ltcGwqIHJlcCA9IHByb3BlcnR5TmFtZS51aWQoKTsKIAotICAgIGlmICghcHJvcGVydHlU
YWJsZSgpKQotICAgICAgICBjcmVhdGVQcm9wZXJ0eU1hcChnbG9iYWxEYXRhKTsKKyAgICBpZiAo
IW1fcHJvcGVydHlUYWJsZSkKKyAgICAgICAgY3JlYXRlUHJvcGVydHlNYXAoKTsKIAotICAgIFBy
b3BlcnR5T2Zmc2V0IG5ld09mZnNldCA9IHByb3BlcnR5VGFibGUoKS0+bmV4dE9mZnNldChtX2lu
bGluZUNhcGFjaXR5KTsKKyAgICBQcm9wZXJ0eU9mZnNldCBuZXdPZmZzZXQgPSBtX3Byb3BlcnR5
VGFibGUtPm5leHRPZmZzZXQobV9pbmxpbmVDYXBhY2l0eSk7CiAKLSAgICBwcm9wZXJ0eVRhYmxl
KCktPmFkZChQcm9wZXJ0eU1hcEVudHJ5KGdsb2JhbERhdGEsIHRoaXMsIHJlcCwgbmV3T2Zmc2V0
LCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKSwgbV9vZmZzZXQsIFByb3BlcnR5VGFibGU6OlBy
b3BlcnR5T2Zmc2V0TWF5Q2hhbmdlKTsKKyAgICBtX3Byb3BlcnR5VGFibGUtPmFkZChQcm9wZXJ0
eU1hcEVudHJ5KGdsb2JhbERhdGEsIHRoaXMsIHJlcCwgbmV3T2Zmc2V0LCBhdHRyaWJ1dGVzLCBz
cGVjaWZpY1ZhbHVlKSwgbV9vZmZzZXQsIFByb3BlcnR5VGFibGU6OlByb3BlcnR5T2Zmc2V0TWF5
Q2hhbmdlKTsKICAgICAKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgcmV0dXJuIG5ld09m
ZnNldDsKQEAgLTgyNSw0MCArODE3LDQwIEBAIFByb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6cmVt
b3ZlKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiAKICAgICBTdHJpbmdJbXBsKiByZXAgPSBw
cm9wZXJ0eU5hbWUudWlkKCk7CiAKLSAgICBpZiAoIXByb3BlcnR5VGFibGUoKSkKKyAgICBpZiAo
IW1fcHJvcGVydHlUYWJsZSkKICAgICAgICAgcmV0dXJuIGludmFsaWRPZmZzZXQ7CiAKLSAgICBQ
cm9wZXJ0eVRhYmxlOjpmaW5kX2l0ZXJhdG9yIHBvc2l0aW9uID0gcHJvcGVydHlUYWJsZSgpLT5m
aW5kKHJlcCk7CisgICAgUHJvcGVydHlUYWJsZTo6ZmluZF9pdGVyYXRvciBwb3NpdGlvbiA9IG1f
cHJvcGVydHlUYWJsZS0+ZmluZChyZXApOwogICAgIGlmICghcG9zaXRpb24uZmlyc3QpCiAgICAg
ICAgIHJldHVybiBpbnZhbGlkT2Zmc2V0OwogCiAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0g
cG9zaXRpb24uZmlyc3QtPm9mZnNldDsKIAotICAgIHByb3BlcnR5VGFibGUoKS0+cmVtb3ZlKHBv
c2l0aW9uKTsKLSAgICBwcm9wZXJ0eVRhYmxlKCktPmFkZERlbGV0ZWRPZmZzZXQob2Zmc2V0KTsK
KyAgICBtX3Byb3BlcnR5VGFibGUtPnJlbW92ZShwb3NpdGlvbik7CisgICAgbV9wcm9wZXJ0eVRh
YmxlLT5hZGREZWxldGVkT2Zmc2V0KG9mZnNldCk7CiAKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7
CiAgICAgcmV0dXJuIG9mZnNldDsKIH0KIAotdm9pZCBTdHJ1Y3R1cmU6OmNyZWF0ZVByb3BlcnR5
TWFwKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgdW5zaWduZWQgY2FwYWNpdHkpCit2b2lkIFN0
cnVjdHVyZTo6Y3JlYXRlUHJvcGVydHlNYXAodW5zaWduZWQgY2FwYWNpdHkpCiB7Ci0gICAgQVNT
RVJUKCFwcm9wZXJ0eVRhYmxlKCkpOworICAgIEFTU0VSVCghbV9wcm9wZXJ0eVRhYmxlKTsKIAog
ICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKLSAgICBwcm9wZXJ0eVRhYmxlKCkuc2V0KGdsb2JhbERh
dGEsIHRoaXMsIFByb3BlcnR5VGFibGU6OmNyZWF0ZShnbG9iYWxEYXRhLCBjYXBhY2l0eSkpOwor
ICAgIG1fcHJvcGVydHlUYWJsZSA9IGFkb3B0UHRyKG5ldyBQcm9wZXJ0eVRhYmxlKGNhcGFjaXR5
KSk7CiB9CiAKIHZvaWQgU3RydWN0dXJlOjpnZXRQcm9wZXJ0eU5hbWVzRnJvbVN0cnVjdHVyZShK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVz
LCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsKICAgICBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZO
ZWNlc3NhcnkoZ2xvYmFsRGF0YSk7Ci0gICAgaWYgKCFwcm9wZXJ0eVRhYmxlKCkpCisgICAgaWYg
KCFtX3Byb3BlcnR5VGFibGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIGJvb2wga25vd25Vbmlx
dWUgPSAhcHJvcGVydHlOYW1lcy5zaXplKCk7CiAKLSAgICBQcm9wZXJ0eVRhYmxlOjppdGVyYXRv
ciBlbmQgPSBwcm9wZXJ0eVRhYmxlKCktPmVuZCgpOwotICAgIGZvciAoUHJvcGVydHlUYWJsZTo6
aXRlcmF0b3IgaXRlciA9IHByb3BlcnR5VGFibGUoKS0+YmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsr
aXRlcikgeworICAgIFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIGVuZCA9IG1fcHJvcGVydHlUYWJs
ZS0+ZW5kKCk7CisgICAgZm9yIChQcm9wZXJ0eVRhYmxlOjppdGVyYXRvciBpdGVyID0gbV9wcm9w
ZXJ0eVRhYmxlLT5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgIEFTU0VS
VChtX2hhc05vbkVudW1lcmFibGVQcm9wZXJ0aWVzIHx8ICEoaXRlci0+YXR0cmlidXRlcyAmIERv
bnRFbnVtKSk7CiAgICAgICAgIGlmIChpdGVyLT5rZXktPmlzSWRlbnRpZmllcigpICYmICghKGl0
ZXItPmF0dHJpYnV0ZXMgJiBEb250RW51bSkgfHwgbW9kZSA9PSBJbmNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzKSkgewogICAgICAgICAgICAgaWYgKGtub3duVW5pcXVlKQpAQCAtODkwLDEyICs4ODIs
MTEgQEAgdm9pZCBTdHJ1Y3R1cmU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90Vmlz
aXRvciYgdmlzaXRvcikKICAgICB9CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
cHJldmlvdXNPclJhcmVEYXRhKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9z
cGVjaWZpY1ZhbHVlSW5QcmV2aW91cyk7Ci0KLSAgICBpZiAodGhpc09iamVjdC0+bV9pc1Bpbm5l
ZFByb3BlcnR5VGFibGUpIHsKLSAgICAgICAgQVNTRVJUKHRoaXNPYmplY3QtPm1fcHJvcGVydHlU
YWJsZVVuc2FmZSk7Ci0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Byb3Bl
cnR5VGFibGVVbnNhZmUpOwotICAgIH0gZWxzZSBpZiAodGhpc09iamVjdC0+bV9wcm9wZXJ0eVRh
YmxlVW5zYWZlKQotICAgICAgICB0aGlzT2JqZWN0LT5tX3Byb3BlcnR5VGFibGVVbnNhZmUuY2xl
YXIoKTsKKyAgICBpZiAodGhpc09iamVjdC0+bV9wcm9wZXJ0eVRhYmxlKSB7CisgICAgICAgIFBy
b3BlcnR5VGFibGU6Oml0ZXJhdG9yIGVuZCA9IHRoaXNPYmplY3QtPm1fcHJvcGVydHlUYWJsZS0+
ZW5kKCk7CisgICAgICAgIGZvciAoUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgcHRyID0gdGhpc09i
amVjdC0+bV9wcm9wZXJ0eVRhYmxlLT5iZWdpbigpOyBwdHIgIT0gZW5kOyArK3B0cikKKyAgICAg
ICAgICAgIHZpc2l0b3IuYXBwZW5kKCZwdHItPnNwZWNpZmljVmFsdWUpOworICAgIH0KIH0KIAog
Ym9vbCBTdHJ1Y3R1cmU6OnByb3RvdHlwZUNoYWluTWF5SW50ZXJjZXB0U3RvcmVUbyhKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCkBAIC05ODYsMTcg
Kzk3NywxNyBAQCB2b2lkIFByb3BlcnR5VGFibGU6OmNoZWNrQ29uc2lzdGVuY3koKQogCiB2b2lk
IFN0cnVjdHVyZTo6Y2hlY2tDb25zaXN0ZW5jeSgpCiB7Ci0gICAgaWYgKCFwcm9wZXJ0eVRhYmxl
KCkpCisgICAgaWYgKCFtX3Byb3BlcnR5VGFibGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
ICghbV9oYXNOb25FbnVtZXJhYmxlUHJvcGVydGllcykgewotICAgICAgICBQcm9wZXJ0eVRhYmxl
OjppdGVyYXRvciBlbmQgPSBwcm9wZXJ0eVRhYmxlKCktPmVuZCgpOwotICAgICAgICBmb3IgKFBy
b3BlcnR5VGFibGU6Oml0ZXJhdG9yIGl0ZXIgPSBwcm9wZXJ0eVRhYmxlKCktPmJlZ2luKCk7IGl0
ZXIgIT0gZW5kOyArK2l0ZXIpIHsKKyAgICAgICAgUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgZW5k
ID0gbV9wcm9wZXJ0eVRhYmxlLT5lbmQoKTsKKyAgICAgICAgZm9yIChQcm9wZXJ0eVRhYmxlOjpp
dGVyYXRvciBpdGVyID0gbV9wcm9wZXJ0eVRhYmxlLT5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytp
dGVyKSB7CiAgICAgICAgICAgICBBU1NFUlQoIShpdGVyLT5hdHRyaWJ1dGVzICYgRG9udEVudW0p
KTsKICAgICAgICAgfQogICAgIH0KIAotICAgIHByb3BlcnR5VGFibGUoKS0+Y2hlY2tDb25zaXN0
ZW5jeSgpOworICAgIG1fcHJvcGVydHlUYWJsZS0+Y2hlY2tDb25zaXN0ZW5jeSgpOwogfQogCiAj
ZW5kaWYgLy8gRE9fUFJPUEVSVFlNQVBfQ09OU1RFTkNZX0NIRUNLCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCmluZGV4IDMwM2JlMzljM2Q5Yjc4NTM0OWE4ZDFkODU0
OGUzZmU4NDBjZjlmM2YuLjIzNTljNmNhYzhkMjBlMzhlYjk2ZGYxNDQzMmY3ZjI0MzVhZWJjMDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCkBAIC0zMSwxNSAr
MzEsMTYgQEAKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAj
aW5jbHVkZSAiSlNUeXBlLmgiCisjaW5jbHVkZSAiUHJvcGVydHlNYXBIYXNoVGFibGUuaCIKICNp
bmNsdWRlICJQcm9wZXJ0eU5hbWUuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgot
I2luY2x1ZGUgIlByb3BlcnR5T2Zmc2V0LmgiCiAjaW5jbHVkZSAiUHJvdGVjdC5oIgogI2luY2x1
ZGUgIlN0cnVjdHVyZVJhcmVEYXRhLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlVHJhbnNpdGlvblRh
YmxlLmgiCiAjaW5jbHVkZSAiSlNUeXBlSW5mby5oIgogI2luY2x1ZGUgIldhdGNocG9pbnQuaCIK
ICNpbmNsdWRlICJXZWFrLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgpAQCAtNTAsNyArNTEsNiBAQCBuYW1lc3BhY2UgSlND
IHsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5
OwogY2xhc3MgUHJvcGVydHlOYW1lQXJyYXlEYXRhOwotY2xhc3MgUHJvcGVydHlUYWJsZTsKIGNs
YXNzIFN0cnVjdHVyZUNoYWluOwogY2xhc3MgU2xvdFZpc2l0b3I7CiBjbGFzcyBKU1N0cmluZzsK
QEAgLTEwOCw3ICsxMDgsMjUgQEAgcHVibGljOgogICAgIGJvb2wgaXNGcm96ZW4oSlNHbG9iYWxE
YXRhJik7CiAgICAgYm9vbCBpc0V4dGVuc2libGUoKSBjb25zdCB7IHJldHVybiAhbV9wcmV2ZW50
RXh0ZW5zaW9uczsgfQogICAgIGJvb2wgZGlkVHJhbnNpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
ZGlkVHJhbnNpdGlvbjsgfQotICAgIGJvb2wgcHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdlKCk7
CisgICAgYm9vbCBwdXRXaWxsR3Jvd091dE9mTGluZVN0b3JhZ2UoKQorICAgIHsKKyAgICAgICAg
Y2hlY2tPZmZzZXRDb25zaXN0ZW5jeSgpOworICAgICAgICAgICAgCisgICAgICAgIEFTU0VSVChv
dXRPZkxpbmVDYXBhY2l0eSgpID49IG91dE9mTGluZVNpemUoKSk7CisgICAgICAgICAgICAKKyAg
ICAgICAgaWYgKCFtX3Byb3BlcnR5VGFibGUpIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGN1cnJl
bnRTaXplID0gbnVtYmVyT2ZPdXRPZkxpbmVTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQpOwor
ICAgICAgICAgICAgQVNTRVJUKG91dE9mTGluZUNhcGFjaXR5KCkgPj0gY3VycmVudFNpemUpOwor
ICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRTaXplID09IG91dE9mTGluZUNhcGFjaXR5KCk7Cisg
ICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBBU1NFUlQodG90YWxTdG9yYWdlQ2FwYWNp
dHkoKSA+PSBtX3Byb3BlcnR5VGFibGUtPnByb3BlcnR5U3RvcmFnZVNpemUoKSk7CisgICAgICAg
IGlmIChtX3Byb3BlcnR5VGFibGUtPmhhc0RlbGV0ZWRPZmZzZXQoKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgIAorICAgICAgICBBU1NFUlQodG90YWxTdG9yYWdlQ2Fw
YWNpdHkoKSA+PSBtX3Byb3BlcnR5VGFibGUtPnNpemUoKSk7CisgICAgICAgIHJldHVybiBtX3By
b3BlcnR5VGFibGUtPnNpemUoKSA9PSB0b3RhbFN0b3JhZ2VDYXBhY2l0eSgpOworICAgIH0KICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzaXplX3Qgc3VnZ2VzdGVkTmV3T3V0T2ZMaW5lU3RvcmFnZUNh
cGFjaXR5KCk7IAogCiAgICAgU3RydWN0dXJlKiBmbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZShK
U0dsb2JhbERhdGEmLCBKU09iamVjdCopOwpAQCAtMzY0LDI5ICszODIsMjcgQEAgcHJpdmF0ZToK
ICAgICBQcm9wZXJ0eU9mZnNldCBwdXRTcGVjaWZpY1ZhbHVlKEpTR2xvYmFsRGF0YSYsIFByb3Bl
cnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKTsKICAg
ICBQcm9wZXJ0eU9mZnNldCByZW1vdmUoUHJvcGVydHlOYW1lKTsKIAotICAgIHZvaWQgY3JlYXRl
UHJvcGVydHlNYXAoSlNHbG9iYWxEYXRhJiwgdW5zaWduZWQga2V5Q291bnQgPSAwKTsKKyAgICB2
b2lkIGNyZWF0ZVByb3BlcnR5TWFwKHVuc2lnbmVkIGtleUNvdW50ID0gMCk7CiAgICAgdm9pZCBj
aGVja0NvbnNpc3RlbmN5KCk7CiAKICAgICBib29sIGRlc3BlY2lmeUZ1bmN0aW9uKEpTR2xvYmFs
RGF0YSYsIFByb3BlcnR5TmFtZSk7CiAgICAgdm9pZCBkZXNwZWNpZnlBbGxGdW5jdGlvbnMoSlNH
bG9iYWxEYXRhJik7CiAKLSAgICBXcml0ZUJhcnJpZXI8UHJvcGVydHlUYWJsZT4mIHByb3BlcnR5
VGFibGUoKTsKLQotICAgIFByb3BlcnR5VGFibGUqIGNvcHlQcm9wZXJ0eVRhYmxlKEpTR2xvYmFs
RGF0YSYsIFN0cnVjdHVyZSogb3duZXIpOwotICAgIFByb3BlcnR5VGFibGUqIGNvcHlQcm9wZXJ0
eVRhYmxlRm9yUGlubmluZyhKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqIG93bmVyKTsKKyAgICBQ
YXNzT3duUHRyPFByb3BlcnR5VGFibGU+IGNvcHlQcm9wZXJ0eVRhYmxlKEpTR2xvYmFsRGF0YSYs
IFN0cnVjdHVyZSogb3duZXIpOworICAgIFBhc3NPd25QdHI8UHJvcGVydHlUYWJsZT4gY29weVBy
b3BlcnR5VGFibGVGb3JQaW5uaW5nKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSogb3duZXIpOwog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcChKU0dsb2Jh
bERhdGEmKTsKICAgICB2b2lkIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEpCiAgICAgewogICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCkt
PmNsYXNzSW5mbygpID09ICZzX2luZm8pOwogICAgICAgICBBU1NFUlQoY2hlY2tPZmZzZXRDb25z
aXN0ZW5jeSgpKTsKLSAgICAgICAgaWYgKCFwcm9wZXJ0eVRhYmxlKCkgJiYgcHJldmlvdXNJRCgp
KQorICAgICAgICBpZiAoIW1fcHJvcGVydHlUYWJsZSAmJiBwcmV2aW91c0lEKCkpCiAgICAgICAg
ICAgICBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwKGdsb2JhbERhdGEpOwogICAgIH0KICAgICB2b2lk
IG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeUZvclBpbm5pbmcoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhKQogICAgIHsKICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0lu
Zm8oKSA9PSAmc19pbmZvKTsKICAgICAgICAgY2hlY2tPZmZzZXRDb25zaXN0ZW5jeSgpOwotICAg
ICAgICBpZiAoIXByb3BlcnR5VGFibGUoKSkKKyAgICAgICAgaWYgKCFtX3Byb3BlcnR5VGFibGUp
CiAgICAgICAgICAgICBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwKGdsb2JhbERhdGEpOwogICAgIH0K
IApAQCAtNDI5LDcgKzQ0NSwxOSBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8U3RydWN0dXJlUmFyZURhdGEqPihtX3ByZXZpb3VzT3JSYXJlRGF0YS5nZXQoKSk7CiAgICAg
fQogICAgICAgICAKLSAgICBib29sIGNoZWNrT2Zmc2V0Q29uc2lzdGVuY3koKSBjb25zdDsKKyAg
ICBBTFdBWVNfSU5MSU5FIGJvb2wgY2hlY2tPZmZzZXRDb25zaXN0ZW5jeSgpIGNvbnN0CisgICAg
eworICAgICAgICBpZiAoIW1fcHJvcGVydHlUYWJsZSkgeworICAgICAgICAgICAgQVNTRVJUKCFt
X2lzUGlubmVkUHJvcGVydHlUYWJsZSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgfQorICAgICAgICAgICAgCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG51bWJlck9mU2xvdHNG
b3JMYXN0T2Zmc2V0KG1fb2Zmc2V0LCBtX2lubGluZUNhcGFjaXR5KSA9PSBtX3Byb3BlcnR5VGFi
bGUtPnByb3BlcnR5U3RvcmFnZVNpemUoKSk7CisgICAgICAgIHVuc2lnbmVkIHRvdGFsU2l6ZSA9
IG1fcHJvcGVydHlUYWJsZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpOworICAgICAgICBSRUxFQVNF
X0FTU0VSVCgodG90YWxTaXplIDwgaW5saW5lQ2FwYWNpdHkoKSA/IDAgOiB0b3RhbFNpemUgLSBp
bmxpbmVDYXBhY2l0eSgpKSA9PSBudW1iZXJPZk91dE9mTGluZVNsb3RzRm9yTGFzdE9mZnNldCht
X29mZnNldCkpOworICAgICAgICAgICAgCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KIAog
ICAgIHZvaWQgYWxsb2NhdGVSYXJlRGF0YShKU0dsb2JhbERhdGEmKTsKICAgICB2b2lkIGNsb25l
UmFyZURhdGFGcm9tKEpTR2xvYmFsRGF0YSYsIGNvbnN0IFN0cnVjdHVyZSopOwpAQCAtNDU0LDgg
KzQ4Miw3IEBAIHByaXZhdGU6CiAKICAgICBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUgbV90cmFu
c2l0aW9uVGFibGU7CiAKLSAgICAvLyBTaG91bGQgYmUgYWNjZXNzZWQgdGhyb3VnaCBwcm9wZXJ0
eVRhYmxlKCkuIER1cmluZyBHQywgaXQgbWF5IGJlIHNldCB0byAwIGJ5IGFub3RoZXIgdGhyZWFk
LgotICAgIFdyaXRlQmFycmllcjxQcm9wZXJ0eVRhYmxlPiBtX3Byb3BlcnR5VGFibGVVbnNhZmU7
CisgICAgT3duUHRyPFByb3BlcnR5VGFibGU+IG1fcHJvcGVydHlUYWJsZTsKIAogICAgIG11dGFi
bGUgSW5saW5lV2F0Y2hwb2ludFNldCBtX3RyYW5zaXRpb25XYXRjaHBvaW50U2V0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKaW5kZXgg
NTIyZTgyNzk5NTNlMmFlNTYzMmY1NjAxYjhkODU4MDEwN2U2ZjczYy4uNWJmZDJkNTZhZDc1NDNl
MzRjNzhjMmQ0OTk1NDU4ZTg3MzFlYWM3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaApAQCAtMjYsNyArMjYsNiBAQAogI2lmbmRlZiBT
dHJ1Y3R1cmVJbmxpbmVzX2gKICNkZWZpbmUgU3RydWN0dXJlSW5saW5lc19oCiAKLSNpbmNsdWRl
ICJQcm9wZXJ0eU1hcEhhc2hUYWJsZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogCiBuYW1l
c3BhY2UgSlNDIHsKQEAgLTYyLDEwICs2MSwxMCBAQCBpbmxpbmUgUHJvcGVydHlPZmZzZXQgU3Ry
dWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcAog
ewogICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7CiAgICAg
bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEpOwotICAgIGlmICgh
cHJvcGVydHlUYWJsZSgpKQorICAgIGlmICghbV9wcm9wZXJ0eVRhYmxlKQogICAgICAgICByZXR1
cm4gaW52YWxpZE9mZnNldDsKIAotICAgIFByb3BlcnR5TWFwRW50cnkqIGVudHJ5ID0gcHJvcGVy
dHlUYWJsZSgpLT5maW5kKHByb3BlcnR5TmFtZS51aWQoKSkuZmlyc3Q7CisgICAgUHJvcGVydHlN
YXBFbnRyeSogZW50cnkgPSBtX3Byb3BlcnR5VGFibGUtPmZpbmQocHJvcGVydHlOYW1lLnVpZCgp
KS5maXJzdDsKICAgICByZXR1cm4gZW50cnkgPyBlbnRyeS0+b2Zmc2V0IDogaW52YWxpZE9mZnNl
dDsKIH0KIApAQCAtNzMsMTAgKzcyLDEwIEBAIGlubGluZSBQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1
cmU6OmdldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFdURjo6U3RyaW5nCiB7CiAg
ICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsKICAgICBtYXRl
cmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3NhcnkoZ2xvYmFsRGF0YSk7Ci0gICAgaWYgKCFwcm9w
ZXJ0eVRhYmxlKCkpCisgICAgaWYgKCFtX3Byb3BlcnR5VGFibGUpCiAgICAgICAgIHJldHVybiBp
bnZhbGlkT2Zmc2V0OwogCi0gICAgUHJvcGVydHlNYXBFbnRyeSogZW50cnkgPSBwcm9wZXJ0eVRh
YmxlKCktPmZpbmRXaXRoU3RyaW5nKG5hbWUuaW1wbCgpKS5maXJzdDsKKyAgICBQcm9wZXJ0eU1h
cEVudHJ5KiBlbnRyeSA9IG1fcHJvcGVydHlUYWJsZS0+ZmluZFdpdGhTdHJpbmcobmFtZS5pbXBs
KCkpLmZpcnN0OwogICAgIHJldHVybiBlbnRyeSA/IGVudHJ5LT5vZmZzZXQgOiBpbnZhbGlkT2Zm
c2V0OwogfQogICAgIApAQCAtMTgwLDQ4ICsxNzksNiBAQCBpbmxpbmUgYm9vbCBTdHJ1Y3R1cmU6
OmlzVmFsaWQoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVDaGFpbiogY2FjaGVkUHJvdG90eXBl
QwogICAgIHJldHVybiBpc1ZhbGlkKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgY2FjaGVk
UHJvdG90eXBlQ2hhaW4pOwogfQogCi1pbmxpbmUgYm9vbCBTdHJ1Y3R1cmU6OnB1dFdpbGxHcm93
T3V0T2ZMaW5lU3RvcmFnZSgpCi17Ci0gICAgY2hlY2tPZmZzZXRDb25zaXN0ZW5jeSgpOwotCi0g
ICAgQVNTRVJUKG91dE9mTGluZUNhcGFjaXR5KCkgPj0gb3V0T2ZMaW5lU2l6ZSgpKTsKLQotICAg
IGlmICghcHJvcGVydHlUYWJsZSgpKSB7Ci0gICAgICAgIHVuc2lnbmVkIGN1cnJlbnRTaXplID0g
bnVtYmVyT2ZPdXRPZkxpbmVTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQpOwotICAgICAgICBB
U1NFUlQob3V0T2ZMaW5lQ2FwYWNpdHkoKSA+PSBjdXJyZW50U2l6ZSk7Ci0gICAgICAgIHJldHVy
biBjdXJyZW50U2l6ZSA9PSBvdXRPZkxpbmVDYXBhY2l0eSgpOwotICAgIH0KLQotICAgIEFTU0VS
VCh0b3RhbFN0b3JhZ2VDYXBhY2l0eSgpID49IHByb3BlcnR5VGFibGUoKS0+cHJvcGVydHlTdG9y
YWdlU2l6ZSgpKTsKLSAgICBpZiAocHJvcGVydHlUYWJsZSgpLT5oYXNEZWxldGVkT2Zmc2V0KCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEFTU0VSVCh0b3RhbFN0b3JhZ2VDYXBhY2l0
eSgpID49IHByb3BlcnR5VGFibGUoKS0+c2l6ZSgpKTsKLSAgICByZXR1cm4gcHJvcGVydHlUYWJs
ZSgpLT5zaXplKCkgPT0gdG90YWxTdG9yYWdlQ2FwYWNpdHkoKTsKLX0KLQotQUxXQVlTX0lOTElO
RSBXcml0ZUJhcnJpZXI8UHJvcGVydHlUYWJsZT4mIFN0cnVjdHVyZTo6cHJvcGVydHlUYWJsZSgp
Ci17Ci0gICAgQVNTRVJUKCFnbG9iYWxPYmplY3QoKSB8fCAhZ2xvYmFsT2JqZWN0KCktPmdsb2Jh
bERhdGEoKS5oZWFwLmlzQnVzeSgpKTsKLSAgICByZXR1cm4gbV9wcm9wZXJ0eVRhYmxlVW5zYWZl
OwotfQotCi1BTFdBWVNfSU5MSU5FIGJvb2wgU3RydWN0dXJlOjpjaGVja09mZnNldENvbnNpc3Rl
bmN5KCkgY29uc3QKLXsKLSAgICBQcm9wZXJ0eVRhYmxlKiBwcm9wZXJ0eVRhYmxlID0gbV9wcm9w
ZXJ0eVRhYmxlVW5zYWZlLmdldCgpOwotCi0gICAgaWYgKCFwcm9wZXJ0eVRhYmxlKSB7Ci0gICAg
ICAgIEFTU0VSVCghbV9pc1Bpbm5lZFByb3BlcnR5VGFibGUpOwotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICB9Ci0KLSAgICBSRUxFQVNFX0FTU0VSVChudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNl
dChtX29mZnNldCwgbV9pbmxpbmVDYXBhY2l0eSkgPT0gcHJvcGVydHlUYWJsZS0+cHJvcGVydHlT
dG9yYWdlU2l6ZSgpKTsKLSAgICB1bnNpZ25lZCB0b3RhbFNpemUgPSBwcm9wZXJ0eVRhYmxlLT5w
cm9wZXJ0eVN0b3JhZ2VTaXplKCk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoKHRvdGFsU2l6ZSA8IGlu
bGluZUNhcGFjaXR5KCkgPyAwIDogdG90YWxTaXplIC0gaW5saW5lQ2FwYWNpdHkoKSkgPT0gbnVt
YmVyT2ZPdXRPZkxpbmVTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQpKTsKLQotICAgIHJldHVy
biB0cnVlOwotfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFN0cnVjdHVyZUlu
bGluZXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV3JpdGVC
YXJyaWVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Xcml0ZUJhcnJpZXIuaApp
bmRleCA2ZmE4YjYzN2IxNWIyZjIxODY1OTYzMDFkYWFhNGJhNzgxMzAxZDM0Li5lZjhjM2FmZjg3
YjZlYTg2MmQ3MzY3NWVkNDdkNjNjNThmMTliMmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Xcml0ZUJhcnJpZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Xcml0ZUJhcnJpZXIuaApAQCAtOTksMTEgKzk5LDkgQEAgcHVibGljOgogICAg
IAogICAgIFQqIGdldCgpIGNvbnN0CiAgICAgewotICAgICAgICAvLyBDb3B5IG1fY2VsbCB0byBh
IGxvY2FsIHRvIGF2b2lkIG11bHRpcGxlLXJlYWQgaXNzdWVzLiAoU2VlIDxodHRwOi8vd2Via2l0
Lm9yZy9iLzExMDg1ND4pCi0gICAgICAgIEpTQ2VsbCogY2VsbCA9IG1fY2VsbDsKLSAgICAgICAg
aWYgKGNlbGwpCi0gICAgICAgICAgICB2YWxpZGF0ZUNlbGwoY2VsbCk7Ci0gICAgICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PFQqPihzdGF0aWNfY2FzdDx2b2lkKj4oY2VsbCkpOworICAgICAg
ICBpZiAobV9jZWxsKQorICAgICAgICAgICAgdmFsaWRhdGVDZWxsKG1fY2VsbCk7CisgICAgICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PFQqPihzdGF0aWNfY2FzdDx2b2lkKj4obV9jZWxsKSk7
CiAgICAgfQogCiAgICAgVCogb3BlcmF0b3IqKCkgY29uc3QK
</data>

          </attachment>
      

    </bug>

</bugzilla>