<?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>202510</bug_id>
          
          <creation_ts>2019-10-03 00:42:45 -0700</creation_ts>
          <short_desc>[iOS] Add a fast path that avoids hit testing during context menu interactions on elements</short_desc>
          <delta_ts>2019-10-08 16:23:11 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andy Estes">aestes</reporter>
          <assigned_to name="Andy Estes">aestes</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1576313</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-10-03 00:42:45 -0700</bug_when>
    <thetext>[iOS] Add a fast path that avoids hit testing during context menu interactions on elements</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576318</commentid>
    <comment_count>1</comment_count>
      <attachid>380085</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-10-03 01:05:44 -0700</bug_when>
    <thetext>Created attachment 380085
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576322</commentid>
    <comment_count>2</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-10-03 01:09:55 -0700</bug_when>
    <thetext>*** Bug 202499 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576323</commentid>
    <comment_count>3</comment_count>
      <attachid>380086</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-10-03 01:12:09 -0700</bug_when>
    <thetext>Created attachment 380086
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576324</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-03 01:12:47 -0700</bug_when>
    <thetext>&lt;rdar://problem/55939313&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577437</commentid>
    <comment_count>5</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-10-07 12:46:04 -0700</bug_when>
    <thetext>Not for review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577819</commentid>
    <comment_count>6</comment_count>
      <attachid>380441</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-10-08 10:31:47 -0700</bug_when>
    <thetext>Created attachment 380441
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577820</commentid>
    <comment_count>7</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-10-08 10:31:59 -0700</bug_when>
    <thetext>(In reply to Tim Horton from comment #5)
&gt; Not for review?

Ready now :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578004</commentid>
    <comment_count>8</comment_count>
      <attachid>380441</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-08 16:23:09 -0700</bug_when>
    <thetext>Comment on attachment 380441
Patch

Clearing flags on attachment: 380441

Committed r250876: &lt;https://trac.webkit.org/changeset/250876&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578005</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-08 16:23:11 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380085</attachid>
            <date>2019-10-03 01:05:44 -0700</date>
            <delta_ts>2019-10-03 01:12:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202510-20191003010543.patch</filename>
            <type>text/plain</type>
            <size>49767</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGM3MGIyOTZmYTE2OTIwM2I1
ZTkwNmU5YWVhMmZhZmE2ZjRmNWFmZjEuLjNjYWQyOTk2ODM4NjY0YzFiYTQ0YmY4M2EwNjk4MzA3
NmQxNTgxMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzAgQEAKKzIwMTktMTAtMDMgIEFuZHkgRXN0
ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEFkZCBhIGZhc3QgcGF0aCB0
aGF0IGF2b2lkcyBoaXQgdGVzdGluZyBkdXJpbmcgY29udGV4dCBtZW51IGludGVyYWN0aW9ucyBv
biBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjAyNTEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2hlbiBjb21wdXRpbmcgcG9zaXRpb24gaW5mb3JtYXRpb24gZm9yIGFuIGVsZW1lbnQsIHdl
IGNhbiBzdG9yZSBzdWZmaWNpZW50IGNvbnRleHQKKyAgICAgICAgaW5mb3JtYXRpb24gaW4gSW50
ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24gc3VjaCB0aGF0IHRoZSBzYW1lIGVsZW1lbnQg
Y291bGQgYmUKKyAgICAgICAgcmV0cmlldmVkIGFnYWluIHdpdGhvdXQgaGl0IHRlc3RpbmcuIFRo
ZSBleGlzdGluZyBUZXh0SW5wdXRDb250ZXh0IGNhbiBhbHJlYWR5IHN0b3JlIGFuCisgICAgICAg
IGVsZW1lbnQncyBwYWdlIGlkZW50aWZpZXIsIGRvY3VtZW50IGlkZW50aWZpZXIsIGFuZCBlbGVt
ZW50IGlkZW50aWZpZXIsIHdoaWNoIGlzIHN1ZmZpY2llbnQKKyAgICAgICAgY29udGV4dCBmb3Ig
c3VjaCBhIHRhc2suCisKKyAgICAgICAgVGhpcyBwYXRjaCByZW5hbWVzIFRleHRJbnB1dENvbnRl
eHQgdG8gRWxlbWVudENvbnRleHQgYW5kIHVzZXMgaXQgd2hlbiBwb3B1bGF0aW5nIG5ldworICAg
ICAgICBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiBzdHJ1Y3RzIGluIGVsZW1lbnRQ
b3NpdGlvbkluZm9ybWF0aW9uKCkuIFdoZW4gYSBjb250ZXh0CisgICAgICAgIG1lbnUgaW50ZXJh
Y3Rpb24gb2NjdXJzLCBXZWJQYWdlOjpzdGFydEludGVyYWN0aW9uV2l0aEVsZW1lbnRDb250ZXh0
T3JQb3NpdGlvbigpIHVzZXMgdGhpcworICAgICAgICBjb250ZXh0IHRvIGxvb2sgdXAgdGhlIGlu
dGVyYWN0aW9uIGVsZW1lbnQgYnkgaXRzIGlkZW50aWZpZXIgdHJpcGxldCwgZmFsbGluZyBiYWNr
IHRvIGhpdAorICAgICAgICB0ZXN0aW5nIGlmIHRoaXMgbG9va3VwIGZhaWxzLgorCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVkL0RvY3VtZW50
RWRpdGluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBTaGFyZWQvRG9jdW1lbnRFZGl0aW5nQ29udGV4
dC5tbToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJLaXQ6OkRvY3VtZW50RWRpdGlu
Z0NvbnRleHRSZXF1ZXN0Pjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvRWxlbWVudENvbnRl
eHQuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9TaGFyZWQvVGV4dElucHV0Q29udGV4
dC5jcHAuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViS2l0OjpFbGVtZW50Q29udGV4
dD46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViS2l0OjpFbGVtZW50
Q29udGV4dD46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0VsZW1lbnRDb250ZXh0Lmg6IFJl
bmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9UZXh0SW5wdXRDb250ZXh0LmguCisgICAg
ICAgIChXZWJLaXQ6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIFNoYXJlZC9pb3MvSW50ZXJhY3Rp
b25JbmZvcm1hdGlvbkF0UG9zaXRpb24uaDoKKyAgICAgICAgKiBTaGFyZWQvaW9zL0ludGVyYWN0
aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpJbnRlcmFjdGlv
bkluZm9ybWF0aW9uQXRQb3NpdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb246OmRlY29kZSk6CisgICAgICAgICogU291
cmNlcy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06Cisg
ICAgICAgICgtW1dLV2ViVmlldyBfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OmNvbXBs
ZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4dElu
cHV0Q29udGV4dC5tbToKKyAgICAgICAgKC1bX1dLVGV4dElucHV0Q29udGV4dCBfaW5pdFdpdGhU
ZXh0SW5wdXRDb250ZXh0Ol0pOgorICAgICAgICAoLVtfV0tUZXh0SW5wdXRDb250ZXh0IF90ZXh0
SW5wdXRDb250ZXh0XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUZXh0SW5w
dXRDb250ZXh0SW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp0ZXh0SW5wdXRDb250ZXh0c0luUmVj
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Zm9jdXNUZXh0SW5wdXRDb250ZXh0
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgYWN0aW9uU2hlZXRBc3Npc3RhbnQ6d2lsbFN0YXJ0SW50ZXJhY3Rpb25XaXRoRWxlbWVu
dDpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBhc3NpZ25MZWdhY3lEYXRhRm9yQ29udGV4
dE1lbnVJbnRlcmFjdGlvbl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGNvbnRpbnVlQ29u
dGV4dE1lbnVJbnRlcmFjdGlvbjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBjb250aW51
ZUNvbnRleHRNZW51SW50ZXJhY3Rpb25XaXRoRGF0YURldGVjdG9yczpdKToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBfcHJlc2VudGVkVmlld0NvbnRyb2xsZXJGb3JQcmV2aWV3SXRlbUNvbnRy
b2xsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3RhcnRJbnRlcmFjdGlvbldpdGhQb3NpdGlv
bkluZm9ybWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdGFydEludGVy
YWN0aW9uV2l0aEVsZW1lbnRBdFBvc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnRleHRJbnB1dENvbnRleHRz
SW5SZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Zm9jdXNUZXh0SW5wdXRDb250ZXh0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZWxlbWVudEZvckNvbnRleHQgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjb250ZXh0Rm9yRWxlbWVudCBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmVsZW1lbnRGb3JUZXh0SW5wdXRDb250ZXh0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6ZWxlbWVudFBv
c2l0aW9uSW5mb3JtYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzdGFydEludGVy
YWN0aW9uV2l0aEVsZW1lbnRDb250ZXh0T3JQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnJlcXVlc3REb2N1bWVudEVkaXRpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6c3RhcnRJbnRlcmFjdGlvbldpdGhFbGVtZW50QXRQb3NpdGlvbik6IERlbGV0ZWQu
CisKIDIwMTktMTAtMDIgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4K
IAogICAgICAgICBSRUdSRVNTSU9OIChyMjQ1NjcyKTogPHNlbGVjdD4gZHJvcGRvd24gd2l0aCB0
ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5IGZyZWV6ZXMgU2FmYXJpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCBhNzhkYTMxNDQzMjU4YzA4NjE5
MmYyMDUyMGIzNDA2MDk0ZTQ5OGY3Li5kZjNiYjRiZTAyNzUzMGE0YTBiOTdiZGYyMGM5YTQzNDY3
MDJiNWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2Vz
LnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTQ4
Niw3ICs0ODYsNyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dlYktp
dDo6V2ViTW91c2VFdmVudCc6IFsnIldlYkV2ZW50LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6Oldl
YlRvdWNoRXZlbnQnOiBbJyJXZWJFdmVudC5oIiddLAogICAgICAgICAnV2ViS2l0OjpXZWJXaGVl
bEV2ZW50JzogWyciV2ViRXZlbnQuaCInXSwKLSAgICAgICAgJ3N0cnVjdCBXZWJLaXQ6OlRleHRJ
bnB1dENvbnRleHQnOiBbJyJUZXh0SW5wdXRDb250ZXh0LmgiJ10sCisgICAgICAgICdzdHJ1Y3Qg
V2ViS2l0OjpFbGVtZW50Q29udGV4dCc6IFsnIkVsZW1lbnRDb250ZXh0LmgiJ10sCiAgICAgICAg
ICdzdHJ1Y3QgV2ViS2l0OjpXZWJVc2VyU2NyaXB0RGF0YSc6IFsnIldlYlVzZXJDb250ZW50Q29u
dHJvbGxlckRhdGFUeXBlcy5oIiddLAogICAgICAgICAnc3RydWN0IFdlYktpdDo6V2ViVXNlclN0
eWxlU2hlZXREYXRhJzogWyciV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmgiJ10s
CiAgICAgICAgICdzdHJ1Y3QgV2ViS2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlckRhdGEnOiBb
JyJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCInXSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0RvY3VtZW50RWRpdGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0RvY3VtZW50RWRpdGluZ0NvbnRleHQuaAppbmRleCAxYzMwZjY0ZmM3NzA4NGE2
NmQ2MWE4OTU0MTFjMGViMzhjYjVjYTNlLi44NjFjODkxNjEwMWNlMTFmZTQxYTRmN2E5Nzc0NjZj
MzI3OGRiZTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Eb2N1bWVudEVkaXRp
bmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRG9jdW1lbnRFZGl0aW5nQ29u
dGV4dC5oCkBAIC0yOSw3ICsyOSw3IEBACiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgog
I2luY2x1ZGUgIkF0dHJpYnV0ZWRTdHJpbmcuaCIKLSNpbmNsdWRlICJUZXh0SW5wdXRDb250ZXh0
LmgiCisjaW5jbHVkZSAiRWxlbWVudENvbnRleHQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0
UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEdyYW51bGFyaXR5Lmg+CiAjaW5jbHVkZSA8
d3RmL09wdGlvblNldC5oPgpAQCAtNTYsNyArNTYsNyBAQCBzdHJ1Y3QgRG9jdW1lbnRFZGl0aW5n
Q29udGV4dFJlcXVlc3QgewogCiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3Q7CiAKLSAgICBP
cHRpb25hbDxXZWJLaXQ6OlRleHRJbnB1dENvbnRleHQ+IHRleHRJbnB1dENvbnRleHQ7CisgICAg
T3B0aW9uYWw8V2ViS2l0OjpFbGVtZW50Q29udGV4dD4gdGV4dElucHV0Q29udGV4dDsKIH07CiAK
IHN0cnVjdCBEb2N1bWVudEVkaXRpbmdDb250ZXh0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0RvY3VtZW50RWRpdGluZ0NvbnRleHQubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Eb2N1bWVudEVkaXRpbmdDb250ZXh0Lm1tCmluZGV4IDMxNmMwMTNkNGNlMzcwNjdiZGZhY2Yz
NTc3YTQxNzUxMDE2M2VjYjQuLjQ4MmU4YzdjZGE4NTJkZTkxMmIzMjY5NjE3M2NiNDk3ODUyMmNj
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0RvY3VtZW50RWRpdGluZ0NvbnRl
eHQubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRG9jdW1lbnRFZGl0aW5nQ29udGV4dC5t
bQpAQCAtMjgsNyArMjgsNyBAQAogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAotI2luY2x1
ZGUgIlRleHRJbnB1dENvbnRleHQuaCIKKyNpbmNsdWRlICJFbGVtZW50Q29udGV4dC5oIgogI2lu
Y2x1ZGUgIlVJS2l0U1BJLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAK
QEAgLTE5OCw3ICsxOTgsNyBAQCBPcHRpb25hbDxXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRl
eHRSZXF1ZXN0PiBBcmd1bWVudENvZGVyPFdlYktpdDo6RG9jdW1lbnRFZAogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVxdWVzdC5yZWN0KSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
IAotICAgIE9wdGlvbmFsPE9wdGlvbmFsPFdlYktpdDo6VGV4dElucHV0Q29udGV4dD4+IG9wdGlv
bmFsVGV4dElucHV0Q29udGV4dDsKKyAgICBPcHRpb25hbDxPcHRpb25hbDxXZWJLaXQ6OkVsZW1l
bnRDb250ZXh0Pj4gb3B0aW9uYWxUZXh0SW5wdXRDb250ZXh0OwogICAgIGRlY29kZXIgPj4gb3B0
aW9uYWxUZXh0SW5wdXRDb250ZXh0OwogICAgIGlmICghb3B0aW9uYWxUZXh0SW5wdXRDb250ZXh0
KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvRWxlbWVudENvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRWxlbWVu
dENvbnRleHQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmNzRlN2ZjNzM1MmY1OGFiOGI4YTZiMjUzNWNhNzRj
NDRkODQ4ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbGVtZW50
Q29udGV4dC5jcHAKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJFbGVtZW50Q29udGV4dC5oIgorCisjaW5jbHVkZSAiV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9FbGVtZW50Lmg+CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitFbGVtZW50Q29udGV4dDo6fkVsZW1lbnRDb250ZXh0KCkgPSBkZWZhdWx0
OworCit9CisKK25hbWVzcGFjZSBJUEMgeworCit2b2lkIEFyZ3VtZW50Q29kZXI8V2ViS2l0OjpF
bGVtZW50Q29udGV4dD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJLaXQ6OkVs
ZW1lbnRDb250ZXh0JiBjb250ZXh0KQoreworICAgIGVuY29kZXIgPDwgY29udGV4dC5ib3VuZGlu
Z1JlY3Q7CisgICAgZW5jb2RlciA8PCBjb250ZXh0LndlYlBhZ2VJZGVudGlmaWVyOworICAgIGVu
Y29kZXIgPDwgY29udGV4dC5kb2N1bWVudElkZW50aWZpZXI7CisgICAgZW5jb2RlciA8PCBjb250
ZXh0LmVsZW1lbnRJZGVudGlmaWVyOworfQorCitPcHRpb25hbDxXZWJLaXQ6OkVsZW1lbnRDb250
ZXh0PiBBcmd1bWVudENvZGVyPFdlYktpdDo6RWxlbWVudENvbnRleHQ+OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKK3sKKyAgICBXZWJLaXQ6OkVsZW1lbnRDb250ZXh0IGNvbnRleHQ7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShjb250ZXh0LmJvdW5kaW5nUmVjdCkpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb250ZXh0LndlYlBhZ2VJ
ZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBhdXRvIGRvY3Vt
ZW50SWRlbnRpZmllciA9IFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllcjo6ZGVjb2RlKGRlY29k
ZXIpOworICAgIGlmICghZG9jdW1lbnRJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIGNvbnRleHQuZG9jdW1lbnRJZGVudGlmaWVyID0gKmRvY3VtZW50SWRlbnRp
ZmllcjsKKyAgICBhdXRvIGVsZW1lbnRJZGVudGlmaWVyID0gV2ViQ29yZTo6RWxlbWVudElkZW50
aWZpZXI6OmRlY29kZShkZWNvZGVyKTsKKyAgICBpZiAoIWVsZW1lbnRJZGVudGlmaWVyKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGNvbnRleHQuZWxlbWVudElkZW50aWZpZXIg
PSAqZWxlbWVudElkZW50aWZpZXI7CisKKyAgICByZXR1cm4gY29udGV4dDsKK30KKworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRWxlbWVudENvbnRleHQuaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0VsZW1lbnRDb250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjE1Y2M0MjcwMjg0Nzk4
NTEwNWU2YTAyYTY4OTVjYzczNjE4MDFjMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0VsZW1lbnRDb250ZXh0LmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL0RvY3VtZW50SWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRWxlbWVudElk
ZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBF
bGVtZW50Q29udGV4dCB7CisgICAgV2ViQ29yZTo6RmxvYXRSZWN0IGJvdW5kaW5nUmVjdDsKKwor
ICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJZGVudGlmaWVyOworICAgIFdlYkNv
cmU6OkRvY3VtZW50SWRlbnRpZmllciBkb2N1bWVudElkZW50aWZpZXI7CisgICAgV2ViQ29yZTo6
RWxlbWVudElkZW50aWZpZXIgZWxlbWVudElkZW50aWZpZXI7CisKKyAgICB+RWxlbWVudENvbnRl
eHQoKTsKK307CisKK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgRWxlbWVudENvbnRleHQm
IGEsIGNvbnN0IEVsZW1lbnRDb250ZXh0JiBiKQoreworICAgIHJldHVybiBhLmJvdW5kaW5nUmVj
dCA9PSBiLmJvdW5kaW5nUmVjdAorICAgICAgICAmJiBhLndlYlBhZ2VJZGVudGlmaWVyID09IGIu
d2ViUGFnZUlkZW50aWZpZXIKKyAgICAgICAgJiYgYS5kb2N1bWVudElkZW50aWZpZXIgPT0gYi5k
b2N1bWVudElkZW50aWZpZXIKKyAgICAgICAgJiYgYS5lbGVtZW50SWRlbnRpZmllciA9PSBiLmVs
ZW1lbnRJZGVudGlmaWVyOworfQorCit9CisKK25hbWVzcGFjZSBJUEMgewordGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJLaXQ6OkVsZW1lbnRDb250ZXh0PiB7CisgICAgc3RhdGlj
IHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJLaXQ6OkVsZW1lbnRDb250ZXh0Jik7Cisg
ICAgc3RhdGljIE9wdGlvbmFsPFdlYktpdDo6RWxlbWVudENvbnRleHQ+IGRlY29kZShEZWNvZGVy
Jik7Cit9OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvVGV4dElucHV0Q29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9UZXh0SW5wdXRDb250ZXh0LmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzMwZmFmYTc4Y2FiYTkyMmI1N2Q3MjQ0ZTNjNmVk
ZGY3MzljMWNjMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9UZXh0SW5wdXRDb250ZXh0LmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDY3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiVGV4dElucHV0Q29udGV4dC5oIgotCi0jaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9FbGVtZW50Lmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQg
ewotCi1UZXh0SW5wdXRDb250ZXh0Ojp+VGV4dElucHV0Q29udGV4dCgpID0gZGVmYXVsdDsKLQot
fQotCi1uYW1lc3BhY2UgSVBDIHsKLQotdm9pZCBBcmd1bWVudENvZGVyPFdlYktpdDo6VGV4dElu
cHV0Q29udGV4dD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJLaXQ6OlRleHRJ
bnB1dENvbnRleHQmIGNvbnRleHQpCi17Ci0gICAgZW5jb2RlciA8PCBjb250ZXh0LmJvdW5kaW5n
UmVjdDsKLSAgICBlbmNvZGVyIDw8IGNvbnRleHQud2ViUGFnZUlkZW50aWZpZXI7Ci0gICAgZW5j
b2RlciA8PCBjb250ZXh0LmRvY3VtZW50SWRlbnRpZmllcjsKLSAgICBlbmNvZGVyIDw8IGNvbnRl
eHQuZWxlbWVudElkZW50aWZpZXI7Ci19Ci0KLU9wdGlvbmFsPFdlYktpdDo6VGV4dElucHV0Q29u
dGV4dD4gQXJndW1lbnRDb2RlcjxXZWJLaXQ6OlRleHRJbnB1dENvbnRleHQ+OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKLXsKLSAgICBXZWJLaXQ6OlRleHRJbnB1dENvbnRleHQgY29udGV4dDsK
LSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvbnRleHQuYm91bmRpbmdSZWN0KSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvbnRleHQud2Vi
UGFnZUlkZW50aWZpZXIpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIGF1dG8g
ZG9jdW1lbnRJZGVudGlmaWVyID0gV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyOjpkZWNvZGUo
ZGVjb2Rlcik7Ci0gICAgaWYgKCFkb2N1bWVudElkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7Ci0gICAgY29udGV4dC5kb2N1bWVudElkZW50aWZpZXIgPSAqZG9jdW1lbnRJ
ZGVudGlmaWVyOwotICAgIGF1dG8gZWxlbWVudElkZW50aWZpZXIgPSBXZWJDb3JlOjpFbGVtZW50
SWRlbnRpZmllcjo6ZGVjb2RlKGRlY29kZXIpOwotICAgIGlmICghZWxlbWVudElkZW50aWZpZXIp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgY29udGV4dC5lbGVtZW50SWRlbnRp
ZmllciA9ICplbGVtZW50SWRlbnRpZmllcjsKLQotICAgIHJldHVybiBjb250ZXh0OwotfQotCi19
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9UZXh0SW5wdXRDb250ZXh0LmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9UZXh0SW5wdXRDb250ZXh0LmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDU0ZDQyNzdiODUzOGZiYTQxNTZhYjgzZDZhZGI4OTU3ODI4YTBkNzkuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvVGV4dElucHV0Q29udGV4dC5oCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMu
aCIKLSNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50SWRlbnRpZmllci5oPgotI2luY2x1ZGUgPFdl
YkNvcmUvRWxlbWVudElkZW50aWZpZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KLQotbmFtZXNwYWNlIFdlYktp
dCB7Ci0KLXN0cnVjdCBUZXh0SW5wdXRDb250ZXh0IHsKLSAgICBXZWJDb3JlOjpGbG9hdFJlY3Qg
Ym91bmRpbmdSZWN0OwotCi0gICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlkZW50
aWZpZXI7Ci0gICAgV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyIGRvY3VtZW50SWRlbnRpZmll
cjsKLSAgICBXZWJDb3JlOjpFbGVtZW50SWRlbnRpZmllciBlbGVtZW50SWRlbnRpZmllcjsKLQot
ICAgIH5UZXh0SW5wdXRDb250ZXh0KCk7Ci19OwotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFRleHRJbnB1dENvbnRleHQmIGEsIGNvbnN0IFRleHRJbnB1dENvbnRleHQmIGIpCi17Ci0g
ICAgcmV0dXJuIGEuYm91bmRpbmdSZWN0ID09IGIuYm91bmRpbmdSZWN0Ci0gICAgICAgICYmIGEu
d2ViUGFnZUlkZW50aWZpZXIgPT0gYi53ZWJQYWdlSWRlbnRpZmllcgotICAgICAgICAmJiBhLmRv
Y3VtZW50SWRlbnRpZmllciA9PSBiLmRvY3VtZW50SWRlbnRpZmllcgotICAgICAgICAmJiBhLmVs
ZW1lbnRJZGVudGlmaWVyID09IGIuZWxlbWVudElkZW50aWZpZXI7Ci19Ci0KLX0KLQotbmFtZXNw
YWNlIElQQyB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYktpdDo6VGV4dElu
cHV0Q29udGV4dD4gewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2Vi
S2l0OjpUZXh0SW5wdXRDb250ZXh0Jik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFdlYktpdDo6VGV4
dElucHV0Q29udGV4dD4gZGVjb2RlKERlY29kZXImKTsKLX07Ci19CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24uaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlv
bi5oCmluZGV4IGZlOTJjZDEyNGZmMjRmMTk3ZWUyM2VjMWZiNTNkY2EzOGNlNWI5NzAuLmEyODcx
Mzg5YjM3ZDQ3MTkxNWJkOTFmOWJlNjA5YmUxMDdkNzRlZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlv
bi5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2luY2x1
ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiRWxlbWVudENvbnRleHQuaCIKICNpbmNs
dWRlICJJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNoYXJlYWJs
ZUJpdG1hcC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UG9pbnQuaD4KQEAgLTg5LDYgKzkwLDgg
QEAgc3RydWN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uIHsKICAgICBSZXRhaW5Q
dHI8TlNBcnJheT4gZGF0YURldGVjdG9yUmVzdWx0czsKICNlbmRpZgogCisgICAgT3B0aW9uYWw8
RWxlbWVudENvbnRleHQ+IGVsZW1lbnRDb250ZXh0OworCiAgICAgLy8gQ29weSBjb21wYXRpYmxl
IG9wdGlvbmFsIGJpdHMgZm9yd2FyZCAoZm9yIGV4YW1wbGUsIGlmIHdlIGhhdmUgYSBJbnRlcmFj
dGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbgogICAgIC8vIHdpdGggc25hcHNob3RzIGluIGl0LCBh
bmQgcGVyZm9ybSBhbm90aGVyIHJlcXVlc3QgZm9yIHRoZSBzYW1lIHBvaW50IHdpdGhvdXQgcmVx
dWVzdGluZyB0aGUgc25hcHNob3RzLAogICAgIC8vIHdlIGNhbiBmZXRjaCB0aGUgY2hlYXAgaW5m
b3JtYXRpb24gYW5kIGNvcHkgdGhlIHNuYXBzaG90cyBpbnRvIHRoZSBuZXcgcmVzcG9uc2UpLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRp
b25BdFBvc2l0aW9uLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5m
b3JtYXRpb25BdFBvc2l0aW9uLm1tCmluZGV4IGNhNGNkZGI4ZTQ4NTc1NjA4MzIzZTJhMDFhNGJk
MTE2MjE4ZTc2YzMuLjljMDEzMDkwNzdmMmRkMDBlMTE2ZjNhMGY2NmY2MzE3YWQ5ODRjM2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9u
QXRQb3NpdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25J
bmZvcm1hdGlvbkF0UG9zaXRpb24ubW0KQEAgLTg1LDYgKzg1LDcgQEAgdm9pZCBJbnRlcmFjdGlv
bkluZm9ybWF0aW9uQXRQb3NpdGlvbjo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29u
c3QKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKICAgICBlbmNvZGVyIDw8IHByZXZlbnRU
ZXh0SW50ZXJhY3Rpb247CiAjZW5kaWYKKyAgICBlbmNvZGVyIDw8IGVsZW1lbnRDb250ZXh0Owog
fQogCiBib29sIEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOjpkZWNvZGUoSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyLCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYgcmVzdWx0
KQpAQCAtMTk2LDYgKzE5Nyw5IEBAIGJvb2wgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRp
b246OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIEludGVyYWN0aW9uCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICNlbmRpZgogCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZWxl
bWVudENvbnRleHQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKaW5kZXggZmE1MjYxZjU0YzU1MTA2NGE0YjcyMGRjYjM5OGYyYjUxNzIy
OWI5ZC4uYmUwYjEzM2FkNDg5YWRhNjkzMjZmZmQxNmIzYWJlNzg4MjI4NDcwYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0CkBAIC0xMjEsNiArMTIxLDcgQEAgU2hhcmVkL0NhY2hlTW9kZWwuY3BwCiBTaGFyZWQvQ29u
dGV4dE1lbnVDb250ZXh0RGF0YS5jcHAKIFNoYXJlZC9FZGl0aW5nUmFuZ2UuY3BwCiBTaGFyZWQv
RWRpdG9yU3RhdGUuY3BwCitTaGFyZWQvRWxlbWVudENvbnRleHQuY3BwCiBTaGFyZWQvRm9udElu
Zm8uY3BwCiBTaGFyZWQvRnJhbWVJbmZvRGF0YS5jcHAKIFNoYXJlZC9MYXllclRyZWVDb250ZXh0
LmNwcApAQCAtMTM4LDcgKzEzOSw2IEBAIFNoYXJlZC9TaGFyZWRTdHJpbmdIYXNoU3RvcmUuY3Bw
CiBTaGFyZWQvU2hhcmVkU3RyaW5nSGFzaFRhYmxlUmVhZE9ubHkuY3BwCiBTaGFyZWQvU2hhcmVk
U3RyaW5nSGFzaFRhYmxlLmNwcAogU2hhcmVkL1N0YXRpc3RpY3NEYXRhLmNwcAotU2hhcmVkL1Rl
eHRJbnB1dENvbnRleHQuY3BwCiBTaGFyZWQvVG91Y2hCYXJNZW51RGF0YS5jcHAKIFNoYXJlZC9U
b3VjaEJhck1lbnVJdGVtRGF0YS5jcHAKIFNoYXJlZC9VUkxTY2hlbWVUYXNrUGFyYW1ldGVycy5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmlu
ZGV4IDdlYzFjMGM4Zjk3YjNjYTMyOTIxMmQ3ODgxOWFlZGQ3Mjc0MjExMGMuLjM0MmI3MDIyZWRi
NTliNTFkZTU3MzBhODY1NGRjOWJhOTZiZjE3MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMzMsNiArMzMsNyBAQAogI2ltcG9ydCAi
Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlci5oIgogI2ltcG9ydCAiRGlhZ25vc3RpY0xvZ2dp
bmdDbGllbnQuaCIKICNpbXBvcnQgIkR5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGUuaCIKKyNpbXBv
cnQgIkVsZW1lbnRDb250ZXh0LmgiCiAjaW1wb3J0ICJGaW5kQ2xpZW50LmgiCiAjaW1wb3J0ICJG
dWxsc2NyZWVuQ2xpZW50LmgiCiAjaW1wb3J0ICJHbG9iYWxGaW5kSW5QYWdlU3RhdGUuaCIKQEAg
LTQ5LDcgKzUwLDYgQEAKICNpbXBvcnQgIlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmgiCiAjaW1wb3J0
ICJSZW1vdGVPYmplY3RSZWdpc3RyeU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJTYWZlQnJvd3NpbmdX
YXJuaW5nLmgiCi0jaW1wb3J0ICJUZXh0SW5wdXRDb250ZXh0LmgiCiAjaW1wb3J0ICJVSURlbGVn
YXRlLmgiCiAjaW1wb3J0ICJVc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5oIgogI2ltcG9ydCAiVmVy
c2lvbkNoZWNrcy5oIgpAQCAtNTA1NCwxMiArNTA1NCwxMiBAQCAtICh2b2lkKV9yZXF1ZXN0VGV4
dElucHV0Q29udGV4dHNJblJlY3Q6KENHUmVjdClyZWN0SW5XZWJWaWV3Q29vcmRpbmF0ZXMgY29t
cGxldAogCiAgICAgQ0dSZWN0IHJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMgPSBbc2VsZiBfY29u
dmVydFJlY3RUb1Jvb3RWaWV3Q29vcmRpbmF0ZXM6cmVjdEluV2ViVmlld0Nvb3JkaW5hdGVzXTsK
ICAgICBhdXRvIHdlYWtTZWxmID0gV2Vha09iakNQdHI8V0tXZWJWaWV3PihzZWxmKTsKLSAgICBf
cGFnZS0+dGV4dElucHV0Q29udGV4dHNJblJlY3QocmVjdEluUm9vdFZpZXdDb29yZGluYXRlcywg
W3dlYWtTZWxmLCBjYXB0dXJlZENvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBs
ZXRpb25IYW5kbGVyKV0gKGNvbnN0IFZlY3RvcjxXZWJLaXQ6OlRleHRJbnB1dENvbnRleHQ+JiBj
b250ZXh0cykgeworICAgIF9wYWdlLT50ZXh0SW5wdXRDb250ZXh0c0luUmVjdChyZWN0SW5Sb290
Vmlld0Nvb3JkaW5hdGVzLCBbd2Vha1NlbGYsIGNhcHR1cmVkQ29tcGxldGlvbkhhbmRsZXIgPSBt
YWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoY29uc3QgVmVjdG9yPFdlYktpdDo6RWxl
bWVudENvbnRleHQ+JiBjb250ZXh0cykgewogICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJy
YXk+IGVsZW1lbnRzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENh
cGFjaXR5OmNvbnRleHRzLnNpemUoKV0pOwogCiAgICAgICAgIGF1dG8gc3Ryb25nU2VsZiA9IHdl
YWtTZWxmLmdldCgpOwogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNvbnRleHQgOiBjb250ZXh0
cykgewotICAgICAgICAgICAgV2ViS2l0OjpUZXh0SW5wdXRDb250ZXh0IGNvbnRleHRXaXRoV2Vi
Vmlld0JvdW5kaW5nUmVjdCA9IGNvbnRleHQ7CisgICAgICAgICAgICBXZWJLaXQ6OkVsZW1lbnRD
b250ZXh0IGNvbnRleHRXaXRoV2ViVmlld0JvdW5kaW5nUmVjdCA9IGNvbnRleHQ7CiAgICAgICAg
ICAgICBjb250ZXh0V2l0aFdlYlZpZXdCb3VuZGluZ1JlY3QuYm91bmRpbmdSZWN0ID0gW3N0cm9u
Z1NlbGYgX2NvbnZlcnRSZWN0RnJvbVJvb3RWaWV3Q29vcmRpbmF0ZXM6Y29udGV4dC5ib3VuZGlu
Z1JlY3RdOwogICAgICAgICAgICAgW2VsZW1lbnRzIGFkZE9iamVjdDphZG9wdE5TKFtbX1dLVGV4
dElucHV0Q29udGV4dCBhbGxvY10gX2luaXRXaXRoVGV4dElucHV0Q29udGV4dDpjb250ZXh0V2l0
aFdlYlZpZXdCb3VuZGluZ1JlY3RdKS5nZXQoKV07CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUZXh0SW5wdXRDb250ZXh0Lm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1RleHRJbnB1dENvbnRleHQubW0K
aW5kZXggYzdlY2UyZDIyNTBiMTgxMDYxNzMxZTIyOGU0ODg2NmZiNTFiY2UwNy4uZjYxZDcyNzJl
MWFmZjdmYWM2ODI0NzU2ODU5NjhkNWYyNTBlM2JmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1RleHRJbnB1dENvbnRleHQubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1RleHRJbnB1dENvbnRleHQubW0KQEAgLTI2
LDExICsyNiwxMSBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJfV0tUZXh0SW5wdXRD
b250ZXh0LmgiCiAKLSNpbXBvcnQgIlRleHRJbnB1dENvbnRleHQuaCIKKyNpbXBvcnQgIkVsZW1l
bnRDb250ZXh0LmgiCiAjaW1wb3J0ICJfV0tUZXh0SW5wdXRDb250ZXh0SW50ZXJuYWwuaCIKIAog
QGltcGxlbWVudGF0aW9uIF9XS1RleHRJbnB1dENvbnRleHQgewotICAgIFdlYktpdDo6VGV4dElu
cHV0Q29udGV4dCBfdGV4dElucHV0Q29udGV4dDsKKyAgICBXZWJLaXQ6OkVsZW1lbnRDb250ZXh0
IF90ZXh0SW5wdXRDb250ZXh0OwogfQogCiAtIChpbnN0YW5jZXR5cGUpaW5pdApAQCAtMzgsNyAr
MzgsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdAogICAgIHJldHVybiBuaWw7CiB9CiAKLS0gKGlu
c3RhbmNldHlwZSlfaW5pdFdpdGhUZXh0SW5wdXRDb250ZXh0Oihjb25zdCBXZWJLaXQ6OlRleHRJ
bnB1dENvbnRleHQmKWNvbnRleHQKKy0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhUZXh0SW5wdXRD
b250ZXh0Oihjb25zdCBXZWJLaXQ6OkVsZW1lbnRDb250ZXh0Jiljb250ZXh0CiB7CiAgICAgc2Vs
ZiA9IFtzdXBlciBpbml0XTsKICAgICBpZiAoIXNlbGYpCkBAIC01NCw3ICs1NCw3IEBAIC0gKENH
UmVjdClib3VuZGluZ1JlY3QKICAgICByZXR1cm4gX3RleHRJbnB1dENvbnRleHQuYm91bmRpbmdS
ZWN0OwogfQogCi0tIChjb25zdCBXZWJLaXQ6OlRleHRJbnB1dENvbnRleHQmKV90ZXh0SW5wdXRD
b250ZXh0CistIChjb25zdCBXZWJLaXQ6OkVsZW1lbnRDb250ZXh0JilfdGV4dElucHV0Q29udGV4
dAogewogICAgIHJldHVybiBfdGV4dElucHV0Q29udGV4dDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUZXh0SW5wdXRDb250ZXh0SW50ZXJuYWwu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUZXh0SW5wdXRDb250ZXh0
SW50ZXJuYWwuaAppbmRleCBiZjMyYTQxMDA1ZmYyZmNkMjEzNWFmMjdlNTAyOGIzYmNhODJjNjk3
Li40YWM3MDAyY2FjMTgxMGVjNGRkZjk1Y2E5MjMzMWU4MDI0NmJkZDYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4dElucHV0Q29udGV4dEludGVy
bmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1RleHRJbnB1
dENvbnRleHRJbnRlcm5hbC5oCkBAIC0yNiwxMyArMjYsMTMgQEAKICNpbXBvcnQgIl9XS1RleHRJ
bnB1dENvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7Ci1zdHJ1Y3QgVGV4dElucHV0Q29u
dGV4dDsKK3N0cnVjdCBFbGVtZW50Q29udGV4dDsKIH0KIAogQGludGVyZmFjZSBfV0tUZXh0SW5w
dXRDb250ZXh0ICgpCiAKLS0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhUZXh0SW5wdXRDb250ZXh0
Oihjb25zdCBXZWJLaXQ6OlRleHRJbnB1dENvbnRleHQmKWNvbnRleHQ7CistIChpbnN0YW5jZXR5
cGUpX2luaXRXaXRoVGV4dElucHV0Q29udGV4dDooY29uc3QgV2ViS2l0OjpFbGVtZW50Q29udGV4
dCYpY29udGV4dDsKIAotLSAoY29uc3QgV2ViS2l0OjpUZXh0SW5wdXRDb250ZXh0JilfdGV4dElu
cHV0Q29udGV4dDsKKy0gKGNvbnN0IFdlYktpdDo6RWxlbWVudENvbnRleHQmKV90ZXh0SW5wdXRD
b250ZXh0OwogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApp
bmRleCBmNGYwOGU0NzVmMzEwOGMyYTEzNTRhNmE2ZjVhNDM3OWNiZTMxMTQxLi43OWQ2ZDIwOWQ0
N2ZmODU4OTYxNmI5Y2E2YTI0NTYyMmFlZDk5Y2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKQEAgLTU4LDYgKzU4LDcgQEAKICNpbmNsdWRlICJEb3dubG9hZFBy
b3h5LmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkRyYXdp
bmdBcmVhUHJveHkuaCIKKyNpbmNsdWRlICJFbGVtZW50Q29udGV4dC5oIgogI2luY2x1ZGUgIkV2
ZW50RGlzcGF0Y2hlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiRm9ybURhdGFSZWZlcmVuY2UuaCIK
ICNpbmNsdWRlICJGcmFtZUluZm9EYXRhLmgiCkBAIC04NSw3ICs4Niw2IEBACiAjaW5jbHVkZSAi
U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXIuaCIK
ICNpbmNsdWRlICJUZXh0Q2hlY2tlclN0YXRlLmgiCi0jaW5jbHVkZSAiVGV4dElucHV0Q29udGV4
dC5oIgogI2luY2x1ZGUgIlVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiVW5k
b09yUmVkby5oIgogI2luY2x1ZGUgIlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuaCIK
QEAgLTkzMzYsNyArOTMzNiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp3ZWJWaWV3RGlkTW92ZVRv
V2luZG93KCkKICAgICB9CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojp0ZXh0SW5wdXRDb250ZXh0
c0luUmVjdChXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBWZWN0b3I8V2ViS2l0OjpUZXh0SW5wdXRDb250ZXh0PiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBXZWJQYWdlUHJveHk6OnRleHRJbnB1dENvbnRleHRzSW5SZWN0KFdlYkNvcmU6
OkZsb2F0UmVjdCByZWN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJL
aXQ6OkVsZW1lbnRDb250ZXh0PiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICgh
aGFzUnVubmluZ1Byb2Nlc3MoKSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwpA
QCAtOTM0Niw3ICs5MzQ2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnRleHRJbnB1dENvbnRleHRz
SW5SZWN0KFdlYkNvcmU6OkZsb2F0UmVjdCByZWN0LCBDb21wbGV0aW9uSGEKICAgICBtX3Byb2Nl
c3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpU
ZXh0SW5wdXRDb250ZXh0c0luUmVjdChyZWN0KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciks
IG1fd2ViUGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmZvY3VzVGV4dElucHV0Q29u
dGV4dChjb25zdCBUZXh0SW5wdXRDb250ZXh0JiBjb250ZXh0LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdlUHJveHk6OmZvY3Vz
VGV4dElucHV0Q29udGV4dChjb25zdCBFbGVtZW50Q29udGV4dCYgY29udGV4dCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIWhh
c1J1bm5pbmdQcm9jZXNzKCkpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAwNzUwYWFkNmJkNTViM2Vl
YTBkNzM3MjZiZTMyMjljYzZkNDdlZTMyLi44YTFiMTM0ZDUwZGFmMDc0MWZiMmFiNDJiNTc1MDFj
ODRjZDBiZTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMjg4
LDYgKzI4OCw3IEBAIHN0cnVjdCBEb2N1bWVudEVkaXRpbmdDb250ZXh0Owogc3RydWN0IERvY3Vt
ZW50RWRpdGluZ0NvbnRleHRSZXF1ZXN0Owogc3RydWN0IEVkaXRpbmdSYW5nZTsKIHN0cnVjdCBF
ZGl0b3JTdGF0ZTsKK3N0cnVjdCBFbGVtZW50Q29udGV4dDsKIHN0cnVjdCBGb250SW5mbzsKIHN0
cnVjdCBGcmFtZUluZm9EYXRhOwogc3RydWN0IEluc2VydFRleHRPcHRpb25zOwpAQCAtMjk1LDcg
KzI5Niw2IEBAIHN0cnVjdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdDsKIHN0cnVjdCBM
b2FkUGFyYW1ldGVyczsKIHN0cnVjdCBQbGF0Zm9ybVBvcHVwTWVudURhdGE7CiBzdHJ1Y3QgUHJp
bnRJbmZvOwotc3RydWN0IFRleHRJbnB1dENvbnRleHQ7CiBzdHJ1Y3QgV2ViQXV0b2NvcnJlY3Rp
b25EYXRhOwogc3RydWN0IFdlYlBvcHVwSXRlbTsKIHN0cnVjdCBVUkxTY2hlbWVUYXNrUGFyYW1l
dGVyczsKQEAgLTY0NSw4ICs2NDUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXF1ZXN0Rm9udEF0
dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KEZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6Rm9u
dEF0dHJpYnV0ZXMmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBmb250QXR0
cmlidXRlc0NhbGxiYWNrKGNvbnN0IFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVzJiwgQ2FsbGJhY2tJ
RCk7CiAKLSAgICB2b2lkIHRleHRJbnB1dENvbnRleHRzSW5SZWN0KFdlYkNvcmU6OkZsb2F0UmVj
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8VGV4dElucHV0Q29udGV4dD4m
KT4mJik7Ci0gICAgdm9pZCBmb2N1c1RleHRJbnB1dENvbnRleHQoY29uc3QgVGV4dElucHV0Q29u
dGV4dCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgdGV4dElu
cHV0Q29udGV4dHNJblJlY3QoV2ViQ29yZTo6RmxvYXRSZWN0LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFZlY3RvcjxFbGVtZW50Q29udGV4dD4mKT4mJik7CisgICAgdm9pZCBmb2N1c1Rl
eHRJbnB1dENvbnRleHQoY29uc3QgRWxlbWVudENvbnRleHQmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgZG91YmxlIGRp
c3BsYXllZENvbnRlbnRTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFZpc2libGVDb250ZW50
UmVjdFVwZGF0ZS5zY2FsZSgpOyB9CkBAIC03MDMsNyArNzAzLDcgQEAgcHVibGljOgogICAgIHZv
aWQgcmVwbGFjZVNlbGVjdGVkVGV4dChjb25zdCBTdHJpbmcmIG9sZFRleHQsIGNvbnN0IFN0cmlu
ZyYgbmV3VGV4dCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlUG9zaXRpb25JbmZvcm1hdGlvbihjb25z
dCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpOwogICAgIHZvaWQgcmVxdWVzdFBv
c2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QmKTsK
LSAgICB2b2lkIHN0YXJ0SW50ZXJhY3Rpb25XaXRoRWxlbWVudEF0UG9zaXRpb24oY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmKTsKKyAgICB2b2lkIHN0YXJ0SW50ZXJhY3Rpb25XaXRoUG9zaXRpb25J
bmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpOwogICAg
IHZvaWQgc3RvcEludGVyYWN0aW9uKCk7CiAgICAgdm9pZCBwZXJmb3JtQWN0aW9uT25FbGVtZW50
KHVpbnQzMl90IGFjdGlvbik7CiAgICAgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoY29uc3QgU2hh
cmVkTWVtb3J5OjpIYW5kbGUmIGltYWdlSGFuZGxlLCB1aW50NjRfdCBpbWFnZVNpemUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW0KaW5kZXggNDA2YmE3ZWY1ZWMzNWY4YTFkZGNjZjNlYTk5MmQ4YTMzMmMyNmJkNy4u
ZWIyNjUxMmE5NDBhZDc2ZWFjNTM5NjhmN2I0MGY4ZGMwZTUxZWY3ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
CkBAIC02NDk2LDcgKzY0OTYsNyBAQCAtIChSZXRhaW5QdHI8TlNBcnJheT4pYWN0aW9uU2hlZXRB
c3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQgZAogCiAtICh2b2lk
KWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50
IHdpbGxTdGFydEludGVyYWN0aW9uV2l0aEVsZW1lbnQ6KF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZv
ICopZWxlbWVudAogewotICAgIF9wYWdlLT5zdGFydEludGVyYWN0aW9uV2l0aEVsZW1lbnRBdFBv
c2l0aW9uKF9wb3NpdGlvbkluZm9ybWF0aW9uLnJlcXVlc3QucG9pbnQpOworICAgIF9wYWdlLT5z
dGFydEludGVyYWN0aW9uV2l0aFBvc2l0aW9uSW5mb3JtYXRpb24oX3Bvc2l0aW9uSW5mb3JtYXRp
b24pOwogfQogCiAtICh2b2lkKWFjdGlvblNoZWV0QXNzaXN0YW50RGlkU3RvcEludGVyYWN0aW9u
OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50CkBAIC04MDczLDcgKzgwNzMsNyBA
QCAtICh2b2lkKWFzc2lnbkxlZ2FjeURhdGFGb3JDb250ZXh0TWVudUludGVyYWN0aW9uCiAKICAg
ICBjb25zdCBhdXRvJiB1cmwgPSBfcG9zaXRpb25JbmZvcm1hdGlvbi51cmw7CiAKLSAgICBfcGFn
ZS0+c3RhcnRJbnRlcmFjdGlvbldpdGhFbGVtZW50QXRQb3NpdGlvbihfcG9zaXRpb25JbmZvcm1h
dGlvbi5yZXF1ZXN0LnBvaW50KTsKKyAgICBfcGFnZS0+c3RhcnRJbnRlcmFjdGlvbldpdGhQb3Np
dGlvbkluZm9ybWF0aW9uKF9wb3NpdGlvbkluZm9ybWF0aW9uKTsKIAogICAgIFVJVmlld0NvbnRy
b2xsZXIgKnByZXZpZXdWaWV3Q29udHJvbGxlciA9IG5pbDsKIApAQCAtODI0Niw3ICs4MjQ2LDcg
QEAgLSAodm9pZCljb250aW51ZUNvbnRleHRNZW51SW50ZXJhY3Rpb246KHZvaWQoXikoVUlDb250
ZXh0TWVudUNvbmZpZ3VyYXRpb24gKikpY28KICAgICAgICAgICAgIHJldHVybiBzdHJvbmdTZWxm
LT5fY29udGV4dE1lbnVMZWdhY3lQcmV2aWV3Q29udHJvbGxlci5nZXQoKTsKICAgICAgICAgfTsK
IAotICAgICAgICBfcGFnZS0+c3RhcnRJbnRlcmFjdGlvbldpdGhFbGVtZW50QXRQb3NpdGlvbihf
cG9zaXRpb25JbmZvcm1hdGlvbi5yZXF1ZXN0LnBvaW50KTsKKyAgICAgICAgX3BhZ2UtPnN0YXJ0
SW50ZXJhY3Rpb25XaXRoUG9zaXRpb25JbmZvcm1hdGlvbihfcG9zaXRpb25JbmZvcm1hdGlvbik7
CiAKICAgICAgICAgY29udGludWVXaXRoQ29udGV4dE1lbnVDb25maWd1cmF0aW9uKFtVSUNvbnRl
eHRNZW51Q29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uV2l0aElkZW50aWZpZXI6bmlsIHByZXZp
ZXdQcm92aWRlcjpjb250ZW50UHJldmlld1Byb3ZpZGVyIGFjdGlvblByb3ZpZGVyOmFjdGlvbk1l
bnVQcm92aWRlcl0pOwogICAgICAgICByZXR1cm47CkBAIC04MjY4LDcgKzgyNjgsNyBAQCAtICh2
b2lkKWNvbnRpbnVlQ29udGV4dE1lbnVJbnRlcmFjdGlvbjoodm9pZCheKShVSUNvbnRleHRNZW51
Q29uZmlndXJhdGlvbiAqKSljbwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGNvbmZpZ3VyYXRp
b25Gcm9tV0tVSURlbGVnYXRlKSB7Ci0gICAgICAgICAgICBzdHJvbmdTZWxmLT5fcGFnZS0+c3Rh
cnRJbnRlcmFjdGlvbldpdGhFbGVtZW50QXRQb3NpdGlvbihzdHJvbmdTZWxmLT5fcG9zaXRpb25J
bmZvcm1hdGlvbi5yZXF1ZXN0LnBvaW50KTsKKyAgICAgICAgICAgIHN0cm9uZ1NlbGYtPl9wYWdl
LT5zdGFydEludGVyYWN0aW9uV2l0aFBvc2l0aW9uSW5mb3JtYXRpb24oc3Ryb25nU2VsZi0+X3Bv
c2l0aW9uSW5mb3JtYXRpb24pOwogICAgICAgICAgICAgc3Ryb25nU2VsZi0+X2NvbnRleHRNZW51
QWN0aW9uUHJvdmlkZXJEZWxlZ2F0ZU5lZWRzT3ZlcnJpZGUgPSBZRVM7CiAgICAgICAgICAgICBj
b250aW51ZVdpdGhDb250ZXh0TWVudUNvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbkZyb21XS1VJ
RGVsZWdhdGUpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtODM2Myw3ICs4MzYzLDcgQEAgLSAo
Qk9PTCljb250aW51ZUNvbnRleHRNZW51SW50ZXJhY3Rpb25XaXRoRGF0YURldGVjdG9yczoodm9p
ZCheKShVSUNvbnRleHRNZW51Q28KICAgICAgICAgTlNEaWN0aW9uYXJ5ICpjb250ZXh0ID0gW3Nl
bGYgZGF0YURldGVjdGlvbkNvbnRleHRGb3JQb3NpdGlvbkluZm9ybWF0aW9uOl9wb3NpdGlvbklu
Zm9ybWF0aW9uXTsKICAgICAgICAgVUlDb250ZXh0TWVudUNvbmZpZ3VyYXRpb24gKmNvbmZpZ3Vy
YXRpb25Gcm9tREQgPSBbZGRDb250ZXh0TWVudUFjdGlvbkNsYXNzIGNvbnRleHRNZW51Q29uZmln
dXJhdGlvbkZvclVSTDpsaW5rVVJMIGlkZW50aWZpZXI6X3Bvc2l0aW9uSW5mb3JtYXRpb24uZGF0
YURldGVjdG9ySWRlbnRpZmllciBzZWxlY3RlZFRleHQ6W3NlbGYgc2VsZWN0ZWRUZXh0XSByZXN1
bHRzOl9wb3NpdGlvbkluZm9ybWF0aW9uLmRhdGFEZXRlY3RvclJlc3VsdHMuZ2V0KCkgaW5WaWV3
OnNlbGYgY29udGV4dDpjb250ZXh0IG1lbnVJZGVudGlmaWVyOm5pbF07CiAgICAgICAgIF9jb250
ZXh0TWVudUFjdGlvblByb3ZpZGVyRGVsZWdhdGVOZWVkc092ZXJyaWRlID0gWUVTOwotICAgICAg
ICBfcGFnZS0+c3RhcnRJbnRlcmFjdGlvbldpdGhFbGVtZW50QXRQb3NpdGlvbihfcG9zaXRpb25J
bmZvcm1hdGlvbi5yZXF1ZXN0LnBvaW50KTsKKyAgICAgICAgX3BhZ2UtPnN0YXJ0SW50ZXJhY3Rp
b25XaXRoUG9zaXRpb25JbmZvcm1hdGlvbihfcG9zaXRpb25JbmZvcm1hdGlvbik7CiAgICAgICAg
IGNvbnRpbnVlV2l0aENvbnRleHRNZW51Q29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uRnJvbURE
KTsKICAgICAgICAgcmV0dXJuIFlFUzsKICAgICB9CkBAIC04Nzk2LDcgKzg3OTYsNyBAQCAtIChV
SVZpZXdDb250cm9sbGVyICopX3ByZXNlbnRlZFZpZXdDb250cm9sbGVyRm9yUHJldmlld0l0ZW1D
b250cm9sbGVyOihVSVByZXZpZQogCiAgICAgaWYgKFtfcHJldmlld0l0ZW1Db250cm9sbGVyIHR5
cGVdID09IFVJUHJldmlld0l0ZW1UeXBlTGluaykgewogICAgICAgICBfbG9uZ1ByZXNzQ2FuQ2xp
Y2sgPSBOTzsKLSAgICAgICAgX3BhZ2UtPnN0YXJ0SW50ZXJhY3Rpb25XaXRoRWxlbWVudEF0UG9z
aXRpb24oX3Bvc2l0aW9uSW5mb3JtYXRpb24ucmVxdWVzdC5wb2ludCk7CisgICAgICAgIF9wYWdl
LT5zdGFydEludGVyYWN0aW9uV2l0aFBvc2l0aW9uSW5mb3JtYXRpb24oX3Bvc2l0aW9uSW5mb3Jt
YXRpb24pOwogCiAgICAgICAgIC8vIFRyZWF0IGFuaW1hdGVkIGltYWdlcyBsaWtlIGEgbGluayBw
cmV2aWV3CiAgICAgICAgIGlmIChpc1ZhbGlkVVJMRm9ySW1hZ2VQcmV2aWV3ICYmIF9wb3NpdGlv
bkluZm9ybWF0aW9uLmlzQW5pbWF0ZWRJbWFnZSkgewpAQCAtODg1Niw3ICs4ODU2LDcgQEAgLSAo
VUlWaWV3Q29udHJvbGxlciAqKV9wcmVzZW50ZWRWaWV3Q29udHJvbGxlckZvclByZXZpZXdJdGVt
Q29udHJvbGxlcjooVUlQcmV2aWUKICAgICAgICAgfQogCiAgICAgICAgIFJldGFpblB0cjxfV0tB
Y3RpdmF0ZWRFbGVtZW50SW5mbz4gZWxlbWVudEluZm8gPSBhZG9wdE5TKFtbX1dLQWN0aXZhdGVk
RWxlbWVudEluZm8gYWxsb2NdIF9pbml0V2l0aFR5cGU6X1dLQWN0aXZhdGVkRWxlbWVudFR5cGVJ
bWFnZSBVUkw6YWx0ZXJuYXRlVVJMLmdldCgpIGltYWdlVVJMOm5pbCBsb2NhdGlvbjpfcG9zaXRp
b25JbmZvcm1hdGlvbi5yZXF1ZXN0LnBvaW50IHRpdGxlOl9wb3NpdGlvbkluZm9ybWF0aW9uLnRp
dGxlIElEOl9wb3NpdGlvbkluZm9ybWF0aW9uLmlkQXR0cmlidXRlIHJlY3Q6X3Bvc2l0aW9uSW5m
b3JtYXRpb24uYm91bmRzIGltYWdlOl9wb3NpdGlvbkluZm9ybWF0aW9uLmltYWdlLmdldCgpIHVz
ZXJJbmZvOmltYWdlSW5mby5nZXQoKV0pOwotICAgICAgICBfcGFnZS0+c3RhcnRJbnRlcmFjdGlv
bldpdGhFbGVtZW50QXRQb3NpdGlvbihfcG9zaXRpb25JbmZvcm1hdGlvbi5yZXF1ZXN0LnBvaW50
KTsKKyAgICAgICAgX3BhZ2UtPnN0YXJ0SW50ZXJhY3Rpb25XaXRoUG9zaXRpb25JbmZvcm1hdGlv
bihfcG9zaXRpb25JbmZvcm1hdGlvbik7CiAKICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfQkVHSU4KICAgICAgICAgaWYgKFt1aURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IoX3dlYlZpZXc6d2lsbFByZXZpZXdJbWFnZVdpdGhVUkw6KV0pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCBkMTdhNjgy
NDM5MDM1ZGE2NzM0NTY5NTJjYmE3YTg2MmY4ZGJiMzAwLi4yZGZmZTI1NGExYWUzMWRkYWNlNTA0
OGRlZWE0MTBkZjE0MjRkODc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW0KQEAgLTYyNCw5ICs2MjQsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
cmVxdWVzdFBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJl
cXVlcwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdFBvc2l0
aW9uSW5mb3JtYXRpb24ocmVxdWVzdCksIG1fd2ViUGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdl
UHJveHk6OnN0YXJ0SW50ZXJhY3Rpb25XaXRoRWxlbWVudEF0UG9zaXRpb24oY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIHBvaW50KQordm9pZCBXZWJQYWdlUHJveHk6OnN0YXJ0SW50ZXJhY3Rpb25X
aXRoUG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3Np
dGlvbiYgcG9zaXRpb25JbmZvcm1hdGlvbikKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlN0YXJ0SW50ZXJhY3Rpb25XaXRoRWxlbWVudEF0UG9zaXRpb24ocG9pbnQp
LCBtX3dlYlBhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
dGFydEludGVyYWN0aW9uV2l0aEVsZW1lbnRDb250ZXh0T3JQb3NpdGlvbihwb3NpdGlvbkluZm9y
bWF0aW9uLmVsZW1lbnRDb250ZXh0LCBwb3NpdGlvbkluZm9ybWF0aW9uLnJlcXVlc3QucG9pbnQp
LCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzdG9wSW50ZXJhY3Rpb24o
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggMjg5MGY3ODFmYjE4YWM5ZjNmNWNiNWU1YjNjMzQ0ZTQ4OGQ4ZjYyYi4uNGE5ZjY4YTRkNjQw
MmFlMzY0ZmM2M2IzZWNmOTUwZmI2NDc5OGZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03MjIsNyArNzIyLDcgQEAKIAkJMkRERjcz
MTUxOEU5NTA2MDAwNEY1QTY2IC8qIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRERjczMTMx
OEU5NTA2MDAwNEY1QTY2IC8qIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5oICov
OyB9OwogCQkyREU2OTQzRDE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29u
dHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyREU2OTQzQjE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZp
Y2F0aW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTJERTY5NDNFMThC
RDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERTY5NDNDMThC
RDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZXMuaCAq
LzsgfTsKLQkJMkRFOUIxMzUyMjMxQjVCMjAwNTI4N0I3IC8qIFRleHRJbnB1dENvbnRleHQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERTlCMTMzMjIz
MUI1QjIwMDUyODdCNyAvKiBUZXh0SW5wdXRDb250ZXh0LmggKi87IH07CisJCTJERTlCMTM1MjIz
MUI1QjIwMDUyODdCNyAvKiBFbGVtZW50Q29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRFOUIxMzMyMjMxQjVCMjAwNTI4N0I3IC8qIEVsZW1l
bnRDb250ZXh0LmggKi87IH07CiAJCTJERTlCMTNBMjIzMUY2MUMwMDUyODdCNyAvKiBfV0tUZXh0
SW5wdXRDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyREU5QjEzODIyMzFGNjFDMDA1Mjg3QjcgLyogX1dLVGV4dElucHV0Q29udGV4dC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJERTlCMTND
MjIzMUY3N0MwMDUyODdCNyAvKiBfV0tUZXh0SW5wdXRDb250ZXh0SW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERTlCMTNCMjIzMUY3N0Mw
MDUyODdCNyAvKiBfV0tUZXh0SW5wdXRDb250ZXh0SW50ZXJuYWwuaCAqLzsgfTsKIAkJMkRFQUM1
Q0YxQUMzNjhCQjAwQTE5NUQ4IC8qIF9XS0ZpbmRPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREVBQzVDRTFBQzM2OEJCMDBBMTk1RDggLyog
X1dLRmluZE9wdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtMjg3NCw4ICsyODc0LDggQEAKIAkJMkRERjczMTQxOEU5NTA2MDAwNEY1QTY2
IC8qIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlv
bi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRFNjk0M0IxOEJEMkE2ODAwNUMx
NUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU21hcnRNYWduaWZpY2F0aW9uQ29u
dHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQy
L1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VU
cmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkyREU2OTQzQzE4QkQyQTY4MDA1QzE1RTUg
LyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5o
OyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TbWFydE1hZ25pZmljYXRpb25Db250cm9s
bGVyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKLQkJMkRF
OUIxMzMyMjMxQjVCMjAwNTI4N0I3IC8qIFRleHRJbnB1dENvbnRleHQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dElucHV0Q29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQkyREU5QjEzNDIyMzFCNUIyMDA1Mjg3QjcgLyogVGV4dElucHV0Q29udGV4
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0SW5wdXRDb250
ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkRFOUIxMzMyMjMxQjVCMjAw
NTI4N0I3IC8qIEVsZW1lbnRDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEVsZW1lbnRDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJERTlC
MTM0MjIzMUI1QjIwMDUyODdCNyAvKiBFbGVtZW50Q29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFbGVtZW50Q29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTJERTlCMTM3MjIzMUY2MUMwMDUyODdCNyAvKiBfV0tUZXh0SW5wdXRD
b250ZXh0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLVGV4
dElucHV0Q29udGV4dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRFOUIxMzgy
MjMxRjYxQzAwNTI4N0I3IC8qIF9XS1RleHRJbnB1dENvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gX1dLVGV4dElucHV0Q29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkyREU5QjEzQjIyMzFGNzdDMDA1Mjg3QjcgLyogX1dLVGV4dElucHV0Q29u
dGV4dEludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1RleHRJ
bnB1dENvbnRleHRJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTI2
MSw2ICs1MjYxLDggQEAKIAkJCQlFMTA1RkU1MzE4RDdCOURFMDA4RjU3QTggLyogRWRpdGluZ1Jh
bmdlLmggKi8sCiAJCQkJOENGRUNFOTMxNDkwRjE0MDAwMkFBQTMyIC8qIEVkaXRvclN0YXRlLmNw
cCAqLywKIAkJCQkxQUE0MUFCNDEyQzAyRUM0MDAyQkU2N0IgLyogRWRpdG9yU3RhdGUuaCAqLywK
KwkJCQkyREU5QjEzNDIyMzFCNUIyMDA1Mjg3QjcgLyogRWxlbWVudENvbnRleHQuY3BwICovLAor
CQkJCTJERTlCMTMzMjIzMUI1QjIwMDUyODdCNyAvKiBFbGVtZW50Q29udGV4dC5oICovLAogCQkJ
CUM1OUM0QTU2MThCODExNzQwMDdCRENCNiAvKiBGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmNw
cCAqLywKIAkJCQlDNTlDNEE1NzE4QjgxMTc0MDA3QkRDQjYgLyogRm9jdXNlZEVsZW1lbnRJbmZv
cm1hdGlvbi5oICovLAogCQkJCUJDRTgxRDhBMTMxOUY3RUYwMDI0MTkxMCAvKiBGb250SW5mby5j
cHAgKi8sCkBAIC01MzEzLDggKzUzMTUsNiBAQAogCQkJCTUyNzJCMjg4MTQwNjk4NUQwMDk2QTVE
MCAvKiBTdGF0aXN0aWNzRGF0YS5jcHAgKi8sCiAJCQkJNTI3MkIyODkxNDA2OTg1RDAwOTZBNUQw
IC8qIFN0YXRpc3RpY3NEYXRhLmggKi8sCiAJCQkJMUE1RTREQTMxMkQzQkQzRDAwOTlBMkJCIC8q
IFRleHRDaGVja2VyU3RhdGUuaCAqLywKLQkJCQkyREU5QjEzNDIyMzFCNUIyMDA1Mjg3QjcgLyog
VGV4dElucHV0Q29udGV4dC5jcHAgKi8sCi0JCQkJMkRFOUIxMzMyMjMxQjVCMjAwNTI4N0I3IC8q
IFRleHRJbnB1dENvbnRleHQuaCAqLywKIAkJCQkyRkQ0M0I5MjFGQTAwNkEzMDA4M0Y1MUMgLyog
VG91Y2hCYXJNZW51RGF0YS5jcHAgKi8sCiAJCQkJMkZENDNCOTExRkEwMDZBMTAwODNGNTFDIC8q
IFRvdWNoQmFyTWVudURhdGEuaCAqLywKIAkJCQkyRjgwOURENTFGQkQxQkM5MDA1RkU2M0EgLyog
VG91Y2hCYXJNZW51SXRlbURhdGEuY3BwICovLApAQCAtOTQ1OSw2ICs5NDU5LDcgQEAKIAkJCQky
RDU4NzVCRjIxOUI1MzE1MDA3MEI5QUEgLyogRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUUxMDVGRTU0MThEN0I5REUwMDhGNTdBOCAvKiBFZGl0aW5nUmFuZ2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBQTQxQUI1MTJDMDJFQzQwMDJCRTY3QiAvKiBFZGl0b3JT
dGF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkRFOUIxMzUyMjMxQjVCMjAwNTI4N0I3IC8qIEVs
ZW1lbnRDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAzMkRBODEwRjQzN0QxMDA1OEMx
NUEgLyogRW5jb2Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFCMTVBODUxMzg0M0EzOTAwMzIx
QUQ4IC8qIEVudmlyb25tZW50VXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUE1NzVG
QjE0OTZCNTI2MDBBNEVFMDYgLyogRXZlbnREaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLywKQEAg
LTk3NzcsNyArOTc3OCw2IEBACiAJCQkJMUFBNDE3Q0IxMkMwMENDQTAwMkJFNjdCIC8qIFRleHRD
aGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1M0NGQkJDODIyMjREMUI1MDAyNjY1NDYgLyog
VGV4dENoZWNrZXJDb21wbGV0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTVFNERBNDEyRDNC
RDNEMDA5OUEyQkIgLyogVGV4dENoZWNrZXJTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMkRF
OUIxMzUyMjMxQjVCMjAwNTI4N0I3IC8qIFRleHRJbnB1dENvbnRleHQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUNFMUEwQkQ3MUE0OEU2QzYwMDU0RUY3NCAvKiBUZXh0SW5wdXRTUEkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBQUYyNjM5MTQ2ODdDMzkwMDRBMUU4QSAvKiBUaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGMDVEODcxNDY4ODM0ODAwOEIx
RTgxIC8qIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA4
ODFmNzc4OGY1ZTU1OWZkYjgzYWQ4ZDdkMWNhNzk1ZTAwNDcyMDEzLi5jZDg5YmVkOTg2ZjI1YzU2
OTk3ZTdlYWNmZDVmYTk1YzQwM2RiYjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNjc0OSw5ICs2NzQ5LDkgQEAgc3RhdGljIGJvb2wgaXNF
ZGl0YWJsZVRleHRJbnB1dEVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKICAgICByZXR1cm4gZWxl
bWVudC5pc1Jvb3RFZGl0YWJsZUVsZW1lbnQoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjp0ZXh0SW5w
dXRDb250ZXh0c0luUmVjdChXZWJDb3JlOjpGbG9hdFJlY3Qgc2VhcmNoUmVjdCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8VGV4dElucHV0Q29udGV4dD4mKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFnZTo6dGV4dElucHV0Q29udGV4dHNJblJlY3QoV2ViQ29y
ZTo6RmxvYXRSZWN0IHNlYXJjaFJlY3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVj
dG9yPEVsZW1lbnRDb250ZXh0PiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFZlY3Rv
cjxXZWJLaXQ6OlRleHRJbnB1dENvbnRleHQ+IHRleHRJbnB1dENvbnRleHRzOworICAgIFZlY3Rv
cjxXZWJLaXQ6OkVsZW1lbnRDb250ZXh0PiB0ZXh0SW5wdXRDb250ZXh0czsKIAogICAgIGZvciAo
RnJhbWUqIGZyYW1lID0gJm1fcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1l
LT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0g
ZnJhbWUtPmRvY3VtZW50KCk7CkBAIC02Nzc3LDcgKzY3NzcsNyBAQCB2b2lkIFdlYlBhZ2U6OnRl
eHRJbnB1dENvbnRleHRzSW5SZWN0KFdlYkNvcmU6OkZsb2F0UmVjdCBzZWFyY2hSZWN0LCBDb21w
bGV0aW9uSAogICAgICAgICAgICAgaWYgKCFzZWFyY2hSZWN0LmludGVyc2VjdHMoZWxlbWVudFJl
Y3QpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBXZWJLaXQ6OlRl
eHRJbnB1dENvbnRleHQgY29udGV4dDsKKyAgICAgICAgICAgIFdlYktpdDo6RWxlbWVudENvbnRl
eHQgY29udGV4dDsKICAgICAgICAgICAgIGNvbnRleHQud2ViUGFnZUlkZW50aWZpZXIgPSBtX2lk
ZW50aWZpZXI7CiAgICAgICAgICAgICBjb250ZXh0LmRvY3VtZW50SWRlbnRpZmllciA9IGRvY3Vt
ZW50LT5pZGVudGlmaWVyKCk7CiAgICAgICAgICAgICBjb250ZXh0LmVsZW1lbnRJZGVudGlmaWVy
ID0gZG9jdW1lbnQtPmlkZW50aWZpZXJGb3JFbGVtZW50KGVsZW1lbnQpOwpAQCAtNjc5MCw5ICs2
NzkwLDkgQEAgdm9pZCBXZWJQYWdlOjp0ZXh0SW5wdXRDb250ZXh0c0luUmVjdChXZWJDb3JlOjpG
bG9hdFJlY3Qgc2VhcmNoUmVjdCwgQ29tcGxldGlvbkgKICAgICBjb21wbGV0aW9uSGFuZGxlcih0
ZXh0SW5wdXRDb250ZXh0cyk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Zm9jdXNUZXh0SW5wdXRDb250
ZXh0KGNvbnN0IFRleHRJbnB1dENvbnRleHQmIHRleHRJbnB1dENvbnRleHQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2U6OmZv
Y3VzVGV4dElucHV0Q29udGV4dChjb25zdCBFbGVtZW50Q29udGV4dCYgdGV4dElucHV0Q29udGV4
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
LSAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IGVsZW1lbnRGb3JUZXh0SW5wdXRDb250ZXh0
KHRleHRJbnB1dENvbnRleHQpOworICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50ID0gZWxlbWVu
dEZvckNvbnRleHQodGV4dElucHV0Q29udGV4dCk7CiAKICAgICBpZiAoZWxlbWVudCkKICAgICAg
ICAgZWxlbWVudC0+Zm9jdXMoKTsKQEAgLTY4MDAsMTkgKzY4MDAsMzIgQEAgdm9pZCBXZWJQYWdl
Ojpmb2N1c1RleHRJbnB1dENvbnRleHQoY29uc3QgVGV4dElucHV0Q29udGV4dCYgdGV4dElucHV0
Q29udGV4dCwgQ28KICAgICBjb21wbGV0aW9uSGFuZGxlcihlbGVtZW50KTsKIH0KIAotRWxlbWVu
dCogV2ViUGFnZTo6ZWxlbWVudEZvclRleHRJbnB1dENvbnRleHQoY29uc3QgVGV4dElucHV0Q29u
dGV4dCYgdGV4dElucHV0Q29udGV4dCkKK0VsZW1lbnQqIFdlYlBhZ2U6OmVsZW1lbnRGb3JDb250
ZXh0KGNvbnN0IEVsZW1lbnRDb250ZXh0JiBlbGVtZW50Q29udGV4dCkgY29uc3QKIHsKLSAgICBp
ZiAodGV4dElucHV0Q29udGV4dC53ZWJQYWdlSWRlbnRpZmllciAhPSBtX2lkZW50aWZpZXIpCisg
ICAgaWYgKGVsZW1lbnRDb250ZXh0LndlYlBhZ2VJZGVudGlmaWVyICE9IG1faWRlbnRpZmllcikK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvKiBkb2N1bWVudCA9IERvY3VtZW50
OjphbGxEb2N1bWVudHNNYXAoKS5nZXQodGV4dElucHV0Q29udGV4dC5kb2N1bWVudElkZW50aWZp
ZXIpOworICAgIGF1dG8qIGRvY3VtZW50ID0gRG9jdW1lbnQ6OmFsbERvY3VtZW50c01hcCgpLmdl
dChlbGVtZW50Q29udGV4dC5kb2N1bWVudElkZW50aWZpZXIpOwogICAgIGlmICghZG9jdW1lbnQp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKGRvY3VtZW50LT5wYWdlKCkgIT0g
bV9wYWdlLmdldCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBkb2N1
bWVudC0+c2VhcmNoRm9yRWxlbWVudEJ5SWRlbnRpZmllcih0ZXh0SW5wdXRDb250ZXh0LmVsZW1l
bnRJZGVudGlmaWVyKTsKKyAgICByZXR1cm4gZG9jdW1lbnQtPnNlYXJjaEZvckVsZW1lbnRCeUlk
ZW50aWZpZXIoZWxlbWVudENvbnRleHQuZWxlbWVudElkZW50aWZpZXIpOworfQorCitPcHRpb25h
bDxFbGVtZW50Q29udGV4dD4gV2ViUGFnZTo6Y29udGV4dEZvckVsZW1lbnQoV2ViQ29yZTo6RWxl
bWVudCYgZWxlbWVudCkgY29uc3QKK3sKKyAgICBhdXRvJiBkb2N1bWVudCA9IGVsZW1lbnQuZG9j
dW1lbnQoKTsKKyAgICBpZiAoIW1fcGFnZSB8fCBkb2N1bWVudC5wYWdlKCkgIT0gbV9wYWdlLmdl
dCgpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgYXV0byBmcmFtZSA9IGRv
Y3VtZW50LmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKworICAgIHJldHVybiBFbGVtZW50Q29udGV4dCB7IGVsZW1lbnRSZWN0SW5Sb290Vmll
d0Nvb3JkaW5hdGVzKGVsZW1lbnQsICpmcmFtZSksIG1faWRlbnRpZmllciwgZG9jdW1lbnQuaWRl
bnRpZmllcigpLCBkb2N1bWVudC5pZGVudGlmaWVyRm9yRWxlbWVudChlbGVtZW50KSB9OwogfQog
CiBQQUw6OlNlc3Npb25JRCBXZWJQYWdlOjpzZXNzaW9uSUQoKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGRmMGYzNjRhOGZlYmVjNGM4Zjg1
NTU1ZjAyYmZlNWYzNTNkMTBiYmEuLmIxNzY1YzFmNGY4MTFlMDA4NGYwYzk3NzhlNTlhMThlODNh
MGE4ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAg
LTI2MSwxMyArMjYxLDEzIEBAIHN0cnVjdCBBdHRyaWJ1dGVkU3RyaW5nOwogc3RydWN0IEJhY2tG
b3J3YXJkTGlzdEl0ZW1TdGF0ZTsKIHN0cnVjdCBEYXRhRGV0ZWN0aW9uUmVzdWx0Owogc3RydWN0
IEVkaXRvclN0YXRlOworc3RydWN0IEVsZW1lbnRDb250ZXh0Owogc3RydWN0IEZvbnRJbmZvOwog
c3RydWN0IEluc2VydFRleHRPcHRpb25zOwogc3RydWN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25B
dFBvc2l0aW9uOwogc3RydWN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0Owogc3RydWN0
IExvYWRQYXJhbWV0ZXJzOwogc3RydWN0IFByaW50SW5mbzsKLXN0cnVjdCBUZXh0SW5wdXRDb250
ZXh0Owogc3RydWN0IFdlYkF1dG9jb3JyZWN0aW9uRGF0YTsKIHN0cnVjdCBXZWJBdXRvY29ycmVj
dGlvbkNvbnRleHQ7CiBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczsKQEAgLTYxMSw4
ICs2MTEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBleGVjdXRlRWRpdENvbW1hbmRXaXRoQ2FsbGJh
Y2soY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBhcmd1bWVudCwgQ2FsbGJhY2tJRCk7CiAg
ICAgdm9pZCBzZWxlY3RBbGwoKTsKIAotICAgIHZvaWQgdGV4dElucHV0Q29udGV4dHNJblJlY3Qo
V2ViQ29yZTo6RmxvYXRSZWN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxX
ZWJLaXQ6OlRleHRJbnB1dENvbnRleHQ+Jik+JiYpOwotICAgIHZvaWQgZm9jdXNUZXh0SW5wdXRD
b250ZXh0KGNvbnN0IFRleHRJbnB1dENvbnRleHQmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKTsKKyAgICB2b2lkIHRleHRJbnB1dENvbnRleHRzSW5SZWN0KFdlYkNvcmU6OkZsb2F0
UmVjdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViS2l0OjpFbGVtZW50
Q29udGV4dD4mKT4mJik7CisgICAgdm9pZCBmb2N1c1RleHRJbnB1dENvbnRleHQoY29uc3QgRWxl
bWVudENvbnRleHQmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKIAogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIHNjcmVlblNpemUoKSBj
b25zdDsKQEAgLTY2OCw3ICs2NjgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXF1ZXN0QXV0b2Nv
cnJlY3Rpb25Db250ZXh0KCk7CiAgICAgdm9pZCBnZXRQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0
IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJ
bnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYmKT4mJik7CiAgICAgdm9pZCByZXF1ZXN0
UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCYp
OwotICAgIHZvaWQgc3RhcnRJbnRlcmFjdGlvbldpdGhFbGVtZW50QXRQb3NpdGlvbihjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYpOworICAgIHZvaWQgc3RhcnRJbnRlcmFjdGlvbldpdGhFbGVtZW50
Q29udGV4dE9yUG9zaXRpb24oT3B0aW9uYWw8RWxlbWVudENvbnRleHQ+JiYsIFdlYkNvcmU6Oklu
dFBvaW50JiYpOwogICAgIHZvaWQgc3RvcEludGVyYWN0aW9uKCk7CiAgICAgdm9pZCBwZXJmb3Jt
QWN0aW9uT25FbGVtZW50KHVpbnQzMl90IGFjdGlvbik7CiAgICAgdm9pZCBmb2N1c05leHRGb2N1
c2VkRWxlbWVudChib29sIGlzRm9yd2FyZCwgQ2FsbGJhY2tJRCk7CkBAIC0xMTg4LDcgKzExODgs
OCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNvbmZpZ3VyZUxvZ2dpbmdDaGFubmVsKGNvbnN0IFN0
cmluZyYsIFdURkxvZ0NoYW5uZWxTdGF0ZSwgV1RGTG9nTGV2ZWwpOwogCi0gICAgV2ViQ29yZTo6
RWxlbWVudCogZWxlbWVudEZvclRleHRJbnB1dENvbnRleHQoY29uc3QgVGV4dElucHV0Q29udGV4
dCYpOworICAgIFdlYkNvcmU6OkVsZW1lbnQqIGVsZW1lbnRGb3JDb250ZXh0KGNvbnN0IEVsZW1l
bnRDb250ZXh0JikgY29uc3Q7CisgICAgT3B0aW9uYWw8RWxlbWVudENvbnRleHQ+IGNvbnRleHRG
b3JFbGVtZW50KFdlYkNvcmU6OkVsZW1lbnQmKSBjb25zdDsKIAogI2lmIEVOQUJMRShBUFBMRV9Q
QVkpCiAgICAgV2ViUGF5bWVudENvb3JkaW5hdG9yKiBwYXltZW50Q29vcmRpbmF0b3IoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCmluZGV4IDJlZTE4ODk2NDdmNGM0NWQ2NWRhYWFhYjQyNWRkZWIwOWJkNWJkODIuLjMwOTZl
MmU2OTQxNDBjN2RmZTIyOWIzY2MwMjk1MTYyZjIyZGQzZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtODYsNyAr
ODYsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBSZXF1ZXN0
RXZhc2lvblJlY3RzQWJvdmVTZWxlY3Rpb24oKSAtPiAoVmVjdG9yPFdlYkNvcmU6OkZsb2F0UmVj
dD4gcmVjdHMpIEFzeW5jCiAgICAgR2V0UG9zaXRpb25JbmZvcm1hdGlvbihzdHJ1Y3QgV2ViS2l0
OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCByZXF1ZXN0KSAtPiAoc3RydWN0IFdlYktp
dDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24gaW5mb3JtYXRpb24pIFN5bmNocm9u
b3VzCiAgICAgUmVxdWVzdFBvc2l0aW9uSW5mb3JtYXRpb24oc3RydWN0IFdlYktpdDo6SW50ZXJh
Y3Rpb25JbmZvcm1hdGlvblJlcXVlc3QgcmVxdWVzdCkKLSAgICBTdGFydEludGVyYWN0aW9uV2l0
aEVsZW1lbnRBdFBvc2l0aW9uKFdlYkNvcmU6OkludFBvaW50IHBvaW50KQorICAgIFN0YXJ0SW50
ZXJhY3Rpb25XaXRoRWxlbWVudENvbnRleHRPclBvc2l0aW9uKE9wdGlvbmFsPFdlYktpdDo6RWxl
bWVudENvbnRleHQ+IGVsZW1lbnRDb250ZXh0LCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCkKICAg
ICBTdG9wSW50ZXJhY3Rpb24oKQogICAgIFBlcmZvcm1BY3Rpb25PbkVsZW1lbnQodWludDMyX3Qg
YWN0aW9uKQogICAgIEZvY3VzTmV4dEZvY3VzZWRFbGVtZW50KGJvb2wgaXNGb3J3YXJkLCBXZWJL
aXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKQEAgLTU2OSw4ICs1NjksOCBAQCBHZW5lcmF0ZVN5
bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRp
bmdDb21tYW5kVHlwZQogICAgIFZvaWNlc0RpZENoYW5nZSgpCiAjZW5kaWYKIAotICAgIFRleHRJ
bnB1dENvbnRleHRzSW5SZWN0KFdlYkNvcmU6OkZsb2F0UmVjdCByZWN0KSAtPiAoVmVjdG9yPHN0
cnVjdCBXZWJLaXQ6OlRleHRJbnB1dENvbnRleHQ+IGNvbnRleHRzKSBBc3luYwotICAgIEZvY3Vz
VGV4dElucHV0Q29udGV4dChzdHJ1Y3QgV2ViS2l0OjpUZXh0SW5wdXRDb250ZXh0IGNvbnRleHQp
IC0+IChib29sIHN1Y2Nlc3MpIEFzeW5jCisgICAgVGV4dElucHV0Q29udGV4dHNJblJlY3QoV2Vi
Q29yZTo6RmxvYXRSZWN0IHJlY3QpIC0+IChWZWN0b3I8c3RydWN0IFdlYktpdDo6RWxlbWVudENv
bnRleHQ+IGNvbnRleHRzKSBBc3luYworICAgIEZvY3VzVGV4dElucHV0Q29udGV4dChzdHJ1Y3Qg
V2ViS2l0OjpFbGVtZW50Q29udGV4dCBjb250ZXh0KSAtPiAoYm9vbCBzdWNjZXNzKSBBc3luYwog
CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBXYXNMb2FkZWRXaXRo
RGF0YVRyYW5zZmVyRnJvbVByZXZhbGVudFJlc291cmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggNzA4OTA3NzU3M2Nm
YjEwZmM5Y2Y2NTc0NDk5MWZjMTg3Yjg5NGJhOS4uZGRhYzQ4ODc1ZDc0NDFiNTU5OWZmOWIyZDhi
N2E4ZWQ2MDdhN2MxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTI3MTMsNiArMjcxMyw4IEBAIHN0YXRpYyB2b2lkIGVs
ZW1lbnRQb3NpdGlvbkluZm9ybWF0aW9uKFdlYlBhZ2UmIHBhZ2UsIEVsZW1lbnQmIGVsZW1lbnQs
IGNvbnN0IEluCiAgICAgICAgICAgICBpbWFnZVBvc2l0aW9uSW5mb3JtYXRpb24ocGFnZSwgZWxl
bWVudCwgcmVxdWVzdCwgaW5mbyk7CiAgICAgICAgIGJvdW5kc1Bvc2l0aW9uSW5mb3JtYXRpb24o
KnJlbmRlcmVyLCBpbmZvKTsKICAgICB9CisKKyAgICBpbmZvLmVsZW1lbnRDb250ZXh0ID0gcGFn
ZS5jb250ZXh0Rm9yRWxlbWVudChlbGVtZW50KTsKIH0KICAgICAKIHN0YXRpYyB2b2lkIHNlbGVj
dGlvblBvc2l0aW9uSW5mb3JtYXRpb24oV2ViUGFnZSYgcGFnZSwgY29uc3QgSW50ZXJhY3Rpb25J
bmZvcm1hdGlvblJlcXVlc3QmIHJlcXVlc3QsIEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0
aW9uJiBpbmZvKQpAQCAtMjgxMSw4ICsyODEzLDE0IEBAIHZvaWQgV2ViUGFnZTo6cmVxdWVzdFBv
c2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QmIHJl
CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZlUG9zaXRpb25JbmZv
cm1hdGlvbihwb3NpdGlvbkluZm9ybWF0aW9uKHJlcXVlc3QpKSk7CiB9CiAKLXZvaWQgV2ViUGFn
ZTo6c3RhcnRJbnRlcmFjdGlvbldpdGhFbGVtZW50QXRQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYgcG9pbnQpCit2b2lkIFdlYlBhZ2U6OnN0YXJ0SW50ZXJhY3Rpb25XaXRoRWxlbWVu
dENvbnRleHRPclBvc2l0aW9uKE9wdGlvbmFsPEVsZW1lbnRDb250ZXh0PiYmIGVsZW1lbnRDb250
ZXh0LCBXZWJDb3JlOjpJbnRQb2ludCYmIHBvaW50KQogeworICAgIGlmIChlbGVtZW50Q29udGV4
dCkKKyAgICAgICAgbV9pbnRlcmFjdGlvbk5vZGUgPSBlbGVtZW50Rm9yQ29udGV4dCgqZWxlbWVu
dENvbnRleHQpOworCisgICAgaWYgKG1faW50ZXJhY3Rpb25Ob2RlKQorICAgICAgICByZXR1cm47
CisKICAgICBGbG9hdFBvaW50IGFkanVzdGVkUG9pbnQ7CiAgICAgbV9pbnRlcmFjdGlvbk5vZGUg
PSBtX3BhZ2UtPm1haW5GcmFtZSgpLm5vZGVSZXNwb25kaW5nVG9DbGlja0V2ZW50cyhwb2ludCwg
YWRqdXN0ZWRQb2ludCk7CiB9CkBAIC0zOTI3LDcgKzM5MzUsNyBAQCB2b2lkIFdlYlBhZ2U6OnJl
cXVlc3REb2N1bWVudEVkaXRpbmdDb250ZXh0KERvY3VtZW50RWRpdGluZ0NvbnRleHRSZXF1ZXN0
IHJlcXVlcwogICAgIGJvb2wgd2FudHNSZWN0cyA9IHJlcXVlc3Qub3B0aW9ucy5jb250YWlucyhE
b2N1bWVudEVkaXRpbmdDb250ZXh0UmVxdWVzdDo6T3B0aW9uczo6UmVjdHMpOwogCiAgICAgaWYg
KGF1dG8gdGV4dElucHV0Q29udGV4dCA9IHJlcXVlc3QudGV4dElucHV0Q29udGV4dCkgewotICAg
ICAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IGVsZW1lbnRGb3JUZXh0SW5wdXRDb250ZXh0
KCp0ZXh0SW5wdXRDb250ZXh0KTsKKyAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBl
bGVtZW50Rm9yQ29udGV4dCgqdGV4dElucHV0Q29udGV4dCk7CiAgICAgICAgIGlmICghZWxlbWVu
dCkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICAgICAgICAgIHJl
dHVybjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380086</attachid>
            <date>2019-10-03 01:12:09 -0700</date>
            <delta_ts>2019-10-08 10:31:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202510-20191003011208.patch</filename>
            <type>text/plain</type>
            <size>50355</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNjQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGRlNzliMzQ2MjlmZjk5OWM5
MjMzY2E3ZjYyODVmMDJhMjE2N2ZiNmQuLmUxMTNlYzcwZWJhMjJjYmNhYzA4NjNmZWVhZDY5MzY0
YTI3ZDE0NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzAgQEAKKzIwMTktMTAtMDMgIEFuZHkgRXN0
ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEFkZCBhIGZhc3QgcGF0aCB0
aGF0IGF2b2lkcyBoaXQgdGVzdGluZyBkdXJpbmcgY29udGV4dCBtZW51IGludGVyYWN0aW9ucyBv
biBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjAyNTEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2hlbiBjb21wdXRpbmcgcG9zaXRpb24gaW5mb3JtYXRpb24gZm9yIGFuIGVsZW1lbnQsIHdl
IGNhbiBzdG9yZSBzdWZmaWNpZW50IGNvbnRleHQKKyAgICAgICAgaW5mb3JtYXRpb24gaW4gSW50
ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24gc3VjaCB0aGF0IHRoZSBzYW1lIGVsZW1lbnQg
Y291bGQgYmUKKyAgICAgICAgcmV0cmlldmVkIGFnYWluIHdpdGhvdXQgaGl0IHRlc3RpbmcuIFRo
ZSBleGlzdGluZyBUZXh0SW5wdXRDb250ZXh0IGNhbiBhbHJlYWR5IHN0b3JlIGFuCisgICAgICAg
IGVsZW1lbnQncyBwYWdlIGlkZW50aWZpZXIsIGRvY3VtZW50IGlkZW50aWZpZXIsIGFuZCBlbGVt
ZW50IGlkZW50aWZpZXIsIHdoaWNoIGlzIHN1ZmZpY2llbnQKKyAgICAgICAgY29udGV4dCBmb3Ig
c3VjaCBhIHRhc2suCisKKyAgICAgICAgVGhpcyBwYXRjaCByZW5hbWVzIFRleHRJbnB1dENvbnRl
eHQgdG8gRWxlbWVudENvbnRleHQgYW5kIHVzZXMgaXQgd2hlbiBwb3B1bGF0aW5nIG5ldworICAg
ICAgICBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiBzdHJ1Y3RzIGluIGVsZW1lbnRQ
b3NpdGlvbkluZm9ybWF0aW9uKCkuIFdoZW4gYSBjb250ZXh0CisgICAgICAgIG1lbnUgaW50ZXJh
Y3Rpb24gb2NjdXJzLCBXZWJQYWdlOjpzdGFydEludGVyYWN0aW9uV2l0aEVsZW1lbnRDb250ZXh0
T3JQb3NpdGlvbigpIHVzZXMgdGhpcworICAgICAgICBjb250ZXh0IHRvIGxvb2sgdXAgdGhlIGlu
dGVyYWN0aW9uIGVsZW1lbnQgYnkgaXRzIGlkZW50aWZpZXIgdHJpcGxldCwgZmFsbGluZyBiYWNr
IHRvIGhpdAorICAgICAgICB0ZXN0aW5nIGlmIHRoaXMgbG9va3VwIGZhaWxzLgorCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVkL0RvY3VtZW50
RWRpdGluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBTaGFyZWQvRG9jdW1lbnRFZGl0aW5nQ29udGV4
dC5tbToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJLaXQ6OkRvY3VtZW50RWRpdGlu
Z0NvbnRleHRSZXF1ZXN0Pjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvRWxlbWVudENvbnRl
eHQuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9TaGFyZWQvVGV4dElucHV0Q29udGV4
dC5jcHAuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViS2l0OjpFbGVtZW50Q29udGV4
dD46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViS2l0OjpFbGVtZW50
Q29udGV4dD46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0VsZW1lbnRDb250ZXh0Lmg6IFJl
bmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9UZXh0SW5wdXRDb250ZXh0LmguCisgICAg
ICAgIChXZWJLaXQ6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIFNoYXJlZC9pb3MvSW50ZXJhY3Rp
b25JbmZvcm1hdGlvbkF0UG9zaXRpb24uaDoKKyAgICAgICAgKiBTaGFyZWQvaW9zL0ludGVyYWN0
aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpJbnRlcmFjdGlv
bkluZm9ybWF0aW9uQXRQb3NpdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb246OmRlY29kZSk6CisgICAgICAgICogU291
cmNlcy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06Cisg
ICAgICAgICgtW1dLV2ViVmlldyBfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OmNvbXBs
ZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4dElu
cHV0Q29udGV4dC5tbToKKyAgICAgICAgKC1bX1dLVGV4dElucHV0Q29udGV4dCBfaW5pdFdpdGhU
ZXh0SW5wdXRDb250ZXh0Ol0pOgorICAgICAgICAoLVtfV0tUZXh0SW5wdXRDb250ZXh0IF90ZXh0
SW5wdXRDb250ZXh0XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUZXh0SW5w
dXRDb250ZXh0SW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp0ZXh0SW5wdXRDb250ZXh0c0luUmVj
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Zm9jdXNUZXh0SW5wdXRDb250ZXh0
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgYWN0aW9uU2hlZXRBc3Npc3RhbnQ6d2lsbFN0YXJ0SW50ZXJhY3Rpb25XaXRoRWxlbWVu
dDpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBhc3NpZ25MZWdhY3lEYXRhRm9yQ29udGV4
dE1lbnVJbnRlcmFjdGlvbl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGNvbnRpbnVlQ29u
dGV4dE1lbnVJbnRlcmFjdGlvbjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBjb250aW51
ZUNvbnRleHRNZW51SW50ZXJhY3Rpb25XaXRoRGF0YURldGVjdG9yczpdKToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBfcHJlc2VudGVkVmlld0NvbnRyb2xsZXJGb3JQcmV2aWV3SXRlbUNvbnRy
b2xsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3RhcnRJbnRlcmFjdGlvbldpdGhQb3NpdGlv
bkluZm9ybWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdGFydEludGVy
YWN0aW9uV2l0aEVsZW1lbnRBdFBvc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnRleHRJbnB1dENvbnRleHRz
SW5SZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Zm9jdXNUZXh0SW5wdXRDb250ZXh0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZWxlbWVudEZvckNvbnRleHQgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjb250ZXh0Rm9yRWxlbWVudCBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmVsZW1lbnRGb3JUZXh0SW5wdXRDb250ZXh0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6ZWxlbWVudFBv
c2l0aW9uSW5mb3JtYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzdGFydEludGVy
YWN0aW9uV2l0aEVsZW1lbnRDb250ZXh0T3JQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnJlcXVlc3REb2N1bWVudEVkaXRpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6c3RhcnRJbnRlcmFjdGlvbldpdGhFbGVtZW50QXRQb3NpdGlvbik6IERlbGV0ZWQu
CisKIDIwMTktMTAtMDIgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAg
IFtpT1NdIFdoZW4gaGl0IHRlc3RpbmcgZm9yIGEgY29udGV4dCBtZW51IGludGVyYWN0aW9uLCBk
byBub3QgY29uc2lkZXIgd2hldGhlciB0aGUgZWxlbWVudCBpcyBjb250ZW50ZWRpdGFibGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IGE3OGRhMzE0NDMyNThj
MDg2MTkyZjIwNTIwYjM0MDYwOTRlNDk4ZjcuLmRmM2JiNGJlMDI3NTMwYTRhMGI5N2JkZjIwYzlh
NDM0NjcwMmI1ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpA
QCAtNDg2LDcgKzQ4Niw3IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAn
V2ViS2l0OjpXZWJNb3VzZUV2ZW50JzogWyciV2ViRXZlbnQuaCInXSwKICAgICAgICAgJ1dlYktp
dDo6V2ViVG91Y2hFdmVudCc6IFsnIldlYkV2ZW50LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6Oldl
YldoZWVsRXZlbnQnOiBbJyJXZWJFdmVudC5oIiddLAotICAgICAgICAnc3RydWN0IFdlYktpdDo6
VGV4dElucHV0Q29udGV4dCc6IFsnIlRleHRJbnB1dENvbnRleHQuaCInXSwKKyAgICAgICAgJ3N0
cnVjdCBXZWJLaXQ6OkVsZW1lbnRDb250ZXh0JzogWyciRWxlbWVudENvbnRleHQuaCInXSwKICAg
ICAgICAgJ3N0cnVjdCBXZWJLaXQ6OldlYlVzZXJTY3JpcHREYXRhJzogWyciV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyRGF0YVR5cGVzLmgiJ10sCiAgICAgICAgICdzdHJ1Y3QgV2ViS2l0OjpXZWJV
c2VyU3R5bGVTaGVldERhdGEnOiBbJyJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMu
aCInXSwKICAgICAgICAgJ3N0cnVjdCBXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyRGF0
YSc6IFsnIldlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oIiddLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRG9jdW1lbnRFZGl0aW5nQ29udGV4dC5oIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvRG9jdW1lbnRFZGl0aW5nQ29udGV4dC5oCmluZGV4IDFjMzBmNjRmYzc3
MDg0YTY2ZDYxYTg5NTQxMWMwZWIzOGNiNWNhM2UuLjg2MWM4OTE2MTAxY2UxMWZlNDFhNGY3YTk3
NzQ2NmMzMjc4ZGJlMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0RvY3VtZW50
RWRpdGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Eb2N1bWVudEVkaXRp
bmdDb250ZXh0LmgKQEAgLTI5LDcgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJz
LmgiCiAjaW5jbHVkZSAiQXR0cmlidXRlZFN0cmluZy5oIgotI2luY2x1ZGUgIlRleHRJbnB1dENv
bnRleHQuaCIKKyNpbmNsdWRlICJFbGVtZW50Q29udGV4dC5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
RmxvYXRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0R3JhbnVsYXJpdHkuaD4KICNpbmNs
dWRlIDx3dGYvT3B0aW9uU2V0Lmg+CkBAIC01Niw3ICs1Niw3IEBAIHN0cnVjdCBEb2N1bWVudEVk
aXRpbmdDb250ZXh0UmVxdWVzdCB7CiAKICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdDsKIAot
ICAgIE9wdGlvbmFsPFdlYktpdDo6VGV4dElucHV0Q29udGV4dD4gdGV4dElucHV0Q29udGV4dDsK
KyAgICBPcHRpb25hbDxXZWJLaXQ6OkVsZW1lbnRDb250ZXh0PiB0ZXh0SW5wdXRDb250ZXh0Owog
fTsKIAogc3RydWN0IERvY3VtZW50RWRpdGluZ0NvbnRleHQgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvRG9jdW1lbnRFZGl0aW5nQ29udGV4dC5tbSBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0RvY3VtZW50RWRpdGluZ0NvbnRleHQubW0KaW5kZXggMzE2YzAxM2Q0Y2UzNzA2N2Jk
ZmFjZjM1NzdhNDE3NTEwMTYzZWNiNC4uNDgyZThjN2NkYTg1MmRlOTEyYjMyNjk2MTczY2I0OTc4
NTIyY2MxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRG9jdW1lbnRFZGl0aW5n
Q29udGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Eb2N1bWVudEVkaXRpbmdDb250
ZXh0Lm1tCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCi0j
aW5jbHVkZSAiVGV4dElucHV0Q29udGV4dC5oIgorI2luY2x1ZGUgIkVsZW1lbnRDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiVUlLaXRTUEkuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCIKIApAQCAtMTk4LDcgKzE5OCw3IEBAIE9wdGlvbmFsPFdlYktpdDo6RG9jdW1lbnRFZGl0aW5n
Q29udGV4dFJlcXVlc3Q+IEFyZ3VtZW50Q29kZXI8V2ViS2l0OjpEb2N1bWVudEVkCiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShyZXF1ZXN0LnJlY3QpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwogCi0gICAgT3B0aW9uYWw8T3B0aW9uYWw8V2ViS2l0OjpUZXh0SW5wdXRDb250ZXh0Pj4g
b3B0aW9uYWxUZXh0SW5wdXRDb250ZXh0OworICAgIE9wdGlvbmFsPE9wdGlvbmFsPFdlYktpdDo6
RWxlbWVudENvbnRleHQ+PiBvcHRpb25hbFRleHRJbnB1dENvbnRleHQ7CiAgICAgZGVjb2RlciA+
PiBvcHRpb25hbFRleHRJbnB1dENvbnRleHQ7CiAgICAgaWYgKCFvcHRpb25hbFRleHRJbnB1dENv
bnRleHQpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9FbGVtZW50Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9F
bGVtZW50Q29udGV4dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Y3NGU3ZmM3MzUyZjU4YWI4YjhhNmIyNTM1
Y2E3NGM0NGQ4NDhmZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Vs
ZW1lbnRDb250ZXh0LmNwcApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkVsZW1lbnRDb250ZXh0LmgiCisKKyNpbmNsdWRlICJXZWJD
b3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0VsZW1lbnQuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK0VsZW1lbnRDb250ZXh0Ojp+RWxlbWVudENvbnRleHQoKSA9IGRl
ZmF1bHQ7CisKK30KKworbmFtZXNwYWNlIElQQyB7CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxXZWJL
aXQ6OkVsZW1lbnRDb250ZXh0Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYktp
dDo6RWxlbWVudENvbnRleHQmIGNvbnRleHQpCit7CisgICAgZW5jb2RlciA8PCBjb250ZXh0LmJv
dW5kaW5nUmVjdDsKKyAgICBlbmNvZGVyIDw8IGNvbnRleHQud2ViUGFnZUlkZW50aWZpZXI7Cisg
ICAgZW5jb2RlciA8PCBjb250ZXh0LmRvY3VtZW50SWRlbnRpZmllcjsKKyAgICBlbmNvZGVyIDw8
IGNvbnRleHQuZWxlbWVudElkZW50aWZpZXI7Cit9CisKK09wdGlvbmFsPFdlYktpdDo6RWxlbWVu
dENvbnRleHQ+IEFyZ3VtZW50Q29kZXI8V2ViS2l0OjpFbGVtZW50Q29udGV4dD46OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFdlYktpdDo6RWxlbWVudENvbnRleHQgY29udGV4dDsK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvbnRleHQuYm91bmRpbmdSZWN0KSkKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvbnRleHQud2Vi
UGFnZUlkZW50aWZpZXIpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGF1dG8g
ZG9jdW1lbnRJZGVudGlmaWVyID0gV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyOjpkZWNvZGUo
ZGVjb2Rlcik7CisgICAgaWYgKCFkb2N1bWVudElkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgY29udGV4dC5kb2N1bWVudElkZW50aWZpZXIgPSAqZG9jdW1lbnRJ
ZGVudGlmaWVyOworICAgIGF1dG8gZWxlbWVudElkZW50aWZpZXIgPSBXZWJDb3JlOjpFbGVtZW50
SWRlbnRpZmllcjo6ZGVjb2RlKGRlY29kZXIpOworICAgIGlmICghZWxlbWVudElkZW50aWZpZXIp
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgY29udGV4dC5lbGVtZW50SWRlbnRp
ZmllciA9ICplbGVtZW50SWRlbnRpZmllcjsKKworICAgIHJldHVybiBjb250ZXh0OworfQorCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbGVtZW50Q29udGV4dC5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvRWxlbWVudENvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMTVjYzQyNzAy
ODQ3OTg1MTA1ZTZhMDJhNjg5NWNjNzM2MTgwMWMxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvRWxlbWVudENvbnRleHQuaApAQCAtMCwwICsxLDYxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvRG9jdW1lbnRJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9FbGVt
ZW50SWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3Ry
dWN0IEVsZW1lbnRDb250ZXh0IHsKKyAgICBXZWJDb3JlOjpGbG9hdFJlY3QgYm91bmRpbmdSZWN0
OworCisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlkZW50aWZpZXI7CisgICAg
V2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyIGRvY3VtZW50SWRlbnRpZmllcjsKKyAgICBXZWJD
b3JlOjpFbGVtZW50SWRlbnRpZmllciBlbGVtZW50SWRlbnRpZmllcjsKKworICAgIH5FbGVtZW50
Q29udGV4dCgpOworfTsKKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFbGVtZW50Q29u
dGV4dCYgYSwgY29uc3QgRWxlbWVudENvbnRleHQmIGIpCit7CisgICAgcmV0dXJuIGEuYm91bmRp
bmdSZWN0ID09IGIuYm91bmRpbmdSZWN0CisgICAgICAgICYmIGEud2ViUGFnZUlkZW50aWZpZXIg
PT0gYi53ZWJQYWdlSWRlbnRpZmllcgorICAgICAgICAmJiBhLmRvY3VtZW50SWRlbnRpZmllciA9
PSBiLmRvY3VtZW50SWRlbnRpZmllcgorICAgICAgICAmJiBhLmVsZW1lbnRJZGVudGlmaWVyID09
IGIuZWxlbWVudElkZW50aWZpZXI7Cit9CisKK30KKworbmFtZXNwYWNlIElQQyB7Cit0ZW1wbGF0
ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYktpdDo6RWxlbWVudENvbnRleHQ+IHsKKyAgICBz
dGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYktpdDo6RWxlbWVudENvbnRleHQm
KTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8V2ViS2l0OjpFbGVtZW50Q29udGV4dD4gZGVjb2RlKERl
Y29kZXImKTsKK307Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9UZXh0SW5w
dXRDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RleHRJbnB1dENvbnRleHQuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMzBmYWZhNzhjYWJhOTIyYjU3ZDcyNDRl
M2M2ZWRkZjczOWMxY2MzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RleHRJbnB1dENvbnRleHQuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsNjcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJUZXh0SW5wdXRDb250ZXh0LmgiCi0KLSNpbmNsdWRlICJXZWJDb3JlQXJndW1l
bnRDb2RlcnMuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0VsZW1lbnQuaD4KLQotbmFtZXNwYWNlIFdl
YktpdCB7Ci0KLVRleHRJbnB1dENvbnRleHQ6On5UZXh0SW5wdXRDb250ZXh0KCkgPSBkZWZhdWx0
OwotCi19Ci0KLW5hbWVzcGFjZSBJUEMgewotCi12b2lkIEFyZ3VtZW50Q29kZXI8V2ViS2l0OjpU
ZXh0SW5wdXRDb250ZXh0Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYktpdDo6
VGV4dElucHV0Q29udGV4dCYgY29udGV4dCkKLXsKLSAgICBlbmNvZGVyIDw8IGNvbnRleHQuYm91
bmRpbmdSZWN0OwotICAgIGVuY29kZXIgPDwgY29udGV4dC53ZWJQYWdlSWRlbnRpZmllcjsKLSAg
ICBlbmNvZGVyIDw8IGNvbnRleHQuZG9jdW1lbnRJZGVudGlmaWVyOwotICAgIGVuY29kZXIgPDwg
Y29udGV4dC5lbGVtZW50SWRlbnRpZmllcjsKLX0KLQotT3B0aW9uYWw8V2ViS2l0OjpUZXh0SW5w
dXRDb250ZXh0PiBBcmd1bWVudENvZGVyPFdlYktpdDo6VGV4dElucHV0Q29udGV4dD46OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQotewotICAgIFdlYktpdDo6VGV4dElucHV0Q29udGV4dCBjb250
ZXh0OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29udGV4dC5ib3VuZGluZ1JlY3QpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29udGV4
dC53ZWJQYWdlSWRlbnRpZmllcikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAg
YXV0byBkb2N1bWVudElkZW50aWZpZXIgPSBXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXI6OmRl
Y29kZShkZWNvZGVyKTsKLSAgICBpZiAoIWRvY3VtZW50SWRlbnRpZmllcikKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKLSAgICBjb250ZXh0LmRvY3VtZW50SWRlbnRpZmllciA9ICpkb2N1
bWVudElkZW50aWZpZXI7Ci0gICAgYXV0byBlbGVtZW50SWRlbnRpZmllciA9IFdlYkNvcmU6OkVs
ZW1lbnRJZGVudGlmaWVyOjpkZWNvZGUoZGVjb2Rlcik7Ci0gICAgaWYgKCFlbGVtZW50SWRlbnRp
ZmllcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICBjb250ZXh0LmVsZW1lbnRJ
ZGVudGlmaWVyID0gKmVsZW1lbnRJZGVudGlmaWVyOwotCi0gICAgcmV0dXJuIGNvbnRleHQ7Ci19
Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RleHRJbnB1dENvbnRleHQu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RleHRJbnB1dENvbnRleHQuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNTRkNDI3N2I4NTM4ZmJhNDE1NmFiODNkNmFkYjg5NTc4MjhhMGQ3
OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9UZXh0SW5wdXRDb250ZXh0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJBcmd1bWVudENv
ZGVycy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRJZGVudGlmaWVyLmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9FbGVtZW50SWRlbnRpZmllci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRS
ZWN0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgotCi1uYW1lc3BhY2Ug
V2ViS2l0IHsKLQotc3RydWN0IFRleHRJbnB1dENvbnRleHQgewotICAgIFdlYkNvcmU6OkZsb2F0
UmVjdCBib3VuZGluZ1JlY3Q7Ci0KLSAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdl
SWRlbnRpZmllcjsKLSAgICBXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIgZG9jdW1lbnRJZGVu
dGlmaWVyOwotICAgIFdlYkNvcmU6OkVsZW1lbnRJZGVudGlmaWVyIGVsZW1lbnRJZGVudGlmaWVy
OwotCi0gICAgflRleHRJbnB1dENvbnRleHQoKTsKLX07Ci0KLWlubGluZSBib29sIG9wZXJhdG9y
PT0oY29uc3QgVGV4dElucHV0Q29udGV4dCYgYSwgY29uc3QgVGV4dElucHV0Q29udGV4dCYgYikK
LXsKLSAgICByZXR1cm4gYS5ib3VuZGluZ1JlY3QgPT0gYi5ib3VuZGluZ1JlY3QKLSAgICAgICAg
JiYgYS53ZWJQYWdlSWRlbnRpZmllciA9PSBiLndlYlBhZ2VJZGVudGlmaWVyCi0gICAgICAgICYm
IGEuZG9jdW1lbnRJZGVudGlmaWVyID09IGIuZG9jdW1lbnRJZGVudGlmaWVyCi0gICAgICAgICYm
IGEuZWxlbWVudElkZW50aWZpZXIgPT0gYi5lbGVtZW50SWRlbnRpZmllcjsKLX0KLQotfQotCi1u
YW1lc3BhY2UgSVBDIHsKLXRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViS2l0OjpU
ZXh0SW5wdXRDb250ZXh0PiB7Ci0gICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25z
dCBXZWJLaXQ6OlRleHRJbnB1dENvbnRleHQmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2ViS2l0
OjpUZXh0SW5wdXRDb250ZXh0PiBkZWNvZGUoRGVjb2RlciYpOwotfTsKLX0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlv
bi5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBv
c2l0aW9uLmgKaW5kZXggZmU5MmNkMTI0ZmYyNGYxOTdlZTIzZWMxZmI1M2RjYTM4Y2U1Yjk3MC4u
YTI4NzEzODliMzdkNDcxOTE1YmQ5MWY5YmU2MDliZTEwN2Q3NGVmNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBv
c2l0aW9uLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAj
aW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJFbGVtZW50Q29udGV4dC5oIgog
I2luY2x1ZGUgIkludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU2hh
cmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRQb2ludC5oPgpAQCAtODksNiAr
OTAsOCBAQCBzdHJ1Y3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24gewogICAgIFJl
dGFpblB0cjxOU0FycmF5PiBkYXRhRGV0ZWN0b3JSZXN1bHRzOwogI2VuZGlmCiAKKyAgICBPcHRp
b25hbDxFbGVtZW50Q29udGV4dD4gZWxlbWVudENvbnRleHQ7CisKICAgICAvLyBDb3B5IGNvbXBh
dGlibGUgb3B0aW9uYWwgYml0cyBmb3J3YXJkIChmb3IgZXhhbXBsZSwgaWYgd2UgaGF2ZSBhIElu
dGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uCiAgICAgLy8gd2l0aCBzbmFwc2hvdHMgaW4g
aXQsIGFuZCBwZXJmb3JtIGFub3RoZXIgcmVxdWVzdCBmb3IgdGhlIHNhbWUgcG9pbnQgd2l0aG91
dCByZXF1ZXN0aW5nIHRoZSBzbmFwc2hvdHMsCiAgICAgLy8gd2UgY2FuIGZldGNoIHRoZSBjaGVh
cCBpbmZvcm1hdGlvbiBhbmQgY29weSB0aGUgc25hcHNob3RzIGludG8gdGhlIG5ldyByZXNwb25z
ZSkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZv
cm1hdGlvbkF0UG9zaXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rp
b25JbmZvcm1hdGlvbkF0UG9zaXRpb24ubW0KaW5kZXggY2E0Y2RkYjhlNDg1NzU2MDgzMjNlMmEw
MWE0YmQxMTYyMThlNzZjMy4uOWMwMTMwOTA3N2YyZGQwMGUxMTZmM2EwZjY2ZjYzMTdhZDk4NGMz
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3Jt
YXRpb25BdFBvc2l0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFj
dGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5tbQpAQCAtODUsNiArODUsNyBAQCB2b2lkIEludGVy
YWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQogICAgIGVuY29kZXIgPDwgcHJl
dmVudFRleHRJbnRlcmFjdGlvbjsKICNlbmRpZgorICAgIGVuY29kZXIgPDwgZWxlbWVudENvbnRl
eHQ7CiB9CiAKIGJvb2wgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb246OmRlY29kZShJ
UEM6OkRlY29kZXImIGRlY29kZXIsIEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJiBy
ZXN1bHQpCkBAIC0xOTYsNiArMTk3LDkgQEAgYm9vbCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQ
b3NpdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgSW50ZXJhY3Rpb24KICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3Vs
dC5lbGVtZW50Q29udGV4dCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIHJldHVybiB0
cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNl
L1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCBmYTUyNjFmNTRjNTUxMDY0YTRiNzIwZGNiMzk4ZjJi
NTE3MjI5YjlkLi5iZTBiMTMzYWQ0ODlhZGE2OTMyNmZmZDE2YjNhYmU3ODgyMjg0NzBiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291
cmNlcy50eHQKQEAgLTEyMSw2ICsxMjEsNyBAQCBTaGFyZWQvQ2FjaGVNb2RlbC5jcHAKIFNoYXJl
ZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmNwcAogU2hhcmVkL0VkaXRpbmdSYW5nZS5jcHAKIFNo
YXJlZC9FZGl0b3JTdGF0ZS5jcHAKK1NoYXJlZC9FbGVtZW50Q29udGV4dC5jcHAKIFNoYXJlZC9G
b250SW5mby5jcHAKIFNoYXJlZC9GcmFtZUluZm9EYXRhLmNwcAogU2hhcmVkL0xheWVyVHJlZUNv
bnRleHQuY3BwCkBAIC0xMzgsNyArMTM5LDYgQEAgU2hhcmVkL1NoYXJlZFN0cmluZ0hhc2hTdG9y
ZS5jcHAKIFNoYXJlZC9TaGFyZWRTdHJpbmdIYXNoVGFibGVSZWFkT25seS5jcHAKIFNoYXJlZC9T
aGFyZWRTdHJpbmdIYXNoVGFibGUuY3BwCiBTaGFyZWQvU3RhdGlzdGljc0RhdGEuY3BwCi1TaGFy
ZWQvVGV4dElucHV0Q29udGV4dC5jcHAKIFNoYXJlZC9Ub3VjaEJhck1lbnVEYXRhLmNwcAogU2hh
cmVkL1RvdWNoQmFyTWVudUl0ZW1EYXRhLmNwcAogU2hhcmVkL1VSTFNjaGVtZVRhc2tQYXJhbWV0
ZXJzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0KaW5kZXggN2VjMWMwYzhmOTdiM2NhMzI5MjEyZDc4ODE5YWVkZDcyNzQyMTEwYy4uMzQyYjcw
MjJlZGI1OWI1MWRlNTczMGE4NjU0ZGM5YmE5NmJmMTcxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0zMyw2ICszMyw3IEBACiAjaW1w
b3J0ICJDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyLmgiCiAjaW1wb3J0ICJEaWFnbm9zdGlj
TG9nZ2luZ0NsaWVudC5oIgogI2ltcG9ydCAiRHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZS5oIgor
I2ltcG9ydCAiRWxlbWVudENvbnRleHQuaCIKICNpbXBvcnQgIkZpbmRDbGllbnQuaCIKICNpbXBv
cnQgIkZ1bGxzY3JlZW5DbGllbnQuaCIKICNpbXBvcnQgIkdsb2JhbEZpbmRJblBhZ2VTdGF0ZS5o
IgpAQCAtNDksNyArNTAsNiBAQAogI2ltcG9ydCAiUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCIKICNp
bXBvcnQgIlJlbW90ZU9iamVjdFJlZ2lzdHJ5TWVzc2FnZXMuaCIKICNpbXBvcnQgIlNhZmVCcm93
c2luZ1dhcm5pbmcuaCIKLSNpbXBvcnQgIlRleHRJbnB1dENvbnRleHQuaCIKICNpbXBvcnQgIlVJ
RGVsZWdhdGUuaCIKICNpbXBvcnQgIlVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmgiCiAjaW1wb3J0
ICJWZXJzaW9uQ2hlY2tzLmgiCkBAIC01MDU0LDEyICs1MDU0LDEyIEBAIC0gKHZvaWQpX3JlcXVl
c3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDooQ0dSZWN0KXJlY3RJbldlYlZpZXdDb29yZGluYXRl
cyBjb21wbGV0CiAKICAgICBDR1JlY3QgcmVjdEluUm9vdFZpZXdDb29yZGluYXRlcyA9IFtzZWxm
IF9jb252ZXJ0UmVjdFRvUm9vdFZpZXdDb29yZGluYXRlczpyZWN0SW5XZWJWaWV3Q29vcmRpbmF0
ZXNdOwogICAgIGF1dG8gd2Vha1NlbGYgPSBXZWFrT2JqQ1B0cjxXS1dlYlZpZXc+KHNlbGYpOwot
ICAgIF9wYWdlLT50ZXh0SW5wdXRDb250ZXh0c0luUmVjdChyZWN0SW5Sb290Vmlld0Nvb3JkaW5h
dGVzLCBbd2Vha1NlbGYsIGNhcHR1cmVkQ29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIo
Y29tcGxldGlvbkhhbmRsZXIpXSAoY29uc3QgVmVjdG9yPFdlYktpdDo6VGV4dElucHV0Q29udGV4
dD4mIGNvbnRleHRzKSB7CisgICAgX3BhZ2UtPnRleHRJbnB1dENvbnRleHRzSW5SZWN0KHJlY3RJ
blJvb3RWaWV3Q29vcmRpbmF0ZXMsIFt3ZWFrU2VsZiwgY2FwdHVyZWRDb21wbGV0aW9uSGFuZGxl
ciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChjb25zdCBWZWN0b3I8V2ViS2l0
OjpFbGVtZW50Q29udGV4dD4mIGNvbnRleHRzKSB7CiAgICAgICAgIFJldGFpblB0cjxOU011dGFi
bGVBcnJheT4gZWxlbWVudHMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRX
aXRoQ2FwYWNpdHk6Y29udGV4dHMuc2l6ZSgpXSk7CiAKICAgICAgICAgYXV0byBzdHJvbmdTZWxm
ID0gd2Vha1NlbGYuZ2V0KCk7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgY29udGV4dCA6IGNv
bnRleHRzKSB7Ci0gICAgICAgICAgICBXZWJLaXQ6OlRleHRJbnB1dENvbnRleHQgY29udGV4dFdp
dGhXZWJWaWV3Qm91bmRpbmdSZWN0ID0gY29udGV4dDsKKyAgICAgICAgICAgIFdlYktpdDo6RWxl
bWVudENvbnRleHQgY29udGV4dFdpdGhXZWJWaWV3Qm91bmRpbmdSZWN0ID0gY29udGV4dDsKICAg
ICAgICAgICAgIGNvbnRleHRXaXRoV2ViVmlld0JvdW5kaW5nUmVjdC5ib3VuZGluZ1JlY3QgPSBb
c3Ryb25nU2VsZiBfY29udmVydFJlY3RGcm9tUm9vdFZpZXdDb29yZGluYXRlczpjb250ZXh0LmJv
dW5kaW5nUmVjdF07CiAgICAgICAgICAgICBbZWxlbWVudHMgYWRkT2JqZWN0OmFkb3B0TlMoW1tf
V0tUZXh0SW5wdXRDb250ZXh0IGFsbG9jXSBfaW5pdFdpdGhUZXh0SW5wdXRDb250ZXh0OmNvbnRl
eHRXaXRoV2ViVmlld0JvdW5kaW5nUmVjdF0pLmdldCgpXTsKICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1RleHRJbnB1dENvbnRleHQu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4dElucHV0Q29udGV4
dC5tbQppbmRleCBjN2VjZTJkMjI1MGIxODEwNjE3MzFlMjI4ZTQ4ODY2ZmI1MWJjZTA3Li5mNjFk
NzI3MmUxYWZmN2ZhYzY4MjQ3NTY4NTk2OGQ1ZjI1MGUzYmY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4dElucHV0Q29udGV4dC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4dElucHV0Q29udGV4dC5tbQpA
QCAtMjYsMTEgKzI2LDExIEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIl9XS1RleHRJ
bnB1dENvbnRleHQuaCIKIAotI2ltcG9ydCAiVGV4dElucHV0Q29udGV4dC5oIgorI2ltcG9ydCAi
RWxlbWVudENvbnRleHQuaCIKICNpbXBvcnQgIl9XS1RleHRJbnB1dENvbnRleHRJbnRlcm5hbC5o
IgogCiBAaW1wbGVtZW50YXRpb24gX1dLVGV4dElucHV0Q29udGV4dCB7Ci0gICAgV2ViS2l0OjpU
ZXh0SW5wdXRDb250ZXh0IF90ZXh0SW5wdXRDb250ZXh0OworICAgIFdlYktpdDo6RWxlbWVudENv
bnRleHQgX3RleHRJbnB1dENvbnRleHQ7CiB9CiAKIC0gKGluc3RhbmNldHlwZSlpbml0CkBAIC0z
OCw3ICszOCw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0CiAgICAgcmV0dXJuIG5pbDsKIH0KIAot
LSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aFRleHRJbnB1dENvbnRleHQ6KGNvbnN0IFdlYktpdDo6
VGV4dElucHV0Q29udGV4dCYpY29udGV4dAorLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aFRleHRJ
bnB1dENvbnRleHQ6KGNvbnN0IFdlYktpdDo6RWxlbWVudENvbnRleHQmKWNvbnRleHQKIHsKICAg
ICBzZWxmID0gW3N1cGVyIGluaXRdOwogICAgIGlmICghc2VsZikKQEAgLTU0LDcgKzU0LDcgQEAg
LSAoQ0dSZWN0KWJvdW5kaW5nUmVjdAogICAgIHJldHVybiBfdGV4dElucHV0Q29udGV4dC5ib3Vu
ZGluZ1JlY3Q7CiB9CiAKLS0gKGNvbnN0IFdlYktpdDo6VGV4dElucHV0Q29udGV4dCYpX3RleHRJ
bnB1dENvbnRleHQKKy0gKGNvbnN0IFdlYktpdDo6RWxlbWVudENvbnRleHQmKV90ZXh0SW5wdXRD
b250ZXh0CiB7CiAgICAgcmV0dXJuIF90ZXh0SW5wdXRDb250ZXh0OwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1RleHRJbnB1dENvbnRleHRJbnRl
cm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1RleHRJbnB1dENv
bnRleHRJbnRlcm5hbC5oCmluZGV4IGJmMzJhNDEwMDVmZjJmY2QyMTM1YWYyN2U1MDI4YjNiY2E4
MmM2OTcuLjRhYzcwMDJjYWMxODEwZWM0ZGRmOTVjYTkyMzMxZTgwMjQ2YmRkNjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUZXh0SW5wdXRDb250ZXh0
SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4
dElucHV0Q29udGV4dEludGVybmFsLmgKQEAgLTI2LDEzICsyNiwxMyBAQAogI2ltcG9ydCAiX1dL
VGV4dElucHV0Q29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLXN0cnVjdCBUZXh0SW5w
dXRDb250ZXh0Oworc3RydWN0IEVsZW1lbnRDb250ZXh0OwogfQogCiBAaW50ZXJmYWNlIF9XS1Rl
eHRJbnB1dENvbnRleHQgKCkKIAotLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aFRleHRJbnB1dENv
bnRleHQ6KGNvbnN0IFdlYktpdDo6VGV4dElucHV0Q29udGV4dCYpY29udGV4dDsKKy0gKGluc3Rh
bmNldHlwZSlfaW5pdFdpdGhUZXh0SW5wdXRDb250ZXh0Oihjb25zdCBXZWJLaXQ6OkVsZW1lbnRD
b250ZXh0Jiljb250ZXh0OwogCi0tIChjb25zdCBXZWJLaXQ6OlRleHRJbnB1dENvbnRleHQmKV90
ZXh0SW5wdXRDb250ZXh0OworLSAoY29uc3QgV2ViS2l0OjpFbGVtZW50Q29udGV4dCYpX3RleHRJ
bnB1dENvbnRleHQ7CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCmluZGV4IGY0ZjA4ZTQ3NWYzMTA4YzJhMTM1NGE2YTZmNWE0Mzc5Y2JlMzExNDEuLjc5ZDZk
MjA5ZDQ3ZmY4NTg5NjE2YjljYTZhMjQ1NjIyYWVkOTljZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNTgsNiArNTgsNyBAQAogI2luY2x1ZGUgIkRvd25s
b2FkUHJveHkuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
RHJhd2luZ0FyZWFQcm94eS5oIgorI2luY2x1ZGUgIkVsZW1lbnRDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiRXZlbnREaXNwYXRjaGVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJGb3JtRGF0YVJlZmVyZW5j
ZS5oIgogI2luY2x1ZGUgIkZyYW1lSW5mb0RhdGEuaCIKQEAgLTg1LDcgKzg2LDYgQEAKICNpbmNs
dWRlICJTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tl
ci5oIgogI2luY2x1ZGUgIlRleHRDaGVja2VyU3RhdGUuaCIKLSNpbmNsdWRlICJUZXh0SW5wdXRD
b250ZXh0LmgiCiAjaW5jbHVkZSAiVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMuaCIKICNpbmNsdWRl
ICJVbmRvT3JSZWRvLmgiCiAjaW5jbHVkZSAiVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94
eS5oIgpAQCAtOTMzNiw3ICs5MzM2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndlYlZpZXdEaWRN
b3ZlVG9XaW5kb3coKQogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnRleHRJbnB1dENv
bnRleHRzSW5SZWN0KFdlYkNvcmU6OkZsb2F0UmVjdCByZWN0LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFZlY3RvcjxXZWJLaXQ6OlRleHRJbnB1dENvbnRleHQ+Jik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIFdlYlBhZ2VQcm94eTo6dGV4dElucHV0Q29udGV4dHNJblJlY3QoV2Vi
Q29yZTo6RmxvYXRSZWN0IHJlY3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9y
PFdlYktpdDo6RWxlbWVudENvbnRleHQ+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
aWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsg
fSk7CkBAIC05MzQ2LDcgKzkzNDYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dGV4dElucHV0Q29u
dGV4dHNJblJlY3QoV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3QsIENvbXBsZXRpb25IYQogICAgIG1f
cHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBh
Z2U6OlRleHRJbnB1dENvbnRleHRzSW5SZWN0KHJlY3QpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSwgbV93ZWJQYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Zm9jdXNUZXh0SW5w
dXRDb250ZXh0KGNvbnN0IFRleHRJbnB1dENvbnRleHQmIGNvbnRleHQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2VQcm94eTo6
Zm9jdXNUZXh0SW5wdXRDb250ZXh0KGNvbnN0IEVsZW1lbnRDb250ZXh0JiBjb250ZXh0LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlm
ICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxz
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDA3NTBhYWQ2YmQ1
NWIzZWVhMGQ3MzcyNmJlMzIyOWNjNmQ0N2VlMzIuLjhhMWIxMzRkNTBkYWYwNzQxZmIyYWI0MmI1
NzUwMWM4NGNkMGJlODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBA
IC0yODgsNiArMjg4LDcgQEAgc3RydWN0IERvY3VtZW50RWRpdGluZ0NvbnRleHQ7CiBzdHJ1Y3Qg
RG9jdW1lbnRFZGl0aW5nQ29udGV4dFJlcXVlc3Q7CiBzdHJ1Y3QgRWRpdGluZ1JhbmdlOwogc3Ry
dWN0IEVkaXRvclN0YXRlOworc3RydWN0IEVsZW1lbnRDb250ZXh0Owogc3RydWN0IEZvbnRJbmZv
Owogc3RydWN0IEZyYW1lSW5mb0RhdGE7CiBzdHJ1Y3QgSW5zZXJ0VGV4dE9wdGlvbnM7CkBAIC0y
OTUsNyArMjk2LDYgQEAgc3RydWN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0Owogc3Ry
dWN0IExvYWRQYXJhbWV0ZXJzOwogc3RydWN0IFBsYXRmb3JtUG9wdXBNZW51RGF0YTsKIHN0cnVj
dCBQcmludEluZm87Ci1zdHJ1Y3QgVGV4dElucHV0Q29udGV4dDsKIHN0cnVjdCBXZWJBdXRvY29y
cmVjdGlvbkRhdGE7CiBzdHJ1Y3QgV2ViUG9wdXBJdGVtOwogc3RydWN0IFVSTFNjaGVtZVRhc2tQ
YXJhbWV0ZXJzOwpAQCAtNjQ1LDggKzY0NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlcXVlc3RG
b250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3Jl
OjpGb250QXR0cmlidXRlcyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIGZv
bnRBdHRyaWJ1dGVzQ2FsbGJhY2soY29uc3QgV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZXMmLCBDYWxs
YmFja0lEKTsKIAotICAgIHZvaWQgdGV4dElucHV0Q29udGV4dHNJblJlY3QoV2ViQ29yZTo6Rmxv
YXRSZWN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxUZXh0SW5wdXRDb250
ZXh0PiYpPiYmKTsKLSAgICB2b2lkIGZvY3VzVGV4dElucHV0Q29udGV4dChjb25zdCBUZXh0SW5w
dXRDb250ZXh0JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCB0
ZXh0SW5wdXRDb250ZXh0c0luUmVjdChXZWJDb3JlOjpGbG9hdFJlY3QsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgVmVjdG9yPEVsZW1lbnRDb250ZXh0PiYpPiYmKTsKKyAgICB2b2lkIGZv
Y3VzVGV4dElucHV0Q29udGV4dChjb25zdCBFbGVtZW50Q29udGV4dCYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBkb3Vi
bGUgZGlzcGxheWVkQ29udGVudFNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0VmlzaWJsZUNv
bnRlbnRSZWN0VXBkYXRlLnNjYWxlKCk7IH0KQEAgLTcwMyw3ICs3MDMsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCByZXBsYWNlU2VsZWN0ZWRUZXh0KGNvbnN0IFN0cmluZyYgb2xkVGV4dCwgY29uc3Qg
U3RyaW5nJiBuZXdUZXh0KTsKICAgICB2b2lkIGRpZFJlY2VpdmVQb3NpdGlvbkluZm9ybWF0aW9u
KGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJik7CiAgICAgdm9pZCByZXF1
ZXN0UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVz
dCYpOwotICAgIHZvaWQgc3RhcnRJbnRlcmFjdGlvbldpdGhFbGVtZW50QXRQb3NpdGlvbihjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYpOworICAgIHZvaWQgc3RhcnRJbnRlcmFjdGlvbldpdGhQb3Np
dGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJik7
CiAgICAgdm9pZCBzdG9wSW50ZXJhY3Rpb24oKTsKICAgICB2b2lkIHBlcmZvcm1BY3Rpb25PbkVs
ZW1lbnQodWludDMyX3QgYWN0aW9uKTsKICAgICB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShjb25z
dCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYgaW1hZ2VIYW5kbGUsIHVpbnQ2NF90IGltYWdlU2l6ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbQppbmRleCA0MDZiYTdlZjVlYzM1ZjhhMWRkY2NmM2VhOTkyZDhhMzMyYzI2
YmQ3Li5lYjI2NTEyYTk0MGFkNzZlYWM1Mzk2OGY3YjQwZjhkYzBlNTFlZjdlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0KQEAgLTY0OTYsNyArNjQ5Niw3IEBAIC0gKFJldGFpblB0cjxOU0FycmF5PilhY3Rpb25T
aGVldEFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudCBkCiAKIC0g
KHZvaWQpYWN0aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Np
c3RhbnQgd2lsbFN0YXJ0SW50ZXJhY3Rpb25XaXRoRWxlbWVudDooX1dLQWN0aXZhdGVkRWxlbWVu
dEluZm8gKillbGVtZW50CiB7Ci0gICAgX3BhZ2UtPnN0YXJ0SW50ZXJhY3Rpb25XaXRoRWxlbWVu
dEF0UG9zaXRpb24oX3Bvc2l0aW9uSW5mb3JtYXRpb24ucmVxdWVzdC5wb2ludCk7CisgICAgX3Bh
Z2UtPnN0YXJ0SW50ZXJhY3Rpb25XaXRoUG9zaXRpb25JbmZvcm1hdGlvbihfcG9zaXRpb25JbmZv
cm1hdGlvbik7CiB9CiAKIC0gKHZvaWQpYWN0aW9uU2hlZXRBc3Npc3RhbnREaWRTdG9wSW50ZXJh
Y3Rpb246KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQKQEAgLTgwNzMsNyArODA3
Myw3IEBAIC0gKHZvaWQpYXNzaWduTGVnYWN5RGF0YUZvckNvbnRleHRNZW51SW50ZXJhY3Rpb24K
IAogICAgIGNvbnN0IGF1dG8mIHVybCA9IF9wb3NpdGlvbkluZm9ybWF0aW9uLnVybDsKIAotICAg
IF9wYWdlLT5zdGFydEludGVyYWN0aW9uV2l0aEVsZW1lbnRBdFBvc2l0aW9uKF9wb3NpdGlvbklu
Zm9ybWF0aW9uLnJlcXVlc3QucG9pbnQpOworICAgIF9wYWdlLT5zdGFydEludGVyYWN0aW9uV2l0
aFBvc2l0aW9uSW5mb3JtYXRpb24oX3Bvc2l0aW9uSW5mb3JtYXRpb24pOwogCiAgICAgVUlWaWV3
Q29udHJvbGxlciAqcHJldmlld1ZpZXdDb250cm9sbGVyID0gbmlsOwogCkBAIC04MjQ2LDcgKzgy
NDYsNyBAQCAtICh2b2lkKWNvbnRpbnVlQ29udGV4dE1lbnVJbnRlcmFjdGlvbjoodm9pZCheKShV
SUNvbnRleHRNZW51Q29uZmlndXJhdGlvbiAqKSljbwogICAgICAgICAgICAgcmV0dXJuIHN0cm9u
Z1NlbGYtPl9jb250ZXh0TWVudUxlZ2FjeVByZXZpZXdDb250cm9sbGVyLmdldCgpOwogICAgICAg
ICB9OwogCi0gICAgICAgIF9wYWdlLT5zdGFydEludGVyYWN0aW9uV2l0aEVsZW1lbnRBdFBvc2l0
aW9uKF9wb3NpdGlvbkluZm9ybWF0aW9uLnJlcXVlc3QucG9pbnQpOworICAgICAgICBfcGFnZS0+
c3RhcnRJbnRlcmFjdGlvbldpdGhQb3NpdGlvbkluZm9ybWF0aW9uKF9wb3NpdGlvbkluZm9ybWF0
aW9uKTsKIAogICAgICAgICBjb250aW51ZVdpdGhDb250ZXh0TWVudUNvbmZpZ3VyYXRpb24oW1VJ
Q29udGV4dE1lbnVDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb25XaXRoSWRlbnRpZmllcjpuaWwg
cHJldmlld1Byb3ZpZGVyOmNvbnRlbnRQcmV2aWV3UHJvdmlkZXIgYWN0aW9uUHJvdmlkZXI6YWN0
aW9uTWVudVByb3ZpZGVyXSk7CiAgICAgICAgIHJldHVybjsKQEAgLTgyNjgsNyArODI2OCw3IEBA
IC0gKHZvaWQpY29udGludWVDb250ZXh0TWVudUludGVyYWN0aW9uOih2b2lkKF4pKFVJQ29udGV4
dE1lbnVDb25maWd1cmF0aW9uICopKWNvCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoY29uZmln
dXJhdGlvbkZyb21XS1VJRGVsZWdhdGUpIHsKLSAgICAgICAgICAgIHN0cm9uZ1NlbGYtPl9wYWdl
LT5zdGFydEludGVyYWN0aW9uV2l0aEVsZW1lbnRBdFBvc2l0aW9uKHN0cm9uZ1NlbGYtPl9wb3Np
dGlvbkluZm9ybWF0aW9uLnJlcXVlc3QucG9pbnQpOworICAgICAgICAgICAgc3Ryb25nU2VsZi0+
X3BhZ2UtPnN0YXJ0SW50ZXJhY3Rpb25XaXRoUG9zaXRpb25JbmZvcm1hdGlvbihzdHJvbmdTZWxm
LT5fcG9zaXRpb25JbmZvcm1hdGlvbik7CiAgICAgICAgICAgICBzdHJvbmdTZWxmLT5fY29udGV4
dE1lbnVBY3Rpb25Qcm92aWRlckRlbGVnYXRlTmVlZHNPdmVycmlkZSA9IFlFUzsKICAgICAgICAg
ICAgIGNvbnRpbnVlV2l0aENvbnRleHRNZW51Q29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uRnJv
bVdLVUlEZWxlZ2F0ZSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC04MzYzLDcgKzgzNjMsNyBA
QCAtIChCT09MKWNvbnRpbnVlQ29udGV4dE1lbnVJbnRlcmFjdGlvbldpdGhEYXRhRGV0ZWN0b3Jz
Oih2b2lkKF4pKFVJQ29udGV4dE1lbnVDbwogICAgICAgICBOU0RpY3Rpb25hcnkgKmNvbnRleHQg
PSBbc2VsZiBkYXRhRGV0ZWN0aW9uQ29udGV4dEZvclBvc2l0aW9uSW5mb3JtYXRpb246X3Bvc2l0
aW9uSW5mb3JtYXRpb25dOwogICAgICAgICBVSUNvbnRleHRNZW51Q29uZmlndXJhdGlvbiAqY29u
ZmlndXJhdGlvbkZyb21ERCA9IFtkZENvbnRleHRNZW51QWN0aW9uQ2xhc3MgY29udGV4dE1lbnVD
b25maWd1cmF0aW9uRm9yVVJMOmxpbmtVUkwgaWRlbnRpZmllcjpfcG9zaXRpb25JbmZvcm1hdGlv
bi5kYXRhRGV0ZWN0b3JJZGVudGlmaWVyIHNlbGVjdGVkVGV4dDpbc2VsZiBzZWxlY3RlZFRleHRd
IHJlc3VsdHM6X3Bvc2l0aW9uSW5mb3JtYXRpb24uZGF0YURldGVjdG9yUmVzdWx0cy5nZXQoKSBp
blZpZXc6c2VsZiBjb250ZXh0OmNvbnRleHQgbWVudUlkZW50aWZpZXI6bmlsXTsKICAgICAgICAg
X2NvbnRleHRNZW51QWN0aW9uUHJvdmlkZXJEZWxlZ2F0ZU5lZWRzT3ZlcnJpZGUgPSBZRVM7Ci0g
ICAgICAgIF9wYWdlLT5zdGFydEludGVyYWN0aW9uV2l0aEVsZW1lbnRBdFBvc2l0aW9uKF9wb3Np
dGlvbkluZm9ybWF0aW9uLnJlcXVlc3QucG9pbnQpOworICAgICAgICBfcGFnZS0+c3RhcnRJbnRl
cmFjdGlvbldpdGhQb3NpdGlvbkluZm9ybWF0aW9uKF9wb3NpdGlvbkluZm9ybWF0aW9uKTsKICAg
ICAgICAgY29udGludWVXaXRoQ29udGV4dE1lbnVDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb25G
cm9tREQpOwogICAgICAgICByZXR1cm4gWUVTOwogICAgIH0KQEAgLTg3OTYsNyArODc5Niw3IEBA
IC0gKFVJVmlld0NvbnRyb2xsZXIgKilfcHJlc2VudGVkVmlld0NvbnRyb2xsZXJGb3JQcmV2aWV3
SXRlbUNvbnRyb2xsZXI6KFVJUHJldmllCiAKICAgICBpZiAoW19wcmV2aWV3SXRlbUNvbnRyb2xs
ZXIgdHlwZV0gPT0gVUlQcmV2aWV3SXRlbVR5cGVMaW5rKSB7CiAgICAgICAgIF9sb25nUHJlc3ND
YW5DbGljayA9IE5POwotICAgICAgICBfcGFnZS0+c3RhcnRJbnRlcmFjdGlvbldpdGhFbGVtZW50
QXRQb3NpdGlvbihfcG9zaXRpb25JbmZvcm1hdGlvbi5yZXF1ZXN0LnBvaW50KTsKKyAgICAgICAg
X3BhZ2UtPnN0YXJ0SW50ZXJhY3Rpb25XaXRoUG9zaXRpb25JbmZvcm1hdGlvbihfcG9zaXRpb25J
bmZvcm1hdGlvbik7CiAKICAgICAgICAgLy8gVHJlYXQgYW5pbWF0ZWQgaW1hZ2VzIGxpa2UgYSBs
aW5rIHByZXZpZXcKICAgICAgICAgaWYgKGlzVmFsaWRVUkxGb3JJbWFnZVByZXZpZXcgJiYgX3Bv
c2l0aW9uSW5mb3JtYXRpb24uaXNBbmltYXRlZEltYWdlKSB7CkBAIC04ODU2LDcgKzg4NTYsNyBA
QCAtIChVSVZpZXdDb250cm9sbGVyICopX3ByZXNlbnRlZFZpZXdDb250cm9sbGVyRm9yUHJldmll
d0l0ZW1Db250cm9sbGVyOihVSVByZXZpZQogICAgICAgICB9CiAKICAgICAgICAgUmV0YWluUHRy
PF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvPiBlbGVtZW50SW5mbyA9IGFkb3B0TlMoW1tfV0tBY3Rp
dmF0ZWRFbGVtZW50SW5mbyBhbGxvY10gX2luaXRXaXRoVHlwZTpfV0tBY3RpdmF0ZWRFbGVtZW50
VHlwZUltYWdlIFVSTDphbHRlcm5hdGVVUkwuZ2V0KCkgaW1hZ2VVUkw6bmlsIGxvY2F0aW9uOl9w
b3NpdGlvbkluZm9ybWF0aW9uLnJlcXVlc3QucG9pbnQgdGl0bGU6X3Bvc2l0aW9uSW5mb3JtYXRp
b24udGl0bGUgSUQ6X3Bvc2l0aW9uSW5mb3JtYXRpb24uaWRBdHRyaWJ1dGUgcmVjdDpfcG9zaXRp
b25JbmZvcm1hdGlvbi5ib3VuZHMgaW1hZ2U6X3Bvc2l0aW9uSW5mb3JtYXRpb24uaW1hZ2UuZ2V0
KCkgdXNlckluZm86aW1hZ2VJbmZvLmdldCgpXSk7Ci0gICAgICAgIF9wYWdlLT5zdGFydEludGVy
YWN0aW9uV2l0aEVsZW1lbnRBdFBvc2l0aW9uKF9wb3NpdGlvbkluZm9ybWF0aW9uLnJlcXVlc3Qu
cG9pbnQpOworICAgICAgICBfcGFnZS0+c3RhcnRJbnRlcmFjdGlvbldpdGhQb3NpdGlvbkluZm9y
bWF0aW9uKF9wb3NpdGlvbkluZm9ybWF0aW9uKTsKIAogICAgICAgICBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICBpZiAoW3VpRGVsZWdhdGUgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzp3aWxsUHJldmlld0ltYWdlV2l0aFVSTDopXSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IGQx
N2E2ODI0MzkwMzVkYTY3MzQ1Njk1MmNiYTdhODYyZjhkYmIzMDAuLjJkZmZlMjU0YTFhZTMxZGRh
Y2U1MDQ4ZGVlYTQxMGRmMTQyNGQ4NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtNjI0LDkgKzYyNCw5IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpyZXF1ZXN0UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0
aW9uUmVxdWVzCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0
UG9zaXRpb25JbmZvcm1hdGlvbihyZXF1ZXN0KSwgbV93ZWJQYWdlSUQpOwogfQogCi12b2lkIFdl
YlBhZ2VQcm94eTo6c3RhcnRJbnRlcmFjdGlvbldpdGhFbGVtZW50QXRQb3NpdGlvbihjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQpCit2b2lkIFdlYlBhZ2VQcm94eTo6c3RhcnRJbnRlcmFj
dGlvbldpdGhQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25B
dFBvc2l0aW9uJiBwb3NpdGlvbkluZm9ybWF0aW9uKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U3RhcnRJbnRlcmFjdGlvbldpdGhFbGVtZW50QXRQb3NpdGlvbihw
b2ludCksIG1fd2ViUGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlN0YXJ0SW50ZXJhY3Rpb25XaXRoRWxlbWVudENvbnRleHRPclBvc2l0aW9uKHBvc2l0aW9u
SW5mb3JtYXRpb24uZWxlbWVudENvbnRleHQsIHBvc2l0aW9uSW5mb3JtYXRpb24ucmVxdWVzdC5w
b2ludCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnN0b3BJbnRlcmFj
dGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCAyODkwZjc4MWZiMThhYzlmM2Y1Y2I1ZTViM2MzNDRlNDg4ZDhmNjJiLi40YTlmNjhh
NGQ2NDAyYWUzNjRmYzYzYjNlY2Y5NTBmYjY0Nzk4ZmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTcyMiw3ICs3MjIsNyBAQAogCQky
RERGNzMxNTE4RTk1MDYwMDA0RjVBNjYgLyogUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRERG
NzMxMzE4RTk1MDYwMDA0RjVBNjYgLyogUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9u
LmggKi87IH07CiAJCTJERTY5NDNEMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRp
b25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERTY5NDNCMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1h
Z25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJMkRFNjk0
M0UxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdl
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRFNjk0
M0MxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdl
cy5oICovOyB9OwotCQkyREU5QjEzNTIyMzFCNUIyMDA1Mjg3QjcgLyogVGV4dElucHV0Q29udGV4
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRFOUIx
MzMyMjMxQjVCMjAwNTI4N0I3IC8qIFRleHRJbnB1dENvbnRleHQuaCAqLzsgfTsKKwkJMkRFOUIx
MzUyMjMxQjVCMjAwNTI4N0I3IC8qIEVsZW1lbnRDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREU5QjEzMzIyMzFCNUIyMDA1Mjg3QjcgLyog
RWxlbWVudENvbnRleHQuaCAqLzsgfTsKIAkJMkRFOUIxM0EyMjMxRjYxQzAwNTI4N0I3IC8qIF9X
S1RleHRJbnB1dENvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJERTlCMTM4MjIzMUY2MUMwMDUyODdCNyAvKiBfV0tUZXh0SW5wdXRDb250ZXh0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkRF
OUIxM0MyMjMxRjc3QzAwNTI4N0I3IC8qIF9XS1RleHRJbnB1dENvbnRleHRJbnRlcm5hbC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRFOUIxM0IyMjMx
Rjc3QzAwNTI4N0I3IC8qIF9XS1RleHRJbnB1dENvbnRleHRJbnRlcm5hbC5oICovOyB9OwogCQky
REVBQzVDRjFBQzM2OEJCMDBBMTk1RDggLyogX1dLRmluZE9wdGlvbnMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERUFDNUNFMUFDMzY4QkIwMEExOTVE
OCAvKiBfV0tGaW5kT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0yODc0LDggKzI4NzQsOCBAQAogCQkyRERGNzMxNDE4RTk1MDYwMDA0
RjVBNjYgLyogUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xs
ZWN0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREU2OTQzQjE4QkQyQTY4
MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTbWFydE1hZ25pZmljYXRp
b25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dl
YktpdDIvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHNv
dXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTJERTY5NDNDMThCRDJBNjgwMDVD
MTVFNSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3Nh
Z2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1NtYXJ0TWFnbmlmaWNhdGlvbkNv
bnRyb2xsZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owot
CQkyREU5QjEzMzIyMzFCNUIyMDA1Mjg3QjcgLyogVGV4dElucHV0Q29udGV4dC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0SW5wdXRDb250ZXh0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTJERTlCMTM0MjIzMUI1QjIwMDUyODdCNyAvKiBUZXh0SW5wdXRD
b250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRJbnB1
dENvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyREU5QjEzMzIyMzFC
NUIyMDA1Mjg3QjcgLyogRWxlbWVudENvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRWxlbWVudENvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MkRFOUIxMzQyMjMxQjVCMjAwNTI4N0I3IC8qIEVsZW1lbnRDb250ZXh0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVsZW1lbnRDb250ZXh0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRFOUIxMzcyMjMxRjYxQzAwNTI4N0I3IC8qIF9XS1RleHRJ
bnB1dENvbnRleHQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBf
V0tUZXh0SW5wdXRDb250ZXh0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREU5
QjEzODIyMzFGNjFDMDA1Mjg3QjcgLyogX1dLVGV4dElucHV0Q29udGV4dC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tUZXh0SW5wdXRDb250ZXh0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTJERTlCMTNCMjIzMUY3N0MwMDUyODdCNyAvKiBfV0tUZXh0SW5w
dXRDb250ZXh0SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dL
VGV4dElucHV0Q29udGV4dEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC01MjYxLDYgKzUyNjEsOCBAQAogCQkJCUUxMDVGRTUzMThEN0I5REUwMDhGNTdBOCAvKiBFZGl0
aW5nUmFuZ2UuaCAqLywKIAkJCQk4Q0ZFQ0U5MzE0OTBGMTQwMDAyQUFBMzIgLyogRWRpdG9yU3Rh
dGUuY3BwICovLAogCQkJCTFBQTQxQUI0MTJDMDJFQzQwMDJCRTY3QiAvKiBFZGl0b3JTdGF0ZS5o
ICovLAorCQkJCTJERTlCMTM0MjIzMUI1QjIwMDUyODdCNyAvKiBFbGVtZW50Q29udGV4dC5jcHAg
Ki8sCisJCQkJMkRFOUIxMzMyMjMxQjVCMjAwNTI4N0I3IC8qIEVsZW1lbnRDb250ZXh0LmggKi8s
CiAJCQkJQzU5QzRBNTYxOEI4MTE3NDAwN0JEQ0I2IC8qIEZvY3VzZWRFbGVtZW50SW5mb3JtYXRp
b24uY3BwICovLAogCQkJCUM1OUM0QTU3MThCODExNzQwMDdCRENCNiAvKiBGb2N1c2VkRWxlbWVu
dEluZm9ybWF0aW9uLmggKi8sCiAJCQkJQkNFODFEOEExMzE5RjdFRjAwMjQxOTEwIC8qIEZvbnRJ
bmZvLmNwcCAqLywKQEAgLTUzMTMsOCArNTMxNSw2IEBACiAJCQkJNTI3MkIyODgxNDA2OTg1RDAw
OTZBNUQwIC8qIFN0YXRpc3RpY3NEYXRhLmNwcCAqLywKIAkJCQk1MjcyQjI4OTE0MDY5ODVEMDA5
NkE1RDAgLyogU3RhdGlzdGljc0RhdGEuaCAqLywKIAkJCQkxQTVFNERBMzEyRDNCRDNEMDA5OUEy
QkIgLyogVGV4dENoZWNrZXJTdGF0ZS5oICovLAotCQkJCTJERTlCMTM0MjIzMUI1QjIwMDUyODdC
NyAvKiBUZXh0SW5wdXRDb250ZXh0LmNwcCAqLywKLQkJCQkyREU5QjEzMzIyMzFCNUIyMDA1Mjg3
QjcgLyogVGV4dElucHV0Q29udGV4dC5oICovLAogCQkJCTJGRDQzQjkyMUZBMDA2QTMwMDgzRjUx
QyAvKiBUb3VjaEJhck1lbnVEYXRhLmNwcCAqLywKIAkJCQkyRkQ0M0I5MTFGQTAwNkExMDA4M0Y1
MUMgLyogVG91Y2hCYXJNZW51RGF0YS5oICovLAogCQkJCTJGODA5REQ1MUZCRDFCQzkwMDVGRTYz
QSAvKiBUb3VjaEJhck1lbnVJdGVtRGF0YS5jcHAgKi8sCkBAIC05NDU5LDYgKzk0NTksNyBAQAog
CQkJCTJENTg3NUJGMjE5QjUzMTUwMDcwQjlBQSAvKiBFZGl0YWJsZUltYWdlQ29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRTEwNUZFNTQxOEQ3QjlERTAwOEY1N0E4IC8qIEVkaXRpbmdS
YW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBNDFBQjUxMkMwMkVDNDAwMkJFNjdCIC8qIEVk
aXRvclN0YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQkyREU5QjEzNTIyMzFCNUIyMDA1Mjg3Qjcg
LyogRWxlbWVudENvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDMyREE4MTBGNDM3RDEw
MDU4QzE1QSAvKiBFbmNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUIxNUE4NTEzODQzQTM5
MDAzMjFBRDggLyogRW52aXJvbm1lbnRVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
QTU3NUZCMTQ5NkI1MjYwMEE0RUUwNiAvKiBFdmVudERpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICov
LApAQCAtOTc3Nyw3ICs5Nzc4LDYgQEAKIAkJCQkxQUE0MTdDQjEyQzAwQ0NBMDAyQkU2N0IgLyog
VGV4dENoZWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUzQ0ZCQkM4MjIyNEQxQjUwMDI2NjU0
NiAvKiBUZXh0Q2hlY2tlckNvbXBsZXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNUU0REE0
MTJEM0JEM0QwMDk5QTJCQiAvKiBUZXh0Q2hlY2tlclN0YXRlLmggaW4gSGVhZGVycyAqLywKLQkJ
CQkyREU5QjEzNTIyMzFCNUIyMDA1Mjg3QjcgLyogVGV4dElucHV0Q29udGV4dC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQ0UxQTBCRDcxQTQ4RTZDNjAwNTRFRjc0IC8qIFRleHRJbnB1dFNQSS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUFBRjI2MzkxNDY4N0MzOTAwNEExRThBIC8qIFRpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUYwNUQ4NzE0Njg4MzQ4
MDA4QjFFODEgLyogVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oIGluIEhlYWRl
cnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmlu
ZGV4IDg4MWY3Nzg4ZjVlNTU5ZmRiODNhZDhkN2QxY2E3OTVlMDA0NzIwMTMuLmNkODliZWQ5ODZm
MjVjNTY5OTdlN2VhY2ZkNWZhOTVjNDAzZGJiMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC02NzQ5LDkgKzY3NDksOSBAQCBzdGF0aWMgYm9v
bCBpc0VkaXRhYmxlVGV4dElucHV0RWxlbWVudChFbGVtZW50JiBlbGVtZW50KQogICAgIHJldHVy
biBlbGVtZW50LmlzUm9vdEVkaXRhYmxlRWxlbWVudCgpOwogfQogCi12b2lkIFdlYlBhZ2U6OnRl
eHRJbnB1dENvbnRleHRzSW5SZWN0KFdlYkNvcmU6OkZsb2F0UmVjdCBzZWFyY2hSZWN0LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxUZXh0SW5wdXRDb250ZXh0PiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdlOjp0ZXh0SW5wdXRDb250ZXh0c0luUmVjdChX
ZWJDb3JlOjpGbG9hdFJlY3Qgc2VhcmNoUmVjdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBWZWN0b3I8RWxlbWVudENvbnRleHQ+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAg
VmVjdG9yPFdlYktpdDo6VGV4dElucHV0Q29udGV4dD4gdGV4dElucHV0Q29udGV4dHM7CisgICAg
VmVjdG9yPFdlYktpdDo6RWxlbWVudENvbnRleHQ+IHRleHRJbnB1dENvbnRleHRzOwogCiAgICAg
Zm9yIChGcmFtZSogZnJhbWUgPSAmbV9wYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0g
ZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBmcmFtZS0+ZG9jdW1lbnQoKTsKQEAgLTY3NzcsNyArNjc3Nyw3IEBAIHZvaWQgV2ViUGFn
ZTo6dGV4dElucHV0Q29udGV4dHNJblJlY3QoV2ViQ29yZTo6RmxvYXRSZWN0IHNlYXJjaFJlY3Qs
IENvbXBsZXRpb25ICiAgICAgICAgICAgICBpZiAoIXNlYXJjaFJlY3QuaW50ZXJzZWN0cyhlbGVt
ZW50UmVjdCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIFdlYktp
dDo6VGV4dElucHV0Q29udGV4dCBjb250ZXh0OworICAgICAgICAgICAgV2ViS2l0OjpFbGVtZW50
Q29udGV4dCBjb250ZXh0OwogICAgICAgICAgICAgY29udGV4dC53ZWJQYWdlSWRlbnRpZmllciA9
IG1faWRlbnRpZmllcjsKICAgICAgICAgICAgIGNvbnRleHQuZG9jdW1lbnRJZGVudGlmaWVyID0g
ZG9jdW1lbnQtPmlkZW50aWZpZXIoKTsKICAgICAgICAgICAgIGNvbnRleHQuZWxlbWVudElkZW50
aWZpZXIgPSBkb2N1bWVudC0+aWRlbnRpZmllckZvckVsZW1lbnQoZWxlbWVudCk7CkBAIC02Nzkw
LDkgKzY3OTAsOSBAQCB2b2lkIFdlYlBhZ2U6OnRleHRJbnB1dENvbnRleHRzSW5SZWN0KFdlYkNv
cmU6OkZsb2F0UmVjdCBzZWFyY2hSZWN0LCBDb21wbGV0aW9uSAogICAgIGNvbXBsZXRpb25IYW5k
bGVyKHRleHRJbnB1dENvbnRleHRzKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpmb2N1c1RleHRJbnB1
dENvbnRleHQoY29uc3QgVGV4dElucHV0Q29udGV4dCYgdGV4dElucHV0Q29udGV4dCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFn
ZTo6Zm9jdXNUZXh0SW5wdXRDb250ZXh0KGNvbnN0IEVsZW1lbnRDb250ZXh0JiB0ZXh0SW5wdXRD
b250ZXh0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewotICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50ID0gZWxlbWVudEZvclRleHRJbnB1dENv
bnRleHQodGV4dElucHV0Q29udGV4dCk7CisgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBl
bGVtZW50Rm9yQ29udGV4dCh0ZXh0SW5wdXRDb250ZXh0KTsKIAogICAgIGlmIChlbGVtZW50KQog
ICAgICAgICBlbGVtZW50LT5mb2N1cygpOwpAQCAtNjgwMCwxOSArNjgwMCwzMiBAQCB2b2lkIFdl
YlBhZ2U6OmZvY3VzVGV4dElucHV0Q29udGV4dChjb25zdCBUZXh0SW5wdXRDb250ZXh0JiB0ZXh0
SW5wdXRDb250ZXh0LCBDbwogICAgIGNvbXBsZXRpb25IYW5kbGVyKGVsZW1lbnQpOwogfQogCi1F
bGVtZW50KiBXZWJQYWdlOjplbGVtZW50Rm9yVGV4dElucHV0Q29udGV4dChjb25zdCBUZXh0SW5w
dXRDb250ZXh0JiB0ZXh0SW5wdXRDb250ZXh0KQorRWxlbWVudCogV2ViUGFnZTo6ZWxlbWVudEZv
ckNvbnRleHQoY29uc3QgRWxlbWVudENvbnRleHQmIGVsZW1lbnRDb250ZXh0KSBjb25zdAogewot
ICAgIGlmICh0ZXh0SW5wdXRDb250ZXh0LndlYlBhZ2VJZGVudGlmaWVyICE9IG1faWRlbnRpZmll
cikKKyAgICBpZiAoZWxlbWVudENvbnRleHQud2ViUGFnZUlkZW50aWZpZXIgIT0gbV9pZGVudGlm
aWVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8qIGRvY3VtZW50ID0gRG9j
dW1lbnQ6OmFsbERvY3VtZW50c01hcCgpLmdldCh0ZXh0SW5wdXRDb250ZXh0LmRvY3VtZW50SWRl
bnRpZmllcik7CisgICAgYXV0byogZG9jdW1lbnQgPSBEb2N1bWVudDo6YWxsRG9jdW1lbnRzTWFw
KCkuZ2V0KGVsZW1lbnRDb250ZXh0LmRvY3VtZW50SWRlbnRpZmllcik7CiAgICAgaWYgKCFkb2N1
bWVudCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoZG9jdW1lbnQtPnBhZ2Uo
KSAhPSBtX3BhZ2UuZ2V0KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJu
IGRvY3VtZW50LT5zZWFyY2hGb3JFbGVtZW50QnlJZGVudGlmaWVyKHRleHRJbnB1dENvbnRleHQu
ZWxlbWVudElkZW50aWZpZXIpOworICAgIHJldHVybiBkb2N1bWVudC0+c2VhcmNoRm9yRWxlbWVu
dEJ5SWRlbnRpZmllcihlbGVtZW50Q29udGV4dC5lbGVtZW50SWRlbnRpZmllcik7Cit9CisKK09w
dGlvbmFsPEVsZW1lbnRDb250ZXh0PiBXZWJQYWdlOjpjb250ZXh0Rm9yRWxlbWVudChXZWJDb3Jl
OjpFbGVtZW50JiBlbGVtZW50KSBjb25zdAoreworICAgIGF1dG8mIGRvY3VtZW50ID0gZWxlbWVu
dC5kb2N1bWVudCgpOworICAgIGlmICghbV9wYWdlIHx8IGRvY3VtZW50LnBhZ2UoKSAhPSBtX3Bh
Z2UuZ2V0KCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBhdXRvIGZyYW1l
ID0gZG9jdW1lbnQuZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgcmV0dXJuIEVsZW1lbnRDb250ZXh0IHsgZWxlbWVudFJlY3RJblJv
b3RWaWV3Q29vcmRpbmF0ZXMoZWxlbWVudCwgKmZyYW1lKSwgbV9pZGVudGlmaWVyLCBkb2N1bWVu
dC5pZGVudGlmaWVyKCksIGRvY3VtZW50LmlkZW50aWZpZXJGb3JFbGVtZW50KGVsZW1lbnQpIH07
CiB9CiAKIFBBTDo6U2Vzc2lvbklEIFdlYlBhZ2U6OnNlc3Npb25JRCgpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZGYwZjM2NGE4ZmViZWM0
YzhmODU1NTVmMDJiZmU1ZjM1M2QxMGJiYS4uYjE3NjVjMWY0ZjgxMWUwMDg0ZjBjOTc3OGU1OWEx
OGU4M2EwYThmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aApAQCAtMjYxLDEzICsyNjEsMTMgQEAgc3RydWN0IEF0dHJpYnV0ZWRTdHJpbmc7CiBzdHJ1Y3Qg
QmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlOwogc3RydWN0IERhdGFEZXRlY3Rpb25SZXN1bHQ7CiBz
dHJ1Y3QgRWRpdG9yU3RhdGU7CitzdHJ1Y3QgRWxlbWVudENvbnRleHQ7CiBzdHJ1Y3QgRm9udElu
Zm87CiBzdHJ1Y3QgSW5zZXJ0VGV4dE9wdGlvbnM7CiBzdHJ1Y3QgSW50ZXJhY3Rpb25JbmZvcm1h
dGlvbkF0UG9zaXRpb247CiBzdHJ1Y3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3Q7CiBz
dHJ1Y3QgTG9hZFBhcmFtZXRlcnM7CiBzdHJ1Y3QgUHJpbnRJbmZvOwotc3RydWN0IFRleHRJbnB1
dENvbnRleHQ7CiBzdHJ1Y3QgV2ViQXV0b2NvcnJlY3Rpb25EYXRhOwogc3RydWN0IFdlYkF1dG9j
b3JyZWN0aW9uQ29udGV4dDsKIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOwpAQCAt
NjExLDggKzYxMSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGV4ZWN1dGVFZGl0Q29tbWFuZFdpdGhD
YWxsYmFjayhjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50LCBDYWxsYmFja0lE
KTsKICAgICB2b2lkIHNlbGVjdEFsbCgpOwogCi0gICAgdm9pZCB0ZXh0SW5wdXRDb250ZXh0c0lu
UmVjdChXZWJDb3JlOjpGbG9hdFJlY3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVj
dG9yPFdlYktpdDo6VGV4dElucHV0Q29udGV4dD4mKT4mJik7Ci0gICAgdm9pZCBmb2N1c1RleHRJ
bnB1dENvbnRleHQoY29uc3QgVGV4dElucHV0Q29udGV4dCYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpOworICAgIHZvaWQgdGV4dElucHV0Q29udGV4dHNJblJlY3QoV2ViQ29yZTo6
RmxvYXRSZWN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJLaXQ6OkVs
ZW1lbnRDb250ZXh0PiYpPiYmKTsKKyAgICB2b2lkIGZvY3VzVGV4dElucHV0Q29udGV4dChjb25z
dCBFbGVtZW50Q29udGV4dCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgc2NyZWVuU2l6
ZSgpIGNvbnN0OwpAQCAtNjY4LDcgKzY2OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlcXVlc3RB
dXRvY29ycmVjdGlvbkNvbnRleHQoKTsKICAgICB2b2lkIGdldFBvc2l0aW9uSW5mb3JtYXRpb24o
Y29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJiYpPiYmKTsKICAgICB2b2lkIHJl
cXVlc3RQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1
ZXN0Jik7Ci0gICAgdm9pZCBzdGFydEludGVyYWN0aW9uV2l0aEVsZW1lbnRBdFBvc2l0aW9uKGNv
bnN0IFdlYkNvcmU6OkludFBvaW50Jik7CisgICAgdm9pZCBzdGFydEludGVyYWN0aW9uV2l0aEVs
ZW1lbnRDb250ZXh0T3JQb3NpdGlvbihPcHRpb25hbDxFbGVtZW50Q29udGV4dD4mJiwgV2ViQ29y
ZTo6SW50UG9pbnQmJik7CiAgICAgdm9pZCBzdG9wSW50ZXJhY3Rpb24oKTsKICAgICB2b2lkIHBl
cmZvcm1BY3Rpb25PbkVsZW1lbnQodWludDMyX3QgYWN0aW9uKTsKICAgICB2b2lkIGZvY3VzTmV4
dEZvY3VzZWRFbGVtZW50KGJvb2wgaXNGb3J3YXJkLCBDYWxsYmFja0lEKTsKQEAgLTExODgsNyAr
MTE4OCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY29uZmlndXJlTG9nZ2luZ0NoYW5uZWwoY29u
c3QgU3RyaW5nJiwgV1RGTG9nQ2hhbm5lbFN0YXRlLCBXVEZMb2dMZXZlbCk7CiAKLSAgICBXZWJD
b3JlOjpFbGVtZW50KiBlbGVtZW50Rm9yVGV4dElucHV0Q29udGV4dChjb25zdCBUZXh0SW5wdXRD
b250ZXh0Jik7CisgICAgV2ViQ29yZTo6RWxlbWVudCogZWxlbWVudEZvckNvbnRleHQoY29uc3Qg
RWxlbWVudENvbnRleHQmKSBjb25zdDsKKyAgICBPcHRpb25hbDxFbGVtZW50Q29udGV4dD4gY29u
dGV4dEZvckVsZW1lbnQoV2ViQ29yZTo6RWxlbWVudCYpIGNvbnN0OwogCiAjaWYgRU5BQkxFKEFQ
UExFX1BBWSkKICAgICBXZWJQYXltZW50Q29vcmRpbmF0b3IqIHBheW1lbnRDb29yZGluYXRvcigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4KaW5kZXggMmVlMTg4OTY0N2Y0YzQ1ZDY1ZGFhYWFiNDI1ZGRlYjA5YmQ1YmQ4Mi4u
MzA5NmUyZTY5NDE0MGM3ZGZlMjI5YjNjYzAyOTUxNjJmMjJkZDNlOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC04
Niw3ICs4Niw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFJl
cXVlc3RFdmFzaW9uUmVjdHNBYm92ZVNlbGVjdGlvbigpIC0+IChWZWN0b3I8V2ViQ29yZTo6Rmxv
YXRSZWN0PiByZWN0cykgQXN5bmMKICAgICBHZXRQb3NpdGlvbkluZm9ybWF0aW9uKHN0cnVjdCBX
ZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0IHJlcXVlc3QpIC0+IChzdHJ1Y3Qg
V2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiBpbmZvcm1hdGlvbikgU3lu
Y2hyb25vdXMKICAgICBSZXF1ZXN0UG9zaXRpb25JbmZvcm1hdGlvbihzdHJ1Y3QgV2ViS2l0OjpJ
bnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCByZXF1ZXN0KQotICAgIFN0YXJ0SW50ZXJhY3Rp
b25XaXRoRWxlbWVudEF0UG9zaXRpb24oV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQpCisgICAgU3Rh
cnRJbnRlcmFjdGlvbldpdGhFbGVtZW50Q29udGV4dE9yUG9zaXRpb24oT3B0aW9uYWw8V2ViS2l0
OjpFbGVtZW50Q29udGV4dD4gZWxlbWVudENvbnRleHQsIFdlYkNvcmU6OkludFBvaW50IHBvaW50
KQogICAgIFN0b3BJbnRlcmFjdGlvbigpCiAgICAgUGVyZm9ybUFjdGlvbk9uRWxlbWVudCh1aW50
MzJfdCBhY3Rpb24pCiAgICAgRm9jdXNOZXh0Rm9jdXNlZEVsZW1lbnQoYm9vbCBpc0ZvcndhcmQs
IFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQpAQCAtNTY5LDggKzU2OSw4IEBAIEdlbmVy
YXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGlj
RWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgVm9pY2VzRGlkQ2hhbmdlKCkKICNlbmRpZgogCi0gICAg
VGV4dElucHV0Q29udGV4dHNJblJlY3QoV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3QpIC0+IChWZWN0
b3I8c3RydWN0IFdlYktpdDo6VGV4dElucHV0Q29udGV4dD4gY29udGV4dHMpIEFzeW5jCi0gICAg
Rm9jdXNUZXh0SW5wdXRDb250ZXh0KHN0cnVjdCBXZWJLaXQ6OlRleHRJbnB1dENvbnRleHQgY29u
dGV4dCkgLT4gKGJvb2wgc3VjY2VzcykgQXN5bmMKKyAgICBUZXh0SW5wdXRDb250ZXh0c0luUmVj
dChXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdCkgLT4gKFZlY3RvcjxzdHJ1Y3QgV2ViS2l0OjpFbGVt
ZW50Q29udGV4dD4gY29udGV4dHMpIEFzeW5jCisgICAgRm9jdXNUZXh0SW5wdXRDb250ZXh0KHN0
cnVjdCBXZWJLaXQ6OkVsZW1lbnRDb250ZXh0IGNvbnRleHQpIC0+IChib29sIHN1Y2Nlc3MpIEFz
eW5jCiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIFdhc0xvYWRl
ZFdpdGhEYXRhVHJhbnNmZXJGcm9tUHJldmFsZW50UmVzb3VyY2UoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCBjN2IzNDlj
OWZkOWY4Y2MzZjhiYzZlMGZlNzkxMjE0YTcxYzYxMmEwLi43NzM1Yzg3OWU2NzRhZjE3MzZiYmYx
ODJlMjk5MzZkNzQzNzFkNmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMjcxMyw2ICsyNzEzLDggQEAgc3RhdGljIHZv
aWQgZWxlbWVudFBvc2l0aW9uSW5mb3JtYXRpb24oV2ViUGFnZSYgcGFnZSwgRWxlbWVudCYgZWxl
bWVudCwgY29uc3QgSW4KICAgICAgICAgICAgIGltYWdlUG9zaXRpb25JbmZvcm1hdGlvbihwYWdl
LCBlbGVtZW50LCByZXF1ZXN0LCBpbmZvKTsKICAgICAgICAgYm91bmRzUG9zaXRpb25JbmZvcm1h
dGlvbigqcmVuZGVyZXIsIGluZm8pOwogICAgIH0KKworICAgIGluZm8uZWxlbWVudENvbnRleHQg
PSBwYWdlLmNvbnRleHRGb3JFbGVtZW50KGVsZW1lbnQpOwogfQogICAgIAogc3RhdGljIHZvaWQg
c2VsZWN0aW9uUG9zaXRpb25JbmZvcm1hdGlvbihXZWJQYWdlJiBwYWdlLCBjb25zdCBJbnRlcmFj
dGlvbkluZm9ybWF0aW9uUmVxdWVzdCYgcmVxdWVzdCwgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0
UG9zaXRpb24mIGluZm8pCkBAIC0yODExLDE0ICsyODEzLDE0IEBAIHZvaWQgV2ViUGFnZTo6cmVx
dWVzdFBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVl
c3QmIHJlCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZlUG9zaXRp
b25JbmZvcm1hdGlvbihwb3NpdGlvbkluZm9ybWF0aW9uKHJlcXVlc3QpKSk7CiB9CiAKLXZvaWQg
V2ViUGFnZTo6c3RhcnRJbnRlcmFjdGlvbldpdGhFbGVtZW50QXRQb3NpdGlvbihjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYgcG9pbnQpCit2b2lkIFdlYlBhZ2U6OnN0YXJ0SW50ZXJhY3Rpb25XaXRo
RWxlbWVudENvbnRleHRPclBvc2l0aW9uKE9wdGlvbmFsPEVsZW1lbnRDb250ZXh0PiYmIGVsZW1l
bnRDb250ZXh0LCBXZWJDb3JlOjpJbnRQb2ludCYmIHBvaW50KQogewotICAgIC8vIEZJWE1FOiBX
ZSd2ZSBhbHJlYWR5IHBlcmZvcm1lZCBhIGhpdCB0ZXN0IHdoZW4gdGhlIGxvbmctcHJlc3MgZ2Vz
dHVyZSB3YXMgcmVjb2duaXplZCBhbmQgd2UKLSAgICAvLyB1c2VkIHRoYXQgcmVzdWx0IHRvIGdl
bmVyYXRlIHRoZSB0YXJnZXRlZCBwcmV2aWV3LCBidXQgbm93IHdlIGFyZSBoaXQgdGVzdGluZyBh
Z2FpbiBpbiBvcmRlcgotICAgIC8vIHRvIHBlcmZvcm0gdGhlIHNlbGVjdGVkIGFjdGlvbi4gU2lu
Y2UgYW4gYXJiaXRyYXJ5IGFtb3VudCBvZiB0aW1lIGNhbiBlbGFwc2UgYmV0d2VlbgotICAgIC8v
IGdlbmVyYXRpbmcgdGhlIHRhcmdldGVkIHByZXZpZXcgYW5kIHRoZSB1c2VyIHNlbGVjdGluZyBh
biBhY3Rpb24sIGl0J3MgcG9zc2libGUgdGhhdCB0aGlzCi0gICAgLy8gc2Vjb25kIGhpdCB0ZXN0
IHdpbGwgZmluZCBhIGRpZmZlcmVudCBlbGVtZW50IHRoYW4gdGhlIGZpcnN0IG9uZSwgbGVhZGlu
ZyB0byBidWdzIGxpa2UKLSAgICAvLyA8cmRhcjovL3Byb2JsZW0vNTQ3MjMxMzE+LiBXZSBzaG91
bGQgcmUtdXNlIHRoZSByZXN1bHRzIG9mIHRoZSBmaXJzdCBoaXQgdGVzdCBpbnN0ZWFkLgorICAg
IGlmIChlbGVtZW50Q29udGV4dCkKKyAgICAgICAgbV9pbnRlcmFjdGlvbk5vZGUgPSBlbGVtZW50
Rm9yQ29udGV4dCgqZWxlbWVudENvbnRleHQpOworCisgICAgaWYgKG1faW50ZXJhY3Rpb25Ob2Rl
KQorICAgICAgICByZXR1cm47CisKICAgICBGbG9hdFBvaW50IGFkanVzdGVkUG9pbnQ7CiAgICAg
bV9pbnRlcmFjdGlvbk5vZGUgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLm5vZGVSZXNwb25kaW5nVG9J
bnRlcmFjdGlvbihwb2ludCwgYWRqdXN0ZWRQb2ludCk7CiB9CkBAIC0zOTMzLDcgKzM5MzUsNyBA
QCB2b2lkIFdlYlBhZ2U6OnJlcXVlc3REb2N1bWVudEVkaXRpbmdDb250ZXh0KERvY3VtZW50RWRp
dGluZ0NvbnRleHRSZXF1ZXN0IHJlcXVlcwogICAgIGJvb2wgd2FudHNSZWN0cyA9IHJlcXVlc3Qu
b3B0aW9ucy5jb250YWlucyhEb2N1bWVudEVkaXRpbmdDb250ZXh0UmVxdWVzdDo6T3B0aW9uczo6
UmVjdHMpOwogCiAgICAgaWYgKGF1dG8gdGV4dElucHV0Q29udGV4dCA9IHJlcXVlc3QudGV4dElu
cHV0Q29udGV4dCkgewotICAgICAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IGVsZW1lbnRG
b3JUZXh0SW5wdXRDb250ZXh0KCp0ZXh0SW5wdXRDb250ZXh0KTsKKyAgICAgICAgUmVmUHRyPEVs
ZW1lbnQ+IGVsZW1lbnQgPSBlbGVtZW50Rm9yQ29udGV4dCgqdGV4dElucHV0Q29udGV4dCk7CiAg
ICAgICAgIGlmICghZWxlbWVudCkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9
KTsKICAgICAgICAgICAgIHJldHVybjsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380441</attachid>
            <date>2019-10-08 10:31:47 -0700</date>
            <delta_ts>2019-10-08 16:23:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202510-20191008103146.patch</filename>
            <type>text/plain</type>
            <size>50403</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNzc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDIxNjU2OWUyMTEzMjBiMWRj
ZTQzYjMzODk5Y2IxMTI1YzA4ZWI1NTEuLjVkZDMxMzk5MGExYTJmMzkxOGI1ZWRmZjgyOGQxNTEz
OTdlOTdkZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzEgQEAKKzIwMTktMTAtMDMgIEFuZHkgRXN0
ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEFkZCBhIGZhc3QgcGF0aCB0
aGF0IGF2b2lkcyBoaXQgdGVzdGluZyBkdXJpbmcgY29udGV4dCBtZW51IGludGVyYWN0aW9ucyBv
biBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjAyNTEwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NTkzOTMxMz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIGNvbXB1dGluZyBwb3Np
dGlvbiBpbmZvcm1hdGlvbiBmb3IgYW4gZWxlbWVudCwgd2UgY2FuIHN0b3JlIHN1ZmZpY2llbnQg
Y29udGV4dAorICAgICAgICBpbmZvcm1hdGlvbiBpbiBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQ
b3NpdGlvbiBzdWNoIHRoYXQgdGhlIHNhbWUgZWxlbWVudCBjb3VsZCBiZQorICAgICAgICByZXRy
aWV2ZWQgYWdhaW4gd2l0aG91dCBoaXQgdGVzdGluZy4gVGhlIGV4aXN0aW5nIFRleHRJbnB1dENv
bnRleHQgY2FuIGFscmVhZHkgc3RvcmUgYW4KKyAgICAgICAgZWxlbWVudCdzIHBhZ2UgaWRlbnRp
ZmllciwgZG9jdW1lbnQgaWRlbnRpZmllciwgYW5kIGVsZW1lbnQgaWRlbnRpZmllciwgd2hpY2gg
aXMgc3VmZmljaWVudAorICAgICAgICBjb250ZXh0IGZvciBzdWNoIGEgdGFzay4KKworICAgICAg
ICBUaGlzIHBhdGNoIHJlbmFtZXMgVGV4dElucHV0Q29udGV4dCB0byBFbGVtZW50Q29udGV4dCBh
bmQgdXNlcyBpdCB3aGVuIHBvcHVsYXRpbmcgbmV3CisgICAgICAgIEludGVyYWN0aW9uSW5mb3Jt
YXRpb25BdFBvc2l0aW9uIHN0cnVjdHMgaW4gZWxlbWVudFBvc2l0aW9uSW5mb3JtYXRpb24oKS4g
V2hlbiBhIGNvbnRleHQKKyAgICAgICAgbWVudSBpbnRlcmFjdGlvbiBvY2N1cnMsIFdlYlBhZ2U6
OnN0YXJ0SW50ZXJhY3Rpb25XaXRoRWxlbWVudENvbnRleHRPclBvc2l0aW9uKCkgdXNlcyB0aGlz
CisgICAgICAgIGNvbnRleHQgdG8gbG9vayB1cCB0aGUgaW50ZXJhY3Rpb24gZWxlbWVudCBieSBp
dHMgaWRlbnRpZmllciB0cmlwbGV0LCBmYWxsaW5nIGJhY2sgdG8gaGl0CisgICAgICAgIHRlc3Rp
bmcgaWYgdGhpcyBsb29rdXAgZmFpbHMuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNz
YWdlcy5weToKKyAgICAgICAgKiBTaGFyZWQvRG9jdW1lbnRFZGl0aW5nQ29udGV4dC5oOgorICAg
ICAgICAqIFNoYXJlZC9Eb2N1bWVudEVkaXRpbmdDb250ZXh0Lm1tOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPFdlYktpdDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dFJlcXVlc3Q+OjpkZWNv
ZGUpOgorICAgICAgICAqIFNoYXJlZC9FbGVtZW50Q29udGV4dC5jcHA6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9UZXh0SW5wdXRDb250ZXh0LmNwcC4KKyAgICAgICAgKElQQzo6
QXJndW1lbnRDb2RlcjxXZWJLaXQ6OkVsZW1lbnRDb250ZXh0Pjo6ZW5jb2RlKToKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxXZWJLaXQ6OkVsZW1lbnRDb250ZXh0Pjo6ZGVjb2RlKToKKyAg
ICAgICAgKiBTaGFyZWQvRWxlbWVudENvbnRleHQuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJL
aXQvU2hhcmVkL1RleHRJbnB1dENvbnRleHQuaC4KKyAgICAgICAgKFdlYktpdDo6b3BlcmF0b3I9
PSk6CisgICAgICAgICogU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlv
bi5oOgorICAgICAgICAqIFNoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRp
b24ubW06CisgICAgICAgIChXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9u
OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9u
QXRQb3NpdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9y
ZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUZXh0SW5wdXRDb250ZXh0Lm1tOgorICAgICAg
ICAoLVtfV0tUZXh0SW5wdXRDb250ZXh0IF9pbml0V2l0aFRleHRJbnB1dENvbnRleHQ6XSk6Cisg
ICAgICAgICgtW19XS1RleHRJbnB1dENvbnRleHQgX3RleHRJbnB1dENvbnRleHRdKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1RleHRJbnB1dENvbnRleHRJbnRlcm5hbC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnRleHRJbnB1dENvbnRleHRzSW5SZWN0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5Ojpmb2N1c1RleHRJbnB1dENvbnRleHQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBhY3Rpb25TaGVldEFzc2lz
dGFudDp3aWxsU3RhcnRJbnRlcmFjdGlvbldpdGhFbGVtZW50Ol0pOgorICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IGFzc2lnbkxlZ2FjeURhdGFGb3JDb250ZXh0TWVudUludGVyYWN0aW9uXSk6Cisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgY29udGludWVDb250ZXh0TWVudUludGVyYWN0aW9uOl0p
OgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGNvbnRpbnVlQ29udGV4dE1lbnVJbnRlcmFjdGlv
bldpdGhEYXRhRGV0ZWN0b3JzOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9wcmVzZW50
ZWRWaWV3Q29udHJvbGxlckZvclByZXZpZXdJdGVtQ29udHJvbGxlcjpdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpzdGFydEludGVyYWN0aW9uV2l0aFBvc2l0aW9uSW5mb3JtYXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN0YXJ0SW50ZXJhY3Rpb25XaXRoRWxlbWVudEF0UG9z
aXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6dGV4dElucHV0Q29udGV4dHNJblJlY3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpmb2N1c1RleHRJbnB1dENvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjplbGVtZW50Rm9yQ29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmNvbnRleHRGb3JFbGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
ZWxlbWVudEZvclRleHRJbnB1dENvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjplbGVtZW50UG9zaXRpb25JbmZvcm1hdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnN0YXJ0SW50ZXJhY3Rpb25XaXRoRWxlbWVudENvbnRl
eHRPclBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVxdWVzdERvY3VtZW50
RWRpdGluZ0NvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzdGFydEludGVyYWN0
aW9uV2l0aEVsZW1lbnRBdFBvc2l0aW9uKTogRGVsZXRlZC4KKwogMjAxOS0xMC0wNyAgeW91ZW5u
IGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViUGFnZVByb3h5Ojp1cGRh
dGVQbGF5aW5nTWVkaWFEaWRDaGFuZ2Ugc2hvdWxkIHByb3RlY3QgZnJvbSBhIG51bGwgbV91c2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L21lc3NhZ2VzLnB5CmluZGV4IGE3OGRhMzE0NDMyNThjMDg2MTkyZjIwNTIwYjM0MDYwOTRlNDk4
ZjcuLmRmM2JiNGJlMDI3NTMwYTRhMGI5N2JkZjIwYzlhNDM0NjcwMmI1ZGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtNDg2LDcgKzQ4Niw3IEBAIGRlZiBo
ZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViS2l0OjpXZWJNb3VzZUV2ZW50Jzog
WyciV2ViRXZlbnQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6V2ViVG91Y2hFdmVudCc6IFsnIldl
YkV2ZW50LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OldlYldoZWVsRXZlbnQnOiBbJyJXZWJFdmVu
dC5oIiddLAotICAgICAgICAnc3RydWN0IFdlYktpdDo6VGV4dElucHV0Q29udGV4dCc6IFsnIlRl
eHRJbnB1dENvbnRleHQuaCInXSwKKyAgICAgICAgJ3N0cnVjdCBXZWJLaXQ6OkVsZW1lbnRDb250
ZXh0JzogWyciRWxlbWVudENvbnRleHQuaCInXSwKICAgICAgICAgJ3N0cnVjdCBXZWJLaXQ6Oldl
YlVzZXJTY3JpcHREYXRhJzogWyciV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmgi
J10sCiAgICAgICAgICdzdHJ1Y3QgV2ViS2l0OjpXZWJVc2VyU3R5bGVTaGVldERhdGEnOiBbJyJX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCInXSwKICAgICAgICAgJ3N0cnVjdCBX
ZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyRGF0YSc6IFsnIldlYlVzZXJDb250ZW50Q29u
dHJvbGxlckRhdGFUeXBlcy5oIiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
RG9jdW1lbnRFZGl0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRG9jdW1lbnRF
ZGl0aW5nQ29udGV4dC5oCmluZGV4IDFjMzBmNjRmYzc3MDg0YTY2ZDYxYTg5NTQxMWMwZWIzOGNi
NWNhM2UuLjg2MWM4OTE2MTAxY2UxMWZlNDFhNGY3YTk3NzQ2NmMzMjc4ZGJlMTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0RvY3VtZW50RWRpdGluZ0NvbnRleHQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Eb2N1bWVudEVkaXRpbmdDb250ZXh0LmgKQEAgLTI5LDcgKzI5
LDcgQEAKIAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiQXR0cmlidXRl
ZFN0cmluZy5oIgotI2luY2x1ZGUgIlRleHRJbnB1dENvbnRleHQuaCIKKyNpbmNsdWRlICJFbGVt
ZW50Q29udGV4dC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9UZXh0R3JhbnVsYXJpdHkuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CkBA
IC01Niw3ICs1Niw3IEBAIHN0cnVjdCBEb2N1bWVudEVkaXRpbmdDb250ZXh0UmVxdWVzdCB7CiAK
ICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdDsKIAotICAgIE9wdGlvbmFsPFdlYktpdDo6VGV4
dElucHV0Q29udGV4dD4gdGV4dElucHV0Q29udGV4dDsKKyAgICBPcHRpb25hbDxXZWJLaXQ6OkVs
ZW1lbnRDb250ZXh0PiB0ZXh0SW5wdXRDb250ZXh0OwogfTsKIAogc3RydWN0IERvY3VtZW50RWRp
dGluZ0NvbnRleHQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRG9jdW1lbnRF
ZGl0aW5nQ29udGV4dC5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0RvY3VtZW50RWRpdGluZ0Nv
bnRleHQubW0KaW5kZXggMzE2YzAxM2Q0Y2UzNzA2N2JkZmFjZjM1NzdhNDE3NTEwMTYzZWNiNC4u
NDgyZThjN2NkYTg1MmRlOTEyYjMyNjk2MTczY2I0OTc4NTIyY2MxNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvRG9jdW1lbnRFZGl0aW5nQ29udGV4dC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Eb2N1bWVudEVkaXRpbmdDb250ZXh0Lm1tCkBAIC0yOCw3ICsyOCw3IEBA
CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCi0jaW5jbHVkZSAiVGV4dElucHV0Q29udGV4
dC5oIgorI2luY2x1ZGUgIkVsZW1lbnRDb250ZXh0LmgiCiAjaW5jbHVkZSAiVUlLaXRTUEkuaCIK
ICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKIApAQCAtMTk4LDcgKzE5OCw3IEBA
IE9wdGlvbmFsPFdlYktpdDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dFJlcXVlc3Q+IEFyZ3VtZW50
Q29kZXI8V2ViS2l0OjpEb2N1bWVudEVkCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXF1ZXN0
LnJlY3QpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8T3B0
aW9uYWw8V2ViS2l0OjpUZXh0SW5wdXRDb250ZXh0Pj4gb3B0aW9uYWxUZXh0SW5wdXRDb250ZXh0
OworICAgIE9wdGlvbmFsPE9wdGlvbmFsPFdlYktpdDo6RWxlbWVudENvbnRleHQ+PiBvcHRpb25h
bFRleHRJbnB1dENvbnRleHQ7CiAgICAgZGVjb2RlciA+PiBvcHRpb25hbFRleHRJbnB1dENvbnRl
eHQ7CiAgICAgaWYgKCFvcHRpb25hbFRleHRJbnB1dENvbnRleHQpCiAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbGVtZW50Q29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbGVtZW50Q29udGV4dC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uM2Y3NGU3ZmM3MzUyZjU4YWI4YjhhNmIyNTM1Y2E3NGM0NGQ4NDhmZQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VsZW1lbnRDb250ZXh0LmNwcApAQCAtMCww
ICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkVs
ZW1lbnRDb250ZXh0LmgiCisKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL0VsZW1lbnQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK0VsZW1l
bnRDb250ZXh0Ojp+RWxlbWVudENvbnRleHQoKSA9IGRlZmF1bHQ7CisKK30KKworbmFtZXNwYWNl
IElQQyB7CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxXZWJLaXQ6OkVsZW1lbnRDb250ZXh0Pjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYktpdDo6RWxlbWVudENvbnRleHQmIGNvbnRl
eHQpCit7CisgICAgZW5jb2RlciA8PCBjb250ZXh0LmJvdW5kaW5nUmVjdDsKKyAgICBlbmNvZGVy
IDw8IGNvbnRleHQud2ViUGFnZUlkZW50aWZpZXI7CisgICAgZW5jb2RlciA8PCBjb250ZXh0LmRv
Y3VtZW50SWRlbnRpZmllcjsKKyAgICBlbmNvZGVyIDw8IGNvbnRleHQuZWxlbWVudElkZW50aWZp
ZXI7Cit9CisKK09wdGlvbmFsPFdlYktpdDo6RWxlbWVudENvbnRleHQ+IEFyZ3VtZW50Q29kZXI8
V2ViS2l0OjpFbGVtZW50Q29udGV4dD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAg
IFdlYktpdDo6RWxlbWVudENvbnRleHQgY29udGV4dDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGNvbnRleHQuYm91bmRpbmdSZWN0KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvbnRleHQud2ViUGFnZUlkZW50aWZpZXIpKQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGF1dG8gZG9jdW1lbnRJZGVudGlmaWVyID0gV2Vi
Q29yZTo6RG9jdW1lbnRJZGVudGlmaWVyOjpkZWNvZGUoZGVjb2Rlcik7CisgICAgaWYgKCFkb2N1
bWVudElkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgY29udGV4
dC5kb2N1bWVudElkZW50aWZpZXIgPSAqZG9jdW1lbnRJZGVudGlmaWVyOworICAgIGF1dG8gZWxl
bWVudElkZW50aWZpZXIgPSBXZWJDb3JlOjpFbGVtZW50SWRlbnRpZmllcjo6ZGVjb2RlKGRlY29k
ZXIpOworICAgIGlmICghZWxlbWVudElkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgY29udGV4dC5lbGVtZW50SWRlbnRpZmllciA9ICplbGVtZW50SWRlbnRpZmll
cjsKKworICAgIHJldHVybiBjb250ZXh0OworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9FbGVtZW50Q29udGV4dC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRWxlbWVu
dENvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMTVjYzQyNzAyODQ3OTg1MTA1ZTZhMDJhNjg5NWNjNzM2
MTgwMWMxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRWxlbWVudENv
bnRleHQuaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRJZGVu
dGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9FbGVtZW50SWRlbnRpZmllci5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmll
ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IEVsZW1lbnRDb250ZXh0IHsKKyAg
ICBXZWJDb3JlOjpGbG9hdFJlY3QgYm91bmRpbmdSZWN0OworCisgICAgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgd2ViUGFnZUlkZW50aWZpZXI7CisgICAgV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlm
aWVyIGRvY3VtZW50SWRlbnRpZmllcjsKKyAgICBXZWJDb3JlOjpFbGVtZW50SWRlbnRpZmllciBl
bGVtZW50SWRlbnRpZmllcjsKKworICAgIH5FbGVtZW50Q29udGV4dCgpOworfTsKKworaW5saW5l
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBFbGVtZW50Q29udGV4dCYgYSwgY29uc3QgRWxlbWVudENv
bnRleHQmIGIpCit7CisgICAgcmV0dXJuIGEuYm91bmRpbmdSZWN0ID09IGIuYm91bmRpbmdSZWN0
CisgICAgICAgICYmIGEud2ViUGFnZUlkZW50aWZpZXIgPT0gYi53ZWJQYWdlSWRlbnRpZmllcgor
ICAgICAgICAmJiBhLmRvY3VtZW50SWRlbnRpZmllciA9PSBiLmRvY3VtZW50SWRlbnRpZmllcgor
ICAgICAgICAmJiBhLmVsZW1lbnRJZGVudGlmaWVyID09IGIuZWxlbWVudElkZW50aWZpZXI7Cit9
CisKK30KKworbmFtZXNwYWNlIElQQyB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVy
PFdlYktpdDo6RWxlbWVudENvbnRleHQ+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2Rl
ciYsIGNvbnN0IFdlYktpdDo6RWxlbWVudENvbnRleHQmKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8
V2ViS2l0OjpFbGVtZW50Q29udGV4dD4gZGVjb2RlKERlY29kZXImKTsKK307Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9UZXh0SW5wdXRDb250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1RleHRJbnB1dENvbnRleHQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBjMzBmYWZhNzhjYWJhOTIyYjU3ZDcyNDRlM2M2ZWRkZjczOWMxY2MzLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1RleHRJbnB1dENvbnRleHQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJUZXh0SW5wdXRDb250
ZXh0LmgiCi0KLSNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKLSNpbmNsdWRlIDxX
ZWJDb3JlL0VsZW1lbnQuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVRleHRJbnB1dENvbnRl
eHQ6On5UZXh0SW5wdXRDb250ZXh0KCkgPSBkZWZhdWx0OwotCi19Ci0KLW5hbWVzcGFjZSBJUEMg
ewotCi12b2lkIEFyZ3VtZW50Q29kZXI8V2ViS2l0OjpUZXh0SW5wdXRDb250ZXh0Pjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYktpdDo6VGV4dElucHV0Q29udGV4dCYgY29udGV4
dCkKLXsKLSAgICBlbmNvZGVyIDw8IGNvbnRleHQuYm91bmRpbmdSZWN0OwotICAgIGVuY29kZXIg
PDwgY29udGV4dC53ZWJQYWdlSWRlbnRpZmllcjsKLSAgICBlbmNvZGVyIDw8IGNvbnRleHQuZG9j
dW1lbnRJZGVudGlmaWVyOwotICAgIGVuY29kZXIgPDwgY29udGV4dC5lbGVtZW50SWRlbnRpZmll
cjsKLX0KLQotT3B0aW9uYWw8V2ViS2l0OjpUZXh0SW5wdXRDb250ZXh0PiBBcmd1bWVudENvZGVy
PFdlYktpdDo6VGV4dElucHV0Q29udGV4dD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQotewot
ICAgIFdlYktpdDo6VGV4dElucHV0Q29udGV4dCBjb250ZXh0OwotICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoY29udGV4dC5ib3VuZGluZ1JlY3QpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29udGV4dC53ZWJQYWdlSWRlbnRpZmllcikpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgYXV0byBkb2N1bWVudElkZW50aWZpZXIg
PSBXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXI6OmRlY29kZShkZWNvZGVyKTsKLSAgICBpZiAo
IWRvY3VtZW50SWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICBj
b250ZXh0LmRvY3VtZW50SWRlbnRpZmllciA9ICpkb2N1bWVudElkZW50aWZpZXI7Ci0gICAgYXV0
byBlbGVtZW50SWRlbnRpZmllciA9IFdlYkNvcmU6OkVsZW1lbnRJZGVudGlmaWVyOjpkZWNvZGUo
ZGVjb2Rlcik7Ci0gICAgaWYgKCFlbGVtZW50SWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKLSAgICBjb250ZXh0LmVsZW1lbnRJZGVudGlmaWVyID0gKmVsZW1lbnRJZGVu
dGlmaWVyOwotCi0gICAgcmV0dXJuIGNvbnRleHQ7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1RleHRJbnB1dENvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1RleHRJbnB1dENvbnRleHQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTRkNDI3
N2I4NTM4ZmJhNDE1NmFiODNkNmFkYjg5NTc4MjhhMGQ3OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9UZXh0SW5wdXRD
b250ZXh0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgotI2luY2x1ZGUgPFdlYkNv
cmUvRG9jdW1lbnRJZGVudGlmaWVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9FbGVtZW50SWRlbnRp
Zmllci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9QYWdlSWRlbnRpZmllci5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotc3RydWN0IFRleHRJ
bnB1dENvbnRleHQgewotICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBib3VuZGluZ1JlY3Q7Ci0KLSAg
ICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSWRlbnRpZmllcjsKLSAgICBXZWJDb3Jl
OjpEb2N1bWVudElkZW50aWZpZXIgZG9jdW1lbnRJZGVudGlmaWVyOwotICAgIFdlYkNvcmU6OkVs
ZW1lbnRJZGVudGlmaWVyIGVsZW1lbnRJZGVudGlmaWVyOwotCi0gICAgflRleHRJbnB1dENvbnRl
eHQoKTsKLX07Ci0KLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgVGV4dElucHV0Q29udGV4
dCYgYSwgY29uc3QgVGV4dElucHV0Q29udGV4dCYgYikKLXsKLSAgICByZXR1cm4gYS5ib3VuZGlu
Z1JlY3QgPT0gYi5ib3VuZGluZ1JlY3QKLSAgICAgICAgJiYgYS53ZWJQYWdlSWRlbnRpZmllciA9
PSBiLndlYlBhZ2VJZGVudGlmaWVyCi0gICAgICAgICYmIGEuZG9jdW1lbnRJZGVudGlmaWVyID09
IGIuZG9jdW1lbnRJZGVudGlmaWVyCi0gICAgICAgICYmIGEuZWxlbWVudElkZW50aWZpZXIgPT0g
Yi5lbGVtZW50SWRlbnRpZmllcjsKLX0KLQotfQotCi1uYW1lc3BhY2UgSVBDIHsKLXRlbXBsYXRl
PD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViS2l0OjpUZXh0SW5wdXRDb250ZXh0PiB7Ci0gICAg
c3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJLaXQ6OlRleHRJbnB1dENvbnRl
eHQmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2ViS2l0OjpUZXh0SW5wdXRDb250ZXh0PiBkZWNv
ZGUoRGVjb2RlciYpOwotfTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lv
cy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLmgKaW5kZXggZmU5MmNkMTI0
ZmYyNGYxOTdlZTIzZWMxZmI1M2RjYTM4Y2U1Yjk3MC4uYTI4NzEzODliMzdkNDcxOTE1YmQ5MWY5
YmU2MDliZTEwN2Q3NGVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0lu
dGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLmgKQEAgLTI4LDYgKzI4LDcg
QEAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMu
aCIKKyNpbmNsdWRlICJFbGVtZW50Q29udGV4dC5oIgogI2luY2x1ZGUgIkludGVyYWN0aW9uSW5m
b3JtYXRpb25SZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9JbnRQb2ludC5oPgpAQCAtODksNiArOTAsOCBAQCBzdHJ1Y3QgSW50ZXJhY3Rp
b25JbmZvcm1hdGlvbkF0UG9zaXRpb24gewogICAgIFJldGFpblB0cjxOU0FycmF5PiBkYXRhRGV0
ZWN0b3JSZXN1bHRzOwogI2VuZGlmCiAKKyAgICBPcHRpb25hbDxFbGVtZW50Q29udGV4dD4gZWxl
bWVudENvbnRleHQ7CisKICAgICAvLyBDb3B5IGNvbXBhdGlibGUgb3B0aW9uYWwgYml0cyBmb3J3
YXJkIChmb3IgZXhhbXBsZSwgaWYgd2UgaGF2ZSBhIEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBv
c2l0aW9uCiAgICAgLy8gd2l0aCBzbmFwc2hvdHMgaW4gaXQsIGFuZCBwZXJmb3JtIGFub3RoZXIg
cmVxdWVzdCBmb3IgdGhlIHNhbWUgcG9pbnQgd2l0aG91dCByZXF1ZXN0aW5nIHRoZSBzbmFwc2hv
dHMsCiAgICAgLy8gd2UgY2FuIGZldGNoIHRoZSBjaGVhcCBpbmZvcm1hdGlvbiBhbmQgY29weSB0
aGUgc25hcHNob3RzIGludG8gdGhlIG5ldyByZXNwb25zZSkuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24ubW0gYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24u
bW0KaW5kZXggY2E0Y2RkYjhlNDg1NzU2MDgzMjNlMmEwMWE0YmQxMTYyMThlNzZjMy4uOWMwMTMw
OTA3N2YyZGQwMGUxMTZmM2EwZjY2ZjYzMTdhZDk4NGMzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlv
bi5tbQpAQCAtODUsNiArODUsNyBAQCB2b2lkIEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0
aW9uOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogI2lmIEVOQUJMRShEQVRB
TElTVF9FTEVNRU5UKQogICAgIGVuY29kZXIgPDwgcHJldmVudFRleHRJbnRlcmFjdGlvbjsKICNl
bmRpZgorICAgIGVuY29kZXIgPDwgZWxlbWVudENvbnRleHQ7CiB9CiAKIGJvb2wgSW50ZXJhY3Rp
b25JbmZvcm1hdGlvbkF0UG9zaXRpb246OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIElu
dGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJiByZXN1bHQpCkBAIC0xOTYsNiArMTk3LDkg
QEAgYm9vbCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjo6ZGVjb2RlKElQQzo6RGVj
b2RlciYgZGVjb2RlciwgSW50ZXJhY3Rpb24KICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlm
CiAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5lbGVtZW50Q29udGV4dCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRl
eCAzNzNkNjU1ZjEwYWY4YjM4MDM1Yjk2YmFjN2Q4ZjI5NTJiMGE2OGJhLi45MzZjMGNmNTVhZDAz
ZmJiYjNhZGM4NDM5MjAxM2E5MGUzNDhiNWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTEyMSw2ICsxMjEs
NyBAQCBTaGFyZWQvQ2FjaGVNb2RlbC5jcHAKIFNoYXJlZC9Db250ZXh0TWVudUNvbnRleHREYXRh
LmNwcAogU2hhcmVkL0VkaXRpbmdSYW5nZS5jcHAKIFNoYXJlZC9FZGl0b3JTdGF0ZS5jcHAKK1No
YXJlZC9FbGVtZW50Q29udGV4dC5jcHAKIFNoYXJlZC9Gb250SW5mby5jcHAKIFNoYXJlZC9GcmFt
ZUluZm9EYXRhLmNwcAogU2hhcmVkL0xheWVyVHJlZUNvbnRleHQuY3BwCkBAIC0xMzgsNyArMTM5
LDYgQEAgU2hhcmVkL1NoYXJlZFN0cmluZ0hhc2hTdG9yZS5jcHAKIFNoYXJlZC9TaGFyZWRTdHJp
bmdIYXNoVGFibGVSZWFkT25seS5jcHAKIFNoYXJlZC9TaGFyZWRTdHJpbmdIYXNoVGFibGUuY3Bw
CiBTaGFyZWQvU3RhdGlzdGljc0RhdGEuY3BwCi1TaGFyZWQvVGV4dElucHV0Q29udGV4dC5jcHAK
IFNoYXJlZC9Ub3VjaEJhck1lbnVEYXRhLmNwcAogU2hhcmVkL1RvdWNoQmFyTWVudUl0ZW1EYXRh
LmNwcAogU2hhcmVkL1VSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggNGZlYzc1MGJkMDI2MzUz
ZGYyNzdiZmY3MTBhN2E5NjI1YzlkMzBkNi4uYTVjZmI3MjBjODFiYjcyYzAwMmFkYmJmZGUzNjY0
NjUzYjc0OThkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0ICJDb21wbGV0aW9uSGFuZGxlckNh
bGxDaGVja2VyLmgiCiAjaW1wb3J0ICJEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oIgogI2ltcG9y
dCAiRHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZS5oIgorI2ltcG9ydCAiRWxlbWVudENvbnRleHQu
aCIKICNpbXBvcnQgIkZpbmRDbGllbnQuaCIKICNpbXBvcnQgIkZ1bGxzY3JlZW5DbGllbnQuaCIK
ICNpbXBvcnQgIkdsb2JhbEZpbmRJblBhZ2VTdGF0ZS5oIgpAQCAtNDksNyArNTAsNiBAQAogI2lt
cG9ydCAiUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCIKICNpbXBvcnQgIlJlbW90ZU9iamVjdFJlZ2lz
dHJ5TWVzc2FnZXMuaCIKICNpbXBvcnQgIlNhZmVCcm93c2luZ1dhcm5pbmcuaCIKLSNpbXBvcnQg
IlRleHRJbnB1dENvbnRleHQuaCIKICNpbXBvcnQgIlVJRGVsZWdhdGUuaCIKICNpbXBvcnQgIlVz
ZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmgiCiAjaW1wb3J0ICJWZXJzaW9uQ2hlY2tzLmgiCkBAIC01
MDU0LDEyICs1MDU0LDEyIEBAIC0gKHZvaWQpX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVj
dDooQ0dSZWN0KXJlY3RJbldlYlZpZXdDb29yZGluYXRlcyBjb21wbGV0CiAKICAgICBDR1JlY3Qg
cmVjdEluUm9vdFZpZXdDb29yZGluYXRlcyA9IFtzZWxmIF9jb252ZXJ0UmVjdFRvUm9vdFZpZXdD
b29yZGluYXRlczpyZWN0SW5XZWJWaWV3Q29vcmRpbmF0ZXNdOwogICAgIGF1dG8gd2Vha1NlbGYg
PSBXZWFrT2JqQ1B0cjxXS1dlYlZpZXc+KHNlbGYpOwotICAgIF9wYWdlLT50ZXh0SW5wdXRDb250
ZXh0c0luUmVjdChyZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzLCBbd2Vha1NlbGYsIGNhcHR1cmVk
Q29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoY29u
c3QgVmVjdG9yPFdlYktpdDo6VGV4dElucHV0Q29udGV4dD4mIGNvbnRleHRzKSB7CisgICAgX3Bh
Z2UtPnRleHRJbnB1dENvbnRleHRzSW5SZWN0KHJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMsIFt3
ZWFrU2VsZiwgY2FwdHVyZWRDb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0
aW9uSGFuZGxlcildIChjb25zdCBWZWN0b3I8V2ViS2l0OjpFbGVtZW50Q29udGV4dD4mIGNvbnRl
eHRzKSB7CiAgICAgICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gZWxlbWVudHMgPSBhZG9w
dE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6Y29udGV4dHMuc2l6
ZSgpXSk7CiAKICAgICAgICAgYXV0byBzdHJvbmdTZWxmID0gd2Vha1NlbGYuZ2V0KCk7CiAgICAg
ICAgIGZvciAoY29uc3QgYXV0byYgY29udGV4dCA6IGNvbnRleHRzKSB7Ci0gICAgICAgICAgICBX
ZWJLaXQ6OlRleHRJbnB1dENvbnRleHQgY29udGV4dFdpdGhXZWJWaWV3Qm91bmRpbmdSZWN0ID0g
Y29udGV4dDsKKyAgICAgICAgICAgIFdlYktpdDo6RWxlbWVudENvbnRleHQgY29udGV4dFdpdGhX
ZWJWaWV3Qm91bmRpbmdSZWN0ID0gY29udGV4dDsKICAgICAgICAgICAgIGNvbnRleHRXaXRoV2Vi
Vmlld0JvdW5kaW5nUmVjdC5ib3VuZGluZ1JlY3QgPSBbc3Ryb25nU2VsZiBfY29udmVydFJlY3RG
cm9tUm9vdFZpZXdDb29yZGluYXRlczpjb250ZXh0LmJvdW5kaW5nUmVjdF07CiAgICAgICAgICAg
ICBbZWxlbWVudHMgYWRkT2JqZWN0OmFkb3B0TlMoW1tfV0tUZXh0SW5wdXRDb250ZXh0IGFsbG9j
XSBfaW5pdFdpdGhUZXh0SW5wdXRDb250ZXh0OmNvbnRleHRXaXRoV2ViVmlld0JvdW5kaW5nUmVj
dF0pLmdldCgpXTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1RleHRJbnB1dENvbnRleHQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLVGV4dElucHV0Q29udGV4dC5tbQppbmRleCBjN2VjZTJkMjI1MGIx
ODEwNjE3MzFlMjI4ZTQ4ODY2ZmI1MWJjZTA3Li5mNjFkNzI3MmUxYWZmN2ZhYzY4MjQ3NTY4NTk2
OGQ1ZjI1MGUzYmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLVGV4dElucHV0Q29udGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLVGV4dElucHV0Q29udGV4dC5tbQpAQCAtMjYsMTEgKzI2LDExIEBACiAjaW1w
b3J0ICJjb25maWcuaCIKICNpbXBvcnQgIl9XS1RleHRJbnB1dENvbnRleHQuaCIKIAotI2ltcG9y
dCAiVGV4dElucHV0Q29udGV4dC5oIgorI2ltcG9ydCAiRWxlbWVudENvbnRleHQuaCIKICNpbXBv
cnQgIl9XS1RleHRJbnB1dENvbnRleHRJbnRlcm5hbC5oIgogCiBAaW1wbGVtZW50YXRpb24gX1dL
VGV4dElucHV0Q29udGV4dCB7Ci0gICAgV2ViS2l0OjpUZXh0SW5wdXRDb250ZXh0IF90ZXh0SW5w
dXRDb250ZXh0OworICAgIFdlYktpdDo6RWxlbWVudENvbnRleHQgX3RleHRJbnB1dENvbnRleHQ7
CiB9CiAKIC0gKGluc3RhbmNldHlwZSlpbml0CkBAIC0zOCw3ICszOCw3IEBAIC0gKGluc3RhbmNl
dHlwZSlpbml0CiAgICAgcmV0dXJuIG5pbDsKIH0KIAotLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0
aFRleHRJbnB1dENvbnRleHQ6KGNvbnN0IFdlYktpdDo6VGV4dElucHV0Q29udGV4dCYpY29udGV4
dAorLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aFRleHRJbnB1dENvbnRleHQ6KGNvbnN0IFdlYktp
dDo6RWxlbWVudENvbnRleHQmKWNvbnRleHQKIHsKICAgICBzZWxmID0gW3N1cGVyIGluaXRdOwog
ICAgIGlmICghc2VsZikKQEAgLTU0LDcgKzU0LDcgQEAgLSAoQ0dSZWN0KWJvdW5kaW5nUmVjdAog
ICAgIHJldHVybiBfdGV4dElucHV0Q29udGV4dC5ib3VuZGluZ1JlY3Q7CiB9CiAKLS0gKGNvbnN0
IFdlYktpdDo6VGV4dElucHV0Q29udGV4dCYpX3RleHRJbnB1dENvbnRleHQKKy0gKGNvbnN0IFdl
YktpdDo6RWxlbWVudENvbnRleHQmKV90ZXh0SW5wdXRDb250ZXh0CiB7CiAgICAgcmV0dXJuIF90
ZXh0SW5wdXRDb250ZXh0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1RleHRJbnB1dENvbnRleHRJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1RleHRJbnB1dENvbnRleHRJbnRlcm5hbC5oCmluZGV4IGJm
MzJhNDEwMDVmZjJmY2QyMTM1YWYyN2U1MDI4YjNiY2E4MmM2OTcuLjRhYzcwMDJjYWMxODEwZWM0
ZGRmOTVjYTkyMzMxZTgwMjQ2YmRkNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tUZXh0SW5wdXRDb250ZXh0SW50ZXJuYWwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4dElucHV0Q29udGV4dEludGVybmFsLmgK
QEAgLTI2LDEzICsyNiwxMyBAQAogI2ltcG9ydCAiX1dLVGV4dElucHV0Q29udGV4dC5oIgogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKLXN0cnVjdCBUZXh0SW5wdXRDb250ZXh0Oworc3RydWN0IEVsZW1l
bnRDb250ZXh0OwogfQogCiBAaW50ZXJmYWNlIF9XS1RleHRJbnB1dENvbnRleHQgKCkKIAotLSAo
aW5zdGFuY2V0eXBlKV9pbml0V2l0aFRleHRJbnB1dENvbnRleHQ6KGNvbnN0IFdlYktpdDo6VGV4
dElucHV0Q29udGV4dCYpY29udGV4dDsKKy0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhUZXh0SW5w
dXRDb250ZXh0Oihjb25zdCBXZWJLaXQ6OkVsZW1lbnRDb250ZXh0Jiljb250ZXh0OwogCi0tIChj
b25zdCBXZWJLaXQ6OlRleHRJbnB1dENvbnRleHQmKV90ZXh0SW5wdXRDb250ZXh0OworLSAoY29u
c3QgV2ViS2l0OjpFbGVtZW50Q29udGV4dCYpX3RleHRJbnB1dENvbnRleHQ7CiAKIEBlbmQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDA0MTgyYjk4Y2EyMDdm
YzIyYTc0ZGUxOTEwNjdkNTg1NTZiYjg0NmEuLjg3ODIwZDMzYWNkMjNlODFkOGM3MzNlMTAxZmNl
ODliZDUyMWE5MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApA
QCAtNTgsNiArNTgsNyBAQAogI2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKICNpbmNsdWRlICJE
cmF3aW5nQXJlYU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eS5oIgorI2lu
Y2x1ZGUgIkVsZW1lbnRDb250ZXh0LmgiCiAjaW5jbHVkZSAiRXZlbnREaXNwYXRjaGVyTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJGb3JtRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkZyYW1lSW5m
b0RhdGEuaCIKQEAgLTg1LDcgKzg2LDYgQEAKICNpbmNsdWRlICJTeW50aGV0aWNFZGl0aW5nQ29t
bWFuZFR5cGUuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlci5oIgogI2luY2x1ZGUgIlRleHRDaGVj
a2VyU3RhdGUuaCIKLSNpbmNsdWRlICJUZXh0SW5wdXRDb250ZXh0LmgiCiAjaW5jbHVkZSAiVVJM
U2NoZW1lVGFza1BhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJVbmRvT3JSZWRvLmgiCiAjaW5jbHVk
ZSAiVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5oIgpAQCAtOTMzOSw3ICs5MzM5LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OndlYlZpZXdEaWRNb3ZlVG9XaW5kb3coKQogICAgIH0KIH0K
IAotdm9pZCBXZWJQYWdlUHJveHk6OnRleHRJbnB1dENvbnRleHRzSW5SZWN0KFdlYkNvcmU6OkZs
b2F0UmVjdCByZWN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJLaXQ6
OlRleHRJbnB1dENvbnRleHQ+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2VQ
cm94eTo6dGV4dElucHV0Q29udGV4dHNJblJlY3QoV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3QsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYktpdDo6RWxlbWVudENvbnRleHQ+
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vzcygp
KSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CkBAIC05MzQ5LDcgKzkzNDksNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6dGV4dElucHV0Q29udGV4dHNJblJlY3QoV2ViQ29yZTo6Rmxv
YXRSZWN0IHJlY3QsIENvbXBsZXRpb25IYQogICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5z
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlRleHRJbnB1dENvbnRleHRzSW5S
ZWN0KHJlY3QpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV93ZWJQYWdlSUQpOwogfQog
Ci12b2lkIFdlYlBhZ2VQcm94eTo6Zm9jdXNUZXh0SW5wdXRDb250ZXh0KGNvbnN0IFRleHRJbnB1
dENvbnRleHQmIGNvbnRleHQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2VQcm94eTo6Zm9jdXNUZXh0SW5wdXRDb250ZXh0KGNv
bnN0IEVsZW1lbnRDb250ZXh0JiBjb250ZXh0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkg
ewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCmluZGV4IDAyMDBkMWUzMWJjZjc2NGUwMDJjZTQzMTE5NDBjNWMyNDhi
MmQyZTAuLjI3M2JjYmU0MmJlZDc5ZWFjOTVlYzJkMDAzOTMxOWYwOGM4MzY2ZmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yODgsNiArMjg4LDcgQEAgc3RydWN0
IERvY3VtZW50RWRpdGluZ0NvbnRleHQ7CiBzdHJ1Y3QgRG9jdW1lbnRFZGl0aW5nQ29udGV4dFJl
cXVlc3Q7CiBzdHJ1Y3QgRWRpdGluZ1JhbmdlOwogc3RydWN0IEVkaXRvclN0YXRlOworc3RydWN0
IEVsZW1lbnRDb250ZXh0Owogc3RydWN0IEZvbnRJbmZvOwogc3RydWN0IEZyYW1lSW5mb0RhdGE7
CiBzdHJ1Y3QgSW5zZXJ0VGV4dE9wdGlvbnM7CkBAIC0yOTUsNyArMjk2LDYgQEAgc3RydWN0IElu
dGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0Owogc3RydWN0IExvYWRQYXJhbWV0ZXJzOwogc3Ry
dWN0IFBsYXRmb3JtUG9wdXBNZW51RGF0YTsKIHN0cnVjdCBQcmludEluZm87Ci1zdHJ1Y3QgVGV4
dElucHV0Q29udGV4dDsKIHN0cnVjdCBXZWJBdXRvY29ycmVjdGlvbkRhdGE7CiBzdHJ1Y3QgV2Vi
UG9wdXBJdGVtOwogc3RydWN0IFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzOwpAQCAtNjQ1LDggKzY0
NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlcXVlc3RGb250QXR0cmlidXRlc0F0U2VsZWN0aW9u
U3RhcnQoRnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpGb250QXR0cmlidXRlcyYsIENhbGxi
YWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIGZvbnRBdHRyaWJ1dGVzQ2FsbGJhY2soY29u
c3QgV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZXMmLCBDYWxsYmFja0lEKTsKIAotICAgIHZvaWQgdGV4
dElucHV0Q29udGV4dHNJblJlY3QoV2ViQ29yZTo6RmxvYXRSZWN0LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFZlY3RvcjxUZXh0SW5wdXRDb250ZXh0PiYpPiYmKTsKLSAgICB2b2lkIGZv
Y3VzVGV4dElucHV0Q29udGV4dChjb25zdCBUZXh0SW5wdXRDb250ZXh0JiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCB0ZXh0SW5wdXRDb250ZXh0c0luUmVjdChX
ZWJDb3JlOjpGbG9hdFJlY3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPEVs
ZW1lbnRDb250ZXh0PiYpPiYmKTsKKyAgICB2b2lkIGZvY3VzVGV4dElucHV0Q29udGV4dChjb25z
dCBFbGVtZW50Q29udGV4dCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBkb3VibGUgZGlzcGxheWVkQ29udGVudFNjYWxl
KCkgY29uc3QgeyByZXR1cm4gbV9sYXN0VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlLnNjYWxlKCk7
IH0KQEAgLTcwMyw3ICs3MDMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXBsYWNlU2VsZWN0ZWRU
ZXh0KGNvbnN0IFN0cmluZyYgb2xkVGV4dCwgY29uc3QgU3RyaW5nJiBuZXdUZXh0KTsKICAgICB2
b2lkIGRpZFJlY2VpdmVQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3Jt
YXRpb25BdFBvc2l0aW9uJik7CiAgICAgdm9pZCByZXF1ZXN0UG9zaXRpb25JbmZvcm1hdGlvbihj
b25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCYpOwotICAgIHZvaWQgc3RhcnRJbnRl
cmFjdGlvbldpdGhFbGVtZW50QXRQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwor
ICAgIHZvaWQgc3RhcnRJbnRlcmFjdGlvbldpdGhQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IElu
dGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJik7CiAgICAgdm9pZCBzdG9wSW50ZXJhY3Rp
b24oKTsKICAgICB2b2lkIHBlcmZvcm1BY3Rpb25PbkVsZW1lbnQodWludDMyX3QgYWN0aW9uKTsK
ICAgICB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYg
aW1hZ2VIYW5kbGUsIHVpbnQ2NF90IGltYWdlU2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBmYmUy
ZTE3MmFiMWE1YjlmY2U0M2I2ZjQwYjBlM2VmMzlhYjgwZGEyLi5lOGIwMmM1ZjE2ZDM0OWU5Mjg5
Yzg5MDA5NzZhNDE5Nzc0OGI3MDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTY0OTYsNyArNjQ5Niw3
IEBAIC0gKFJldGFpblB0cjxOU0FycmF5PilhY3Rpb25TaGVldEFzc2lzdGFudDooV0tBY3Rpb25T
aGVldEFzc2lzdGFudCAqKWFzc2lzdGFudCBkCiAKIC0gKHZvaWQpYWN0aW9uU2hlZXRBc3Npc3Rh
bnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQgd2lsbFN0YXJ0SW50ZXJhY3Rp
b25XaXRoRWxlbWVudDooX1dLQWN0aXZhdGVkRWxlbWVudEluZm8gKillbGVtZW50CiB7Ci0gICAg
X3BhZ2UtPnN0YXJ0SW50ZXJhY3Rpb25XaXRoRWxlbWVudEF0UG9zaXRpb24oX3Bvc2l0aW9uSW5m
b3JtYXRpb24ucmVxdWVzdC5wb2ludCk7CisgICAgX3BhZ2UtPnN0YXJ0SW50ZXJhY3Rpb25XaXRo
UG9zaXRpb25JbmZvcm1hdGlvbihfcG9zaXRpb25JbmZvcm1hdGlvbik7CiB9CiAKIC0gKHZvaWQp
YWN0aW9uU2hlZXRBc3Npc3RhbnREaWRTdG9wSW50ZXJhY3Rpb246KFdLQWN0aW9uU2hlZXRBc3Np
c3RhbnQgKilhc3Npc3RhbnQKQEAgLTgwNzMsNyArODA3Myw3IEBAIC0gKHZvaWQpYXNzaWduTGVn
YWN5RGF0YUZvckNvbnRleHRNZW51SW50ZXJhY3Rpb24KIAogICAgIGNvbnN0IGF1dG8mIHVybCA9
IF9wb3NpdGlvbkluZm9ybWF0aW9uLnVybDsKIAotICAgIF9wYWdlLT5zdGFydEludGVyYWN0aW9u
V2l0aEVsZW1lbnRBdFBvc2l0aW9uKF9wb3NpdGlvbkluZm9ybWF0aW9uLnJlcXVlc3QucG9pbnQp
OworICAgIF9wYWdlLT5zdGFydEludGVyYWN0aW9uV2l0aFBvc2l0aW9uSW5mb3JtYXRpb24oX3Bv
c2l0aW9uSW5mb3JtYXRpb24pOwogCiAgICAgVUlWaWV3Q29udHJvbGxlciAqcHJldmlld1ZpZXdD
b250cm9sbGVyID0gbmlsOwogCkBAIC04MjQ2LDcgKzgyNDYsNyBAQCAtICh2b2lkKWNvbnRpbnVl
Q29udGV4dE1lbnVJbnRlcmFjdGlvbjoodm9pZCheKShVSUNvbnRleHRNZW51Q29uZmlndXJhdGlv
biAqKSljbwogICAgICAgICAgICAgcmV0dXJuIHN0cm9uZ1NlbGYtPl9jb250ZXh0TWVudUxlZ2Fj
eVByZXZpZXdDb250cm9sbGVyLmdldCgpOwogICAgICAgICB9OwogCi0gICAgICAgIF9wYWdlLT5z
dGFydEludGVyYWN0aW9uV2l0aEVsZW1lbnRBdFBvc2l0aW9uKF9wb3NpdGlvbkluZm9ybWF0aW9u
LnJlcXVlc3QucG9pbnQpOworICAgICAgICBfcGFnZS0+c3RhcnRJbnRlcmFjdGlvbldpdGhQb3Np
dGlvbkluZm9ybWF0aW9uKF9wb3NpdGlvbkluZm9ybWF0aW9uKTsKIAogICAgICAgICBjb250aW51
ZVdpdGhDb250ZXh0TWVudUNvbmZpZ3VyYXRpb24oW1VJQ29udGV4dE1lbnVDb25maWd1cmF0aW9u
IGNvbmZpZ3VyYXRpb25XaXRoSWRlbnRpZmllcjpuaWwgcHJldmlld1Byb3ZpZGVyOmNvbnRlbnRQ
cmV2aWV3UHJvdmlkZXIgYWN0aW9uUHJvdmlkZXI6YWN0aW9uTWVudVByb3ZpZGVyXSk7CiAgICAg
ICAgIHJldHVybjsKQEAgLTgyNjgsNyArODI2OCw3IEBAIC0gKHZvaWQpY29udGludWVDb250ZXh0
TWVudUludGVyYWN0aW9uOih2b2lkKF4pKFVJQ29udGV4dE1lbnVDb25maWd1cmF0aW9uICopKWNv
CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoY29uZmlndXJhdGlvbkZyb21XS1VJRGVsZWdhdGUp
IHsKLSAgICAgICAgICAgIHN0cm9uZ1NlbGYtPl9wYWdlLT5zdGFydEludGVyYWN0aW9uV2l0aEVs
ZW1lbnRBdFBvc2l0aW9uKHN0cm9uZ1NlbGYtPl9wb3NpdGlvbkluZm9ybWF0aW9uLnJlcXVlc3Qu
cG9pbnQpOworICAgICAgICAgICAgc3Ryb25nU2VsZi0+X3BhZ2UtPnN0YXJ0SW50ZXJhY3Rpb25X
aXRoUG9zaXRpb25JbmZvcm1hdGlvbihzdHJvbmdTZWxmLT5fcG9zaXRpb25JbmZvcm1hdGlvbik7
CiAgICAgICAgICAgICBzdHJvbmdTZWxmLT5fY29udGV4dE1lbnVBY3Rpb25Qcm92aWRlckRlbGVn
YXRlTmVlZHNPdmVycmlkZSA9IFlFUzsKICAgICAgICAgICAgIGNvbnRpbnVlV2l0aENvbnRleHRN
ZW51Q29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uRnJvbVdLVUlEZWxlZ2F0ZSk7CiAgICAgICAg
ICAgICByZXR1cm47CkBAIC04MzYzLDcgKzgzNjMsNyBAQCAtIChCT09MKWNvbnRpbnVlQ29udGV4
dE1lbnVJbnRlcmFjdGlvbldpdGhEYXRhRGV0ZWN0b3JzOih2b2lkKF4pKFVJQ29udGV4dE1lbnVD
bwogICAgICAgICBOU0RpY3Rpb25hcnkgKmNvbnRleHQgPSBbc2VsZiBkYXRhRGV0ZWN0aW9uQ29u
dGV4dEZvclBvc2l0aW9uSW5mb3JtYXRpb246X3Bvc2l0aW9uSW5mb3JtYXRpb25dOwogICAgICAg
ICBVSUNvbnRleHRNZW51Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbkZyb21ERCA9IFtkZENv
bnRleHRNZW51QWN0aW9uQ2xhc3MgY29udGV4dE1lbnVDb25maWd1cmF0aW9uRm9yVVJMOmxpbmtV
UkwgaWRlbnRpZmllcjpfcG9zaXRpb25JbmZvcm1hdGlvbi5kYXRhRGV0ZWN0b3JJZGVudGlmaWVy
IHNlbGVjdGVkVGV4dDpbc2VsZiBzZWxlY3RlZFRleHRdIHJlc3VsdHM6X3Bvc2l0aW9uSW5mb3Jt
YXRpb24uZGF0YURldGVjdG9yUmVzdWx0cy5nZXQoKSBpblZpZXc6c2VsZiBjb250ZXh0OmNvbnRl
eHQgbWVudUlkZW50aWZpZXI6bmlsXTsKICAgICAgICAgX2NvbnRleHRNZW51QWN0aW9uUHJvdmlk
ZXJEZWxlZ2F0ZU5lZWRzT3ZlcnJpZGUgPSBZRVM7Ci0gICAgICAgIF9wYWdlLT5zdGFydEludGVy
YWN0aW9uV2l0aEVsZW1lbnRBdFBvc2l0aW9uKF9wb3NpdGlvbkluZm9ybWF0aW9uLnJlcXVlc3Qu
cG9pbnQpOworICAgICAgICBfcGFnZS0+c3RhcnRJbnRlcmFjdGlvbldpdGhQb3NpdGlvbkluZm9y
bWF0aW9uKF9wb3NpdGlvbkluZm9ybWF0aW9uKTsKICAgICAgICAgY29udGludWVXaXRoQ29udGV4
dE1lbnVDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb25Gcm9tREQpOwogICAgICAgICByZXR1cm4g
WUVTOwogICAgIH0KQEAgLTg3OTYsNyArODc5Niw3IEBAIC0gKFVJVmlld0NvbnRyb2xsZXIgKilf
cHJlc2VudGVkVmlld0NvbnRyb2xsZXJGb3JQcmV2aWV3SXRlbUNvbnRyb2xsZXI6KFVJUHJldmll
CiAKICAgICBpZiAoW19wcmV2aWV3SXRlbUNvbnRyb2xsZXIgdHlwZV0gPT0gVUlQcmV2aWV3SXRl
bVR5cGVMaW5rKSB7CiAgICAgICAgIF9sb25nUHJlc3NDYW5DbGljayA9IE5POwotICAgICAgICBf
cGFnZS0+c3RhcnRJbnRlcmFjdGlvbldpdGhFbGVtZW50QXRQb3NpdGlvbihfcG9zaXRpb25JbmZv
cm1hdGlvbi5yZXF1ZXN0LnBvaW50KTsKKyAgICAgICAgX3BhZ2UtPnN0YXJ0SW50ZXJhY3Rpb25X
aXRoUG9zaXRpb25JbmZvcm1hdGlvbihfcG9zaXRpb25JbmZvcm1hdGlvbik7CiAKICAgICAgICAg
Ly8gVHJlYXQgYW5pbWF0ZWQgaW1hZ2VzIGxpa2UgYSBsaW5rIHByZXZpZXcKICAgICAgICAgaWYg
KGlzVmFsaWRVUkxGb3JJbWFnZVByZXZpZXcgJiYgX3Bvc2l0aW9uSW5mb3JtYXRpb24uaXNBbmlt
YXRlZEltYWdlKSB7CkBAIC04ODU2LDcgKzg4NTYsNyBAQCAtIChVSVZpZXdDb250cm9sbGVyICop
X3ByZXNlbnRlZFZpZXdDb250cm9sbGVyRm9yUHJldmlld0l0ZW1Db250cm9sbGVyOihVSVByZXZp
ZQogICAgICAgICB9CiAKICAgICAgICAgUmV0YWluUHRyPF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZv
PiBlbGVtZW50SW5mbyA9IGFkb3B0TlMoW1tfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbyBhbGxvY10g
X2luaXRXaXRoVHlwZTpfV0tBY3RpdmF0ZWRFbGVtZW50VHlwZUltYWdlIFVSTDphbHRlcm5hdGVV
UkwuZ2V0KCkgaW1hZ2VVUkw6bmlsIGxvY2F0aW9uOl9wb3NpdGlvbkluZm9ybWF0aW9uLnJlcXVl
c3QucG9pbnQgdGl0bGU6X3Bvc2l0aW9uSW5mb3JtYXRpb24udGl0bGUgSUQ6X3Bvc2l0aW9uSW5m
b3JtYXRpb24uaWRBdHRyaWJ1dGUgcmVjdDpfcG9zaXRpb25JbmZvcm1hdGlvbi5ib3VuZHMgaW1h
Z2U6X3Bvc2l0aW9uSW5mb3JtYXRpb24uaW1hZ2UuZ2V0KCkgdXNlckluZm86aW1hZ2VJbmZvLmdl
dCgpXSk7Ci0gICAgICAgIF9wYWdlLT5zdGFydEludGVyYWN0aW9uV2l0aEVsZW1lbnRBdFBvc2l0
aW9uKF9wb3NpdGlvbkluZm9ybWF0aW9uLnJlcXVlc3QucG9pbnQpOworICAgICAgICBfcGFnZS0+
c3RhcnRJbnRlcmFjdGlvbldpdGhQb3NpdGlvbkluZm9ybWF0aW9uKF9wb3NpdGlvbkluZm9ybWF0
aW9uKTsKIAogICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAg
ICAgICBpZiAoW3VpRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmll
dzp3aWxsUHJldmlld0ltYWdlV2l0aFVSTDopXSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IGY4OTE0ODZmYTBhNmVkMDVmZGYyYmRjOTM5
Y2U2MDVkNTA5ZDc3Y2EuLjU5Mjk5NDA1YTAzYTIwNjQ2NTExYThlM2I5MjUyYzc1NDNhZDg3ZmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpA
QCAtNjI0LDkgKzYyNCw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0UG9zaXRpb25JbmZv
cm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzCiAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0UG9zaXRpb25JbmZvcm1hdGlvbihyZXF1
ZXN0KSwgbV93ZWJQYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c3RhcnRJbnRlcmFj
dGlvbldpdGhFbGVtZW50QXRQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQp
Cit2b2lkIFdlYlBhZ2VQcm94eTo6c3RhcnRJbnRlcmFjdGlvbldpdGhQb3NpdGlvbkluZm9ybWF0
aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJiBwb3NpdGlvbkluZm9y
bWF0aW9uKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3RhcnRJ
bnRlcmFjdGlvbldpdGhFbGVtZW50QXRQb3NpdGlvbihwb2ludCksIG1fd2ViUGFnZUlEKTsKKyAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN0YXJ0SW50ZXJhY3Rpb25XaXRo
RWxlbWVudENvbnRleHRPclBvc2l0aW9uKHBvc2l0aW9uSW5mb3JtYXRpb24uZWxlbWVudENvbnRl
eHQsIHBvc2l0aW9uSW5mb3JtYXRpb24ucmVxdWVzdC5wb2ludCksIG1fd2ViUGFnZUlEKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OnN0b3BJbnRlcmFjdGlvbigpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkYWFhMTdlYjZiY2IyNjY0
ODY0NDg0NTVjYTYxZWJiNGUyZGM4ZDdlLi4wNWExZWFhZjk4ZWYyYzA5YmY2OWE5NTUxODAzZTYw
Y2ZkMzY2MDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTcyMiw3ICs3MjIsNyBAQAogCQkyRERGNzMxNTE4RTk1MDYwMDA0RjVBNjYg
LyogUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRERGNzMxMzE4RTk1MDYwMDA0RjVBNjYgLyog
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uLmggKi87IH07CiAJCTJERTY5NDNEMThC
RDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJE
RTY5NDNCMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVz
c2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJMkRFNjk0M0UxOEJEMkE2ODAwNUMxNUU1IC8qIFNt
YXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRFNjk0M0MxOEJEMkE2ODAwNUMxNUU1IC8qIFNt
YXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5oICovOyB9OwotCQkyREU5QjEzNTIy
MzFCNUIyMDA1Mjg3QjcgLyogVGV4dElucHV0Q29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRFOUIxMzMyMjMxQjVCMjAwNTI4N0I3IC8qIFRl
eHRJbnB1dENvbnRleHQuaCAqLzsgfTsKKwkJMkRFOUIxMzUyMjMxQjVCMjAwNTI4N0I3IC8qIEVs
ZW1lbnRDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyREU5QjEzMzIyMzFCNUIyMDA1Mjg3QjcgLyogRWxlbWVudENvbnRleHQuaCAqLzsgfTsK
IAkJMkRFOUIxM0EyMjMxRjYxQzAwNTI4N0I3IC8qIF9XS1RleHRJbnB1dENvbnRleHQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERTlCMTM4MjIzMUY2
MUMwMDUyODdCNyAvKiBfV0tUZXh0SW5wdXRDb250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkRFOUIxM0MyMjMxRjc3QzAwNTI4N0I3IC8q
IF9XS1RleHRJbnB1dENvbnRleHRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkRFOUIxM0IyMjMxRjc3QzAwNTI4N0I3IC8qIF9XS1RleHRJ
bnB1dENvbnRleHRJbnRlcm5hbC5oICovOyB9OwogCQkyREVBQzVDRjFBQzM2OEJCMDBBMTk1RDgg
LyogX1dLRmluZE9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJERUFDNUNFMUFDMzY4QkIwMEExOTVEOCAvKiBfV0tGaW5kT3B0aW9ucy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yODgwLDgg
KzI4ODAsOCBAQAogCQkyRERGNzMxNDE4RTk1MDYwMDA0RjVBNjYgLyogUmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmVDb2xsZWN0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyREU2OTQzQjE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZp
Y2F0aW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZVJlY2Vp
dmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvU21hcnRNYWduaWZpY2F0aW9u
Q29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNU
U19ESVI7IH07CiAJCTJERTY5NDNDMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRp
b25Db250cm9sbGVyTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
U21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291
cmNlcy9XZWJLaXQyL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5oOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwotCQkyREU5QjEzMzIyMzFCNUIyMDA1Mjg3
QjcgLyogVGV4dElucHV0Q29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBUZXh0SW5wdXRDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTJERTlC
MTM0MjIzMUI1QjIwMDUyODdCNyAvKiBUZXh0SW5wdXRDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRJbnB1dENvbnRleHQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkyREU5QjEzMzIyMzFCNUIyMDA1Mjg3QjcgLyogRWxlbWVudENv
bnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWxlbWVudENvbnRleHQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkRFOUIxMzQyMjMxQjVCMjAwNTI4N0I3
IC8qIEVsZW1lbnRDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEVsZW1lbnRDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRF
OUIxMzcyMjMxRjYxQzAwNTI4N0I3IC8qIF9XS1RleHRJbnB1dENvbnRleHQubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tUZXh0SW5wdXRDb250ZXh0Lm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREU5QjEzODIyMzFGNjFDMDA1Mjg3QjcgLyog
X1dLVGV4dElucHV0Q29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBf
V0tUZXh0SW5wdXRDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJERTlC
MTNCMjIzMUY3N0MwMDUyODdCNyAvKiBfV0tUZXh0SW5wdXRDb250ZXh0SW50ZXJuYWwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLVGV4dElucHV0Q29udGV4dEludGVybmFs
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01Mjc3LDYgKzUyNzcsOCBAQAogCQkJ
CUUxMDVGRTUzMThEN0I5REUwMDhGNTdBOCAvKiBFZGl0aW5nUmFuZ2UuaCAqLywKIAkJCQk4Q0ZF
Q0U5MzE0OTBGMTQwMDAyQUFBMzIgLyogRWRpdG9yU3RhdGUuY3BwICovLAogCQkJCTFBQTQxQUI0
MTJDMDJFQzQwMDJCRTY3QiAvKiBFZGl0b3JTdGF0ZS5oICovLAorCQkJCTJERTlCMTM0MjIzMUI1
QjIwMDUyODdCNyAvKiBFbGVtZW50Q29udGV4dC5jcHAgKi8sCisJCQkJMkRFOUIxMzMyMjMxQjVC
MjAwNTI4N0I3IC8qIEVsZW1lbnRDb250ZXh0LmggKi8sCiAJCQkJQzU5QzRBNTYxOEI4MTE3NDAw
N0JEQ0I2IC8qIEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uY3BwICovLAogCQkJCUM1OUM0QTU3
MThCODExNzQwMDdCRENCNiAvKiBGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmggKi8sCiAJCQkJ
QkNFODFEOEExMzE5RjdFRjAwMjQxOTEwIC8qIEZvbnRJbmZvLmNwcCAqLywKQEAgLTUzMjksOCAr
NTMzMSw2IEBACiAJCQkJNTI3MkIyODgxNDA2OTg1RDAwOTZBNUQwIC8qIFN0YXRpc3RpY3NEYXRh
LmNwcCAqLywKIAkJCQk1MjcyQjI4OTE0MDY5ODVEMDA5NkE1RDAgLyogU3RhdGlzdGljc0RhdGEu
aCAqLywKIAkJCQkxQTVFNERBMzEyRDNCRDNEMDA5OUEyQkIgLyogVGV4dENoZWNrZXJTdGF0ZS5o
ICovLAotCQkJCTJERTlCMTM0MjIzMUI1QjIwMDUyODdCNyAvKiBUZXh0SW5wdXRDb250ZXh0LmNw
cCAqLywKLQkJCQkyREU5QjEzMzIyMzFCNUIyMDA1Mjg3QjcgLyogVGV4dElucHV0Q29udGV4dC5o
ICovLAogCQkJCTJGRDQzQjkyMUZBMDA2QTMwMDgzRjUxQyAvKiBUb3VjaEJhck1lbnVEYXRhLmNw
cCAqLywKIAkJCQkyRkQ0M0I5MTFGQTAwNkExMDA4M0Y1MUMgLyogVG91Y2hCYXJNZW51RGF0YS5o
ICovLAogCQkJCTJGODA5REQ1MUZCRDFCQzkwMDVGRTYzQSAvKiBUb3VjaEJhck1lbnVJdGVtRGF0
YS5jcHAgKi8sCkBAIC05NDg5LDYgKzk0ODksNyBAQAogCQkJCTJENTg3NUJGMjE5QjUzMTUwMDcw
QjlBQSAvKiBFZGl0YWJsZUltYWdlQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTEw
NUZFNTQxOEQ3QjlERTAwOEY1N0E4IC8qIEVkaXRpbmdSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUFBNDFBQjUxMkMwMkVDNDAwMkJFNjdCIC8qIEVkaXRvclN0YXRlLmggaW4gSGVhZGVycyAq
LywKKwkJCQkyREU5QjEzNTIyMzFCNUIyMDA1Mjg3QjcgLyogRWxlbWVudENvbnRleHQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDMDMyREE4MTBGNDM3RDEwMDU4QzE1QSAvKiBFbmNvZGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MUIxNUE4NTEzODQzQTM5MDAzMjFBRDggLyogRW52aXJvbm1lbnRV
dGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQTU3NUZCMTQ5NkI1MjYwMEE0RUUwNiAv
KiBFdmVudERpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovLApAQCAtOTgwNyw3ICs5ODA4LDYgQEAK
IAkJCQkxQUE0MTdDQjEyQzAwQ0NBMDAyQkU2N0IgLyogVGV4dENoZWNrZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUzQ0ZCQkM4MjIyNEQxQjUwMDI2NjU0NiAvKiBUZXh0Q2hlY2tlckNvbXBsZXRp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNUU0REE0MTJEM0JEM0QwMDk5QTJCQiAvKiBUZXh0
Q2hlY2tlclN0YXRlLmggaW4gSGVhZGVycyAqLywKLQkJCQkyREU5QjEzNTIyMzFCNUIyMDA1Mjg3
QjcgLyogVGV4dElucHV0Q29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0UxQTBCRDcxQTQ4
RTZDNjAwNTRFRjc0IC8qIFRleHRJbnB1dFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBRjI2
MzkxNDY4N0MzOTAwNEExRThBIC8qIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQUYwNUQ4NzE0Njg4MzQ4MDA4QjFFODEgLyogVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDIxMGE0NmUwNWM1MDNiNmIyNmI2
ZjNmZTQ4MWRjMDdjZGQ0MGViMGIuLmMzNWMyMDIwNTQyOGY5NmJjOTU3NDBhYTNjMTg1ZmE3MTMx
MjkzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CkBAIC02NzQ5LDkgKzY3NDksOSBAQCBzdGF0aWMgYm9vbCBpc0VkaXRhYmxlVGV4dElucHV0RWxl
bWVudChFbGVtZW50JiBlbGVtZW50KQogICAgIHJldHVybiBlbGVtZW50LmlzUm9vdEVkaXRhYmxl
RWxlbWVudCgpOwogfQogCi12b2lkIFdlYlBhZ2U6OnRleHRJbnB1dENvbnRleHRzSW5SZWN0KFdl
YkNvcmU6OkZsb2F0UmVjdCBzZWFyY2hSZWN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFZlY3RvcjxUZXh0SW5wdXRDb250ZXh0PiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBX
ZWJQYWdlOjp0ZXh0SW5wdXRDb250ZXh0c0luUmVjdChXZWJDb3JlOjpGbG9hdFJlY3Qgc2VhcmNo
UmVjdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8RWxlbWVudENvbnRleHQ+
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgVmVjdG9yPFdlYktpdDo6VGV4dElucHV0
Q29udGV4dD4gdGV4dElucHV0Q29udGV4dHM7CisgICAgVmVjdG9yPFdlYktpdDo6RWxlbWVudENv
bnRleHQ+IHRleHRJbnB1dENvbnRleHRzOwogCiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbV9w
YWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5l
eHQoKSkgewogICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKTsK
QEAgLTY3NzcsNyArNjc3Nyw3IEBAIHZvaWQgV2ViUGFnZTo6dGV4dElucHV0Q29udGV4dHNJblJl
Y3QoV2ViQ29yZTo6RmxvYXRSZWN0IHNlYXJjaFJlY3QsIENvbXBsZXRpb25ICiAgICAgICAgICAg
ICBpZiAoIXNlYXJjaFJlY3QuaW50ZXJzZWN0cyhlbGVtZW50UmVjdCkpCiAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAKLSAgICAgICAgICAgIFdlYktpdDo6VGV4dElucHV0Q29udGV4dCBjb250
ZXh0OworICAgICAgICAgICAgV2ViS2l0OjpFbGVtZW50Q29udGV4dCBjb250ZXh0OwogICAgICAg
ICAgICAgY29udGV4dC53ZWJQYWdlSWRlbnRpZmllciA9IG1faWRlbnRpZmllcjsKICAgICAgICAg
ICAgIGNvbnRleHQuZG9jdW1lbnRJZGVudGlmaWVyID0gZG9jdW1lbnQtPmlkZW50aWZpZXIoKTsK
ICAgICAgICAgICAgIGNvbnRleHQuZWxlbWVudElkZW50aWZpZXIgPSBkb2N1bWVudC0+aWRlbnRp
ZmllckZvckVsZW1lbnQoZWxlbWVudCk7CkBAIC02NzkwLDkgKzY3OTAsOSBAQCB2b2lkIFdlYlBh
Z2U6OnRleHRJbnB1dENvbnRleHRzSW5SZWN0KFdlYkNvcmU6OkZsb2F0UmVjdCBzZWFyY2hSZWN0
LCBDb21wbGV0aW9uSAogICAgIGNvbXBsZXRpb25IYW5kbGVyKHRleHRJbnB1dENvbnRleHRzKTsK
IH0KIAotdm9pZCBXZWJQYWdlOjpmb2N1c1RleHRJbnB1dENvbnRleHQoY29uc3QgVGV4dElucHV0
Q29udGV4dCYgdGV4dElucHV0Q29udGV4dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFnZTo6Zm9jdXNUZXh0SW5wdXRDb250ZXh0
KGNvbnN0IEVsZW1lbnRDb250ZXh0JiB0ZXh0SW5wdXRDb250ZXh0LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFJlZlB0cjxFbGVtZW50
PiBlbGVtZW50ID0gZWxlbWVudEZvclRleHRJbnB1dENvbnRleHQodGV4dElucHV0Q29udGV4dCk7
CisgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBlbGVtZW50Rm9yQ29udGV4dCh0ZXh0SW5w
dXRDb250ZXh0KTsKIAogICAgIGlmIChlbGVtZW50KQogICAgICAgICBlbGVtZW50LT5mb2N1cygp
OwpAQCAtNjgwMCwxOSArNjgwMCwzMiBAQCB2b2lkIFdlYlBhZ2U6OmZvY3VzVGV4dElucHV0Q29u
dGV4dChjb25zdCBUZXh0SW5wdXRDb250ZXh0JiB0ZXh0SW5wdXRDb250ZXh0LCBDbwogICAgIGNv
bXBsZXRpb25IYW5kbGVyKGVsZW1lbnQpOwogfQogCi1FbGVtZW50KiBXZWJQYWdlOjplbGVtZW50
Rm9yVGV4dElucHV0Q29udGV4dChjb25zdCBUZXh0SW5wdXRDb250ZXh0JiB0ZXh0SW5wdXRDb250
ZXh0KQorRWxlbWVudCogV2ViUGFnZTo6ZWxlbWVudEZvckNvbnRleHQoY29uc3QgRWxlbWVudENv
bnRleHQmIGVsZW1lbnRDb250ZXh0KSBjb25zdAogewotICAgIGlmICh0ZXh0SW5wdXRDb250ZXh0
LndlYlBhZ2VJZGVudGlmaWVyICE9IG1faWRlbnRpZmllcikKKyAgICBpZiAoZWxlbWVudENvbnRl
eHQud2ViUGFnZUlkZW50aWZpZXIgIT0gbV9pZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIGF1dG8qIGRvY3VtZW50ID0gRG9jdW1lbnQ6OmFsbERvY3VtZW50c01hcCgp
LmdldCh0ZXh0SW5wdXRDb250ZXh0LmRvY3VtZW50SWRlbnRpZmllcik7CisgICAgYXV0byogZG9j
dW1lbnQgPSBEb2N1bWVudDo6YWxsRG9jdW1lbnRzTWFwKCkuZ2V0KGVsZW1lbnRDb250ZXh0LmRv
Y3VtZW50SWRlbnRpZmllcik7CiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICBpZiAoZG9jdW1lbnQtPnBhZ2UoKSAhPSBtX3BhZ2UuZ2V0KCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGRvY3VtZW50LT5zZWFyY2hGb3JFbGVt
ZW50QnlJZGVudGlmaWVyKHRleHRJbnB1dENvbnRleHQuZWxlbWVudElkZW50aWZpZXIpOworICAg
IHJldHVybiBkb2N1bWVudC0+c2VhcmNoRm9yRWxlbWVudEJ5SWRlbnRpZmllcihlbGVtZW50Q29u
dGV4dC5lbGVtZW50SWRlbnRpZmllcik7Cit9CisKK09wdGlvbmFsPEVsZW1lbnRDb250ZXh0PiBX
ZWJQYWdlOjpjb250ZXh0Rm9yRWxlbWVudChXZWJDb3JlOjpFbGVtZW50JiBlbGVtZW50KSBjb25z
dAoreworICAgIGF1dG8mIGRvY3VtZW50ID0gZWxlbWVudC5kb2N1bWVudCgpOworICAgIGlmICgh
bV9wYWdlIHx8IGRvY3VtZW50LnBhZ2UoKSAhPSBtX3BhZ2UuZ2V0KCkpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisKKyAgICBhdXRvIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKTsKKyAg
ICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJu
IEVsZW1lbnRDb250ZXh0IHsgZWxlbWVudFJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMoZWxlbWVu
dCwgKmZyYW1lKSwgbV9pZGVudGlmaWVyLCBkb2N1bWVudC5pZGVudGlmaWVyKCksIGRvY3VtZW50
LmlkZW50aWZpZXJGb3JFbGVtZW50KGVsZW1lbnQpIH07CiB9CiAKIFBBTDo6U2Vzc2lvbklEIFdl
YlBhZ2U6OnNlc3Npb25JRCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKaW5kZXggZGYwZjM2NGE4ZmViZWM0YzhmODU1NTVmMDJiZmU1ZjM1M2QxMGJi
YS4uYjE3NjVjMWY0ZjgxMWUwMDg0ZjBjOTc3OGU1OWExOGU4M2EwYThmMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMjYxLDEzICsyNjEsMTMgQEAg
c3RydWN0IEF0dHJpYnV0ZWRTdHJpbmc7CiBzdHJ1Y3QgQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRl
Owogc3RydWN0IERhdGFEZXRlY3Rpb25SZXN1bHQ7CiBzdHJ1Y3QgRWRpdG9yU3RhdGU7CitzdHJ1
Y3QgRWxlbWVudENvbnRleHQ7CiBzdHJ1Y3QgRm9udEluZm87CiBzdHJ1Y3QgSW5zZXJ0VGV4dE9w
dGlvbnM7CiBzdHJ1Y3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb247CiBzdHJ1Y3Qg
SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3Q7CiBzdHJ1Y3QgTG9hZFBhcmFtZXRlcnM7CiBz
dHJ1Y3QgUHJpbnRJbmZvOwotc3RydWN0IFRleHRJbnB1dENvbnRleHQ7CiBzdHJ1Y3QgV2ViQXV0
b2NvcnJlY3Rpb25EYXRhOwogc3RydWN0IFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dDsKIHN0cnVj
dCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOwpAQCAtNjExLDggKzYxMSw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGV4ZWN1dGVFZGl0Q29tbWFuZFdpdGhDYWxsYmFjayhjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmIGFyZ3VtZW50LCBDYWxsYmFja0lEKTsKICAgICB2b2lkIHNlbGVjdEFsbCgp
OwogCi0gICAgdm9pZCB0ZXh0SW5wdXRDb250ZXh0c0luUmVjdChXZWJDb3JlOjpGbG9hdFJlY3Qs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYktpdDo6VGV4dElucHV0Q29u
dGV4dD4mKT4mJik7Ci0gICAgdm9pZCBmb2N1c1RleHRJbnB1dENvbnRleHQoY29uc3QgVGV4dElu
cHV0Q29udGV4dCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQg
dGV4dElucHV0Q29udGV4dHNJblJlY3QoV2ViQ29yZTo6RmxvYXRSZWN0LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJLaXQ6OkVsZW1lbnRDb250ZXh0PiYpPiYmKTsKKyAg
ICB2b2lkIGZvY3VzVGV4dElucHV0Q29udGV4dChjb25zdCBFbGVtZW50Q29udGV4dCYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICBXZWJDb3JlOjpGbG9hdFNpemUgc2NyZWVuU2l6ZSgpIGNvbnN0OwpAQCAtNjY4LDcgKzY2
OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQoKTsK
ICAgICB2b2lkIGdldFBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1h
dGlvblJlcXVlc3QmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEludGVyYWN0aW9uSW5mb3JtYXRp
b25BdFBvc2l0aW9uJiYpPiYmKTsKICAgICB2b2lkIHJlcXVlc3RQb3NpdGlvbkluZm9ybWF0aW9u
KGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0Jik7Ci0gICAgdm9pZCBzdGFydElu
dGVyYWN0aW9uV2l0aEVsZW1lbnRBdFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7
CisgICAgdm9pZCBzdGFydEludGVyYWN0aW9uV2l0aEVsZW1lbnRDb250ZXh0T3JQb3NpdGlvbihP
cHRpb25hbDxFbGVtZW50Q29udGV4dD4mJiwgV2ViQ29yZTo6SW50UG9pbnQmJik7CiAgICAgdm9p
ZCBzdG9wSW50ZXJhY3Rpb24oKTsKICAgICB2b2lkIHBlcmZvcm1BY3Rpb25PbkVsZW1lbnQodWlu
dDMyX3QgYWN0aW9uKTsKICAgICB2b2lkIGZvY3VzTmV4dEZvY3VzZWRFbGVtZW50KGJvb2wgaXNG
b3J3YXJkLCBDYWxsYmFja0lEKTsKQEAgLTExODgsNyArMTE4OCw4IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgY29uZmlndXJlTG9nZ2luZ0NoYW5uZWwoY29uc3QgU3RyaW5nJiwgV1RGTG9nQ2hhbm5l
bFN0YXRlLCBXVEZMb2dMZXZlbCk7CiAKLSAgICBXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50Rm9y
VGV4dElucHV0Q29udGV4dChjb25zdCBUZXh0SW5wdXRDb250ZXh0Jik7CisgICAgV2ViQ29yZTo6
RWxlbWVudCogZWxlbWVudEZvckNvbnRleHQoY29uc3QgRWxlbWVudENvbnRleHQmKSBjb25zdDsK
KyAgICBPcHRpb25hbDxFbGVtZW50Q29udGV4dD4gY29udGV4dEZvckVsZW1lbnQoV2ViQ29yZTo6
RWxlbWVudCYpIGNvbnN0OwogCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKICAgICBXZWJQYXltZW50
Q29vcmRpbmF0b3IqIHBheW1lbnRDb29yZGluYXRvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggMmVlMTg4OTY0
N2Y0YzQ1ZDY1ZGFhYWFiNDI1ZGRlYjA5YmQ1YmQ4Mi4uMzA5NmUyZTY5NDE0MGM3ZGZlMjI5YjNj
YzAyOTUxNjJmMjJkZDNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC04Niw3ICs4Niw3IEBAIG1lc3NhZ2VzIC0+
IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFJlcXVlc3RFdmFzaW9uUmVjdHNBYm92ZVNl
bGVjdGlvbigpIC0+IChWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiByZWN0cykgQXN5bmMKICAg
ICBHZXRQb3NpdGlvbkluZm9ybWF0aW9uKHN0cnVjdCBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3Jt
YXRpb25SZXF1ZXN0IHJlcXVlc3QpIC0+IChzdHJ1Y3QgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9y
bWF0aW9uQXRQb3NpdGlvbiBpbmZvcm1hdGlvbikgU3luY2hyb25vdXMKICAgICBSZXF1ZXN0UG9z
aXRpb25JbmZvcm1hdGlvbihzdHJ1Y3QgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVx
dWVzdCByZXF1ZXN0KQotICAgIFN0YXJ0SW50ZXJhY3Rpb25XaXRoRWxlbWVudEF0UG9zaXRpb24o
V2ViQ29yZTo6SW50UG9pbnQgcG9pbnQpCisgICAgU3RhcnRJbnRlcmFjdGlvbldpdGhFbGVtZW50
Q29udGV4dE9yUG9zaXRpb24oT3B0aW9uYWw8V2ViS2l0OjpFbGVtZW50Q29udGV4dD4gZWxlbWVu
dENvbnRleHQsIFdlYkNvcmU6OkludFBvaW50IHBvaW50KQogICAgIFN0b3BJbnRlcmFjdGlvbigp
CiAgICAgUGVyZm9ybUFjdGlvbk9uRWxlbWVudCh1aW50MzJfdCBhY3Rpb24pCiAgICAgRm9jdXNO
ZXh0Rm9jdXNlZEVsZW1lbnQoYm9vbCBpc0ZvcndhcmQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKQpAQCAtNTY5LDggKzU2OSw4IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1h
bmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAgICAg
Vm9pY2VzRGlkQ2hhbmdlKCkKICNlbmRpZgogCi0gICAgVGV4dElucHV0Q29udGV4dHNJblJlY3Qo
V2ViQ29yZTo6RmxvYXRSZWN0IHJlY3QpIC0+IChWZWN0b3I8c3RydWN0IFdlYktpdDo6VGV4dElu
cHV0Q29udGV4dD4gY29udGV4dHMpIEFzeW5jCi0gICAgRm9jdXNUZXh0SW5wdXRDb250ZXh0KHN0
cnVjdCBXZWJLaXQ6OlRleHRJbnB1dENvbnRleHQgY29udGV4dCkgLT4gKGJvb2wgc3VjY2Vzcykg
QXN5bmMKKyAgICBUZXh0SW5wdXRDb250ZXh0c0luUmVjdChXZWJDb3JlOjpGbG9hdFJlY3QgcmVj
dCkgLT4gKFZlY3RvcjxzdHJ1Y3QgV2ViS2l0OjpFbGVtZW50Q29udGV4dD4gY29udGV4dHMpIEFz
eW5jCisgICAgRm9jdXNUZXh0SW5wdXRDb250ZXh0KHN0cnVjdCBXZWJLaXQ6OkVsZW1lbnRDb250
ZXh0IGNvbnRleHQpIC0+IChib29sIHN1Y2Nlc3MpIEFzeW5jCiAKICNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIFdhc0xvYWRlZFdpdGhEYXRhVHJhbnNmZXJGcm9tUHJl
dmFsZW50UmVzb3VyY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCBjN2IzNDljOWZkOWY4Y2MzZjhiYzZlMGZlNzkxMjE0
YTcxYzYxMmEwLi5mYjg2NDgwM2IxMTNmYmQ5Njk5ZTM2OGYxOWNhNGFmMzIzODgyYWE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bQpAQCAtMjcxMyw2ICsyNzEzLDggQEAgc3RhdGljIHZvaWQgZWxlbWVudFBvc2l0aW9uSW5mb3Jt
YXRpb24oV2ViUGFnZSYgcGFnZSwgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgSW4KICAgICAgICAg
ICAgIGltYWdlUG9zaXRpb25JbmZvcm1hdGlvbihwYWdlLCBlbGVtZW50LCByZXF1ZXN0LCBpbmZv
KTsKICAgICAgICAgYm91bmRzUG9zaXRpb25JbmZvcm1hdGlvbigqcmVuZGVyZXIsIGluZm8pOwog
ICAgIH0KKworICAgIGluZm8uZWxlbWVudENvbnRleHQgPSBwYWdlLmNvbnRleHRGb3JFbGVtZW50
KGVsZW1lbnQpOwogfQogICAgIAogc3RhdGljIHZvaWQgc2VsZWN0aW9uUG9zaXRpb25JbmZvcm1h
dGlvbihXZWJQYWdlJiBwYWdlLCBjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCYg
cmVxdWVzdCwgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mIGluZm8pCkBAIC0yODEx
LDE0ICsyODEzLDE0IEBAIHZvaWQgV2ViUGFnZTo6cmVxdWVzdFBvc2l0aW9uSW5mb3JtYXRpb24o
Y29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QmIHJlCiAgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZlUG9zaXRpb25JbmZvcm1hdGlvbihwb3NpdGlvbklu
Zm9ybWF0aW9uKHJlcXVlc3QpKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6c3RhcnRJbnRlcmFjdGlv
bldpdGhFbGVtZW50QXRQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQpCit2
b2lkIFdlYlBhZ2U6OnN0YXJ0SW50ZXJhY3Rpb25XaXRoRWxlbWVudENvbnRleHRPclBvc2l0aW9u
KE9wdGlvbmFsPEVsZW1lbnRDb250ZXh0PiYmIGVsZW1lbnRDb250ZXh0LCBXZWJDb3JlOjpJbnRQ
b2ludCYmIHBvaW50KQogewotICAgIC8vIEZJWE1FOiBXZSd2ZSBhbHJlYWR5IHBlcmZvcm1lZCBh
IGhpdCB0ZXN0IHdoZW4gdGhlIGxvbmctcHJlc3MgZ2VzdHVyZSB3YXMgcmVjb2duaXplZCBhbmQg
d2UKLSAgICAvLyB1c2VkIHRoYXQgcmVzdWx0IHRvIGdlbmVyYXRlIHRoZSB0YXJnZXRlZCBwcmV2
aWV3LCBidXQgbm93IHdlIGFyZSBoaXQgdGVzdGluZyBhZ2FpbiBpbiBvcmRlcgotICAgIC8vIHRv
IHBlcmZvcm0gdGhlIHNlbGVjdGVkIGFjdGlvbi4gU2luY2UgYW4gYXJiaXRyYXJ5IGFtb3VudCBv
ZiB0aW1lIGNhbiBlbGFwc2UgYmV0d2VlbgotICAgIC8vIGdlbmVyYXRpbmcgdGhlIHRhcmdldGVk
IHByZXZpZXcgYW5kIHRoZSB1c2VyIHNlbGVjdGluZyBhbiBhY3Rpb24sIGl0J3MgcG9zc2libGUg
dGhhdCB0aGlzCi0gICAgLy8gc2Vjb25kIGhpdCB0ZXN0IHdpbGwgZmluZCBhIGRpZmZlcmVudCBl
bGVtZW50IHRoYW4gdGhlIGZpcnN0IG9uZSwgbGVhZGluZyB0byBidWdzIGxpa2UKLSAgICAvLyA8
cmRhcjovL3Byb2JsZW0vNTQ3MjMxMzE+LiBXZSBzaG91bGQgcmUtdXNlIHRoZSByZXN1bHRzIG9m
IHRoZSBmaXJzdCBoaXQgdGVzdCBpbnN0ZWFkLgorICAgIGlmIChlbGVtZW50Q29udGV4dCkgewor
ICAgICAgICBtX2ludGVyYWN0aW9uTm9kZSA9IGVsZW1lbnRGb3JDb250ZXh0KCplbGVtZW50Q29u
dGV4dCk7CisgICAgICAgIGlmIChtX2ludGVyYWN0aW9uTm9kZSkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICB9CisKICAgICBGbG9hdFBvaW50IGFkanVzdGVkUG9pbnQ7CiAgICAgbV9pbnRlcmFj
dGlvbk5vZGUgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLm5vZGVSZXNwb25kaW5nVG9JbnRlcmFjdGlv
bihwb2ludCwgYWRqdXN0ZWRQb2ludCk7CiB9CkBAIC0zOTMzLDcgKzM5MzUsNyBAQCB2b2lkIFdl
YlBhZ2U6OnJlcXVlc3REb2N1bWVudEVkaXRpbmdDb250ZXh0KERvY3VtZW50RWRpdGluZ0NvbnRl
eHRSZXF1ZXN0IHJlcXVlcwogICAgIGJvb2wgd2FudHNSZWN0cyA9IHJlcXVlc3Qub3B0aW9ucy5j
b250YWlucyhEb2N1bWVudEVkaXRpbmdDb250ZXh0UmVxdWVzdDo6T3B0aW9uczo6UmVjdHMpOwog
CiAgICAgaWYgKGF1dG8gdGV4dElucHV0Q29udGV4dCA9IHJlcXVlc3QudGV4dElucHV0Q29udGV4
dCkgewotICAgICAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IGVsZW1lbnRGb3JUZXh0SW5w
dXRDb250ZXh0KCp0ZXh0SW5wdXRDb250ZXh0KTsKKyAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGVs
ZW1lbnQgPSBlbGVtZW50Rm9yQ29udGV4dCgqdGV4dElucHV0Q29udGV4dCk7CiAgICAgICAgIGlm
ICghZWxlbWVudCkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICAg
ICAgICAgIHJldHVybjsK
</data>

          </attachment>
      

    </bug>

</bugzilla>