<?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>207065</bug_id>
          
          <creation_ts>2020-01-31 12:48:57 -0800</creation_ts>
          <short_desc>Add support for specifying background colors when setting marked text</short_desc>
          <delta_ts>2020-01-31 16:46:46 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</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="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>annulen</cc>
    
    <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>mifenton</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>rniwa</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</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>1613529</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-01-31 12:48:57 -0800</bug_when>
    <thetext>Allow clients to highlight ranges in marked text.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613530</commentid>
    <comment_count>1</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-01-31 12:49:14 -0800</bug_when>
    <thetext>&lt;rdar://problem/57876140&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613560</commentid>
    <comment_count>2</comment_count>
      <attachid>389405</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-01-31 13:35:39 -0800</bug_when>
    <thetext>Created attachment 389405
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613563</commentid>
    <comment_count>3</comment_count>
      <attachid>389406</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-01-31 13:45:07 -0800</bug_when>
    <thetext>Created attachment 389406
Fix GTK build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613576</commentid>
    <comment_count>4</comment_count>
      <attachid>389406</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-01-31 14:01:02 -0800</bug_when>
    <thetext>Comment on attachment 389406
Fix GTK build

View in context: https://bugs.webkit.org/attachment.cgi?id=389406&amp;action=review

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:4535
&gt; +        unsigned location = range.location;

why the local?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613579</commentid>
    <comment_count>5</comment_count>
      <attachid>389406</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-01-31 14:01:47 -0800</bug_when>
    <thetext>Comment on attachment 389406
Fix GTK build

View in context: https://bugs.webkit.org/attachment.cgi?id=389406&amp;action=review

&gt;&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:4535
&gt;&gt; +        unsigned location = range.location;
&gt; 
&gt; why the local?

Whoops, no reason! Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613599</commentid>
    <comment_count>6</comment_count>
      <attachid>389421</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-01-31 14:56:25 -0800</bug_when>
    <thetext>Created attachment 389421
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613662</commentid>
    <comment_count>7</comment_count>
      <attachid>389421</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-31 16:44:15 -0800</bug_when>
    <thetext>Comment on attachment 389421
Patch for EWS

Clearing flags on attachment: 389421

Committed r255532: &lt;https://trac.webkit.org/changeset/255532&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389405</attachid>
            <date>2020-01-31 13:35:39 -0800</date>
            <delta_ts>2020-01-31 13:45:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207065-20200131133538.patch</filename>
            <type>text/plain</type>
            <size>59088</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1NDg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzc1MGY5MTA5YWFkNzgw
Yjk1YjFjODE4NjI3YjYwNDgzMDc4ZGM3Zi4uM2NlYWU2ZjQ0OWQ1ZjY5YTBmZDZhN2RmYmNhM2Uy
MjQzMjhlZjE5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIwLTAxLTMxICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0
IGZvciBzcGVjaWZ5aW5nIGJhY2tncm91bmQgY29sb3JzIHdoZW4gc2V0dGluZyBtYXJrZWQgdGV4
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3MDY1
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81Nzg3NjE0MD4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgcmVuZGVyaW5nIGN1
c3RvbSBoaWdobGlnaHRzIChiYWNrZ3JvdW5kIGNvbG9ycykgYmVoaW5kIG1hcmtlZCB0ZXh0IGlu
IFdlYkNvcmUuIFRvIGRvIHRoaXMsIHdlCisgICAgICAgIHBsdW1iIGEgVmVjdG9yIG9mIENvbXBv
c2l0aW9uSGlnaGxpZ2h0cyBhbG9uZ3NpZGUgdGhlIFZlY3RvciBvZiBDb21wb3NpdGlvblVuZGVy
bGluZXMgdG8gRWRpdG9yLiBBdCBwYWludCB0aW1lLAorICAgICAgICB3ZSB0aGVuIGNvbnN1bHQg
dGhpcyBoaWdobGlnaHQgZGF0YSB0byBkZXRlcm1pbmUgd2hpY2ggcmFuZ2VzIG9mIHRleHQgaW4g
dGhlIGNvbXBvc2l0aW9uIHNob3VsZCBwYWludCB1c2luZworICAgICAgICBjdXN0b20gYmFja2dy
b3VuZCBjb2xvcnMuCisKKyAgICAgICAgTm90ZSB0aGF0IGluIHRoZSBmdXR1cmUsIHdlIHNob3Vs
ZCBjb25zaWRlciByZWZhY3RvcmluZyBib3RoIGNvbXBvc2l0aW9uIHVuZGVybGluZXMgYW5kIGhp
Z2hsaWdodHMgdG8gdXNlIHRoZQorICAgICAgICBNYXJrZWRUZXh0IG1lY2hhbmlzbSBmb3IgZGVj
b3JhdGluZyByYW5nZXMgb2YgdGV4dCBpbnN0ZWFkLgorCisgICAgICAgIFRlc3Q6IGVkaXRpbmcv
aW5wdXQvY29tcG9zaXRpb24taGlnaGxpZ2h0cy5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZWRpdGluZy9Db21wb3NpdGlvbkhp
Z2hsaWdodC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0aW9uSGlnaGxpZ2h0
OjpDb21wb3NpdGlvbkhpZ2hsaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGlvbkhp
Z2hsaWdodDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0aW9uSGln
aGxpZ2h0OjpkZWNvZGUpOgorCisgICAgICAgIEFkZCBDb21wb3NpdGlvbkhpZ2hsaWdodCwgd2hp
Y2ggcmVwcmVzZW50cyBhIHJhbmdlIGluIHRoZSBjb21wb3NpdGlvbiB0aGF0IHNob3VsZCBiZSBo
aWdobGlnaHRlZCB3aXRoIGEgZ2l2ZW4KKyAgICAgICAgYmFja2dyb3VuZCBjb2xvci4KKworICAg
ICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y2xl
YXIpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZXRDb21wb3NpdGlvbik6CisKKyAgICAg
ICAgQWRkIGxvZ2ljIGZvciBjbGVhcmluZyBhbmQgdXBkYXRpbmcgbV9jdXN0b21Db21wb3NpdGlv
bkhpZ2hsaWdodHMuCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yOjpjb21wb3NpdGlvblVzZXNDdXN0b21IaWdobGlnaHRzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y3VzdG9tQ29tcG9zaXRpb25IaWdobGlnaHRzIGNvbnN0
KToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludENvbXBvc2l0aW9uQmFja2dyb3VuZCk6CisKKyAgICAg
ICAgSWYgY3VzdG9tIGNvbXBvc2l0aW9uIGhpZ2hsaWdodHMgYXJlIGdpdmVuLCB1c2UgdGhvc2Ug
d2hlbiBwYWludGluZyB0aGUgY29tcG9zaXRpb24gYmFja2dyb3VuZDsgb3RoZXJ3aXNlLAorICAg
ICAgICBkZWZhdWx0IHRvIHBhaW50aW5nIHRoZSBlbnRpcmUgY29tcG9zaXRpb24gcmFuZ2UgdXNp
bmcgYENvbG9yOjpjb21wb3NpdGlvbkZpbGxgLgorCiAyMDIwLTAxLTMwICBEb3VnIEtlbGx5ICA8
ZG91Z2tAYXBwbGUuY29tPgogCiAgICAgICAgIEVuc3VyZSBub24taW5pdGlhbCB2YWx1ZXMgZm9y
IENTUyBGb250IHByb3BlcnRpZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IDBiODE3YTE4ZmJhZDFm
M2YxNDVlNWIwNDZkZWVhZDk1NTYxZDM5YTkuLjg2MTdmYmQyN2M1MTIxNDFhYTliZjNlZjcwMmQ0
NGFjOTE0OGQ1ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTAx
LTMxICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIGJhY2tncm91bmQgY29sb3JzIHdoZW4gc2V0dGluZyBt
YXJrZWQgdGV4dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA3MDY1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81Nzg3NjE0MD4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYW4gU1BJIHNvZnQtbGlu
a2luZyBkZWNsYXJhdGlvbiBmb3IgTlNNYXJrZWRDbGF1c2VTZWdtZW50QXR0cmlidXRlTmFtZS4K
KworICAgICAgICAqIHBhbC9zcGkvY29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nU1BJLmg6CisKIDIw
MjAtMDEtMzAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBBZGQgV0tOYXZpZ2F0aW9uRGVsZWdhdGUgU1BJIHRvIGRpc2FibGUgVExTIDEuMCBh
bmQgMS4xCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IGJiMTgyOTE5ODg2YWNmODc2YTU3NjI2ZTY5OGFmYmRlMGU3OWU4
ZGEuLjdjYzZkZWJhNzk5MDVjNjNmZmJjNmNlZDY2MGFmMzI5MDVjNWViNjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDIgQEAKKzIwMjAtMDEtMzEgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBh
cHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgYmFja2dyb3Vu
ZCBjb2xvcnMgd2hlbiBzZXR0aW5nIG1hcmtlZCB0ZXh0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDcwNjUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzU3ODc2MTQwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEltcGxlbWVudCAtc2V0QXR0cmlidXRlZE1hcmtlZFRleHQ6c2VsZWN0ZWRSYW5nZTogb24g
V0tDb250ZW50VmlldywgYW5kIGhhdmUgaXQgZXh0cmFjdCBoaWdobGlnaHQgY29sb3IKKyAgICAg
ICAgaW5mb3JtYXRpb24gZnJvbSB0aGUgZ2l2ZW4gYXR0cmlidXRlZCBzdHJpbmcuIFBsdW1iIHRo
aXMgdGhyb3VnaCB0byB0aGUgd2ViIHByb2Nlc3MgYnkgc2VyaWFsaXppbmcgYW5kCisgICAgICAg
IGRlc2VyaWFsaXppbmcgYFdlYkNvcmU6OkNvbXBvc2l0aW9uSGlnaGxpZ2h0YHMuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXdJbXBsOjpzZXRNYXJrZWRUZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgIChjb21w
b3NpdGlvbkhpZ2hsaWdodHMpOgorCisgICAgICAgIEZvciBlYWNoIG1hcmtlZCB0ZXh0IGNsYXVz
ZSwgZ3JhYiB0aGUgc3BlY2lmaWVkIGJhY2tncm91bmQgY29sb3IgKGRlZmF1bHRpbmcgdG8gQ29s
b3I6OmNvbXBvc2l0aW9uRmlsbCkgYW5kIHVzZQorICAgICAgICBpdCB0byBjcmVhdGUgYSBsaXN0
IG9mIENvbXBvc2l0aW9uSGlnaGxpZ2h0cy4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHNl
dEF0dHJpYnV0ZWRNYXJrZWRUZXh0OnNlbGVjdGVkUmFuZ2U6XSk6CisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgc2V0TWFya2VkVGV4dDpzZWxlY3RlZFJhbmdlOl0pOgorICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IF9zZXRNYXJrZWRUZXh0OmhpZ2hsaWdodHM6c2VsZWN0ZWRSYW5nZTpdKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHA6
CisgICAgICAgIChXS0J1bmRsZVBhZ2VTZXRDb21wb3NpdGlvbik6CisKKyAgICAgICAgQWRkIHRl
c3Rpbmcgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyBoaWdobGlnaHQgcmFuZ2VzIHdoZW4gc2V0dGlu
ZyBtYXJrZWQgdGV4dC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVQYWdlUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvZ2xpYi9XZWJFZGl0b3JDbGllbnRHTGliLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
RWRpdG9yQ2xpZW50OjpkaWREaXNwYXRjaElucHV0TWV0aG9kS2V5ZG93bik6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpzZXRDb21wb3NpdGlvbkZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpz
ZXRDb21wb3NpdGlvbkFzeW5jKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgor
CiAyMDIwLTAxLTMwICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWRkIGxvZ2dpbmcgdG8gc2hvdyB0aGUgZmxvdyBvZiBBcHBTU08KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZwppbmRleCBkMjc3NzAwODljMzY5ODZjYzY2ZjExZGYwZGRmMjJiNDJkNzc5MjVi
Li4xOGE4YmNlMzk2M2RjN2JiZDQzOTRjMjA4ZDk4ZDZkY2JhMDcyYTI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMDEtMzEgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHNw
ZWNpZnlpbmcgYmFja2dyb3VuZCBjb2xvcnMgd2hlbiBzZXR0aW5nIG1hcmtlZCB0ZXh0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDcwNjUKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzU3ODc2MTQwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkanVzdCBzb21lIGNhbGwgc2l0ZXMgb2YgRWRpdG9yOjpz
ZXRDb21wb3NpdGlvbigpLgorCisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAg
ICAgKC1bV2ViRnJhbWUgc2V0TWFya2VkVGV4dDpzZWxlY3RlZFJhbmdlOl0pOgorICAgICAgICAo
LVtXZWJGcmFtZSBzZXRNYXJrZWRUZXh0OmZvckNhbmRpZGF0ZXM6XSk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgc2V0TWFya2VkVGV4
dDpzZWxlY3RlZFJhbmdlOl0pOgorCiAyMDIwLTAxLTMwICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIFdLTmF2aWdhdGlvbkRlbGVnYXRl
IFNQSSB0byBkaXNhYmxlIFRMUyAxLjAgYW5kIDEuMQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9n
CmluZGV4IDMzN2MzY2Q0NWEzNjk2MGI2YWNkYzRlMmE1ODJiN2ZmN2VjMzI1ZTcuLjBlMTA1ZDEx
NjhjZTJmNzM3YjU3ZjA4ZDlmODAyZDIwYjNhMDEwZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMC0wMS0zMSAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyBi
YWNrZ3JvdW5kIGNvbG9ycyB3aGVuIHNldHRpbmcgbWFya2VkIHRleHQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzA2NQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNTc4NzYxNDA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRqdXN0IHNvbWUgY2FsbCBzaXRlcyBvZiBFZGl0b3I6OnNldENvbXBvc2l0
aW9uKCkuCisKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6Om9uSU1F
Q29tcG9zaXRpb24pOgorICAgICAgICAoV2ViVmlldzo6c2V0Q29tcG9zaXRpb25Gb3JUZXN0aW5n
KToKKwogMjAyMC0wMS0yNyAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtXZWIgQW5pbWF0aW9uc10gTWFrZSBBbmltYXRpb24udGltZWxpbmUgcmVhZC13cml0
ZSBvbmx5IGlmIGEgcnVudGltZSBmbGFnIGlzIGVuYWJsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL05TQXR0cmlidXRlZFN0cmluZ1NQSS5oIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nU1BJLmgKaW5kZXgg
MmE4YjUyNGE5Y2YzN2IwNjBiYTNjN2NhZWE1YWViMzEyOWMwNmE3Zi4uMGZmMzM0NTE1ZTFiZmI1
NDJiNDBmNjk5YjUxNDEzMzUxOWFjZGJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9zcGkvY29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nU1BJLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9zcGkvY29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nU1BJLmgKQEAgLTkzLDYgKzkz
LDggQEAgU09GVF9MSU5LX0NPTlNUQU5UKFVJRm91bmRhdGlvbiwgTlNDb2NvYVZlcnNpb25Eb2N1
bWVudEF0dHJpYnV0ZSwgTlNTdHJpbmcgKikKICNkZWZpbmUgTlNDb2NvYVZlcnNpb25Eb2N1bWVu
dEF0dHJpYnV0ZSBnZXROU0NvY29hVmVyc2lvbkRvY3VtZW50QXR0cmlidXRlKCkKIFNPRlRfTElO
S19DT05TVEFOVChVSUZvdW5kYXRpb24sIE5TQmFja2dyb3VuZENvbG9yRG9jdW1lbnRBdHRyaWJ1
dGUsIE5TU3RyaW5nICopCiAjZGVmaW5lIE5TQmFja2dyb3VuZENvbG9yRG9jdW1lbnRBdHRyaWJ1
dGUgZ2V0TlNCYWNrZ3JvdW5kQ29sb3JEb2N1bWVudEF0dHJpYnV0ZSgpCitTT0ZUX0xJTktfQ09O
U1RBTlQoVUlGb3VuZGF0aW9uLCBOU01hcmtlZENsYXVzZVNlZ21lbnRBdHRyaWJ1dGVOYW1lLCBO
U1N0cmluZyAqKQorI2RlZmluZSBOU01hcmtlZENsYXVzZVNlZ21lbnRBdHRyaWJ1dGVOYW1lIGdl
dE5TTWFya2VkQ2xhdXNlU2VnbWVudEF0dHJpYnV0ZU5hbWUoKQogCiAvLyBXZSBkb24ndCBzb2Z0
bGluayBOU1N1cGVyc2NyaXB0QXR0cmlidXRlTmFtZSBiZWNhdXNlIFVJRm91bmRhdGlvbiBzdG9w
cGVkIGV4cG9ydGluZyBpdC4KIC8vIFRoaXMgYXR0cmlidXRlIGlzIGJlaW5nIGRlcHJlY2F0ZWQg
YXQgdGhlIEFQSSBsZXZlbCwgYnV0IGludGVybmFsbHkgVUlGb3VuZGF0aW9uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOTg3YTYz
OWQ3Mzg5MDBiOWE5MWQ4OWFhYWQ0YmIzY2ZiMTA4MGZkYi4uYWYwNDQxMjQxOGU2ZGJiMGYwYjNi
MTdhNmQ5YThjYTZiYTgxMTZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDk1OSw2ICs0OTU5LDcgQEAKIAkJRjQ0MEU3N0Ey
MzNEOTRENzAwNjNGOUFCIC8qIE5hdmlnYXRvckNsaXBib2FyZC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0MEU3NkYyMzNEOTREMzAwNjNGOUFCIC8q
IE5hdmlnYXRvckNsaXBib2FyZC5oICovOyB9OwogCQlGNDQwRTc3QjIzM0Q5NEQ3MDA2M0Y5QUIg
LyogQ2xpcGJvYXJkSXRlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjQ0MEU3NzAyMzNEOTRENDAwNjNGOUFCIC8qIENsaXBib2FyZEl0ZW0uaCAqLzsg
fTsKIAkJRjQ0MEU3N0QyMzNEOTRENzAwNjNGOUFCIC8qIENsaXBib2FyZC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0MEU3NzIyMzNEOTRENTAwNjNG
OUFCIC8qIENsaXBib2FyZC5oICovOyB9OworCQlGNDQyQzM1OTIzRTNBREQyMDA0OTk1ODIgLyog
Q29tcG9zaXRpb25IaWdobGlnaHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY0NDJDMzU3MjNFM0FDNTEwMDQ5OTU4MiAvKiBDb21wb3NpdGlvbkhpZ2hs
aWdodC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUY0NEE1RjU5MUZFRDM4RjIwMDdGNTk0NCAvKiBMZWdhY3lOU1Bhc3RlYm9hcmRUeXBlcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0QTVGNTcxRkVE
MzgzMDAwN0Y1OTQ0IC8qIExlZ2FjeU5TUGFzdGVib2FyZFR5cGVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjQ0RUJCRDkxREI1RDIxNDAwMjc3
MzM0IC8qIFN0YXRpY1JhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGNDRFQkJEODFEQjVEMjE0MDAyNzczMzQgLyogU3RhdGljUmFuZ2UuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNDVDMjMxRTE5
OTVCNzNCMDBBNkUyRTMgLyogQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDVDMjMxQzE5OTVCNzNCMDBBNkUyRTMg
LyogQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE1NDE1LDYgKzE1NDE2LDcgQEAKIAkJRjQ0MEU3NzUyMzNE
OTRENjAwNjNGOUFCIC8qIENsaXBib2FyZEl0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQ2xpcGJvYXJkSXRlbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUY0NDBFNzc3MjMzRDk0RDcwMDYzRjlBQiAvKiBDbGlwYm9hcmRJdGVtLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBDbGlwYm9hcmRJdGVtLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRjQ0Mjg1MEIyMTQwNDEyNTAwQ0NEQTIyIC8qIEZvbnRBdHRyaWJ1dGVDaGFu
Z2VzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ0MkMzNTcyM0UzQUM1MTAwNDk5NTgyIC8qIENv
bXBvc2l0aW9uSGlnaGxpZ2h0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbXBvc2l0aW9uSGlnaGxpZ2h0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NEE1RjU3MUZFRDM4MzAwMDdGNTk0
NCAvKiBMZWdhY3lOU1Bhc3RlYm9hcmRUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMZWdhY3lOU1Bh
c3RlYm9hcmRUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDRFQkJENjFE
QjVEMUI2MDAyNzczMzQgLyogU3RhdGljUmFuZ2UuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFN0YXRpY1JhbmdlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ0RUJCRDgx
REI1RDIxNDAwMjc3MzM0IC8qIFN0YXRpY1JhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN0YXRpY1JhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
MTUxNyw2ICsyMTUxOSw3IEBACiAJCQkJN0MzQTkxRTUxQzk2M0I4ODAwRDFBN0UzIC8qIENsaXBi
b2FyZEFjY2Vzc1BvbGljeS5oICovLAogCQkJCTkzMzA5RDhEMDk5RTY0OTEwMDU2RTU4MSAvKiBD
b21wb3NpdGVFZGl0Q29tbWFuZC5jcHAgKi8sCiAJCQkJOTMzMDlEOEUwOTlFNjQ5MTAwNTZFNTgx
IC8qIENvbXBvc2l0ZUVkaXRDb21tYW5kLmggKi8sCisJCQkJRjQ0MkMzNTcyM0UzQUM1MTAwNDk5
NTgyIC8qIENvbXBvc2l0aW9uSGlnaGxpZ2h0LmggKi8sCiAJCQkJMkRENUE3MjYxRUJFRTQ3RDAw
OUJBNTk3IC8qIENvbXBvc2l0aW9uVW5kZXJsaW5lLmggKi8sCiAJCQkJRDBCMDU1NjcwOUM2NzAw
MTAwMzA3RTQzIC8qIENyZWF0ZUxpbmtDb21tYW5kLmNwcCAqLywKIAkJCQlEMEIwNTU2NjA5QzY3
MDAxMDAzMDdFNDMgLyogQ3JlYXRlTGlua0NvbW1hbmQuaCAqLywKQEAgLTI5Mjk3LDYgKzI5MzAw
LDcgQEAKIAkJCQk3MTI0N0UzNzFGRUE1Rjg2MDA4QzA4Q0UgLyogQ29tcG9zaXRlT3BlcmF0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MTExMjQzRTIxNkZBNzExMDBFQjdCNjcgLyogQ29tcG9z
aXRlT3BlcmF0aW9uT3JBdXRvLmggaW4gSGVhZGVycyAqLywKIAkJCQk3OUYyRjVBMjEwOTE5MzlB
MDAwRDg3Q0IgLyogQ29tcG9zaXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjQ0MkMz
NTkyM0UzQUREMjAwNDk5NTgyIC8qIENvbXBvc2l0aW9uSGlnaGxpZ2h0LmggaW4gSGVhZGVycyAq
LywKIAkJCQkyREQ1QTcyNzFFQkVFNDdEMDA5QkE1OTcgLyogQ29tcG9zaXRpb25VbmRlcmxpbmUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTcxMTZFMkNDMUZFRDc1REMwMEMwNkZERSAvKiBDb21wdXRl
ZEVmZmVjdFRpbWluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwOEYxMkIwMjZGNzAwQzFB
MzU5IC8qIENvbmUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9Db21wb3NpdGlvbkhpZ2hsaWdodC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9D
b21wb3NpdGlvbkhpZ2hsaWdodC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBjOWNhODFmZDM3NzU4N2YzMmQzZmNh
NDA3M2ZkYTgwOWMwOWFmY2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0NvbXBvc2l0aW9uSGlnaGxpZ2h0LmgKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworc3RydWN0IENvbXBvc2l0aW9uSGlnaGxpZ2h0IHsKKyAgICBDb21wb3NpdGlvbkhp
Z2hsaWdodCgpID0gZGVmYXVsdDsKKyAgICBDb21wb3NpdGlvbkhpZ2hsaWdodCh1bnNpZ25lZCBz
dGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0LCBjb25zdCBDb2xvciYgYykKKyAgICAgICAg
OiBzdGFydE9mZnNldChzdGFydE9mZnNldCkKKyAgICAgICAgLCBlbmRPZmZzZXQoZW5kT2Zmc2V0
KQorICAgICAgICAsIGNvbG9yKGMpCisgICAgeworICAgIH0KKworICAgIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0IHsgMCB9OworICAgIHVuc2lnbmVkIGVuZE9mZnNldCB7IDAgfTsKKyAgICBDb2xvciBj
b2xvciB7IENvbG9yOjpjb21wb3NpdGlvbkZpbGwgfTsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8Q29tcG9zaXRpb25IaWdobGlnaHQ+IGRlY29kZShEZWNv
ZGVyJik7Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBDb21wb3NpdGlvbkhp
Z2hsaWdodDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8
PCBzdGFydE9mZnNldDsKKyAgICBlbmNvZGVyIDw8IGVuZE9mZnNldDsKKyAgICBlbmNvZGVyIDw8
IGNvbG9yOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8Q29tcG9zaXRp
b25IaWdobGlnaHQ+IENvbXBvc2l0aW9uSGlnaGxpZ2h0OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKK3sKKyAgICBPcHRpb25hbDx1bnNpZ25lZD4gc3RhcnRPZmZzZXQ7CisgICAgZGVjb2RlciA+
PiBzdGFydE9mZnNldDsKKyAgICBpZiAoIXN0YXJ0T2Zmc2V0KQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8dW5zaWduZWQ+IGVuZE9mZnNldDsKKyAgICBkZWNv
ZGVyID4+IGVuZE9mZnNldDsKKyAgICBpZiAoIWVuZE9mZnNldCkKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPENvbG9yPiBjb2xvcjsKKyAgICBkZWNvZGVyID4+
IGNvbG9yOworICAgIGlmICghY29sb3IpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisK
KyAgICByZXR1cm4ge3sgKnN0YXJ0T2Zmc2V0LCAqZW5kT2Zmc2V0LCAqY29sb3IgfX07Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCA4
N2E4MDM1MzRlODRlMjc1NTEzNmQ1YTMzOGRkZjhhNGE5NzZlYTA3Li4yOTFiYTZjMGMwNGM0YjY2
OTg0NjZlMTA3NTM0ODU4ZTg1OWRhYTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBA
IC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiQ2hhbmdlTGlzdFR5cGVDb21tYW5kLmgiCiAjaW5j
bHVkZSAiQ2xpcGJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJDb21wb3NpdGlvbkV2ZW50LmgiCisj
aW5jbHVkZSAiQ29tcG9zaXRpb25IaWdobGlnaHQuaCIKICNpbmNsdWRlICJDcmVhdGVMaW5rQ29t
bWFuZC5oIgogI2luY2x1ZGUgIkN1c3RvbVVuZG9TdGVwLmgiCiAjaW5jbHVkZSAiRGF0YVRyYW5z
ZmVyLmgiCkBAIC0xMjE3LDYgKzEyMTgsNyBAQCB2b2lkIEVkaXRvcjo6Y2xlYXIoKQogICAgICAg
ICAgICAgY2xpZW50LT5kaXNjYXJkZWRDb21wb3NpdGlvbigmbV9mcmFtZSk7CiAgICAgfQogICAg
IG1fY3VzdG9tQ29tcG9zaXRpb25VbmRlcmxpbmVzLmNsZWFyKCk7CisgICAgbV9jdXN0b21Db21w
b3NpdGlvbkhpZ2hsaWdodHMuY2xlYXIoKTsKICAgICBtX3Nob3VsZFN0eWxlV2l0aENTUyA9IGZh
bHNlOwogICAgIG1fZGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvciA9IEVkaXRvclBhcmFncmFwaFNl
cGFyYXRvcklzRGl2OwogICAgIG1fbWFyayA9IHsgfTsKQEAgLTE5NzAsNiArMTk3Miw3IEBAIHZv
aWQgRWRpdG9yOjpzZXRDb21wb3NpdGlvbihjb25zdCBTdHJpbmcmIHRleHQsIFNldENvbXBvc2l0
aW9uTW9kZSBtb2RlKQogCiAgICAgbV9jb21wb3NpdGlvbk5vZGUgPSBudWxscHRyOwogICAgIG1f
Y3VzdG9tQ29tcG9zaXRpb25VbmRlcmxpbmVzLmNsZWFyKCk7CisgICAgbV9jdXN0b21Db21wb3Np
dGlvbkhpZ2hsaWdodHMuY2xlYXIoKTsKIAogICAgIGlmIChtX2ZyYW1lLnNlbGVjdGlvbigpLmlz
Tm9uZSgpKQogICAgICAgICByZXR1cm47CkBAIC0xOTkxLDcgKzE5OTQsNyBAQCB2b2lkIEVkaXRv
cjo6c2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiB0ZXh0LCBTZXRDb21wb3NpdGlvbk1vZGUg
bW9kZSkKICAgICB9CiB9CiAKLXZvaWQgRWRpdG9yOjpzZXRDb21wb3NpdGlvbihjb25zdCBTdHJp
bmcmIHRleHQsIGNvbnN0IFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGluZT4mIHVuZGVybGluZXMs
IHVuc2lnbmVkIHNlbGVjdGlvblN0YXJ0LCB1bnNpZ25lZCBzZWxlY3Rpb25FbmQpCit2b2lkIEVk
aXRvcjo6c2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8Q29t
cG9zaXRpb25VbmRlcmxpbmU+JiB1bmRlcmxpbmVzLCBjb25zdCBWZWN0b3I8Q29tcG9zaXRpb25I
aWdobGlnaHQ+JiBoaWdobGlnaHRzLCB1bnNpZ25lZCBzZWxlY3Rpb25TdGFydCwgdW5zaWduZWQg
c2VsZWN0aW9uRW5kKQogewogICAgIFNldENvbXBvc2l0aW9uU2NvcGUgc2V0Q29tcG9zaXRpb25T
Y29wZShtX2ZyYW1lKTsKIApAQCAtMjA2Myw2ICsyMDY2LDcgQEAgdm9pZCBFZGl0b3I6OnNldENv
bXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVmVjdG9yPENvbXBvc2l0aW9uVW5k
ZXJsaW4KIAogICAgIG1fY29tcG9zaXRpb25Ob2RlID0gbnVsbHB0cjsKICAgICBtX2N1c3RvbUNv
bXBvc2l0aW9uVW5kZXJsaW5lcy5jbGVhcigpOworICAgIG1fY3VzdG9tQ29tcG9zaXRpb25IaWdo
bGlnaHRzLmNsZWFyKCk7CiAKICAgICBpZiAoIXRleHQuaXNFbXB0eSgpKSB7CiAgICAgICAgIFR5
cGluZ0NvbW1hbmQ6Omluc2VydFRleHQoZG9jdW1lbnQoKSwgdGV4dCwgVHlwaW5nQ29tbWFuZDo6
U2VsZWN0SW5zZXJ0ZWRUZXh0IHwgVHlwaW5nQ29tbWFuZDo6UHJldmVudFNwZWxsQ2hlY2tpbmcs
IFR5cGluZ0NvbW1hbmQ6OlRleHRDb21wb3NpdGlvblBlbmRpbmcpOwpAQCAtMjA4NCw2ICsyMDg4
LDExIEBAIHZvaWQgRWRpdG9yOjpzZXRDb21wb3NpdGlvbihjb25zdCBTdHJpbmcmIHRleHQsIGNv
bnN0IFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGluCiAgICAgICAgICAgICAgICAgdW5kZXJsaW5l
LnN0YXJ0T2Zmc2V0ICs9IGJhc2VPZmZzZXQ7CiAgICAgICAgICAgICAgICAgdW5kZXJsaW5lLmVu
ZE9mZnNldCArPSBiYXNlT2Zmc2V0OwogICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9jdXN0
b21Db21wb3NpdGlvbkhpZ2hsaWdodHMgPSBoaWdobGlnaHRzOworICAgICAgICAgICAgZm9yIChh
dXRvJiBoaWdobGlnaHQgOiBtX2N1c3RvbUNvbXBvc2l0aW9uSGlnaGxpZ2h0cykgeworICAgICAg
ICAgICAgICAgIGhpZ2hsaWdodC5zdGFydE9mZnNldCArPSBiYXNlT2Zmc2V0OworICAgICAgICAg
ICAgICAgIGhpZ2hsaWdodC5lbmRPZmZzZXQgKz0gYmFzZU9mZnNldDsKKyAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGlmIChiYXNlTm9kZS0+cmVuZGVyZXIoKSkKICAgICAgICAgICAgICAgICBi
YXNlTm9kZS0+cmVuZGVyZXIoKS0+cmVwYWludCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApp
bmRleCAzYzA1YTg1ZGRhOTg1YjNhMDVmZThmMjdlMDE0OWU5MmU4YTJlYmIyLi42ZWE4OTIyZmIw
NzYyZGZlMDMyZjEwZjZkYTFhZmJkNmUzMTRlZjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgK
QEAgLTgzLDYgKzgzLDcgQEAgY2xhc3MgVGV4dDsKIGNsYXNzIFRleHRDaGVja2VyQ2xpZW50Owog
Y2xhc3MgVGV4dEV2ZW50OwogCitzdHJ1Y3QgQ29tcG9zaXRpb25IaWdobGlnaHQ7CiBzdHJ1Y3Qg
Rm9udEF0dHJpYnV0ZXM7CiBzdHJ1Y3QgUGFzdGVib2FyZFBsYWluVGV4dDsKIHN0cnVjdCBQYXN0
ZWJvYXJkVVJMOwpAQCAtMzU1LDcgKzM1Niw3IEBAIHB1YmxpYzoKIAogICAgIC8vIGludGVybmF0
aW9uYWwgdGV4dCBpbnB1dCBjb21wb3NpdGlvbgogICAgIGJvb2wgaGFzQ29tcG9zaXRpb24oKSBj
b25zdCB7IHJldHVybiBtX2NvbXBvc2l0aW9uTm9kZTsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiwgY29uc3QgVmVjdG9yPENvbXBvc2l0aW9u
VW5kZXJsaW5lPiYsIHVuc2lnbmVkIHNlbGVjdGlvblN0YXJ0LCB1bnNpZ25lZCBzZWxlY3Rpb25F
bmQpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5n
JiwgY29uc3QgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiYsIGNvbnN0IFZlY3RvcjxDb21w
b3NpdGlvbkhpZ2hsaWdodD4mLCB1bnNpZ25lZCBzZWxlY3Rpb25TdGFydCwgdW5zaWduZWQgc2Vs
ZWN0aW9uRW5kKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbmZpcm1Db21wb3NpdGlvbigp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29uZmlybUNvbXBvc2l0aW9uKGNvbnN0IFN0cmlu
ZyYpOyAvLyBpZiBubyBleGlzdGluZyBjb21wb3NpdGlvbiwgcmVwbGFjZXMgc2VsZWN0aW9uCiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjYW5jZWxDb21wb3NpdGlvbigpOwpAQCAtMzY5LDYgKzM3
MCw4IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBjb21wb3NpdGlvbkVuZCgpIGNvbnN0IHsgcmV0
dXJuIG1fY29tcG9zaXRpb25FbmQ7IH0KICAgICBib29sIGNvbXBvc2l0aW9uVXNlc0N1c3RvbVVu
ZGVybGluZXMoKSBjb25zdCB7IHJldHVybiAhbV9jdXN0b21Db21wb3NpdGlvblVuZGVybGluZXMu
aXNFbXB0eSgpOyB9CiAgICAgY29uc3QgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiYgY3Vz
dG9tQ29tcG9zaXRpb25VbmRlcmxpbmVzKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21Db21wb3Np
dGlvblVuZGVybGluZXM7IH0KKyAgICBib29sIGNvbXBvc2l0aW9uVXNlc0N1c3RvbUhpZ2hsaWdo
dHMoKSBjb25zdCB7IHJldHVybiAhbV9jdXN0b21Db21wb3NpdGlvbkhpZ2hsaWdodHMuaXNFbXB0
eSgpOyB9CisgICAgY29uc3QgVmVjdG9yPENvbXBvc2l0aW9uSGlnaGxpZ2h0PiYgY3VzdG9tQ29t
cG9zaXRpb25IaWdobGlnaHRzKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21Db21wb3NpdGlvbkhp
Z2hsaWdodHM7IH0KIAogICAgIGVudW0gY2xhc3MgUmV2ZWFsU2VsZWN0aW9uIHsgTm8sIFllcyB9
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SWdub3JlU2VsZWN0aW9uQ2hhbmdlcyhib29s
LCBSZXZlYWxTZWxlY3Rpb24gc2hvdWxkUmV2ZWFsRXhpc3RpbmdTZWxlY3Rpb24gPSBSZXZlYWxT
ZWxlY3Rpb246Olllcyk7CkBAIC02MDEsNiArNjA0LDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25l
ZCBtX2NvbXBvc2l0aW9uU3RhcnQ7CiAgICAgdW5zaWduZWQgbV9jb21wb3NpdGlvbkVuZDsKICAg
ICBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbmU+IG1fY3VzdG9tQ29tcG9zaXRpb25VbmRlcmxp
bmVzOworICAgIFZlY3RvcjxDb21wb3NpdGlvbkhpZ2hsaWdodD4gbV9jdXN0b21Db21wb3NpdGlv
bkhpZ2hsaWdodHM7CiAgICAgYm9vbCBtX2lnbm9yZVNlbGVjdGlvbkNoYW5nZXMgeyBmYWxzZSB9
OwogICAgIGJvb2wgbV9zaG91bGRTdGFydE5ld0tpbGxSaW5nU2VxdWVuY2UgeyBmYWxzZSB9Owog
ICAgIGJvb2wgbV9zaG91bGRTdHlsZVdpdGhDU1MgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCmluZGV4IDczZjhjNWUwM2Q5NmNlNGJmYzBkYzll
MzZkNDM4NzU1YjhjYTkzZjYuLmI0ZGY2YjhkMzUyNjE2NDYxNDBmZDkyODY3NjU4ZGFhZjU3NWJh
MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKQEAgLTI0
LDYgKzI0LDcgQEAKICNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCiAKICNpbmNsdWRlICJCcmVh
a0xpbmVzLmgiCisjaW5jbHVkZSAiQ29tcG9zaXRpb25IaWdobGlnaHQuaCIKICNpbmNsdWRlICJE
YXNoQXJyYXkuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TWFy
a2VyQ29udHJvbGxlci5oIgpAQCAtMTIyNCw3ICsxMjI1LDIzIEBAIHZvaWQgSW5saW5lVGV4dEJv
eDo6cGFpbnRNYXJrZWRUZXh0RGVjb3JhdGlvbihQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
RmxvYXRSCiAKIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRDb21wb3NpdGlvbkJhY2tncm91bmQo
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEZsb2F0UG9pbnQmIGJveE9yaWdpbikKIHsKLSAg
ICBwYWludE1hcmtlZFRleHRCYWNrZ3JvdW5kKHBhaW50SW5mbywgYm94T3JpZ2luLCBDb2xvcjo6
Y29tcG9zaXRpb25GaWxsLCBjbGFtcGVkT2Zmc2V0KHJlbmRlcmVyKCkuZnJhbWUoKS5lZGl0b3Io
KS5jb21wb3NpdGlvblN0YXJ0KCkpLCBjbGFtcGVkT2Zmc2V0KHJlbmRlcmVyKCkuZnJhbWUoKS5l
ZGl0b3IoKS5jb21wb3NpdGlvbkVuZCgpKSk7CisgICAgaWYgKCFyZW5kZXJlcigpLmZyYW1lKCku
ZWRpdG9yKCkuY29tcG9zaXRpb25Vc2VzQ3VzdG9tSGlnaGxpZ2h0cygpKSB7CisgICAgICAgIHBh
aW50TWFya2VkVGV4dEJhY2tncm91bmQocGFpbnRJbmZvLCBib3hPcmlnaW4sIENvbG9yOjpjb21w
b3NpdGlvbkZpbGwsIGNsYW1wZWRPZmZzZXQocmVuZGVyZXIoKS5mcmFtZSgpLmVkaXRvcigpLmNv
bXBvc2l0aW9uU3RhcnQoKSksIGNsYW1wZWRPZmZzZXQocmVuZGVyZXIoKS5mcmFtZSgpLmVkaXRv
cigpLmNvbXBvc2l0aW9uRW5kKCkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZv
ciAoYXV0byYgaGlnaGxpZ2h0IDogcmVuZGVyZXIoKS5mcmFtZSgpLmVkaXRvcigpLmN1c3RvbUNv
bXBvc2l0aW9uSGlnaGxpZ2h0cygpKSB7CisgICAgICAgIGlmIChoaWdobGlnaHQuZW5kT2Zmc2V0
IDw9IG1fc3RhcnQpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoaGlnaGxp
Z2h0LnN0YXJ0T2Zmc2V0ID49IGVuZCgpKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
cGFpbnRNYXJrZWRUZXh0QmFja2dyb3VuZChwYWludEluZm8sIGJveE9yaWdpbiwgaGlnaGxpZ2h0
LmNvbG9yLCBjbGFtcGVkT2Zmc2V0KGhpZ2hsaWdodC5zdGFydE9mZnNldCksIGNsYW1wZWRPZmZz
ZXQoaGlnaGxpZ2h0LmVuZE9mZnNldCkpOworCisgICAgICAgIGlmIChoaWdobGlnaHQuZW5kT2Zm
c2V0ID4gZW5kKCkpCisgICAgICAgICAgICBicmVhazsKKyAgICB9CiB9CiAKIHZvaWQgSW5saW5l
VGV4dEJveDo6cGFpbnRDb21wb3NpdGlvblVuZGVybGluZXMoUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IEZsb2F0UG9pbnQmIGJveE9yaWdpbikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggODU2MTEwNWJkNTgxZjIwN2U0NzFmMzVm
YWRhMjY5NDZiYmYwNjUwNy4uMDI3MzU3ZWViNzc1NzIwYWU3NTQyZGMzYTFhMjlhNzBiMzdhODc1
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAg
LTgzLDYgKzgzLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvQVhPYmplY3RDYWNoZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9BY3Rpdml0eVN0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yTWFjLmg+
CisjaW1wb3J0IDxXZWJDb3JlL0NvbXBvc2l0aW9uSGlnaGxpZ2h0Lmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0RpY3Rpb25hcnlMb29rdXAuaD4KICNpbXBvcnQgPFdlYkNvcmUvRHJhZ0RhdGEuaD4KICNp
bXBvcnQgPFdlYkNvcmUvRHJhZ0l0ZW0uaD4KQEAgLTUwNDMsNyArNTA0NCw3IEBAIHZvaWQgV2Vi
Vmlld0ltcGw6OnNldE1hcmtlZFRleHQoaWQgc3RyaW5nLCBOU1JhbmdlIHNlbGVjdGVkUmFuZ2Us
IE5TUmFuZ2UgcmVwbGFjCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3BhZ2UtPnNl
dENvbXBvc2l0aW9uQXN5bmModGV4dCwgdW5kZXJsaW5lcywgc2VsZWN0ZWRSYW5nZSwgcmVwbGFj
ZW1lbnRSYW5nZSk7CisgICAgbV9wYWdlLT5zZXRDb21wb3NpdGlvbkFzeW5jKHRleHQsIHVuZGVy
bGluZXMsIHsgfSwgc2VsZWN0ZWRSYW5nZSwgcmVwbGFjZW1lbnRSYW5nZSk7CiB9CiAKIC8vIFN5
bmNocm9ub3VzIE5TVGV4dElucHV0Q2xpZW50IGlzIHN0aWxsIGltcGxlbWVudGVkIHRvIGNhdGNo
IHNwdXJpb3VzIHN5bmMgY2FsbHMuIFJlbW92ZSB3aGVuIHRoYXQgaXMgbm8gbG9uZ2VyIG5lZWRl
ZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDM0NThjN2E5
NzAwNDJhOTA2ZWU5NWRjYTFlODFkZjcxZDJlZWFiMzAuLjJkNDkyMjg1ODM3NzFhOGIyYWUwYjdj
ZWE4YjFhMGU1MDZjNGIxM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcApAQCAtMTM5LDYgKzEzOSw3IEBACiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvQWRDbGlja0F0dHJpYnV0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9CaXRtYXBJbWFnZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ29tcG9zaXRpb25IaWdobGlnaHQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzU2l0ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXIuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0RPTVBhc3RlQWNjZXNzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9E
ZXByZWNhdGVkR2xvYmFsU2V0dGluZ3MuaD4KQEAgLTg1MDEsNyArODUwMiw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdS
YW5nZSYgcmFuZ2UsIFdUCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Rmlyc3RSZWN0Rm9y
Q2hhcmFjdGVyUmFuZ2VBc3luYyhyYW5nZSwgY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBh
Z2VQcm94eTo6c2V0Q29tcG9zaXRpb25Bc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZl
Y3RvcjxDb21wb3NpdGlvblVuZGVybGluZT4mIHVuZGVybGluZXMsIGNvbnN0IEVkaXRpbmdSYW5n
ZSYgc2VsZWN0aW9uUmFuZ2UsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSkK
K3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRDb21wb3NpdGlvbkFzeW5jKGNvbnN0IFN0cmluZyYgdGV4
dCwgY29uc3QgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiYgdW5kZXJsaW5lcywgY29uc3Qg
VmVjdG9yPENvbXBvc2l0aW9uSGlnaGxpZ2h0PiYgaGlnaGxpZ2h0cywgY29uc3QgRWRpdGluZ1Jh
bmdlJiBzZWxlY3Rpb25SYW5nZSwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudFJhbmdl
KQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewogICAgICAgICAvLyBJZiB0aGlz
IGZhaWxzLCB3ZSBzaG91bGQgY2FsbCAtZGlzY2FyZE1hcmtlZFRleHQgb24gaW5wdXQgY29udGV4
dCB0byBub3RpZnkgdGhlIGlucHV0IG1ldGhvZC4KQEAgLTg1MDksNyArODUxMCw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXRDb21wb3NpdGlvbkFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29u
c3QgVmVjdG9yPENvbXBvc2l0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZXRDb21wb3NpdGlvbkFzeW5jKHRleHQsIHVuZGVybGluZXMsIHNl
bGVjdGlvblJhbmdlLCByZXBsYWNlbWVudFJhbmdlKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6U2V0Q29tcG9zaXRpb25Bc3luYyh0ZXh0LCB1bmRlcmxpbmVzLCBoaWdobGlnaHRzLCBz
ZWxlY3Rpb25SYW5nZSwgcmVwbGFjZW1lbnRSYW5nZSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6Y29uZmlybUNvbXBvc2l0aW9uQXN5bmMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAppbmRleCAwYTkxYmE0NDVkOWFmZTJiNWM3ZWZhZWNjNWZlNTAzM2U3ZDc3Mzk3Li4y
YTc3OTdiNzU3MDFmODFiY2VkYTMzMGEyOTJiNTFmMzJjMGFhZGE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMjIyLDYgKzIyMiw3IEBAIGVudW0gY2xhc3MgV3Jp
dGluZ0RpcmVjdGlvbiA6IHVpbnQ4X3Q7CiAKIHN0cnVjdCBBcHBsaWNhdGlvbk1hbmlmZXN0Owog
c3RydWN0IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI7CitzdHJ1Y3QgQ29tcG9zaXRpb25IaWdo
bGlnaHQ7CiBzdHJ1Y3QgQ29udGVudFJ1bGVMaXN0UmVzdWx0czsKIHN0cnVjdCBEYXRhTGlzdFN1
Z2dlc3Rpb25JbmZvcm1hdGlvbjsKIHN0cnVjdCBEaWN0aW9uYXJ5UG9wdXBJbmZvOwpAQCAtODQx
LDcgKzg0Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFNlbGVjdGVkUmFuZ2VBc3luYyhXVEY6
OkZ1bmN0aW9uPHZvaWQgKEVkaXRpbmdSYW5nZSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwog
ICAgIHZvaWQgY2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiwgV1RGOjpGdW5jdGlvbjx2b2lkICh1aW50NjRfdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYpOwogICAgIHZvaWQgZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0
aW5nUmFuZ2UmLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBj
b25zdCBFZGl0aW5nUmFuZ2UmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7Ci0gICAgdm9pZCBz
ZXRDb21wb3NpdGlvbkFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVmVjdG9yPFdlYkNv
cmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPiYgdW5kZXJsaW5lcywgY29uc3QgRWRpdGluZ1Jhbmdl
JiBzZWxlY3Rpb25SYW5nZSwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudFJhbmdlKTsK
KyAgICB2b2lkIHNldENvbXBvc2l0aW9uQXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+JiwgY29uc3QgVmVjdG9yPFdlYkNv
cmU6OkNvbXBvc2l0aW9uSGlnaGxpZ2h0PiYsIGNvbnN0IEVkaXRpbmdSYW5nZSYgc2VsZWN0aW9u
UmFuZ2UsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSk7CiAgICAgdm9pZCBj
b25maXJtQ29tcG9zaXRpb25Bc3luYygpOwogCiAgICAgdm9pZCBzZXRTY3JvbGxQZXJmb3JtYW5j
ZURhdGFDb2xsZWN0aW9uRW5hYmxlZChib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IGJkNjc1ZDg1
YTExODFmZmM2ODgxYTc0ZjVkNzE0MmI0MGFlN2Y0ZjEuLjc4MjFlZjA0ODE2MjFiYWQxNzAzNzAz
MzJlNDY4MDAwZmJlMjgwZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtOTAsNiArOTAsOCBAQAogI2lt
cG9ydCA8Q29yZVRleHQvQ1RGb250RGVzY3JpcHRvci5oPgogI2ltcG9ydCA8TW9iaWxlQ29yZVNl
cnZpY2VzL1VUQ29yZVR5cGVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yLmg+CisjaW1wb3J0
IDxXZWJDb3JlL0NvbG9ySU9TLmg+CisjaW1wb3J0IDxXZWJDb3JlL0NvbXBvc2l0aW9uSGlnaGxp
Z2h0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RPTVBhc3RlQWNjZXNzLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0RhdGFEZXRlY3Rpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvRmxvYXRRdWFkLmg+CkBAIC0x
MTYsNiArMTE4LDcgQEAKICNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAj
aW1wb3J0IDxwYWwvc3BpL2NvY29hL0RhdGFEZXRlY3RvcnNDb3JlU1BJLmg+CiAjaW1wb3J0IDxw
YWwvc3BpL2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmg+CisjaW1wb3J0IDxwYWwvc3BpL2NvY29h
L05TQXR0cmlidXRlZFN0cmluZ1NQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9pb3MvRGF0YURldGVj
dG9yc1VJU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2lvcy9HcmFwaGljc1NlcnZpY2VzU1BJLmg+
CiAjaW1wb3J0IDxwYWwvc3BpL2lvcy9NYW5hZ2VkQ29uZmlndXJhdGlvblNQSS5oPgpAQCAtNDUx
OSwxMyArNDUyMiw0MyBAQCAtICh2b2lkKXNldE1hcmtlZFRleHRTdHlsZTooTlNEaWN0aW9uYXJ5
ICopc3R5bGVEaWN0aW9uYXJ5CiB7CiB9CiAKK3N0YXRpYyBWZWN0b3I8V2ViQ29yZTo6Q29tcG9z
aXRpb25IaWdobGlnaHQ+IGNvbXBvc2l0aW9uSGlnaGxpZ2h0cyhOU0F0dHJpYnV0ZWRTdHJpbmcg
KnN0cmluZykKK3sKKyAgICBpZiAoIXN0cmluZy5sZW5ndGgpCisgICAgICAgIHJldHVybiB7IH07
CisKKyAgICBWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25IaWdobGlnaHQ+IGhpZ2hsaWdodHM7
CisgICAgW3N0cmluZyBlbnVtZXJhdGVBdHRyaWJ1dGVzSW5SYW5nZTpOU01ha2VSYW5nZSgwLCBz
dHJpbmcubGVuZ3RoKSBvcHRpb25zOjAgdXNpbmdCbG9jazpbJmhpZ2hsaWdodHNdKE5TRGljdGlv
bmFyeTxOU0F0dHJpYnV0ZWRTdHJpbmdLZXksIGlkPiAqYXR0cmlidXRlcywgTlNSYW5nZSByYW5n
ZSwgQk9PTCAqKSB7CisgICAgICAgIGlmICghYXR0cmlidXRlc1tOU01hcmtlZENsYXVzZVNlZ21l
bnRBdHRyaWJ1dGVOYW1lXSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB1bnNpZ25l
ZCBsb2NhdGlvbiA9IHJhbmdlLmxvY2F0aW9uOworCisgICAgICAgIFdlYkNvcmU6OkNvbG9yIGhp
Z2hsaWdodENvbG9yIHsgV2ViQ29yZTo6Q29sb3I6OmNvbXBvc2l0aW9uRmlsbCB9OworICAgICAg
ICBpZiAoVUlDb2xvciAqdWlDb2xvciA9IGF0dHJpYnV0ZXNbTlNCYWNrZ3JvdW5kQ29sb3JBdHRy
aWJ1dGVOYW1lXSkKKyAgICAgICAgICAgIGhpZ2hsaWdodENvbG9yID0gV2ViQ29yZTo6Y29sb3JG
cm9tVUlDb2xvcih1aUNvbG9yKTsKKyAgICAgICAgaGlnaGxpZ2h0cy5hcHBlbmQoeyBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4obG9jYXRpb24pLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTlNNYXhSYW5n
ZShyYW5nZSkpLCBoaWdobGlnaHRDb2xvciB9KTsKKyAgICB9XTsKKyAgICByZXR1cm4gaGlnaGxp
Z2h0czsKK30KKworLSAodm9pZClzZXRBdHRyaWJ1dGVkTWFya2VkVGV4dDooTlNBdHRyaWJ1dGVk
U3RyaW5nICopbWFya2VkVGV4dCBzZWxlY3RlZFJhbmdlOihOU1JhbmdlKXNlbGVjdGVkUmFuZ2UK
K3sKKyAgICBbc2VsZiBfc2V0TWFya2VkVGV4dDptYXJrZWRUZXh0LnN0cmluZyBoaWdobGlnaHRz
OmNvbXBvc2l0aW9uSGlnaGxpZ2h0cyhtYXJrZWRUZXh0KSBzZWxlY3RlZFJhbmdlOnNlbGVjdGVk
UmFuZ2VdOworfQorCiAtICh2b2lkKXNldE1hcmtlZFRleHQ6KE5TU3RyaW5nICopbWFya2VkVGV4
dCBzZWxlY3RlZFJhbmdlOihOU1JhbmdlKXNlbGVjdGVkUmFuZ2UKK3sKKyAgICBbc2VsZiBfc2V0
TWFya2VkVGV4dDptYXJrZWRUZXh0IGhpZ2hsaWdodHM6VmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0
aW9uSGlnaGxpZ2h0PiB7IH0gc2VsZWN0ZWRSYW5nZTpzZWxlY3RlZFJhbmdlXTsKK30KKworLSAo
dm9pZClfc2V0TWFya2VkVGV4dDooTlNTdHJpbmcgKiltYXJrZWRUZXh0IGhpZ2hsaWdodHM6KGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvbkhpZ2hsaWdodD4mKWhpZ2hsaWdodHMgc2Vs
ZWN0ZWRSYW5nZTooTlNSYW5nZSlzZWxlY3RlZFJhbmdlCiB7CiAjaWYgVVNFKFVJS0lUX0tFWUJP
QVJEX0FERElUSU9OUykKICAgICBfY2FuZGlkYXRlVmlld05lZWRzVXBkYXRlID0gIXNlbGYuaGFz
TWFya2VkVGV4dDsKICNlbmRpZgogICAgIF9tYXJrZWRUZXh0ID0gbWFya2VkVGV4dDsKLSAgICBf
cGFnZS0+c2V0Q29tcG9zaXRpb25Bc3luYyhtYXJrZWRUZXh0LCBWZWN0b3I8V2ViQ29yZTo6Q29t
cG9zaXRpb25VbmRlcmxpbmU+KCksIHNlbGVjdGVkUmFuZ2UsIFdlYktpdDo6RWRpdGluZ1Jhbmdl
KCkpOworICAgIF9wYWdlLT5zZXRDb21wb3NpdGlvbkFzeW5jKG1hcmtlZFRleHQsIHsgfSwgaGln
aGxpZ2h0cywgc2VsZWN0ZWRSYW5nZSwgeyB9KTsKIH0KIAogLSAodm9pZCl1bm1hcmtUZXh0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCmluZGV4IGM2YzJhNmE1M2RjODJiZmI0MzkwZGVjMTIy
NmEzMTUzY2I5OTY3MzguLjM4NTE5OWNiYTY4N2U4NmZmOTczMDMzM2UzNTk2NDIyYjkxN2M2ZWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZVBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCkBAIC0yOCw3ICsyOCw5IEBACiAjaW5jbHVk
ZSAiV0tCdW5kbGVQYWdlUHJpdmF0ZS5oIgogCiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKKyNpbmNs
dWRlICJBUElEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiQVBJRnJhbWVIYW5kbGUuaCIKKyNpbmNs
dWRlICJBUElOdW1iZXIuaCIKICNpbmNsdWRlICJBUElTdHJpbmcuaCIKICNpbmNsdWRlICJBUElV
UkwuaCIKICNpbmNsdWRlICJBUElVUkxSZXF1ZXN0LmgiCkBAIC01OCw2ICs2MCw3IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9BWE9iamVjdENhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BY2Nlc3Np
YmlsaXR5T2JqZWN0SW50ZXJmYWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ29tcG9zaXRpb25IaWdobGlnaHQuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0ZvY3VzQ29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
RnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KQEAgLTYxMCw5ICs2MTMsMjIgQEAg
V0tBcnJheVJlZiBXS0J1bmRsZVBhZ2VDb3B5VHJhY2tlZFJlcGFpbnRSZWN0cyhXS0J1bmRsZVBh
Z2VSZWYgcGFnZVJlZikKICAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmV2ViS2l0Ojp0b0ltcGwo
cGFnZVJlZiktPnRyYWNrZWRSZXBhaW50UmVjdHMoKS5sZWFrUmVmKCkpOwogfQogCi12b2lkIFdL
QnVuZGxlUGFnZVNldENvbXBvc2l0aW9uKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmlu
Z1JlZiB0ZXh0LCBpbnQgZnJvbSwgaW50IGxlbmd0aCwgYm9vbCBzdXBwcmVzc1VuZGVybGluZSkK
K3ZvaWQgV0tCdW5kbGVQYWdlU2V0Q29tcG9zaXRpb24oV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYs
IFdLU3RyaW5nUmVmIHRleHQsIGludCBmcm9tLCBpbnQgbGVuZ3RoLCBib29sIHN1cHByZXNzVW5k
ZXJsaW5lLCBXS0FycmF5UmVmIGhpZ2hsaWdodERhdGEpCiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwo
cGFnZVJlZiktPnNldENvbXBvc2l0aW9uRm9yVGVzdGluZyhXZWJLaXQ6OnRvV1RGU3RyaW5nKHRl
eHQpLCBmcm9tLCBsZW5ndGgsIHN1cHByZXNzVW5kZXJsaW5lKTsKKyAgICBWZWN0b3I8V2ViQ29y
ZTo6Q29tcG9zaXRpb25IaWdobGlnaHQ+IGhpZ2hsaWdodHM7CisgICAgaWYgKGhpZ2hsaWdodERh
dGEpIHsKKyAgICAgICAgYXV0byogaGlnaGxpZ2h0RGF0YUFycmF5ID0gV2ViS2l0Ojp0b0ltcGwo
aGlnaGxpZ2h0RGF0YSk7CisgICAgICAgIGhpZ2hsaWdodHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShoaWdobGlnaHREYXRhQXJyYXktPnNpemUoKSk7CisgICAgICAgIGZvciAoYXV0byBkaWN0aW9u
YXJ5IDogaGlnaGxpZ2h0RGF0YUFycmF5LT5lbGVtZW50c09mVHlwZTxBUEk6OkRpY3Rpb25hcnk+
KCkpIHsKKyAgICAgICAgICAgIGF1dG8gc3RhcnRPZmZzZXQgPSBzdGF0aWNfY2FzdDxBUEk6OlVJ
bnQ2NCo+KGRpY3Rpb25hcnktPmdldCgiZnJvbSIpKS0+dmFsdWUoKTsKKyAgICAgICAgICAgIGhp
Z2hsaWdodHMudW5jaGVja2VkQXBwZW5kKHsKKyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oc3RhcnRPZmZzZXQpLAorICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihzdGFydE9mZnNldCArIHN0YXRpY19jYXN0PEFQSTo6VUludDY0Kj4oZGljdGlvbmFyeS0+
Z2V0KCJsZW5ndGgiKSktPnZhbHVlKCkpLAorICAgICAgICAgICAgICAgIFdlYkNvcmU6OkNvbG9y
KHN0YXRpY19jYXN0PEFQSTo6U3RyaW5nKj4oZGljdGlvbmFyeS0+Z2V0KCJjb2xvciIpKS0+c3Ry
aW5nKCkpCisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBXZWJLaXQ6OnRv
SW1wbChwYWdlUmVmKS0+c2V0Q29tcG9zaXRpb25Gb3JUZXN0aW5nKFdlYktpdDo6dG9XVEZTdHJp
bmcodGV4dCksIGZyb20sIGxlbmd0aCwgc3VwcHJlc3NVbmRlcmxpbmUsIGhpZ2hsaWdodHMpOwog
fQogCiBib29sIFdLQnVuZGxlUGFnZUhhc0NvbXBvc2l0aW9uKFdLQnVuZGxlUGFnZVJlZiBwYWdl
UmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlUGFnZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VQcml2YXRlLmgKaW5kZXggM2E5ODgxNDdi
NGU2NjcxOTczMWQyYmI0NGNmMzMzOWViMWU0MDliMy4uM2FjYTUzZDU3YTZhYjY3NDU4MTk1YWMy
YWM0MjI0OTAyZmRhMjhiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlUHJpdmF0ZS5o
CkBAIC04NCw3ICs4NCw3IEBAIFdLX0VYUE9SVCBib29sIFdLQnVuZGxlUGFnZUlzVHJhY2tpbmdS
ZXBhaW50cyhXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBh
Z2VSZXNldFRyYWNrZWRSZXBhaW50cyhXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7CiBXS19FWFBPUlQg
V0tBcnJheVJlZiBXS0J1bmRsZVBhZ2VDb3B5VHJhY2tlZFJlcGFpbnRSZWN0cyhXS0J1bmRsZVBh
Z2VSZWYgcGFnZSk7CiAKLVdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZVNldENvbXBvc2l0aW9u
KFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiB0ZXh0LCBpbnQgZnJvbSwgaW50IGxl
bmd0aCwgYm9vbCBzdXBwcmVzc1VuZGVybGluZSk7CitXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBh
Z2VTZXRDb21wb3NpdGlvbihXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgdGV4dCwg
aW50IGZyb20sIGludCBsZW5ndGgsIGJvb2wgc3VwcHJlc3NVbmRlcmxpbmUsIFdLQXJyYXlSZWYg
aGlnaGxpZ2h0RGF0YSk7CiBXS19FWFBPUlQgYm9vbCBXS0J1bmRsZVBhZ2VIYXNDb21wb3NpdGlv
bihXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VDb25m
aXJtQ29tcG9zaXRpb24oV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOwogV0tfRVhQT1JUIHZvaWQgV0tC
dW5kbGVQYWdlQ29uZmlybUNvbXBvc2l0aW9uV2l0aFRleHQoV0tCdW5kbGVQYWdlUmVmIHBhZ2Us
IFdLU3RyaW5nUmVmIHRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L2dsaWIvV2ViRWRpdG9yQ2xpZW50R0xpYi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ2xpYi9XZWJFZGl0b3JDbGllbnRHTGliLmNw
cAppbmRleCA5NmU4MjU3ZTE0NzM5YmIwZDk5NGY2YTJiZjM3MTBkNzc3NmFhNWI0Li40ODVmMWZk
MDk5NjkwMTExMzRlNTc3Njk1ZGMyYjA0ZDNiMWZkMTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ2xpYi9XZWJFZGl0b3JDbGllbnRHTGliLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ2xpYi9XZWJF
ZGl0b3JDbGllbnRHTGliLmNwcApAQCAtMjAsNiArMjAsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIldlYkVkaXRvckNsaWVudC5oIgogCisjaW5jbHVkZSA8V2ViQ29yZS9Db21w
b3NpdGlvbkhpZ2hsaWdodC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0VkaXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KQEAgLTQ3
LDcgKzQ4LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmRpZERpc3BhdGNoSW5wdXRNZXRob2RL
ZXlkb3duKEtleWJvYXJkRXZlbnQmIGV2ZW50KQogICAgIGlmIChjb25zdCBhdXRvJiB1bmRlcmxp
bmVzID0gcGxhdGZvcm1FdmVudC0+cHJlZWRpdFVuZGVybGluZXMoKSkgewogICAgICAgICBhdXRv
IHJhbmdlU3RhcnQgPSBwbGF0Zm9ybUV2ZW50LT5wcmVlZGl0U2VsZWN0aW9uUmFuZ2VTdGFydCgp
LnZhbHVlT3IoMCk7CiAgICAgICAgIGF1dG8gcmFuZ2VMZW5ndGggPSBwbGF0Zm9ybUV2ZW50LT5w
cmVlZGl0U2VsZWN0aW9uUmFuZ2VMZW5ndGgoKS52YWx1ZU9yKDApOwotICAgICAgICBmcmFtZS0+
ZWRpdG9yKCkuc2V0Q29tcG9zaXRpb24ocGxhdGZvcm1FdmVudC0+dGV4dCgpLCB1bmRlcmxpbmVz
LnZhbHVlKCksIHJhbmdlU3RhcnQsIHJhbmdlU3RhcnQgKyByYW5nZUxlbmd0aCk7CisgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS5zZXRDb21wb3NpdGlvbihwbGF0Zm9ybUV2ZW50LT50ZXh0KCksIHVu
ZGVybGluZXMudmFsdWUoKSwgeyB9LCByYW5nZVN0YXJ0LCByYW5nZVN0YXJ0ICsgcmFuZ2VMZW5n
dGgpOwogICAgIH0gZWxzZQogICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY29uZmlybUNvbXBvc2l0
aW9uKHBsYXRmb3JtRXZlbnQtPnRleHQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGUzMDNjMjJkZjNjNzZiYWM3ZmU0ODJhMzk5MzU4
MjAwYmYxYzdhYmEuLjNhMWE5ZTgzYzRlYjljM2Y3NmMyMzdkMjFkYWQ3NzBmNWE4ZjU4NjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC01MTAw
LDcgKzUxMDAsNyBAQCB2b2lkIFdlYlBhZ2U6OnNpbXVsYXRlTW91c2VNb3Rpb24oV2ViQ29yZTo6
SW50UG9pbnQgcG9zaXRpb24sIFdhbGxUaW1lIHRpbWUpCiAgICAgbW91c2VFdmVudChXZWJNb3Vz
ZUV2ZW50KFdlYk1vdXNlRXZlbnQ6Ok1vdXNlTW92ZSwgV2ViTW91c2VFdmVudDo6Tm9CdXR0b24s
IDAsIHBvc2l0aW9uLCBwb3NpdGlvbiwgMCwgMCwgMCwgMCwgT3B0aW9uU2V0PFdlYkV2ZW50OjpN
b2RpZmllcj4geyB9LCB0aW1lLCAwLCBXZWJNb3VzZUV2ZW50OjpOb1RhcCkpOwogfQogCi12b2lk
IFdlYlBhZ2U6OnNldENvbXBvc2l0aW9uRm9yVGVzdGluZyhjb25zdCBTdHJpbmcmIGNvbXBvc2l0
aW9uU3RyaW5nLCB1aW50NjRfdCBmcm9tLCB1aW50NjRfdCBsZW5ndGgsIGJvb2wgc3VwcHJlc3NV
bmRlcmxpbmUpCit2b2lkIFdlYlBhZ2U6OnNldENvbXBvc2l0aW9uRm9yVGVzdGluZyhjb25zdCBT
dHJpbmcmIGNvbXBvc2l0aW9uU3RyaW5nLCB1aW50NjRfdCBmcm9tLCB1aW50NjRfdCBsZW5ndGgs
IGJvb2wgc3VwcHJlc3NVbmRlcmxpbmUsIGNvbnN0IFZlY3RvcjxDb21wb3NpdGlvbkhpZ2hsaWdo
dD4mIGhpZ2hsaWdodHMpCiB7CiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRy
b2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBpZiAoIWZyYW1lLmVkaXRvcigpLmNh
bkVkaXQoKSkKQEAgLTUxMTAsNyArNTExMCw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0Q29tcG9zaXRp
b25Gb3JUZXN0aW5nKGNvbnN0IFN0cmluZyYgY29tcG9zaXRpb25TdHJpbmcsIHVpbnQ2NF90CiAg
ICAgaWYgKCFzdXBwcmVzc1VuZGVybGluZSkKICAgICAgICAgdW5kZXJsaW5lcy5hcHBlbmQoQ29t
cG9zaXRpb25VbmRlcmxpbmUoMCwgY29tcG9zaXRpb25TdHJpbmcubGVuZ3RoKCksIENvbXBvc2l0
aW9uVW5kZXJsaW5lQ29sb3I6OlRleHRDb2xvciwgQ29sb3IoQ29sb3I6OmJsYWNrKSwgZmFsc2Up
KTsKIAotICAgIGZyYW1lLmVkaXRvcigpLnNldENvbXBvc2l0aW9uKGNvbXBvc2l0aW9uU3RyaW5n
LCB1bmRlcmxpbmVzLCBmcm9tLCBmcm9tICsgbGVuZ3RoKTsKKyAgICBmcmFtZS5lZGl0b3IoKS5z
ZXRDb21wb3NpdGlvbihjb21wb3NpdGlvblN0cmluZywgdW5kZXJsaW5lcywgaGlnaGxpZ2h0cywg
ZnJvbSwgZnJvbSArIGxlbmd0aCk7CiB9CiAKIGJvb2wgV2ViUGFnZTo6aGFzQ29tcG9zaXRpb25G
b3JUZXN0aW5nKCkKQEAgLTUzNDksNyArNTM0OSw3IEBAIHZvaWQgV2ViUGFnZTo6Zmlyc3RSZWN0
Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmIGVkaXRpbmdSYW5nZSwK
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlY3RGb3JDaGFyYWN0ZXJSYW5nZUNh
bGxiYWNrKHJlc3VsdCwgZWRpdGluZ1JhbmdlLCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2Vi
UGFnZTo6c2V0Q29tcG9zaXRpb25Bc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZlY3Rv
cjxDb21wb3NpdGlvblVuZGVybGluZT4mIHVuZGVybGluZXMsIGNvbnN0IEVkaXRpbmdSYW5nZSYg
c2VsZWN0aW9uLCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50RWRpdGluZ1JhbmdlKQor
dm9pZCBXZWJQYWdlOjpzZXRDb21wb3NpdGlvbkFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29u
c3QgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiYgdW5kZXJsaW5lcywgY29uc3QgVmVjdG9y
PENvbXBvc2l0aW9uSGlnaGxpZ2h0PiYgaGlnaGxpZ2h0cywgY29uc3QgRWRpdGluZ1JhbmdlJiBz
ZWxlY3Rpb24sIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRFZGl0aW5nUmFuZ2UpCiB7
CiAgICAgcGxhdGZvcm1XaWxsUGVyZm9ybUVkaXRpbmdDb21tYW5kKCk7CiAKQEAgLTUzNjMsNyAr
NTM2Myw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0Q29tcG9zaXRpb25Bc3luYyhjb25zdCBTdHJpbmcm
IHRleHQsIGNvbnN0IFZlY3RvcjxDb21wb3NpdGlvblVuCiAgICAgICAgICAgICAgICAgZnJhbWUu
c2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oKnJlcGxhY2VtZW50UmFu
Z2UsIFNFTF9ERUZBVUxUX0FGRklOSVRZKSk7CiAgICAgICAgIH0KIAotICAgICAgICBmcmFtZS5l
ZGl0b3IoKS5zZXRDb21wb3NpdGlvbih0ZXh0LCB1bmRlcmxpbmVzLCBzZWxlY3Rpb24ubG9jYXRp
b24sIHNlbGVjdGlvbi5sb2NhdGlvbiArIHNlbGVjdGlvbi5sZW5ndGgpOworICAgICAgICBmcmFt
ZS5lZGl0b3IoKS5zZXRDb21wb3NpdGlvbih0ZXh0LCB1bmRlcmxpbmVzLCBoaWdobGlnaHRzLCBz
ZWxlY3Rpb24ubG9jYXRpb24sIHNlbGVjdGlvbi5sb2NhdGlvbiArIHNlbGVjdGlvbi5sZW5ndGgp
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CmluZGV4IGEyNzUzNzZmOTEyYTIwZDNjNGRkZDA0YzU2MjMwNjYzYmE5ZmU3ZjMuLmI5ZWQ5ZDRm
YzZkODE5OTFiZDE5ZmYyMmQxZTgyOTBlODlmZjU0NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE5Niw2ICsxOTYsNyBAQCBlbnVtIGNsYXNzIFRl
eHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uIDogdWludDhfdDsKIGVudW0gY2xhc3Mg
V3JpdGluZ0RpcmVjdGlvbiA6IHVpbnQ4X3Q7CiAKIHN0cnVjdCBCYWNrRm9yd2FyZEl0ZW1JZGVu
dGlmaWVyOworc3RydWN0IENvbXBvc2l0aW9uSGlnaGxpZ2h0Owogc3RydWN0IENvbXBvc2l0aW9u
VW5kZXJsaW5lOwogc3RydWN0IERpY3RhdGlvbkFsdGVybmF0aXZlOwogc3RydWN0IEVsZW1lbnRD
b250ZXh0OwpAQCAtODI0LDcgKzgyNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFNlbGVjdGVk
UmFuZ2VBc3luYyhDYWxsYmFja0lEKTsKICAgICB2b2lkIGNoYXJhY3RlckluZGV4Rm9yUG9pbnRB
c3luYyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgZmly
c3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmLCBDYWxsYmFj
a0lEKTsKLSAgICB2b2lkIHNldENvbXBvc2l0aW9uQXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBj
b25zdCBWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+JiB1bmRlcmxpbmVzLCBj
b25zdCBFZGl0aW5nUmFuZ2UmIHNlbGVjdGlvblJhbmdlLCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJl
cGxhY2VtZW50UmFuZ2UpOworICAgIHZvaWQgc2V0Q29tcG9zaXRpb25Bc3luYyhjb25zdCBTdHJp
bmcmIHRleHQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4mLCBj
b25zdCBWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25IaWdobGlnaHQ+JiwgY29uc3QgRWRpdGlu
Z1JhbmdlJiBzZWxlY3Rpb25SYW5nZSwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudFJh
bmdlKTsKICAgICB2b2lkIGNvbmZpcm1Db21wb3NpdGlvbkFzeW5jKCk7CiAKICAgICB2b2lkIHJl
YWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wmJik+JiYpOwpAQCAtODQ1LDcgKzg0Niw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHJlcGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVib2FyZERhdGEoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKICNlbmRp
ZgogCi0gICAgdm9pZCBzZXRDb21wb3NpdGlvbkZvclRlc3RpbmcoY29uc3QgU3RyaW5nJiBjb21w
b3NpdGlvblN0cmluZywgdWludDY0X3QgZnJvbSwgdWludDY0X3QgbGVuZ3RoLCBib29sIHN1cHBy
ZXNzVW5kZXJsaW5lKTsKKyAgICB2b2lkIHNldENvbXBvc2l0aW9uRm9yVGVzdGluZyhjb25zdCBT
dHJpbmcmIGNvbXBvc2l0aW9uU3RyaW5nLCB1aW50NjRfdCBmcm9tLCB1aW50NjRfdCBsZW5ndGgs
IGJvb2wgc3VwcHJlc3NVbmRlcmxpbmUsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlv
bkhpZ2hsaWdodD4mKTsKICAgICBib29sIGhhc0NvbXBvc2l0aW9uRm9yVGVzdGluZygpOwogICAg
IHZvaWQgY29uZmlybUNvbXBvc2l0aW9uRm9yVGVzdGluZyhjb25zdCBTdHJpbmcmIGNvbXBvc2l0
aW9uU3RyaW5nKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggZTlhZDYwZjYxMTM0N2VmYTkwMmU3OTUzYmU3OGIy
MjJlZTEwNjYyMy4uZGNiMTIzNGU5NWFjYWNmY2RlZTZiZTYwYjY5ZDA4MWQ1ZjFjNjM5OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCkBAIC00NTMsNyArNDUzLDcgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFu
ZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBH
ZXRTZWxlY3RlZFJhbmdlQXN5bmMoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAg
Q2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBXZWJL
aXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCk7CiAgICAgRmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFu
Z2VBc3luYyhzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgcmFuZ2UsIFdlYktpdDo6Q2FsbGJh
Y2tJRCBjYWxsYmFja0lEKTsKLSAgICBTZXRDb21wb3NpdGlvbkFzeW5jKFN0cmluZyB0ZXh0LCBW
ZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+IHVuZGVybGluZXMsIHN0cnVjdCBX
ZWJLaXQ6OkVkaXRpbmdSYW5nZSBzZWxlY3Rpb25SYW5nZSwgc3RydWN0IFdlYktpdDo6RWRpdGlu
Z1JhbmdlIHJlcGxhY2VtZW50UmFuZ2UpCisgICAgU2V0Q29tcG9zaXRpb25Bc3luYyhTdHJpbmcg
dGV4dCwgVmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPiB1bmRlcmxpbmVzLCBW
ZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25IaWdobGlnaHQ+IGhpZ2hsaWdodHMsIHN0cnVjdCBX
ZWJLaXQ6OkVkaXRpbmdSYW5nZSBzZWxlY3Rpb25SYW5nZSwgc3RydWN0IFdlYktpdDo6RWRpdGlu
Z1JhbmdlIHJlcGxhY2VtZW50UmFuZ2UpCiAgICAgQ29uZmlybUNvbXBvc2l0aW9uQXN5bmMoKQog
I2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViRnJhbWUubW0KaW5kZXggZjk5NGM1Y2NkNTUwNzczYmU4M2M1YWIyM2E1YzFiNGVlYjBh
MGI0YS4uMmZlY2JiNTE1YzdkZjUwOWVmYjY0MDA5OWQxODE5MjI0NjcxZDJiNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC02Niw2ICs2Niw3IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL0NhY2hlZFJlc291cmNlTG9hZGVyLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0Nocm9tZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db2xvck1hYy5oPgorI2ltcG9ydCA8V2Vi
Q29yZS9Db21wb3NpdGlvbkhpZ2hsaWdodC5oPgogI2ltcG9ydCA8V2ViQ29yZS9EYXRhYmFzZU1h
bmFnZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRGcmFnbWVudC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9Eb2N1bWVudExvYWRlci5oPgpAQCAtMTY0OSw3ICsxNjUwLDcgQEAgLSAodm9pZClz
ZXRNYXJrZWRUZXh0OihOU1N0cmluZyAqKXRleHQgc2VsZWN0ZWRSYW5nZTooTlNSYW5nZSluZXdT
ZWxSYW5nZQogICAgIAogICAgIFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4g
dW5kZXJsaW5lczsKICAgICBmcmFtZS0+cGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5zdXBwcmVz
c0Zvcm1Ob3RpZmljYXRpb25zKCk7Ci0gICAgZnJhbWUtPmVkaXRvcigpLnNldENvbXBvc2l0aW9u
KHRleHQsIHVuZGVybGluZXMsIG5ld1NlbFJhbmdlLmxvY2F0aW9uLCBOU01heFJhbmdlKG5ld1Nl
bFJhbmdlKSk7CisgICAgZnJhbWUtPmVkaXRvcigpLnNldENvbXBvc2l0aW9uKHRleHQsIHVuZGVy
bGluZXMsIHsgfSwgbmV3U2VsUmFuZ2UubG9jYXRpb24sIE5TTWF4UmFuZ2UobmV3U2VsUmFuZ2Up
KTsKICAgICBmcmFtZS0+cGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5yZXN0b3JlRm9ybU5vdGlm
aWNhdGlvbnMoKTsKIH0KIApAQCAtMTY2MCw3ICsxNjYxLDcgQEAgLSAodm9pZClzZXRNYXJrZWRU
ZXh0OihOU1N0cmluZyAqKXRleHQgZm9yQ2FuZGlkYXRlczooQk9PTClmb3JDYW5kaWRhdGVzCiAg
ICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgVmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9u
VW5kZXJsaW5lPiB1bmRlcmxpbmVzOwotICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRDb21wb3NpdGlv
bih0ZXh0LCB1bmRlcmxpbmVzLCAwLCBbdGV4dCBsZW5ndGhdKTsKKyAgICBmcmFtZS0+ZWRpdG9y
KCkuc2V0Q29tcG9zaXRpb24odGV4dCwgdW5kZXJsaW5lcywgeyB9LCAwLCBbdGV4dCBsZW5ndGhd
KTsKIH0KIAogLSAodm9pZCljb25maXJtTWFya2VkVGV4dDooTlNTdHJpbmcgKil0ZXh0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCBiMmEx
ZDA4NTkzOGVmM2U3ZDIyNTlmZWYxNjZkZGJjZjUzODk3ZjhkLi40NzI3NzNlMzRhOWY0YjgyYjU3
MGZmMWQ1ZDczNzU4ZDYyNGNmYTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTgwLDYgKzgwLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUv
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ2hyb21lLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0NvbG9yTWFjLmg+CisjaW1wb3J0IDxXZWJDb3JlL0NvbXBvc2l0aW9uSGln
aGxpZ2h0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbnRleHRNZW51Lmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0NvbnRleHRNZW51Q29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9EaWN0aW9uYXJ5
TG9va3VwLmg+CkBAIC02NTcwLDcgKzY1NzEsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVO
VEFUSU9OU19FTkQKICAgICBpZiAocmVwbGFjZW1lbnRSYW5nZS5sb2NhdGlvbiAhPSBOU05vdEZv
dW5kKQogICAgICAgICBbW3NlbGYgX2ZyYW1lXSBfc2VsZWN0TlNSYW5nZTpyZXBsYWNlbWVudFJh
bmdlXTsKIAotICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCkuc2V0Q29tcG9zaXRpb24odGV4dCwgdW5k
ZXJsaW5lcywgbmV3U2VsUmFuZ2UubG9jYXRpb24sIE5TTWF4UmFuZ2UobmV3U2VsUmFuZ2UpKTsK
KyAgICBjb3JlRnJhbWUtPmVkaXRvcigpLnNldENvbXBvc2l0aW9uKHRleHQsIHVuZGVybGluZXMs
IHsgfSwgbmV3U2VsUmFuZ2UubG9jYXRpb24sIE5TTWF4UmFuZ2UobmV3U2VsUmFuZ2UpKTsKIH0K
IAogQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfQkVHSU4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViVmlldy5jcHAKaW5kZXggZTM4YjUzYmEyOGM4YjA1NzMxYzFmYzg4MGQ3YjgwNzU1MDI2
ZjVmOC4uNmFhMGFlZThiODBlNzQyOTUzODQ0MWJlMjliZmYyMjgzNDNjNjUwMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViVmlldy5jcHAKQEAgLTg1LDYgKzg1LDcgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL0JpdG1hcEluZm8uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NhY2hlU3RvcmFnZVByb3ZpZGVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DaHJvbWUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NvbXBv
c2l0aW9uSGlnaGxpZ2h0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZXh0TWVudS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQ29udGV4dE1lbnVDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9Db29raWVKYXIuaD4KQEAgLTYzOTksNyArNjQwMCw3IEBAIGJvb2wgV2ViVmlldzo6b25JTUVD
b21wb3NpdGlvbihMUEFSQU0gbHBhcmFtKQogCiAgICAgICAgIGludCBjdXJzb3JQb3NpdGlvbiA9
IExPV09SRChJTU1EaWN0OjpkaWN0KCkuZ2V0Q29tcG9zaXRpb25TdHJpbmcoaElucHV0Q29udGV4
dCwgR0NTX0NVUlNPUlBPUywgMCwgMCkpOwogCi0gICAgICAgIHRhcmdldEZyYW1lLmVkaXRvcigp
LnNldENvbXBvc2l0aW9uKGNvbXBvc2l0aW9uU3RyaW5nLCB1bmRlcmxpbmVzLCBjdXJzb3JQb3Np
dGlvbiwgMCk7CisgICAgICAgIHRhcmdldEZyYW1lLmVkaXRvcigpLnNldENvbXBvc2l0aW9uKGNv
bXBvc2l0aW9uU3RyaW5nLCB1bmRlcmxpbmVzLCB7IH0sIGN1cnNvclBvc2l0aW9uLCAwKTsKICAg
ICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTc2OTIsNyArNzY5Myw3IEBAIEhSRVNVTFQgV2Vi
Vmlldzo6c2V0Q29tcG9zaXRpb25Gb3JUZXN0aW5nKF9Jbl8gQlNUUiBjb21wb3NpdGlvbiwgVUlO
VCBmcm9tLCBVSU5UCiAKICAgICBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbmU+IHVuZGVybGlu
ZXM7CiAgICAgdW5kZXJsaW5lcy5hcHBlbmQoQ29tcG9zaXRpb25VbmRlcmxpbmUoMCwgY29tcG9z
aXRpb25TdHIubGVuZ3RoKCksIENvbXBvc2l0aW9uVW5kZXJsaW5lQ29sb3I6OlRleHRDb2xvciwg
Q29sb3IoQ29sb3I6OmJsYWNrKSwgZmFsc2UpKTsKLSAgICBmcmFtZS5lZGl0b3IoKS5zZXRDb21w
b3NpdGlvbihjb21wb3NpdGlvblN0ciwgdW5kZXJsaW5lcywgZnJvbSwgZnJvbSArIGxlbmd0aCk7
CisgICAgZnJhbWUuZWRpdG9yKCkuc2V0Q29tcG9zaXRpb24oY29tcG9zaXRpb25TdHIsIHVuZGVy
bGluZXMsIHsgfSwgZnJvbSwgZnJvbSArIGxlbmd0aCk7CiAKICAgICByZXR1cm4gU19PSzsKIH0K
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlODE4
MWE4OGUxZmZiODRlMzFiYTFlNDdhOWNmYzRiMzc2OTA2NDczLi45NzA0MTkxYWVjMjk5MDJjYTY4
Mzk1YzRkMDI2MDJhOWYwYmM5Zjc2IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMjAtMDEtMzEgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHNw
ZWNpZnlpbmcgYmFja2dyb3VuZCBjb2xvcnMgd2hlbiBzZXR0aW5nIG1hcmtlZCB0ZXh0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDcwNjUKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzU3ODc2MTQwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGluIFdlYktpdFRlc3RSdW5uZXIgZm9y
IHNwZWNpZnlpbmcgYSBsaXN0IG9mIGhpZ2hsaWdodCByYW5nZXMgd2hlbiBzZXR0aW5nIG1hcmtl
ZCB0ZXh0LiBUaGlzIGNvbWVzCisgICAgICAgIGluIHRoZSBmb3JtIG9mIGFuIGFkZGl0aW9uYWwg
YXJndW1lbnQgdG8gVGV4dElucHV0Q29udHJvbGxlcjo6c2V0TWFya2VkVGV4dCwgd2hpY2ggY29u
dGFpbnMgYW4gYXJyYXkgb2Ygb2JqZWN0cywKKyAgICAgICAgZWFjaCBkZXNjcmliaW5nIG9uZSBy
YW5nZSAoaW4gdGhlIGNvbXBvc2l0aW9uKSB0byBoaWdobGlnaHQuCisKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9pb3MvVGV4dElucHV0Q29udHJvbGxlcklPUy5tOgorICAgICAgICAoK1tUZXh0
SW5wdXRDb250cm9sbGVyIGlzU2VsZWN0b3JFeGNsdWRlZEZyb21XZWJTY3JpcHQ6XSk6CisgICAg
ICAgICgrW1RleHRJbnB1dENvbnRyb2xsZXIgd2ViU2NyaXB0TmFtZUZvclNlbGVjdG9yOl0pOgor
ICAgICAgICAoLVtUZXh0SW5wdXRDb250cm9sbGVyIHNldE1hcmtlZFRleHQ6c2VsZWN0ZWRGcm9t
Omxlbmd0aDpzdXBwcmVzc1VuZGVybGluZTpoaWdobGlnaHRzOl0pOgorICAgICAgICAoLVtUZXh0
SW5wdXRDb250cm9sbGVyIHNldE1hcmtlZFRleHQ6c2VsZWN0ZWRGcm9tOmxlbmd0aDpzdXBwcmVz
c1VuZGVybGluZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvVGV4
dElucHV0Q29udHJvbGxlck1hYy5tOgorICAgICAgICAoK1tUZXh0SW5wdXRDb250cm9sbGVyIGlz
U2VsZWN0b3JFeGNsdWRlZEZyb21XZWJTY3JpcHQ6XSk6CisgICAgICAgICgrW1RleHRJbnB1dENv
bnRyb2xsZXIgd2ViU2NyaXB0TmFtZUZvclNlbGVjdG9yOl0pOgorICAgICAgICAoLVtUZXh0SW5w
dXRDb250cm9sbGVyIHNldE1hcmtlZFRleHQ6c2VsZWN0ZWRGcm9tOmxlbmd0aDpzdXBwcmVzc1Vu
ZGVybGluZTpoaWdobGlnaHRzOl0pOgorICAgICAgICAoLVtUZXh0SW5wdXRDb250cm9sbGVyIHNl
dE1hcmtlZFRleHQ6c2VsZWN0ZWRGcm9tOmxlbmd0aDpzdXBwcmVzc1VuZGVybGluZTpdKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdz
L1RleHRJbnB1dENvbnRyb2xsZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGV4dElucHV0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OmFycmF5
TGVuZ3RoKToKKyAgICAgICAgKFdUUjo6Y3JlYXRlQ29tcG9zaXRpb25IaWdobGlnaHREYXRhKToK
KworICAgICAgICBBZGQgbG9naWMgdG8gY29udmVydCBhIGdpdmVuIEpTT2JqZWN0IGNvbnRhaW5p
bmcgdGhlIGNvbXBvc2l0aW9uIGhpZ2hsaWdodCBpbmZvcm1hdGlvbiBpbnRvIGEgV0tBcnJheVJl
Ziwgd2hpY2gKKyAgICAgICAgaXMgdGhlbiBwYXNzZWQgaW50byBXZWJLaXQgdmlhIFdLQnVuZGxl
UGFnZVNldENvbXBvc2l0aW9uLgorCisgICAgICAgIChXVFI6OlRleHRJbnB1dENvbnRyb2xsZXI6
OnNldE1hcmtlZFRleHQpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGV4dElucHV0Q29udHJvbGxlci5oOgorCiAyMDIwLTAxLTMwICBKaWV3ZW4gVGFuICA8amll
d2VuX3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgYW5vdGhlciBzcGVjdWxh
dGl2ZSB0ZXN0IGZpeCBhZnRlciByMjU1MDQxCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9pb3MvVGV4dElucHV0Q29udHJvbGxlcklPUy5tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
aW9zL1RleHRJbnB1dENvbnRyb2xsZXJJT1MubQppbmRleCAwOTJlZmU0NTEzYzdkMmM0NjQxZWRj
ODY4N2IzOTg5NzdkZjRlYWU1Li45ZDEyN2Q2NWM1ZmQwNGE2ZmUzYTllOTQyZWI1ZjVjYzJmZTBm
ZjRmIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvVGV4dElucHV0Q29udHJv
bGxlcklPUy5tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9UZXh0SW5wdXRDb250cm9s
bGVySU9TLm0KQEAgLTM5LDcgKzM5LDcgQEAgQGltcGxlbWVudGF0aW9uIFRleHRJbnB1dENvbnRy
b2xsZXIKICsgKEJPT0wpaXNTZWxlY3RvckV4Y2x1ZGVkRnJvbVdlYlNjcmlwdDooU0VMKWFTZWxl
Y3RvcgogewogICAgIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKGluc2VydFRleHQ6KQotICAg
ICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHNldE1hcmtlZFRleHQ6c2VsZWN0ZWRGcm9t
Omxlbmd0aDpzdXBwcmVzc1VuZGVybGluZTopCisgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2Vs
ZWN0b3Ioc2V0TWFya2VkVGV4dDpzZWxlY3RlZEZyb206bGVuZ3RoOnN1cHByZXNzVW5kZXJsaW5l
OmhpZ2hsaWdodHM6KQogICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKG1hcmtlZFJh
bmdlKSkKICAgICAgICAgcmV0dXJuIE5POwogCkBAIC01MCw3ICs1MCw3IEBAICsgKE5TU3RyaW5n
ICopd2ViU2NyaXB0TmFtZUZvclNlbGVjdG9yOihTRUwpYVNlbGVjdG9yCiB7CiAgICAgaWYgKGFT
ZWxlY3RvciA9PSBAc2VsZWN0b3IoaW5zZXJ0VGV4dDopKQogICAgICAgICByZXR1cm4gQCJpbnNl
cnRUZXh0IjsKLSAgICBpZiAoYVNlbGVjdG9yID09IEBzZWxlY3RvcihzZXRNYXJrZWRUZXh0OnNl
bGVjdGVkRnJvbTpsZW5ndGg6c3VwcHJlc3NVbmRlcmxpbmU6KSkKKyAgICBpZiAoYVNlbGVjdG9y
ID09IEBzZWxlY3RvcihzZXRNYXJrZWRUZXh0OnNlbGVjdGVkRnJvbTpsZW5ndGg6c3VwcHJlc3NV
bmRlcmxpbmU6aGlnaGxpZ2h0czopKQogICAgICAgICByZXR1cm4gQCJzZXRNYXJrZWRUZXh0IjsK
ICAgICBpZiAoYVNlbGVjdG9yID09IEBzZWxlY3RvcihtYXJrZWRSYW5nZSkpCiAgICAgICAgIHJl
dHVybiBAIm1hcmtlZFJhbmdlIjsKQEAgLTgzLDcgKzgzLDcgQEAgLSAodm9pZClpbnNlcnRUZXh0
OihOU1N0cmluZyAqKXRleHQKICAgICBbW3dlYlZpZXcgbWFpbkZyYW1lXSBjb25maXJtTWFya2Vk
VGV4dDp0ZXh0XTsKIH0KIAotLSAodm9pZClzZXRNYXJrZWRUZXh0OihOU1N0cmluZyAqKXRleHQg
c2VsZWN0ZWRGcm9tOihOU0ludGVnZXIpc2VsZWN0aW9uU3RhcnQgbGVuZ3RoOihOU0ludGVnZXIp
c2VsZWN0aW9uTGVuZ3RoIHN1cHByZXNzVW5kZXJsaW5lOihCT09MKXN1cHByZXNzVW5kZXJsaW5l
CistICh2b2lkKXNldE1hcmtlZFRleHQ6KE5TU3RyaW5nICopdGV4dCBzZWxlY3RlZEZyb206KE5T
SW50ZWdlcilzZWxlY3Rpb25TdGFydCBsZW5ndGg6KE5TSW50ZWdlcilzZWxlY3Rpb25MZW5ndGgg
c3VwcHJlc3NVbmRlcmxpbmU6KEJPT0wpc3VwcHJlc3NVbmRlcmxpbmUgaGlnaGxpZ2h0czooTlNB
cnJheTxOU0RpY3Rpb25hcnkgKj4gKiloaWdobGlnaHRzCiB7CiAgICAgaWYgKHNlbGVjdGlvblN0
YXJ0ID09IC0xKQogICAgICAgICBzZWxlY3Rpb25TdGFydCA9IE5TTm90Rm91bmQ7CmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGV4dElucHV0Q29udHJvbGxlck1hYy5tIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1RleHRJbnB1dENvbnRyb2xsZXJNYWMubQppbmRleCA1
NmZlOTY3YWU3NzA1YzkxNGJlOTA5NGM4MDllODFkYjcxMjVjMDcxLi4xY2JiZDcxZDRhYzFiYWFl
NzFiNGY5YzQ3NWNhYjIxN2JhMjNjMjQ1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvVGV4dElucHV0Q29udHJvbGxlck1hYy5tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9UZXh0SW5wdXRDb250cm9sbGVyTWFjLm0KQEAgLTIyNCw3ICsyMjQsNyBAQCArIChCT09M
KWlzU2VsZWN0b3JFeGNsdWRlZEZyb21XZWJTY3JpcHQ6KFNFTClhU2VsZWN0b3IKIHsKICAgICBp
ZiAoYVNlbGVjdG9yID09IEBzZWxlY3RvcihpbnNlcnRUZXh0OikKICAgICAgICAgfHwgYVNlbGVj
dG9yID09IEBzZWxlY3Rvcihkb0NvbW1hbmQ6KQotICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNl
bGVjdG9yKHNldE1hcmtlZFRleHQ6c2VsZWN0ZWRGcm9tOmxlbmd0aDpzdXBwcmVzc1VuZGVybGlu
ZTopCisgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3Ioc2V0TWFya2VkVGV4dDpzZWxl
Y3RlZEZyb206bGVuZ3RoOnN1cHByZXNzVW5kZXJsaW5lOmhpZ2hsaWdodHM6KQogICAgICAgICB8
fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHVubWFya1RleHQpCiAgICAgICAgIHx8IGFTZWxlY3Rv
ciA9PSBAc2VsZWN0b3IoaGFzTWFya2VkVGV4dCkKICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBz
ZWxlY3Rvcihjb252ZXJzYXRpb25JZGVudGlmaWVyKQpAQCAtMjUxLDcgKzI1MSw3IEBAICsgKE5T
U3RyaW5nICopd2ViU2NyaXB0TmFtZUZvclNlbGVjdG9yOihTRUwpYVNlbGVjdG9yCiAgICAgICAg
IHJldHVybiBAImluc2VydFRleHQiOwogICAgIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKGRv
Q29tbWFuZDopKQogICAgICAgICByZXR1cm4gQCJkb0NvbW1hbmQiOwotICAgIGlmIChhU2VsZWN0
b3IgPT0gQHNlbGVjdG9yKHNldE1hcmtlZFRleHQ6c2VsZWN0ZWRGcm9tOmxlbmd0aDpzdXBwcmVz
c1VuZGVybGluZTopKQorICAgIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHNldE1hcmtlZFRl
eHQ6c2VsZWN0ZWRGcm9tOmxlbmd0aDpzdXBwcmVzc1VuZGVybGluZTpoaWdobGlnaHRzOikpCiAg
ICAgICAgIHJldHVybiBAInNldE1hcmtlZFRleHQiOwogICAgIGlmIChhU2VsZWN0b3IgPT0gQHNl
bGVjdG9yKHN1YnN0cmluZ0Zyb206bGVuZ3RoOikpCiAgICAgICAgIHJldHVybiBAInN1YnN0cmlu
Z0Zyb21SYW5nZSI7CkBAIC0zMTQsNyArMzE0LDcgQEAgLSAodm9pZClkb0NvbW1hbmQ6KE5TU3Ry
aW5nICopYUNvbW1hbmQKICAgICAgICAgW3RleHRJbnB1dCBkb0NvbW1hbmRCeVNlbGVjdG9yOk5T
U2VsZWN0b3JGcm9tU3RyaW5nKGFDb21tYW5kKV07CiB9CiAKLS0gKHZvaWQpc2V0TWFya2VkVGV4
dDooTlNTdHJpbmcgKilhU3RyaW5nIHNlbGVjdGVkRnJvbTooaW50KWZyb20gbGVuZ3RoOihpbnQp
bGVuZ3RoIHN1cHByZXNzVW5kZXJsaW5lOihCT09MKXN1cHByZXNzVW5kZXJsaW5lCistICh2b2lk
KXNldE1hcmtlZFRleHQ6KE5TU3RyaW5nICopYVN0cmluZyBzZWxlY3RlZEZyb206KGludClmcm9t
IGxlbmd0aDooaW50KWxlbmd0aCBzdXBwcmVzc1VuZGVybGluZTooQk9PTClzdXBwcmVzc1VuZGVy
bGluZSBoaWdobGlnaHRzOihOU0FycmF5PE5TRGljdGlvbmFyeSAqPiAqKWhpZ2hsaWdodHMKIHsK
ICAgICBOU09iamVjdCA8TlNUZXh0SW5wdXQ+ICp0ZXh0SW5wdXQgPSBbc2VsZiB0ZXh0SW5wdXRd
OwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Jp
bmRpbmdzL1RleHRJbnB1dENvbnRyb2xsZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXh0SW5wdXRDb250cm9sbGVyLmlkbAppbmRleCBhNzNh
ZDk2N2M5OWFhZDljYWQxZDUwMDI4OWFkYWI2NzhkOGI5MmFlLi44Nzc1NjQ5NDcxZTYyYzAxNjQz
MWNlMGU5ZDI4ODEwNGEzZmY5MjRkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1RleHRJbnB1dENvbnRyb2xsZXIuaWRsCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGV4dElucHV0Q29u
dHJvbGxlci5pZGwKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiBpbnRlcmZhY2UgVGV4dElucHV0
Q29udHJvbGxlciB7Ci0gICAgdm9pZCBzZXRNYXJrZWRUZXh0KERPTVN0cmluZyBzdHJpbmcsIGxv
bmcgZnJvbSwgbG9uZyBsZW5ndGgsIGJvb2xlYW4gc3VwcHJlc3NVbmRlcmxpbmUpOworICAgIHZv
aWQgc2V0TWFya2VkVGV4dChET01TdHJpbmcgc3RyaW5nLCBsb25nIGZyb20sIGxvbmcgbGVuZ3Ro
LCBib29sZWFuIHN1cHByZXNzVW5kZXJsaW5lLCBvYmplY3QgaGlnaGxpZ2h0cyk7CiAgICAgYm9v
bGVhbiBoYXNNYXJrZWRUZXh0KCk7CiAgICAgdm9pZCB1bm1hcmtUZXh0KCk7CiAgICAgdm9pZCBp
bnNlcnRUZXh0KERPTVN0cmluZyBzdHJpbmcpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXh0SW5wdXRDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGV4dElucHV0Q29udHJvbGxlci5jcHAKaW5k
ZXggMzM2NmM3MGFmMWQ5NjNlMDM2NmE2YTk4ZmUxMThhYjYwYjRkNjRiYi4uNjRhYzgxOTcxNTNh
YWUwYTBhYjcxZWJiYzI5NDI0ODRhMzVlNjVhZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXh0SW5wdXRDb250cm9sbGVyLmNwcAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1RleHRJbnB1dENvbnRyb2xsZXIuY3Bw
CkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVQYWdlLmgiCiAjaW5j
bHVkZSAiSlNUZXh0SW5wdXRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU3RyaW5nRnVuY3Rpb25z
LmgiCisjaW5jbHVkZSA8V2ViS2l0L1dLQnVuZGxlRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJLaXQv
V0tCdW5kbGVQYWdlUHJpdmF0ZS5oPgogCiBuYW1lc3BhY2UgV1RSIHsKQEAgLTU3LDkgKzU4LDcy
IEBAIHZvaWQgVGV4dElucHV0Q29udHJvbGxlcjo6bWFrZVdpbmRvd09iamVjdChKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNPYmplY3RSZWYgd2luCiAgICAgc2V0UHJvcGVydHkoY29udGV4dCwgd2lu
ZG93T2JqZWN0LCAidGV4dElucHV0Q29udHJvbGxlciIsIHRoaXMsIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUsIGV4Y2VwdGlvbik7
CiB9CiAKLXZvaWQgVGV4dElucHV0Q29udHJvbGxlcjo6c2V0TWFya2VkVGV4dChKU1N0cmluZ1Jl
ZiB0ZXh0LCBpbnQgZnJvbSwgaW50IGxlbmd0aCwgYm9vbCBzdXBwcmVzc1VuZGVybGluZSkKK3N0
YXRpYyB1bnNpZ25lZCBhcnJheUxlbmd0aChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RS
ZWYgYXJyYXkpCiB7Ci0gICAgV0tCdW5kbGVQYWdlU2V0Q29tcG9zaXRpb24oSW5qZWN0ZWRCdW5k
bGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFnZSgpLCB0b1dLKHRleHQpLmdldCgpLCBmcm9tLCBs
ZW5ndGgsIHN1cHByZXNzVW5kZXJsaW5lKTsKKyAgICBhdXRvIGxlbmd0aFN0cmluZyA9IGFkb3B0
KEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJsZW5ndGgiKSk7CisgICAgaWYgKGF1dG8g
bGVuZ3RoVmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGFycmF5LCBsZW5ndGhT
dHJpbmcuZ2V0KCksIG51bGxwdHIpKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBsZW5ndGhWYWx1ZSwgbnVsbHB0cikpOworICAg
IHJldHVybiAwOworfQorCitzdGF0aWMgV0tBcnJheVJlZiBjcmVhdGVDb21wb3NpdGlvbkhpZ2hs
aWdodERhdGEoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYganNIaWdobGlnaHRzVmFs
dWUpCit7CisgICAgaWYgKCFqc0hpZ2hsaWdodHNWYWx1ZSB8fCAhSlNWYWx1ZUlzQXJyYXkoY29u
dGV4dCwganNIaWdobGlnaHRzVmFsdWUpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IGF1dG8gcmVzdWx0ID0gV0tNdXRhYmxlQXJyYXlDcmVhdGUoKTsKKyAgICBhdXRvIGpzSGlnaGxp
Z2h0c0FycmF5ID0gY29uc3RfY2FzdDxKU09iamVjdFJlZj4oanNIaWdobGlnaHRzVmFsdWUpOwor
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IGFycmF5TGVuZ3RoKGNvbnRleHQsIGpzSGlnaGxpZ2h0c0Fy
cmF5KTsKKyAgICBpZiAoIWxlbmd0aCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKworICAgIGF1
dG8ganNGcm9tS2V5ID0gYWRvcHQoSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImZyb20i
KSk7CisgICAgYXV0byBqc0xlbmd0aEtleSA9IGFkb3B0KEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJsZW5ndGgiKSk7CisgICAgYXV0byBqc0NvbG9yS2V5ID0gYWRvcHQoSlNTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoImNvbG9yIikpOworCisgICAgYXV0byB3a0Zyb21LZXkgPSBh
ZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJmcm9tIikpOworICAgIGF1dG8g
d2tMZW5ndGhLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJsZW5n
dGgiKSk7CisgICAgYXV0byB3a0NvbG9yS2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiY29sb3IiKSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0
aDsgKytpKSB7CisgICAgICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gbnVsbHB0cjsKKyAgICAg
ICAgYXV0byBqc09iamVjdFZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eUF0SW5kZXgoY29udGV4
dCwganNIaWdobGlnaHRzQXJyYXksIGksICZleGNlcHRpb24pOworICAgICAgICBpZiAoZXhjZXB0
aW9uIHx8ICFKU1ZhbHVlSXNPYmplY3QoY29udGV4dCwganNPYmplY3RWYWx1ZSkpCisgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRvIGpzT2JqZWN0ID0gY29uc3RfY2FzdDxKU09i
amVjdFJlZj4oanNPYmplY3RWYWx1ZSk7CisgICAgICAgIGF1dG8ganNGcm9tVmFsdWUgPSBKU09i
amVjdEdldFByb3BlcnR5KGNvbnRleHQsIGpzT2JqZWN0LCBqc0Zyb21LZXkuZ2V0KCksIG51bGxw
dHIpOworICAgICAgICBpZiAoIWpzRnJvbVZhbHVlIHx8ICFKU1ZhbHVlSXNOdW1iZXIoY29udGV4
dCwganNGcm9tVmFsdWUpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgYXV0byBq
c0xlbmd0aFZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBqc09iamVjdCwganNM
ZW5ndGhLZXkuZ2V0KCksIG51bGxwdHIpOworICAgICAgICBpZiAoIWpzTGVuZ3RoVmFsdWUgfHwg
IUpTVmFsdWVJc051bWJlcihjb250ZXh0LCBqc0xlbmd0aFZhbHVlKSkKKyAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgIGF1dG8ganNDb2xvclZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0
eShjb250ZXh0LCBqc09iamVjdCwganNDb2xvcktleS5nZXQoKSwgbnVsbHB0cik7CisgICAgICAg
IGlmICghanNDb2xvclZhbHVlIHx8ICFKU1ZhbHVlSXNTdHJpbmcoY29udGV4dCwganNDb2xvclZh
bHVlKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGF1dG8gY29sb3IgPSBhZG9w
dChKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGpzQ29sb3JWYWx1ZSwgbnVsbHB0cikpOwor
ICAgICAgICBhdXRvIHdrQ29sb3IgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aEpTU3RyaW5n
KGNvbG9yLmdldCgpKSk7CisgICAgICAgIGF1dG8gd2tGcm9tID0gYWRvcHRXSyhXS1VJbnQ2NENy
ZWF0ZShscm91bmQoSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGpzRnJvbVZhbHVlLCBudWxscHRy
KSkpKTsKKyAgICAgICAgYXV0byB3a0xlbmd0aCA9IGFkb3B0V0soV0tVSW50NjRDcmVhdGUobHJv
dW5kKEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBqc0xlbmd0aFZhbHVlLCBudWxscHRyKSkpKTsK
KworICAgICAgICBhdXRvIGRpY3Rpb25hcnkgPSBhZG9wdFdLKFdLTXV0YWJsZURpY3Rpb25hcnlD
cmVhdGUoKSk7CisgICAgICAgIFdLRGljdGlvbmFyeVNldEl0ZW0oZGljdGlvbmFyeS5nZXQoKSwg
d2tGcm9tS2V5LmdldCgpLCB3a0Zyb20uZ2V0KCkpOworICAgICAgICBXS0RpY3Rpb25hcnlTZXRJ
dGVtKGRpY3Rpb25hcnkuZ2V0KCksIHdrTGVuZ3RoS2V5LmdldCgpLCB3a0xlbmd0aC5nZXQoKSk7
CisgICAgICAgIFdLRGljdGlvbmFyeVNldEl0ZW0oZGljdGlvbmFyeS5nZXQoKSwgd2tDb2xvcktl
eS5nZXQoKSwgd2tDb2xvci5nZXQoKSk7CisgICAgICAgIFdLQXJyYXlBcHBlbmRJdGVtKHJlc3Vs
dCwgZGljdGlvbmFyeS5nZXQoKSk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
dm9pZCBUZXh0SW5wdXRDb250cm9sbGVyOjpzZXRNYXJrZWRUZXh0KEpTU3RyaW5nUmVmIHRleHQs
IGludCBmcm9tLCBpbnQgbGVuZ3RoLCBib29sIHN1cHByZXNzVW5kZXJsaW5lLCBKU1ZhbHVlUmVm
IGpzSGlnaGxpZ2h0c1ZhbHVlKQoreworICAgIGF1dG8gcGFnZSA9IEluamVjdGVkQnVuZGxlOjpz
aW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKTsKKyAgICBhdXRvIGhpZ2hsaWdodHMgPSBhZG9wdFdL
KGNyZWF0ZUNvbXBvc2l0aW9uSGlnaGxpZ2h0RGF0YShXS0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlw
dENvbnRleHQoV0tCdW5kbGVQYWdlR2V0TWFpbkZyYW1lKHBhZ2UpKSwganNIaWdobGlnaHRzVmFs
dWUpKTsKKyAgICBXS0J1bmRsZVBhZ2VTZXRDb21wb3NpdGlvbihwYWdlLCB0b1dLKHRleHQpLmdl
dCgpLCBmcm9tLCBsZW5ndGgsIHN1cHByZXNzVW5kZXJsaW5lLCBoaWdobGlnaHRzLmdldCgpKTsK
IH0KIAogYm9vbCBUZXh0SW5wdXRDb250cm9sbGVyOjpoYXNNYXJrZWRUZXh0KCkKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGV4dElucHV0Q29udHJv
bGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXh0SW5wdXRD
b250cm9sbGVyLmgKaW5kZXggNGVhNzIwNDRjODg3MDVhYmVkNDk4NzE2ZjhkYmZlNGY4ZDc5NGIw
MC4uNTU4YzJlNjExNDA4MTc4NWUzYjdjYWUxOWZlZmQzOTZhZWIzN2E5NCAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXh0SW5wdXRDb250cm9sbGVy
LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXh0SW5wdXRD
b250cm9sbGVyLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBtYWtlV2lu
ZG93T2JqZWN0KEpTQ29udGV4dFJlZiwgSlNPYmplY3RSZWYgd2luZG93T2JqZWN0LCBKU1ZhbHVl
UmVmKiBleGNlcHRpb24pOwogCi0gICAgdm9pZCBzZXRNYXJrZWRUZXh0KEpTU3RyaW5nUmVmIHRl
eHQsIGludCBmcm9tLCBpbnQgbGVuZ3RoLCBib29sIHN1cHByZXNzVW5kZXJsaW5lKTsKKyAgICB2
b2lkIHNldE1hcmtlZFRleHQoSlNTdHJpbmdSZWYgdGV4dCwgaW50IGZyb20sIGludCBsZW5ndGgs
IGJvb2wgc3VwcHJlc3NVbmRlcmxpbmUsIEpTVmFsdWVSZWYgaGlnaGxpZ2h0cyk7CiAgICAgYm9v
bCBoYXNNYXJrZWRUZXh0KCk7CiAgICAgdm9pZCB1bm1hcmtUZXh0KCk7CiAgICAgdm9pZCBpbnNl
cnRUZXh0KEpTU3RyaW5nUmVmIHRleHQpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGQ3YjkzYzU4ZTExOGQ1ODVjZWE5ZmZi
MTQ5OGNjNjlkY2E2NzA4NDguLmE0MGI5ZTk0ZDZhZDQ3ZWFkYjczMDlkMDE2YzY2NzU1YmYwNTQw
YWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMC0wMS0zMSAgV2Vuc29uIEhzaWVoICA8d2Vu
c29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Igc3BlY2lmeWlu
ZyBiYWNrZ3JvdW5kIGNvbG9ycyB3aGVuIHNldHRpbmcgbWFya2VkIHRleHQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzA2NQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNTc4NzYxNDA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIGEgdGVzdCB0byBjaGVjayB0aGF0IGhpZ2hsaWdodGluZyBkaWZm
ZXJlbnQgcGFydHMgb2YgYSBjb21wb3NpdGlvbiByYW5nZSByZXN1bHRzIGluIHRoZSBzYW1lIGJl
aGF2aW9yIGFzCisgICAgICAgIGFwcGx5aW5nIGJhY2tncm91bmQgY29sb3JzIHVzaW5nIENTUy4g
VGhpcyB0ZXN0IGlzIGN1cnJlbnRseSBvbmx5IHN1cHBvcnRlZCBpbiBXZWJLaXQyLgorCisgICAg
ICAgICogVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBlZGl0aW5nL2lucHV0L2NvbXBvc2l0
aW9uLWhpZ2hsaWdodHMtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9p
bnB1dC9jb21wb3NpdGlvbi1oaWdobGlnaHRzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL3drMi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIwLTAxLTMwICBSeW9zdWtlIE5pd2EgIDxy
bml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT046IFtNYWMgd2sxXSBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24tbWFya3VwL3Njcmlw
dHMvdW5kZXJvdmVyLXBhcmFtZXRlcnMtMy5odG1sIGlzIGEgZmxha2V5IGZhaWx1cmUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhw
ZWN0YXRpb25zCmluZGV4IDVhMjUwODI3NWUxYjdiMWViNWE1OGQ3NzJkNDkxY2MzNzdjZmRkNjMu
LjQ2YTk5NDMwYzM3MDM5ZWFlZjA0NWZjNWQ1NmU0YmYzZTAyOWM4OTAgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0
aW9ucwpAQCAtNzUsNiArNzUsOSBAQCBjb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9jbGlwcGlu
Zy1zY29wZSBbIFNraXAgXQogcHJpbnRpbmcvcHJpbnRpbmctZXZlbnRzLmh0bWwgWyBTa2lwIF0K
IGZhc3QvZm9ybXMvZW50ZXJrZXloaW50LWF0dHJpYnV0ZS12YWx1ZXMuaHRtbCBbIFNraXAgXQog
CisjIEhpZ2hsaWdodGluZyBtYXJrZWQgdGV4dCByYW5nZXMgZnJvbSBsYXlvdXQgdGVzdHMgaXMg
b25seSBzdXBwb3J0ZWQgaW4gV2ViS2l0Mi4KK2VkaXRpbmcvaW5wdXQvY29tcG9zaXRpb24taGln
aGxpZ2h0cy5odG1sIFsgU2tpcCBdCisKIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC14
c2wtZXh0ZXJuYWwtZW50aXR5LW5vLWxvZ2dpbmcueG1sIFsgU2tpcCBdCiAKICMgd2luZG93LnNo
b3dNb2RhbERpYWxvZyBpcyBvbmx5IHRlc3RlZCBpbiBEdW1wUmVuZGVyVHJlZSBvbiBNYWMuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2lucHV0L2NvbXBvc2l0aW9uLWhpZ2hsaWdo
dHMtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvaW5wdXQvY29tcG9zaXRpb24t
aGlnaGxpZ2h0cy1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhY2Y4NDU1OTJiYjE1YTQxNDc4
MzczNjZhYWNmNWM5NDlkN2U1ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0
aW5nL2lucHV0L2NvbXBvc2l0aW9uLWhpZ2hsaWdodHMtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsx
LDE3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CitkaXZbY29u
dGVudGVkaXRhYmxlXSB7CisgICAgZm9udC1zaXplOiAyMHB4OworfQorI3JlZCB7IGJhY2tncm91
bmQtY29sb3I6ICNGRjAwMDAzMzsgfQorI2dyZWVuIHsgYmFja2dyb3VuZC1jb2xvcjogIzAwRkYw
MDMzOyB9CisjYmx1ZSB7IGJhY2tncm91bmQtY29sb3I6ICMwMDAwRkYzMzsgfQorPC9zdHlsZT4K
KzwvaGVhZD4KKzxib2R5PgorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgaGlnaGxpZ2h0cyBjYW4g
YmUgc3BlY2lmaWVkIHdoZW4gc2V0dGluZyBtYXJrZWQgdGV4dC4KKzxkaXYgY29udGVudGVkaXRh
YmxlPlRlc3Q6Jm5ic3A7PHNwYW4gaWQ9InJlZCI+b25lPC9zcGFuPjxzcGFuIGlkPSJncmVlbiI+
dHdvPC9zcGFuPjxzcGFuIGlkPSJibHVlIj50aHJlZTwvc3Bhbj48L2Rpdj4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvaW5wdXQvY29tcG9zaXRpb24t
aGlnaGxpZ2h0cy5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbnB1dC9jb21wb3NpdGlvbi1o
aWdobGlnaHRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODRmMjI5NDRmY2ZkY2Y4MTNhZjVkN2FlMzZiZTFl
M2U0ZGY4ZGJlMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvaW5wdXQv
Y29tcG9zaXRpb24taGlnaGxpZ2h0cy5odG1sCkBAIC0wLDAgKzEsMzAgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KK2Rpdltjb250ZW50ZWRpdGFibGVdIHsKKyAg
ICBmb250LXNpemU6IDIwcHg7CisgICAgb3V0bGluZTogbm9uZTsKKyAgICBjYXJldC1jb2xvcjog
dHJhbnNwYXJlbnQ7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CitUaGlzIHRlc3QgdmVy
aWZpZXMgdGhhdCBoaWdobGlnaHRzIGNhbiBiZSBzcGVjaWZpZWQgd2hlbiBzZXR0aW5nIG1hcmtl
ZCB0ZXh0LgorPGRpdiBjb250ZW50ZWRpdGFibGU+VGVzdDombmJzcDs8L2Rpdj4KKworPHNjcmlw
dD4KK2NvbnN0IGVkaXRvciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImRpdltjb250ZW50ZWRp
dGFibGVdIik7CitlZGl0b3IuZm9jdXMoKTsKK2dldFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKGVk
aXRvciwgMSk7CisKK2lmICh3aW5kb3cudGV4dElucHV0Q29udHJvbGxlcikgeworICAgIHRleHRJ
bnB1dENvbnRyb2xsZXIuc2V0TWFya2VkVGV4dCgib25ldHdvdGhyZWUiLCAxMSwgMTEsIHRydWUs
IFsKKyAgICAgICAgeyBmcm9tOiAwLCBsZW5ndGg6IDMsIGNvbG9yOiAiI0ZGMDAwMDMzIiB9LAor
ICAgICAgICB7IGZyb206IDMsIGxlbmd0aDogMywgY29sb3I6ICIjMDBGRjAwMzMiIH0sCisgICAg
ICAgIHsgZnJvbTogNiwgbGVuZ3RoOiA1LCBjb2xvcjogIiMwMDAwRkYzMyIgfQorICAgIF0pOwor
fQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IDhlMjU5ZWQ5MWRiNThhY2I3OTM5MTllYWNkMGZjMzA0YWI4
NDNjNzAuLjkwNmE5MWQxY2Q3Y2U2MDE0NmJlYmZjZTU2NWU4M2RlZDllNTUxYTIgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zCkBAIC03NjgsNiArNzY4LDkgQEAg
aW5zcGVjdG9yL3J1bnRpbWUvY2FsbEZ1bmN0aW9uT24tZW11bGF0ZVVzZXJHZXN0dXJlLXVzZXJJ
c0ludGVyYWN0aW5nLmh0bWwgWyBQYXMKICMgVGFyZ2V0IGRvbWFpbiBpcyBvbmx5IHByZXNlbnQg
aW4gV2ViS2l0Mi4KIGh0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldCBbIFBhc3MgXQogCisjIEhp
Z2hsaWdodGluZyBtYXJrZWQgdGV4dCByYW5nZXMgZnJvbSBsYXlvdXQgdGVzdHMgaXMgb25seSBz
dXBwb3J0ZWQgaW4gV2ViS2l0Mi4KK2VkaXRpbmcvaW5wdXQvY29tcG9zaXRpb24taGlnaGxpZ2h0
cy5odG1sIFsgUGFzcyBdCisKICMjIyBFTkQgT0YgKDUpIFByb2dyZXNzaW9ucywgZXhwZWN0ZWQg
c3VjY2Vzc2VzIHRoYXQgYXJlIGV4cGVjdGVkIGZhaWx1cmVzIGluIFdlYktpdDEuCiAjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389406</attachid>
            <date>2020-01-31 13:45:07 -0800</date>
            <delta_ts>2020-01-31 14:01:02 -0800</delta_ts>
            <desc>Fix GTK build</desc>
            <filename>bug-207065-20200131134506.patch</filename>
            <type>text/plain</type>
            <size>59641</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1NDg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzc1MGY5MTA5YWFkNzgw
Yjk1YjFjODE4NjI3YjYwNDgzMDc4ZGM3Zi4uOGU2ZTMzOTI2MWUyZWFhOWM3ZjBmZTJmOWMzODgx
ZWE5ZTkzMDM2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIwLTAxLTMxICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0
IGZvciBzcGVjaWZ5aW5nIGJhY2tncm91bmQgY29sb3JzIHdoZW4gc2V0dGluZyBtYXJrZWQgdGV4
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3MDY1
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81Nzg3NjE0MD4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgcmVuZGVyaW5nIGN1
c3RvbSBoaWdobGlnaHRzIChiYWNrZ3JvdW5kIGNvbG9ycykgYmVoaW5kIG1hcmtlZCB0ZXh0IGlu
IFdlYkNvcmUuIFRvIGRvIHRoaXMsIHdlCisgICAgICAgIHBsdW1iIGEgVmVjdG9yIG9mIENvbXBv
c2l0aW9uSGlnaGxpZ2h0cyBhbG9uZ3NpZGUgdGhlIFZlY3RvciBvZiBDb21wb3NpdGlvblVuZGVy
bGluZXMgdG8gRWRpdG9yLiBBdCBwYWludCB0aW1lLAorICAgICAgICB3ZSB0aGVuIGNvbnN1bHQg
dGhpcyBoaWdobGlnaHQgZGF0YSB0byBkZXRlcm1pbmUgd2hpY2ggcmFuZ2VzIG9mIHRleHQgaW4g
dGhlIGNvbXBvc2l0aW9uIHNob3VsZCBwYWludCB1c2luZworICAgICAgICBjdXN0b20gYmFja2dy
b3VuZCBjb2xvcnMuCisKKyAgICAgICAgTm90ZSB0aGF0IGluIHRoZSBmdXR1cmUsIHdlIHNob3Vs
ZCBjb25zaWRlciByZWZhY3RvcmluZyBib3RoIGNvbXBvc2l0aW9uIHVuZGVybGluZXMgYW5kIGhp
Z2hsaWdodHMgdG8gdXNlIHRoZQorICAgICAgICBNYXJrZWRUZXh0IG1lY2hhbmlzbSBmb3IgZGVj
b3JhdGluZyByYW5nZXMgb2YgdGV4dCBpbnN0ZWFkLgorCisgICAgICAgIFRlc3Q6IGVkaXRpbmcv
aW5wdXQvY29tcG9zaXRpb24taGlnaGxpZ2h0cy5odG1sCisKKyAgICAgICAgKiBIZWFkZXJzLmNt
YWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBlZGl0aW5nL0NvbXBvc2l0aW9uSGlnaGxpZ2h0Lmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Q29tcG9zaXRpb25IaWdobGlnaHQ6OkNvbXBvc2l0aW9uSGlnaGxpZ2h0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbXBvc2l0aW9uSGlnaGxpZ2h0OjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29tcG9zaXRpb25IaWdobGlnaHQ6OmRlY29kZSk6CisKKyAgICAgICAgQWRk
IENvbXBvc2l0aW9uSGlnaGxpZ2h0LCB3aGljaCByZXByZXNlbnRzIGEgcmFuZ2UgaW4gdGhlIGNv
bXBvc2l0aW9uIHRoYXQgc2hvdWxkIGJlIGhpZ2hsaWdodGVkIHdpdGggYSBnaXZlbgorICAgICAg
ICBiYWNrZ3JvdW5kIGNvbG9yLgorCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OnNldENvbXBvc2l0aW9uKToKKworICAgICAgICBBZGQgbG9naWMgZm9yIGNsZWFyaW5nIGFuZCB1
cGRhdGluZyBtX2N1c3RvbUNvbXBvc2l0aW9uSGlnaGxpZ2h0cy4KKworICAgICAgICAqIGVkaXRp
bmcvRWRpdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmNvbXBvc2l0aW9uVXNlc0N1
c3RvbUhpZ2hsaWdodHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjdXN0b21D
b21wb3NpdGlvbkhpZ2hsaWdodHMgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVU
ZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OnBhaW50Q29tcG9z
aXRpb25CYWNrZ3JvdW5kKToKKworICAgICAgICBJZiBjdXN0b20gY29tcG9zaXRpb24gaGlnaGxp
Z2h0cyBhcmUgZ2l2ZW4sIHVzZSB0aG9zZSB3aGVuIHBhaW50aW5nIHRoZSBjb21wb3NpdGlvbiBi
YWNrZ3JvdW5kOyBvdGhlcndpc2UsCisgICAgICAgIGRlZmF1bHQgdG8gcGFpbnRpbmcgdGhlIGVu
dGlyZSBjb21wb3NpdGlvbiByYW5nZSB1c2luZyBgQ29sb3I6OmNvbXBvc2l0aW9uRmlsbGAuCisK
IDIwMjAtMDEtMzAgIERvdWcgS2VsbHkgIDxkb3Vna0BhcHBsZS5jb20+CiAKICAgICAgICAgRW5z
dXJlIG5vbi1pbml0aWFsIHZhbHVlcyBmb3IgQ1NTIEZvbnQgcHJvcGVydGllcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFu
Z2VMb2cKaW5kZXggMGI4MTdhMThmYmFkMWYzZjE0NWU1YjA0NmRlZWFkOTU1NjFkMzlhOS4uODYx
N2ZiZDI3YzUxMjE0MWFhOWJmM2VmNzAyZDQ0YWM5MTQ4ZDVmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDEtMzEgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2ll
aEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgYmFja2dy
b3VuZCBjb2xvcnMgd2hlbiBzZXR0aW5nIG1hcmtlZCB0ZXh0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDcwNjUKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzU3ODc2MTQwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBhbiBTUEkgc29mdC1saW5raW5nIGRlY2xhcmF0aW9uIGZvciBOU01hcmtlZENs
YXVzZVNlZ21lbnRBdHRyaWJ1dGVOYW1lLgorCisgICAgICAgICogcGFsL3NwaS9jb2NvYS9OU0F0
dHJpYnV0ZWRTdHJpbmdTUEkuaDoKKwogMjAyMC0wMS0zMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBXS05hdmlnYXRpb25EZWxlZ2F0
ZSBTUEkgdG8gZGlzYWJsZSBUTFMgMS4wIGFuZCAxLjEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYmIxODI5MTk4ODZh
Y2Y4NzZhNTc2MjZlNjk4YWZiZGUwZTc5ZThkYS4uN2NjNmRlYmE3OTkwNWM2M2ZmYmM2Y2VkNjYw
YWYzMjkwNWM1ZWI2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAyMC0wMS0zMSAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9y
dCBmb3Igc3BlY2lmeWluZyBiYWNrZ3JvdW5kIGNvbG9ycyB3aGVuIHNldHRpbmcgbWFya2VkIHRl
eHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzA2
NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTc4NzYxNDA+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IC1zZXRBdHRyaWJ1dGVkTWFy
a2VkVGV4dDpzZWxlY3RlZFJhbmdlOiBvbiBXS0NvbnRlbnRWaWV3LCBhbmQgaGF2ZSBpdCBleHRy
YWN0IGhpZ2hsaWdodCBjb2xvcgorICAgICAgICBpbmZvcm1hdGlvbiBmcm9tIHRoZSBnaXZlbiBh
dHRyaWJ1dGVkIHN0cmluZy4gUGx1bWIgdGhpcyB0aHJvdWdoIHRvIHRoZSB3ZWIgcHJvY2VzcyBi
eSBzZXJpYWxpemluZyBhbmQKKyAgICAgICAgZGVzZXJpYWxpemluZyBgV2ViQ29yZTo6Q29tcG9z
aXRpb25IaWdobGlnaHRgcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldE1hcmtlZFRleHQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbToKKyAgICAgICAgKGNvbXBvc2l0aW9uSGlnaGxpZ2h0cyk6CisKKyAgICAgICAg
Rm9yIGVhY2ggbWFya2VkIHRleHQgY2xhdXNlLCBncmFiIHRoZSBzcGVjaWZpZWQgYmFja2dyb3Vu
ZCBjb2xvciAoZGVmYXVsdGluZyB0byBDb2xvcjo6Y29tcG9zaXRpb25GaWxsKSBhbmQgdXNlCisg
ICAgICAgIGl0IHRvIGNyZWF0ZSBhIGxpc3Qgb2YgQ29tcG9zaXRpb25IaWdobGlnaHRzLgorCisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgc2V0QXR0cmlidXRlZE1hcmtlZFRleHQ6c2VsZWN0ZWRS
YW5nZTpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBzZXRNYXJrZWRUZXh0OnNlbGVjdGVk
UmFuZ2U6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3NldE1hcmtlZFRleHQ6aGlnaGxp
Z2h0czpzZWxlY3RlZFJhbmdlOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlUGFnZVNldENvbXBv
c2l0aW9uKToKKworICAgICAgICBBZGQgdGVzdGluZyBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIGhp
Z2hsaWdodCByYW5nZXMgd2hlbiBzZXR0aW5nIG1hcmtlZCB0ZXh0LgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VQcml2YXRlLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9nbGliL1dlYkVkaXRvckNsaWVudEdMaWIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmRpZERpc3BhdGNoSW5wdXRN
ZXRob2RLZXlkb3duKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldENvbXBvc2l0aW9uRm9yVGVzdGluZyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldENvbXBvc2l0aW9uQXN5bmMpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMjAtMDEtMzAgIEppZXdlbiBUYW4gIDxqaWV3
ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgbG9nZ2luZyB0byBzaG93IHRoZSBmbG93
IG9mIEFwcFNTTwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGQyNzc3MDA4OWMzNjk4
NmNjNjZmMTFkZjBkZGYyMmI0MmQ3NzkyNWIuLjE4YThiY2UzOTYzZGM3YmJkNDM5NGMyMDhkOThk
NmRjYmEwNzJhMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBA
QAorMjAyMC0wMS0zMSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBZGQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyBiYWNrZ3JvdW5kIGNvbG9ycyB3aGVu
IHNldHRpbmcgbWFya2VkIHRleHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwNzA2NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTc4NzYxNDA+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRqdXN0IHNv
bWUgY2FsbCBzaXRlcyBvZiBFZGl0b3I6OnNldENvbXBvc2l0aW9uKCkuCisKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBzZXRNYXJrZWRUZXh0OnNl
bGVjdGVkUmFuZ2U6XSk6CisgICAgICAgICgtW1dlYkZyYW1lIHNldE1hcmtlZFRleHQ6Zm9yQ2Fu
ZGlkYXRlczpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAo
LVtXZWJIVE1MVmlldyBzZXRNYXJrZWRUZXh0OnNlbGVjdGVkUmFuZ2U6XSk6CisKIDIwMjAtMDEt
MzAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAg
ICBBZGQgV0tOYXZpZ2F0aW9uRGVsZWdhdGUgU1BJIHRvIGRpc2FibGUgVExTIDEuMCBhbmQgMS4x
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggMzM3YzNjZDQ1YTM2OTYwYjZhY2RjNGUy
YTU4MmI3ZmY3ZWMzMjVlNy4uMGUxMDVkMTE2OGNlMmY3MzdiNTdmMDhkOWY4MDJkMjBiM2EwMTBl
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTAx
LTMxICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIGJhY2tncm91bmQgY29sb3JzIHdoZW4gc2V0dGluZyBt
YXJrZWQgdGV4dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA3MDY1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81Nzg3NjE0MD4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGp1c3Qgc29tZSBjYWxsIHNp
dGVzIG9mIEVkaXRvcjo6c2V0Q29tcG9zaXRpb24oKS4KKworICAgICAgICAqIFdlYlZpZXcuY3Bw
OgorICAgICAgICAoV2ViVmlldzo6b25JTUVDb21wb3NpdGlvbik6CisgICAgICAgIChXZWJWaWV3
OjpzZXRDb21wb3NpdGlvbkZvclRlc3RpbmcpOgorCiAyMDIwLTAxLTI3ICBBbnRvaW5lIFF1aW50
ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYiBBbmltYXRpb25zXSBNYWtlIEFu
aW1hdGlvbi50aW1lbGluZSByZWFkLXdyaXRlIG9ubHkgaWYgYSBydW50aW1lIGZsYWcgaXMgZW5h
YmxlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9X
ZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggNTRkYjcxNmFjODdjYWM0ZDAxMzBkZDhhNzk1NTRk
MGQ2NzU2OWU2OS4uNTJiMzY0MTA5ODk2NThkNDlmYzI1MDY5ZDIwODMwOTQ1ZjA2OGQyYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9IZWFkZXJzLmNtYWtlCkBAIC00ODMsNiArNDgzLDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9G
UkFNRVdPUktfSEVBREVSUwogICAgIGRvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVdpdGhNZXNzYWdl
UG9ydHMuaAogCiAgICAgZWRpdGluZy9DbGlwYm9hcmRBY2Nlc3NQb2xpY3kuaAorICAgIGVkaXRp
bmcvQ29tcG9zaXRpb25IaWdobGlnaHQuaAogICAgIGVkaXRpbmcvQ29tcG9zaXRpb25VbmRlcmxp
bmUuaAogICAgIGVkaXRpbmcvRGljdGF0aW9uQWx0ZXJuYXRpdmUuaAogICAgIGVkaXRpbmcvRGlj
dGlvbmFyeVBvcHVwSW5mby5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3Nw
aS9jb2NvYS9OU0F0dHJpYnV0ZWRTdHJpbmdTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
c3BpL2NvY29hL05TQXR0cmlidXRlZFN0cmluZ1NQSS5oCmluZGV4IDJhOGI1MjRhOWNmMzdiMDYw
YmEzYzdjYWVhNWFlYjMxMjljMDZhN2YuLjBmZjMzNDUxNWUxYmZiNTQyYjQwZjY5OWI1MTQxMzM1
MTlhY2RiYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL05T
QXR0cmlidXRlZFN0cmluZ1NQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2Nv
Y29hL05TQXR0cmlidXRlZFN0cmluZ1NQSS5oCkBAIC05Myw2ICs5Myw4IEBAIFNPRlRfTElOS19D
T05TVEFOVChVSUZvdW5kYXRpb24sIE5TQ29jb2FWZXJzaW9uRG9jdW1lbnRBdHRyaWJ1dGUsIE5T
U3RyaW5nICopCiAjZGVmaW5lIE5TQ29jb2FWZXJzaW9uRG9jdW1lbnRBdHRyaWJ1dGUgZ2V0TlND
b2NvYVZlcnNpb25Eb2N1bWVudEF0dHJpYnV0ZSgpCiBTT0ZUX0xJTktfQ09OU1RBTlQoVUlGb3Vu
ZGF0aW9uLCBOU0JhY2tncm91bmRDb2xvckRvY3VtZW50QXR0cmlidXRlLCBOU1N0cmluZyAqKQog
I2RlZmluZSBOU0JhY2tncm91bmRDb2xvckRvY3VtZW50QXR0cmlidXRlIGdldE5TQmFja2dyb3Vu
ZENvbG9yRG9jdW1lbnRBdHRyaWJ1dGUoKQorU09GVF9MSU5LX0NPTlNUQU5UKFVJRm91bmRhdGlv
biwgTlNNYXJrZWRDbGF1c2VTZWdtZW50QXR0cmlidXRlTmFtZSwgTlNTdHJpbmcgKikKKyNkZWZp
bmUgTlNNYXJrZWRDbGF1c2VTZWdtZW50QXR0cmlidXRlTmFtZSBnZXROU01hcmtlZENsYXVzZVNl
Z21lbnRBdHRyaWJ1dGVOYW1lKCkKIAogLy8gV2UgZG9uJ3Qgc29mdGxpbmsgTlNTdXBlcnNjcmlw
dEF0dHJpYnV0ZU5hbWUgYmVjYXVzZSBVSUZvdW5kYXRpb24gc3RvcHBlZCBleHBvcnRpbmcgaXQu
CiAvLyBUaGlzIGF0dHJpYnV0ZSBpcyBiZWluZyBkZXByZWNhdGVkIGF0IHRoZSBBUEkgbGV2ZWws
IGJ1dCBpbnRlcm5hbGx5IFVJRm91bmRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDk4N2E2MzlkNzM4OTAwYjlhOTFkODlh
YWFkNGJiM2NmYjEwODBmZGIuLmFmMDQ0MTI0MThlNmRiYjBmMGIzYjE3YTZkOWE4Y2E2YmE4MTE2
YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTQ5NTksNiArNDk1OSw3IEBACiAJCUY0NDBFNzdBMjMzRDk0RDcwMDYzRjlBQiAv
KiBOYXZpZ2F0b3JDbGlwYm9hcmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY0NDBFNzZGMjMzRDk0RDMwMDYzRjlBQiAvKiBOYXZpZ2F0b3JDbGlwYm9h
cmQuaCAqLzsgfTsKIAkJRjQ0MEU3N0IyMzNEOTRENzAwNjNGOUFCIC8qIENsaXBib2FyZEl0ZW0u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NDBFNzcw
MjMzRDk0RDQwMDYzRjlBQiAvKiBDbGlwYm9hcmRJdGVtLmggKi87IH07CiAJCUY0NDBFNzdEMjMz
RDk0RDcwMDYzRjlBQiAvKiBDbGlwYm9hcmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEY0NDBFNzcyMjMzRDk0RDUwMDYzRjlBQiAvKiBDbGlwYm9hcmQu
aCAqLzsgfTsKKwkJRjQ0MkMzNTkyM0UzQUREMjAwNDk5NTgyIC8qIENvbXBvc2l0aW9uSGlnaGxp
Z2h0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDQy
QzM1NzIzRTNBQzUxMDA0OTk1ODIgLyogQ29tcG9zaXRpb25IaWdobGlnaHQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNDRBNUY1OTFGRUQzOEYy
MDA3RjU5NDQgLyogTGVnYWN5TlNQYXN0ZWJvYXJkVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NEE1RjU3MUZFRDM4MzAwMDdGNTk0NCAvKiBM
ZWdhY3lOU1Bhc3RlYm9hcmRUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUY0NEVCQkQ5MURCNUQyMTQwMDI3NzMzNCAvKiBTdGF0aWNSYW5n
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0RUJC
RDgxREI1RDIxNDAwMjc3MzM0IC8qIFN0YXRpY1JhbmdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjQ1QzIzMUUxOTk1QjczQjAwQTZFMkUzIC8q
IEF4aXNTY3JvbGxTbmFwT2Zmc2V0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjQ1QzIzMUMxOTk1QjczQjAwQTZFMkUzIC8qIEF4aXNTY3JvbGxTbmFw
T2Zmc2V0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC0xNTQxNSw2ICsxNTQxNiw3IEBACiAJCUY0NDBFNzc1MjMzRDk0RDYwMDYzRjlBQiAvKiBD
bGlwYm9hcmRJdGVtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENs
aXBib2FyZEl0ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDQwRTc3NzIz
M0Q5NEQ3MDA2M0Y5QUIgLyogQ2xpcGJvYXJkSXRlbS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gQ2xpcGJvYXJkSXRlbS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NDI4
NTBCMjE0MDQxMjUwMENDREEyMiAvKiBGb250QXR0cmlidXRlQ2hhbmdlcy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBGb250QXR0cmlidXRlQ2hhbmdlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUY0NDJDMzU3MjNFM0FDNTEwMDQ5OTU4MiAvKiBDb21wb3NpdGlvbkhpZ2hsaWdo
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDb21wb3NpdGlvbkhpZ2hsaWdodC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGNDRBNUY1NzFGRUQzODMwMDA3RjU5NDQgLyogTGVnYWN5TlNQYXN0
ZWJvYXJkVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGVnYWN5TlNQYXN0ZWJvYXJkVHlwZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ0RUJCRDYxREI1RDFCNjAwMjc3MzM0IC8q
IFN0YXRpY1JhbmdlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTdGF0aWNSYW5nZS5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NEVCQkQ4MURCNUQyMTQwMDI3NzMzNCAv
KiBTdGF0aWNSYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdGF0aWNS
YW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjE1MTcsNiArMjE1MTksNyBA
QAogCQkJCTdDM0E5MUU1MUM5NjNCODgwMEQxQTdFMyAvKiBDbGlwYm9hcmRBY2Nlc3NQb2xpY3ku
aCAqLywKIAkJCQk5MzMwOUQ4RDA5OUU2NDkxMDA1NkU1ODEgLyogQ29tcG9zaXRlRWRpdENvbW1h
bmQuY3BwICovLAogCQkJCTkzMzA5RDhFMDk5RTY0OTEwMDU2RTU4MSAvKiBDb21wb3NpdGVFZGl0
Q29tbWFuZC5oICovLAorCQkJCUY0NDJDMzU3MjNFM0FDNTEwMDQ5OTU4MiAvKiBDb21wb3NpdGlv
bkhpZ2hsaWdodC5oICovLAogCQkJCTJERDVBNzI2MUVCRUU0N0QwMDlCQTU5NyAvKiBDb21wb3Np
dGlvblVuZGVybGluZS5oICovLAogCQkJCUQwQjA1NTY3MDlDNjcwMDEwMDMwN0U0MyAvKiBDcmVh
dGVMaW5rQ29tbWFuZC5jcHAgKi8sCiAJCQkJRDBCMDU1NjYwOUM2NzAwMTAwMzA3RTQzIC8qIENy
ZWF0ZUxpbmtDb21tYW5kLmggKi8sCkBAIC0yOTI5Nyw2ICsyOTMwMCw3IEBACiAJCQkJNzEyNDdF
MzcxRkVBNUY4NjAwOEMwOENFIC8qIENvbXBvc2l0ZU9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNzExMTI0M0UyMTZGQTcxMTAwRUI3QjY3IC8qIENvbXBvc2l0ZU9wZXJhdGlvbk9yQXV0
by5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzlGMkY1QTIxMDkxOTM5QTAwMEQ4N0NCIC8qIENvbXBv
c2l0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUY0NDJDMzU5MjNFM0FERDIwMDQ5OTU4
MiAvKiBDb21wb3NpdGlvbkhpZ2hsaWdodC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRENUE3Mjcx
RUJFRTQ3RDAwOUJBNTk3IC8qIENvbXBvc2l0aW9uVW5kZXJsaW5lLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3MTE2RTJDQzFGRUQ3NURDMDBDMDZGREUgLyogQ29tcHV0ZWRFZmZlY3RUaW1pbmcuaCBp
biBIZWFkZXJzICovLAogCQkJCUZEMzE2MDhGMTJCMDI2RjcwMEMxQTM1OSAvKiBDb25lLmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRp
b25IaWdobGlnaHQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRpb25IaWdobGln
aHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wYzljYTgxZmQzNzc1ODdmMzJkM2ZjYTQwNzNmZGE4MDljMDlhZmNi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGlvbkhp
Z2hsaWdodC5oCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDb2xvci5oIgorI2lu
Y2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBD
b21wb3NpdGlvbkhpZ2hsaWdodCB7CisgICAgQ29tcG9zaXRpb25IaWdobGlnaHQoKSA9IGRlZmF1
bHQ7CisgICAgQ29tcG9zaXRpb25IaWdobGlnaHQodW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2ln
bmVkIGVuZE9mZnNldCwgY29uc3QgQ29sb3ImIGMpCisgICAgICAgIDogc3RhcnRPZmZzZXQoc3Rh
cnRPZmZzZXQpCisgICAgICAgICwgZW5kT2Zmc2V0KGVuZE9mZnNldCkKKyAgICAgICAgLCBjb2xv
cihjKQorICAgIHsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBzdGFydE9mZnNldCB7IDAgfTsKKyAg
ICB1bnNpZ25lZCBlbmRPZmZzZXQgeyAwIH07CisgICAgQ29sb3IgY29sb3IgeyBDb2xvcjo6Y29t
cG9zaXRpb25GaWxsIH07CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29k
ZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9w
dGlvbmFsPENvbXBvc2l0aW9uSGlnaGxpZ2h0PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgQ29tcG9zaXRpb25IaWdobGlnaHQ6OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgc3RhcnRPZmZzZXQ7Cisg
ICAgZW5jb2RlciA8PCBlbmRPZmZzZXQ7CisgICAgZW5jb2RlciA8PCBjb2xvcjsKK30KKwordGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK09wdGlvbmFsPENvbXBvc2l0aW9uSGlnaGxpZ2h0PiBDb21w
b3NpdGlvbkhpZ2hsaWdodDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9u
YWw8dW5zaWduZWQ+IHN0YXJ0T2Zmc2V0OworICAgIGRlY29kZXIgPj4gc3RhcnRPZmZzZXQ7Cisg
ICAgaWYgKCFzdGFydE9mZnNldCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
IE9wdGlvbmFsPHVuc2lnbmVkPiBlbmRPZmZzZXQ7CisgICAgZGVjb2RlciA+PiBlbmRPZmZzZXQ7
CisgICAgaWYgKCFlbmRPZmZzZXQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICBPcHRpb25hbDxDb2xvcj4gY29sb3I7CisgICAgZGVjb2RlciA+PiBjb2xvcjsKKyAgICBpZiAo
IWNvbG9yKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIHt7ICpz
dGFydE9mZnNldCwgKmVuZE9mZnNldCwgKmNvbG9yIH19OworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggODdhODAzNTM0ZTg0ZTI3NTUx
MzZkNWEzMzhkZGY4YTRhOTc2ZWEwNy4uMjkxYmE2YzBjMDRjNGI2Njk4NDY2ZTEwNzUzNDg1OGU4
NTlkYWEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMzgsNiArMzgsNyBAQAog
I2luY2x1ZGUgIkNoYW5nZUxpc3RUeXBlQ29tbWFuZC5oIgogI2luY2x1ZGUgIkNsaXBib2FyZEV2
ZW50LmgiCiAjaW5jbHVkZSAiQ29tcG9zaXRpb25FdmVudC5oIgorI2luY2x1ZGUgIkNvbXBvc2l0
aW9uSGlnaGxpZ2h0LmgiCiAjaW5jbHVkZSAiQ3JlYXRlTGlua0NvbW1hbmQuaCIKICNpbmNsdWRl
ICJDdXN0b21VbmRvU3RlcC5oIgogI2luY2x1ZGUgIkRhdGFUcmFuc2Zlci5oIgpAQCAtMTIxNyw2
ICsxMjE4LDcgQEAgdm9pZCBFZGl0b3I6OmNsZWFyKCkKICAgICAgICAgICAgIGNsaWVudC0+ZGlz
Y2FyZGVkQ29tcG9zaXRpb24oJm1fZnJhbWUpOwogICAgIH0KICAgICBtX2N1c3RvbUNvbXBvc2l0
aW9uVW5kZXJsaW5lcy5jbGVhcigpOworICAgIG1fY3VzdG9tQ29tcG9zaXRpb25IaWdobGlnaHRz
LmNsZWFyKCk7CiAgICAgbV9zaG91bGRTdHlsZVdpdGhDU1MgPSBmYWxzZTsKICAgICBtX2RlZmF1
bHRQYXJhZ3JhcGhTZXBhcmF0b3IgPSBFZGl0b3JQYXJhZ3JhcGhTZXBhcmF0b3JJc0RpdjsKICAg
ICBtX21hcmsgPSB7IH07CkBAIC0xOTcwLDYgKzE5NzIsNyBAQCB2b2lkIEVkaXRvcjo6c2V0Q29t
cG9zaXRpb24oY29uc3QgU3RyaW5nJiB0ZXh0LCBTZXRDb21wb3NpdGlvbk1vZGUgbW9kZSkKIAog
ICAgIG1fY29tcG9zaXRpb25Ob2RlID0gbnVsbHB0cjsKICAgICBtX2N1c3RvbUNvbXBvc2l0aW9u
VW5kZXJsaW5lcy5jbGVhcigpOworICAgIG1fY3VzdG9tQ29tcG9zaXRpb25IaWdobGlnaHRzLmNs
ZWFyKCk7CiAKICAgICBpZiAobV9mcmFtZS5zZWxlY3Rpb24oKS5pc05vbmUoKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMTk5MSw3ICsxOTk0LDcgQEAgdm9pZCBFZGl0b3I6OnNldENvbXBvc2l0aW9u
KGNvbnN0IFN0cmluZyYgdGV4dCwgU2V0Q29tcG9zaXRpb25Nb2RlIG1vZGUpCiAgICAgfQogfQog
Ci12b2lkIEVkaXRvcjo6c2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBW
ZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbmU+JiB1bmRlcmxpbmVzLCB1bnNpZ25lZCBzZWxlY3Rp
b25TdGFydCwgdW5zaWduZWQgc2VsZWN0aW9uRW5kKQordm9pZCBFZGl0b3I6OnNldENvbXBvc2l0
aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5l
PiYgdW5kZXJsaW5lcywgY29uc3QgVmVjdG9yPENvbXBvc2l0aW9uSGlnaGxpZ2h0PiYgaGlnaGxp
Z2h0cywgdW5zaWduZWQgc2VsZWN0aW9uU3RhcnQsIHVuc2lnbmVkIHNlbGVjdGlvbkVuZCkKIHsK
ICAgICBTZXRDb21wb3NpdGlvblNjb3BlIHNldENvbXBvc2l0aW9uU2NvcGUobV9mcmFtZSk7CiAK
QEAgLTIwNjMsNiArMjA2Niw3IEBAIHZvaWQgRWRpdG9yOjpzZXRDb21wb3NpdGlvbihjb25zdCBT
dHJpbmcmIHRleHQsIGNvbnN0IFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGluCiAKICAgICBtX2Nv
bXBvc2l0aW9uTm9kZSA9IG51bGxwdHI7CiAgICAgbV9jdXN0b21Db21wb3NpdGlvblVuZGVybGlu
ZXMuY2xlYXIoKTsKKyAgICBtX2N1c3RvbUNvbXBvc2l0aW9uSGlnaGxpZ2h0cy5jbGVhcigpOwog
CiAgICAgaWYgKCF0ZXh0LmlzRW1wdHkoKSkgewogICAgICAgICBUeXBpbmdDb21tYW5kOjppbnNl
cnRUZXh0KGRvY3VtZW50KCksIHRleHQsIFR5cGluZ0NvbW1hbmQ6OlNlbGVjdEluc2VydGVkVGV4
dCB8IFR5cGluZ0NvbW1hbmQ6OlByZXZlbnRTcGVsbENoZWNraW5nLCBUeXBpbmdDb21tYW5kOjpU
ZXh0Q29tcG9zaXRpb25QZW5kaW5nKTsKQEAgLTIwODQsNiArMjA4OCwxMSBAQCB2b2lkIEVkaXRv
cjo6c2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8Q29tcG9z
aXRpb25VbmRlcmxpbgogICAgICAgICAgICAgICAgIHVuZGVybGluZS5zdGFydE9mZnNldCArPSBi
YXNlT2Zmc2V0OwogICAgICAgICAgICAgICAgIHVuZGVybGluZS5lbmRPZmZzZXQgKz0gYmFzZU9m
ZnNldDsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fY3VzdG9tQ29tcG9zaXRpb25IaWdo
bGlnaHRzID0gaGlnaGxpZ2h0czsKKyAgICAgICAgICAgIGZvciAoYXV0byYgaGlnaGxpZ2h0IDog
bV9jdXN0b21Db21wb3NpdGlvbkhpZ2hsaWdodHMpIHsKKyAgICAgICAgICAgICAgICBoaWdobGln
aHQuc3RhcnRPZmZzZXQgKz0gYmFzZU9mZnNldDsKKyAgICAgICAgICAgICAgICBoaWdobGlnaHQu
ZW5kT2Zmc2V0ICs9IGJhc2VPZmZzZXQ7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAo
YmFzZU5vZGUtPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICAgICAgYmFzZU5vZGUtPnJlbmRlcmVy
KCktPnJlcGFpbnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggM2MwNWE4NWRkYTk4
NWIzYTA1ZmU4ZjI3ZTAxNDllOTJlOGEyZWJiMi4uNmVhODkyMmZiMDc2MmRmZTAzMmYxMGY2ZGEx
YWZiZDZlMzE0ZWY4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC04Myw2ICs4Myw3IEBA
IGNsYXNzIFRleHQ7CiBjbGFzcyBUZXh0Q2hlY2tlckNsaWVudDsKIGNsYXNzIFRleHRFdmVudDsK
IAorc3RydWN0IENvbXBvc2l0aW9uSGlnaGxpZ2h0Owogc3RydWN0IEZvbnRBdHRyaWJ1dGVzOwog
c3RydWN0IFBhc3RlYm9hcmRQbGFpblRleHQ7CiBzdHJ1Y3QgUGFzdGVib2FyZFVSTDsKQEAgLTM1
NSw3ICszNTYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBpbnRlcm5hdGlvbmFsIHRleHQgaW5wdXQg
Y29tcG9zaXRpb24KICAgICBib29sIGhhc0NvbXBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9j
b21wb3NpdGlvbk5vZGU7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbXBvc2l0aW9u
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGluZT4mLCB1bnNp
Z25lZCBzZWxlY3Rpb25TdGFydCwgdW5zaWduZWQgc2VsZWN0aW9uRW5kKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYsIGNvbnN0IFZlY3RvcjxD
b21wb3NpdGlvblVuZGVybGluZT4mLCBjb25zdCBWZWN0b3I8Q29tcG9zaXRpb25IaWdobGlnaHQ+
JiwgdW5zaWduZWQgc2VsZWN0aW9uU3RhcnQsIHVuc2lnbmVkIHNlbGVjdGlvbkVuZCk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBjb25maXJtQ29tcG9zaXRpb24oKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGNvbmZpcm1Db21wb3NpdGlvbihjb25zdCBTdHJpbmcmKTsgLy8gaWYgbm8gZXhp
c3RpbmcgY29tcG9zaXRpb24sIHJlcGxhY2VzIHNlbGVjdGlvbgogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgY2FuY2VsQ29tcG9zaXRpb24oKTsKQEAgLTM2OSw2ICszNzAsOCBAQCBwdWJsaWM6CiAg
ICAgdW5zaWduZWQgY29tcG9zaXRpb25FbmQoKSBjb25zdCB7IHJldHVybiBtX2NvbXBvc2l0aW9u
RW5kOyB9CiAgICAgYm9vbCBjb21wb3NpdGlvblVzZXNDdXN0b21VbmRlcmxpbmVzKCkgY29uc3Qg
eyByZXR1cm4gIW1fY3VzdG9tQ29tcG9zaXRpb25VbmRlcmxpbmVzLmlzRW1wdHkoKTsgfQogICAg
IGNvbnN0IFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGluZT4mIGN1c3RvbUNvbXBvc2l0aW9uVW5k
ZXJsaW5lcygpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9tQ29tcG9zaXRpb25VbmRlcmxpbmVzOyB9
CisgICAgYm9vbCBjb21wb3NpdGlvblVzZXNDdXN0b21IaWdobGlnaHRzKCkgY29uc3QgeyByZXR1
cm4gIW1fY3VzdG9tQ29tcG9zaXRpb25IaWdobGlnaHRzLmlzRW1wdHkoKTsgfQorICAgIGNvbnN0
IFZlY3RvcjxDb21wb3NpdGlvbkhpZ2hsaWdodD4mIGN1c3RvbUNvbXBvc2l0aW9uSGlnaGxpZ2h0
cygpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9tQ29tcG9zaXRpb25IaWdobGlnaHRzOyB9CiAKICAg
ICBlbnVtIGNsYXNzIFJldmVhbFNlbGVjdGlvbiB7IE5vLCBZZXMgfTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldElnbm9yZVNlbGVjdGlvbkNoYW5nZXMoYm9vbCwgUmV2ZWFsU2VsZWN0aW9u
IHNob3VsZFJldmVhbEV4aXN0aW5nU2VsZWN0aW9uID0gUmV2ZWFsU2VsZWN0aW9uOjpZZXMpOwpA
QCAtNjAxLDYgKzYwNCw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9jb21wb3NpdGlvblN0
YXJ0OwogICAgIHVuc2lnbmVkIG1fY29tcG9zaXRpb25FbmQ7CiAgICAgVmVjdG9yPENvbXBvc2l0
aW9uVW5kZXJsaW5lPiBtX2N1c3RvbUNvbXBvc2l0aW9uVW5kZXJsaW5lczsKKyAgICBWZWN0b3I8
Q29tcG9zaXRpb25IaWdobGlnaHQ+IG1fY3VzdG9tQ29tcG9zaXRpb25IaWdobGlnaHRzOwogICAg
IGJvb2wgbV9pZ25vcmVTZWxlY3Rpb25DaGFuZ2VzIHsgZmFsc2UgfTsKICAgICBib29sIG1fc2hv
dWxkU3RhcnROZXdLaWxsUmluZ1NlcXVlbmNlIHsgZmFsc2UgfTsKICAgICBib29sIG1fc2hvdWxk
U3R5bGVXaXRoQ1NTIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9JbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVU
ZXh0Qm94LmNwcAppbmRleCA3M2Y4YzVlMDNkOTZjZTRiZmMwZGM5ZTM2ZDQzODc1NWI4Y2E5M2Y2
Li5iNGRmNmI4ZDM1MjYxNjQ2MTQwZmQ5Mjg2NzY1OGRhYWY1NzViYTJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5j
bHVkZSAiSW5saW5lVGV4dEJveC5oIgogCiAjaW5jbHVkZSAiQnJlYWtMaW5lcy5oIgorI2luY2x1
ZGUgIkNvbXBvc2l0aW9uSGlnaGxpZ2h0LmgiCiAjaW5jbHVkZSAiRGFzaEFycmF5LmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCIK
QEAgLTEyMjQsNyArMTIyNSwyMyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50TWFya2VkVGV4
dERlY29yYXRpb24oUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEZsb2F0UgogCiB2b2lkIElu
bGluZVRleHRCb3g6OnBhaW50Q29tcG9zaXRpb25CYWNrZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBGbG9hdFBvaW50JiBib3hPcmlnaW4pCiB7Ci0gICAgcGFpbnRNYXJrZWRUZXh0
QmFja2dyb3VuZChwYWludEluZm8sIGJveE9yaWdpbiwgQ29sb3I6OmNvbXBvc2l0aW9uRmlsbCwg
Y2xhbXBlZE9mZnNldChyZW5kZXJlcigpLmZyYW1lKCkuZWRpdG9yKCkuY29tcG9zaXRpb25TdGFy
dCgpKSwgY2xhbXBlZE9mZnNldChyZW5kZXJlcigpLmZyYW1lKCkuZWRpdG9yKCkuY29tcG9zaXRp
b25FbmQoKSkpOworICAgIGlmICghcmVuZGVyZXIoKS5mcmFtZSgpLmVkaXRvcigpLmNvbXBvc2l0
aW9uVXNlc0N1c3RvbUhpZ2hsaWdodHMoKSkgeworICAgICAgICBwYWludE1hcmtlZFRleHRCYWNr
Z3JvdW5kKHBhaW50SW5mbywgYm94T3JpZ2luLCBDb2xvcjo6Y29tcG9zaXRpb25GaWxsLCBjbGFt
cGVkT2Zmc2V0KHJlbmRlcmVyKCkuZnJhbWUoKS5lZGl0b3IoKS5jb21wb3NpdGlvblN0YXJ0KCkp
LCBjbGFtcGVkT2Zmc2V0KHJlbmRlcmVyKCkuZnJhbWUoKS5lZGl0b3IoKS5jb21wb3NpdGlvbkVu
ZCgpKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBmb3IgKGF1dG8mIGhpZ2hsaWdo
dCA6IHJlbmRlcmVyKCkuZnJhbWUoKS5lZGl0b3IoKS5jdXN0b21Db21wb3NpdGlvbkhpZ2hsaWdo
dHMoKSkgeworICAgICAgICBpZiAoaGlnaGxpZ2h0LmVuZE9mZnNldCA8PSBtX3N0YXJ0KQorICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKGhpZ2hsaWdodC5zdGFydE9mZnNldCA+
PSBlbmQoKSkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIHBhaW50TWFya2VkVGV4dEJh
Y2tncm91bmQocGFpbnRJbmZvLCBib3hPcmlnaW4sIGhpZ2hsaWdodC5jb2xvciwgY2xhbXBlZE9m
ZnNldChoaWdobGlnaHQuc3RhcnRPZmZzZXQpLCBjbGFtcGVkT2Zmc2V0KGhpZ2hsaWdodC5lbmRP
ZmZzZXQpKTsKKworICAgICAgICBpZiAoaGlnaGxpZ2h0LmVuZE9mZnNldCA+IGVuZCgpKQorICAg
ICAgICAgICAgYnJlYWs7CisgICAgfQogfQogCiB2b2lkIElubGluZVRleHRCb3g6OnBhaW50Q29t
cG9zaXRpb25VbmRlcmxpbmVzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBGbG9hdFBvaW50
JiBib3hPcmlnaW4pIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZXdJbXBsLm1tCmluZGV4IDg1NjExMDViZDU4MWYyMDdlNDcxZjM1ZmFkYTI2OTQ2YmJmMDY1MDcu
LjAyNzM1N2VlYjc3NTcyMGFlNzU0MmRjM2ExYTI5YTcwYjM3YTg3NWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC04Myw2ICs4Myw3IEBACiAj
aW1wb3J0IDxXZWJDb3JlL0FYT2JqZWN0Q2FjaGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvQWN0aXZp
dHlTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db2xvck1hYy5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9Db21wb3NpdGlvbkhpZ2hsaWdodC5oPgogI2ltcG9ydCA8V2ViQ29yZS9EaWN0aW9uYXJ5TG9v
a3VwLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdEYXRhLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Ry
YWdJdGVtLmg+CkBAIC01MDQzLDcgKzUwNDQsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRNYXJr
ZWRUZXh0KGlkIHN0cmluZywgTlNSYW5nZSBzZWxlY3RlZFJhbmdlLCBOU1JhbmdlIHJlcGxhYwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9wYWdlLT5zZXRDb21wb3NpdGlvbkFzeW5j
KHRleHQsIHVuZGVybGluZXMsIHNlbGVjdGVkUmFuZ2UsIHJlcGxhY2VtZW50UmFuZ2UpOworICAg
IG1fcGFnZS0+c2V0Q29tcG9zaXRpb25Bc3luYyh0ZXh0LCB1bmRlcmxpbmVzLCB7IH0sIHNlbGVj
dGVkUmFuZ2UsIHJlcGxhY2VtZW50UmFuZ2UpOwogfQogCiAvLyBTeW5jaHJvbm91cyBOU1RleHRJ
bnB1dENsaWVudCBpcyBzdGlsbCBpbXBsZW1lbnRlZCB0byBjYXRjaCBzcHVyaW91cyBzeW5jIGNh
bGxzLiBSZW1vdmUgd2hlbiB0aGF0IGlzIG5vIGxvbmdlciBuZWVkZWQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAzNDU4YzdhOTcwMDQyYTkwNmVlOTVkY2Ex
ZTgxZGY3MWQyZWVhYjMwLi4yZDQ5MjI4NTgzNzcxYThiMmFlMGI3Y2VhOGIxYTBlNTA2YzRiMTNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEzOSw2ICsx
MzksNyBAQAogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0FkQ2xpY2tBdHRyaWJ1dGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQml0bWFwSW1hZ2UuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0NvbXBvc2l0aW9uSGlnaGxpZ2h0Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9Dcm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9ET01QYXN0ZUFjY2Vzcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGVwcmVjYXRlZEdsb2JhbFNl
dHRpbmdzLmg+CkBAIC04NTAxLDcgKzg1MDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Zmlyc3RS
ZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmIHJhbmdlLCBXVAog
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5
bmMocmFuZ2UsIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNldENvbXBv
c2l0aW9uQXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8Q29tcG9zaXRpb25V
bmRlcmxpbmU+JiB1bmRlcmxpbmVzLCBjb25zdCBFZGl0aW5nUmFuZ2UmIHNlbGVjdGlvblJhbmdl
LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UpCit2b2lkIFdlYlBhZ2VQcm94
eTo6c2V0Q29tcG9zaXRpb25Bc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZlY3RvcjxD
b21wb3NpdGlvblVuZGVybGluZT4mIHVuZGVybGluZXMsIGNvbnN0IFZlY3RvcjxDb21wb3NpdGlv
bkhpZ2hsaWdodD4mIGhpZ2hsaWdodHMsIGNvbnN0IEVkaXRpbmdSYW5nZSYgc2VsZWN0aW9uUmFu
Z2UsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSkKIHsKICAgICBpZiAoIWhh
c1J1bm5pbmdQcm9jZXNzKCkpIHsKICAgICAgICAgLy8gSWYgdGhpcyBmYWlscywgd2Ugc2hvdWxk
IGNhbGwgLWRpc2NhcmRNYXJrZWRUZXh0IG9uIGlucHV0IGNvbnRleHQgdG8gbm90aWZ5IHRoZSBp
bnB1dCBtZXRob2QuCkBAIC04NTA5LDcgKzg1MTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0
Q29tcG9zaXRpb25Bc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZlY3RvcjxDb21wb3Np
dAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0Q29tcG9zaXRpb25Bc3luYyh0ZXh0LCB1bmRlcmxpbmVzLCBzZWxlY3Rpb25SYW5nZSwgcmVw
bGFjZW1lbnRSYW5nZSkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldENvbXBvc2l0
aW9uQXN5bmModGV4dCwgdW5kZXJsaW5lcywgaGlnaGxpZ2h0cywgc2VsZWN0aW9uUmFuZ2UsIHJl
cGxhY2VtZW50UmFuZ2UpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNvbmZpcm1Db21wb3Np
dGlvbkFzeW5jKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMGE5
MWJhNDQ1ZDlhZmUyYjVjN2VmYWVjYzVmZTUwMzNlN2Q3NzM5Ny4uMmE3Nzk3Yjc1NzAxZjgxYmNl
ZGEzMzBhMjkyYjUxZjMyYzBhYWRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKQEAgLTIyMiw2ICsyMjIsNyBAQCBlbnVtIGNsYXNzIFdyaXRpbmdEaXJlY3Rpb24gOiB1
aW50OF90OwogCiBzdHJ1Y3QgQXBwbGljYXRpb25NYW5pZmVzdDsKIHN0cnVjdCBCYWNrRm9yd2Fy
ZEl0ZW1JZGVudGlmaWVyOworc3RydWN0IENvbXBvc2l0aW9uSGlnaGxpZ2h0Owogc3RydWN0IENv
bnRlbnRSdWxlTGlzdFJlc3VsdHM7CiBzdHJ1Y3QgRGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRp
b247CiBzdHJ1Y3QgRGljdGlvbmFyeVBvcHVwSW5mbzsKQEAgLTg0MSw3ICs4NDIsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBnZXRTZWxlY3RlZFJhbmdlQXN5bmMoV1RGOjpGdW5jdGlvbjx2b2lkIChF
ZGl0aW5nUmFuZ2UsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIGNoYXJhY3Rl
ckluZGV4Rm9yUG9pbnRBc3luYyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIFdURjo6RnVuY3Rp
b248dm9pZCAodWludDY0X3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIGZp
cnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiwgV1RGOjpG
dW5jdGlvbjx2b2lkIChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgRWRpdGluZ1Jhbmdl
JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwotICAgIHZvaWQgc2V0Q29tcG9zaXRpb25Bc3lu
Yyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVu
ZGVybGluZT4mIHVuZGVybGluZXMsIGNvbnN0IEVkaXRpbmdSYW5nZSYgc2VsZWN0aW9uUmFuZ2Us
IGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSk7CisgICAgdm9pZCBzZXRDb21w
b3NpdGlvbkFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNv
bXBvc2l0aW9uVW5kZXJsaW5lPiYsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvbkhp
Z2hsaWdodD4mLCBjb25zdCBFZGl0aW5nUmFuZ2UmIHNlbGVjdGlvblJhbmdlLCBjb25zdCBFZGl0
aW5nUmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UpOwogICAgIHZvaWQgY29uZmlybUNvbXBvc2l0aW9u
QXN5bmMoKTsKIAogICAgIHZvaWQgc2V0U2Nyb2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlvbkVu
YWJsZWQoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBiZDY3NWQ4NWExMTgxZmZjNjg4MWE3NGY1
ZDcxNDJiNDBhZTdmNGYxLi43ODIxZWYwNDgxNjIxYmFkMTcwMzcwMzMyZTQ2ODAwMGZiZTI4MGRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24ubW0KQEAgLTkwLDYgKzkwLDggQEAKICNpbXBvcnQgPENvcmVUZXh0L0NU
Rm9udERlc2NyaXB0b3IuaD4KICNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9VVENvcmVUeXBl
cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db2xvci5oPgorI2ltcG9ydCA8V2ViQ29yZS9Db2xvcklP
Uy5oPgorI2ltcG9ydCA8V2ViQ29yZS9Db21wb3NpdGlvbkhpZ2hsaWdodC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9ET01QYXN0ZUFjY2Vzcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9EYXRhRGV0ZWN0aW9u
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UXVhZC5oPgpAQCAtMTE2LDYgKzExOCw3IEBACiAj
aW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9j
b2NvYS9EYXRhRGV0ZWN0b3JzQ29yZVNQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9MYXVu
Y2hTZXJ2aWNlc1NQSS5oPgorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0F0dHJpYnV0ZWRTdHJp
bmdTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvaW9zL0RhdGFEZXRlY3RvcnNVSVNQSS5oPgogI2lt
cG9ydCA8cGFsL3NwaS9pb3MvR3JhcGhpY3NTZXJ2aWNlc1NQSS5oPgogI2ltcG9ydCA8cGFsL3Nw
aS9pb3MvTWFuYWdlZENvbmZpZ3VyYXRpb25TUEkuaD4KQEAgLTQ1MTksMTMgKzQ1MjIsNDMgQEAg
LSAodm9pZClzZXRNYXJrZWRUZXh0U3R5bGU6KE5TRGljdGlvbmFyeSAqKXN0eWxlRGljdGlvbmFy
eQogewogfQogCitzdGF0aWMgVmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uSGlnaGxpZ2h0PiBj
b21wb3NpdGlvbkhpZ2hsaWdodHMoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCit7CisgICAg
aWYgKCFzdHJpbmcubGVuZ3RoKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgVmVjdG9yPFdl
YkNvcmU6OkNvbXBvc2l0aW9uSGlnaGxpZ2h0PiBoaWdobGlnaHRzOworICAgIFtzdHJpbmcgZW51
bWVyYXRlQXR0cmlidXRlc0luUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgc3RyaW5nLmxlbmd0aCkgb3B0
aW9uczowIHVzaW5nQmxvY2s6WyZoaWdobGlnaHRzXShOU0RpY3Rpb25hcnk8TlNBdHRyaWJ1dGVk
U3RyaW5nS2V5LCBpZD4gKmF0dHJpYnV0ZXMsIE5TUmFuZ2UgcmFuZ2UsIEJPT0wgKikgeworICAg
ICAgICBpZiAoIWF0dHJpYnV0ZXNbTlNNYXJrZWRDbGF1c2VTZWdtZW50QXR0cmlidXRlTmFtZV0p
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdW5zaWduZWQgbG9jYXRpb24gPSByYW5n
ZS5sb2NhdGlvbjsKKworICAgICAgICBXZWJDb3JlOjpDb2xvciBoaWdobGlnaHRDb2xvciB7IFdl
YkNvcmU6OkNvbG9yOjpjb21wb3NpdGlvbkZpbGwgfTsKKyAgICAgICAgaWYgKFVJQ29sb3IgKnVp
Q29sb3IgPSBhdHRyaWJ1dGVzW05TQmFja2dyb3VuZENvbG9yQXR0cmlidXRlTmFtZV0pCisgICAg
ICAgICAgICBoaWdobGlnaHRDb2xvciA9IFdlYkNvcmU6OmNvbG9yRnJvbVVJQ29sb3IodWlDb2xv
cik7CisgICAgICAgIGhpZ2hsaWdodHMuYXBwZW5kKHsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxv
Y2F0aW9uKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KE5TTWF4UmFuZ2UocmFuZ2UpKSwgaGlnaGxp
Z2h0Q29sb3IgfSk7CisgICAgfV07CisgICAgcmV0dXJuIGhpZ2hsaWdodHM7Cit9CisKKy0gKHZv
aWQpc2V0QXR0cmlidXRlZE1hcmtlZFRleHQ6KE5TQXR0cmlidXRlZFN0cmluZyAqKW1hcmtlZFRl
eHQgc2VsZWN0ZWRSYW5nZTooTlNSYW5nZSlzZWxlY3RlZFJhbmdlCit7CisgICAgW3NlbGYgX3Nl
dE1hcmtlZFRleHQ6bWFya2VkVGV4dC5zdHJpbmcgaGlnaGxpZ2h0czpjb21wb3NpdGlvbkhpZ2hs
aWdodHMobWFya2VkVGV4dCkgc2VsZWN0ZWRSYW5nZTpzZWxlY3RlZFJhbmdlXTsKK30KKwogLSAo
dm9pZClzZXRNYXJrZWRUZXh0OihOU1N0cmluZyAqKW1hcmtlZFRleHQgc2VsZWN0ZWRSYW5nZToo
TlNSYW5nZSlzZWxlY3RlZFJhbmdlCit7CisgICAgW3NlbGYgX3NldE1hcmtlZFRleHQ6bWFya2Vk
VGV4dCBoaWdobGlnaHRzOlZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvbkhpZ2hsaWdodD4geyB9
IHNlbGVjdGVkUmFuZ2U6c2VsZWN0ZWRSYW5nZV07Cit9CisKKy0gKHZvaWQpX3NldE1hcmtlZFRl
eHQ6KE5TU3RyaW5nICopbWFya2VkVGV4dCBoaWdobGlnaHRzOihjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6Q29tcG9zaXRpb25IaWdobGlnaHQ+JiloaWdobGlnaHRzIHNlbGVjdGVkUmFuZ2U6KE5TUmFu
Z2Upc2VsZWN0ZWRSYW5nZQogewogI2lmIFVTRShVSUtJVF9LRVlCT0FSRF9BRERJVElPTlMpCiAg
ICAgX2NhbmRpZGF0ZVZpZXdOZWVkc1VwZGF0ZSA9ICFzZWxmLmhhc01hcmtlZFRleHQ7CiAjZW5k
aWYKICAgICBfbWFya2VkVGV4dCA9IG1hcmtlZFRleHQ7Ci0gICAgX3BhZ2UtPnNldENvbXBvc2l0
aW9uQXN5bmMobWFya2VkVGV4dCwgVmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5l
PigpLCBzZWxlY3RlZFJhbmdlLCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSgpKTsKKyAgICBfcGFnZS0+
c2V0Q29tcG9zaXRpb25Bc3luYyhtYXJrZWRUZXh0LCB7IH0sIGhpZ2hsaWdodHMsIHNlbGVjdGVk
UmFuZ2UsIHsgfSk7CiB9CiAKIC0gKHZvaWQpdW5tYXJrVGV4dApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQ
YWdlLmNwcAppbmRleCBjNmMyYTZhNTNkYzgyYmZiNDM5MGRlYzEyMjZhMzE1M2NiOTk2NzM4Li4z
ODUxOTljYmE2ODdlODZmZjk3MzAzMzNlMzU5NjQyMmI5MTdjNmVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVQYWdlLmNwcApAQCAtMjgsNyArMjgsOSBAQAogI2luY2x1ZGUgIldLQnVuZGxlUGFnZVBy
aXZhdGUuaCIKIAogI2luY2x1ZGUgIkFQSUFycmF5LmgiCisjaW5jbHVkZSAiQVBJRGljdGlvbmFy
eS5oIgogI2luY2x1ZGUgIkFQSUZyYW1lSGFuZGxlLmgiCisjaW5jbHVkZSAiQVBJTnVtYmVyLmgi
CiAjaW5jbHVkZSAiQVBJU3RyaW5nLmgiCiAjaW5jbHVkZSAiQVBJVVJMLmgiCiAjaW5jbHVkZSAi
QVBJVVJMUmVxdWVzdC5oIgpAQCAtNTgsNiArNjAsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQVhP
YmplY3RDYWNoZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQWNjZXNzaWJpbGl0eU9iamVjdEludGVy
ZmFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL0NvbXBvc2l0aW9uSGlnaGxpZ2h0Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9Gb2N1c0NvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9QYWdlLmg+CkBAIC02MTAsOSArNjEzLDIyIEBAIFdLQXJyYXlSZWYgV0tCdW5k
bGVQYWdlQ29weVRyYWNrZWRSZXBhaW50UmVjdHMoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYpCiAg
ICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJldlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT50cmFja2Vk
UmVwYWludFJlY3RzKCkubGVha1JlZigpKTsKIH0KIAotdm9pZCBXS0J1bmRsZVBhZ2VTZXRDb21w
b3NpdGlvbihXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgdGV4dCwgaW50IGZy
b20sIGludCBsZW5ndGgsIGJvb2wgc3VwcHJlc3NVbmRlcmxpbmUpCit2b2lkIFdLQnVuZGxlUGFn
ZVNldENvbXBvc2l0aW9uKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiB0ZXh0
LCBpbnQgZnJvbSwgaW50IGxlbmd0aCwgYm9vbCBzdXBwcmVzc1VuZGVybGluZSwgV0tBcnJheVJl
ZiBoaWdobGlnaHREYXRhKQogewotICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRDb21w
b3NpdGlvbkZvclRlc3RpbmcoV2ViS2l0Ojp0b1dURlN0cmluZyh0ZXh0KSwgZnJvbSwgbGVuZ3Ro
LCBzdXBwcmVzc1VuZGVybGluZSk7CisgICAgVmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uSGln
aGxpZ2h0PiBoaWdobGlnaHRzOworICAgIGlmIChoaWdobGlnaHREYXRhKSB7CisgICAgICAgIGF1
dG8qIGhpZ2hsaWdodERhdGFBcnJheSA9IFdlYktpdDo6dG9JbXBsKGhpZ2hsaWdodERhdGEpOwor
ICAgICAgICBoaWdobGlnaHRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoaGlnaGxpZ2h0RGF0YUFy
cmF5LT5zaXplKCkpOworICAgICAgICBmb3IgKGF1dG8gZGljdGlvbmFyeSA6IGhpZ2hsaWdodERh
dGFBcnJheS0+ZWxlbWVudHNPZlR5cGU8QVBJOjpEaWN0aW9uYXJ5PigpKSB7CisgICAgICAgICAg
ICBhdXRvIHN0YXJ0T2Zmc2V0ID0gc3RhdGljX2Nhc3Q8QVBJOjpVSW50NjQqPihkaWN0aW9uYXJ5
LT5nZXQoImZyb20iKSktPnZhbHVlKCk7CisgICAgICAgICAgICBoaWdobGlnaHRzLnVuY2hlY2tl
ZEFwcGVuZCh7CisgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXJ0T2Zm
c2V0KSwKKyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhcnRPZmZzZXQg
KyBzdGF0aWNfY2FzdDxBUEk6OlVJbnQ2NCo+KGRpY3Rpb25hcnktPmdldCgibGVuZ3RoIikpLT52
YWx1ZSgpKSwKKyAgICAgICAgICAgICAgICBXZWJDb3JlOjpDb2xvcihzdGF0aWNfY2FzdDxBUEk6
OlN0cmluZyo+KGRpY3Rpb25hcnktPmdldCgiY29sb3IiKSktPnN0cmluZygpKQorICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0KKyAgICB9CisgICAgV2ViS2l0Ojp0b0ltcGwocGFnZVJlZiktPnNl
dENvbXBvc2l0aW9uRm9yVGVzdGluZyhXZWJLaXQ6OnRvV1RGU3RyaW5nKHRleHQpLCBmcm9tLCBs
ZW5ndGgsIHN1cHByZXNzVW5kZXJsaW5lLCBoaWdobGlnaHRzKTsKIH0KIAogYm9vbCBXS0J1bmRs
ZVBhZ2VIYXNDb21wb3NpdGlvbihXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBh
Z2VQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVQYWdlUHJpdmF0ZS5oCmluZGV4IDNhOTg4MTQ3YjRlNjY3MTk3MzFkMmJiNDRj
ZjMzMzllYjFlNDA5YjMuLjNhY2E1M2Q1N2E2YWI2NzQ1ODE5NWFjMmFjNDIyNDkwMmZkYTI4YjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZVBhZ2VQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZVByaXZhdGUuaApAQCAtODQsNyArODQsNyBA
QCBXS19FWFBPUlQgYm9vbCBXS0J1bmRsZVBhZ2VJc1RyYWNraW5nUmVwYWludHMoV0tCdW5kbGVQ
YWdlUmVmIHBhZ2UpOwogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlUmVzZXRUcmFja2VkUmVw
YWludHMoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOwogV0tfRVhQT1JUIFdLQXJyYXlSZWYgV0tCdW5k
bGVQYWdlQ29weVRyYWNrZWRSZXBhaW50UmVjdHMoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOwogCi1X
S19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VTZXRDb21wb3NpdGlvbihXS0J1bmRsZVBhZ2VSZWYg
cGFnZSwgV0tTdHJpbmdSZWYgdGV4dCwgaW50IGZyb20sIGludCBsZW5ndGgsIGJvb2wgc3VwcHJl
c3NVbmRlcmxpbmUpOworV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlU2V0Q29tcG9zaXRpb24o
V0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIHRleHQsIGludCBmcm9tLCBpbnQgbGVu
Z3RoLCBib29sIHN1cHByZXNzVW5kZXJsaW5lLCBXS0FycmF5UmVmIGhpZ2hsaWdodERhdGEpOwog
V0tfRVhQT1JUIGJvb2wgV0tCdW5kbGVQYWdlSGFzQ29tcG9zaXRpb24oV0tCdW5kbGVQYWdlUmVm
IHBhZ2UpOwogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlQ29uZmlybUNvbXBvc2l0aW9uKFdL
QnVuZGxlUGFnZVJlZiBwYWdlKTsKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZUNvbmZpcm1D
b21wb3NpdGlvbldpdGhUZXh0KFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiB0ZXh0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9n
bGliL1dlYkVkaXRvckNsaWVudEdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L2dsaWIvV2ViRWRpdG9yQ2xpZW50R0xpYi5jcHAKaW5kZXggOTZlODI1N2Ux
NDczOWJiMGQ5OTRmNmEyYmYzNzEwZDc3NzZhYTViNC4uNDg1ZjFmZDA5OTY5MDExMTM0ZTU3NzY5
NWRjMmIwNGQzYjFmZDEzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L2dsaWIvV2ViRWRpdG9yQ2xpZW50R0xpYi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2dsaWIvV2ViRWRpdG9yQ2xpZW50R0xpYi5j
cHAKQEAgLTIwLDYgKzIwLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJF
ZGl0b3JDbGllbnQuaCIKIAorI2luY2x1ZGUgPFdlYkNvcmUvQ29tcG9zaXRpb25IaWdobGlnaHQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FZGl0
b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CkBAIC00Nyw3ICs0OCw3IEBAIHZvaWQg
V2ViRWRpdG9yQ2xpZW50OjpkaWREaXNwYXRjaElucHV0TWV0aG9kS2V5ZG93bihLZXlib2FyZEV2
ZW50JiBldmVudCkKICAgICBpZiAoY29uc3QgYXV0byYgdW5kZXJsaW5lcyA9IHBsYXRmb3JtRXZl
bnQtPnByZWVkaXRVbmRlcmxpbmVzKCkpIHsKICAgICAgICAgYXV0byByYW5nZVN0YXJ0ID0gcGxh
dGZvcm1FdmVudC0+cHJlZWRpdFNlbGVjdGlvblJhbmdlU3RhcnQoKS52YWx1ZU9yKDApOwogICAg
ICAgICBhdXRvIHJhbmdlTGVuZ3RoID0gcGxhdGZvcm1FdmVudC0+cHJlZWRpdFNlbGVjdGlvblJh
bmdlTGVuZ3RoKCkudmFsdWVPcigwKTsKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLnNldENvbXBv
c2l0aW9uKHBsYXRmb3JtRXZlbnQtPnRleHQoKSwgdW5kZXJsaW5lcy52YWx1ZSgpLCByYW5nZVN0
YXJ0LCByYW5nZVN0YXJ0ICsgcmFuZ2VMZW5ndGgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCku
c2V0Q29tcG9zaXRpb24ocGxhdGZvcm1FdmVudC0+dGV4dCgpLCB1bmRlcmxpbmVzLnZhbHVlKCks
IHsgfSwgcmFuZ2VTdGFydCwgcmFuZ2VTdGFydCArIHJhbmdlTGVuZ3RoKTsKICAgICB9IGVsc2UK
ICAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbmZpcm1Db21wb3NpdGlvbihwbGF0Zm9ybUV2ZW50
LT50ZXh0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAppbmRleCBlMzAzYzIyZGYzYzc2YmFjN2ZlNDgyYTM5OTM1ODIwMGJmMWM3YWJhLi4zYTFh
OWU4M2M0ZWI5YzNmNzZjMjM3ZDIxZGFkNzcwZjVhOGY1ODY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNTEwMCw3ICs1MTAwLDcgQEAgdm9p
ZCBXZWJQYWdlOjpzaW11bGF0ZU1vdXNlTW90aW9uKFdlYkNvcmU6OkludFBvaW50IHBvc2l0aW9u
LCBXYWxsVGltZSB0aW1lKQogICAgIG1vdXNlRXZlbnQoV2ViTW91c2VFdmVudChXZWJNb3VzZUV2
ZW50OjpNb3VzZU1vdmUsIFdlYk1vdXNlRXZlbnQ6Ok5vQnV0dG9uLCAwLCBwb3NpdGlvbiwgcG9z
aXRpb24sIDAsIDAsIDAsIDAsIE9wdGlvblNldDxXZWJFdmVudDo6TW9kaWZpZXI+IHsgfSwgdGlt
ZSwgMCwgV2ViTW91c2VFdmVudDo6Tm9UYXApKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpzZXRDb21w
b3NpdGlvbkZvclRlc3RpbmcoY29uc3QgU3RyaW5nJiBjb21wb3NpdGlvblN0cmluZywgdWludDY0
X3QgZnJvbSwgdWludDY0X3QgbGVuZ3RoLCBib29sIHN1cHByZXNzVW5kZXJsaW5lKQordm9pZCBX
ZWJQYWdlOjpzZXRDb21wb3NpdGlvbkZvclRlc3RpbmcoY29uc3QgU3RyaW5nJiBjb21wb3NpdGlv
blN0cmluZywgdWludDY0X3QgZnJvbSwgdWludDY0X3QgbGVuZ3RoLCBib29sIHN1cHByZXNzVW5k
ZXJsaW5lLCBjb25zdCBWZWN0b3I8Q29tcG9zaXRpb25IaWdobGlnaHQ+JiBoaWdobGlnaHRzKQog
ewogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9y
TWFpbkZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZS5lZGl0b3IoKS5jYW5FZGl0KCkpCkBAIC01MTEw
LDcgKzUxMTAsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldENvbXBvc2l0aW9uRm9yVGVzdGluZyhjb25z
dCBTdHJpbmcmIGNvbXBvc2l0aW9uU3RyaW5nLCB1aW50NjRfdAogICAgIGlmICghc3VwcHJlc3NV
bmRlcmxpbmUpCiAgICAgICAgIHVuZGVybGluZXMuYXBwZW5kKENvbXBvc2l0aW9uVW5kZXJsaW5l
KDAsIGNvbXBvc2l0aW9uU3RyaW5nLmxlbmd0aCgpLCBDb21wb3NpdGlvblVuZGVybGluZUNvbG9y
OjpUZXh0Q29sb3IsIENvbG9yKENvbG9yOjpibGFjayksIGZhbHNlKSk7CiAKLSAgICBmcmFtZS5l
ZGl0b3IoKS5zZXRDb21wb3NpdGlvbihjb21wb3NpdGlvblN0cmluZywgdW5kZXJsaW5lcywgZnJv
bSwgZnJvbSArIGxlbmd0aCk7CisgICAgZnJhbWUuZWRpdG9yKCkuc2V0Q29tcG9zaXRpb24oY29t
cG9zaXRpb25TdHJpbmcsIHVuZGVybGluZXMsIGhpZ2hsaWdodHMsIGZyb20sIGZyb20gKyBsZW5n
dGgpOwogfQogCiBib29sIFdlYlBhZ2U6Omhhc0NvbXBvc2l0aW9uRm9yVGVzdGluZygpCkBAIC01
MzQ5LDcgKzUzNDksNyBAQCB2b2lkIFdlYlBhZ2U6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdl
QXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiBlZGl0aW5nUmFuZ2UsCiAgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VDYWxsYmFjayhyZXN1bHQsIGVk
aXRpbmdSYW5nZSwgY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OnNldENvbXBvc2l0
aW9uQXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8Q29tcG9zaXRpb25VbmRl
cmxpbmU+JiB1bmRlcmxpbmVzLCBjb25zdCBFZGl0aW5nUmFuZ2UmIHNlbGVjdGlvbiwgY29uc3Qg
RWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudEVkaXRpbmdSYW5nZSkKK3ZvaWQgV2ViUGFnZTo6c2V0
Q29tcG9zaXRpb25Bc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZlY3RvcjxDb21wb3Np
dGlvblVuZGVybGluZT4mIHVuZGVybGluZXMsIGNvbnN0IFZlY3RvcjxDb21wb3NpdGlvbkhpZ2hs
aWdodD4mIGhpZ2hsaWdodHMsIGNvbnN0IEVkaXRpbmdSYW5nZSYgc2VsZWN0aW9uLCBjb25zdCBF
ZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50RWRpdGluZ1JhbmdlKQogewogICAgIHBsYXRmb3JtV2ls
bFBlcmZvcm1FZGl0aW5nQ29tbWFuZCgpOwogCkBAIC01MzYzLDcgKzUzNjMsNyBAQCB2b2lkIFdl
YlBhZ2U6OnNldENvbXBvc2l0aW9uQXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0
b3I8Q29tcG9zaXRpb25VbgogICAgICAgICAgICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNl
bGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKCpyZXBsYWNlbWVudFJhbmdlLCBTRUxfREVGQVVMVF9B
RkZJTklUWSkpOwogICAgICAgICB9CiAKLSAgICAgICAgZnJhbWUuZWRpdG9yKCkuc2V0Q29tcG9z
aXRpb24odGV4dCwgdW5kZXJsaW5lcywgc2VsZWN0aW9uLmxvY2F0aW9uLCBzZWxlY3Rpb24ubG9j
YXRpb24gKyBzZWxlY3Rpb24ubGVuZ3RoKTsKKyAgICAgICAgZnJhbWUuZWRpdG9yKCkuc2V0Q29t
cG9zaXRpb24odGV4dCwgdW5kZXJsaW5lcywgaGlnaGxpZ2h0cywgc2VsZWN0aW9uLmxvY2F0aW9u
LCBzZWxlY3Rpb24ubG9jYXRpb24gKyBzZWxlY3Rpb24ubGVuZ3RoKTsKICAgICB9CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBhMjc1Mzc2Zjkx
MmEyMGQzYzRkZGQwNGM1NjIzMDY2M2JhOWZlN2YzLi5iOWVkOWQ0ZmM2ZDgxOTkxYmQxOWZmMjJk
MWU4MjkwZTg5ZmY1NDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCkBAIC0xOTYsNiArMTk2LDcgQEAgZW51bSBjbGFzcyBUZXh0SW5kaWNhdG9yUHJlc2Vu
dGF0aW9uVHJhbnNpdGlvbiA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFdyaXRpbmdEaXJlY3Rpb24g
OiB1aW50OF90OwogCiBzdHJ1Y3QgQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjsKK3N0cnVjdCBD
b21wb3NpdGlvbkhpZ2hsaWdodDsKIHN0cnVjdCBDb21wb3NpdGlvblVuZGVybGluZTsKIHN0cnVj
dCBEaWN0YXRpb25BbHRlcm5hdGl2ZTsKIHN0cnVjdCBFbGVtZW50Q29udGV4dDsKQEAgLTgyNCw3
ICs4MjUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRTZWxlY3RlZFJhbmdlQXN5bmMoQ2FsbGJh
Y2tJRCk7CiAgICAgdm9pZCBjaGFyYWN0ZXJJbmRleEZvclBvaW50QXN5bmMoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGZpcnN0UmVjdEZvckNoYXJhY3Rl
clJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiwgQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBz
ZXRDb21wb3NpdGlvbkFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVmVjdG9yPFdlYkNv
cmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPiYgdW5kZXJsaW5lcywgY29uc3QgRWRpdGluZ1Jhbmdl
JiBzZWxlY3Rpb25SYW5nZSwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudFJhbmdlKTsK
KyAgICB2b2lkIHNldENvbXBvc2l0aW9uQXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+JiwgY29uc3QgVmVjdG9yPFdlYkNv
cmU6OkNvbXBvc2l0aW9uSGlnaGxpZ2h0PiYsIGNvbnN0IEVkaXRpbmdSYW5nZSYgc2VsZWN0aW9u
UmFuZ2UsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSk7CiAgICAgdm9pZCBj
b25maXJtQ29tcG9zaXRpb25Bc3luYygpOwogCiAgICAgdm9pZCByZWFkU2VsZWN0aW9uRnJvbVBh
c3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sJiYpPiYmKTsKQEAgLTg0NSw3ICs4NDYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBy
ZXBsYWNlU2VsZWN0aW9uV2l0aFBhc3RlYm9hcmREYXRhKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0
eXBlcywgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CiAjZW5kaWYKIAotICAgIHZvaWQgc2V0
Q29tcG9zaXRpb25Gb3JUZXN0aW5nKGNvbnN0IFN0cmluZyYgY29tcG9zaXRpb25TdHJpbmcsIHVp
bnQ2NF90IGZyb20sIHVpbnQ2NF90IGxlbmd0aCwgYm9vbCBzdXBwcmVzc1VuZGVybGluZSk7Cisg
ICAgdm9pZCBzZXRDb21wb3NpdGlvbkZvclRlc3RpbmcoY29uc3QgU3RyaW5nJiBjb21wb3NpdGlv
blN0cmluZywgdWludDY0X3QgZnJvbSwgdWludDY0X3QgbGVuZ3RoLCBib29sIHN1cHByZXNzVW5k
ZXJsaW5lLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25IaWdobGlnaHQ+Jik7CiAg
ICAgYm9vbCBoYXNDb21wb3NpdGlvbkZvclRlc3RpbmcoKTsKICAgICB2b2lkIGNvbmZpcm1Db21w
b3NpdGlvbkZvclRlc3RpbmcoY29uc3QgU3RyaW5nJiBjb21wb3NpdGlvblN0cmluZyk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCmluZGV4IGU5YWQ2MGY2MTEzNDdlZmE5MDJlNzk1M2JlNzhiMjIyZWUxMDY2MjMuLmRjYjEy
MzRlOTVhY2FjZmNkZWU2YmU2MGI2OWQwODFkNWYxYzYzOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtNDUzLDcg
KzQ1Myw3IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdl
YktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgR2V0U2VsZWN0ZWRSYW5nZUFz
eW5jKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIENoYXJhY3RlckluZGV4Rm9y
UG9pbnRBc3luYyhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgV2ViS2l0OjpDYWxsYmFja0lEIGNh
bGxiYWNrSUQpOwogICAgIEZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5bmMoc3RydWN0IFdl
YktpdDo6RWRpdGluZ1JhbmdlIHJhbmdlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCk7
Ci0gICAgU2V0Q29tcG9zaXRpb25Bc3luYyhTdHJpbmcgdGV4dCwgVmVjdG9yPFdlYkNvcmU6OkNv
bXBvc2l0aW9uVW5kZXJsaW5lPiB1bmRlcmxpbmVzLCBzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFu
Z2Ugc2VsZWN0aW9uUmFuZ2UsIHN0cnVjdCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSByZXBsYWNlbWVu
dFJhbmdlKQorICAgIFNldENvbXBvc2l0aW9uQXN5bmMoU3RyaW5nIHRleHQsIFZlY3RvcjxXZWJD
b3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4gdW5kZXJsaW5lcywgVmVjdG9yPFdlYkNvcmU6OkNv
bXBvc2l0aW9uSGlnaGxpZ2h0PiBoaWdobGlnaHRzLCBzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFu
Z2Ugc2VsZWN0aW9uUmFuZ2UsIHN0cnVjdCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSByZXBsYWNlbWVu
dFJhbmdlKQogICAgIENvbmZpcm1Db21wb3NpdGlvbkFzeW5jKCkKICNlbmRpZgogI2lmIFBMQVRG
T1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
RnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmlu
ZGV4IGY5OTRjNWNjZDU1MDc3M2JlODNjNWFiMjNhNWMxYjRlZWIwYTBiNGEuLjJmZWNiYjUxNWM3
ZGY1MDllZmI2NDAwOTlkMTgxOTIyNDY3MWQyYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtNjYsNiArNjYsNyBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9DaHJvbWUuaD4KICNp
bXBvcnQgPFdlYkNvcmUvQ29sb3JNYWMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvQ29tcG9zaXRpb25I
aWdobGlnaHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRGF0YWJhc2VNYW5hZ2VyLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0RvY3VtZW50RnJhZ21lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRM
b2FkZXIuaD4KQEAgLTE2NDksNyArMTY1MCw3IEBAIC0gKHZvaWQpc2V0TWFya2VkVGV4dDooTlNT
dHJpbmcgKil0ZXh0IHNlbGVjdGVkUmFuZ2U6KE5TUmFuZ2UpbmV3U2VsUmFuZ2UKICAgICAKICAg
ICBWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+IHVuZGVybGluZXM7CiAgICAg
ZnJhbWUtPnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuc3VwcHJlc3NGb3JtTm90aWZpY2F0aW9u
cygpOwotICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRDb21wb3NpdGlvbih0ZXh0LCB1bmRlcmxpbmVz
LCBuZXdTZWxSYW5nZS5sb2NhdGlvbiwgTlNNYXhSYW5nZShuZXdTZWxSYW5nZSkpOworICAgIGZy
YW1lLT5lZGl0b3IoKS5zZXRDb21wb3NpdGlvbih0ZXh0LCB1bmRlcmxpbmVzLCB7IH0sIG5ld1Nl
bFJhbmdlLmxvY2F0aW9uLCBOU01heFJhbmdlKG5ld1NlbFJhbmdlKSk7CiAgICAgZnJhbWUtPnBh
Z2UoKS0+Y2hyb21lKCkuY2xpZW50KCkucmVzdG9yZUZvcm1Ob3RpZmljYXRpb25zKCk7CiB9CiAK
QEAgLTE2NjAsNyArMTY2MSw3IEBAIC0gKHZvaWQpc2V0TWFya2VkVGV4dDooTlNTdHJpbmcgKil0
ZXh0IGZvckNhbmRpZGF0ZXM6KEJPT0wpZm9yQ2FuZGlkYXRlcwogICAgICAgICByZXR1cm47CiAg
ICAgICAgIAogICAgIFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4gdW5kZXJs
aW5lczsKLSAgICBmcmFtZS0+ZWRpdG9yKCkuc2V0Q29tcG9zaXRpb24odGV4dCwgdW5kZXJsaW5l
cywgMCwgW3RleHQgbGVuZ3RoXSk7CisgICAgZnJhbWUtPmVkaXRvcigpLnNldENvbXBvc2l0aW9u
KHRleHQsIHVuZGVybGluZXMsIHsgfSwgMCwgW3RleHQgbGVuZ3RoXSk7CiB9CiAKIC0gKHZvaWQp
Y29uZmlybU1hcmtlZFRleHQ6KE5TU3RyaW5nICopdGV4dApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggYjJhMWQwODU5MzhlZjNlN2QyMjU5
ZmVmMTY2ZGRiY2Y1Mzg5N2Y4ZC4uNDcyNzczZTM0YTlmNGI4MmI1NzBmZjFkNWQ3Mzc1OGQ2MjRj
ZmE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1M
Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3
Lm1tCkBAIC04MCw2ICs4MCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0NhY2hlZFJlc291cmNlTG9h
ZGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Nocm9tZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db2xv
ck1hYy5oPgorI2ltcG9ydCA8V2ViQ29yZS9Db21wb3NpdGlvbkhpZ2hsaWdodC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9Db250ZXh0TWVudS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db250ZXh0TWVudUNv
bnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRGljdGlvbmFyeUxvb2t1cC5oPgpAQCAtNjU3
MCw3ICs2NTcxLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAg
aWYgKHJlcGxhY2VtZW50UmFuZ2UubG9jYXRpb24gIT0gTlNOb3RGb3VuZCkKICAgICAgICAgW1tz
ZWxmIF9mcmFtZV0gX3NlbGVjdE5TUmFuZ2U6cmVwbGFjZW1lbnRSYW5nZV07CiAKLSAgICBjb3Jl
RnJhbWUtPmVkaXRvcigpLnNldENvbXBvc2l0aW9uKHRleHQsIHVuZGVybGluZXMsIG5ld1NlbFJh
bmdlLmxvY2F0aW9uLCBOU01heFJhbmdlKG5ld1NlbFJhbmdlKSk7CisgICAgY29yZUZyYW1lLT5l
ZGl0b3IoKS5zZXRDb21wb3NpdGlvbih0ZXh0LCB1bmRlcmxpbmVzLCB7IH0sIG5ld1NlbFJhbmdl
LmxvY2F0aW9uLCBOU01heFJhbmdlKG5ld1NlbFJhbmdlKSk7CiB9CiAKIEFMTE9XX0RFUFJFQ0FU
RURfSU1QTEVNRU5UQVRJT05TX0JFR0lOCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCmlu
ZGV4IGUzOGI1M2JhMjhjOGIwNTczMWMxZmM4ODBkN2I4MDc1NTAyNmY1ZjguLjZhYTBhZWU4Yjgw
ZTc0Mjk1Mzg0NDFiZTI5YmZmMjI4MzQzYzY1MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZp
ZXcuY3BwCkBAIC04NSw2ICs4NSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9CaXRtYXBJbmZvLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9DYWNoZVN0b3JhZ2VQcm92aWRlci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvQ2hyb21lLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Db21wb3NpdGlvbkhpZ2hsaWdodC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGV4dE1lbnUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nv
bnRleHRNZW51Q29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llSmFyLmg+CkBA
IC02Mzk5LDcgKzY0MDAsNyBAQCBib29sIFdlYlZpZXc6Om9uSU1FQ29tcG9zaXRpb24oTFBBUkFN
IGxwYXJhbSkKIAogICAgICAgICBpbnQgY3Vyc29yUG9zaXRpb24gPSBMT1dPUkQoSU1NRGljdDo6
ZGljdCgpLmdldENvbXBvc2l0aW9uU3RyaW5nKGhJbnB1dENvbnRleHQsIEdDU19DVVJTT1JQT1Ms
IDAsIDApKTsKIAotICAgICAgICB0YXJnZXRGcmFtZS5lZGl0b3IoKS5zZXRDb21wb3NpdGlvbihj
b21wb3NpdGlvblN0cmluZywgdW5kZXJsaW5lcywgY3Vyc29yUG9zaXRpb24sIDApOworICAgICAg
ICB0YXJnZXRGcmFtZS5lZGl0b3IoKS5zZXRDb21wb3NpdGlvbihjb21wb3NpdGlvblN0cmluZywg
dW5kZXJsaW5lcywgeyB9LCBjdXJzb3JQb3NpdGlvbiwgMCk7CiAgICAgfQogCiAgICAgcmV0dXJu
IHRydWU7CkBAIC03NjkyLDcgKzc2OTMsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OnNldENvbXBvc2l0
aW9uRm9yVGVzdGluZyhfSW5fIEJTVFIgY29tcG9zaXRpb24sIFVJTlQgZnJvbSwgVUlOVAogCiAg
ICAgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiB1bmRlcmxpbmVzOwogICAgIHVuZGVybGlu
ZXMuYXBwZW5kKENvbXBvc2l0aW9uVW5kZXJsaW5lKDAsIGNvbXBvc2l0aW9uU3RyLmxlbmd0aCgp
LCBDb21wb3NpdGlvblVuZGVybGluZUNvbG9yOjpUZXh0Q29sb3IsIENvbG9yKENvbG9yOjpibGFj
ayksIGZhbHNlKSk7Ci0gICAgZnJhbWUuZWRpdG9yKCkuc2V0Q29tcG9zaXRpb24oY29tcG9zaXRp
b25TdHIsIHVuZGVybGluZXMsIGZyb20sIGZyb20gKyBsZW5ndGgpOworICAgIGZyYW1lLmVkaXRv
cigpLnNldENvbXBvc2l0aW9uKGNvbXBvc2l0aW9uU3RyLCB1bmRlcmxpbmVzLCB7IH0sIGZyb20s
IGZyb20gKyBsZW5ndGgpOwogCiAgICAgcmV0dXJuIFNfT0s7CiB9CmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZTgxODFhODhlMWZmYjg0ZTMxYmEx
ZTQ3YTljZmM0YjM3NjkwNjQ3My4uOTcwNDE5MWFlYzI5OTAyY2E2ODM5NWM0ZDAyNjAyYTlmMGJj
OWY3NiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDM2IEBACisyMDIwLTAxLTMxICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhA
YXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIGJhY2tncm91
bmQgY29sb3JzIHdoZW4gc2V0dGluZyBtYXJrZWQgdGV4dAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3MDY1CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS81Nzg3NjE0MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgc3VwcG9ydCBpbiBXZWJLaXRUZXN0UnVubmVyIGZvciBzcGVjaWZ5aW5nIGEgbGlz
dCBvZiBoaWdobGlnaHQgcmFuZ2VzIHdoZW4gc2V0dGluZyBtYXJrZWQgdGV4dC4gVGhpcyBjb21l
cworICAgICAgICBpbiB0aGUgZm9ybSBvZiBhbiBhZGRpdGlvbmFsIGFyZ3VtZW50IHRvIFRleHRJ
bnB1dENvbnRyb2xsZXI6OnNldE1hcmtlZFRleHQsIHdoaWNoIGNvbnRhaW5zIGFuIGFycmF5IG9m
IG9iamVjdHMsCisgICAgICAgIGVhY2ggZGVzY3JpYmluZyBvbmUgcmFuZ2UgKGluIHRoZSBjb21w
b3NpdGlvbikgdG8gaGlnaGxpZ2h0LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvaW9zL1Rl
eHRJbnB1dENvbnRyb2xsZXJJT1MubToKKyAgICAgICAgKCtbVGV4dElucHV0Q29udHJvbGxlciBp
c1NlbGVjdG9yRXhjbHVkZWRGcm9tV2ViU2NyaXB0Ol0pOgorICAgICAgICAoK1tUZXh0SW5wdXRD
b250cm9sbGVyIHdlYlNjcmlwdE5hbWVGb3JTZWxlY3RvcjpdKToKKyAgICAgICAgKC1bVGV4dElu
cHV0Q29udHJvbGxlciBzZXRNYXJrZWRUZXh0OnNlbGVjdGVkRnJvbTpsZW5ndGg6c3VwcHJlc3NV
bmRlcmxpbmU6aGlnaGxpZ2h0czpdKToKKyAgICAgICAgKC1bVGV4dElucHV0Q29udHJvbGxlciBz
ZXRNYXJrZWRUZXh0OnNlbGVjdGVkRnJvbTpsZW5ndGg6c3VwcHJlc3NVbmRlcmxpbmU6XSk6IERl
bGV0ZWQuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1RleHRJbnB1dENvbnRyb2xsZXJN
YWMubToKKyAgICAgICAgKCtbVGV4dElucHV0Q29udHJvbGxlciBpc1NlbGVjdG9yRXhjbHVkZWRG
cm9tV2ViU2NyaXB0Ol0pOgorICAgICAgICAoK1tUZXh0SW5wdXRDb250cm9sbGVyIHdlYlNjcmlw
dE5hbWVGb3JTZWxlY3RvcjpdKToKKyAgICAgICAgKC1bVGV4dElucHV0Q29udHJvbGxlciBzZXRN
YXJrZWRUZXh0OnNlbGVjdGVkRnJvbTpsZW5ndGg6c3VwcHJlc3NVbmRlcmxpbmU6aGlnaGxpZ2h0
czpdKToKKyAgICAgICAgKC1bVGV4dElucHV0Q29udHJvbGxlciBzZXRNYXJrZWRUZXh0OnNlbGVj
dGVkRnJvbTpsZW5ndGg6c3VwcHJlc3NVbmRlcmxpbmU6XSk6IERlbGV0ZWQuCisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXh0SW5wdXRDb250cm9s
bGVyLmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1RleHRJ
bnB1dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjphcnJheUxlbmd0aCk6CisgICAgICAg
IChXVFI6OmNyZWF0ZUNvbXBvc2l0aW9uSGlnaGxpZ2h0RGF0YSk6CisKKyAgICAgICAgQWRkIGxv
Z2ljIHRvIGNvbnZlcnQgYSBnaXZlbiBKU09iamVjdCBjb250YWluaW5nIHRoZSBjb21wb3NpdGlv
biBoaWdobGlnaHQgaW5mb3JtYXRpb24gaW50byBhIFdLQXJyYXlSZWYsIHdoaWNoCisgICAgICAg
IGlzIHRoZW4gcGFzc2VkIGludG8gV2ViS2l0IHZpYSBXS0J1bmRsZVBhZ2VTZXRDb21wb3NpdGlv
bi4KKworICAgICAgICAoV1RSOjpUZXh0SW5wdXRDb250cm9sbGVyOjpzZXRNYXJrZWRUZXh0KToK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1RleHRJbnB1dENvbnRy
b2xsZXIuaDoKKwogMjAyMC0wMS0zMCAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGFub3RoZXIgc3BlY3VsYXRpdmUgdGVzdCBmaXggYWZ0
ZXIgcjI1NTA0MQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1RleHRJbnB1
dENvbnRyb2xsZXJJT1MubSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9UZXh0SW5wdXRDb250
cm9sbGVySU9TLm0KaW5kZXggMDkyZWZlNDUxM2M3ZDJjNDY0MWVkYzg2ODdiMzk4OTc3ZGY0ZWFl
NS4uOWQxMjdkNjVjNWZkMDRhNmZlM2E5ZTk0MmViNWY1Y2MyZmUwZmY0ZiAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1RleHRJbnB1dENvbnRyb2xsZXJJT1MubQorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9pb3MvVGV4dElucHV0Q29udHJvbGxlcklPUy5tCkBAIC0zOSw3
ICszOSw3IEBAIEBpbXBsZW1lbnRhdGlvbiBUZXh0SW5wdXRDb250cm9sbGVyCiArIChCT09MKWlz
U2VsZWN0b3JFeGNsdWRlZEZyb21XZWJTY3JpcHQ6KFNFTClhU2VsZWN0b3IKIHsKICAgICBpZiAo
YVNlbGVjdG9yID09IEBzZWxlY3RvcihpbnNlcnRUZXh0OikKLSAgICAgICAgfHwgYVNlbGVjdG9y
ID09IEBzZWxlY3RvcihzZXRNYXJrZWRUZXh0OnNlbGVjdGVkRnJvbTpsZW5ndGg6c3VwcHJlc3NV
bmRlcmxpbmU6KQorICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHNldE1hcmtlZFRl
eHQ6c2VsZWN0ZWRGcm9tOmxlbmd0aDpzdXBwcmVzc1VuZGVybGluZTpoaWdobGlnaHRzOikKICAg
ICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3RvcihtYXJrZWRSYW5nZSkpCiAgICAgICAgIHJl
dHVybiBOTzsKIApAQCAtNTAsNyArNTAsNyBAQCArIChOU1N0cmluZyAqKXdlYlNjcmlwdE5hbWVG
b3JTZWxlY3RvcjooU0VMKWFTZWxlY3RvcgogewogICAgIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVj
dG9yKGluc2VydFRleHQ6KSkKICAgICAgICAgcmV0dXJuIEAiaW5zZXJ0VGV4dCI7Ci0gICAgaWYg
KGFTZWxlY3RvciA9PSBAc2VsZWN0b3Ioc2V0TWFya2VkVGV4dDpzZWxlY3RlZEZyb206bGVuZ3Ro
OnN1cHByZXNzVW5kZXJsaW5lOikpCisgICAgaWYgKGFTZWxlY3RvciA9PSBAc2VsZWN0b3Ioc2V0
TWFya2VkVGV4dDpzZWxlY3RlZEZyb206bGVuZ3RoOnN1cHByZXNzVW5kZXJsaW5lOmhpZ2hsaWdo
dHM6KSkKICAgICAgICAgcmV0dXJuIEAic2V0TWFya2VkVGV4dCI7CiAgICAgaWYgKGFTZWxlY3Rv
ciA9PSBAc2VsZWN0b3IobWFya2VkUmFuZ2UpKQogICAgICAgICByZXR1cm4gQCJtYXJrZWRSYW5n
ZSI7CkBAIC04Myw3ICs4Myw3IEBAIC0gKHZvaWQpaW5zZXJ0VGV4dDooTlNTdHJpbmcgKil0ZXh0
CiAgICAgW1t3ZWJWaWV3IG1haW5GcmFtZV0gY29uZmlybU1hcmtlZFRleHQ6dGV4dF07CiB9CiAK
LS0gKHZvaWQpc2V0TWFya2VkVGV4dDooTlNTdHJpbmcgKil0ZXh0IHNlbGVjdGVkRnJvbTooTlNJ
bnRlZ2VyKXNlbGVjdGlvblN0YXJ0IGxlbmd0aDooTlNJbnRlZ2VyKXNlbGVjdGlvbkxlbmd0aCBz
dXBwcmVzc1VuZGVybGluZTooQk9PTClzdXBwcmVzc1VuZGVybGluZQorLSAodm9pZClzZXRNYXJr
ZWRUZXh0OihOU1N0cmluZyAqKXRleHQgc2VsZWN0ZWRGcm9tOihOU0ludGVnZXIpc2VsZWN0aW9u
U3RhcnQgbGVuZ3RoOihOU0ludGVnZXIpc2VsZWN0aW9uTGVuZ3RoIHN1cHByZXNzVW5kZXJsaW5l
OihCT09MKXN1cHByZXNzVW5kZXJsaW5lIGhpZ2hsaWdodHM6KE5TQXJyYXk8TlNEaWN0aW9uYXJ5
ICo+ICopaGlnaGxpZ2h0cwogewogICAgIGlmIChzZWxlY3Rpb25TdGFydCA9PSAtMSkKICAgICAg
ICAgc2VsZWN0aW9uU3RhcnQgPSBOU05vdEZvdW5kOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL1RleHRJbnB1dENvbnRyb2xsZXJNYWMubSBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9UZXh0SW5wdXRDb250cm9sbGVyTWFjLm0KaW5kZXggNTZmZTk2N2FlNzcwNWM5MTRi
ZTkwOTRjODA5ZTgxZGI3MTI1YzA3MS4uMWNiYmQ3MWQ0YWMxYmFhZTcxYjRmOWM0NzVjYWIyMTdi
YTIzYzI0NSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1RleHRJbnB1dENv
bnRyb2xsZXJNYWMubQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGV4dElucHV0Q29u
dHJvbGxlck1hYy5tCkBAIC0yMjQsNyArMjI0LDcgQEAgKyAoQk9PTClpc1NlbGVjdG9yRXhjbHVk
ZWRGcm9tV2ViU2NyaXB0OihTRUwpYVNlbGVjdG9yCiB7CiAgICAgaWYgKGFTZWxlY3RvciA9PSBA
c2VsZWN0b3IoaW5zZXJ0VGV4dDopCiAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3Io
ZG9Db21tYW5kOikKLSAgICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3RvcihzZXRNYXJrZWRU
ZXh0OnNlbGVjdGVkRnJvbTpsZW5ndGg6c3VwcHJlc3NVbmRlcmxpbmU6KQorICAgICAgICB8fCBh
U2VsZWN0b3IgPT0gQHNlbGVjdG9yKHNldE1hcmtlZFRleHQ6c2VsZWN0ZWRGcm9tOmxlbmd0aDpz
dXBwcmVzc1VuZGVybGluZTpoaWdobGlnaHRzOikKICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBz
ZWxlY3Rvcih1bm1hcmtUZXh0KQogICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKGhh
c01hcmtlZFRleHQpCiAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoY29udmVyc2F0
aW9uSWRlbnRpZmllcikKQEAgLTI1MSw3ICsyNTEsNyBAQCArIChOU1N0cmluZyAqKXdlYlNjcmlw
dE5hbWVGb3JTZWxlY3RvcjooU0VMKWFTZWxlY3RvcgogICAgICAgICByZXR1cm4gQCJpbnNlcnRU
ZXh0IjsKICAgICBpZiAoYVNlbGVjdG9yID09IEBzZWxlY3Rvcihkb0NvbW1hbmQ6KSkKICAgICAg
ICAgcmV0dXJuIEAiZG9Db21tYW5kIjsKLSAgICBpZiAoYVNlbGVjdG9yID09IEBzZWxlY3Rvcihz
ZXRNYXJrZWRUZXh0OnNlbGVjdGVkRnJvbTpsZW5ndGg6c3VwcHJlc3NVbmRlcmxpbmU6KSkKKyAg
ICBpZiAoYVNlbGVjdG9yID09IEBzZWxlY3RvcihzZXRNYXJrZWRUZXh0OnNlbGVjdGVkRnJvbTps
ZW5ndGg6c3VwcHJlc3NVbmRlcmxpbmU6aGlnaGxpZ2h0czopKQogICAgICAgICByZXR1cm4gQCJz
ZXRNYXJrZWRUZXh0IjsKICAgICBpZiAoYVNlbGVjdG9yID09IEBzZWxlY3RvcihzdWJzdHJpbmdG
cm9tOmxlbmd0aDopKQogICAgICAgICByZXR1cm4gQCJzdWJzdHJpbmdGcm9tUmFuZ2UiOwpAQCAt
MzE0LDcgKzMxNCw3IEBAIC0gKHZvaWQpZG9Db21tYW5kOihOU1N0cmluZyAqKWFDb21tYW5kCiAg
ICAgICAgIFt0ZXh0SW5wdXQgZG9Db21tYW5kQnlTZWxlY3RvcjpOU1NlbGVjdG9yRnJvbVN0cmlu
ZyhhQ29tbWFuZCldOwogfQogCi0tICh2b2lkKXNldE1hcmtlZFRleHQ6KE5TU3RyaW5nICopYVN0
cmluZyBzZWxlY3RlZEZyb206KGludClmcm9tIGxlbmd0aDooaW50KWxlbmd0aCBzdXBwcmVzc1Vu
ZGVybGluZTooQk9PTClzdXBwcmVzc1VuZGVybGluZQorLSAodm9pZClzZXRNYXJrZWRUZXh0OihO
U1N0cmluZyAqKWFTdHJpbmcgc2VsZWN0ZWRGcm9tOihpbnQpZnJvbSBsZW5ndGg6KGludClsZW5n
dGggc3VwcHJlc3NVbmRlcmxpbmU6KEJPT0wpc3VwcHJlc3NVbmRlcmxpbmUgaGlnaGxpZ2h0czoo
TlNBcnJheTxOU0RpY3Rpb25hcnkgKj4gKiloaWdobGlnaHRzCiB7CiAgICAgTlNPYmplY3QgPE5T
VGV4dElucHV0PiAqdGV4dElucHV0ID0gW3NlbGYgdGV4dElucHV0XTsKIApkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXh0SW5wdXRD
b250cm9sbGVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvVGV4dElucHV0Q29udHJvbGxlci5pZGwKaW5kZXggYTczYWQ5NjdjOTlhYWQ5Y2FkMWQ1
MDAyODlhZGFiNjc4ZDhiOTJhZS4uODc3NTY0OTQ3MWU2MmMwMTY0MzFjZTBlOWQyODgxMDRhM2Zm
OTI0ZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9C
aW5kaW5ncy9UZXh0SW5wdXRDb250cm9sbGVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1RleHRJbnB1dENvbnRyb2xsZXIuaWRsCkBAIC0y
NCw3ICsyNCw3IEBACiAgKi8KIAogaW50ZXJmYWNlIFRleHRJbnB1dENvbnRyb2xsZXIgewotICAg
IHZvaWQgc2V0TWFya2VkVGV4dChET01TdHJpbmcgc3RyaW5nLCBsb25nIGZyb20sIGxvbmcgbGVu
Z3RoLCBib29sZWFuIHN1cHByZXNzVW5kZXJsaW5lKTsKKyAgICB2b2lkIHNldE1hcmtlZFRleHQo
RE9NU3RyaW5nIHN0cmluZywgbG9uZyBmcm9tLCBsb25nIGxlbmd0aCwgYm9vbGVhbiBzdXBwcmVz
c1VuZGVybGluZSwgb2JqZWN0IGhpZ2hsaWdodHMpOwogICAgIGJvb2xlYW4gaGFzTWFya2VkVGV4
dCgpOwogICAgIHZvaWQgdW5tYXJrVGV4dCgpOwogICAgIHZvaWQgaW5zZXJ0VGV4dChET01TdHJp
bmcgc3RyaW5nKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvVGV4dElucHV0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1RleHRJbnB1dENvbnRyb2xsZXIuY3BwCmluZGV4IDMzNjZjNzBhZjFkOTYz
ZTAzNjZhNmE5OGZlMTE4YWI2MGI0ZDY0YmIuLjY0YWM4MTk3MTUzYWFlMGEwYWI3MWViYmMyOTQy
NDg0YTM1ZTY1YWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvVGV4dElucHV0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXh0SW5wdXRDb250cm9sbGVyLmNwcApAQCAtMzAsNiArMzAsNyBA
QAogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUGFnZS5oIgogI2luY2x1ZGUgIkpTVGV4dElucHV0
Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlN0cmluZ0Z1bmN0aW9ucy5oIgorI2luY2x1ZGUgPFdl
YktpdC9XS0J1bmRsZUZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLQnVuZGxlUGFnZVByaXZh
dGUuaD4KIAogbmFtZXNwYWNlIFdUUiB7CkBAIC01Nyw5ICs1OCw3MiBAQCB2b2lkIFRleHRJbnB1
dENvbnRyb2xsZXI6Om1ha2VXaW5kb3dPYmplY3QoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2Jq
ZWN0UmVmIHdpbgogICAgIHNldFByb3BlcnR5KGNvbnRleHQsIHdpbmRvd09iamVjdCwgInRleHRJ
bnB1dENvbnRyb2xsZXIiLCB0aGlzLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlLCBleGNlcHRpb24pOwogfQogCi12b2lkIFRleHRJ
bnB1dENvbnRyb2xsZXI6OnNldE1hcmtlZFRleHQoSlNTdHJpbmdSZWYgdGV4dCwgaW50IGZyb20s
IGludCBsZW5ndGgsIGJvb2wgc3VwcHJlc3NVbmRlcmxpbmUpCitzdGF0aWMgdW5zaWduZWQgYXJy
YXlMZW5ndGgoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGFycmF5KQogewotICAg
IFdLQnVuZGxlUGFnZVNldENvbXBvc2l0aW9uKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5w
YWdlKCktPnBhZ2UoKSwgdG9XSyh0ZXh0KS5nZXQoKSwgZnJvbSwgbGVuZ3RoLCBzdXBwcmVzc1Vu
ZGVybGluZSk7CisgICAgYXV0byBsZW5ndGhTdHJpbmcgPSBhZG9wdChKU1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygibGVuZ3RoIikpOworICAgIGlmIChhdXRvIGxlbmd0aFZhbHVlID0gSlNP
YmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBhcnJheSwgbGVuZ3RoU3RyaW5nLmdldCgpLCBudWxs
cHRyKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU1ZhbHVlVG9OdW1i
ZXIoY29udGV4dCwgbGVuZ3RoVmFsdWUsIG51bGxwdHIpKTsKKyAgICByZXR1cm4gMDsKK30KKwor
c3RhdGljIFdLQXJyYXlSZWYgY3JlYXRlQ29tcG9zaXRpb25IaWdobGlnaHREYXRhKEpTQ29udGV4
dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIGpzSGlnaGxpZ2h0c1ZhbHVlKQoreworICAgIGlmICgh
anNIaWdobGlnaHRzVmFsdWUgfHwgIUpTVmFsdWVJc0FycmF5KGNvbnRleHQsIGpzSGlnaGxpZ2h0
c1ZhbHVlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIHJlc3VsdCA9IFdL
TXV0YWJsZUFycmF5Q3JlYXRlKCk7CisgICAgYXV0byBqc0hpZ2hsaWdodHNBcnJheSA9IGNvbnN0
X2Nhc3Q8SlNPYmplY3RSZWY+KGpzSGlnaGxpZ2h0c1ZhbHVlKTsKKyAgICB1bnNpZ25lZCBsZW5n
dGggPSBhcnJheUxlbmd0aChjb250ZXh0LCBqc0hpZ2hsaWdodHNBcnJheSk7CisgICAgaWYgKCFs
ZW5ndGgpCisgICAgICAgIHJldHVybiByZXN1bHQ7CisKKyAgICBhdXRvIGpzRnJvbUtleSA9IGFk
b3B0KEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJmcm9tIikpOworICAgIGF1dG8ganNM
ZW5ndGhLZXkgPSBhZG9wdChKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygibGVuZ3RoIikp
OworICAgIGF1dG8ganNDb2xvcktleSA9IGFkb3B0KEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKCJjb2xvciIpKTsKKworICAgIGF1dG8gd2tGcm9tS2V5ID0gYWRvcHRXSyhXS1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZygiZnJvbSIpKTsKKyAgICBhdXRvIHdrTGVuZ3RoS2V5ID0gYWRv
cHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygibGVuZ3RoIikpOworICAgIGF1dG8g
d2tDb2xvcktleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImNvbG9y
IikpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAg
ICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IG51bGxwdHI7CisgICAgICAgIGF1dG8ganNPYmplY3RW
YWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHlBdEluZGV4KGNvbnRleHQsIGpzSGlnaGxpZ2h0c0Fy
cmF5LCBpLCAmZXhjZXB0aW9uKTsKKyAgICAgICAgaWYgKGV4Y2VwdGlvbiB8fCAhSlNWYWx1ZUlz
T2JqZWN0KGNvbnRleHQsIGpzT2JqZWN0VmFsdWUpKQorICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgYXV0byBqc09iamVjdCA9IGNvbnN0X2Nhc3Q8SlNPYmplY3RSZWY+KGpzT2JqZWN0
VmFsdWUpOworICAgICAgICBhdXRvIGpzRnJvbVZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eShj
b250ZXh0LCBqc09iamVjdCwganNGcm9tS2V5LmdldCgpLCBudWxscHRyKTsKKyAgICAgICAgaWYg
KCFqc0Zyb21WYWx1ZSB8fCAhSlNWYWx1ZUlzTnVtYmVyKGNvbnRleHQsIGpzRnJvbVZhbHVlKSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGF1dG8ganNMZW5ndGhWYWx1ZSA9IEpT
T2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwganNPYmplY3QsIGpzTGVuZ3RoS2V5LmdldCgpLCBu
dWxscHRyKTsKKyAgICAgICAgaWYgKCFqc0xlbmd0aFZhbHVlIHx8ICFKU1ZhbHVlSXNOdW1iZXIo
Y29udGV4dCwganNMZW5ndGhWYWx1ZSkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAg
ICBhdXRvIGpzQ29sb3JWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwganNPYmpl
Y3QsIGpzQ29sb3JLZXkuZ2V0KCksIG51bGxwdHIpOworICAgICAgICBpZiAoIWpzQ29sb3JWYWx1
ZSB8fCAhSlNWYWx1ZUlzU3RyaW5nKGNvbnRleHQsIGpzQ29sb3JWYWx1ZSkpCisgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICBhdXRvIGNvbG9yID0gYWRvcHQoSlNWYWx1ZVRvU3RyaW5n
Q29weShjb250ZXh0LCBqc0NvbG9yVmFsdWUsIG51bGxwdHIpKTsKKyAgICAgICAgYXV0byB3a0Nv
bG9yID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhKU1N0cmluZyhjb2xvci5nZXQoKSkpOwor
ICAgICAgICBhdXRvIHdrRnJvbSA9IGFkb3B0V0soV0tVSW50NjRDcmVhdGUobHJvdW5kKEpTVmFs
dWVUb051bWJlcihjb250ZXh0LCBqc0Zyb21WYWx1ZSwgbnVsbHB0cikpKSk7CisgICAgICAgIGF1
dG8gd2tMZW5ndGggPSBhZG9wdFdLKFdLVUludDY0Q3JlYXRlKGxyb3VuZChKU1ZhbHVlVG9OdW1i
ZXIoY29udGV4dCwganNMZW5ndGhWYWx1ZSwgbnVsbHB0cikpKSk7CisKKyAgICAgICAgYXV0byBk
aWN0aW9uYXJ5ID0gYWRvcHRXSyhXS011dGFibGVEaWN0aW9uYXJ5Q3JlYXRlKCkpOworICAgICAg
ICBXS0RpY3Rpb25hcnlTZXRJdGVtKGRpY3Rpb25hcnkuZ2V0KCksIHdrRnJvbUtleS5nZXQoKSwg
d2tGcm9tLmdldCgpKTsKKyAgICAgICAgV0tEaWN0aW9uYXJ5U2V0SXRlbShkaWN0aW9uYXJ5Lmdl
dCgpLCB3a0xlbmd0aEtleS5nZXQoKSwgd2tMZW5ndGguZ2V0KCkpOworICAgICAgICBXS0RpY3Rp
b25hcnlTZXRJdGVtKGRpY3Rpb25hcnkuZ2V0KCksIHdrQ29sb3JLZXkuZ2V0KCksIHdrQ29sb3Iu
Z2V0KCkpOworICAgICAgICBXS0FycmF5QXBwZW5kSXRlbShyZXN1bHQsIGRpY3Rpb25hcnkuZ2V0
KCkpOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgVGV4dElucHV0Q29u
dHJvbGxlcjo6c2V0TWFya2VkVGV4dChKU1N0cmluZ1JlZiB0ZXh0LCBpbnQgZnJvbSwgaW50IGxl
bmd0aCwgYm9vbCBzdXBwcmVzc1VuZGVybGluZSwgSlNWYWx1ZVJlZiBqc0hpZ2hsaWdodHNWYWx1
ZSkKK3sKKyAgICBhdXRvIHBhZ2UgPSBJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgp
LT5wYWdlKCk7CisgICAgYXV0byBoaWdobGlnaHRzID0gYWRvcHRXSyhjcmVhdGVDb21wb3NpdGlv
bkhpZ2hsaWdodERhdGEoV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250ZXh0KFdLQnVuZGxl
UGFnZUdldE1haW5GcmFtZShwYWdlKSksIGpzSGlnaGxpZ2h0c1ZhbHVlKSk7CisgICAgV0tCdW5k
bGVQYWdlU2V0Q29tcG9zaXRpb24ocGFnZSwgdG9XSyh0ZXh0KS5nZXQoKSwgZnJvbSwgbGVuZ3Ro
LCBzdXBwcmVzc1VuZGVybGluZSwgaGlnaGxpZ2h0cy5nZXQoKSk7CiB9CiAKIGJvb2wgVGV4dElu
cHV0Q29udHJvbGxlcjo6aGFzTWFya2VkVGV4dCgpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1RleHRJbnB1dENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGV4dElucHV0Q29udHJvbGxlci5oCmluZGV4
IDRlYTcyMDQ0Yzg4NzA1YWJlZDQ5ODcxNmY4ZGJmZTRmOGQ3OTRiMDAuLjU1OGMyZTYxMTQwODE3
ODVlM2I3Y2FlMTlmZWZkMzk2YWViMzdhOTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGV4dElucHV0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGV4dElucHV0Q29udHJvbGxlci5oCkBAIC00
MCw3ICs0MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbWFrZVdpbmRvd09iamVjdChKU0NvbnRl
eHRSZWYsIEpTT2JqZWN0UmVmIHdpbmRvd09iamVjdCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsK
IAotICAgIHZvaWQgc2V0TWFya2VkVGV4dChKU1N0cmluZ1JlZiB0ZXh0LCBpbnQgZnJvbSwgaW50
IGxlbmd0aCwgYm9vbCBzdXBwcmVzc1VuZGVybGluZSk7CisgICAgdm9pZCBzZXRNYXJrZWRUZXh0
KEpTU3RyaW5nUmVmIHRleHQsIGludCBmcm9tLCBpbnQgbGVuZ3RoLCBib29sIHN1cHByZXNzVW5k
ZXJsaW5lLCBKU1ZhbHVlUmVmIGhpZ2hsaWdodHMpOwogICAgIGJvb2wgaGFzTWFya2VkVGV4dCgp
OwogICAgIHZvaWQgdW5tYXJrVGV4dCgpOwogICAgIHZvaWQgaW5zZXJ0VGV4dChKU1N0cmluZ1Jl
ZiB0ZXh0KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCBkN2I5M2M1OGUxMThkNTg1Y2VhOWZmYjE0OThjYzY5ZGNhNjcwODQ4
Li5hNDBiOWU5NGQ2YWQ0N2VhZGI3MzA5ZDAxNmM2Njc1NWJmMDU0MGFlIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTkgQEAKKzIwMjAtMDEtMzEgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgYmFja2dyb3VuZCBjb2xv
cnMgd2hlbiBzZXR0aW5nIG1hcmtlZCB0ZXh0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDcwNjUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3ODc2
MTQwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBhIHRlc3QgdG8gY2hlY2sgdGhhdCBoaWdobGlnaHRpbmcgZGlmZmVyZW50IHBhcnRzIG9mIGEg
Y29tcG9zaXRpb24gcmFuZ2UgcmVzdWx0cyBpbiB0aGUgc2FtZSBiZWhhdmlvciBhcworICAgICAg
ICBhcHBseWluZyBiYWNrZ3JvdW5kIGNvbG9ycyB1c2luZyBDU1MuIFRoaXMgdGVzdCBpcyBjdXJy
ZW50bHkgb25seSBzdXBwb3J0ZWQgaW4gV2ViS2l0Mi4KKworICAgICAgICAqIFRlc3RFeHBlY3Rh
dGlvbnM6CisgICAgICAgICogZWRpdGluZy9pbnB1dC9jb21wb3NpdGlvbi1oaWdobGlnaHRzLWV4
cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvaW5wdXQvY29tcG9zaXRpb24t
aGlnaGxpZ2h0cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS93azIvVGVzdEV4cGVj
dGF0aW9uczoKKwogMjAyMC0wMS0zMCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4K
IAogICAgICAgICBSRUdSRVNTSU9OOiBbTWFjIHdrMV0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uLW1hcmt1cC9zY3JpcHRzL3VuZGVyb3Zlci1wYXJh
bWV0ZXJzLTMuaHRtbCBpcyBhIGZsYWtleSBmYWlsdXJlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA1
YTI1MDgyNzVlMWI3YjFlYjVhNThkNzcyZDQ5MWNjMzc3Y2ZkZDYzLi40NmE5OTQzMGMzNzAzOWVh
ZWYwNDVmYzVkNTZlNGJmM2UwMjljODkwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhw
ZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTc1LDYgKzc1
LDkgQEAgY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vY2xpcHBpbmctc2NvcGUgWyBTa2lwIF0K
IHByaW50aW5nL3ByaW50aW5nLWV2ZW50cy5odG1sIFsgU2tpcCBdCiBmYXN0L2Zvcm1zL2VudGVy
a2V5aGludC1hdHRyaWJ1dGUtdmFsdWVzLmh0bWwgWyBTa2lwIF0KIAorIyBIaWdobGlnaHRpbmcg
bWFya2VkIHRleHQgcmFuZ2VzIGZyb20gbGF5b3V0IHRlc3RzIGlzIG9ubHkgc3VwcG9ydGVkIGlu
IFdlYktpdDIuCitlZGl0aW5nL2lucHV0L2NvbXBvc2l0aW9uLWhpZ2hsaWdodHMuaHRtbCBbIFNr
aXAgXQorCiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQteHNsLWV4dGVybmFsLWVudGl0
eS1uby1sb2dnaW5nLnhtbCBbIFNraXAgXQogCiAjIHdpbmRvdy5zaG93TW9kYWxEaWFsb2cgaXMg
b25seSB0ZXN0ZWQgaW4gRHVtcFJlbmRlclRyZWUgb24gTWFjLgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZWRpdGluZy9pbnB1dC9jb21wb3NpdGlvbi1oaWdobGlnaHRzLWV4cGVjdGVkLmh0bWwg
Yi9MYXlvdXRUZXN0cy9lZGl0aW5nL2lucHV0L2NvbXBvc2l0aW9uLWhpZ2hsaWdodHMtZXhwZWN0
ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kYWNmODQ1NTkyYmIxNWE0MTQ3ODM3MzY2YWFjZjVjOTQ5ZDdl
NWVjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbnB1dC9jb21wb3Np
dGlvbi1oaWdobGlnaHRzLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxNyBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorZGl2W2NvbnRlbnRlZGl0YWJsZV0gewor
ICAgIGZvbnQtc2l6ZTogMjBweDsKK30KKyNyZWQgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjRkYwMDAw
MzM7IH0KKyNncmVlbiB7IGJhY2tncm91bmQtY29sb3I6ICMwMEZGMDAzMzsgfQorI2JsdWUgeyBi
YWNrZ3JvdW5kLWNvbG9yOiAjMDAwMEZGMzM7IH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4K
K1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGhpZ2hsaWdodHMgY2FuIGJlIHNwZWNpZmllZCB3aGVu
IHNldHRpbmcgbWFya2VkIHRleHQuCis8ZGl2IGNvbnRlbnRlZGl0YWJsZT5UZXN0OiZuYnNwOzxz
cGFuIGlkPSJyZWQiPm9uZTwvc3Bhbj48c3BhbiBpZD0iZ3JlZW4iPnR3bzwvc3Bhbj48c3BhbiBp
ZD0iYmx1ZSI+dGhyZWU8L3NwYW4+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9lZGl0aW5nL2lucHV0L2NvbXBvc2l0aW9uLWhpZ2hsaWdodHMuaHRtbCBi
L0xheW91dFRlc3RzL2VkaXRpbmcvaW5wdXQvY29tcG9zaXRpb24taGlnaGxpZ2h0cy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjg0ZjIyOTQ0ZmNmZGNmODEzYWY1ZDdhZTM2YmUxZTNlNGRmOGRiZTIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2lucHV0L2NvbXBvc2l0aW9uLWhpZ2hs
aWdodHMuaHRtbApAQCAtMCwwICsxLDMwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8c3R5bGU+CitkaXZbY29udGVudGVkaXRhYmxlXSB7CisgICAgZm9udC1zaXplOiAyMHB4
OworICAgIG91dGxpbmU6IG5vbmU7CisgICAgY2FyZXQtY29sb3I6IHRyYW5zcGFyZW50OworfQor
PC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgaGlnaGxp
Z2h0cyBjYW4gYmUgc3BlY2lmaWVkIHdoZW4gc2V0dGluZyBtYXJrZWQgdGV4dC4KKzxkaXYgY29u
dGVudGVkaXRhYmxlPlRlc3Q6Jm5ic3A7PC9kaXY+CisKKzxzY3JpcHQ+Citjb25zdCBlZGl0b3Ig
PSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJkaXZbY29udGVudGVkaXRhYmxlXSIpOworZWRpdG9y
LmZvY3VzKCk7CitnZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbihlZGl0b3IsIDEpOworCitpZiAo
d2luZG93LnRleHRJbnB1dENvbnRyb2xsZXIpIHsKKyAgICB0ZXh0SW5wdXRDb250cm9sbGVyLnNl
dE1hcmtlZFRleHQoIm9uZXR3b3RocmVlIiwgMTEsIDExLCB0cnVlLCBbCisgICAgICAgIHsgZnJv
bTogMCwgbGVuZ3RoOiAzLCBjb2xvcjogIiNGRjAwMDAzMyIgfSwKKyAgICAgICAgeyBmcm9tOiAz
LCBsZW5ndGg6IDMsIGNvbG9yOiAiIzAwRkYwMDMzIiB9LAorICAgICAgICB7IGZyb206IDYsIGxl
bmd0aDogNSwgY29sb3I6ICIjMDAwMEZGMzMiIH0KKyAgICBdKTsKK30KKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RF
eHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucwpp
bmRleCA4ZTI1OWVkOTFkYjU4YWNiNzkzOTE5ZWFjZDBmYzMwNGFiODQzYzcwLi45MDZhOTFkMWNk
N2NlNjAxNDZiZWJmY2U1NjVlODNkZWQ5ZTU1MWEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93
azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNzY4LDYgKzc2OCw5IEBAIGluc3BlY3Rvci9ydW50aW1l
L2NhbGxGdW5jdGlvbk9uLWVtdWxhdGVVc2VyR2VzdHVyZS11c2VySXNJbnRlcmFjdGluZy5odG1s
IFsgUGFzCiAjIFRhcmdldCBkb21haW4gaXMgb25seSBwcmVzZW50IGluIFdlYktpdDIuCiBodHRw
L3Rlc3RzL2luc3BlY3Rvci90YXJnZXQgWyBQYXNzIF0KIAorIyBIaWdobGlnaHRpbmcgbWFya2Vk
IHRleHQgcmFuZ2VzIGZyb20gbGF5b3V0IHRlc3RzIGlzIG9ubHkgc3VwcG9ydGVkIGluIFdlYktp
dDIuCitlZGl0aW5nL2lucHV0L2NvbXBvc2l0aW9uLWhpZ2hsaWdodHMuaHRtbCBbIFBhc3MgXQor
CiAjIyMgRU5EIE9GICg1KSBQcm9ncmVzc2lvbnMsIGV4cGVjdGVkIHN1Y2Nlc3NlcyB0aGF0IGFy
ZSBleHBlY3RlZCBmYWlsdXJlcyBpbiBXZWJLaXQxLgogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIwogCg==
</data>
<flag name="review"
          id="405082"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389421</attachid>
            <date>2020-01-31 14:56:25 -0800</date>
            <delta_ts>2020-01-31 16:44:15 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-207065-20200131145624.patch</filename>
            <type>text/plain</type>
            <size>59571</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1NDg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzc1MGY5MTA5YWFkNzgw
Yjk1YjFjODE4NjI3YjYwNDgzMDc4ZGM3Zi4uYmIzMmE0NTgzMTM1MWNjNDdiMWFkMzI0NDRmMmRm
ZmJjOGNlNjAxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIwLTAxLTMxICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0
IGZvciBzcGVjaWZ5aW5nIGJhY2tncm91bmQgY29sb3JzIHdoZW4gc2V0dGluZyBtYXJrZWQgdGV4
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3MDY1
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81Nzg3NjE0MD4KKworICAgICAgICBSZXZpZXdlZCBi
eSBUaW0gSG9ydG9uLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciByZW5kZXJpbmcgY3VzdG9t
IGhpZ2hsaWdodHMgKGJhY2tncm91bmQgY29sb3JzKSBiZWhpbmQgbWFya2VkIHRleHQgaW4gV2Vi
Q29yZS4gVG8gZG8gdGhpcywgd2UKKyAgICAgICAgcGx1bWIgYSBWZWN0b3Igb2YgQ29tcG9zaXRp
b25IaWdobGlnaHRzIGFsb25nc2lkZSB0aGUgVmVjdG9yIG9mIENvbXBvc2l0aW9uVW5kZXJsaW5l
cyB0byBFZGl0b3IuIEF0IHBhaW50IHRpbWUsCisgICAgICAgIHdlIHRoZW4gY29uc3VsdCB0aGlz
IGhpZ2hsaWdodCBkYXRhIHRvIGRldGVybWluZSB3aGljaCByYW5nZXMgb2YgdGV4dCBpbiB0aGUg
Y29tcG9zaXRpb24gc2hvdWxkIHBhaW50IHVzaW5nCisgICAgICAgIGN1c3RvbSBiYWNrZ3JvdW5k
IGNvbG9ycy4KKworICAgICAgICBOb3RlIHRoYXQgaW4gdGhlIGZ1dHVyZSwgd2Ugc2hvdWxkIGNv
bnNpZGVyIHJlZmFjdG9yaW5nIGJvdGggY29tcG9zaXRpb24gdW5kZXJsaW5lcyBhbmQgaGlnaGxp
Z2h0cyB0byB1c2UgdGhlCisgICAgICAgIE1hcmtlZFRleHQgbWVjaGFuaXNtIGZvciBkZWNvcmF0
aW5nIHJhbmdlcyBvZiB0ZXh0IGluc3RlYWQuCisKKyAgICAgICAgVGVzdDogZWRpdGluZy9pbnB1
dC9jb21wb3NpdGlvbi1oaWdobGlnaHRzLmh0bWwKKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGVkaXRpbmcvQ29tcG9zaXRpb25IaWdobGlnaHQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpDb21wb3NpdGlvbkhpZ2hsaWdodDo6Q29tcG9zaXRpb25IaWdobGlnaHQpOgorICAgICAgICAo
V2ViQ29yZTo6Q29tcG9zaXRpb25IaWdobGlnaHQ6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDb21wb3NpdGlvbkhpZ2hsaWdodDo6ZGVjb2RlKToKKworICAgICAgICBBZGQgQ29t
cG9zaXRpb25IaWdobGlnaHQsIHdoaWNoIHJlcHJlc2VudHMgYSByYW5nZSBpbiB0aGUgY29tcG9z
aXRpb24gdGhhdCBzaG91bGQgYmUgaGlnaGxpZ2h0ZWQgd2l0aCBhIGdpdmVuCisgICAgICAgIGJh
Y2tncm91bmQgY29sb3IuCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3I6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2V0
Q29tcG9zaXRpb24pOgorCisgICAgICAgIEFkZCBsb2dpYyBmb3IgY2xlYXJpbmcgYW5kIHVwZGF0
aW5nIG1fY3VzdG9tQ29tcG9zaXRpb25IaWdobGlnaHRzLgorCisgICAgICAgICogZWRpdGluZy9F
ZGl0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y29tcG9zaXRpb25Vc2VzQ3VzdG9t
SGlnaGxpZ2h0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmN1c3RvbUNvbXBv
c2l0aW9uSGlnaGxpZ2h0cyBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRC
b3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnRDb21wb3NpdGlv
bkJhY2tncm91bmQpOgorCisgICAgICAgIElmIGN1c3RvbSBjb21wb3NpdGlvbiBoaWdobGlnaHRz
IGFyZSBnaXZlbiwgdXNlIHRob3NlIHdoZW4gcGFpbnRpbmcgdGhlIGNvbXBvc2l0aW9uIGJhY2tn
cm91bmQ7IG90aGVyd2lzZSwKKyAgICAgICAgZGVmYXVsdCB0byBwYWludGluZyB0aGUgZW50aXJl
IGNvbXBvc2l0aW9uIHJhbmdlIHVzaW5nIGBDb2xvcjo6Y29tcG9zaXRpb25GaWxsYC4KKwogMjAy
MC0wMS0zMCAgRG91ZyBLZWxseSAgPGRvdWdrQGFwcGxlLmNvbT4KIAogICAgICAgICBFbnN1cmUg
bm9uLWluaXRpYWwgdmFsdWVzIGZvciBDU1MgRm9udCBwcm9wZXJ0aWVzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxv
ZwppbmRleCAwYjgxN2ExOGZiYWQxZjNmMTQ1ZTViMDQ2ZGVlYWQ5NTU2MWQzOWE5Li5lOTdlMjhj
MzA3NjNkNGVhMzZkM2FiNjc2N2E5MmQyMTM3OGZiZmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNSBAQAorMjAyMC0wMS0zMSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFw
cGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyBiYWNrZ3JvdW5k
IGNvbG9ycyB3aGVuIHNldHRpbmcgbWFya2VkIHRleHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzA2NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NTc4NzYxNDA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICBB
ZGQgYW4gU1BJIHNvZnQtbGlua2luZyBkZWNsYXJhdGlvbiBmb3IgTlNNYXJrZWRDbGF1c2VTZWdt
ZW50QXR0cmlidXRlTmFtZS4KKworICAgICAgICAqIHBhbC9zcGkvY29jb2EvTlNBdHRyaWJ1dGVk
U3RyaW5nU1BJLmg6CisKIDIwMjAtMDEtMzAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5z
ZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgV0tOYXZpZ2F0aW9uRGVsZWdhdGUgU1BJIHRv
IGRpc2FibGUgVExTIDEuMCBhbmQgMS4xCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJiMTgyOTE5ODg2YWNmODc2YTU3
NjI2ZTY5OGFmYmRlMGU3OWU4ZGEuLmUyMjhhYjBiNDUwNDYwYzc4N2M0OTg2M2M4ZmMyOTRhNGYw
Y2MyZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMjAtMDEtMzEgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHNw
ZWNpZnlpbmcgYmFja2dyb3VuZCBjb2xvcnMgd2hlbiBzZXR0aW5nIG1hcmtlZCB0ZXh0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDcwNjUKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzU3ODc2MTQwPgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBI
b3J0b24uCisKKyAgICAgICAgSW1wbGVtZW50IC1zZXRBdHRyaWJ1dGVkTWFya2VkVGV4dDpzZWxl
Y3RlZFJhbmdlOiBvbiBXS0NvbnRlbnRWaWV3LCBhbmQgaGF2ZSBpdCBleHRyYWN0IGhpZ2hsaWdo
dCBjb2xvcgorICAgICAgICBpbmZvcm1hdGlvbiBmcm9tIHRoZSBnaXZlbiBhdHRyaWJ1dGVkIHN0
cmluZy4gUGx1bWIgdGhpcyB0aHJvdWdoIHRvIHRoZSB3ZWIgcHJvY2VzcyBieSBzZXJpYWxpemlu
ZyBhbmQKKyAgICAgICAgZGVzZXJpYWxpemluZyBgV2ViQ29yZTo6Q29tcG9zaXRpb25IaWdobGln
aHRgcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldE1hcmtlZFRleHQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToK
KyAgICAgICAgKGNvbXBvc2l0aW9uSGlnaGxpZ2h0cyk6CisKKyAgICAgICAgRm9yIGVhY2ggbWFy
a2VkIHRleHQgY2xhdXNlLCBncmFiIHRoZSBzcGVjaWZpZWQgYmFja2dyb3VuZCBjb2xvciAoZGVm
YXVsdGluZyB0byBDb2xvcjo6Y29tcG9zaXRpb25GaWxsKSBhbmQgdXNlCisgICAgICAgIGl0IHRv
IGNyZWF0ZSBhIGxpc3Qgb2YgQ29tcG9zaXRpb25IaWdobGlnaHRzLgorCisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgc2V0QXR0cmlidXRlZE1hcmtlZFRleHQ6c2VsZWN0ZWRSYW5nZTpdKToKKyAg
ICAgICAgKC1bV0tDb250ZW50VmlldyBzZXRNYXJrZWRUZXh0OnNlbGVjdGVkUmFuZ2U6XSk6Cisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgX3NldE1hcmtlZFRleHQ6aGlnaGxpZ2h0czpzZWxlY3Rl
ZFJhbmdlOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlUGFnZVNldENvbXBvc2l0aW9uKToKKwor
ICAgICAgICBBZGQgdGVzdGluZyBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIGhpZ2hsaWdodCByYW5n
ZXMgd2hlbiBzZXR0aW5nIG1hcmtlZCB0ZXh0LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VQcml2YXRlLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9nbGliL1dlYkVkaXRvckNsaWVudEdMaWIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmRpZERpc3BhdGNoSW5wdXRNZXRob2RLZXlkb3du
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnNldENvbXBvc2l0aW9uRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnNldENvbXBvc2l0aW9uQXN5bmMpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW46CisKIDIwMjAtMDEtMzAgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxl
LmNvbT4KIAogICAgICAgICBBZGQgbG9nZ2luZyB0byBzaG93IHRoZSBmbG93IG9mIEFwcFNTTwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGQyNzc3MDA4OWMzNjk4NmNjNjZmMTFkZjBk
ZGYyMmI0MmQ3NzkyNWIuLjlkNTJmOWEwZGJmMDZkYWIwNDYwNmM5MzU1ZDEyNzIwYWVkZmM2YzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMC0wMS0z
MSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
c3VwcG9ydCBmb3Igc3BlY2lmeWluZyBiYWNrZ3JvdW5kIGNvbG9ycyB3aGVuIHNldHRpbmcgbWFy
a2VkIHRleHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwNzA2NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTc4NzYxNDA+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICBBZGp1c3Qgc29tZSBjYWxsIHNpdGVzIG9m
IEVkaXRvcjo6c2V0Q29tcG9zaXRpb24oKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUu
bW06CisgICAgICAgICgtW1dlYkZyYW1lIHNldE1hcmtlZFRleHQ6c2VsZWN0ZWRSYW5nZTpdKToK
KyAgICAgICAgKC1bV2ViRnJhbWUgc2V0TWFya2VkVGV4dDpmb3JDYW5kaWRhdGVzOl0pOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHNl
dE1hcmtlZFRleHQ6c2VsZWN0ZWRSYW5nZTpdKToKKwogMjAyMC0wMS0zMCAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBXS05hdmlnYXRp
b25EZWxlZ2F0ZSBTUEkgdG8gZGlzYWJsZSBUTFMgMS4wIGFuZCAxLjEKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0NoYW5nZUxvZwppbmRleCAzMzdjM2NkNDVhMzY5NjBiNmFjZGM0ZTJhNTgyYjdmZjdlYzMyNWU3
Li4yMjIwMTdlMzVmNTQ5NTRlYmE0OGM4ODdjNjg1MTg5YzBhMWIxMzg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMDEtMzEgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHNw
ZWNpZnlpbmcgYmFja2dyb3VuZCBjb2xvcnMgd2hlbiBzZXR0aW5nIG1hcmtlZCB0ZXh0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDcwNjUKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzU3ODc2MTQwPgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBI
b3J0b24uCisKKyAgICAgICAgQWRqdXN0IHNvbWUgY2FsbCBzaXRlcyBvZiBFZGl0b3I6OnNldENv
bXBvc2l0aW9uKCkuCisKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6
Om9uSU1FQ29tcG9zaXRpb24pOgorICAgICAgICAoV2ViVmlldzo6c2V0Q29tcG9zaXRpb25Gb3JU
ZXN0aW5nKToKKwogMjAyMC0wMS0yNyAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29t
PgogCiAgICAgICAgIFtXZWIgQW5pbWF0aW9uc10gTWFrZSBBbmltYXRpb24udGltZWxpbmUgcmVh
ZC13cml0ZSBvbmx5IGlmIGEgcnVudGltZSBmbGFnIGlzIGVuYWJsZWQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtl
CmluZGV4IDU0ZGI3MTZhYzg3Y2FjNGQwMTMwZGQ4YTc5NTU0ZDBkNjc1NjllNjkuLjUyYjM2NDEw
OTg5NjU4ZDQ5ZmMyNTA2OWQyMDgzMDk0NWYwNjhkMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAt
NDgzLDYgKzQ4Myw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAg
ICBkb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzLmgKIAogICAgIGVkaXRp
bmcvQ2xpcGJvYXJkQWNjZXNzUG9saWN5LmgKKyAgICBlZGl0aW5nL0NvbXBvc2l0aW9uSGlnaGxp
Z2h0LmgKICAgICBlZGl0aW5nL0NvbXBvc2l0aW9uVW5kZXJsaW5lLmgKICAgICBlZGl0aW5nL0Rp
Y3RhdGlvbkFsdGVybmF0aXZlLmgKICAgICBlZGl0aW5nL0RpY3Rpb25hcnlQb3B1cEluZm8uaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvTlNBdHRyaWJ1dGVk
U3RyaW5nU1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9OU0F0dHJpYnV0
ZWRTdHJpbmdTUEkuaAppbmRleCAyYThiNTI0YTljZjM3YjA2MGJhM2M3Y2FlYTVhZWIzMTI5YzA2
YTdmLi4wZmYzMzQ1MTVlMWJmYjU0MmI0MGY2OTliNTE0MTMzNTE5YWNkYmI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9OU0F0dHJpYnV0ZWRTdHJpbmdTUEku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9OU0F0dHJpYnV0ZWRTdHJp
bmdTUEkuaApAQCAtOTMsNiArOTMsOCBAQCBTT0ZUX0xJTktfQ09OU1RBTlQoVUlGb3VuZGF0aW9u
LCBOU0NvY29hVmVyc2lvbkRvY3VtZW50QXR0cmlidXRlLCBOU1N0cmluZyAqKQogI2RlZmluZSBO
U0NvY29hVmVyc2lvbkRvY3VtZW50QXR0cmlidXRlIGdldE5TQ29jb2FWZXJzaW9uRG9jdW1lbnRB
dHRyaWJ1dGUoKQogU09GVF9MSU5LX0NPTlNUQU5UKFVJRm91bmRhdGlvbiwgTlNCYWNrZ3JvdW5k
Q29sb3JEb2N1bWVudEF0dHJpYnV0ZSwgTlNTdHJpbmcgKikKICNkZWZpbmUgTlNCYWNrZ3JvdW5k
Q29sb3JEb2N1bWVudEF0dHJpYnV0ZSBnZXROU0JhY2tncm91bmRDb2xvckRvY3VtZW50QXR0cmli
dXRlKCkKK1NPRlRfTElOS19DT05TVEFOVChVSUZvdW5kYXRpb24sIE5TTWFya2VkQ2xhdXNlU2Vn
bWVudEF0dHJpYnV0ZU5hbWUsIE5TU3RyaW5nICopCisjZGVmaW5lIE5TTWFya2VkQ2xhdXNlU2Vn
bWVudEF0dHJpYnV0ZU5hbWUgZ2V0TlNNYXJrZWRDbGF1c2VTZWdtZW50QXR0cmlidXRlTmFtZSgp
CiAKIC8vIFdlIGRvbid0IHNvZnRsaW5rIE5TU3VwZXJzY3JpcHRBdHRyaWJ1dGVOYW1lIGJlY2F1
c2UgVUlGb3VuZGF0aW9uIHN0b3BwZWQgZXhwb3J0aW5nIGl0LgogLy8gVGhpcyBhdHRyaWJ1dGUg
aXMgYmVpbmcgZGVwcmVjYXRlZCBhdCB0aGUgQVBJIGxldmVsLCBidXQgaW50ZXJuYWxseSBVSUZv
dW5kYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA5ODdhNjM5ZDczODkwMGI5YTkxZDg5YWFhZDRiYjNjZmIxMDgwZmRiLi5h
ZjA0NDEyNDE4ZTZkYmIwZjBiM2IxN2E2ZDlhOGNhNmJhODExNmI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00OTU5LDYgKzQ5
NTksNyBAQAogCQlGNDQwRTc3QTIzM0Q5NEQ3MDA2M0Y5QUIgLyogTmF2aWdhdG9yQ2xpcGJvYXJk
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDQwRTc2
RjIzM0Q5NEQzMDA2M0Y5QUIgLyogTmF2aWdhdG9yQ2xpcGJvYXJkLmggKi87IH07CiAJCUY0NDBF
NzdCMjMzRDk0RDcwMDYzRjlBQiAvKiBDbGlwYm9hcmRJdGVtLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDQwRTc3MDIzM0Q5NEQ0MDA2M0Y5QUIgLyog
Q2xpcGJvYXJkSXRlbS5oICovOyB9OwogCQlGNDQwRTc3RDIzM0Q5NEQ3MDA2M0Y5QUIgLyogQ2xp
cGJvYXJkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
NDQwRTc3MjIzM0Q5NEQ1MDA2M0Y5QUIgLyogQ2xpcGJvYXJkLmggKi87IH07CisJCUY0NDJDMzU5
MjNFM0FERDIwMDQ5OTU4MiAvKiBDb21wb3NpdGlvbkhpZ2hsaWdodC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0MkMzNTcyM0UzQUM1MTAwNDk5NTgy
IC8qIENvbXBvc2l0aW9uSGlnaGxpZ2h0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjQ0QTVGNTkxRkVEMzhGMjAwN0Y1OTQ0IC8qIExlZ2FjeU5T
UGFzdGVib2FyZFR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNDRBNUY1NzFGRUQzODMwMDA3RjU5NDQgLyogTGVnYWN5TlNQYXN0ZWJvYXJkVHlw
ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlG
NDRFQkJEOTFEQjVEMjE0MDAyNzczMzQgLyogU3RhdGljUmFuZ2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NEVCQkQ4MURCNUQyMTQwMDI3NzMzNCAv
KiBTdGF0aWNSYW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUY0NUMyMzFFMTk5NUI3M0IwMEE2RTJFMyAvKiBBeGlzU2Nyb2xsU25hcE9mZnNl
dHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NUMy
MzFDMTk5NUI3M0IwMEE2RTJFMyAvKiBBeGlzU2Nyb2xsU25hcE9mZnNldHMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTU0MTUsNiArMTU0MTYs
NyBAQAogCQlGNDQwRTc3NTIzM0Q5NEQ2MDA2M0Y5QUIgLyogQ2xpcGJvYXJkSXRlbS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDbGlwYm9hcmRJdGVtLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ0MEU3NzcyMzNEOTRENzAwNjNGOUFCIC8qIENs
aXBib2FyZEl0ZW0uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENsaXBib2FyZEl0ZW0uaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDQyODUwQjIxNDA0MTI1MDBDQ0RBMjIg
LyogRm9udEF0dHJpYnV0ZUNoYW5nZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udEF0dHJp
YnV0ZUNoYW5nZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDQyQzM1NzIz
RTNBQzUxMDA0OTk1ODIgLyogQ29tcG9zaXRpb25IaWdobGlnaHQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q29tcG9zaXRpb25IaWdobGlnaHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ0
QTVGNTcxRkVEMzgzMDAwN0Y1OTQ0IC8qIExlZ2FjeU5TUGFzdGVib2FyZFR5cGVzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IExlZ2FjeU5TUGFzdGVib2FyZFR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUY0NEVCQkQ2MURCNUQxQjYwMDI3NzMzNCAvKiBTdGF0aWNSYW5nZS5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gU3RhdGljUmFuZ2UuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGNDRFQkJEODFEQjVEMjE0MDAyNzczMzQgLyogU3RhdGljUmFuZ2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RhdGljUmFuZ2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTIxNTE3LDYgKzIxNTE5LDcgQEAKIAkJCQk3QzNBOTFFNTFDOTYz
Qjg4MDBEMUE3RTMgLyogQ2xpcGJvYXJkQWNjZXNzUG9saWN5LmggKi8sCiAJCQkJOTMzMDlEOEQw
OTlFNjQ5MTAwNTZFNTgxIC8qIENvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcCAqLywKIAkJCQk5MzMw
OUQ4RTA5OUU2NDkxMDA1NkU1ODEgLyogQ29tcG9zaXRlRWRpdENvbW1hbmQuaCAqLywKKwkJCQlG
NDQyQzM1NzIzRTNBQzUxMDA0OTk1ODIgLyogQ29tcG9zaXRpb25IaWdobGlnaHQuaCAqLywKIAkJ
CQkyREQ1QTcyNjFFQkVFNDdEMDA5QkE1OTcgLyogQ29tcG9zaXRpb25VbmRlcmxpbmUuaCAqLywK
IAkJCQlEMEIwNTU2NzA5QzY3MDAxMDAzMDdFNDMgLyogQ3JlYXRlTGlua0NvbW1hbmQuY3BwICov
LAogCQkJCUQwQjA1NTY2MDlDNjcwMDEwMDMwN0U0MyAvKiBDcmVhdGVMaW5rQ29tbWFuZC5oICov
LApAQCAtMjkyOTcsNiArMjkzMDAsNyBAQAogCQkJCTcxMjQ3RTM3MUZFQTVGODYwMDhDMDhDRSAv
KiBDb21wb3NpdGVPcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTcxMTEyNDNFMjE2RkE3
MTEwMEVCN0I2NyAvKiBDb21wb3NpdGVPcGVyYXRpb25PckF1dG8uaCBpbiBIZWFkZXJzICovLAog
CQkJCTc5RjJGNUEyMTA5MTkzOUEwMDBEODdDQiAvKiBDb21wb3NpdGlvbkV2ZW50LmggaW4gSGVh
ZGVycyAqLywKKwkJCQlGNDQyQzM1OTIzRTNBREQyMDA0OTk1ODIgLyogQ29tcG9zaXRpb25IaWdo
bGlnaHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJERDVBNzI3MUVCRUU0N0QwMDlCQTU5NyAvKiBD
b21wb3NpdGlvblVuZGVybGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzExNkUyQ0MxRkVENzVE
QzAwQzA2RkRFIC8qIENvbXB1dGVkRWZmZWN0VGltaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
RDMxNjA4RjEyQjAyNkY3MDBDMUEzNTkgLyogQ29uZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0aW9uSGlnaGxpZ2h0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0aW9uSGlnaGxpZ2h0LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzA5
YmVlNDVhNzVkODg0NTg2MTMzZDA2ZmZlY2YxNmM2ZjFmYWRlOAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRpb25IaWdobGlnaHQuaApAQCAtMCwwICsx
LDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBDb21wb3NpdGlvbkhpZ2hsaWdodCB7
CisgICAgQ29tcG9zaXRpb25IaWdobGlnaHQoKSA9IGRlZmF1bHQ7CisgICAgQ29tcG9zaXRpb25I
aWdobGlnaHQodW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgY29uc3Qg
Q29sb3ImIGMpCisgICAgICAgIDogc3RhcnRPZmZzZXQoc3RhcnRPZmZzZXQpCisgICAgICAgICwg
ZW5kT2Zmc2V0KGVuZE9mZnNldCkKKyAgICAgICAgLCBjb2xvcihjKQorICAgIHsKKyAgICB9CisK
KyAgICB1bnNpZ25lZCBzdGFydE9mZnNldCB7IDAgfTsKKyAgICB1bnNpZ25lZCBlbmRPZmZzZXQg
eyAwIH07CisgICAgQ29sb3IgY29sb3IgeyBDb2xvcjo6Y29tcG9zaXRpb25GaWxsIH07CisKKyAg
ICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Cisg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPENvbXBvc2l0aW9uSGln
aGxpZ2h0PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4K
K3ZvaWQgQ29tcG9zaXRpb25IaWdobGlnaHQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAoreworICAgIGVuY29kZXIgPDwgc3RhcnRPZmZzZXQ7CisgICAgZW5jb2RlciA8PCBlbmRPZmZz
ZXQ7CisgICAgZW5jb2RlciA8PCBjb2xvcjsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4K
K09wdGlvbmFsPENvbXBvc2l0aW9uSGlnaGxpZ2h0PiBDb21wb3NpdGlvbkhpZ2hsaWdodDo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9uYWw8dW5zaWduZWQ+IHN0YXJ0T2Zm
c2V0OworICAgIGRlY29kZXIgPj4gc3RhcnRPZmZzZXQ7CisgICAgaWYgKCFzdGFydE9mZnNldCkK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBl
bmRPZmZzZXQ7CisgICAgZGVjb2RlciA+PiBlbmRPZmZzZXQ7CisgICAgaWYgKCFlbmRPZmZzZXQp
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxDb2xvcj4gY29s
b3I7CisgICAgZGVjb2RlciA+PiBjb2xvcjsKKyAgICBpZiAoIWNvbG9yKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIHt7ICpzdGFydE9mZnNldCwgKmVuZE9mZnNl
dCwgKmNvbG9yIH19OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5jcHAKaW5kZXggODdhODAzNTM0ZTg0ZTI3NTUxMzZkNWEzMzhkZGY4YTRhOTc2ZWEw
Ny4uMjkxYmE2YzBjMDRjNGI2Njk4NDY2ZTEwNzUzNDg1OGU4NTlkYWEwMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkNoYW5nZUxpc3RU
eXBlQ29tbWFuZC5oIgogI2luY2x1ZGUgIkNsaXBib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiQ29t
cG9zaXRpb25FdmVudC5oIgorI2luY2x1ZGUgIkNvbXBvc2l0aW9uSGlnaGxpZ2h0LmgiCiAjaW5j
bHVkZSAiQ3JlYXRlTGlua0NvbW1hbmQuaCIKICNpbmNsdWRlICJDdXN0b21VbmRvU3RlcC5oIgog
I2luY2x1ZGUgIkRhdGFUcmFuc2Zlci5oIgpAQCAtMTIxNyw2ICsxMjE4LDcgQEAgdm9pZCBFZGl0
b3I6OmNsZWFyKCkKICAgICAgICAgICAgIGNsaWVudC0+ZGlzY2FyZGVkQ29tcG9zaXRpb24oJm1f
ZnJhbWUpOwogICAgIH0KICAgICBtX2N1c3RvbUNvbXBvc2l0aW9uVW5kZXJsaW5lcy5jbGVhcigp
OworICAgIG1fY3VzdG9tQ29tcG9zaXRpb25IaWdobGlnaHRzLmNsZWFyKCk7CiAgICAgbV9zaG91
bGRTdHlsZVdpdGhDU1MgPSBmYWxzZTsKICAgICBtX2RlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3Ig
PSBFZGl0b3JQYXJhZ3JhcGhTZXBhcmF0b3JJc0RpdjsKICAgICBtX21hcmsgPSB7IH07CkBAIC0x
OTcwLDYgKzE5NzIsNyBAQCB2b2lkIEVkaXRvcjo6c2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5n
JiB0ZXh0LCBTZXRDb21wb3NpdGlvbk1vZGUgbW9kZSkKIAogICAgIG1fY29tcG9zaXRpb25Ob2Rl
ID0gbnVsbHB0cjsKICAgICBtX2N1c3RvbUNvbXBvc2l0aW9uVW5kZXJsaW5lcy5jbGVhcigpOwor
ICAgIG1fY3VzdG9tQ29tcG9zaXRpb25IaWdobGlnaHRzLmNsZWFyKCk7CiAKICAgICBpZiAobV9m
cmFtZS5zZWxlY3Rpb24oKS5pc05vbmUoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTk5MSw3ICsx
OTk0LDcgQEAgdm9pZCBFZGl0b3I6OnNldENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwg
U2V0Q29tcG9zaXRpb25Nb2RlIG1vZGUpCiAgICAgfQogfQogCi12b2lkIEVkaXRvcjo6c2V0Q29t
cG9zaXRpb24oY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8Q29tcG9zaXRpb25VbmRl
cmxpbmU+JiB1bmRlcmxpbmVzLCB1bnNpZ25lZCBzZWxlY3Rpb25TdGFydCwgdW5zaWduZWQgc2Vs
ZWN0aW9uRW5kKQordm9pZCBFZGl0b3I6OnNldENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgdGV4
dCwgY29uc3QgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiYgdW5kZXJsaW5lcywgY29uc3Qg
VmVjdG9yPENvbXBvc2l0aW9uSGlnaGxpZ2h0PiYgaGlnaGxpZ2h0cywgdW5zaWduZWQgc2VsZWN0
aW9uU3RhcnQsIHVuc2lnbmVkIHNlbGVjdGlvbkVuZCkKIHsKICAgICBTZXRDb21wb3NpdGlvblNj
b3BlIHNldENvbXBvc2l0aW9uU2NvcGUobV9mcmFtZSk7CiAKQEAgLTIwNjMsNiArMjA2Niw3IEBA
IHZvaWQgRWRpdG9yOjpzZXRDb21wb3NpdGlvbihjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZl
Y3RvcjxDb21wb3NpdGlvblVuZGVybGluCiAKICAgICBtX2NvbXBvc2l0aW9uTm9kZSA9IG51bGxw
dHI7CiAgICAgbV9jdXN0b21Db21wb3NpdGlvblVuZGVybGluZXMuY2xlYXIoKTsKKyAgICBtX2N1
c3RvbUNvbXBvc2l0aW9uSGlnaGxpZ2h0cy5jbGVhcigpOwogCiAgICAgaWYgKCF0ZXh0LmlzRW1w
dHkoKSkgewogICAgICAgICBUeXBpbmdDb21tYW5kOjppbnNlcnRUZXh0KGRvY3VtZW50KCksIHRl
eHQsIFR5cGluZ0NvbW1hbmQ6OlNlbGVjdEluc2VydGVkVGV4dCB8IFR5cGluZ0NvbW1hbmQ6OlBy
ZXZlbnRTcGVsbENoZWNraW5nLCBUeXBpbmdDb21tYW5kOjpUZXh0Q29tcG9zaXRpb25QZW5kaW5n
KTsKQEAgLTIwODQsNiArMjA4OCwxMSBAQCB2b2lkIEVkaXRvcjo6c2V0Q29tcG9zaXRpb24oY29u
c3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbgogICAgICAg
ICAgICAgICAgIHVuZGVybGluZS5zdGFydE9mZnNldCArPSBiYXNlT2Zmc2V0OwogICAgICAgICAg
ICAgICAgIHVuZGVybGluZS5lbmRPZmZzZXQgKz0gYmFzZU9mZnNldDsKICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIG1fY3VzdG9tQ29tcG9zaXRpb25IaWdobGlnaHRzID0gaGlnaGxpZ2h0czsK
KyAgICAgICAgICAgIGZvciAoYXV0byYgaGlnaGxpZ2h0IDogbV9jdXN0b21Db21wb3NpdGlvbkhp
Z2hsaWdodHMpIHsKKyAgICAgICAgICAgICAgICBoaWdobGlnaHQuc3RhcnRPZmZzZXQgKz0gYmFz
ZU9mZnNldDsKKyAgICAgICAgICAgICAgICBoaWdobGlnaHQuZW5kT2Zmc2V0ICs9IGJhc2VPZmZz
ZXQ7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoYmFzZU5vZGUtPnJlbmRlcmVyKCkp
CiAgICAgICAgICAgICAgICAgYmFzZU5vZGUtPnJlbmRlcmVyKCktPnJlcGFpbnQoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggM2MwNWE4NWRkYTk4NWIzYTA1ZmU4ZjI3ZTAxNDllOTJl
OGEyZWJiMi4uNmVhODkyMmZiMDc2MmRmZTAzMmYxMGY2ZGExYWZiZDZlMzE0ZWY4YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5oCkBAIC04Myw2ICs4Myw3IEBAIGNsYXNzIFRleHQ7CiBjbGFzcyBU
ZXh0Q2hlY2tlckNsaWVudDsKIGNsYXNzIFRleHRFdmVudDsKIAorc3RydWN0IENvbXBvc2l0aW9u
SGlnaGxpZ2h0Owogc3RydWN0IEZvbnRBdHRyaWJ1dGVzOwogc3RydWN0IFBhc3RlYm9hcmRQbGFp
blRleHQ7CiBzdHJ1Y3QgUGFzdGVib2FyZFVSTDsKQEAgLTM1NSw3ICszNTYsNyBAQCBwdWJsaWM6
CiAKICAgICAvLyBpbnRlcm5hdGlvbmFsIHRleHQgaW5wdXQgY29tcG9zaXRpb24KICAgICBib29s
IGhhc0NvbXBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb21wb3NpdGlvbk5vZGU7IH0KLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGluZT4mLCB1bnNpZ25lZCBzZWxlY3Rpb25TdGFydCwg
dW5zaWduZWQgc2VsZWN0aW9uRW5kKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbXBv
c2l0aW9uKGNvbnN0IFN0cmluZyYsIGNvbnN0IFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGluZT4m
LCBjb25zdCBWZWN0b3I8Q29tcG9zaXRpb25IaWdobGlnaHQ+JiwgdW5zaWduZWQgc2VsZWN0aW9u
U3RhcnQsIHVuc2lnbmVkIHNlbGVjdGlvbkVuZCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBj
b25maXJtQ29tcG9zaXRpb24oKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbmZpcm1Db21w
b3NpdGlvbihjb25zdCBTdHJpbmcmKTsgLy8gaWYgbm8gZXhpc3RpbmcgY29tcG9zaXRpb24sIHJl
cGxhY2VzIHNlbGVjdGlvbgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2FuY2VsQ29tcG9zaXRp
b24oKTsKQEAgLTM2OSw2ICszNzAsOCBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgY29tcG9zaXRp
b25FbmQoKSBjb25zdCB7IHJldHVybiBtX2NvbXBvc2l0aW9uRW5kOyB9CiAgICAgYm9vbCBjb21w
b3NpdGlvblVzZXNDdXN0b21VbmRlcmxpbmVzKCkgY29uc3QgeyByZXR1cm4gIW1fY3VzdG9tQ29t
cG9zaXRpb25VbmRlcmxpbmVzLmlzRW1wdHkoKTsgfQogICAgIGNvbnN0IFZlY3RvcjxDb21wb3Np
dGlvblVuZGVybGluZT4mIGN1c3RvbUNvbXBvc2l0aW9uVW5kZXJsaW5lcygpIGNvbnN0IHsgcmV0
dXJuIG1fY3VzdG9tQ29tcG9zaXRpb25VbmRlcmxpbmVzOyB9CisgICAgYm9vbCBjb21wb3NpdGlv
blVzZXNDdXN0b21IaWdobGlnaHRzKCkgY29uc3QgeyByZXR1cm4gIW1fY3VzdG9tQ29tcG9zaXRp
b25IaWdobGlnaHRzLmlzRW1wdHkoKTsgfQorICAgIGNvbnN0IFZlY3RvcjxDb21wb3NpdGlvbkhp
Z2hsaWdodD4mIGN1c3RvbUNvbXBvc2l0aW9uSGlnaGxpZ2h0cygpIGNvbnN0IHsgcmV0dXJuIG1f
Y3VzdG9tQ29tcG9zaXRpb25IaWdobGlnaHRzOyB9CiAKICAgICBlbnVtIGNsYXNzIFJldmVhbFNl
bGVjdGlvbiB7IE5vLCBZZXMgfTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldElnbm9yZVNl
bGVjdGlvbkNoYW5nZXMoYm9vbCwgUmV2ZWFsU2VsZWN0aW9uIHNob3VsZFJldmVhbEV4aXN0aW5n
U2VsZWN0aW9uID0gUmV2ZWFsU2VsZWN0aW9uOjpZZXMpOwpAQCAtNjAxLDYgKzYwNCw3IEBAIHBy
aXZhdGU6CiAgICAgdW5zaWduZWQgbV9jb21wb3NpdGlvblN0YXJ0OwogICAgIHVuc2lnbmVkIG1f
Y29tcG9zaXRpb25FbmQ7CiAgICAgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiBtX2N1c3Rv
bUNvbXBvc2l0aW9uVW5kZXJsaW5lczsKKyAgICBWZWN0b3I8Q29tcG9zaXRpb25IaWdobGlnaHQ+
IG1fY3VzdG9tQ29tcG9zaXRpb25IaWdobGlnaHRzOwogICAgIGJvb2wgbV9pZ25vcmVTZWxlY3Rp
b25DaGFuZ2VzIHsgZmFsc2UgfTsKICAgICBib29sIG1fc2hvdWxkU3RhcnROZXdLaWxsUmluZ1Nl
cXVlbmNlIHsgZmFsc2UgfTsKICAgICBib29sIG1fc2hvdWxkU3R5bGVXaXRoQ1NTIHsgZmFsc2Ug
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAppbmRleCA3M2Y4
YzVlMDNkOTZjZTRiZmMwZGM5ZTM2ZDQzODc1NWI4Y2E5M2Y2Li5iNGRmNmI4ZDM1MjYxNjQ2MTQw
ZmQ5Mjg2NzY1OGRhYWY1NzViYTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZVRleHRCb3guY3BwCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAiSW5saW5lVGV4dEJveC5o
IgogCiAjaW5jbHVkZSAiQnJlYWtMaW5lcy5oIgorI2luY2x1ZGUgIkNvbXBvc2l0aW9uSGlnaGxp
Z2h0LmgiCiAjaW5jbHVkZSAiRGFzaEFycmF5LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNp
bmNsdWRlICJEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCIKQEAgLTEyMjQsNyArMTIyNSwyMyBA
QCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50TWFya2VkVGV4dERlY29yYXRpb24oUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IEZsb2F0UgogCiB2b2lkIElubGluZVRleHRCb3g6OnBhaW50Q29t
cG9zaXRpb25CYWNrZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBGbG9hdFBvaW50
JiBib3hPcmlnaW4pCiB7Ci0gICAgcGFpbnRNYXJrZWRUZXh0QmFja2dyb3VuZChwYWludEluZm8s
IGJveE9yaWdpbiwgQ29sb3I6OmNvbXBvc2l0aW9uRmlsbCwgY2xhbXBlZE9mZnNldChyZW5kZXJl
cigpLmZyYW1lKCkuZWRpdG9yKCkuY29tcG9zaXRpb25TdGFydCgpKSwgY2xhbXBlZE9mZnNldChy
ZW5kZXJlcigpLmZyYW1lKCkuZWRpdG9yKCkuY29tcG9zaXRpb25FbmQoKSkpOworICAgIGlmICgh
cmVuZGVyZXIoKS5mcmFtZSgpLmVkaXRvcigpLmNvbXBvc2l0aW9uVXNlc0N1c3RvbUhpZ2hsaWdo
dHMoKSkgeworICAgICAgICBwYWludE1hcmtlZFRleHRCYWNrZ3JvdW5kKHBhaW50SW5mbywgYm94
T3JpZ2luLCBDb2xvcjo6Y29tcG9zaXRpb25GaWxsLCBjbGFtcGVkT2Zmc2V0KHJlbmRlcmVyKCku
ZnJhbWUoKS5lZGl0b3IoKS5jb21wb3NpdGlvblN0YXJ0KCkpLCBjbGFtcGVkT2Zmc2V0KHJlbmRl
cmVyKCkuZnJhbWUoKS5lZGl0b3IoKS5jb21wb3NpdGlvbkVuZCgpKSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBmb3IgKGF1dG8mIGhpZ2hsaWdodCA6IHJlbmRlcmVyKCkuZnJhbWUo
KS5lZGl0b3IoKS5jdXN0b21Db21wb3NpdGlvbkhpZ2hsaWdodHMoKSkgeworICAgICAgICBpZiAo
aGlnaGxpZ2h0LmVuZE9mZnNldCA8PSBtX3N0YXJ0KQorICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgaWYgKGhpZ2hsaWdodC5zdGFydE9mZnNldCA+PSBlbmQoKSkKKyAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgIHBhaW50TWFya2VkVGV4dEJhY2tncm91bmQocGFpbnRJbmZvLCBi
b3hPcmlnaW4sIGhpZ2hsaWdodC5jb2xvciwgY2xhbXBlZE9mZnNldChoaWdobGlnaHQuc3RhcnRP
ZmZzZXQpLCBjbGFtcGVkT2Zmc2V0KGhpZ2hsaWdodC5lbmRPZmZzZXQpKTsKKworICAgICAgICBp
ZiAoaGlnaGxpZ2h0LmVuZE9mZnNldCA+IGVuZCgpKQorICAgICAgICAgICAgYnJlYWs7CisgICAg
fQogfQogCiB2b2lkIElubGluZVRleHRCb3g6OnBhaW50Q29tcG9zaXRpb25VbmRlcmxpbmVzKFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBGbG9hdFBvaW50JiBib3hPcmlnaW4pIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDg1NjEx
MDViZDU4MWYyMDdlNDcxZjM1ZmFkYTI2OTQ2YmJmMDY1MDcuLjAyNzM1N2VlYjc3NTcyMGFlNzU0
MmRjM2ExYTI5YTcwYjM3YTg3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlZpZXdJbXBsLm1tCkBAIC04Myw2ICs4Myw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0FYT2Jq
ZWN0Q2FjaGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvQWN0aXZpdHlTdGF0ZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9Db2xvck1hYy5oPgorI2ltcG9ydCA8V2ViQ29yZS9Db21wb3NpdGlvbkhpZ2hsaWdo
dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9EaWN0aW9uYXJ5TG9va3VwLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0RyYWdEYXRhLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdJdGVtLmg+CkBAIC01MDQzLDcg
KzUwNDQsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRNYXJrZWRUZXh0KGlkIHN0cmluZywgTlNS
YW5nZSBzZWxlY3RlZFJhbmdlLCBOU1JhbmdlIHJlcGxhYwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgbV9wYWdlLT5zZXRDb21wb3NpdGlvbkFzeW5jKHRleHQsIHVuZGVybGluZXMsIHNl
bGVjdGVkUmFuZ2UsIHJlcGxhY2VtZW50UmFuZ2UpOworICAgIG1fcGFnZS0+c2V0Q29tcG9zaXRp
b25Bc3luYyh0ZXh0LCB1bmRlcmxpbmVzLCB7IH0sIHNlbGVjdGVkUmFuZ2UsIHJlcGxhY2VtZW50
UmFuZ2UpOwogfQogCiAvLyBTeW5jaHJvbm91cyBOU1RleHRJbnB1dENsaWVudCBpcyBzdGlsbCBp
bXBsZW1lbnRlZCB0byBjYXRjaCBzcHVyaW91cyBzeW5jIGNhbGxzLiBSZW1vdmUgd2hlbiB0aGF0
IGlzIG5vIGxvbmdlciBuZWVkZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAppbmRleCAzNDU4YzdhOTcwMDQyYTkwNmVlOTVkY2ExZTgxZGY3MWQyZWVhYjMwLi4yZDQ5
MjI4NTgzNzcxYThiMmFlMGI3Y2VhOGIxYTBlNTA2YzRiMTNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEzOSw2ICsxMzksNyBAQAogI2luY2x1ZGUgIldl
YnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FkQ2xpY2tBdHRyaWJ1dGlvbi5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvQml0bWFwSW1hZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Nv
bXBvc2l0aW9uSGlnaGxpZ2h0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Dcm9zc1NpdGVOYXZpZ2F0
aW9uRGF0YVRyYW5zZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9ET01QYXN0ZUFjY2Vzcy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzLmg+CkBAIC04NTAxLDcg
Kzg1MDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VB
c3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmIHJhbmdlLCBXVAogICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5bmMocmFuZ2UsIGNhbGxiYWNrSUQp
KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNldENvbXBvc2l0aW9uQXN5bmMoY29uc3QgU3Ry
aW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbmU+JiB1bmRlcmxpbmVz
LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHNlbGVjdGlvblJhbmdlLCBjb25zdCBFZGl0aW5nUmFuZ2Um
IHJlcGxhY2VtZW50UmFuZ2UpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q29tcG9zaXRpb25Bc3lu
Yyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGluZT4m
IHVuZGVybGluZXMsIGNvbnN0IFZlY3RvcjxDb21wb3NpdGlvbkhpZ2hsaWdodD4mIGhpZ2hsaWdo
dHMsIGNvbnN0IEVkaXRpbmdSYW5nZSYgc2VsZWN0aW9uUmFuZ2UsIGNvbnN0IEVkaXRpbmdSYW5n
ZSYgcmVwbGFjZW1lbnRSYW5nZSkKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsK
ICAgICAgICAgLy8gSWYgdGhpcyBmYWlscywgd2Ugc2hvdWxkIGNhbGwgLWRpc2NhcmRNYXJrZWRU
ZXh0IG9uIGlucHV0IGNvbnRleHQgdG8gbm90aWZ5IHRoZSBpbnB1dCBtZXRob2QuCkBAIC04NTA5
LDcgKzg1MTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q29tcG9zaXRpb25Bc3luYyhjb25z
dCBTdHJpbmcmIHRleHQsIGNvbnN0IFZlY3RvcjxDb21wb3NpdAogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Q29tcG9zaXRpb25Bc3luYyh0
ZXh0LCB1bmRlcmxpbmVzLCBzZWxlY3Rpb25SYW5nZSwgcmVwbGFjZW1lbnRSYW5nZSkpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldENvbXBvc2l0aW9uQXN5bmModGV4dCwgdW5kZXJs
aW5lcywgaGlnaGxpZ2h0cywgc2VsZWN0aW9uUmFuZ2UsIHJlcGxhY2VtZW50UmFuZ2UpKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OmNvbmZpcm1Db21wb3NpdGlvbkFzeW5jKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMGE5MWJhNDQ1ZDlhZmUyYjVjN2VmYWVj
YzVmZTUwMzNlN2Q3NzM5Ny4uMmE3Nzk3Yjc1NzAxZjgxYmNlZGEzMzBhMjkyYjUxZjMyYzBhYWRh
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTIyMiw2ICsyMjIs
NyBAQCBlbnVtIGNsYXNzIFdyaXRpbmdEaXJlY3Rpb24gOiB1aW50OF90OwogCiBzdHJ1Y3QgQXBw
bGljYXRpb25NYW5pZmVzdDsKIHN0cnVjdCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyOworc3Ry
dWN0IENvbXBvc2l0aW9uSGlnaGxpZ2h0Owogc3RydWN0IENvbnRlbnRSdWxlTGlzdFJlc3VsdHM7
CiBzdHJ1Y3QgRGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb247CiBzdHJ1Y3QgRGljdGlvbmFy
eVBvcHVwSW5mbzsKQEAgLTg0MSw3ICs4NDIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRTZWxl
Y3RlZFJhbmdlQXN5bmMoV1RGOjpGdW5jdGlvbjx2b2lkIChFZGl0aW5nUmFuZ2UsIENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIGNoYXJhY3RlckluZGV4Rm9yUG9pbnRBc3luYyhj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIFdURjo6RnVuY3Rpb248dm9pZCAodWludDY0X3QsIENh
bGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIGZpcnN0UmVjdEZvckNoYXJhY3RlclJh
bmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgRWRpdGluZ1JhbmdlJiwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYpOwotICAgIHZvaWQgc2V0Q29tcG9zaXRpb25Bc3luYyhjb25zdCBTdHJpbmcmIHRleHQs
IGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4mIHVuZGVybGluZXMs
IGNvbnN0IEVkaXRpbmdSYW5nZSYgc2VsZWN0aW9uUmFuZ2UsIGNvbnN0IEVkaXRpbmdSYW5nZSYg
cmVwbGFjZW1lbnRSYW5nZSk7CisgICAgdm9pZCBzZXRDb21wb3NpdGlvbkFzeW5jKGNvbnN0IFN0
cmluZyYgdGV4dCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPiYs
IGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvbkhpZ2hsaWdodD4mLCBjb25zdCBFZGl0
aW5nUmFuZ2UmIHNlbGVjdGlvblJhbmdlLCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50
UmFuZ2UpOwogICAgIHZvaWQgY29uZmlybUNvbXBvc2l0aW9uQXN5bmMoKTsKIAogICAgIHZvaWQg
c2V0U2Nyb2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlvbkVuYWJsZWQoYm9vbCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbQppbmRleCBiZDY3NWQ4NWExMTgxZmZjNjg4MWE3NGY1ZDcxNDJiNDBhZTdmNGYxLi5kZDI5
OGNiMDZjODAzMmFlMWZmYmU1MDkyZGJmZTJmNzRkZWNmODU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAg
LTkwLDYgKzkwLDggQEAKICNpbXBvcnQgPENvcmVUZXh0L0NURm9udERlc2NyaXB0b3IuaD4KICNp
bXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9VVENvcmVUeXBlcy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9Db2xvci5oPgorI2ltcG9ydCA8V2ViQ29yZS9Db2xvcklPUy5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9Db21wb3NpdGlvbkhpZ2hsaWdodC5oPgogI2ltcG9ydCA8V2ViQ29yZS9ET01QYXN0ZUFjY2Vz
cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9EYXRhRGV0ZWN0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0Zsb2F0UXVhZC5oPgpAQCAtMTE2LDYgKzExOCw3IEBACiAjaW1wb3J0IDxwYWwvc3BpL2NnL0Nv
cmVHcmFwaGljc1NQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9EYXRhRGV0ZWN0b3JzQ29y
ZVNQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oPgorI2lt
cG9ydCA8cGFsL3NwaS9jb2NvYS9OU0F0dHJpYnV0ZWRTdHJpbmdTUEkuaD4KICNpbXBvcnQgPHBh
bC9zcGkvaW9zL0RhdGFEZXRlY3RvcnNVSVNQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9pb3MvR3Jh
cGhpY3NTZXJ2aWNlc1NQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9pb3MvTWFuYWdlZENvbmZpZ3Vy
YXRpb25TUEkuaD4KQEAgLTQ1MTksMTMgKzQ1MjIsNDEgQEAgLSAodm9pZClzZXRNYXJrZWRUZXh0
U3R5bGU6KE5TRGljdGlvbmFyeSAqKXN0eWxlRGljdGlvbmFyeQogewogfQogCitzdGF0aWMgVmVj
dG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uSGlnaGxpZ2h0PiBjb21wb3NpdGlvbkhpZ2hsaWdodHMo
TlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCit7CisgICAgaWYgKCFzdHJpbmcubGVuZ3RoKQor
ICAgICAgICByZXR1cm4geyB9OworCisgICAgVmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uSGln
aGxpZ2h0PiBoaWdobGlnaHRzOworICAgIFtzdHJpbmcgZW51bWVyYXRlQXR0cmlidXRlc0luUmFu
Z2U6TlNNYWtlUmFuZ2UoMCwgc3RyaW5nLmxlbmd0aCkgb3B0aW9uczowIHVzaW5nQmxvY2s6WyZo
aWdobGlnaHRzXShOU0RpY3Rpb25hcnk8TlNBdHRyaWJ1dGVkU3RyaW5nS2V5LCBpZD4gKmF0dHJp
YnV0ZXMsIE5TUmFuZ2UgcmFuZ2UsIEJPT0wgKikgeworICAgICAgICBpZiAoIWF0dHJpYnV0ZXNb
TlNNYXJrZWRDbGF1c2VTZWdtZW50QXR0cmlidXRlTmFtZV0pCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgV2ViQ29yZTo6Q29sb3IgaGlnaGxpZ2h0Q29sb3IgeyBXZWJDb3JlOjpDb2xv
cjo6Y29tcG9zaXRpb25GaWxsIH07CisgICAgICAgIGlmIChVSUNvbG9yICp1aUNvbG9yID0gYXR0
cmlidXRlc1tOU0JhY2tncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdKQorICAgICAgICAgICAgaGln
aGxpZ2h0Q29sb3IgPSBXZWJDb3JlOjpjb2xvckZyb21VSUNvbG9yKHVpQ29sb3IpOworICAgICAg
ICBoaWdobGlnaHRzLmFwcGVuZCh7IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyYW5nZS5sb2NhdGlv
biksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihOU01heFJhbmdlKHJhbmdlKSksIGhpZ2hsaWdodENv
bG9yIH0pOworICAgIH1dOworICAgIHJldHVybiBoaWdobGlnaHRzOworfQorCistICh2b2lkKXNl
dEF0dHJpYnV0ZWRNYXJrZWRUZXh0OihOU0F0dHJpYnV0ZWRTdHJpbmcgKiltYXJrZWRUZXh0IHNl
bGVjdGVkUmFuZ2U6KE5TUmFuZ2Upc2VsZWN0ZWRSYW5nZQoreworICAgIFtzZWxmIF9zZXRNYXJr
ZWRUZXh0Om1hcmtlZFRleHQuc3RyaW5nIGhpZ2hsaWdodHM6Y29tcG9zaXRpb25IaWdobGlnaHRz
KG1hcmtlZFRleHQpIHNlbGVjdGVkUmFuZ2U6c2VsZWN0ZWRSYW5nZV07Cit9CisKIC0gKHZvaWQp
c2V0TWFya2VkVGV4dDooTlNTdHJpbmcgKiltYXJrZWRUZXh0IHNlbGVjdGVkUmFuZ2U6KE5TUmFu
Z2Upc2VsZWN0ZWRSYW5nZQoreworICAgIFtzZWxmIF9zZXRNYXJrZWRUZXh0Om1hcmtlZFRleHQg
aGlnaGxpZ2h0czpWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25IaWdobGlnaHQ+IHsgfSBzZWxl
Y3RlZFJhbmdlOnNlbGVjdGVkUmFuZ2VdOworfQorCistICh2b2lkKV9zZXRNYXJrZWRUZXh0OihO
U1N0cmluZyAqKW1hcmtlZFRleHQgaGlnaGxpZ2h0czooY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNv
bXBvc2l0aW9uSGlnaGxpZ2h0PiYpaGlnaGxpZ2h0cyBzZWxlY3RlZFJhbmdlOihOU1JhbmdlKXNl
bGVjdGVkUmFuZ2UKIHsKICNpZiBVU0UoVUlLSVRfS0VZQk9BUkRfQURESVRJT05TKQogICAgIF9j
YW5kaWRhdGVWaWV3TmVlZHNVcGRhdGUgPSAhc2VsZi5oYXNNYXJrZWRUZXh0OwogI2VuZGlmCiAg
ICAgX21hcmtlZFRleHQgPSBtYXJrZWRUZXh0OwotICAgIF9wYWdlLT5zZXRDb21wb3NpdGlvbkFz
eW5jKG1hcmtlZFRleHQsIFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4oKSwg
c2VsZWN0ZWRSYW5nZSwgV2ViS2l0OjpFZGl0aW5nUmFuZ2UoKSk7CisgICAgX3BhZ2UtPnNldENv
bXBvc2l0aW9uQXN5bmMobWFya2VkVGV4dCwgeyB9LCBoaWdobGlnaHRzLCBzZWxlY3RlZFJhbmdl
LCB7IH0pOwogfQogCiAtICh2b2lkKXVubWFya1RleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5j
cHAKaW5kZXggYzZjMmE2YTUzZGM4MmJmYjQzOTBkZWMxMjI2YTMxNTNjYjk5NjczOC4uMzg1MTk5
Y2JhNjg3ZTg2ZmY5NzMwMzMzZTM1OTY0MjJiOTE3YzZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
UGFnZS5jcHAKQEAgLTI4LDcgKzI4LDkgQEAKICNpbmNsdWRlICJXS0J1bmRsZVBhZ2VQcml2YXRl
LmgiCiAKICNpbmNsdWRlICJBUElBcnJheS5oIgorI2luY2x1ZGUgIkFQSURpY3Rpb25hcnkuaCIK
ICNpbmNsdWRlICJBUElGcmFtZUhhbmRsZS5oIgorI2luY2x1ZGUgIkFQSU51bWJlci5oIgogI2lu
Y2x1ZGUgIkFQSVN0cmluZy5oIgogI2luY2x1ZGUgIkFQSVVSTC5oIgogI2luY2x1ZGUgIkFQSVVS
TFJlcXVlc3QuaCIKQEAgLTU4LDYgKzYwLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0FYT2JqZWN0
Q2FjaGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2Uu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9Db21wb3NpdGlvbkhpZ2hsaWdodC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9j
dXNDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUGFnZS5oPgpAQCAtNjEwLDkgKzYxMywyMiBAQCBXS0FycmF5UmVmIFdLQnVuZGxlUGFn
ZUNvcHlUcmFja2VkUmVwYWludFJlY3RzKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmKQogICAgIHJl
dHVybiBXZWJLaXQ6OnRvQVBJKCZXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+dHJhY2tlZFJlcGFp
bnRSZWN0cygpLmxlYWtSZWYoKSk7CiB9CiAKLXZvaWQgV0tCdW5kbGVQYWdlU2V0Q29tcG9zaXRp
b24oV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHRleHQsIGludCBmcm9tLCBp
bnQgbGVuZ3RoLCBib29sIHN1cHByZXNzVW5kZXJsaW5lKQordm9pZCBXS0J1bmRsZVBhZ2VTZXRD
b21wb3NpdGlvbihXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgdGV4dCwgaW50
IGZyb20sIGludCBsZW5ndGgsIGJvb2wgc3VwcHJlc3NVbmRlcmxpbmUsIFdLQXJyYXlSZWYgaGln
aGxpZ2h0RGF0YSkKIHsKLSAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0Q29tcG9zaXRp
b25Gb3JUZXN0aW5nKFdlYktpdDo6dG9XVEZTdHJpbmcodGV4dCksIGZyb20sIGxlbmd0aCwgc3Vw
cHJlc3NVbmRlcmxpbmUpOworICAgIFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvbkhpZ2hsaWdo
dD4gaGlnaGxpZ2h0czsKKyAgICBpZiAoaGlnaGxpZ2h0RGF0YSkgeworICAgICAgICBhdXRvKiBo
aWdobGlnaHREYXRhQXJyYXkgPSBXZWJLaXQ6OnRvSW1wbChoaWdobGlnaHREYXRhKTsKKyAgICAg
ICAgaGlnaGxpZ2h0cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGhpZ2hsaWdodERhdGFBcnJheS0+
c2l6ZSgpKTsKKyAgICAgICAgZm9yIChhdXRvIGRpY3Rpb25hcnkgOiBoaWdobGlnaHREYXRhQXJy
YXktPmVsZW1lbnRzT2ZUeXBlPEFQSTo6RGljdGlvbmFyeT4oKSkgeworICAgICAgICAgICAgYXV0
byBzdGFydE9mZnNldCA9IHN0YXRpY19jYXN0PEFQSTo6VUludDY0Kj4oZGljdGlvbmFyeS0+Z2V0
KCJmcm9tIikpLT52YWx1ZSgpOworICAgICAgICAgICAgaGlnaGxpZ2h0cy51bmNoZWNrZWRBcHBl
bmQoeworICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGFydE9mZnNldCks
CisgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXJ0T2Zmc2V0ICsgc3Rh
dGljX2Nhc3Q8QVBJOjpVSW50NjQqPihkaWN0aW9uYXJ5LT5nZXQoImxlbmd0aCIpKS0+dmFsdWUo
KSksCisgICAgICAgICAgICAgICAgV2ViQ29yZTo6Q29sb3Ioc3RhdGljX2Nhc3Q8QVBJOjpTdHJp
bmcqPihkaWN0aW9uYXJ5LT5nZXQoImNvbG9yIikpLT5zdHJpbmcoKSkKKyAgICAgICAgICAgIH0p
OworICAgICAgICB9CisgICAgfQorICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRDb21w
b3NpdGlvbkZvclRlc3RpbmcoV2ViS2l0Ojp0b1dURlN0cmluZyh0ZXh0KSwgZnJvbSwgbGVuZ3Ro
LCBzdXBwcmVzc1VuZGVybGluZSwgaGlnaGxpZ2h0cyk7CiB9CiAKIGJvb2wgV0tCdW5kbGVQYWdl
SGFzQ29tcG9zaXRpb24oV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlUHJp
dmF0ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlUGFnZVByaXZhdGUuaAppbmRleCAzYTk4ODE0N2I0ZTY2NzE5NzMxZDJiYjQ0Y2YzMzM5
ZWIxZTQwOWIzLi4zYWNhNTNkNTdhNmFiNjc0NTgxOTVhYzJhYzQyMjQ5MDJmZGEyOGIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVQYWdlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VQcml2YXRlLmgKQEAgLTg0LDcgKzg0LDcgQEAgV0tf
RVhQT1JUIGJvb2wgV0tCdW5kbGVQYWdlSXNUcmFja2luZ1JlcGFpbnRzKFdLQnVuZGxlUGFnZVJl
ZiBwYWdlKTsKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZVJlc2V0VHJhY2tlZFJlcGFpbnRz
KFdLQnVuZGxlUGFnZVJlZiBwYWdlKTsKIFdLX0VYUE9SVCBXS0FycmF5UmVmIFdLQnVuZGxlUGFn
ZUNvcHlUcmFja2VkUmVwYWludFJlY3RzKFdLQnVuZGxlUGFnZVJlZiBwYWdlKTsKIAotV0tfRVhQ
T1JUIHZvaWQgV0tCdW5kbGVQYWdlU2V0Q29tcG9zaXRpb24oV0tCdW5kbGVQYWdlUmVmIHBhZ2Us
IFdLU3RyaW5nUmVmIHRleHQsIGludCBmcm9tLCBpbnQgbGVuZ3RoLCBib29sIHN1cHByZXNzVW5k
ZXJsaW5lKTsKK1dLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZVNldENvbXBvc2l0aW9uKFdLQnVu
ZGxlUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiB0ZXh0LCBpbnQgZnJvbSwgaW50IGxlbmd0aCwg
Ym9vbCBzdXBwcmVzc1VuZGVybGluZSwgV0tBcnJheVJlZiBoaWdobGlnaHREYXRhKTsKIFdLX0VY
UE9SVCBib29sIFdLQnVuZGxlUGFnZUhhc0NvbXBvc2l0aW9uKFdLQnVuZGxlUGFnZVJlZiBwYWdl
KTsKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZUNvbmZpcm1Db21wb3NpdGlvbihXS0J1bmRs
ZVBhZ2VSZWYgcGFnZSk7CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VDb25maXJtQ29tcG9z
aXRpb25XaXRoVGV4dChXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgdGV4dCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ2xpYi9X
ZWJFZGl0b3JDbGllbnRHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9nbGliL1dlYkVkaXRvckNsaWVudEdMaWIuY3BwCmluZGV4IDk2ZTgyNTdlMTQ3Mzli
YjBkOTk0ZjZhMmJmMzcxMGQ3Nzc2YWE1YjQuLjQ4NWYxZmQwOTk2OTAxMTEzNGU1Nzc2OTVkYzJi
MDRkM2IxZmQxM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9nbGliL1dlYkVkaXRvckNsaWVudEdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9nbGliL1dlYkVkaXRvckNsaWVudEdMaWIuY3BwCkBA
IC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViRWRpdG9y
Q2xpZW50LmgiCiAKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbXBvc2l0aW9uSGlnaGxpZ2h0Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRWRpdG9yLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgpAQCAtNDcsNyArNDgsNyBAQCB2b2lkIFdlYkVk
aXRvckNsaWVudDo6ZGlkRGlzcGF0Y2hJbnB1dE1ldGhvZEtleWRvd24oS2V5Ym9hcmRFdmVudCYg
ZXZlbnQpCiAgICAgaWYgKGNvbnN0IGF1dG8mIHVuZGVybGluZXMgPSBwbGF0Zm9ybUV2ZW50LT5w
cmVlZGl0VW5kZXJsaW5lcygpKSB7CiAgICAgICAgIGF1dG8gcmFuZ2VTdGFydCA9IHBsYXRmb3Jt
RXZlbnQtPnByZWVkaXRTZWxlY3Rpb25SYW5nZVN0YXJ0KCkudmFsdWVPcigwKTsKICAgICAgICAg
YXV0byByYW5nZUxlbmd0aCA9IHBsYXRmb3JtRXZlbnQtPnByZWVkaXRTZWxlY3Rpb25SYW5nZUxl
bmd0aCgpLnZhbHVlT3IoMCk7Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRDb21wb3NpdGlv
bihwbGF0Zm9ybUV2ZW50LT50ZXh0KCksIHVuZGVybGluZXMudmFsdWUoKSwgcmFuZ2VTdGFydCwg
cmFuZ2VTdGFydCArIHJhbmdlTGVuZ3RoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLnNldENv
bXBvc2l0aW9uKHBsYXRmb3JtRXZlbnQtPnRleHQoKSwgdW5kZXJsaW5lcy52YWx1ZSgpLCB7IH0s
IHJhbmdlU3RhcnQsIHJhbmdlU3RhcnQgKyByYW5nZUxlbmd0aCk7CiAgICAgfSBlbHNlCiAgICAg
ICAgIGZyYW1lLT5lZGl0b3IoKS5jb25maXJtQ29tcG9zaXRpb24ocGxhdGZvcm1FdmVudC0+dGV4
dCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
aW5kZXggZTMwM2MyMmRmM2M3NmJhYzdmZTQ4MmEzOTkzNTgyMDBiZjFjN2FiYS4uM2ExYTllODNj
NGViOWMzZjc2YzIzN2QyMWRhZDc3MGY1YThmNTg2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTUxMDAsNyArNTEwMCw3IEBAIHZvaWQgV2Vi
UGFnZTo6c2ltdWxhdGVNb3VzZU1vdGlvbihXZWJDb3JlOjpJbnRQb2ludCBwb3NpdGlvbiwgV2Fs
bFRpbWUgdGltZSkKICAgICBtb3VzZUV2ZW50KFdlYk1vdXNlRXZlbnQoV2ViTW91c2VFdmVudDo6
TW91c2VNb3ZlLCBXZWJNb3VzZUV2ZW50OjpOb0J1dHRvbiwgMCwgcG9zaXRpb24sIHBvc2l0aW9u
LCAwLCAwLCAwLCAwLCBPcHRpb25TZXQ8V2ViRXZlbnQ6Ok1vZGlmaWVyPiB7IH0sIHRpbWUsIDAs
IFdlYk1vdXNlRXZlbnQ6Ok5vVGFwKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6c2V0Q29tcG9zaXRp
b25Gb3JUZXN0aW5nKGNvbnN0IFN0cmluZyYgY29tcG9zaXRpb25TdHJpbmcsIHVpbnQ2NF90IGZy
b20sIHVpbnQ2NF90IGxlbmd0aCwgYm9vbCBzdXBwcmVzc1VuZGVybGluZSkKK3ZvaWQgV2ViUGFn
ZTo6c2V0Q29tcG9zaXRpb25Gb3JUZXN0aW5nKGNvbnN0IFN0cmluZyYgY29tcG9zaXRpb25TdHJp
bmcsIHVpbnQ2NF90IGZyb20sIHVpbnQ2NF90IGxlbmd0aCwgYm9vbCBzdXBwcmVzc1VuZGVybGlu
ZSwgY29uc3QgVmVjdG9yPENvbXBvc2l0aW9uSGlnaGxpZ2h0PiYgaGlnaGxpZ2h0cykKIHsKICAg
ICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5G
cmFtZSgpOwogICAgIGlmICghZnJhbWUuZWRpdG9yKCkuY2FuRWRpdCgpKQpAQCAtNTExMCw3ICs1
MTEwLDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRDb21wb3NpdGlvbkZvclRlc3RpbmcoY29uc3QgU3Ry
aW5nJiBjb21wb3NpdGlvblN0cmluZywgdWludDY0X3QKICAgICBpZiAoIXN1cHByZXNzVW5kZXJs
aW5lKQogICAgICAgICB1bmRlcmxpbmVzLmFwcGVuZChDb21wb3NpdGlvblVuZGVybGluZSgwLCBj
b21wb3NpdGlvblN0cmluZy5sZW5ndGgoKSwgQ29tcG9zaXRpb25VbmRlcmxpbmVDb2xvcjo6VGV4
dENvbG9yLCBDb2xvcihDb2xvcjo6YmxhY2spLCBmYWxzZSkpOwogCi0gICAgZnJhbWUuZWRpdG9y
KCkuc2V0Q29tcG9zaXRpb24oY29tcG9zaXRpb25TdHJpbmcsIHVuZGVybGluZXMsIGZyb20sIGZy
b20gKyBsZW5ndGgpOworICAgIGZyYW1lLmVkaXRvcigpLnNldENvbXBvc2l0aW9uKGNvbXBvc2l0
aW9uU3RyaW5nLCB1bmRlcmxpbmVzLCBoaWdobGlnaHRzLCBmcm9tLCBmcm9tICsgbGVuZ3RoKTsK
IH0KIAogYm9vbCBXZWJQYWdlOjpoYXNDb21wb3NpdGlvbkZvclRlc3RpbmcoKQpAQCAtNTM0OSw3
ICs1MzQ5LDcgQEAgdm9pZCBXZWJQYWdlOjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUFzeW5j
KGNvbnN0IEVkaXRpbmdSYW5nZSYgZWRpdGluZ1JhbmdlLAogICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6UmVjdEZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2socmVzdWx0LCBlZGl0aW5n
UmFuZ2UsIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpzZXRDb21wb3NpdGlvbkFz
eW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5l
PiYgdW5kZXJsaW5lcywgY29uc3QgRWRpdGluZ1JhbmdlJiBzZWxlY3Rpb24sIGNvbnN0IEVkaXRp
bmdSYW5nZSYgcmVwbGFjZW1lbnRFZGl0aW5nUmFuZ2UpCit2b2lkIFdlYlBhZ2U6OnNldENvbXBv
c2l0aW9uQXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8Q29tcG9zaXRpb25V
bmRlcmxpbmU+JiB1bmRlcmxpbmVzLCBjb25zdCBWZWN0b3I8Q29tcG9zaXRpb25IaWdobGlnaHQ+
JiBoaWdobGlnaHRzLCBjb25zdCBFZGl0aW5nUmFuZ2UmIHNlbGVjdGlvbiwgY29uc3QgRWRpdGlu
Z1JhbmdlJiByZXBsYWNlbWVudEVkaXRpbmdSYW5nZSkKIHsKICAgICBwbGF0Zm9ybVdpbGxQZXJm
b3JtRWRpdGluZ0NvbW1hbmQoKTsKIApAQCAtNTM2Myw3ICs1MzYzLDcgQEAgdm9pZCBXZWJQYWdl
OjpzZXRDb21wb3NpdGlvbkFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVmVjdG9yPENv
bXBvc2l0aW9uVW4KICAgICAgICAgICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rp
b24oVmlzaWJsZVNlbGVjdGlvbigqcmVwbGFjZW1lbnRSYW5nZSwgU0VMX0RFRkFVTFRfQUZGSU5J
VFkpKTsKICAgICAgICAgfQogCi0gICAgICAgIGZyYW1lLmVkaXRvcigpLnNldENvbXBvc2l0aW9u
KHRleHQsIHVuZGVybGluZXMsIHNlbGVjdGlvbi5sb2NhdGlvbiwgc2VsZWN0aW9uLmxvY2F0aW9u
ICsgc2VsZWN0aW9uLmxlbmd0aCk7CisgICAgICAgIGZyYW1lLmVkaXRvcigpLnNldENvbXBvc2l0
aW9uKHRleHQsIHVuZGVybGluZXMsIGhpZ2hsaWdodHMsIHNlbGVjdGlvbi5sb2NhdGlvbiwgc2Vs
ZWN0aW9uLmxvY2F0aW9uICsgc2VsZWN0aW9uLmxlbmd0aCk7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYTI3NTM3NmY5MTJhMjBk
M2M0ZGRkMDRjNTYyMzA2NjNiYTlmZTdmMy4uYjllZDlkNGZjNmQ4MTk5MWJkMTlmZjIyZDFlODI5
MGU4OWZmNTQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aApAQCAtMTk2LDYgKzE5Niw3IEBAIGVudW0gY2xhc3MgVGV4dEluZGljYXRvclByZXNlbnRhdGlv
blRyYW5zaXRpb24gOiB1aW50OF90OwogZW51bSBjbGFzcyBXcml0aW5nRGlyZWN0aW9uIDogdWlu
dDhfdDsKIAogc3RydWN0IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI7CitzdHJ1Y3QgQ29tcG9z
aXRpb25IaWdobGlnaHQ7CiBzdHJ1Y3QgQ29tcG9zaXRpb25VbmRlcmxpbmU7CiBzdHJ1Y3QgRGlj
dGF0aW9uQWx0ZXJuYXRpdmU7CiBzdHJ1Y3QgRWxlbWVudENvbnRleHQ7CkBAIC04MjQsNyArODI1
LDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0U2VsZWN0ZWRSYW5nZUFzeW5jKENhbGxiYWNrSUQp
OwogICAgIHZvaWQgY2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5n
ZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5nZSYsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgc2V0Q29t
cG9zaXRpb25Bc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpD
b21wb3NpdGlvblVuZGVybGluZT4mIHVuZGVybGluZXMsIGNvbnN0IEVkaXRpbmdSYW5nZSYgc2Vs
ZWN0aW9uUmFuZ2UsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSk7CisgICAg
dm9pZCBzZXRDb21wb3NpdGlvbkFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVmVjdG9y
PFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPiYsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpD
b21wb3NpdGlvbkhpZ2hsaWdodD4mLCBjb25zdCBFZGl0aW5nUmFuZ2UmIHNlbGVjdGlvblJhbmdl
LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UpOwogICAgIHZvaWQgY29uZmly
bUNvbXBvc2l0aW9uQXN5bmMoKTsKIAogICAgIHZvaWQgcmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJv
YXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCYmKT4mJik7CkBAIC04NDUsNyArODQ2LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVwbGFj
ZVNlbGVjdGlvbldpdGhQYXN0ZWJvYXJkRGF0YShjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMs
IGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOwogI2VuZGlmCiAKLSAgICB2b2lkIHNldENvbXBv
c2l0aW9uRm9yVGVzdGluZyhjb25zdCBTdHJpbmcmIGNvbXBvc2l0aW9uU3RyaW5nLCB1aW50NjRf
dCBmcm9tLCB1aW50NjRfdCBsZW5ndGgsIGJvb2wgc3VwcHJlc3NVbmRlcmxpbmUpOworICAgIHZv
aWQgc2V0Q29tcG9zaXRpb25Gb3JUZXN0aW5nKGNvbnN0IFN0cmluZyYgY29tcG9zaXRpb25TdHJp
bmcsIHVpbnQ2NF90IGZyb20sIHVpbnQ2NF90IGxlbmd0aCwgYm9vbCBzdXBwcmVzc1VuZGVybGlu
ZSwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uSGlnaGxpZ2h0PiYpOwogICAgIGJv
b2wgaGFzQ29tcG9zaXRpb25Gb3JUZXN0aW5nKCk7CiAgICAgdm9pZCBjb25maXJtQ29tcG9zaXRp
b25Gb3JUZXN0aW5nKGNvbnN0IFN0cmluZyYgY29tcG9zaXRpb25TdHJpbmcpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpp
bmRleCBlOWFkNjBmNjExMzQ3ZWZhOTAyZTc5NTNiZTc4YjIyMmVlMTA2NjIzLi5kY2IxMjM0ZTk1
YWNhY2ZjZGVlNmJlNjBiNjlkMDgxZDVmMWM2Mzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTQ1Myw3ICs0NTMs
NyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6
OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIEdldFNlbGVjdGVkUmFuZ2VBc3luYyhX
ZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBDaGFyYWN0ZXJJbmRleEZvclBvaW50
QXN5bmMoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFj
a0lEKTsKICAgICBGaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKHN0cnVjdCBXZWJLaXQ6
OkVkaXRpbmdSYW5nZSByYW5nZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOwotICAg
IFNldENvbXBvc2l0aW9uQXN5bmMoU3RyaW5nIHRleHQsIFZlY3RvcjxXZWJDb3JlOjpDb21wb3Np
dGlvblVuZGVybGluZT4gdW5kZXJsaW5lcywgc3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIHNl
bGVjdGlvblJhbmdlLCBzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgcmVwbGFjZW1lbnRSYW5n
ZSkKKyAgICBTZXRDb21wb3NpdGlvbkFzeW5jKFN0cmluZyB0ZXh0LCBWZWN0b3I8V2ViQ29yZTo6
Q29tcG9zaXRpb25VbmRlcmxpbmU+IHVuZGVybGluZXMsIFZlY3RvcjxXZWJDb3JlOjpDb21wb3Np
dGlvbkhpZ2hsaWdodD4gaGlnaGxpZ2h0cywgc3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIHNl
bGVjdGlvblJhbmdlLCBzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgcmVwbGFjZW1lbnRSYW5n
ZSkKICAgICBDb25maXJtQ29tcG9zaXRpb25Bc3luYygpCiAjZW5kaWYKICNpZiBQTEFURk9STShN
QUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1l
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCBm
OTk0YzVjY2Q1NTA3NzNiZTgzYzVhYjIzYTVjMWI0ZWViMGEwYjRhLi4yZmVjYmI1MTVjN2RmNTA5
ZWZiNjQwMDk5ZDE4MTkyMjQ2NzFkMmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViRnJhbWUubW0KQEAgLTY2LDYgKzY2LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ2hyb21lLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0NvbG9yTWFjLmg+CisjaW1wb3J0IDxXZWJDb3JlL0NvbXBvc2l0aW9uSGlnaGxp
Z2h0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RhdGFiYXNlTWFuYWdlci5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9Eb2N1bWVudEZyYWdtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50TG9hZGVy
Lmg+CkBAIC0xNjQ5LDcgKzE2NTAsNyBAQCAtICh2b2lkKXNldE1hcmtlZFRleHQ6KE5TU3RyaW5n
ICopdGV4dCBzZWxlY3RlZFJhbmdlOihOU1JhbmdlKW5ld1NlbFJhbmdlCiAgICAgCiAgICAgVmVj
dG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPiB1bmRlcmxpbmVzOwogICAgIGZyYW1l
LT5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLnN1cHByZXNzRm9ybU5vdGlmaWNhdGlvbnMoKTsK
LSAgICBmcmFtZS0+ZWRpdG9yKCkuc2V0Q29tcG9zaXRpb24odGV4dCwgdW5kZXJsaW5lcywgbmV3
U2VsUmFuZ2UubG9jYXRpb24sIE5TTWF4UmFuZ2UobmV3U2VsUmFuZ2UpKTsKKyAgICBmcmFtZS0+
ZWRpdG9yKCkuc2V0Q29tcG9zaXRpb24odGV4dCwgdW5kZXJsaW5lcywgeyB9LCBuZXdTZWxSYW5n
ZS5sb2NhdGlvbiwgTlNNYXhSYW5nZShuZXdTZWxSYW5nZSkpOwogICAgIGZyYW1lLT5wYWdlKCkt
PmNocm9tZSgpLmNsaWVudCgpLnJlc3RvcmVGb3JtTm90aWZpY2F0aW9ucygpOwogfQogCkBAIC0x
NjYwLDcgKzE2NjEsNyBAQCAtICh2b2lkKXNldE1hcmtlZFRleHQ6KE5TU3RyaW5nICopdGV4dCBm
b3JDYW5kaWRhdGVzOihCT09MKWZvckNhbmRpZGF0ZXMKICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAKICAgICBWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+IHVuZGVybGluZXM7
Ci0gICAgZnJhbWUtPmVkaXRvcigpLnNldENvbXBvc2l0aW9uKHRleHQsIHVuZGVybGluZXMsIDAs
IFt0ZXh0IGxlbmd0aF0pOworICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRDb21wb3NpdGlvbih0ZXh0
LCB1bmRlcmxpbmVzLCB7IH0sIDAsIFt0ZXh0IGxlbmd0aF0pOwogfQogCiAtICh2b2lkKWNvbmZp
cm1NYXJrZWRUZXh0OihOU1N0cmluZyAqKXRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IGIyYTFkMDg1OTM4ZWYzZTdkMjI1OWZlZjE2
NmRkYmNmNTM4OTdmOGQuLjQ3Mjc3M2UzNGE5ZjRiODJiNTcwZmYxZDVkNzM3NThkNjI0Y2ZhODgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpA
QCAtODAsNiArODAsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5o
PgogI2ltcG9ydCA8V2ViQ29yZS9DaHJvbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29sb3JNYWMu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvQ29tcG9zaXRpb25IaWdobGlnaHQuaD4KICNpbXBvcnQgPFdl
YkNvcmUvQ29udGV4dE1lbnUuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29udGV4dE1lbnVDb250cm9s
bGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RpY3Rpb25hcnlMb29rdXAuaD4KQEAgLTY1NzAsNyAr
NjU3MSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgIGlmIChy
ZXBsYWNlbWVudFJhbmdlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpCiAgICAgICAgIFtbc2VsZiBf
ZnJhbWVdIF9zZWxlY3ROU1JhbmdlOnJlcGxhY2VtZW50UmFuZ2VdOwogCi0gICAgY29yZUZyYW1l
LT5lZGl0b3IoKS5zZXRDb21wb3NpdGlvbih0ZXh0LCB1bmRlcmxpbmVzLCBuZXdTZWxSYW5nZS5s
b2NhdGlvbiwgTlNNYXhSYW5nZShuZXdTZWxSYW5nZSkpOworICAgIGNvcmVGcmFtZS0+ZWRpdG9y
KCkuc2V0Q29tcG9zaXRpb24odGV4dCwgdW5kZXJsaW5lcywgeyB9LCBuZXdTZWxSYW5nZS5sb2Nh
dGlvbiwgTlNNYXhSYW5nZShuZXdTZWxSYW5nZSkpOwogfQogCiBBTExPV19ERVBSRUNBVEVEX0lN
UExFTUVOVEFUSU9OU19CRUdJTgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCBl
MzhiNTNiYTI4YzhiMDU3MzFjMWZjODgwZDdiODA3NTUwMjZmNWY4Li42YWEwYWVlOGI4MGU3NDI5
NTM4NDQxYmUyOWJmZjIyODM0M2M2NTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNw
cApAQCAtODUsNiArODUsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQml0bWFwSW5mby5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0Nocm9tZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ29tcG9zaXRpb25IaWdobGlnaHQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0NvbnRleHRNZW51Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZXh0
TWVudUNvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZUphci5oPgpAQCAtNjM5
OSw3ICs2NDAwLDcgQEAgYm9vbCBXZWJWaWV3OjpvbklNRUNvbXBvc2l0aW9uKExQQVJBTSBscGFy
YW0pCiAKICAgICAgICAgaW50IGN1cnNvclBvc2l0aW9uID0gTE9XT1JEKElNTURpY3Q6OmRpY3Qo
KS5nZXRDb21wb3NpdGlvblN0cmluZyhoSW5wdXRDb250ZXh0LCBHQ1NfQ1VSU09SUE9TLCAwLCAw
KSk7CiAKLSAgICAgICAgdGFyZ2V0RnJhbWUuZWRpdG9yKCkuc2V0Q29tcG9zaXRpb24oY29tcG9z
aXRpb25TdHJpbmcsIHVuZGVybGluZXMsIGN1cnNvclBvc2l0aW9uLCAwKTsKKyAgICAgICAgdGFy
Z2V0RnJhbWUuZWRpdG9yKCkuc2V0Q29tcG9zaXRpb24oY29tcG9zaXRpb25TdHJpbmcsIHVuZGVy
bGluZXMsIHsgfSwgY3Vyc29yUG9zaXRpb24sIDApOwogICAgIH0KIAogICAgIHJldHVybiB0cnVl
OwpAQCAtNzY5Miw3ICs3NjkzLDcgQEAgSFJFU1VMVCBXZWJWaWV3OjpzZXRDb21wb3NpdGlvbkZv
clRlc3RpbmcoX0luXyBCU1RSIGNvbXBvc2l0aW9uLCBVSU5UIGZyb20sIFVJTlQKIAogICAgIFZl
Y3RvcjxDb21wb3NpdGlvblVuZGVybGluZT4gdW5kZXJsaW5lczsKICAgICB1bmRlcmxpbmVzLmFw
cGVuZChDb21wb3NpdGlvblVuZGVybGluZSgwLCBjb21wb3NpdGlvblN0ci5sZW5ndGgoKSwgQ29t
cG9zaXRpb25VbmRlcmxpbmVDb2xvcjo6VGV4dENvbG9yLCBDb2xvcihDb2xvcjo6YmxhY2spLCBm
YWxzZSkpOwotICAgIGZyYW1lLmVkaXRvcigpLnNldENvbXBvc2l0aW9uKGNvbXBvc2l0aW9uU3Ry
LCB1bmRlcmxpbmVzLCBmcm9tLCBmcm9tICsgbGVuZ3RoKTsKKyAgICBmcmFtZS5lZGl0b3IoKS5z
ZXRDb21wb3NpdGlvbihjb21wb3NpdGlvblN0ciwgdW5kZXJsaW5lcywgeyB9LCBmcm9tLCBmcm9t
ICsgbGVuZ3RoKTsKIAogICAgIHJldHVybiBTX09LOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGU4MTgxYTg4ZTFmZmI4NGUzMWJhMWU0N2E5
Y2ZjNGIzNzY5MDY0NzMuLmVhY2I3ZWI3MGY2MWYzNjYwMjg0OTZlMjgwNmYwNGZhODkxNTNmNzAg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNiBAQAorMjAyMC0wMS0zMSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxl
LmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyBiYWNrZ3JvdW5kIGNv
bG9ycyB3aGVuIHNldHRpbmcgbWFya2VkIHRleHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzA2NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTc4
NzYxNDA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICBBZGQg
c3VwcG9ydCBpbiBXZWJLaXRUZXN0UnVubmVyIGZvciBzcGVjaWZ5aW5nIGEgbGlzdCBvZiBoaWdo
bGlnaHQgcmFuZ2VzIHdoZW4gc2V0dGluZyBtYXJrZWQgdGV4dC4gVGhpcyBjb21lcworICAgICAg
ICBpbiB0aGUgZm9ybSBvZiBhbiBhZGRpdGlvbmFsIGFyZ3VtZW50IHRvIFRleHRJbnB1dENvbnRy
b2xsZXI6OnNldE1hcmtlZFRleHQsIHdoaWNoIGNvbnRhaW5zIGFuIGFycmF5IG9mIG9iamVjdHMs
CisgICAgICAgIGVhY2ggZGVzY3JpYmluZyBvbmUgcmFuZ2UgKGluIHRoZSBjb21wb3NpdGlvbikg
dG8gaGlnaGxpZ2h0LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvaW9zL1RleHRJbnB1dENv
bnRyb2xsZXJJT1MubToKKyAgICAgICAgKCtbVGV4dElucHV0Q29udHJvbGxlciBpc1NlbGVjdG9y
RXhjbHVkZWRGcm9tV2ViU2NyaXB0Ol0pOgorICAgICAgICAoK1tUZXh0SW5wdXRDb250cm9sbGVy
IHdlYlNjcmlwdE5hbWVGb3JTZWxlY3RvcjpdKToKKyAgICAgICAgKC1bVGV4dElucHV0Q29udHJv
bGxlciBzZXRNYXJrZWRUZXh0OnNlbGVjdGVkRnJvbTpsZW5ndGg6c3VwcHJlc3NVbmRlcmxpbmU6
aGlnaGxpZ2h0czpdKToKKyAgICAgICAgKC1bVGV4dElucHV0Q29udHJvbGxlciBzZXRNYXJrZWRU
ZXh0OnNlbGVjdGVkRnJvbTpsZW5ndGg6c3VwcHJlc3NVbmRlcmxpbmU6XSk6IERlbGV0ZWQuCisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1RleHRJbnB1dENvbnRyb2xsZXJNYWMubToKKyAg
ICAgICAgKCtbVGV4dElucHV0Q29udHJvbGxlciBpc1NlbGVjdG9yRXhjbHVkZWRGcm9tV2ViU2Ny
aXB0Ol0pOgorICAgICAgICAoK1tUZXh0SW5wdXRDb250cm9sbGVyIHdlYlNjcmlwdE5hbWVGb3JT
ZWxlY3RvcjpdKToKKyAgICAgICAgKC1bVGV4dElucHV0Q29udHJvbGxlciBzZXRNYXJrZWRUZXh0
OnNlbGVjdGVkRnJvbTpsZW5ndGg6c3VwcHJlc3NVbmRlcmxpbmU6aGlnaGxpZ2h0czpdKToKKyAg
ICAgICAgKC1bVGV4dElucHV0Q29udHJvbGxlciBzZXRNYXJrZWRUZXh0OnNlbGVjdGVkRnJvbTps
ZW5ndGg6c3VwcHJlc3NVbmRlcmxpbmU6XSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXh0SW5wdXRDb250cm9sbGVyLmlkbDoK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1RleHRJbnB1dENvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV1RSOjphcnJheUxlbmd0aCk6CisgICAgICAgIChXVFI6OmNy
ZWF0ZUNvbXBvc2l0aW9uSGlnaGxpZ2h0RGF0YSk6CisKKyAgICAgICAgQWRkIGxvZ2ljIHRvIGNv
bnZlcnQgYSBnaXZlbiBKU09iamVjdCBjb250YWluaW5nIHRoZSBjb21wb3NpdGlvbiBoaWdobGln
aHQgaW5mb3JtYXRpb24gaW50byBhIFdLQXJyYXlSZWYsIHdoaWNoCisgICAgICAgIGlzIHRoZW4g
cGFzc2VkIGludG8gV2ViS2l0IHZpYSBXS0J1bmRsZVBhZ2VTZXRDb21wb3NpdGlvbi4KKworICAg
ICAgICAoV1RSOjpUZXh0SW5wdXRDb250cm9sbGVyOjpzZXRNYXJrZWRUZXh0KToKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1RleHRJbnB1dENvbnRyb2xsZXIuaDoK
KwogMjAyMC0wMS0zMCAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIGFub3RoZXIgc3BlY3VsYXRpdmUgdGVzdCBmaXggYWZ0ZXIgcjI1NTA0
MQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1RleHRJbnB1dENvbnRyb2xs
ZXJJT1MubSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9UZXh0SW5wdXRDb250cm9sbGVySU9T
Lm0KaW5kZXggMDkyZWZlNDUxM2M3ZDJjNDY0MWVkYzg2ODdiMzk4OTc3ZGY0ZWFlNS4uOWQxMjdk
NjVjNWZkMDRhNmZlM2E5ZTk0MmViNWY1Y2MyZmUwZmY0ZiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvaW9zL1RleHRJbnB1dENvbnRyb2xsZXJJT1MubQorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9pb3MvVGV4dElucHV0Q29udHJvbGxlcklPUy5tCkBAIC0zOSw3ICszOSw3IEBA
IEBpbXBsZW1lbnRhdGlvbiBUZXh0SW5wdXRDb250cm9sbGVyCiArIChCT09MKWlzU2VsZWN0b3JF
eGNsdWRlZEZyb21XZWJTY3JpcHQ6KFNFTClhU2VsZWN0b3IKIHsKICAgICBpZiAoYVNlbGVjdG9y
ID09IEBzZWxlY3RvcihpbnNlcnRUZXh0OikKLSAgICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxl
Y3RvcihzZXRNYXJrZWRUZXh0OnNlbGVjdGVkRnJvbTpsZW5ndGg6c3VwcHJlc3NVbmRlcmxpbmU6
KQorICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHNldE1hcmtlZFRleHQ6c2VsZWN0
ZWRGcm9tOmxlbmd0aDpzdXBwcmVzc1VuZGVybGluZTpoaWdobGlnaHRzOikKICAgICAgICAgfHwg
YVNlbGVjdG9yID09IEBzZWxlY3RvcihtYXJrZWRSYW5nZSkpCiAgICAgICAgIHJldHVybiBOTzsK
IApAQCAtNTAsNyArNTAsNyBAQCArIChOU1N0cmluZyAqKXdlYlNjcmlwdE5hbWVGb3JTZWxlY3Rv
cjooU0VMKWFTZWxlY3RvcgogewogICAgIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKGluc2Vy
dFRleHQ6KSkKICAgICAgICAgcmV0dXJuIEAiaW5zZXJ0VGV4dCI7Ci0gICAgaWYgKGFTZWxlY3Rv
ciA9PSBAc2VsZWN0b3Ioc2V0TWFya2VkVGV4dDpzZWxlY3RlZEZyb206bGVuZ3RoOnN1cHByZXNz
VW5kZXJsaW5lOikpCisgICAgaWYgKGFTZWxlY3RvciA9PSBAc2VsZWN0b3Ioc2V0TWFya2VkVGV4
dDpzZWxlY3RlZEZyb206bGVuZ3RoOnN1cHByZXNzVW5kZXJsaW5lOmhpZ2hsaWdodHM6KSkKICAg
ICAgICAgcmV0dXJuIEAic2V0TWFya2VkVGV4dCI7CiAgICAgaWYgKGFTZWxlY3RvciA9PSBAc2Vs
ZWN0b3IobWFya2VkUmFuZ2UpKQogICAgICAgICByZXR1cm4gQCJtYXJrZWRSYW5nZSI7CkBAIC04
Myw3ICs4Myw3IEBAIC0gKHZvaWQpaW5zZXJ0VGV4dDooTlNTdHJpbmcgKil0ZXh0CiAgICAgW1t3
ZWJWaWV3IG1haW5GcmFtZV0gY29uZmlybU1hcmtlZFRleHQ6dGV4dF07CiB9CiAKLS0gKHZvaWQp
c2V0TWFya2VkVGV4dDooTlNTdHJpbmcgKil0ZXh0IHNlbGVjdGVkRnJvbTooTlNJbnRlZ2VyKXNl
bGVjdGlvblN0YXJ0IGxlbmd0aDooTlNJbnRlZ2VyKXNlbGVjdGlvbkxlbmd0aCBzdXBwcmVzc1Vu
ZGVybGluZTooQk9PTClzdXBwcmVzc1VuZGVybGluZQorLSAodm9pZClzZXRNYXJrZWRUZXh0OihO
U1N0cmluZyAqKXRleHQgc2VsZWN0ZWRGcm9tOihOU0ludGVnZXIpc2VsZWN0aW9uU3RhcnQgbGVu
Z3RoOihOU0ludGVnZXIpc2VsZWN0aW9uTGVuZ3RoIHN1cHByZXNzVW5kZXJsaW5lOihCT09MKXN1
cHByZXNzVW5kZXJsaW5lIGhpZ2hsaWdodHM6KE5TQXJyYXk8TlNEaWN0aW9uYXJ5ICo+ICopaGln
aGxpZ2h0cwogewogICAgIGlmIChzZWxlY3Rpb25TdGFydCA9PSAtMSkKICAgICAgICAgc2VsZWN0
aW9uU3RhcnQgPSBOU05vdEZvdW5kOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL1RleHRJbnB1dENvbnRyb2xsZXJNYWMubSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9U
ZXh0SW5wdXRDb250cm9sbGVyTWFjLm0KaW5kZXggNTZmZTk2N2FlNzcwNWM5MTRiZTkwOTRjODA5
ZTgxZGI3MTI1YzA3MS4uMWNiYmQ3MWQ0YWMxYmFhZTcxYjRmOWM0NzVjYWIyMTdiYTIzYzI0NSAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1RleHRJbnB1dENvbnRyb2xsZXJN
YWMubQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGV4dElucHV0Q29udHJvbGxlck1h
Yy5tCkBAIC0yMjQsNyArMjI0LDcgQEAgKyAoQk9PTClpc1NlbGVjdG9yRXhjbHVkZWRGcm9tV2Vi
U2NyaXB0OihTRUwpYVNlbGVjdG9yCiB7CiAgICAgaWYgKGFTZWxlY3RvciA9PSBAc2VsZWN0b3Io
aW5zZXJ0VGV4dDopCiAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoZG9Db21tYW5k
OikKLSAgICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3RvcihzZXRNYXJrZWRUZXh0OnNlbGVj
dGVkRnJvbTpsZW5ndGg6c3VwcHJlc3NVbmRlcmxpbmU6KQorICAgICAgICB8fCBhU2VsZWN0b3Ig
PT0gQHNlbGVjdG9yKHNldE1hcmtlZFRleHQ6c2VsZWN0ZWRGcm9tOmxlbmd0aDpzdXBwcmVzc1Vu
ZGVybGluZTpoaWdobGlnaHRzOikKICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3Rvcih1
bm1hcmtUZXh0KQogICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKGhhc01hcmtlZFRl
eHQpCiAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoY29udmVyc2F0aW9uSWRlbnRp
ZmllcikKQEAgLTI1MSw3ICsyNTEsNyBAQCArIChOU1N0cmluZyAqKXdlYlNjcmlwdE5hbWVGb3JT
ZWxlY3RvcjooU0VMKWFTZWxlY3RvcgogICAgICAgICByZXR1cm4gQCJpbnNlcnRUZXh0IjsKICAg
ICBpZiAoYVNlbGVjdG9yID09IEBzZWxlY3Rvcihkb0NvbW1hbmQ6KSkKICAgICAgICAgcmV0dXJu
IEAiZG9Db21tYW5kIjsKLSAgICBpZiAoYVNlbGVjdG9yID09IEBzZWxlY3RvcihzZXRNYXJrZWRU
ZXh0OnNlbGVjdGVkRnJvbTpsZW5ndGg6c3VwcHJlc3NVbmRlcmxpbmU6KSkKKyAgICBpZiAoYVNl
bGVjdG9yID09IEBzZWxlY3RvcihzZXRNYXJrZWRUZXh0OnNlbGVjdGVkRnJvbTpsZW5ndGg6c3Vw
cHJlc3NVbmRlcmxpbmU6aGlnaGxpZ2h0czopKQogICAgICAgICByZXR1cm4gQCJzZXRNYXJrZWRU
ZXh0IjsKICAgICBpZiAoYVNlbGVjdG9yID09IEBzZWxlY3RvcihzdWJzdHJpbmdGcm9tOmxlbmd0
aDopKQogICAgICAgICByZXR1cm4gQCJzdWJzdHJpbmdGcm9tUmFuZ2UiOwpAQCAtMzE0LDcgKzMx
NCw3IEBAIC0gKHZvaWQpZG9Db21tYW5kOihOU1N0cmluZyAqKWFDb21tYW5kCiAgICAgICAgIFt0
ZXh0SW5wdXQgZG9Db21tYW5kQnlTZWxlY3RvcjpOU1NlbGVjdG9yRnJvbVN0cmluZyhhQ29tbWFu
ZCldOwogfQogCi0tICh2b2lkKXNldE1hcmtlZFRleHQ6KE5TU3RyaW5nICopYVN0cmluZyBzZWxl
Y3RlZEZyb206KGludClmcm9tIGxlbmd0aDooaW50KWxlbmd0aCBzdXBwcmVzc1VuZGVybGluZToo
Qk9PTClzdXBwcmVzc1VuZGVybGluZQorLSAodm9pZClzZXRNYXJrZWRUZXh0OihOU1N0cmluZyAq
KWFTdHJpbmcgc2VsZWN0ZWRGcm9tOihpbnQpZnJvbSBsZW5ndGg6KGludClsZW5ndGggc3VwcHJl
c3NVbmRlcmxpbmU6KEJPT0wpc3VwcHJlc3NVbmRlcmxpbmUgaGlnaGxpZ2h0czooTlNBcnJheTxO
U0RpY3Rpb25hcnkgKj4gKiloaWdobGlnaHRzCiB7CiAgICAgTlNPYmplY3QgPE5TVGV4dElucHV0
PiAqdGV4dElucHV0ID0gW3NlbGYgdGV4dElucHV0XTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXh0SW5wdXRDb250cm9sbGVy
LmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGV4
dElucHV0Q29udHJvbGxlci5pZGwKaW5kZXggYTczYWQ5NjdjOTlhYWQ5Y2FkMWQ1MDAyODlhZGFi
Njc4ZDhiOTJhZS4uODc3NTY0OTQ3MWU2MmMwMTY0MzFjZTBlOWQyODgxMDRhM2ZmOTI0ZCAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9U
ZXh0SW5wdXRDb250cm9sbGVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0JpbmRpbmdzL1RleHRJbnB1dENvbnRyb2xsZXIuaWRsCkBAIC0yNCw3ICsyNCw3
IEBACiAgKi8KIAogaW50ZXJmYWNlIFRleHRJbnB1dENvbnRyb2xsZXIgewotICAgIHZvaWQgc2V0
TWFya2VkVGV4dChET01TdHJpbmcgc3RyaW5nLCBsb25nIGZyb20sIGxvbmcgbGVuZ3RoLCBib29s
ZWFuIHN1cHByZXNzVW5kZXJsaW5lKTsKKyAgICB2b2lkIHNldE1hcmtlZFRleHQoRE9NU3RyaW5n
IHN0cmluZywgbG9uZyBmcm9tLCBsb25nIGxlbmd0aCwgYm9vbGVhbiBzdXBwcmVzc1VuZGVybGlu
ZSwgb2JqZWN0IGhpZ2hsaWdodHMpOwogICAgIGJvb2xlYW4gaGFzTWFya2VkVGV4dCgpOwogICAg
IHZvaWQgdW5tYXJrVGV4dCgpOwogICAgIHZvaWQgaW5zZXJ0VGV4dChET01TdHJpbmcgc3RyaW5n
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGV4
dElucHV0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1RleHRJbnB1dENvbnRyb2xsZXIuY3BwCmluZGV4IDMzNjZjNzBhZjFkOTYzZTAzNjZhNmE5
OGZlMTE4YWI2MGI0ZDY0YmIuLjY0YWM4MTk3MTUzYWFlMGEwYWI3MWViYmMyOTQyNDg0YTM1ZTY1
YWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGV4
dElucHV0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9UZXh0SW5wdXRDb250cm9sbGVyLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1
ZGUgIkluamVjdGVkQnVuZGxlUGFnZS5oIgogI2luY2x1ZGUgIkpTVGV4dElucHV0Q29udHJvbGxl
ci5oIgogI2luY2x1ZGUgIlN0cmluZ0Z1bmN0aW9ucy5oIgorI2luY2x1ZGUgPFdlYktpdC9XS0J1
bmRsZUZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLQnVuZGxlUGFnZVByaXZhdGUuaD4KIAog
bmFtZXNwYWNlIFdUUiB7CkBAIC01Nyw5ICs1OCw3MiBAQCB2b2lkIFRleHRJbnB1dENvbnRyb2xs
ZXI6Om1ha2VXaW5kb3dPYmplY3QoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIHdp
bgogICAgIHNldFByb3BlcnR5KGNvbnRleHQsIHdpbmRvd09iamVjdCwgInRleHRJbnB1dENvbnRy
b2xsZXIiLCB0aGlzLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RGVsZXRlLCBleGNlcHRpb24pOwogfQogCi12b2lkIFRleHRJbnB1dENvbnRy
b2xsZXI6OnNldE1hcmtlZFRleHQoSlNTdHJpbmdSZWYgdGV4dCwgaW50IGZyb20sIGludCBsZW5n
dGgsIGJvb2wgc3VwcHJlc3NVbmRlcmxpbmUpCitzdGF0aWMgdW5zaWduZWQgYXJyYXlMZW5ndGgo
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGFycmF5KQogewotICAgIFdLQnVuZGxl
UGFnZVNldENvbXBvc2l0aW9uKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5wYWdlKCktPnBh
Z2UoKSwgdG9XSyh0ZXh0KS5nZXQoKSwgZnJvbSwgbGVuZ3RoLCBzdXBwcmVzc1VuZGVybGluZSk7
CisgICAgYXV0byBsZW5ndGhTdHJpbmcgPSBhZG9wdChKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZygibGVuZ3RoIikpOworICAgIGlmIChhdXRvIGxlbmd0aFZhbHVlID0gSlNPYmplY3RHZXRQ
cm9wZXJ0eShjb250ZXh0LCBhcnJheSwgbGVuZ3RoU3RyaW5nLmdldCgpLCBudWxscHRyKSkKKyAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU1ZhbHVlVG9OdW1iZXIoY29udGV4
dCwgbGVuZ3RoVmFsdWUsIG51bGxwdHIpKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFdL
QXJyYXlSZWYgY3JlYXRlQ29tcG9zaXRpb25IaWdobGlnaHREYXRhKEpTQ29udGV4dFJlZiBjb250
ZXh0LCBKU1ZhbHVlUmVmIGpzSGlnaGxpZ2h0c1ZhbHVlKQoreworICAgIGlmICghanNIaWdobGln
aHRzVmFsdWUgfHwgIUpTVmFsdWVJc0FycmF5KGNvbnRleHQsIGpzSGlnaGxpZ2h0c1ZhbHVlKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIHJlc3VsdCA9IFdLTXV0YWJsZUFy
cmF5Q3JlYXRlKCk7CisgICAgYXV0byBqc0hpZ2hsaWdodHNBcnJheSA9IGNvbnN0X2Nhc3Q8SlNP
YmplY3RSZWY+KGpzSGlnaGxpZ2h0c1ZhbHVlKTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBhcnJh
eUxlbmd0aChjb250ZXh0LCBqc0hpZ2hsaWdodHNBcnJheSk7CisgICAgaWYgKCFsZW5ndGgpCisg
ICAgICAgIHJldHVybiByZXN1bHQ7CisKKyAgICBhdXRvIGpzRnJvbUtleSA9IGFkb3B0KEpTU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJmcm9tIikpOworICAgIGF1dG8ganNMZW5ndGhLZXkg
PSBhZG9wdChKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygibGVuZ3RoIikpOworICAgIGF1
dG8ganNDb2xvcktleSA9IGFkb3B0KEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJjb2xv
ciIpKTsKKworICAgIGF1dG8gd2tGcm9tS2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiZnJvbSIpKTsKKyAgICBhdXRvIHdrTGVuZ3RoS2V5ID0gYWRvcHRXSyhXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygibGVuZ3RoIikpOworICAgIGF1dG8gd2tDb2xvcktl
eSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImNvbG9yIikpOworCisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICBKU1ZhbHVl
UmVmIGV4Y2VwdGlvbiA9IG51bGxwdHI7CisgICAgICAgIGF1dG8ganNPYmplY3RWYWx1ZSA9IEpT
T2JqZWN0R2V0UHJvcGVydHlBdEluZGV4KGNvbnRleHQsIGpzSGlnaGxpZ2h0c0FycmF5LCBpLCAm
ZXhjZXB0aW9uKTsKKyAgICAgICAgaWYgKGV4Y2VwdGlvbiB8fCAhSlNWYWx1ZUlzT2JqZWN0KGNv
bnRleHQsIGpzT2JqZWN0VmFsdWUpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAg
YXV0byBqc09iamVjdCA9IGNvbnN0X2Nhc3Q8SlNPYmplY3RSZWY+KGpzT2JqZWN0VmFsdWUpOwor
ICAgICAgICBhdXRvIGpzRnJvbVZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBq
c09iamVjdCwganNGcm9tS2V5LmdldCgpLCBudWxscHRyKTsKKyAgICAgICAgaWYgKCFqc0Zyb21W
YWx1ZSB8fCAhSlNWYWx1ZUlzTnVtYmVyKGNvbnRleHQsIGpzRnJvbVZhbHVlKSkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworCisgICAgICAgIGF1dG8ganNMZW5ndGhWYWx1ZSA9IEpTT2JqZWN0R2V0
UHJvcGVydHkoY29udGV4dCwganNPYmplY3QsIGpzTGVuZ3RoS2V5LmdldCgpLCBudWxscHRyKTsK
KyAgICAgICAgaWYgKCFqc0xlbmd0aFZhbHVlIHx8ICFKU1ZhbHVlSXNOdW1iZXIoY29udGV4dCwg
anNMZW5ndGhWYWx1ZSkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRvIGpz
Q29sb3JWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwganNPYmplY3QsIGpzQ29s
b3JLZXkuZ2V0KCksIG51bGxwdHIpOworICAgICAgICBpZiAoIWpzQ29sb3JWYWx1ZSB8fCAhSlNW
YWx1ZUlzU3RyaW5nKGNvbnRleHQsIGpzQ29sb3JWYWx1ZSkpCisgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICBhdXRvIGNvbG9yID0gYWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250
ZXh0LCBqc0NvbG9yVmFsdWUsIG51bGxwdHIpKTsKKyAgICAgICAgYXV0byB3a0NvbG9yID0gYWRv
cHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhKU1N0cmluZyhjb2xvci5nZXQoKSkpOworICAgICAgICBh
dXRvIHdrRnJvbSA9IGFkb3B0V0soV0tVSW50NjRDcmVhdGUobHJvdW5kKEpTVmFsdWVUb051bWJl
cihjb250ZXh0LCBqc0Zyb21WYWx1ZSwgbnVsbHB0cikpKSk7CisgICAgICAgIGF1dG8gd2tMZW5n
dGggPSBhZG9wdFdLKFdLVUludDY0Q3JlYXRlKGxyb3VuZChKU1ZhbHVlVG9OdW1iZXIoY29udGV4
dCwganNMZW5ndGhWYWx1ZSwgbnVsbHB0cikpKSk7CisKKyAgICAgICAgYXV0byBkaWN0aW9uYXJ5
ID0gYWRvcHRXSyhXS011dGFibGVEaWN0aW9uYXJ5Q3JlYXRlKCkpOworICAgICAgICBXS0RpY3Rp
b25hcnlTZXRJdGVtKGRpY3Rpb25hcnkuZ2V0KCksIHdrRnJvbUtleS5nZXQoKSwgd2tGcm9tLmdl
dCgpKTsKKyAgICAgICAgV0tEaWN0aW9uYXJ5U2V0SXRlbShkaWN0aW9uYXJ5LmdldCgpLCB3a0xl
bmd0aEtleS5nZXQoKSwgd2tMZW5ndGguZ2V0KCkpOworICAgICAgICBXS0RpY3Rpb25hcnlTZXRJ
dGVtKGRpY3Rpb25hcnkuZ2V0KCksIHdrQ29sb3JLZXkuZ2V0KCksIHdrQ29sb3IuZ2V0KCkpOwor
ICAgICAgICBXS0FycmF5QXBwZW5kSXRlbShyZXN1bHQsIGRpY3Rpb25hcnkuZ2V0KCkpOworICAg
IH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgVGV4dElucHV0Q29udHJvbGxlcjo6
c2V0TWFya2VkVGV4dChKU1N0cmluZ1JlZiB0ZXh0LCBpbnQgZnJvbSwgaW50IGxlbmd0aCwgYm9v
bCBzdXBwcmVzc1VuZGVybGluZSwgSlNWYWx1ZVJlZiBqc0hpZ2hsaWdodHNWYWx1ZSkKK3sKKyAg
ICBhdXRvIHBhZ2UgPSBJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCk7
CisgICAgYXV0byBoaWdobGlnaHRzID0gYWRvcHRXSyhjcmVhdGVDb21wb3NpdGlvbkhpZ2hsaWdo
dERhdGEoV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250ZXh0KFdLQnVuZGxlUGFnZUdldE1h
aW5GcmFtZShwYWdlKSksIGpzSGlnaGxpZ2h0c1ZhbHVlKSk7CisgICAgV0tCdW5kbGVQYWdlU2V0
Q29tcG9zaXRpb24ocGFnZSwgdG9XSyh0ZXh0KS5nZXQoKSwgZnJvbSwgbGVuZ3RoLCBzdXBwcmVz
c1VuZGVybGluZSwgaGlnaGxpZ2h0cy5nZXQoKSk7CiB9CiAKIGJvb2wgVGV4dElucHV0Q29udHJv
bGxlcjo6aGFzTWFya2VkVGV4dCgpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1RleHRJbnB1dENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGV4dElucHV0Q29udHJvbGxlci5oCmluZGV4IDRlYTcyMDQ0
Yzg4NzA1YWJlZDQ5ODcxNmY4ZGJmZTRmOGQ3OTRiMDAuLjU1OGMyZTYxMTQwODE3ODVlM2I3Y2Fl
MTlmZWZkMzk2YWViMzdhOTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGV4dElucHV0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGV4dElucHV0Q29udHJvbGxlci5oCkBAIC00MCw3ICs0MCw3
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbWFrZVdpbmRvd09iamVjdChKU0NvbnRleHRSZWYsIEpT
T2JqZWN0UmVmIHdpbmRvd09iamVjdCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsKIAotICAgIHZv
aWQgc2V0TWFya2VkVGV4dChKU1N0cmluZ1JlZiB0ZXh0LCBpbnQgZnJvbSwgaW50IGxlbmd0aCwg
Ym9vbCBzdXBwcmVzc1VuZGVybGluZSk7CisgICAgdm9pZCBzZXRNYXJrZWRUZXh0KEpTU3RyaW5n
UmVmIHRleHQsIGludCBmcm9tLCBpbnQgbGVuZ3RoLCBib29sIHN1cHByZXNzVW5kZXJsaW5lLCBK
U1ZhbHVlUmVmIGhpZ2hsaWdodHMpOwogICAgIGJvb2wgaGFzTWFya2VkVGV4dCgpOwogICAgIHZv
aWQgdW5tYXJrVGV4dCgpOwogICAgIHZvaWQgaW5zZXJ0VGV4dChKU1N0cmluZ1JlZiB0ZXh0KTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkN2I5M2M1OGUxMThkNTg1Y2VhOWZmYjE0OThjYzY5ZGNhNjcwODQ4Li45N2RjNTlh
OTJmY2M4ZjkyMmYxMTgwMzk0YWY1YTYzZTViYzk2YTg3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMjAtMDEtMzEgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAg
ICAgICAgQWRkIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgYmFja2dyb3VuZCBjb2xvcnMgd2hlbiBz
ZXR0aW5nIG1hcmtlZCB0ZXh0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDcwNjUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3ODc2MTQwPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgQWRkIGEgdGVzdCB0byBj
aGVjayB0aGF0IGhpZ2hsaWdodGluZyBkaWZmZXJlbnQgcGFydHMgb2YgYSBjb21wb3NpdGlvbiBy
YW5nZSByZXN1bHRzIGluIHRoZSBzYW1lIGJlaGF2aW9yIGFzCisgICAgICAgIGFwcGx5aW5nIGJh
Y2tncm91bmQgY29sb3JzIHVzaW5nIENTUy4gVGhpcyB0ZXN0IGlzIGN1cnJlbnRseSBvbmx5IHN1
cHBvcnRlZCBpbiBXZWJLaXQyLgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczoKKyAgICAg
ICAgKiBlZGl0aW5nL2lucHV0L2NvbXBvc2l0aW9uLWhpZ2hsaWdodHMtZXhwZWN0ZWQuaHRtbDog
QWRkZWQuCisgICAgICAgICogZWRpdGluZy9pbnB1dC9jb21wb3NpdGlvbi1oaWdobGlnaHRzLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zOgorCiAy
MDIwLTAxLTMwICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJF
R1JFU1NJT046IFtNYWMgd2sxXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21hdGht
bC9wcmVzZW50YXRpb24tbWFya3VwL3NjcmlwdHMvdW5kZXJvdmVyLXBhcmFtZXRlcnMtMy5odG1s
IGlzIGEgZmxha2V5IGZhaWx1cmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3Rh
dGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDVhMjUwODI3NWUxYjdi
MWViNWE1OGQ3NzJkNDkxY2MzNzdjZmRkNjMuLjQ2YTk5NDMwYzM3MDM5ZWFlZjA0NWZjNWQ1NmU0
YmYzZTAyOWM4OTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysr
IGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNzUsNiArNzUsOSBAQCBjb21wb3Np
dGluZy9sYXllci1jcmVhdGlvbi9jbGlwcGluZy1zY29wZSBbIFNraXAgXQogcHJpbnRpbmcvcHJp
bnRpbmctZXZlbnRzLmh0bWwgWyBTa2lwIF0KIGZhc3QvZm9ybXMvZW50ZXJrZXloaW50LWF0dHJp
YnV0ZS12YWx1ZXMuaHRtbCBbIFNraXAgXQogCisjIEhpZ2hsaWdodGluZyBtYXJrZWQgdGV4dCBy
YW5nZXMgZnJvbSBsYXlvdXQgdGVzdHMgaXMgb25seSBzdXBwb3J0ZWQgaW4gV2ViS2l0Mi4KK2Vk
aXRpbmcvaW5wdXQvY29tcG9zaXRpb24taGlnaGxpZ2h0cy5odG1sIFsgU2tpcCBdCisKIGh0dHAv
dGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC14c2wtZXh0ZXJuYWwtZW50aXR5LW5vLWxvZ2dpbmcu
eG1sIFsgU2tpcCBdCiAKICMgd2luZG93LnNob3dNb2RhbERpYWxvZyBpcyBvbmx5IHRlc3RlZCBp
biBEdW1wUmVuZGVyVHJlZSBvbiBNYWMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5n
L2lucHV0L2NvbXBvc2l0aW9uLWhpZ2hsaWdodHMtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3Rz
L2VkaXRpbmcvaW5wdXQvY29tcG9zaXRpb24taGlnaGxpZ2h0cy1leHBlY3RlZC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmRhY2Y4NDU1OTJiYjE1YTQxNDc4MzczNjZhYWNmNWM5NDlkN2U1ZWMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2lucHV0L2NvbXBvc2l0aW9uLWhpZ2hsaWdo
dHMtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDE3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8c3R5bGU+CitkaXZbY29udGVudGVkaXRhYmxlXSB7CisgICAgZm9udC1zaXpl
OiAyMHB4OworfQorI3JlZCB7IGJhY2tncm91bmQtY29sb3I6ICNGRjAwMDAzMzsgfQorI2dyZWVu
IHsgYmFja2dyb3VuZC1jb2xvcjogIzAwRkYwMDMzOyB9CisjYmx1ZSB7IGJhY2tncm91bmQtY29s
b3I6ICMwMDAwRkYzMzsgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorVGhpcyB0ZXN0IHZl
cmlmaWVzIHRoYXQgaGlnaGxpZ2h0cyBjYW4gYmUgc3BlY2lmaWVkIHdoZW4gc2V0dGluZyBtYXJr
ZWQgdGV4dC4KKzxkaXYgY29udGVudGVkaXRhYmxlPlRlc3Q6Jm5ic3A7PHNwYW4gaWQ9InJlZCI+
b25lPC9zcGFuPjxzcGFuIGlkPSJncmVlbiI+dHdvPC9zcGFuPjxzcGFuIGlkPSJibHVlIj50aHJl
ZTwvc3Bhbj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2VkaXRpbmcvaW5wdXQvY29tcG9zaXRpb24taGlnaGxpZ2h0cy5odG1sIGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9pbnB1dC9jb21wb3NpdGlvbi1oaWdobGlnaHRzLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODRm
MjI5NDRmY2ZkY2Y4MTNhZjVkN2FlMzZiZTFlM2U0ZGY4ZGJlMgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2VkaXRpbmcvaW5wdXQvY29tcG9zaXRpb24taGlnaGxpZ2h0cy5odG1sCkBA
IC0wLDAgKzEsMzAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4K
K2Rpdltjb250ZW50ZWRpdGFibGVdIHsKKyAgICBmb250LXNpemU6IDIwcHg7CisgICAgb3V0bGlu
ZTogbm9uZTsKKyAgICBjYXJldC1jb2xvcjogdHJhbnNwYXJlbnQ7Cit9Cis8L3N0eWxlPgorPC9o
ZWFkPgorPGJvZHk+CitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBoaWdobGlnaHRzIGNhbiBiZSBz
cGVjaWZpZWQgd2hlbiBzZXR0aW5nIG1hcmtlZCB0ZXh0LgorPGRpdiBjb250ZW50ZWRpdGFibGU+
VGVzdDombmJzcDs8L2Rpdj4KKworPHNjcmlwdD4KK2NvbnN0IGVkaXRvciA9IGRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3IoImRpdltjb250ZW50ZWRpdGFibGVdIik7CitlZGl0b3IuZm9jdXMoKTsKK2dl
dFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKGVkaXRvciwgMSk7CisKK2lmICh3aW5kb3cudGV4dElu
cHV0Q29udHJvbGxlcikgeworICAgIHRleHRJbnB1dENvbnRyb2xsZXIuc2V0TWFya2VkVGV4dCgi
b25ldHdvdGhyZWUiLCAxMSwgMTEsIHRydWUsIFsKKyAgICAgICAgeyBmcm9tOiAwLCBsZW5ndGg6
IDMsIGNvbG9yOiAiI0ZGMDAwMDMzIiB9LAorICAgICAgICB7IGZyb206IDMsIGxlbmd0aDogMywg
Y29sb3I6ICIjMDBGRjAwMzMiIH0sCisgICAgICAgIHsgZnJvbTogNiwgbGVuZ3RoOiA1LCBjb2xv
cjogIiMwMDAwRkYzMyIgfQorICAgIF0pOworfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDhlMjU5ZWQ5
MWRiNThhY2I3OTM5MTllYWNkMGZjMzA0YWI4NDNjNzAuLjkwNmE5MWQxY2Q3Y2U2MDE0NmJlYmZj
ZTU2NWU4M2RlZDllNTUxYTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9U
ZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0
YXRpb25zCkBAIC03NjgsNiArNzY4LDkgQEAgaW5zcGVjdG9yL3J1bnRpbWUvY2FsbEZ1bmN0aW9u
T24tZW11bGF0ZVVzZXJHZXN0dXJlLXVzZXJJc0ludGVyYWN0aW5nLmh0bWwgWyBQYXMKICMgVGFy
Z2V0IGRvbWFpbiBpcyBvbmx5IHByZXNlbnQgaW4gV2ViS2l0Mi4KIGh0dHAvdGVzdHMvaW5zcGVj
dG9yL3RhcmdldCBbIFBhc3MgXQogCisjIEhpZ2hsaWdodGluZyBtYXJrZWQgdGV4dCByYW5nZXMg
ZnJvbSBsYXlvdXQgdGVzdHMgaXMgb25seSBzdXBwb3J0ZWQgaW4gV2ViS2l0Mi4KK2VkaXRpbmcv
aW5wdXQvY29tcG9zaXRpb24taGlnaGxpZ2h0cy5odG1sIFsgUGFzcyBdCisKICMjIyBFTkQgT0Yg
KDUpIFByb2dyZXNzaW9ucywgZXhwZWN0ZWQgc3VjY2Vzc2VzIHRoYXQgYXJlIGV4cGVjdGVkIGZh
aWx1cmVzIGluIFdlYktpdDEuCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>